Rev 9182 | Rev 9190 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 9182 | Rev 9187 | ||
---|---|---|---|
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, CheckBox, |
27 | ChangeLog, Scroll, CheckBox, |
28 | RW, Ini, box_lib, Icons, Tabs, Timer; |
28 | RW, Ini, EB := EditBox, Icons, Tabs, Timer; |
Line 29... | Line 29... | ||
29 | 29 | ||
30 | CONST |
30 | CONST |
Line 31... | Line 31... | ||
31 | header = "CEdit (08-sep-2021)"; |
31 | header = "CEdit (11-sep-2021)"; |
32 | 32 | ||
Line 33... | Line 33... | ||
33 | ShellFilter = ""; |
33 | ShellFilter = ""; |
Line 56... | Line 56... | ||
56 | btnReplaceAll = 62; |
56 | btnReplaceAll = 62; |
57 | btnGoto = 63; |
57 | btnGoto = 63; |
58 | btnCloseFind = 64; |
58 | btnCloseFind = 64; |
59 | btnHideFind = 65; |
59 | btnHideFind = 65; |
Line 60... | Line -... | ||
60 | - | ||
61 | btnFile = 70; |
- | |
62 | btnEdit = 71; |
60 | |
63 | btnMenuSearch = 72; |
- | |
64 | btnEncoding = 73; |
- | |
65 | btnEOL = 74; |
- | |
66 | btnView = 75; |
- | |
67 | btnSyntax = 76; |
- | |
68 | btnProgram = 77; |
- | |
69 | btnTools = 78; |
- | |
70 | - | ||
Line 71... | Line 61... | ||
71 | MainMenuHeight = fontHeight + 7; |
61 | mainMenuBtn = 70; |
72 | 62 | ||
73 | btnHeight = 25; |
63 | btnHeight = 25; |
74 | btnWidth = 75; |
64 | btnWidth = 75; |
75 | btnTop = MainMenuHeight + 3; |
65 | btnTop = Menu.MainMenuHeight + 3; |
76 | toolBtnSize = 24; |
66 | toolBtnSize = 24; |
Line 77... | Line 67... | ||
77 | toolbarDelim = 7; |
67 | toolbarDelim = 7; |
Line 87... | Line 77... | ||
87 | searchLeft = 0; |
77 | searchLeft = 0; |
88 | EditBox_Width = 180; |
78 | EditBox_Width = 180; |
89 | EDITBOX_MAXCHARS = 500; |
79 | EDITBOX_MAXCHARS = 500; |
Line 90... | Line 80... | ||
90 | 80 | ||
91 | menuFileX = searchLeft; |
81 | menuFileX = searchLeft; |
92 | menuEditX = menuFileX + 4*fontWidth + 2 + 7; |
82 | menuEditX = menuFileX + 4*fontWidth + 9; |
93 | menuSearchX = menuEditX + 4*fontWidth + 2 + 7; |
83 | menuSearchX = menuEditX + 4*fontWidth + 9; |
94 | menuEncodingX = menuSearchX + 6*fontWidth + 2 + 7; |
84 | menuEncodingX = menuSearchX + 6*fontWidth + 9; |
95 | menuEOLX = menuEncodingX + 8*fontWidth + 2 + 7; |
85 | menuEOLX = menuEncodingX + 8*fontWidth + 9; |
96 | menuViewX = menuEOLX + 3*fontWidth + 2 + 7; |
86 | menuViewX = menuEOLX + 3*fontWidth + 9; |
97 | menuSyntaxX = menuViewX + 4*fontWidth + 2 + 7; |
87 | menuSyntaxX = menuViewX + 4*fontWidth + 9; |
98 | menuProgramX = menuSyntaxX + 6*fontWidth + 2 + 7; |
88 | menuProgramX = menuSyntaxX + 6*fontWidth + 9; |
Line 99... | Line 89... | ||
99 | menuToolsX = menuProgramX + 7*fontWidth + 2 + 7; |
89 | menuToolsX = menuProgramX + 7*fontWidth + 9; |
100 | 90 | ||
101 | menuCut = 1; |
91 | menuCut = 1; |
102 | menuCopy = 2; |
92 | menuCopy = 2; |
Line 174... | Line 164... | ||
174 | menuLF = 140; |
164 | menuLF = 140; |
175 | menuCRLF = 141; |
165 | menuCRLF = 141; |
176 | menuCR = 142; |
166 | menuCR = 142; |
Line 177... | Line 167... | ||
177 | 167 | ||
178 | maxTexts = 32; |
- | |
Line 179... | Line 168... | ||
179 | scrollDelay = 40; |
168 | maxTexts = 32; |
180 | 169 | ||
181 | 170 | ||
Line 196... | Line 185... | ||
196 | switch, closing: BOOLEAN; |
185 | switch, closing: BOOLEAN; |
197 | leftButton: BOOLEAN; |
186 | leftButton: BOOLEAN; |
198 | hScroll, vScroll: Scroll.tScroll; |
187 | hScroll, vScroll: Scroll.tScroll; |
199 | LEFT: INTEGER; |
188 | LEFT: INTEGER; |
Line 200... | Line 189... | ||
200 | 189 | ||
201 | FindEdit, ReplaceEdit, GotoEdit: box_lib.edit_box; |
190 | FindEdit, ReplaceEdit, GotoEdit: EB.tEditBox; |
Line 202... | Line 191... | ||
202 | CS, WH, BKW: CheckBox.tCheckBox; |
191 | CS, WH, BKW: CheckBox.tCheckBox; |
203 | 192 | ||
Line 210... | Line 199... | ||
210 | 199 | ||
211 | context, menuFile, menuEdit, menuSearch, menuEncoding, |
200 | context, menuFile, menuEdit, menuSearch, menuEncoding, |
212 | menuEOL, menuView, menuSyntax, menuProgram, menuTools, |
201 | menuEOL, menuView, menuSyntax, menuProgram, menuTools, |
Line -... | Line 202... | ||
- | 202 | subCurLine, subIndent, subCase, subBookmark: Menu.tMenu; |
|
- | 203 | ||
213 | subCurLine, subIndent, subCase, subBookmark: Menu.tMenu; |
204 | mainMenu: Menu.tMain; |
Line 214... | Line 205... | ||
214 | 205 | ||
215 | menuActive: BOOLEAN; |
206 | menuActive: BOOLEAN; |
Line 232... | Line 223... | ||
232 | U.append(s1, s2); |
223 | U.append(s1, s2); |
233 | K.DrawText(LEFT, y, K.textColor, s1) |
224 | K.DrawText(LEFT, y, K.textColor, s1) |
234 | END WritePos; |
225 | END WritePos; |
Line 235... | Line 226... | ||
235 | 226 | ||
236 | 227 | ||
237 | PROCEDURE EditBox_Focus (edit: box_lib.edit_box): BOOLEAN; |
228 | PROCEDURE EditBox_Focus (edit: EB.tEditBox): BOOLEAN; |
238 | VAR |
229 | VAR |
239 | res: BOOLEAN; |
230 | res: BOOLEAN; |
240 | BEGIN |
231 | BEGIN |
Line 256... | Line 247... | ||
256 | Timer.create(mainTID) |
247 | Timer.create(mainTID) |
257 | END |
248 | END |
258 | END resetTimer; |
249 | END resetTimer; |
Line 259... | Line 250... | ||
259 | 250 | ||
260 | 251 | ||
261 | PROCEDURE EditBox_SetFocus (edit: box_lib.edit_box; value: BOOLEAN); |
252 | PROCEDURE EditBox_SetFocus (edit: EB.tEditBox; value: BOOLEAN); |
262 | BEGIN |
253 | BEGIN |
263 | IF value THEN |
254 | IF value THEN |
264 | edit.flags := ORD(BITS(edit.flags) + {1}) |
255 | edit.flags := ORD(BITS(edit.flags) + {1}) |
265 | ELSE |
256 | ELSE |
266 | edit.flags := ORD(BITS(edit.flags) - {1}) |
257 | edit.flags := ORD(BITS(edit.flags) - {1}) |
267 | END; |
258 | END; |
268 | IF search & searchOpened THEN |
259 | IF search & searchOpened THEN |
269 | box_lib.edit_box_draw(edit) |
260 | EB.paint(edit) |
Line 270... | Line 261... | ||
270 | END |
261 | END |
271 | END EditBox_SetFocus; |
262 | END EditBox_SetFocus; |
272 | 263 | ||
273 | 264 | ||
274 | PROCEDURE SetFocus (edit: box_lib.edit_box; value: BOOLEAN); |
265 | PROCEDURE SetFocus (edit: EB.tEditBox; value: BOOLEAN); |
275 | BEGIN |
266 | BEGIN |
Line 556... | Line 547... | ||
556 | ReplaceEdit.top := top + 75; |
547 | ReplaceEdit.top := top + 75; |
557 | GotoEdit.top := top + 350; |
548 | GotoEdit.top := top + 350; |
558 | FindEdit.left := left; |
549 | FindEdit.left := left; |
559 | ReplaceEdit.left := left; |
550 | ReplaceEdit.left := left; |
560 | GotoEdit.left := left; |
551 | GotoEdit.left := left; |
561 | box_lib.edit_box_draw(FindEdit); |
552 | EB.paint(FindEdit); |
562 | box_lib.edit_box_draw(ReplaceEdit); |
553 | EB.paint(ReplaceEdit); |
563 | box_lib.edit_box_draw(GotoEdit); |
554 | EB.paint(GotoEdit); |
564 | y := top + 200; |
555 | y := top + 200; |
565 | K.CreateButton(btnFindNext, left, y, btnWidth, btnHeight, K.btnColor, "next"); INC(y, btnHeight + 10); |
556 | K.CreateButton(btnFindNext, left, y, btnWidth, btnHeight, K.btnColor, "next"); INC(y, btnHeight + 10); |
566 | K.CreateButton(btnReplace, left, y, btnWidth, btnHeight, K.btnColor, "replace"); INC(y, btnHeight + 10); |
557 | K.CreateButton(btnReplace, left, y, btnWidth, btnHeight, K.btnColor, "replace"); INC(y, btnHeight + 10); |
567 | K.CreateButton(btnReplaceAll, left, y, btnWidth + 5*fontWidth - 2, btnHeight, K.btnColor, "replace all"); |
558 | K.CreateButton(btnReplaceAll, left, y, btnWidth + 5*fontWidth - 2, btnHeight, K.btnColor, "replace all"); |
568 | K.CreateButton(btnGoto, left, top + 380, btnWidth, btnHeight, K.btnColor, "go"); |
559 | K.CreateButton(btnGoto, left, top + 380, btnWidth, btnHeight, K.btnColor, "go"); |
Line 581... | Line 572... | ||
581 | K.DrawLine(x + toolBtnSize, btnTop, x + toolBtnSize, btnTop + toolBtnSize, K.shadowColor); |
572 | K.DrawLine(x + toolBtnSize, btnTop, x + toolBtnSize, btnTop + toolBtnSize, K.shadowColor); |
582 | K.CreateButton(id + ORD({30}), x, btnTop, toolBtnSize, toolBtnSize, K.btnColor, ""); |
573 | K.CreateButton(id + ORD({30}), x, btnTop, toolBtnSize, toolBtnSize, K.btnColor, ""); |
583 | END drawToolbarBtn; |
574 | END drawToolbarBtn; |
Line 584... | Line -... | ||
584 | - | ||
585 | - | ||
586 | PROCEDURE drawMainMenu (menu: Menu.tMenu; x: INTEGER; btn: INTEGER; caption: ARRAY OF WCHAR); |
- | |
587 | VAR |
- | |
588 | menuColor, textColor, n: INTEGER; |
- | |
589 | BEGIN |
- | |
590 | IF menu.tid # 0 THEN |
- | |
591 | menuColor := K.textColor; |
- | |
592 | textColor := K.winColor |
- | |
593 | ELSE |
- | |
594 | menuColor := K.winColor; |
- | |
595 | textColor := K.textColor |
- | |
596 | END; |
- | |
597 | n := LENGTH(caption); |
- | |
598 | K.DrawRect(x, 0, n*fontWidth + 2, MainMenuHeight, menuColor); |
- | |
599 | K.CreateButton(btn + ORD({30}), x, 0, n*fontWidth + 2, MainMenuHeight, K.btnColor, ""); |
- | |
600 | K.DrawText(x + 1, (MainMenuHeight - fontHeight) DIV 2 + 1, textColor, caption) |
- | |
601 | END drawMainMenu; |
- | |
602 | 575 | ||
603 | 576 | ||
604 | BEGIN |
577 | BEGIN |
605 | K.BeginDraw; |
578 | K.BeginDraw; |
606 | K.CreateWindow(30 + K.GetTickCount() MOD 128, 30 + K.GetTickCount() MOD 128, winWidth, winHeight, K.winColor, 73H, 0, 0, header); |
579 | K.CreateWindow(30 + K.GetTickCount() MOD 128, 30 + K.GetTickCount() MOD 128, winWidth, winHeight, K.winColor, 73H, 0, 0, header); |
Line 612... | Line 585... | ||
612 | K.ClientSize(width, height); |
585 | K.ClientSize(width, height); |
Line 613... | Line 586... | ||
613 | 586 | ||
614 | K.DrawRect(0, 0, width, TOP, K.winColor); |
587 | K.DrawRect(0, 0, width, TOP, K.winColor); |
615 | K.DrawRect(0, 0, LEFT, height, K.winColor); |
588 | K.DrawRect(0, 0, LEFT, height, K.winColor); |
616 | K.DrawRect(LEFT + canvas.width + 1, TOP + canvas.height, scrollWidth - 1, scrollWidth, K.winColor); |
- | |
617 | - | ||
618 | drawMainMenu(menuFile, menuFileX, btnFile, "file"); |
- | |
619 | drawMainMenu(menuEdit, menuEditX, btnEdit, "edit"); |
- | |
620 | drawMainMenu(menuSearch, menuSearchX, btnMenuSearch, "search"); |
- | |
621 | drawMainMenu(menuEncoding, menuEncodingX, btnEncoding, "encoding"); |
589 | K.DrawRect(LEFT + canvas.width + 1, TOP + canvas.height, scrollWidth - 1, scrollWidth, K.winColor); |
622 | drawMainMenu(menuEOL, menuEOLX, btnEOL, "eol"); |
- | |
623 | drawMainMenu(menuView, menuViewX, btnView, "view"); |
- | |
624 | drawMainMenu(menuSyntax, menuSyntaxX, btnSyntax, "syntax"); |
- | |
625 | drawMainMenu(menuProgram, menuProgramX, btnProgram, "program"); |
- | |
Line 626... | Line 590... | ||
626 | drawMainMenu(menuTools, menuToolsX, btnTools, "tools"); |
590 | Menu.DrawMain(mainMenu); |
Line 627... | Line 591... | ||
627 | 591 | ||
628 | x := searchLeft; |
592 | x := searchLeft; |
Line 685... | Line 649... | ||
685 | x := mouseX - winX - cliX - LEFT; |
649 | x := mouseX - winX - cliX - LEFT; |
686 | y := mouseY - winY - cliY - TOP; |
650 | y := mouseY - winY - cliY - TOP; |
687 | END mouse; |
651 | END mouse; |
Line 688... | Line -... | ||
688 | - | ||
689 | - | ||
690 | PROCEDURE getKBState (VAR shift, ctrl: BOOLEAN); |
- | |
691 | VAR |
- | |
692 | kbState: SET; |
- | |
693 | BEGIN |
- | |
694 | kbState := K.GetControlKeys(); |
- | |
695 | shift := {0, 1} * kbState # {}; |
- | |
696 | ctrl := {2, 3} * kbState # {}; |
- | |
697 | END getKBState; |
- | |
698 | 652 | ||
699 | 653 | ||
700 | PROCEDURE stopTimer; |
654 | PROCEDURE stopTimer; |
701 | BEGIN |
655 | BEGIN |
702 | T.hideCursor; |
656 | T.hideCursor; |
Line 971... | Line 925... | ||
971 | error("'cedit: too many files' -E") |
925 | error("'cedit: too many files' -E") |
972 | END |
926 | END |
973 | END open; |
927 | END open; |
Line 974... | Line 928... | ||
974 | 928 | ||
975 | 929 | ||
976 | PROCEDURE createEdit (left, top: INTEGER): box_lib.edit_box; |
930 | PROCEDURE createEdit (left, top: INTEGER): EB.tEditBox; |
977 | VAR |
931 | VAR |
978 | edit, EditBox0: box_lib.edit_box; |
932 | edit, EditBox0: EB.tEditBox; |
979 | BEGIN |
933 | BEGIN |
980 | NEW(EditBox0); |
934 | NEW(EditBox0); |
981 | EditBox0.text := K.malloc(EDITBOX_MAXCHARS + 2); |
935 | EditBox0.text := K.malloc(EDITBOX_MAXCHARS + 2); |
982 | ASSERT(EditBox0.text # 0); |
936 | ASSERT(EditBox0.text # 0); |
983 | edit := box_lib.kolibri_new_edit_box(left, top, EditBox_Width, EDITBOX_MAXCHARS, EditBox0); |
937 | edit := EB.create(left, top, EditBox_Width, EDITBOX_MAXCHARS, EditBox0); |
984 | edit.flags := 4002H; |
938 | edit.flags := 4002H; |
985 | edit.text_color := 30000000H; |
939 | edit.text_color := 30000000H; |
986 | EditBox_SetFocus(edit, FALSE) |
940 | EditBox_SetFocus(edit, FALSE) |
Line 992... | Line 946... | ||
992 | BEGIN |
946 | BEGIN |
993 | FindEdit := createEdit(searchLeft, TOP + 20); |
947 | FindEdit := createEdit(searchLeft, TOP + 20); |
994 | ReplaceEdit := createEdit(searchLeft, TOP + 20 + 55); |
948 | ReplaceEdit := createEdit(searchLeft, TOP + 20 + 55); |
995 | GotoEdit := createEdit(searchLeft, TOP + 20 + 330); |
949 | GotoEdit := createEdit(searchLeft, TOP + 20 + 330); |
996 | GotoEdit.flags := ORD(BITS(GotoEdit.flags) + BITS(8000H)); |
950 | GotoEdit.flags := ORD(BITS(GotoEdit.flags) + BITS(8000H)); |
997 | BKW := CheckBox.create("backward"); |
951 | CheckBox.create("backward", BKW); |
998 | CS := CheckBox.create("match case"); |
952 | CheckBox.create("match case", CS); |
999 | WH := CheckBox.create("whole word"); |
953 | CheckBox.create("whole word", WH); |
1000 | END createSearchForm; |
954 | END createSearchForm; |
Line 1001... | Line 955... | ||
1001 | 955 | ||
1002 | 956 | ||
1003 | PROCEDURE EditBox_GetValue (edit: box_lib.edit_box; VAR s: ARRAY OF WCHAR); |
957 | PROCEDURE EditBox_GetValue (edit: EB.tEditBox; VAR s: ARRAY OF WCHAR); |
1004 | VAR |
958 | VAR |
1005 | str: ARRAY EDITBOX_MAXCHARS + 1 OF CHAR; |
959 | str: ARRAY EDITBOX_MAXCHARS + 1 OF CHAR; |
1006 | i: INTEGER; |
960 | i: INTEGER; |
1007 | BEGIN |
961 | BEGIN |
1008 | box_lib.edit_box_get_value(edit, str); |
962 | EB.getValue(edit, str); |
1009 | i := 0; |
963 | i := 0; |
1010 | WHILE str[i] # 0X DO |
964 | WHILE str[i] # 0X DO |
1011 | s[i] := WCHR(E.cp866[ORD(str[i])]); |
965 | s[i] := WCHR(E.cp866[ORD(str[i])]); |
Line 1035... | Line 989... | ||
1035 | PROCEDURE click (x, y: INTEGER): INTEGER; |
989 | PROCEDURE click (x, y: INTEGER): INTEGER; |
1036 | VAR |
990 | VAR |
1037 | scrollX, scrollY: INTEGER; |
991 | scrollX, scrollY: INTEGER; |
1038 | shift, ctrl: BOOLEAN; |
992 | shift, ctrl: BOOLEAN; |
1039 | BEGIN |
993 | BEGIN |
1040 | getKBState(shift, ctrl); |
994 | K.getKBState(shift, ctrl); |
1041 | IF ~hScroll.mouse THEN |
- | |
1042 | Scroll.MouseDown(hScroll, x + LEFT, y + TOP); |
995 | Scroll.MouseDown(hScroll, x + LEFT, y + TOP); |
1043 | T.getScroll(text, scrollX, scrollY); |
- | |
1044 | T.scroll(text, hScroll.value - scrollX, 0); |
- | |
1045 | repaint |
- | |
1046 | END; |
- | |
1047 | IF ~vScroll.mouse THEN |
- | |
1048 | Scroll.MouseDown(vScroll, x + LEFT, y + TOP); |
996 | Scroll.MouseDown(vScroll, x + LEFT, y + TOP); |
1049 | T.getScroll(text, scrollX, scrollY); |
997 | T.getScroll(text, scrollX, scrollY); |
1050 | T.scroll(text, 0, vScroll.value - scrollY); |
998 | T.scroll(text, hScroll.value - scrollX, vScroll.value - scrollY); |
1051 | repaint |
- | |
1052 | END; |
- | |
1053 | IF search & searchOpened THEN |
999 | IF search & searchOpened THEN |
1054 | CheckBox.MouseDown(BKW, x + LEFT, y + TOP); |
1000 | CheckBox.MouseDown(BKW, x + LEFT, y + TOP); |
1055 | CheckBox.MouseDown(CS, x + LEFT, y + TOP); |
1001 | CheckBox.MouseDown(CS, x + LEFT, y + TOP); |
1056 | CheckBox.MouseDown(WH, x + LEFT, y + TOP); |
1002 | CheckBox.MouseDown(WH, x + LEFT, y + TOP); |
1057 | END; |
1003 | END; |
Line 1059... | Line 1005... | ||
1059 | leftButton := TRUE; |
1005 | leftButton := TRUE; |
1060 | SetFocus(FindEdit, FALSE); |
1006 | SetFocus(FindEdit, FALSE); |
1061 | IF ~shift THEN |
1007 | IF ~shift THEN |
1062 | T.resetSelect(text) |
1008 | T.resetSelect(text) |
1063 | END; |
1009 | END; |
1064 | T.mouse(text, x, y); |
1010 | T.mouse(text, x, y) |
- | 1011 | END; |
|
1065 | repaint |
1012 | repaint |
1066 | END |
- | |
1067 | RETURN K.GetTickCount() |
1013 | RETURN K.GetTickCount() |
1068 | END click; |
1014 | END click; |
Line 1069... | Line 1015... | ||
1069 | 1015 | ||
Line 1110... | Line 1056... | ||
1110 | Menu.close(menuTools); |
1056 | Menu.close(menuTools); |
1111 | Menu.close(subCurLine); |
1057 | Menu.close(subCurLine); |
1112 | Menu.close(subIndent); |
1058 | Menu.close(subIndent); |
1113 | Menu.close(subCase); |
1059 | Menu.close(subCase); |
1114 | Menu.close(subBookmark); |
1060 | Menu.close(subBookmark); |
1115 | Menu.close(context); |
1061 | Menu.close(context) |
1116 | END CloseMenu; |
1062 | END CloseMenu; |
Line 1117... | Line 1063... | ||
1117 | 1063 | ||
1118 | 1064 | ||
Line 1176... | Line 1122... | ||
1176 | END |
1122 | END |
1177 | ELSE |
1123 | ELSE |
1178 | K.WinPos(winX, winY); |
1124 | K.WinPos(winX, winY); |
1179 | K.ClientPos(cliX, cliY); |
1125 | K.ClientPos(cliX, cliY); |
1180 | x := winX + cliX; |
1126 | x := winX + cliX; |
1181 | y := MainMenuHeight + winY + cliY |
1127 | y := Menu.MainMenuHeight + winY + cliY |
1182 | END; |
1128 | END; |
1183 | - | ||
1184 | selected := T.selected(text); |
1129 | selected := T.selected(text); |
Line 1185... | Line 1130... | ||
1185 | 1130 | ||
1186 | IF menu = menuFile THEN |
1131 | IF menu = menuFile THEN |
1187 | Menu.setEnabled(menu, menuSave, text.modified); |
1132 | Menu.setEnabled(menu, menuSave, text.modified); |
Line 1271... | Line 1216... | ||
1271 | 1216 | ||
1272 | 1217 | ||
1273 | PROCEDURE receiveIPC; |
1218 | PROCEDURE receiveIPC; |
- | 1219 | VAR |
|
1274 | VAR |
1220 | scrollIPC: BOOLEAN; |
1275 | scrollIPC: BOOLEAN; |
1221 | item: List.tItem; |
1276 | BEGIN |
1222 | BEGIN |
1277 | scrollIPC := FALSE; |
1223 | scrollIPC := FALSE; |
1278 | IF IPC[0] = Timer.ID THEN |
1224 | IF IPC[0] = Timer.ID THEN |
Line 1282... | Line 1228... | ||
1282 | END; |
1228 | END; |
1283 | IPC[2] := 0 |
1229 | IPC[2] := 0 |
1284 | ELSIF IPC[0] = mainTID THEN |
1230 | ELSIF IPC[0] = mainTID THEN |
1285 | IF IPC[2] = Scroll.ScrollIPC THEN |
1231 | IF IPC[2] = Scroll.ScrollIPC THEN |
1286 | Scroll.change(hScroll); |
1232 | Scroll.change(hScroll); |
1287 | IF hScroll.Dec THEN |
- | |
1288 | T.scroll(text, -1, 0) |
- | |
1289 | ELSIF hScroll.Inc THEN |
- | |
1290 | T.scroll(text, 1, 0) |
- | |
1291 | END; |
- | |
1292 | Scroll.change(vScroll); |
1233 | Scroll.change(vScroll); |
1293 | IF vScroll.Dec THEN |
- | |
1294 | T.scroll(text, 0, -1) |
1234 | T.scroll(text, ORD(hScroll.Inc) - ORD(hScroll.Dec), ORD(vScroll.Inc) - ORD(vScroll.Dec)); |
1295 | ELSIF vScroll.Inc THEN |
- | |
1296 | T.scroll(text, 0, 1) |
- | |
1297 | END; |
- | |
Line 1298... | Line 1235... | ||
1298 | 1235 | ||
1299 | IF menuActive THEN |
1236 | IF menuActive THEN |
1300 | draw_window; |
1237 | draw_window; |
1301 | menuActive := FALSE |
1238 | menuActive := FALSE |
1302 | ELSE |
1239 | ELSE |
1303 | repaint |
1240 | repaint |
Line 1304... | Line 1241... | ||
1304 | END; |
1241 | END; |
1305 | 1242 | ||
1306 | IF (0 IN K.MouseState()) THEN |
1243 | IF 0 IN K.MouseState() THEN |
1307 | WHILE (0 IN K.MouseState()) & (delay > 0) DO |
1244 | WHILE (0 IN K.MouseState()) & (delay > 0) DO |
1308 | K.Pause(1); |
1245 | K.Pause(1); |
1309 | DEC(delay) |
1246 | DEC(delay) |
Line 1313... | Line 1250... | ||
1313 | IPC[1] := 0; |
1250 | IPC[1] := 0; |
1314 | scrollIPC := TRUE; |
1251 | scrollIPC := TRUE; |
1315 | Scroll.SendIPC; |
1252 | Scroll.SendIPC; |
1316 | delay := 2 |
1253 | delay := 2 |
1317 | ELSE |
1254 | ELSE |
1318 | delay := scrollDelay |
1255 | delay := Scroll.Delay |
1319 | END |
1256 | END |
1320 | ELSE |
1257 | ELSE |
1321 | delay := scrollDelay |
1258 | delay := Scroll.Delay |
1322 | END |
1259 | END |
1323 | END; |
1260 | END; |
1324 | IPC[2] := 0 |
1261 | IPC[2] := 0 |
- | 1262 | ELSE |
|
1325 | ELSIF ~Menu.isSender(IPC[0]) THEN |
1263 | IF ~Menu.isSender(IPC[0]) THEN |
- | 1264 | IPC[2] := 0 |
|
- | 1265 | ELSE |
|
- | 1266 | IF IPC[2] < 0 THEN |
|
- | 1267 | item := List.getItem(mainMenu, (-IPC[2] - mainMenuBtn) MOD mainMenu.count); |
|
- | 1268 | IF item # NIL THEN |
|
- | 1269 | ShowMenu(item(Menu.tMainItem).menu) |
|
- | 1270 | END; |
|
1326 | IPC[2] := 0 |
1271 | IPC[2] := 0 |
- | 1272 | END |
|
- | 1273 | END |
|
1327 | END; |
1274 | END; |
1328 | CASE IPC[2] OF |
1275 | CASE IPC[2] OF |
1329 | |0: |
1276 | |0: |
1330 | |menuCut: T.key(text, ORD("X"), FALSE, TRUE) |
1277 | |menuCut: T.key(text, ORD("X"), FALSE, TRUE) |
1331 | |menuCopy: T.key(text, ORD("C"), FALSE, TRUE) |
1278 | |menuCopy: T.key(text, ORD("C"), FALSE, TRUE) |
Line 1463... | Line 1410... | ||
1463 | VAR |
1410 | VAR |
1464 | menuItem: INTEGER; |
1411 | menuItem: INTEGER; |
1465 | shift, ctrl: BOOLEAN; |
1412 | shift, ctrl: BOOLEAN; |
1466 | BEGIN |
1413 | BEGIN |
1467 | menuItem := -1; |
1414 | menuItem := -1; |
1468 | getKBState(shift, ctrl); |
1415 | K.getKBState(shift, ctrl); |
1469 | IF ctrl THEN |
1416 | IF ctrl THEN |
1470 | CASE key DIV 65536 OF |
1417 | CASE key DIV 65536 OF |
1471 | |17: menuItem := menuClose |
1418 | |17: menuItem := menuClose |
1472 | |21: menuItem := menuRedo |
1419 | |21: menuItem := menuRedo |
1473 | |30: menuItem := menuSelectAll |
1420 | |30: menuItem := menuSelectAll |
- | 1421 | |32: menuItem := menuDuplicate |
|
1474 | |33: menuItem := menuFind |
1422 | |33: menuItem := menuFind |
1475 | |34: menuItem := menuGoto |
1423 | |34: menuItem := menuGoto |
1476 | |44: menuItem := menuUndo |
1424 | |44: menuItem := menuUndo |
1477 | |45: menuItem := menuCut |
1425 | |45: menuItem := menuCut |
1478 | |46: menuItem := menuCopy |
1426 | |46: menuItem := menuCopy |
1479 | |47: menuItem := menuPaste |
1427 | |47: menuItem := menuPaste |
1480 | |24: menuItem := menuOpen |
1428 | |24: menuItem := menuOpen |
1481 | |31: menuItem := menuSave |
1429 | |31: menuItem := menuSave |
1482 | |49: menuItem := menuNew |
1430 | |49: menuItem := menuNew |
1483 | |67: menuItem := menuBuild |
1431 | |67: menuItem := menuBuild |
- | 1432 | |83: menuItem := menuRemove |
|
- | 1433 | |22: menuItem := menuUpper |
|
- | 1434 | |38: menuItem := menuLower |
|
- | 1435 | |60: menuItem := menuToggleBookmark |
|
- | 1436 | |72: menuItem := menuMoveUp |
|
- | 1437 | |80: menuItem := menuMoveDown |
|
1484 | ELSE |
1438 | ELSE |
1485 | END |
1439 | END |
1486 | ELSE |
1440 | ELSE |
1487 | IF key DIV 65536 = 83 THEN |
1441 | IF key DIV 65536 = 83 THEN |
1488 | menuItem := menuDelete |
1442 | menuItem := menuDelete |
1489 | ELSIF key DIV 65536 = 67 THEN |
1443 | ELSIF key DIV 65536 = 67 THEN |
1490 | menuItem := menuRun |
1444 | menuItem := menuRun |
- | 1445 | ELSIF key DIV 65536 = 15 THEN |
|
- | 1446 | menuItem := menuIncInd |
|
- | 1447 | ELSIF (key DIV 65536 = 14) & shift THEN |
|
- | 1448 | menuItem := menuDecInd |
|
- | 1449 | ELSIF key DIV 65536 = 60 THEN |
|
- | 1450 | IF shift THEN |
|
- | 1451 | menuItem := menuPrevBookmark |
|
- | 1452 | ELSE |
|
- | 1453 | menuItem := menuNextBookmark |
|
- | 1454 | END |
|
1491 | END |
1455 | END |
1492 | END; |
1456 | END; |
1493 | IF menuItem # -1 THEN |
1457 | IF menuItem # -1 THEN |
1494 | IF Menu.isEnabled(menu, menuItem) THEN |
1458 | IF Menu.isEnabled(menu, menuItem) THEN |
1495 | MenuItemClick(menu, menuItem) |
1459 | MenuItemClick(menu, menuItem) |
Line 1724... | Line 1688... | ||
1724 | PROCEDURE KeyDown (key: INTEGER); |
1688 | PROCEDURE KeyDown (key: INTEGER); |
1725 | VAR |
1689 | VAR |
1726 | keyCode: INTEGER; |
1690 | keyCode: INTEGER; |
1727 | shift, ctrl: BOOLEAN; |
1691 | shift, ctrl: BOOLEAN; |
1728 | BEGIN |
1692 | BEGIN |
- | 1693 | K.getKBState(shift, ctrl); |
|
1729 | keyCode := key DIV 65536; |
1694 | keyCode := key DIV 65536; |
1730 | getKBState(shift, ctrl); |
- | |
1731 | IF confirm THEN |
1695 | IF confirm THEN |
1732 | IF keyCode = 28 THEN (* Enter *) |
1696 | IF keyCode = 28 THEN (* Enter *) |
1733 | save(text); |
1697 | save(text); |
1734 | IF ~text.modified THEN |
1698 | IF ~text.modified THEN |
1735 | closeFile(FALSE, curText) |
1699 | closeFile(FALSE, curText) |
Line 1758... | Line 1722... | ||
1758 | IF ctrl THEN |
1722 | IF ctrl THEN |
1759 | Script(buildScript) |
1723 | Script(buildScript) |
1760 | ELSE |
1724 | ELSE |
1761 | Script(runScript) |
1725 | Script(runScript) |
1762 | END |
1726 | END |
- | 1727 | ELSIF keyCode = 68 THEN (* F10 *) |
|
- | 1728 | key := -1; |
|
- | 1729 | ShowMenu(menuFile) |
|
1763 | ELSIF keyCode = 1 THEN (* Esc *) |
1730 | ELSIF keyCode = 1 THEN (* Esc *) |
1764 | key := -1; |
1731 | key := -1; |
1765 | IF search THEN |
1732 | IF search THEN |
1766 | Search |
1733 | Search |
1767 | END |
1734 | END |
Line 1781... | Line 1748... | ||
1781 | key := -1; |
1748 | key := -1; |
1782 | ShowSearchPanel; |
1749 | ShowSearchPanel; |
1783 | SetFocus(GotoEdit, TRUE) |
1750 | SetFocus(GotoEdit, TRUE) |
1784 | ELSE |
1751 | ELSE |
1785 | IF EditBox_Focus(FindEdit) THEN |
1752 | IF EditBox_Focus(FindEdit) THEN |
1786 | box_lib.edit_box_key(FindEdit, key); |
1753 | EB.key(FindEdit, key); |
1787 | EditBox_GetValue(FindEdit, new_searchText); |
1754 | EditBox_GetValue(FindEdit, new_searchText); |
1788 | IF new_searchText # searchText THEN |
1755 | IF new_searchText # searchText THEN |
1789 | searchText := new_searchText; |
1756 | searchText := new_searchText; |
1790 | notFound := ~T.search(text, searchText, cs, whole) |
1757 | notFound := ~T.search(text, searchText, cs, whole) |
1791 | END |
1758 | END |
1792 | ELSIF EditBox_Focus(ReplaceEdit) THEN |
1759 | ELSIF EditBox_Focus(ReplaceEdit) THEN |
1793 | box_lib.edit_box_key(ReplaceEdit, key); |
1760 | EB.key(ReplaceEdit, key); |
1794 | EditBox_GetValue(ReplaceEdit, replaceText) |
1761 | EditBox_GetValue(ReplaceEdit, replaceText) |
1795 | ELSIF EditBox_Focus(GotoEdit) THEN |
1762 | ELSIF EditBox_Focus(GotoEdit) THEN |
1796 | IF (key DIV 256) MOD 256 = 13 THEN |
1763 | IF (key DIV 256) MOD 256 = 13 THEN |
1797 | goto |
1764 | goto |
1798 | ELSE |
1765 | ELSE |
1799 | box_lib.edit_box_key(GotoEdit, key) |
1766 | EB.key(GotoEdit, key) |
1800 | END |
1767 | END |
1801 | ELSE |
1768 | ELSE |
1802 | CASE keyCode OF |
1769 | CASE keyCode OF |
1803 | |73: key := 33 |
1770 | |73: key := 33 |
1804 | |81: key := 34 |
1771 | |81: key := 34 |
Line 1856... | Line 1823... | ||
1856 | 1823 | ||
1857 | PROCEDURE BtnClick; |
1824 | PROCEDURE BtnClick; |
1858 | VAR |
1825 | VAR |
1859 | btn: INTEGER; |
1826 | btn: INTEGER; |
- | 1827 | middle, exit: BOOLEAN; |
|
1860 | middle, exit: BOOLEAN; |
1828 | menu: Menu.tMenu; |
1861 | BEGIN |
1829 | BEGIN |
1862 | btn := K.ButtonCode(middle); |
1830 | btn := K.ButtonCode(middle); |
1863 | IF (Tabs.btnID <= btn) & (btn <= Tabs.btnID + maxTexts - 1) THEN |
1831 | IF U.between(Tabs.btnID, btn, Tabs.btnID + maxTexts - 1) THEN |
1864 | DEC(btn, Tabs.btnID); |
1832 | DEC(btn, Tabs.btnID); |
1865 | IF middle THEN |
1833 | IF middle THEN |
1866 | IF texts[btn].modified THEN |
1834 | IF texts[btn].modified THEN |
1867 | SwitchTab(btn) |
1835 | SwitchTab(btn) |
Line 1874... | Line 1842... | ||
1874 | ELSE |
1842 | ELSE |
1875 | IF middle THEN |
1843 | IF middle THEN |
1876 | btn := 0 |
1844 | btn := 0 |
1877 | END |
1845 | END |
1878 | END; |
1846 | END; |
- | 1847 | IF btn # 0 THEN |
|
- | 1848 | menu := Menu.ClickMain(mainMenu, btn); |
|
- | 1849 | IF menu # NIL THEN |
|
- | 1850 | ShowMenu(menu); |
|
- | 1851 | btn := 0 |
|
- | 1852 | END |
|
- | 1853 | END; |
|
1879 | CASE btn OF |
1854 | CASE btn OF |
1880 | |Tabs.btnID - 1: Tabs.scroll(tabs, -1); switch := TRUE; repaint |
1855 | |Tabs.btnID - 1: Tabs.scroll(tabs, -1); switch := TRUE; repaint |
1881 | |Tabs.btnID - 2: Tabs.scroll(tabs, +1); switch := TRUE; repaint |
1856 | |Tabs.btnID - 2: Tabs.scroll(tabs, +1); switch := TRUE; repaint |
Line 1882... | Line 1857... | ||
1882 | 1857 | ||
Line 1883... | Line -... | ||
1883 | |0: |
- | |
1884 | - | ||
1885 | |btnFile: |
- | |
1886 | ShowMenu(menuFile) |
- | |
1887 | |btnEdit: |
- | |
1888 | ShowMenu(menuEdit) |
- | |
1889 | |btnMenuSearch: |
- | |
1890 | ShowMenu(menuSearch) |
- | |
1891 | |btnEncoding: |
- | |
1892 | ShowMenu(menuEncoding) |
- | |
1893 | |btnEOL: |
- | |
1894 | ShowMenu(menuEOL) |
- | |
1895 | |btnView: |
- | |
1896 | ShowMenu(menuView) |
- | |
1897 | |btnSyntax: |
- | |
1898 | ShowMenu(menuSyntax) |
- | |
1899 | |btnProgram: |
- | |
1900 | ShowMenu(menuProgram) |
- | |
1901 | |btnTools: |
1858 | |0: |
1902 | ShowMenu(menuTools) |
1859 | |
1903 | |btnNo: |
1860 | |btnNo: |
1904 | exit := closing; |
1861 | exit := closing; |
1905 | closeFile(FALSE, curText); |
1862 | closeFile(FALSE, curText); |
Line 1980... | Line 1937... | ||
1980 | VAR |
1937 | VAR |
1981 | msState: SET; |
1938 | msState: SET; |
1982 | scroll, x, y, scrollX, scrollY: INTEGER; |
1939 | scroll, x, y, scrollX, scrollY: INTEGER; |
Line 1983... | Line 1940... | ||
1983 | 1940 | ||
1984 | 1941 | ||
1985 | PROCEDURE EditBox (eb: box_lib.edit_box); |
1942 | PROCEDURE EditBox (eb: EB.tEditBox); |
1986 | VAR |
1943 | VAR |
1987 | focus: BOOLEAN; |
1944 | focus: BOOLEAN; |
1988 | BEGIN |
1945 | BEGIN |
1989 | focus := EditBox_Focus(eb); |
1946 | focus := EditBox_Focus(eb); |
1990 | box_lib.edit_box_mouse(eb); |
1947 | EB.mouse(eb); |
1991 | IF focus # EditBox_Focus(eb) THEN |
1948 | IF focus # EditBox_Focus(eb) THEN |
1992 | SetFocus(eb, TRUE); |
1949 | SetFocus(eb, TRUE); |
1993 | repaint |
1950 | repaint |
Line 2035... | Line 1992... | ||
2035 | IF 9 IN msState THEN |
1992 | IF 9 IN msState THEN |
2036 | ShowMenu(context) |
1993 | ShowMenu(context) |
2037 | END; |
1994 | END; |
2038 | IF 24 IN msState THEN |
1995 | IF 24 IN msState THEN |
2039 | mouse(x, y); |
1996 | mouse(x, y); |
2040 | IF ~hScroll.mouse THEN |
- | |
2041 | Scroll.MouseDown(hScroll, x + LEFT, y + TOP) |
1997 | Scroll.MouseDown(hScroll, x + LEFT, y + TOP); |
2042 | END; |
- | |
2043 | IF ~vScroll.mouse THEN |
- | |
2044 | Scroll.MouseDown(vScroll, x + LEFT, y + TOP) |
1998 | Scroll.MouseDown(vScroll, x + LEFT, y + TOP); |
2045 | END; |
- | |
2046 | IF search & searchOpened THEN |
1999 | IF search & searchOpened THEN |
2047 | CheckBox.MouseDown(BKW, x + LEFT, y + TOP); |
2000 | CheckBox.MouseDown(BKW, x + LEFT, y + TOP); |
2048 | CheckBox.MouseDown(CS, x + LEFT, y + TOP); |
2001 | CheckBox.MouseDown(CS, x + LEFT, y + TOP); |
2049 | CheckBox.MouseDown(WH, x + LEFT, y + TOP); |
2002 | CheckBox.MouseDown(WH, x + LEFT, y + TOP); |
2050 | END; |
2003 | END; |
Line 2109... | Line 2062... | ||
2109 | fileName, filePath: RW.tFileName; |
2062 | fileName, filePath: RW.tFileName; |
2110 | width, height, cliWidth, cliHeight: INTEGER; |
2063 | width, height, cliWidth, cliHeight: INTEGER; |
2111 | resized: BOOLEAN; |
2064 | resized: BOOLEAN; |
2112 | firstClickX, firstClickY, time: INTEGER; |
2065 | firstClickX, firstClickY, time: INTEGER; |
2113 | BEGIN |
2066 | BEGIN |
2114 | delay := scrollDelay; |
2067 | delay := Scroll.Delay; |
2115 | K.GetSystemColors; |
2068 | K.GetSystemColors; |
2116 | Icons.get(icons, grayIcons); |
2069 | Icons.get(icons, grayIcons); |
2117 | modified := FALSE; |
2070 | modified := FALSE; |
2118 | switch := FALSE; |
2071 | switch := FALSE; |
2119 | closing := FALSE; |
2072 | closing := FALSE; |
Line 2161... | Line 2114... | ||
2161 | menuView := CreateMenuView(); |
2114 | menuView := CreateMenuView(); |
2162 | menuSyntax := CreateMenuSyntax(); |
2115 | menuSyntax := CreateMenuSyntax(); |
2163 | menuProgram := CreateMenuProgram(); |
2116 | menuProgram := CreateMenuProgram(); |
2164 | menuTools := CreateMenuTools(); |
2117 | menuTools := CreateMenuTools(); |
Line -... | Line 2118... | ||
- | 2118 | ||
- | 2119 | mainMenu := Menu.CreateMain(mainMenuBtn); |
|
- | 2120 | Menu.AddMainItem(mainMenu, "file", menuFile); |
|
- | 2121 | Menu.AddMainItem(mainMenu, "edit", menuEdit); |
|
- | 2122 | Menu.AddMainItem(mainMenu, "search", menuSearch); |
|
- | 2123 | Menu.AddMainItem(mainMenu, "encoding", menuEncoding); |
|
- | 2124 | Menu.AddMainItem(mainMenu, "eol", menuEOL); |
|
- | 2125 | Menu.AddMainItem(mainMenu, "view", menuView); |
|
- | 2126 | Menu.AddMainItem(mainMenu, "syntax", menuSyntax); |
|
- | 2127 | Menu.AddMainItem(mainMenu, "program", menuProgram); |
|
- | 2128 | Menu.AddMainItem(mainMenu, "tools", menuTools); |
|
2165 | 2129 | ||
2166 | Ini.getSettings(buildScript, runScript, debugScript); |
2130 | Ini.getSettings(buildScript, runScript, debugScript); |
2167 | IF fileName = "" THEN |
2131 | IF fileName = "" THEN |
2168 | text := T.New(); |
2132 | text := T.New(); |
2169 | filePath := "/rd/1" |
2133 | filePath := "/rd/1" |
Line 2198... | Line 2162... | ||
2198 | Menu.init(resetTimer); |
2162 | Menu.init(resetTimer); |
2199 | draw_window; |
2163 | draw_window; |
2200 | Timer.create(mainTID); |
2164 | Timer.create(mainTID); |
2201 | WHILE TRUE DO |
2165 | WHILE TRUE DO |
2202 | CASE K.WaitForEvent() OF |
2166 | CASE K.WaitForEvent() OF |
2203 | |1: IF Menu.redraw THEN |
2167 | |1: (*IF Menu.redraw THEN*) |
2204 | Redraw(resized, width, height, cliWidth, cliHeight) |
2168 | Redraw(resized, width, height, cliWidth, cliHeight) |
2205 | ELSE |
2169 | (*ELSE |
2206 | Menu.Redraw; |
2170 | Menu.Redraw; |
2207 | K.CreateWindow(30 + K.GetTickCount() MOD 128, 30 + K.GetTickCount() MOD 128, winWidth, winHeight, K.winColor, 73H, 0, 0, header); |
2171 | K.CreateWindow(30 + K.GetTickCount() MOD 128, 30 + K.GetTickCount() MOD 128, winWidth, winHeight, K.winColor, 73H, 0, 0, header); |
2208 | repaint |
2172 | repaint |
2209 | END |
2173 | END*) |
2210 | |2: KeyDown(K.GetKey()) |
2174 | |2: KeyDown(K.GetKey()) |
2211 | |3: BtnClick |
2175 | |3: BtnClick |
2212 | |6: MouseEvent(resized, firstClickX, firstClickY, time) |
2176 | |6: MouseEvent(resized, firstClickX, firstClickY, time) |
2213 | |7: receiveIPC |
2177 | |7: receiveIPC |
2214 | END |
2178 | END |