Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 9207 → Rev 9208

/programs/develop/cedit/SRC/CEdit.ob07
28,7 → 28,7
RW, Ini, EB := EditBox, Icons, Tabs, Timer;
 
CONST
header = "CEdit (24-sep-2021)";
header = "CEdit (28-sep-2021)";
 
ShellFilter = "";
EditFilter = "SH|ASM|TXT|INC|OB07|C|CPP|H|PAS|PP|LUA|INI|JSON";
195,7 → 195,7
 
replaced: INTEGER;
 
mainTID, delay: INTEGER;
mainTID: INTEGER;
 
context, menuFile, menuEdit, menuSearch, menuEncoding,
menuView, menuLanguage, menuProgram, menuTools,
231,7 → 231,7
BEGIN
res := FALSE;
IF edit # NIL THEN
res := 1 IN BITS(edit.flags)
res := 1 IN edit.flags
END
RETURN res
END EditBox_Focus;
252,9 → 252,9
PROCEDURE EditBox_SetFocus (edit: EB.tEditBox; value: BOOLEAN);
BEGIN
IF value THEN
edit.flags := ORD(BITS(edit.flags) + {1})
INCL(edit.flags, 1)
ELSE
edit.flags := ORD(BITS(edit.flags) - {1})
EXCL(edit.flags, 1)
END;
IF search & searchOpened THEN
EB.paint(edit)
411,16 → 411,16
 
PROCEDURE DrawState (text: T.tText; width, height: INTEGER);
VAR
y, w, x: INTEGER;
y: INTEGER;
s: ARRAY 24 OF WCHAR;
BEGIN
y := (btnHeight - fontHeight) DIV 2 + btnTop;
K.DrawRect(width - 32*fontWidth, y, 32*fontWidth, fontHeight, K.winColor);
w := LENGTH(E.names[text.enc])*fontWidth;
x := width - w;
K.DrawText(x, y, K.textColor, E.names[text.enc]);
w := LENGTH(RW.eolNames[text.eol])*fontWidth;
DEC(x, w + 10);
K.DrawText(x, y, K.textColor, RW.eolNames[text.eol]);
s := "";
U.append(s, RW.eolNames[text.eol]);
U.append(s, 20X);
U.append(s, E.names[text.enc]);
K.DrawRect(width - LEN(s)*fontWidth, y, LEN(s)*fontWidth, fontHeight, K.winColor);
K.DrawText(width - LENGTH(s)*fontWidth, y, K.textColor, s);
y := height - (BOTTOM - scrollWidth) + (BOTTOM - scrollWidth - 16) DIV 2;
K.DrawRect(LEFT + 16*fontWidth, TOP + canvas.height + scrollWidth, width - LEFT - 24*fontWidth, BOTTOM - scrollWidth + 1, K.winColor);
K.DrawText866(LEFT + 16*fontWidth, y, K.textColor, text.fileName);
639,15 → 639,11
 
