Custom Menu
Posted: Thu Aug 20, 2015 8:57 am
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 :

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: 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