CEdit: new toolbar buttons design; refactoring

git-svn-id: svn://kolibrios.org@9522 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Anton Krotov
2021-12-29 15:38:29 +00:00
parent 336def41ce
commit 02272ecd2b
11 changed files with 303 additions and 222 deletions

View File

@@ -25,10 +25,10 @@ IMPORT
G := Graph, T := Text, E := Encodings,
CB := Clipboard, Languages,
ChangeLog, Scroll, CheckBox,
RW, Ini, EB := EditBox, Tabs, Toolbar;
RW, Ini, EB := EditBox, Tabs, Toolbar, SB := StatusBar;
CONST
HEADER = "CEdit (23-dec-2021)";
HEADER = "CEdit (29-dec-2021)";
ShellFilter = "";
EditFilter = "SH|INC|TXT|ASM|OB07|C|CPP|H|PAS|PP|LUA|INI|JSON";
@@ -182,8 +182,7 @@ VAR
winWidth, winHeight: INTEGER;
AppPath, runScript, buildScript, debugScript: RW.tFileName;
OD: OpenDlg.Dialog;
confirm, notFound, menuFindClicked, search, searchOpened, modified: BOOLEAN;
eol, enc: INTEGER;
confirm, notFound, menuFindClicked, search, searchOpened: BOOLEAN;
switch, closing: BOOLEAN;
leftButton: BOOLEAN;
@@ -216,33 +215,6 @@ VAR
timerEnabled: BOOLEAN;
PROCEDURE WritePos (y: INTEGER);
VAR
s1, s2, s3: ARRAY 32 OF WCHAR;
line, col, chars, lines: INTEGER;
BEGIN
T.getPos(text, col, line);
U.int2str(line, s1);
U.int2str(col, s2);
U.append(s1, ": ");
U.append(s1, s2);
IF T.selected(text) THEN
T.getSelCnt(text, chars, lines);
s3 := "sel: ";
U.int2str(chars, s2);
U.append(s3, s2);
U.append(s3, " | ");
U.int2str(lines, s2);
U.append(s3, s2)
ELSE
s3 := ""
END;
K.DrawRect(LEFT, TOP + canvas.height + scrollWidth, (16+24)*fontWidth, BOTTOM - scrollWidth + 1, K.winColor);
K.DrawText(LEFT, y, K.textColor, s1);
K.DrawText(LEFT + 16*fontWidth, y, K.textColor, s3)
END WritePos;
PROCEDURE EditBox_Focus (edit: EB.tEditBox): BOOLEAN;
RETURN 1 IN edit.flags
END EditBox_Focus;
@@ -356,13 +328,6 @@ BEGIN
END getIdx;
PROCEDURE MarkModified;
BEGIN
modified := text.modified;
Tabs.modify(tabs, getIdx(text), modified)
END MarkModified;
PROCEDURE SetCaption (fileName: RW.tFileName);
VAR
header: RW.tFileName;
@@ -376,23 +341,19 @@ BEGIN
END SetCaption;
PROCEDURE DrawState (text: T.tText; width, height: INTEGER);
PROCEDURE Status (text: T.tText; height: INTEGER);
VAR
y: INTEGER;
s: ARRAY 24 OF WCHAR;
line, col, chars, lines: INTEGER;
BEGIN
eol := T.getEol(text);
enc := T.getEnc(text);
s := "";
U.append(s, RW.eolNames[eol]);
U.append(s, 20X + 20X);
U.append(s, E.names[enc]);
SetCaption(text.fileName);
K.DrawRect(LEFT + (16+24)*fontWidth, TOP + canvas.height + scrollWidth, width - (LEFT + (16+24)*fontWidth), BOTTOM - scrollWidth + 1, K.winColor);
y := height - (BOTTOM - scrollWidth) + (BOTTOM - scrollWidth - 16) DIV 2;
K.DrawText(width - LENGTH(s)*fontWidth - (RIGHT_PADDING + 1), y, K.textColor, s);
MarkModified
END DrawState;
T.getPos(text, col, line);
T.getSelCnt(text, chars, lines);
SB.setWidth(canvas.width + scrollWidth);
SB.setPos(line, col);
SB.setSel(chars, lines);
SB.setEnc(RW.eolNames[T.getEol(text)], E.names[T.getEnc(text)]);
SB.draw(LEFT, height - BOTTOM + scrollWidth - 1);
Tabs.modify(tabs, getIdx(text), text.modified)
END Status;
PROCEDURE DrawScroll (VAR scroll: Scroll.tScroll; left, top, value, maxVal: INTEGER);
@@ -422,19 +383,13 @@ BEGIN
END;
K.ClientSize(width, height);
IF switch THEN
DrawState(text, width, height);
Status(text, height);
Tabs.draw(tabs);
IF search & T.search(text, searchText, cs, whole) THEN END;
switch := FALSE
END;
T.draw(text);
WritePos(height - (BOTTOM - scrollWidth) + (BOTTOM - scrollWidth - 16) DIV 2);
IF (enc # T.getEnc(text)) OR (eol # T.getEol(text)) THEN
DrawState(text, width, height)
ELSIF modified # text.modified THEN
MarkModified
END;
Status(text, height);
T.getScroll(text, scrollX, scrollY);
DrawScroll(vScroll, LEFT + canvas.width, TOP - 1, scrollY, text.count - 1);
@@ -487,13 +442,13 @@ END resize;
PROCEDURE SearchPanel (left, top: INTEGER);
VAR
y, right, bottom, color: INTEGER;
y, right, bottom: INTEGER;
BEGIN
DEC(top, Tabs.tabHeight);
right := left + EditBox_Width + SEARCH_PADDING*2;
bottom := top + 395 + btnHeight + SEARCH_PADDING;
color := K.borderColor;
Rect(left, top, right, bottom, color);
Rect(left, top, right, bottom, K.borderColor);
K.CreateButton(btnCloseSearch, right - 20, top, 20, 20, 0EF999FH, "");
K.DrawLine(right - 14, top + 5, right - 5, top + 14, 0FFFFFFH);
K.DrawLine(right - 15, top + 5, right - 5, top + 15, 0FFFFFFH);
@@ -537,7 +492,6 @@ END SearchPanel;
PROCEDURE draw_window;
VAR
width, height: INTEGER;
BEGIN
K.BeginDraw;
K.CreateWindow(30 + K.GetTickCount() MOD 128, 30 + K.GetTickCount() MOD 128, winWidth, winHeight, K.winColor, 73H, 0, 0, "");
@@ -555,8 +509,8 @@ BEGIN
Menu.DrawMain(mainMenu);
Toolbar.draw(toolbar);
DrawState(text, width, height);
SetCaption(text.fileName);
Status(text, height);
IF search & searchOpened THEN
SearchPanel(LEFT_PADDING, TOP)
END;
@@ -1998,7 +1952,6 @@ VAR
firstClickX, firstClickY, time: INTEGER;
BEGIN
K.GetSystemColors;
modified := FALSE;
switch := FALSE;
closing := FALSE;
textsCount := 0;
@@ -2058,7 +2011,7 @@ BEGIN
Menu.AddMainItem(mainMenu, "program", menuProgram);
Menu.AddMainItem(mainMenu, "tools", menuTools);
Toolbar.create(toolbar, LEFT_PADDING + 1, toolbarTop);
Toolbar.create(toolbar, LEFT_PADDING + 5, toolbarTop);
Toolbar.add(toolbar, btnNew, 2, "");
Toolbar.add(toolbar, btnOpen, 0, "");
Toolbar.add(toolbar, btnSave, 5, "");