diff --git a/data/common/icons16.png b/data/common/icons16.png index 5079521e45..a2ee0d24ea 100644 Binary files a/data/common/icons16.png and b/data/common/icons16.png differ diff --git a/programs/cmm/appearance/appearance.c b/programs/cmm/appearance/appearance.c index 4317730a39..0854ba12fb 100644 --- a/programs/cmm/appearance/appearance.c +++ b/programs/cmm/appearance/appearance.c @@ -6,18 +6,19 @@ #endif #define MEMSIZE 200*1024 -#include "..\lib\mem.h" -#include "..\lib\strings.h" -#include "..\lib\io.h" -#include "..\lib\list_box.h" -#include "..\lib\gui.h" +#include "../lib/mem.h" +#include "../lib/strings.h" +#include "../lib/io.h" +#include "../lib/list_box.h" +#include "../lib/obj/libimg.h" +#include "../lib/gui.h" -#include "..\lib\obj\box_lib.h" -#include "..\lib\obj\proc_lib.h" -#include "..\lib\obj\libini.h" +#include "../lib/obj/box_lib.h" +#include "../lib/obj/proc_lib.h" +#include "../lib/obj/libini.h" -#include "..\lib\patterns\select_list.h" -#include "..\lib\patterns\simple_open_dialog.h" +#include "../lib/patterns/select_list.h" +#include "../lib/patterns/simple_open_dialog.h" #include "ui_elements_preview.h" @@ -29,8 +30,8 @@ #ifdef LANG_RUS ?define WINDOW_HEADER "Настройки оформления" - ?define T_SKINS "Стиль окон" - ?define T_WALLPAPERS "Обои" + ?define T_SKINS " Стиль окон" + ?define T_WALLPAPERS " Обои" ?define T_SELECT_FOLDER "Выбрать папку" ?define MENU_LIST "Открыть файл |Enter\nУдалить файл |Del" ?define T_PICTURE_MODE " Положение картинки " @@ -39,8 +40,8 @@ ?define T_UPDATE_DOCK "Обновлять Dock-панель" #else ?define WINDOW_HEADER "Appearance" - ?define T_SKINS "Skins" - ?define T_WALLPAPERS "Wallpapers" + ?define T_SKINS " Skins" + ?define T_WALLPAPERS " Wallpapers" ?define T_SELECT_FOLDER "Select folder" ?define MENU_LIST "Open file |Enter\nDelete file |Del" ?define T_PICTURE_MODE " Picture Mode " @@ -56,9 +57,8 @@ char wallp_folder_path[4096]; signed int active_skin=-1, active_wallpaper=-1; enum { - SKINS=2, - WALLPAPERS, - BTN_SELECT_WALLP_FOLDER }; + BASE_TAB_BUTTON_ID=2, + BTN_SELECT_WALLP_FOLDER=10 }; char folder_path[4096]; char cur_file_path[4096]; @@ -71,7 +71,9 @@ int cur; proc_info Form; block skp; -_tabs tabs = { SKINS, LP, LP, NULL, NULL }; +enum {SKINS, WALLPAPERS}; + +_tabs tabs = { LP, LP, NULL, BASE_TAB_BUTTON_ID }; checkbox update_docky = { T_UPDATE_DOCK, false }; @@ -98,17 +100,21 @@ void GetRealFolderPathes() void main() { - int id, mouse_clicked; + int id; GetRealFolderPathes(); load_dll(boxlib, #box_lib_init,0); load_dll(libini, #lib_init,1); + load_dll(libio, #libio_init,1); + load_dll(libimg, #libimg_init,1); load_dll(Proc_lib, #OpenDialog_init,0); o_dialog.type = 2; //select folder OpenDialog_init stdcall (#o_dialog); - EventTabClick(SKINS); + tabs.add(T_SKINS, #EventTabSkinsClick); + tabs.add(T_WALLPAPERS, #EventTabWallpappersClick); + tabs.draw_active_tab(); SetEventMask(EVM_REDRAW + EVM_KEY + EVM_BUTTON + EVM_MOUSE + EVM_MOUSE_FILTER); loop() switch(WaitEvent()) @@ -133,9 +139,8 @@ void main() case evButton: id=GetButtonID(); if (id==1) EventExit(); - if (id==SKINS) EventTabClick(SKINS); - if (id==WALLPAPERS) EventTabClick(WALLPAPERS); if (id==BTN_SELECT_WALLP_FOLDER) EventSelectWallpFolder(); + tabs.click(id); checkbox1.click(id); spinbox1.click(id); if (update_docky.click(id)) EventUpdateDocky(); @@ -147,10 +152,7 @@ void main() GetKeys(); if (select_list.ProcessKey(key_scancode)) EventApply(); if (key_scancode==SCAN_CODE_ENTER) EventOpenFile(); - if (key_scancode==SCAN_CODE_TAB) { - if (tabs.active_tab==SKINS) EventTabClick(WALLPAPERS); - else EventTabClick(SKINS); - } + if (key_scancode==SCAN_CODE_TAB) tabs.click(tabs.active_tab ^ 1); if (key_scancode==SCAN_CODE_DEL) EventDeleteFile(); if (! edit_cmm.flags & ed_focus) && (! edit_st.flags & ed_focus) @@ -181,7 +183,7 @@ void main() void draw_window() { - sc.get(); + sc.get(); DefineAndDrawWindow(screen.width-600/2,80,630,504+skin_height,0x34,sc.work,WINDOW_HEADER,0); GetProcessInfo(#Form, SelfInfo); IF (Form.status_window>=2) return; @@ -198,17 +200,19 @@ void DrawWindowContent() if (tabs.active_tab == SKINS) list_w=250; else list_w=350; tabs.w = Form.cwidth-LP-LP; - tabs.h = Form.cheight-LP-LP; - tabs.draw_wrapper(); - tabs.draw_button(tabs.x+TAB_PADDING, SKINS, T_SKINS); - tabs.draw_button(strlen(T_SKINS)*8+tabs.x+TAB_PADDING+TAB_PADDING, WALLPAPERS, T_WALLPAPERS); + tabs.draw(); + DrawIcon16(tabs.x + TAB_PADDING, 15, sc.work, 17); + DrawIcon16(strlen(T_SKINS)*8 + tabs.x + TAB_PADDING + TAB_PADDING, 15, sc.work, 6); + + if (select_list.cur_y>select_list.visible) select_list.first=select_list.cur_y; + select_list.CheckDoesValuesOkey(); id = select_list.cur_y; SelectList_Init( tabs.x+TAB_PADDING, tabs.y+TAB_HEIGHT+TAB_PADDING, list_w, - tabs.h - TAB_PADDING - TAB_PADDING - TAB_HEIGHT, + Form.cheight-LP-LP - TAB_PADDING - TAB_PADDING - TAB_HEIGHT, false ); select_list.cur_y = id; @@ -299,28 +303,27 @@ void SelectList_LineChanged() // // //===================================================// -void EventTabClick(int N) +void EventTabSkinsClick() { - tabs.click(N); - if (tabs.active_tab == SKINS) - { - active_wallpaper = select_list.cur_y; - strcpy(#folder_path, #skins_folder_path); - select_list.ClearList(); - Open_Dir(); - if (!select_list.count) notify("'No skins were found' -E"); - select_list.cur_y = active_skin; - } - if (tabs.active_tab == WALLPAPERS) - { - active_skin = select_list.cur_y; - strcpy(#folder_path, #wallp_folder_path); - select_list.ClearList(); - Open_Dir(); - if (!select_list.count) notify("'No wallpapers were found' -E"); - select_list.cur_y = active_wallpaper; - } - if (select_list.cur_y>select_list.visible) select_list.first=select_list.cur_y; select_list.CheckDoesValuesOkey(); + active_wallpaper = select_list.cur_y; + strcpy(#folder_path, #skins_folder_path); + select_list.ClearList(); + Open_Dir(); + if (!select_list.count) notify("'No skins were found' -E"); + select_list.cur_y = active_skin; + + if (select_list.w) draw_window(); +} + +void EventTabWallpappersClick() +{ + active_skin = select_list.cur_y; + strcpy(#folder_path, #wallp_folder_path); + select_list.ClearList(); + Open_Dir(); + if (!select_list.count) notify("'No wallpapers were found' -E"); + select_list.cur_y = active_wallpaper; + if (select_list.w) draw_window(); } @@ -342,7 +345,7 @@ void EventSelectWallpFolder() OpenDialog_start stdcall (#o_dialog); if (o_dialog.status) { strcpy(#wallp_folder_path, #opendir_path); - EventTabClick(WALLPAPERS); + EventTabWallpappersClick(); } } diff --git a/programs/cmm/kf_font_viewer/font_viewer.c b/programs/cmm/kf_font_viewer/font_viewer.c index 5de935d8da..fb2e6bef1f 100644 --- a/programs/cmm/kf_font_viewer/font_viewer.c +++ b/programs/cmm/kf_font_viewer/font_viewer.c @@ -6,13 +6,10 @@ #define PANELH 28 #define WIN_W 490 #define WIN_H 315 +#define BASE_TAB_BUTTON_ID 97 proc_info Form; -enum { - PHRASE_TAB=20, CHARS_TAB -}; - -_tabs tabs = { PHRASE_TAB }; +_tabs tabs = { WIN_W-130, 0, NULL, BASE_TAB_BUTTON_ID }; block preview = { 0, PANELH, WIN_W, WIN_H - PANELH }; checkbox bold = { "Bold", false }; @@ -27,6 +24,10 @@ void main() kfont.init(#param); strcpy(#title, "Font preview: "); strcat(#title, #param); + + tabs.add("Phrase", #DrawPreviewPhrase); + tabs.add("Chars", #DrawPreviewChars); + loop() switch(WaitEvent()) { case evButton: @@ -35,7 +36,7 @@ void main() bold.click(btn); smooth.click(btn); colored.click(btn); - if (btn==PHRASE_TAB) || (btn==CHARS_TAB) tabs.click(btn); + tabs.click(btn); goto _DRAW_WINDOW_CONTENT; case evReDraw: sc.get(); @@ -53,8 +54,8 @@ void main() smooth.draw(83,8); colored.draw(170,8); - tabs.draw_button(Form.cwidth-130, PHRASE_TAB, "Phrase"); - tabs.draw_button(Form.cwidth-60, CHARS_TAB, "Chars"); + tabs.draw(); + tabs.draw_active_tab(); if (!kfont.font) { @@ -62,8 +63,6 @@ void main() WriteText(10, 50, 0x82, 0xFF00FF, "Font is not loaded."); break; } - if (tabs.active_tab==PHRASE_TAB) DrawPreviewPhrase(); - if (tabs.active_tab==CHARS_TAB) DrawPreviewChars(); } } diff --git a/programs/cmm/lib/gui/tabs.h b/programs/cmm/lib/gui/tabs.h index 281f1f98a8..dc513ffedd 100644 --- a/programs/cmm/lib/gui/tabs.h +++ b/programs/cmm/lib/gui/tabs.h @@ -3,47 +3,79 @@ #endif #define TAB_HEIGHT 28 +#define NAME_SIZE 64 :struct _tabs { + int x,y,w; + int base_id; + int active_tab; - int x,y,w,h; - dword draw_button(); + char names[640]; + int count; + dword events[10]; + int click(); - void draw_wrapper(); + void draw(); + void draw_active_tab(); + void add(); + + dword draw_button(); }; -:void _tabs::draw_wrapper() +:void _tabs::draw() { - DrawRectangle(x,y+TAB_HEIGHT,w-1,h-TAB_HEIGHT, sc.work_graph); - DrawBar(x+1,y+1+TAB_HEIGHT,w-3,1, sc.work_light); + int i, xx=x; + + if (w) { + DrawBar(x+1,y+0+TAB_HEIGHT,w,1, sc.work_graph); + DrawBar(x+1,y+1+TAB_HEIGHT,w,1, sc.work_light); + } + + for (i=0; i base_id + count) || (_id == active_tab) { + return false; + } + active_tab = _id - base_id; + events[active_tab](); + return true; } \ No newline at end of file diff --git a/programs/cmm/sysmon/sysmon.c b/programs/cmm/sysmon/sysmon.c index a0e7a0a9a7..89dae8dda4 100644 --- a/programs/cmm/sysmon/sysmon.c +++ b/programs/cmm/sysmon/sysmon.c @@ -37,6 +37,7 @@ #define WIN_CONTENT_W 400 #define WIN_CONTENT_H 465 #define ICONGAP 26 +#define BASE_TAB_BUTTON_ID 10 proc_info Form; #ifdef LANG_RUS @@ -51,13 +52,7 @@ proc_info Form; #define T_APP_TITLE "System Monitor" #endif -enum { - TAB_GENERAL=20, - TAB_DRIVES, - TAB_PROCESSES -}; - -_tabs tabs = { TAB_GENERAL, 4, 10, WIN_CONTENT_W+WIN_PAD+WIN_PAD-4-4, TAB_HEIGHT }; +_tabs tabs = { 4, 10, WIN_CONTENT_W+WIN_PAD+WIN_PAD-4-4, BASE_TAB_BUTTON_ID }; //===================================================// // // @@ -75,10 +70,7 @@ int Sysmon__DefineAndDrawWindow() if (Form.status_window>2) return false; //if (Form.width < 300) { MoveSize(OLD,OLD,300,OLD); break; } //if (Form.height < 200) { MoveSize(OLD,OLD,OLD,200); break; } - tabs.draw_wrapper(); - butx = tabs.draw_button(tabs.x+TAB_PADDING, TAB_GENERAL, T_CPU_AND_RAM); - butx = tabs.draw_button(strlen(T_CPU_AND_RAM)*8+TAB_PADDING+butx, TAB_DRIVES, T_DRIVES); - tabs.draw_button(strlen(T_DRIVES)*8+TAB_PADDING+butx, TAB_PROCESSES, T_PROCESSES); + tabs.draw(); return true; } @@ -86,18 +78,7 @@ int Sysmon__ButtonEvent() { int bid = GetButtonID(); if (1==bid) ExitProcess(); - if (TAB_GENERAL==bid) { - tabs.active_tab = TAB_GENERAL; - CPUnRAM__Main(); - } - if (TAB_PROCESSES==bid) { - tabs.active_tab = TAB_PROCESSES; - Processes__Main(); - } - if (TAB_DRIVES==bid) { - tabs.active_tab = TAB_DRIVES; - Drives__Main(); - } + tabs.click(); return bid; } @@ -117,5 +98,10 @@ void main() load_dll(libimg, #libimg_init,1); load_dll(libini, #lib_init,1); load_dll(boxlib, #box_lib_init,0); + + tabs.add(T_CPU_AND_RAM, #CPUnRAM__Main); + tabs.add(T_DRIVES, #Drives__Main); + tabs.add(T_PROCESSES, #Processes__Main); + CPUnRAM__Main(); } \ No newline at end of file diff --git a/skins/Leency/Shkvorka/default.dtp b/skins/Leency/Shkvorka/default.dtp index 411bb94d9e..9847d38991 100644 Binary files a/skins/Leency/Shkvorka/default.dtp and b/skins/Leency/Shkvorka/default.dtp differ diff --git a/skins/Leency/Shkvorka/default.dtp.asm b/skins/Leency/Shkvorka/default.dtp.asm index e95485d10c..cbc5b1f23f 100644 --- a/skins/Leency/Shkvorka/default.dtp.asm +++ b/skins/Leency/Shkvorka/default.dtp.asm @@ -2,7 +2,7 @@ struc system_colors { .taskbar dd 0x586786 .taskbar_text dd 0xFEFEFE - .work_dark dd 0xC0BBB4 + .work_dark dd 0xC5BDB9 .work_light dd 0xECE9E5 .window_title dd 0x333333 .work dd 0xDDD7CF