forked from KolibriOS/kolibrios
CEdit: minor changes
git-svn-id: svn://kolibrios.org@9708 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
44bef28048
commit
1fdbd55957
Binary file not shown.
@ -24,11 +24,11 @@ IMPORT
|
||||
U := Utils, Lines, Menu, List,
|
||||
G := Graph, T := Text, E := Encodings,
|
||||
CB := Clipboard, Languages,
|
||||
ChangeLog, Scroll, CheckBox, KOSAPI, SYSTEM,
|
||||
ChangeLog, Scroll, CheckBox,
|
||||
RW, Ini, EB := EditBox, Tabs, Toolbar, SB := StatusBar;
|
||||
|
||||
CONST
|
||||
HEADER = "CEdit (28-jan-2022)";
|
||||
HEADER = "CEdit (09-feb-2022)";
|
||||
|
||||
ShellFilter = "";
|
||||
EditFilter = "SH|INC|TXT|ASM|OB07|C|CPP|H|PAS|PP|LUA|INI|JSON";
|
||||
@ -124,7 +124,7 @@ CONST
|
||||
menuUTF8BOM = 60;
|
||||
menuUTF8 = 61;
|
||||
menuCP866 = 62;
|
||||
menuWin1251 = 63;
|
||||
menuCP1251 = 63;
|
||||
menuEOL = 140;
|
||||
menuConv1251_866 = 64;
|
||||
menuConv866_1251 = 65;
|
||||
@ -1045,7 +1045,7 @@ BEGIN
|
||||
Menu.option(menu, menuUTF8BOM, T.getEnc(text) = E.UTF8BOM);
|
||||
Menu.option(menu, menuUTF8, T.getEnc(text) = E.UTF8);
|
||||
Menu.option(menu, menuCP866, T.getEnc(text) = E.CP866);
|
||||
Menu.option(menu, menuWin1251, T.getEnc(text) = E.W1251)
|
||||
Menu.option(menu, menuCP1251, T.getEnc(text) = E.CP1251)
|
||||
ELSIF menu = menuView THEN
|
||||
Menu.option(menu, menuFontSmall, font = G.fonts[0]);
|
||||
Menu.option(menu, menuFontMedium, font = G.fonts[1]);
|
||||
@ -1271,8 +1271,8 @@ BEGIN
|
||||
T.setEnc(text, E.UTF8)
|
||||
|menuCP866:
|
||||
T.setEnc(text, E.CP866)
|
||||
|menuWin1251:
|
||||
T.setEnc(text, E.W1251)
|
||||
|menuCP1251:
|
||||
T.setEnc(text, E.CP1251)
|
||||
|menuLF:
|
||||
T.setEol(text, E.EOL_LF)
|
||||
|menuCRLF:
|
||||
@ -1280,9 +1280,9 @@ BEGIN
|
||||
|menuCR:
|
||||
T.setEol(text, E.EOL_CR)
|
||||
|menuConv1251_866:
|
||||
T.convert(text, E.cp866, E.W1251)
|
||||
T.convert(text, (*E.cp866,*) E.CP1251)
|
||||
|menuConv866_1251:
|
||||
T.convert(text, E.cp1251, E.CP866)
|
||||
T.convert(text, (*E.cp1251,*) E.CP866)
|
||||
|menuPipet:
|
||||
K.Run("/sys/develop/pipet", "")
|
||||
|menuMagnify:
|
||||
@ -1413,7 +1413,7 @@ BEGIN
|
||||
Menu.AddMenuItem(menu, menuUTF8BOM, E.names[E.UTF8BOM]);
|
||||
Menu.AddMenuItem(menu, menuUTF8, E.names[E.UTF8]);
|
||||
Menu.AddMenuItem(menu, menuCP866, E.names[E.CP866]);
|
||||
Menu.AddMenuItem(menu, menuWin1251, E.names[E.W1251]);
|
||||
Menu.AddMenuItem(menu, menuCP1251, E.names[E.CP1251]);
|
||||
Menu.delimiter(menu);
|
||||
Menu.AddMenuItem(menu, menuEOL, "EOL");
|
||||
Menu.child(menu, subEOL);
|
||||
@ -2022,47 +2022,6 @@ BEGIN
|
||||
END ScrollChange;
|
||||
|
||||
|
||||
PROCEDURE docpack (VAR param: RW.tFileName);
|
||||
VAR
|
||||
i, size, errno: INTEGER;
|
||||
ptr, ptr2: INTEGER;
|
||||
s: ARRAY 32 OF WCHAR;
|
||||
BEGIN
|
||||
U.reverse8(param);
|
||||
param[LENGTH(param) - 1] := 0X;
|
||||
U.reverse8(param);
|
||||
i := 0;
|
||||
WHILE param[i] # 0X DO
|
||||
s[i] := WCHR(ORD(param[i]));
|
||||
INC(i)
|
||||
END;
|
||||
IF U.str2int(s, size) THEN
|
||||
INC(size, 20);
|
||||
ptr := KOSAPI.malloc(size);
|
||||
IF ptr # 0 THEN
|
||||
SYSTEM.PUT32(ptr, 0);
|
||||
SYSTEM.PUT32(ptr + 4, 8);
|
||||
KOSAPI.sysfunc4(60, 1, ptr, size);
|
||||
K.SetEventsMask({6});
|
||||
IF K.EventTimeout(200) = 7 THEN
|
||||
SYSTEM.PUT32(ptr, 1);
|
||||
SYSTEM.GET(ptr + 12, size);
|
||||
ptr2 := KOSAPI.malloc(size);
|
||||
IF ptr2 # 0 THEN
|
||||
SYSTEM.MOVE(ptr + 16, ptr2, size);
|
||||
text := T.open("", ptr2, size, errno);
|
||||
IF text # NIL THEN
|
||||
insert(0, text);
|
||||
T.SetPos(text, 0, 0)
|
||||
END
|
||||
END
|
||||
END;
|
||||
ptr := KOSAPI.free(ptr)
|
||||
END
|
||||
END
|
||||
END docpack;
|
||||
|
||||
|
||||
PROCEDURE main;
|
||||
VAR
|
||||
fileName, filePath: RW.tFileName;
|
||||
@ -2070,6 +2029,7 @@ VAR
|
||||
resized: BOOLEAN;
|
||||
firstClickX, firstClickY, time, blink, i: INTEGER;
|
||||
key, scr: INTEGER;
|
||||
text_ptr, text_size, errno: INTEGER;
|
||||
BEGIN
|
||||
header := "";
|
||||
K.GetSystemColors;
|
||||
@ -2170,7 +2130,14 @@ BEGIN
|
||||
U.getPath(fileName, filePath)
|
||||
END
|
||||
ELSE
|
||||
docpack(fileName)
|
||||
K.docpack(fileName, text_ptr, text_size);
|
||||
IF text_ptr # 0 THEN
|
||||
text := T.open("", text_ptr, text_size, errno);
|
||||
IF text # NIL THEN
|
||||
insert(0, text);
|
||||
T.SetPos(text, 0, 0)
|
||||
END
|
||||
END
|
||||
END
|
||||
END;
|
||||
IF textsCount = 0 THEN
|
||||
|
@ -20,7 +20,7 @@
|
||||
MODULE Encodings;
|
||||
|
||||
CONST
|
||||
CP866* = 0; W1251* = 1; UTF8* = 2; UTF8BOM* = 3; (*UTF16LE* = 4;*)
|
||||
CP866* = 0; CP1251* = 1; UTF8* = 2; UTF8BOM* = 3; (*UTF16LE* = 4;*)
|
||||
|
||||
UNDEF* = -1;
|
||||
|
||||
@ -64,7 +64,7 @@ BEGIN
|
||||
END Init8;
|
||||
|
||||
|
||||
PROCEDURE InitW1251 (VAR cp: CP);
|
||||
PROCEDURE InitCP1251 (VAR cp: CP);
|
||||
VAR
|
||||
n, i: INTEGER;
|
||||
BEGIN
|
||||
@ -81,7 +81,7 @@ BEGIN
|
||||
Init8(cp, n, 0401H, 00A9H, 0404H, 00ABH, 00ACH, 00ADH, 00AEH, 0407H);
|
||||
Init8(cp, n, 00B0H, 00B1H, 0406H, 0456H, 0491H, 00B5H, 00B6H, 00B7H);
|
||||
Init8(cp, n, 0451H, 2116H, 0454H, 00BBH, 0458H, 0405H, 0455H, 0457H);
|
||||
END InitW1251;
|
||||
END InitCP1251;
|
||||
|
||||
|
||||
PROCEDURE InitCP866 (VAR cp: CP);
|
||||
@ -113,12 +113,12 @@ VAR
|
||||
i: INTEGER;
|
||||
BEGIN
|
||||
FOR i := 0 TO 65535 DO
|
||||
UNI[i, CP866] := UNDEF;
|
||||
UNI[i, W1251] := UNDEF
|
||||
UNI[i, CP866] := UNDEF;
|
||||
UNI[i, CP1251] := UNDEF
|
||||
END;
|
||||
FOR i := 0 TO 255 DO
|
||||
IF cp1251[i] # UNDEF THEN
|
||||
UNI[cp1251[i], W1251] := i
|
||||
UNI[cp1251[i], CP1251] := i
|
||||
END;
|
||||
IF cp866[i] # UNDEF THEN
|
||||
UNI[cp866[i], CP866] := i
|
||||
@ -135,10 +135,10 @@ BEGIN
|
||||
eolNames[EOL_LF] := "LF";
|
||||
eolNames[EOL_CR] := "CR";
|
||||
names[CP866] := "CP866";
|
||||
names[W1251] := "Windows-1251";
|
||||
names[CP1251] := "CP1251";
|
||||
names[UTF8] := "UTF-8";
|
||||
names[UTF8BOM] := "UTF-8-BOM";
|
||||
InitW1251(cp1251);
|
||||
InitCP1251(cp1251);
|
||||
InitCP866(cp866);
|
||||
setUNI
|
||||
END Encodings.
|
@ -20,7 +20,7 @@
|
||||
MODULE KolibriOS;
|
||||
|
||||
IMPORT
|
||||
KOSAPI, SYSTEM;
|
||||
KOSAPI, SYSTEM, U := Utils;
|
||||
|
||||
CONST
|
||||
fontWidth* = 8;
|
||||
@ -393,6 +393,44 @@ BEGIN
|
||||
END PutPixel;
|
||||
|
||||
|
||||
PROCEDURE docpack* (VAR param: ARRAY OF CHAR; VAR text_ptr, text_size: INTEGER);
|
||||
VAR
|
||||
i, size, ptr, ptr2: INTEGER;
|
||||
s: ARRAY 32 OF WCHAR;
|
||||
BEGIN
|
||||
ptr2 := 0;
|
||||
U.reverse8(param);
|
||||
param[LENGTH(param) - 1] := 0X;
|
||||
U.reverse8(param);
|
||||
i := 0;
|
||||
WHILE param[i] # 0X DO
|
||||
s[i] := WCHR(ORD(param[i]));
|
||||
INC(i)
|
||||
END;
|
||||
IF U.str2int(s, size) THEN
|
||||
INC(size, 20);
|
||||
ptr := KOSAPI.malloc(size);
|
||||
IF ptr # 0 THEN
|
||||
SYSTEM.PUT32(ptr, 0);
|
||||
SYSTEM.PUT32(ptr + 4, 8);
|
||||
KOSAPI.sysfunc4(60, 1, ptr, size);
|
||||
SetEventsMask({6});
|
||||
IF EventTimeout(200) = 7 THEN
|
||||
SYSTEM.PUT32(ptr, 1);
|
||||
SYSTEM.GET(ptr + 12, size);
|
||||
ptr2 := KOSAPI.malloc(size);
|
||||
IF ptr2 # 0 THEN
|
||||
SYSTEM.MOVE(ptr + 16, ptr2, size)
|
||||
END
|
||||
END;
|
||||
ptr := KOSAPI.free(ptr)
|
||||
END
|
||||
END;
|
||||
text_ptr := ptr2;
|
||||
text_size := size
|
||||
END docpack;
|
||||
|
||||
|
||||
BEGIN
|
||||
GetSystemColors
|
||||
END KolibriOS.
|
@ -143,9 +143,9 @@ BEGIN
|
||||
END getCharUTF8;
|
||||
|
||||
|
||||
PROCEDURE getCharW1251 (file: tInput): INTEGER;
|
||||
PROCEDURE getCharCP1251 (file: tInput): INTEGER;
|
||||
RETURN E.cp1251[getByte(file)]
|
||||
END getCharW1251;
|
||||
END getCharCP1251;
|
||||
|
||||
|
||||
PROCEDURE getCharCP866 (file: tInput): INTEGER;
|
||||
@ -224,7 +224,7 @@ VAR
|
||||
pos, cnt, res: INTEGER;
|
||||
continue, bom: BOOLEAN;
|
||||
b: BYTE;
|
||||
cp866, w1251: INTEGER;
|
||||
cp866, cp1251: INTEGER;
|
||||
BEGIN
|
||||
pos := text.pos;
|
||||
cnt := text.cnt;
|
||||
@ -257,20 +257,20 @@ BEGIN
|
||||
ELSE
|
||||
text.cnt := cnt;
|
||||
text.pos := pos;
|
||||
cp866 := 0;
|
||||
w1251 := 0;
|
||||
cp866 := 0;
|
||||
cp1251 := 0;
|
||||
WHILE text.cnt > 0 DO
|
||||
b := getByte(text);
|
||||
IF b > 127 THEN
|
||||
IF b >= 192 THEN
|
||||
INC(w1251)
|
||||
INC(cp1251)
|
||||
ELSE
|
||||
INC(cp866)
|
||||
END
|
||||
END
|
||||
END;
|
||||
IF w1251 > cp866 THEN
|
||||
res := E.W1251
|
||||
IF cp1251 > cp866 THEN
|
||||
res := E.CP1251
|
||||
ELSE
|
||||
res := E.CP866
|
||||
END
|
||||
@ -363,12 +363,12 @@ BEGIN
|
||||
res.getChar := getCharUTF8
|
||||
ELSIF enc = E.CP866 THEN
|
||||
res.getChar := getCharCP866
|
||||
ELSIF enc = E.W1251 THEN
|
||||
ELSIF enc = E.CP1251 THEN
|
||||
IF cp866 THEN
|
||||
enc := E.CP866;
|
||||
res.getChar := getCharCP866
|
||||
ELSE
|
||||
res.getChar := getCharW1251
|
||||
res.getChar := getCharCP1251
|
||||
END
|
||||
END;
|
||||
eol := detectEOL(res);
|
||||
@ -488,10 +488,10 @@ BEGIN
|
||||
END putCharCP;
|
||||
|
||||
|
||||
PROCEDURE putCharW1251 (file: tOutput; code: INTEGER);
|
||||
PROCEDURE putCharCP1251 (file: tOutput; code: INTEGER);
|
||||
BEGIN
|
||||
putCharCP(file, code, E.W1251)
|
||||
END putCharW1251;
|
||||
putCharCP(file, code, E.CP1251)
|
||||
END putCharCP1251;
|
||||
|
||||
|
||||
PROCEDURE putCharCP866 (file: tOutput; code: INTEGER);
|
||||
@ -544,8 +544,8 @@ BEGIN
|
||||
res.putChar := putCharUTF8
|
||||
(*ELSIF enc = E.UTF16LE THEN
|
||||
res.putChar := putCharUTF16LE*)
|
||||
ELSIF enc = E.W1251 THEN
|
||||
res.putChar := putCharW1251
|
||||
ELSIF enc = E.CP1251 THEN
|
||||
res.putChar := putCharCP1251
|
||||
ELSIF enc = E.CP866 THEN
|
||||
res.putChar := putCharCP866
|
||||
END;
|
||||
|
@ -2734,15 +2734,17 @@ BEGIN
|
||||
ELSE
|
||||
code := ORD(c)
|
||||
END;
|
||||
res := WCHR(code) # c;
|
||||
c := WCHR(code)
|
||||
IF code # ORD(c) THEN
|
||||
c := WCHR(code);
|
||||
res := TRUE
|
||||
END
|
||||
END
|
||||
RETURN res
|
||||
END conv;
|
||||
|
||||
|
||||
PROCEDURE conv1251to866 (VAR c: WCHAR): BOOLEAN;
|
||||
RETURN conv(c, E.cp866, E.W1251)
|
||||
RETURN conv(c, E.cp866, E.CP1251)
|
||||
END conv1251to866;
|
||||
|
||||
|
||||
@ -2751,7 +2753,7 @@ PROCEDURE conv866to1251 (VAR c: WCHAR): BOOLEAN;
|
||||
END conv866to1251;
|
||||
|
||||
|
||||
PROCEDURE convert* (text: tText; cp: E.CP; enc: INTEGER);
|
||||
PROCEDURE convert* (text: tText; (*cp: E.CP;*) enc: INTEGER);
|
||||
VAR
|
||||
line: tLine;
|
||||
func: Lines.fConvert;
|
||||
@ -2761,7 +2763,7 @@ BEGIN
|
||||
line := text.first(tLine);
|
||||
IF enc = E.CP866 THEN
|
||||
func := conv866to1251
|
||||
ELSIF enc = E.W1251 THEN
|
||||
ELSIF enc = E.CP1251 THEN
|
||||
func := conv1251to866
|
||||
ELSE
|
||||
line := NIL
|
||||
|
Loading…
Reference in New Issue
Block a user