Rev 9060 | Rev 9174 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 9060 | Rev 9073 | ||
---|---|---|---|
Line 26... | Line 26... | ||
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; |
Line 29... | Line 29... | ||
29 | 29 | ||
30 | CONST |
30 | CONST |
Line 31... | Line 31... | ||
31 | header = "CEdit (12-jul-2021)"; |
31 | header = "CEdit (17-jul-2021)"; |
32 | 32 | ||
Line 33... | Line 33... | ||
33 | ShellFilter = ""; |
33 | ShellFilter = ""; |
Line 52... | Line 52... | ||
52 | btnDown = 31; |
52 | btnDown = 31; |
53 | btnLeft = 32; |
53 | btnLeft = 32; |
54 | btnRight = 33; |
54 | btnRight = 33; |
55 | btnYes = 40; |
55 | btnYes = 40; |
56 | btnNo = 41; |
56 | btnNo = 41; |
57 | btnFindEdit = 50; |
- | |
58 | btnReplaceEdit = 51; |
- | |
59 | btnGotoEdit = 52; |
- | |
60 | btnFindNext = 60; |
57 | btnFindNext = 60; |
61 | btnReplace = 61; |
58 | btnReplace = 61; |
62 | btnReplaceAll = 62; |
59 | btnReplaceAll = 62; |
63 | btnGoto = 63; |
60 | btnGoto = 63; |
64 | btnCloseFind = 64; |
61 | btnCloseFind = 64; |
- | 62 | btnHideFind = 65; |
|
Line 65... | Line 63... | ||
65 | 63 | ||
66 | btnFile = 70; |
64 | btnFile = 70; |
67 | btnEdit = 71; |
65 | btnEdit = 71; |
68 | btnEncoding = 72; |
66 | btnEncoding = 72; |
Line 82... | Line 80... | ||
82 | 80 | ||
83 | TOP = btnTop + toolBtnSize + 10 + Tabs.tabHeight; |
81 | TOP = btnTop + toolBtnSize + 10 + Tabs.tabHeight; |
84 | RIGHT = scrollWidth - 2; |
82 | RIGHT = scrollWidth - 2; |
Line 85... | Line 83... | ||
85 | BOTTOM = scrollWidth + 18; |
83 | BOTTOM = scrollWidth + 18; |
Line 86... | Line 84... | ||
86 | 84 | ||
87 | minWinWidth = 635; minWinHeight = 542; |
85 | minWinWidth = 635; minWinHeight = 538; |
88 | 86 | ||
89 | SEARCH_PADDING = 10; |
87 | SEARCH_PADDING = 10; |
Line 144... | Line 142... | ||
144 | menuUTF8 = 61; |
142 | menuUTF8 = 61; |
145 | menuCP866 = 62; |
143 | menuCP866 = 62; |
146 | menuWin1251 = 63; |
144 | menuWin1251 = 63; |
Line 147... | Line 145... | ||
147 | 145 | ||
- | 146 | menuPipet = 70; |
|
148 | menuPipet = 70; |
147 | menuBoard = 71; |
Line 149... | Line 148... | ||
149 | menuSysFunc = 71; |
148 | menuSysFunc = 72; |
Line 150... | Line 149... | ||
150 | 149 | ||
Line 159... | Line 158... | ||
159 | text: T.tText; |
158 | text: T.tText; |
160 | texts: ARRAY maxTexts OF T.tText; |
159 | texts: ARRAY maxTexts OF T.tText; |
161 | textsCount, curText: INTEGER; |
160 | textsCount, curText: INTEGER; |
Line 162... | Line 161... | ||
162 | 161 | ||
163 | winWidth, winHeight: INTEGER; |
- | |
164 | shift: SET; |
162 | winWidth, winHeight: INTEGER; |
165 | AppPath, runScript, buildScript, debugScript: RW.tFileName; |
163 | AppPath, runScript, buildScript, debugScript: RW.tFileName; |
166 | OD: OpenDlg.Dialog; |
164 | OD: OpenDlg.Dialog; |
Line 167... | Line 165... | ||
167 | confirm, notFound, search, modified: BOOLEAN; |
165 | confirm, notFound, search, searchOpened, modified: BOOLEAN; |
168 | 166 | ||
169 | switch: BOOLEAN; |
167 | switch, closing: BOOLEAN; |
170 | leftButton, VScroll, HScroll: BOOLEAN; |
168 | leftButton, VScroll, HScroll: BOOLEAN; |
Line 171... | Line 169... | ||
171 | vScroll, hScroll: Scroll.tScroll; |
169 | vScroll, hScroll: Scroll.tScroll; |
Line 213... | Line 211... | ||
213 | IF value THEN |
211 | IF value THEN |
214 | edit.flags := ORD(BITS(edit.flags) + {1}) |
212 | edit.flags := ORD(BITS(edit.flags) + {1}) |
215 | ELSE |
213 | ELSE |
216 | edit.flags := ORD(BITS(edit.flags) - {1}) |
214 | edit.flags := ORD(BITS(edit.flags) - {1}) |
217 | END; |
215 | END; |
218 | IF search THEN |
216 | IF search & searchOpened THEN |
219 | box_lib.edit_box_draw(edit) |
217 | box_lib.edit_box_draw(edit) |
220 | END |
218 | END |
221 | END EditBox_SetFocus; |
219 | END EditBox_SetFocus; |
Line -... | Line 220... | ||
- | 220 | ||
- | 221 | ||
- | 222 | PROCEDURE SetFocus (edit: box_lib.edit_box; value: BOOLEAN); |
|
- | 223 | BEGIN |
|
- | 224 | EditBox_SetFocus(FindEdit, FALSE); |
|
- | 225 | EditBox_SetFocus(ReplaceEdit, FALSE); |
|
- | 226 | EditBox_SetFocus(GotoEdit, FALSE); |
|
- | 227 | EditBox_SetFocus(edit, value) |
|
- | 228 | END SetFocus; |
|
222 | 229 | ||
223 | 230 | ||
224 | PROCEDURE Rect (left, top, right, bottom, color: INTEGER); |
231 | PROCEDURE Rect (left, top, right, bottom, color: INTEGER); |
225 | BEGIN |
232 | BEGIN |
226 | K.DrawLine(left, top, right, top, color); |
233 | K.DrawLine(left, top, right, top, color); |
Line 254... | Line 261... | ||
254 | PROCEDURE NotFound; |
261 | PROCEDURE NotFound; |
255 | BEGIN |
262 | BEGIN |
256 | IF notFound THEN |
263 | IF notFound THEN |
257 | Message("not found"); |
264 | Message("not found"); |
258 | notFound := FALSE; |
265 | notFound := FALSE; |
259 | EditBox_SetFocus(FindEdit, TRUE); |
266 | SetFocus(FindEdit, TRUE) |
260 | EditBox_SetFocus(ReplaceEdit, FALSE); |
- | |
261 | EditBox_SetFocus(GotoEdit, FALSE) |
- | |
262 | END |
267 | END |
263 | END NotFound; |
268 | END NotFound; |
Line 264... | Line 269... | ||
264 | 269 | ||
Line 271... | Line 276... | ||
271 | s := "replaced: "; |
276 | s := "replaced: "; |
272 | U.int2str(replaced, s1); |
277 | U.int2str(replaced, s1); |
273 | U.append(s, s1); |
278 | U.append(s, s1); |
274 | Message(s); |
279 | Message(s); |
275 | replaced := 0; |
280 | replaced := 0; |
276 | EditBox_SetFocus(FindEdit, TRUE); |
281 | SetFocus(FindEdit, TRUE) |
277 | EditBox_SetFocus(ReplaceEdit, FALSE); |
- | |
278 | EditBox_SetFocus(GotoEdit, FALSE) |
- | |
279 | END |
282 | END |
280 | END Replaced; |
283 | END Replaced; |
Line 281... | Line 284... | ||
281 | 284 | ||
Line 348... | Line 351... | ||
348 | PROCEDURE DrawState (text: T.tText; width, height: INTEGER); |
351 | PROCEDURE DrawState (text: T.tText; width, height: INTEGER); |
349 | VAR |
352 | VAR |
350 | y: INTEGER; |
353 | y: INTEGER; |
351 | BEGIN |
354 | BEGIN |
352 | y := (btnHeight - fontHeight) DIV 2 + btnTop; |
355 | y := (btnHeight - fontHeight) DIV 2 + btnTop; |
353 | K.DrawRect(width - 12*fontWidth, y, 12*fontWidth, fontHeight, K.winColor); |
356 | K.DrawRect(width - 16*fontWidth, y, 16*fontWidth, fontHeight, K.winColor); |
354 | CASE text.enc OF |
- | |
355 | |E.UTF8: K.DrawText866(width - 5*fontWidth, y, K.textColor, "UTF-8") |
- | |
356 | |E.UTF8BOM: K.DrawText866(width - 9*fontWidth, y, K.textColor, "UTF-8-BOM") |
- | |
357 | |E.CP866: K.DrawText866(width - 5*fontWidth, y, K.textColor, "CP866") |
- | |
358 | |E.W1251: K.DrawText866(width - 12*fontWidth, y, K.textColor, "Windows-1251") |
357 | K.DrawText(width - LENGTH(E.names[text.enc])*fontWidth, y, K.textColor, E.names[text.enc]); |
359 | END; |
- | |
360 | - | ||
361 | y := height - (BOTTOM - scrollWidth) + (BOTTOM - scrollWidth - 16) DIV 2; |
358 | y := height - (BOTTOM - scrollWidth) + (BOTTOM - scrollWidth - 16) DIV 2; |
362 | K.DrawRect(LEFT + 16*fontWidth, TOP + canvas.height + scrollWidth - 1, width - LEFT - 24*fontWidth, BOTTOM - scrollWidth + 1, K.winColor); |
359 | K.DrawRect(LEFT + 16*fontWidth, TOP + canvas.height + scrollWidth - 1, width - LEFT - 24*fontWidth, BOTTOM - scrollWidth + 1, K.winColor); |
363 | K.DrawText866(LEFT + 16*fontWidth, y, K.textColor, text.fileName); |
360 | K.DrawText866(LEFT + 16*fontWidth, y, K.textColor, text.fileName); |
364 | WriteModified(width - 8*fontWidth, y) |
361 | WriteModified(width - 8*fontWidth, y) |
365 | END DrawState; |
362 | END DrawState; |
Line 371... | Line 368... | ||
371 | BEGIN |
368 | BEGIN |
372 | IF text # NIL THEN |
369 | IF text # NIL THEN |
373 | IF confirm THEN |
370 | IF confirm THEN |
374 | K.DeleteButton(btnYes); |
371 | K.DeleteButton(btnYes); |
375 | K.DeleteButton(btnNo); |
372 | K.DeleteButton(btnNo); |
376 | confirm := FALSE |
373 | confirm := FALSE; |
- | 374 | closing := FALSE |
|
377 | END; |
375 | END; |
378 | IF ~search THEN |
376 | IF ~search OR (searchText = "") THEN |
379 | T.wordSel(text) |
377 | T.wordSel(text) |
380 | END; |
378 | END; |
381 | K.ClientSize(width, height); |
379 | K.ClientSize(width, height); |
382 | IF switch THEN |
380 | IF switch THEN |
383 | DrawState(text, width, height); |
381 | DrawState(text, width, height); |
Line 448... | Line 446... | ||
448 | K.DrawLine(right - 15, top + 6, right - 6, top + 15, 0FFFFFFH); |
446 | K.DrawLine(right - 15, top + 6, right - 6, top + 15, 0FFFFFFH); |
449 | K.DrawLine(right - 15, top + 14, right - 6, top + 5, 0FFFFFFH); |
447 | K.DrawLine(right - 15, top + 14, right - 6, top + 5, 0FFFFFFH); |
450 | K.DrawLine(right - 15, top + 15, right - 5, top + 5, 0FFFFFFH); |
448 | K.DrawLine(right - 15, top + 15, right - 5, top + 5, 0FFFFFFH); |
451 | K.DrawLine(right - 14, top + 15, right - 5, top + 6, 0FFFFFFH); |
449 | K.DrawLine(right - 14, top + 15, right - 5, top + 6, 0FFFFFFH); |
Line -... | Line 450... | ||
- | 450 | ||
- | 451 | K.CreateButton(btnHideFind, right - 40, top, 20, 20, K.btnColor, ""); |
|
- | 452 | K.DrawLine(right - 34, top + 14, right - 26, top + 14, K.btnTextColor); |
|
- | 453 | K.DrawLine(right - 34, top + 15, right - 26, top + 15, K.btnTextColor); |
|
452 | 454 | ||
453 | INC(top, 15); |
455 | INC(top, 15); |
454 | INC(left, SEARCH_PADDING); |
456 | INC(left, SEARCH_PADDING); |
455 | K.DrawText866(left, top, K.textColor, "find"); |
457 | K.DrawText866(left, top, K.textColor, "find"); |
456 | K.DrawText866(left, top + 55, K.textColor, "replace with"); |
- | |
457 | K.CreateButton(btnFindEdit + ORD({30}), left, top + 20, EditBox_Width, fontHeight + 5, 0, ""); |
- | |
458 | K.CreateButton(btnReplaceEdit + ORD({30}), left, top + 75, EditBox_Width, fontHeight + 5, 0, ""); |
458 | K.DrawText866(left, top + 55, K.textColor, "replace with"); |
459 | K.DrawText866(left, top + 330, K.textColor, "go to line"); |
- | |
460 | K.CreateButton(btnGotoEdit + ORD({30}), left, top + 350, EditBox_Width, fontHeight + 5, 0, ""); |
459 | K.DrawText866(left, top + 330, K.textColor, "go to line"); |
461 | BKW.top_s := BKW.top_s MOD 65536 + (top + 110) * 65536; |
460 | BKW.top_s := BKW.top_s MOD 65536 + (top + 110) * 65536; |
462 | CS.top_s := CS.top_s MOD 65536 + (top + 140) * 65536; |
461 | CS.top_s := CS.top_s MOD 65536 + (top + 140) * 65536; |
463 | WH.top_s := WH.top_s MOD 65536 + (top + 170) * 65536; |
462 | WH.top_s := WH.top_s MOD 65536 + (top + 170) * 65536; |
464 | BKW.left_s := BKW.left_s MOD 65536 + left * 65536; |
463 | BKW.left_s := BKW.left_s MOD 65536 + left * 65536; |
Line 584... | Line 583... | ||
584 | 583 | ||
585 | K.PutPixel(LEFT + canvas.width + scrollWidth - 2, TOP - 1, K.winColor); |
584 | K.PutPixel(LEFT + canvas.width + scrollWidth - 2, TOP - 1, K.winColor); |
Line 586... | Line 585... | ||
586 | K.PutPixel(LEFT, TOP + canvas.height + scrollWidth - 2, K.winColor); |
585 | K.PutPixel(LEFT, TOP + canvas.height + scrollWidth - 2, K.winColor); |
587 | 586 | ||
588 | DrawState(text, width, height); |
587 | DrawState(text, width, height); |
589 | IF search THEN |
588 | IF search & searchOpened THEN |
590 | SearchPanel(searchLeft, TOP) |
589 | SearchPanel(searchLeft, TOP) |
591 | END; |
590 | END; |
592 | Tabs.draw(tabs); |
591 | Tabs.draw(tabs); |
Line 608... | Line 607... | ||
608 | x := mouseX - winX - cliX - LEFT; |
607 | x := mouseX - winX - cliX - LEFT; |
609 | y := mouseY - winY - cliY - TOP; |
608 | y := mouseY - winY - cliY - TOP; |
610 | END mouse; |
609 | END mouse; |
Line 611... | Line 610... | ||
611 | 610 | ||
612 | 611 | ||
613 | PROCEDURE getKBState; |
612 | PROCEDURE getKBState (VAR shift, ctrl: BOOLEAN); |
614 | VAR |
613 | VAR |
615 | kbState: SET; |
614 | kbState: SET; |
616 | BEGIN |
615 | BEGIN |
617 | kbState := K.GetControlKeys(); |
- | |
618 | IF {0, 1} * kbState # {} THEN |
- | |
619 | INCL(shift, T.SHIFT) |
- | |
620 | ELSE |
- | |
621 | EXCL(shift, T.SHIFT) |
- | |
622 | END; |
616 | kbState := K.GetControlKeys(); |
623 | - | ||
624 | IF {2, 3} * kbState # {} THEN |
- | |
625 | INCL(shift, T.CTRL) |
- | |
626 | ELSE |
- | |
627 | EXCL(shift, T.CTRL) |
617 | shift := {0, 1} * kbState # {}; |
Line 628... | Line 618... | ||
628 | END |
618 | ctrl := {2, 3} * kbState # {}; |
629 | END getKBState; |
619 | END getKBState; |
Line 790... | Line 780... | ||
790 | 780 | ||
791 | PROCEDURE closeFile (conf: BOOLEAN; n: INTEGER); |
781 | PROCEDURE closeFile (conf: BOOLEAN; n: INTEGER); |
792 | VAR |
782 | VAR |
793 | i: INTEGER; |
783 | i: INTEGER; |
794 | BEGIN |
784 | BEGIN |
795 | IF text.modified & conf THEN |
785 | IF texts[n].modified & conf THEN |
796 | Confirm |
786 | Confirm |
797 | ELSE |
787 | ELSE |
798 | Tabs.delete(tabs, n); |
788 | Tabs.delete(tabs, n); |
799 | FOR i := n + 1 TO textsCount - 1 DO |
789 | FOR i := n + 1 TO textsCount - 1 DO |
Line 852... | Line 842... | ||
852 | END |
842 | END |
853 | RETURN i |
843 | RETURN i |
854 | END getFileNum; |
844 | END getFileNum; |
Line -... | Line 845... | ||
- | 845 | ||
- | 846 | ||
- | 847 | PROCEDURE SwitchTab (n: INTEGER); |
|
- | 848 | BEGIN |
|
- | 849 | curText := n; |
|
- | 850 | Tabs.switch(tabs, n); |
|
- | 851 | Switch(texts[n]); |
|
- | 852 | draw_window |
|
- | 853 | END SwitchTab; |
|
855 | 854 | ||
856 | 855 | ||
857 | PROCEDURE open; |
856 | PROCEDURE open; |
858 | VAR |
857 | VAR |
859 | fileName: RW.tFileName; |
858 | fileName: RW.tFileName; |
Line 872... | Line 871... | ||
872 | ELSE |
871 | ELSE |
873 | insert(textsCount, nov); |
872 | insert(textsCount, nov); |
874 | T.SetPos(nov, 0, 0) |
873 | T.SetPos(nov, 0, 0) |
875 | END |
874 | END |
876 | ELSE |
875 | ELSE |
877 | curText := n; |
- | |
878 | Tabs.switch(tabs, n); |
- | |
879 | Switch(texts[n]); |
876 | SwitchTab(n) |
880 | draw_window |
- | |
881 | END |
877 | END |
882 | END |
878 | END |
883 | ELSE |
879 | ELSE |
884 | error("'cedit: too many files' -E") |
880 | error("'cedit: too many files' -E") |
885 | END |
881 | END |
Line 929... | Line 925... | ||
929 | 925 | ||
930 | 926 | ||
931 | PROCEDURE Search; |
927 | PROCEDURE Search; |
- | 928 | BEGIN |
|
932 | BEGIN |
929 | search := ~search; |
- | 930 | LEFT := searchLeft; |
|
933 | search := ~search; |
931 | IF search THEN |
934 | IF search THEN |
932 | searchOpened := TRUE; |
935 | LEFT := searchLeft + EditBox_Width + SEARCH_PADDING*2 + 5; |
933 | INC(LEFT, EditBox_Width + SEARCH_PADDING*2 + 5); |
936 | IF T.search(text, searchText, cs, whole) THEN END |
- | |
937 | ELSE |
934 | IF T.search(text, searchText, cs, whole) THEN END |
938 | LEFT := searchLeft; |
935 | ELSE |
939 | IF T.search(text, "", FALSE, FALSE) THEN END |
936 | IF T.search(text, "", FALSE, FALSE) THEN END |
940 | END; |
- | |
941 | EditBox_SetFocus(FindEdit, search); |
- | |
942 | EditBox_SetFocus(ReplaceEdit, FALSE); |
937 | END; |
943 | EditBox_SetFocus(GotoEdit, FALSE); |
938 | SetFocus(FindEdit, search); |
944 | resize; |
939 | resize; |
Line 945... | Line 940... | ||
945 | draw_window |
940 | draw_window |
946 | END Search; |
941 | END Search; |
947 | 942 | ||
- | 943 | ||
948 | 944 | PROCEDURE click (x, y: INTEGER): INTEGER; |
|
- | 945 | VAR |
|
949 | PROCEDURE click (x, y: INTEGER): INTEGER; |
946 | scrollX, scrollY: INTEGER; |
950 | VAR |
947 | shift, ctrl: BOOLEAN; |
951 | scrollX, scrollY: INTEGER; |
948 | BEGIN |
952 | BEGIN |
- | |
953 | IF (0 <= x) & (x < canvas.width) & (0 <= y) & (y < canvas.height) THEN |
- | |
954 | leftButton := TRUE; |
949 | getKBState(shift, ctrl); |
955 | EditBox_SetFocus(FindEdit, FALSE); |
950 | IF (0 <= x) & (x < canvas.width) & (0 <= y) & (y < canvas.height) THEN |
956 | EditBox_SetFocus(ReplaceEdit, FALSE); |
951 | leftButton := TRUE; |
957 | EditBox_SetFocus(GotoEdit, FALSE); |
952 | SetFocus(FindEdit, FALSE); |
958 | IF ~(T.SHIFT IN shift) THEN |
953 | IF ~shift THEN |
959 | T.resetSelect(text) |
954 | T.resetSelect(text) |
960 | END; |
955 | END; |
961 | T.mouse(text, x, y); |
- | |
962 | repaint |
- | |
963 | ELSIF (canvas.width < x) & (x < canvas.width + scrollWidth) & (scrollWidth < y) & (y < canvas.height - scrollWidth) THEN |
956 | T.mouse(text, x, y); |
964 | VScroll := TRUE; |
957 | repaint |
965 | DEC(x, canvas.width); |
958 | ELSIF (canvas.width < x) & (x < canvas.width + scrollWidth) & (scrollWidth < y) & (y < canvas.height - scrollWidth) THEN |
966 | DEC(y, scrollWidth); |
959 | VScroll := TRUE; |
967 | Scroll.mouse(vScroll, x, y); |
960 | Scroll.mouse(vScroll, x - canvas.width, y - scrollWidth); |
968 | T.getScroll(text, scrollX, scrollY); |
961 | T.getScroll(text, scrollX, scrollY); |
969 | T.scroll(text, 0, vScroll.value - scrollY); |
- | |
970 | repaint |
- | |
971 | ELSIF (scrollWidth < x) & (x < canvas.width - scrollWidth) & (canvas.height < y) & (y < canvas.height + scrollWidth) THEN |
962 | T.scroll(text, 0, vScroll.value - scrollY); |
972 | HScroll := TRUE; |
963 | repaint |
973 | DEC(x, scrollWidth); |
964 | ELSIF (scrollWidth < x) & (x < canvas.width - scrollWidth) & (canvas.height < y) & (y < canvas.height + scrollWidth) THEN |
974 | DEC(y, canvas.height); |
965 | HScroll := TRUE; |
975 | Scroll.mouse(hScroll, x, y); |
966 | Scroll.mouse(hScroll, x - scrollWidth, y - canvas.height); |
976 | T.getScroll(text, scrollX, scrollY); |
967 | T.getScroll(text, scrollX, scrollY); |
Line 989... | Line 980... | ||
989 | Scroll.MouseUp(vScroll); |
980 | Scroll.MouseUp(vScroll); |
990 | Scroll.MouseUp(hScroll); |
981 | Scroll.MouseUp(hScroll); |
991 | END LeftButtonUp; |
982 | END LeftButtonUp; |
Line 992... | Line 983... | ||
992 | 983 | ||
993 | 984 | ||
994 | PROCEDURE close; |
985 | PROCEDURE Close; |
995 | VAR |
986 | VAR |
- | 987 | cont: BOOLEAN; |
|
996 | cont: BOOLEAN; |
988 | BEGIN |
997 | BEGIN |
989 | closing := TRUE; |
998 | cont := TRUE; |
990 | cont := TRUE; |
999 | WHILE (textsCount > 0) & cont DO |
991 | WHILE (textsCount > 0) & cont DO |
1000 | IF text.modified THEN |
992 | IF text.modified THEN |
1001 | Confirm; |
993 | Confirm; |
1002 | cont := FALSE |
994 | cont := FALSE |
1003 | ELSE |
995 | ELSE |
1004 | closeFile(FALSE, curText); |
996 | closeFile(FALSE, curText); |
1005 | repaint |
997 | repaint |
1006 | END |
998 | END |
Line 1007... | Line 999... | ||
1007 | END |
999 | END |
1008 | END close; |
1000 | END Close; |
1009 | 1001 | ||
Line 1029... | Line 1021... | ||
1029 | K.Run("/rd/1/@open", script) |
1021 | K.Run("/rd/1/@open", script) |
1030 | END |
1022 | END |
1031 | END Script; |
1023 | END Script; |
Line -... | Line 1024... | ||
- | 1024 | ||
- | 1025 | ||
- | 1026 | PROCEDURE ShowSearchPanel; |
|
- | 1027 | BEGIN |
|
- | 1028 | IF ~search THEN |
|
- | 1029 | Search |
|
- | 1030 | ELSIF ~searchOpened THEN |
|
- | 1031 | search := FALSE; |
|
- | 1032 | Search |
|
- | 1033 | END |
|
- | 1034 | END ShowSearchPanel; |
|
1032 | 1035 | ||
1033 | 1036 | ||
1034 | PROCEDURE receiveIPC; |
1037 | PROCEDURE receiveIPC; |
1035 | BEGIN |
1038 | BEGIN |
1036 | IF IPC[0] # Menu.lastTID THEN |
1039 | IF IPC[0] # Menu.lastTID THEN |
1037 | IPC[2] := 0 |
1040 | IPC[2] := 0 |
1038 | END; |
1041 | END; |
1039 | CASE IPC[2] OF |
1042 | CASE IPC[2] OF |
1040 | |0: |
1043 | |0: |
1041 | |menuCut: T.key(text, ORD("X"), {T.CTRL}) |
1044 | |menuCut: T.key(text, ORD("X"), FALSE, TRUE) |
1042 | |menuCopy: T.key(text, ORD("C"), {T.CTRL}) |
1045 | |menuCopy: T.key(text, ORD("C"), FALSE, TRUE) |
1043 | |menuPaste: T.key(text, ORD("V"), {T.CTRL}) |
1046 | |menuPaste: T.key(text, ORD("V"), FALSE, TRUE) |
Line 1044... | Line 1047... | ||
1044 | |menuDelete: T.key(text, 46, {}) |
1047 | |menuDelete: T.key(text, 46, FALSE, FALSE) |
1045 | |menuSelectAll: T.key(text, ORD("A"), {T.CTRL}) |
1048 | |menuSelectAll: T.key(text, ORD("A"), FALSE, TRUE) |
1046 | 1049 | ||
1047 | |menuNew: |
1050 | |menuNew: |
Line 1060... | Line 1063... | ||
1060 | |menuClose: |
1063 | |menuClose: |
1061 | closeFile(TRUE, curText) |
1064 | closeFile(TRUE, curText) |
1062 | |menuFolder: |
1065 | |menuFolder: |
1063 | K.Run("/rd/1/File Managers/Eolite", text.fileName) |
1066 | K.Run("/rd/1/File Managers/Eolite", text.fileName) |
1064 | |menuExit: |
1067 | |menuExit: |
1065 | close |
1068 | Close |
1066 | |menuUndo: |
1069 | |menuUndo: |
1067 | T.undo(text); |
1070 | T.undo(text); |
1068 | repaint |
1071 | repaint |
1069 | |menuRedo: |
1072 | |menuRedo: |
1070 | T.redo(text); |
1073 | T.redo(text); |
1071 | repaint |
1074 | repaint |
1072 | |menuSearch: |
1075 | |menuSearch: |
1073 | IF ~search THEN |
1076 | ShowSearchPanel; |
1074 | Search |
- | |
1075 | END; |
- | |
1076 | EditBox_SetFocus(FindEdit, TRUE); |
1077 | SetFocus(FindEdit, TRUE) |
1077 | EditBox_SetFocus(ReplaceEdit, FALSE); |
- | |
1078 | EditBox_SetFocus(GotoEdit, FALSE) |
- | |
1079 | |menuGoto: |
1078 | |menuGoto: |
1080 | IF ~search THEN |
1079 | ShowSearchPanel; |
1081 | Search |
- | |
1082 | END; |
- | |
1083 | EditBox_SetFocus(GotoEdit, TRUE); |
1080 | SetFocus(GotoEdit, TRUE) |
1084 | EditBox_SetFocus(FindEdit, FALSE); |
- | |
1085 | EditBox_SetFocus(ReplaceEdit, FALSE) |
- | |
1086 | |menuNumbers: |
1081 | |menuNumbers: |
1087 | T.toggleNumbers(text) |
1082 | T.toggleNumbers(text) |
1088 | |menuFontSize: |
1083 | |menuFontSize: |
1089 | IF font = font1 THEN |
1084 | IF font = font1 THEN |
1090 | font := font2 |
1085 | font := font2 |
Line 1126... | Line 1121... | ||
1126 | text.enc := E.CP866 |
1121 | text.enc := E.CP866 |
1127 | |menuWin1251: |
1122 | |menuWin1251: |
1128 | text.enc := E.W1251 |
1123 | text.enc := E.W1251 |
1129 | |menuPipet: |
1124 | |menuPipet: |
1130 | K.Run("/rd/1/develop/pipet", "") |
1125 | K.Run("/rd/1/develop/pipet", "") |
- | 1126 | |menuBoard: |
|
- | 1127 | K.Run("/rd/1/develop/board", "") |
|
1131 | |menuSysFunc: |
1128 | |menuSysFunc: |
1132 | K.Run("/rd/1/docpack", "f") |
1129 | K.Run("/rd/1/docpack", "f") |
1133 | |menuColors..menuMaxColors: |
1130 | |menuColors..menuMaxColors: |
1134 | Ini.selectSection(IPC[2] - menuColors) |
1131 | Ini.selectSection(IPC[2] - menuColors) |
1135 | END; |
1132 | END; |
Line 1139... | Line 1136... | ||
1139 | 1136 | ||
1140 | 1137 | ||
1141 | PROCEDURE MenuKeyDown (menu: Menu.tMenu; key: INTEGER): BOOLEAN; |
1138 | PROCEDURE MenuKeyDown (menu: Menu.tMenu; key: INTEGER): BOOLEAN; |
- | 1139 | VAR |
|
1142 | VAR |
1140 | menuItem: INTEGER; |
1143 | menuItem: INTEGER; |
1141 | shift, ctrl: BOOLEAN; |
1144 | BEGIN |
1142 | BEGIN |
1145 | menuItem := -1; |
1143 | menuItem := -1; |
1146 | getKBState; |
1144 | getKBState(shift, ctrl); |
1147 | IF (T.CTRL IN shift) THEN |
1145 | IF ctrl THEN |
1148 | CASE key DIV 65536 OF |
1146 | CASE key DIV 65536 OF |
1149 | |17: menuItem := menuClose |
1147 | |17: menuItem := menuClose |
1150 | |21: menuItem := menuRedo |
1148 | |21: menuItem := menuRedo |
Line 1240... | Line 1238... | ||
1240 | PROCEDURE CreateMenuEncoding (): Menu.tMenu; |
1238 | PROCEDURE CreateMenuEncoding (): Menu.tMenu; |
1241 | VAR |
1239 | VAR |
1242 | menu: List.tList; |
1240 | menu: List.tList; |
1243 | BEGIN |
1241 | BEGIN |
1244 | menu := List.create(NIL); |
1242 | menu := List.create(NIL); |
1245 | Menu.AddMenuItem(menu, menuUTF8BOM, "UTF-8-BOM"); |
1243 | Menu.AddMenuItem(menu, menuUTF8BOM, E.names[E.UTF8BOM]); |
1246 | Menu.AddMenuItem(menu, menuUTF8, "UTF-8"); |
1244 | Menu.AddMenuItem(menu, menuUTF8, E.names[E.UTF8]); |
1247 | Menu.AddMenuItem(menu, menuCP866, "CP866"); |
1245 | Menu.AddMenuItem(menu, menuCP866, E.names[E.CP866]); |
1248 | Menu.AddMenuItem(menu, menuWin1251, "Windows-1251"); |
1246 | Menu.AddMenuItem(menu, menuWin1251, E.names[E.W1251]); |
1249 | RETURN Menu.create(menu, MenuItemClick, MenuKeyDown) |
1247 | RETURN Menu.create(menu, MenuItemClick, MenuKeyDown) |
1250 | END CreateMenuEncoding; |
1248 | END CreateMenuEncoding; |
Line 1251... | Line 1249... | ||
1251 | 1249 | ||
Line 1311... | Line 1309... | ||
1311 | VAR |
1309 | VAR |
1312 | menu: List.tList; |
1310 | menu: List.tList; |
1313 | BEGIN |
1311 | BEGIN |
1314 | menu := List.create(NIL); |
1312 | menu := List.create(NIL); |
1315 | Menu.AddMenuItem(menu, menuPipet, "pipet"); |
1313 | Menu.AddMenuItem(menu, menuPipet, "pipet"); |
- | 1314 | Menu.AddMenuItem(menu, menuBoard, "board"); |
|
1316 | Menu.AddMenuItem(menu, menuSysFunc, "system functions"); |
1315 | Menu.AddMenuItem(menu, menuSysFunc, "system functions"); |
1317 | RETURN Menu.create(menu, MenuItemClick, MenuKeyDown) |
1316 | RETURN Menu.create(menu, MenuItemClick, MenuKeyDown) |
1318 | END CreateMenuTools; |
1317 | END CreateMenuTools; |
Line 1413... | Line 1412... | ||
1413 | Menu.open(menu, x, y) |
1412 | Menu.open(menu, x, y) |
1414 | END |
1413 | END |
1415 | END ShowMenu; |
1414 | END ShowMenu; |
Line 1416... | Line 1415... | ||
1416 | 1415 | ||
1417 | 1416 | ||
1418 | PROCEDURE main; |
- | |
1419 | VAR |
1417 | PROCEDURE KeyDown (key: INTEGER); |
1420 | width, height, x, y, scrollX, scrollY, i: INTEGER; |
- | |
1421 | key, btn: INTEGER; |
- | |
1422 | msState: SET; |
- | |
1423 | scroll: INTEGER; |
- | |
1424 | err: INTEGER; |
- | |
1425 | fileName, filePath: RW.tFileName; |
1418 | VAR |
1426 | cliWidth, cliHeight: INTEGER; |
- | |
1427 | resized, middle: BOOLEAN; |
1419 | keyCode: INTEGER; |
1428 | firstClickX, firstClickY, time: INTEGER; |
- | |
1429 | BEGIN |
- | |
1430 | K.GetSystemColors; |
- | |
1431 | Icons.get(icons, grayIcons); |
- | |
1432 | modified := FALSE; |
- | |
1433 | switch := FALSE; |
- | |
1434 | textsCount := 0; |
- | |
1435 | curText := 0; |
- | |
1436 | mainTID := K.ThreadID(); |
- | |
1437 | K.SetIPC(IPC); |
- | |
1438 | U.ptr2str(K.GetName(), AppPath); |
- | |
1439 | Ini.load(AppPath); |
- | |
1440 | K.SetEventsMask({0, 1, 2, 5, 6, 31}); |
- | |
1441 | LeftButtonUp; |
- | |
1442 | resized := FALSE; |
- | |
1443 | shift := {}; |
- | |
1444 | K.ScreenSize(winWidth, winHeight); |
- | |
1445 | winWidth := (winWidth*80) DIV 100 - (128 + 30); |
- | |
1446 | winHeight := winHeight - (128 + 30); |
- | |
1447 | winWidth := MAX(winWidth, minWinWidth); |
- | |
1448 | winHeight := MAX(winHeight, minWinHeight); |
- | |
1449 | cliWidth := winWidth; |
- | |
1450 | cliHeight := winHeight; |
- | |
1451 | LEFT := searchLeft; |
- | |
1452 | canvas := G.CreateCanvas(winWidth - (LEFT + RIGHT + 10), winHeight - (TOP + BOTTOM + 4) - K.SkinHeight()); |
- | |
1453 | tabs := Tabs.create(); |
- | |
1454 | Tabs.setArea(tabs, LEFT, TOP - Tabs.tabHeight, canvas.width, Tabs.tabHeight); |
- | |
1455 | font1 := G.CreateFont(1, "", {}); |
- | |
1456 | font2 := G.CreateFont(2, "", {}); |
- | |
1457 | font := font1; |
- | |
1458 | G.SetFont(canvas, font); |
- | |
1459 | T.init(NIL); |
- | |
1460 | T.setCanvas(canvas); |
- | |
1461 | U.ptr2str(K.GetCommandLine(), fileName); |
- | |
1462 | context := CreateContextMenu(); |
- | |
1463 | menuFile := CreateMenuFile(); |
- | |
1464 | menuEdit := CreateMenuEdit(); |
1420 | shift, ctrl: BOOLEAN; |
1465 | menuEncoding := CreateMenuEncoding(); |
- | |
1466 | menuView := CreateMenuView(); |
- | |
1467 | menuSyntax := CreateMenuSyntax(); |
- | |
1468 | menuProgram := CreateMenuProgram(); |
- | |
1469 | menuTools := CreateMenuTools(); |
- | |
1470 | IF fileName = "" THEN |
- | |
1471 | text := T.New(); |
- | |
1472 | filePath := "/rd/1" |
- | |
1473 | ELSE |
- | |
1474 | text := T.open(fileName, err); |
- | |
1475 | IF text = NIL THEN |
- | |
1476 | error("'cedit: error opening file' -E"); |
- | |
1477 | K.Exit |
- | |
1478 | ELSE |
- | |
1479 | U.getPath(fileName, filePath) |
- | |
1480 | END |
- | |
1481 | END; |
- | |
1482 | OD := OpenDlg.Create(draw_window, OpenDlg.topen, filePath, ""); |
- | |
1483 | insert(0, text); |
- | |
1484 | - | ||
1485 | vScroll := Scroll.create(scrollWidth, canvas.height - scrollWidth*2 + 2); |
- | |
1486 | hScroll := Scroll.create(canvas.width - scrollWidth*2, scrollWidth); |
1421 | BEGIN |
1487 | T.resize(canvas.width, canvas.height); |
- | |
1488 | T.SetPos(text, 0, 0); |
- | |
1489 | confirm := FALSE; |
- | |
1490 | notFound := FALSE; |
- | |
1491 | search := FALSE; |
- | |
1492 | createSearchForm; |
- | |
1493 | new_searchText := ""; |
- | |
1494 | searchText := ""; |
- | |
1495 | cs := FALSE; |
- | |
1496 | whole := FALSE; |
- | |
1497 | replaced := 0; |
- | |
1498 | Ini.getStr("paths", "build", buildScript); |
- | |
1499 | Ini.getStr("paths", "run", runScript); |
- | |
1500 | Ini.getStr("paths", "debug", debugScript); |
- | |
1501 | draw_window; |
- | |
1502 | repaint; |
- | |
1503 | WHILE TRUE DO |
- | |
1504 | CASE K.WaitForEvent() OF |
- | |
1505 | |1: |
- | |
1506 | FOR i := 0 TO 1 DO |
- | |
1507 | K.GetSystemColors; |
- | |
1508 | Icons.get(icons, grayIcons); |
- | |
1509 | IF ~K.RolledUp() THEN |
- | |
1510 | K.ClientSize(width, height); |
- | |
1511 | IF (width # cliWidth) OR (height # cliHeight) THEN |
- | |
1512 | cliWidth := width; |
- | |
1513 | cliHeight := height; |
- | |
1514 | resize; |
- | |
1515 | resized := TRUE; |
- | |
1516 | END; |
- | |
1517 | K.SetEventsMask({0, 1, 2, 5, 6, 31}) |
- | |
1518 | ELSE |
- | |
1519 | K.SetEventsMask({0, 30, 31}) |
- | |
1520 | END; |
- | |
1521 | draw_window |
- | |
1522 | END |
- | |
1523 | - | ||
1524 | |2: |
- | |
1525 | key := K.GetKey(); |
1422 | keyCode := key DIV 65536; |
1526 | getKBState; |
1423 | getKBState(shift, ctrl); |
1527 | IF confirm THEN |
1424 | IF confirm THEN |
1528 | IF key DIV 65536 = 28 THEN (* Enter *) |
1425 | IF keyCode = 28 THEN (* Enter *) |
1529 | save(text); |
1426 | save(text); |
1530 | IF ~text.modified THEN |
1427 | IF ~text.modified THEN |
1531 | closeFile(FALSE, curText) |
- | |
1532 | END; |
1428 | closeFile(FALSE, curText) |
1533 | repaint |
1429 | END |
1534 | END; |
1430 | END; |
1535 | key := -1 |
1431 | key := -1 |
1536 | END; |
1432 | ELSE |
1537 | IF key DIV 65536 = 61 THEN (* F3 *) |
1433 | IF keyCode = 61 THEN (* F3 *) |
1538 | key := -1; |
1434 | key := -1; |
1539 | IF search & (searchText # "") THEN |
1435 | IF search & (searchText # "") THEN |
1540 | IF T.SHIFT IN shift THEN |
1436 | IF shift THEN |
1541 | notFound := ~T.findNext(text, ~box_lib.check_box_get_value(BKW)) |
1437 | notFound := ~T.findNext(text, ~box_lib.check_box_get_value(BKW)) |
1542 | ELSE |
1438 | ELSE |
1543 | notFound := ~T.findNext(text, box_lib.check_box_get_value(BKW)) |
1439 | notFound := ~T.findNext(text, box_lib.check_box_get_value(BKW)) |
1544 | END |
1440 | END |
1545 | END |
1441 | END |
1546 | ELSIF key DIV 65536 = 60 THEN (* F2 *) |
1442 | ELSIF keyCode = 60 THEN (* F2 *) |
1547 | key := -1; |
1443 | key := -1; |
1548 | IF T.CTRL IN shift THEN |
1444 | IF ctrl THEN |
1549 | T.toggleLabel(text) |
1445 | T.toggleLabel(text) |
1550 | ELSE |
1446 | ELSE |
1551 | T.gotoLabel(text, ~(T.SHIFT IN shift)) |
1447 | T.gotoLabel(text, ~shift) |
1552 | END |
1448 | END |
1553 | ELSIF key DIV 65536 = 67 THEN (* F9 *) |
1449 | ELSIF keyCode = 67 THEN (* F9 *) |
1554 | key := -1; |
1450 | key := -1; |
1555 | IF T.CTRL IN shift THEN |
1451 | IF ctrl THEN |
1556 | Script(buildScript) |
1452 | Script(buildScript) |
1557 | ELSE |
1453 | ELSE |
1558 | Script(runScript) |
1454 | Script(runScript) |
1559 | END |
1455 | END |
1560 | ELSIF key DIV 65536 = 1 THEN (* Esc *) |
1456 | ELSIF keyCode = 1 THEN (* Esc *) |
1561 | key := -1; |
1457 | key := -1; |
1562 | IF search THEN |
1458 | IF search THEN |
1563 | Search |
1459 | Search |
1564 | END |
1460 | END |
1565 | ELSIF (key DIV 65536 = 55) & (key DIV 256 MOD 256 = 52) THEN |
1461 | ELSIF (keyCode = 55) & (key DIV 256 MOD 256 = 52) THEN (* PrtScn *) |
1566 | key := -1 (* PrtScn *) |
1462 | key := -1 |
1567 | ELSIF (T.CTRL IN shift) & (key DIV 65536 = 15) THEN (* ctrl+Tab *) |
1463 | ELSIF (keyCode = 15) & ctrl THEN (* ctrl+Tab *) |
1568 | key := -1; |
- | |
1569 | curText := (curText + 1) MOD textsCount; |
- | |
1570 | Tabs.switch(tabs, curText); |
- | |
1571 | Switch(texts[curText]); |
1464 | key := -1; |
1572 | draw_window |
1465 | SwitchTab((curText + 1) MOD textsCount) |
1573 | ELSIF (T.CTRL IN shift) & (key DIV 65536 = 33) THEN |
1466 | ELSIF (keyCode = 33) & ctrl THEN |
1574 | key := -1; |
- | |
1575 | IF ~search THEN |
- | |
1576 | Search |
1467 | key := -1; |
1577 | END; |
- | |
1578 | EditBox_SetFocus(FindEdit, TRUE); |
- | |
1579 | EditBox_SetFocus(ReplaceEdit, FALSE); |
1468 | ShowSearchPanel; |
1580 | EditBox_SetFocus(GotoEdit, FALSE) |
1469 | SetFocus(FindEdit, TRUE) |
1581 | ELSIF (T.CTRL IN shift) & (key DIV 65536 = 34) THEN |
1470 | ELSIF (keyCode = 34) & ctrl THEN |
1582 | key := -1; |
- | |
1583 | IF ~search THEN |
- | |
1584 | Search |
1471 | key := -1; |
1585 | END; |
- | |
1586 | EditBox_SetFocus(GotoEdit, TRUE); |
- | |
1587 | EditBox_SetFocus(FindEdit, FALSE); |
1472 | ShowSearchPanel; |
1588 | EditBox_SetFocus(ReplaceEdit, FALSE) |
1473 | SetFocus(GotoEdit, TRUE) |
1589 | END; |
1474 | ELSE |
1590 | IF (key # -1) & EditBox_Focus(FindEdit) THEN |
1475 | IF EditBox_Focus(FindEdit) THEN |
1591 | box_lib.edit_box_key(FindEdit, key); |
1476 | box_lib.edit_box_key(FindEdit, key); |
1592 | EditBox_GetValue(FindEdit, new_searchText); |
1477 | EditBox_GetValue(FindEdit, new_searchText); |
1593 | IF new_searchText # searchText THEN |
1478 | IF new_searchText # searchText THEN |
1594 | searchText := new_searchText; |
1479 | searchText := new_searchText; |
1595 | notFound := ~T.search(text, searchText, cs, whole) |
1480 | notFound := ~T.search(text, searchText, cs, whole) |
1596 | END |
1481 | END |
1597 | ELSIF (key # -1) & EditBox_Focus(ReplaceEdit) THEN |
1482 | ELSIF EditBox_Focus(ReplaceEdit) THEN |
1598 | box_lib.edit_box_key(ReplaceEdit, key); |
1483 | box_lib.edit_box_key(ReplaceEdit, key); |
1599 | EditBox_GetValue(ReplaceEdit, replaceText) |
1484 | EditBox_GetValue(ReplaceEdit, replaceText) |
1600 | ELSIF (key # -1) & EditBox_Focus(GotoEdit) THEN |
1485 | ELSIF EditBox_Focus(GotoEdit) THEN |
1601 | IF (key DIV 256) MOD 256 = 13 THEN |
1486 | IF (key DIV 256) MOD 256 = 13 THEN |
1602 | goto |
1487 | goto |
1603 | ELSE |
1488 | ELSE |
1604 | box_lib.edit_box_key(GotoEdit, key) |
1489 | box_lib.edit_box_key(GotoEdit, key) |
1605 | END |
1490 | END |
1606 | ELSIF key # -1 THEN |
1491 | ELSE |
1607 | CASE key DIV 65536 OF |
1492 | CASE keyCode OF |
1608 | |73: key := 33 |
1493 | |73: key := 33 |
1609 | |81: key := 34 |
1494 | |81: key := 34 |
1610 | |71: key := 36 |
1495 | |71: key := 36 |
1611 | |79: key := 35 |
1496 | |79: key := 35 |
1612 | |72: key := 38 |
1497 | |72: key := 38 |
1613 | |80: key := 40 |
1498 | |80: key := 40 |
1614 | |75: key := 37 |
1499 | |75: key := 37 |
1615 | |77: key := 39 |
1500 | |77: key := 39 |
1616 | |82: key := -1 (* insert *) |
1501 | |82: key := -1 (* insert *) |
1617 | |83: key := 46 |
1502 | |83: key := 46 |
1618 | |59, 60, 62..66, 68, 87, 88: key := -1 (* F1, F2, F4..F8, F10, F11, F12 *) |
1503 | |59, 62..66, 68, 87, 88: key := -1 (* F1, F4..F8, F10, F11, F12 *) |
1619 | ELSE |
1504 | ELSE |
1620 | IF (T.CTRL IN shift) THEN |
1505 | IF ctrl THEN |
1621 | CASE key DIV 65536 OF |
1506 | CASE keyCode OF |
1622 | |17: closeFile(TRUE, curText); |
1507 | |17: closeFile(TRUE, curText); |
1623 | key := -2 |
1508 | key := -2 |
1624 | |21: T.redo(text); |
1509 | |21: T.redo(text); |
Line 1645... | Line 1530... | ||
1645 | T.input(text, E.cp866[key DIV 256 MOD 256]); |
1530 | T.input(text, E.cp866[key DIV 256 MOD 256]); |
1646 | key := -1 |
1531 | key := -1 |
1647 | END |
1532 | END |
1648 | END; |
1533 | END; |
1649 | IF key >= 0 THEN |
1534 | IF key >= 0 THEN |
1650 | T.key(text, key, shift) |
1535 | T.key(text, key, shift, ctrl) |
- | 1536 | END |
|
- | 1537 | END |
|
1651 | END |
1538 | END |
1652 | END; |
1539 | END; |
1653 | IF key # -2 THEN |
1540 | IF key # -2 THEN |
1654 | repaint |
1541 | repaint |
1655 | END |
1542 | END |
- | 1543 | END KeyDown; |
|
- | 1544 | ||
- | 1545 | ||
- | 1546 | PROCEDURE BtnClick; |
|
- | 1547 | VAR |
|
1656 | |3: |
1548 | btn: INTEGER; |
- | 1549 | middle, exit: BOOLEAN; |
|
- | 1550 | BEGIN |
|
1657 | btn := K.ButtonCode(middle); |
1551 | btn := K.ButtonCode(middle); |
1658 | IF (Tabs.btnID <= btn) & (btn <= Tabs.btnID + maxTexts - 1) THEN |
1552 | IF (Tabs.btnID <= btn) & (btn <= Tabs.btnID + maxTexts - 1) THEN |
1659 | DEC(btn, Tabs.btnID); |
1553 | DEC(btn, Tabs.btnID); |
1660 | IF middle THEN |
1554 | IF middle THEN |
1661 | IF texts[btn].modified THEN |
1555 | IF texts[btn].modified THEN |
1662 | curText := btn; |
- | |
1663 | Tabs.switch(tabs, btn); |
- | |
1664 | Switch(texts[btn]); |
1556 | SwitchTab(btn) |
1665 | draw_window; |
- | |
1666 | END; |
1557 | END; |
1667 | closeFile(TRUE, btn) |
1558 | closeFile(TRUE, btn) |
1668 | ELSE |
1559 | ELSE |
1669 | curText := btn; |
- | |
1670 | Tabs.switch(tabs, btn); |
- | |
1671 | Switch(texts[btn]); |
1560 | SwitchTab(btn) |
1672 | draw_window |
- | |
1673 | END; |
1561 | END; |
1674 | btn := 0 |
1562 | btn := 0 |
1675 | ELSE |
1563 | ELSE |
1676 | IF middle THEN |
1564 | IF middle THEN |
1677 | btn := 0 |
1565 | btn := 0 |
Line 1696... | Line 1584... | ||
1696 | |btnProgram: |
1584 | |btnProgram: |
1697 | ShowMenu(menuProgram) |
1585 | ShowMenu(menuProgram) |
1698 | |btnTools: |
1586 | |btnTools: |
1699 | ShowMenu(menuTools) |
1587 | ShowMenu(menuTools) |
1700 | |btnNo: |
1588 | |btnNo: |
- | 1589 | exit := closing; |
|
1701 | closeFile(FALSE, curText); |
1590 | closeFile(FALSE, curText); |
1702 | repaint |
1591 | repaint; |
- | 1592 | IF exit THEN |
|
- | 1593 | Close |
|
- | 1594 | END |
|
1703 | |btnYes: |
1595 | |btnYes: |
- | 1596 | exit := closing; |
|
1704 | save(text); |
1597 | save(text); |
1705 | IF ~text.modified THEN |
1598 | IF ~text.modified THEN |
1706 | closeFile(FALSE, curText) |
1599 | closeFile(FALSE, curText) |
1707 | END; |
1600 | END; |
1708 | repaint |
1601 | repaint; |
- | 1602 | IF exit THEN |
|
- | 1603 | Close |
|
- | 1604 | END |
|
1709 | |btnClose: |
1605 | |btnClose: |
1710 | close |
1606 | Close |
1711 | |btnNew: |
1607 | |btnNew: |
1712 | NewFile; |
1608 | NewFile; |
1713 | repaint |
1609 | repaint |
1714 | |btnOpen: |
1610 | |btnOpen: |
1715 | open |
1611 | open |
1716 | |btnSave: |
1612 | |btnSave: |
1717 | save(text); |
1613 | save(text); |
1718 | repaint |
1614 | repaint |
1719 | |btnSearch: |
1615 | |btnSearch: |
1720 | IF ~search THEN |
1616 | ShowSearchPanel |
1721 | Search |
- | |
1722 | END |
- | |
1723 | |btnCloseFind: |
1617 | |btnCloseFind: |
1724 | Search |
1618 | Search |
- | 1619 | |btnHideFind: |
|
- | 1620 | SetFocus(FindEdit, FALSE); |
|
- | 1621 | searchOpened := FALSE; |
|
- | 1622 | LEFT := searchLeft; |
|
- | 1623 | resize; |
|
- | 1624 | draw_window |
|
1725 | |btnUndo: |
1625 | |btnUndo: |
1726 | T.undo(text); |
1626 | T.undo(text); |
1727 | repaint |
1627 | repaint |
1728 | |btnRedo: |
1628 | |btnRedo: |
1729 | T.redo(text); |
1629 | T.redo(text); |
Line 1748... | Line 1648... | ||
1748 | T.scroll(text, -1, 0); |
1648 | T.scroll(text, -1, 0); |
1749 | repaint |
1649 | repaint |
1750 | |btnRight: |
1650 | |btnRight: |
1751 | T.scroll(text, 1, 0); |
1651 | T.scroll(text, 1, 0); |
1752 | repaint |
1652 | repaint |
1753 | |btnFindEdit: |
- | |
1754 | EditBox_SetFocus(FindEdit, TRUE); |
- | |
1755 | EditBox_SetFocus(ReplaceEdit, FALSE); |
- | |
1756 | EditBox_SetFocus(GotoEdit, FALSE) |
- | |
1757 | |btnReplaceEdit: |
- | |
1758 | EditBox_SetFocus(ReplaceEdit, TRUE); |
- | |
1759 | EditBox_SetFocus(FindEdit, FALSE); |
- | |
1760 | EditBox_SetFocus(GotoEdit, FALSE) |
- | |
1761 | |btnGotoEdit: |
- | |
1762 | EditBox_SetFocus(GotoEdit, TRUE); |
- | |
1763 | EditBox_SetFocus(FindEdit, FALSE); |
- | |
1764 | EditBox_SetFocus(ReplaceEdit, FALSE) |
- | |
1765 | |btnFindNext: |
1653 | |btnFindNext: |
1766 | IF searchText # "" THEN |
1654 | IF searchText # "" THEN |
1767 | notFound := ~T.findNext(text, box_lib.check_box_get_value(BKW)); |
1655 | notFound := ~T.findNext(text, box_lib.check_box_get_value(BKW)); |
1768 | repaint |
1656 | repaint |
1769 | END |
1657 | END |
Line 1778... | Line 1666... | ||
1778 | repaint |
1666 | repaint |
1779 | |btnGoto: |
1667 | |btnGoto: |
1780 | goto; |
1668 | goto; |
1781 | repaint |
1669 | repaint |
1782 | END |
1670 | END |
- | 1671 | END BtnClick; |
|
- | 1672 | ||
- | 1673 | ||
- | 1674 | PROCEDURE MouseEvent (VAR resized: BOOLEAN; VAR firstClickX, firstClickY, time: INTEGER); |
|
- | 1675 | CONST |
|
- | 1676 | DELAY = 10; |
|
- | 1677 | VAR |
|
- | 1678 | msState: SET; |
|
- | 1679 | scroll, x, y, scrollX, scrollY: INTEGER; |
|
- | 1680 | ||
- | 1681 | ||
- | 1682 | PROCEDURE EditBox (eb: box_lib.edit_box); |
|
- | 1683 | VAR |
|
- | 1684 | focus: BOOLEAN; |
|
- | 1685 | BEGIN |
|
- | 1686 | focus := EditBox_Focus(eb); |
|
- | 1687 | box_lib.edit_box_mouse(eb); |
|
- | 1688 | IF focus # EditBox_Focus(eb) THEN |
|
- | 1689 | SetFocus(eb, TRUE) |
|
1783 | |6: |
1690 | END |
- | 1691 | END EditBox; |
|
- | 1692 | ||
- | 1693 | ||
- | 1694 | BEGIN |
|
1784 | Menu.close(menuFile); |
1695 | Menu.close(menuFile); |
1785 | Menu.close(menuEdit); |
1696 | Menu.close(menuEdit); |
1786 | Menu.close(menuEncoding); |
1697 | Menu.close(menuEncoding); |
1787 | Menu.close(menuView); |
1698 | Menu.close(menuView); |
1788 | Menu.close(menuSyntax); |
1699 | Menu.close(menuSyntax); |
1789 | Menu.close(menuProgram); |
1700 | Menu.close(menuProgram); |
1790 | Menu.close(menuTools); |
1701 | Menu.close(menuTools); |
1791 | Menu.close(context); |
1702 | Menu.close(context); |
1792 | IF ~resized THEN |
1703 | IF ~resized THEN |
1793 | getKBState; |
- | |
1794 | msState := K.MouseState(); |
1704 | msState := K.MouseState(); |
1795 | IF ~(0 IN msState) OR (16 IN msState) THEN |
1705 | IF ~(0 IN msState) OR (16 IN msState) THEN |
1796 | LeftButtonUp |
1706 | LeftButtonUp |
1797 | END; |
1707 | END; |
1798 | scroll := K.Scroll(); |
1708 | scroll := K.Scroll(); |
1799 | IF scroll # 0 THEN |
1709 | IF scroll # 0 THEN |
1800 | T.scroll(text, 0, scroll*3); |
1710 | T.scroll(text, 0, scroll*3); |
1801 | repaint |
1711 | repaint |
1802 | END; |
1712 | END; |
1803 | IF leftButton THEN |
1713 | IF leftButton THEN |
1804 | IF K.GetTickCount() - time > 9 THEN |
1714 | IF K.GetTickCount() - time >= DELAY THEN |
1805 | mouse(x, y); |
1715 | mouse(x, y); |
1806 | T.mouse(text, x, y); |
1716 | T.mouse(text, x, y); |
1807 | repaint |
1717 | repaint |
1808 | END |
1718 | END |
1809 | END; |
1719 | END; |
Line 1843... | Line 1753... | ||
1843 | firstClickY := y; |
1753 | firstClickY := y; |
1844 | time := click(firstClickX, firstClickY) |
1754 | time := click(firstClickX, firstClickY) |
1845 | END |
1755 | END |
1846 | END |
1756 | END |
1847 | END; |
1757 | END; |
1848 | IF search THEN |
1758 | IF search & searchOpened THEN |
1849 | IF EditBox_Focus(FindEdit) THEN |
1759 | EditBox(FindEdit); |
1850 | box_lib.edit_box_mouse(FindEdit) |
- | |
1851 | END; |
- | |
1852 | IF EditBox_Focus(ReplaceEdit) THEN |
1760 | EditBox(ReplaceEdit); |
1853 | box_lib.edit_box_mouse(ReplaceEdit) |
- | |
1854 | END; |
- | |
1855 | IF EditBox_Focus(GotoEdit) THEN |
1761 | EditBox(GotoEdit); |
1856 | box_lib.edit_box_mouse(GotoEdit) |
- | |
1857 | END; |
- | |
1858 | box_lib.check_box_mouse2(CS); |
1762 | box_lib.check_box_mouse2(CS); |
1859 | box_lib.check_box_mouse2(WH); |
1763 | box_lib.check_box_mouse2(WH); |
1860 | box_lib.check_box_mouse2(BKW); |
1764 | box_lib.check_box_mouse2(BKW); |
1861 | IF box_lib.check_box_get_value(CS) # cs THEN |
1765 | IF box_lib.check_box_get_value(CS) # cs THEN |
1862 | cs := ~cs; |
1766 | cs := ~cs; |
Line 1868... | Line 1772... | ||
1868 | notFound := ~T.search(text, searchText, cs, whole); |
1772 | notFound := ~T.search(text, searchText, cs, whole); |
1869 | repaint |
1773 | repaint |
1870 | END |
1774 | END |
1871 | END; |
1775 | END; |
1872 | resized := FALSE |
1776 | resized := FALSE |
- | 1777 | END MouseEvent; |
|
- | 1778 | ||
- | 1779 | ||
- | 1780 | PROCEDURE Redraw (VAR resized: BOOLEAN; VAR width, height, cliWidth, cliHeight: INTEGER); |
|
- | 1781 | VAR |
|
- | 1782 | i: INTEGER; |
|
- | 1783 | BEGIN |
|
- | 1784 | K.GetSystemColors; |
|
- | 1785 | FOR i := 0 TO 1 DO |
|
- | 1786 | IF ~K.RolledUp() THEN |
|
- | 1787 | K.ClientSize(width, height); |
|
- | 1788 | IF (width # cliWidth) OR (height # cliHeight) THEN |
|
- | 1789 | cliWidth := width; |
|
- | 1790 | cliHeight := height; |
|
- | 1791 | resize; |
|
- | 1792 | resized := TRUE |
|
- | 1793 | END; |
|
- | 1794 | K.SetEventsMask({0, 1, 2, 5, 6, 31}) |
|
- | 1795 | ELSE |
|
- | 1796 | K.SetEventsMask({0, 30, 31}) |
|
- | 1797 | END; |
|
- | 1798 | draw_window |
|
- | 1799 | END |
|
- | 1800 | END Redraw; |
|
- | 1801 | ||
- | 1802 | ||
- | 1803 | PROCEDURE main; |
|
- | 1804 | VAR |
|
- | 1805 | err: INTEGER; |
|
- | 1806 | fileName, filePath: RW.tFileName; |
|
- | 1807 | width, height, cliWidth, cliHeight: INTEGER; |
|
- | 1808 | resized: BOOLEAN; |
|
- | 1809 | firstClickX, firstClickY, time: INTEGER; |
|
- | 1810 | BEGIN |
|
- | 1811 | K.GetSystemColors; |
|
- | 1812 | Icons.get(icons, grayIcons); |
|
- | 1813 | modified := FALSE; |
|
- | 1814 | switch := FALSE; |
|
- | 1815 | closing := FALSE; |
|
- | 1816 | textsCount := 0; |
|
- | 1817 | curText := 0; |
|
- | 1818 | mainTID := K.ThreadID(); |
|
- | 1819 | K.SetIPC(IPC); |
|
- | 1820 | U.ptr2str(K.GetName(), AppPath); |
|
- | 1821 | Ini.load(AppPath); |
|
- | 1822 | LeftButtonUp; |
|
- | 1823 | resized := FALSE; |
|
- | 1824 | K.ScreenSize(winWidth, winHeight); |
|
- | 1825 | winWidth := (winWidth*80) DIV 100 - (128 + 30); |
|
- | 1826 | winHeight := winHeight - (128 + 30); |
|
- | 1827 | winWidth := MAX(winWidth, minWinWidth); |
|
- | 1828 | winHeight := MAX(winHeight, minWinHeight); |
|
- | 1829 | cliWidth := winWidth; |
|
- | 1830 | cliHeight := winHeight; |
|
- | 1831 | LEFT := searchLeft; |
|
- | 1832 | canvas := G.CreateCanvas(winWidth - (LEFT + RIGHT + 10), winHeight - (TOP + BOTTOM + 4) - K.SkinHeight()); |
|
- | 1833 | tabs := Tabs.create(); |
|
- | 1834 | Tabs.setArea(tabs, LEFT, TOP - Tabs.tabHeight, canvas.width, Tabs.tabHeight); |
|
- | 1835 | font1 := G.CreateFont(1, "", {}); |
|
- | 1836 | font2 := G.CreateFont(2, "", {}); |
|
- | 1837 | font := font1; |
|
- | 1838 | G.SetFont(canvas, font); |
|
- | 1839 | T.init(NIL); |
|
- | 1840 | T.setCanvas(canvas); |
|
- | 1841 | U.ptr2str(K.GetCommandLine(), fileName); |
|
- | 1842 | context := CreateContextMenu(); |
|
- | 1843 | menuFile := CreateMenuFile(); |
|
- | 1844 | menuEdit := CreateMenuEdit(); |
|
- | 1845 | menuEncoding := CreateMenuEncoding(); |
|
- | 1846 | menuView := CreateMenuView(); |
|
- | 1847 | menuSyntax := CreateMenuSyntax(); |
|
- | 1848 | menuProgram := CreateMenuProgram(); |
|
- | 1849 | menuTools := CreateMenuTools(); |
|
- | 1850 | IF fileName = "" THEN |
|
- | 1851 | text := T.New(); |
|
- | 1852 | filePath := "/rd/1" |
|
- | 1853 | ELSE |
|
- | 1854 | text := T.open(fileName, err); |
|
- | 1855 | IF text = NIL THEN |
|
- | 1856 | error("'cedit: error opening file' -E"); |
|
- | 1857 | K.Exit |
|
- | 1858 | ELSE |
|
- | 1859 | U.getPath(fileName, filePath) |
|
- | 1860 | END |
|
- | 1861 | END; |
|
- | 1862 | OD := OpenDlg.Create(draw_window, OpenDlg.topen, filePath, ""); |
|
- | 1863 | insert(0, text); |
|
- | 1864 | ||
- | 1865 | vScroll := Scroll.create(scrollWidth, canvas.height - scrollWidth*2 + 2); |
|
- | 1866 | hScroll := Scroll.create(canvas.width - scrollWidth*2, scrollWidth); |
|
- | 1867 | T.resize(canvas.width, canvas.height); |
|
- | 1868 | T.SetPos(text, 0, 0); |
|
- | 1869 | confirm := FALSE; |
|
- | 1870 | notFound := FALSE; |
|
- | 1871 | search := FALSE; |
|
- | 1872 | searchOpened := FALSE; |
|
- | 1873 | createSearchForm; |
|
- | 1874 | new_searchText := ""; |
|
- | 1875 | searchText := ""; |
|
- | 1876 | cs := FALSE; |
|
- | 1877 | whole := FALSE; |
|
- | 1878 | 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}); |
|
- | 1883 | draw_window; |
|
- | 1884 | WHILE TRUE DO |
|
- | 1885 | CASE K.WaitForEvent() OF |
|
- | 1886 | |1: Redraw(resized, width, height, cliWidth, cliHeight) |
|
- | 1887 | |2: KeyDown(K.GetKey()) |
|
- | 1888 | |3: BtnClick |
|
- | 1889 | |6: MouseEvent(resized, firstClickX, firstClickY, time) |
|
1873 | |7: receiveIPC |
1890 | |7: receiveIPC |
1874 | ELSE |
1891 | ELSE |
1875 | END |
1892 | END |
1876 | END |
1893 | END |
1877 | END main; |
1894 | END main; |