Code: Select all
; *******************************************************************************
; MDIGadget() Description: Modified By LOCALMOTION34
; *******************************************************************************
; Example Code: a MDI ImageViewer:
; *******************************************************************************
Structure MDIWindow
  ; info about the loaded image
  Image.l
  ImageWidth.l
  ImageHeight.l
  
  ; gadget numbers
  ScrollAreaGadget.l
  ImageGadget.l  
EndStructure
NewList MDIWindow.MDIWindow()
#SS_NOTIFY=256 
#WINDOW = 0
#TOOLBAR = 0
#MENU = 0
Enumeration
  #MENU_Open
  #MENU_Close
  #MENU_CloseAll
  #MENU_Quit
  
  #MENU_TileV
  #MENU_TileH
  #MENU_Cascade
  #MENU_Arrange
  #MENU_Previous
  #MENU_Next
  
  #MENU_FirstMDI
EndEnumeration
Structure gadgetlist
  button.l
  button2.l
  button3.l
  button4.l
EndStructure
Dim windowlist.gadgetlist(100)
windowlist(0)\button=1
windowlist(0)\button2=2
windowlist(0)\button3=3
windowlist(0)\button4=4
UseJPEGImageDecoder()
UsePNGImageDecoder()
UseTGAImageDecoder()
UseTIFFImageDecoder()
#GADGET_MDI = 0
#Window_0=1
#WindowFlags = #PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget
If OpenWindow(#WINDOW, 0, 0, 800, 600, #WindowFlags, "MDI ImageViewer/Docked ToolWindow")
  If CreateMenu(#MENU, WindowID())
    MenuTitle("File")
    MenuItem(#MENU_Open, "Open")
    MenuItem(#MENU_Close, "Close")
    MenuItem(#MENU_CloseAll, "Close All")
    MenuBar()
    MenuItem(#MENU_Quit, "Quit")      
    MenuTitle("Windows")
    MenuItem(#MENU_TileV, "Tile vertically")
    MenuItem(#MENU_TileH, "Tile horizontally")
    MenuItem(#MENU_Cascade, "Cascade")
    MenuItem(#MENU_Previous, "Previous")
    MenuItem(#MENU_Next, "Next")
    
    ; MDI subwindows will get added here
  EndIf
  
  If CreateToolBar(#TOOLBAR, WindowID())
    ToolBarStandardButton(#MENU_Open, #PB_ToolBarIcon_Open)
    ToolBarStandardButton(#MENU_Close, #PB_ToolBarIcon_Delete)
    ToolBarSeparator()
    ToolBarStandardButton(#MENU_Previous, #PB_ToolBarIcon_Undo)
    ToolBarStandardButton(#MENU_Next, #PB_ToolBarIcon_Redo)
  EndIf
  
  If CreateGadgetList(WindowID())
    MDIGadget(#GADGET_MDI, 110, 30, 700, 500, 1, #MENU_FirstMDI)
    x = WindowX() 
    y = WindowY()
    slam=OpenWindow(1,x+3,y+80,110,500,#PB_Window_BorderLess| #WS_BORDER,"",WindowID(#WINDOW))
    SetWindowLong_(WindowID(1),#GWL_EXSTYLE,#WS_EX_TOOLWINDOW|#ws_child)
    SendMessage_(slam, #WM_NCLBUTTONDOWN, #HTCAPTION, 0)
    CreateGadgetList(WindowID(1))
    ButtonGadget(100, 10, 15, 80, 24,"Docked") 
    ButtonGadget(101, 10, 45, 80, 24,"Tool Window") 
    CloseGadgetList()
   
    
  EndIf
  
  
  Quit = 0
  Repeat
    Event = WaitWindowEvent()
    
    If Event = #PB_Event_CloseWindow
      Quit = 1   
      
    ElseIf Event = #PB_Event_Menu
      Select EventMenuID()
        Case #MENU_Open
          a=CountGadgetItems(#GADGET_MDI)
          zam=AddGadgetItem(#GADGET_MDI, 1, Str(a))              
          ButtonGadget(windowlist(0)\button+a*4,100,100,30,30,"test")
          ButtonGadget(windowlist(0)\button2+a*4,130,100,30,30,"test")
          ButtonGadget(windowlist(0)\button3+a*4,160,100,30,30,"test")
          ButtonGadget(windowlist(0)\button4+a*4,190,100,30,30,"test")
          
          
          
          
        Case #MENU_Quit
          Quit = 1     
          
        Case #MENU_TileV
          SetGadgetState(#GADGET_MDI, #PB_MDI_TileVertically)
          
        Case #MENU_TileH
          SetGadgetState(#GADGET_MDI, #PB_MDI_TileHorizontally)
          
        Case #MENU_Cascade
          SetGadgetState(#GADGET_MDI, #PB_MDI_Cascade)
          
        Case #MENU_Arrange
          SetGadgetState(#GADGET_MDI, #PB_MDI_Arrange)
          
        Case #MENU_Previous
          SetGadgetState(#GADGET_MDI, #PB_MDI_Previous)
          
        Case #MENU_Next
          SetGadgetState(#GADGET_MDI, #PB_MDI_Next)
          
      EndSelect
      
      
    ElseIf Event = #PB_Event_Gadget
      If EventGadgetID() = #GADGET_MDI
        
        Type = EventType()
        
        If Type = #PB_EventType_SizeItem          
          Item = GetGadgetAttribute(#GADGET_MDI, #PB_MDI_SizedItem)          
          Width  = GetGadgetItemAttribute(#GADGET_MDI, Item, #PB_MDI_ItemWidth)
          Height = GetGadgetItemAttribute(#GADGET_MDI, Item, #PB_MDI_ItemHeight)          
          
          SelectElement(MDIWindow(), Item)
          
          
        ElseIf Type = #PB_EventType_CloseItem
          Item = GetGadgetState(#GADGET_MDI)         
          RemoveGadgetItem(#GADGET_MDI, Item)
          
          
          DeleteElement(MDIWindow())         
          
        EndIf
        
        
        
      ElseIf EventGadgetID()=101
        SetWindowStyles(1,#WS_VISIBLE |#swp_nomove| #WS_BORDER |#PB_Window_TitleBar,#WS_EX_TOOLWINDOW)
        SetWindowPos_(1,#WS_VISIBLE,0,30,110,500,#swp_nomove)
        ResizeGadget(#GADGET_MDI,5, 30, 810, 500)
    ElseIf EventGadgetID()=100
      SetWindowStyles(1,#WS_VISIBLE |#PB_Window_BorderLess| #WS_BORDER,#WS_EX_TOOLWINDOW)
      UseWindow(#WINDOW) 
      
      x = WindowX() 
      y = WindowY()
      UseWindow(1)
      MoveWindow(x+3,y+80)
      ResizeGadget(#GADGET_MDI,110, 30, 700, 500)
      EndIf
      
    EndIf
    
  Until Quit = 1  
EndIf



