November 28, 2020, 01:31:11 PM

Author Topic: [bb] Max menu by Airilsm [ 1+ years ago ]  (Read 571 times)

Offline BlitzBot

  • Jr. Member
  • **
  • Posts: 1
[bb] Max menu by Airilsm [ 1+ years ago ]
« on: June 29, 2017, 12:28:42 AM »
Title : Max menu
Author : Airilsm
Posted : 1+ years ago

Description : 3ds max colapable style menu.

Code :
Code: BlitzBasic
  1. ;==================================================================
  2. Const   ProjectTitle$   = "Max Menu"    
  3. Const   Author$                 = "Mag.ic"
  4. Const   Date$                   = "Jan 2004"              
  5. Const   Version$                = "0.01"          
  6. ;==================================================================
  7. ;SETTING
  8. Global FormBGColor=15526360
  9. Global CaptionBGColor=$C0C0C0
  10. Global CaptionFGColor=$000000
  11. Global ContentBGColor=$F0FFFF
  12. Global ContentFGColor=$000080
  13. Global AutoColapseMyMenu=0                                              ;only one menu uncollapse
  14. Const TotalMyMenu=6                                                     ;total of collapse menu to create
  15. Dim Mymenu$(TotalMyMenu):Dim MymenuCollapse(TotalMyMenu):Dim MymenuHeight(TotalMyMenu)
  16.         MyMenu$(1)="General":MymenuCollapse(1)=0:MymenuHeight(1)=80
  17.         MyMenu$(2)="Gadget":MymenuCollapse(2)=0:MymenuHeight(2)=150
  18.         MyMenu$(3)="Property":MymenuCollapse(3)=0:MymenuHeight(3)=294
  19.         MyMenu$(4)="Selection Tree":MymenuCollapse(4)=0:MymenuHeight(4)=200
  20.         MyMenu$(5)="Menu Editor":MymenuCollapse(5)=0:MymenuHeight(5)=100
  21.         MyMenu$(6)="Info & Setting":MymenuCollapse(6)=1:MymenuHeight(6)=275
  22. ;==================================================================
  23.  
  24. ;some general use global
  25. Global Bigmain                                                                  ;For create minimize window
  26. Global main                                                                     ;mainwindow handle
  27. Global lebarmain=300
  28. Global heightmain=400                                                   ;ClientHeight(Desktop())-30
  29. Global maincanvas                                                               ;main canvas handle
  30. Global Event
  31. Global MouseStillDown                                                   ;for drag
  32. Global RememberMouseX                                                   ;for drag
  33. Global RememberMouseY                                                   ;for drag
  34. Global offset                                                                   ;offset of menu drawing
  35. Global BezaY                                                                    ;temporary offset during draging of menu
  36.  
  37.        
  38. Function createmainwindow()
  39.         Bigmain=CreateWindow(ProjectTitle$,0,-100,heightmain,0,Desktop(),3)
  40.         main=CreateWindow(ProjectTitle$,0,0,lebarmain,heightmain,Bigmain,17)
  41.         maincanvas=CreateCanvas(0,0,ClientWidth(main),ClientHeight(main),main)
  42.         SetGadgetLayout maincanvas,1,1,1,1
  43.         SetBuffer CanvasBuffer(maincanvas)
  44.         SetFont LoadFont(Arial,14,1)
  45.         ClsColor 0,0,FormBGColor
  46. End Function
  47. createmainwindow()
  48.  
  49. Repeat
  50.         event=WaitEvent(1)
  51.         DrawMaxMenu()
  52.         Select Event
  53.         Case $803
  54.                 If EventSource()=main Then End
  55.         Case $802 ;size
  56.                 ActivateGadget main
  57.         Case $801 ;move
  58.                 SetGadgetShape Bigmain,GadgetX(main),-100,heightmain,0
  59.         End Select
  60. Forever
  61.  
  62. Function DrawMaxMenu()
  63.         Cls
  64.         y=2+offset+BezaY
  65.         For k=1 To TotalMyMenu
  66.                 ;draw caption
  67.                 Color 0,0,CaptionBGColor
  68.                 Rect 2,y+1,lebarmain-10,15
  69.                 Color 0,0,CaptionFGColor
  70.                 Rect 2,y+1,lebarmain-10,15,0
  71.                 Text 15,y+2,Mymenu$(k)
  72.                 ;drag tracking
  73.                 If MouseDown(1) And MouseStillDown=0 Then
  74.                         MouseStillDown=1
  75.                         RememberMouseX=MouseX(maincanvas)
  76.                         RememberMouseY=MouseY(maincanvas)
  77.                 EndIf
  78.                 ;update BezaY for draging show. BezaY is reset when mouseup and the value is added to offset
  79.                 If MouseStillDown=1 And RememberMouseX=MouseX(maincanvas)<>MouseX(maincanvas) And RememberMouseY=MouseY(maincanvas)<>MouseY(maincanvas) Then
  80.                         BezaX=MouseX(maincanvas)-RememberMouseX
  81.                         BezaY=MouseY(maincanvas)-RememberMouseY
  82.                         If offset+Bezay>0
  83.                                 offset=0:BezaY=0
  84.                         EndIf
  85.                 EndIf  
  86.                 If Event=$202 Then ;mouseup
  87.                         MouseStillDown=0
  88.                         If MouseY(maincanvas)<>RememberMouseY
  89.                                 offset=offset+BezaY:BezaY=0
  90.                                 Click=0
  91.                                 Event=0
  92.                         Else                   
  93.                                 Click=1
  94.                         EndIf
  95.                 EndIf
  96.                 ;collession caption - only when no drag
  97.                 If k<>TotalMyMenu And click=1 And MouseStillDown=0 And Event=$202 And MouseX(maincanvas)>2 And MouseX(maincanvas)<2+lebarmain-10 And MouseY(maincanvas)>y+1 And MouseY(maincanvas)<y+1+15 Then
  98.                         If MymenuCollapse(k)=1 Then
  99.                                 MymenuCollapse(k)=0
  100.                         Else
  101.                                 If AutoColapseMyMenu
  102.                                         For kk=1 To TotalMyMenu-1
  103.                                                 MymenuCollapse(kk)=0
  104.                                         Next
  105.                                 EndIf
  106.                                 MymenuCollapse(k)=1
  107.                         EndIf
  108.                         ;need DoEvent() trick
  109.                         MoveMouse MouseX(maincanvas)+1,MouseY(maincanvas),maincanvas
  110.                         MoveMouse MouseX(maincanvas)-1,MouseY(maincanvas),maincanvas
  111.                 EndIf
  112.                 ;draw + - except info
  113.                 If k<TotalMyMenu
  114.                         Color 0,0,CaptionFGColor
  115.                         If MymenuCollapse(k)=1 Then
  116.                                 Line 5,y+9,11,y+9              
  117.                         Else
  118.                                 Line 5,y+9,11,y+9
  119.                                 Line 8,y+6,8,y+12
  120.                         EndIf
  121.                 EndIf
  122.                 ;draw the boder of uncolapse menu
  123.                 If MymenuCollapse(k)=1 Then
  124.                         Rect 2,y+1,lebarmain-10,MymenuHeight(k)-5,0
  125.                         Color 0,0,ContentBGColor
  126.                         Rect 3,y+1+15,lebarmain-12,MymenuHeight(k)-6-15
  127.                         ;POINT TO FUNCTION RELATED TO OPEN MENU
  128.                         Select K
  129.                         Case 1
  130.                                 DrawSection1(4,y+17)
  131.                         Case 2
  132.                                 DrawSection2(4,y+17)
  133.                         Case 3
  134.                                 DrawSection3(4,y+17)
  135.                         Case 4
  136.                                 DrawSection4(4,y+17)
  137.                         Case 5
  138.                                 DrawSection5(4,y+17)
  139.                         Case 6
  140.                                 DrawSection6(4,y+17)
  141.                         End Select
  142.                         y=y+MymenuHeight(k)
  143.                 Else
  144.                         y=y+20
  145.                 EndIf
  146.         Next
  147.         ;count total height
  148.         If offset>=0 Then
  149.                 total=y-offset
  150.         Else
  151.                 total=y+Abs(offset)
  152.         EndIf
  153.         ;flip but only if no re offset
  154.         If offset+total<heightmain-25 Then
  155.                 offset=offset+((heightmain-25)-(offset+total))
  156.         Else
  157.                 FlipCanvas(maincanvas)
  158.         EndIf
  159. End Function
  160.  
  161. ;=========================
  162.  
  163. Function DrawSection1(x,y)
  164.         Color 0,0,ContentFGColor
  165.         Rect x,y,10,10,1
  166.         MymenuHeight(1)=150
  167. End Function
  168. Function DrawSection2(x,y)
  169.         Color 0,0,ContentFGColor
  170.         Rect x,y,10,10,1
  171. End Function
  172. Function DrawSection3(x,y)
  173.         Color 0,0,ContentFGColor
  174.         Rect x,y,10,10,1
  175. End Function
  176. Function DrawSection4(x,y)
  177.         Color 0,0,ContentFGColor
  178.         Rect x,y,10,10,1
  179. End Function
  180. Function DrawSection5(x,y)
  181.         Color 0,0,ContentFGColor
  182.         Rect x,y,10,10,1
  183. End Function
  184. Function DrawSection6(x,y)
  185.         Color 0,0,ContentFGColor
  186.         Rect x,y,10,10,1
  187. End Function


Comments : none...

 

SimplePortal 2.3.6 © 2008-2014, SimplePortal