Seite 2 von 16

Re: TabBarGadget - Tabs wie im Browser

Verfasst: 12.09.2011 20:40
von remi_meier
NicTheQuick hat geschrieben:
remi_meier hat geschrieben:Das sollte funktionieren und scheint leider auch der
einzige Weg zu sein. Man benötigt scheinbar ein
Gadget um die Farben zu erhalten.
Man kann scheinbar auch einfach die WindowID() nehmen statt des Gadgets. Dann bekommt man auch die Hintergrundfarbe. Ob das allerdings so gedacht ist, weiß ich nicht genau.
Geht auch, ein Window ist auch ein Widget.
Theoretisch kann aber jedes Widget seinen eigenen
Style haben. Ob das nun in der Praxis oft der Fall
ist, weiss ich nicht :mrgreen:

Re: TabBarGadget - Tabs wie im Browser

Verfasst: 12.09.2011 20:54
von STARGÅTE
Erst mal danke an alle für eurer positives Feedback. Freut mich sehr.

Bezüglich Linux:
Erst mal danke für den Code remi_meier. Ich werde mir jetzt, wo ich gerade diesen Code Cross-Platform haben möchte, wohl doch mal ein Linux-System einrichten.
Du hast ja auch die "Farbtypen" gepostet:
; fg_color
; bg_color
; base_color
; text_color
; selected_bg_color
; selected_fg_color
; tooltip_bg_color
; tooltip_fg_color
Sind das alle?

Wie du vielleicht an meinem Code siehst, brauche ich noch irgendwie eine Angabe für "Schatten", also eine dunklere Farbe.
Oder ist das bg_color ?

Re: TabBarGadget - Tabs wie im Browser

Verfasst: 12.09.2011 22:17
von remi_meier
Das sind im Prinzip alle. Das Problem ist jetzt,
dass nun die GTK-Theme-Engine diese Farben
nimmt und irgendwas damit macht <)
Da du aber eine Art Custom-Widget machst,
nimmst du diese Farben einfach als Hinweis
und machst was Schönes damit. Du wirst nie
den selben Style wie die Theme-Engine erhalten,
aber so ist das nunmal.

Hier ist ein Ausschnitt aus nem Moko-Gtk-Theme:

Code: Alles auswählen

style "notebook"
{
 xthickness = 0
 ythickness = 0

 # For notebookes, NORMAL is used for the active tab and ACTIVE is used for
 # ther other tabs
 bg[NORMAL] = @selected_bg_color
 fg[NORMAL] = @selected_fg_color

 # inactive tabs are in "reversed" colours
 fg[ACTIVE] = @fg_color
 bg[ACTIVE] = @bg_color
}
class "GtkNotebook" style "notebook"
Hier siehst du, wie jemand die Farben an die
Theme-Engine weitergegeben hat. Daraus kannst
du jetzt ungefähr ablesen, was die Farben bedeuten
(Notebook = PanelGadget).

Einfach mal etwas probieren und dann mit einem
dunklen und mit einem hellen Theme testen. Wenn's
lesbar ist und einigermassen gut ausschaut, wird's
schon ok sein.

greetz
remi

Re: TabBarGadget - Tabs wie im Browser

Verfasst: 13.09.2011 17:35
von STARGÅTE
Ich würde ganz gerne mein TabBarGadget als echtes PB-Gadget registrieren, sodass ich es normal mit den bekannten Funktioen: GetGadgetState(), AddGadgetItem() usw. verwenden kann.

Dazu habe ich von dir TS-Soft etwas aktuelles gefunden: Re: CreateGadget
Nur leider kann ich auch mit den Beispiel die in anderen Themen gepostet wurde wenig anfangen.

Meine Frage an dich und auch alle andere: Kann mir vielleicht jemand ein Beispiel schreiben, wie man diesen Code benutzt.
Als Beispiel wäre es gut, wenn man mit der Funktion SetGadgetState() zB die Füllfarbe eines CanvasGadgets ändern kann.
Als zusatz wäre noch gut, wie man es ermöglicht, das bei einem Mouse-Hover sich die Farbe ändert.

