175 lines
3.6 KiB
Plaintext
Executable File
175 lines
3.6 KiB
Plaintext
Executable File
#!yab
|
||
|
||
############# Prologue #############
|
||
|
||
ProgramName$ = "Teditor"
|
||
|
||
AuthorName$ = "Joe Bloggs"
|
||
|
||
ProgramVersion$ = "V0.1"
|
||
|
||
ProgramBriefDescription$ = "My unbelievable first yab program."
|
||
|
||
ProgramLicense$ = "Public Domain"
|
||
|
||
ProgramAcknowledgements$ ="With thanks to Michel Clasquin-Johnson for writing Teditor and to Marc-Oliver Ihm, Jan Bungeroth and Jim Saxton for creating yab!"
|
||
|
||
|
||
|
||
//*****Global Variables****
|
||
|
||
## Technically, yab does not require you to declare global variables, it just is a really, really good idea to do it anyway.
|
||
|
||
// set DEBUG = 1 to print out all messages on the console
|
||
|
||
DEBUG = 1
|
||
|
||
//change this to DEBUG = 0 when you are ready to bind the program for distribution
|
||
|
||
|
||
|
||
OpenWindow()
|
||
|
||
#######End of Prologue#######
|
||
|
||
|
||
|
||
############# Main Message Loop #############
|
||
|
||
dim msg$(1)
|
||
|
||
while(not leavingLoop)
|
||
nCommands = token(message$, msg$(),"|")
|
||
for everyCommand = 1 to nCommands
|
||
if(DEBUG and msg$(everyCommand)<>"") print msg$(everyCommand)
|
||
switch(msg$(everyCommand))
|
||
case "_QuitRequested":
|
||
case "MainWindow:_QuitRequested":
|
||
case "MainWindow:File:Quit":
|
||
leavingLoop = true
|
||
break
|
||
case "MainWindow:File:Save":
|
||
SaveFile()
|
||
break
|
||
case "MainWindow:File:New":
|
||
NewFile()
|
||
break
|
||
case "MainWindow:File:Open":
|
||
OpenFile()
|
||
break
|
||
case "MainWindow:Edit:Undo/Redo":
|
||
textedit set "EditSpace", "undo"
|
||
break
|
||
case "MainWindow:Edit:Cut":
|
||
textedit set "EditSpace", "cut"
|
||
break
|
||
case "MainWindow:Edit:Copy":
|
||
textedit set "EditSpace", "copy"
|
||
break
|
||
case "MainWindow:Edit:Paste":
|
||
textedit set "EditSpace", "paste"
|
||
break
|
||
case "MainWindow:Edit:Select All":
|
||
textedit set "EditSpace", "select-all"
|
||
break
|
||
case "MainWindow:Help:About":
|
||
Alert ProgramName$ + " " + ProgramVersion$ + "\n" + "by " + AuthorName$ +"\n\n" + ProgramBriefDescription$ + "\n" + ProgramLicense$ + "\n" + ProgramAcknowledgements$, "OK", "none"
|
||
default:
|
||
break
|
||
end switch
|
||
next everyCommand
|
||
wend
|
||
|
||
CloseWindow()
|
||
end
|
||
#######End of Main Loop#######
|
||
|
||
sub CloseWindow()
|
||
|
||
//Close down the main window
|
||
|
||
NewFile()
|
||
window close "MainWindow"
|
||
end sub
|
||
|
||
|
||
sub MakeMenu()
|
||
|
||
//Create menu in MainWindow
|
||
|
||
menu "File", "New", "N", "MainWindow"
|
||
menu "File", "Open", "O", "MainWindow"
|
||
menu "File", "Save", "S", "MainWindow"
|
||
menu "File", "Quit", "Q", "MainWindow"
|
||
menu "Edit", "Undo/Redo", "Z", "MainWindow"
|
||
menu "Edit", "Cut", "X", "MainWindow"
|
||
menu "Edit", "Copy", "Z", "MainWindow"
|
||
menu "Edit", "Paste", "Z", "MainWindow"
|
||
menu "Edit", "Select All", "A", "MainWindow"
|
||
menu "Help", "About", "", "MainWindow"
|
||
end sub
|
||
|
||
|
||
|
||
sub NewFile()
|
||
|
||
local sos
|
||
if textedit get$ "EditSpace" <> "" then
|
||
sos = alert "Save Current Text First?", "Yes", "No", "", "none"
|
||
if sos = 1 SaveFile()
|
||
textedit clear "EditSpace"
|
||
endif
|
||
|
||
end sub
|
||
|
||
|
||
|
||
sub OpenFile()
|
||
|
||
local file2open$, anewline$
|
||
|
||
NewFile()
|
||
file2open$ = filepanel "load-file", "Open Which File?", "/boot/home"
|
||
if file2open$ <> "" then
|
||
open file2open$ for reading as #1
|
||
while(not(eof(1)))
|
||
line input #1 anewline$
|
||
textedit add "EditSpace", anewline$ + "\n"
|
||
wend
|
||
close #1
|
||
textedit set "EditSpace", "gotoline", 1
|
||
endif
|
||
|
||
end sub
|
||
|
||
|
||
|
||
sub OpenWindow()
|
||
|
||
//Setup the main window here
|
||
|
||
Window open 100,100 to 600,500, "MainWindow", "Teditor"
|
||
textedit 0,20 to 499, 399, "EditSpace", 3, "MainWindow"
|
||
textedit set "EditSpace", "wordwrap", 0
|
||
MakeMenu()
|
||
|
||
end sub
|
||
|
||
|
||
|
||
sub SaveFile()
|
||
|
||
local file2save$,filename$
|
||
|
||
file2save$ = textedit get$ "EditSpace"
|
||
if file2save$ <> "" then
|
||
filename$ = filepanel "save-file", "Save File As ...", "/boot/home"
|
||
if filename$= "" return
|
||
open filename$ for writing as #1
|
||
print #1 file2save$
|
||
close #1
|
||
endif
|
||
|
||
end sub
|
||
|