Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 9673 → Rev 9674

/programs/develop/cedit/SRC/CEdit.ob07
24,11 → 24,11
U := Utils, Lines, Menu, List,
G := Graph, T := Text, E := Encodings,
CB := Clipboard, Languages,
ChangeLog, Scroll, CheckBox,
ChangeLog, Scroll, CheckBox, KOSAPI, SYSTEM,
RW, Ini, EB := EditBox, Tabs, Toolbar, SB := StatusBar;
 
CONST
HEADER = "CEdit (26-jan-2022)";
HEADER = "CEdit (28-jan-2022)";
 
ShellFilter = "";
EditFilter = "SH|INC|TXT|ASM|OB07|C|CPP|H|PAS|PP|LUA|INI|JSON";
119,6 → 119,7
menuRunScript = 53;
menuDebug = 54;
menuDebugScript = 55;
menuFASM = 56;
 
menuUTF8BOM = 60;
menuUTF8 = 61;
125,6 → 126,8
menuCP866 = 62;
menuWin1251 = 63;
menuEOL = 140;
menuConv1251_866 = 64;
menuConv866_1251 = 65;
 
menuPipet = 70;
menuMagnify = 71;
413,8 → 416,8
Toolbar.enable(toolbar, btnRedo, ~ChangeLog.isLastGuard(text.edition));
Toolbar.enable(toolbar, btnUpper, T.selected(text));
Toolbar.enable(toolbar, btnLower, T.selected(text));
Toolbar.enable(toolbar, btnBuild, buildScript # "");
Toolbar.enable(toolbar, btnRun, runScript # "");
Toolbar.enable(toolbar, btnBuild, (buildScript # "") OR text.fasm);
Toolbar.enable(toolbar, btnRun, (runScript # "") OR text.fasm);
Toolbar.drawIcons(toolbar)
END
END repaint;
795,7 → 798,7
IF fileName # "" THEN
n := getFileNum(fileName);
IF n = -1 THEN
nov := T.open(fileName, err);
nov := T.open(fileName, 0, 0, err);
IF nov = NIL THEN
error("error opening file");
SwitchTab(curText);
1060,9 → 1063,13
Menu.option(menu, menuOberon, text.lang = Languages.langOberon);
Menu.option(menu, menuPascal, text.lang = Languages.langPascal);
ELSIF menu = menuProgram THEN
Menu.setEnabled(menu, menuBuild, buildScript # "");
Menu.setEnabled(menu, menuDebug, debugScript # "");
Menu.setEnabled(menu, menuRun, runScript # "")
Menu.setEnabled(menu, menuBuild, (buildScript # "") OR text.fasm);
Menu.setEnabled(menu, menuDebug, (debugScript # "") OR text.fasm);
Menu.setEnabled(menu, menuRun, (runScript # "") OR text.fasm);
Menu.setEnabled(menu, menuBuildScript, ~text.fasm);
Menu.setEnabled(menu, menuDebugScript, ~text.fasm);
Menu.setEnabled(menu, menuRunScript, ~text.fasm);
Menu.check(menu, menuFASM, text.fasm)
ELSIF menu = menuOptions THEN
Menu.check(menu, menuLineNumbers, T.lineNumbers);
Menu.check(menu, menuAutoIndents, T.autoIndents);
1106,6 → 1113,64
END setScript;
 
 
PROCEDURE FasmCompile (run, debug: BOOLEAN);
VAR
curFileName, ext, outfile, path, param: RW.tFileName;
BEGIN
curFileName := texts[curText].fileName;
U.getFileName(curFileName, param, U.SLASH);
U.getFileName(curFileName, ext, ".");
U.getPath(curFileName, path);
outfile := param;
IF (ext # "") & ((LENGTH(ext) + 1) < LENGTH(outfile)) THEN
outfile[LENGTH(outfile) - LENGTH(ext) - 1] := 0X
ELSE
U.append8(outfile, ".kex")
END;
U.append8(param, ",");
U.append8(param, outfile);
U.append8(param, ",");
U.append8(param, path);
U.append8(param, U.SLASH);
IF run THEN
U.append8(param, ",run")
ELSIF debug THEN
U.append8(param, ",dbg")
END;
K.Run("/sys/develop/fasm", param)
END FasmCompile;
 
 
PROCEDURE ProgramBuild;
BEGIN
IF ~text.fasm THEN
Script(buildScript)
ELSE
FasmCompile(FALSE, FALSE)
END
END ProgramBuild;
 
 
PROCEDURE ProgramRun;
BEGIN
IF ~text.fasm THEN
Script(runScript)
ELSE
FasmCompile(TRUE, FALSE)
END
END ProgramRun;
 
 
PROCEDURE ProgramDebug;
BEGIN
IF ~text.fasm THEN
Script(debugScript)
ELSE
FasmCompile(FALSE, TRUE)
END
END ProgramDebug;
 
 
PROCEDURE ClickMenu;
VAR
item: List.tItem;
1187,17 → 1252,19
|menuPascal:
T.setLang(text, Languages.langPascal)
|menuBuild:
Script(buildScript)
ProgramBuild
|menuBuildScript:
setScript(buildScript)
|menuRun:
Script(runScript)
ProgramRun
|menuRunScript:
setScript(runScript)
|menuDebug:
Script(debugScript)
ProgramDebug
|menuDebugScript:
setScript(debugScript)
|menuFASM:
text.fasm := ~text.fasm
|menuUTF8BOM:
T.setEnc(text, E.UTF8BOM)
|menuUTF8:
1212,6 → 1279,10
T.setEol(text, E.EOL_CRLF)
|menuCR:
T.setEol(text, E.EOL_CR)
|menuConv1251_866:
T.convert(text, E.cp866, E.W1251)
|menuConv866_1251:
T.convert(text, E.cp1251, E.CP866)
|menuPipet:
K.Run("/sys/develop/pipet", "")
|menuMagnify:
1346,6 → 1417,9
Menu.delimiter(menu);
Menu.AddMenuItem(menu, menuEOL, "EOL");
Menu.child(menu, subEOL);
Menu.delimiter(menu);
Menu.AddMenuItem(menu, menuConv1251_866, "convert 1251 >> 866");
Menu.AddMenuItem(menu, menuConv866_1251, "convert 866 >> 1251");
RETURN Menu.create(menu)
END CreateMenuEncoding;
 
1415,8 → 1489,10
Menu.AddMenuItem(menu, menuRun, "run F9");
Menu.AddMenuItem(menu, menuRunScript, "script");
Menu.delimiter(menu);
Menu.AddMenuItem(menu, menuDebug, "debug");
Menu.AddMenuItem(menu, menuDebug, "debug ctrl-F8");
Menu.AddMenuItem(menu, menuDebugScript, "script");
Menu.delimiter(menu);
Menu.AddMenuItem(menu, menuFASM, "Fasm");
RETURN Menu.create(menu)
END CreateMenuProgram;
 
1511,6 → 1587,7
Menu.AddShortcut(31 + CTRL, menuSave);
Menu.AddShortcut(49 + CTRL, menuNew);
Menu.AddShortcut(67 + CTRL, menuBuild);
Menu.AddShortcut(66 + CTRL, menuDebug);
Menu.AddShortcut(83 + CTRL, menuRemove);
Menu.AddShortcut(22 + CTRL, menuUpper);
Menu.AddShortcut(38 + CTRL, menuLower);
1570,12 → 1647,17
ELSE
T.gotoLabel(text, ~shift)
END
ELSIF keyCode = 66 THEN (* F8 *)
key := -1;
IF ctrl THEN
ProgramDebug
END
ELSIF keyCode = 67 THEN (* F9 *)
key := -1;
IF ctrl THEN
Script(buildScript)
ProgramBuild
ELSE
Script(runScript)
ProgramRun
END
ELSIF keyCode = 68 THEN (* F10 *)
IF shift THEN
1767,9 → 1849,9
|btnLower:
T.chCase(text, FALSE)
|btnBuild:
Script(buildScript)
ProgramBuild
|btnRun:
Script(runScript)
ProgramRun
|btnFindNext:
IF searchText # "" THEN
notFound := ~T.findNext(text, BKW.value);
1940,6 → 2022,47
END ScrollChange;
 
 
PROCEDURE docpack (VAR param: RW.tFileName);
VAR
i, size, errno: INTEGER;
ptr, ptr2: INTEGER;
s: ARRAY 32 OF WCHAR;
BEGIN
U.reverse8(param);
param[LENGTH(param) - 1] := 0X;
U.reverse8(param);
i := 0;
WHILE param[i] # 0X DO
s[i] := WCHR(ORD(param[i]));
INC(i)
END;
IF U.str2int(s, size) THEN
INC(size, 20);
ptr := KOSAPI.malloc(size);
IF ptr # 0 THEN
SYSTEM.PUT32(ptr, 0);
SYSTEM.PUT32(ptr + 4, 8);
KOSAPI.sysfunc4(60, 1, ptr, size);
K.SetEventsMask({6});
IF K.EventTimeout(200) = 7 THEN
SYSTEM.PUT32(ptr, 1);
SYSTEM.GET(ptr + 12, size);
ptr2 := KOSAPI.malloc(size);
IF ptr2 # 0 THEN
SYSTEM.MOVE(ptr + 16, ptr2, size);
text := T.open("", ptr2, size, errno);
IF text # NIL THEN
insert(0, text);
T.SetPos(text, 0, 0)
END
END
END;
ptr := KOSAPI.free(ptr)
END
END
END docpack;
 
 
PROCEDURE main;
VAR
fileName, filePath: RW.tFileName;
2042,9 → 2165,13
END;
FOR i := 1 TO Args.argc - 1 DO
Args.GetArg(i, fileName);
IF fileName[0] # "*" THEN
IF open(fileName) THEN
U.getPath(fileName, filePath)
END
ELSE
docpack(fileName)
END
END;
IF textsCount = 0 THEN
K.Exit