3919 lines
126 KiB
Plaintext
Executable File
3919 lines
126 KiB
Plaintext
Executable File
#!yab
|
|
|
|
doc Author: Jan Bungeroth
|
|
doc Thanks to: Genki, Lelldorin, lorglas, Stargater, DasJott
|
|
doc (c) 2006-2015 in terms of the Artistic License
|
|
|
|
doc
|
|
doc The yab-IDE provides you with an integrated development suite for yab
|
|
doc Enjoy.
|
|
path()
|
|
versionnumber$="2.2.4.2"
|
|
|
|
settingsRCSOff = true
|
|
globalConfigDir$ = trim$(system$("finddir B_USER_SETTINGS_DIRECTORY"))+"/yab-ide/"
|
|
|
|
if(LoadSettings() = 1) then
|
|
|
|
MAXFILES = 20
|
|
DEBUG = true
|
|
|
|
|
|
settingsYabDir$ = path$ //"/boot/apps/yab-1.7/"
|
|
globalProjectDir$ = trim$(system$("finddir B_USER_DIRECTORY"))+"/yab_work/Programs/"
|
|
yabDir$ = yabpath$()
|
|
ideDir$ = path$ //settingsYabDir$ + "yab-IDE/"
|
|
|
|
buildDir$ = trim$(system$("finddir B_USER_DIRECTORY"))+"/yab_work/BuildFactory/"
|
|
globalHelpDir$ = settingsYabDir$ + "Documentation/"
|
|
|
|
settingsLangUse = true
|
|
settingsLangPath$ = "x-vnd.yab-IDE"
|
|
|
|
settingsAutoIndent = true
|
|
settingsAutoCompletion = true
|
|
settingsACNumChar = 2
|
|
settingsX = 50
|
|
settingsY = 50
|
|
settingsWidth = peek("desktopwidth")-100
|
|
if(settingsWidth<600) settingsWidth = 600
|
|
settingsHeight = peek("desktopheight")-100
|
|
settingsFullScreen = false
|
|
settingsFullEditor = false
|
|
settingsVSplitDivider = 180
|
|
settingsV2SplitDivider = 41
|
|
settingsHSplitDivider = settingsHeight-240
|
|
settingsCalcPatternX = 200
|
|
settingsCalcPatternY = 150
|
|
settingsColorSelectX = 100
|
|
settingsColorSelectY = 100
|
|
settingsColorSelectR = 255
|
|
settingsColorSelectG = 255
|
|
settingsColorSelectB = 255
|
|
settingsAskForSaving = true
|
|
settingsFindCS = false
|
|
settingsOldSearch$ = ""
|
|
settingsFindAlert = true
|
|
settingsReformatAlert = true
|
|
settingsReformatUndoAlert = true
|
|
settingsTabSpaces = 4
|
|
settingsFontFamily$ = "DejaVu Sans Mono"
|
|
settingsFontStyle$ = "Book"
|
|
settingsFontSize = 12
|
|
globalRealFontSize = 15
|
|
settingsYabParam$ = ""
|
|
settingsProgParam$ = ""
|
|
|
|
dim globalAllNames$(MAXFILES)
|
|
dim globalTextFinder(MAXFILES)
|
|
|
|
for i=1 to MAXFILES
|
|
globalAllNames$(i) = ""
|
|
globalTextFinder(i) = 0
|
|
next i
|
|
|
|
endif
|
|
|
|
|
|
restartSettingsLangUse = settingsLangUse
|
|
textcolor_r = 0
|
|
textcolor_g = 0
|
|
textcolor_b = 0
|
|
|
|
// globalNoRCS = system("test -e /boot/beos/bin/ci") or system("test -e /boot/beos/bin/co") or system("test -e /boot/beos/bin/rlog") or settingsRCSOff
|
|
globalNoRCS = settingsRCSOff
|
|
globalCurrentText = 0
|
|
globalHSplitDivider = settingsHSplitDivider
|
|
globalReformatUndo = false
|
|
globalSelectErrorLines = true
|
|
globalNewNumber = 0
|
|
globalNumOpenFiles = 0
|
|
globalWasChanged = false
|
|
globalRealOS$ = upper$(system$("uname -o"))
|
|
globalRealOS$ = left$(globalRealOS$, 4)
|
|
|
|
oldSpinner = 1
|
|
|
|
if(settingsLangUse) then
|
|
localize settingsLangPath$
|
|
endif
|
|
|
|
|
|
OpenMainWindow()
|
|
ActivateMenus(false)
|
|
UpdateStatusbar()
|
|
|
|
LoadOpenFiles()
|
|
|
|
if(settingsFullScreen) then
|
|
menu set "View", "Full screen", "mark", "MainView"
|
|
window set "MainView", "moveto", 0,0
|
|
window set "MainView", "resizeto", peek("desktopwidth")-1, peek("desktopheight")-1
|
|
window set "MainView", "MinimumTo", peek("desktopwidth")-1, peek("desktopheight")-1
|
|
window set "MainView", "MaximumTo", peek("desktopwidth")-1, peek("desktopheight")-1
|
|
endif
|
|
if(settingsFullEditor) then
|
|
oldSplitX = splitview get "VSplit", "Divider"
|
|
// oldSplitY = splitview get "HSplit", "Divider"
|
|
tmp = window get "MainView", "Height"
|
|
splitview set "HSplit", "Divider", tmp-51
|
|
splitview set "VSplit", "Divider", 0
|
|
menu set "View", "Maximize editor", "mark", "MainView"
|
|
endif
|
|
|
|
dim msg$(1)
|
|
dim pattern(8,8)
|
|
|
|
inloop = true
|
|
while(inloop)
|
|
sleep 0.01
|
|
n = split(message$, msg$(), "|")
|
|
for i = 1 to n
|
|
if(DEBUG and msg$(i)<>"") print msg$(i)
|
|
switch(msg$(i))
|
|
case "ToolbarNew"
|
|
case MyTranslate$("MainView:File:New...")
|
|
foundEmpty = 0
|
|
for j=1 to MAXFILES
|
|
if(globalAllNames$(j) = "") then
|
|
foundEmpty = j
|
|
break
|
|
endif
|
|
next j
|
|
if(not foundEmpty) then
|
|
alert MyTranslate$("Sorry, you can not open more than ")+str$(MAXFILES)+MyTranslate$(" files at once!\n\nPlease close one or more other files first."), "Ok", "Warning"
|
|
else
|
|
NewDocument(foundEmpty)
|
|
if(globalNumOpenFiles = 1) then
|
|
ActivateMenus(true)
|
|
splitview set "V2Split", "Divider", settingsV2SplitDivider
|
|
endif
|
|
endif
|
|
break
|
|
case "ToolbarOpen"
|
|
case MyTranslate$("MainView:File:Open...")
|
|
foundEmpty = 0
|
|
for j=1 to MAXFILES
|
|
if(globalAllNames$(j) = "") then
|
|
foundEmpty = j
|
|
break
|
|
endif
|
|
next j
|
|
if(not foundEmpty) then
|
|
alert MyTranslate$("Sorry, you can not open more than ")+str$(MAXFILES)+MyTranslate$(" files at once!\n\nPlease close one or more other files first."), "Ok", "Warning"
|
|
else
|
|
tmp$ = filepanel "Load-File", "Open", globalProjectDir$
|
|
if(tmp$<>"") then
|
|
foundProject = false
|
|
for j = 1 to MAXFILES
|
|
if(globalAllNames$(j) = tmp$) then
|
|
alert "File is already open.", "Ok", "info"
|
|
ActivateText(j)
|
|
foundProject = true
|
|
break
|
|
endif
|
|
next j
|
|
if(foundProject) break
|
|
|
|
handle = open(tmp$, "r")
|
|
if(handle) then
|
|
WaitWindow(tmp$)
|
|
text$ = ""
|
|
while(not eof(handle))
|
|
t$ = GetLine$(handle)+"\n"
|
|
if(len(t$)*8>4000) textedit set "Text"+str$(foundEmpty), "textwidth", len(t$)*8+8
|
|
text$ = text$ + t$
|
|
wend
|
|
close(handle)
|
|
globalCurrentText = foundEmpty
|
|
textedit add "Text"+str$(globalCurrentText), text$
|
|
textedit set "Text"+str$(globalCurrentText), "changed", false
|
|
textedit set "Text"+str$(globalCurrentText), "gotoline", ReadLineFromAttr(tmp$)
|
|
stackview set "Stack", globalCurrentText
|
|
stackview set "Lines", globalCurrentText
|
|
globalAllNames$(globalCurrentText) = tmp$
|
|
t = columnbox count "FileBox"
|
|
columnbox add "FileBox", 1, t+1,20, "__Icon__="+ideDir$+"img/gespeichert.png"
|
|
columnbox add "FileBox", 2, t+1,20, GetFileName$(tmp$) // "Filename", t, GetFileName$(tmp$)
|
|
columnbox select "FileBox", t+1
|
|
globalTextFinder(globalCurrentText) = t+1
|
|
option set "Text"+str$(globalCurrentText), "focus", true
|
|
oldScroll = -1
|
|
globalNumOpenFiles = globalNumOpenFiles + 1
|
|
if(globalNumOpenFiles = 1) then
|
|
ActivateMenus(true)
|
|
splitview set "V2Split", "Divider", settingsV2SplitDivider
|
|
endif
|
|
globalProjectDir$ = GetDirectory$(tmp$)
|
|
window close "WaitWindow"
|
|
else
|
|
alert MyTranslate$("Error while loading file:\n\n")+tmp$, "Ok", "Stop"
|
|
endif
|
|
endif
|
|
endif
|
|
break
|
|
case "ToolbarClose"
|
|
case MyTranslate$("MainView:File:Close")
|
|
if(textedit get "Text"+str$(globalCurrentText), "hasChanged") then
|
|
tmpSave = alert MyTranslate$("File \"")+GetFileName$(globalAllNames$(globalCurrentText))+MyTranslate$("\" not saved!\n\nSave the file now?"), "Cancel", "Close", "Save", "warning"
|
|
if(tmpSave = 1) break
|
|
if(tmpSave = 3) then
|
|
tmpSave = SaveCurrentFile()
|
|
if(not tmpSave) break
|
|
endif
|
|
endif
|
|
|
|
textedit clear "Text"+str$(globalCurrentText)
|
|
globalAllNames$(globalCurrentText) = ""
|
|
|
|
columnbox remove "FileBox", globalTextFinder(globalCurrentText)
|
|
closeFinished = 0
|
|
newCurrent = 0
|
|
for tmpClose = 1 to MAXFILES
|
|
if(globalTextFinder(tmpClose)>globalTextFinder(globalCurrentText)) then
|
|
if(globalTextFinder(tmpClose) = globalTextFinder(globalCurrentText) + 1) then
|
|
closeFinished = globalTextFinder(tmpClose) - 1
|
|
newCurrent = tmpClose
|
|
endif
|
|
globalTextFinder(tmpClose) = globalTextFinder(tmpClose) - 1
|
|
endif
|
|
next tmpClose
|
|
|
|
if(closeFinished=0) then
|
|
closeFinished = globalTextFinder(globalCurrentText) - 1
|
|
if(closeFinished = 0) then
|
|
newCurrent = 0
|
|
else
|
|
for j = 1 to MAXFILES
|
|
if(globalTextFinder(j) = globalTextFinder(globalCurrentText)-1) then
|
|
newCurrent = j
|
|
break
|
|
endif
|
|
next j
|
|
endif
|
|
endif
|
|
|
|
globalTextFinder(globalCurrentText) = 0
|
|
globalCurrentText = newCurrent
|
|
|
|
if(closeFinished=0) then
|
|
stackview set "Stack", MAXFILES+2
|
|
stackview set "Lines", MAXFILES+2
|
|
settingsV2SplitDivider = splitview get "V2Split", "Divider"
|
|
splitview set "V2Split", "Divider", 0
|
|
ActivateMenus(false)
|
|
else
|
|
ActivateText(globalCurrentText)
|
|
endif
|
|
globalNumOpenFiles = globalNumOpenFiles - 1
|
|
break
|
|
case "ToolbarSave"
|
|
case MyTranslate$("MainView:File:Save")
|
|
tmpNull = SaveCurrentFile()
|
|
break
|
|
case MyTranslate$("MainView:File:Save as...")
|
|
tmpSaveAs$ = filepanel "Save-File", "Save", GetDirectory$(globalAllNames$(globalCurrentText)), GetFileName$(globalAllNames$(globalCurrentText))
|
|
print tmpSaveAs$
|
|
if(tmpSaveAs$<>"") then
|
|
handle = open(tmpSaveAs$, "w")
|
|
if(handle) then
|
|
print #handle textedit get$ "Text"+str$(globalCurrentText);
|
|
close(handle)
|
|
tmpCurrentLine = textedit get "Text"+str$(globalCurrentText), "currentline"
|
|
attribute set "Int", "linenumber", "tmpCurrentLine", tmpSaveAs$
|
|
textedit set "Text"+str$(globalCurrentText), "changed", false
|
|
globalAllNames$(globalCurrentText) = tmpSaveAs$
|
|
columnbox clear "FileBox"
|
|
for j=1 to MAXFILES
|
|
for k=1 to MAXFILES
|
|
if(globalTextFinder(j)=k) then
|
|
t = columnbox count "FileBox"
|
|
columnbox add "FileBox", 1, t+1,20, "__Icon__="+ideDir$+"img/gespeichert.png"
|
|
columnbox add "FileBox", 2, t+1,20, GetFileName$(globalAllNames$(j))
|
|
break
|
|
endif
|
|
next k
|
|
next j
|
|
columnbox select "FileBox", globalTextFinder(globalCurrentText)
|
|
else
|
|
alert "File could not be saved!", "Ok", "warning"
|
|
endif
|
|
endif
|
|
break
|
|
case MyTranslate$("MainView:File:Save as template...")
|
|
SaveAsTemplate()
|
|
break
|
|
case MyTranslate$("MainView:File:Export as HTML...")
|
|
ExportAsHTML()
|
|
break
|
|
case MyTranslate$("MainView:File:Page setup...")
|
|
printer setup globalConfigDir$+"printersetup"
|
|
break
|
|
case MyTranslate$("MainView:File:Print...")
|
|
if(globalCurrentText>0) then
|
|
err = printer globalAllNames$(globalCurrentText), globalConfigDir$+"printersetup", "Text"+str$(globalCurrentText)
|
|
if(err = 4) then
|
|
printer setup "/tmp/printersetup"
|
|
err = printer globalAllNames$(globalCurrentText), "/tmp/printersetup", "Text"+str$(globalCurrentText)
|
|
system("rm -f /tmp/printersetup >/dev/null")
|
|
endif
|
|
if(err>1 and err<5) then
|
|
alert "Error while printing!", "Ok", "warning"
|
|
endif
|
|
endif
|
|
break
|
|
case "_QuitRequested"
|
|
// TODO make backups and save open files
|
|
inloop = false
|
|
if(not settingsFullScreen) then
|
|
settingsX = window get "MainView", "Position-X"
|
|
settingsY = window get "MainView", "Position-Y"
|
|
settingsWidth = window get "MainView", "Width"
|
|
settingsHeight = window get "MainView", "Height"
|
|
endif
|
|
if(not settingsFullEditor) then
|
|
settingsVSplitDivider = splitview get "VSplit", "Divider"
|
|
settingsV2SplitDivider = splitview get "V2Split", "Divider"
|
|
settingsHSplitDivider = splitview get "HSplit", "Divider"
|
|
endif
|
|
break
|
|
case "MainView:_QuitRequested"
|
|
case MyTranslate$("MainView:File:Quit")
|
|
tmpSelect = 1
|
|
if(globalCurrentText>0) then
|
|
for j=1 to MAXFILES
|
|
if(textedit get "Text"+str$(j), "hasChanged") then
|
|
tmpSelect = alert "Some files are not saved!\n\nDo you really want to quit?", "Quit", "Cancel", "", "warning"
|
|
break
|
|
endif
|
|
next j
|
|
endif
|
|
if(tmpSelect = 1) then
|
|
inloop = false
|
|
if(not settingsFullScreen) then
|
|
settingsX = window get "MainView", "Position-X"
|
|
settingsY = window get "MainView", "Position-Y"
|
|
settingsWidth = window get "MainView", "Width"
|
|
settingsHeight = window get "MainView", "Height"
|
|
endif
|
|
if(not settingsFullEditor) then
|
|
settingsVSplitDivider = splitview get "VSplit", "Divider"
|
|
settingsV2SplitDivider = splitview get "V2Split", "Divider"
|
|
settingsHSplitDivider = splitview get "HSplit", "Divider"
|
|
endif
|
|
endif
|
|
break
|
|
case "ToolbarCut"
|
|
case MyTranslate$("MainView:Edit:Cut")
|
|
textedit set "Text"+str$(globalCurrentText), "Cut"
|
|
break
|
|
case "ToolbarCopy"
|
|
case MyTranslate$("MainView:Edit:Copy")
|
|
if(globalIsHelp) then
|
|
textedit set "Text"+str$(MAXFILES+1), "Copy"
|
|
else
|
|
textedit set "Text"+str$(globalCurrentText), "Copy"
|
|
endif
|
|
break
|
|
case "ToolbarPaste"
|
|
case MyTranslate$("MainView:Edit:Paste")
|
|
textedit set "Text"+str$(globalCurrentText), "Paste"
|
|
break
|
|
case "ToolbarUndo"
|
|
case MyTranslate$("MainView:Edit:Undo")
|
|
textedit set "Text"+str$(globalCurrentText), "Undo"
|
|
break
|
|
case MyTranslate$("MainView:Edit:Select all")
|
|
if(globalIsHelp) then
|
|
textedit set "Text"+str$(MAXFILES+1), "Select-All"
|
|
else
|
|
textedit set "Text"+str$(globalCurrentText), "Select-All"
|
|
endif
|
|
break
|
|
case MyTranslate$("MainView:Edit:Clear")
|
|
textedit set "Text"+str$(globalCurrentText), "Clear"
|
|
break
|
|
case MyTranslate$("MainView:Edit:Find")
|
|
option set "ToolbarText", "focus", true
|
|
break
|
|
case MyTranslate$("MainView:Edit:Find again")
|
|
if(settingsOldSearch$<>"") then
|
|
if(settingsFindCS) then
|
|
searchLineNum = textedit get "Text"+str$(globalCurrentText), "Case-Sensitive-Find", settingsOldSearch$
|
|
else
|
|
searchLineNum = textedit get "Text"+str$(globalCurrentText), "Find", settingsOldSearch$
|
|
endif
|
|
option set "Text"+str$(globalCurrentText), "Focus", true
|
|
endif
|
|
break
|
|
case MyTranslate$("MainView:Edit:Find and replace")
|
|
if(settingsFullEditor) then
|
|
splitview set "VSplit", "Divider", oldSplitX
|
|
splitview set "HSplit", "Divider", oldSplitY
|
|
menu set "View", "Maximize editor", "plain", "MainView"
|
|
settingsFullEditor = false
|
|
endif
|
|
tabview set "HTab", 3
|
|
option set "FindTCFind", "Focus", true
|
|
break
|
|
case "ToolbarRun"
|
|
case MyTranslate$("MainView:Program:Run")
|
|
isNotSaved = textedit get "Text"+str$(globalCurrentText), "hasChanged"
|
|
askForSaving = 3
|
|
if(settingsAskForSaving and isNotSaved) then
|
|
askForSaving = alert "Program is not saved.\n\nSave it now?", "Cancel", "Save Always", "Save Now", "info"
|
|
endif
|
|
|
|
if(askForSaving>1) then
|
|
if(askForSaving = 2) settingsAskForSaving = true
|
|
if(isNotSaved) then
|
|
tmpSave = SaveCurrentFile()
|
|
if(not tmpSave) break
|
|
endif
|
|
RunProgram(globalAllNames$(globalCurrentText))
|
|
endif
|
|
break
|
|
case "ToolbarRunTerm"
|
|
case MyTranslate$("MainView:Program:Run in Terminal")
|
|
isNotSaved = textedit get "Text"+str$(globalCurrentText), "hasChanged"
|
|
askForSaving = 3
|
|
if(settingsAskForSaving and isNotSaved) then
|
|
askForSaving = alert "Program is not saved.\n\nSave it now?", "Cancel", "Save Always", "Save Now", "info"
|
|
endif
|
|
|
|
if(askForSaving>1) then
|
|
if(askForSaving = 2) settingsAskForSaving = true
|
|
if(isNotSaved) then
|
|
tmpSave = SaveCurrentFile()
|
|
if(not tmpSave) break
|
|
endif
|
|
RunInTerminal(globalAllNames$(globalCurrentText))
|
|
endif
|
|
break
|
|
case MyTranslate$("MainView:Program:Set run parameters...")
|
|
SetRunParameters()
|
|
break
|
|
case "ToolbarBuild"
|
|
case MyTranslate$("MainView:Program:Build Factory...")
|
|
isNotSaved = textedit get "Text"+str$(globalCurrentText), "hasChanged"
|
|
askForSaving = 3
|
|
if(settingsAskForSaving and isNotSaved) then
|
|
askForSaving = alert "Program is not saved.\n\nSave it now?", "Cancel", "Save Always", "Save Now", "info"
|
|
endif
|
|
|
|
if(askForSaving>1) then
|
|
if(askForSaving = 2) settingsAskForSaving = true
|
|
if(isNotSaved) then
|
|
tmpSave = SaveCurrentFile()
|
|
if(not tmpSave) break
|
|
endif
|
|
Building()
|
|
endif
|
|
break
|
|
case MyTranslate$("MainView:Program:Open project folder...")
|
|
system("open " + globalProjectDir$)
|
|
break
|
|
case "ToolbarPattern"
|
|
case MyTranslate$("MainView:Tools:Pattern editor...")
|
|
OpenCalcPattern(settingsCalcPatternX,settingsCalcPatternY)
|
|
break
|
|
case MyTranslate$("MainView:Tools:Color selection...")
|
|
OpenColorSelection(settingsColorSelectX,settingsColorSelectY, settingsColorSelectR, settingsColorSelectG, settingsColorSelectB)
|
|
break
|
|
case MyTranslate$("MainView:Tools:ASCII table...")
|
|
AsciiWindow()
|
|
break
|
|
case MyTranslate$("MainView:View:Next file")
|
|
findNext = false
|
|
tmpCounter = globalCurrentText
|
|
while(not findNext)
|
|
tmpCounter = tmpCounter + 1
|
|
if(tmpCounter>MAXFILES) tmpCounter = 1
|
|
if(tmpCounter = globalCurrentText) then
|
|
findNext = true
|
|
else
|
|
if(globalAllNames$(tmpCounter)<>"") then
|
|
globalCurrentText = tmpCounter
|
|
ActivateText(globalCurrentText)
|
|
findNext = true
|
|
endif
|
|
endif
|
|
wend
|
|
break
|
|
case MyTranslate$("MainView:View:Previous file")
|
|
findNext = false
|
|
tmpCounter = globalCurrentText
|
|
while(not findNext)
|
|
tmpCounter = tmpCounter - 1
|
|
if(tmpCounter=0) tmpCounter = MAXFILES
|
|
if(tmpCounter = globalCurrentText) then
|
|
findNext = true
|
|
else
|
|
if(globalAllNames$(tmpCounter)<>"") then
|
|
globalCurrentText = tmpCounter
|
|
ActivateText(globalCurrentText)
|
|
findNext = true
|
|
endif
|
|
endif
|
|
wend
|
|
break
|
|
case MyTranslate$("MainView:View:Full screen")
|
|
if settingsFullScreen then
|
|
menu set "View", "Full screen", "plain", "MainView"
|
|
currentDivider = peek("desktopheight")-1 - splitview get "HSplit", "Divider"
|
|
window set "MainView", "moveto", settingsX,settingsY
|
|
window set "MainView", "MinimumTo", 600,300
|
|
window set "MainView", "MaximumTo", 2000, 2000
|
|
window set "MainView", "resizeto", settingsWidth, settingsHeight
|
|
splitview set "HSplit", "Divider", settingsHeight-currentDivider
|
|
settingsFullScreen = false
|
|
else
|
|
settingsX = window get "MainView", "Position-X"
|
|
settingsY = window get "MainView", "Position-Y"
|
|
settingsWidth = window get "MainView", "Width"
|
|
settingsHeight = window get "MainView", "Height"
|
|
currentDivider = settingsHeight - splitview get "HSplit", "Divider"
|
|
menu set "View", "Full screen", "mark", "MainView"
|
|
window set "MainView", "moveto", 0,0
|
|
window set "MainView", "resizeto", peek("desktopwidth")-1, peek("desktopheight")-1
|
|
window set "MainView", "MinimumTo", peek("desktopwidth")-1, peek("desktopheight")-1
|
|
window set "MainView", "MaximumTo", peek("desktopwidth")-1, peek("desktopheight")-1
|
|
splitview set "HSplit", "Divider", peek("desktopheight")-1-currentDivider
|
|
settingsFullScreen = true
|
|
endif
|
|
break
|
|
case MyTranslate$("MainView:View:Maximize editor")
|
|
if(settingsFullEditor) then
|
|
splitview set "VSplit", "Divider", oldSplitX
|
|
splitview set "HSplit", "Divider", oldSplitY
|
|
menu set "View", "Maximize editor", "plain", "MainView"
|
|
settingsFullEditor = false
|
|
else
|
|
oldSplitX = splitview get "VSplit", "Divider"
|
|
oldSplitY = splitview get "HSplit", "Divider"
|
|
tmp = window get "MainView", "Height"
|
|
splitview set "HSplit", "Divider", tmp-51
|
|
splitview set "VSplit", "Divider", 0
|
|
menu set "View", "Maximize editor", "mark", "MainView"
|
|
settingsFullEditor = true
|
|
endif
|
|
break
|
|
case MyTranslate$("MainView:View:Auto indent")
|
|
if(settingsAutoIndent) then
|
|
menu set "View", "Auto indent", "plain", "MainView"
|
|
else
|
|
menu set "View", "Auto indent", "mark", "MainView"
|
|
endif
|
|
settingsAutoIndent = not settingsAutoIndent
|
|
for tmpAllFiles = 1 to MAXFILES
|
|
textedit set "Text"+str$(tmpAllFiles), "autoindent", settingsAutoIndent
|
|
next tmpAllFiles
|
|
break
|
|
case MyTranslate$("MainView:View:Auto completion")
|
|
if(settingsAutoCompletion) then
|
|
menu set "View", "Auto completion", "plain", "MainView"
|
|
else
|
|
menu set "View", "Auto completion", "mark", "MainView"
|
|
endif
|
|
settingsAutoCompletion = not settingsAutoCompletion
|
|
for tmpAllFiles = 1 to MAXFILES
|
|
textedit set "Text"+str$(tmpAllFiles), "has-autocompletion", settingsAutoCompletion
|
|
next tmpAllFiles
|
|
break
|
|
case MyTranslate$("MainView:View:Reformat sourcecode")
|
|
reformatUndo$ = textedit get$ "Text"+str$(globalCurrentText)
|
|
globalReformatUndo = true
|
|
menu set "View", "Undo reformat", "enable", "MainView"
|
|
textedit clear "Text"+str$(globalCurrentText)
|
|
//tmp$ = ReformatSource$(reformatUndo$)
|
|
textedit add "Text"+str$(globalCurrentText),ReformatSource$(reformatUndo$)
|
|
if(ReformatError(false,0)<>0 and settingsReformatAlert) then
|
|
tmp = alert "Reformating did not close all open loops and conditions.\nReformating currently does not support loops and conditions opened and closed by a colon (:).\nE.g. while(loop):wend\n\nYou can undo the reformating before doing any further changes.", "Do not show this warning again", "Ok" , "", "warning"
|
|
if(tmp = 1) settingsReformatAlert = false
|
|
endif
|
|
break
|
|
case MyTranslate$("MainView:View:Undo reformat")
|
|
tmp = alert "Changes made since reformating will be lost!", "Cancel", "Do not show this warning again", "Undo reformating", "warning"
|
|
if(tmp > 1) then
|
|
if(tmp=2) settingsReformatUndoAlert = false
|
|
globalReformatUndo = false
|
|
textedit clear "Text"+str$(globalCurrentText)
|
|
textedit add "Text"+str$(globalCurrentText), reformatUndo$
|
|
menu set "View", "Undo reformat", "disable", "MainView"
|
|
endif
|
|
break
|
|
case MyTranslate$("MainView:View:Refresh colors")
|
|
textedit color "Text"+str$(globalCurrentText), "textcolor", textcolor_r, textcolor_g, textcolor_b
|
|
break
|
|
case "ToolbarOptions"
|
|
case MyTranslate$("MainView:View:Options...")
|
|
OptionWindow()
|
|
break
|
|
case "ToolbarHelp"
|
|
case MyTranslate$("MainView:Help:Short command help...")
|
|
system("open "+globalHelpDir$+"yab-Commands &")
|
|
break
|
|
case MyTranslate$("MainView:Help:Yabasic manual...")
|
|
system("open "+globalHelpDir$+"yabasic.html &")
|
|
break
|
|
case MyTranslate$("MainView:Help:Online resources:German BeUsergroup...")
|
|
system("open http://www.beusergroup.de &")
|
|
break
|
|
case MyTranslate$("MainView:Help:Online resources:BeSly database...")
|
|
system("open http://www.besly.de &")
|
|
break
|
|
case MyTranslate$("MainView:Help:Online resources:Yabasic homepage...")
|
|
system("open http://www.yabasic.de &")
|
|
break
|
|
case MyTranslate$("MainView:Help:Online resources:Haikuware yab forum...")
|
|
system("open http://haikuware.com/forum/yab &")
|
|
break
|
|
case MyTranslate$("MainView:Help:About...")
|
|
AboutWindow()
|
|
break
|
|
|
|
// the find and replace tabview
|
|
case "FindCS:ON"
|
|
case "FindCS:OFF"
|
|
settingsFindCS = not settingsFindCS
|
|
break
|
|
case "FindFind"
|
|
settingsOldSearch$ = textcontrol get$ "FindTCFind"
|
|
if(settingsOldSearch$<>"") then
|
|
if(settingsFindCS) then
|
|
searchLineNum = textedit get "Text"+str$(globalCurrentText), "Case-Sensitive-Find", settingsOldSearch$
|
|
else
|
|
searchLineNum = textedit get "Text"+str$(globalCurrentText), "Find", settingsOldSearch$
|
|
endif
|
|
option set "Text"+str$(globalCurrentText), "Focus", true
|
|
endif
|
|
break
|
|
case "FindReplace"
|
|
settingsOldSearch$ = textcontrol get$ "FindTCFind"
|
|
if(settingsOldSearch$<>"") then
|
|
if(settingsFindCS) then
|
|
searchLineNum = textedit get "Text"+str$(globalCurrentText), "Case-Sensitive-Find", settingsOldSearch$
|
|
else
|
|
searchLineNum = textedit get "Text"+str$(globalCurrentText), "Find", settingsOldSearch$
|
|
endif
|
|
if(searchLineNum <> -1) then
|
|
changestring()
|
|
|
|
endif
|
|
option set "Text"+str$(globalCurrentText), "Focus", true
|
|
endif
|
|
break
|
|
case "FindReplAll"
|
|
if(settingsFindAlert) then
|
|
tmpAlert = alert "The operation \"Replace All\" can not be reverted!\n\nDo you want to continue?", "Cancel", "Do not show this warning again", "Ok", "warning"
|
|
if(tmpAlert = 1) break
|
|
if(tmpAlert = 2) settingsFindAlert = false
|
|
endif
|
|
settingsOldSearch$ = textcontrol get$ "FindTCFind"
|
|
if(settingsOldSearch$<>"") then
|
|
searchLineNum = 0
|
|
while(searchLineNum<>-1)
|
|
if(settingsFindCS) then
|
|
searchLineNum = textedit get "Text"+str$(globalCurrentText), "Case-Sensitive-Find", settingsOldSearch$
|
|
else
|
|
searchLineNum = textedit get "Text"+str$(globalCurrentText), "Find", settingsOldSearch$
|
|
endif
|
|
if(searchLineNum <> -1) then
|
|
changestring()
|
|
endif
|
|
wend
|
|
option set "Text"+str$(globalCurrentText), "Focus", true
|
|
endif
|
|
break
|
|
|
|
// the immediate tabview
|
|
case "ImmediateExecute"
|
|
tmp$ = textcontrol get$ "ImmediateInput"
|
|
ImmediateExec(tmp$)
|
|
break
|
|
|
|
end switch
|
|
|
|
// the output listbox, handle error messages
|
|
if((left$(msg$(i),22) = "YabOutputList:_Select:") or (left$(msg$(i),22) = "YabOutputList:_Invoke:")) then
|
|
tmp$ = listbox get$ "YabOutputList", val(right$(msg$(i),len(msg$(i))-22))
|
|
if(left$(tmp$,8) = "---Error") then
|
|
num = instr(tmp$, "line ")
|
|
if(num) then
|
|
num = num + 5
|
|
number$ = ""
|
|
repeat
|
|
number$ = number$ + mid$(tmp$,num,1)
|
|
num = num + 1
|
|
until (mid$(tmp$,num,1) = ":")
|
|
num = val(number$)
|
|
|
|
errorFileName$ = globalAllNames$(globalCurrentText)
|
|
errorFileFound = false
|
|
rightBound = instr(tmp$, ".yab")
|
|
if(rightBound) then
|
|
errorFileName$ = mid$(tmp$, 13, rightBound-13+4)
|
|
endif
|
|
if(errorFileName$<>globalAllNames$(globalCurrentText)) then
|
|
// check whether library is loaded already...
|
|
for tmpCheckName = 1 to MAXFILES
|
|
if((left$(errorFileName$,1) = "/" and errorFileName$ = globalAllNames$(tmpCheckName)) or (left$(errorFileName$,1) <> "/" and right$(globalAllNames$(tmpCheckName),len(errorFileName$)) = errorFileName$)) then
|
|
ActivateText(tmpCheckName)
|
|
errorFileFound = true
|
|
break
|
|
endif
|
|
next tmpCheckName
|
|
// otherwise load it now
|
|
else
|
|
errorFileFound = true
|
|
endif
|
|
|
|
if(errorFileFound) then
|
|
textedit set "Text"+str$(globalCurrentText),"gotoline", num+7
|
|
textedit set "Text"+str$(globalCurrentText),"gotoline", num
|
|
textedit set "Text"+str$(globalCurrentText),"select", num
|
|
if(globalSelectErrorLines) option set "Text"+str$(globalCurrentText),"focus", true
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
|
|
// the search field in the toolbar
|
|
if(left$(msg$(i),12) = "ToolbarText:" or msg$(i) = "ToolbarFind") then
|
|
if(msg$(i) = "ToolbarFind") then
|
|
settingsOldSearch$ = textcontrol get$ "ToolbarText"
|
|
else
|
|
settingsOldSearch$ = right$(msg$(i), len(msg$(i))-12)
|
|
endif
|
|
if(settingsFindCS) then
|
|
searchLineNum = textedit get "Text"+str$(globalCurrentText), "Case-Sensitive-Find", settingsOldSearch$
|
|
else
|
|
searchLineNum = textedit get "Text"+str$(globalCurrentText), "Find", settingsOldSearch$
|
|
endif
|
|
if(DEBUG) print searchLineNum
|
|
option set "Text"+str$(globalCurrentText), "Focus", true
|
|
endif
|
|
|
|
// the find and replace tabview
|
|
// if(left$(msg$(i),11) = "FindTCFind:" and ) then
|
|
// option set "FindTCReplace", "focus", true
|
|
// endif
|
|
// if(left$(msg$(i),14) = "FindTCReplace:") then
|
|
// option set "FindFind", "focus", true
|
|
// endif
|
|
|
|
|
|
// the immediate tabview
|
|
if(left$(msg$(i),15) = "ImmediateInput:") then
|
|
ImmediateExec(right$(msg$(i), len(msg$(i))-15))
|
|
endif
|
|
|
|
// the project columnbox
|
|
if(left$(msg$(i),15) = "FileBox:_Select") then
|
|
tmp$ = right$(msg$(i),len(msg$(i))-16)
|
|
for tmpFiles = 1 to MAXFILES // arraysize(globalTextFinder(),1)
|
|
if(DEBUG) print val(tmp$), globalTextFinder(tmpFiles)
|
|
if(globalTextFinder(tmpFiles)=val(tmp$)) then
|
|
ActivateText(tmpFiles)
|
|
break
|
|
endif
|
|
next tmpFiles
|
|
endif
|
|
|
|
// something dropped on the textedit
|
|
if(left$(msg$(i),18) = "V2Split2:_Dropped:" and globalCurrentText<>0) then
|
|
tmp$ = right$(msg$(i),len(msg$(i))-18)
|
|
handle = open(tmp$, "r")
|
|
if(handle) then
|
|
WaitWindow(tmp$)
|
|
text$ = ""
|
|
while(not eof(handle))
|
|
text$ = text$ + GetLine$(handle)+"\n"
|
|
wend
|
|
close(handle)
|
|
tmp = textedit get "Text"+str$(globalCurrentText), "currentline"
|
|
textedit add "Text"+str$(globalCurrentText), left$(text$,len(text$)-1)
|
|
textedit set "Text"+str$(globalCurrentText), "changed", true
|
|
textedit set "Text"+str$(globalCurrentText), "gotoline", tmp
|
|
option set "Text"+str$(globalCurrentText), "focus", true
|
|
oldScroll = -1
|
|
window close "WaitWindow"
|
|
else
|
|
alert MyTranslate$("Error while loading file:\n\n")+tmp$, "Ok", "warning"
|
|
endif
|
|
endif
|
|
|
|
// something dropped on the project columnbox
|
|
if(left$(msg$(i),17) = "VSplit1:_Dropped:") then
|
|
foundEmpty = 0
|
|
for j=1 to MAXFILES
|
|
if(globalAllNames$(j) = "") then
|
|
foundEmpty = j
|
|
break
|
|
endif
|
|
next j
|
|
if(not foundEmpty) then
|
|
alert MyTranslate$("Sorry, you can not open more than ")+str$(MAXFILES)+MyTranslate$(" files at once!\n\nPlease close one or more other files first."), "Ok", "Warning"
|
|
else
|
|
tmp$ = right$(msg$(i),len(msg$(i))-17)
|
|
foundProject = false
|
|
for j = 1 to MAXFILES
|
|
if(globalAllNames$(j) = tmp$) then
|
|
alert "File is already open.", "Ok", "info"
|
|
ActivateText(j)
|
|
foundProject = true
|
|
break
|
|
endif
|
|
next j
|
|
if(not foundProject) then
|
|
handle = open(tmp$, "r")
|
|
if(handle) then
|
|
WaitWindow(tmp$)
|
|
text$ = ""
|
|
while(not eof(handle))
|
|
text$ = text$ + GetLine$(handle)+"\n"
|
|
wend
|
|
close(handle)
|
|
globalCurrentText = foundEmpty
|
|
textedit add "Text"+str$(globalCurrentText), left$(text$,len(text$)-1)
|
|
textedit set "Text"+str$(globalCurrentText), "changed", false
|
|
textedit set "Text"+str$(globalCurrentText), "gotoline", ReadLineFromAttr(tmp$)
|
|
stackview set "Stack", globalCurrentText
|
|
stackview set "Lines", globalCurrentText
|
|
globalAllNames$(globalCurrentText) = tmp$
|
|
option set "Text"+str$(globalCurrentText), "focus", true
|
|
oldScroll = -1
|
|
window close "WaitWindow"
|
|
else
|
|
alert MyTranslate$("Error while loading file:\n\n")+tmp$, "Ok", "Stop"
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
// help selected
|
|
if(left$(msg$(i),9) = "HelpTree:") then
|
|
tmp$ = right$(msg$(i), len(msg$(i))-17)
|
|
tmp$ = treebox get$ "HelpTree", val(tmp$)
|
|
t$ = SyntaxGetInfoText$(ideDir$+"data/Help_En.dat", ideDir$+"data/Help_En_Index.dat", tmp$)
|
|
if(t$<>"") then
|
|
textedit clear "Text"+str$(MAXFILES+1)
|
|
textedit add "Text"+str$(MAXFILES+1), t$
|
|
endif
|
|
endif
|
|
|
|
// search help
|
|
if(left$(msg$(i),9) = "HelpFind:") then
|
|
tmp$ = right$(msg$(i), len(msg$(i))-9)
|
|
tmp$ = trim$(tmp$)
|
|
tmp$ = lower$(tmp$)
|
|
t$ = SyntaxGetInfoText$(ideDir$+"data/Help_En.dat", ideDir$+"data/Help_En_Index.dat", tmp$)
|
|
if(t$<>"") then
|
|
textedit clear "Text"+str$(MAXFILES+1)
|
|
textedit add "Text"+str$(MAXFILES+1), t$
|
|
endif
|
|
endif
|
|
next i
|
|
|
|
if(globalCurrentText>0 and not globalWasChanged and textedit get "Text"+str$(globalCurrentText), "hasChanged") then
|
|
globalWasChanged = true
|
|
columnbox add "FileBox", 1, globalTextFinder(globalCurrentText), 20, "__Icon__="+ideDir$+"img/nichtgespeichert.png"
|
|
endif
|
|
|
|
UpdateStatusbar()
|
|
|
|
if(settingsFullEditor) then
|
|
tmp = window get "MainView", "Height" - 74
|
|
if(splitview get "VSplit", "Divider" <> 0 or splitview get "HSplit", "Divider" <> tmp) then
|
|
settingsFullEditor = false
|
|
menu set "View", "Maximize editor", "plain", "MainView"
|
|
endif
|
|
endif
|
|
|
|
if(globalCurrentText > 0) then
|
|
// Update the line numbers
|
|
// we are cheeting a bit :), we calculate the numbers for a 1200-pixel high view
|
|
scroll = textedit get "Text"+str$(globalCurrentText), "vertical-scrollbar"
|
|
v2Split = splitview get "V2Split", "divider"
|
|
if(scroll<>oldScroll or v2Split<>oldV2Split) then
|
|
scrollLine = int(scroll/globalRealFontSize)
|
|
scrollPos = mod(scroll,globalRealFontSize)
|
|
UpdateLines(scrollPos, 1200, scrollLine, globalRealFontSize)
|
|
oldScroll = scroll
|
|
oldV2Split = v2Split
|
|
// scrollLine = int((scroll+2)/15)+1
|
|
// scrollPos = mod((globalHSplitDivider-1-peek("scrollbarwidth")+scroll),15)+5
|
|
// scrollPos = mod((1000+scroll),15)+5
|
|
// UpdateLines(scrollPos, globalHSplitDivider-1-peek("scrollbarwidth"), scrollLine, 15)
|
|
// UpdateLines(scrollPos, 1200, scrollLine, 15)
|
|
// oldScroll = scroll
|
|
endif
|
|
|
|
// Check the spincontrol
|
|
spinner = spincontrol get "ToolbarGotoLine"
|
|
if(spinner <> oldSpinner) then
|
|
textedit set "Text"+str$(globalCurrentText), "gotoline", spinner
|
|
textedit set "Text"+str$(globalCurrentText), "select", 0
|
|
textedit set "Text"+str$(globalCurrentText), "select", spinner
|
|
option set "Text"+str$(globalCurrentText), "Focus", true
|
|
oldSpinner = spinner
|
|
endif
|
|
endif
|
|
|
|
// switch tabs from help to files and vice versa
|
|
if(globalIsHelp and tabview get "Tree" = 1) then
|
|
globalIsHelp = false
|
|
splitview set "V2Split", "divider", helpOldV2Split
|
|
if(globalCurrentText>0) then
|
|
ActivateHelpMenus(1)
|
|
stackview set "Stack", globalCurrentText
|
|
stackview set "Lines", globalCurrentText
|
|
else
|
|
ActivateHelpMenus(0)
|
|
stackview set "Stack", MAXFILES+2
|
|
stackview set "Lines", MAXFILES+2
|
|
endif
|
|
endif
|
|
if(not globalIsHelp and tabview get "Tree" = 2) then
|
|
ActivateHelpMenus(-1)
|
|
globalIsHelp = true
|
|
stackview set "Stack", MAXFILES+1
|
|
stackview set "Lines", MAXFILES+1
|
|
helpOldV2Split = splitview get "V2Split", "divider"
|
|
splitview set "V2Split", "divider", 0
|
|
endif
|
|
wend
|
|
|
|
window close "MainView"
|
|
SaveSettings()
|
|
|
|
// Open main window with everything
|
|
sub OpenMainWindow()
|
|
local vsplitheight, hsplitheight, tabwidth, i, handle
|
|
local tmp$
|
|
local err, x, y
|
|
|
|
x = peek("desktopwidth")
|
|
y = peek("desktopheight")
|
|
|
|
// open initialize the main window
|
|
window open settingsX-3000,settingsY-3000 to settingsX+settingsWidth-3000,settingsY+settingsHeight-3000, "MainView", "yab-IDE"
|
|
|
|
window open x/2-250-3000, y/2-200-3000 to x/2+249-3000,y/2+199-3000, "Splash", ""
|
|
window set "Splash", "look", "bordered"
|
|
err = draw image 0,0, ideDir$+"img/Splash.png", "Splash"
|
|
draw set "HighColor", 56,61,127, "Splash"
|
|
draw set "DejaVu Sans Mono,Bold,18", "Splash"
|
|
draw text 30, 280, "Version "+versionnumber$, "Splash"
|
|
window set "Splash", "moveto", x/2-250,y/2-200
|
|
set_up_BuildFactory()
|
|
if(err>0) window close "Splash"
|
|
|
|
|
|
|
|
window set "MainView", "look", "document"
|
|
window set "MainView", "MinimumTo", 600,300
|
|
|
|
// set all menus
|
|
menu "File", "New...", "N", "MainView"
|
|
menu "File", "Open...", "O", "MainView"
|
|
menu "File", "Close", "W", "MainView"
|
|
menu "File", "--", "", "MainView"
|
|
menu "File", "Save", "S", "MainView"
|
|
menu "File", "Save as...", "", "MainView"
|
|
menu "File", "Save as template...", "", "MainView"
|
|
menu "File", "Export as HTML...", "", "MainView"
|
|
|
|
menu "File", "--", "", "MainView"
|
|
menu "File", "Page setup...", "", "MainView"
|
|
menu "File", "Print...", "P", "MainView"
|
|
menu "File", "--", "", "MainView"
|
|
menu "File", "Quit", "Q", "MainView"
|
|
|
|
menu "Edit", "Undo", "Z", "MainView"
|
|
menu "Edit", "--", "", "MainView"
|
|
menu "Edit", "Cut", "X", "MainView"
|
|
menu "Edit", "Copy", "C", "MainView"
|
|
menu "Edit", "Paste", "V", "MainView"
|
|
menu "Edit", "--", "", "MainView"
|
|
menu "Edit", "Select all", "A", "MainView"
|
|
menu "Edit", "--", "", "MainView"
|
|
menu "Edit", "Find", "F", "MainView"
|
|
menu "Edit", "Find again", "G", "MainView"
|
|
menu "Edit", "Find and replace", "E", "MainView"
|
|
|
|
menu "Program", "Run", "R", "MainView"
|
|
menu "Program", "Run in Terminal", "T", "MainView"
|
|
menu "Program", "--", "", "MainView"
|
|
menu "Program", "Set run parameters...", "SR", "MainView"
|
|
menu "Program", "--", "", "MainView"
|
|
menu "Program", "Build Factory...", "B", "MainView"
|
|
menu "Program", "--", "", "MainView"
|
|
menu "Program", "Open project folder...", "SO", "MainView"
|
|
|
|
if(not globalNoRCS) then
|
|
menu "RCS", "Check In", "CI", "MainView"
|
|
menu "RCS", "Check Out", "CO", "MainView"
|
|
menu "RCS", "--", "", "MainView"
|
|
menu "RCS", "Version History...", "CV", "MainView"
|
|
endif
|
|
|
|
menu "Tools", "Pattern editor...", "CP", "MainView"
|
|
menu "Tools", "Color selection...", "CC", "MainView"
|
|
menu "Tools", "--", "", "MainView"
|
|
menu "Tools", "ASCII table...", "CA", "MainView"
|
|
|
|
menu "View", "Next file", ".", "MainView"
|
|
menu "View", "Previous file", ",", "MainView"
|
|
menu "View", "--", "", "MainView"
|
|
menu "View", "Full screen", "CF", "MainView"
|
|
menu "View", "Maximize editor", "CE", "MainView"
|
|
menu "View", "--", "", "MainView"
|
|
menu "View", "Auto indent", "", "MainView"
|
|
menu "View", "Auto completion", "", "MainView"
|
|
menu "View", "Refresh colors", "", "MainView"
|
|
menu "View", "--", "", "MainView"
|
|
menu "View", "Reformat sourcecode", "CR", "MainView"
|
|
menu "View", "Undo reformat", "", "MainView"
|
|
menu "View", "--", "", "MainView"
|
|
menu "View", "Options...", "", "MainView"
|
|
if settingsFullScreen menu set "View", "Full screen", "mark", "MainView"
|
|
if settingsFullEditor menu set "View", "Maximize editor", "mark", "MainView"
|
|
if settingsAutoIndent menu set "View", "Auto indent", "mark", "MainView"
|
|
if settingsAutoCompletion menu set "View", "Auto completion", "mark", "MainView"
|
|
menu set "View", "Undo reformat", "disable", "MainView"
|
|
|
|
menu "Help", "Short command help...", "H", "MainView"
|
|
menu "Help", "Yabasic manual...", "M", "MainView"
|
|
menu "Help", "--", "", "MainView"
|
|
menu "Help", "Online resources", "", "MainView"
|
|
submenu "Help", "Online resources", "German BeUsergroup...", "", "MainView"
|
|
submenu "Help", "Online resources", "BeSly database...", "", "MainView"
|
|
submenu "Help", "Online resources", "Yabasic homepage...", "", "MainView"
|
|
submenu "Help", "Online resources", "Haikuware yab forum...", "", "MainView"
|
|
menu "Help", "--", "", "MainView"
|
|
menu "Help", "About...", "", "MainView"
|
|
|
|
// set the toolbar
|
|
ToolbarCreate(0,peek("menuheight")+1,2000, "Toolbar", ideDir$+"img/", "MainView")
|
|
ToolbarAddIcon("ToolbarNew", "New", "newp.png", "newn.png", "newd.png")
|
|
ToolbarAddIcon("ToolbarOpen", "Open", "openp.png", "openn.png", "opend.png")
|
|
ToolbarAddIcon("ToolbarSave", "Save", "savep.png", "saven.png", "saved.png")
|
|
ToolbarAddIcon("ToolbarClose", "Close", "closep.png", "closen.png", "closed.png")
|
|
ToolbarAddSeparator()
|
|
ToolbarAddIcon("ToolbarCut", "Cut", "cutp.png", "cutn.png", "cutd.png")
|
|
ToolbarAddIcon("ToolbarCopy", "Copy", "copyp.png", "copyn.png", "copyd.png")
|
|
ToolbarAddIcon("ToolbarPaste", "Paste", "pastep.png", "pasten.png", "pasted.png")
|
|
ToolbarAddIcon("ToolbarUndo", "Undo", "undop.png", "undon.png", "undod.png")
|
|
// ToolbarAddIcon("ToolbarFind", "Find", "searchp.png", "searchn.png", "searchd.png")
|
|
ToolbarAddSeparator()
|
|
ToolbarAddIcon("ToolbarRun", "Run", "runp.png", "runn.png", "rund.png")
|
|
ToolbarAddIcon("ToolbarRunTerm", "Run in Terminal", "runtermp.png", "runtermn.png", "runtermd.png")
|
|
// ToolbarAddIcon("ToolbarDebug", "Debugger", "debugp.png", "debugn.png", "debugd.png")
|
|
ToolbarAddIcon("ToolbarBuild", "Build Factory", "bindp.png", "bindn.png", "bindd.png")
|
|
// ToolbarAddSeparator()
|
|
// ToolbarAddIcon("ToolbarGui", "GUI Designer", "guip.png", "guin.png", "guid.png")
|
|
ToolbarAddSeparator()
|
|
ToolbarAddIcon("ToolbarPattern", "Pattern editor", "patternp.png", "patternn.png", "patternd.png")
|
|
ToolbarAddIcon("ToolbarOptions", "Options", "optionsp.png", "optionsn.png", "optionsd.png")
|
|
ToolbarAddIcon("ToolbarHelp", "yab Help", "helpp.png", "helpn.png", "helpd.png")
|
|
ToolbarAddSeparator()
|
|
|
|
spincontrol 383,2, "ToolbarGotoLine", "Go to Line:", 1, 100000, 1, "Toolbar"
|
|
tooltip "ToolbarGotoLine", "Go to Line"
|
|
draw set "highcolor", 185,185,185, "Toolbar"
|
|
draw line 430,5 to 400,25, "Toolbar"
|
|
draw set "highcolor", 239,239,239, "Toolbar"
|
|
draw line 431,5 to 401,25, "Toolbar"
|
|
|
|
button image 538,7, "ToolbarFind", ideDir$+"img/searchp.png", ideDir$+"img/searchn.png", ideDir$+"img/searchd.png", "Toolbar"
|
|
tooltip "ToolbarFind", "Find"
|
|
textcontrol 553,5 to 640,25, "ToolbarText", "", settingsOldSearch$, "Toolbar"
|
|
draw set "highcolor", 185,185,185, "Toolbar"
|
|
draw line 510,5 to 480,25, "Toolbar"
|
|
draw set "highcolor", 239,239,239, "Toolbar"
|
|
draw line 511,5 to 481,25, "Toolbar"
|
|
|
|
// layout "top, left, right", "Toolbar"
|
|
draw set "highcolor", 200,200,200, "Toolbar"
|
|
draw line 0,29 to 2000,29, "Toolbar"
|
|
draw set "highcolor", 184,184,184, "Toolbar"
|
|
draw line 0,30 to 2000,30, "Toolbar"
|
|
draw set "highcolor", 239,239,239, "Toolbar"
|
|
draw line 0,31 to 2000,31, "Toolbar"
|
|
|
|
|
|
// vertical splitview
|
|
layout "standard", "MainView"
|
|
splitview 0,peek("menuheight")+31, settingsWidth,settingsHeight-peek("scrollbarwidth"), "VSplit", true, true, "MainView"
|
|
splitview set "VSplit", "Divider", settingsVSplitDivider
|
|
splitview set "VSplit", "MinimumSizes", 0,400
|
|
|
|
// horizontal splitview
|
|
splitview 0,0, settingsWidth-settingsVSplitDivider,settingsHeight-peek("scrollbarwidth")+1, "HSplit", false, true, "VSplit2"
|
|
splitview set "HSplit", "Divider", settingsHSplitDivider
|
|
splitview set "HSplit", "MinimumSizes", 100,51
|
|
|
|
splitview 0,0, settingsWidth-settingsVSplitDivider,settingsHSplitDivider-1, "V2Split", true,false, "HSplit1"
|
|
splitview set "V2Split", "Divider", 0
|
|
splitview set "V2Split", "MinimumSizes", 0,300
|
|
|
|
|
|
vsplitheight = settingsHeight - peek("menuheight")-peek("scrollbarwidth")
|
|
|
|
// tabview and treeboxes in the left vertical splitview
|
|
tabview 0,1 to settingsVSplitDivider-1,vsplitheight-32, "Tree", "bottom", "VSplit1"
|
|
tabview add "Tree", " Files "
|
|
tabview add "Tree", " Help "
|
|
columnbox 0,0 to settingsVSplitDivider-10,vsplitheight-42-peek("tabheight"), "FileBox", false, "no-border, resizable", "Tree1"
|
|
columnbox column "FileBox", " ", 1, 20, 20, 20, "align-center"
|
|
columnbox column "FileBox", "Filename",2, 300, 32, settingsVSplitDivider-32, "align-left"
|
|
columnbox color "FileBox", "Selection-Active", 220,220,250
|
|
columnbox color "FileBox", "Row-Divider", 255,255,255
|
|
|
|
treebox 0,0 to settingsVSplitDivider-10, vsplitheight-42-peek("tabheight")-40, "HelpTree", 1, "Tree2"
|
|
layout "left,bottom,right", "Tree2"
|
|
textcontrol 0,vsplitheight-42-peek("tabheight")-30 to settingsVSplitDivider-14,vsplitheight-42-peek("tabheight")-10, "HelpFind", "Command", "", "Tree2"
|
|
layout "standard", "Tree2"
|
|
|
|
view dropzone "VSplit1"
|
|
view dropzone "V2Split2"
|
|
|
|
// a stackview with textedits in the upper right splitview
|
|
// implement a dynamic stackview in future!
|
|
// stackview 0,0 to settingsWidth-settingsVSplitDivider-11,settingsHSplitDivider-1, "Stack", MAXFILES+2, "HSplit1"
|
|
stackview 0,0 to settingsWidth-settingsVSplitDivider-11-4,settingsHSplitDivider-1, "Stack", MAXFILES+2, "V2Split2"
|
|
stackview 0,0 to settingsV2SplitDivider,settingsHSplitDivider-1, "Lines", MAXFILES+2, "V2Split1"
|
|
for i=1 to MAXFILES
|
|
// textedit 37,0 to settingsWidth-settingsVSplitDivider-12,settingsHSplitDivider-1, "Text"+str$(i), 3, "Stack"+str$(i)
|
|
textedit 1,1 to settingsWidth-settingsVSplitDivider-12-5,settingsHSplitDivider-2, "Text"+str$(i), 3, "Stack"+str$(i)
|
|
textedit set "Text"+str$(i), "wordwrap", false
|
|
textedit set "Text"+str$(i), "textwidth", 4000
|
|
textedit set "Text"+str$(i), "tabwidth", settingsTabSpaces*7
|
|
textedit set "Text"+str$(i), "font", settingsFontFamily$+","+settingsFontStyle$+","+str$(settingsFontSize)
|
|
textedit set "Text"+str$(i), "autoindent", settingsAutoIndent
|
|
|
|
// layout "left,top,bottom", "Lines"+str$(i)
|
|
// view 0,0 to 36,settingsHSplitDivider-1, "Lines"+str$(i), "LineStack"+str$(i)
|
|
draw set settingsFontFamily$+","+settingsFontStyle$+","+str$(settingsFontSize), "Lines"+str$(i)
|
|
layout "standard", "Stack"+str$(i)
|
|
|
|
textedit set "Text"+str$(i), "autocomplete-start", settingsACNumChar
|
|
handle = open(ideDir$+"/data/autocompletion")
|
|
if(handle) then
|
|
while(not eof(handle))
|
|
line input #handle tmp$
|
|
textedit set "Text"+str$(i), "autocomplete", tmp$
|
|
wend
|
|
close(handle)
|
|
endif
|
|
|
|
handle = open(ideDir$+"/data/color1")
|
|
if(handle) then
|
|
while(not eof(handle))
|
|
line input #handle tmp$
|
|
textedit color "Text"+str$(i), "color1", tmp$
|
|
wend
|
|
close(handle)
|
|
endif
|
|
handle = open(ideDir$+"/data/color2")
|
|
if(handle) then
|
|
while(not eof(handle))
|
|
line input #handle tmp$
|
|
textedit color "Text"+str$(i), "color2", tmp$
|
|
wend
|
|
close(handle)
|
|
endif
|
|
handle = open(ideDir$+"/data/color3")
|
|
if(handle) then
|
|
while(not eof(handle))
|
|
line input #handle tmp$
|
|
textedit color "Text"+str$(i), "color3", tmp$
|
|
wend
|
|
close(handle)
|
|
endif
|
|
handle = open(ideDir$+"/data/color4")
|
|
if(handle) then
|
|
while(not eof(handle))
|
|
line input #handle tmp$
|
|
textedit color "Text"+str$(i), "color4", tmp$
|
|
wend
|
|
close(handle)
|
|
endif
|
|
handle = open(ideDir$+"/data/color5")
|
|
if(handle) then
|
|
while(not eof(handle))
|
|
line input #handle tmp$
|
|
textedit color "Text"+str$(i), "char-color", tmp$
|
|
wend
|
|
close(handle)
|
|
endif
|
|
next i
|
|
|
|
textedit 1,1 to settingsWidth-settingsVSplitDivider-12-5,settingsHSplitDivider-2, "Text"+str$(MAXFILES+1), 1, "Stack"+str$(MAXFILES+1)
|
|
textedit set "Text"+str$(MAXFILES+1), "font", settingsFontFamily$+","+settingsFontStyle$+","+str$(settingsFontSize)
|
|
textedit set "Text"+str$(MAXFILES+1), "editable", false
|
|
textedit color "Text"+str$(MAXFILES+1), "color1", "Name:"
|
|
textedit color "Text"+str$(MAXFILES+1), "color1", "Synopsis:"
|
|
textedit color "Text"+str$(MAXFILES+1), "color1", "Description:"
|
|
textedit color "Text"+str$(MAXFILES+1), "color1", "Example:"
|
|
textedit color "Text"+str$(MAXFILES+1), "color1", "Design:"
|
|
textedit color "Text"+str$(MAXFILES+1), "color1", "Layout:"
|
|
textedit color "Text"+str$(MAXFILES+1), "color1", "Message:"
|
|
textedit color "Text"+str$(MAXFILES+1), "color1", "Related:"
|
|
SyntaxLoadTree(ideDir$+"data/Help_En.dat", "HelpTree")
|
|
|
|
// UpdateLines(0, globalHSplitDivider-1-peek("scrollbarwidth"), 1, 15)
|
|
UpdateLines(0, 1200, 1, globalRealFontSize)
|
|
|
|
layout "h-center, v-center", "Stack"+str$(MAXFILES+2)
|
|
// view (settingsWidth-settingsVSplitDivider-12)/2-150,(settingsHSplitDivider-1)/2-190 to (settingsWidth-settingsVSplitDivider-12)/2+150,(settingsHSplitDivider-1)/2+190, "Logo", "Stack"+str$(MAXFILES+2)
|
|
view (settingsWidth-settingsVSplitDivider-12-41-4)/2-150,(settingsHSplitDivider-1)/2-190 to (settingsWidth-settingsVSplitDivider-12-41-4)/2+150,(settingsHSplitDivider-1)/2+190, "Logo", "Stack"+str$(MAXFILES+2)
|
|
draw set "bgcolor", 255,255,255, "Stack"+str$(MAXFILES+2)
|
|
draw set "bgcolor", 255,255,255, "Logo"
|
|
err = draw image 0,0 to 350,-1, ideDir$+"img/logo.png", "Logo"
|
|
stackview set "Stack", MAXFILES+2
|
|
stackview set "Lines", MAXFILES+2
|
|
layout "standard", "Stack"+str$(MAXFILES+2)
|
|
|
|
hsplitheight = settingsHeight-settingsHSplitDivider-peek("scrollbarwidth")-peek("menuheight")-42
|
|
|
|
// the tabview in the lower right splitview
|
|
tabview 0,0 to settingsWidth-settingsVSplitDivider-11,hsplitheight, "HTab", "bottom", "HSplit2"
|
|
tabview add "HTab", "yab Output"
|
|
tabview add "HTab", "Immediate"
|
|
tabview add "HTab", "Find and replace"
|
|
if(not globalNoRCS) then
|
|
tabview add "HTab", "Version Control"
|
|
endif
|
|
|
|
hsplitheight = hsplitheight-peek("tabheight")-12
|
|
tabwidth = settingsWidth-settingsVSplitDivider-21
|
|
|
|
// the output box
|
|
listbox 0,0 to tabwidth,hsplitheight, "YabOutputList", 1, "HTab1"
|
|
|
|
// the immediate stuff
|
|
layout "left,right,top", "HTab2"
|
|
textcontrol 5,5 to tabwidth-110,25, "ImmediateInput", "Command", "", "HTab2"
|
|
layout "right,top", "HTab2"
|
|
button tabwidth-100,3 to tabwidth-10,23, "ImmediateExecute", "Execute", "HTab2"
|
|
layout "standard", "HTab2"
|
|
textedit 10,35 to tabwidth-10,hsplitheight-10, "ImmediateOutput", 1, "HTab2"
|
|
textedit set "ImmediateOutput", "editable", false
|
|
|
|
// search and replace
|
|
layout "left,top", "HTab3"
|
|
w = draw get "Text-width", MyTranslate$("Find:"), "HTab3"
|
|
draw text 55-w,23, "Find:", "HTab3"
|
|
w = draw get "Text-width", MyTranslate$("Replace:"), "HTab3"
|
|
draw text 55-w,48, "Replace:", "HTab3"
|
|
textcontrol 55,10 to 290,30, "FindTCFind", "", "", "HTab3"
|
|
textcontrol 55,35 to 290,55, "FindTCReplace", "", "", "HTab3"
|
|
checkbox 55,60, "FindCS", "Case Sensitive", settingsFindCS, "HTab3"
|
|
MyLine(300,5,300,90,"HTab3")
|
|
button 310,10 to 460,30, "FindFind", "Find", "HTab3"
|
|
button 310,35 to 460,55, "FindReplace", "Find and replace", "HTab3"
|
|
button 310,60 to 460,80, "FindReplAll", "Replace All", "HTab3"
|
|
|
|
// the statusbar
|
|
layout "left, bottom", "MainView"
|
|
view 0,settingsHeight-peek("scrollbarwidth") to 2000,settingsHeight, "Statusbar", "MainView"
|
|
draw set "highcolor", 200,200,200, "Statusbar"
|
|
draw line 0,0 to 2000,0, "Statusbar"
|
|
draw set "highcolor", 184,184,184, "Statusbar"
|
|
draw line 0,1 to 2000,1, "Statusbar"
|
|
draw set "highcolor", 239,239,239, "Statusbar"
|
|
draw line 0,2 to 2000,2, "Statusbar"
|
|
|
|
if(window count>1) window close "Splash"
|
|
|
|
window set "MainView", "moveto", settingsX, settingsY
|
|
|
|
return
|
|
end sub
|
|
|
|
|
|
// (De-)activate menus
|
|
sub ActivateMenus(toActivate)
|
|
local tmp$
|
|
|
|
if(toActivate) then
|
|
tmp$ = "Enable"
|
|
else
|
|
tmp$ = "Disable"
|
|
endif
|
|
|
|
menu set "File", "Close", tmp$, "MainView"
|
|
menu set "File", "Save", tmp$, "MainView"
|
|
menu set "File", "Save as...", tmp$, "MainView"
|
|
menu set "File", "Save as template...", tmp$, "MainView"
|
|
menu set "File", "Export as HTML...", tmp$, "MainView"
|
|
menu set "File", "Page setup...", tmp$, "MainView"
|
|
menu set "File", "Print...", tmp$, "MainView"
|
|
|
|
menu set "Edit", "Undo", tmp$, "MainView"
|
|
menu set "Edit", "Cut", tmp$, "MainView"
|
|
menu set "Edit", "Copy", tmp$, "MainView"
|
|
menu set "Edit", "Paste", tmp$, "MainView"
|
|
menu set "Edit", "Select all", tmp$, "MainView"
|
|
menu set "Edit", "Find", tmp$, "MainView"
|
|
menu set "Edit", "Find again", tmp$, "MainView"
|
|
menu set "Edit", "Find and replace", tmp$, "MainView"
|
|
|
|
menu set "Program", "Run", tmp$, "MainView"
|
|
menu set "Program", "Run in Terminal", tmp$, "MainView"
|
|
menu set "Program", "Set run parameters...", tmp$, "MainView"
|
|
menu set "Program", "Build Factory...", tmp$, "MainView"
|
|
menu set "Program", "Open project folder...", tmp$, "MainView"
|
|
|
|
if(not globalNoRCS) then
|
|
menu set "RCS", "Check In", tmp$, "MainView"
|
|
menu set "RCS", "Check Out", tmp$, "MainView"
|
|
menu set "RCS", "Version History...", tmp$, "MainView"
|
|
endif
|
|
|
|
menu set "Tools", "Pattern editor...", tmp$, "MainView"
|
|
menu set "Tools", "Color selection...", tmp$, "MainView"
|
|
|
|
menu set "View", "Next file", tmp$, "MainView"
|
|
menu set "View", "Previous file", tmp$, "MainView"
|
|
menu set "View", "Auto indent", tmp$, "MainView"
|
|
menu set "View", "Auto completion", tmp$, "MainView"
|
|
menu set "View", "Refresh colors", tmp$, "MainView"
|
|
menu set "View", "Reformat sourcecode", tmp$, "MainView"
|
|
menu set "View", "Undo reformat", "disable", "MainView"
|
|
menu set "View", "Options...", tmp$, "MainView"
|
|
|
|
option set "ToolbarSave", "Enabled", toActivate
|
|
option set "ToolbarClose", "Enabled", toActivate
|
|
option set "ToolbarCut", "Enabled", toActivate
|
|
option set "ToolbarCopy", "Enabled", toActivate
|
|
option set "ToolbarPaste", "Enabled", toActivate
|
|
option set "ToolbarUndo", "Enabled", toActivate
|
|
option set "ToolbarFind", "Enabled", toActivate
|
|
option set "ToolbarText", "Enabled", toActivate
|
|
option set "ToolbarRun", "Enabled", toActivate
|
|
option set "ToolbarRunTerm", "Enabled", toActivate
|
|
option set "ToolbarPattern", "Enabled", toActivate
|
|
option set "ToolbarBuild", "Enabled", toActivate
|
|
option set "ToolbarOptions", "Enabled", toActivate
|
|
option set "ToolbarGotoLine", "Enabled", toActivate
|
|
|
|
option set "FindTCFind", "Enabled", toActivate
|
|
option set "FindTCReplace", "Enabled", toActivate
|
|
option set "FindCS", "Enabled", toActivate
|
|
option set "FindFind", "Enabled", toActivate
|
|
option set "FindReplace", "Enabled", toActivate
|
|
option set "FindReplAll", "Enabled", toActivate
|
|
|
|
return
|
|
end sub
|
|
|
|
// (De-)activate menus when help is selected
|
|
sub ActivateHelpMenus(toActivate)
|
|
local tmp$
|
|
|
|
if(toActivate = 1) then
|
|
tmp$ = "Enable"
|
|
else
|
|
tmp$ = "Disable"
|
|
endif
|
|
|
|
if(toActivate = -1) then
|
|
menu set "File", "Open...", tmp$, "MainView"
|
|
menu set "File", "New...", tmp$, "MainView"
|
|
else
|
|
menu set "File", "Open...", "Enable", "MainView"
|
|
menu set "File", "New...", "Enable", "MainView"
|
|
endif
|
|
menu set "File", "Close", tmp$, "MainView"
|
|
menu set "File", "Save", tmp$, "MainView"
|
|
menu set "File", "Save as...", tmp$, "MainView"
|
|
menu set "File", "Save as template...", tmp$, "MainView"
|
|
menu set "File", "Export as HTML...", tmp$, "MainView"
|
|
|
|
menu set "Edit", "Undo", tmp$, "MainView"
|
|
menu set "Edit", "Cut", tmp$, "MainView"
|
|
menu set "Edit", "Paste", tmp$, "MainView"
|
|
menu set "Edit", "Find and replace", tmp$, "MainView"
|
|
|
|
menu set "Program", "Run", tmp$, "MainView"
|
|
menu set "Program", "Run in Terminal", tmp$, "MainView"
|
|
menu set "Program", "Set run parameters...", tmp$, "MainView"
|
|
menu set "Program", "Build Factory...", tmp$, "MainView"
|
|
menu set "Program", "Open project folder...", tmp$, "MainView"
|
|
|
|
if(not globalNoRCS) then
|
|
menu set "RCS", "Check In", tmp$, "MainView"
|
|
menu set "RCS", "Check Out", tmp$, "MainView"
|
|
menu set "RCS", "Version History...", tmp$, "MainView"
|
|
endif
|
|
|
|
menu set "Tools", "Pattern editor...", tmp$, "MainView"
|
|
menu set "Tools", "Color selection...", tmp$, "MainView"
|
|
|
|
menu set "View", "Next file", tmp$, "MainView"
|
|
menu set "View", "Previous file", tmp$, "MainView"
|
|
menu set "View", "Auto indent", tmp$, "MainView"
|
|
menu set "View", "Auto completion", tmp$, "MainView"
|
|
menu set "View", "Refresh colors", tmp$, "MainView"
|
|
menu set "View", "Reformat sourcecode", tmp$, "MainView"
|
|
menu set "View", "Undo reformat", "disable", "MainView"
|
|
|
|
if(toActivate = -1) then
|
|
option set "ToolbarOpen", "Enabled", false
|
|
option set "ToolbarNew", "Enabled", false
|
|
toActivate = 0
|
|
else
|
|
option set "ToolbarOpen", "Enabled", true
|
|
option set "ToolbarNew", "Enabled", true
|
|
endif
|
|
option set "ToolbarSave", "Enabled", toActivate
|
|
option set "ToolbarClose", "Enabled", toActivate
|
|
option set "ToolbarCut", "Enabled", toActivate
|
|
option set "ToolbarPaste", "Enabled", toActivate
|
|
option set "ToolbarUndo", "Enabled", toActivate
|
|
option set "ToolbarText", "Enabled", toActivate
|
|
option set "ToolbarRun", "Enabled", toActivate
|
|
option set "ToolbarRunTerm", "Enabled", toActivate
|
|
option set "ToolbarPattern", "Enabled", toActivate
|
|
option set "ToolbarBuild", "Enabled", toActivate
|
|
option set "ToolbarGotoLine", "Enabled", toActivate
|
|
|
|
option set "FindTCReplace", "Enabled", toActivate
|
|
option set "FindReplace", "Enabled", toActivate
|
|
option set "FindReplAll", "Enabled", toActivate
|
|
|
|
return
|
|
end sub
|
|
|
|
// Update the line numbering
|
|
sub UpdateLines(starty, height, topline, fontHeight)
|
|
local i, pos
|
|
local t$
|
|
|
|
if(globalCurrentText > 0) then
|
|
pos = splitview get "V2Split", "Divider" - 3
|
|
draw flush "Lines"+str$(globalCurrentText)
|
|
for i=fontHeight-4-starty to height step fontHeight
|
|
t$ = str$(int(i/fontHeight)+topline+1)
|
|
draw text pos-(draw get "text-width", t$, "Lines"+str$(globalCurrentText)),i, t$, "Lines"+str$(globalCurrentText)
|
|
next i
|
|
endif
|
|
return
|
|
end sub
|
|
|
|
// Open new file
|
|
sub NewDocument(foundEmpty)
|
|
local inloop
|
|
local browse$
|
|
local i, n, err, nTemplates, isButton
|
|
local handle, handle2
|
|
local x, y, winSize, w, t
|
|
local t$, txt$
|
|
|
|
x = (peek("desktopwidth")-500)/2
|
|
y = (peek("desktopheight")-390)/2-50
|
|
if(y<50) y=50
|
|
|
|
window open x+200-3000,y+150-3000 to x+700-3000,y+440-3000, "NewWindow", "yab-IDE New Program"
|
|
window set "NewWindow", "Feel", "Modal-App"
|
|
window set "NewWindow", "Flags", "not-zoomable, not-h-resizable, not-v-resizable"
|
|
|
|
Header("New yab Program", "NewWindow", 500)
|
|
|
|
text 10,50, "NewText1", "Please select one of the available templates for your program:", "NewWindow"
|
|
listbox 10,70 to 166,200, "NewList", 1, "NewWindow"
|
|
|
|
handle = open(ideDir$+"Templates/TemplateList", "r")
|
|
if(handle>0) then
|
|
nTemplates = 0
|
|
while(not eof(handle))
|
|
nTemplates = nTemplates + 1
|
|
dim tmp$(nTemplates)
|
|
tmp$(nTemplates) = GetLine$(handle)+"\n"
|
|
tmp$(nTemplates) = left$(tmp$(nTemplates), len(tmp$(nTemplates))-1)
|
|
if(left$(tmp$(nTemplates),1) = "#") nTemplates = nTemplates - 1
|
|
wend
|
|
close handle
|
|
else
|
|
dim tmp$(1)
|
|
tmp$(1) = "Empty"
|
|
nTemplates = 1
|
|
endif
|
|
for i = 1 to nTemplates step 4
|
|
listbox add "NewList", tmp$(i)
|
|
next i
|
|
view 190,70 to 490,200, "NewImage", "NewWindow"
|
|
|
|
browse$ = globalProjectDir$+"untitled"+str$(GetNewNumber(globalProjectDir$))+".yab"
|
|
|
|
textcontrol 10,220 to 400,240, "NewName", "Name:", browse$, "NewWindow"
|
|
button 410,220 to 490,240, "NewBrowse", "Browse...", "NewWindow"
|
|
|
|
checkbox image 10,270, "NewAdvanced", ideDir$+"img/arrowdown.png", ideDir$+"img/arrowright.png", "", "", false, "NewWindow"
|
|
winSize = false
|
|
text 20,270, "NewText2", "Advanced Options", "NewWindow"
|
|
button 430,260 to 490,280, "NewOk", "Ok", "NewWindow"
|
|
option set "NewOk", "enabled", false
|
|
isButton = false
|
|
|
|
draw set "highcolor", 185,185,185, "NewWindow"
|
|
draw line 0,252 to 500,252, "NewWindow"
|
|
draw line 0,292 to 500,292, "NewWindow"
|
|
draw set "highcolor", 239,239,239, "NewWindow"
|
|
draw line 0,253 to 500,253, "NewWindow"
|
|
draw line 0,293 to 500,293, "NewWindow"
|
|
|
|
// button 260,300 to 280,310, "NewHelp", "?", "NewWindow"
|
|
button 350,295 to 490,325, "NewDel", "Remove Template", "NewWindow"
|
|
option set "NewDel", "enabled", false
|
|
|
|
if(not globalNoRCS) then
|
|
checkbox 10, 300, "NewCheckbox", "Use RCS Version Control", settingsUseRCS, "NewWindow"
|
|
// option set "NewCheckbox", "enabled", false
|
|
// option set "NewHelp", "enabled", false
|
|
endif
|
|
|
|
textcontrol 10,330 to 490,350, "NewProject", "Project Directory", globalProjectDir$, "NewWindow"
|
|
|
|
window set "NewWindow", "moveto", x,y
|
|
|
|
inloop = true
|
|
dim msg$(1)
|
|
while(inloop)
|
|
n = split(message$, msg$(), "|")
|
|
for i = 1 to n
|
|
if(DEBUG and msg$(i)<>"") print msg$(i)
|
|
if(left$(msg$(i),16) = "NewList:_Invoke:") then
|
|
msg$(i) = "NewOk"
|
|
endif
|
|
switch(msg$(i))
|
|
case "NewOk"
|
|
if(j>0) then
|
|
browse$ = textcontrol get$ "NewName"
|
|
if(arraysize(tmp$(), 1) = 1) then
|
|
txt$ = ""
|
|
else
|
|
handle = open(ideDir$+"Templates/"+tmp$(j), "r")
|
|
if(handle) then
|
|
while(not eof(handle))
|
|
txt$ = txt$ + GetLine$(handle)+"\n"
|
|
wend
|
|
close(handle)
|
|
// txt$ = left$(txt$, len(txt$)-1)
|
|
else
|
|
alert MyTranslate$("Could not open template: ")+tmp$(j)+"\n\n"+MyTranslate$("Opening an empty file instead."), "Ok", "warning"
|
|
txt$ = ""
|
|
endif
|
|
endif
|
|
globalCurrentText = foundEmpty
|
|
textedit add "Text"+str$(globalCurrentText), txt$
|
|
textedit set "Text"+str$(globalCurrentText), "changed", true
|
|
textedit set "Text"+str$(globalCurrentText), "gotoline", 1
|
|
stackview set "Stack", globalCurrentText
|
|
stackview set "Lines", globalCurrentText
|
|
globalAllNames$(globalCurrentText) = browse$
|
|
t = columnbox count "FileBox"
|
|
columnbox add "FileBox", 1, t+1,20, "__Icon__="+ideDir$+"img/nichtgespeichert.png"
|
|
columnbox add "FileBox", 2, t+1,20, GetFileName$(browse$)
|
|
columnbox select "FileBox", t+1
|
|
|
|
globalTextFinder(globalCurrentText) = t+1
|
|
|
|
option set "Text"+str$(globalCurrentText), "focus", true
|
|
oldScroll = -1
|
|
globalNewNumber = globalNewNumber + 1
|
|
globalNumOpenFiles = globalNumOpenFiles + 1
|
|
inloop = false
|
|
endif
|
|
break
|
|
case "NewAdvanced:ON"
|
|
case "NewAdvanced:OFF"
|
|
winSize = not winSize
|
|
if(winSize) then
|
|
window set "NewWindow", "MinimumTo", 500,360
|
|
window set "NewWindow", "MaximumTo", 500,360
|
|
window set "NewWindow", "ResizeTo", 500,360
|
|
else
|
|
window set "NewWindow", "MinimumTo", 500,290
|
|
window set "NewWindow", "MaximumTo", 500,290
|
|
window set "NewWindow", "ResizeTo", 500,290
|
|
endif
|
|
break
|
|
case "NewBrowse"
|
|
browse$ = filepanel "Save-File", "New", globalProjectDir$
|
|
if(browse$<>"") textcontrol set "NewName", browse$
|
|
break
|
|
case "NewWindow:_QuitRequested"
|
|
inloop = false
|
|
break
|
|
case "_QuitRequested"
|
|
//emergency break
|
|
exit(1)
|
|
break
|
|
case "NewDel"
|
|
t$ = listbox get$ "NewList", (j-1)/4+1
|
|
t = alert MyTranslate$("Really delete template")+" \""+t$+"\"?", "Yes", "Cancel", "", "warning"
|
|
if(t = 1) then
|
|
if((j-1)/4+1 < 4) then
|
|
alert "This standard template can not be deleted!", "Ok", "warning"
|
|
else
|
|
handle = open(ideDir$+"Templates/TemplateList", "r")
|
|
handle2 = open("/tmp/TemplateList", "w")
|
|
if(handle) then
|
|
if(handle2) then
|
|
while(not eof(handle))
|
|
t$ = GetLine$(handle)+"\n"
|
|
if(left$(t$,len(t$)-1)<>tmp$(j)) then
|
|
print #handle2 t$;
|
|
else
|
|
t$ = GetLine$(handle)+"\n"
|
|
t$ = GetLine$(handle)+"\n"
|
|
t$ = GetLine$(handle)+"\n"
|
|
endif
|
|
wend
|
|
close(handle2)
|
|
system("mv /tmp/TemplateList "+ideDir$+"Templates/TemplateList")
|
|
system("rm "+ideDir$+tmp$(j+1))
|
|
system("rm "+ideDir$+"Templates/"+tmp$(j))
|
|
listbox remove "NewList", (j-1)/4+1
|
|
listbox select "NewList", (j-5)/4+1
|
|
msg$(i) = "NewList:_Select:"+str$((j-5)/4+1)
|
|
alert "Template successfully removed.", "Ok", "info"
|
|
else
|
|
alert "Error while deleting template!", "Ok", "stop"
|
|
endif
|
|
close(handle)
|
|
else
|
|
alert "Error while deleting template!", "Ok", "stop"
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
break
|
|
end switch
|
|
if(left$(msg$(i),16) = "NewList:_Select:") then
|
|
draw rect 0,0 to 200,140, "NewImage"
|
|
draw flush "NewImage"
|
|
j = (val(mid$(msg$(i),17,len(msg$(i))-1))-1)*4+1
|
|
if(arraysize(tmp$(),1)>=j+1) then
|
|
err = draw image 50,0 to 250,100, ideDir$+tmp$(j+1), "NewImage"
|
|
endif
|
|
if(arraysize(tmp$(),1)>=j+2) then
|
|
draw text 10,110, tmp$(j+2), "NewImage"
|
|
endif
|
|
if(arraysize(tmp$(),1)>=j+3) then
|
|
draw text 10,125, tmp$(j+3), "NewImage"
|
|
endif
|
|
if(not isButton) then
|
|
isButton = false
|
|
option set "NewOk", "enabled", true
|
|
option set "NewDel", "enabled", true
|
|
endif
|
|
endif
|
|
next i
|
|
wend
|
|
|
|
window close "NewWindow"
|
|
end sub
|
|
|
|
sub GetNewNumber(dir$)
|
|
local tmp$
|
|
local num: local i: local ret
|
|
local numFound
|
|
local t$(1)
|
|
|
|
numFound = false
|
|
ret = 0
|
|
tmp$ = system$("ls "+dir$+"untitled*.yab")
|
|
num = token(tmp$, t$(), "\n")
|
|
while(not numFound)
|
|
numFound = true
|
|
for i=1 to num
|
|
tmp$ = left$(t$(i), len(t$(i))-4)
|
|
tmp$ = right$(tmp$, len(tmp$)-8-len(dir$))
|
|
if(ret = val(tmp$)) then
|
|
ret = ret + 1
|
|
numFound = false
|
|
break
|
|
endif
|
|
next i
|
|
if(numFound) then
|
|
for i=1 to MAXFILES
|
|
tmp$ = dir$+"untitled"+str$(ret)+".yab"
|
|
if(globalAllNames$(i) = tmp$) then
|
|
ret = ret + 1
|
|
numFound = false
|
|
break
|
|
endif
|
|
next i
|
|
endif
|
|
wend
|
|
return ret
|
|
end sub
|
|
|
|
sub ImmediateExec(command$)
|
|
local result$
|
|
|
|
if(instr(command$, "input")) then
|
|
alert "Suspecting user input, therefore starting in a terminal.", "Ok", "info"
|
|
result$ = system$("Terminal "+yabDir$+" -enter -execute '"+command$+":exit'")
|
|
else
|
|
result$ = system$(yabDir$+" -execute '"+command$+":exit' 2>&1")
|
|
result$ = left$(result$, len(result$)-1)
|
|
|
|
textedit clear "ImmediateOutput"
|
|
textedit add "ImmediateOutput", result$
|
|
endif
|
|
|
|
return
|
|
end sub
|
|
|
|
sub GetFileName$(directory$)
|
|
local lastSlash
|
|
local j
|
|
|
|
lastSlash = 0
|
|
for j=1 to len(directory$)
|
|
if(mid$(directory$,j,1)="/" and mid$(directory$,j-1,1)<>"/")
|
|
lastSlash = j
|
|
next j
|
|
|
|
return right$(directory$,len(directory$)-lastSlash)
|
|
end sub
|
|
|
|
sub GetDirectory$(directory$)
|
|
local lastSlash
|
|
local j
|
|
|
|
lastSlash = 0
|
|
for j=1 to len(directory$)
|
|
if(mid$(directory$,j,1)="/" and mid$(directory$,j-1,1)<>"/")
|
|
lastSlash = j
|
|
next j
|
|
|
|
return left$(directory$,lastSlash)
|
|
end sub
|
|
|
|
sub ActivateText(num)
|
|
globalCurrentText = num
|
|
globalWasChanged = textedit get "Text"+str$(globalCurrentText), "hasChanged"
|
|
stackview set "Stack", globalCurrentText
|
|
stackview set "Lines", globalCurrentText
|
|
option set "Text"+str$(globalCurrentText), "focus", true
|
|
columnbox select "FileBox", globalTextFinder(num)
|
|
oldScroll = -1
|
|
return
|
|
end sub
|
|
|
|
sub ReadLineFromAttr(filename$)
|
|
a$=attribute get$ "",filename$
|
|
if instr (a$,"linenumber") then
|
|
return attribute get "linenumber", filename$
|
|
else return 0
|
|
endif
|
|
end sub
|
|
|
|
sub UpdateStatusbar()
|
|
static oldText$
|
|
local newText$
|
|
|
|
if(globalCurrentText = 0) then
|
|
if(oldText$<>"") then
|
|
oldText$ = ""
|
|
draw flush "Statusbar"
|
|
draw set "highcolor", 200,200,200, "Statusbar"
|
|
draw line 0,0 to 2000,0, "Statusbar"
|
|
draw set "highcolor", 184,184,184, "Statusbar"
|
|
draw line 0,1 to 2000,1, "Statusbar"
|
|
draw set "highcolor", 239,239,239, "Statusbar"
|
|
draw line 0,2 to 2000,2, "Statusbar"
|
|
endif
|
|
return
|
|
endif
|
|
|
|
newText$ = globalAllNames$(globalCurrentText)
|
|
if(textedit get "Text"+str$(globalCurrentText), "hasChanged") then
|
|
newText$ = newText$ + MyTranslate$(" (not saved) ")
|
|
else
|
|
newText$ = newText$ + " "
|
|
endif
|
|
|
|
newText$ = newText$ + MyTranslate$("Line:")+" "+str$(textedit get "Text"+str$(globalCurrentText), "currentline")
|
|
newText$ = newText$ + " / "+str$(textedit get "Text"+str$(globalCurrentText), "countlines")
|
|
|
|
|
|
if(oldText$<>newText$) then
|
|
draw flush "Statusbar"
|
|
draw set "highcolor", 200,200,200, "Statusbar"
|
|
draw line 0,0 to 2000,0, "Statusbar"
|
|
draw set "highcolor", 184,184,184, "Statusbar"
|
|
draw line 0,1 to 2000,1, "Statusbar"
|
|
draw set "highcolor", 239,239,239, "Statusbar"
|
|
draw line 0,2 to 2000,2, "Statusbar"
|
|
draw set "highcolor", 0,0,0, "Statusbar"
|
|
draw text 5,13, "File: ", "Statusbar"
|
|
// draw set "highcolor", 0,200,0, "Statusbar"
|
|
draw text (5+draw get "Text-Width", MyTranslate$("File: "), "Statusbar"),13, newText$, "Statusbar"
|
|
// draw text (5+draw get "Text-Width", "Status: ", "Statusbar"),11, globalAllNames$(globalCurrentText)+" saved", "Statusbar"
|
|
oldText$ = newText$
|
|
endif
|
|
|
|
return
|
|
end sub
|
|
|
|
sub WaitWindow(text$)
|
|
local x
|
|
local y
|
|
local width
|
|
local err
|
|
|
|
x = peek("desktopwidth")/2 - 125
|
|
y = peek("desktopheight")/2 - 100
|
|
window open x,y to x+249,y+79, "WaitWindow", ""
|
|
window set "WaitWindow", "feel", "modal-app"
|
|
window set "WaitWindow", "look", "modal"
|
|
window set "WaitWindow", "Flags", "not-closable, not-zoomable, not-h-resizable, not-v-resizable"
|
|
err = draw image 0,0, ideDir$+"img/Loading.png", "WaitWindow"
|
|
|
|
w = draw get "text-width", GetFileName$(text$), "WaitWindow"
|
|
text 143-w/2,32, "TWait", GetFileName$(text$), "WaitWindow"
|
|
|
|
w = draw get "text-width", MyTranslate$("Please wait..."), "WaitWindow"
|
|
text 143-w/2,60, "TRunning2", "Please wait...", "WaitWindow"
|
|
|
|
draw set "Bitstream Vera Sans, Bold Oblique, 14", "WaitWindow"
|
|
w = draw get "text-width", MyTranslate$("Loading Program"), "WaitWindow"
|
|
draw text 143-w/2,20, "Loading Program", "WaitWindow"
|
|
|
|
return
|
|
end sub
|
|
|
|
// Run the program and display its output
|
|
sub RunProgram(yabFile$)
|
|
local tmp$, unique$
|
|
local num, i, t, teamID, pos
|
|
local x, y, err, w
|
|
|
|
if(isRunning) return
|
|
isRunning = true
|
|
|
|
// easy way to make the tmp file sort-of unique
|
|
unique$ = date$+time$
|
|
|
|
x = peek("desktopwidth")/2 - 125
|
|
y = peek("desktopheight")/2 - 100
|
|
window open x,y to x+249,y+79, "Running", ""
|
|
window set "Running", "feel", "modal-app"
|
|
window set "Running", "look", "modal"
|
|
window set "Running", "Flags", "not-closable, not-zoomable, not-h-resizable, not-v-resizable"
|
|
err = draw image 0,0, ideDir$+"img/Running.png", "Running"
|
|
|
|
w = draw get "text-width", GetFileName$(yabFile$), "Running"
|
|
text 143-w/2,32, "TRunning", GetFileName$(yabFile$), "Running"
|
|
button 150,50 to 240,75, "BRunning", "Break", "Running"
|
|
|
|
draw set "Bitstream Vera Sans, Bold Oblique, 14", "Running"
|
|
w = draw get "text-width", MyTranslate$("Running Program"), "Running"
|
|
draw text 143-w/2,20, "Running Program", "Running"
|
|
|
|
// text 5,5, "TRunning", MyTranslate$("Now Running: ")+GetFileName$(yabFile$), "Running"
|
|
// button 50,25 to 150,45, "BRunning", "Break", "Running"
|
|
listbox clear "YabOutputList"
|
|
window set "Running", "deactivate"
|
|
|
|
if DEBUG print "cd "+GetDirectory$(yabFile$)+";"+yabDir$+" "+settingsYabParam$+" "+yabFile$+" "+settingsProgParam$+" &>/tmp/yab-log."+unique$+" &"
|
|
system("cd "+GetDirectory$(yabFile$)+";"+yabDir$+" "+settingsYabParam$+" "+yabFile$+" "+settingsProgParam$+" &>/tmp/yab-log."+unique$+" &")
|
|
sleep 0.1
|
|
while(teamID <> -1)
|
|
teamID = thread get "teamid", yabDir$+" "+param$+yabFile$
|
|
|
|
handle = open("/tmp/yab-log."+unique$,"r")
|
|
if(handle) then
|
|
seek handle,pos
|
|
while(not eof(handle))
|
|
tmp$ = GetLine$(handle)+"\n"
|
|
listbox add "YabOutputList", left$(tmp$, len(tmp$)-1)
|
|
listbox select "YabOutputList", listbox count "YabOutputList"
|
|
pos = tell(handle)
|
|
wend
|
|
close(handle)
|
|
endif
|
|
|
|
if(instr(message$, "BRunning")) then
|
|
t = thread remove "teamid", teamID
|
|
if(not t) alert "Error! Program could not be killed.", "Oops", "stop"
|
|
break
|
|
endif
|
|
sleep 0.1
|
|
wend
|
|
|
|
window close "Running"
|
|
|
|
system("rm -f "+"/tmp/yab-log."+unique$+" >/dev/null")
|
|
|
|
isRunning = false
|
|
return
|
|
end sub
|
|
|
|
// Run the program in a terminal
|
|
sub RunInTerminal(yabFile$)
|
|
local tmp$, param$
|
|
local num, i, t, pos
|
|
local x, y, err, w
|
|
|
|
if(isRunning) return
|
|
isRunning = true
|
|
|
|
x = peek("desktopwidth")/2 - 150
|
|
y = peek("desktopheight")/2 - 100
|
|
window open x,y to x+299,y+79, "Running", ""
|
|
window set "Running", "feel", "modal-app"
|
|
window set "Running", "look", "modal"
|
|
window set "Running", "Flags", "not-closable, not-zoomable, not-h-resizable, not-v-resizable"
|
|
err = draw image 0,0, ideDir$+"img/Running.png", "Running"
|
|
|
|
w = draw get "text-width", GetFileName$(yabFile$), "Running"
|
|
text 168-w/2,32, "TRunning", GetFileName$(yabFile$), "Running"
|
|
|
|
w = draw get "text-width", MyTranslate$("Close terminal to break program"), "Running"
|
|
text 168-w/2,60, "TRunning2", "Close terminal to break program", "Running"
|
|
|
|
draw set "Bitstream Vera Sans, Bold Oblique, 14", "Running"
|
|
w = draw get "text-width", MyTranslate$("Running Program"), "Running"
|
|
draw text 168-w/2,20, "Running Program", "Running"
|
|
|
|
window set "Running", "deactivate"
|
|
sleep 0.1
|
|
|
|
param$ = settingsYabParam$ + " -enter"
|
|
tmp$ = system$("Terminal "+yabDir$+" "+param$+" "+yabFile$+" "+settingsProgParam$+" 2>&1")
|
|
window close "Running"
|
|
|
|
listbox clear "YabOutputList"
|
|
dim result$(1)
|
|
num = split(tmp$, result$(), "\n")
|
|
for i = 1 to num
|
|
listbox add "YabOutputList", result$(i)
|
|
next i
|
|
|
|
isRunning = false
|
|
return
|
|
end sub
|
|
|
|
sub AboutWindow()
|
|
local x
|
|
local y
|
|
local width
|
|
local t
|
|
|
|
x = peek("desktopwidth")/2 - 200
|
|
y = peek("desktopheight")/2 - 200
|
|
window open x-3000,y-3000 to x+400-3000, y+300-3000, "AboutWindow", ""
|
|
window set "AboutWindow", "look", "bordered"
|
|
window set "AboutWindow", "feel", "modal-app"
|
|
window set "AboutWindow", "MaximumTo", 400,300
|
|
window set "AboutWindow", "MinimumTo", 400,300
|
|
window set "AboutWindow", "Flags", "not-closable, not-zoomable, not-h-resizable, not-v-resizable"
|
|
|
|
draw set "bgcolor", 255,255,255, "AboutWindow"
|
|
draw set "lowcolor", 255,255,255, "AboutWindow"
|
|
|
|
width = draw get "text-width", "(c) 2006-2015 in terms of the Artistic License", "AboutWindow"
|
|
draw text 198-width/2, 260, "(c) 2006-2015 in terms of the Artistic License", "AboutWindow"
|
|
width = draw get "text-width", "Coded by Jan, graphics by Genki, thanks to BeSly", "AboutWindow"
|
|
draw text 200-width/2, 240, "Coded by Jan, graphics by Genki, thanks to BeSly", "AboutWindow"
|
|
|
|
if(peek$("os") = "Haiku") then
|
|
draw set "DejaVu Sans, Bold, 18", "AboutWindow"
|
|
else
|
|
draw set "Swis721 BT, Bold, 18", "AboutWindow"
|
|
endif
|
|
width = draw get "text-width", "yab-IDE", "AboutWindow"
|
|
draw text 200-width/2, 25, "yab-IDE", "AboutWindow"
|
|
if(peek$("os") = "Haiku") then
|
|
draw set "DejaVu Sans, Bold, 10", "AboutWindow"
|
|
else
|
|
draw set "Swis721 BT, Bold, 10", "AboutWindow"
|
|
endif
|
|
width = draw get "text-width", "Version "+versionnumber$, "AboutWindow"
|
|
draw text 200-width/2, 40, "Version "+versionnumber$, "AboutWindow"
|
|
|
|
t = draw image 100,50 to 300,-1, ideDir$+"img/yablogo.png", "AboutWindow"
|
|
|
|
button 100,265 to 300,290, "AboutButton", "Close", "AboutWindow"
|
|
option set "AboutButton", "focus", true
|
|
|
|
window set "AboutWindow", "moveto", x,y
|
|
|
|
while(not instr(message$, "AboutButton"))
|
|
wend
|
|
|
|
|
|
window close "AboutWindow"
|
|
return
|
|
end sub
|
|
|
|
sub SaveAsTemplate()
|
|
local x: local y
|
|
local w: local i: local n
|
|
local isButton
|
|
local handle: local handle2
|
|
local inloop
|
|
local msg$(1)
|
|
local name$: local description1$: local description2$: local image$
|
|
local t$
|
|
|
|
x = (peek("desktopwidth")-600)/2
|
|
y = (peek("desktopheight")-200)/2-50
|
|
if(y<50) y=50
|
|
|
|
window open x-3000,y-3000 to x+600-3000,y+200-3000, "SaveTempWindow", "yab-IDE Save as Template"
|
|
window set "SaveTempWindow", "Feel", "Modal-App"
|
|
window set "SaveTempWindow", "Flags", "not-zoomable, not-h-resizable, not-v-resizable"
|
|
|
|
Header("Save as Template", "SaveTempWindow", 600)
|
|
|
|
text 10,50, "SaveTempText1", "Save your code as a template for other programs:", "SaveTempWindow"
|
|
textcontrol 10,70 to 380,90, "SaveTempName", "Template Name", "", "SaveTempWindow"
|
|
text 10,98, "SaveTempText2", "Description (not more than 30 characters per line)", "SaveTempWindow"
|
|
textcontrol 5,110 to 380,120, "SaveTempDes1", "", "", "SaveTempWindow"
|
|
textcontrol 5,130 to 380,150, "SaveTempDes2", "", "", "SaveTempWindow"
|
|
|
|
draw set "highcolor", 0,0,0, "SaveTempWindow"
|
|
draw set "lowcolor", 255,255,0, "SaveTempWindow"
|
|
draw set 0, "240225195135015030060120"
|
|
draw rect 390,50 to 590,150, "SaveTempWindow"
|
|
draw set 0, "lowsolidfill"
|
|
draw set "lowcolor", 216,216,216, "SaveTempWindow"
|
|
draw rect 400,60 to 580,140, "SaveTempWindow"
|
|
draw set 0, "highsolidfill"
|
|
|
|
w = draw get "Text-width", MyTranslate$("Drop image here"), "SaveTempWindow"
|
|
draw text 490-w/2,105, "Drop image here", "SaveTempWindow"
|
|
view dropzone "SaveTempWindow"
|
|
|
|
draw set "highcolor", 185,185,185, "SaveTempWindow"
|
|
draw line 0,162 to 600,162, "SaveTempWindow"
|
|
draw set "highcolor", 239,239,239, "SaveTempWindow"
|
|
draw line 0,163 to 600,163, "SaveTempWindow"
|
|
|
|
button 530,170 to 590,190, "SaveTempOk", "Save", "SaveTempWindow"
|
|
option set "SaveTempOk", "enabled", false
|
|
isButton = false
|
|
|
|
option set "SaveTempName", "focus", true
|
|
|
|
window set "SaveTempWindow", "moveto", x,y
|
|
|
|
inloop = true
|
|
while(inloop)
|
|
n = split(message$, msg$(), ":|")
|
|
for i = 1 to n
|
|
if(DEBUG and msg$(i)<>"") print msg$(i)
|
|
// check for emergency exit
|
|
if(i > 1) then
|
|
if(msg$(i) = "_QuitRequested" and msg$(i-1) <> "SaveTempWindow") then
|
|
exit(1)
|
|
endif
|
|
else
|
|
if(msg$(i) = "_QuitRequested") then
|
|
exit(1)
|
|
endif
|
|
endif
|
|
switch(msg$(i))
|
|
case "_Dropped"
|
|
if(arraysize(msg$(),1)>=i+1) then
|
|
w = draw image 390,50 to 590,150, msg$(i+1), "SaveTempWindow"
|
|
if(w<>0) then
|
|
alert "Could not load image!", "Ok", "warning"
|
|
else
|
|
image$ = msg$(i+1)
|
|
endif
|
|
endif
|
|
break
|
|
case "SaveTempOk"
|
|
name$ = left$(textcontrol get$ "SaveTempName", 50)
|
|
description1$ = left$(textcontrol get$ "SaveTempDes1", 30)
|
|
description2$ = left$(textcontrol get$ "SaveTempDes2", 30)
|
|
imageShort$ = GetFileName$(image$)
|
|
system("cp "+image$+" "+ideDir$+"Templates/img/"+imageShort$)
|
|
handle = open(ideDir$+"Templates/TemplateList", "a")
|
|
if(handle) then
|
|
print #handle "#"
|
|
print #handle name$
|
|
print #handle "Templates/img/"+imageShort$
|
|
print #handle description1$
|
|
print #handle description2$
|
|
close(handle)
|
|
handle2 = open(ideDir$+"Templates/"+name$, "w")
|
|
if(handle2) then
|
|
t$ = textedit get$ "Text"+str$(globalCurrentText)
|
|
print #handle t$;
|
|
close(handle2)
|
|
else
|
|
alert "Error while saving template!", "Ok", "warning"
|
|
endif
|
|
else
|
|
alert "Error while saving template!", "Ok", "warning"
|
|
endif
|
|
inloop = false
|
|
break
|
|
case "_QuitRequested"
|
|
inloop = false
|
|
break
|
|
end switch
|
|
next i
|
|
|
|
name$ = textcontrol get$ "SaveTempName"
|
|
if(name$<>"" and not isButton) then
|
|
option set "SaveTempOk", "enabled", true
|
|
isButton = true
|
|
endif
|
|
if(name$="" and isButton) then
|
|
option set "SaveTempOk", "enabled", false
|
|
isButton = false
|
|
endif
|
|
wend
|
|
|
|
window close "SaveTempWindow"
|
|
return
|
|
end sub
|
|
|
|
sub SaveCurrentFile()
|
|
local savetext$
|
|
handle = open(globalAllNames$(globalCurrentText), "w")
|
|
if(handle) then
|
|
savetext$=textedit get$ "Text"+str$(globalCurrentText)
|
|
if right$(savetext$,1)<>chr$(10) savetext$=savetext$+chr$(10)
|
|
print #handle savetext$;
|
|
close(handle)
|
|
tmpCurrentLine = textedit get "Text"+str$(globalCurrentText), "currentline"
|
|
print "ATTR SET ";
|
|
print str$(tmpCurrentLine)
|
|
attribute set "Int", "linenumber", str$(tmpCurrentLine), globalAllNames$(globalCurrentText)
|
|
textedit set "Text"+str$(globalCurrentText), "changed", false
|
|
globalWasChanged = false
|
|
columnbox add "FileBox", 1, globalTextFinder(globalCurrentText), 20, "__Icon__="+ideDir$+"img/gespeichert.png"
|
|
else
|
|
alert "File could not be saved!", "Ok", "warning"
|
|
return false
|
|
endif
|
|
return true
|
|
end sub
|
|
|
|
sub Header(headerText$, window$, size)
|
|
local w
|
|
local head$
|
|
|
|
head$ = window$+"Header"
|
|
layout "none", window$
|
|
view 0,0 to size,40, head$, window$
|
|
draw set "bgcolor", 230,230,255, head$
|
|
draw set "lowcolor", 230,230,255, head$
|
|
if(peek$("os") = "Haiku") then
|
|
draw set "DejaVu Sans, Condensed Bold, 18", head$
|
|
else
|
|
draw set "Swis721 BT, Bold, 18", head$
|
|
endif
|
|
draw set "highcolor", 0,0,0, head$
|
|
w = draw get "Text-width", MyTranslate$(headerText$), head$
|
|
draw text size-w-10,25, headerText$, head$
|
|
draw set "highcolor", 239,239,239, head$
|
|
draw line 0,40 to size,40, head$
|
|
draw set "highcolor", 185,185,185, head$
|
|
draw line 0,39 to size,39, head$
|
|
return
|
|
end sub
|
|
|
|
// open the build factory window
|
|
sub Building()
|
|
local x, y, inloop, isEmpty
|
|
local binName$, t$, myTab$, result$
|
|
local msg$(1)
|
|
local i, n, tmp
|
|
|
|
|
|
x = (peek("desktopwidth")-500)/2
|
|
y = (peek("desktopheight")-400)/2-50
|
|
if(y<50) y=50
|
|
|
|
window open x-3000,y-3000 to x+500-3000,y+400-3000, "BuildWindow", "yab-IDE Build Factory"
|
|
window set "BuildWindow", "Feel", "Modal-App"
|
|
window set "BuildWindow", "Flags", "not-zoomable, not-h-resizable, not-v-resizable"
|
|
|
|
Header("Build Factory", "BuildWindow", 500)
|
|
|
|
if(right$(globalAllNames$(globalCurrentText),4) = ".yab") then
|
|
binName$ = left$(globalAllNames$(globalCurrentText), len(globalAllNames$(globalCurrentText))-4)
|
|
else
|
|
binName$= globalAllNames$(globalCurrentText)+".bin"
|
|
endif
|
|
|
|
while (instr(binName$, "/"))
|
|
pos=instr(binName$, "/")
|
|
binName$=right$(binName$,len(binName$)-pos)
|
|
wend
|
|
|
|
|
|
isEmpty = false
|
|
|
|
textcontrol 10,50 to 380,70, "BuildPath", "Target file name:", binName$, "BuildWindow"
|
|
AppSig$="application/x-vnd.yab-app"
|
|
textcontrol 10,80 to 380,100, "AppSig", "Application Signature:", AppSig$, "BuildWindow"
|
|
//button 390,50 to 490,70, "BuildBrowse", "Browse", "BuildWindow"
|
|
|
|
button 390,100 to 490,130, "BuildBuild", "Create Binary", "BuildWindow"
|
|
|
|
MyLine(0,140,500,140, "BuildWindow")
|
|
textedit 10,155 to 490,390, "BuildOutput", 3, "BuildWindow"
|
|
textedit set "BuildOutput", "editable", false
|
|
textedit set "BuildOutput", "wordwrap", false
|
|
textedit set "BuildOutput", "textwidth", 4000
|
|
|
|
window set "BuildWindow", "moveto", x, y
|
|
|
|
if(left$(system$("gcc 2>&1"),4) <> "gcc:") then
|
|
alert "The compiler GCC was not found!\n\nPlease install a complete Haiku system.", "Ok", "stop"
|
|
window close "BuildWindow"
|
|
return
|
|
endif
|
|
|
|
textedit add "BuildOutput", MyTranslate$("Build Factory Output\n\n")
|
|
|
|
inloop = true
|
|
while(inloop)
|
|
n = split(message$, msg$(), "|")
|
|
for i = 1 to n
|
|
if(DEBUG and msg$(i)<>"") print msg$(i)
|
|
switch(msg$(i))
|
|
case "BuildBuild"
|
|
option set "BuildBuild", "enabled", false
|
|
option set "BuildPath", "enabled", false
|
|
//option set "BuildBrowse", "enabled", false
|
|
option set "AppSig", "enabled", false
|
|
AppSig$=textcontrol get$ "AppSig"
|
|
if AppSig$="" AppSig$="application/x-vnd.yab-app"
|
|
binName$=textcontrol get$ "BuildPath"
|
|
textedit add "BuildOutput", MyTranslate$("Please wait, processing... (this may take a long time!)\n\n")
|
|
print "cd "+buildDir$+"; "+yabDir$+" BuildFactory.yab "+binName$+" "+globalAllNames$(globalCurrentText)+" "+AppSig$+" 2>&1\n\n"
|
|
result$ = system$("cd "+buildDir$+"; yab BuildFactory.yab "+binName$+" "+globalAllNames$(globalCurrentText)+" "+AppSig$+" yab-ide 2>&1")
|
|
textedit add "BuildOutput", result$
|
|
|
|
|
|
option set "BuildBuild", "enabled", true
|
|
option set "BuildPath", "enabled", true
|
|
//option set "BuildBrowse", "enabled", true
|
|
option set "AppSig", "enabled", true
|
|
|
|
if(IfExists(buildDir$+"/"+binName$)) then
|
|
alert "Build was successful", "Ok", "info"
|
|
else
|
|
alert "Build failed!", "Ok", "warning"
|
|
endif
|
|
system("rm "+ buildDir$+"/"+binName$)
|
|
break
|
|
//case "BuildBrowse"
|
|
// t$ = filepanel "save-file", "Save", GetDirectory$(binName$)
|
|
// if(t$<>"") then
|
|
// textcontrol set "BuildPath", t$
|
|
// binName$ = t$
|
|
// endif
|
|
// break
|
|
case "_QuitRequested"
|
|
case "BuildWindow:_QuitRequested"
|
|
inloop = false
|
|
break
|
|
end switch
|
|
next i
|
|
if(not isEmpty and textcontrol get$ "BuildPath" = "") then
|
|
AppSig$=textcontrol get$ "AppSig"
|
|
option set "BuildBuild", "enabled", false
|
|
isEmpty = true
|
|
endif
|
|
if(isEmpty and textcontrol get$ "BuildPath" <> "") then
|
|
AppSig$=textcontrol get$ "AppSig"
|
|
option set "BuildBuild", "enabled", true
|
|
isEmpty = false
|
|
endif
|
|
|
|
|
|
|
|
wend
|
|
window close "BuildWindow"
|
|
return
|
|
end sub
|
|
|
|
// open the option window
|
|
sub OptionWindow()
|
|
local x, y, inloop
|
|
local msg$(1), style$(1)
|
|
local styleNum, styleCount
|
|
local i, n, optCurrent
|
|
local tmp$
|
|
local handle, j, hasItem
|
|
local family$, style$, size$
|
|
local defaultFamily
|
|
|
|
x = (peek("desktopwidth")-650)/2
|
|
y = (peek("desktopheight")-400)/2-50
|
|
if(y<50) y=50
|
|
|
|
window open x+100-3000,y+150-3000 to x+750-3000,y+550-3000, "OptWindow", "yab-IDE Options"
|
|
window set "OptWindow", "Feel", "Modal-App"
|
|
window set "OptWindow", "Flags", "not-zoomable, not-h-resizable, not-v-resizable"
|
|
|
|
Header("Options", "OptWindow", 650)
|
|
|
|
draw set "highcolor", 185,185,185, "OptWindow"
|
|
draw line 11,51 to 138,51, "OptWindow"
|
|
draw line 10,50 to 139,50, "OptWindow"
|
|
draw line 11,51 to 11,388, "OptWindow"
|
|
draw line 10,50 to 10,389, "OptWindow"
|
|
draw set "highcolor", 239,239,239, "OptWindow"
|
|
draw line 12,389 to 139,389, "OptWindow"
|
|
draw line 11,390 to 139,390, "OptWindow"
|
|
draw line 139,52 to 139,389, "OptWindow"
|
|
draw line 140,51 to 140,390, "OptWindow"
|
|
draw set "highcolor", 0,0,0, "OptWindow"
|
|
|
|
treebox 12,52 to 138,388, "OptTree", 0, "OptWindow"
|
|
// treebox add "OptTree", "Interpreter"
|
|
// treebox add "OptTree", "Interpreter", "Libraries", true
|
|
// treebox add "OptTree", "Interpreter", "Execution", true
|
|
treebox add "OptTree", "Editor"
|
|
treebox add "OptTree", "Editor", "Auto completion", true
|
|
// treebox add "OptTree", "Editor", "Syntax Highlighting", true
|
|
treebox add "OptTree", "Editor", "General", true
|
|
treebox add "OptTree", "Environment"
|
|
if(not settingsRCSOff) treebox add "OptTree", "Environment", "Version Control", true
|
|
treebox add "OptTree", "Environment", "Language", true
|
|
treebox add "OptTree", "Environment", "Directories", true
|
|
treebox select "OptTree", 2
|
|
|
|
// button 430,370 to 530,390, "OptDefault", "Default", "OptWindow"
|
|
// button 540,370 to 640,390, "OptOk", "Close", "OptWindow"
|
|
|
|
// MyLine(0,362,650,362,"OptWindow")
|
|
|
|
optCurrent = 1
|
|
stackview 150,50 to 640,390, "OptStack", 4, "OptWindow"
|
|
|
|
// General
|
|
boxview 0,0 to 490, 340, "OptBox3", "General", 2, "OptStack1"
|
|
spincontrol 10,5, "OptGenSpin", "Number of spaces per tab:", 1,20,1, "OptBox3"
|
|
spincontrol set "OptGenSpin", settingsTabSpaces
|
|
MyLine(10,35,470,35, "OptBox3")
|
|
checkbox 10,45, "OptGenSaving", "Ask about saving before running a program", settingsAskForSaving, "OptBox3"
|
|
checkbox 10,65, "OptGenReformat", "Show warning when reformating sourcecode did not close all loops and conditions", settingsReformatAlert, "OptBox3"
|
|
checkbox 10,85, "OptGenReformatUndo", "Show warning before undo reformating", settingsReformatUndoAlert, "OptBox3"
|
|
checkbox 10,105, "OptGenReplaceAll", "Show warning before applying Replace All", settingsFindAlert, "OptBox3"
|
|
MyLine(10,135,470,135, "OptBox3")
|
|
|
|
text 10,145, "OptGenTxt", "Select font for editor:", "OptBox3"
|
|
dropbox 12,165 to 240,185, "OptGenFontFamily", "Font Family", "OptBox3"
|
|
dropbox 250,165 to 370,185, "OptGenFontStyle", "Font Style", "OptBox3"
|
|
spincontrol 380,160, "OptGenFontSize", "Font Size", 8,50,1, "OptBox3"
|
|
|
|
n = token(draw get$ "FontFamily", msg$(), "|")
|
|
for i = 1 to n
|
|
dropbox add "OptGenFontFamily", msg$(i)
|
|
if(msg$(i) = settingsFontFamily$) j = i
|
|
if(msg$(i) = "Courier10 BT") defaultFamily = i
|
|
next i
|
|
if(j>0) then
|
|
dropbox select "OptGenFontFamily", j
|
|
n = token(draw get$ settingsFontFamily$, msg$(), "|")
|
|
for i = 1 to n
|
|
dropbox add "OptGenFontStyle", msg$(i)
|
|
if(msg$(i) = settingsFontStyle$) j = i
|
|
next i
|
|
if(j>0) dropbox select "OptGenFontStyle", j
|
|
endif
|
|
spincontrol set "OptGenFontSize", settingsFontSize
|
|
|
|
view 20,205 to 460,255, "OptGenSample", "OptBox3"
|
|
draw set "bgcolor", 255,255,255, "OptGenSample"
|
|
draw set settingsFontFamily$+","+settingsFontStyle$+","+str$(settingsFontSize), "OptGenSample"
|
|
n = draw get "text-width", MyTranslate$("My hovercraft is full of eels."), "OptGenSample"
|
|
draw text (440-n)/2,(50-settingsFontSize)/2+settingsFontSize, "My hovercraft is full of eels.", "OptGenSample"
|
|
MyLine(10,290,470,290,"OptBox3")
|
|
button 320,297 to 470,317, "OptDefault", "Factory Settings", "OptBox3"
|
|
|
|
// Syntax Highlighing
|
|
// boxview 0,0 to 490, 340, "OptBox4", "Syntax Highlighting", 2, "OptStack2"
|
|
|
|
// Auto completion
|
|
boxview 0,0 to 490, 340, "OptBox5", "Auto completion", 2, "OptStack2"
|
|
checkbox 10,10, "OptACCheck", "Enable auto completion", settingsAutoCompletion, "OptBox5"
|
|
spincontrol 10,30, "OptACNum", "Number of characters for starting completion:", 1,20,1, "OptBox5"
|
|
spincontrol set "OptACNum", settingsACNumChar
|
|
MyLine(10,60,470,60,"OptBox5")
|
|
listbox 10,75 to 180,275, "OptACList", 1, "OptBox5"
|
|
textcontrol 190,185 to 470,205, "OptACTC", "New Entry:", "", "OptBox5"
|
|
button 320,215 to 470,235, "OptACAdd", "Add New Entry", "OptBox5"
|
|
MyLine(190,245,470,245,"OptBox5")
|
|
MyLine(190,175,470,175,"OptBox5")
|
|
button 370,255 to 470,275, "OptACRemove", "Remove Entry", "OptBox5"
|
|
text 190,75, "OptACText1", "Note: You have to restart the IDE to update the", "OptBox5"
|
|
text 190,90, "OptACText2", "autocompletion when removing entries.", "OptBox5"
|
|
handle = open(ideDir$+"data/autocompletion", "r")
|
|
if(handle) then
|
|
while(not eof(handle))
|
|
tmp$ = GetLine$(handle)+"\n"
|
|
listbox add "OptACList", left$(tmp$, len(tmp$)-1)
|
|
wend
|
|
close(handle)
|
|
endif
|
|
MyLine(10,290,470,290,"OptBox5")
|
|
button 320,297 to 470,317, "OptDefault", "Factory Settings", "OptBox5"
|
|
|
|
// Dirs
|
|
boxview 0,0 to 490, 340, "OptBox6", "Directories", 2, "OptStack3"
|
|
text 10,10, "OptDirTxt", "Note: Only change the directories, when you know what you are doing!", "OptBox6"
|
|
MyLine(10,30,470,30, "OptBox6")
|
|
textcontrol 10,45 to 470,65, "OptDirBinDir", "Default yab Binary", yabDir$, "OptBox6"
|
|
// MyLine(10,45,470,45, "OptBox6")
|
|
// textcontrol 10,60 to 360,80, "OptDirProjDir", "Project Directory", globalProjectDir$, "OptBox6"
|
|
textcontrol 10,80 to 470,100, "OptDirYabDir", "Default yab Directory", settingsYabDir$, "OptBox6"
|
|
MyLine(10,115,470,115, "OptBox6")
|
|
MyLine(10,290,470,290,"OptBox6")
|
|
button 320,297 to 470,317, "OptDefault", "Factory Settings", "OptBox6"
|
|
|
|
// Language
|
|
boxview 0,0 to 490, 340, "OptBox8", "Language", 2, "OptStack4"
|
|
checkbox 10,10, "OptLangCheck", "Use automatic localization", restartSettingsLangUse, "OptBox8"
|
|
MyLine(10,40,470,40,"OptBox8")
|
|
columnbox 10,55 to 470,275, "OptLangList", false, "", "OptBox8"
|
|
columnbox column "OptLangList", "Supported Languages", 1, 460,460,460, "align-left"
|
|
MyLine(10,290,470,290,"OptBox8")
|
|
button 320,297 to 470,317, "OptDefault", "Factory Settings", "OptBox8"
|
|
columnbox color "OptLangList", "Selection-Active", 220,220,250
|
|
columnbox color "OptLangList", "Row-Divider", 255,255,255
|
|
tmp$ = system$("ls /boot/common/data/locale/catalogs/"+settingsLangPath$+"/*.catalog")
|
|
n = token(tmp$, msg$(), "\n")
|
|
for i = 1 to n
|
|
columnbox add "OptLangList", 1,i,18,msg$(i)
|
|
next i
|
|
|
|
window set "OptWindow", "moveto", x,y
|
|
|
|
inloop = true
|
|
while(inloop)
|
|
n = split(message$, msg$(), "|")
|
|
for i = 1 to n
|
|
if(DEBUG and msg$(i)<>"") print msg$(i)
|
|
switch(msg$(i))
|
|
case "_QuitRequested"
|
|
// emergency quit
|
|
exit(1)
|
|
break
|
|
case "OptOk"
|
|
case "OptWindow:_QuitRequested"
|
|
inloop = false
|
|
break
|
|
|
|
// General
|
|
case "OptGenSaving:ON"
|
|
case "OptGenSaving:OFF"
|
|
settingsAskForSaving = not settingsAskForSaving
|
|
break
|
|
case "OptGenReformat:ON"
|
|
case "OptGenReformat:OFF"
|
|
settingsReformatAlert = not settingsReformatAlert
|
|
break
|
|
case "OptGenReformatUndo:ON"
|
|
case "OptGenReformatUndo:OFF"
|
|
settingsReformatUndoAlert = not settingsReformatUndoAlert
|
|
break
|
|
case "OptGenReplaceAll:ON"
|
|
case "OptGenReplaceAll:OFF"
|
|
settingsFindAlert = not settingsFindAlert
|
|
break
|
|
|
|
// Autocompletion
|
|
case "OptACCheck"
|
|
settingsAutoCompletion = not settingsAutoCompletion
|
|
break
|
|
case "OptACRemove"
|
|
break
|
|
case "OptACAdd"
|
|
tmp$ = textcontrol get$ "OptACTC"
|
|
if(tmp$<>"") then
|
|
hasItem = false
|
|
for j=1 to listbox count "OptACList"
|
|
if(tmp$ = listbox get$ "OptACList", i) then
|
|
hasItem = true
|
|
break
|
|
endif
|
|
next j
|
|
if(not hasItem) then
|
|
listbox add "OptACList", tmp$
|
|
listbox sort "OptACList"
|
|
else
|
|
alert "Entry already exists.", "Ok", "info"
|
|
endif
|
|
endif
|
|
break
|
|
|
|
// Language
|
|
case "OptLangCheck:ON"
|
|
case "OptLangCheck:OFF"
|
|
restartSettingsLangUse = not restartSettingsLangUse
|
|
alert "Restart yab-IDE to change localization", "Ok", "info"
|
|
break
|
|
|
|
// Default
|
|
case "OptDefault"
|
|
t = stackview get "OptStack"
|
|
switch(t)
|
|
case 1
|
|
settingsAskForSaving = true
|
|
settingsReformatAlert = true
|
|
settingsReformatUndoAlert = true
|
|
settingsFindAlert = true
|
|
settingsTabSpaces = 4
|
|
settingsFontStyle$ = "Roman"
|
|
settingsFontSize = 12
|
|
spincontrol set "OptGenSpin", settingsTabSpaces
|
|
checkbox set "OptGenSaving", settingsAskForSaving
|
|
checkbox set "OptGenReformat", settingsReformatAlert
|
|
checkbox set "OptGenReformatUndo", settingsReformatUndoAlert
|
|
checkbox set "OptGenReplaceAll", settingsFindAlert
|
|
dropbox select "OptGenFontFamily", defaultFamily
|
|
if(settingsFontFamily$<> "Courier10 BT") then
|
|
settingsFontFamily$ = "Courier10 BT"
|
|
dropbox clear "OptGenFontStyle"
|
|
styleCount = token(draw get$ settingsFontFamily$, style$(), "|")
|
|
for styleNum = 1 to styleCount
|
|
dropbox add "OptGenFontStyle", style$(styleNum)
|
|
next styleNum
|
|
dropbox select "OptGenFontStyle", 1
|
|
OptionUpdateSample()
|
|
endif
|
|
spincontrol set "OptGenFontSize", settingsFontSize
|
|
for j = 1 to MAXFILES
|
|
textedit set "Text"+str$(j), "TabWidth", settingsTabSpaces*7
|
|
next j
|
|
break
|
|
case 2
|
|
settingsAutoCompletion = true
|
|
settingsACNumChar = 2
|
|
checkbox set "OptACCheck", settingsAutoCompletion
|
|
spincontrol set "OptACNum", settingsACNumChar
|
|
break
|
|
case 3
|
|
if(system("test -d /boot/apps/Development/yab-1.0/") = 0) then
|
|
settingsYabDir$ = "/boot/apps/Development/yab-1.0/"
|
|
elsif(system("test -d /boot/apps/yab-1.0/") = 0) then
|
|
settingsYabDir$ = "/boot/apps/yab-1.0/"
|
|
else
|
|
alert "Could not find yab 1.0 directory!\n\nPlease do a proper installation.", "Ok", "warning"
|
|
endif
|
|
textcontrol set "OptDirYabDir", settingsYabDir$
|
|
|
|
if(system("test -e /boot/home/config/bin/yab") = 0) then
|
|
yabDir$ = "/boot/home/config/bin/yab"
|
|
else
|
|
alert "Could not find yab binary!\n\nPlease do a proper installation.", "Ok", "warning"
|
|
endif
|
|
textcontrol set "OptDirBinDir", yabDir$
|
|
break
|
|
case 4
|
|
if(restartSettingsLangUse = false) then
|
|
restartSettingsLangUse = true
|
|
checkbox set "OptLangCheck",restartSettingsLangUse
|
|
alert "Restart yab-IDE to change localization", "Ok", "info"
|
|
endif
|
|
break
|
|
end switch
|
|
break
|
|
end switch
|
|
|
|
// Font stuff
|
|
if(left$(msg$(i), 17) = "OptGenFontFamily:") then
|
|
settingsFontFamily$ = right$(msg$(i), len(msg$(i))-17)
|
|
dropbox clear "OptGenFontStyle"
|
|
styleCount = token(draw get$ settingsFontFamily$, style$(), "|")
|
|
for styleNum = 1 to styleCount
|
|
dropbox add "OptGenFontStyle", style$(styleNum)
|
|
next styleNum
|
|
dropbox select "OptGenFontStyle", 1
|
|
settingsFontStyle$ = style$(1)
|
|
OptionUpdateSample()
|
|
endif
|
|
if(left$(msg$(i), 16) = "OptGenFontStyle:") then
|
|
settingsFontStyle$ = right$(msg$(i), len(msg$(i))-16)
|
|
OptionUpdateSample()
|
|
endif
|
|
|
|
if(left$(msg$(i), 8) = "OptACTC:") then
|
|
option set "OptACAdd", "focus", true
|
|
endif
|
|
if(left$(msg$(i), 16) = "OptTree:_Select:") then
|
|
t = val(right$(msg$(i), len(msg$(i))-16))
|
|
tmp$ = treebox get$ "OptTree", t
|
|
switch(tmp$)
|
|
case MyTranslate$("General"): t = 1: break
|
|
// case MyTranslate$("Syntax Highlighting"): t = 2: break
|
|
case MyTranslate$("Auto completion"): t = 2: break
|
|
case MyTranslate$("Directories"): t = 3: break
|
|
case MyTranslate$("Language"): t = 4: break
|
|
// case MyTranslate$("Version Control"): t = 6: break
|
|
default: t = 0: break
|
|
end switch
|
|
if(t>0) then
|
|
stackview set "OptStack", t
|
|
optCurrent = t
|
|
endif
|
|
endif
|
|
|
|
if(left$(msg$(i), 13) = "OptDirYabDir:") then
|
|
tmp$ = right$(msg$(i), len(msg$(i))-13)
|
|
if(system("test -d "+tmp$) = 0) then
|
|
settingsYabDir$ = tmp$
|
|
alert MyTranslate$("New yab directory set to:\n\n")+tmp$+MyTranslate$("\n\nRestart the IDE using the new directory."), "Ok", "info"
|
|
else
|
|
alert MyTranslate$("Invalid directory:\n\n")+tmp$, "Ok", "warning"
|
|
textcontrol set "OptDirYabDir", settingsYabDir$
|
|
endif
|
|
endif
|
|
if(left$(msg$(i), 13) = "OptDirBinDir:") then
|
|
tmp$ = right$(msg$(i), len(msg$(i))-13)
|
|
if(system("test -e "+tmp$) = 0) then
|
|
yabDir$ = tmp$
|
|
alert MyTranslate$("yab binary set to:\n\n")+tmp$, "Ok", "info"
|
|
else
|
|
alert MyTranslate$("Invalid file:\n\n")+tmp$, "Ok", "warning"
|
|
textcontrol set "OptDirBinDir", yabDir$
|
|
endif
|
|
endif
|
|
next i
|
|
if(spincontrol get "OptGenFontSize" <> settingsFontSize) then
|
|
settingsFontSize = spincontrol get "OptGenFontSize"
|
|
OptionUpdateSample()
|
|
endif
|
|
if(spincontrol get "OptGenSpin" <> settingsTabSpaces) then
|
|
settingsTabSpaces = spincontrol get "OptGenSpin"
|
|
for j = 1 to MAXFILES
|
|
textedit set "Text"+str$(j), "TabWidth", settingsTabSpaces*7
|
|
next j
|
|
endif
|
|
wend
|
|
|
|
window close "OptWindow"
|
|
|
|
return
|
|
end sub
|
|
|
|
// draw the example text (OptionWindow)
|
|
sub OptionUpdateSample()
|
|
local n
|
|
local scroll, scrollLine, scrollPos
|
|
|
|
draw flush "OptGenSample"
|
|
draw set settingsFontFamily$+","+settingsFontStyle$+","+str$(settingsFontSize), "OptGenSample"
|
|
n = draw get "text-width", MyTranslate$("My hovercraft is full of eels."), "OptGenSample"
|
|
draw text (440-n)/2,50-(50-settingsFontSize)/2, "My hovercraft is full of eels.", "OptGenSample"
|
|
for n = 1 to MAXFILES
|
|
textedit set "Text"+str$(n), "font", settingsFontFamily$+","+settingsFontStyle$+","+str$(settingsFontSize)
|
|
draw set settingsFontFamily$+","+settingsFontStyle$+","+str$(settingsFontSize), "Lines"+str$(n)
|
|
next n
|
|
if(globalCurrentText>0) then
|
|
globalRealFontSize = textedit get "Text"+str$(globalCurrentText), "line-height", 1
|
|
scroll = textedit get "Text"+str$(globalCurrentText), "vertical-scrollbar"
|
|
scrollLine = int(scroll/globalRealFontSize)
|
|
scrollPos = mod(scroll,globalRealFontSize)
|
|
UpdateLines(scrollPos, 1200, scrollLine, globalRealFontSize)
|
|
endif
|
|
return
|
|
end sub
|
|
|
|
// draw a sort of 3D line
|
|
sub MyLine(x1,y1,x2,y2,View$)
|
|
draw set "highcolor", 185,185,185, View$
|
|
draw line x1,y1 to x2,y2, View$
|
|
draw set "highcolor", 239,239,239, View$
|
|
if(x1=x2) then
|
|
draw line x1+1,y1 to x2+1,y2, View$
|
|
else
|
|
draw line x1,y1+1 to x2,y2+1, View$
|
|
endif
|
|
draw set "highcolor", 0,0,0, View$
|
|
return
|
|
end sub
|
|
|
|
// only translates when a translation is wanted
|
|
sub MyTranslate$(txt$)
|
|
if(settingsLangUse) return menu translate$(txt$)
|
|
return txt$
|
|
end sub
|
|
|
|
// returns true if filename$ exists
|
|
sub IfExists(filename$)
|
|
return not system("test -e "+filename$)
|
|
end sub
|
|
|
|
// Create a new toolbar.
|
|
//
|
|
// x1,y1 is the upper left starting point
|
|
// x2 is the right border of the toolbar
|
|
// note: the toolbar is always 30 pixels in height!
|
|
// id$ is the toolbar ID
|
|
// dir$ is the directory, where the icons can be found
|
|
// view$ is the view on which the Toolbar is created
|
|
//
|
|
// Note: this will change the layout of your view view$.
|
|
sub ToolbarCreate(x1,y1,x2, id$, dir$, view$)
|
|
layout "left, right", view$
|
|
view x1,y1 to x2,y1+32, id$, view$
|
|
// layout "left,right", id$
|
|
draw set "bgcolor", 222,219,222, id$
|
|
// view 0,30 to x2,32, id$+"line", id$
|
|
// draw set "bgcolor", 185,185,185, id$+"line"
|
|
layout "none", id$
|
|
position = 10
|
|
directory$ = dir$
|
|
toolbarview$ = id$
|
|
return
|
|
end sub
|
|
|
|
// Add an icon to the toolbar.
|
|
sub ToolbarAddIcon(id$, tooltip$, pressed$, normal$, disabled$)
|
|
button image position,7, id$, directory$+pressed$, directory$+normal$, directory$+disabled$, toolbarview$
|
|
tooltip id$, tooltip$
|
|
position = position + 25
|
|
return
|
|
end sub
|
|
|
|
// Add a separator to the toolbar.
|
|
sub ToolbarAddSeparator()
|
|
draw set "highcolor", 185,185,185, toolbarview$
|
|
draw line position-2,5 to position-2,25,toolbarview$
|
|
draw set "highcolor", 239,239,239, toolbarview$
|
|
draw line position-1,5 to position-1,25, toolbarview$
|
|
position = position + 5
|
|
return
|
|
end sub
|
|
|
|
// Open the pattern calculation window
|
|
sub OpenCalcPattern(x,y)
|
|
local i, j, w
|
|
local msg$(1)
|
|
local inloop, n
|
|
|
|
window open x,y to x+259,y+400, "CalcPattern", "yab-IDE Pattern editor"
|
|
window set "CalcPattern", "Feel", "Modal-App"
|
|
window set "CalcPattern", "Flags", "not-zoomable, not-h-resizable, not-v-resizable"
|
|
|
|
Header("Pattern editor", "CalcPattern", 260)
|
|
|
|
draw set "highcolor", 239,239,239, "CalcPattern"
|
|
draw line 0,300 to 259,300, "CalcPattern"
|
|
draw set "highcolor", 185,185,185, "CalcPattern"
|
|
draw line 0,299 to 259,299, "CalcPattern"
|
|
|
|
view 10,50 to 249,289, "VDraw", "CalcPattern"
|
|
draw set "bgcolor", 255, 255, 255, "VDraw"
|
|
draw set "lowcolor", 0, 0, 0, "VDraw"
|
|
|
|
view 10,310 to 90,390, "VPattern", "CalcPattern"
|
|
draw set "bgcolor", 255, 255, 255, "VPattern"
|
|
draw set "lowcolor", 0, 0, 0, "VPattern"
|
|
draw set "highcolor", 255, 255, 255, "VPattern"
|
|
|
|
button 100,370 to 249,390, "CalcPatternInsert", "Insert Pattern", "CalcPattern"
|
|
|
|
UpdatePattern(pattern())
|
|
draw set 0, "LowSolidFill"
|
|
draw set "lowcolor", 0, 0, 0, "VDraw"
|
|
for i = 0 to 7
|
|
for j = 0 to 7
|
|
if(pattern(i,j) = 1) then
|
|
draw rect i*30,j*30 to i*30+29,j*30+29, "VDraw"
|
|
endif
|
|
next j
|
|
next i
|
|
draw set 0, "HighSolidFill"
|
|
|
|
inloop = true
|
|
while(inloop)
|
|
CalcPatternMouse(pattern())
|
|
n = token(message$, msg$(), "|")
|
|
for i = 1 to n
|
|
switch(msg$(i))
|
|
case "CalcPatternInsert"
|
|
textedit add "Text"+str$(globalCurrentText), CalcPatternInsert$(pattern())
|
|
break
|
|
case "CalcPattern:_QuitRequested"
|
|
settingsCalcPatternX = window get "CalcPattern", "Position-X"
|
|
settingsCalcPatternY = window get "CalcPattern", "Position-Y"
|
|
window close "CalcPattern"
|
|
inloop = false
|
|
break
|
|
case "_QuitRequested"
|
|
//emergency break
|
|
exit(1)
|
|
break
|
|
end switch
|
|
next i
|
|
wend
|
|
return
|
|
end sub
|
|
|
|
// mouse stuff (PatternEditor)
|
|
sub CalcPatternMouse(pattern())
|
|
local help$
|
|
local i, j, refresh
|
|
|
|
mousex = 0
|
|
mousey = 0
|
|
mouselmb = 0
|
|
mousemmb = 0
|
|
mousermb = 0
|
|
|
|
|
|
refresh = 0
|
|
|
|
if(ismousein("VDraw")) then
|
|
GetMouseData("VDraw",239,239)
|
|
endif
|
|
|
|
if(mouselmb) then
|
|
x = int(mousex/30)
|
|
y = int(mousey/30)
|
|
if(pattern(x,y) = 0) then
|
|
pattern(x,y) = 1
|
|
draw set "lowcolor", 0, 0, 0, "VDraw"
|
|
draw set 0, "LowSolidFill"
|
|
draw rect x*30,y*30 to x*30+29,y*30+29, "VDraw"
|
|
UpdatePattern(pattern())
|
|
refresh = refresh + 1
|
|
endif
|
|
endif
|
|
|
|
if(mousermb) then
|
|
x = int(mousex/30)
|
|
y = int(mousey/30)
|
|
if(pattern(x,y) = 1) then
|
|
pattern(x,y) = 0
|
|
draw set "lowcolor", 255, 255, 255, "VDraw"
|
|
draw set 0, "LowSolidFill"
|
|
draw rect x*30,y*30 to x*30+29,y*30+29, "VDraw"
|
|
draw set "lowcolor", 0, 0, 0, "VDraw"
|
|
UpdatePattern(pattern())
|
|
refresh = refresh + 1
|
|
endif
|
|
endif
|
|
|
|
if(refresh = 15) then
|
|
draw flush "VDraw"
|
|
draw flush "VPattern"
|
|
draw set "lowcolor", 0, 0, 0, "VDraw"
|
|
for i = 0 to 7
|
|
for j = 0 to 7
|
|
if(pattern(i,j)) then
|
|
draw set 0, "LowSolidFill"
|
|
draw rect i*30,j*30 to i*30+29,j*30+29, "VDraw"
|
|
draw set 0, "HighSolidFill"
|
|
endif
|
|
next j
|
|
next i
|
|
UpdatePattern(pattern())
|
|
refresh = 0
|
|
endif
|
|
|
|
return
|
|
end sub
|
|
|
|
// get pattern string (PatternEditor)
|
|
sub CalcPatternInsert$(pattern())
|
|
local i, j
|
|
local t$, p$
|
|
|
|
p$ = "\""
|
|
for i = 0 to 7
|
|
t$ = ""
|
|
for j = 0 to 7
|
|
t$ = t$ + str$(1-pattern(j,i))
|
|
next j
|
|
t = dec(t$,2)
|
|
if(t<100) p$ = p$ + "0"
|
|
if(t<10) p$ = p$ + "0"
|
|
p$ = p$ + str$(t)
|
|
next i
|
|
p$ = p$ + "\""
|
|
return p$
|
|
end sub
|
|
|
|
// get mouse stuff (PatternEditor)
|
|
sub GetMouseData(view$,maxx, maxy)
|
|
local n
|
|
local mouse$(1)
|
|
|
|
mousemsg$ = mouse message$(view$)
|
|
n = split(mousemsg$, mouse$(), ":")
|
|
mousex = val(mouse$(1))
|
|
mousey = val(mouse$(2))
|
|
mouselmb = val(mouse$(3))
|
|
mousemmb = val(mouse$(4))
|
|
mousermb = val(mouse$(5))
|
|
if(mousex<0) mousex = 0
|
|
if(mousey<0) mousey = 0
|
|
if(mousex>maxx) mousex = maxx
|
|
if(mousey>maxy) mousey = maxy
|
|
|
|
return
|
|
end sub
|
|
|
|
// update pattern (PatternEditor)
|
|
sub UpdatePattern(pattern())
|
|
local i, j
|
|
local t$, p$
|
|
|
|
for i = 0 to 7
|
|
t$ = ""
|
|
for j = 0 to 7
|
|
t$ = t$ + str$(1-pattern(j,i))
|
|
next j
|
|
t = dec(t$,2)
|
|
if(t<100) p$ = p$ + "0"
|
|
if(t<10) p$ = p$ + "0"
|
|
p$ = p$ + str$(t)
|
|
next i
|
|
draw flush "VPattern"
|
|
draw set 0, p$
|
|
draw rect 0,0 to 80,80, "VPattern"
|
|
draw set 0, "HighSolidFill"
|
|
return
|
|
end sub
|
|
|
|
// Open the color selection window
|
|
sub OpenColorSelection(x,y,r,g,b)
|
|
local i, j, w, n, num
|
|
local tmp$, msg$(1), col$(1)
|
|
local inloop
|
|
|
|
window open x,y to x+366,y+270, "ColorSelect", "yab-IDE Color selection"
|
|
window set "ColorSelect", "Feel", "Modal-App"
|
|
window set "ColorSelect", "Flags", "not-zoomable, not-h-resizable, not-v-resizable"
|
|
|
|
Header("Color selection", "ColorSelect", 366)
|
|
|
|
draw set "highcolor", 239,239,239, "ColorSelect"
|
|
draw line 0,233 to 366,233, "ColorSelect"
|
|
draw line 71,55 to 71,116, "ColorSelect"
|
|
draw line 10,116 to 71,116, "ColorSelect"
|
|
draw set "highcolor", 185,185,185, "ColorSelect"
|
|
draw line 0,232 to 366,232, "ColorSelect"
|
|
draw line 9,54 to 9,115, "ColorSelect"
|
|
draw line 9,54 to 70,54, "ColorSelect"
|
|
|
|
view 10,55 to 70,115, "ColorSelectRect", "ColorSelect"
|
|
draw set "highcolor", r,g,b, "ColorSelectRect"
|
|
draw rect 0,0 to 60,60, "ColorSelectRect"
|
|
colorcontrol 80,59, "ColorControl", "ColorSelect"
|
|
colorcontrol set "ColorControl", r,g,b
|
|
|
|
draw set "highcolor", 0,0,0, "ColorSelect"
|
|
draw text 10,140, "Default Colors:", "ColorSelect"
|
|
draw set 1, "HighSolidFill"
|
|
for i = 45 to 305 step 30
|
|
for j=155 to 186 step 30
|
|
draw set 1, "HighSolidFill"
|
|
draw rect i,j to i+30,j+30, "ColorSelect"
|
|
draw set 0, "HighSolidFill"
|
|
tmp$ = str$((j-125)/30)+str$((i-15)/30)
|
|
view i+1,j+1 to i+29,j+29, "Color"+tmp$, "ColorSelect"
|
|
switch tmp$
|
|
case "11"
|
|
draw set "bgcolor", 0,0,0, "Color11"
|
|
tooltip "Color11", "Black"
|
|
break
|
|
case "12"
|
|
draw set "bgcolor", 96,96,96, "Color12"
|
|
tooltip "Color12", "Darken 4"
|
|
break
|
|
case "13"
|
|
draw set "bgcolor", 128,128,128, "Color13"
|
|
tooltip "Color13", "Darken 3"
|
|
break
|
|
case "14"
|
|
draw set "bgcolor", 152,152,152, "Color14"
|
|
tooltip "Color14", "Darken 2"
|
|
break
|
|
case "15"
|
|
draw set "bgcolor", 184,184,184, "Color15"
|
|
tooltip "Color15", "Darken 1"
|
|
break
|
|
case "16"
|
|
draw set "bgcolor", 216,216,216, "Color16"
|
|
tooltip "Color16", "Default Background"
|
|
break
|
|
case "17"
|
|
draw set "bgcolor", 232,232,232, "Color17"
|
|
tooltip "Color17", "Lighten 1"
|
|
break
|
|
case "18"
|
|
draw set "bgcolor", 240,240,240, "Color18"
|
|
tooltip "Color18", "Lighten 2"
|
|
break
|
|
case "19"
|
|
draw set "bgcolor", 255,255,255, "Color19"
|
|
tooltip "Color19", "White"
|
|
break
|
|
case "21"
|
|
draw set "bgcolor", 255,0,0, "Color21"
|
|
tooltip "Color21", "Red"
|
|
break
|
|
case "22"
|
|
draw set "bgcolor", 192,128,0, "Color22"
|
|
tooltip "Color22", "Brown"
|
|
break
|
|
case "23"
|
|
draw set "bgcolor", 255,255,0, "Color23"
|
|
tooltip "Color23", "Yellow"
|
|
break
|
|
case "24"
|
|
draw set "bgcolor", 0,255,0, "Color24"
|
|
tooltip "Color24", "Green"
|
|
break
|
|
case "25"
|
|
draw set "bgcolor", 0,255,255, "Color25"
|
|
tooltip "Color25", "Cyan"
|
|
break
|
|
case "26"
|
|
draw set "bgcolor", 128,192,255, "Color26"
|
|
tooltip "Color26", "Light Blue"
|
|
break
|
|
case "27"
|
|
draw set "bgcolor", 0,0,255, "Color27"
|
|
tooltip "Color27", "Blue"
|
|
break
|
|
case "28"
|
|
draw set "bgcolor", 255,0,255, "Color28"
|
|
tooltip "Color28", "Magenta"
|
|
break
|
|
case "29"
|
|
draw set "bgcolor", 192,128,255, "Color29"
|
|
tooltip "Color29", "Light Magenta"
|
|
break
|
|
end switch
|
|
next j
|
|
next i
|
|
|
|
draw set 0, "HighSolidFill"
|
|
|
|
button 256,240 to 356,260, "ColorSelectInsert", "Insert Color", "ColorSelect"
|
|
|
|
inloop = true
|
|
while(inloop)
|
|
ColorSelectMouse()
|
|
n = token(message$, msg$(), "|")
|
|
for i = 1 to n
|
|
if(left$(msg$(i),13) = "ColorControl:") then
|
|
tmp$ = right$(msg$(i), len(msg$(i))-13)
|
|
dim col$(3)
|
|
num = token(tmp$, col$(), ":")
|
|
if(num = 3) then
|
|
draw flush "ColorSelectRect"
|
|
draw set "highcolor", val(col$(1)), val(col$(2)), val(col$(3)), "ColorSelectRect"
|
|
draw rect 0,0 to 60,60, "ColorSelectRect"
|
|
endif
|
|
endif
|
|
switch(msg$(i))
|
|
case "ColorSelectInsert"
|
|
textedit add "Text"+str$(globalCurrentText), ColorSelectInsert$()
|
|
break
|
|
case "ColorSelect:_QuitRequested"
|
|
settingsColorSelectX = window get "ColorSelect", "Position-X"
|
|
settingsColorSelectY = window get "ColorSelect", "Position-Y"
|
|
settingsColorSelectR = colorcontrol get "ColorControl", "red"
|
|
settingsColorSelectG = colorcontrol get "ColorControl", "green"
|
|
settingsColorSelectB = colorcontrol get "ColorControl", "blue"
|
|
window close "ColorSelect"
|
|
inloop = false
|
|
break
|
|
case "_QuitRequested"
|
|
//emergency break
|
|
exit(1)
|
|
break
|
|
end switch
|
|
next i
|
|
wend
|
|
return
|
|
end sub
|
|
|
|
// get the color string (ColorSelect)
|
|
sub ColorSelectInsert$()
|
|
local r, g, b
|
|
|
|
r = colorcontrol get "ColorControl", "red"
|
|
g = colorcontrol get "ColorControl", "green"
|
|
b = colorcontrol get "ColorControl", "blue"
|
|
|
|
return " "+str$(r)+", "+str$(g)+", "+str$(b)
|
|
end sub
|
|
|
|
// check mouse in ColorSelect
|
|
sub ColorSelectMouse()
|
|
local i, j
|
|
local tmp$
|
|
|
|
for i = 1 to 9
|
|
for j = 1 to 2
|
|
tmp$ = "Color"+str$(j)+str$(i)
|
|
if(ismousein(tmp$) and IsButtonPressed(tmp$)) then
|
|
switch tmp$
|
|
case "Color11"
|
|
SetColor(0,0,0)
|
|
break
|
|
case "Color12"
|
|
SetColor(96,96,96)
|
|
break
|
|
case "Color13"
|
|
SetColor(128,128,128)
|
|
break
|
|
case "Color14"
|
|
SetColor(152,152,152)
|
|
break
|
|
case "Color15"
|
|
SetColor(184,184,184)
|
|
break
|
|
case "Color16"
|
|
SetColor(216,216,216)
|
|
break
|
|
case "Color17"
|
|
SetColor(232,232,232)
|
|
break
|
|
case "Color18"
|
|
SetColor(240,240,240)
|
|
break
|
|
case "Color19"
|
|
SetColor(255,255,255)
|
|
break
|
|
case "Color21"
|
|
SetColor(255,0,0)
|
|
break
|
|
case "Color22"
|
|
SetColor(192,128,0)
|
|
break
|
|
case "Color23"
|
|
SetColor(255,255,0)
|
|
break
|
|
case "Color24"
|
|
SetColor(0,255,0)
|
|
break
|
|
case "Color25"
|
|
SetColor(0,255,255)
|
|
break
|
|
case "Color26"
|
|
SetColor(128,192,255)
|
|
break
|
|
case "Color27"
|
|
SetColor(0,0,255)
|
|
break
|
|
case "Color28"
|
|
SetColor(255,0,255)
|
|
break
|
|
case "Color29"
|
|
SetColor(192,128,255)
|
|
break
|
|
end switch
|
|
endif
|
|
next j
|
|
next i
|
|
end sub
|
|
|
|
// check for pressed mouse button (ColorSelect)
|
|
sub IsButtonPressed(view$)
|
|
local n, t
|
|
local mouselmb
|
|
|
|
t = false
|
|
dim mouse$(1)
|
|
repeat
|
|
mousemsg$ = mouse message$(view$)
|
|
n = split(mousemsg$, mouse$(), ":")
|
|
mouselmb = val(mouse$(3))
|
|
if(mouselmb) t = true
|
|
if(not ismousein(view$)) then
|
|
t = false
|
|
mouselmb = 0
|
|
endif
|
|
until (mouselmb = 0)
|
|
return t
|
|
end sub
|
|
|
|
// set a color to RGB (ColorSelect)
|
|
sub SetColor(r,g,b)
|
|
colorcontrol set "ColorControl", r,g,b
|
|
draw flush "ColorSelectRect"
|
|
draw set "highcolor", r,g,b, "ColorSelectRect"
|
|
draw rect 0,0 to 60,60, "ColorSelectRect"
|
|
return
|
|
end sub
|
|
|
|
// beautify the code by reformating it
|
|
sub ReformatSource$(code$)
|
|
local tablevel, num, i, j, k
|
|
local tmp$, returnSource$
|
|
local hasThen, isInTicks, firstcase
|
|
|
|
dim beginCommand$(12)
|
|
dim endCommand$(15)
|
|
|
|
beginCommand$(1) = "if"
|
|
beginCommand$(2) = "switch"
|
|
beginCommand$(3) = "for"
|
|
beginCommand$(4) = "while"
|
|
beginCommand$(5) = "do"
|
|
beginCommand$(6) = "repeat"
|
|
beginCommand$(7) = "case"
|
|
beginCommand$(8) = "default"
|
|
beginCommand$(9) = "else"
|
|
beginCommand$(10) = "elsif"
|
|
beginCommand$(11) = "sub"
|
|
beginCommand$(12) = "export"
|
|
|
|
endCommand$(1) = "end if"
|
|
endCommand$(2) = "end-if"
|
|
endCommand$(3) = "endif"
|
|
endCommand$(4) = "fi"
|
|
endCommand$(5) = "end switch"
|
|
endCommand$(6) = "end-switch"
|
|
endCommand$(7) = "next"
|
|
endCommand$(8) = "wend"
|
|
endCommand$(9) = "loop"
|
|
endCommand$(10) = "until"
|
|
endCommand$(11) = "else"
|
|
endCommand$(12) = "elsif"
|
|
endCommand$(13) = "end sub"
|
|
endCommand$(14) = "case"
|
|
endCommand$(15) = "default"
|
|
|
|
dim reformat$(1)
|
|
tablevel = 0
|
|
firstcase = 0
|
|
num = split(code$, reformat$(), "\n")
|
|
|
|
for i=1 to num
|
|
tmp$ = ltrim$(lower$(reformat$(i)))
|
|
for j=1 to 15
|
|
if(left$(tmp$, len(endCommand$(j))) = endCommand$(j) and (len(tmp$) = len(endCommand$(j)) or instr(" \n\t\f\v\r(:/", mid$(tmp$,len(endCommand$(j))+1,1)))) then
|
|
if(not firstcase) then
|
|
if(j = 5 or j = 6) tablevel = tablevel - 1
|
|
tablevel = tablevel - 1
|
|
// if(tablevel<0) tablevel = 0
|
|
endif
|
|
firstcase = 0
|
|
break
|
|
endif
|
|
next j
|
|
|
|
for j=1 to tablevel
|
|
returnSource$ = returnSource$ + "\t"
|
|
next j
|
|
|
|
for j=1 to 12
|
|
if(left$(tmp$, len(beginCommand$(j))) = beginCommand$(j) and (len(tmp$) = len(beginCommand$(j)) or instr(" \n\t\f\v\r(:/", mid$(tmp$,len(beginCommand$(j))+1,1)))) then
|
|
hasThen = true
|
|
if(beginCommand$(j) = "switch") then
|
|
firstcase = 1
|
|
elsif(beginCommand$(j) = "if") then
|
|
isInTicks = false
|
|
hasThen = false
|
|
for k=1 to len(tmp$)-3
|
|
if(mid$(tmp$,k,1)="\"" and mid$(tmp$,k-1,1)<>"\\") isInTicks = not isInTicks
|
|
if(not isInTicks and mid$(tmp$,k,4) = "then") then
|
|
hasThen = true
|
|
break
|
|
endif
|
|
next k
|
|
endif
|
|
if(hasThen) tablevel = tablevel + 1
|
|
break
|
|
endif
|
|
next j
|
|
returnSource$ = returnSource$ + ltrim$(reformat$(i))
|
|
if(i<num) returnSource$ = returnSource$ + "\n"
|
|
next i
|
|
|
|
ReformatError(true, tablevel)
|
|
|
|
return returnSource$
|
|
end sub
|
|
|
|
sub ReformatError(isSetting, ifSettingsThenError)
|
|
static tabbingError
|
|
|
|
if(isSetting) then
|
|
tabbingError = ifSettingsThenError
|
|
else
|
|
return tabbingError
|
|
endif
|
|
end sub
|
|
|
|
// Return true when the program named programName$ is running
|
|
// otherwise return false
|
|
sub IsProgramRunning(programName$)
|
|
local tmp$
|
|
|
|
tmp$ = system$("ps |grep '"+programName$+"'")
|
|
|
|
if(instr(tmp$, programName$) and not left$(tmp$,10) = "/bin/grep ") return true
|
|
return false
|
|
end sub
|
|
|
|
// Returns the team id of the program programName$;
|
|
// returns 0 when the program was not found
|
|
sub GetTeamID(programName$)
|
|
local tmp$
|
|
local ret
|
|
local t
|
|
|
|
ret = 0
|
|
tmp$ = system$("ps "+programName$+"|grep '"+programName$+"'")
|
|
t = instr(tmp$, programName$)
|
|
|
|
if(t>0 and left$(tmp$,10) <> "/bin/grep ") then
|
|
ret = val(mid$(tmp$, t+7+len(programName$), len(tmp$)-t-7-len(programName$)))
|
|
endif
|
|
|
|
return ret
|
|
end sub
|
|
|
|
// Send the kill signal to all members of the team of programName$
|
|
// Returns true when successful and false otherwise
|
|
sub KillTeam(programName$)
|
|
local ps$(1)
|
|
local found
|
|
local i, n
|
|
|
|
n = token(system$("ps "+programName$), ps$(), chr$(10))
|
|
found = false
|
|
|
|
while(i<=n)
|
|
if(instr(ps$(i), programName$)) then
|
|
found = true
|
|
i = i + 1
|
|
while(val(ps$(i))>0 and i<=n)
|
|
system("kill "+str$(val(ps$(i))))
|
|
i = i + 1
|
|
wend
|
|
endif
|
|
i = i + 1
|
|
wend
|
|
|
|
return found
|
|
end sub
|
|
|
|
// Load the syntax tree into the given tree box from the TreeFile$ file.
|
|
sub SyntaxLoadTree(TreeFile$, TreeBoxID$)
|
|
local info, level, handle, inloop
|
|
local tmp$
|
|
|
|
|
|
// Clear the treebox first
|
|
treebox clear TreeBoxID$
|
|
|
|
// count the number of info texts
|
|
info = 0
|
|
// three levels: toplevel, sublevel and info text level
|
|
level = 0
|
|
// read data from file return the file handle
|
|
handle = open (TreeFile$, "r")
|
|
if(not handle) return 0
|
|
|
|
// read the file
|
|
inloop = true
|
|
while(not eof(handle) and inloop)
|
|
tmp$ = GetLine$(handle)
|
|
// if it is not a comment...
|
|
if(not (left$(tmp$,1) = "&")) then
|
|
switch level
|
|
case 0 // toplevel
|
|
treebox add TreeBoxID$, tmp$
|
|
break
|
|
case 1 // sublevel
|
|
n = instr(tmp$, ":")
|
|
treebox add TreeBoxID$, left$(tmp$,n-1), right$(tmp$, len(tmp$)-n), 0
|
|
break
|
|
end switch
|
|
else
|
|
if(instr(tmp$, "toplevel")) level = 0
|
|
if(instr(tmp$, "sublevel")) level = 1
|
|
if(instr(tmp$, "infotext")) inloop = false
|
|
endif
|
|
wend
|
|
close handle
|
|
return 1
|
|
end sub
|
|
|
|
// Read the info text for Command$ from TreeFile$ with the index file IndexFile$.
|
|
sub SyntaxGetInfoText$(TreeFile$, IndexFile$, Command$)
|
|
local handle, position, inloop
|
|
local infotext$
|
|
|
|
// first read the seek position
|
|
inloop = true
|
|
handle = open (IndexFile$, "r")
|
|
if(not handle) return ""
|
|
|
|
while(not eof(handle) and inloop)
|
|
tmp$ = GetLine$(handle)
|
|
if(tmp$=Command$) then
|
|
if (not eof(handle)) then
|
|
tmp$ = GetLine$(handle)
|
|
position = val(tmp$)
|
|
endif
|
|
inloop = false
|
|
endif
|
|
wend
|
|
close handle
|
|
|
|
// a seek position is found; return the info text.
|
|
handle = open (TreeFile$, "r")
|
|
if(not handle) return ""
|
|
seek handle, position, "begin"
|
|
tmp$ = GetLine$(handle)
|
|
inloop = true
|
|
while(not eof(handle) and inloop)
|
|
tmp$ = GetLine$(handle)
|
|
if(left$(tmp$,1) = "&") then
|
|
inloop = false
|
|
else
|
|
infotext$ = infotext$ + tmp$ + chr$(10)
|
|
endif
|
|
wend
|
|
close handle
|
|
|
|
return infotext$
|
|
end sub
|
|
|
|
// Read a line from a file
|
|
sub GetLine$(handle)
|
|
local tmp$, retString$
|
|
|
|
while(tmp$<>chr$(10) and tmp$<>chr$(13) and not eof(handle))
|
|
tmp$ = chr$(peek(handle))
|
|
if(tmp$<>chr$(10) and tmp$<>chr$(13)) retString$ = retString$ + tmp$
|
|
wend
|
|
|
|
return retString$
|
|
end sub
|
|
|
|
// Open ASCII table window
|
|
sub AsciiWindow()
|
|
local n, x, y
|
|
|
|
window open 200,100 to 600,515, "AsciiView", "yab-IDE ASCII table"
|
|
window set "AsciiView", "flags", "Not-Zoomable, not-h-resizable, not-v-resizable"
|
|
|
|
Header("ASCII table", "AsciiView", 400)
|
|
|
|
draw set "highcolor", 239,239,239, "AsciiView"
|
|
draw line 6,405 to 395,405, "AsciiView"
|
|
draw line 395,51 to 395,405, "AsciiView"
|
|
draw set "highcolor", 185,185,185, "AsciiView"
|
|
draw line 5,50 to 394,50, "AsciiView"
|
|
draw line 5,50 to 5,404, "AsciiView"
|
|
draw set "highcolor", 255,255,255, "AsciiView"
|
|
draw rect 6,51 to 394,404, "AsciiView"
|
|
draw set "highcolor", 0,0,0, "AsciiView"
|
|
|
|
x = 10
|
|
y = 65
|
|
for n = 32 TO 126
|
|
draw text x,y, str$(n)+chr$(32)+chr$(n), "AsciiView"
|
|
x = x+50
|
|
if x >= 365 then
|
|
x = 10
|
|
y = y+30
|
|
end if
|
|
next n
|
|
|
|
while(not instr(message$, "Quit"))
|
|
wend
|
|
window close "AsciiView"
|
|
return
|
|
end sub
|
|
|
|
// set the run parameters
|
|
sub SetRunParameters()
|
|
local tmp$
|
|
local inloop
|
|
|
|
window open 200,100 to 500,215, "RunParam", "yab-IDE Set run parameters"
|
|
window set "RunParam", "flags", "Not-Zoomable, not-h-resizable, not-v-resizable"
|
|
|
|
Header("Set run parameters", "RunParam", 300)
|
|
|
|
textcontrol 10,50 to 290,70, "RunParamYab", "yab Parameters:", settingsYabParam$, "RunParam"
|
|
textcontrol 10,80 to 290,110, "RunParamProg", "Program Parameters:", settingsProgParam$, "RunParam"
|
|
|
|
inloop = true
|
|
while(inloop)
|
|
if(instr(message$, "Quit")) then
|
|
settingsYabParam$ = textcontrol get$ "RunParamYab"
|
|
settingsProgParam$ = textcontrol get$ "RunParamProg"
|
|
inloop = false
|
|
endif
|
|
wend
|
|
|
|
window close "RunParam"
|
|
return
|
|
end sub
|
|
|
|
// load settings on start-up
|
|
sub LoadSettings()
|
|
local handle, i, j
|
|
local tmp$
|
|
|
|
handle = open(globalConfigDir$+"ide-settings", "r")
|
|
if(not handle) return 1
|
|
|
|
while(not eof(handle))
|
|
line input #handle tmp$
|
|
if(left$(tmp$, 1)<>"#") then
|
|
i = i + 1
|
|
switch(i)
|
|
case 1: settingsYabDir$ = tmp$: break
|
|
case 2: globalProjectDir$ = tmp$: break
|
|
case 3: yabDir$ = tmp$: break
|
|
case 4: ideDir$ = tmp$: break
|
|
case 5: buildDir$ = tmp$: break
|
|
case 6: globalHelpDir$ = tmp$: break
|
|
case 7: settingsLangUse = val(tmp$): break
|
|
case 8: settingsLangPath$ = tmp$: break
|
|
case 9: settingsAutoIndent = val(tmp$): break
|
|
case 10: settingsAutoCompletion = val(tmp$): break
|
|
case 11: settingsACNumChar = val(tmp$): break
|
|
case 12: settingsX = val(tmp$): break
|
|
case 13: settingsY = val(tmp$): break
|
|
case 14: settingsWidth = val(tmp$): break
|
|
case 15: settingsHeight = val(tmp$): break
|
|
case 16: settingsFullScreen = val(tmp$): break
|
|
case 17: settingsFullEditor = val(tmp$): break
|
|
case 18: settingsVSplitDivider = val(tmp$): break
|
|
case 19: settingsV2SplitDivider = val(tmp$): break
|
|
case 20: settingsHSplitDivider = val(tmp$): break
|
|
case 21: settingsCalcPatternX = val(tmp$): break
|
|
case 22: settingsCalcPatternY = val(tmp$): break
|
|
case 23: settingsColorSelectX = val(tmp$): break
|
|
case 24: settingsColorSelectY = val(tmp$): break
|
|
case 25: settingsColorSelectR = val(tmp$): break
|
|
case 26: settingsColorSelectG = val(tmp$): break
|
|
case 27: settingsColorSelectB = val(tmp$): break
|
|
case 28: settingsAskForSaving = val(tmp$): break
|
|
case 29: settingsFindCS = val(tmp$): break
|
|
case 30: settingsOldSearch$ = tmp$: break
|
|
case 31: settingsFindAlert = val(tmp$): break
|
|
case 32: settingsReformatAlert = val(tmp$): break
|
|
case 33: settingsReformatUndoAlert = val(tmp$): break
|
|
case 34: settingsTabSpaces = val(tmp$): break
|
|
case 35: break
|
|
case 36: settingsFontFamily$ = tmp$: break
|
|
case 37: settingsFontStyle$ = tmp$: break
|
|
case 38: settingsFontSize = val(tmp$): break
|
|
case 39: globalRealFontSize = val(tmp$): break
|
|
case 40: DEBUG = val(tmp$): break
|
|
case 41: MAXFILES = val(tmp$): break
|
|
case 42: settingsYabParam$ = tmp$: break
|
|
case 43: settingsProgParam$ = tmp$: break
|
|
end switch
|
|
endif
|
|
wend
|
|
close(handle)
|
|
|
|
dim globalAllNames$(MAXFILES)
|
|
dim globalTextFinder(MAXFILES)
|
|
|
|
for j=1 to MAXFILES
|
|
globalAllNames$(j) = ""
|
|
globalTextFinder(j) = 0
|
|
next j
|
|
|
|
if(i = 43) return 0
|
|
return 1
|
|
end sub
|
|
|
|
// load last opened files on start-up
|
|
sub LoadOpenFiles()
|
|
local handle, mainhandle, j, t
|
|
local text$, t$
|
|
|
|
mainhandle = open(globalConfigDir$+"ide-openfiles", "r")
|
|
if(mainhandle) then
|
|
j = 1
|
|
while(not eof(mainhandle) and j<=MAXFILES)
|
|
globalAllNames$(j) = GetLine$(mainhandle)
|
|
handle = open(globalAllNames$(j), "r")
|
|
if(handle) then
|
|
WaitWindow(globalAllNames$(j))
|
|
text$ = ""
|
|
while(not eof(handle))
|
|
t$ = GetLine$(handle)+"\n"
|
|
if(len(t$)*8>4000) textedit set "Text"+str$(j), "textwidth", len(t$)*8+8
|
|
text$ = text$ + t$
|
|
wend
|
|
close(handle)
|
|
globalCurrentText = j
|
|
textedit add "Text"+str$(globalCurrentText), text$
|
|
textedit set "Text"+str$(globalCurrentText), "changed", false
|
|
textedit set "Text"+str$(globalCurrentText), "gotoline", ReadLineFromAttr(globalAllNames$(j))
|
|
stackview set "Stack", globalCurrentText
|
|
stackview set "Lines", globalCurrentText
|
|
t = columnbox count "FileBox"
|
|
columnbox add "FileBox", 1, t+1,20, "__Icon__="+ideDir$+"img/gespeichert.png"
|
|
columnbox add "FileBox", 2, t+1,20, GetFileName$(globalAllNames$(j)) // "Filename", t, GetFileName$(tmp$)
|
|
columnbox select "FileBox", t+1
|
|
globalTextFinder(globalCurrentText) = t+1
|
|
option set "Text"+str$(globalCurrentText), "focus", true
|
|
oldScroll = -1
|
|
globalNumOpenFiles = globalNumOpenFiles + 1
|
|
if(globalNumOpenFiles = 1) then
|
|
ActivateMenus(true)
|
|
splitview set "V2Split", "Divider", settingsV2SplitDivider
|
|
endif
|
|
window close "WaitWindow"
|
|
else
|
|
globalAllNames$(j) = ""
|
|
endif
|
|
j = j + 1
|
|
wend
|
|
close(mainhandle)
|
|
endif
|
|
|
|
return
|
|
end sub
|
|
|
|
// Export as HTML
|
|
sub ExportAsHTML()
|
|
local browse$
|
|
|
|
browse$ = filepanel "Save-File", "Export as HTML", globalProjectDir$
|
|
if(browse$<>"") then
|
|
|
|
handle = open(browse$, "w")
|
|
if(handle) then
|
|
print #handle "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">"
|
|
print #handle "<html>"
|
|
print #handle " <head>"
|
|
print #handle " <title>" + GetFileName$(globalAllNames$(globalCurrentText)) + "</title>"
|
|
print #handle " <meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">"
|
|
print #handle " <meta name=\"generator\" content=\"yab-IDE\">"
|
|
print #handle " </head>"
|
|
print #handle " <body>"
|
|
print #handle " <pre>"
|
|
print #handle textedit get$ "Text"+str$(globalCurrentText);
|
|
print #handle " </pre>"
|
|
print #handle " </body>"
|
|
print #handle "</html>"
|
|
close(handle)
|
|
else
|
|
alert "File could not be saved!", "Ok", "warning"
|
|
return false
|
|
endif
|
|
endif
|
|
end sub
|
|
|
|
// Save all settings before exiting
|
|
sub SaveSettings()
|
|
local handle, i
|
|
|
|
if(system("test -d "+globalConfigDir$) = 1) then
|
|
system("mkdir "+left$(globalConfigDir$, len(globalConfigDir$)-1))
|
|
endif
|
|
|
|
handle = open(globalConfigDir$+"ide-settings", "w")
|
|
if(handle) then
|
|
print #handle "# yab IDE 2.2 config file"
|
|
print #handle "# "
|
|
print #handle "# Comments start with a # as first character on a line"
|
|
print #handle "# Only change this file when you know what you are doing!"
|
|
print #handle "# Do not change the order of the lines in this file!"
|
|
print #handle "# "
|
|
print #handle "# yab directory (ends on /)"
|
|
print #handle settingsYabDir$
|
|
print #handle "# Program directory (ends on /)"
|
|
print #handle globalProjectDir$
|
|
print #handle "# yab binary location"
|
|
print #handle yabDir$
|
|
print #handle "# IDE directory (ends on /)"
|
|
print #handle ideDir$
|
|
print #handle "# BuildFactory directory (ends on /)"
|
|
print #handle buildDir$
|
|
print #handle "# Help directory (ends on /)"
|
|
print #handle globalHelpDir$
|
|
print #handle "# Use localization (0 = false, 1 = true)"
|
|
print #handle restartSettingsLangUse
|
|
print #handle "# localization mimetype"
|
|
print #handle settingsLangPath$
|
|
print #handle "# Auto indent (0 = false, 1 = true)"
|
|
print #handle settingsAutoIndent
|
|
print #handle "# Auto completion (0 = false, 1 = true)"
|
|
print #handle settingsAutoCompletion
|
|
print #handle "# Auto completion starts at character count:"
|
|
print #handle settingsACNumChar
|
|
print #handle "# X-coordinates of main window"
|
|
print #handle settingsX
|
|
print #handle "# Y-coordinates of main window"
|
|
print #handle settingsY
|
|
print #handle "# Width of main window"
|
|
print #handle settingsWidth
|
|
print #handle "# Height of main window"
|
|
print #handle settingsHeight
|
|
print #handle "# Start in fullscreen (0 = false, 1 = true)"
|
|
print #handle settingsFullScreen
|
|
print #handle "# Start in maximized editor (0 = false, 1 = true)"
|
|
print #handle settingsFullEditor
|
|
print #handle "# Position of main vertical divider"
|
|
print #handle settingsVSplitDivider
|
|
print #handle "# Position of the vertical divider for the line numbers"
|
|
print #handle settingsV2SplitDivider
|
|
print #handle "# Position of main horizontal divider"
|
|
print #handle settingsHSplitDivider
|
|
print #handle "# X-coordinate of the pattern editor window"
|
|
print #handle settingsCalcPatternX
|
|
print #handle "# Y-coordinate of the pattern editor window"
|
|
print #handle settingsCalcPatternY
|
|
print #handle "# X-coordinate of the color selection window"
|
|
print #handle settingsColorSelectX
|
|
print #handle "# Y-coordinate of the color selection window"
|
|
print #handle settingsColorSelectY
|
|
print #handle "# Red value for last selected color in color selection window"
|
|
print #handle settingsColorSelectR
|
|
print #handle "# Green value for last selected color in color selection window"
|
|
print #handle settingsColorSelectG
|
|
print #handle "# Blue value for last selected color in color selection window"
|
|
print #handle settingsColorSelectB
|
|
print #handle "# Ask for saving before running a program (0 = false, 1 = true)"
|
|
print #handle settingsAskForSaving
|
|
print #handle "# Is \"find\" case sensitive? (0 = false, 1 = true)"
|
|
print #handle settingsFindCS
|
|
print #handle "# Last search string"
|
|
print #handle settingsOldSearch$
|
|
print #handle "# Show warning before applying Replace All (0 = false, 1 = true)"
|
|
print #handle settingsFindAlert
|
|
print #handle "# Show warning when reformating sourcecode did not close all loops and conditions (0 = false, 1 = true)"
|
|
print #handle settingsReformatAlert
|
|
print #handle "# Show warning before undo reformating (0 = false, 1 = true)"
|
|
print #handle settingsReformatUndoAlert
|
|
print #handle "# Number of spaces per tab"
|
|
print #handle settingsTabSpaces
|
|
print #handle "# Unused field (was: use Haiku tabs on ZETA)."
|
|
print #handle 0
|
|
print #handle "# Font family name"
|
|
print #handle settingsFontFamily$
|
|
print #handle "# Font style"
|
|
print #handle settingsFontStyle$
|
|
print #handle "# Font size"
|
|
print #handle settingsFontSize
|
|
print #handle "# Real font size"
|
|
print #handle globalRealFontSize
|
|
print #handle "# Print out IDE debug information (0 = false, 1 = true)"
|
|
print #handle DEBUG
|
|
print #handle "# Maximum number of files the IDE can handle"
|
|
print #handle MAXFILES
|
|
print #handle "# yab runtime parameters (default is empty)"
|
|
print #handle settingsYabParam$
|
|
print #handle "# Program runtime parameters (default is empty)"
|
|
print #handle settingsProgParam$
|
|
|
|
close(handle)
|
|
endif
|
|
|
|
handle = open(globalConfigDir$+"ide-openfiles", "w")
|
|
if(handle) then
|
|
for i=1 to MAXFILES
|
|
if(globalAllNames$(i)<>"") print #handle globalAllNames$(i)
|
|
next i
|
|
close(handle)
|
|
endif
|
|
return
|
|
end sub
|
|
|
|
sub path()
|
|
if (!peek("isbound")) then
|
|
path$=system$("ps")
|
|
x=instr(path$,"/yab-IDE.yab")
|
|
path$=left$(path$,x)
|
|
for x=len(path$)-1 to 1 step -1
|
|
if (instr(path$," ",x) and catch=0) catch=x+1
|
|
next
|
|
path$=right$(path$,len(path$)-catch)
|
|
path$=trim$(path$)
|
|
path$="/"+path$
|
|
else
|
|
path$=trim$(peek$("directory") )
|
|
path$=path$+"/"
|
|
end if
|
|
|
|
end sub
|
|
|
|
|
|
sub yabpath$()
|
|
|
|
if system("test -e /boot/home/config/non-packaged/bin/yab") = 0 then
|
|
return "/boot/home/config/non-packaged/bin/yab"
|
|
elseif system("test -e /boot/home/config/bin/yab") = 0 then
|
|
return "/boot/home/config/bin/yab"
|
|
elseif system("test -e /boot/system/bin/yab") = 0 then
|
|
return "/boot/system/bin/yab"
|
|
|
|
endif
|
|
|
|
local cmd$
|
|
cmd$="test -e "+settingsYabDir$
|
|
if system(cmd$)=0 then
|
|
return settingsYabDir$
|
|
endif
|
|
|
|
return "error"
|
|
end sub
|
|
|
|
sub set_up_BuildFactory()
|
|
local DataDir$
|
|
|
|
local handel
|
|
local ddir$
|
|
|
|
DataDir$=trim$(system$("finddir B_USER_DIRECTORY"))
|
|
|
|
|
|
|
|
|
|
x=system("mkdir "+DataDir$+"/yab_work")
|
|
system("mkdir ~/config/settings/yab")
|
|
y=system("ls "+DataDir$+"/yab_work/BuildFactory")
|
|
y=y+system("ls "+DataDir$+"/yab_work/Programs")
|
|
if x=0 or y>0 then
|
|
system("cp -ur "+ideDir$+"/BuildFactory "+DataDir$+"/yab_work")
|
|
system("cp -ur "+ideDir$+"Programs "+DataDir$+"/yab_work")
|
|
system ("cp -ur "+ideDir$+"img "+DataDir$+"/yab_work/Programs")
|
|
system("cp -ur "+ideDir$+"Programs/libs/* /boot/home/config/settings/yab")
|
|
|
|
|
|
handle=open(DataDir$+"/yab_work/BuildFactory/srcfiles","r")
|
|
|
|
|
|
while(not eof(#handle))
|
|
input #handle a$
|
|
system("cp -u "+ideDir$+"/src/"+a$+" "+DataDir$+"/yab_work/BuildFactory/"+a$)
|
|
end while
|
|
close handle
|
|
|
|
system("cp -ur "+ideDir$+"/src/column "+DataDir$+"/yab_work/BuildFactory")
|
|
end if
|
|
|
|
x=1
|
|
open #1, ideDir$+"/src/YabMain.cpp","r"
|
|
open #2, DataDir$+"/yab_work/BuildFactory/parts/YabMain.cpp.end","w"
|
|
|
|
while(not eof(#1))
|
|
line input #1 a$
|
|
if x>9 then
|
|
print #2 a$
|
|
end if
|
|
x=x+1
|
|
wend
|
|
close #1
|
|
close #2
|
|
|
|
end sub
|
|
|
|
|
|
|
|
|
|
sub changestring()
|
|
|
|
TextLine$ = TEXTEDIT GET$"Text"+str$(globalCurrentText), searchLineNum
|
|
TextLine$=rtrim$(TextLine$ )
|
|
FindPart$=textcontrol get$ "FindTCFind"
|
|
FindPart$=trim$(FindPart$)
|
|
if(settingsFindCS) then
|
|
x=instr(TextLine$, FindPart$)
|
|
else
|
|
x=instr(upper$(TextLine$), upper$(FindPart$))
|
|
|
|
endif
|
|
if x>0 then
|
|
x=x-1
|
|
TextPart$= textcontrol get$ "FindTCReplace"
|
|
TextPart$=rtrim$(TextPart$)
|
|
TextLine$=left$(TextLine$,x)+TextPart$+right$(TextLine$,len(TextLine$)-(x+(len(FindPart$))))
|
|
TEXTEDIT SET "Text"+str$(globalCurrentText), "select", searchLineNum
|
|
TEXTEDIT SET "Text"+str$(globalCurrentText), "cut"
|
|
TEXTEDIT SET "Text"+str$(globalCurrentText), "select", searchLineNum
|
|
TEXTEDIT ADD "Text"+str$(globalCurrentText), TextLine$
|
|
TEXTEDIT SET "Text"+str$(globalCurrentText), "gotoline", searchLineNum
|
|
searchLineNum = textedit get "Text"+str$(globalCurrentText), "Find", TextPart$
|
|
|
|
endif
|
|
|
|
end sub
|