Rev 9181 | Rev 9187 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 9181 | Rev 9182 | ||
---|---|---|---|
Line 22... | Line 22... | ||
22 | IMPORT |
22 | IMPORT |
23 | OpenDlg, K := KolibriOS, |
23 | OpenDlg, K := KolibriOS, |
24 | U := Utils, Lines, Menu, List, |
24 | U := Utils, Lines, Menu, List, |
25 | G := Graph, T := Text, E := Encodings, |
25 | G := Graph, T := Text, E := Encodings, |
26 | CB := Clipboard, Languages, |
26 | CB := Clipboard, Languages, |
27 | ChangeLog, Scroll, |
27 | ChangeLog, Scroll, CheckBox, |
28 | RW, Ini, box_lib, Icons, Tabs, Timer; |
28 | RW, Ini, box_lib, Icons, Tabs, Timer; |
Line 29... | Line 29... | ||
29 | 29 | ||
30 | CONST |
30 | CONST |
Line 31... | Line 31... | ||
31 | header = "CEdit (07-sep-2021)"; |
31 | header = "CEdit (08-sep-2021)"; |
32 | 32 | ||
Line 33... | Line 33... | ||
33 | ShellFilter = ""; |
33 | ShellFilter = ""; |
Line 197... | Line 197... | ||
197 | leftButton: BOOLEAN; |
197 | leftButton: BOOLEAN; |
198 | hScroll, vScroll: Scroll.tScroll; |
198 | hScroll, vScroll: Scroll.tScroll; |
199 | LEFT: INTEGER; |
199 | LEFT: INTEGER; |
Line 200... | Line 200... | ||
200 | 200 | ||
201 | FindEdit, ReplaceEdit, GotoEdit: box_lib.edit_box; |
201 | FindEdit, ReplaceEdit, GotoEdit: box_lib.edit_box; |
Line 202... | Line 202... | ||
202 | CS, WH, BKW: box_lib.checkbox; |
202 | CS, WH, BKW: CheckBox.tCheckBox; |
203 | 203 | ||
Line 204... | Line 204... | ||
204 | new_searchText, searchText, replaceText, gotoText: T.tString; |
204 | new_searchText, searchText, replaceText, gotoText: T.tString; |
Line 479... | Line 479... | ||
479 | END; |
479 | END; |
Line 480... | Line 480... | ||
480 | 480 | ||
481 | T.getScroll(text, scrollX, scrollY); |
481 | T.getScroll(text, scrollX, scrollY); |
482 | DrawScroll(vScroll, LEFT + canvas.width, TOP - 1, scrollY, text.count - 1); |
482 | DrawScroll(vScroll, LEFT + canvas.width, TOP - 1, scrollY, text.count - 1); |
- | 483 | DrawScroll(hScroll, LEFT, TOP + canvas.height, scrollX, text.maxLength); |
|
- | 484 | IF search & searchOpened THEN |
|
- | 485 | CheckBox.paint(BKW); |
|
- | 486 | CheckBox.paint(CS); |
|
- | 487 | CheckBox.paint(WH); |
|
Line 483... | Line 488... | ||
483 | DrawScroll(hScroll, LEFT, TOP + canvas.height, scrollX, text.maxLength); |
488 | END; |
484 | 489 | ||
485 | G.DrawCanvas(canvas, LEFT, TOP); |
490 | G.DrawCanvas(canvas, LEFT, TOP); |
486 | NotFound; |
491 | NotFound; |
Line 539... | Line 544... | ||
539 | INC(top, 15); |
544 | INC(top, 15); |
540 | INC(left, SEARCH_PADDING); |
545 | INC(left, SEARCH_PADDING); |
541 | K.DrawText866(left, top, K.textColor, "find"); |
546 | K.DrawText866(left, top, K.textColor, "find"); |
542 | K.DrawText866(left, top + 55, K.textColor, "replace with"); |
547 | K.DrawText866(left, top + 55, K.textColor, "replace with"); |
543 | K.DrawText866(left, top + 330, K.textColor, "go to line"); |
548 | K.DrawText866(left, top + 330, K.textColor, "go to line"); |
544 | BKW.top_s := BKW.top_s MOD 65536 + (top + 110) * 65536; |
549 | BKW.top := top + 110; |
545 | CS.top_s := CS.top_s MOD 65536 + (top + 140) * 65536; |
550 | BKW.left := left; |
546 | WH.top_s := WH.top_s MOD 65536 + (top + 170) * 65536; |
551 | CS.top := top + 140; |
547 | BKW.left_s := BKW.left_s MOD 65536 + left * 65536; |
552 | CS.left := left; |
548 | CS.left_s := CS.left_s MOD 65536 + left * 65536; |
553 | WH.top := top + 170; |
549 | WH.left_s := WH.left_s MOD 65536 + left * 65536; |
554 | WH.left := left; |
550 | FindEdit.top := top + 20; |
555 | FindEdit.top := top + 20; |
551 | ReplaceEdit.top := top + 75; |
556 | ReplaceEdit.top := top + 75; |
552 | GotoEdit.top := top + 350; |
557 | GotoEdit.top := top + 350; |
553 | FindEdit.left := left; |
558 | FindEdit.left := left; |
554 | ReplaceEdit.left := left; |
559 | ReplaceEdit.left := left; |
555 | GotoEdit.left := left; |
560 | GotoEdit.left := left; |
556 | box_lib.edit_box_draw(FindEdit); |
561 | box_lib.edit_box_draw(FindEdit); |
557 | box_lib.edit_box_draw(ReplaceEdit); |
562 | box_lib.edit_box_draw(ReplaceEdit); |
558 | box_lib.edit_box_draw(GotoEdit); |
563 | box_lib.edit_box_draw(GotoEdit); |
559 | box_lib.check_box_draw2(BKW); K.DrawText866(left + 20, top + 110, K.textColor, "backward"); |
- | |
560 | box_lib.check_box_draw2(CS); K.DrawText866(left + 20, top + 140, K.textColor, "match case"); |
- | |
561 | box_lib.check_box_draw2(WH); K.DrawText866(left + 20, top + 170, K.textColor, "whole word"); |
- | |
562 | y := top + 200; |
564 | y := top + 200; |
563 | K.CreateButton(btnFindNext, left, y, btnWidth, btnHeight, K.btnColor, "next"); INC(y, btnHeight + 10); |
565 | K.CreateButton(btnFindNext, left, y, btnWidth, btnHeight, K.btnColor, "next"); INC(y, btnHeight + 10); |
564 | K.CreateButton(btnReplace, left, y, btnWidth, btnHeight, K.btnColor, "replace"); INC(y, btnHeight + 10); |
566 | K.CreateButton(btnReplace, left, y, btnWidth, btnHeight, K.btnColor, "replace"); INC(y, btnHeight + 10); |
565 | K.CreateButton(btnReplaceAll, left, y, btnWidth + 5*fontWidth - 2, btnHeight, K.btnColor, "replace all"); |
567 | K.CreateButton(btnReplaceAll, left, y, btnWidth + 5*fontWidth - 2, btnHeight, K.btnColor, "replace all"); |
566 | K.CreateButton(btnGoto, left, top + 380, btnWidth, btnHeight, K.btnColor, "go"); |
568 | K.CreateButton(btnGoto, left, top + 380, btnWidth, btnHeight, K.btnColor, "go"); |
Line 990... | Line 992... | ||
990 | BEGIN |
992 | BEGIN |
991 | FindEdit := createEdit(searchLeft, TOP + 20); |
993 | FindEdit := createEdit(searchLeft, TOP + 20); |
992 | ReplaceEdit := createEdit(searchLeft, TOP + 20 + 55); |
994 | ReplaceEdit := createEdit(searchLeft, TOP + 20 + 55); |
993 | GotoEdit := createEdit(searchLeft, TOP + 20 + 330); |
995 | GotoEdit := createEdit(searchLeft, TOP + 20 + 330); |
994 | GotoEdit.flags := ORD(BITS(GotoEdit.flags) + BITS(8000H)); |
996 | GotoEdit.flags := ORD(BITS(GotoEdit.flags) + BITS(8000H)); |
995 | BKW := box_lib.kolibri_new_check_box(searchLeft, TOP + 90 + 20, 16, 16, "", 8*fontWidth + 4); |
997 | BKW := CheckBox.create("backward"); |
996 | CS := box_lib.kolibri_new_check_box(searchLeft, TOP + 120 + 20, 16, 16, "", 10*fontWidth + 4); |
998 | CS := CheckBox.create("match case"); |
997 | WH := box_lib.kolibri_new_check_box(searchLeft, TOP + 150 + 20, 16, 16, "", 10*fontWidth + 4); |
999 | WH := CheckBox.create("whole word"); |
998 | END createSearchForm; |
1000 | END createSearchForm; |
Line 999... | Line 1001... | ||
999 | 1001 | ||
1000 | 1002 | ||
Line 1046... | Line 1048... | ||
1046 | Scroll.MouseDown(vScroll, x + LEFT, y + TOP); |
1048 | Scroll.MouseDown(vScroll, x + LEFT, y + TOP); |
1047 | T.getScroll(text, scrollX, scrollY); |
1049 | T.getScroll(text, scrollX, scrollY); |
1048 | T.scroll(text, 0, vScroll.value - scrollY); |
1050 | T.scroll(text, 0, vScroll.value - scrollY); |
1049 | repaint |
1051 | repaint |
1050 | END; |
1052 | END; |
- | 1053 | IF search & searchOpened THEN |
|
- | 1054 | CheckBox.MouseDown(BKW, x + LEFT, y + TOP); |
|
- | 1055 | CheckBox.MouseDown(CS, x + LEFT, y + TOP); |
|
- | 1056 | CheckBox.MouseDown(WH, x + LEFT, y + TOP); |
|
- | 1057 | END; |
|
1051 | IF (0 <= x) & (x < canvas.width) & (0 <= y) & (y < canvas.height) THEN |
1058 | IF (0 <= x) & (x < canvas.width) & (0 <= y) & (y < canvas.height) THEN |
1052 | leftButton := TRUE; |
1059 | leftButton := TRUE; |
1053 | SetFocus(FindEdit, FALSE); |
1060 | SetFocus(FindEdit, FALSE); |
1054 | IF ~shift THEN |
1061 | IF ~shift THEN |
1055 | T.resetSelect(text) |
1062 | T.resetSelect(text) |
Line 1063... | Line 1070... | ||
1063 | 1070 | ||
1064 | PROCEDURE LeftButtonUp; |
1071 | PROCEDURE LeftButtonUp; |
1065 | BEGIN |
1072 | BEGIN |
1066 | leftButton := FALSE; |
1073 | leftButton := FALSE; |
1067 | Scroll.MouseUp(hScroll); |
1074 | Scroll.MouseUp(hScroll); |
- | 1075 | Scroll.MouseUp(vScroll); |
|
- | 1076 | CheckBox.MouseUp(BKW); |
|
- | 1077 | CheckBox.MouseUp(CS); |
|
1068 | Scroll.MouseUp(vScroll) |
1078 | CheckBox.MouseUp(WH); |
Line 1069... | Line 1079... | ||
1069 | END LeftButtonUp; |
1079 | END LeftButtonUp; |
1070 | 1080 | ||
Line 1199... | Line 1209... | ||
1199 | DEC(x, menu.width) |
1209 | DEC(x, menu.width) |
1200 | END; |
1210 | END; |
1201 | CanvasToScreen(x, y) |
1211 | CanvasToScreen(x, y) |
1202 | END |
1212 | END |
1203 | ELSIF menu = menuEncoding THEN |
1213 | ELSIF menu = menuEncoding THEN |
1204 | Menu.setCheck(menu, menuUTF8BOM, ORD(text.enc = E.UTF8BOM)*2); |
1214 | Menu.option(menu, menuUTF8BOM, text.enc = E.UTF8BOM); |
1205 | Menu.setCheck(menu, menuUTF8, ORD(text.enc = E.UTF8)*2); |
1215 | Menu.option(menu, menuUTF8, text.enc = E.UTF8); |
1206 | Menu.setCheck(menu, menuCP866, ORD(text.enc = E.CP866)*2); |
1216 | Menu.option(menu, menuCP866, text.enc = E.CP866); |
1207 | Menu.setCheck(menu, menuWin1251, ORD(text.enc = E.W1251)*2); |
1217 | Menu.option(menu, menuWin1251, text.enc = E.W1251); |
1208 | INC(x, menuEncodingX) |
1218 | INC(x, menuEncodingX) |
1209 | ELSIF menu = menuEOL THEN |
1219 | ELSIF menu = menuEOL THEN |
1210 | Menu.setCheck(menu, menuCRLF, ORD(text.eol = RW.EOL_CRLF)*2); |
1220 | Menu.option(menu, menuCRLF, text.eol = RW.EOL_CRLF); |
1211 | Menu.setCheck(menu, menuLF, ORD(text.eol = RW.EOL_LF)*2); |
1221 | Menu.option(menu, menuLF, text.eol = RW.EOL_LF); |
1212 | Menu.setCheck(menu, menuCR, ORD(text.eol = RW.EOL_CR)*2); |
1222 | Menu.option(menu, menuCR, text.eol = RW.EOL_CR); |
1213 | INC(x, menuEOLX) |
1223 | INC(x, menuEOLX) |
1214 | ELSIF menu = menuView THEN |
1224 | ELSIF menu = menuView THEN |
1215 | Menu.setCheck(menu, menuNumbers, ORD(text.numbers)); |
1225 | Menu.check(menu, menuNumbers, text.numbers); |
1216 | Menu.setCheck(menu, menuFontSize, ORD(font = font2)); |
1226 | Menu.check(menu, menuFontSize, font = font2); |
1217 | FOR i := 0 TO Ini.sections.count - 1 DO |
1227 | FOR i := 0 TO Ini.sections.count - 1 DO |
1218 | Menu.setCheck(menu, menuColors + i, ORD(Ini.curSectionNum = i)*2) |
1228 | Menu.option(menu, menuColors + i, Ini.curSectionNum = i) |
1219 | END; |
1229 | END; |
1220 | INC(x, menuViewX) |
1230 | INC(x, menuViewX) |
1221 | ELSIF menu = menuSyntax THEN |
1231 | ELSIF menu = menuSyntax THEN |
1222 | Menu.setCheck(menu, menuNone, ORD(text.lang = Languages.langNone)*2); |
1232 | Menu.option(menu, menuNone, text.lang = Languages.langNone); |
1223 | Menu.setCheck(menu, menuC, ORD(text.lang = Languages.langC)*2); |
1233 | Menu.option(menu, menuC, text.lang = Languages.langC); |
1224 | Menu.setCheck(menu, menuFasm, ORD(text.lang = Languages.langFasm)*2); |
1234 | Menu.option(menu, menuFasm, text.lang = Languages.langFasm); |
1225 | Menu.setCheck(menu, menuIni, ORD(text.lang = Languages.langIni)*2); |
1235 | Menu.option(menu, menuIni, text.lang = Languages.langIni); |
1226 | Menu.setCheck(menu, menuJSON, ORD(text.lang = Languages.langJSON)*2); |
1236 | Menu.option(menu, menuJSON, text.lang = Languages.langJSON); |
1227 | Menu.setCheck(menu, menuLua, ORD(text.lang = Languages.langLua)*2); |
1237 | Menu.option(menu, menuLua, text.lang = Languages.langLua); |
1228 | Menu.setCheck(menu, menuOberon, ORD(text.lang = Languages.langOberon)*2); |
1238 | Menu.option(menu, menuOberon, text.lang = Languages.langOberon); |
1229 | Menu.setCheck(menu, menuPascal, ORD(text.lang = Languages.langPascal)*2); |
1239 | Menu.option(menu, menuPascal, text.lang = Languages.langPascal); |
1230 | INC(x, menuSyntaxX) |
1240 | INC(x, menuSyntaxX) |
1231 | ELSIF menu = menuProgram THEN |
1241 | ELSIF menu = menuProgram THEN |
1232 | Menu.setEnabled(menu, menuBuild, buildScript # ""); |
1242 | Menu.setEnabled(menu, menuBuild, buildScript # ""); |
1233 | Menu.setEnabled(menu, menuDebug, debugScript # ""); |
1243 | Menu.setEnabled(menu, menuDebug, debugScript # ""); |
1234 | Menu.setEnabled(menu, menuRun, runScript # ""); |
1244 | Menu.setEnabled(menu, menuRun, runScript # ""); |
Line 1350... | Line 1360... | ||
1350 | repaint |
1360 | repaint |
1351 | |menuFind: |
1361 | |menuFind: |
1352 | ShowSearchPanel; |
1362 | ShowSearchPanel; |
1353 | SetFocus(FindEdit, TRUE) |
1363 | SetFocus(FindEdit, TRUE) |
1354 | |menuFindNext: |
1364 | |menuFindNext: |
1355 | notFound := ~T.findNext(text, box_lib.check_box_get_value(BKW)); |
1365 | notFound := ~T.findNext(text, BKW.value); |
1356 | menuFindClicked := TRUE |
1366 | menuFindClicked := TRUE |
1357 | |menuFindPrev: |
1367 | |menuFindPrev: |
1358 | notFound := ~T.findNext(text, ~box_lib.check_box_get_value(BKW)); |
1368 | notFound := ~T.findNext(text, ~BKW.value); |
1359 | menuFindClicked := TRUE |
1369 | menuFindClicked := TRUE |
1360 | |menuGoto: |
1370 | |menuGoto: |
1361 | ShowSearchPanel; |
1371 | ShowSearchPanel; |
1362 | SetFocus(GotoEdit, TRUE) |
1372 | SetFocus(GotoEdit, TRUE) |
1363 | |menuToggleBookmark: |
1373 | |menuToggleBookmark: |
Line 1729... | Line 1739... | ||
1729 | ELSE |
1739 | ELSE |
1730 | IF keyCode = 61 THEN (* F3 *) |
1740 | IF keyCode = 61 THEN (* F3 *) |
1731 | key := -1; |
1741 | key := -1; |
1732 | IF search & (searchText # "") THEN |
1742 | IF search & (searchText # "") THEN |
1733 | IF shift THEN |
1743 | IF shift THEN |
1734 | notFound := ~T.findNext(text, ~box_lib.check_box_get_value(BKW)) |
1744 | notFound := ~T.findNext(text, ~BKW.value) |
1735 | ELSE |
1745 | ELSE |
1736 | notFound := ~T.findNext(text, box_lib.check_box_get_value(BKW)) |
1746 | notFound := ~T.findNext(text, BKW.value) |
1737 | END |
1747 | END |
1738 | END |
1748 | END |
1739 | ELSIF keyCode = 60 THEN (* F2 *) |
1749 | ELSIF keyCode = 60 THEN (* F2 *) |
1740 | key := -1; |
1750 | key := -1; |
1741 | IF ctrl THEN |
1751 | IF ctrl THEN |
Line 1943... | Line 1953... | ||
1943 | Script(buildScript) |
1953 | Script(buildScript) |
1944 | |btnRun: |
1954 | |btnRun: |
1945 | Script(runScript) |
1955 | Script(runScript) |
1946 | |btnFindNext: |
1956 | |btnFindNext: |
1947 | IF searchText # "" THEN |
1957 | IF searchText # "" THEN |
1948 | notFound := ~T.findNext(text, box_lib.check_box_get_value(BKW)); |
1958 | notFound := ~T.findNext(text, BKW.value); |
1949 | repaint |
1959 | repaint |
1950 | END |
1960 | END |
1951 | |btnReplace: |
1961 | |btnReplace: |
1952 | T.replace(text, replaceText, LENGTH(searchText)); |
1962 | T.replace(text, replaceText, LENGTH(searchText)); |
1953 | repaint |
1963 | repaint |
Line 2031... | Line 2041... | ||
2031 | Scroll.MouseDown(hScroll, x + LEFT, y + TOP) |
2041 | Scroll.MouseDown(hScroll, x + LEFT, y + TOP) |
2032 | END; |
2042 | END; |
2033 | IF ~vScroll.mouse THEN |
2043 | IF ~vScroll.mouse THEN |
2034 | Scroll.MouseDown(vScroll, x + LEFT, y + TOP) |
2044 | Scroll.MouseDown(vScroll, x + LEFT, y + TOP) |
2035 | END; |
2045 | END; |
- | 2046 | IF search & searchOpened THEN |
|
- | 2047 | CheckBox.MouseDown(BKW, x + LEFT, y + TOP); |
|
- | 2048 | CheckBox.MouseDown(CS, x + LEFT, y + TOP); |
|
- | 2049 | CheckBox.MouseDown(WH, x + LEFT, y + TOP); |
|
- | 2050 | END; |
|
2036 | IF (ABS(x - firstClickX) < 5) & (ABS(y - firstClickY) < 5) THEN |
2051 | IF (ABS(x - firstClickX) < 5) & (ABS(y - firstClickY) < 5) THEN |
2037 | IF (0 <= x) & (x < canvas.width) & (0 <= y) & (y < canvas.height) THEN |
2052 | IF (0 <= x) & (x < canvas.width) & (0 <= y) & (y < canvas.height) THEN |
2038 | leftButton := FALSE; |
2053 | leftButton := FALSE; |
2039 | T.selectWord(text); |
2054 | T.selectWord(text); |
2040 | repaint |
2055 | repaint |
Line 2048... | Line 2063... | ||
2048 | END; |
2063 | END; |
2049 | IF search & searchOpened THEN |
2064 | IF search & searchOpened THEN |
2050 | EditBox(FindEdit); |
2065 | EditBox(FindEdit); |
2051 | EditBox(ReplaceEdit); |
2066 | EditBox(ReplaceEdit); |
2052 | EditBox(GotoEdit); |
2067 | EditBox(GotoEdit); |
2053 | box_lib.check_box_mouse2(CS); |
- | |
2054 | box_lib.check_box_mouse2(WH); |
- | |
2055 | box_lib.check_box_mouse2(BKW); |
- | |
2056 | IF box_lib.check_box_get_value(CS) # cs THEN |
2068 | IF CS.value # cs THEN |
2057 | cs := ~cs; |
2069 | cs := ~cs; |
2058 | notFound := ~T.search(text, searchText, cs, whole); |
2070 | notFound := ~T.search(text, searchText, cs, whole); |
2059 | repaint |
2071 | repaint |
2060 | END; |
2072 | END; |
2061 | IF box_lib.check_box_get_value(WH) # whole THEN |
2073 | IF WH.value # whole THEN |
2062 | whole := ~whole; |
2074 | whole := ~whole; |
2063 | notFound := ~T.search(text, searchText, cs, whole); |
2075 | notFound := ~T.search(text, searchText, cs, whole); |
2064 | repaint |
2076 | repaint |
2065 | END |
2077 | END |
2066 | END; |
2078 | END; |