Page 1 of 1

SplitterGadget - PanelGadet Demons

Posted: Sat Jul 08, 2023 6:16 am
by goomoo
SplitterGadget - PanelGadet Demons

Code: Select all

;
; ------------------------------------------------------------
;
;   PureBasic - Gadget example file
;
;    (c) Fantaisie Software
;
; ------------------------------------------------------------
;
;  goomoo added PanelGadget.  2023.07.08


#WindowWidth  = 640
#WindowHeight = 480

;Gadget 相关
Global TextPureBasic7,WebBaidu0,EditorLine1,ExplorerTree3,ScrollArea6,Button20,Splitter2,Splitter4,Splitter5,ListView1,ExplorerTreePanel0

Procedure OnSizeWindow()
  ResizeGadget(Splitter5, #PB_Ignore, #PB_Ignore, WindowWidth(0), WindowHeight(0)-25) ; Our 'master' splitter gadget
  Debug "GadgetWidth(Splitter5):"+GadgetWidth(Splitter5)
  Debug "GadgetWidth(Splitter4):"+GadgetWidth(Splitter4)
  
  tw=GadgetWidth(Splitter4)-GadgetWidth(ExplorerTree3)-26
  Debug "tw:"+tw
  th=WindowHeight(0)-GadgetHeight(EditorLine1)-150
  Debug "th:"+th
  ResizeGadget(ListView1,8,42+30+8,tw,th)
  ResizeGadget(ExplorerTreePanel0,8,42+30+8-72,tw,th+72)
EndProcedure

If OpenWindow(0, 0, 0, #WindowWidth, #WindowHeight, "PureBasic - SplitterAdvanced - PanelGadet Demonstration", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_SizeGadget | #PB_Window_MaximizeGadget | #PB_Window_MinimizeGadget)

  TextPureBasic7=TextGadget(#PB_Any, 10, 5, 700, 15, "PureBasic splitter demonstation with Editor, ScrollArea, ExplorerTree and Web gadgets. Feel the power...")

  ;WebBaidu0=WebGadget(#PB_Any, 10, 10, 300, 20, "https://www.baidu.com")
  Panel0=PanelGadget(#PB_Any,10, 10, 300, 20)
    AddGadgetItem1=AddGadgetItem (Panel0, -1, "Panel 1")
    ButtonOK=ButtonGadget(#PB_Any,8,8,200,30,"OK")
    Button02=ButtonGadget(#PB_Any, 8, 42, 80, 30,"Button 2")
    ListView1=ListViewGadget(#PB_Any,8,42+30+8,200,300)
    
    AddGadgetItem1=AddGadgetItem (Panel0, -1, "Panel 2")
    ExplorerTreePanel0=ExplorerTreeGadget(#PB_Any,8,8,200,300, GetHomeDirectory(), #PB_Explorer_AlwaysShowSelection|#PB_Explorer_FullRowSelect|#PB_Explorer_MultiSelect)
  CloseGadgetList()
  
  EditorLine1=EditorGadget(#PB_Any, 115, 10, 100, 190)
  For k=1 To 10
    AddGadgetItem(EditorLine1, k-1, "Line "+Str(k))
  Next

  ExplorerTree3=ExplorerTreeGadget(#PB_Any, 115, 10, 100, 190, GetHomeDirectory(), #PB_Explorer_AlwaysShowSelection|#PB_Explorer_FullRowSelect|#PB_Explorer_MultiSelect)

  ScrollArea6=ScrollAreaGadget(#PB_Any, 0, 0, 400, 400, 1000, 1000, 1)
    Button20=ButtonGadget(#PB_Any, 20, 20, 200, 200, "Scroll Area !")
  CloseGadgetList()
  
  Splitter2=SplitterGadget(#PB_Any, 0, 0, #WindowWidth/2, #WindowHeight/2, EditorLine1, Panel0)
  Splitter4=SplitterGadget(#PB_Any, 0, 0, #WindowWidth, #WindowHeight, ExplorerTree3, Splitter2, #PB_Splitter_Vertical)
  Splitter5=SplitterGadget(#PB_Any, 0, 25, #WindowWidth, #WindowHeight-25, Splitter4, ScrollArea6, #PB_Splitter_Vertical)
  
  SetGadgetState(Splitter5, 500)
  
  ; Use BindEvent() to have a realtime window sizing
  BindEvent(#PB_Event_SizeWindow, @OnSizeWindow())

  Repeat
    Event = WaitWindowEvent()
    
    If Event = #PB_Event_Gadget
      
      Select EventGadget()

        Case 8
          SetGadgetState(Splitter5, 333)
          SetGadgetState(Splitter2, 333)
          SetGadgetState(11, 5)
        Case Splitter2
          OnSizeWindow()
        Case Splitter4
          ;Debug "Case Splitter4"
          ;Case Splitter4
          OnSizeWindow()
        Case Splitter5
          ;Debug "Case Splitter5"
          ;Case Splitter5
          OnSizeWindow()
        Case Button20
          Debug "OK"
 
      EndSelect
      
    EndIf

  
  Until Event = #PB_Event_CloseWindow

EndIf

End