Subversion Repositories Kolibri OS

Rev

Rev 9208 | Rev 9295 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 9208 Rev 9210
Line 26... Line 26...
26
    CB := Clipboard, Languages,
26
    CB := Clipboard, Languages,
27
    ChangeLog, Scroll, CheckBox,
27
    ChangeLog, Scroll, CheckBox,
28
    RW, Ini, EB := EditBox, Icons, Tabs, Timer;
28
    RW, Ini, EB := EditBox, Icons, Tabs, Timer;
Line 29... Line 29...
29
 
29
 
30
CONST
30
CONST
Line 31... Line 31...
31
    header = "CEdit (28-sep-2021)";
31
    HEADER = "CEdit (03-oct-2021)";
32
 
32
 
Line 33... Line 33...
33
    ShellFilter = "";
33
    ShellFilter = "";
34
    EditFilter = "SH|ASM|TXT|INC|OB07|C|CPP|H|PAS|PP|LUA|INI|JSON";
34
    EditFilter = "SH|INC|TXT|ASM|OB07|C|CPP|H|PAS|PP|LUA|INI|JSON";
35
 
35
 
Line 49... Line 49...
49
    btnBuild = 28;
49
    btnBuild = 28;
50
    btnRun = 29;
50
    btnRun = 29;
Line 51... Line 51...
51
 
51
 
52
    btnYes = 40;
52
    btnYes = 40;
53
    btnNo = 41;
53
    btnNo = 41;
54
    btnFindNext = 60;
54
    btnFindNext = 42;
55
    btnReplace = 61;
55
    btnReplace = 43;
56
    btnReplaceAll = 62;
56
    btnReplaceAll = 44;
57
    btnGoto = 63;
57
    btnGoto = 45;
58
    btnCloseSearch = 64;
58
    btnCloseSearch = 46;
Line 59... Line 59...
59
    btnHideSearch = 65;
59
    btnHideSearch = 47;
Line 60... Line 60...
60
 
60
 
61
    mainMenuBtn = 70;
61
    mainMenuBtn = 60;
62
 
62
 
63
    btnHeight = 25;
63
    btnHeight = 25;
Line 182... Line 182...
182
    OD: OpenDlg.Dialog;
182
    OD: OpenDlg.Dialog;
183
    confirm, notFound, menuFindClicked, search, searchOpened, modified: BOOLEAN;
183
    confirm, notFound, menuFindClicked, search, searchOpened, modified: BOOLEAN;
Line 184... Line 184...
184
 
184
 
185
    switch, closing: BOOLEAN;
185
    switch, closing: BOOLEAN;
186
    leftButton: BOOLEAN;
-
 
187
    hScroll, vScroll: Scroll.tScroll;
186
    leftButton: BOOLEAN;
Line 188... Line 187...
188
    LEFT: INTEGER;
187
    LEFT: INTEGER;
-
 
188
 
189
 
189
    FindEdit, ReplaceEdit, GotoEdit: EB.tEditBox;
Line 190... Line 190...
190
    FindEdit, ReplaceEdit, GotoEdit: EB.tEditBox;
190
    hScroll, vScroll: Scroll.tScroll;
191
    CS, WH, BKW: CheckBox.tCheckBox;
191
    CS, WH, BKW: CheckBox.tCheckBox;
Line 224... Line 224...
224
    K.DrawText(LEFT, y, K.textColor, s1)
224
    K.DrawText(LEFT, y, K.textColor, s1)
225
END WritePos;
225
END WritePos;
Line 226... Line 226...
226
 
226
 
227
 
-
 
228
PROCEDURE EditBox_Focus (edit: EB.tEditBox): BOOLEAN;
-
 
229
VAR
-
 
230
	res: BOOLEAN;
-
 
231
BEGIN
-
 
232
	res := FALSE;
227
 
233
	IF edit # NIL THEN
-
 
234
	    res := 1 IN edit.flags
