Page 1 of 1

Dialog, splittergadget and TabBarGadget

Posted: Fri Oct 10, 2025 5:31 pm
by Mesa
The TabBarGadget from Stargate here https://www.unionbytes.de/libs/tabbargadget/ seems to work within the dialog library except if this gadget is encapsulated in a splittergadget.

TabBarGadget uses a PB CanvasGadget.

Something wrong with a callback somewhere ?

Code: Select all

  XIncludeFile "TabBarGadget.pbi"

DisableExplicit

#Dialog = 0
#Xml = 0

Runtime Enumeration 
  #tabbar
  #splitter_menus
  #splitter_themes
  #canvas
  #canvas_themes
  #container_canvas_themes
EndEnumeration


;The TabBarGadget Works
; XML$ = "<window id='#PB_Any' name='test' text='test' minwidth='auto' minheight='auto' flags='#PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_SizeGadget'>" +
;        "  <canvas height='100' width='800' name='tabbar' id='#tabbar'/>" +
;        "</window>"

;The TabBarGadget Works
; XML$ = "<window id='#PB_Any' name='test' text='test' minwidth='auto' minheight='auto' flags='#PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_SizeGadget'>"+
;        "<vbox spacing='0' name='main' expand='item:2'>" +
;        "<canvas height='50' width='800' id='#tabbar'/>" +
;        "<splitter flags='#PB_Splitter_Separator' id='#splitter_themes'>" +
;        "<canvas height='100' width='800' id='#canvas'/>" +
;        "<canvas height='100' width='800' id='#canvas_themes'/>" +
;        "</splitter>" +  
;        "</vbox>" + 
;        "</window>"

;The TabBarGadget inside a splittergadget Doesn't work
XML$ = "<window id='#PB_Any' name='test' text='test' minwidth='auto' minheight='auto' flags='#PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_SizeGadget'>"+
       "<vbox spacing='0' name='main' expand='item:2'>" +
       "<splitter flags='#PB_Splitter_Separator|#PB_Splitter_SecondFixed' id='#splitter_menus'>" +
       "<canvas height='50' width='800' id='#tabbar'/>" +
       "<container id='#container_canvas_themes'>" +
       "<splitter flags='#PB_Splitter_Separator|#PB_Splitter_SecondFixed' id='#splitter_themes'>" +
       "<canvas height='100' width='800' id='#canvas'/>" +
       "<canvas height='100' width='800' id='#canvas_themes'/>" +
       "</splitter>" + 
       "</container>" +
       "</splitter>" + 
       "</vbox>" + 
       "</window>"


If ParseXML(#Xml, XML$) And XMLStatus(#Xml) = #PB_XML_Success
  
  If CreateDialog(#Dialog) And OpenXMLDialog(#Dialog, #Xml, "test")
    
    WindowMain=DialogWindow(#Dialog)
    
    TabBarGadgetAttributes = #TabBarGadget_BottomLine|#TabBarGadget_PopupButton
    TabBarGadget(#tabbar, 0, 0, 800, #TabBarGadget_DefaultHeight, TabBarGadgetAttributes, WindowMain)
    
    AddTabBarGadgetItem(#tabbar, #PB_Default, "File")
    AddTabBarGadgetItem(#tabbar, #PB_Default, "Other")
    AddTabBarGadgetItem(#tabbar, #PB_Default, "Main")
    
    If IsGadget(#splitter_menus)
      SetGadgetState(#splitter_menus, 30)
    EndIf
    If IsGadget(#splitter_themes)
      SetGadgetState(#splitter_themes, 30+100)
    EndIf
;     RefreshDialog(#Dialog)
    
    Repeat
      Event = WaitWindowEvent()
    Until Event = #PB_Event_CloseWindow 
    
  Else  
    Debug "Error -Dialog- : " + DialogError(#Dialog)
  EndIf
Else
  Debug "Error XML : " + XMLError(#Xml) + " (Line: " + XMLErrorLine(#Xml) + " " + XMLErrorPosition(#XML) + ")"
EndIf

M.

Re: Dialog, splittergadget and TabBarGadget

Posted: Fri Oct 10, 2025 10:11 pm
by Randy Walker
Mesa wrote: Fri Oct 10, 2025 5:31 pm The TabBarGadget from Stargate here https://www.unionbytes.de/libs/tabbargadget/ seems to work within the dialog library except if this gadget is encapsulated in a splittergadget.
Hi Mesa... I am famous for creating my own coding errors and have been told more than once to use EnableExplicit. Maybe the cause of the problem would reveal itself if you changed DisableExplicit to EnableExplicit. Just a thought.