From 14e47edee371a0d65a14284eb00ae3356a927bae Mon Sep 17 00:00:00 2001 From: "Kirill Lipatov (Leency)" Date: Sun, 14 Oct 2018 22:02:13 +0000 Subject: [PATCH] @open: - fix new association adding [Critical] - use system color for file path TextRead: - new feature: color schemes - reopen option "Other" opens file in @open (thanks punk_joker for idea) git-svn-id: svn://kolibrios.org@7466 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/cmm/txtread/ini.h | 4 +- programs/cmm/txtread/toolbar.png | Bin 961 -> 1040 bytes programs/cmm/txtread/txtread.c | 142 ++++++++++++++++++++++++------- programs/system/open/open.asm | 20 +++-- 4 files changed, 128 insertions(+), 38 deletions(-) diff --git a/programs/cmm/txtread/ini.h b/programs/cmm/txtread/ini.h index 2215880efb..c5a93dc9d4 100644 --- a/programs/cmm/txtread/ini.h +++ b/programs/cmm/txtread/ini.h @@ -1,9 +1,10 @@ -_ini ini = { "/sys/settings/txtread.ini", "Config" }; +_ini ini = { "/sys/settings/app.ini", "Txtread" }; void LoadIniSettings() { kfont.size.pt = ini.GetInt("FontSize", 14); encoding = ini.GetInt("Encoding", CH_CP866); + curcol_scheme = ini.GetInt("ColorScheme", 1); Form.left = ini.GetInt("WinX", 150); Form.top = ini.GetInt("WinY", 50); Form.width = ini.GetInt("WinW", 640); @@ -14,6 +15,7 @@ void SaveIniSettings() { ini.SetInt("FontSize", kfont.size.pt); ini.SetInt("Encoding", encoding); + ini.SetInt("ColorScheme", curcol_scheme); ini.SetInt("WinX", Form.left); ini.SetInt("WinY", Form.top); ini.SetInt("WinW", Form.width); diff --git a/programs/cmm/txtread/toolbar.png b/programs/cmm/txtread/toolbar.png index 4f00ecd11805d8a947f2ef5b6fe0639f78e31eb0..7f5df16c2dc24df8c21a8d7da4d6733c535f9714 100644 GIT binary patch literal 1040 zcmV+r1n>KaP)Px#Do{*RMe*_R{r&xnjEwa3^k!ye+}zyb;^L{Psg{4Bd&}Qk*yYKv9hR13bVxqyj=tGprj&ss}+jyC5b0HhB=JhGnA1i*}`O!&7w)N zJtdg1#W4R-DQ0h_f?b={AeM?1#2ZE->5AaVl@c*+7R6Gw=#UVUn+qfri?>2ioe7dW zlLX?e9hG!t?X#;joSKA6l5Ei-sfqw6pj0g03Wc&U@oYk> za{6|0{G9UMSpF@D(kVc0yZu7*lI%{9cTDv_!JdD{*{S~bJL8ukLEDybR{^IjZc(V8^Oopz zz|Z3P3s0inFX8lSEjYa}z#Sww=%zT>SI9W~3wMyfFUctqb%WePLSjUvZ%bl)E#_(x zh}a;(2$F=0H(}8GBpL|_^-3bj^3@~|qiK-DSfWfMj>9AXazkj7XyPwg{7;!xHZ8oC zghAq3lnWB7P*~x3uGNDML;+Tk$NIqw2oque%o#7P=(QPNfmC@?p*YaQhml$!pGzir zJRZx(w6Gu`e4=*MAa%x-%dL)*zyGO(>WZ2zmwCNQM=p zaVB@xF5F`6kq|bE?qj)IDNlTzCx$CTA=lQfDOl1kZr32sWSSL8+^$@^z#}5$gu1zQ z)hJFBH5i`rWSD=;8Sl1?=YGO>2zmG22WnT1BCBvw)KuPTzG!MY6PG`h1)a`pX1#mv zqTS9|U%T8-09nY*aj88OoE)Z=09@x8grdHBfOrFFA2>Osz3I?Y|`_yl=p z?YeXpMnQt#mgMHzb@6vbSN`blN^;A)71x#kyNWORmgvX4x%&fl8A*1J4$`Us0000< KMNUMnLSTYEeesR} literal 961 zcmV;y13vtTP)Cdm;^K0* z>-_xu^z`(WmX>5>WPE&lSXfxpPFW#+Bt8HD11?EKK~#7F+?LyF12GIlrMP2{eA)m1 z+(IcUqi*U=U_;0}=Ah9bII%_ab{KWAj89w-MAO${(p_*{Ph1G(_JzabHwB+4EQKVC ztibv8g_ago3t{C?^k7Ren%1gDOXt8+xRPvX23|EyxEHBGIDYOksdvFor1!J{=Y-o3 zk~V?4YMuc1=#j8fpRu0zz1_A;Shk5D2YBf#j~2Q~+j zZ(|jfSXC@k1+R0$#W2N61f+w5Z&(W)xNpm&B36y@w`$ipElkA}Wdvjd$lC_!1|apV zZw@Bk(tt(Pv%+;^s3!mlw+dw*=$qu>Ao_aMEbLXm>oQ>)4NBHbb+72V7Jk){$kax3 zW(Dd#8p2!CCO?8Qn&_^2H#ax6u#zftr1{RnyHdzzFw2fzU!)IgkgQ)H=`RO zAR}M}RI8DSTBy@m8EUidddGcXo`um3vLfje79oZ;v*e!f|!f_&4y>7;^Ur2$c3J+p#yTf~(fhOk?!99THi86bF5BQr zs1lsTP^_cRg2UU@AHfW96bzK=RY<`CzAl5q72@s!ox!E9Q_cW~H-nSdP)WNv3bBB% z*XumE!)K{tV3!DQ24}HBAbyJg?^gI0djq!_-0H9{p^GAE?^%OmLfd)|PvHCDS#X$GKiCqUSJ=IPX-hh zAC^AcT2m4>s!L>XZfkxolvp?e%YB6{hIyj87Z5V=F2UV{gLSJ919osU8`wtPCAfKT zXs17%bRauvby46h8zH>=Hw7Yns6N>fkY5;`hZdtl j@R>gp{7pYnz6|~cxBWg{E!RjQ00000NkvXXu0mjflibMT diff --git a/programs/cmm/txtread/txtread.c b/programs/cmm/txtread/txtread.c index 5b305fe3fb..b901e79fcc 100644 --- a/programs/cmm/txtread/txtread.c +++ b/programs/cmm/txtread/txtread.c @@ -1,5 +1,11 @@ #define MEMSIZE 4096*25 +//===================================================// +// // +// LIB // +// // +//===================================================// + #include "../lib/io.h" #include "../lib/gui.h" #include "../lib/list_box.h" @@ -13,6 +19,12 @@ #include "../lib/patterns/simple_open_dialog.h" +//===================================================// +// // +// DATA // +// // +//===================================================// + #define TOOLBAR_H 34 #define TOOLBAR_ICON_WIDTH 26 #define TOOLBAR_ICON_HEIGHT 24 @@ -20,7 +32,7 @@ #define DEFAULT_EDITOR "/sys/tinypad" #define INTRO_TEXT "This is a plain Text Reader.\nTry to open some text file." -#define VERSION "Text Reader v1.22" +#define VERSION "Text Reader v1.3" #define ABOUT "Idea: Leency, punk_joker Code: Leency, Veliant, KolibriOS Team @@ -34,6 +46,27 @@ Ctrl+E - reopen current file in another app Press any key..." +dword color_schemes[] = { +0xFFFfff, 0, +0xF0F0F0, 0, +0xE9E5DA, 0, +0xF0F0C7, 0, +0xFCF0DA, 0x574531, +0xFDF6E3, 0x303A41, +0x282C34, 0xABB2BF, +0x282923, 0xD8D8D2 +}; + +char color_scheme_names[] = +"White & Black +Grey & Black RtfRead +Khaki & Black QNX +Lemon & Black Fb2Read +Antique & Black Pocket +Linen & Black Horst +DarkGrey & Grey Godot +DarkGrey & Grey Monokai"; + char default_dir[] = "/rd/1"; od_filter filter2 = { 8, "TXT\0\0" }; @@ -44,8 +77,11 @@ proc_info Form; char title[4196]; bool help_opened = false; -int charsets_menu_left = 0; -int reopenin_menu_left = 0; +int charsets_mx; +int reopenin_mx; +int colscheme_mx; + +int curcol_scheme; enum { OPEN_FILE, @@ -54,17 +90,30 @@ enum { CHANGE_ENCODING, RUN_EDIT, SHOW_INFO, - SHOW_FILE_PROPERTIES + SHOW_FILE_PROPERTIES, + COLOR_SCHEME }; int encoding; -dword bg_color = 0xF0F0F0; -dword text_color = 0; +dword bg_color; +dword text_color; + +//===================================================// +// // +// INTERNAL INCLUDES // +// // +//===================================================// #include "ini.h" #include "prepare_page.h" +//===================================================// +// // +// CODE // +// // +//===================================================// + void InitDlls() { load_dll(boxlib, #box_lib_init, 0); @@ -75,12 +124,12 @@ void InitDlls() load_dll(Proc_lib, #OpenDialog_init,0); } - void main() { InitDlls(); OpenDialog_init stdcall (#o_dialog); LoadIniSettings(); + EventSetColorScheme(curcol_scheme); kfont.init(DEFAULT_FONT); Libimg_LoadImage(#skin, abspath("toolbar.png")); OpenFile(#param); @@ -106,6 +155,11 @@ void main() } } +//===================================================// +// // +// EVENTS // +// // +//===================================================// void HandleButtonEvent() { @@ -134,7 +188,10 @@ void HandleButtonEvent() EventShowEncodingList(); break; case RUN_EDIT: - EventShowEdit(); + EventShowReopenMenu(); + break; + case COLOR_SCHEME: + EventShowColorSchemesList(); break; case SHOW_INFO: EventShowInfo(); @@ -171,7 +228,7 @@ void HandleKeyEvent() EventMagnifyMinus(); break; case SCAN_CODE_KEY_E: - EventShowEdit(); + EventShowReopenMenu(); break; case SCAN_CODE_TAB: EventChangeEncoding(); @@ -199,7 +256,6 @@ void HandleMouseEvent() } } - /* ----------------------------------------------------- */ void EventOpenFile() @@ -237,20 +293,33 @@ void EventMagnifyMinus() PreparePage(); } -void EventShowEdit() -{ - menu.selected = 0; - menu.show(Form.left+5 + reopenin_menu_left, Form.top+29+skin_height, 130, - "Tinypad\nTextEdit\nWebView\nFB2Read\nHexView", 20); -} - void EventShowEncodingList() { menu.selected = encoding + 1; - menu.show(Form.left+5 + charsets_menu_left, Form.top+29+skin_height, 130, + menu.show(Form.left+5 + charsets_mx, Form.top+29+skin_height, 130, "UTF-8\nKOI8-RU\nCP1251\nCP1252\nISO8859-5\nCP866", 10); } +void EventShowReopenMenu() +{ + menu.selected = 0; + menu.show(Form.left+5 + reopenin_mx, Form.top+29+skin_height, 130, + "Tinypad\nTextEdit\nWebView\nFB2Read\nHexView\nOther", 20); +} + +void EventShowColorSchemesList() +{ + menu.selected = curcol_scheme + 1; + menu.show(Form.left+5 + colscheme_mx, Form.top+29+skin_height, 175, #color_scheme_names, 30); +} + +void EventSetColorScheme(dword _setn) +{ + curcol_scheme = _setn; + bg_color = color_schemes[curcol_scheme*2]; + text_color = color_schemes[curcol_scheme*2+1]; +} + void EventShowInfo() { help_opened = true; DrawBar(list.x, list.y, list.w, list.h, 0xFFFfff); @@ -273,6 +342,7 @@ void EventOpenFileInAnotherProgram(dword _app) void EventMenuClick() { + byte open_param[4096]; switch(menu.cur_y) { //Encoding @@ -295,12 +365,24 @@ void EventMenuClick() case 24: EventOpenFileInAnotherProgram("/sys/develop/heed"); break; + case 25: + sprintf(#open_param,"~%s",#param); + RunProgram("/sys/@open", #open_param); + break; + //ColorSchemes + case 30...38: + EventSetColorScheme(menu.cur_y-30); + PreparePage(); + break; } menu.cur_y = 0; } -/* ------------------------------------------- */ - +//===================================================// +// // +// DRAWS AND OTHER FUNCS // +// // +//===================================================// void OpenFile(dword f_path) { @@ -323,7 +405,8 @@ void OpenFile(dword f_path) void draw_window() { - #define PADDING 6 + #define BUTTONS_GAP 6 + #define BLOCKS_GAP 15 #define TOOLBAR_BUTTON_WIDTH 26 incn x; DefineAndDrawWindow(Form.left,Form.top,Form.width,Form.height,0x73,0,#title,0); @@ -338,16 +421,16 @@ void draw_window() x.n = 0; DrawToolbarButton(OPEN_FILE, x.inc(8)); - DrawToolbarButton(SHOW_FILE_PROPERTIES, x.inc(TOOLBAR_BUTTON_WIDTH + PADDING)); - DrawToolbarButton(MAGNIFY_MINUS, x.inc(TOOLBAR_BUTTON_WIDTH + PADDING + PADDING)); + DrawToolbarButton(SHOW_FILE_PROPERTIES, x.inc(TOOLBAR_BUTTON_WIDTH + BUTTONS_GAP)); + + DrawToolbarButton(MAGNIFY_MINUS, x.inc(TOOLBAR_BUTTON_WIDTH + BLOCKS_GAP)); DrawToolbarButton(MAGNIFY_PLUS, x.inc(TOOLBAR_BUTTON_WIDTH - 1)); - DrawToolbarButton(CHANGE_ENCODING, x.inc(TOOLBAR_BUTTON_WIDTH + PADDING + PADDING)); - charsets_menu_left = x.n; - DrawToolbarButton(RUN_EDIT, x.inc(TOOLBAR_BUTTON_WIDTH + PADDING + PADDING)); - reopenin_menu_left = x.n; + DrawToolbarButton(COLOR_SCHEME, x.inc(TOOLBAR_BUTTON_WIDTH + BUTTONS_GAP)); colscheme_mx = x.n; + + DrawToolbarButton(CHANGE_ENCODING, x.inc(TOOLBAR_BUTTON_WIDTH + BLOCKS_GAP)); charsets_mx = x.n; + DrawToolbarButton(RUN_EDIT, x.inc(TOOLBAR_BUTTON_WIDTH + BLOCKS_GAP)); reopenin_mx = x.n; DrawToolbarButton(SHOW_INFO, Form.cwidth - 34); - if ((Form.cwidth-scroll.size_x-1 == list.w) && (Form.cheight-TOOLBAR_H == list.h) && (list.count) @@ -356,7 +439,8 @@ void draw_window() DrawPage(); } else { PreparePage(); - } + } + DrawRectangle(scroll.start_x, scroll.start_y, scroll.size_x, scroll.size_y-1, scroll.bckg_col); } diff --git a/programs/system/open/open.asm b/programs/system/open/open.asm index 68eb4565ba..172e8659a8 100644 --- a/programs/system/open/open.asm +++ b/programs/system/open/open.asm @@ -1,11 +1,11 @@ - DEBUG equ 0 + DEBUG = 0 - LIST_WIDTH equ 256 - WIN_WIDTH equ (LIST_WIDTH + 16 + 12) - LIST_SIZE equ 12 - LINE_SIZE equ 40 - LIST_HEIGHT equ (LIST_SIZE * LINE_SIZE / 2) - WIN_HEIGHT equ (LIST_HEIGHT + 80) + LIST_WIDTH = 256 + WIN_WIDTH = (LIST_WIDTH + 16 + 12) + LIST_SIZE = 12 + LINE_SIZE = 40 + LIST_HEIGHT = (LIST_SIZE * LINE_SIZE / 2) + WIN_HEIGHT = (LIST_HEIGHT + 80) use32 org 0 @@ -299,6 +299,7 @@ end if mov ebx, [skin.work_text] mov [ps_addres.txt], eax mov [ps_addres], ebx + m2m [ps_addres.color], [skin.work_text] invoke pathshow.init, ps_addres ;; get checkbox @@ -582,7 +583,10 @@ end if stdcall string.concatenate, [param_a], buffer @@: - invoke libini.set_str, assoc_ini, assoc_ini.sec, [param_e], buffer, 33 + stdcall string.length, buffer + mov edi, eax + + invoke libini.set_str, assoc_ini, assoc_ini.sec, [param_e], buffer, edi jmp exit ;----------------------