Page 1 of 1

Custom Menu

Posted: Thu Aug 20, 2015 8:57 am
by RASHAD
Invite for Shardik to provide a simulate left click for Linux & Mac :)
Fully compatible with PB Pop Up Menu
Can Disable or enable any Title

Code: Select all

       mouse_event_(#MOUSEEVENTF_LEFTDOWN,0,0,0,0)
       mouse_event_(#MOUSEEVENTF_LEFTUP,0,0,0,0)
Code :

Code: Select all

ExamineDesktops()
UsePNGImageDecoder()

Global Gad 
 
LoadFont(0,"Georgia",10,#PB_Font_Bold)

For i = 1 To 3
CreateImage(i,60,22,24,$808080)
StartDrawing(ImageOutput(i))
  DrawingFont(FontID(0))
  DrawingMode(#PB_2DDrawing_Transparent)
  If i = 1                                
      DrawText(18,2,"File",$FFFFFF)
  ElseIf i = 2
      DrawText(3,2,"Edition",$FFFFFF)
  Else
      DrawText(12,2,"Help",$FFFFFF)
  EndIf
StopDrawing()
Next

For i = 4 To 6
CreateImage(i,60,22,24,$FFCC99)
StartDrawing(ImageOutput(i))
    DrawingFont(FontID(0))
    DrawingMode(#PB_2DDrawing_Transparent)
	  If i = 4                                
	      DrawText(18,2,"File",$151FFE)
	  ElseIf i = 5
	      DrawText(3,2,"Edition",$151FFE)
	  Else
	      DrawText(12,2,"Help",$151FFE)
	  EndIf
 StopDrawing()
 Next
 
For i = 7 To 9
CreateImage(i,60,22,24,$808080)
StartDrawing(ImageOutput(i))
    DrawingFont(FontID(0))
    DrawingMode(#PB_2DDrawing_Transparent)
	  If i = 7                                
	      DrawText(18,2,"File",$C7C7C8)
	  ElseIf i = 8
	      DrawText(3,2,"Edition",$C7C7C8)
	  Else
	      DrawText(12,2,"Help",$C7C7C8)
	  EndIf
 StopDrawing()
 Next

Procedure Alert(Parameter)
  Repeat    
    Delay(25)
    x = DesktopMouseX()
    y = DesktopMouseY()
    For Gad = 1 To 3
        If x >= GadgetX(gad,#PB_Gadget_ScreenCoordinate) And x < GadgetX(gad,#PB_Gadget_ScreenCoordinate)+GadgetWidth(gad) And y >= GadgetY(gad,#PB_Gadget_ScreenCoordinate) And y < GadgetY(gad,#PB_Gadget_ScreenCoordinate)+GadgetHeight(gad)
          Break
        EndIf
    Next
    If gad <> oldgad Or gad > 3
       Run = 0
    EndIf
    oldgad = gad
 		  If run = 0 And gad > 0 And gad < 4
       mouse_event_(#MOUSEEVENTF_LEFTDOWN,0,0,0,0)
       mouse_event_(#MOUSEEVENTF_LEFTUP,0,0,0,0)
       run = 1
      EndIf
  ForEver
EndProcedure

Procedure DisableMenu(Men,Status)
If Status = 1
  SetGadgetAttribute(Men, #PB_Canvas_Image ,ImageID(Men+6))
  DisableGadget(Men,1)
Else
  SetGadgetAttribute(Men, #PB_Canvas_Image ,ImageID(Men))
  DisableGadget(Men,0)
EndIf
EndProcedure

Procedure SizeWindowHandler()
  ResizeGadget(0,0,0,WindowWidth(0),22)
  ResizeGadget(3,WindowWidth(0)-60,0,60,22)
EndProcedure

If OpenWindow(0, 0, 0, 400, 300, "PureBasic - Menu",#PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_ScreenCentered)
      CreatePopupImageMenu(1)      
      MenuItem( 1, "New",LoadImage(10, #PB_Compiler_Home + "examples/sources/Data/ToolBar/New.png")) 
      MenuItem( 2, "Open",LoadImage(11, #PB_Compiler_Home + "examples/sources/Data/ToolBar/Open.png"))
      MenuItem( 3, "Save",LoadImage(12, #PB_Compiler_Home + "examples/sources/Data/ToolBar/Save.png"))
      MenuBar()
      OpenSubMenu("Recents")
        MenuItem( 5, "Pure.png")
        MenuItem( 6, "Basic.jpg")
        OpenSubMenu("Even more !")
          MenuItem( 12, "Yeah")
        CloseSubMenu()
        MenuItem( 13, "Rocks.tga")
      CloseSubMenu()
      MenuBar()
      MenuItem( 7, "&Quit")

      CreatePopupImageMenu(2)
      MenuItem( 8, "Cut",LoadImage(13, #PB_Compiler_Home + "examples/sources/Data/ToolBar/Cut.png"))
      MenuItem( 9, "Copy",LoadImage(14, #PB_Compiler_Home + "examples/sources/Data/ToolBar/Copy.png"))
      MenuItem(10, "Paste",LoadImage(15, #PB_Compiler_Home + "examples/sources/Data/ToolBar/Paste.png"))
      
      CreatePopupImageMenu(3)
      MenuItem(11, "Contents and Index",LoadImage(16, #PB_Compiler_Home + "examples/sources/Data/ToolBar/Find.png"))
      MenuItem(12, "About")

  ContainerGadget(0,0,0,400,22)
	  CanvasGadget(1,0,0,60,22)
	  CanvasGadget(2,60,0,60,22)
	  CanvasGadget(3, 345,0,60,22)
	  CloseGadgetList()
  SetGadgetColor(0,#PB_Gadget_BackColor,$808080)
  
  For i = 1 To 3
       SetGadgetAttribute(i, #PB_Canvas_Image ,ImageID(i)) 
  Next 
  
  CreateThread(@Alert(), 15)
  
  BindEvent(#PB_Event_SizeWindow,@SizeWindowHandler(),0)
  
  DisableMenu(2,1)

  Repeat 
    Select WaitWindowEvent()
      Case #PB_Event_Menu
        Select EventMenu()
           Case 1
               Debug "new"
           Case 2
               Debug "open"               
           Case 3
           Case 4
        EndSelect

      Case #PB_Event_Gadget
        Select EventGadget()              
          Case 1
             Select EventType()
                Case #PB_EventType_MouseEnter
                        Run_1 = 1
                        SetGadgetAttribute(1, #PB_Canvas_Image ,ImageID(4))                         
	                      DisplayPopupMenu(1,WindowID(0),WindowX(0) + GadgetX(1) + 8, WindowY(0) + 52)	                      
                      
                Case  #PB_EventType_MouseLeave
                        SetGadgetAttribute(1, #PB_Canvas_Image ,ImageID(1)) 
              EndSelect   
            
          Case 2
              Select EventType()
                 Case #PB_EventType_MouseEnter
                      Run_2 = 1
                      SetGadgetAttribute(2, #PB_Canvas_Image ,ImageID(5)) 
                      DisplayPopupMenu(2,WindowID(0),WindowX(0) + GadgetX(2) + 8, WindowY(0) + 52)
                      
                Case  #PB_EventType_MouseLeave
                        SetGadgetAttribute(2, #PB_Canvas_Image ,ImageID(2)) 
              EndSelect   
          
          Case 3
              Select EventType()
                Case #PB_EventType_MouseEnter
                        Run_3 = 1
                        SetGadgetAttribute(3, #PB_Canvas_Image ,ImageID(6)) 
                        DisplayPopupMenu(3,WindowID(0),WindowX(0) + WindowWidth(0) - 165, WindowY(0) + 52)
                      
                Case  #PB_EventType_MouseLeave
                        SetGadgetAttribute(3, #PB_Canvas_Image ,ImageID(3)) 
              EndSelect

        EndSelect

      Case #PB_Event_CloseWindow
        Quit = 1

    EndSelect

  Until Quit = 1

EndIf

End