amiga-news DEUTSCHE VERSION
.
Links| Forums| Comments| Report news
.
Chat| Polls| Newsticker| Archive
.

amiga-news.de Forum > Programmierung > ListBrowser.gadget und LBNCA_RenderHook? [ - Search - New posts - Register - Login - ]

-1- [ - Post reply - ]

2006-09-21, 22:28 h

Rudolph
Posts: 15
User
Moin!

Ich habe eine GUI unter OS4 gebaut die aus einem String.gadget,
einem Button.gadget und einem ListBrowser.gadget besteht.

Und dafür zu sorgen, dass die GUI halwegs so aussieht,
wir ich das möchte, war noch der einfache Teil.

Nun habe ich einen RenderHook für den ListBrowser eingebaut,
im wesentlichen, um farbige Einträge bekommen zu können, die bei
Multi-Auswahl nicht doch wieder alle gleich aussehen.
Und auch das funktioniert nach einigen Schwierigkeiten recht gut.

Ich habe mehrere Spalten editierbar eingestellt.
Wenn ich nun das editieren aktiviere, dann springt der
Text um einen Pixel nach Links und einen Pixel nach unten.

Was wäre denn eine korrekte Formel für die im Move() Befehl
auszurechnenden Koordinaten?

Momentan verwende ich msg->lbdm_Bounds.MinX und
msg->lbdm_Bounds.MinY + msg->lbdm_RastPort->TxBaseLine.

Jeweils +1 würde das Problem ja lösen, das halten ich nur nicht
für besonders clever...

Und ich hätte da durchaus noch mehr Fragen zu Reaction.
Es gibt so vieles, was man in keinem Beispiel finden kann.

Gruss, Rudolph

[ - Answer - Quote - Direct link - ]

2006-09-28, 16:23 h

Rudolph
Posts: 15
User
Da hat echt *niemand* einen schlauen Tipp für? Gar keiner?

Hat denn wirklich noch nie jemand ernsthaft versucht,
ListBrowser.gadget für mehr als ein kleine statische
Liste mit single-select zu verwenden?

Ganz allgemein wäre ich auch dankbar für Tipps, in welchen Aminet
oder OS4Depot Archiven sich noch Source-Codes zu Reaction
basierten GUI's "verstecken".

Gruss, Rudolph

[ - Answer - Quote - Direct link - ]

2006-09-28, 18:31 h

Holger
Posts: 8116
User
@Rudolph:
Wieviele Reaction-basierte Programme dieser Komplexität fallen Dir denn da auf Anhieb ein?

Ich fürchte, Du liegst richtig, es hat noch niemand ernsthaft versucht, ListBrowser.gadget für mehr als eine kleine statische Liste mit single-select zu verwenden. Na ja, vielleicht doch mit ner größeren Liste, vielleicht sogar ner dynamischen Liste (das heißt noch nicht unbedingt editierbar), aber vermutlich nicht mit eigenem Render-Hook.

mfg

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Answer - Quote - Direct link - ]

2006-09-28, 20:39 h

ZeroG
Posts: 1487
User
Also mir fällt zu RenderHooks und ListBrowsern nur ein Beispiel ein.
Ist im aktuellen SDK zu finden unter:

SDK:Examples/Reaction/OS4Examples/ListBrowser/LB_Example.c

Wenn dir das nicht hilft, stell die Frage doch mal hier:
http://utilitybase.com/
Mitunter sind da auch die OS4-Entwickler (wenn mal Zeit ist), und die sollten (müßten?) das wissen.

[ - Answer - Quote - Direct link - ]

2006-09-28, 21:46 h

Rudolph
Posts: 15
User
Zitat:
Original von Holger:
@Rudolph:
Wieviele Reaction-basierte Programme dieser Komplexität fallen Dir denn da auf Anhieb ein?


Nicht eines.
Aber das hat ja nun noch nicht so viel zu sagen.
Wer könnte von sich behaupten, alle AmigaOS Programme
ausprobiert zu haben?

Zitat:
Ich fürchte, Du liegst richtig, es hat noch niemand ernsthaft versucht, ListBrowser.gadget für mehr als eine kleine statische Liste mit single-select zu verwenden. Na ja, vielleicht doch mit ner größeren Liste, vielleicht sogar ner dynamischen Liste (das heißt noch nicht unbedingt editierbar), aber vermutlich nicht mit eigenem Render-Hook.

Vielleicht sollte ich wirklich Beispiel-Code aus dem
Projekt extrahieren sobald alles so funktioniert,
wie ich mir das vorstelle.

