December 03, 2020, 08:20:09 PM

Author Topic: [bb] Convenient menu programming by Matt Merkulov [ 1+ years ago ]  (Read 589 times)

Offline BlitzBot

  • Jr. Member
  • **
  • Posts: 1
Title : Convenient menu programming
Author : Matt Merkulov
Posted : 1+ years ago

Description : From article: <a href="http://blitzetcetera.org/index.php/Создание_меню_в_BlitzPlus" target="_blank"> Creating menu in BlitzPlus[/url] (rus)

Code :
Code: BlitzBasic
  1. ;Convenient menu programming by Matt Merkulov
  2.  
  3. Type menuitem
  4.         Field name$
  5. End Type
  6.  
  7. Function Menu_Create(w)
  8.         wmenu = WindowMenu(w)
  9.         parent = wmenu
  10.         Repeat
  11.                 Read m$
  12.                 Select m$
  13.                         Case"{": parent = old
  14.                         Case"}": parent = wmenu
  15.                         Case"===The end===": Exit
  16.                 Default
  17.                         If parent <> wmenu Then
  18.                                 i = i + 1
  19.                                 mi.menuitem = New menuitem
  20.                                 mi
  21. ame$ = m$
  22.                         End If
  23.                         old = CreateMenu(m$, i, parent)
  24.                 End Select
  25.         Forever
  26.         UpdateWindowMenu(w)
  27. End Function
  28.  
  29. Function menuitem_name$(n)
  30.         mi.menuitem = First menuitem
  31.         For nn = 2 To n
  32.                 If mi = Null Then Notify"Menuitem N" + n + "does not exist": Return
  33.                 mi = After mi
  34.         Next
  35.         Return mi
  36. ame$
  37. End Function
  38.  
  39.  
  40.  
  41. Global ent$ = Chr$(13) + Chr$(10), filename$
  42.  
  43. Global win = CreateWindow("", ClientWidth(Desktop()) / 2 - 300, ClientHeight(Desktop()) / 2 - 200, 600, 400, 0, 7)
  44. filename_change "untitled.txt"
  45. Global ta = CreateTextArea(0, 0, 10, 10, win)
  46. ta_resize()
  47.  
  48. Data"File", "{", "New", "Open...", "Save...", "Save as...", "", "Exit", "}"
  49. Data"Info", "{", "Help", "About...", "}"
  50. Data"===The end==="
  51. Menu_Create win
  52.  
  53. Repeat
  54.         Select WaitEvent()
  55.                 Case$1001
  56.                         Select menuitem_name(EventData())
  57.                                 Case"New"
  58.                                         filename_change"untitled.txt"
  59.                                         SetTextAreaText ta, ""
  60.                                 Case"Open..."
  61.                                         file$ = RequestFile("Open file...", "txt,*")
  62.                                         If file$ <> ""Then doc_load file$
  63.                                 Case"Save..."
  64.                                         doc_save
  65.                                 Case"Save as..."
  66.                                         file$ = RequestFile("Save file as...", "txt,*", True)
  67.                                         If file$ <> ""Then
  68.                                                 filename_change file$
  69.                                                 doc_save
  70.                                         End If
  71.                                 Case"Exit": Exit
  72.                                 Case"Help": Notify "Really need help? Come on..."
  73.                                 Case"About...": Notify"Simple text editor" + ent$ + "Author: Matt Merkulov"
  74.                         End Select
  75.                 Case$802:ta_resize()
  76.                 Case$803:Exit
  77.         End Select
  78. Forever
  79.  
  80. Function ta_resize()
  81.         SetGadgetShape ta, 0, 0, ClientWidth(win), ClientHeight(win)
  82. End Function
  83.  
  84. Function filename_change(file$)
  85.         filename$ = file$
  86.         SetGadgetText win, "Simple text editor - " + filename$
  87. End Function
  88.  
  89. Function doc_load(file$)
  90.         filename_change file$
  91.         f = ReadFile(file$)
  92.         LockTextArea ta
  93.         SetTextAreaText ta, ""
  94.         While Not Eof(f)
  95.                 AddTextAreaText ta, ReadLine$(f)
  96.                 If Not Eof(f) Then AddTextAreaText ta, ent$
  97.         Wend
  98.         CloseFile f
  99.         UnlockTextArea ta
  100. End Function
  101.  
  102. Function doc_save()
  103.         f = WriteFile(filename$)
  104.         WriteLine f, TextAreaText$(ta)
  105.         CloseFile f
  106. End Function


Comments : none...

 

SimplePortal 2.3.6 © 2008-2014, SimplePortal