Rev 9336 | Rev 9413 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 9336 | Rev 9410 | ||
---|---|---|---|
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 (27-nov-2021)"; |
31 | HEADER = "CEdit (08-dec-2021)"; |
32 | 32 | ||
Line 33... | Line 33... | ||
33 | ShellFilter = ""; |
33 | ShellFilter = ""; |
Line 391... | Line 391... | ||
391 | END; |
391 | END; |
392 | drawIcon(ico, 53, x) |
392 | drawIcon(ico, 53, x) |
393 | END toolbarIcons; |
393 | END toolbarIcons; |
Line 394... | Line 394... | ||
394 | 394 | ||
- | 395 | ||
- | 396 | PROCEDURE getIdx (text: T.tText): INTEGER; |
|
395 | 397 | VAR |
|
396 | PROCEDURE WriteModified (x, y: INTEGER); |
398 | i: INTEGER; |
397 | BEGIN |
- | |
398 | modified := text.modified; |
399 | BEGIN |
399 | K.DrawRect(x, TOP + canvas.height + scrollWidth, 8*fontWidth, BOTTOM - scrollWidth + 1, K.winColor); |
400 | i := 0; |
400 | IF modified THEN |
401 | WHILE texts[i] # text DO |
- | 402 | INC(i) |
|
- | 403 | END |
|
- | 404 | RETURN i |
|
- | 405 | END getIdx; |
|
- | 406 | ||
- | 407 | ||
- | 408 | PROCEDURE MarkModified; |
|
- | 409 | BEGIN |
|
401 | K.DrawText866(x, y, K.textColor, "modified") |
410 | modified := text.modified; |
- | 411 | Tabs.modify(tabs, getIdx(text), modified) |
|
- | 412 | END MarkModified; |
|
- | 413 | ||
- | 414 | ||
- | 415 | PROCEDURE SetCaption (fileName: RW.tFileName); |
|
- | 416 | VAR |
|
- | 417 | header: RW.tFileName; |
|
- | 418 | BEGIN |
|
- | 419 | header := HEADER; |
|
- | 420 | IF text.fileName # "" THEN |
|
- | 421 | U.append8(header, " - "); |
|
- | 422 | U.append8(header, text.fileName) |
|
- | 423 | END; |
|
Line 402... | Line 424... | ||
402 | END |
424 | K.SetCaption(header) |
403 | END WriteModified; |
425 | END SetCaption; |
404 | 426 | ||
405 | 427 | ||
406 | PROCEDURE DrawState (text: T.tText; width, height: INTEGER); |
- | |
407 | VAR |
428 | PROCEDURE DrawState (text: T.tText; width, height: INTEGER); |
408 | y: INTEGER; |
429 | VAR |
409 | s: ARRAY 24 OF WCHAR; |
430 | y: INTEGER; |
410 | header: RW.tFileName; |
431 | s: ARRAY 24 OF WCHAR; |
411 | BEGIN |
432 | BEGIN |
412 | eol := T.getEol(text); |
433 | eol := T.getEol(text); |
413 | enc := T.getEnc(text); |
434 | enc := T.getEnc(text); |
414 | s := ""; |
- | |
415 | U.append(s, RW.eolNames[eol]); |
- | |
416 | U.append(s, 20X + 20X); |
- | |
417 | U.append(s, E.names[enc]); |
- | |
418 | header := HEADER; |
- | |
419 | IF text.fileName # "" THEN |
435 | s := ""; |
420 | U.append8(header, " - "); |
436 | U.append(s, RW.eolNames[eol]); |
421 | U.append8(header, text.fileName) |
437 | U.append(s, 20X + 20X); |
422 | END; |
438 | U.append(s, E.names[enc]); |
423 | K.SetCaption(header); |
439 | SetCaption(text.fileName); |
424 | K.DrawRect(LEFT + 16*fontWidth, TOP + canvas.height + scrollWidth, width - (LEFT + 16*fontWidth), BOTTOM - scrollWidth + 1, K.winColor); |
440 | K.DrawRect(LEFT + 16*fontWidth, TOP + canvas.height + scrollWidth, width - (LEFT + 16*fontWidth), BOTTOM - scrollWidth + 1, K.winColor); |
Line 425... | Line 441... | ||
425 | y := height - (BOTTOM - scrollWidth) + (BOTTOM - scrollWidth - 16) DIV 2; |
441 | y := height - (BOTTOM - scrollWidth) + (BOTTOM - scrollWidth - 16) DIV 2; |
426 | K.DrawText(width - (LENGTH(s) + 10)*fontWidth, y, K.textColor, s); |
442 | K.DrawText(width - LENGTH(s)*fontWidth, y, K.textColor, s); |
Line 466... | Line 482... | ||
466 | WritePos(y); |
482 | WritePos(y); |
Line 467... | Line 483... | ||
467 | 483 | ||
468 | IF (enc # T.getEnc(text)) OR (eol # T.getEol(text)) THEN |
484 | IF (enc # T.getEnc(text)) OR (eol # T.getEol(text)) THEN |
469 | DrawState(text, width, height) |
485 | DrawState(text, width, height) |
470 | ELSIF modified # text.modified THEN |
486 | ELSIF modified # text.modified THEN |
471 | WriteModified(width - 8*fontWidth, y) |
487 | MarkModified |
Line 472... | Line 488... | ||
472 | END; |
488 | END; |
473 | 489 | ||
474 | T.getScroll(text, scrollX, scrollY); |
490 | T.getScroll(text, scrollX, scrollY); |
Line 673... | Line 689... | ||
673 | resetTimer |
689 | resetTimer |
674 | END OpenFile; |
690 | END OpenFile; |
Line 675... | Line 691... | ||
675 | 691 | ||
- | 692 | ||
- | 693 | PROCEDURE error (s: RW.tFileName); |
|
676 | 694 | VAR |
|
- | 695 | temp: RW.tFileName; |
|
- | 696 | BEGIN |
|
- | 697 | temp := "'CEdit: "; |
|
677 | PROCEDURE error (s: RW.tFileName); |
698 | U.append8(temp, s); |
678 | BEGIN |
699 | U.append8(temp, "' -E"); |
Line 679... | Line 700... | ||
679 | K.Run("/rd/1/@notify", s) |
700 | K.Run("/rd/1/@notify", temp) |
680 | END error; |
701 | END error; |
681 | 702 | ||
682 | 703 | ||
683 | PROCEDURE saveError (name: RW.tFileName); |
704 | PROCEDURE saveError (name: RW.tFileName); |
684 | VAR |
705 | VAR |
685 | s: RW.tFileName; |
- | |
686 | BEGIN |
706 | s: RW.tFileName; |
687 | s := "'cedit: error saving file "; |
707 | BEGIN |
Line 688... | Line 708... | ||
688 | U.append8(s, name); |
708 | s := "error saving file "; |
Line 714... | Line 734... | ||
714 | END |
734 | END |
715 | END |
735 | END |
716 | END saveAs; |
736 | END saveAs; |
Line 717... | Line -... | ||
717 | - | ||
718 | - | ||
719 | PROCEDURE getIdx (text: T.tText): INTEGER; |
- | |
720 | VAR |
- | |
721 | i: INTEGER; |
- | |
722 | BEGIN |
- | |
723 | i := 0; |
- | |
724 | WHILE texts[i] # text DO |
- | |
725 | INC(i) |
- | |
726 | END |
- | |
727 | RETURN i |
- | |
728 | END getIdx; |
- | |
729 | 737 | ||
730 | 738 | ||
731 | PROCEDURE Switch (txt: T.tText); |
739 | PROCEDURE Switch (txt: T.tText); |
732 | BEGIN |
740 | BEGIN |
733 | Tabs.switch(tabs, curText); |
741 | Tabs.switch(tabs, curText); |
Line 746... | Line 754... | ||
746 | END |
754 | END |
747 | ELSE |
755 | ELSE |
748 | curText := getIdx(text); |
756 | curText := getIdx(text); |
749 | Switch(text); |
757 | Switch(text); |
750 | saveAs(text) |
758 | saveAs(text) |
751 | END |
759 | END; |
- | 760 | Tabs.modify(tabs, getIdx(text), text.modified) |
|
752 | END |
761 | END |
753 | END save; |
762 | END save; |
Line 754... | Line 763... | ||
754 | 763 | ||
755 | 764 | ||
756 | PROCEDURE saveAll; |
765 | PROCEDURE saveAll; |
- | 766 | VAR |
|
757 | VAR |
767 | i: INTEGER; |
758 | i: INTEGER; |
768 | txt: T.tText; |
759 | BEGIN |
769 | BEGIN |
- | 770 | i := textsCount - 1; |
|
760 | i := textsCount - 1; |
771 | WHILE i >= 0 DO |
- | 772 | txt := texts[i]; |
|
761 | WHILE i >= 0 DO |
773 | IF txt.modified THEN |
762 | IF texts[i].modified THEN |
774 | T.switch(txt); |
763 | save(texts[i]) |
775 | save(txt) |
764 | END; |
776 | END; |
- | 777 | DEC(i) |
|
765 | DEC(i) |
778 | END; |
Line 766... | Line 779... | ||
766 | END; |
779 | T.switch(text) |
767 | END saveAll; |
780 | END saveAll; |
Line 843... | Line 856... | ||
843 | IF textsCount < maxTexts THEN |
856 | IF textsCount < maxTexts THEN |
844 | nov := T.New(); |
857 | nov := T.New(); |
845 | T.SetPos(nov, 0, 0); |
858 | T.SetPos(nov, 0, 0); |
846 | insert(textsCount, nov) |
859 | insert(textsCount, nov) |
847 | ELSE |
860 | ELSE |
848 | error("'cedit: too many files' -E") |
861 | error("too many files") |
849 | END |
862 | END |
850 | END NewFile; |
863 | END NewFile; |
Line 851... | Line 864... | ||
851 | 864 | ||
Line 899... | Line 912... | ||
899 | IF fileName # "" THEN |
912 | IF fileName # "" THEN |
900 | n := getFileNum(fileName); |
913 | n := getFileNum(fileName); |
901 | IF n = -1 THEN |
914 | IF n = -1 THEN |
902 | nov := T.open(fileName, err); |
915 | nov := T.open(fileName, err); |
903 | IF nov = NIL THEN |
916 | IF nov = NIL THEN |
904 | error("'cedit: error opening file' -E") |
917 | error("error opening file") |
905 | ELSE |
918 | ELSE |
906 | insert(textsCount, nov); |
919 | insert(textsCount, nov); |
907 | T.SetPos(nov, 0, 0) |
920 | T.SetPos(nov, 0, 0) |
908 | END |
921 | END |
909 | ELSE |
922 | ELSE |
910 | SwitchTab(n) |
923 | SwitchTab(n) |
911 | END |
924 | END |
912 | END |
925 | END |
913 | ELSE |
926 | ELSE |
914 | error("'cedit: too many files' -E") |
927 | error("too many files") |
915 | END |
928 | END |
916 | END open; |
929 | END open; |
Line 917... | Line 930... | ||
917 | 930 | ||
Line 1048... | Line 1061... | ||
1048 | 1061 | ||
1049 | 1062 | ||
1050 | PROCEDURE ShowSearchPanel (goto: BOOLEAN); |
1063 | PROCEDURE ShowSearchPanel (goto: BOOLEAN); |
1051 | VAR |
1064 | VAR |
1052 | i: INTEGER; |
1065 | i: INTEGER; |
1053 | flag: BOOLEAN; |
1066 | (*flag: BOOLEAN;*) |
1054 | BEGIN |
1067 | BEGIN |
1055 | flag := FALSE; |
1068 | (*flag := FALSE;*) |
1056 | IF T.selected(text) & ~goto THEN |
1069 | IF T.selected(text) & ~goto THEN |
1057 | T.getSelectedText(text, new_searchText); |
1070 | T.getSelectedText(text, new_searchText); |
1058 | IF new_searchText # "" THEN |
1071 | IF new_searchText # "" THEN |
Line 1062... | Line 1075... | ||
1062 | END; |
1075 | END; |
1063 | IF new_searchText[i] = 0X THEN |
1076 | IF new_searchText[i] = 0X THEN |
1064 | searchText := new_searchText; |
1077 | searchText := new_searchText; |
1065 | EB.setValue(FindEdit, searchText); |
1078 | EB.setValue(FindEdit, searchText); |
1066 | notFound := ~T.search(text, searchText, cs, whole); |
1079 | notFound := ~T.search(text, searchText, cs, whole); |
1067 | flag := TRUE |
1080 | (*flag := TRUE*) |
1068 | END |
1081 | END |
1069 | END |
1082 | END |
1070 | END; |
1083 | END; |
1071 | IF ~search THEN |
1084 | IF ~search THEN |
1072 | Search |
1085 | Search |
1073 | ELSIF ~searchOpened THEN |
1086 | ELSIF ~searchOpened THEN |
1074 | search := FALSE; |
1087 | search := FALSE; |
1075 | Search |
1088 | Search |
1076 | END; |
1089 | END; |
1077 | IF flag THEN |
- | |
1078 | SetFocus(FindEdit, FALSE) |
- | |
1079 | ELSIF goto THEN |
1090 | IF goto THEN |
1080 | SetFocus(GotoEdit, TRUE) |
1091 | SetFocus(GotoEdit, TRUE) |
1081 | ELSE |
1092 | ELSE |
1082 | SetFocus(FindEdit, TRUE) |
1093 | SetFocus(FindEdit, (*~flag*)TRUE) |
1083 | END |
1094 | END |
1084 | END ShowSearchPanel; |
1095 | END ShowSearchPanel; |
Line 1085... | Line 1096... | ||
1085 | 1096 | ||
Line 1735... | Line 1746... | ||
1735 | key := -1; |
1746 | key := -1; |
1736 | ShowSearchPanel(FALSE) |
1747 | ShowSearchPanel(FALSE) |
1737 | ELSIF (keyCode = 34) & ctrl THEN (* ctrl+G *) |
1748 | ELSIF (keyCode = 34) & ctrl THEN (* ctrl+G *) |
1738 | key := -1; |
1749 | key := -1; |
1739 | ShowSearchPanel(TRUE) |
1750 | ShowSearchPanel(TRUE) |
- | 1751 | ELSIF (keyCode = 18) & ctrl THEN (* ctrl+E *) |
|
- | 1752 | key := -1; |
|
- | 1753 | T.selectWord(text) |
|
1740 | ELSE |
1754 | ELSE |
1741 | IF EditBox_Focus(FindEdit) THEN |
1755 | IF EditBox_Focus(FindEdit) THEN |
1742 | IF keyCode = 15 THEN (* Tab *) |
1756 | IF keyCode = 15 THEN (* Tab *) |
1743 | SetFocus(ReplaceEdit, TRUE) |
1757 | SetFocus(ReplaceEdit, TRUE) |
1744 | ELSE |
1758 | ELSE |
Line 2038... | Line 2052... | ||
2038 | resize; |
2052 | resize; |
2039 | resized := TRUE |
2053 | resized := TRUE |
2040 | END; |
2054 | END; |
2041 | K.SetEventsMask({0, 1, 2, 5, 6, 31}) |
2055 | K.SetEventsMask({0, 1, 2, 5, 6, 31}) |
2042 | ELSE |
2056 | ELSE |
- | 2057 | SetCaption(text.fileName); |
|
2043 | K.SetEventsMask({0, 30, 31}) |
2058 | K.SetEventsMask({0, 30, 31}) |
2044 | END; |
2059 | END; |
2045 | draw_window |
2060 | draw_window |
2046 | END |
2061 | END |
2047 | END Redraw; |
2062 | END Redraw; |
Line 2136... | Line 2151... | ||
2136 | text := T.New(); |
2151 | text := T.New(); |
2137 | filePath := "/rd/1" |
2152 | filePath := "/rd/1" |
2138 | ELSE |
2153 | ELSE |
2139 | text := T.open(fileName, err); |
2154 | text := T.open(fileName, err); |
2140 | IF text = NIL THEN |
2155 | IF text = NIL THEN |
2141 | error("'cedit: error opening file' -E"); |
2156 | error("error opening file"); |
2142 | K.Exit |
2157 | K.Exit |
2143 | ELSE |
2158 | ELSE |
2144 | U.getPath(fileName, filePath) |
2159 | U.getPath(fileName, filePath) |
2145 | END |
2160 | END |
2146 | END; |
2161 | END; |