/programs/develop/cedit/CEDIT |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/programs/develop/cedit/SRC/CEdit.ob07 |
---|
28,10 → 28,10 |
RW, Ini, EB := EditBox, Icons, Tabs, Timer; |
CONST |
header = "CEdit (28-sep-2021)"; |
HEADER = "CEdit (03-oct-2021)"; |
ShellFilter = ""; |
EditFilter = "SH|ASM|TXT|INC|OB07|C|CPP|H|PAS|PP|LUA|INI|JSON"; |
EditFilter = "SH|INC|TXT|ASM|OB07|C|CPP|H|PAS|PP|LUA|INI|JSON"; |
fontWidth = K.fontWidth; |
fontHeight = K.fontHeight; |
51,14 → 51,14 |
btnYes = 40; |
btnNo = 41; |
btnFindNext = 60; |
btnReplace = 61; |
btnReplaceAll = 62; |
btnGoto = 63; |
btnCloseSearch = 64; |
btnHideSearch = 65; |
btnFindNext = 42; |
btnReplace = 43; |
btnReplaceAll = 44; |
btnGoto = 45; |
btnCloseSearch = 46; |
btnHideSearch = 47; |
mainMenuBtn = 70; |
mainMenuBtn = 60; |
btnHeight = 25; |
btnWidth = 75; |
184,10 → 184,10 |
switch, closing: BOOLEAN; |
leftButton: BOOLEAN; |
hScroll, vScroll: Scroll.tScroll; |
LEFT: INTEGER; |
FindEdit, ReplaceEdit, GotoEdit: EB.tEditBox; |
hScroll, vScroll: Scroll.tScroll; |
CS, WH, BKW: CheckBox.tCheckBox; |
new_searchText, searchText, replaceText, gotoText: T.tString; |
226,14 → 226,7 |
PROCEDURE EditBox_Focus (edit: EB.tEditBox): BOOLEAN; |
VAR |
res: BOOLEAN; |
BEGIN |
res := FALSE; |
IF edit # NIL THEN |
res := 1 IN edit.flags |
END |
RETURN res |
RETURN 1 IN edit.flags |
END EditBox_Focus; |
249,7 → 242,7 |
END resetTimer; |
PROCEDURE EditBox_SetFocus (edit: EB.tEditBox; value: BOOLEAN); |
PROCEDURE EditBox_SetFocus (VAR edit: EB.tEditBox; value: BOOLEAN); |
BEGIN |
IF value THEN |
INCL(edit.flags, 1) |
262,7 → 255,7 |
END EditBox_SetFocus; |
PROCEDURE SetFocus (edit: EB.tEditBox; value: BOOLEAN); |
PROCEDURE SetFocus (VAR edit: EB.tEditBox; value: BOOLEAN); |
BEGIN |
EditBox_SetFocus(FindEdit, FALSE); |
EditBox_SetFocus(ReplaceEdit, FALSE); |
413,17 → 406,21 |
VAR |
y: INTEGER; |
s: ARRAY 24 OF WCHAR; |
header: RW.tFileName; |
BEGIN |
y := (btnHeight - fontHeight) DIV 2 + btnTop; |
s := ""; |
U.append(s, RW.eolNames[text.eol]); |
U.append(s, 20X); |
U.append(s, 20X + 20X); |
U.append(s, E.names[text.enc]); |
K.DrawRect(width - LEN(s)*fontWidth, y, LEN(s)*fontWidth, fontHeight, K.winColor); |
K.DrawText(width - LENGTH(s)*fontWidth, y, K.textColor, s); |
header := HEADER; |
IF text.fileName # "" THEN |
U.append8(header, " - "); |
U.append8(header, text.fileName) |
END; |
K.SetCaption(header); |
K.DrawRect(LEFT + 16*fontWidth, TOP + canvas.height + scrollWidth, width - (LEFT + 16*fontWidth), BOTTOM - scrollWidth + 1, K.winColor); |
y := height - (BOTTOM - scrollWidth) + (BOTTOM - scrollWidth - 16) DIV 2; |
K.DrawRect(LEFT + 16*fontWidth, TOP + canvas.height + scrollWidth, width - LEFT - 24*fontWidth, BOTTOM - scrollWidth + 1, K.winColor); |
K.DrawText866(LEFT + 16*fontWidth, y, K.textColor, text.fileName); |
K.DrawText(width - (LENGTH(s) + 10)*fontWidth, y, K.textColor, s); |
WriteModified(width - 8*fontWidth, y) |
END DrawState; |
576,7 → 573,7 |
BEGIN |
K.BeginDraw; |
K.CreateWindow(30 + K.GetTickCount() MOD 128, 30 + K.GetTickCount() MOD 128, winWidth, winHeight, K.winColor, 73H, 0, 0, header); |
K.CreateWindow(30 + K.GetTickCount() MOD 128, 30 + K.GetTickCount() MOD 128, winWidth, winHeight, K.winColor, 73H, 0, 0, ""); |
IF (text # NIL) & ~K.RolledUp() THEN |
IF confirm THEN |
resetTimer |
698,16 → 695,7 |
U.getFileName(text.fileName, OD.FileName, U.SLASH); |
IF OD.FileName = "" THEN |
OD.FileName := "NewFile."; |
CASE text.lang OF |
|Languages.langText: ext := "txt" |
|Languages.langC: ext := "c" |
|Languages.langFasm: ext := "asm" |
|Languages.langIni: ext := "ini" |
|Languages.langJSON: ext := "json" |
|Languages.langLua: ext := "lua" |
|Languages.langOberon: ext := "ob07" |
|Languages.langPascal: ext := "pas" |
END; |
Languages.getExt(text.lang, ext); |
U.append8(OD.FileName, ext) |
END; |
OpenFile(fileName, EditFilter); |
923,26 → 911,11 |
END open; |
PROCEDURE createEdit (left, top: INTEGER): EB.tEditBox; |
VAR |
edit, EditBox0: EB.tEditBox; |
BEGIN |
NEW(EditBox0); |
EditBox0.text := K.malloc(EDITBOX_MAXCHARS + 2); |
ASSERT(EditBox0.text # 0); |
edit := EB.create(left, top, EditBox_Width, EDITBOX_MAXCHARS, EditBox0); |
edit.flags := {1, 14}; |
edit.text_color := 30000000H; |
EditBox_SetFocus(edit, FALSE) |
RETURN edit |
END createEdit; |
PROCEDURE createSearchForm; |
BEGIN |
FindEdit := createEdit(searchLeft, TOP + 20); |
ReplaceEdit := createEdit(searchLeft, TOP + 20 + 55); |
GotoEdit := createEdit(searchLeft, TOP + 20 + 330); |
EB.create(searchLeft, TOP + 20, EditBox_Width, EDITBOX_MAXCHARS, FindEdit); |
EB.create(searchLeft, TOP + 20 + 55, EditBox_Width, EDITBOX_MAXCHARS, ReplaceEdit); |
EB.create(searchLeft, TOP + 20 + 330, EditBox_Width, EDITBOX_MAXCHARS, GotoEdit); |
INCL(GotoEdit.flags, 15); |
CheckBox.create("backward", BKW); |
CheckBox.create("match case", CS); |
1041,8 → 1014,12 |
PROCEDURE MenuItemClick (menu: Menu.tMenu; id: INTEGER); |
VAR |
msg: ARRAY 2 OF INTEGER; |
BEGIN |
K.SendIPC(mainTID, id) |
msg[0] := id; |
msg[1] := 8; |
K.SendIPC(mainTID, msg) |
END MenuItemClick; |
1940,9 → 1917,10 |
VAR |
msState: SET; |
scroll, x, y, scrollX, scrollY: INTEGER; |
pos1, pos2: T.tPoint; |
PROCEDURE EditBox (eb: EB.tEditBox); |
PROCEDURE EditBox (VAR eb: EB.tEditBox); |
VAR |
focus: BOOLEAN; |
BEGIN |
1969,10 → 1947,14 |
END; |
IF leftButton THEN |
IF K.GetTickCount() - time >= DELAY THEN |
T.getPos(text, pos1.Y, pos1.X); |
mouse(x, y); |
T.mouse(text, x, y); |
T.getPos(text, pos2.Y, pos2.X); |
IF (pos1.X # pos2.X) OR (pos1.Y # pos2.Y) THEN |
repaint |
END |
END |
END; |
Scroll.mouse(hScroll); |
/programs/develop/cedit/SRC/EditBox.ob07 |
---|
28,7 → 28,7 |
TYPE |
tEditBox* = POINTER TO RECORD |
tEditBox* = RECORD |
width*, |
left*, |
top*, |
39,7 → 39,7 |
text_color*, |
max: INTEGER; |
text*: INTEGER; |
mouse_variable: tEditBox; |
mouse_variable: INTEGER; |
flags*: SET; |
size, |
110,28 → 110,21 |
END setValue; |
PROCEDURE create* (tlx, tly, width, max_chars: INTEGER; editbox_interlock: tEditBox): tEditBox; |
VAR |
new_textbox: tEditBox; |
PROCEDURE create* (tlx, tly, width, max_chars: INTEGER; VAR editbox: tEditBox); |
BEGIN |
NEW(new_textbox); |
new_textbox.width := width; |
new_textbox.left := tlx; |
new_textbox.top := tly; |
new_textbox.color := 0FFFFFFH; |
new_textbox.shift_color := 06A9480H; |
new_textbox.focus_border_color := 0; |
new_textbox.blur_border_color := 06A9480H; |
new_textbox.text_color := 0; |
new_textbox.max := max_chars; |
new_textbox.text := KOSAPI.malloc(max_chars + 2); |
ASSERT(new_textbox.text # 0); |
new_textbox.mouse_variable := editbox_interlock; |
new_textbox.flags := {} |
RETURN new_textbox |
editbox.width := width; |
editbox.left := tlx; |
editbox.top := tly; |
editbox.color := 0FFFFFFH; |
editbox.shift_color := 06A9480H; |
editbox.focus_border_color := 0; |
editbox.blur_border_color := 06A9480H; |
editbox.text_color := 30000000H; |
editbox.max := max_chars; |
editbox.text := KOSAPI.malloc(max_chars + 2); |
ASSERT(editbox.text # 0); |
editbox.mouse_variable := 0; |
editbox.flags := {14} |
END create; |
/programs/develop/cedit/SRC/KolibriOS.ob07 |
---|
233,7 → 233,14 |
PROCEDURE CreateThread* (proc: INTEGER; stack: ARRAY OF INTEGER): INTEGER; |
RETURN KOSAPI.sysfunc4(51, 1, proc, SYSTEM.ADR(stack[LEN(stack) - 2])) |
VAR |
tid: INTEGER; |
BEGIN |
tid := KOSAPI.sysfunc4(51, 1, proc, SYSTEM.ADR(stack[LEN(stack) - 2])); |
IF tid = -1 THEN |
tid := 0 |
END |
RETURN tid |
END CreateThread; |
323,18 → 330,12 |
END SetIPC; |
PROCEDURE SendIPC* (tid, msg: INTEGER); |
PROCEDURE SendIPC* (tid: INTEGER; msg: ARRAY OF INTEGER); |
BEGIN |
KOSAPI.sysfunc5(60, 2, tid, SYSTEM.ADR(msg), SYSTEM.SIZE(INTEGER)) |
KOSAPI.sysfunc5(60, 2, tid, SYSTEM.ADR(msg[0]), SYSTEM.SIZE(INTEGER)*LEN(msg)) |
END SendIPC; |
PROCEDURE PutPixel* (x, y, color: INTEGER); |
BEGIN |
KOSAPI.sysfunc4(1, x, y, color) |
END PutPixel; |
PROCEDURE GetSystemColors*; |
VAR |
buf: ARRAY 10 OF INTEGER; |
384,4 → 385,10 |
END mouse; |
PROCEDURE SetCaption* (text: ARRAY OF CHAR); |
BEGIN |
KOSAPI.sysfunc4(71, 2, SYSTEM.ADR(text[0]), 0) |
END SetCaption; |
END KolibriOS. |
/programs/develop/cedit/SRC/Languages.ob07 |
---|
19,7 → 19,7 |
MODULE Languages; |
IMPORT Lines; |
IMPORT Lines, Utils; |
CONST |
49,7 → 49,9 |
currentLang: INTEGER; |
fileExt: ARRAY 11 OF RECORD ext: ARRAY 8 OF CHAR; lang: INTEGER END; |
PROCEDURE isCS* (lang: INTEGER): BOOLEAN; |
RETURN lang IN csLang |
END isCS; |
395,6 → 397,36 |
END setCurLang; |
PROCEDURE getLang* (ext: ARRAY OF CHAR): INTEGER; |
VAR |
i: INTEGER; |
BEGIN |
i := 0; |
WHILE (i < LEN(fileExt)) & (fileExt[i].ext # ext) DO |
INC(i) |
END; |
IF i < LEN(fileExt) THEN |
i := fileExt[i].lang |
ELSE |
i := langText |
END |
RETURN i |
END getLang; |
PROCEDURE getExt* (lang: INTEGER; VAR ext: ARRAY OF CHAR); |
VAR |
i: INTEGER; |
BEGIN |
i := 0; |
WHILE fileExt[i].lang # lang DO |
INC(i) |
END; |
COPY(fileExt[i].ext, ext); |
Utils.lowcase(ext) |
END getExt; |
PROCEDURE init* (getStr: procGetStr); |
BEGIN |
currentLang := langText; |
406,6 → 438,18 |
loadKW(KW[langIni], Delim[langIni], getStr, "lang_Ini"); |
loadKW(KW[langFasm], Delim[langFasm], getStr, "lang_Fasm"); |
loadKW(KW[langJSON], Delim[langJSON], getStr, "lang_JSON"); |
fileExt[ 0].ext := "OB07"; fileExt[ 0].lang := langOberon; |
fileExt[ 1].ext := "C"; fileExt[ 1].lang := langC; |
fileExt[ 2].ext := "H"; fileExt[ 2].lang := langC; |
fileExt[ 3].ext := "CPP"; fileExt[ 3].lang := langC; |
fileExt[ 4].ext := "PAS"; fileExt[ 4].lang := langPascal; |
fileExt[ 5].ext := "PP"; fileExt[ 5].lang := langPascal; |
fileExt[ 6].ext := "ASM"; fileExt[ 6].lang := langFasm; |
fileExt[ 7].ext := "LUA"; fileExt[ 7].lang := langLua; |
fileExt[ 8].ext := "INI"; fileExt[ 8].lang := langIni; |
fileExt[ 9].ext := "JSON"; fileExt[ 9].lang := langJSON; |
fileExt[10].ext := "TXT"; fileExt[10].lang := langText; |
END init; |
/programs/develop/cedit/SRC/Text.ob07 |
---|
46,8 → 46,8 |
TYPE |
tPoint = RECORD |
X, Y: INTEGER |
tPoint* = RECORD |
X*, Y*: INTEGER |
END; |
pPoint = POINTER TO tPoint; |
67,15 → 67,12 |
scroll: tPoint; |
CurX: INTEGER; |
modified*: BOOLEAN; |
edition*: tGuard; |
comments, numbers*, guard, |
search, cs, whole: BOOLEAN; |
curLine: tLine; |
fileName*: RW.tFileName; |
lang*: INTEGER; |
enc*: INTEGER; |
eol*: INTEGER; |
enc*, eol*: INTEGER; |
table: Search.IdxTable; |
foundList: List.tList; |
idxData: Search.tBuffer; |
82,7 → 79,8 |
foundSel: INTEGER; |
searchText: tString; |
chLog*: ChangeLog.tLog; |
maxLength*: INTEGER |
maxLength*: INTEGER; |
fileName*: RW.tFileName |
END; |
tProcedure = PROCEDURE; |
104,42 → 102,25 |
charWidth, charHeight: INTEGER; |
PROCEDURE setLang* (text: tText; lang: INTEGER); |
BEGIN |
text.lang := lang; |
text.comments := TRUE; |
Lang.setCurLang(text.lang) |
END setLang; |
PROCEDURE setName* (text: tText; name: RW.tFileName); |
VAR |
ext: RW.tFileName; |
BEGIN |
text.fileName := name; |
U.getFileName(text.fileName, ext, "."); |
U.getFileName(name, ext, "."); |
U.upcase(ext); |
IF ext = "OB07" THEN |
text.lang := Lang.langOberon |
ELSIF (ext = "C") OR (ext = "H") OR (ext = "CPP") THEN |
text.lang := Lang.langC |
ELSIF (ext = "PAS") OR (ext = "PP") THEN |
text.lang := Lang.langPascal |
ELSIF ext = "ASM" THEN |
text.lang := Lang.langFasm |
ELSIF ext = "LUA" THEN |
text.lang := Lang.langLua |
ELSIF ext = "INI" THEN |
text.lang := Lang.langIni |
ELSIF ext = "JSON" THEN |
text.lang := Lang.langJSON |
ELSE |
text.lang := Lang.langText |
END; |
Lang.setCurLang(text.lang) |
setLang(text, Lang.getLang(ext)) |
END setName; |
PROCEDURE setLang* (text: tText; lang: INTEGER); |
BEGIN |
text.lang := lang; |
text.comments := TRUE; |
Lang.setCurLang(text.lang) |
END setLang; |
PROCEDURE getPos* (text: tText; VAR x, y: INTEGER); |
BEGIN |
x := text.cursor.X + 1; |
518,7 → 499,7 |
ELSE |
cond := 0 |
END |
END; |
END |
ELSIF lang = Lang.langOberon THEN |
2089,7 → 2070,7 |
line := getLine(text, n); |
firstLine := line; |
cnt := 0; |
WHILE (line # NIL) & (cnt <= textsize.Y) DO |
WHILE (line # NIL) & (cnt < textsize.Y) DO |
backColor := colors.back; |
IF (line = text.curLine) & ~selected(text) THEN |
G.SetColor(canvas, colors.curline); |
2122,7 → 2103,7 |
line := firstLine; |
SetColor(colors.numtext, colors.numback); |
y := padding.top + inter DIV 2; |
n := MIN(text.scroll.Y + textsize.Y + 1, text.count); |
n := MIN(text.scroll.Y + textsize.Y, text.count); |
FOR i := text.scroll.Y + 1 TO n DO |
IF text.numbers THEN |
IF (i MOD 10 = 0) OR (i - 1 = text.cursor.Y) OR line.label THEN |
2147,7 → 2128,7 |
cnt := 0; |
line := firstLine; |
lastLine := line; |
WHILE (line # NIL) & (cnt <= textsize.Y) DO |
WHILE (line # NIL) & (cnt < textsize.Y) DO |
lastLine := line; |
NextLine(line); |
INC(cnt) |
/programs/develop/cedit/SRC/Timer.ob07 |
---|
50,7 → 50,7 |
IF enabled THEN |
DEC(cnt, step); |
IF cnt <= 0 THEN |
KOSAPI.sysfunc5(60, 2, mainTID, SYSTEM.ADR(msg[0]), msg[1]); |
K.SendIPC(mainTID, msg); |
cnt := time |
END |
END |
/programs/develop/cedit/SRC/Utils.ob07 |
---|
200,7 → 200,7 |
IF cap8(s[i]) THEN |
END; |
DEC(i) |
END; |
END |
END upcase; |
240,6 → 240,20 |
END low; |
PROCEDURE lowcase* (VAR s: ARRAY OF CHAR); |
VAR |
i: INTEGER; |
BEGIN |
i := LENGTH(s) - 1; |
WHILE i >= 0 DO |
IF ("A" <= s[i]) & (s[i] <= "Z") THEN |
s[i] := CHR(ORD(s[i]) + 32) |
END; |
DEC(i) |
END |
END lowcase; |
PROCEDURE str2int* (s: ARRAY OF WCHAR; VAR val: INTEGER): BOOLEAN; |
VAR |
i, temp: INTEGER; |
262,8 → 276,7 |
IF isDigit(s[i]) THEN |
REPEAT |
temp := temp * 10; |
temp := temp + (ORD(s[i]) - ORD("0")); |
temp := temp*10 + ORD(s[i]) - ORD("0"); |
INC(i) |
UNTIL ~isDigit(s[i]); |
IF neg THEN |
/programs/develop/cedit/SRC/scroll.ob07 |
---|
296,7 → 296,6 |
VAR |
c: INTEGER; |
BEGIN |
IF scroll.Slider # -1 THEN |
IF scroll.vertical THEN |
c := y - scroll.top |
ELSE |
304,13 → 303,16 |
END; |
setPos(scroll, scroll.pos0 + c - scroll.Slider); |
paint(scroll) |
END |
END MouseMove; |
PROCEDURE SendIPC; |
VAR |
msg: ARRAY 2 OF INTEGER; |
BEGIN |
K.SendIPC(K.ThreadID(), ScrollIPC) |
msg[0] := ScrollIPC; |
msg[1] := 8; |
K.SendIPC(K.ThreadID(), msg) |
END SendIPC; |
342,7 → 344,6 |
VAR |
c, size: INTEGER; |
BEGIN |
IF ~scroll.mouse THEN |
DEC(x, scroll.left); |
DEC(y, scroll.top); |
scroll.mouse := TRUE; |
370,7 → 371,6 |
paint(scroll) |
END |
END |
END |
END MouseDown; |
381,8 → 381,11 |
BEGIN |
K.mouse(msState, x, y); |
IF 0 IN msState THEN |
MouseDown(scroll, x, y); |
IF ~scroll.mouse THEN |
MouseDown(scroll, x, y) |
ELSIF scroll.Slider # -1 THEN |
MouseMove(scroll, x, y) |
END |
ELSIF scroll.mouse THEN |
MouseUp(scroll); |
paint(scroll) |