diff --git a/programs/develop/cedit/CEDIT b/programs/develop/cedit/CEDIT index d5e045aa10..b00d46cf13 100644 Binary files a/programs/develop/cedit/CEDIT and b/programs/develop/cedit/CEDIT differ diff --git a/programs/develop/cedit/README.TXT b/programs/develop/cedit/README.TXT index 442e68f400..1b9dcc717e 100644 --- a/programs/develop/cedit/README.TXT +++ b/programs/develop/cedit/README.TXT @@ -1,23 +1,25 @@ Горячие клавиши: - ctrl+A выделить всё - ctrl+C копировать - ctrl+V вставить - ctrl+X вырезать - ctrl+L преобразовать буквы A..Z слева от курсора в a..z - ctrl+U преобразовать буквы a..z слева от курсора в A..Z - ctrl+F поиск/замена - F3 найти следующий - ctrl+Z отменить - ctrl+Y вернуть - ctrl+G перейти на строку... + ctrl+A выделить всё + ctrl+C копировать + ctrl+V вставить + ctrl+X вырезать + ctrl+L преобразовать буквы A..Z слева от курсора в a..z + ctrl+U преобразовать буквы a..z слева от курсора в A..Z + ctrl+F показать панель поиска + Esc скрыть панель поиска + F3 найти следующий + Shift+F3 найти предыдущий + ctrl+Z отменить + ctrl+Y вернуть + ctrl+G перейти на строку... - ctrl+S сохранить - ctrl+O открыть - ctrl+N создать новый + ctrl+S сохранить + ctrl+O открыть + ctrl+N создать новый - ctrl+F9 компилировать - F9 выполнить + ctrl+F9 компилировать + F9 выполнить перемещение по тексту: (ctrl+)Home, (ctrl+)End, (ctrl+)PageUp, (ctrl+)PageDown diff --git a/programs/develop/cedit/SRC/CEdit.ob07 b/programs/develop/cedit/SRC/CEdit.ob07 index 7b9e722864..1dc8b1dd89 100644 --- a/programs/develop/cedit/SRC/CEdit.ob07 +++ b/programs/develop/cedit/SRC/CEdit.ob07 @@ -28,7 +28,7 @@ IMPORT RW, Ini, box_lib, Icons; CONST - header = "CEdit (03-jun-2021)"; + header = "CEdit (06-jun-2021)"; ShellFilter = ""; EditFilter = "SH|ASM|TXT|INC|OB07|C|CPP|H|PAS|PP|LUA|INI"; @@ -118,6 +118,7 @@ CONST menuExit = 15; menuNumbers = 20; + menuFontSize = 21; menuColors = 1000; menuMaxColors = menuColors + Ini.MAX_SECTIONS - 1; @@ -147,7 +148,7 @@ CONST VAR canvas: G.tCanvas; - font: G.tFont; + font, font1, font2: G.tFont; text: T.tText; winWidth, winHeight: INTEGER; shift: SET; @@ -461,23 +462,25 @@ VAR PROCEDURE drawMainMenu (menu: Menu.tMenu; x: INTEGER; btn: INTEGER; caption: ARRAY OF WCHAR); VAR - menuColor, n: INTEGER; + menuColor, textColor, n: INTEGER; BEGIN IF menu.tid # 0 THEN - menuColor := K.selMenuColor + menuColor := K.textColor; + textColor := K.winColor ELSE - menuColor := K.winColor + menuColor := K.winColor; + textColor := K.textColor END; n := LENGTH(caption); K.DrawRect(x, 0, n*fontWidth + 2, MainMenuHeight, menuColor); K.CreateButton(btn + ORD({30}), x, 0, n*fontWidth + 2, MainMenuHeight, K.btnColor, ""); - K.DrawText(x + 1, (MainMenuHeight - fontHeight) DIV 2 + 1, K.textColor, caption) + K.DrawText(x + 1, (MainMenuHeight - fontHeight) DIV 2 + 1, textColor, caption) END drawMainMenu; BEGIN K.BeginDraw; - K.CreateWindow(50 + K.GetTickCount() MOD 128, 50 + K.GetTickCount() MOD 128, winWidth, winHeight, K.winColor, 73H, 0, 0, header); + K.CreateWindow(30 + K.GetTickCount() MOD 128, 30 + K.GetTickCount() MOD 128, winWidth, winHeight, K.winColor, 73H, 0, 0, header); IF (text # NIL) & ~K.RolledUp() THEN confirm := FALSE; K.ClientSize(width, height); @@ -891,6 +894,13 @@ BEGIN EditBox_SetFocus(ReplaceEdit, FALSE) |menuNumbers: T.toggleNumbers(text) + |menuFontSize: + IF font = font1 THEN + font := font2 + ELSE + font := font1 + END; + resize |menuNone: T.setLang(text, Languages.langNone) |menuC: @@ -1053,6 +1063,7 @@ VAR BEGIN menu := List.create(NIL); Menu.AddMenuItem(menu, menuNumbers, "line numbers"); + Menu.AddMenuItem(menu, menuFontSize, "x2"); Menu.delimiter(menu); colors := Ini.sections.first(Ini.tSection); @@ -1171,7 +1182,8 @@ BEGIN Menu.setCheck(menu, menuWin1251, ORD(text.enc = E.W1251)*2); INC(x, menuEncodingX) ELSIF menu = menuView THEN - Menu.setCheck(menu, menuNumbers, ORD(text.numbers)); + Menu.setCheck(menu, menuNumbers, ORD(text.numbers)); + Menu.setCheck(menu, menuFontSize, ORD(font = font2)); FOR i := 0 TO Ini.sections.count - 1 DO Menu.setCheck(menu, menuColors + i, ORD(Ini.curSectionNum = i)*2) END; @@ -1205,7 +1217,7 @@ END ShowMenu; PROCEDURE main; VAR - width, height, x, y, scrollX, scrollY: INTEGER; + width, height, x, y, scrollX, scrollY, i: INTEGER; key: INTEGER; msState: SET; scroll: INTEGER; @@ -1226,13 +1238,18 @@ BEGIN LeftButtonUp; resized := FALSE; shift := {}; - winWidth := minWinWidth; - winHeight := minWinHeight; + K.ScreenSize(winWidth, winHeight); + winWidth := (winWidth * 80) DIV 100 - (128 + 30); + winHeight := winHeight - (128 + 30); + winWidth := MAX(winWidth, minWinWidth); + winHeight := MAX(winHeight, minWinHeight); cliWidth := winWidth; cliHeight := winHeight; LEFT := 10; canvas := G.CreateCanvas(winWidth - (LEFT + RIGHT + 10), winHeight - (TOP + BOTTOM + 4) - K.SkinHeight()); - font := G.CreateFont(1, "", {}); + font1 := G.CreateFont(1, "", {}); + font2 := G.CreateFont(2, "", {}); + font := font1; G.SetFont(canvas, font); T.init(NIL); T.setCanvas(canvas); @@ -1280,28 +1297,35 @@ BEGIN WHILE TRUE DO CASE K.WaitForEvent() OF |1: - K.GetSystemColors; - Icons.get(icons, grayIcons); - IF ~K.RolledUp() THEN - K.ClientSize(width, height); - IF (width # cliWidth) OR (height # cliHeight) THEN - cliWidth := width; - cliHeight := height; - resize; - resized := TRUE + FOR i := 0 TO 1 DO + K.GetSystemColors; + Icons.get(icons, grayIcons); + 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 + K.SetEventsMask({0, 30, 31}) END; - K.SetEventsMask({0, 1, 2, 5, 6, 31}) - ELSE - K.SetEventsMask({0, 30, 31}) - END; - draw_window + draw_window + END + |2: key := K.GetKey(); getKBState; IF key DIV 65536 = 61 THEN (* F3 *) key := -1; IF search & (searchText # "") THEN - notFound := ~T.findNext(text, box_lib.check_box_get_value(BKW)) + IF T.SHIFT IN shift THEN + notFound := ~T.findNext(text, ~box_lib.check_box_get_value(BKW)) + ELSE + notFound := ~T.findNext(text, box_lib.check_box_get_value(BKW)) + END END ELSIF key DIV 65536 = 67 THEN (* F9 *) key := -1; @@ -1310,6 +1334,11 @@ BEGIN ELSE Script(runScript) END + ELSIF key DIV 65536 = 1 THEN + key := -1; (* Esc *) + IF search THEN + Search + END ELSIF (key DIV 65536 = 55) & (key DIV 256 MOD 256 = 52) THEN key := -1 (* PrtScn *) ELSIF (T.CTRL IN shift) & (key DIV 65536 = 33) THEN diff --git a/programs/develop/cedit/SRC/KolibriOS.ob07 b/programs/develop/cedit/SRC/KolibriOS.ob07 index 930d4ec5f7..4e007c2a6c 100644 --- a/programs/develop/cedit/SRC/KolibriOS.ob07 +++ b/programs/develop/cedit/SRC/KolibriOS.ob07 @@ -115,6 +115,21 @@ BEGIN END ClientPos; +PROCEDURE ScreenSize* (VAR width, height: INTEGER); +VAR + eax, ebx: INTEGER; + right, left, top, bottom: INTEGER; +BEGIN + eax := KOSAPI.sysfunc22(48, 5, ebx); + left := LSR(eax, 16); + right := eax MOD 65536; + top := LSR(ebx, 16); + bottom := ebx MOD 65536; + width := right - left + 1; + height := bottom - top + 1 +END ScreenSize; + + PROCEDURE ThreadID* (): INTEGER; VAR id: INTEGER;