Subversion Repositories Kolibri OS

Rev

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

Rev 9073 Rev 9174
Line 23... Line 23...
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,
28
    RW, Ini, box_lib, Icons, Tabs;
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 (17-jul-2021)";
31
    header = "CEdit (02-sep-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";
34
    EditFilter = "SH|ASM|TXT|INC|OB07|C|CPP|H|PAS|PP|LUA|INI|JSON";
35
 
35
 
Line 46... Line 46...
46
    btnRedo = 25;
46
    btnRedo = 25;
47
    btnUpper = 26;
47
    btnUpper = 26;
48
    btnLower = 27;
48
    btnLower = 27;
49
    btnBuild = 28;
49
    btnBuild = 28;
50
    btnRun = 29;
50
    btnRun = 29;
51
    btnUp = 30;
51
 
52
    btnDown = 31;
-
 
53
    btnLeft = 32;
-
 
54
    btnRight = 33;
-
 
55
    btnYes = 40;
52
    btnYes = 40;
56
    btnNo = 41;
53
    btnNo = 41;
57
    btnFindNext = 60;
54
    btnFindNext = 60;
58
    btnReplace = 61;
55
    btnReplace = 61;
59
    btnReplaceAll = 62;
56
    btnReplaceAll = 62;
Line 61... Line 58...
61
    btnCloseFind = 64;
58
    btnCloseFind = 64;
62
    btnHideFind = 65;
59
    btnHideFind = 65;
Line 63... Line 60...
63
 
60
 
64
    btnFile = 70;
61
    btnFile = 70;
-
 
62
    btnEdit = 71;
65
    btnEdit = 71;
63
    btnMenuSearch = 72;
66
    btnEncoding = 72;
64
    btnEncoding = 73;
67
    btnView = 73;
65
    btnView = 74;
68
    btnSyntax = 74;
66
    btnSyntax = 75;
69
    btnProgram = 75;
67
    btnProgram = 76;
Line 70... Line 68...
70
    btnTools = 76;
68
    btnTools = 77;
Line 71... Line 69...
71
 
69
 
72
    MainMenuHeight = fontHeight + 7;
70
    MainMenuHeight = fontHeight + 7;
Line 89... Line 87...
89
    EditBox_Width = 180;
87
    EditBox_Width = 180;
90
    EDITBOX_MAXCHARS = 500;
88
    EDITBOX_MAXCHARS = 500;
Line 91... Line 89...
91
 
89
 
92
    menuFileX = searchLeft;
90
    menuFileX = searchLeft;
-
 
91
    menuEditX = menuFileX + 4*fontWidth + 2 + 7;
93
    menuEditX = menuFileX + 4*fontWidth + 2 + 7;
92
    menuSearchX = menuEditX + 4*fontWidth + 2 + 7;
94
    menuEncodingX = menuEditX + 4*fontWidth + 2 + 7;
93
    menuEncodingX = menuSearchX + 6*fontWidth + 2 + 7;
95
    menuViewX = menuEncodingX + 8*fontWidth + 2 + 7;
94
    menuViewX = menuEncodingX + 8*fontWidth + 2 + 7;
96
    menuSyntaxX = menuViewX + 4*fontWidth + 2 + 7;
95
    menuSyntaxX = menuViewX + 4*fontWidth + 2 + 7;
97
    menuProgramX = menuSyntaxX + 6*fontWidth + 2 + 7;
96
    menuProgramX = menuSyntaxX + 6*fontWidth + 2 + 7;
Line 104... Line 103...
104
    menuSelectAll = 5;
103
    menuSelectAll = 5;
Line 105... Line 104...
105
 
104
 
106
    menuUndo = 6;
105
    menuUndo = 6;
Line -... Line 106...
-
 
106
    menuRedo = 7;
107
    menuRedo = 7;
107
 
108
 
108
    menuCurLine = 100;
Line 109... Line 109...
109
    menuSearch = 8;
109
    menuIndent = 110;
110
    menuGoto = 9;
110
    menuCase = 120;
111
 
111
 
112
    menuNew = 10;
112
    menuNew = 10;
Line 125... Line 125...
125
 
125
 
126
    menuNone = 30;
126
    menuNone = 30;
127
    menuC = 31;
127
    menuC = 31;
128
    menuFasm = 32;
128
    menuFasm = 32;
-
 
129
    menuIni = 33;
129
    menuIni = 33;
130
    menuJSON = 34;
130
    menuLua = 34;
131
    menuLua = 35;
131
    menuOberon = 35;
132
    menuOberon = 36;
Line 132... Line 133...
132
    menuPascal = 36;
133
    menuPascal = 37;
133
 
134
 
134
    menuBuild = 50;
135
    menuBuild = 50;
135
    menuBuildScript = 51;
136
    menuBuildScript = 51;
Line 145... Line 146...
145
 
146
 
146
    menuPipet = 70;
147
    menuPipet = 70;
147
    menuBoard = 71;
148
    menuBoard = 71;
Line -... Line 149...
-
 
149
    menuSysFunc = 72;
-
 
150
 
-
 
151
    menuFind = 80;
-
 
152
    menuFindNext = 81;
-
 
153
    menuFindPrev = 82;
-
 
154
    menuGoto = 83;
-
 
155
    menuBookmark = 130;
-
 
156
 
-
 
157
    menuMoveUp = 101;
-
 
158
    menuMoveDown = 102;
-
 
159
    menuDuplicate = 103;
-
 
160
    menuRemove = 104;
-
 
161
 
-
 
162
    menuIncInd = 111;
-
 
163
    menuDecInd = 112;
-
 
164
 
-
 
165
    menuUpper = 121;
-
 
166
    menuLower = 122;
-
 
167
 
-
 
168
    menuToggleBookmark = 131;
-
 
169
    menuNextBookmark = 132;
148
    menuSysFunc = 72;
170
    menuPrevBookmark = 133;
-
 
171
 
Line 149... Line 172...
149
 
172
    maxTexts = 32;
150
    maxTexts = 32;
173
    scrollDelay = 40;
151
 
174
 
Line 163... Line 186...
163
    AppPath, runScript, buildScript, debugScript: RW.tFileName;
186
    AppPath, runScript, buildScript, debugScript: RW.tFileName;
164
    OD: OpenDlg.Dialog;
187
    OD: OpenDlg.Dialog;
165
    confirm, notFound, search, searchOpened, modified: BOOLEAN;
188
    confirm, notFound, search, searchOpened, modified: BOOLEAN;
Line 166... Line 189...
166
 
189
 
167
    switch, closing: BOOLEAN;
190
    switch, closing: BOOLEAN;
168
    leftButton, VScroll, HScroll: BOOLEAN;
191
    leftButton: BOOLEAN;
169
    vScroll, hScroll: Scroll.tScroll;
192
    hScroll, vScroll: Scroll.tScroll;
Line 170... Line 193...
170
    LEFT: INTEGER;
193
    LEFT: INTEGER;
171
 
194
 
Line 172... Line 195...
172
    FindEdit, ReplaceEdit, GotoEdit: box_lib.edit_box;
195
    FindEdit, ReplaceEdit, GotoEdit: box_lib.edit_box;
173
    CS, WH, BKW: box_lib.checkbox;
196
    CS, WH, BKW: box_lib.checkbox;
Line 174... Line 197...
174
 
197
 
Line 175... Line 198...
175
    new_searchText, searchText, replaceText, gotoText: T.tString;
198
    new_searchText, searchText, replaceText, gotoText: T.tString;
Line 176... Line 199...
176
    cs, whole: BOOLEAN;
199
    cs, whole: BOOLEAN;
-
 
200
 
-
 
201
    replaced: INTEGER;
Line 177... Line 202...
177
 
202
 
178
    replaced: INTEGER;
203
    mainTID, delay: INTEGER;
Line 179... Line 204...
179
 
204
 
Line 200... Line 225...
200
    K.DrawText(LEFT, y, K.textColor, s1)
225
    K.DrawText(LEFT, y, K.textColor, s1)
201
END WritePos;
226
END WritePos;
Line 202... Line 227...
202
 
227
 
-
 
228
 
-
 
229
PROCEDURE EditBox_Focus (edit: box_lib.edit_box): BOOLEAN;
-
 
230
VAR
-
 
231
	res: BOOLEAN;
-
 
232
BEGIN
203
 
233
	res := FALSE;
-
 
234
	IF edit # NIL THEN
-
 
235
	    res := 1 IN BITS(edit.flags)
204
PROCEDURE EditBox_Focus (edit: box_lib.edit_box): BOOLEAN;
236
	END
Line -... Line 237...
-
 
237
	RETURN res
-
 
238
END EditBox_Focus;
-
 
239
 
-
 
240
 
-
 
241
PROCEDURE resetTimer;
-
 
242
BEGIN
-
 
243
	IF EditBox_Focus(FindEdit) OR EditBox_Focus(ReplaceEdit) OR EditBox_Focus(GotoEdit) THEN
-
 
244
		T.hideCursor;
-
 
245
		Timer.stop
-
 
246
	ELSE
-
 
247
		T.showCursor;
-
 
248
		Timer.reset
205
    RETURN 1 IN BITS(edit.flags)
249
	END
206
END EditBox_Focus;
250
END resetTimer;
207
 
251
 
208
 
252
 
209
PROCEDURE EditBox_SetFocus (edit: box_lib.edit_box; value: BOOLEAN);
253
PROCEDURE EditBox_SetFocus (edit: box_lib.edit_box; value: BOOLEAN);
Line 222... Line 266...
222
PROCEDURE SetFocus (edit: box_lib.edit_box; value: BOOLEAN);
266
PROCEDURE SetFocus (edit: box_lib.edit_box; value: BOOLEAN);
223
BEGIN
267
BEGIN
224
    EditBox_SetFocus(FindEdit, FALSE);
268
    EditBox_SetFocus(FindEdit, FALSE);
225
    EditBox_SetFocus(ReplaceEdit, FALSE);
269
    EditBox_SetFocus(ReplaceEdit, FALSE);
226
    EditBox_SetFocus(GotoEdit, FALSE);
270
    EditBox_SetFocus(GotoEdit, FALSE);
227
    EditBox_SetFocus(edit, value)
271
    EditBox_SetFocus(edit, value);
-
 
272
  	resetTimer
228
END SetFocus;
273
END SetFocus;
Line 229... Line 274...
229
 
274
 
230
 
275
 
Line 243... Line 288...
243
    height = 40;
288
    height = 40;
244
    borderColor = 808080H;
289
    borderColor = 808080H;
245
VAR
290
VAR
246
    top, left, right, bottom, x, y, width: INTEGER;
291
    top, left, right, bottom, x, y, width: INTEGER;
247
BEGIN
292
BEGIN
-
 
293
	Timer.stop;
248
    width := minWidth + LENGTH(s)*fontWidth;
294
    width := minWidth + LENGTH(s)*fontWidth;
249
    left := (canvas.width - width) DIV 2 + LEFT;
295
    left := (canvas.width - width) DIV 2 + LEFT;
250
    top := (canvas.height - height) DIV 2 + TOP;
296
    top := (canvas.height - height) DIV 2 + TOP;
251
    bottom := top + height - 1;
297
    bottom := top + height - 1;
252
    right := left + width - 1;
298
    right := left + width - 1;
Line 360... Line 406...
360
    K.DrawText866(LEFT + 16*fontWidth, y, K.textColor, text.fileName);
406
    K.DrawText866(LEFT + 16*fontWidth, y, K.textColor, text.fileName);
361
    WriteModified(width - 8*fontWidth, y)
407
    WriteModified(width - 8*fontWidth, y)
362
END DrawState;
408
END DrawState;
Line -... Line 409...
-
 
409
 
-
 
410
 
-
 
411
PROCEDURE DrawScroll (VAR scroll: Scroll.tScroll; left, top, value, maxVal: INTEGER);
-
 
412
BEGIN
-
 
413
	scroll.maxVal := maxVal;
-
 
414
    scroll.left := left;
-
 
415
    scroll.top := top;
-
 
416
    Scroll.setValue(scroll, value);
-
 
417
    Scroll.paint(scroll)
-
 
418
END DrawScroll;
363
 
419
 
364
 
420
 
365
PROCEDURE repaint;
421
PROCEDURE repaint;
366
VAR
422
VAR
367
    width, height, scrollX, scrollY, y: INTEGER;
423
    width, height, scrollX, scrollY, y: INTEGER;
368
BEGIN
424
BEGIN
369
    IF text # NIL THEN
425
    IF text # NIL THEN
370
        IF confirm THEN
426
        IF confirm THEN
371
            K.DeleteButton(btnYes);
427
            K.DeleteButton(btnYes);
-
 
428
            K.DeleteButton(btnNo);
372
            K.DeleteButton(btnNo);
429
            confirm := FALSE;
373
            confirm := FALSE;
430
            resetTimer;
374
            closing := FALSE
431
            closing := FALSE
375
        END;
432
        END;
376
        IF ~search OR (searchText = "") THEN
433
        IF ~search OR (searchText = "") THEN
Line 391... Line 448...
391
        IF modified # text.modified THEN
448
        IF modified # text.modified THEN
392
            WriteModified(width - 8*fontWidth, y)
449
            WriteModified(width - 8*fontWidth, y)
393
        END;
450
        END;
Line 394... Line 451...
394
 
451
 
395
        T.getScroll(text, scrollX, scrollY);
-
 
396
        vScroll.value := scrollY; vScroll.maxVal := text.count - 1;
-
 
397
        hScroll.value := scrollX; hScroll.maxVal := text.maxLength;
452
        T.getScroll(text, scrollX, scrollY);
398
        Scroll.draw(vScroll, LEFT + canvas.width - 1, TOP + scrollWidth - 1);
453
        DrawScroll(vScroll, LEFT + canvas.width - 1, TOP - 1, scrollY, text.count - 1);
Line 399... Line 454...
399
        Scroll.draw(hScroll, LEFT + scrollWidth, TOP + canvas.height - 1);
454
        DrawScroll(hScroll, LEFT, TOP + canvas.height - 1, scrollX, text.maxLength);
400
 
455
 
401
        G.DrawCanvas(canvas, LEFT, TOP);
456
        G.DrawCanvas(canvas, LEFT, TOP);
402
        NotFound;
457
        NotFound;
Line 424... Line 479...
424
    canvas := G.CreateCanvas(cliWidth - (LEFT + RIGHT + 1), cliHeight - (TOP + BOTTOM));
479
    canvas := G.CreateCanvas(cliWidth - (LEFT + RIGHT + 1), cliHeight - (TOP + BOTTOM));
425
    Tabs.setArea(tabs, LEFT, TOP - Tabs.tabHeight, cliWidth - (LEFT + RIGHT + 1), Tabs.tabHeight);
480
    Tabs.setArea(tabs, LEFT, TOP - Tabs.tabHeight, cliWidth - (LEFT + RIGHT + 1), Tabs.tabHeight);
426
    G.SetFont(canvas, font);
481
    G.SetFont(canvas, font);
427
    T.setCanvas(canvas);
482
    T.setCanvas(canvas);
428
    T.resize(canvas.width, canvas.height);
483
    T.resize(canvas.width, canvas.height);
429
    Scroll.resize(vScroll, vScroll.xSize, canvas.height - scrollWidth*2 + 2);
484
    Scroll.resize(vScroll, vScroll.width, canvas.height + 1);
430
    Scroll.resize(hScroll, canvas.width - scrollWidth*2, hScroll.ySize);
485
    Scroll.resize(hScroll, canvas.width, hScroll.height);
431
END resize;
486
END resize;
Line 432... Line 487...
432
 
487
 
433
 
488
 
Line 517... Line 572...
517
 
572
 
518
BEGIN
573
BEGIN
519
    K.BeginDraw;
574
    K.BeginDraw;
520
    K.CreateWindow(30 + K.GetTickCount() MOD 128, 30 + K.GetTickCount() MOD 128, winWidth, winHeight, K.winColor, 73H, 0, 0, header);
575
    K.CreateWindow(30 + K.GetTickCount() MOD 128, 30 + K.GetTickCount() MOD 128, winWidth, winHeight, K.winColor, 73H, 0, 0, header);
-
 