ich vermute mal, dass das alles mit PB_Gadget_VT zusammenhängt, nur produziere ich hier gerade nicht weiter als IMAs :|

Re: TabBarGadget - Tabs wie im Browser

Verfasst: 13.09.2011 18:24
von ts-soft
Lade Dir mal die PBOSL_Examples von purearea: http://www.purearea.net/pb/download/use ... AMPLES.zip

Die Beispiele sollten Dir den Umgang mit der VT der Gadgetfunktionen näher bringen :wink:

Re: TabBarGadget - Tabs wie im Browser

Verfasst: 13.09.2011 19:07
von STARGÅTE
Sry, aber die Sachen sind alle 6 Jahre alt :?
Desweiteren find ich da rein garnix zu Gadgets bzw. zu dem was ich gerne möchte.

Re: TabBarGadget - Tabs wie im Browser

Verfasst: 13.09.2011 19:43
von ts-soft
Und, ich bin noch älter als 6 :mrgreen:
Auszug aus einem Beispiel:

Code: Alles auswählen

Procedure MenuButtonGadget(ID.l,x.l,y.l,cx.l,cy.l,title.s,flags=0)
  Protected vt.PB_GadgetVT
  vt\SetGadgetAttribute = @MenuButton_SetGadgetAttribute()
  ProcedureReturn CreateGadget(ID, "MENU_BUTTON", title, $5000000F, x, y, cx, cy, 0, 0, @vt)
EndProcedure
Hier wird nur SetGadgetAttribute für das Gadget definiert. Weiteres in den weiteren Beispielen.
Also nur vt\pbfunction = Adresse Deiner Funktion. Wenn eine PB Funktion optionale Parameter enthält
gibts weitere Functionen, die sind durchnummeriert also vt\pbfunction2 =
Genau wie mit TailBite.
Strukturemember die Du nicht brauchst, läßte leer. SetGadgetText usw. bekommen default funktionen.

Re: TabBarGadget - Tabs wie im Browser

Verfasst: 14.09.2011 00:10
von STARGÅTE
Habe ich hier gerade n Denkblockage oder gibst du mir wirklich nur Stückhafte Informationen :shock:

Natürlich ist mir klar, das ich meine Prozeduren für die jeweiligen Funktionen als Callback übergeben muss.
Aber ich verstehen ja noch nicht mal den "Anfang":

Ich benutze doch ein CanvasGadget(), dass heißt das Gadget ist schon da.
Nur wie kann ich nun PB dazu bringen, dass ich bei einem Event und EventType() dann nicht die Events vom Canvas bekomme, sonden eben meine Events?

BTW: Wie kann ich die Beispiele ausführen?, Bei mir fehlen irgendwelche Structuren/Prozeduren usw.
Vorallem nutzen die Beispiele Funktionen die es überhaupt nicht mehr gibt, und ich habe keine Lust alles umzuschreiben.

Re: TabBarGadget - Tabs wie im Browser

Verfasst: 14.09.2011 06:53
von ts-soft
Mit CreateGadget sollen ja auch keine PB Gadgets ummantelt werden, es dient zum registrieren neuer Gadgets im
Objektmanager und für nichts anderes. Dadurch werden Gadget autom. freigegeben bzw. FreeGadget funktioniert usw.
Eventhandling ist nicht inbegriffen, diese sind selbst zu verwalten, z. B. mit PB_SendGadgetCommand, SendMessage usw.

Re: TabBarGadget - Tabs wie im Browser

Verfasst: 02.12.2011 14:45
von Lambda
sehr gut :)
hab vor kurzem auch mal mit dem CanvasGadget experimentiert.. ist dir hier sehr gut gelungen und setze es jetzt in einem editor ein da es einfach besser und einfacher zu handhaben ist als das normale PanelGadget.. und auch gerade das verschieben und schliesen. wenn man sich etwas reinliest ist es auch einfach mehr buttons hinzuzufügen :)
:allright: