Seite 13 von 16

Re: TabBarGadget - Tabs wie im Browser

Verfasst: 02.07.2013 21:44
von STARGÅTE
Na in der PB-IDE kannst du unter Einstellungen->Editor auch den Haken bei "Schließ-Knöpfe in jedem Tab" rausnehmen.
Dann kannst du die Tabs immer noch mit der Mittel-Maus-Taste schließen.

Ich weiß nicht, ob meine Finale Version früher fertig ist als seine letzte Beta, und gerade das mit dem Thread muss unbedingt noch genauer untersucht werden, nicht das die IDE ab und zu abstürzt wegen meiner Tabs.

Re: TabBarGadget - Tabs wie im Browser

Verfasst: 02.07.2013 21:48
von RSBasic
STARGÅTE hat geschrieben:[...], nicht das die IDE ab und zu abstürzt wegen meiner Tabs.
Das wäre natürlich nicht so schön. ;)

Re: TabBarGadget - Tabs wie im Browser

Verfasst: 02.07.2013 22:27
von Kevin
STARGÅTE hat geschrieben:Na in der PB-IDE kannst du unter Einstellungen->Editor auch den Haken bei "Schließ-Knöpfe in jedem Tab" rausnehmen.
Dann kannst du die Tabs immer noch mit der Mittel-Maus-Taste schließen.
Das mit der Mittleren Maustaste wusste ich nicht!

und es kann zu zufälligen abstürzen kommen:

Code: Alles auswählen

