From b67dfd8e5584c7a1310abc8666acd5565926c0ab Mon Sep 17 00:00:00 2001 From: Anton Krotov Date: Tue, 25 Jan 2022 21:57:14 +0000 Subject: [PATCH] CEdit: bug fixes; added "options" menu; saving settings git-svn-id: svn://kolibrios.org@9671 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/develop/cedit/CEDIT | Bin 31196 -> 31565 bytes programs/develop/cedit/CEDIT.INI | 8 +- programs/develop/cedit/SRC/CEdit.ob07 | 127 ++++++++++++---------- programs/develop/cedit/SRC/CheckBox.ob07 | 2 +- programs/develop/cedit/SRC/Graph.ob07 | 10 +- programs/develop/cedit/SRC/Ini.ob07 | 44 ++++++-- programs/develop/cedit/SRC/Languages.ob07 | 7 +- programs/develop/cedit/SRC/Menu.ob07 | 27 ++--- programs/develop/cedit/SRC/RW.ob07 | 6 +- programs/develop/cedit/SRC/StatusBar.ob07 | 2 +- programs/develop/cedit/SRC/Text.ob07 | 74 ++++++++++--- 11 files changed, 197 insertions(+), 110 deletions(-) diff --git a/programs/develop/cedit/CEDIT b/programs/develop/cedit/CEDIT index 0ef59a7338b762bbd34d14f3d2a2e672cd87a692..4b25bce6c4ef47845044b03beebd8de880934808 100644 GIT binary patch literal 31565 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 L94Q9y3jhEIKt`}p diff --git a/programs/develop/cedit/CEDIT.INI b/programs/develop/cedit/CEDIT.INI index 0115b8df3d..760a863335 100644 --- a/programs/develop/cedit/CEDIT.INI +++ b/programs/develop/cedit/CEDIT.INI @@ -1,6 +1,12 @@ [settings] tab=4 blink=70 +line_numbers=1 +auto_indents=1 +auto_brackets=0 +trim_space=1 +font=1 +theme=0 build= run= debug= @@ -77,7 +83,7 @@ KW3 = [lang_C] KW1 = auto,break,case,char,const,continue,default,do,double,else,enum,extern,float,for,goto,if,int,long,register,return,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile,while,dword,byte,bool,NULL -KW2 = define,error,include,elif,if,line,else,ifdef,pragma,endif,ifndef,undef +KW2 = #define,#error,#include,#elif,#if,#line,#else,#ifdef,#pragma,#endif,#ifndef,#undef KW3 = [lang_Lua] diff --git a/programs/develop/cedit/SRC/CEdit.ob07 b/programs/develop/cedit/SRC/CEdit.ob07 index 65f4e2e52e..855afc93d8 100644 --- a/programs/develop/cedit/SRC/CEdit.ob07 +++ b/programs/develop/cedit/SRC/CEdit.ob07 @@ -28,7 +28,7 @@ IMPORT RW, Ini, EB := EditBox, Tabs, Toolbar, SB := StatusBar; CONST - HEADER = "CEdit (25-jan-2022)"; + HEADER = "CEdit (26-jan-2022)"; ShellFilter = ""; EditFilter = "SH|INC|TXT|ASM|OB07|C|CPP|H|PAS|PP|LUA|INI|JSON"; @@ -76,15 +76,6 @@ CONST EditBox_Width = 180; EDITBOX_MAXCHARS = 500; - menuFileX = Menu.MainMenuX; - menuEditX = menuFileX + 4*fontWidth + 9; - menuSearchX = menuEditX + 4*fontWidth + 9; - menuEncodingX = menuSearchX + 6*fontWidth + 9; - menuViewX = menuEncodingX + 8*fontWidth + 9; - menuLanguageX = menuViewX + 4*fontWidth + 9; - menuProgramX = menuLanguageX + 8*fontWidth + 9; - menuToolsX = menuProgramX + 7*fontWidth + 9; - menuCut = 1; menuCopy = 2; menuPaste = 3; @@ -107,10 +98,9 @@ CONST menuClose = 16; menuExit = 17; - menuNumbers = 20; - menuFontSmall = 21; - menuFontMedium = 22; - menuFontBig = 23; + menuFontSmall = 20; + menuFontMedium = menuFontSmall + 1; + menuFontLarge = menuFontMedium + 1; menuColors = 1000; menuMaxColors = menuColors + Ini.MAX_SECTIONS - 1; @@ -147,6 +137,11 @@ CONST menuGoto = 83; menuBookmark = 130; + menuLineNumbers = 90; + menuAutoIndents = 91; + menuAutoBrackets = 92; + menuTrimSpace = 93; + menuMoveUp = 101; menuMoveDown = 102; menuDuplicate = 103; @@ -202,7 +197,7 @@ VAR replaced: INTEGER; context, menuFile, menuEdit, menuSearch, menuEncoding, - menuView, menuLanguage, menuProgram, menuTools, + menuView, menuLanguage, menuProgram, menuTools, menuOptions, subCurLine, subIndent, subCase, subBookmark, subEOL: Menu.tMenu; mainMenu: Menu.tMain; @@ -439,10 +434,10 @@ BEGIN K.SetWinSize(winWidth, winHeight); K.WinSize(winWidth, winHeight); K.ClientSize(cliWidth, cliHeight); - IF font # G.font2 THEN + IF font # G.fonts[2] THEN SB.SetFont(font) ELSE - SB.SetFont(G.font1) + SB.SetFont(G.fonts[1]) END; BOTTOM := SB.height() + scrollWidth - 1; G.destroy(canvas); @@ -929,6 +924,7 @@ BEGIN Menu.close(menuLanguage); Menu.close(menuProgram); Menu.close(menuTools); + Menu.close(menuOptions); Menu.close(context) END CloseMenu; @@ -1023,8 +1019,7 @@ BEGIN WHILE (i < textsCount) & ~texts[i].modified DO INC(i) END; - Menu.setEnabled(menu, menuSaveAll, i < textsCount); - INC(x, menuFileX) + Menu.setEnabled(menu, menuSaveAll, i < textsCount) ELSIF (menu = menuEdit) OR (menu = context) THEN Menu.setEnabled(menu, menuUndo, ~ChangeLog.isFirstGuard(text.edition)); Menu.setEnabled(menu, menuRedo, ~ChangeLog.isLastGuard(text.edition)); @@ -1032,32 +1027,29 @@ BEGIN Menu.setEnabled(menu, menuCopy, selected); Menu.setEnabled(menu, menuDelete, selected); Menu.setEnabled(menu, menuPaste, CB.available()); - IF menu = menuEdit THEN - INC(x, menuEditX) - ELSE + IF menu = context THEN IF y + menu.height >= canvas.height THEN DEC(y, menu.height) END; IF x + menu.width >= canvas.width THEN DEC(x, menu.width) END; - CanvasToScreen(x, y) + CanvasToScreen(x, y); + menu.x := x; + x := 0 END ELSIF menu = menuEncoding THEN 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); - INC(x, menuEncodingX) + Menu.option(menu, menuWin1251, T.getEnc(text) = E.W1251) ELSIF menu = menuView THEN - Menu.check(menu, menuNumbers, text.numbers); - Menu.option(menu, menuFontSmall, font = G.font0); - Menu.option(menu, menuFontMedium, font = G.font1); - Menu.option(menu, menuFontBig, font = G.font2); + Menu.option(menu, menuFontSmall, font = G.fonts[0]); + Menu.option(menu, menuFontMedium, font = G.fonts[1]); + Menu.option(menu, menuFontLarge, font = G.fonts[2]); FOR i := 0 TO Ini.sections.count - 1 DO Menu.option(menu, menuColors + i, Ini.curSectionNum = i) - END; - INC(x, menuViewX) + END ELSIF menu = menuLanguage THEN Menu.option(menu, menuText, text.lang = Languages.langText); Menu.option(menu, menuC, text.lang = Languages.langC); @@ -1067,16 +1059,15 @@ BEGIN Menu.option(menu, menuLua, text.lang = Languages.langLua); Menu.option(menu, menuOberon, text.lang = Languages.langOberon); Menu.option(menu, menuPascal, text.lang = Languages.langPascal); - INC(x, menuLanguageX) ELSIF menu = menuProgram THEN Menu.setEnabled(menu, menuBuild, buildScript # ""); Menu.setEnabled(menu, menuDebug, debugScript # ""); - Menu.setEnabled(menu, menuRun, runScript # ""); - INC(x, menuProgramX) - ELSIF menu = menuTools THEN - INC(x, menuToolsX) - ELSIF menu = menuSearch THEN - INC(x, menuSearchX) + Menu.setEnabled(menu, menuRun, runScript # "") + ELSIF menu = menuOptions THEN + Menu.check(menu, menuLineNumbers, T.lineNumbers); + Menu.check(menu, menuAutoIndents, T.autoIndents); + Menu.check(menu, menuAutoBrackets, T.autoBrackets); + Menu.check(menu, menuTrimSpace, T.trimSpace) END; enabled := search & (searchText # ""); @@ -1098,7 +1089,7 @@ BEGIN IF Menu.opened(menu) THEN Menu.close(menu) END; - Menu.open(menu, x, y); + Menu.open(menu, menu.x + x, y); menuActive := TRUE END END ShowMenu; @@ -1175,16 +1166,9 @@ BEGIN T.gotoLabel(text, TRUE) |menuPrevBookmark: T.gotoLabel(text, FALSE) - |menuNumbers: - T.toggleNumbers(text) - |menuFontSmall: - font := G.font0; - resize - |menuFontMedium: - font := G.font1; - resize - |menuFontBig: - font := G.font2; + |menuFontSmall..menuFontLarge: + font := G.fonts[Menu.MenuItem - menuFontSmall]; + Ini.setInt("settings", "font", Menu.MenuItem - menuFontSmall); resize |menuText: T.setLang(text, Languages.langText) @@ -1236,8 +1220,21 @@ BEGIN K.Run("/sys/develop/board", "") |menuSysFunc: K.Run("/sys/docpack", "f") + |menuLineNumbers: + T.toggleNumbers; + Ini.setInt("settings", "line_numbers", ORD(T.lineNumbers)) + |menuAutoIndents: + T.toggleIndents; + Ini.setInt("settings", "auto_indents", ORD(T.autoIndents)) + |menuAutoBrackets: + T.toggleBrackets; + Ini.setInt("settings", "auto_brackets", ORD(T.autoBrackets)) + |menuTrimSpace: + T.toggleTrimSpace; + Ini.setInt("settings", "trim_space", ORD(T.trimSpace)) |menuColors..menuMaxColors: - Ini.selectSection(Menu.MenuItem - menuColors) + Ini.selectSection(Menu.MenuItem - menuColors); + Ini.setInt("settings", "theme", Menu.MenuItem - menuColors) |menuMoveUp: T.MoveLines(text, FALSE) |menuMoveDown: @@ -1372,11 +1369,9 @@ VAR idx: INTEGER; BEGIN menu := List.create(NIL); - Menu.AddMenuItem(menu, menuNumbers, "line numbers"); - Menu.delimiter(menu); Menu.AddMenuItem(menu, menuFontSmall, "small"); Menu.AddMenuItem(menu, menuFontMedium, "medium"); - Menu.AddMenuItem(menu, menuFontBig, "big"); + Menu.AddMenuItem(menu, menuFontLarge, "large"); Menu.delimiter(menu); colors := Ini.sections.first(Ini.tSection); @@ -1439,6 +1434,19 @@ BEGIN END CreateMenuTools; +PROCEDURE CreateMenuOptions (): Menu.tMenu; +VAR + menu: List.tList; +BEGIN + menu := List.create(NIL); + Menu.AddMenuItem(menu, menuLineNumbers, "line numbers"); + Menu.AddMenuItem(menu, menuAutoIndents, "automatic indents"); + Menu.AddMenuItem(menu, menuAutoBrackets, "automatic brackets"); + Menu.AddMenuItem(menu, menuTrimSpace, "trim trailing space"); + RETURN Menu.create(menu) +END CreateMenuOptions; + + PROCEDURE CreateMenuCurLine(): Menu.tMenu; VAR menu: List.tList; @@ -1940,7 +1948,6 @@ VAR firstClickX, firstClickY, time, blink, i: INTEGER; key, scr: INTEGER; BEGIN - font := G.font1; header := ""; K.GetSystemColors; switch := FALSE; @@ -1949,6 +1956,10 @@ BEGIN curText := 0; Args.GetArg(0, AppPath); Ini.load(AppPath); + Ini.getSettings; + runScript := Ini.runScript; + buildScript := Ini.buildScript; + debugScript := Ini.debugScript; leftButton := FALSE; resized := FALSE; K.ScreenSize(winWidth, winHeight); @@ -1967,8 +1978,10 @@ BEGIN canvas := G.CreateCanvas(winWidth - (LEFT + RIGHT + 11 + RIGHT_PADDING), winHeight - (TOP + BOTTOM + 5) - SkinHeight); tabs := Tabs.create(); Tabs.setArea(tabs, LEFT, TOP - Tabs.tabHeight, canvas.width, Tabs.tabHeight); + font := G.fonts[Ini.font]; G.SetFont(canvas, font); - T.init(resetTimer); + T.init(resetTimer, Ini.lineNumbers, Ini.autoIndents, Ini.autoBrackets, Ini.trimSpace); + Ini.selectSection(Ini.theme); T.setCanvas(canvas); Menu.init(resetTimer); @@ -1991,6 +2004,7 @@ BEGIN menuLanguage := CreateMenuLanguage(); menuProgram := CreateMenuProgram(); menuTools := CreateMenuTools(); + menuOptions := CreateMenuOptions(); mainMenu := Menu.CreateMain(mainMenuBtn); Menu.AddMainItem(mainMenu, "file", menuFile); @@ -2001,6 +2015,7 @@ BEGIN Menu.AddMainItem(mainMenu, "language", menuLanguage); Menu.AddMainItem(mainMenu, "program", menuProgram); Menu.AddMainItem(mainMenu, "tools", menuTools); + Menu.AddMainItem(mainMenu, "options", menuOptions); Shortcuts; Toolbar.create(toolbar, LEFT_PADDING + 5, toolbarTop); @@ -2019,8 +2034,6 @@ BEGIN Toolbar.add(toolbar, btnBuild, 54, ""); Toolbar.add(toolbar, btnRun, 53, ""); - Ini.getSettings(buildScript, runScript, debugScript); - filePath := "/sys"; IF Args.argc = 1 THEN text := T.New(); diff --git a/programs/develop/cedit/SRC/CheckBox.ob07 b/programs/develop/cedit/SRC/CheckBox.ob07 index 84f884cd6a..1e8bff9741 100644 --- a/programs/develop/cedit/SRC/CheckBox.ob07 +++ b/programs/develop/cedit/SRC/CheckBox.ob07 @@ -82,7 +82,7 @@ BEGIN res.mouse := FALSE; COPY(text, res.text); res.canvas := G.CreateCanvas(fontHeight + padding + LENGTH(res.text)*fontWidth, fontHeight + 1); - G.SetFont(res.canvas, G.font1); + G.SetFont(res.canvas, G.fonts[1]); chkbox := res END create; diff --git a/programs/develop/cedit/SRC/Graph.ob07 b/programs/develop/cedit/SRC/Graph.ob07 index 1e71740c63..915022a294 100644 --- a/programs/develop/cedit/SRC/Graph.ob07 +++ b/programs/develop/cedit/SRC/Graph.ob07 @@ -53,7 +53,7 @@ TYPE VAR - font0*, font1*, font2*: tFont; + fonts*: ARRAY 3 OF tFont; PROCEDURE getRGB* (color: INTEGER; VAR r, g, b: BYTE); @@ -302,7 +302,7 @@ BEGIN IF c = Lines.NUL THEN c := 0X END; - IF font = font0 THEN + IF font = fonts[0] THEN ch := E.UNI[ORD(c), E.CP866]; IF ch = E.UNDEF THEN c := "?" @@ -354,7 +354,7 @@ END destroy; BEGIN - font0 := CreateFont(0, "", {}); - font1 := CreateFont(1, "", {}); - font2 := CreateFont(2, "", {}); + fonts[0] := CreateFont(0, "", {}); + fonts[1] := CreateFont(1, "", {}); + fonts[2] := CreateFont(2, "", {}); END Graph. \ No newline at end of file diff --git a/programs/develop/cedit/SRC/Ini.ob07 b/programs/develop/cedit/SRC/Ini.ob07 index 625add137d..0458f801f8 100644 --- a/programs/develop/cedit/SRC/Ini.ob07 +++ b/programs/develop/cedit/SRC/Ini.ob07 @@ -51,13 +51,17 @@ VAR curSection*: tASCIISectionName; curSectionNum*: INTEGER; - blink*: INTEGER; + + blink*, font*, theme*: INTEGER; + buildScript*, runScript*, debugScript*: RW.tFileName; + lineNumbers*, autoIndents*, autoBrackets*, trimSpace*: BOOLEAN; -PROCEDURE [stdcall, "libini.obj", "ini_get_color"] get_color (f_name: RW.tFileName; sec_name: tASCIISectionName; key_name: tString; def_val: INTEGER): INTEGER; END; -PROCEDURE [stdcall, "libini.obj", "ini_get_int"] get_int (f_name: RW.tFileName; sec_name: tASCIISectionName; key_name: tString; def_val: INTEGER): INTEGER; END; -PROCEDURE [stdcall, "libini.obj", "ini_get_str"] get_str (f_name, sec_name, key_name, buffer, buf_len, def_val: INTEGER): INTEGER; END; -PROCEDURE [stdcall, "libini.obj", "ini_enum_sections"] enum_sections (f_name: RW.tFileName; callback: INTEGER); END; +PROCEDURE [stdcall, "libini.obj", "ini_get_color"] get_color (f_name: RW.tFileName; sec_name: tASCIISectionName; key_name: tString; def_val: INTEGER): INTEGER; END; +PROCEDURE [stdcall, "libini.obj", "ini_get_int"] get_int (f_name: RW.tFileName; sec_name: tASCIISectionName; key_name: tString; def_val: INTEGER): INTEGER; END; +PROCEDURE [stdcall, "libini.obj", "ini_get_str"] get_str (f_name, sec_name, key_name, buffer, buf_len, def_val: INTEGER): INTEGER; END; +PROCEDURE [stdcall, "libini.obj", "ini_enum_sections"] enum_sections (f_name: RW.tFileName; callback: INTEGER); END; +PROCEDURE [stdcall-, "libini.obj", "ini_set_int"] set_int (f_name, sec_name, key_name, val: INTEGER): INTEGER; END; PROCEDURE getColor (key: tString; def: INTEGER): INTEGER; RETURN get_color(IniFileName, curSection, key, def) @@ -72,6 +76,12 @@ BEGIN END getStr; +PROCEDURE setInt* (secName, keyName: ARRAY OF CHAR; val: INTEGER); +BEGIN + set_int(SYSTEM.ADR(IniFileName[0]), SYSTEM.ADR(secName[0]), SYSTEM.ADR(keyName[0]), val) +END setInt; + + PROCEDURE [stdcall] section_callback (fileName, sectionName: RW.tFileName): INTEGER; VAR section: tSection; @@ -148,13 +158,25 @@ BEGIN END selectSection; -PROCEDURE getSettings* (VAR build, run, debug: RW.tFileName); +PROCEDURE getSettings*; BEGIN Lines.setTabs(get_int(IniFileName, "settings", "tab", 4)); blink := get_int(IniFileName, "settings", "blink", 70); - getStr("settings", "build", build); - getStr("settings", "run", run); - getStr("settings", "debug", debug) + lineNumbers := get_int(IniFileName, "settings", "line_numbers", 1) # 0; + autoIndents := get_int(IniFileName, "settings", "auto_indents", 1) # 0; + autoBrackets := get_int(IniFileName, "settings", "auto_brackets", 0) # 0; + trimSpace := get_int(IniFileName, "settings", "trim_space", 1) # 0; + font := get_int(IniFileName, "settings", "font", 1); + IF ~((0 <= font) & (font <= 2)) THEN + font := 1 + END; + theme := get_int(IniFileName, "settings", "theme", 0); + IF ~((0 <= theme) & (theme <= sections.count - 1)) THEN + theme := 0 + END; + getStr("settings", "build", buildScript); + getStr("settings", "run", runScript); + getStr("settings", "debug", debugScript); END getSettings; @@ -167,12 +189,12 @@ BEGIN Utils.append8(IniFileName, fileName); IF ~File.Exists(IniFileName) THEN - IniFileName := "/sys/settings/cedit.ini" + IniFileName := "/sys/settings/" + fileName END; enum_sections(IniFileName, SYSTEM.ADR(section_callback)); Languages.init(getStr); - selectSection(0); + selectSection(theme); END load; diff --git a/programs/develop/cedit/SRC/Languages.ob07 b/programs/develop/cedit/SRC/Languages.ob07 index 523474de2d..456ee9892e 100644 --- a/programs/develop/cedit/SRC/Languages.ob07 +++ b/programs/develop/cedit/SRC/Languages.ob07 @@ -404,7 +404,7 @@ BEGIN END comments; -PROCEDURE EnterKW (s: ARRAY OF CHAR; VAR KW: tKeyWords; CPrep: BOOLEAN); +PROCEDURE EnterKW (s: ARRAY OF CHAR; VAR KW: tKeyWords); CONST SPACE = 20X; CR = 0DX; LF = 0AX; TAB = 9X; COMMA = ","; VAR @@ -418,8 +418,7 @@ BEGIN k := KW.cnt; i := 0; REPEAT - KW.words[k, 0] := "#"; - j := ORD(CPrep); + j := 0; WHILE (s[i] # 0X) & ~delim(s[i]) DO KW.words[k, j] := WCHR(ORD(s[i])); INC(i); @@ -455,7 +454,7 @@ BEGIN KW[i].cnt := 0; key[2] := CHR(ORD("1") + i); getStr(lang, key, s); - EnterKW(s, KW[i], (lang = "lang_C") & (i = 1)) + EnterKW(s, KW[i]) END END loadKW; diff --git a/programs/develop/cedit/SRC/Menu.ob07 b/programs/develop/cedit/SRC/Menu.ob07 index 1ce3c3a911..e6fb57db7f 100644 --- a/programs/develop/cedit/SRC/Menu.ob07 +++ b/programs/develop/cedit/SRC/Menu.ob07 @@ -23,7 +23,7 @@ IMPORT SYSTEM, G := Graph, List, K := KolibriOS; CONST - fontHeight = 22; + itemHeight = 22; fontWidth = 8; MainMenuHeight* = K.fontHeight + 7; @@ -61,7 +61,7 @@ TYPE active*, keyboard: BOOLEAN; parent*, child: tMenu; mainID: INTEGER; - winX, winY, width*, height*: INTEGER; + x*, winX, winY, width*, height*: INTEGER; selItem, cliItem: INTEGER; font: G.tFont; @@ -118,7 +118,8 @@ BEGIN item.x := prev.x + LENGTH(prev.text)*fontWidth + 9 ELSE item.x := MainMenuX - END + END; + menu.x := item.x END AddMainItem; @@ -265,9 +266,9 @@ BEGIN TextColor := disSelForeColor END END; - Y := y + (fontHeight - 16) DIV 2; + Y := y + (itemHeight - 16) DIV 2; G.SetColor(canvas, BkColor); - G.FillRect(canvas, 1, y, m.width - 1, y + fontHeight - 4); + G.FillRect(canvas, 1, y, m.width - 1, y + itemHeight - 4); G.SetTextColor(canvas, TextColor); G.SetBkColor(canvas, BkColor); G.TextOut2(canvas, LEFT, Y - 2, item.text, LENGTH(item.text)); @@ -279,7 +280,7 @@ BEGIN G.DLine(canvas, 7, 12, Y + 8, 1); G.DLine(canvas, 7, 12, Y + 9, 1) ELSIF item.check = 2 THEN - Y1 := y + fontHeight DIV 2 - 2; + Y1 := y + itemHeight DIV 2 - 2; G.FillRect(canvas, 7, Y1 - 2, 9, Y1 + 2); G.FillRect(canvas, 6, Y1 - 1, 10, Y1 + 1) END; @@ -289,7 +290,7 @@ BEGIN G.Triangle(canvas, X, Y + 2, X, Y + 10, G.triRight) END; - INC(y, fontHeight); + INC(y, itemHeight); IF item.delim THEN G.SetColor(canvas, foreColor); G.HLine(canvas, y - 2, 1, m.width - 1) @@ -392,7 +393,7 @@ BEGIN IF ~opened(item(tItem).child) THEN closeChild(m); item(tItem).child.keyboard := keyboard; - _open(item(tItem).child, m.winX + m.width - 2, m.winY + m.selItem*fontHeight); + _open(item(tItem).child, m.winX + m.width - 2, m.winY + m.selItem*itemHeight); m.child := item(tItem).child; END ELSE @@ -486,9 +487,9 @@ BEGIN K.mouse(msState, x, y); IF (0 <= x) & (x < m.width) & (0 <= y) & (y < m.height) THEN m.active := TRUE; - m.selItem := (y - TOP) DIV fontHeight; + m.selItem := (y - TOP) DIV itemHeight; IF 8 IN msState THEN - m.cliItem := (y - TOP) DIV fontHeight + m.cliItem := (y - TOP) DIV itemHeight END; IF 16 IN msState THEN IF m.cliItem = m.selItem THEN @@ -640,10 +641,10 @@ BEGIN item := item.next(tItem) END; m.width := maxLength*fontWidth + LEFT + RIGHT; - m.height := items.count*fontHeight - 2; - m.font := G.font1; + m.height := items.count*itemHeight - 2; + m.font := G.fonts[1]; m.canvas := G.CreateCanvas(m.width + 1, m.height + 1); - G.SetFont(m.canvas, m.font); + G.SetFont(m.canvas, m.font) RETURN m END create; diff --git a/programs/develop/cedit/SRC/RW.ob07 b/programs/develop/cedit/SRC/RW.ob07 index 4bff3c8efe..472dc6d09f 100644 --- a/programs/develop/cedit/SRC/RW.ob07 +++ b/programs/develop/cedit/SRC/RW.ob07 @@ -291,10 +291,10 @@ BEGIN cnt := text.cnt; WHILE (text.cnt > 0) & (res = -1) DO c := text.getChar(text); - IF CHR(c) = LF THEN + IF c = ORD(LF) THEN res := E.EOL_LF - ELSIF CHR(c) = CR THEN - IF CHR(text.getChar(text)) = LF THEN + ELSIF c = ORD(CR) THEN + IF text.getChar(text) = ORD(LF) THEN res := E.EOL_CRLF ELSE res := E.EOL_CR diff --git a/programs/develop/cedit/SRC/StatusBar.ob07 b/programs/develop/cedit/SRC/StatusBar.ob07 index b2f52478db..ad1cbd69e6 100644 --- a/programs/develop/cedit/SRC/StatusBar.ob07 +++ b/programs/develop/cedit/SRC/StatusBar.ob07 @@ -122,5 +122,5 @@ END SetFont; BEGIN SB.canvas := NIL; - font := G.font1 + font := G.fonts[1] END StatusBar. \ No newline at end of file diff --git a/programs/develop/cedit/SRC/Text.ob07 b/programs/develop/cedit/SRC/Text.ob07 index 7eed922539..7982aadd38 100644 --- a/programs/develop/cedit/SRC/Text.ob07 +++ b/programs/develop/cedit/SRC/Text.ob07 @@ -66,10 +66,10 @@ TYPE scroll: tPoint; CurX: INTEGER; smallChange: INTEGER; - modified*, smallMove: BOOLEAN; - edition*: tGuard; - comments, numbers*, guard, + modified*, smallMove, + comments, guard, search, cs, whole: BOOLEAN; + edition*: tGuard; curLine: tLine; lang*: INTEGER; enc, eol: INTEGER; @@ -91,7 +91,7 @@ VAR pdelete: PROCEDURE (text: tText); ShowCursor: PROCEDURE; - colors*: RECORD + colors: RECORD text, back, seltext, selback, modified, saved, curline, numtext, numback: INTEGER; comment, string, escape, num, delim, key1, key2, key3: INTEGER END; @@ -100,6 +100,7 @@ VAR padding: RECORD left, top: INTEGER END; size, textsize: tPoint; charWidth, charHeight: INTEGER; + autoIndents*, lineNumbers*, autoBrackets*, trimSpace*: BOOLEAN; PROCEDURE setLang* (text: tText; lang: INTEGER); @@ -151,12 +152,30 @@ BEGIN END getTextRect; -PROCEDURE toggleNumbers* (text: tText); +PROCEDURE toggleNumbers*; BEGIN - text.numbers := ~text.numbers + lineNumbers := ~lineNumbers END toggleNumbers; +PROCEDURE toggleIndents*; +BEGIN + autoIndents := ~autoIndents +END toggleIndents; + + +PROCEDURE toggleBrackets*; +BEGIN + autoBrackets := ~autoBrackets +END toggleBrackets; + + +PROCEDURE toggleTrimSpace*; +BEGIN + trimSpace := ~trimSpace +END toggleTrimSpace; + + PROCEDURE showCursor*; BEGIN drawCursor := TRUE @@ -1146,7 +1165,11 @@ BEGIN IF text.cursor.X > 0 THEN INC(text.smallChange); i := text.cursor.X; - n := leadingSpaces(curLine); + IF autoIndents THEN + n := leadingSpaces(curLine) + ELSE + n := 0 + END; modify(text); IF n < i THEN move(text, -1); @@ -1205,7 +1228,7 @@ BEGIN SetPos(text, 0, text.cursor.Y + 1); line := text.curLine.prev(tLine); n := -1; - WHILE (line # NIL) & (n = -1) DO + WHILE (line # NIL) & (n = -1) & autoIndents DO IF (*line.length*)Lines.trimLength(line) # 0 THEN n := leadingSpaces(line); line2 := line @@ -1335,6 +1358,20 @@ BEGIN delSelect(text); curLine := text.curLine; Lines.insert(curLine, text.cursor.X, WCHR(code)); + IF autoBrackets THEN + IF code = ORD("(") THEN + code := ORD(")") + ELSIF code = ORD("[") THEN + code := ORD("]") + ELSIF code = ORD("{") THEN + code := ORD("}") + ELSE + code := -1 + END; + IF code # -1 THEN + Lines.insert(curLine, text.cursor.X + 1, WCHR(code)) + END + END; Lines.modify(curLine); modify(text); SetPos(text, text.cursor.X + 1, text.cursor.Y) @@ -1373,6 +1410,7 @@ VAR line: tLine; file: RW.tOutput; res: BOOLEAN; + Len: INTEGER; BEGIN ChangeLog.setGuard(text.edition); file := RW.create(tempFile, text.enc, text.eol); @@ -1380,7 +1418,12 @@ BEGIN ChangeLog.delSaved; line := text.first(tLine); WHILE line # NIL DO - RW.putString(file, line, Lines.trimLength(line)); + IF trimSpace THEN + Len := Lines.trimLength(line) + ELSE + Len := line.length + END; + RW.putString(file, line, Len); NextLine(line); IF line # NIL THEN RW.newLine(file) @@ -2262,7 +2305,7 @@ BEGIN G.clear(canvas) END; wNum := charWidth; - IF text.numbers THEN + IF lineNumbers THEN numWidth := U.lg10(text.count) + 2; xNum := numWidth*wNum - wNum DIV 2; setPadding(numWidth*wNum + pad_left, padding.top); @@ -2322,7 +2365,7 @@ BEGIN y := padding.top + inter DIV 2; n := MIN(text.scroll.Y + textsize.Y, text.count); FOR i := text.scroll.Y + 1 TO n DO - IF text.numbers THEN + IF lineNumbers THEN IF (i MOD 10 = 0) OR (i - 1 = text.cursor.Y) OR line.label THEN U.int2str(i, s); G.TextOut2(canvas, (numWidth - U.lg10(i) - 1)*wNum - wNum DIV 2, y, s, LENGTH(s)) @@ -2346,7 +2389,7 @@ BEGIN firstLine := text.curLine; lastLine := firstLine ELSE - lastLine := getLine2(text, text.scroll.Y + textsize.Y - 1) + lastLine := getLine2(text, MIN(text.scroll.Y + textsize.Y, text.count) - 1) END; p := text.foundList.first(Search.tPos); WHILE p # NIL DO @@ -2426,7 +2469,6 @@ BEGIN text.search := TRUE; text.cs := FALSE; text.whole := FALSE; - text.numbers := TRUE; text.guard := TRUE; text.edition := NIL; text.foundList := List.create(NIL); @@ -2674,11 +2716,15 @@ BEGIN END New; -PROCEDURE init* (pShowCursor: tProcedure); +PROCEDURE init* (pShowCursor: tProcedure; _lineNumbers, _autoIndents, _autoBrackets, _trimSpace: BOOLEAN); BEGIN ShowCursor := pShowCursor; pdelete := delete; drawCursor := TRUE; + lineNumbers := _lineNumbers; + autoIndents := _autoIndents; + autoBrackets := _autoBrackets; + trimSpace := _trimSpace; padding.left := pad_left; padding.top := pad_top; END init;