Seite 1 von 16

TabBarGadget - Tabs wie im Browser

Verfasst: 12.09.2011 15:18
von STARGÅTE
Das TabBarGadget erstellt eine Leiste mit Registerkarten,
jedoch ohne eigenen Container wie z.B. das PanelGadget.

Bild

Mit verschiedenen Attributen kann das Aussehen der Leiste und der Registerkarten verändert werden,
indem z.B. eine "Schließen"-Schaltfläche hinzugefügt wird.
Die Registerkarten können untereinander einfach durch ziehen mit der Maus vertauscht werden.
Wird eine Karte geschlossen oder eine neue geöffnet, wird ein Ereignis zurück gegeben,
sodass der Programmierer selbst eine Aktion ausführen kann.
Auch wird automatisch eine Navigation angezeigt, wenn zu viele Registerkarten vorhanden sind.

_________________________________________________________________________________________________


Version 1.5 Beta 2 for PB 5.30+
Download: TabBarGadget V 1.5 Beta 2
Online help: TabBarGadget Help (english)

Version 1.3 until PB 5.11
Archive: TabBarGadget.zip (Include, Example and Help)

_________________________________________________________________________________________________

Bild
_________________________________________________________________________________________________

Update 1.5 Beta 2 (6. August 2014)
  • SetTabBarGadgetItemAttribute() and GetTabBarGadgetItemAttribute(): Ändert das Attribute eines einzelnen Tabs, so können nur bestimmte Tabs ChackBoxen bekommen oder Schließen-Buttons.
  • #TabBarGadget_TabTextAlignment: Ändert die Ausrichtung des Textes in der Karte (wenn mehr Platz da ist)
  • #TabBarGadget_SelectedCloseButton: Fügt ein Schließenbutton hinzu, aber nur bei ausgewählten Tabs sichtbar.
  • #TabBarGadget_ReverseOrdering: Ändert die Tab-Reihenfolge zu: "Rechts nach Links", zB für arabische Leisten
  • Eine neue Version der Hilfe als Internet-Version in englisch: http://help.unionbytes.de/tbg/
Bild

Update 1.5 Beta 1 (19. Oktober 2013)
  • Umstellung der Ereignisverwaltung auf PB 5.20 und BindEvent().
    Somit ist kein TabBarGadgetEvent() mehr nötig und Ereignistypen
    können wie woanders mit EventType() abgefragt werden.
  • Beim Erstellen muss nun das Fenster angegeben werde, wo es hinein soll.
  • Einige Konstantennamen haben sich geändert, um PureBasic-Ähnlich zu sein.
  • EventTab() hab ich entfernt um Namenskollision zu vermeiden,
    dafür gibt es nun GetTabBarGadgetItemPosition() und SetTabBarGadgetItemPosition(),
    so können Tabs auch mit einem Befehl verschoben werden.
  • Außerdem wurde die Funktionalität von vertikalen Tabs, Multiselect, Checkboxen und der Navigation verbessert.
  • Das AutoScroll funktioniert aus Sicherheitsgründen nur, wenn ThreadSafe aktiviert ist.
Update 1.4 Beta 3 (1. Juli 2013)
  • Bug-Fix für PB 5.20
  • vertikale Registerkartenleisten nun immer in Leserichtung orientiert (Wunsch von Lord)
  • Tabs mit gedrückter Maus auf Navi-Pfeile durchscrollbar (Wunsch von NicTheQuick)
  • Beim verschieben eines Tabs, scrollt die TabBar automatisch wenn man über Navigation ist.(Wunsch von NicTheQuick)
  • Neues Attribut: #TabBarGadget_CheckBox, zeigt eine kleine CheckBox in jedem Tab an (um zB bestimmte Tabs zu markieren, ohne sie auszuwählen)
Update 1.3 (1. September 2012)
  • Mehrzeilige Regsiterkartenleisten
  • Prozeduren zum Festlegen von ToolTips je Karte und für den Schließenbutton und die "Neu"-Karte
  • Festlegen von minimaler und maximaler Kartenbreite
  • Einige Bugs gefixt, und einige Kleinigkeiten hinzugefügt
