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