-
 
235
	END
228
PROCEDURE EditBox_Focus (edit: EB.tEditBox): BOOLEAN;
Line 236... Line 229...
236
	RETURN res
229
	RETURN 1 IN edit.flags
237
END EditBox_Focus;
230
END EditBox_Focus;
Line 247... Line 240...
247
		Timer.create(mainTID)
240
		Timer.create(mainTID)
248
	END
241
	END
249
END resetTimer;
242
END resetTimer;
Line 250... Line 243...
250
 
243
 
251
 
244
 
252
PROCEDURE EditBox_SetFocus (edit: EB.tEditBox; value: BOOLEAN);
245
PROCEDURE EditBox_SetFocus (VAR edit: EB.tEditBox; value: BOOLEAN);
253
BEGIN
246
BEGIN
254
    IF value THEN
247
    IF value THEN
255
    	INCL(edit.flags, 1)
248
    	INCL(edit.flags, 1)
Line 260... Line 253...
260
        EB.paint(edit)
253
        EB.paint(edit)
261
    END
254
    END
262
END EditBox_SetFocus;
255
END EditBox_SetFocus;
Line 263... Line 256...
263
 
256
 
264
 
257
 
265
PROCEDURE SetFocus (edit: EB.tEditBox; value: BOOLEAN);
258
PROCEDURE SetFocus (VAR edit: EB.tEditBox; value: BOOLEAN);
266
BEGIN
259
BEGIN
267
    EditBox_SetFocus(FindEdit, FALSE);
260
    EditBox_SetFocus(FindEdit, FALSE);
268
    EditBox_SetFocus(ReplaceEdit, FALSE);
261
    EditBox_SetFocus(ReplaceEdit, FALSE);
Line 411... Line 404...
411
 
404
 
412
PROCEDURE DrawState (text: T.tText; width, height: INTEGER);
405
PROCEDURE DrawState (text: T.tText; width, height: INTEGER);
413
VAR
406
VAR
414
    y: INTEGER;
407
    y: INTEGER;
-
 
408
    s: ARRAY 24 OF WCHAR;
415
    s: ARRAY 24 OF WCHAR;
409
    header: RW.tFileName;
416
BEGIN
-
 
417
    y := (btnHeight - fontHeight) DIV 2 + btnTop;
410
BEGIN
418
    s := "";
411
    s := "";
419
    U.append(s, RW.eolNames[text.eol]);
412
    U.append(s, RW.eolNames[text.eol]);
420
    U.append(s, 20X);
413
    U.append(s, 20X + 20X);
-
 
414
    U.append(s, E.names[text.enc]);
-
 
415
    header := HEADER;
-
 
416
    IF text.fileName # "" THEN
421
    U.append(s, E.names[text.enc]);
417
    	U.append8(header, " - ");
-
 
418
    	U.append8(header, text.fileName)
-
 
419
    END;
422
    K.DrawRect(width - LEN(s)*fontWidth, y, LEN(s)*fontWidth, fontHeight, K.winColor);
420
    K.SetCaption(header);
423
    K.DrawText(width - LENGTH(s)*fontWidth, y, K.textColor, s);
421
    K.DrawRect(LEFT + 16*fontWidth, TOP + canvas.height + scrollWidth, width - (LEFT + 16*fontWidth), BOTTOM - scrollWidth + 1, K.winColor);
424
    y := height - (BOTTOM - scrollWidth) + (BOTTOM - scrollWidth - 16) DIV 2;
-
 
425
    K.DrawRect(LEFT + 16*fontWidth, TOP + canvas.height + scrollWidth, width - LEFT - 24*fontWidth, BOTTOM - scrollWidth + 1, K.winColor);
422
    y := height - (BOTTOM - scrollWidth) + (BOTTOM - scrollWidth - 16) DIV 2;
426
    K.DrawText866(LEFT + 16*fontWidth, y, K.textColor, text.fileName);
