December 04, 2020, 11:30:16 AM

Author Topic: [bmx] A Simple Text Editor by po [ 1+ years ago ]  (Read 400 times)

Offline BlitzBot

  • Jr. Member
  • **
  • Posts: 1
[bmx] A Simple Text Editor by po [ 1+ years ago ]
« on: June 29, 2017, 12:28:41 AM »
Title : A Simple Text Editor
Author : po
Posted : 1+ years ago

Description : It's my version of MS Notepad. I figure someone out there must be looking for something like this. =)
It probably isn't the best way of doing it, and it is messy in places, but it should still be pretty easy to understand. Oh, and comments aren't my thing.


Code :
Code: BlitzMax
  1. SuperStrict
  2.  
  3. Const MENU_NEW:Int=11
  4. Const MENU_OPEN:Int=3
  5. Const MENU_SAVE:Int=4
  6. Const MENU_SAVEAS:Int=12
  7. Const MENU_EXIT:Int=1
  8.  
  9. Const MENU_CUT:Int=5
  10. Const MENU_COPY:Int=6
  11. Const MENU_PASTE:Int=7
  12. Const MENU_SELECT:Int=10
  13.  
  14. Const MENU_ABOUT:Int=2
  15.  
  16. Global filename$
  17. Global content$
  18. Global latestsave$
  19. Global name$
  20. Global prosave:Int
  21. Global action:Int
  22. Global skip:Int=False
  23. Global s$,c$
  24.  
  25. Local font:TGuiFont
  26. Local linenum:Int
  27. Local line:Int
  28.  
  29. Local font1:TGuiFont=LoadGuiFont("verdana",10,False,False,False)
  30.  
  31. Local window:TGadget=CreateWindow("Untitled - Text Editor",100,100,600,500,Null,WINDOW_TITLEBAR|WINDOW_RESIZABLE|WINDOW_MENU|WINDOW_STATUS)
  32.  
  33. SetMinWindowSize(window,200,200)
  34.  
  35. Local filemenu:TGadget=CreateMenu("File",0,WindowMenu(window))
  36.         CreateMenu "New",MENU_NEW,filemenu,78,2
  37.         CreateMenu "Open",MENU_OPEN,filemenu,79,2
  38.         CreateMenu "Save",MENU_SAVE,filemenu,83,2
  39.         CreateMenu "Save As",MENU_SAVEAS,filemenu,83,1+2
  40.         CreateMenu "",Null,filemenu
  41.         CreateMenu "Exit",MENU_EXIT,filemenu
  42.        
  43. Local editmenu:TGadget=CreateMenu("Edit",0,WindowMenu(window))
  44.         CreateMenu "Cut",MENU_CUT,editmenu,88,2
  45.         CreateMenu "Copy",MENU_COPY,editmenu,67,2
  46.         CreateMenu "Paste",MENU_PASTE,editmenu,86,2    
  47.         CreateMenu "",Null,editmenu
  48.         CreateMenu "Select All",MENU_SELECT,editmenu,65,2      
  49.        
  50. Local helpmenu:TGadget=CreateMenu("Help",0,WindowMenu(window))
  51.         CreateMenu "About",MENU_ABOUT,helpmenu
  52.  
  53. UpdateWindowMenu(window)
  54.  
  55. Global textbox:TGadget=CreateTextArea(0,0,592,434,window,0)
  56.         SetGadgetLayout(textbox,1,1,1,1)       
  57.         SetGadgetColor(textbox,255,255,255,True)
  58.         SetTextAreaFont(textbox,font1)
  59.         SetTextAreaColor(textbox,0,0,0,False)
  60.        
  61.        
  62. While WaitEvent()
  63.  
  64.         Select EventID()
  65.        
  66.                 Case EVENT_WINDOWCLOSE
  67.                         ProceedSave(1)
  68.                        
  69.                 Case EVENT_MENUACTION
  70.                        
  71.                         Select EventData()
  72.                                                        
  73.                                 Case MENU_EXIT
  74.                                         ProceedSave(1)                                 
  75.                                                                                        
  76.                                 Case MENU_ABOUT
  77.                                         AppTitle="Text Editor"
  78.                                         Notify "Text Editor v1.0 by Paul Leduc."
  79.                                        
  80.                                 Case MENU_CUT
  81.                                         GadgetCut(textbox)
  82.                                        
  83.                                 Case MENU_COPY
  84.                                         GadgetCopy(textbox)
  85.                                        
  86.                                 Case MENU_PASTE
  87.                                         GadgetPaste(textbox)
  88.                                        
  89.                                 Case MENU_SELECT
  90.                                         SelectTextAreaText(textbox,0,TextAreaLen(textbox,1),1)                                 
  91.                                
  92.                                 Case MENU_NEW
  93.                                         ProceedSave(2)
  94.                                         If skip=False Then SetTextAreaText(textbox,"")
  95.                                         filename$=""
  96.                                         name$=""
  97.                                         latestsave$=TextAreaText(textbox)
  98.                                         SetGadgetText(window,"Untitled - Text Editor")
  99.                                        
  100.                                 Case MENU_OPEN
  101.                                         ProceedSave(2)
  102.                                         If skip=False Then
  103.                                                 filename$=RequestFile("Open","Text Files (*.txt):txt;All Files (*):*")
  104.                                                 If filename$ Then                                                                                      
  105.                                                         Local file:TStream=ReadFile(filename$)                                 
  106.                                                         SetTextAreaText(textbox,LoadString$(file),0,-1,1)
  107.                                                         latestsave$=TextAreaText(textbox)
  108.                                                         name$=StripDir(filename$)
  109.                                                         SetGadgetText(window,name$+" - Text Editor")                                   
  110.                                                 EndIf
  111.                                         EndIf
  112.                                                                                
  113.                                 Case MENU_SAVE
  114.                                         Save()
  115.                                        
  116.                                 Case MENU_SAVEAS
  117.                                         SaveAs()                               
  118.  
  119.                         End Select
  120.  
  121.                
  122.                 Default
  123.                
  124.                         line=TextAreaLine(textbox,TextAreaCursor(textbox,1))+1                 
  125.                         SetStatusText window," Line: "+line
  126.                                        
  127.         End Select
  128.  
  129. Wend
  130.  
  131. Function Save()
  132.  
  133.         Print filename$
  134.  
  135.         content$=TextAreaText(textbox)
  136.                                        
  137.         If filename$ Then
  138.                                        
  139.                 SaveString(content$,filename$)                                                 
  140.                                        
  141.                 latestsave$=TextAreaText(textbox)
  142.                                                
  143.         Else
  144.                                        
  145.                 SaveAs()
  146.                                                                                        
  147.         EndIf
  148.  
  149. End Function
  150.  
  151. Function SaveAs()
  152.  
  153.         content$=TextAreaText(textbox)
  154.                                        
  155.         filename$=RequestFile("Save As","Text Files (*.txt):txt;All Files (*):*",True)
  156.        
  157.         If filename$ Then
  158.        
  159.                 If ExtractExt(filename$)="" Then filename$=filename$+".txt"
  160.                
  161.                 Local newfile:TStream=WriteFile(filename$)                     
  162.                 SaveString(content$,newfile)
  163.                                        
  164.                 While Not(Eof(newfile))
  165.                         s$=ReadLine(newfile)
  166.                         c$=c$+s$+Chr(13)+Chr(10)
  167.                         Print s$                       
  168.                 Wend
  169.                
  170.                 SaveString("",newfile)                                 
  171.                
  172.                 SaveString(c$,newfile)         
  173.                
  174.                 CloseStream(newfile)
  175.                                
  176.                 latestsave$=TextAreaText(textbox)
  177.                 name$=StripDir(filename$)
  178.                
  179.         Else
  180.        
  181.                 skip=True
  182.                                        
  183.         EndIf
  184.  
  185. End Function
  186.  
  187. Function ProceedSave(action:Int)
  188.  
  189.         skip=False
  190.  
  191.         If latestsave$=TextAreaText(textbox) Then
  192.                 If action=1 Then End
  193.         Else
  194.                 If name$ Then
  195.                         prosave=Proceed("Save changes to "+name$+"?")
  196.                 Else
  197.                         prosave=Proceed("Save changes to Untitled?")
  198.                 EndIf
  199.                 If prosave=0 And action=1 Then End             
  200.                 If prosave=-1 And action=2 Then skip=True
  201.                 If prosave=1 Then Save()
  202.         EndIf
  203.  
  204. End Function


Comments : none...

 

SimplePortal 2.3.6 © 2008-2014, SimplePortal