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; |