423
    K.DrawText(width - (LENGTH(s) + 10)*fontWidth, y, K.textColor, s);
427
    WriteModified(width - 8*fontWidth, y)
424
    WriteModified(width - 8*fontWidth, y)
Line 428... Line 425...
428
END DrawState;
425
END DrawState;
Line 574... Line 571...
574
    END drawToolbarBtn;
571
    END drawToolbarBtn;
Line 575... Line 572...
575
 
572
 
576
 
573
 
577
BEGIN
574
BEGIN
578
    K.BeginDraw;
575
    K.BeginDraw;
579
    K.CreateWindow(30 + K.GetTickCount() MOD 128, 30 + K.GetTickCount() MOD 128, winWidth, winHeight, K.winColor, 73H, 0, 0, header);
576
    K.CreateWindow(30 + K.GetTickCount() MOD 128, 30 + K.GetTickCount() MOD 128, winWidth, winHeight, K.winColor, 73H, 0, 0, "");
580
    IF (text # NIL) & ~K.RolledUp() THEN
577
    IF (text # NIL) & ~K.RolledUp() THEN
581
    	IF confirm THEN
578
    	IF confirm THEN
582
    		resetTimer
579
    		resetTimer
Line 696... Line 693...
696
BEGIN
693
BEGIN
697
    OD._type := OpenDlg.tsave;
694
    OD._type := OpenDlg.tsave;
698
    U.getFileName(text.fileName, OD.FileName, U.SLASH);
695
    U.getFileName(text.fileName, OD.FileName, U.SLASH);
699
    IF OD.FileName = "" THEN
696
    IF OD.FileName = "" THEN
700
        OD.FileName := "NewFile.";
697
        OD.FileName := "NewFile.";
701
        CASE text.lang OF
-
 
702
        |Languages.langText:   ext := "txt"
698
        Languages.getExt(text.lang, ext);
703
        |Languages.langC:      ext := "c"
-
 
704
        |Languages.langFasm:   ext := "asm"
-
 
705
        |Languages.langIni:    ext := "ini"
-
 
706
        |Languages.langJSON:   ext := "json"
-
 
707
        |Languages.langLua:    ext := "lua"
-
 
708
        |Languages.langOberon: ext := "ob07"
-
 
709
        |Languages.langPascal: ext := "pas"
-
 
710
        END;
-
 
711
        U.append8(OD.FileName, ext)
699
        U.append8(OD.FileName, ext)
712
    END;
700
    END;
713
    OpenFile(fileName, EditFilter);
701
    OpenFile(fileName, EditFilter);
714
    IF fileName # "" THEN
702
    IF fileName # "" THEN
715
        IF T.save(text, fileName) THEN
703
        IF T.save(text, fileName) THEN
Line 921... Line 909...
921
        error("'cedit: too many files' -E")
909
        error("'cedit: too many files' -E")
922
    END
910
    END
923
END open;
911
END open;
Line 924... Line -...
924
 
-
 
925
 
-
 
926
PROCEDURE createEdit (left, top: INTEGER): EB.tEditBox;
-
 
927
VAR
-
 
928
    edit, EditBox0: EB.tEditBox;
-
 
929
BEGIN
-
 
930
    NEW(EditBox0);
-
 
931
    EditBox0.text := K.malloc(EDITBOX_MAXCHARS + 2);
-
 
932
    ASSERT(EditBox0.text # 0);
-
 
933
    edit := EB.create(left, top, EditBox_Width, EDITBOX_MAXCHARS, EditBox0);
-
 
934
    edit.flags := {1, 14};
-
 
935
    edit.text_color := 30000000H;
-
 
936
    EditBox_SetFocus(edit, FALSE)
-
 
937
    RETURN edit
-
 
938
END createEdit;
-
 
939
 
912
 
940
 
913
 
941
PROCEDURE createSearchForm;
914
PROCEDURE createSearchForm;
942
BEGIN
915
BEGIN
943
    FindEdit := createEdit(searchLeft, TOP + 20);
916
	EB.create(searchLeft, TOP + 20, EditBox_Width, EDITBOX_MAXCHARS, FindEdit);
944
    ReplaceEdit := createEdit(searchLeft, TOP + 20 + 55);
917
	EB.create(searchLeft, TOP + 20 + 55, EditBox_Width, EDITBOX_MAXCHARS, ReplaceEdit);
945
    GotoEdit := createEdit(searchLeft, TOP + 20 + 330);
918
    EB.create(searchLeft, TOP + 20 + 330, EditBox_Width, EDITBOX_MAXCHARS, GotoEdit);
946
    INCL(GotoEdit.flags, 15);
919
    INCL(GotoEdit.flags, 15);
947
    CheckBox.create("backward", BKW);
920
    CheckBox.create("backward", BKW);
948
    CheckBox.create("match case", CS);
921
    CheckBox.create("match case", CS);
Line 1039... Line 1012...
1039
    Menu.close(context)
1012
    Menu.close(context)
1040
END CloseMenu;
1013
END CloseMenu;
Line 1041... Line 1014...
1041
 
1014
 
-
 
1015
 
-
 
1016
PROCEDURE MenuItemClick (menu: Menu.tMenu; id: INTEGER);
1042
 
1017
VAR
-
 
1018
	msg: ARRAY 2 OF INTEGER;
-
 
1019
BEGIN
1043
PROCEDURE MenuItemClick (menu: Menu.tMenu; id: INTEGER);
1020
	msg[0] := id;
1044
BEGIN
1021
	msg[1] := 8;
Line 1045... Line 1022...
1045
    K.SendIPC(mainTID, id)
1022
    K.SendIPC(mainTID, msg)
1046
END MenuItemClick;
1023
END MenuItemClick;
Line 1938... Line 1915...
1938
CONST
1915
CONST
1939
    DELAY = 10;
1916
    DELAY = 10;
1940
VAR
1917
VAR
1941
    msState: SET;
1918
    msState: SET;
1942
    scroll, x, y, scrollX, scrollY: INTEGER;
1919
    scroll, x, y, scrollX, scrollY: INTEGER;
-
 
1920
    pos1, pos2: T.tPoint;
Line 1943... Line 1921...
1943
 
1921
 
1944
 
1922
 
1945
    PROCEDURE EditBox (eb: EB.tEditBox);
1923
    PROCEDURE EditBox (VAR eb: EB.tEditBox);
1946
    VAR
1924
    VAR
1947
        focus: BOOLEAN;
1925
        focus: BOOLEAN;
1948
    BEGIN
1926
    BEGIN
Line 1967... Line 1945...
1967
            T.scroll(text, 0, scroll*3);
1945
            T.scroll(text, 0, scroll*3);
1968
            repaint
1946
            repaint
1969
        END;
1947
        END;
1970
        IF leftButton THEN
1948
        IF leftButton THEN
1971
            IF K.GetTickCount() - time >= DELAY THEN
1949
            IF K.GetTickCount() - time >= DELAY THEN
-
 
1950
            	T.getPos(text, pos1.Y, pos1.X);
1972
                mouse(x, y);
1951
                mouse(x, y);
1973
                T.mouse(text, x, y);
1952
                T.mouse(text, x, y);
-
 
1953
                T.getPos(text, pos2.Y, pos2.X);
-
 
1954
                IF (pos1.X # pos2.X) OR (pos1.Y # pos2.Y) THEN
1974
                repaint
1955
                	repaint
1975
            END
1956
                END
-
 
1957
            END
1976
        END;
1958
        END;
Line 1977... Line 1959...
1977
 
1959
 
1978
		Scroll.mouse(hScroll);
1960
		Scroll.mouse(hScroll);
1979
		Scroll.mouse(vScroll);
1961
		Scroll.mouse(vScroll);