PROCEDURE mouse (VAR x, y: INTEGER);
VAR
mouseX, mouseY,
cliX, cliY,
winX, winY: INTEGER;
msState: SET;
BEGIN
K.MousePos(mouseX, mouseY);
K.WinPos(winX, winY);
K.ClientPos(cliX, cliY);
x := mouseX - winX - cliX - LEFT;
y := mouseY - winY - cliY - TOP;
K.mouse(msState, x, y);
DEC(x, LEFT);
DEC(y, TOP)
END mouse;
 
 
935,7 → 931,7
EditBox0.text := K.malloc(EDITBOX_MAXCHARS + 2);
ASSERT(EditBox0.text # 0);
edit := EB.create(left, top, EditBox_Width, EDITBOX_MAXCHARS, EditBox0);
edit.flags := 4002H;
edit.flags := {1, 14};
edit.text_color := 30000000H;
EditBox_SetFocus(edit, FALSE)
RETURN edit
947,7 → 943,7
FindEdit := createEdit(searchLeft, TOP + 20);
ReplaceEdit := createEdit(searchLeft, TOP + 20 + 55);
GotoEdit := createEdit(searchLeft, TOP + 20 + 330);
GotoEdit.flags := ORD(BITS(GotoEdit.flags) + BITS(8000H));
INCL(GotoEdit.flags, 15);
CheckBox.create("backward", BKW);
CheckBox.create("match case", CS);
CheckBox.create("whole word", WH);
992,16 → 988,9
shift, ctrl: BOOLEAN;
BEGIN
K.getKBState(shift, ctrl);
Scroll.MouseDown(hScroll, x + LEFT, y + TOP);
Scroll.MouseDown(vScroll, x + LEFT, y + TOP);
T.getScroll(text, scrollX, scrollY);
T.scroll(text, hScroll.value - scrollX, vScroll.value - scrollY);
IF search & searchOpened THEN
CheckBox.MouseDown(BKW, x + LEFT, y + TOP);
CheckBox.MouseDown(CS, x + LEFT, y + TOP);
CheckBox.MouseDown(WH, x + LEFT, y + TOP);
END;
IF (0 <= x) & (x < canvas.width) & (0 <= y) & (y < canvas.height) THEN
IF U.between(0, x, canvas.width - 1) & U.between(0, y, canvas.height - 1) THEN
leftButton := TRUE;
SetFocus(FindEdit, FALSE);
IF ~shift THEN
1014,17 → 1003,6
END click;
 
 
PROCEDURE LeftButtonUp;
BEGIN
leftButton := FALSE;
Scroll.MouseUp(hScroll);
Scroll.MouseUp(vScroll);
CheckBox.MouseUp(BKW);
CheckBox.MouseUp(CS);
CheckBox.MouseUp(WH);
END LeftButtonUp;
 
 
PROCEDURE Close;
VAR
cont: BOOLEAN;
1143,7 → 1121,7
BEGIN
IF menu = context THEN
mouse(x, y);
IF ~((0 <= x) & (x < canvas.width) & (0 <= y) & (y < canvas.height)) THEN
IF ~(U.between(0, x, canvas.width - 1) & U.between(0, y, canvas.height - 1)) THEN
menu := NIL
END
ELSE
1240,6 → 1218,17
END ShowMenu;
 
 
PROCEDURE setScript (VAR script: RW.tFileName);
VAR
temp: RW.tFileName;
BEGIN
OpenFile(temp, ShellFilter);
IF temp # "" THEN
script := temp
END
END setScript;
 
 
PROCEDURE receiveIPC;
VAR
scrollIPC: BOOLEAN;
1254,37 → 1243,12
IPC[2] := 0
ELSIF IPC[0] = mainTID THEN
IF IPC[2] = Scroll.ScrollIPC THEN
Scroll.change(hScroll);
Scroll.change(vScroll);
T.scroll(text, ORD(hScroll.Inc) - ORD(hScroll.Dec), ORD(vScroll.Inc) - ORD(vScroll.Dec));
 
IF menuActive THEN
draw_window;
menuActive := FALSE
ELSE
repaint
Scroll.receiveIPC(IPC, scrollIPC)
END;
 
IF 0 IN K.MouseState() THEN
WHILE (0 IN K.MouseState()) & (delay > 0) DO
K.Pause(1);
DEC(delay)
END;
IF delay = 0 THEN
IPC[0] := 0;
IPC[1] := 0;
scrollIPC := TRUE;
Scroll.SendIPC;
delay := 2
ELSE
delay := Scroll.Delay
IF ~scrollIPC THEN
IPC[2] := 0
END
ELSE
delay := Scroll.Delay
END
END;
IPC[2] := 0
ELSE
IF ~Menu.isSender(IPC[0]) THEN
IPC[2] := 0
ELSE
1297,6 → 1261,7
END
END
END;
IF ~scrollIPC THEN
CASE IPC[2] OF
|0:
|menuCut: T.key(text, ORD("X"), FALSE, TRUE)
1374,15 → 1339,15
|menuBuild:
Script(buildScript)
|menuBuildScript:
OpenFile(buildScript, ShellFilter)
setScript(buildScript)
|menuRun:
Script(runScript)
|menuRunScript:
OpenFile(runScript, ShellFilter)
setScript(runScript)
|menuDebug:
Script(debugScript)
|menuDebugScript:
OpenFile(debugScript, ShellFilter)
setScript(debugScript)
|menuUTF8BOM:
text.enc := E.UTF8BOM
|menuUTF8:
1422,7 → 1387,6
|menuLower:
T.chCase(text, FALSE)
END;
IF ~scrollIPC THEN
IPC[0] := 0;
IPC[1] := 0
END
1820,7 → 1784,7
|82, 91, 219, 92, 220: key := -1 (* insert, windows *)
|93: ShowMenu(context); key := -1
|83: key := 46
|59, 62..66, 68, 87, 88: key := -1 (* F1, F4..F8, F10, F11, F12 *)
|59, 62..66, 87, 88: key := -1 (* F1, F4..F8, F11, F12 *)
ELSE
IF ctrl THEN
CASE keyCode OF
1996,7 → 1960,7
IF ~resized THEN
msState := K.MouseState();
IF ~(0 IN msState) OR (16 IN msState) THEN
LeftButtonUp
leftButton := FALSE
END;
scroll := K.Scroll();
IF scroll # 0 THEN
2010,20 → 1974,15
repaint
END
END;
IF Scroll.isActive(hScroll) THEN
mouse(x, y);
Scroll.MouseMove(hScroll, x + LEFT, y + TOP);
 
Scroll.mouse(hScroll);
Scroll.mouse(vScroll);
T.getScroll(text, scrollX, scrollY);
T.scroll(text, hScroll.value - scrollX, 0);
IF (hScroll.value # scrollX) OR (vScroll.value # scrollY) THEN
T.scroll(text, hScroll.value - scrollX, vScroll.value - scrollY);
repaint
END;
IF Scroll.isActive(vScroll) THEN
mouse(x, y);
Scroll.MouseMove(vScroll, x + LEFT, y + TOP);
T.getScroll(text, scrollX, scrollY);
T.scroll(text, 0, vScroll.value - scrollY);
repaint
END;
 
IF (8 IN msState) & ~(24 IN msState) THEN
mouse(firstClickX, firstClickY);
time := click(firstClickX, firstClickY)
2033,15 → 1992,8
END;
IF 24 IN msState THEN
mouse(x, y);
Scroll.MouseDown(hScroll, x + LEFT, y + TOP);
Scroll.MouseDown(vScroll, x + LEFT, y + TOP);
IF search & searchOpened THEN
CheckBox.MouseDown(BKW, x + LEFT, y + TOP);
CheckBox.MouseDown(CS, x + LEFT, y + TOP);
CheckBox.MouseDown(WH, x + LEFT, y + TOP);
END;
IF (ABS(x - firstClickX) < 5) & (ABS(y - firstClickY) < 5) THEN
IF (0 <= x) & (x < canvas.width) & (0 <= y) & (y < canvas.height) THEN
IF U.between(-4, x - firstClickX, 4) & U.between(-4, y - firstClickY, 4) THEN
IF U.between(0, x, canvas.width - 1) & U.between(0, y, canvas.height - 1) THEN
leftButton := FALSE;
T.selectWord(text);
repaint
2054,18 → 2006,17
END
END;
IF search & searchOpened THEN
CheckBox.mouse(BKW);
CheckBox.mouse(CS);
CheckBox.mouse(WH);
EditBox(FindEdit);
EditBox(ReplaceEdit);
EditBox(GotoEdit);
IF CS.value # cs THEN
cs := ~cs;
IF (CS.value # cs) OR (WH.value # whole) THEN
cs := CS.value;
whole := WH.value;
notFound := ~T.search(text, searchText, cs, whole);
repaint
END;
IF WH.value # whole THEN
whole := ~whole;
notFound := ~T.search(text, searchText, cs, whole);
repaint
END
END;
resized := FALSE
2095,6 → 2046,20
END Redraw;
 
 
PROCEDURE ScrollChange;
BEGIN
Scroll.change(hScroll);
Scroll.change(vScroll);
T.scroll(text, ORD(hScroll.Inc) - ORD(hScroll.Dec), ORD(vScroll.Inc) - ORD(vScroll.Dec));
IF menuActive THEN
draw_window;
menuActive := FALSE
ELSE
repaint
END
END ScrollChange;
 
 
PROCEDURE main;
VAR
err: INTEGER;
2103,7 → 2068,6
resized: BOOLEAN;
firstClickX, firstClickY, time: INTEGER;
BEGIN
delay := Scroll.Delay;
K.GetSystemColors;
Icons.get(icons, grayIcons);
modified := FALSE;
2115,7 → 2079,7
K.SetIPC(IPC);
U.ptr2str(K.GetName(), AppPath);
Ini.load(AppPath);
LeftButtonUp;
leftButton := FALSE;
resized := FALSE;
K.ScreenSize(winWidth, winHeight);
winWidth := (winWidth*80) DIV 100 - (128 + 30);
2181,6 → 2145,7
END;
OD := OpenDlg.Create(draw_window, OpenDlg.topen, filePath, "");
insert(0, text);
Scroll.init(ScrollChange);
Scroll.create(FALSE, canvas.width + 1, scrollWidth, scrollWidth, scrollWidth, hScroll);
Scroll.create(TRUE, scrollWidth, canvas.height + 1, scrollWidth, scrollWidth, vScroll);
T.resize(canvas.width, canvas.height);