TabBarGadget - Tabs wie im Browser

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Re: TabBarGadget - Tabs wie im Browser

Beitrag 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:
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6996
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: TabBarGadget - Tabs wie im Browser

Beitrag 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 ?
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Re: TabBarGadget - Tabs wie im Browser

Beitrag 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
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6996
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: TabBarGadget - Tabs wie im Browser

Beitrag 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 :|
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: TabBarGadget - Tabs wie im Browser

Beitrag 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:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6996
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: TabBarGadget - Tabs wie im Browser

Beitrag 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.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: TabBarGadget - Tabs wie im Browser

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6996
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: TabBarGadget - Tabs wie im Browser

Beitrag 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.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: TabBarGadget - Tabs wie im Browser

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Lambda
Beiträge: 526
Registriert: 16.06.2011 14:38

Re: TabBarGadget - Tabs wie im Browser

Beitrag 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:
Antworten