From 082ddccdfc467d886d92e69fc62a8fa639b6dc55 Mon Sep 17 00:00:00 2001 From: Anton Krotov Date: Wed, 12 Jan 2022 21:15:22 +0000 Subject: [PATCH] CEdit: bugfixes, renaming system colors, update box_lib wrapper git-svn-id: svn://kolibrios.org@9628 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/develop/cedit/CEDIT | Bin 31470 -> 31553 bytes programs/develop/cedit/SRC/Args.ob07 | 68 +++++++++ programs/develop/cedit/SRC/CEdit.ob07 | 165 +++++++++++++--------- programs/develop/cedit/SRC/CheckBox.ob07 | 10 +- programs/develop/cedit/SRC/EditBox.ob07 | 26 +--- programs/develop/cedit/SRC/KolibriOS.ob07 | 44 +++--- programs/develop/cedit/SRC/Menu.ob07 | 26 ++-- programs/develop/cedit/SRC/StatusBar.ob07 | 8 +- programs/develop/cedit/SRC/Tabs.ob07 | 28 ++-- programs/develop/cedit/SRC/Toolbar.ob07 | 10 +- programs/develop/cedit/SRC/Utils.ob07 | 17 +-- programs/develop/cedit/SRC/scroll.ob07 | 20 +-- 12 files changed, 238 insertions(+), 184 deletions(-) create mode 100644 programs/develop/cedit/SRC/Args.ob07 diff --git a/programs/develop/cedit/CEDIT b/programs/develop/cedit/CEDIT index 437fb2bd48522e7b457cf01cdbdd5b7a54d71c05..8a78321d38635112c7f455cb66a346bd4a7e7e10 100644 GIT binary patch literal 31553 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%0D!9w!^jjfQ0H*8S5wpj}ycR!h*j&EMCa@e7*< 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 E2O6-6Hvj+t literal 31470 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 ZP{J4|WkZxENAp+}l9s-$;Sme~00+q&B)R|q diff --git a/programs/develop/cedit/SRC/Args.ob07 b/programs/develop/cedit/SRC/Args.ob07 new file mode 100644 index 0000000000..c3d1630d14 --- /dev/null +++ b/programs/develop/cedit/SRC/Args.ob07 @@ -0,0 +1,68 @@ +(* + Copyright 2022 Anton Krotov + + This file is part of CEdit. + + CEdit is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + CEdit is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with CEdit. If not, see . +*) + +MODULE Args; + +IMPORT SYSTEM, KOSAPI; + + +VAR + + argc*: INTEGER; + + +PROCEDURE ptr2str (ptr: INTEGER; VAR s: ARRAY OF CHAR); +VAR + i, n: INTEGER; +BEGIN + i := -1; + n := LEN(s) - 1; + REPEAT + INC(i); + SYSTEM.GET(ptr, s[i]); + INC(ptr) + UNTIL (i = n) OR (s[i] = 0X); + s[i] := 0X +END ptr2str; + + +PROCEDURE GetArg* (n: INTEGER; VAR s: ARRAY OF CHAR); +BEGIN + IF n = 0 THEN + ptr2str(KOSAPI.GetName(), s) + ELSIF (n = 1) & (argc = 2) THEN + ptr2str(KOSAPI.GetCommandLine(), s) + ELSE + s[0] := 0X + END +END GetArg; + + +PROCEDURE main; +VAR + c: CHAR; +BEGIN + SYSTEM.GET(KOSAPI.GetCommandLine(), c); + argc := ORD(c # 0X) + 1 +END main; + + +BEGIN + main +END Args. \ No newline at end of file diff --git a/programs/develop/cedit/SRC/CEdit.ob07 b/programs/develop/cedit/SRC/CEdit.ob07 index 9f2c54a59e..67e5cb17be 100644 --- a/programs/develop/cedit/SRC/CEdit.ob07 +++ b/programs/develop/cedit/SRC/CEdit.ob07 @@ -20,7 +20,7 @@ MODULE CEdit; IMPORT - OpenDlg, K := KolibriOS, + OpenDlg, K := KolibriOS, Args, U := Utils, Lines, Menu, List, G := Graph, T := Text, E := Encodings, CB := Clipboard, Languages, @@ -28,7 +28,7 @@ IMPORT RW, Ini, EB := EditBox, Tabs, Toolbar, SB := StatusBar; CONST - HEADER = "CEdit (08-jan-2022)"; + HEADER = "CEdit (13-jan-2022)"; ShellFilter = ""; EditFilter = "SH|INC|TXT|ASM|OB07|C|CPP|H|PAS|PP|LUA|INI|JSON"; @@ -181,6 +181,7 @@ VAR textsCount, curText: INTEGER; winWidth, winHeight: INTEGER; + SkinHeight: INTEGER; AppPath, runScript, buildScript, debugScript: RW.tFileName; OD: OpenDlg.Dialog; confirm, notFound, menuFindClicked, search, searchOpened: BOOLEAN; @@ -282,9 +283,9 @@ BEGIN right := left + width - 1; x := minWidth DIV 2 + left; y := (height - fontHeight) DIV 2 + top; - K.DrawRect(left, top, width, height, K.winColor); - Rect(left, top, right, bottom, K.borderColor); - K.DrawText(x, y, K.textColor, s); + K.DrawRect(left, top, width, height, K.colors.work); + Rect(left, top, right, bottom, K.colors.line); + K.DrawText(x, y, K.colors.work_text, s); END Message; @@ -404,7 +405,7 @@ BEGIN CheckBox.paint(WH); END; - G.SetColor(canvas, K.borderColor); + G.SetColor(canvas, K.colors.line); G.VLine(canvas, 0, 0, canvas.height - 1); G.DrawCanvas(canvas, LEFT, TOP); NotFound; @@ -453,7 +454,7 @@ BEGIN DEC(top, Tabs.tabHeight); right := left + EditBox_Width + SEARCH_PADDING*2; bottom := top + 395 + btnHeight + SEARCH_PADDING; - Rect(left, top, right, bottom, K.borderColor); + Rect(left, top, right, bottom, K.colors.line); K.CreateButton(btnCloseSearch, right - 20, top, 20, 20, 0EF999FH, ""); K.DrawLine(right - 14, top + 5, right - 5, top + 14, 0FFFFFFH); @@ -463,15 +464,15 @@ BEGIN K.DrawLine(right - 15, top + 15, right - 5, top + 5, 0FFFFFFH); K.DrawLine(right - 14, top + 15, right - 5, top + 6, 0FFFFFFH); - K.CreateButton(btnHideSearch, right - 40, top, 20, 20, K.btnColor, ""); - K.DrawLine(right - 34, top + 14, right - 26, top + 14, K.btnTextColor); - K.DrawLine(right - 34, top + 15, right - 26, top + 15, K.btnTextColor); + K.CreateButton(btnHideSearch, right - 40, top, 20, 20, K.colors.button, ""); + K.DrawLine(right - 34, top + 14, right - 26, top + 14, K.colors.button_text); + K.DrawLine(right - 34, top + 15, right - 26, top + 15, K.colors.button_text); INC(top, 15); INC(left, SEARCH_PADDING); - K.DrawText866(left, top, K.textColor, "find"); - K.DrawText866(left, top + 55, K.textColor, "replace with"); - K.DrawText866(left, top + 330, K.textColor, "go to line"); + K.DrawText866(left, top, K.colors.work_text, "find"); + K.DrawText866(left, top + 55, K.colors.work_text, "replace with"); + K.DrawText866(left, top + 330, K.colors.work_text, "go to line"); BKW.top := top + 110; BKW.left := left; CS.top := top + 140; @@ -488,10 +489,10 @@ BEGIN EB.paint(ReplaceEdit); EB.paint(GotoEdit); y := top + 200; - K.CreateButton(btnFindNext, left, y, btnWidth, btnHeight, K.btnColor, "next"); INC(y, btnHeight + 10); - K.CreateButton(btnReplace, left, y, btnWidth, btnHeight, K.btnColor, "replace"); INC(y, btnHeight + 10); - K.CreateButton(btnReplaceAll, left, y, btnWidth + 5*fontWidth - 2, btnHeight, K.btnColor, "replace all"); - K.CreateButton(btnGoto, left, top + 380, btnWidth, btnHeight, K.btnColor, "go"); + K.CreateButton(btnFindNext, left, y, btnWidth, btnHeight, K.colors.button, "next"); INC(y, btnHeight + 10); + K.CreateButton(btnReplace, left, y, btnWidth, btnHeight, K.colors.button, "replace"); INC(y, btnHeight + 10); + K.CreateButton(btnReplaceAll, left, y, btnWidth + 5*fontWidth - 2, btnHeight, K.colors.button, "replace all"); + K.CreateButton(btnGoto, left, top + 380, btnWidth, btnHeight, K.colors.button, "go"); END SearchPanel; @@ -500,7 +501,7 @@ VAR width, height: INTEGER; BEGIN K.BeginDraw; - K.CreateWindow(30 + K.GetTickCount() MOD 128, 30 + K.GetTickCount() MOD 128, winWidth, winHeight, K.winColor, 73H, 0, 0, ""); + K.CreateWindow(30 + K.GetTickCount() MOD 128, 30 + K.GetTickCount() MOD 128, winWidth, winHeight, K.colors.work, 73H, 0, 0, ""); IF (text # NIL) & ~K.RolledUp() THEN IF confirm THEN resetTimer @@ -508,10 +509,10 @@ BEGIN confirm := FALSE; K.ClientSize(width, height); - K.DrawRect(0, 0, width, TOP - 1, K.winColor); - K.DrawRect(0, 0, LEFT, height, K.winColor); - K.DrawRect(width - RIGHT_PADDING, 0, RIGHT_PADDING, height, K.winColor); - K.DrawRect(LEFT + canvas.width + 1, TOP + canvas.height + 1, scrollWidth - 1, scrollWidth - 1, K.winColor); + K.DrawRect(0, 0, width, TOP - 1, K.colors.work); + K.DrawRect(0, 0, LEFT, height, K.colors.work); + K.DrawRect(width - RIGHT_PADDING, 0, RIGHT_PADDING, height, K.colors.work); + K.DrawRect(LEFT + canvas.width + 1, TOP + canvas.height + 1, scrollWidth - 1, scrollWidth - 1, K.colors.work); Menu.DrawMain(mainMenu); Toolbar.draw(toolbar); @@ -688,11 +689,11 @@ BEGIN top := (canvas.height - height) DIV 2 + TOP; right := left + width - 1; bottom := top + height - 1; - K.DrawRect(left, top, width, height, K.winColor); - Rect(left, top, right, bottom, K.borderColor); - K.DrawText866(left + (width - 10*fontWidth) DIV 2, top + 10, K.textColor, "save file?"); - K.CreateButton(btnYes, left + 10, top + 35, btnWidth, btnHeight, K.btnColor, "yes"); - K.CreateButton(btnNo, left + 20 + btnWidth, top + 35, btnWidth, btnHeight, K.btnColor, "no"); + K.DrawRect(left, top, width, height, K.colors.work); + Rect(left, top, right, bottom, K.colors.line); + K.DrawText866(left + (width - 10*fontWidth) DIV 2, top + 10, K.colors.work_text, "save file?"); + K.CreateButton(btnYes, left + 10, top + 35, btnWidth, btnHeight, K.colors.button, "yes"); + K.CreateButton(btnNo, left + 20 + btnWidth, top + 35, btnWidth, btnHeight, K.colors.button, "no"); END Confirm; @@ -773,21 +774,28 @@ BEGIN END SwitchTab; -PROCEDURE open; +PROCEDURE open (_fileName: RW.tFileName): BOOLEAN; VAR - fileName: RW.tFileName; + fileName: RW.tFileName; nov: T.tText; err, n: INTEGER; + res: BOOLEAN; BEGIN + res := TRUE; IF textsCount < maxTexts THEN - OD._type := OpenDlg.topen; - OpenFile(fileName, EditFilter); + fileName := _fileName; + IF fileName = "" THEN + OD._type := OpenDlg.topen; + OpenFile(fileName, EditFilter) + END; IF fileName # "" THEN n := getFileNum(fileName); IF n = -1 THEN nov := T.open(fileName, err); IF nov = NIL THEN - error("error opening file") + error("error opening file"); + SwitchTab(curText); + res := FALSE ELSE T.SetPos(nov, 0, 0); insert(textsCount, nov); @@ -799,11 +807,21 @@ BEGIN END END ELSE - error("too many files") + error("too many files"); + res := FALSE END + RETURN res END open; +PROCEDURE OpenDial; +VAR + res: BOOLEAN; +BEGIN + res := open("") +END OpenDial; + + PROCEDURE createSearchForm; BEGIN EB.create(LEFT_PADDING, TOP + 20, EditBox_Width, EDITBOX_MAXCHARS, FindEdit); @@ -1132,7 +1150,7 @@ BEGIN |menuNew: NewFile |menuOpen: - open + OpenDial |menuSave: save(text); repaint @@ -1672,7 +1690,7 @@ BEGIN key := -1 |22: key := ORD("U") |24: key := -1; - open + OpenDial |30: key := ORD("A") |31: key := -1; save(text) @@ -1765,7 +1783,7 @@ BEGIN NewFile; repaint |btnOpen: - open + OpenDial |btnSave: save(text); repaint @@ -1916,21 +1934,25 @@ END MouseEvent; PROCEDURE Redraw (VAR resized: BOOLEAN; VAR width, height, cliWidth, cliHeight: INTEGER); BEGIN - K.GetSystemColors; - IF ~K.RolledUp() THEN - K.ClientSize(width, height); - IF (width # cliWidth) OR (height # cliHeight) THEN - cliWidth := width; - cliHeight := height; - resize; - resized := TRUE - END; - K.SetEventsMask({0, 1, 2, 5, 6, 31}) - ELSE - SetCaption(text.fileName); - K.SetEventsMask({0, 30, 31}) - END; - draw_window + K.GetSystemColors; + IF ~K.RolledUp() THEN + K.ClientSize(width, height); + IF (width # cliWidth) OR (height # cliHeight) THEN + cliWidth := width; + cliHeight := height; + resize; + resized := TRUE + END; + K.SetEventsMask({0, 1, 2, 5, 6, 31}) + ELSE + SetCaption(text.fileName); + K.SetEventsMask({0, 30, 31}) + END; + draw_window; + IF SkinHeight # K.SkinHeight() THEN + SkinHeight := K.SkinHeight(); + Redraw(resized, width, height, cliWidth, cliHeight) + END END Redraw; @@ -1950,11 +1972,10 @@ END ScrollChange; PROCEDURE main; VAR - err: INTEGER; fileName, filePath: RW.tFileName; width, height, cliWidth, cliHeight: INTEGER; resized: BOOLEAN; - firstClickX, firstClickY, time, blink: INTEGER; + firstClickX, firstClickY, time, blink, i: INTEGER; BEGIN header := ""; K.GetSystemColors; @@ -1964,7 +1985,7 @@ BEGIN curText := 0; mainTID := K.ThreadID(); K.SetIPC(IPC); - U.ptr2str(K.GetName(), AppPath); + Args.GetArg(0, AppPath); Ini.load(AppPath); leftButton := FALSE; resized := FALSE; @@ -1976,7 +1997,8 @@ BEGIN cliWidth := winWidth; cliHeight := winHeight; LEFT := LEFT_PADDING; - canvas := G.CreateCanvas(winWidth - (LEFT + RIGHT + 11 + RIGHT_PADDING), winHeight - (TOP + BOTTOM + 5) - K.SkinHeight()); + SkinHeight := K.SkinHeight(); + canvas := G.CreateCanvas(winWidth - (LEFT + RIGHT + 11 + RIGHT_PADDING), winHeight - (TOP + BOTTOM + 5) - SkinHeight); tabs := Tabs.create(); Tabs.setArea(tabs, LEFT, TOP - Tabs.tabHeight, canvas.width, Tabs.tabHeight); font1 := G.CreateFont(1, "", {}); @@ -1985,7 +2007,6 @@ BEGIN G.SetFont(canvas, font); T.init(resetTimer); T.setCanvas(canvas); - U.ptr2str(K.GetCommandLine(), fileName); context := CreateContextMenu(); menuFile := CreateMenuFile(); @@ -2034,25 +2055,28 @@ BEGIN Toolbar.add(toolbar, btnRun, 53, ""); Ini.getSettings(buildScript, runScript, debugScript); - IF fileName = "" THEN + + filePath := "/sys"; + IF Args.argc = 1 THEN text := T.New(); - filePath := "/sys" - ELSE - text := T.open(fileName, err); - IF text = NIL THEN - error("error opening file"); - K.Exit - ELSE - U.getPath(fileName, filePath) - END + insert(0, text); + T.SetPos(text, 0, 0) END; - OD := OpenDlg.Create(draw_window, OpenDlg.topen, filePath, ""); - insert(0, text); + FOR i := 1 TO Args.argc - 1 DO + Args.GetArg(i, fileName); + IF open(fileName) THEN + U.getPath(fileName, filePath) + END + END; + IF textsCount = 0 THEN + K.Exit + END; + SwitchTab(textsCount - 1); + Scroll.init(ScrollChange); Scroll.create(FALSE, canvas.width + 1, scrollWidth, scrollWidth, scrollWidth*3 DIV 2, hScroll); Scroll.create(TRUE, scrollWidth, canvas.height + 2, scrollWidth, scrollWidth*3 DIV 2, vScroll); T.resize(canvas.width, canvas.height); - T.SetPos(text, 0, 0); confirm := FALSE; notFound := FALSE; menuFindClicked := FALSE; @@ -2065,6 +2089,9 @@ BEGIN cs := FALSE; whole := FALSE; replaced := 0; + + OD := OpenDlg.Create(draw_window, OpenDlg.topen, filePath, ""); + K.SetEventsMask({0, 1, 2, 5, 6, 31}); Menu.init(resetTimer); draw_window; diff --git a/programs/develop/cedit/SRC/CheckBox.ob07 b/programs/develop/cedit/SRC/CheckBox.ob07 index 9badb9d177..ec10a3dec8 100644 --- a/programs/develop/cedit/SRC/CheckBox.ob07 +++ b/programs/develop/cedit/SRC/CheckBox.ob07 @@ -1,5 +1,5 @@ (* - Copyright 2021 Anton Krotov + Copyright 2021, 2022 Anton Krotov This file is part of CEdit. @@ -48,11 +48,11 @@ VAR BEGIN canvas := chkbox.canvas; IF canvas # NIL THEN - G.SetColor(canvas, K.winColor); + G.SetColor(canvas, K.colors.work); G.clear(canvas); G.SetColor(canvas, bColor); G.FillRect(canvas, 0, 0, fontHeight - 1, fontHeight - 1); - G.SetColor(canvas, K.borderColor); + G.SetColor(canvas, K.colors.line); G.Rect(canvas, 0, 0, fontHeight - 1, fontHeight - 1); IF chkbox.value THEN G.SetColor(canvas, fColor); @@ -65,8 +65,8 @@ BEGIN G.DLine(canvas, 2, 6, 5, -1); G.DLine(canvas, 7, 13, 8, 1); END; - G.SetTextColor(canvas, K.textColor); - G.SetBkColor(canvas, K.winColor); + G.SetTextColor(canvas, K.colors.work_text); + G.SetBkColor(canvas, K.colors.work); G.TextOut2(canvas, fontHeight + padding, 0, chkbox.text, LENGTH(chkbox.text)); G.DrawCanvas(canvas, chkbox.left, chkbox.top) END diff --git a/programs/develop/cedit/SRC/EditBox.ob07 b/programs/develop/cedit/SRC/EditBox.ob07 index 76c3a22312..cc6735dfb3 100644 --- a/programs/develop/cedit/SRC/EditBox.ob07 +++ b/programs/develop/cedit/SRC/EditBox.ob07 @@ -48,33 +48,13 @@ TYPE offset, cl_curs_x, cl_curs_y, shift, shift_old, height, char_width: INTEGER END; - EditBoxKey = PROCEDURE (eb: tEditBox); - VAR - key_proc: EditBoxKey; paint *: PROCEDURE (eb: tEditBox); mouse *: PROCEDURE (eb: tEditBox); _setValue : PROCEDURE (eb: tEditBox; text: INTEGER); - - -PROCEDURE _key (key: INTEGER; key_proc: EditBoxKey; text: tEditBox); -BEGIN - SYSTEM.CODE( - 08BH, 045H, 008H, (* mov eax, dword [ebp + 8] *) - 08BH, 055H, 00CH, (* mov edx, dword [ebp + 12] *) - 08BH, 04DH, 010H, (* mov ecx, dword [ebp + 16] *) - 051H, (* push ecx *) - 0FFH, 0D2H (* call edx *) - ) -END _key; - - -PROCEDURE key* (text: tEditBox; key: INTEGER); -BEGIN - _key(key, key_proc, text) -END key; + key *: PROCEDURE (eb: tEditBox; key: INTEGER); PROCEDURE getValue* (text: tEditBox; VAR str: ARRAY OF CHAR); @@ -144,8 +124,8 @@ VAR BEGIN Lib := KOSAPI.LoadLib("/sys/lib/box_lib.obj"); ASSERT(Lib # 0); - GetProc(Lib, SYSTEM.ADR(paint), "edit_box"); - GetProc(Lib, SYSTEM.ADR(key_proc), "edit_box_key"); + GetProc(Lib, SYSTEM.ADR(paint), "edit_box_draw"); + GetProc(Lib, SYSTEM.ADR(key), "edit_box_key_safe"); GetProc(Lib, SYSTEM.ADR(mouse), "edit_box_mouse"); GetProc(Lib, SYSTEM.ADR(_setValue), "edit_box_set_text"); END main; diff --git a/programs/develop/cedit/SRC/KolibriOS.ob07 b/programs/develop/cedit/SRC/KolibriOS.ob07 index bbddb59ca0..9ab2121fa6 100644 --- a/programs/develop/cedit/SRC/KolibriOS.ob07 +++ b/programs/develop/cedit/SRC/KolibriOS.ob07 @@ -1,5 +1,5 @@ (* - Copyright 2021 Anton Krotov + Copyright 2021, 2022 Anton Krotov This file is part of CEdit. @@ -28,18 +28,18 @@ CONST VAR - winColor*, textColor*, btnColor*, btnTextColor*, - borderColor*, (*darkColor,*) lightColor*: INTEGER; - - -PROCEDURE GetCommandLine* (): INTEGER; - RETURN KOSAPI.GetCommandLine() -END GetCommandLine; - - -PROCEDURE GetName* (): INTEGER; - RETURN KOSAPI.GetName() -END GetName; + colors*: RECORD + rsrvd, + taskbar, + dark*, + light*, + window_title*, + work*, + button*, + button_text*, + work_text*, + line*: INTEGER + END; PROCEDURE CreateWindow* (x, y, w, h, color, style, hcolor, hstyle: INTEGER; htext: ARRAY OF CHAR); @@ -152,7 +152,7 @@ END DrawText69; PROCEDURE DrawText866* (x, y, color: INTEGER; text: ARRAY OF CHAR); BEGIN - KOSAPI.sysfunc6(4, x*65536 + y, color + LSL(0D0H, 24), SYSTEM.ADR(text[0]), 0, winColor) + KOSAPI.sysfunc6(4, x*65536 + y, color + LSL(0D0H, 24), SYSTEM.ADR(text[0]), 0, colors.work) END DrawText866; @@ -179,7 +179,7 @@ BEGIN KOSAPI.sysfunc5(8, LSL(Left, 16) + Width, LSL(Top, 16) + Height, id, Color); x := Left + (Width - fontWidth * LENGTH(Caption)) DIV 2; y := Top + (Height - fontHeight) DIV 2 + 1; - DrawText(x, y, btnTextColor, Caption) + DrawText(x, y, colors.button_text, Caption) END CreateButton; @@ -330,18 +330,8 @@ END SendIPC; PROCEDURE GetSystemColors*; -VAR - buf: ARRAY 10 OF INTEGER; BEGIN - ASSERT(LEN(buf) >= 10); - KOSAPI.sysfunc4(48, 3, SYSTEM.ADR(buf[0]), 40); - (*darkColor := buf[2];*) - lightColor := buf[3]; - winColor := buf[5]; - btnColor := buf[6]; - btnTextColor := buf[7]; - textColor := buf[8]; - borderColor := buf[9]; + KOSAPI.sysfunc4(48, 3, SYSTEM.ADR(colors), 40) END GetSystemColors; @@ -409,4 +399,6 @@ BEGIN END PutPixel; +BEGIN + GetSystemColors 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 f50551fdc2..820cf30c50 100644 --- a/programs/develop/cedit/SRC/Menu.ob07 +++ b/programs/develop/cedit/SRC/Menu.ob07 @@ -1,5 +1,5 @@ (* - Copyright 2021 Anton Krotov + Copyright 2021, 2022 Anton Krotov This file is part of CEdit. @@ -134,15 +134,15 @@ VAR menuColor, textColor, n: INTEGER; BEGIN IF item.menu.tid # 0 THEN - menuColor := K.textColor; - textColor := K.winColor + menuColor := K.colors.work_text; + textColor := K.colors.work ELSE - menuColor := K.winColor; - textColor := K.textColor + menuColor := K.colors.work; + textColor := K.colors.work_text END; n := LENGTH(item.text); K.DrawRect(item.x, 0, n*fontWidth + 2, MainMenuHeight, menuColor); - K.CreateButton(item.id + ORD({30}), item.x, 0, n*fontWidth + 2, MainMenuHeight, K.btnColor, ""); + K.CreateButton(item.id + ORD({30}), item.x, 0, n*fontWidth + 2, MainMenuHeight, K.colors.button, ""); K.DrawText(item.x + 1, (MainMenuHeight - K.fontHeight) DIV 2 + 1, textColor, item.text) END drawMainItem; @@ -217,7 +217,7 @@ END escape; PROCEDURE repaint (m: tMenu); VAR - y, i, X, Y: INTEGER; + y, i, X, Y, Y1: INTEGER; item: tItem; BkColor, TextColor: INTEGER; canvas: G.tCanvas; @@ -269,12 +269,14 @@ BEGIN G.SetColor(canvas, TextColor); IF item.check = 1 THEN - G.DLine(canvas, 4, 7, Y + 5, -1); - G.DLine(canvas, 4, 7, Y + 6, -1); - G.DLine(canvas, 7, 12, Y + 8, 1); - G.DLine(canvas, 7, 12, Y + 9, 1); + G.DLine(canvas, 4, 7, Y + 5, -1); + G.DLine(canvas, 4, 7, Y + 6, -1); + G.DLine(canvas, 7, 12, Y + 8, 1); + G.DLine(canvas, 7, 12, Y + 9, 1) ELSIF item.check = 2 THEN - G.FillRect(canvas, 6, y + fontHeight DIV 2 - 4, 10, y + fontHeight DIV 2) + Y1 := y + fontHeight DIV 2 - 2; + G.FillRect(canvas, 7, Y1 - 2, 9, Y1 + 2); + G.FillRect(canvas, 6, Y1 - 1, 10, Y1 + 1) END; IF item.child # NIL THEN diff --git a/programs/develop/cedit/SRC/StatusBar.ob07 b/programs/develop/cedit/SRC/StatusBar.ob07 index 21048b90db..efbba64b47 100644 --- a/programs/develop/cedit/SRC/StatusBar.ob07 +++ b/programs/develop/cedit/SRC/StatusBar.ob07 @@ -1,5 +1,5 @@ (* - Copyright 2021 Anton Krotov + Copyright 2021, 2022 Anton Krotov This file is part of CEdit. @@ -95,9 +95,9 @@ END TextOut; PROCEDURE draw* (left, top: INTEGER); BEGIN - G.SetColor(SB.canvas, K.winColor); - G.SetBkColor(SB.canvas, K.winColor); - G.SetTextColor(SB.canvas, K.textColor); + G.SetColor(SB.canvas, K.colors.work); + G.SetBkColor(SB.canvas, K.colors.work); + G.SetTextColor(SB.canvas, K.colors.work_text); G.clear(SB.canvas); TextOut(1, SB.pos); TextOut(16*K.fontWidth, SB.sel); diff --git a/programs/develop/cedit/SRC/Tabs.ob07 b/programs/develop/cedit/SRC/Tabs.ob07 index 5ac1996239..ea1e97d934 100644 --- a/programs/develop/cedit/SRC/Tabs.ob07 +++ b/programs/develop/cedit/SRC/Tabs.ob07 @@ -1,5 +1,5 @@ (* - Copyright 2021 Anton Krotov + Copyright 2021, 2022 Anton Krotov This file is part of CEdit. @@ -61,25 +61,25 @@ BEGIN IF id = t.current THEN INC(height, curTabHeight - tabHeight); DEC(y, curTabHeight - tabHeight); - color := K.lightColor + color := K.colors.light ELSE - color := K.winColor + color := K.colors.work END; DEC(x); INC(width); x2 := x + width - 1; y2 := y + height - 1; K.DrawRect(x, y, width, height, color); - K.DrawLine(x, y, x2, y, K.borderColor); - K.DrawLine(x2, y, x2, y2, K.borderColor); + K.DrawLine(x, y, x2, y, K.colors.line); + K.DrawLine(x2, y, x2, y2, K.colors.line); IF id # t.current THEN - K.DrawLine(x2 - 1, y2, x, y2, K.borderColor); + K.DrawLine(x2 - 1, y2, x, y2, K.colors.line); END; - K.DrawLine(x, y2, x, y, K.borderColor); + K.DrawLine(x, y2, x, y, K.colors.line); - K.DrawText866bk(x + K.fontWidth + K.fontWidth DIV 2, y + (height - K.fontHeight) DIV 2, K.textColor, color, s); + K.DrawText866bk(x + K.fontWidth + K.fontWidth DIV 2, y + (height - K.fontHeight) DIV 2, K.colors.work_text, color, s); IF modified THEN - K.DrawText866bk(x + K.fontWidth DIV 2, y + (height - K.fontHeight) DIV 2, K.textColor, color, "*") + K.DrawText866bk(x + K.fontWidth DIV 2, y + (height - K.fontHeight) DIV 2, K.colors.work_text, color, "*") END; K.CreateButton(id + ORD({30}) + btnID, x + 1, y - 1, width - 1, height - 1, color, ""); END drawTab; @@ -115,13 +115,13 @@ VAR BEGIN y := t.y; x := t.x; - K.DrawRect(x, y - (curTabHeight - tabHeight), t.width + (2*scrWidth + 2), t.height + (curTabHeight - tabHeight) - 1, K.winColor); + K.DrawRect(x, y - (curTabHeight - tabHeight), t.width + (2*scrWidth + 2), t.height + (curTabHeight - tabHeight) - 1, K.colors.work); IF Width(t, 0, t.strings.count - 1) > t.width THEN INC(x, 2*scrWidth); K.DeleteButton(btnLeft); K.DeleteButton(btnRight); - K.CreateButton(btnLeft, t.x, y, scrWidth, t.height - 1, K.btnColor, "<"); - K.CreateButton(btnRight, t.x + scrWidth, y, scrWidth, t.height - 1, K.btnColor, ">"); + K.CreateButton(btnLeft, t.x, y, scrWidth, t.height - 1, K.colors.button, "<"); + K.CreateButton(btnRight, t.x + scrWidth, y, scrWidth, t.height - 1, K.colors.button, ">"); scroll := TRUE ELSE t.first := 0; @@ -145,8 +145,8 @@ BEGIN t.first := n END; - K.DrawRect(x, y, t.width, t.height - 1, K.winColor); - K.DrawLine(x, y + tabHeight - 1, x + t.width - 1 + 2*scrWidth*(1 - ORD(scroll)), y + tabHeight - 1, K.borderColor); + K.DrawRect(x, y, t.width, t.height - 1, K.colors.work); + K.DrawLine(x, y + tabHeight - 1, x + t.width - 1 + 2*scrWidth*(1 - ORD(scroll)), y + tabHeight - 1, K.colors.line); item := List.getItem(t.strings, t.first); n := t.first; WHILE (item # NIL) & (x <= xmax) DO diff --git a/programs/develop/cedit/SRC/Toolbar.ob07 b/programs/develop/cedit/SRC/Toolbar.ob07 index cb5f39e9a7..44a5129c6e 100644 --- a/programs/develop/cedit/SRC/Toolbar.ob07 +++ b/programs/develop/cedit/SRC/Toolbar.ob07 @@ -1,5 +1,5 @@ (* - Copyright 2021 Anton Krotov + Copyright 2021, 2022 Anton Krotov This file is part of CEdit. @@ -77,12 +77,12 @@ END drawIcons; PROCEDURE setColors (VAR toolbar: tToolbar); BEGIN - toolbar.colors.back := 0F2EFECH;//K.lightColor; + toolbar.colors.back := 0F2EFECH; toolbar.colors.text := 00000FFH; - toolbar.colors.disText := 0808080H;//K.borderColor; + toolbar.colors.disText := 0808080H; toolbar.colors.light := 0FEFEFEH; - toolbar.colors.shadow := 09F9C9AH;//K.borderColor; - toolbar.colors.window := K.winColor + toolbar.colors.shadow := 09F9C9AH; + toolbar.colors.window := K.colors.work END setColors; diff --git a/programs/develop/cedit/SRC/Utils.ob07 b/programs/develop/cedit/SRC/Utils.ob07 index 765e83d196..bdc641c1de 100644 --- a/programs/develop/cedit/SRC/Utils.ob07 +++ b/programs/develop/cedit/SRC/Utils.ob07 @@ -1,5 +1,5 @@ (* - Copyright 2021 Anton Krotov + Copyright 2021, 2022 Anton Krotov This file is part of CEdit. @@ -352,21 +352,6 @@ BEGIN END sgn; -PROCEDURE ptr2str* (ptr: INTEGER; VAR s: ARRAY OF CHAR); -VAR - i, n: INTEGER; -BEGIN - i := -1; - n := LEN(s) - 1; - REPEAT - INC(i); - SYSTEM.GET(ptr, s[i]); - INC(ptr) - UNTIL (i = n) OR (s[i] = 0X); - s[i] := 0X -END ptr2str; - - PROCEDURE between* (a, b, c: INTEGER): BOOLEAN; RETURN (a <= b) & (b <= c) END between; diff --git a/programs/develop/cedit/SRC/scroll.ob07 b/programs/develop/cedit/SRC/scroll.ob07 index e0e52108fa..b304c59483 100644 --- a/programs/develop/cedit/SRC/scroll.ob07 +++ b/programs/develop/cedit/SRC/scroll.ob07 @@ -1,5 +1,5 @@ (* - Copyright 2021 Anton Krotov + Copyright 2021, 2022 Anton Krotov This file is part of CEdit. @@ -76,7 +76,7 @@ END create; PROCEDURE Rect (canvas: G.tCanvas; left, top, right, bottom: INTEGER); BEGIN G.FillRect(canvas, left, top, right, bottom); - G.SetColor(canvas, K.borderColor); + G.SetColor(canvas, K.colors.line); G.Rect(canvas, left, top, right, bottom); END Rect; @@ -93,9 +93,9 @@ VAR color: INTEGER; BEGIN IF c THEN - color := K.btnColor + color := K.colors.button ELSE - color := K.btnTextColor + color := K.colors.button_text END; G.SetColor(canvas, color) END SetColor; @@ -106,19 +106,19 @@ BEGIN width := scroll.width; height := scroll.height; canvas := scroll.canvas; - G.SetColor(canvas, K.lightColor); + G.SetColor(canvas, K.colors.light); G.clear(canvas); - G.SetColor(canvas, K.borderColor); + G.SetColor(canvas, K.colors.line); G.Rect(canvas, 0, 0, width - 1, height - 1); IF scroll.vertical THEN SetColor(canvas, ~scroll.Dec); Rect(canvas, 0, 0, width - 1, btn - 1); SetColor(canvas, ~scroll.Inc); Rect(canvas, 0, height - btn, width - 1, height - 1); - G.SetColor(canvas, K.btnColor); + G.SetColor(canvas, K.colors.button); Rect(canvas, 0, btn + scroll.pos - 1, width - 1, btn + scroll.pos + scroll.sliderSize - 1); - G.SetColor(canvas, K.btnTextColor); + G.SetColor(canvas, K.colors.button_text); y := btn + scroll.pos + scroll.sliderSize DIV 2 - 1; G.HLine(canvas, y, width DIV 4, 3*width DIV 4); @@ -141,10 +141,10 @@ BEGIN Rect(canvas, 0, 0, btn - 1, height - 1); SetColor(canvas, ~scroll.Inc); Rect(canvas, width - btn, 0, width - 1, height - 1); - G.SetColor(canvas, K.btnColor); + G.SetColor(canvas, K.colors.button); Rect(canvas, btn + scroll.pos - 1, 0, btn + scroll.pos + scroll.sliderSize - 1, height - 1); - G.SetColor(canvas, K.btnTextColor); + G.SetColor(canvas, K.colors.button_text); x := btn + scroll.pos + scroll.sliderSize DIV 2 - 1; G.VLine(canvas, x, height DIV 4, 3*height DIV 4);