Update 1.2 (1. März 2012)
  • Ausführliche Hilfe als *.chm und online
  • Mehr Prozeduren wie SetTabBarGadgetAttribute(), SetTabBarGadgetItemColor(), DisableTabBarGadgetItem()
  • Ein paar neue Attribute: NoTabMoving, MirroredTabs, TabRounding
  • Verbesserungen in der Darstellung von Verschiebung und Navigation
Update 1.1 (Beta) (12. Dez 2011)
  • Viele neue Prozeduren für das Gadget hinzugefügt
  • Optionale Textkürzung bei zu wenig Platz
  • EventTab() für die Benutzung mit EventType() zum ermitteln des Event-Tabs
  • Mausrad-Benutzung bei Navigation
  • ToolTip mit Text für jede Registerkarte
  • Verbesserte (animierte) Darstellung beim verschieben von Karten.

Re: TabBarGadget - Tabs wie im Browser

Verfasst: 12.09.2011 15:31
von RSBasic
Sehr schön, danke fürs Teilen. Sieht gut aus. :allright:
Wenn man solche Beispiele sieht, ist man echt froh, dass das CanvasGadget eingeführt wurde.^^

Re: TabBarGadget - Tabs wie im Browser

Verfasst: 12.09.2011 15:34
von Kiffi
Schickischick!

Bild

Danke und Grüße ... Kiffi

Re: TabBarGadget - Tabs wie im Browser

Verfasst: 12.09.2011 16:35
von ts-soft
:allright:
Is ja man echt geil :D

Re: TabBarGadget - Tabs wie im Browser

Verfasst: 12.09.2011 16:56
von c4s
Sieht klasse aus - Danke!

Re: TabBarGadget - Tabs wie im Browser

Verfasst: 12.09.2011 17:26
von WPö
Jawoll, hier geht 'was voran!
Weiter so!

Re: TabBarGadget - Tabs wie im Browser

Verfasst: 12.09.2011 17:39
von NicTheQuick
Das sollte man genauso hübsch in die IDE integrieren.
STARGÅTE hat es zwar hier nicht erwähnt, aber mich hat er letzte Nacht noch danach gefragt, wie man unter Linux die Systemfarben herausfinden kann. Und dem Code nach zu urteilen sieht es so aus als ob er immer noch daran interessiert wäre ein Äquivalent zu 'GetSysColor_()' unter Windows für Linux zu finden. Da hat nicht zufällig jemand was im Petto?

Re: TabBarGadget - Tabs wie im Browser

Verfasst: 12.09.2011 19:04
von remi_meier
Das sollte funktionieren und scheint leider auch der
einzige Weg zu sein. Man benötigt scheinbar ein
Gadget um die Farben zu erhalten.

Code: Alles auswählen

; fg_color
; bg_color
; base_color
; text_color
; selected_bg_color
; selected_fg_color
; tooltip_bg_color
; tooltip_fg_color
ImportC "":gtk_style_lookup_color.l(*style, color_name.p-utf8, *color):EndImport
Procedure GetColor(*widget, color_name.s, *color_out.GdkColor)
  a.s = Space(Len(color_name))
  PokeS(@a, color_name, -1, #PB_Ascii)
  
  gtk_widget_realize_(*widget)
  
  *style.GtkStyle = gtk_rc_get_style_(*widget)
  If Not gtk_style_lookup_color(*style, a, *color_out)
    gdk_color_parse_("black", @color)
  EndIf

EndProcedure


OpenWindow(0,0,0,0,0,"")
ButtonGadget(0, 0, 0, 0, 0, "")

color.GdkColor
GetColor(GadgetID(0), "fg_color", @color)

With color
  Debug (\red / 255) &$FF
  Debug (\green / 255) &$FF
  Debug (\blue / 255) &$FF
EndWith

Re: TabBarGadget - Tabs wie im Browser

Verfasst: 12.09.2011 19:11
von Andesdaf
Schick, danke! :allright:

Re: TabBarGadget - Tabs wie im Browser

Verfasst: 12.09.2011 19:41
von NicTheQuick
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.