Subversion Repositories Kolibri OS

Rev

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;