November 25, 2020, 05:03:44 AM

Author Topic: [bb] Quick gui designer (b+) by Nebula [ 1+ years ago ]  (Read 569 times)

Offline BlitzBot

  • Jr. Member
  • **
  • Posts: 1
[bb] Quick gui designer (b+) by Nebula [ 1+ years ago ]
« on: June 29, 2017, 12:28:38 AM »
Title : Quick gui designer (b+)
Author : Nebula
Posted : 1+ years ago

Description : Output after 'esc'

Box coordinates are put in a text file and shown on a notepad. They can be copied to a project sourcecode.


Code :
Code: BlitzBasic
  1. Writelog("Quick Gui Designer - By Nebula","vdlog.txt","new")
  2.  
  3. Dim Rectarray(100,3)
  4. Global rectarraylen = 0
  5. Global activerect = 0
  6.  
  7. Global winwidth = 320
  8. Global winheight = 240
  9.  
  10. Global doubleclicktime = MilliSecs()
  11. Global doubleclick ; true/false
  12.  
  13. setupwindow()
  14.  
  15. win = CreateWindow("Window",ClientWidth(Desktop())/2-winwidth/2,ClientHeight(Desktop())/2-winheight/2,winwidth+7,winheight+7,Desktop(),1+8)
  16.  
  17. can = CreateCanvas(0,0,winwidth,winheight,win)
  18. SetBuffer CanvasBuffer(can)
  19. ClsColor 100,100,100
  20. Cls
  21. FlipCanvas(can)
  22.  
  23.  
  24. Global gridwidth  = 32
  25. Global gridheight = 32
  26.  
  27.  
  28. timer = CreateTimer(50)
  29. drawgrid(can,gridwidth,gridheight)
  30. While we<>$803
  31. we = WaitEvent()
  32. doubleclick(we)
  33. Select we
  34.         Case $101       ;- Key down
  35.         Case $102       ;- Key up
  36.                 If EventData() = 1 Then
  37.                         If Confirm("Quit?") Then
  38.                                 we = $803
  39.                         End If
  40.                 End If 
  41.                 If EventData() = 2 Then gridwidth = 16 : gridheight = 16
  42.                 If EventData() = 3 Then gridwidth = 32 : gridheight = 32
  43.                 If EventData() = 4 Then gridwidth = 48 : gridheight = 48
  44.                 If EventData() = 5 Then gridwidth = 64 : gridheight = 64       
  45.                 Cls
  46.                 drawgrid(can,gridwidth,gridheight)     
  47.                 drawoldrects(can,-1)           
  48.         Case $103       ;- Key stroke
  49.         Case $201       ;- Mouse down
  50.                         ;
  51.                 If EventData() = 2 Then
  52.                         If Rectarraylen > 0 Then
  53.                                 Rectarray(Rectarraylen,0) = 0
  54.                                 Rectarray(Rectarraylen,1) = 0
  55.                                 Rectarray(Rectarraylen,2) = 0
  56.                                 Rectarray(Rectarraylen,3) = 0
  57.                                 If rectarraylen => 0 Then Rectarraylen = Rectarraylen - 1
  58.                                 Cls
  59.                                 drawgrid(can,gridwidth,gridheight)
  60.                                 drawoldrects(can,-1)
  61.                                 FlipCanvas(can)
  62.                                 SetStatusText(win,Rectarraylen)
  63.                         End If
  64.                 End If
  65.                         ;
  66.                 If EventData() = 1 Then
  67.                         drawrect = True
  68.                         x1 = EventX()
  69.                         y1 = EventY()
  70.                 End If
  71.                 If EventData() = 3  And rectarraycollision(EventX(),EventY()) = True Then                                      
  72.                         centerrect = True
  73.                 End If
  74.         Case $202       ;- Mouse up
  75.                 If EventData() = 1 Then
  76.                         ;
  77.                         x2 = EventX()
  78.                         y2 = EventY()
  79.                         ;
  80.                         If x2>x1 And y2>y1 Then
  81.                                 If x1+6<x2 And y1+6<y2 Then
  82.                                         If Rectarraylen<0 Then Rectarraylen=0
  83.                                         rectarraylen = rectarraylen + 1
  84.                                         Rectarray(Rectarraylen,0) = x1
  85.                                         Rectarray(Rectarraylen,1) = y1
  86.                                         Rectarray(Rectarraylen,2) = x2
  87.                                         Rectarray(Rectarraylen,3) = y2                                 
  88.                                 End If
  89.                         End If
  90.                         ;
  91.                         drawgrid(can,gridwidth,gridheight)
  92.                         drawoldrects(can,-1)
  93.                         drawrect = False
  94.                         ;
  95.                         SetStatusText win,Rectarraylen + " items stored"
  96.                         ;
  97.                 End If
  98.                 If EventData() = 2 Then
  99.                         Cls
  100.                         drawgrid(can,gridwidth,gridheight)
  101.                         drawoldrects(can,-1)
  102.                         FlipCanvas(can)
  103.                 End If
  104.                 If EventData() = 3 Then
  105.                         centerrect = False
  106.                 End If
  107.         Case $203       ;- Mouse move          
  108.                 If drawrect = True Then        
  109.                         SetBuffer CanvasBuffer(Can)                    
  110.                         Cls
  111.                         Color 255,255,255
  112.                         x2 = EventX()
  113.                         y2 = EventY()
  114.                         drawgrid(can,gridwidth,gridheight)
  115.                         drawoldrects(can,-1)
  116.                         Rect x1,y1,x2-x1,y2-y1
  117.                         FlipCanvas(can)                
  118.                 End If
  119.                 If centerrect = True Then              
  120.                         x3 = Rectarray(activerect,0)
  121.                         y3 = Rectarray(activerect,1)
  122.                         x4 = Rectarray(activerect,2)
  123.                         y4 = Rectarray(activerect,3)
  124.                         w = x4-x3
  125.                         h = y4-y3                      
  126.                         ;
  127.                         x5 = EventX()
  128.                         y5 = EventY()
  129.                         ;
  130.                         If x5-w/2=>0 And x5+w/2<GadgetWidth(can)
  131.                                 If y5-h/2>0 And y5+h/2<GadgetHeight(can)
  132.                                         Rectarray(activerect,0) = x5-w/2
  133.                                         Rectarray(activerect,1) = y5-h/2
  134.                                         Rectarray(activerect,2) = x5+w/2
  135.                                         Rectarray(activerect,3) = y5+h/2
  136.                                 End If
  137.                         EndIf
  138.                         ;
  139.                         Cls
  140.                         drawgrid(can,gridwidth,gridheight)
  141.                         drawoldrects(can)                      
  142.                         FlipCanvas(can)
  143.                 End If
  144.         Case $204       ;- Mouse wheel
  145.         Case $205       ;- Mouse enter
  146.         Case $206       ;- Mouse leave
  147.         Case $401       ;- Gadget action
  148.         Case $801       ;- Window move
  149.         Case $802       ;- Window size
  150.         Case $803       ;- Window close
  151.         Case $804       ;- Window activate
  152.         Case $1001      ;- Menu event
  153.         Case $2001      ;- App suspend
  154.         Case $2002      ;- App Display Change
  155.         Case $2003      ;- App Begin Modal
  156.         Case $2004      ;- App End Modal
  157.         Case $2002      ;- App resume
  158.         Case $4001      ;- Timer tick
  159.         ;If doubleclick = True Then End
  160. End Select
  161. Wend
  162.  
  163.  
  164. Writelog("Window width : " + winwidth,"vdlog.txt","add")
  165. Writelog("Window height : " + winheight,"vdlog.txt","add")
  166. For i=1 To Rectarraylen
  167.         a$ = Str$(Rectarray(i,0)) + ","
  168.         b$ = Str$(Rectarray(i,1)) + ","
  169.         c$ = Str$(Rectarray(i,2)-Rectarray(i,0)) + ","
  170.         d$ = Str$(Rectarray(i,3)-Rectarray(i,1))
  171.         Writelog(a$+b$+c$+d$,"vdlog.txt","add")
  172. Next
  173.  
  174. If Rectarraylen>0 Then
  175.         ExecFile("notepad.exe vdlog.txt")
  176. End If
  177.  
  178. Function setupwindow()
  179. w = 320
  180. h = 240
  181.  
  182. ww = Int(Readlog$("GB_settings.txt",3))
  183. wh = Int(Readlog$("GB_settings.txt",5))
  184.  
  185. ;Notify ww : End
  186.  
  187. If ww <1 Or wh<1 Then ww = 320 : wh = 240
  188.  
  189. w = CreateWindow("Select the window dimensions",ClientWidth(Desktop())/2-winwidth/2,ClientHeight(Desktop())/2-winheight/2,winwidth,winheight,Desktop(),16+1+8)
  190.  
  191. te1 = CreateTextField(128,31,224-128,22,w) ; width
  192. te2 = CreateTextField(128,95,224-128,22,w) ; height
  193. SetGadgetText(te1,ww)
  194. SetGadgetText(te2,wh)
  195. butexit = CreateButton("Go",224,143,305-224,175-143,w,1+8) ;continue
  196. lab1 = CreateLabel("Width : ",15,31,112-15,63-31,w) ; text1
  197. lab2 = CreateLabel("Height : ",16,96,112-16,126-96,w) ; text2
  198.  
  199. While we<>$803
  200. we = WaitEvent()
  201. Select we
  202.         Case $101       ;- Key down
  203.         Case $102       ;- Key up
  204.         Case $103       ;- Key stroke
  205.         Case $201       ;- Mouse down
  206.         Case $202       ;- Mouse up
  207.         Case $203       ;- Mouse move
  208.         Case $204       ;- Mouse wheel
  209.         Case $205       ;- Mouse enter
  210.         Case $206       ;- Mouse leave
  211.         Case $401       ;- Gadget action
  212.         If EventSource() = butexit Then
  213.                 winwidth = TextFieldText(te1)
  214.                 winheight = TextFieldText(te2)
  215.                 Writelog("Settings for Guibuilder","GB_settings.txt","new")
  216.                 Writelog(Trim(Str(winwidth)),"GB_settings.txt","add")
  217.                 Writelog(Trim(Str(winheight)),"GB_settings.txt","add")
  218.                 FreeGadget(w)
  219.                 Return
  220.         End If
  221.         Case $801       ;- Window move
  222.         Case $802       ;- Window size
  223.         Case $803       ;- Window close
  224.         Case $804       ;- Window activate
  225.         Case $1001      ;- Menu event
  226.         Case $2001      ;- App suspend
  227.         Case $2002      ;- App Display Change
  228.         Case $2003      ;- App Begin Modal
  229.         Case $2004      ;- App End Modal
  230.         Case $2002      ;- App resume
  231.         Case $4001      ;- Timer tick
  232. End Select
  233. Wend
  234. End
  235. End Function
  236.  
  237. Function Rectarraycollision(x,y)
  238.         If Rectarraylen<0 Then Return
  239.         For i = Rectarraylen To 0 Step -1
  240.                 If RectsOverlap(Rectarray(i,0),Rectarray(i,1),Rectarray(i,2)-Rectarray(i,0),Rectarray(i,3)-Rectarray(i,1),x,y,1,1) Then
  241.                         activerect = i : Return True
  242.                 End If
  243.         Next
  244. End Function
  245.  
  246. Function drawoldrects(can,num = -1)
  247. If Rectarraylen = 0 Then Return
  248. SetBuffer CanvasBuffer(can)
  249. For i=0 To Rectarraylen; To 0 Step -1
  250. If num <> 1
  251. Color 50,50,50
  252. Rect Rectarray(i,0),Rectarray(i,1),Rectarray(i,2)-Rectarray(i,0),Rectarray(i,3)-Rectarray(i,1)
  253. End If
  254. Color 200,200,200
  255. Rect Rectarray(i,0),Rectarray(i,1),Rectarray(i,2)-Rectarray(i,0),Rectarray(i,3)-Rectarray(i,1),0
  256. Next
  257. FlipCanvas(can)
  258. End Function
  259.  
  260. Function drawgrid(can,width,height)
  261. SetBuffer CanvasBuffer(can)
  262. Color 0,0,0
  263.  
  264. Repeat
  265. Rect x,y,width,height,0
  266.  
  267. x=x + width
  268. If x=> GadgetWidth(can) Then y=y + height : x = 0
  269. Until y > GadgetHeight(can)
  270.  
  271.  
  272. FlipCanvas(can)
  273. End Function
  274.  
  275. Function doubleclick(we) ; Fills in the variable doubleclick when double clicked       
  276.         ;
  277.         ; Place this function in your loop and feed it events.
  278.         ;
  279.         ; If doubleclick = true then suprise()
  280.         ;
  281.         Select we
  282.                 Case $201 ; mouse down
  283.                 If MilliSecs()-doubleclicktime < 200 Then doubleclick = True Else doubleclick = False
  284.                 doubleclicktime = MilliSecs()
  285.         End Select
  286. End Function
  287.  
  288. Function Writelog(out$,filename$,method$)
  289. Local back$[1024]
  290. method$ = Lower(method$)
  291. If method$ = "add" Then
  292.         f = ReadFile(filename$)
  293.                 zi=0
  294.                 While Eof(f) = False
  295.                         back[zi] = ReadLine(f)
  296.                         zi=zi+1
  297.                 Wend
  298.         CloseFile(f)
  299. End If
  300. ;
  301. f = WriteFile(filename$)
  302. ;
  303. If method="add" Then
  304.         For i=0 To zi
  305.                 WriteLine(f,back[i])
  306.         Next
  307. End If
  308. ;
  309. WriteLine(f,out$)
  310. ;
  311. CloseFile(f)
  312. ;
  313. End Function
  314.  
  315. Function Readlog$(filename$,lin)
  316.         If FileType(filename$) <> 1 Then Return -1     
  317.         f = ReadFile(filename$)
  318.                 While Eof(f) = False
  319.                         cnt = cnt+1                    
  320.                         a$ = ReadLine(f)
  321.                         If lin = cnt Then Return a$
  322.                 Wend                           
  323.         CloseFile(f)
  324. End Function


Comments : none...

 

SimplePortal 2.3.6 © 2008-2014, SimplePortal