diff --git a/programs/develop/cedit/CEDIT b/programs/develop/cedit/CEDIT index 1f98149b5..69e82803c 100644 Binary files a/programs/develop/cedit/CEDIT and b/programs/develop/cedit/CEDIT differ diff --git a/programs/develop/cedit/SRC/CEdit.ob07 b/programs/develop/cedit/SRC/CEdit.ob07 index 36c09beae..ea8979add 100644 --- a/programs/develop/cedit/SRC/CEdit.ob07 +++ b/programs/develop/cedit/SRC/CEdit.ob07 @@ -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 diff --git a/programs/develop/cedit/SRC/Encodings.ob07 b/programs/develop/cedit/SRC/Encodings.ob07 index 4505e50b2..fe2a472ce 100644 --- a/programs/develop/cedit/SRC/Encodings.ob07 +++ b/programs/develop/cedit/SRC/Encodings.ob07 @@ -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. \ No newline at end of file diff --git a/programs/develop/cedit/SRC/KolibriOS.ob07 b/programs/develop/cedit/SRC/KolibriOS.ob07 index 0d69f7aad..f02d6ccf2 100644 --- a/programs/develop/cedit/SRC/KolibriOS.ob07 +++ b/programs/develop/cedit/SRC/KolibriOS.ob07 @@ -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. \ No newline at end of file diff --git a/programs/develop/cedit/SRC/RW.ob07 b/programs/develop/cedit/SRC/RW.ob07 index d46a25719..8c6c1ff07 100644 --- a/programs/develop/cedit/SRC/RW.ob07 +++ b/programs/develop/cedit/SRC/RW.ob07 @@ -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; diff --git a/programs/develop/cedit/SRC/Text.ob07 b/programs/develop/cedit/SRC/Text.ob07 index 4de4c273e..e220304d3 100644 --- a/programs/develop/cedit/SRC/Text.ob07 +++ b/programs/develop/cedit/SRC/Text.ob07 @@ -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