Ich habe jetzt erstmal "+1" für X und Y eingebaut,
zusammen mit einem entsprechendem Kommentar.

[ - Answer - Quote - Direct link - ]

2006-09-28, 22:00 h

Rudolph
Posts: 15
User
Zitat:
Original von ZeroG:
Also mir fällt zu RenderHooks und ListBrowsern nur ein Beispiel ein.
Ist im aktuellen SDK zu finden unter:

SDK:Examples/Reaction/OS4Examples/ListBrowser/LB_Example.c


Das Bespiel kenne ich ja, da wird aber leider "nur"
eine Ellipse gemalt.

Alle Beispiele haben leider was gemeinsam.
Erstens erklären sie nichts und zweitens hören sie
da auf, wo es interessant wird.
Eine Reaction GUI zu bauen die halbwegs gut aussieht war
noch einfach.
Ein Reaction GUI mit Funktion zu hinterlegen kann sich
ganz schön hinziehen.

Ein interessantes Problem mit dem RenderHook ist zum Beispiel,
dass man zwar die Zeile (Node) geliefert bekommt aber leider
nicht, die Spalte (Column).
So weiss man zwar wohin, doch leider nicht, was man
schreiben soll.
Das kann man entweder lösen, indem man für jede Spalte einen
eigenen Hook mit beinahe identischen Code installiert
oder aber für jede Spalte eine eigene Hook-Struktur hat
in deren h_data man vermerkt, welche Spalte gemeint ist.

Zitat:
Wenn dir das nicht hilft, stell die Frage doch mal hier:
http://utilitybase.com/
Mitunter sind da auch die OS4-Entwickler (wenn mal Zeit ist), und die sollten (müßten?) das wissen.


Ich habe auch schon in den Mailing-Liste gefragt.
Nur eine Antwort habe ich leider nicht erhalten.
Ich sollte einfach nochmal fragen.

[ - Answer - Quote - Direct link - ]

2006-09-29, 12:32 h

thomas
Posts: 7717
User
Zitat:
Wenn ich nun das editieren aktiviere, dann springt der
Text um einen Pixel nach Links und einen Pixel nach unten.

Was wäre denn eine korrekte Formel für die im Move() Befehl
auszurechnenden Koordinaten?

Momentan verwende ich msg->lbdm_Bounds.MinX und
msg->lbdm_Bounds.MinY + msg->lbdm_RastPort->TxBaseLine.

Jeweils +1 würde das Problem ja lösen, das halten ich nur nicht
für besonders clever...


Ich denke, horizontal sollte +1 ok sein, aber vertikal solltest du den Text zentrieren. Die Abweichung dürfte der automatische Rahmen sein, den das Listbrowser-Gadget um den Text zeichnet. Ich denke auch, daß es nicht vorgesehen ist, daß eine Spalte mit Render-Hook gleichzeitig editierbar ist. Der Render-Hook muß ja nicht unbedingt Text zeichnen, das Editor-Fenster editiert aber immer den Text.

Zitat:
Ein interessantes Problem mit dem RenderHook ist zum Beispiel,
dass man zwar die Zeile (Node) geliefert bekommt aber leider
nicht, die Spalte (Column).
So weiss man zwar wohin, doch leider nicht, was man
schreiben soll.
Das kann man entweder lösen, indem man für jede Spalte einen
eigenen Hook mit beinahe identischen Code installiert
oder aber für jede Spalte eine eigene Hook-Struktur hat
in deren h_data man vermerkt, welche Spalte gemeint ist.


Ich denke, da das Tag ja nunmal LBNCA_RenderHook heißt, also definitiv auf die Spalte bezogen ist und nicht auf die Zeile, mußt du wohl damit leben, daß du für jede Spalte eine eigene Hook-Struktur brauchst.

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Answer - Quote - Direct link - ]

2006-09-29, 18:28 h

ZeroG
Posts: 1487
User
Damit könnte man ja mal einem der Friedens behelligen, als Featurerequest für OS4.1 (oder 4.0).

[ - Answer - Quote - Direct link - ]

2006-09-30, 10:22 h

Rudolph
Posts: 15
User
Zitat:
Ich denke, horizontal sollte +1 ok sein, aber vertikal solltest du den Text zentrieren. Die Abweichung dürfte der automatische Rahmen sein, den das Listbrowser-Gadget um den Text zeichnet.

