text editor
Posted: Mon Sep 12, 2016 1:44 am
I am a newbie to PB and would like to know if anyone can point me to a simple text editor that I can use to help learn how to use PB and some of its gadgets.
Code: Select all
Global gsFilename.s
XIncludeFile("pbnotepad.pbf")
XIncludeFile("helpers.pbi")
OpenDlg1()
Define event.i
Repeat ;main message loop
event = WaitWindowEvent()
Dlg1_Events (event)
Until event = #PB_Event_CloseWindow
End
Code: Select all
Enumeration FormWindow
#Dlg1
EndEnumeration
Enumeration FormGadget
#Editor1
EndEnumeration
Enumeration FormMenu
#mnuNew
#mnuOpen
#mnuSave
#mnuSaveAs
#mnuExit
#mnuAbout
EndEnumeration
Declare ResizeGadgetsDlg1()
Declare mnuAbout(Event)
Declare mnuOpen(Event)
Declare mnuSave(Event)
Declare mnuNew(Event)
Declare mnuSaveAs(Event)
Declare mnuExit(Event)
Procedure OpenDlg1(x = 0, y = 0, width = 568, height = 372)
OpenWindow(#Dlg1, x, y, width, height, "PBNotepad", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_ScreenCentered | #PB_Window_WindowCentered)
CreateMenu(0, WindowID(#Dlg1))
MenuTitle("File")
MenuItem(#mnuNew, "New")
MenuItem(#mnuOpen, "Open...")
MenuItem(#mnuSave, "Save")
MenuItem(#mnuSaveAs, "Save As...")
MenuBar()
MenuItem(#mnuExit, "Exit")
MenuTitle("Help")
MenuItem(#mnuAbout, "About")
EditorGadget(#Editor1, 0, 0, 568, 350, #PB_Editor_WordWrap)
EndProcedure
Procedure ResizeGadgetsDlg1()
Protected FormWindowWidth, FormWindowHeight
FormWindowWidth = WindowWidth(#Dlg1)
FormWindowHeight = WindowHeight(#Dlg1)
ResizeGadget(#Editor1, 0, 0, FormWindowWidth - 0, FormWindowHeight - MenuHeight() - 0)
EndProcedure
Procedure Dlg1_Events(event)
Select event
Case #PB_Event_SizeWindow
ResizeGadgetsDlg1()
Case #PB_Event_CloseWindow
ProcedureReturn #False
Case #PB_Event_Menu
Select EventMenu()
Case #mnuNew
mnuNew(EventMenu())
Case #mnuOpen
mnuOpen(EventMenu())
Case #mnuSave
mnuSave(EventMenu())
Case #mnuSaveAs
mnuSaveAs(EventMenu())
Case #mnuExit
mnuExit(EventMenu())
Case #mnuAbout
mnuAbout(EventMenu())
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
EndSelect
EndSelect
ProcedureReturn #True
EndProcedure
Code: Select all
Procedure SetMainTitle()
SetWindowTitle(#Dlg1, "PBNotepad - " + GetFilePart(gsFilename))
EndProcedure
Procedure mnuNew(eventid)
gsFilename = ""
SetGadgetText(#Editor1, "")
SetMainTitle()
EndProcedure
Procedure mnuOpen(eventid)
Protected sOpenfile.s = OpenFileRequester("Select file to open...", "", "", 0)
If sOpenfile <> ""
Protected hFile = ReadFile(#PB_Any, sOpenfile)
If hFile = 0
MessageRequester("Error", "Couldn't open file")
Else
Protected sBuf.s
sBuf = ReadString(hFile, #PB_Ascii | #PB_File_IgnoreEOL, -1)
CloseFile(hFile)
SetGadgetText(#Editor1, sBuf)
gsFilename = sOpenfile
SetMainTitle()
EndIf
EndIf
EndProcedure
Procedure SaveToFile(sFile.s)
Protected hFile = CreateFile(#PB_Any, sFile)
If hFile = 0
MessageRequester("Error", "Couldn't create file")
Else
WriteString(hFile, GetGadgetText(#Editor1), #PB_Ascii)
CloseFile(hFile)
gsFilename = sFile
EndIf
SetMainTitle()
EndProcedure
Procedure mnuSaveAs(eventid)
Protected sFile.s = SaveFileRequester("Save file as...", "", "", 0)
If sFile <> ""
SaveToFile(sFile)
EndIf
EndProcedure
Procedure mnuSave(eventid)
If gsFilename <> ""
SaveToFile(gsFileName)
Else
mnuSaveAs(eventid)
EndIf
EndProcedure
Procedure mnuExit(eventid)
End
EndProcedure
Procedure mnuAbout(eventid)
MessageRequester("PBNotepad", "Simple start to a basic text editor")
EndProcedure
If you start in PB, the best IDE is the internal editor. The main interesting thing is the syntax helper in status bar. Alway look at bottom screen when typing.k3pto wrote:I am a newbie to PB and would like to know if anyone can point me to a simple text editor that I can use to help learn how to use PB and some of its gadgets.
If you are looking for a sample die to edit yourself, search for goscintilla.k3pto wrote:I am a newbie to PB and would like to know if anyone can point me to a simple text editor that I can use to help learn how to use PB and some of its gadgets.
Look forHowever, after reviewing and running the code, I do have a question: where do the menu bar, its contents and Dlg1 come from? I did not see them in the PB list of objects. I did see a menu gadget but I could not figure how to add items to it.