From c2885eb759527c83fb1755168bba0c47bccf3e9d Mon Sep 17 00:00:00 2001 From: Anton Krotov Date: Tue, 28 Sep 2021 16:15:37 +0000 Subject: [PATCH] CEDIT: internal changes git-svn-id: svn://kolibrios.org@9208 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/develop/cedit/CEDIT | Bin 35228 -> 35196 bytes programs/develop/cedit/SRC/CEdit.ob07 | 427 ++++++++++------------ programs/develop/cedit/SRC/CheckBox.ob07 | 34 +- programs/develop/cedit/SRC/EditBox.ob07 | 6 +- programs/develop/cedit/SRC/Graph.ob07 | 23 +- programs/develop/cedit/SRC/KolibriOS.ob07 | 15 + programs/develop/cedit/SRC/Menu.ob07 | 20 +- programs/develop/cedit/SRC/Text.ob07 | 5 +- programs/develop/cedit/SRC/scroll.ob07 | 83 ++++- 9 files changed, 311 insertions(+), 302 deletions(-) diff --git a/programs/develop/cedit/CEDIT b/programs/develop/cedit/CEDIT index 54c7075960a24bbc541c3e745953442ed19df4a6..127596be7cbd2889daac11dbb12d64144fe068d2 100644 GIT binary patch literal 35196 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 diff --git a/programs/develop/cedit/SRC/CEdit.ob07 b/programs/develop/cedit/SRC/CEdit.ob07 index f7623a763..4d9f23cce 100644 --- a/programs/develop/cedit/SRC/CEdit.ob07 +++ b/programs/develop/cedit/SRC/CEdit.ob07 @@ -28,7 +28,7 @@ IMPORT 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 @@ VAR replaced: INTEGER; - mainTID, delay: INTEGER; + mainTID: INTEGER; context, menuFile, menuEdit, menuSearch, menuEncoding, menuView, menuLanguage, menuProgram, menuTools, @@ -231,7 +231,7 @@ VAR 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 @@ END resetTimer; 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 @@ END WriteModified; 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 @@ END draw_window; 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 @@ BEGIN 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 @@ BEGIN 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 @@ VAR 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 @@ BEGIN 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 @@ VAR 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 @@ BEGIN 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,36 +1243,11 @@ BEGIN 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 - 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 - END - ELSE - delay := Scroll.Delay - END + Scroll.receiveIPC(IPC, scrollIPC) END; - IPC[2] := 0 + IF ~scrollIPC THEN + IPC[2] := 0 + END ELSE IF ~Menu.isSender(IPC[0]) THEN IPC[2] := 0 @@ -1297,132 +1261,132 @@ BEGIN END END END; - CASE IPC[2] OF - |0: - |menuCut: T.key(text, ORD("X"), FALSE, TRUE) - |menuCopy: T.key(text, ORD("C"), FALSE, TRUE) - |menuPaste: T.key(text, ORD("V"), FALSE, TRUE) - |menuDelete: T.key(text, 46, FALSE, FALSE) - |menuSelectAll: T.key(text, ORD("A"), FALSE, TRUE) - - |menuNew: - NewFile - |menuOpen: - open - |menuSave: - save(text); - repaint - |menuSaveAs: - saveAs(text); - repaint - |menuSaveAll: - saveAll; - repaint - |menuClose: - closeFile(TRUE, curText) - |menuFolder: - K.Run("/rd/1/File Managers/Eolite", text.fileName) - |menuExit: - Close - |menuUndo: - T.undo(text); - repaint - |menuRedo: - T.redo(text); - repaint - |menuFind: - ShowSearchPanel(FALSE) - |menuFindNext: - notFound := ~T.findNext(text, BKW.value); - menuFindClicked := TRUE - |menuFindPrev: - notFound := ~T.findNext(text, ~BKW.value); - menuFindClicked := TRUE - |menuGoto: - ShowSearchPanel(TRUE) - |menuToggleBookmark: - T.toggleLabel(text) - |menuNextBookmark: - T.gotoLabel(text, TRUE) - |menuPrevBookmark: - T.gotoLabel(text, FALSE) - |menuNumbers: - T.toggleNumbers(text) - |menuFontSize: - IF font = font1 THEN - font := font2 - ELSE - font := font1 - END; - resize - |menuText: - T.setLang(text, Languages.langText) - |menuC: - T.setLang(text, Languages.langC) - |menuFasm: - T.setLang(text, Languages.langFasm) - |menuIni: - T.setLang(text, Languages.langIni) - |menuJSON: - T.setLang(text, Languages.langJSON) - |menuLua: - T.setLang(text, Languages.langLua) - |menuOberon: - T.setLang(text, Languages.langOberon) - |menuPascal: - T.setLang(text, Languages.langPascal) - |menuBuild: - Script(buildScript) - |menuBuildScript: - OpenFile(buildScript, ShellFilter) - |menuRun: - Script(runScript) - |menuRunScript: - OpenFile(runScript, ShellFilter) - |menuDebug: - Script(debugScript) - |menuDebugScript: - OpenFile(debugScript, ShellFilter) - |menuUTF8BOM: - text.enc := E.UTF8BOM - |menuUTF8: - text.enc := E.UTF8 - |menuCP866: - text.enc := E.CP866 - |menuWin1251: - text.enc := E.W1251 - |menuLF: - text.eol := RW.EOL_LF - |menuCRLF: - text.eol := RW.EOL_CRLF - |menuCR: - text.eol := RW.EOL_CR - |menuPipet: - K.Run("/rd/1/develop/pipet", "") - |menuBoard: - K.Run("/rd/1/develop/board", "") - |menuSysFunc: - K.Run("/rd/1/docpack", "f") - |menuColors..menuMaxColors: - Ini.selectSection(IPC[2] - menuColors) - |menuMoveUp: - T.upLine(text) - |menuMoveDown: - T.downLine(text) - |menuDuplicate: - T.dupLine(text) - |menuRemove: - T.delLine(text) - |menuIncInd: - T.Indent(text, TRUE) - |menuDecInd: - T.Indent(text, FALSE) - |menuUpper: - T.chCase(text, TRUE) - |menuLower: - T.chCase(text, FALSE) - END; IF ~scrollIPC THEN + CASE IPC[2] OF + |0: + |menuCut: T.key(text, ORD("X"), FALSE, TRUE) + |menuCopy: T.key(text, ORD("C"), FALSE, TRUE) + |menuPaste: T.key(text, ORD("V"), FALSE, TRUE) + |menuDelete: T.key(text, 46, FALSE, FALSE) + |menuSelectAll: T.key(text, ORD("A"), FALSE, TRUE) + + |menuNew: + NewFile + |menuOpen: + open + |menuSave: + save(text); + repaint + |menuSaveAs: + saveAs(text); + repaint + |menuSaveAll: + saveAll; + repaint + |menuClose: + closeFile(TRUE, curText) + |menuFolder: + K.Run("/rd/1/File Managers/Eolite", text.fileName) + |menuExit: + Close + |menuUndo: + T.undo(text); + repaint + |menuRedo: + T.redo(text); + repaint + |menuFind: + ShowSearchPanel(FALSE) + |menuFindNext: + notFound := ~T.findNext(text, BKW.value); + menuFindClicked := TRUE + |menuFindPrev: + notFound := ~T.findNext(text, ~BKW.value); + menuFindClicked := TRUE + |menuGoto: + ShowSearchPanel(TRUE) + |menuToggleBookmark: + T.toggleLabel(text) + |menuNextBookmark: + T.gotoLabel(text, TRUE) + |menuPrevBookmark: + T.gotoLabel(text, FALSE) + |menuNumbers: + T.toggleNumbers(text) + |menuFontSize: + IF font = font1 THEN + font := font2 + ELSE + font := font1 + END; + resize + |menuText: + T.setLang(text, Languages.langText) + |menuC: + T.setLang(text, Languages.langC) + |menuFasm: + T.setLang(text, Languages.langFasm) + |menuIni: + T.setLang(text, Languages.langIni) + |menuJSON: + T.setLang(text, Languages.langJSON) + |menuLua: + T.setLang(text, Languages.langLua) + |menuOberon: + T.setLang(text, Languages.langOberon) + |menuPascal: + T.setLang(text, Languages.langPascal) + |menuBuild: + Script(buildScript) + |menuBuildScript: + setScript(buildScript) + |menuRun: + Script(runScript) + |menuRunScript: + setScript(runScript) + |menuDebug: + Script(debugScript) + |menuDebugScript: + setScript(debugScript) + |menuUTF8BOM: + text.enc := E.UTF8BOM + |menuUTF8: + text.enc := E.UTF8 + |menuCP866: + text.enc := E.CP866 + |menuWin1251: + text.enc := E.W1251 + |menuLF: + text.eol := RW.EOL_LF + |menuCRLF: + text.eol := RW.EOL_CRLF + |menuCR: + text.eol := RW.EOL_CR + |menuPipet: + K.Run("/rd/1/develop/pipet", "") + |menuBoard: + K.Run("/rd/1/develop/board", "") + |menuSysFunc: + K.Run("/rd/1/docpack", "f") + |menuColors..menuMaxColors: + Ini.selectSection(IPC[2] - menuColors) + |menuMoveUp: + T.upLine(text) + |menuMoveDown: + T.downLine(text) + |menuDuplicate: + T.dupLine(text) + |menuRemove: + T.delLine(text) + |menuIncInd: + T.Indent(text, TRUE) + |menuDecInd: + T.Indent(text, FALSE) + |menuUpper: + T.chCase(text, TRUE) + |menuLower: + T.chCase(text, FALSE) + END; IPC[0] := 0; IPC[1] := 0 END @@ -1820,7 +1784,7 @@ BEGIN |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 @@ BEGIN 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 @@ BEGIN repaint END END; - IF Scroll.isActive(hScroll) THEN - mouse(x, y); - Scroll.MouseMove(hScroll, x + LEFT, y + TOP); - T.getScroll(text, scrollX, scrollY); - T.scroll(text, hScroll.value - scrollX, 0); - 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; + + Scroll.mouse(hScroll); + Scroll.mouse(vScroll); + T.getScroll(text, scrollX, scrollY); + IF (hScroll.value # scrollX) OR (vScroll.value # scrollY) THEN + T.scroll(text, hScroll.value - scrollX, vScroll.value - scrollY); + repaint + END; + IF (8 IN msState) & ~(24 IN msState) THEN mouse(firstClickX, firstClickY); time := click(firstClickX, firstClickY) @@ -2033,15 +1992,8 @@ BEGIN 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,16 +2006,15 @@ BEGIN 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; - notFound := ~T.search(text, searchText, cs, whole); - repaint - END; - IF WH.value # whole THEN - whole := ~whole; + IF (CS.value # cs) OR (WH.value # whole) THEN + cs := CS.value; + whole := WH.value; notFound := ~T.search(text, searchText, cs, whole); repaint END @@ -2095,6 +2046,20 @@ BEGIN 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 @@ VAR resized: BOOLEAN; firstClickX, firstClickY, time: INTEGER; BEGIN - delay := Scroll.Delay; K.GetSystemColors; Icons.get(icons, grayIcons); modified := FALSE; @@ -2115,7 +2079,7 @@ BEGIN 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 @@ BEGIN 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); diff --git a/programs/develop/cedit/SRC/CheckBox.ob07 b/programs/develop/cedit/SRC/CheckBox.ob07 index 268e52dfd..e7494112f 100644 --- a/programs/develop/cedit/SRC/CheckBox.ob07 +++ b/programs/develop/cedit/SRC/CheckBox.ob07 @@ -84,26 +84,26 @@ BEGIN END create; -PROCEDURE MouseDown* (VAR chkbox: tCheckBox; x, y: INTEGER); +PROCEDURE mouse* (VAR chkbox: tCheckBox); +VAR + msState: SET; + x, y: INTEGER; BEGIN - IF (chkbox.canvas # NIL) & ~chkbox.mouse THEN - DEC(x, chkbox.left); - DEC(y, chkbox.top); - chkbox.mouse := TRUE; - IF U.between(0, x, chkbox.width) & U.between(0, y, chkbox.height) THEN - chkbox.value := ~chkbox.value; - END; - paint(chkbox) - END -END MouseDown; - - -PROCEDURE MouseUp* (VAR chkbox: tCheckBox); -BEGIN - IF chkbox.canvas # NIL THEN + K.mouse(msState, x, y); + IF 0 IN msState THEN + IF (chkbox.canvas # NIL) & ~chkbox.mouse THEN + DEC(x, chkbox.left); + DEC(y, chkbox.top); + chkbox.mouse := TRUE; + IF U.between(0, x, chkbox.width - 1) & U.between(0, y, chkbox.height - 1) THEN + chkbox.value := ~chkbox.value; + END; + paint(chkbox) + END + ELSE chkbox.mouse := FALSE END -END MouseUp; +END mouse; END CheckBox. \ No newline at end of file diff --git a/programs/develop/cedit/SRC/EditBox.ob07 b/programs/develop/cedit/SRC/EditBox.ob07 index 01800fcaf..a171125c3 100644 --- a/programs/develop/cedit/SRC/EditBox.ob07 +++ b/programs/develop/cedit/SRC/EditBox.ob07 @@ -40,7 +40,7 @@ TYPE max: INTEGER; text*: INTEGER; mouse_variable: tEditBox; - flags*, + flags*: SET; size, pos: INTEGER; @@ -129,7 +129,7 @@ BEGIN new_textbox.text := KOSAPI.malloc(max_chars + 2); ASSERT(new_textbox.text # 0); new_textbox.mouse_variable := editbox_interlock; - new_textbox.flags := 0 + new_textbox.flags := {} RETURN new_textbox END create; @@ -159,5 +159,5 @@ END main; BEGIN - main + main END EditBox. \ No newline at end of file diff --git a/programs/develop/cedit/SRC/Graph.ob07 b/programs/develop/cedit/SRC/Graph.ob07 index 5e4b763cf..62d94ed61 100644 --- a/programs/develop/cedit/SRC/Graph.ob07 +++ b/programs/develop/cedit/SRC/Graph.ob07 @@ -185,24 +185,24 @@ END DLine; PROCEDURE Triangle* (canvas: tCanvas; x1, y1, x2, y2: INTEGER; orientation: BOOLEAN); VAR i, a, b, d: INTEGER; + line: PROCEDURE (canvas: tCanvas; c, c1, c2: INTEGER); BEGIN + line := NIL; d := ORD(orientation)*2 - 1; IF y1 = y2 THEN i := y1; a := MIN(x1, x2); b := MAX(x1, x2); - WHILE a <= b DO - HLine(canvas, i, a, b); - INC(i, d); - INC(a); - DEC(b) - END + line := HLine ELSIF x1 = x2 THEN i := x1; a := MIN(y1, y2); b := MAX(y1, y2); + line := VLine + END; + IF line # NIL THEN WHILE a <= b DO - VLine(canvas, i, a, b); + line(canvas, i, a, b); INC(i, d); INC(a); DEC(b) @@ -251,7 +251,7 @@ PROCEDURE TextOut* (canvas: tCanvas; x, y: INTEGER; text: INTEGER; n: INTEGER; d CONST WCHAR_SIZE = 2; VAR - color, i, ecx: INTEGER; + color, i, font: INTEGER; c: WCHAR; BEGIN IF (0 <= y) & (y <= canvas.height - canvas.font.height - 1) THEN @@ -268,15 +268,16 @@ BEGIN canvas.color := canvas.backColor; FillRect(canvas, x, y, x + n*canvas.font.width, y + canvas.font.height); canvas.color := color; + font := LSL(28H + canvas.font.size, 24); WHILE n > 0 DO SYSTEM.GET(text + i*WCHAR_SIZE, c); IF ~Lines.isSpace(c) THEN IF Languages.isDelim(c) THEN - ecx := LSL(28H + canvas.font.size, 24) + delimColor + color := delimColor ELSE - ecx := LSL(28H + canvas.font.size, 24) + canvas.textColor + color := canvas.textColor END; - K.sysfunc6(4, x*65536 + y, ecx, SYSTEM.ADR(c), 1, canvas.bitmap - 8) + K.sysfunc6(4, x*65536 + y, font + color, SYSTEM.ADR(c), 1, canvas.bitmap - 8) END; INC(x, canvas.font.width); INC(i); diff --git a/programs/develop/cedit/SRC/KolibriOS.ob07 b/programs/develop/cedit/SRC/KolibriOS.ob07 index 84d9da97e..bafabe0ca 100644 --- a/programs/develop/cedit/SRC/KolibriOS.ob07 +++ b/programs/develop/cedit/SRC/KolibriOS.ob07 @@ -369,4 +369,19 @@ BEGIN END getKBState; +PROCEDURE mouse* (VAR msState: SET; VAR x, y: INTEGER); +VAR + mouseX, mouseY, + cliX, cliY, + winX, winY: INTEGER; +BEGIN + msState := MouseState(); + MousePos(mouseX, mouseY); + WinPos(winX, winY); + ClientPos(cliX, cliY); + x := mouseX - winX - cliX; + y := mouseY - winY - cliY +END mouse; + + END KolibriOS. \ No newline at end of file diff --git a/programs/develop/cedit/SRC/Menu.ob07 b/programs/develop/cedit/SRC/Menu.ob07 index c7d2ad69a..74f87b98d 100644 --- a/programs/develop/cedit/SRC/Menu.ob07 +++ b/programs/develop/cedit/SRC/Menu.ob07 @@ -216,7 +216,7 @@ END escape; PROCEDURE repaint (m: tMenu); VAR - y, i, X, Y1, Y2: INTEGER; + y, i, X, Y: INTEGER; item: tItem; BkColor, TextColor: INTEGER; canvas: G.tCanvas; @@ -277,9 +277,8 @@ BEGIN IF item.child # NIL THEN X := m.width - 9; - Y1 := y + (fontHeight - 16) DIV 2 + 2; - Y2 := Y1 + 8; - G.Triangle(canvas, X, Y1, X, Y2, G.triRight) + Y := y + (fontHeight - 16) DIV 2 + 2; + G.Triangle(canvas, X, Y, X, Y + 8, G.triRight) END; INC(y, fontHeight); @@ -303,16 +302,6 @@ BEGIN END draw_window; -PROCEDURE mouse (m: tMenu; VAR x, y: INTEGER); -VAR - mouseX, mouseY: INTEGER; -BEGIN - K.MousePos(mouseX, mouseY); - x := mouseX - m.winX; - y := mouseY - m.winY; -END mouse; - - PROCEDURE close* (m: tMenu); VAR temp: INTEGER; @@ -469,8 +458,7 @@ BEGIN END; repaint(m) |6: - msState := K.MouseState(); - mouse(m, x, y); + K.mouse(msState, x, y); IF (0 <= x) & (x < m.width) & (0 <= y) & (y < m.height) THEN m.active := TRUE; m.selItem := (y - TOP) DIV fontHeight; diff --git a/programs/develop/cedit/SRC/Text.ob07 b/programs/develop/cedit/SRC/Text.ob07 index 6851fb5bd..47c1e744e 100644 --- a/programs/develop/cedit/SRC/Text.ob07 +++ b/programs/develop/cedit/SRC/Text.ob07 @@ -2128,12 +2128,9 @@ BEGIN IF (i MOD 10 = 0) OR (i - 1 = text.cursor.Y) OR line.label THEN U.int2str(i, s); G.TextOut2(canvas, (numWidth - U.lg10(i) - 1)*wNum - wNum DIV 2, y, s, LENGTH(s)) - ELSIF i MOD 5 = 0 THEN - G.SetColor(canvas, colors.numtext); - G.HLine(canvas, y - inter DIV 2 + charHeight DIV 2, xNum - wNum, xNum) ELSE G.SetColor(canvas, colors.numtext); - G.HLine(canvas, y - inter DIV 2 + charHeight DIV 2, xNum - wNum DIV 2, xNum) + G.HLine(canvas, y - inter DIV 2 + charHeight DIV 2, xNum - wNum DIV (1 + ORD(i MOD 5 # 0)), xNum) END END; IF line.label THEN diff --git a/programs/develop/cedit/SRC/scroll.ob07 b/programs/develop/cedit/SRC/scroll.ob07 index f157106c6..7eba6766c 100644 --- a/programs/develop/cedit/SRC/scroll.ob07 +++ b/programs/develop/cedit/SRC/scroll.ob07 @@ -24,7 +24,7 @@ IMPORT G := Graph, K := KolibriOS, U := Utils; CONST ScrollIPC* = 0; - Delay* = 40; + DELAY = 40; TYPE @@ -37,16 +37,29 @@ TYPE canvas*: G.tCanvas END; + tProcedure* = PROCEDURE; + +VAR + + ScrollChange: tProcedure; + delay: INTEGER; + + +PROCEDURE MouseUp (VAR scroll: tScroll); +BEGIN + scroll.Slider := -1; + scroll.Inc := FALSE; + scroll.Dec := FALSE; + scroll.mouse := FALSE; +END MouseUp; + PROCEDURE create* (vertical: BOOLEAN; width, height: INTEGER; btnSize, sliderSize: INTEGER; VAR scroll: tScroll); VAR res: tScroll; BEGIN + MouseUp(res); res.vertical := vertical; - res.Inc := FALSE; - res.Dec := FALSE; - res.Slider := -1; - res.mouse := FALSE; res.left := 0; res.top := 0; res.width := width; @@ -279,12 +292,7 @@ BEGIN END setPos; -PROCEDURE isActive* (scroll: tScroll): BOOLEAN; - RETURN scroll.Inc OR scroll.Dec OR (scroll.Slider # -1) -END isActive; - - -PROCEDURE MouseMove* (VAR scroll: tScroll; x, y: INTEGER); +PROCEDURE MouseMove (VAR scroll: tScroll; x, y: INTEGER); VAR c: INTEGER; BEGIN @@ -300,13 +308,37 @@ BEGIN END MouseMove; -PROCEDURE SendIPC*; +PROCEDURE SendIPC; BEGIN K.SendIPC(K.ThreadID(), ScrollIPC) END SendIPC; -PROCEDURE MouseDown* (VAR scroll: tScroll; x, y: INTEGER); +PROCEDURE receiveIPC* (VAR IPC: ARRAY OF INTEGER; VAR scrollIPC: BOOLEAN); +BEGIN + scrollIPC := FALSE; + ScrollChange; + 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; + SendIPC; + delay := 4 + ELSE + delay := DELAY + END + ELSE + delay := DELAY + END +END receiveIPC; + + +PROCEDURE MouseDown (VAR scroll: tScroll; x, y: INTEGER); VAR c, size: INTEGER; BEGIN @@ -342,16 +374,27 @@ BEGIN END MouseDown; -PROCEDURE MouseUp* (VAR scroll: tScroll); +PROCEDURE mouse* (VAR scroll: tScroll); +VAR + msState: SET; + x, y: INTEGER; BEGIN - IF scroll.mouse THEN - scroll.Slider := -1; - scroll.Inc := FALSE; - scroll.Dec := FALSE; - scroll.mouse := FALSE; + K.mouse(msState, x, y); + IF 0 IN msState THEN + MouseDown(scroll, x, y); + MouseMove(scroll, x, y) + ELSIF scroll.mouse THEN + MouseUp(scroll); paint(scroll) END -END MouseUp; +END mouse; + + +PROCEDURE init* (_ScrollChange: tProcedure); +BEGIN + delay := DELAY; + ScrollChange := _ScrollChange +END init; END Scroll. \ No newline at end of file