forked from KolibriOS/kolibrios
cmm tabs: slightly better implementation
git-svn-id: svn://kolibrios.org@7909 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
c50bb3b7c6
commit
d1df3e2bfe
Binary file not shown.
Before Width: | Height: | Size: 8.1 KiB After Width: | Height: | Size: 8.0 KiB |
@ -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"
|
||||
|
||||
@ -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)
|
||||
@ -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,10 +303,7 @@ void SelectList_LineChanged()
|
||||
// //
|
||||
//===================================================//
|
||||
|
||||
void EventTabClick(int N)
|
||||
{
|
||||
tabs.click(N);
|
||||
if (tabs.active_tab == SKINS)
|
||||
void EventTabSkinsClick()
|
||||
{
|
||||
active_wallpaper = select_list.cur_y;
|
||||
strcpy(#folder_path, #skins_folder_path);
|
||||
@ -310,8 +311,11 @@ void EventTabClick(int N)
|
||||
Open_Dir();
|
||||
if (!select_list.count) notify("'No skins were found' -E");
|
||||
select_list.cur_y = active_skin;
|
||||
|
||||
if (select_list.w) draw_window();
|
||||
}
|
||||
if (tabs.active_tab == WALLPAPERS)
|
||||
|
||||
void EventTabWallpappersClick()
|
||||
{
|
||||
active_skin = select_list.cur_y;
|
||||
strcpy(#folder_path, #wallp_folder_path);
|
||||
@ -319,8 +323,7 @@ void EventTabClick(int N)
|
||||
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();
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3,28 +3,58 @@
|
||||
#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);
|
||||
}
|
||||
|
||||
:dword _tabs::draw_button(dword xx, but_id, text)
|
||||
for (i=0; i<count; i++) {
|
||||
xx += draw_button(xx + TAB_PADDING, i, i*NAME_SIZE + #names) + TAB_PADDING;
|
||||
}
|
||||
}
|
||||
|
||||
:void _tabs::draw_active_tab()
|
||||
{
|
||||
events[active_tab]();
|
||||
}
|
||||
|
||||
:void _tabs::add(dword text, event)
|
||||
{
|
||||
strcpy(count*NAME_SIZE + #names, text);
|
||||
events[count] = event;
|
||||
count++;
|
||||
}
|
||||
|
||||
:dword _tabs::draw_button(dword xx, _id, text)
|
||||
{
|
||||
dword col_bg, col_text;
|
||||
dword ww=strlen(text)*8, hh=TAB_HEIGHT;
|
||||
dword ww=strlen(text)*8;
|
||||
|
||||
if (but_id==active_tab)
|
||||
if (_id==active_tab)
|
||||
{
|
||||
col_bg = 0xE44C9C;
|
||||
col_text = sc.work_text;
|
||||
@ -34,16 +64,18 @@
|
||||
col_bg = 0xC3A1B7;
|
||||
col_text = MixColors(sc.work, sc.work_text, 120);
|
||||
}
|
||||
DefineHiddenButton(xx-2,y, ww-1+4,hh-1, but_id);
|
||||
DefineHiddenButton(xx-2,y, ww-1+4,TAB_HEIGHT-1, _id + base_id);
|
||||
WriteText(xx, y+6, 0x90, col_text, text);
|
||||
DrawBar(xx, y+hh-3, ww, 3, col_bg);
|
||||
//DrawStandartCaptButton(xx, y, but_id, text); //GetFreeButtonId()
|
||||
return xx;
|
||||
DrawBar(xx, y+TAB_HEIGHT-3, ww, 3, col_bg);
|
||||
return ww;
|
||||
}
|
||||
|
||||
:int _tabs::click(int N)
|
||||
:int _tabs::click(int _id)
|
||||
{
|
||||
if (N==active_tab) return false;
|
||||
active_tab = N;
|
||||
if (_id < base_id) || (_id > base_id + count) || (_id == active_tab) {
|
||||
return false;
|
||||
}
|
||||
active_tab = _id - base_id;
|
||||
events[active_tab]();
|
||||
return true;
|
||||
}
|
@ -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();
|
||||
}
|
Binary file not shown.
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user