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
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Re: TabBarGadget - Tabs wie im Browser

Beitrag von PMV »

Sehr gut, ich hab am Wochenende mit nem richtigen Browserbeispiel
begonnen, und da kommt natürlich deine Tabs zum Einsatz. Mir fehlte
lediglich ne CoutItems- und ne SetImage-Funktion. Aber was sehe ich,
nicht mal wenige Stunden später als ich diesen gedanken hatte ...
schwubs sind se da. Muss ich nicht mal selber Hand anlegen :lol:
:allright:

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Re: TabBarGadget - Tabs wie im Browser

Beitrag von PMV »

Wenn ich ein Image über LoadImage() (*.ico) lade und dann anzeigen will,
wird das Image 100% transparent dargestellt. Die DrawAlphaImage()-
Funktion scheint immer volle Transparenz übergeben zu bekommen.

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6999
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: TabBarGadget - Tabs wie im Browser

Beitrag von STARGÅTE »

Jup, das steht auch in der Hilfe zu DrawAlphaImage()
Dieser Befehl kann nicht zum Zeichnen von Icons (geladen aus .ico Dateien) verwendet werden.
Warum ist mir jedoch nicht klar, da ja ein Image immer die gleichen Informationen hat, nachdem es geladen wurde.

Ich würde auch ungern auf DrawImage() ausweichen wollen, da ich dort keine Transparents zur Laufzeit setzen kann (nütlich bei nicht aktiv oder deaktiviert.)
Andersrum kann ich bei DrawImage() echtzeit zoomen ...

Zur not, müsstest du dir n Prozedur schreiben, die ein Ico-Image auf ein "normales" 32-Bit Image zeichnet und dieses neue Image dann nutzen :freak:
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
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Re: TabBarGadget - Tabs wie im Browser

Beitrag von PMV »

Oh, stimmt ... damit hab ich jetzt garnicht gerechnet. Aber gut, warum
verwendest du dann überhaupt DrawAlphaImage() und nicht DrawImage()?
Den richtigen DrawingMode() gesetzt und auch der Alpha-Wert wird wie
gewünscht gezeichnet. Und das auch bei *.ico Dateien. <) DrawAlphaImage()
macht nur sinn, wenn mal den Alpha-Wert der Funktion übergeben will,
doch bei welchem Szenario muss dieses Icon durchsichtig sein bei
den TabBars? :wink:


MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6999
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: TabBarGadget - Tabs wie im Browser

Beitrag von STARGÅTE »

@PMV:
Mit DrawImage() kann ich das Image nur Zeichen, oder nicht Zeichenen.
Mit DrawAlphaImage() kann ich aber sagen, mit welcher Alpha-Intensität gezeichnet werden soll, ähnlich wie bei DisplaySprite3D()

Ein DrawingMode() reicht da nicht, da ich je nach Status eines Tabs (aktiv oder nicht aktiv) das Image zu 100% oder 75% zeichnen lassen will.

DrawAlphaImage() setzet also nicht den Alpha-Kanel komplett, sonden skaliert alle AlphaWerte des Bildes.

Einzige Umleitung wäre ein CustomFilter.
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
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Re: TabBarGadget - Tabs wie im Browser

Beitrag von PMV »

Aso, naja es gäb genug andere Möglichkeiten aber man kann
natürlich auch die komplizierteste nehmen und sich nen CustomFilter-
Prozedur machen. :lol: ... ist aber auch nicht so schlimm, ich zeichne
das Icon einfach per DrawImage auf ein neu erstelltes 32-Bit Image
und nehm' das halt für die TabBar, funktioniert genau so gut.
Mich hatte es nur gewundert. Letzten Endes wird es eh nur ein
Beispiel für Awesomium werden. :wink: Und wenn PB denn das Icon
laden kann, klappt es auch nun prima mit deinen Tabs. :lol:
Wirklich sehr hübsch. :allright:

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6999
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: TabBarGadget - Tabs wie im Browser

Beitrag von STARGÅTE »