Es muss ja auch einen Weg geben, dass korrekt zu machen.
Der "Rahmen" ist auch nicht bei allen Versionen gleich und im schlimmsten Fall auch noch abhängig von irgendwelchen Benutzer-Einstellungen.

Zitat:
Ich denke auch, daß es nicht vorgesehen ist, daß eine Spalte mit Render-Hook gleichzeitig editierbar ist. Der Render-Hook muß ja nicht unbedingt Text zeichnen, das Editor-Fenster editiert aber immer den Text.

Das ist ja kein Problem, der Render-Hook wird im Editier-Modus nicht benutzt, dann wird die Spalte ja zum String-Gadget.

Zitat:
Ich denke, da das Tag ja nunmal LBNCA_RenderHook heißt, also definitiv auf die Spalte bezogen ist und nicht auf die Zeile, mußt du wohl damit leben, daß du für jede Spalte eine eigene Hook-Struktur brauchst.

Klar geht das, ich halte das nur für eine weitere Schwachstelle im Design um die ich herumprogrammieren muss.

Warum benutze ich überhaupt einen Render-Hook?
Ganz einfach, weil alle ausgewählten Zeilen die gleiche Farbkombination bekommen, das sieht einfach nur beknackt aus, wenn die nicht-ausgewählten Zeilen bunt sind, damit man sie besser auseinanderhalten kann...

[ - Answer - Quote - Direct link - ]

2006-09-30, 10:30 h

Rudolph
Posts: 15
User
Zitat:
Original von ZeroG:
Damit könnte man ja mal einem der Friedens behelligen, als Featurerequest für OS4.1 (oder 4.0).


Mal davon ab, dass das an die falsche Adresse gehen würde, weil die Herren schlichtweg für andere Komponenten "die Mütze auf haben".

Wieso ein "Featurerequest"?
Bestenfalls doch die Anfrage nach mehr Dokumentation?

Und das Problem der lückenhaften Dokumentation ist mit Sicherheit bekannt.

Ich hatte nur gehofft, das sich hier zufällig jemand findet, der sich schon mal mit dem Thema herumgeschlagen hat.

[ - Answer - Quote - Direct link - ]

2006-09-30, 14:11 h

ZeroG
Posts: 1487
User
Zitat:
Original von Rudolph:
Mal davon ab, dass das an die falsche Adresse gehen würde, weil die Herren schlichtweg für andere Komponenten "die Mütze auf haben".

Klar haben die andere Komponenten an der Backe.
Aber zumindes Hans-Jörg ist (laut seiner emailsignatur) technischer Direktor des OS4-Projekts,
und somit für Featurerequest nicht unbedingt der schlechteste Ansprechpartner. Oder?
Zitat:
Wieso ein "Featurerequest"?
Bestenfalls doch die Anfrage nach mehr Dokumentation?

Und das Problem der lückenhaften Dokumentation ist mit Sicherheit bekannt.

Ich hatte nur gehofft, das sich hier zufällig jemand findet, der sich schon mal mit dem Thema herumgeschlagen hat.


Nun, ich hab das ganze so verstanden das du innerhalb des Renderhooks
eine möglichkeit haben wolltest die betroffene Spalte zu erhalten, um nicht
nicht für jede Spalte einen eigenen Hook bzw. eine eigene Hook-Struktur zu installieren.

Oder zumindest eine Möglichkeit an die breite des Rahmens zu kommen der für dein "springen" sorgt.

Wo ich gerade bei Rahmen bin:
Das editieren in ListBrowsern läuft ja über das string.gadget. Wenn jetzt das string.gadget das bevel.image für den Rahmen benutzt,
währe es doch mal ganz interessant zu sehen was passiert wenn du über LISTBROWSER_EditTags ein BVS_NONE an das string.gadget gibts.

Edit:

Hab gerade BEVEL_Style, BVS_NONE, ins StringExample eingebaut und den Rahmen um das Gadget kann man so tätsächlich einstellen.
Vielleicht fehlt nur die möglichkeit nachzusehen wie breit BVS_FIELD ist (wird laut autodoc für string.gadgets benutzt).

[ Dieser Beitrag wurde von ZeroG am 30.09.2006 um 19:39 Uhr geändert. ]

[ - Answer - Quote - Direct link - ]


-1- [ - Post reply - ]


amiga-news.de Forum > Programmierung > ListBrowser.gadget und LBNCA_RenderHook? [ - Search - New posts - Register - Login - ]


.
Masthead | Privacy policy | Netiquette | Advertising | Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved.
.