Procedure TabBarGadget_Timer(Null.i)
  Protected last	
  With TabBarGadgetInclude\Timer
    Repeat
      If \TabBarGadget
        Delay(0)
        If \TabBarGadget
          Repeat
            If ElapsedMilliseconds() - last => 200
              PostEvent(#PB_Event_Gadget, \TabBarGadget\Window, \TabBarGadget\Number, #TabBarGadgetEvent_Pushed, \Type)
              last=ElapsedMilliseconds()
            EndIf
            Delay(0)
          Until	 \TabBarGadget = #Null
        EndIf
      Else
        Delay(0)
      EndIf
    ForEver
  EndWith
EndProcedure
(angepasster code damit dem Zufall nachgeholfen wird) einfach tabs verschieben und es stürzt irgendwann ab...

mfg kevin

Re: TabBarGadget - Tabs wie im Browser

Verfasst: 03.07.2013 02:16
von STARGÅTE
Kann ich leider nicht reproduzieren (zumindest in den ersten 3min nicht).

PostEvent() ist auf jedenfall Threadsicher:
"Dieser Befehl kann sehr nützlich für die Kommunikation zwischen Threads und der Haupt-Ereignisschleife sein. Zum Beispiel kann ein Thread ein benutzerdefiniertes Ereignis (mit zugewiesenen Daten) senden, wenn er mit seiner Verarbeitung fertig ist, wodurch die Hauptschleife dieses erhält und die weitere Verarbeitung stattfinden kann."

Da im Thread keine String-Verarbeitung stattfindet, ist ja Thread-Safe nicht nötig.

Allerdings habe ich schon eine Fehlerquelle entdeckt.
Denn wenn "Until \TabBarGadget = #Null" zwar fehlschlegt, genau danach aber \TabBarGadget gelöscht wird, würde \TabBarGadget\Window ein IMA erzeugen.

Ich werde dort ein Mutex einbauen.

Re: TabBarGadget - Tabs wie im Browser

Verfasst: 19.10.2013 18:02
von STARGÅTE
Nach langer Pause ist es nun wieder so weit, ich habe ein neues Update für euch.

Vorab möchte ich mich jedoch bei allen aktuellen nutzer entschuldigen,
da das neue Update leider ein paar grundlegende Änderungen mit sich bringt,
welche jedoch die Benutzung des Includes (gerade für neue Nutzer) um einiges Vereinfacht.

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.
Checkboxen beim benutzen von #TabBarGadget_CheckBox:
Bild

Download: TabBarGadget V 1.5 Beta 1 Enthält die Include und die umfangreiche Hilfe mit Erklärungen und Beispielcodes
Onlinehilfe: TabBarGadget Hilfe

Wäre nett, wenn ihr die neue Version testet.
In der Hilfe gibt es u.A. ein kleinen Editor, wo man alle Attribute usw. in Echtzeit testen kann:
http://www.unionbytes.de/help/tabbargad ... ditor.html

PS: Ich suche jemanden der die Hilfe ins englische Übersetzen würde (ohne Google Translator), bitte per PN melden.

Hinweise zum Updaten von alten Versionen zu 1.5 Beta 1:
  • Bei TabBarGadget() bitte nun als letzten Parameter (nach den Attributen) immer die Fensternummer angeben!
  • TabBarGadgetEvent(<Gadget>) bitte mit EventType() (ohne Gadget-Angabe) ersetzen.
  • Die Event-Konstanten haben sich wie folgt geändert:
    • #TabBarGadgetEvent_TabEdited -> #TabBarGadget_EventType_EditItem
    • #TabBarGadgetEvent_Resized -> #TabBarGadget_EventType_Resize
    • #TabBarGadgetEvent_NewTab -> #TabBarGadget_EventType_NewItem
    • #TabBarGadgetEvent_CloseTab -> #TabBarGadget_EventType_CloseItem
    • #TabBarGadgetEvent_Change -> #TabBarGadget_EventType_Change
    • #TabBarGadgetEvent_TabSwapped -> #TabBarGadget_EventType_SwapItem
    • #TabBarGadgetEvent_PopupButton -> #TabBarGadget_EventType_PopupButton
  • EventTab() bitte mit GetTabBarGadgetItemPosition(<Gadget>, #TabBarGadgetItem_Event) ersetzen.
  • DisableTabBarGadgetItem() bitte ersetzen durch SetTabBarGadgetItemState() mit angabe von #TabBarGadget_Disabled

Re: TabBarGadget - Tabs wie im Browser

Verfasst: 19.10.2013 18:11
von RSBasic
Danke für die neue Version. Ich finds echt schade, dass die Aufrufe u.ä. geändert wurden. Bei PB hat mich das immer gestört, dass bestimmte Parameter vertauscht wurden oder dass bestimmte Funktionen umbenannt wurden. Ich nutze erstmal in einem Projekt immernoch deine alte Version. Mal schauen, wann ich Lust habe, es upzudaten und anzupassen.

Re: TabBarGadget - Tabs wie im Browser

Verfasst: 19.10.2013 18:25
von STARGÅTE
Die alten Versionen (1.3 bzw 1.4) wird auch weiterhin Verfügbar bleiben.
Ich kann dich auch verstehen, finde ich selbst auch nervig, nur war es eben erforderlich weil inzwischen bei einem PB-Event (zB LeftMouseUp) u.U. zwei TabBarGadget-Events zurück gegeben werden müssen. Und dank BindEvent() läuft die Aktualisierung des Gadgets besser.

Re: TabBarGadget - Tabs wie im Browser

Verfasst: 23.10.2013 20:45
von frankmannb
Hallöchen,

bin gerade durch das Forum auf dein super TabBarGadget gestossen. Leider erhalte ich in der neuen Version 5.2 beim Aufruf der Example.pb inf folgender Zeile eine Fehlermeldung (ungültige Bildtiefe)

CreateImage(#PB_Any, 16, 16, 32|#PB_Image_Transparent)

Ist hier noch ein Fehler ?

Grüße aus Potsdam
frankmannb

Re: TabBarGadget - Tabs wie im Browser

Verfasst: 23.10.2013 20:48
von STARGÅTE
Hallo frankmannb,
Bitte verwende die neuste Beta:
Download: TabBarGadget V 1.5 Beta 1 Enthält die Include und die umfangreiche Hilfe mit Erklärungen und Beispielcodes
Sie ist mit PB 5.2 kompatibel.

Re: TabBarGadget - Tabs wie im Browser

Verfasst: 29.10.2013 00:39
von RomanR
Hallo STARGÅTE,

wirklich toll dein TabBarGadget! Bin gerade dabei, es in einem Editor zu verwenden. Funktioniert wirklich gut und habe bis jetzt keine Bugs entdeckt.

Ich habe aber eine Frage: wäre es möglich, ein RightClick-Event zu bekommen? Ich würde das für ein Popup-Menü pro Button benötigen (z.B. Editieren ein/ausschalten, Farbe ändern, Icon ändern, Tab schützen, ...) - im Prinzip sowas wie das PopupButton-Event, nur halt pro Tab.

Vielen Dank für deine herausragende Arbeit! :allright:

mfG RomanR