Da du ja gerade an einem Browser-Beispiel arbeitest, wirst du es bestimmt schon vermisste haben,
dass man die Tabs nicht "direkt" über eine einmalige ID ansprechen kann,
sonden nur über die Position (die man ja ändern kann).
Gerade wenn man nun ein Browser schreibt, und mehrere Tabs öffnet und die Seiten unterschiedlich schnell laden,
müssen die Tab-Texte (also die Seiten-Titel) nachträglich geändert werden.
Mit SetTabBarGadgetItemData kann man ja jedem Tab zB die WebGadget-Nummer zuordnen.
Andersrum müsste ich dann in WebgadgetData zB die Tab-ID speichern.

Ich würde dann also noch eine Funktion TabBarGadgetItemID(Gadget, Position) einbauen,
die mir gerade eine einmalige ID zurück gibt die unabhängig von der Item-Position ist.
Diese ID könnte dann immer größer als zB 10.000 sein, sodass man dann für alle Set/Get Befehle
entweder die Position (zwischen 0-10.000) übergeben kann oder diese ItemID (über 10.000) und
die Prozedur das auch ohne zusätzlichen Flag erkennt.
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
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Re: TabBarGadget - Tabs wie im Browser

Beitrag von PMV »

Öhm, naja es ist sicher nicht die eleganteste Lösung, aber durch die
geöffneten Tabs zu iterieren reicht eigentlich schon bisher aus. Soll
ja keine Konkurrenz zum Original werden :lol: Und der Fokus liegt
mehr auf Awesomium als auf den Vorteilen der TabBar.

Mir reicht die SetGadgetItemData() Funktion völlig aus, um einem Gadget
ein Tab zu zu ordnen. Allerdings muss ich die interne Funktion zum
Updaten aufrufen beim resizen, damit die TabBar sich aktualisiert während
das Fenster vergrößert/ verkleinert wird. Solle evt. zu ner Externen
werden. :wink:
Auch ist mir aufgefallen, dass kein Tab mehr angezeigt wird, wenn alle
Tabs breiter sind als das Gadget selber. :wink:

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6999
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: TabBarGadget - Tabs wie im Browser

Beitrag von STARGÅTE »

PMV hat geschrieben:Allerdings muss ich die interne Funktion zum
Updaten aufrufen beim resizen, damit die TabBar sich aktualisiert während
das Fenster vergrößert/ verkleinert wird. Solle evt. zu ner Externen
werden.
Hm, jo, du kannst aber auch TabBarGadgetEvent() nach dem Resize aufrufen, das macht auch nur das Update, gibt dann aber noch das Event zurück. Mit andere Worten, auch TabBarGadget_Update(Gadget) "erzeugt" ein TabBar-Event.

Wenn du also genau im Moment des ResizeGadget und deinem Update einen Tab schickt, geht das Event "verloren".
Anzeige und Ereignisabfrage sind bei mir gleichzeitig, da es soch eine Menge Dopplungen erspart.
PMV hat geschrieben:Auch ist mir aufgefallen, dass kein Tab mehr angezeigt wird, wenn alle
Tabs breiter sind als das Gadget selber.
Jo :lol: , an den "Grenzwerten" habe ich noch nicht weiter gearbeitet, wird aber noch kommen.
Das kommt dann zusammen mit den restlichen Funktionen PB-Funktionen wie:
SetTabBarGadgetItemColor(), SetTabBarGadgetFont(), ...
Und den zusätzlichen Funktionen wie:
DisableTabBarGadgetItem()

Danach wage ich mich mal an die vertikale TabBar.
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
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Re: TabBarGadget - Tabs wie im Browser

Beitrag von PMV »

Ich bin grad wieder an dem Browserbeispiel drann und da wäre es sehr
Geschickt, wenn ich gleichzeitig die aktuellste Version der Tabbar hätte.
Doch du bist wohl nicht zufällig kurz vor dem Fertigstellen der nächsten
Version? :D

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Antworten