576
    IF (text # NIL) & ~K.RolledUp() THEN
-
 
577
    	IF confirm THEN
-
 
578
    		resetTimer
521
    IF (text # NIL) & ~K.RolledUp() THEN
579
    	END;
522
        confirm := FALSE;
580
        confirm := FALSE;
Line 523... Line 581...
523
        K.ClientSize(width, height);
581
        K.ClientSize(width, height);
524
 
582
 
525
        K.DrawRect(0, 0, width, TOP, K.winColor);
583
        K.DrawRect(0, 0, width, TOP, K.winColor);
Line 526... Line 584...
526
        K.DrawRect(0, 0, LEFT, height, K.winColor);
584
        K.DrawRect(0, 0, LEFT, height, K.winColor);
527
        K.DrawRect(LEFT + canvas.width - 1, TOP + canvas.height - 1, scrollWidth, scrollWidth, K.winColor);
585
        K.DrawRect(LEFT + canvas.width - 1, TOP + canvas.height - 1, scrollWidth, scrollWidth, K.winColor);
-
 
586
 
528
 
587
        drawMainMenu(menuFile, menuFileX, btnFile, "file");
529
        drawMainMenu(menuFile, menuFileX, btnFile, "file");
588
        drawMainMenu(menuEdit, menuEditX, btnEdit, "edit");
530
        drawMainMenu(menuEdit, menuEditX, btnEdit, "edit");
589
        drawMainMenu(menuSearch, menuSearchX, btnMenuSearch, "search");
531
        drawMainMenu(menuEncoding, menuEncodingX, btnEncoding, "encoding");
590
        drawMainMenu(menuEncoding, menuEncodingX, btnEncoding, "encoding");
532
        drawMainMenu(menuView, menuViewX, btnView, "view");
591
        drawMainMenu(menuView, menuViewX, btnView, "view");
Line 569... Line 628...
569
        drawToolbarBtn(btnRun, x);
628
        drawToolbarBtn(btnRun, x);
570
        INC(x, toolBtnSize + 5);
629
        INC(x, toolBtnSize + 5);
Line 571... Line 630...
571
 
630
 
Line 572... Line -...
572
        toolbarIcons;
-
 
573
 
-
 
574
        K.CreateButton(btnUp, LEFT + canvas.width - 1, TOP - 1, scrollWidth - 1, scrollWidth, K.btnColor, 0X);
-
 
575
        K.DrawText69(LEFT + canvas.width - 1 + (scrollWidth - 6) DIV 2, TOP + (scrollWidth - 9) DIV 2, K.btnTextColor, 18X);
-
 
576
        K.CreateButton(btnDown, LEFT + canvas.width - 1, TOP + canvas.height - scrollWidth - 1, scrollWidth - 1, scrollWidth, K.btnColor, 0X);
-
 
577
        K.DrawText69(LEFT + canvas.width - 1 + (scrollWidth - 6) DIV 2, TOP + canvas.height - scrollWidth + (scrollWidth - 9) DIV 2, K.btnTextColor, 19X);
-
 
578
 
-
 
579
        K.CreateButton(btnLeft, LEFT, TOP + canvas.height - 1, scrollWidth, scrollWidth - 1, K.btnColor, 0X);
-
 
580
        K.DrawText69(LEFT + (scrollWidth - 6) DIV 2, TOP + canvas.height - 1 + (scrollWidth - 9) DIV 2 + 1, K.btnTextColor, 1BX);
-
 
581
        K.CreateButton(btnRight, LEFT + canvas.width - scrollWidth - 1, TOP + canvas.height - 1, scrollWidth, scrollWidth - 1, K.btnColor, 0X);
-
 
582
        K.DrawText69(LEFT + canvas.width - scrollWidth - 1 + (scrollWidth - 6) DIV 2, TOP + canvas.height - 1 + (scrollWidth - 9) DIV 2 + 1, K.btnTextColor, 1AX);
-
 
583
 
-
 
584
        K.PutPixel(LEFT + canvas.width + scrollWidth - 2, TOP - 1, K.winColor);
-
 
585
        K.PutPixel(LEFT, TOP + canvas.height + scrollWidth - 2, K.winColor);
631
        toolbarIcons;
586
 
632
 
587
        DrawState(text, width, height);
633
        DrawState(text, width, height);
588
        IF search & searchOpened THEN
634
        IF search & searchOpened THEN
589
            SearchPanel(searchLeft, TOP)
635
            SearchPanel(searchLeft, TOP)
Line 617... Line 663...
617
    shift := {0, 1} * kbState # {};
663
    shift := {0, 1} * kbState # {};
618
    ctrl := {2, 3} * kbState # {};
664
    ctrl := {2, 3} * kbState # {};
619
END getKBState;
665
END getKBState;
Line -... Line 666...
-
 
666
 
-
 
667
 
-
 
668
PROCEDURE stopTimer;
-
 
669
BEGIN
-
 
670
	T.hideCursor;
-
 
671
    Timer.stop;
-
 
672
    repaint;
-
 
673
    Timer.stop
-
 
674
END stopTimer;
620
 
675
 
621
 
676
 
-
 
677
PROCEDURE OpenFile (VAR FileName: RW.tFileName; filter: ARRAY OF CHAR);
622
PROCEDURE OpenFile (VAR FileName: RW.tFileName; filter: ARRAY OF CHAR);
678
BEGIN
623
BEGIN
679
    stopTimer;
624
    OpenDlg.SetFilter(OD, filter);
680
    OpenDlg.SetFilter(OD, filter);
625
    OpenDlg.Show(OD, 500, 400);
681
    OpenDlg.Show(OD, 500, 400);
626
    WHILE OD.status = 2 DO
682
    WHILE OD.status = 2 DO
627
        K.Pause(30)
683
        K.Pause(30)
628
    END;
684
    END;
629
    IF OD.status = 1 THEN
685
    IF OD.status = 1 THEN
630
        COPY(OD.FilePath, FileName)
686
        COPY(OD.FilePath, FileName)
631
    ELSE
687
    ELSE
-
 
688
        FileName := ""
632
        FileName := ""
689
    END;
Line 633... Line 690...
633
    END
690
    resetTimer
634
END OpenFile;
691
END OpenFile;
Line 663... Line 720...
663
        CASE text.lang OF
720
        CASE text.lang OF
664
        |Languages.langNone:   ext := "txt"
721
        |Languages.langNone:   ext := "txt"
665
        |Languages.langC:      ext := "c"
722
        |Languages.langC:      ext := "c"
666
        |Languages.langFasm:   ext := "asm"
723
        |Languages.langFasm:   ext := "asm"
667
        |Languages.langIni:    ext := "ini"
724
        |Languages.langIni:    ext := "ini"
-
 
725
        |Languages.langJSON:   ext := "json"
668
        |Languages.langLua:    ext := "lua"
726
        |Languages.langLua:    ext := "lua"
669
        |Languages.langOberon: ext := "ob07"
727
        |Languages.langOberon: ext := "ob07"
670
        |Languages.langPascal: ext := "pas"
728
        |Languages.langPascal: ext := "pas"
671
        END;
729
        END;
672
        U.append8(OD.FileName, ext)
730
        U.append8(OD.FileName, ext)
Line 762... Line 820...
762
    height = btnHeight*2 + 20;
820
    height = btnHeight*2 + 20;
763
    lineColor = 808080H;
821
    lineColor = 808080H;
764
VAR
822
VAR
765
    left, top, right, bottom: INTEGER;
823
    left, top, right, bottom: INTEGER;
766
BEGIN
824
BEGIN
-
 
825
	stopTimer;
767
    draw_window;
826
    draw_window;
768
    confirm := TRUE;
827
    confirm := TRUE;
769
    left := (canvas.width - width) DIV 2 + LEFT;
828
    left := (canvas.width - width) DIV 2 + LEFT;
770
    top := (canvas.height - height) DIV 2 + TOP;
829
    top := (canvas.height - height) DIV 2 + TOP;
771
    right := left + width - 1;
830
    right := left + width - 1;
Line 776... Line 835...
776
    K.CreateButton(btnYes, left + 10, top + 35, btnWidth, btnHeight, K.btnColor, "yes");
835
    K.CreateButton(btnYes, left + 10, top + 35, btnWidth, btnHeight, K.btnColor, "yes");
777
    K.CreateButton(btnNo, left + 20 + btnWidth, top + 35, btnWidth, btnHeight, K.btnColor, "no");
836
    K.CreateButton(btnNo, left + 20 + btnWidth, top + 35, btnWidth, btnHeight, K.btnColor, "no");
778
END Confirm;
837
END Confirm;
Line -... Line 838...
-
 
838
 
-
 
839
 
-
 
840
PROCEDURE Exit;
-
 
841
BEGIN
-
 
842
	Timer.kill;
-
 
843
	K.Exit
-
 
844
END Exit;
779
 
845
 
780
 
846
 
781
PROCEDURE closeFile (conf: BOOLEAN; n: INTEGER);
847
PROCEDURE closeFile (conf: BOOLEAN; n: INTEGER);
782
VAR
848
VAR
783
    i: INTEGER;
849
    i: INTEGER;
Line 794... Line 860...
794
            DEC(curText)
860
            DEC(curText)
795
        END;
861
        END;
796
        IF curText >= 0 THEN
862
        IF curText >= 0 THEN
797
            Switch(texts[curText])
863
            Switch(texts[curText])
798
        ELSE
864
        ELSE
799
            K.Exit
865
            Exit
800
        END;
866
        END;
801
        draw_window
867
        draw_window
802
    END
868
    END
803
END closeFile;
869
END closeFile;
Line 847... Line 913...
847
PROCEDURE SwitchTab (n: INTEGER);
913
PROCEDURE SwitchTab (n: INTEGER);
848
BEGIN
914
BEGIN
849
    curText := n;
915
    curText := n;
850
    Tabs.switch(tabs, n);
916
    Tabs.switch(tabs, n);
851
    Switch(texts[n]);
917
    Switch(texts[n]);
-
 
918
    resetTimer;
852
    draw_window
919
    draw_window
853
END SwitchTab;
920
END SwitchTab;
Line 854... Line 921...
854
 
921
 
Line 945... Line 1012...
945
VAR
1012
VAR
946
    scrollX, scrollY: INTEGER;
1013
    scrollX, scrollY: INTEGER;
947
    shift, ctrl: BOOLEAN;
1014
    shift, ctrl: BOOLEAN;
948
BEGIN
1015
BEGIN
949
    getKBState(shift, ctrl);
1016
    getKBState(shift, ctrl);
-
 
1017
    IF ~hScroll.mouse THEN
-
 
1018
    	Scroll.MouseDown(hScroll, x + LEFT, y + TOP);
-
 
1019
        T.getScroll(text, scrollX, scrollY);
-
 
1020
        T.scroll(text, hScroll.value - scrollX, 0);
-
 
1021
        repaint
-
 
1022
    END;
-
 
1023
    IF ~vScroll.mouse THEN
-
 
1024
    	Scroll.MouseDown(vScroll, x + LEFT, y + TOP);
-
 
1025
        T.getScroll(text, scrollX, scrollY);
-
 
1026
        T.scroll(text, 0, vScroll.value - scrollY);
-
 
1027
        repaint
-
 
1028
    END;
950
    IF (0 <= x) & (x < canvas.width) & (0 <= y) & (y < canvas.height) THEN
1029
    IF (0 <= x) & (x < canvas.width) & (0 <= y) & (y < canvas.height) THEN
951
        leftButton := TRUE;
1030
        leftButton := TRUE;
952
        SetFocus(FindEdit, FALSE);
1031
        SetFocus(FindEdit, FALSE);
953
        IF ~shift THEN
1032
        IF ~shift THEN
954
            T.resetSelect(text)
1033
            T.resetSelect(text)
955
        END;
1034
        END;
956
        T.mouse(text, x, y);
1035
        T.mouse(text, x, y);
957
        repaint
1036
        repaint
958
    ELSIF (canvas.width < x) & (x < canvas.width + scrollWidth) & (scrollWidth < y) & (y < canvas.height - scrollWidth) THEN
-
 
959
        VScroll := TRUE;
-
 
960
        Scroll.mouse(vScroll, x - canvas.width, y - scrollWidth);
-
 
961
        T.getScroll(text, scrollX, scrollY);
-
 
962
        T.scroll(text, 0, vScroll.value - scrollY);
-
 
963
        repaint
-
 
964
    ELSIF (scrollWidth < x) & (x < canvas.width - scrollWidth) & (canvas.height < y) & (y < canvas.height + scrollWidth) THEN
-
 
965
        HScroll := TRUE;
-
 
966
        Scroll.mouse(hScroll, x - scrollWidth, y - canvas.height);
-
 
967
        T.getScroll(text, scrollX, scrollY);
-
 
968
        T.scroll(text, hScroll.value - scrollX, 0);
-
 
969
        repaint
-
 
970
    END
1037
    END
971
    RETURN K.GetTickCount()
1038
    RETURN K.GetTickCount()
972
END click;
1039
END click;
Line 973... Line 1040...
973
 
1040
 
974
 
1041
 
975
PROCEDURE LeftButtonUp;
1042
PROCEDURE LeftButtonUp;
976
BEGIN
-
 
977
    leftButton := FALSE;
-
 
978
    VScroll := FALSE;
-
 
979
    HScroll := FALSE;
1043
BEGIN
-
 
1044
    leftButton := FALSE;
980
    Scroll.MouseUp(vScroll);
1045
    Scroll.MouseUp(hScroll);
Line 981... Line 1046...
981
    Scroll.MouseUp(hScroll);
1046
    Scroll.MouseUp(vScroll)
982
END LeftButtonUp;
1047
END LeftButtonUp;
Line 998... Line 1063...
998
        END
1063
        END
999
    END
1064
    END
1000
END Close;
1065
END Close;
Line -... Line 1066...
-
 
1066
 
-
 
1067
 
-
 
1068
PROCEDURE CloseMenu;
-
 
1069
BEGIN
-
 
1070
    Menu.close(menuFile);
-
 
1071
    Menu.close(menuEdit);
-
 
1072
    Menu.close(menuSearch);
-
 
1073
    Menu.close(menuEncoding);
-
 
1074
    Menu.close(menuView);
-
 
1075
    Menu.close(menuSyntax);
-
 
1076
    Menu.close(menuProgram);
-
 
1077
    Menu.close(menuTools);
-
 
1078
    Menu.close(subCurLine);
-
 
1079
    Menu.close(subIndent);
-
 
1080
    Menu.close(subCase);
-
 
1081
    Menu.close(subBookmark);
-
 
1082
    Menu.close(context);
-
 
1083
END CloseMenu;
1001
 
1084
 
1002
 
1085
 
1003
PROCEDURE MenuItemClick (menu: Menu.tMenu; id: INTEGER);
1086
PROCEDURE MenuItemClick (menu: Menu.tMenu; id: INTEGER);
1004
BEGIN
1087
BEGIN
Line 1009... Line 1092...
1009
PROCEDURE goto;
1092
PROCEDURE goto;
1010
VAR
1093
VAR
1011
    gotoVal: INTEGER;
1094
    gotoVal: INTEGER;
1012
BEGIN
1095
BEGIN
1013
    EditBox_GetValue(GotoEdit, gotoText);
1096
    EditBox_GetValue(GotoEdit, gotoText);
1014
    IF U.str2int(gotoText, gotoVal) & T.goto(text, gotoVal) THEN END
1097
    IF U.str2int(gotoText, gotoVal) & T.goto(text, gotoVal) THEN
-
 
1098
    	SetFocus(GotoEdit, FALSE)
-
 
1099
    END
1015
END goto;
1100
END goto;
Line 1016... Line 1101...
1016
 
1101
 
1017
 
1102
 
Line 1032... Line 1117...
1032
        Search
1117
        Search
1033
    END
1118
    END
1034
END ShowSearchPanel;
1119
END ShowSearchPanel;
Line -... Line 1120...
-
 
1120
 
-
 
1121
 
-
 
1122
PROCEDURE CanvasToScreen (VAR x, y: INTEGER);
-
 
1123
VAR
-
 
1124
    cliX, cliY,
-
 
1125
    winX, winY: INTEGER;
-
 
1126
BEGIN
-
 
1127
    K.WinPos(winX, winY);
-
 
1128
    K.ClientPos(cliX, cliY);
-
 
1129
    x := x + winX + cliX + LEFT;
-
 
1130
    y := y + winY + cliY + TOP;
-
 
1131
END CanvasToScreen;
-
 
1132
 
-
 
1133
 
-
 
1134
PROCEDURE ShowMenu (menu: Menu.tMenu);
-
 
1135
VAR
-
 
1136
    winX, winY, cliX, cliY, x, y, i: INTEGER;
-
 
1137
    selected, enabled: BOOLEAN;
-
 
1138
BEGIN
-
 
1139
    IF menu = context THEN
-
 
1140
        mouse(x, y);
-
 
1141
        IF ~((0 <= x) & (x < canvas.width) & (0 <= y) & (y < canvas.height)) THEN
-
 
1142
            menu := NIL
-
 
1143
        END
-
 
1144
    ELSE
-
 
1145
        K.WinPos(winX, winY);
-
 
1146
        K.ClientPos(cliX, cliY);
-
 
1147
        x := winX + cliX;
-
 
1148
        y := MainMenuHeight + winY + cliY
-
 
1149
    END;
-
 
1150
 
-
 
1151
    selected := T.selected(text);
-
 
1152
 
-
 
1153
    IF menu = menuFile THEN
-
 
1154
        Menu.setEnabled(menu, menuSave, text.modified);
-
 
1155
        Menu.setEnabled(menu, menuFolder, text.fileName # "");
-
 
1156
        i := 0;
-
 
1157
        WHILE (i < textsCount) & ~texts[i].modified DO
-
 
1158
            INC(i)
-
 
1159
        END;
-
 
1160
        Menu.setEnabled(menu, menuSaveAll, i < textsCount);
-
 
1161
        INC(x, menuFileX)
-
 
1162
    ELSIF (menu = menuEdit) OR (menu = context) THEN
-
 
1163
        Menu.setEnabled(menu, menuUndo, ~ChangeLog.isFirstGuard(text.edition));
-
 
1164
        Menu.setEnabled(menu, menuRedo, ~ChangeLog.isLastGuard(text.edition));
-
 
1165
        Menu.setEnabled(menu, menuCut, selected);
-
 
1166
        Menu.setEnabled(menu, menuCopy, selected);
-
 
1167
        Menu.setEnabled(menu, menuDelete, selected);
-
 
1168
        Menu.setEnabled(menu, menuPaste, CB.available());
-
 
1169
        IF menu = menuEdit THEN
-
 
1170
            INC(x, menuEditX)
-
 
1171
        ELSE
-
 
1172
            IF y + menu.height >= canvas.height THEN
-
 
1173
                DEC(y, menu.height)
-
 
1174
            END;
-
 
1175
            IF x + menu.width >= canvas.width THEN
-
 
1176
                DEC(x, menu.width)
-
 
1177
            END;
-
 
1178
            CanvasToScreen(x, y)
-
 
1179
        END
-
 
1180
    ELSIF menu = menuEncoding THEN
-
 
1181
        Menu.setCheck(menu, menuUTF8BOM, ORD(text.enc = E.UTF8BOM)*2);
-
 
1182
        Menu.setCheck(menu, menuUTF8,    ORD(text.enc = E.UTF8)*2);
-
 
1183
        Menu.setCheck(menu, menuCP866,   ORD(text.enc = E.CP866)*2);
-
 
1184
        Menu.setCheck(menu, menuWin1251, ORD(text.enc = E.W1251)*2);
-
 
1185
        INC(x, menuEncodingX)
-
 
1186
    ELSIF menu = menuView THEN
-
 
1187
        Menu.setCheck(menu, menuNumbers,  ORD(text.numbers));
-
 
1188
        Menu.setCheck(menu, menuFontSize, ORD(font = font2));
-
 
1189
        FOR i := 0 TO Ini.sections.count - 1 DO
-
 
1190
            Menu.setCheck(menu, menuColors + i, ORD(Ini.curSectionNum = i)*2)
-
 
1191
        END;
-
 
1192
        INC(x, menuViewX)
-
 
1193
    ELSIF menu = menuSyntax THEN
-
 
1194
        Menu.setCheck(menu, menuNone,   ORD(text.lang = Languages.langNone)*2);
-
 
1195
        Menu.setCheck(menu, menuC,      ORD(text.lang = Languages.langC)*2);
-
 
1196
        Menu.setCheck(menu, menuFasm,   ORD(text.lang = Languages.langFasm)*2);
-
 
1197
        Menu.setCheck(menu, menuIni,    ORD(text.lang = Languages.langIni)*2);
-
 
1198
        Menu.setCheck(menu, menuJSON,   ORD(text.lang = Languages.langJSON)*2);
-
 
1199
        Menu.setCheck(menu, menuLua,    ORD(text.lang = Languages.langLua)*2);
-
 
1200
        Menu.setCheck(menu, menuOberon, ORD(text.lang = Languages.langOberon)*2);
-
 
1201
        Menu.setCheck(menu, menuPascal, ORD(text.lang = Languages.langPascal)*2);
-
 
1202
        INC(x, menuSyntaxX)
-
 
1203
    ELSIF menu = menuProgram THEN
-
 
1204
        Menu.setEnabled(menu, menuBuild, buildScript # "");
-
 
1205
        Menu.setEnabled(menu, menuDebug, debugScript # "");
-
 
1206
        Menu.setEnabled(menu, menuRun, runScript # "");
-
 
1207
        INC(x, menuProgramX)
-
 
1208
    ELSIF menu = menuTools THEN
-
 
1209
        INC(x, menuToolsX)
-
 
1210
    ELSIF menu = menuSearch THEN
-
 
1211
        INC(x, menuSearchX)
-
 
1212
    END;
-
 
1213
 
-
 
1214
    enabled := search & (searchText # "");
-
 
1215
    Menu.setEnabled(menuSearch, menuFindNext, enabled);
-
 
1216
    Menu.setEnabled(menuSearch, menuFindPrev, enabled);
-
 
1217
 
-
 
1218
    Menu.setEnabled(subIndent, menuIncInd, selected);
-
 
1219
    Menu.setEnabled(subIndent, menuDecInd, selected);
-
 
1220
 
-
 
1221
    Menu.setEnabled(subCase, menuUpper, selected);
-
 
1222
    Menu.setEnabled(subCase, menuLower, selected);
-
 
1223
 
-
 
1224
    IF menu # NIL THEN
-
 
1225
    	Timer.stop;
-
 
1226
        IF Menu.opened(menu) THEN
-
 
1227
            Menu.close(menu)
-
 
1228
        END;
-
 
1229
        Menu.open(menu, x, y)
-
 
1230
    END;
-
 
1231
END ShowMenu;
1035
 
1232
 
-
 
1233
 
-
 
1234
PROCEDURE receiveIPC;
1036
 
1235
VAR
-
 
1236
	scrollIPC: BOOLEAN;
-
 
1237
BEGIN
1037
PROCEDURE receiveIPC;
1238
	scrollIPC := FALSE;
-
 
1239
 
-
 
1240
    IF IPC[0] = Timer.ID THEN
-
 
1241
    	T.toggleCursor;
-
 
1242
    	repaint;
-
 
1243
    	IPC[2] := 0
-
 
1244
    ELSIF IPC[0] = mainTID THEN
-
 
1245
    	IF IPC[2] = Scroll.ScrollIPC THEN
-
 
1246
	    	Scroll.change(hScroll);
-
 
1247
	    	IF hScroll.Dec THEN
-
 
1248
	    		T.scroll(text, -1, 0)
-
 
1249
	    	ELSIF hScroll.Inc THEN
-
 
1250
				T.scroll(text, 1, 0)
-
 
1251
	    	END;
-
 
1252
	    	Scroll.change(vScroll);
-
 
1253
	    	IF vScroll.Dec THEN
-
 
1254
	    		T.scroll(text, 0, -1)
-
 
1255
	    	ELSIF vScroll.Inc THEN
-
 
1256
				T.scroll(text, 0, 1)
-
 
1257
	    	END;
-
 
1258
        	repaint;
-
 
1259
 
-
 
1260
    		IF (0 IN K.MouseState()) THEN
-
 
1261
    			WHILE (0 IN K.MouseState()) & (delay > 0) DO
-
 
1262
        			K.Pause(1);
-
 
1263
    	    		DEC(delay)
-
 
1264
        		END;
-
 
1265
        		IF delay = 0 THEN
-
 
1266
    				IPC[0] := 0;
-
 
1267
					IPC[1] := 0;
-
 
1268
					scrollIPC := TRUE;
-
 
1269
	        		Scroll.SendIPC;
-
 
1270
    	    		delay := 2
-
 
1271
        		ELSE
-
 
1272
        			delay := scrollDelay
-
 
1273
        		END
-
 
1274
        	ELSE
-
 
1275
        		delay := scrollDelay
-
 
1276
			END
-
 
1277
    	END;
1038
BEGIN
1278
    	IPC[2] := 0
1039
    IF IPC[0] # Menu.lastTID THEN
1279
    ELSIF ~Menu.isSender(IPC[0]) THEN
1040
        IPC[2] := 0
1280
   		IPC[2] := 0
1041
    END;
1281
    END;
1042
    CASE IPC[2] OF
1282
    CASE IPC[2] OF
Line 1070... Line 1310...
1070
        T.undo(text);
1310
        T.undo(text);
1071
        repaint
1311
        repaint
1072
    |menuRedo:
1312
    |menuRedo:
1073
        T.redo(text);
1313
        T.redo(text);
1074
        repaint
1314
        repaint
1075
    |menuSearch:
1315
    |menuFind:
1076
        ShowSearchPanel;
1316
        ShowSearchPanel;
1077
        SetFocus(FindEdit, TRUE)
1317
        SetFocus(FindEdit, TRUE)
-
 
1318
    |menuFindNext:
-
 
1319
        notFound := ~T.findNext(text, box_lib.check_box_get_value(BKW))
-
 
1320
    |menuFindPrev:
-
 
1321
        notFound := ~T.findNext(text, ~box_lib.check_box_get_value(BKW))
1078
    |menuGoto:
1322
    |menuGoto:
1079
        ShowSearchPanel;
1323
        ShowSearchPanel;
1080
        SetFocus(GotoEdit, TRUE)
1324
        SetFocus(GotoEdit, TRUE)
-
 
1325
    |menuToggleBookmark:
-
 
1326
    	T.toggleLabel(text)
-
 
1327
    |menuNextBookmark:
-
 
1328
    	T.gotoLabel(text, TRUE)
-
 
1329
    |menuPrevBookmark:
-
 
1330
    	T.gotoLabel(text, FALSE)
1081
    |menuNumbers:
1331
    |menuNumbers:
1082
        T.toggleNumbers(text)
1332
        T.toggleNumbers(text)
1083
    |menuFontSize:
1333
    |menuFontSize:
1084
        IF font = font1 THEN
1334
        IF font = font1 THEN
1085
            font := font2
1335
            font := font2
Line 1093... Line 1343...
1093
        T.setLang(text, Languages.langC)
1343
        T.setLang(text, Languages.langC)
1094
    |menuFasm:
1344
    |menuFasm:
1095
        T.setLang(text, Languages.langFasm)
1345
        T.setLang(text, Languages.langFasm)
1096
    |menuIni:
1346
    |menuIni:
1097
        T.setLang(text, Languages.langIni)
1347
        T.setLang(text, Languages.langIni)
-
 
1348
    |menuJSON:
-
 
1349
        T.setLang(text, Languages.langJSON)
1098
    |menuLua:
1350
    |menuLua:
1099
        T.setLang(text, Languages.langLua)
1351
        T.setLang(text, Languages.langLua)
1100
    |menuOberon:
1352
    |menuOberon:
1101
        T.setLang(text, Languages.langOberon)
1353
        T.setLang(text, Languages.langOberon)
1102
    |menuPascal:
1354
    |menuPascal:
Line 1127... Line 1379...
1127
        K.Run("/rd/1/develop/board", "")
1379
        K.Run("/rd/1/develop/board", "")
1128
    |menuSysFunc:
1380
    |menuSysFunc:
1129
        K.Run("/rd/1/docpack", "f")
1381
        K.Run("/rd/1/docpack", "f")
1130
    |menuColors..menuMaxColors:
1382
    |menuColors..menuMaxColors:
1131
        Ini.selectSection(IPC[2] - menuColors)
1383
        Ini.selectSection(IPC[2] - menuColors)
-
 
1384
    |menuMoveUp:
-
 
1385
    	T.upLine(text)
-
 
1386
    |menuMoveDown:
-
 
1387
    	T.downLine(text)
-
 
1388
    |menuDuplicate:
-
 
1389
    	T.dupLine(text)
-
 
1390
    |menuRemove:
-
 
1391
    	T.delLine(text)
-
 
1392
    |menuIncInd:
-
 
1393
    	T.Indent(text, TRUE)
-
 
1394
	|menuDecInd:
-
 
1395
		T.Indent(text, FALSE)
-
 
1396
	|menuUpper:
-
 
1397
		T.chCase(text, TRUE)
-
 
1398
	|menuLower:
-
 
1399
		T.chCase(text, FALSE)
1132
    END;
1400
    END;
-
 
1401
    IF ~scrollIPC THEN
1133
    IPC[0] := 0;
1402
    	IPC[0] := 0;
1134
    IPC[1] := 0
1403
    	IPC[1] := 0
-
 
1404
    END
1135
END receiveIPC;
1405
END receiveIPC;
Line 1136... Line 1406...
1136
 
1406
 
1137
 
1407
 
Line 1145... Line 1415...
1145
    IF ctrl THEN
1415
    IF ctrl THEN
1146
        CASE key DIV 65536 OF
1416
        CASE key DIV 65536 OF
1147
        |17: menuItem := menuClose
1417
        |17: menuItem := menuClose
1148
        |21: menuItem := menuRedo
1418
        |21: menuItem := menuRedo
1149
        |30: menuItem := menuSelectAll
1419
        |30: menuItem := menuSelectAll
1150
        |33: menuItem := menuSearch
1420
        |33: menuItem := menuFind
1151
        |34: menuItem := menuGoto
1421
        |34: menuItem := menuGoto
1152
        |44: menuItem := menuUndo
1422
        |44: menuItem := menuUndo
1153
        |45: menuItem := menuCut
1423
        |45: menuItem := menuCut
1154
        |46: menuItem := menuCopy
1424
        |46: menuItem := menuCopy
1155
        |47: menuItem := menuPaste
1425
        |47: menuItem := menuPaste
Line 1220... Line 1490...
1220
BEGIN
1490
BEGIN
1221
    menu := List.create(NIL);
1491
    menu := List.create(NIL);
1222
    Menu.AddMenuItem(menu, menuUndo,      "undo          ctrl-Z");
1492
    Menu.AddMenuItem(menu, menuUndo,      "undo            ctrl-Z");
1223
    Menu.AddMenuItem(menu, menuRedo,      "redo          ctrl-Y");
1493
    Menu.AddMenuItem(menu, menuRedo,      "redo            ctrl-Y");
1224
    Menu.delimiter(menu);
1494
    Menu.delimiter(menu);
1225
    Menu.AddMenuItem(menu, menuSearch,    "search        ctrl-F");
-
 
1226
    Menu.AddMenuItem(menu, menuGoto,      "go to line    ctrl-G");
-
 
1227
    Menu.delimiter(menu);
-
 
1228
    Menu.AddMenuItem(menu, menuCut,       "cut           ctrl-X");
1495
    Menu.AddMenuItem(menu, menuCut,       "cut             ctrl-X");
1229
    Menu.AddMenuItem(menu, menuCopy,      "copy          ctrl-C");
1496
    Menu.AddMenuItem(menu, menuCopy,      "copy            ctrl-C");
1230
    Menu.AddMenuItem(menu, menuPaste,     "paste         ctrl-V");
1497
    Menu.AddMenuItem(menu, menuPaste,     "paste           ctrl-V");
1231
    Menu.AddMenuItem(menu, menuDelete,    "delete");
1498
    Menu.AddMenuItem(menu, menuDelete,    "delete");
1232
    Menu.delimiter(menu);
1499
    Menu.delimiter(menu);
1233
    Menu.AddMenuItem(menu, menuSelectAll, "select all    ctrl-A");
1500
    Menu.AddMenuItem(menu, menuSelectAll, "select all      ctrl-A");
-
 
1501
    Menu.delimiter(menu);
-
 
1502
    Menu.AddMenuItem(menu, menuCurLine,   "current line");
-
 
1503
    Menu.child(menu, subCurLine);
-
 
1504
    Menu.AddMenuItem(menu, menuIndent,    "indent");
-
 
1505
    Menu.child(menu, subIndent);
-
 
1506
    Menu.AddMenuItem(menu, menuCase,      "case");
-
 
1507
    Menu.child(menu, subCase);
1234
    RETURN Menu.create(menu, MenuItemClick, MenuKeyDown)
1508
    RETURN Menu.create(menu, MenuItemClick, MenuKeyDown)
1235
END CreateMenuEdit;
1509
END CreateMenuEdit;
Line -... Line 1510...
-
 
1510
 
-
 
1511
 
-
 
1512
PROCEDURE CreateMenuSearch (): Menu.tMenu;
-
 
1513
VAR
-
 
1514
    menu: List.tList;
-
 
1515
BEGIN
-
 
1516
    menu := List.create(NIL);
-
 
1517
    Menu.AddMenuItem(menu, menuFind,     "search           ctrl-F");
-
 
1518
    Menu.AddMenuItem(menu, menuFindNext, "find next        F3");
-
 
1519
    Menu.AddMenuItem(menu, menuFindPrev, "find previous    shift-F3");
-
 
1520
    Menu.AddMenuItem(menu, menuGoto,     "go to line       ctrl-G");
-
 
1521
    Menu.delimiter(menu);
-
 
1522
    Menu.AddMenuItem(menu, menuBookmark, "bookmark");
-
 
1523
    Menu.child(menu, subBookmark);
-
 
1524
    RETURN Menu.create(menu, MenuItemClick, MenuKeyDown)
-
 
1525
END CreateMenuSearch;
1236
 
1526
 
1237
 
1527
 
1238
PROCEDURE CreateMenuEncoding (): Menu.tMenu;
1528
PROCEDURE CreateMenuEncoding (): Menu.tMenu;
1239
VAR
1529
VAR
1240
    menu: List.tList;
1530
    menu: List.tList;
Line 1277... Line 1567...
1277
BEGIN
1567
BEGIN
1278
    menu := List.create(NIL);
1568
    menu := List.create(NIL);
1279
    Menu.AddMenuItem(menu, menuC,      "C");
1569
    Menu.AddMenuItem(menu, menuC,      "C");
1280
    Menu.AddMenuItem(menu, menuFasm,   "Fasm");
1570
    Menu.AddMenuItem(menu, menuFasm,   "Fasm");
1281
    Menu.AddMenuItem(menu, menuIni,    "Ini");
1571
    Menu.AddMenuItem(menu, menuIni,    "Ini");
-
 
1572
    Menu.AddMenuItem(menu, menuJSON,   "JSON");
1282
    Menu.AddMenuItem(menu, menuLua,    "Lua");
1573
    Menu.AddMenuItem(menu, menuLua,    "Lua");
1283
    Menu.AddMenuItem(menu, menuOberon, "Oberon");
1574
    Menu.AddMenuItem(menu, menuOberon, "Oberon");
1284
    Menu.AddMenuItem(menu, menuPascal, "Pascal");
1575
    Menu.AddMenuItem(menu, menuPascal, "Pascal");
1285
    Menu.delimiter(menu);
1576
    Menu.delimiter(menu);
1286
    Menu.AddMenuItem(menu, menuNone,   "none");
1577
    Menu.AddMenuItem(menu, menuNone,   "none");
Line 1291... Line 1582...
1291
PROCEDURE CreateMenuProgram (): Menu.tMenu;
1582
PROCEDURE CreateMenuProgram (): Menu.tMenu;
1292
VAR
1583
VAR
1293
    menu: List.tList;
1584
    menu: List.tList;
1294
BEGIN
1585
BEGIN
1295
    menu := List.create(NIL);
1586
    menu := List.create(NIL);
1296
    Menu.AddMenuItem(menu, menuBuild,       "build    ctrl+F9");
1587
    Menu.AddMenuItem(menu, menuBuild,       "build    ctrl-F9");
1297
    Menu.AddMenuItem(menu, menuBuildScript, "script");
1588
    Menu.AddMenuItem(menu, menuBuildScript, "script");
1298
    Menu.delimiter(menu);
1589
    Menu.delimiter(menu);
1299
    Menu.AddMenuItem(menu, menuRun,         "run           F9");
1590
    Menu.AddMenuItem(menu, menuRun,         "run           F9");
1300
    Menu.AddMenuItem(menu, menuRunScript,   "script");
1591
    Menu.AddMenuItem(menu, menuRunScript,   "script");
1301
    Menu.delimiter(menu);
1592
    Menu.delimiter(menu);
Line 1315... Line 1606...
1315
    Menu.AddMenuItem(menu, menuSysFunc, "system functions");
1606
    Menu.AddMenuItem(menu, menuSysFunc, "system functions");
1316
    RETURN Menu.create(menu, MenuItemClick, MenuKeyDown)
1607
    RETURN Menu.create(menu, MenuItemClick, MenuKeyDown)
1317
END CreateMenuTools;
1608
END CreateMenuTools;
Line 1318... Line 1609...
1318
 
1609
 
1319
 
1610
 
1320
PROCEDURE CanvasToScreen (VAR x, y: INTEGER);
-
 
1321
VAR
1611
PROCEDURE CreateMenuCurLine(): Menu.tMenu;
1322
    cliX, cliY,
1612
VAR
1323
    winX, winY: INTEGER;
1613
    menu: List.tList;
-
 
1614
BEGIN
-
 
1615
    menu := List.create(NIL);
1324
BEGIN
1616
    Menu.AddMenuItem(menu, menuMoveUp,    "move up     ctrl-Up");
1325
    K.WinPos(winX, winY);
1617
    Menu.AddMenuItem(menu, menuMoveDown,  "move down   ctrl-Down");
1326
    K.ClientPos(cliX, cliY);
1618
    Menu.AddMenuItem(menu, menuDuplicate, "duplicate   ctrl-D");
1327
    x := x + winX + cliX + LEFT;
1619
    Menu.AddMenuItem(menu, menuRemove,    "remove      ctrl-Del");
Line 1328... Line 1620...
1328
    y := y + winY + cliY + TOP;
1620
    RETURN Menu.create(menu, MenuItemClick, MenuKeyDown)
1329
END CanvasToScreen;
1621
END CreateMenuCurLine;
1330
 
-
 
1331
 
1622
 
1332
PROCEDURE ShowMenu (menu: Menu.tMenu);
1623
 
1333
VAR
1624
PROCEDURE CreateMenuIndent(): Menu.tMenu;
1334
    winX, winY, cliX, cliY, x, y, i: INTEGER;
1625
VAR
1335
    selected: BOOLEAN;
1626
    menu: List.tList;
1336
BEGIN
-
 
1337
    IF menu # context THEN
1627
BEGIN
1338
        K.WinPos(winX, winY);
-
 
1339
        K.ClientPos(cliX, cliY);
-
 
1340
        x := winX + cliX;
-
 
1341
        y := MainMenuHeight + winY + cliY
1628
    menu := List.create(NIL);
1342
    ELSE
-
 
1343
        mouse(x, y);
-
 
Line 1344... Line -...
1344
        IF ~((0 <= x) & (x < canvas.width) & (0 <= y) & (y < canvas.height)) THEN
-
 
1345
            menu := NIL
-
 
1346
        END
-
 
1347
    END;
-
 
1348
 
-
 
1349
    IF menu = menuFile THEN
-
 
1350
        Menu.setEnabled(menu, menuSave, text.modified);
-
 
1351
        Menu.setEnabled(menu, menuFolder, text.fileName # "");
-
 
1352
        i := 0;
-
 
1353
        WHILE (i < textsCount) & ~texts[i].modified DO
-
 
1354
            INC(i)
-
 
1355
        END;
-
 
1356
        Menu.setEnabled(menu, menuSaveAll, i < textsCount);
-
 
1357
        INC(x, menuFileX)
-
 
1358
    ELSIF (menu = menuEdit) OR (menu = context) THEN
-
 
1359
        Menu.setEnabled(menu, menuUndo, ~ChangeLog.isFirstGuard(text.edition));
-
 
1360
        Menu.setEnabled(menu, menuRedo, ~ChangeLog.isLastGuard(text.edition));
-
 
1361
        selected := T.selected(text);
-
 
1362
        Menu.setEnabled(menu, menuCut, selected);
-
 
1363
        Menu.setEnabled(menu, menuCopy, selected);
-
 
1364
        Menu.setEnabled(menu, menuDelete, selected);
-
 
1365
        Menu.setEnabled(menu, menuPaste, CB.available());
-
 
1366
        IF menu = menuEdit THEN
-
 
1367
            INC(x, menuEditX)
-
 
1368
        ELSE
-
 
1369
            IF y + menu.height >= canvas.height THEN
-
 
1370
                DEC(y, menu.height)
-
 
1371
            END;
-
 
1372
            IF x + menu.width >= canvas.width THEN
-
 
1373
                DEC(x, menu.width)
-
 
1374
            END;
-
 
1375
            CanvasToScreen(x, y)
-
 
1376
        END
-
 
1377
    ELSIF menu = menuEncoding THEN
-
 
1378
        Menu.setCheck(menu, menuUTF8BOM, ORD(text.enc = E.UTF8BOM)*2);
-
 
1379
        Menu.setCheck(menu, menuUTF8,    ORD(text.enc = E.UTF8)*2);
-
 
1380
        Menu.setCheck(menu, menuCP866,   ORD(text.enc = E.CP866)*2);
-
 
1381
        Menu.setCheck(menu, menuWin1251, ORD(text.enc = E.W1251)*2);
-
 
1382
        INC(x, menuEncodingX)
-
 
1383
    ELSIF menu = menuView THEN
-
 
1384
        Menu.setCheck(menu, menuNumbers,  ORD(text.numbers));
-
 
1385
        Menu.setCheck(menu, menuFontSize, ORD(font = font2));
-
 
1386
        FOR i := 0 TO Ini.sections.count - 1 DO
-
 
1387
            Menu.setCheck(menu, menuColors + i, ORD(Ini.curSectionNum = i)*2)
-
 
1388
        END;
-
 
1389
        INC(x, menuViewX)
-
 
1390
    ELSIF menu = menuSyntax THEN
-
 
1391
        Menu.setCheck(menu, menuNone,   ORD(text.lang = Languages.langNone)*2);
-
 
1392
        Menu.setCheck(menu, menuC,      ORD(text.lang = Languages.langC)*2);
-
 
1393
        Menu.setCheck(menu, menuFasm,   ORD(text.lang = Languages.langFasm)*2);
-
 
1394
        Menu.setCheck(menu, menuIni,    ORD(text.lang = Languages.langIni)*2);
-
 
1395
        Menu.setCheck(menu, menuLua,    ORD(text.lang = Languages.langLua)*2);
-
 
1396
        Menu.setCheck(menu, menuOberon, ORD(text.lang = Languages.langOberon)*2);
-
 
1397
        Menu.setCheck(menu, menuPascal, ORD(text.lang = Languages.langPascal)*2);
-
 
1398
        INC(x, menuSyntaxX)
-
 
1399
    ELSIF menu = menuProgram THEN
-
 
1400
        Menu.setEnabled(menu, menuBuild, buildScript # "");
-
 
1401
        Menu.setEnabled(menu, menuDebug, debugScript # "");
-
 
Line -... Line 1629...
-
 
1629
    Menu.AddMenuItem(menu, menuIncInd, "increase    Tab");
-
 
1630
    Menu.AddMenuItem(menu, menuDecInd, "decrease    shift-Bksp");
1402
        Menu.setEnabled(menu, menuRun, runScript # "");
1631
    RETURN Menu.create(menu, MenuItemClick, MenuKeyDown)
-
 
1632
END CreateMenuIndent;
1403
        INC(x, menuProgramX)
1633
 
-
 
1634
 
-
 
1635
PROCEDURE CreateMenuCase(): Menu.tMenu;
1404
    ELSIF menu = menuTools THEN
1636
VAR
1405
        INC(x, menuToolsX)
1637
    menu: List.tList;
-
 
1638
BEGIN
-
 
1639
    menu := List.create(NIL);
-
 
1640
    Menu.AddMenuItem(menu, menuUpper, "UPPER    ctrl-U");
-
 
1641
    Menu.AddMenuItem(menu, menuLower, "lower    ctrl-L");
1406
    END;
1642
    RETURN Menu.create(menu, MenuItemClick, MenuKeyDown)
1407
 
1643
END CreateMenuCase;
-
 
1644
 
-
 
1645
 
-
 
1646
PROCEDURE CreateMenuBookmark(): Menu.tMenu;
-
 
1647
VAR
-
 
1648
    menu: List.tList;
1408
    IF menu # NIL THEN
1649
BEGIN
Line 1409... Line 1650...
1409
        IF Menu.opened(menu) THEN
1650
    menu := List.create(NIL);
1410
            Menu.close(menu)
1651
    Menu.AddMenuItem(menu, menuToggleBookmark, "toggle      ctrl-F2");
1411
        END;
1652
    Menu.AddMenuItem(menu, menuNextBookmark,   "next        F2");
Line 1458... Line 1699...
1458
            IF search THEN
1699
            IF search THEN
1459
                Search
1700
                Search
1460
            END
1701
            END
1461
        ELSIF (keyCode = 55) & (key DIV 256 MOD 256 = 52) THEN (* PrtScn *)
1702
        ELSIF (keyCode = 55) & (key DIV 256 MOD 256 = 52) THEN (* PrtScn *)
1462
            key := -1
1703
            key := -1
-
 
1704
        ELSIF (keyCode = 14) & shift THEN (* shift+Backspace *)
-
 
1705
            key := -1;
-
 
1706
            T.input(text, -8)
1463
        ELSIF (keyCode = 15) & ctrl THEN (* ctrl+Tab *)
1707
        ELSIF (keyCode = 15) & ctrl THEN (* ctrl+Tab *)
1464
            key := -1;
1708
            key := -1;
1465
            SwitchTab((curText + 1) MOD textsCount)
1709
            SwitchTab((curText + 1) MOD textsCount)
1466
        ELSIF (keyCode = 33) & ctrl THEN
1710
        ELSIF (keyCode = 33) & ctrl THEN
1467
            key := -1;
1711
            key := -1;
Line 1496... Line 1740...
1496
                |79: key := 35
1740
                |79: key := 35
1497
                |72: key := 38
1741
                |72: key := 38
1498
                |80: key := 40
1742
                |80: key := 40
1499
                |75: key := 37
1743
                |75: key := 37
1500
                |77: key := 39
1744
                |77: key := 39
1501
                |82: key := -1 (* insert *)
1745
                |82, 91, 219, 92, 220: key := -1 (* insert, windows *)
-
 
1746
                |93: ShowMenu(context); key := -1
1502
                |83: key := 46
1747
                |83: key := 46
1503
                |59, 62..66, 68, 87, 88: key := -1 (* F1, F4..F8, F10, F11, F12 *)
1748
                |59, 62..66, 68, 87, 88: key := -1 (* F1, F4..F8, F10, F11, F12 *)
1504
                ELSE
1749
                ELSE
1505
                    IF ctrl THEN
1750
                    IF ctrl THEN
1506
                        CASE keyCode OF
1751
                        CASE keyCode OF
Line 1573... Line 1818...
1573
 
1818
 
1574
    |btnFile:
1819
    |btnFile:
1575
        ShowMenu(menuFile)
1820
        ShowMenu(menuFile)
1576
    |btnEdit:
1821
    |btnEdit:
-
 
1822
        ShowMenu(menuEdit)
-
 
1823
    |btnMenuSearch:
1577
        ShowMenu(menuEdit)
1824
        ShowMenu(menuSearch)
1578
    |btnEncoding:
1825
    |btnEncoding:
1579
        ShowMenu(menuEncoding)
1826
        ShowMenu(menuEncoding)
1580
    |btnView:
1827
    |btnView:
1581
        ShowMenu(menuView)
1828
        ShowMenu(menuView)
Line 1636... Line 1883...
1636
        repaint
1883
        repaint
1637
    |btnBuild:
1884
    |btnBuild:
1638
        Script(buildScript)
1885
        Script(buildScript)
1639
    |btnRun:
1886
    |btnRun:
1640
        Script(runScript)
1887
        Script(runScript)
1641
    |btnUp:
-
 
1642
        T.scroll(text, 0, -1);
-
 
1643
        repaint
-
 
1644
    |btnDown:
-
 
1645
        T.scroll(text, 0, 1);
-
 
1646
        repaint
-
 
1647
    |btnLeft:
-
 
1648
        T.scroll(text, -1, 0);
-
 
1649
        repaint
-
 
1650
    |btnRight:
-
 
1651
        T.scroll(text, 1, 0);
-
 
1652
        repaint
-
 
1653
    |btnFindNext:
1888
    |btnFindNext:
1654
        IF searchText # "" THEN
1889
        IF searchText # "" THEN
1655
            notFound := ~T.findNext(text, box_lib.check_box_get_value(BKW));
1890
            notFound := ~T.findNext(text, box_lib.check_box_get_value(BKW));
1656
            repaint
1891
            repaint
1657
        END
1892
        END
Line 1684... Line 1919...
1684
        focus: BOOLEAN;
1919
        focus: BOOLEAN;
1685
    BEGIN
1920
    BEGIN
1686
        focus := EditBox_Focus(eb);
1921
        focus := EditBox_Focus(eb);
1687
        box_lib.edit_box_mouse(eb);
1922
        box_lib.edit_box_mouse(eb);
1688
        IF focus # EditBox_Focus(eb) THEN
1923
        IF focus # EditBox_Focus(eb) THEN
1689
            SetFocus(eb, TRUE)
1924
            SetFocus(eb, TRUE);
-
 
1925
            repaint
1690
        END
1926
        END
1691
    END EditBox;
1927
    END EditBox;
Line 1692... Line 1928...
1692
 
1928
 
1693
 
-
 
1694
BEGIN
-
 
1695
    Menu.close(menuFile);
-
 
1696
    Menu.close(menuEdit);
1929
 
1697
    Menu.close(menuEncoding);
-
 
1698
    Menu.close(menuView);
-
 
1699
    Menu.close(menuSyntax);
-
 
1700
    Menu.close(menuProgram);
-
 
1701
    Menu.close(menuTools);
1930
BEGIN
1702
    Menu.close(context);
1931
	CloseMenu;
1703
    IF ~resized THEN
1932
    IF ~resized THEN
1704
        msState := K.MouseState();
1933
        msState := K.MouseState();
1705
        IF ~(0 IN msState) OR (16 IN msState) THEN
1934
        IF ~(0 IN msState) OR (16 IN msState) THEN
Line 1715... Line 1944...
1715
                mouse(x, y);
1944
                mouse(x, y);
1716
                T.mouse(text, x, y);
1945
                T.mouse(text, x, y);
1717
                repaint
1946
                repaint
1718
            END
1947
            END
1719
        END;
1948
        END;
1720
        IF VScroll THEN
1949
		IF Scroll.isActive(hScroll) THEN
1721
            mouse(x, y);
1950
			mouse(x, y);
1722
            Scroll.mouse(vScroll, x, y - scrollWidth);
1951
			Scroll.MouseMove(hScroll, x + LEFT, y + TOP);
1723
            T.getScroll(text, scrollX, scrollY);
1952
            T.getScroll(text, scrollX, scrollY);
1724
            T.scroll(text, 0, vScroll.value - scrollY);
1953
            T.scroll(text, hScroll.value - scrollX, 0);
1725
            repaint
1954
			repaint
1726
        END;
1955
		END;
1727
        IF HScroll THEN
1956
		IF Scroll.isActive(vScroll) THEN
1728
            mouse(x, y);
1957
			mouse(x, y);
1729
            Scroll.mouse(hScroll, x - scrollWidth, y);
1958
			Scroll.MouseMove(vScroll, x + LEFT, y + TOP);
1730
            T.getScroll(text, scrollX, scrollY);
1959
            T.getScroll(text, scrollX, scrollY);
1731
            T.scroll(text, hScroll.value - scrollX, 0);
1960
            T.scroll(text, 0, vScroll.value - scrollY);
1732
            repaint
1961
			repaint
1733
        END;
1962
		END;
1734
        IF (8 IN msState) & ~(24 IN msState) THEN
1963
        IF (8 IN msState) & ~(24 IN msState) THEN
1735
            mouse(firstClickX, firstClickY);
1964
            mouse(firstClickX, firstClickY);
1736
            time := click(firstClickX, firstClickY)
1965
            time := click(firstClickX, firstClickY)
Line 1738... Line 1967...
1738
        IF 9 IN msState THEN
1967
        IF 9 IN msState THEN
1739
            ShowMenu(context)
1968
            ShowMenu(context)
1740
        END;
1969
        END;
1741
        IF 24 IN msState THEN
1970
        IF 24 IN msState THEN
1742
            mouse(x, y);
1971
            mouse(x, y);
-
 
1972
    		IF ~hScroll.mouse THEN
-
 
1973
    			Scroll.MouseDown(hScroll, x + LEFT, y + TOP)
-
 
1974
    		END;
-
 
1975
    		IF ~vScroll.mouse THEN
-
 
1976
    			Scroll.MouseDown(vScroll, x + LEFT, y + TOP)
-
 
1977
    		END;
1743
            IF (ABS(x - firstClickX) < 5) & (ABS(y - firstClickY) < 5) THEN
1978
            IF (ABS(x - firstClickX) < 5) & (ABS(y - firstClickY) < 5) THEN
1744
                VScroll := FALSE;
-
 
1745
                HScroll := FALSE;
-
 
1746
                IF (0 <= x) & (x < canvas.width) & (0 <= y) & (y < canvas.height) THEN
1979
                IF (0 <= x) & (x < canvas.width) & (0 <= y) & (y < canvas.height) THEN
1747
                    leftButton := FALSE;
1980
                    leftButton := FALSE;
1748
                    T.selectWord(text);
1981
                    T.selectWord(text);
1749
                    repaint
1982
                    repaint
1750
                END
1983
                END
Line 1806... Line 2039...
1806
    fileName, filePath: RW.tFileName;
2039
    fileName, filePath: RW.tFileName;
1807
    width, height, cliWidth, cliHeight: INTEGER;
2040
    width, height, cliWidth, cliHeight: INTEGER;
1808
    resized: BOOLEAN;
2041
    resized: BOOLEAN;
1809
    firstClickX, firstClickY, time: INTEGER;
2042
    firstClickX, firstClickY, time: INTEGER;
1810
BEGIN
2043
BEGIN
-
 
2044
	delay := scrollDelay;
1811
    K.GetSystemColors;
2045
    K.GetSystemColors;
1812
    Icons.get(icons, grayIcons);
2046
    Icons.get(icons, grayIcons);
1813
    modified := FALSE;
2047
    modified := FALSE;
1814
    switch := FALSE;
2048
    switch := FALSE;
1815
    closing := FALSE;
2049
    closing := FALSE;
Line 1834... Line 2068...
1834
    Tabs.setArea(tabs, LEFT, TOP - Tabs.tabHeight, canvas.width, Tabs.tabHeight);
2068
    Tabs.setArea(tabs, LEFT, TOP - Tabs.tabHeight, canvas.width, Tabs.tabHeight);
1835
    font1 := G.CreateFont(1, "", {});
2069
    font1 := G.CreateFont(1, "", {});
1836
    font2 := G.CreateFont(2, "", {});
2070
    font2 := G.CreateFont(2, "", {});
1837
    font := font1;
2071
    font := font1;
1838
    G.SetFont(canvas, font);
2072
    G.SetFont(canvas, font);
1839
    T.init(NIL);
2073
    T.init(resetTimer);
1840
    T.setCanvas(canvas);
2074
    T.setCanvas(canvas);
1841
    U.ptr2str(K.GetCommandLine(), fileName);
2075
    U.ptr2str(K.GetCommandLine(), fileName);
1842
    context := CreateContextMenu();
2076
    context := CreateContextMenu();
1843
    menuFile := CreateMenuFile();
2077
    menuFile := CreateMenuFile();
-
 
2078
    subCurLine := CreateMenuCurLine();
-
 
2079
    subIndent := CreateMenuIndent();
-
 
2080
    subCase := CreateMenuCase();
1844
    menuEdit := CreateMenuEdit();
2081
    menuEdit := CreateMenuEdit();
-
 
2082
    subCurLine.parent := menuEdit;
-
 
2083
    subIndent.parent := menuEdit;
-
 
2084
    subCase.parent := menuEdit;
-
 
2085
    subBookmark := CreateMenuBookmark();
-
 
2086
    menuSearch := CreateMenuSearch();
-
 
2087
    subBookmark.parent := menuSearch;
1845
    menuEncoding := CreateMenuEncoding();
2088
    menuEncoding := CreateMenuEncoding();
1846
    menuView := CreateMenuView();
2089
    menuView := CreateMenuView();
1847
    menuSyntax := CreateMenuSyntax();
2090
    menuSyntax := CreateMenuSyntax();
1848
    menuProgram := CreateMenuProgram();
2091
    menuProgram := CreateMenuProgram();
1849
    menuTools := CreateMenuTools();
2092
    menuTools := CreateMenuTools();
-
 
2093
 
-
 
2094
    Ini.getSettings(buildScript, runScript, debugScript);
1850
    IF fileName = "" THEN
2095
    IF fileName = "" THEN
1851
        text := T.New();
2096
        text := T.New();
1852
        filePath := "/rd/1"
2097
        filePath := "/rd/1"
1853
    ELSE
2098
    ELSE
1854
        text := T.open(fileName, err);
2099
        text := T.open(fileName, err);
1855
        IF text = NIL THEN
2100
        IF text = NIL THEN
1856
            error("'cedit: error opening file' -E");
2101
            error("'cedit: error opening file' -E");
1857
            K.Exit
2102
            Exit
1858
        ELSE
2103
        ELSE
1859
            U.getPath(fileName, filePath)
2104
            U.getPath(fileName, filePath)
1860
        END
2105
        END
1861
    END;
2106
    END;
1862
    OD := OpenDlg.Create(draw_window, OpenDlg.topen, filePath, "");
2107
    OD := OpenDlg.Create(draw_window, OpenDlg.topen, filePath, "");
1863
    insert(0, text);
2108
    insert(0, text);
1864
 
-
 
1865
    vScroll := Scroll.create(scrollWidth, canvas.height - scrollWidth*2 + 2);
2109
    Scroll.create(FALSE, canvas.width, scrollWidth, scrollWidth, scrollWidth, hScroll);
1866
    hScroll := Scroll.create(canvas.width - scrollWidth*2, scrollWidth);
2110
    Scroll.create(TRUE, scrollWidth, canvas.height, scrollWidth, scrollWidth, vScroll);
1867
    T.resize(canvas.width, canvas.height);
2111
    T.resize(canvas.width, canvas.height);
1868
    T.SetPos(text, 0, 0);
2112
    T.SetPos(text, 0, 0);
1869
    confirm := FALSE;
2113
    confirm := FALSE;
1870
    notFound := FALSE;
2114
    notFound := FALSE;
1871
    search := FALSE;
2115
    search := FALSE;
Line 1874... Line 2118...
1874
    new_searchText := "";
2118
    new_searchText := "";
1875
    searchText := "";
2119
    searchText := "";
1876
    cs := FALSE;
2120
    cs := FALSE;
1877
    whole := FALSE;
2121
    whole := FALSE;
1878
    replaced := 0;
2122
    replaced := 0;
1879
    Ini.getStr("paths", "build", buildScript);
-
 
1880
    Ini.getStr("paths", "run",   runScript);
-
 
1881
    Ini.getStr("paths", "debug", debugScript);
-
 
1882
    K.SetEventsMask({0, 1, 2, 5, 6, 31});
2123
    K.SetEventsMask({0, 1, 2, 5, 6, 31});
-
 
2124
    Menu.init(resetTimer);
1883
    draw_window;
2125
    draw_window;
-
 
2126
    Timer.create(mainTID);
1884
    WHILE TRUE DO
2127
    WHILE TRUE DO
1885
        CASE K.WaitForEvent() OF
2128
        CASE K.WaitForEvent() OF
-
 
2129
        |1: IF Menu.redraw THEN
1886
        |1: Redraw(resized, width, height, cliWidth, cliHeight)
2130
        		Redraw(resized, width, height, cliWidth, cliHeight)
-
 
2131
        	ELSE
-
 
2132
        		Menu.Redraw;
-
 
2133
        		K.CreateWindow(30 + K.GetTickCount() MOD 128, 30 + K.GetTickCount() MOD 128, winWidth, winHeight, K.winColor, 73H, 0, 0, header);
-
 
2134
        		repaint
-
 
2135
        	END
1887
        |2: KeyDown(K.GetKey())
2136
        |2: KeyDown(K.GetKey())
1888
        |3: BtnClick
2137
        |3: BtnClick
1889
        |6: MouseEvent(resized, firstClickX, firstClickY, time)
2138
        |6: MouseEvent(resized, firstClickX, firstClickY, time)
1890
        |7: receiveIPC
2139
        |7: receiveIPC
1891
        ELSE
-
 
1892
        END
2140
        END
1893
    END
2141
    END
1894
END main;
2142
END main;