select_list.h: update API, add SelectList_ProcessMouse()

drvinst: use select_list

git-svn-id: svn://kolibrios.org@6653 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Kirill Lipatov (Leency) 2016-11-02 14:30:45 +00:00
parent 55fd6e5922
commit 7ce6f6bd28
4 changed files with 191 additions and 73 deletions

View File

@ -66,33 +66,15 @@ void main()
{ {
case evMouse: case evMouse:
if (!CheckActiveProcess(Form.ID)) break; if (!CheckActiveProcess(Form.ID)) break;
mouse.get(); SelectList_ProcessMouse();
scrollbar_v_mouse (#scroll1);
if (select_list.first != scroll1.position)
{
select_list.first = scroll1.position;
DrawSelectList(select_list.count);
break;
}
if (mouse.vert) && (select_list.MouseScroll(mouse.vert)) DrawSelectList(select_list.count);
if (mouse.up)&&(mouse_clicked)
{
if (mouse.lkm) && (select_list.ProcessMouse(mouse.x, mouse.y)) EventApply();
mouse_clicked=false;
}
else if (mouse.down)&&(mouse.lkm) && (select_list.MouseOver(mouse.x, mouse.y)) mouse_clicked=true;
if (mouse.down)&&(mouse.pkm) { if (mouse.down)&&(mouse.pkm) {
select_list.ProcessMouse(mouse.x, mouse.y); select_list.ProcessMouse(mouse.x, mouse.y);
DrawSelectList(select_list.count); SelectList_Draw();
menu.show(Form.left+mouse.x, Form.top+mouse.y+skin_height, 136, "Open file Enter\nDelete Del", 10); menu.show(Form.left+mouse.x, Form.top+mouse.y+skin_height, 136, "Open file Enter\nDelete Del", 10);
} }
break; break;
case evButton: case evButton:
id=GetButtonID(); id=GetButtonID();
if (id==1) ExitProcess(); if (id==1) ExitProcess();
@ -137,7 +119,13 @@ void DrawWindowContent()
{ {
int id; int id;
id = select_list.cur_y; id = select_list.cur_y;
InitSelectList(LIST_PADDING, PANEL_H, Form.cwidth-scroll1.size_x-LIST_PADDING-LIST_PADDING, Form.cheight-PANEL_H-LIST_PADDING, false); SelectList_Init(
LIST_PADDING,
PANEL_H,
Form.cwidth-scroll1.size_x-LIST_PADDING-LIST_PADDING,
Form.cheight-PANEL_H-LIST_PADDING,
false
);
select_list.cur_y = id; select_list.cur_y = id;
DrawBar(0,0, Form.cwidth, PANEL_H-LIST_PADDING, system.color.work); DrawBar(0,0, Form.cwidth, PANEL_H-LIST_PADDING, system.color.work);
@ -147,7 +135,7 @@ void DrawWindowContent()
if (dir_exists(WALP_STANDART_PATH)) tabs.draw(strlen(T_SKINS)*8+TAB_PADDING+select_list.x+21, select_list.y, WALLPAPERS, T_WALLPAPERS); if (dir_exists(WALP_STANDART_PATH)) tabs.draw(strlen(T_SKINS)*8+TAB_PADDING+select_list.x+21, select_list.y, WALLPAPERS, T_WALLPAPERS);
DrawRectangle(select_list.x-1, select_list.y-1, select_list.w+1+scroll1.size_x, select_list.h+1, system.color.work_graph); DrawRectangle(select_list.x-1, select_list.y-1, select_list.w+1+scroll1.size_x, select_list.h+1, system.color.work_graph);
DrawSelectList(select_list.count); SelectList_Draw();
} }
@ -171,7 +159,7 @@ void Open_Dir()
} }
} }
void DrawSelectList_Line(dword i) void SelectList_DrawLine(dword i)
{ {
int yyy, list_last; int yyy, list_last;
@ -192,6 +180,11 @@ void DrawSelectList_Line(dword i)
} }
} }
void SelectList_LineChanged()
{
EventApply();
}
//===================================================// //===================================================//
// // // //
// EVENTS // // EVENTS //
@ -243,7 +236,7 @@ void EventApply()
cur = select_list.cur_y; cur = select_list.cur_y;
sprintf(#cur_file_path,"\\S__%s/%s",#folder_path,io.dir.position(files_mas[cur])); sprintf(#cur_file_path,"\\S__%s/%s",#folder_path,io.dir.position(files_mas[cur]));
RunProgram("/sys/media/kiv", #cur_file_path); RunProgram("/sys/media/kiv", #cur_file_path);
DrawSelectList(select_list.count); SelectList_Draw();
} }
} }

View File

@ -2,7 +2,7 @@
?include "lang.h--" ?include "lang.h--"
#endif #endif
#define MEMSIZE 0xDFE800 #define MEMSIZE 4096*20
#include "..\lib\mem.h" #include "..\lib\mem.h"
#include "..\lib\strings.h" #include "..\lib\strings.h"
#include "..\lib\list_box.h" #include "..\lib\list_box.h"
@ -62,18 +62,9 @@ void main()
{ {
case evMouse: case evMouse:
if (!CheckActiveProcess(Form.ID)) break; if (!CheckActiveProcess(Form.ID)) break;
mouse.get(); SelectList_ProcessMouse();
scrollbar_v_mouse (#scroll1);
if (select_list.first != scroll1.position)
{
select_list.first = scroll1.position;
DrawSelectList(clipboard.GetSlotCount());
break;
}
if (mouse.vert) && (select_list.MouseScroll(mouse.vert)) DrawSelectList(clipboard.GetSlotCount());
break; break;
case evButton: case evButton:
id=GetButtonID(); id=GetButtonID();
if (id==1) ExitProcess(); if (id==1) ExitProcess();
@ -86,7 +77,7 @@ void main()
case evKey: case evKey:
GetKeys(); GetKeys();
if (select_list.ProcessKey(key_scancode)) DrawSelectList(clipboard.GetSlotCount()); if (select_list.ProcessKey(key_scancode)) ClipViewSelectListDraw();
break; break;
case evReDraw: case evReDraw:
@ -96,19 +87,19 @@ void main()
IF (Form.status_window>=2) break; IF (Form.status_window>=2) break;
if (Form.height < 200) { MoveSize(OLD,OLD,OLD,200); break; } if (Form.height < 200) { MoveSize(OLD,OLD,OLD,200); break; }
if (Form.width < 570) { MoveSize(OLD,OLD,570,OLD); break; } if (Form.width < 570) { MoveSize(OLD,OLD,570,OLD); break; }
InitSelectList( SelectList_Init(
LIST_PADDING, LIST_PADDING,
LIST_PADDING+PANEL_TOP_H, LIST_PADDING+PANEL_TOP_H,
Form.cwidth-LIST_PADDING-LIST_PADDING-scroll1.size_x, Form.cwidth-LIST_PADDING-LIST_PADDING-scroll1.size_x,
Form.cheight-PANEL_BOTTOM_H-PANEL_TOP_H-LIST_PADDING-LIST_PADDING, Form.cheight-PANEL_BOTTOM_H-PANEL_TOP_H-LIST_PADDING-LIST_PADDING,
true true
); );
DrawWindowContent(); DrawWindowContent();
DrawSelectList(clipboard.GetSlotCount()); ClipViewSelectListDraw();
break; break;
default: default:
if (clipboard.GetSlotCount() > select_list.count) DrawSelectList(clipboard.GetSlotCount()); if (clipboard.GetSlotCount() > select_list.count) ClipViewSelectListDraw();
break; break;
} }
} }
@ -129,7 +120,7 @@ void DrawWindowContent()
WriteText(select_list.x+select_list.w-68, select_list.y - 23, select_list.font_type, system.color.work_text, T_COLUMN_VIEW); WriteText(select_list.x+select_list.w-68, select_list.y - 23, select_list.font_type, system.color.work_text, T_COLUMN_VIEW);
} }
void DrawSelectList_Line(dword i) void SelectList_DrawLine(dword i)
{ {
int yyy, length, slot_data_type_number; int yyy, length, slot_data_type_number;
dword line_text[2048]; dword line_text[2048];
@ -178,6 +169,15 @@ int SaveSlotContents(int slot_id) {
} }
} }
void ClipViewSelectListDraw() {
select_list.count = clipboard.GetSlotCount();
SelectList_Draw();
}
void SelectList_LineChanged() {
return;
}
//===================================================// //===================================================//
// // // //
// EVENTS // // EVENTS //
@ -186,19 +186,22 @@ int SaveSlotContents(int slot_id) {
void EventDeleteLastSlot() void EventDeleteLastSlot()
{ {
int i;
for (i=0; i<select_list.visible; i++;) DeleteButton(select_list.first + i + 100);
for (i=0; i<select_list.visible; i++;) DeleteButton(select_list.first + i + 300);
clipboard.DelLastSlot(); clipboard.DelLastSlot();
DrawSelectList(clipboard.GetSlotCount()); ClipViewSelectListDraw();
} }
void EventDeleteAllSlots() void EventDeleteAllSlots()
{ {
while (clipboard.GetSlotCount()) clipboard.DelLastSlot(); while (clipboard.GetSlotCount()) clipboard.DelLastSlot();
DrawSelectList(clipboard.GetSlotCount()); ClipViewSelectListDraw();
} }
void EventResetBufferLock() { void EventResetBufferLock() {
clipboard.ResetBlockingBuffer(); clipboard.ResetBlockingBuffer();
DrawSelectList(clipboard.GetSlotCount()); ClipViewSelectListDraw();
} }
void EventOpenAsText(int slot_id) { void EventOpenAsText(int slot_id) {

View File

@ -1,5 +1,24 @@
#define MEMSIZE 4096*10 #define MEMSIZE 4096*20
//===================================================//
// //
// LIB //
// //
//===================================================//
#include "../lib/gui.h" #include "../lib/gui.h"
#include "../lib/list_box.h"
#include "../lib/obj/box_lib.h"
#include "../lib/obj/libio_lib.h"
#include "../lib/obj/libini.h"
#include "../lib/patterns/select_list.h"
//===================================================//
// //
// DATA //
// //
//===================================================//
proc_info Form; proc_info Form;
#define WINDOW_TITLE "Driver Installer" #define WINDOW_TITLE "Driver Installer"
@ -18,32 +37,59 @@ proc_info Form;
#define WINDOW_STEP_DRIVER_LIST 2; #define WINDOW_STEP_DRIVER_LIST 2;
char window_step = WINDOW_STEP_INTRO; char window_step = WINDOW_STEP_INTRO;
//===================================================//
// //
// CODE //
// //
//===================================================//
void GetIniData()
{
ini_enum_sections stdcall ("/sys/drvinf.ini", #process_sections);
}
byte process_sections(dword sec_name, f_name)
{
ini_enum_keys stdcall (f_name, sec_name, #process_keys);
return true;
}
byte process_keys(dword key_value, key_name, sec_name, f_name)
{
debugln(key_value);
return true;
}
void main() void main()
{ {
word id; int id;
load_dll(libio, #libio_init,1);
load_dll(libini, #lib_init,1);
load_dll(boxlib, #box_lib_init,0);
//GetIniData();
SetEventMask(0x27);
loop() switch(WaitEvent()) loop() switch(WaitEvent())
{ {
case evMouse:
if (!CheckActiveProcess(Form.ID)) return;
SelectList_ProcessMouse();
break;
case evButton: case evButton:
id=GetButtonID(); id=GetButtonID();
if (id==1) ExitProcess(); if (id==1) ExitProcess();
if (id==BUTTON_ID_ASSEPT_RISK) { if (id==BUTTON_ID_ASSEPT_RISK) Event_AsseptRisk();
window_step = WINDOW_STEP_DRIVER_LIST; if (id==BUTTON_ID_README) Event_ShowReadme();
goto _EV_WINDOW_REDRAW; if (id==BUTTON_ID_INSTALL) Event_RunInstall();
}
break; break;
case evKey: case evKey:
GetKeys(); GetKeys();
if (select_list.ProcessKey(key_scancode)) SelectList_LineChanged();
break; break;
case evReDraw: case evReDraw:
_EV_WINDOW_REDRAW: Event_DrawWindow();
system.color.get();
DefineAndDrawWindow(215, 100, 550, 350, 0x33, system.color.work, WINDOW_TITLE);
GetProcessInfo(#Form, SelfInfo);
if (window_step == WINDOW_STEP_INTRO) draw_intro_window();
if (window_step == WINDOW_STEP_DRIVER_LIST) draw_driver_list_window();
break;
} }
} }
@ -64,15 +110,74 @@ void draw_driver_list_window()
{ {
int PADDING = 12; int PADDING = 12;
int right_frame_x = Form.cwidth/2 + PADDING + calc(PADDING/2); int right_frame_x = Form.cwidth/2 + PADDING + calc(PADDING/2);
incn y;
y.n = PADDING + 3;
//LEFT FRAME //LEFT FRAME
DrawBar(PADDING, PADDING, Form.cwidth/2 - PADDING, Form.cheight - PADDING - PADDING, 0xEEEeee); select_list.count = 4;
SelectList_Init(PADDING,
PADDING,
Form.cwidth/2 - PADDING - scroll1.size_x,
Form.cheight - PADDING - PADDING,
false);
SelectList_Draw();
//RIGHT FRAME //RIGHT FRAME
WriteTextB(right_frame_x, y.n, 0x81, system.color.work_text, "ATI KMS"); WriteTextB(right_frame_x, PADDING+3, 0x81, system.color.work_text, "ATI KMS");
WriteText(right_frame_x, y.inc(20), 0x80, MixColors(system.color.work, 0xCCCccc,80), "ver 4.4"); WriteText(right_frame_x, PADDING+23, 0x80, MixColors(system.color.work, system.color.work_text,120), "ver 4.4");
DrawTextViewArea(right_frame_x-2, y.inc(30), Form.cwidth - right_frame_x - PADDING, Form.cheight-100, DrawTextViewArea(right_frame_x-2, PADDING+53, Form.cwidth - right_frame_x - PADDING, Form.cheight-100,
T_CAUTION_PARAGRAPH, -1, system.color.work_text); T_CAUTION_PARAGRAPH, -1, system.color.work_text);
right_frame_x += DrawStandartCaptButton(right_frame_x, Form.cheight-40, BUTTON_ID_README, T_README); right_frame_x += DrawStandartCaptButton(right_frame_x, Form.cheight-40, BUTTON_ID_README, T_README);
DrawStandartCaptButton(right_frame_x, Form.cheight-40, BUTTON_ID_INSTALL, T_INSTALL); DrawStandartCaptButton(right_frame_x, Form.cheight-40, BUTTON_ID_INSTALL, T_INSTALL);
} }
void SelectList_DrawLine(dword i)
{
int yyy, list_last;
yyy = i*select_list.item_h+select_list.y;
if (select_list.cur_y-select_list.first==i)
{
DrawBar(select_list.x, yyy, select_list.w, select_list.item_h, system.color.work_button);
WriteText(select_list.x+12,yyy+select_list.text_y,select_list.font_type,system.color.work_button_text, "Hello");
}
else
{
DrawBar(select_list.x,yyy,select_list.w, select_list.item_h, 0xFFFfff);
WriteText(select_list.x+12,yyy+select_list.text_y,select_list.font_type,0, "Hello");
}
}
void SelectList_LineChanged()
{
SelectList_Draw();
}
//===================================================//
// //
// EVENTS //
// //
//===================================================//
void Event_DrawWindow()
{
system.color.get();
DefineAndDrawWindow(215, 100, 600, 400, 0x33, system.color.work, WINDOW_TITLE);
GetProcessInfo(#Form, SelfInfo);
if (window_step == WINDOW_STEP_INTRO) draw_intro_window();
if (window_step == WINDOW_STEP_DRIVER_LIST) draw_driver_list_window();
return;
}
void Event_AsseptRisk()
{
window_step = WINDOW_STEP_DRIVER_LIST;
Event_DrawWindow();
}
void Event_ShowReadme()
{
return;
}
void Event_RunInstall()
{
return;
}

View File

@ -4,38 +4,55 @@ dword select_list_count_offset;
?define T_SELECT_LIST_NO_DATA "No data to show" ?define T_SELECT_LIST_NO_DATA "No data to show"
void InitSelectList(dword _x, _y, _w, _h, _no_selection) void SelectList_Init(dword _x, _y, _w, _h, _no_selection)
{ {
select_list.no_selection = _no_selection; select_list.no_selection = _no_selection;
select_list.SetFont(8, 14, 0x90); select_list.SetFont(8, 14, 0x90);
select_list.SetSizes(_x, _y, _w, _h, 20); select_list.SetSizes(_x, _y, _w, _h, 20);
} }
void DrawSelectList(dword _items_count) void SelectList_Draw()
{ {
int i, list_last; int i, list_last;
select_list.count = _items_count;
select_list.CheckDoesValuesOkey(); select_list.CheckDoesValuesOkey();
if (select_list.count > select_list.visible) list_last = select_list.visible; else list_last = select_list.count; if (select_list.count > select_list.visible) list_last = select_list.visible; else list_last = select_list.count;
for (i=0; i<select_list.visible; i++;) DeleteButton(select_list.first + i + 100);
for (i=0; i<select_list.visible; i++;) DeleteButton(select_list.first + i + 300);
for (i=0; i<list_last; i++;) for (i=0; i<list_last; i++;)
{ {
DrawBar(select_list.x,i*select_list.item_h+select_list.y,select_list.w, select_list.item_h, 0xFFFfff); DrawBar(select_list.x,i*select_list.item_h+select_list.y,select_list.w, select_list.item_h, 0xFFFfff);
DrawSelectList_Line(i); //NEED TO BE IMPLEMENTED IN APP SelectList_DrawLine(i); //NEED TO BE IMPLEMENTED IN APP
} }
DrawBar(select_list.x,i*select_list.item_h+select_list.y, select_list.w, -i*select_list.item_h+ select_list.h, 0xFFFfff); DrawBar(select_list.x,i*select_list.item_h+select_list.y, select_list.w, -i*select_list.item_h+ select_list.h, 0xFFFfff);
if (!select_list.count) WriteText(-strlen(T_SELECT_LIST_NO_DATA)*select_list.font_w + select_list.w / 2 + select_list.x + 1, if (!select_list.count) WriteText(-strlen(T_SELECT_LIST_NO_DATA)*select_list.font_w + select_list.w / 2 + select_list.x + 1,
select_list.h / 2 - 8 + select_list.y, select_list.font_type, 0x999999, T_SELECT_LIST_NO_DATA); select_list.h / 2 - 8 + select_list.y, select_list.font_type, 0x999999, T_SELECT_LIST_NO_DATA);
DrawSelectListScroller(); SelectList_DrawScroller();
}
void SelectList_ProcessMouse()
{
int mouse_clicked;
mouse.get();
scrollbar_v_mouse (#scroll1);
if (select_list.first != scroll1.position)
{
select_list.first = scroll1.position;
SelectList_Draw();
}
if (mouse.vert) && (select_list.MouseScroll(mouse.vert)) SelectList_Draw();
if (mouse.up)&&(mouse_clicked)
{
if (mouse.lkm) && (select_list.ProcessMouse(mouse.x, mouse.y)) SelectList_LineChanged();
mouse_clicked=false;
}
else if (mouse.down)&&(mouse.lkm) && (select_list.MouseOver(mouse.x, mouse.y)) mouse_clicked=true;
} }
void DrawSelectListScroller() void SelectList_DrawScroller()
{ {
scroll1.bckg_col = MixColors(system.color.work, 0xBBBbbb, 80); scroll1.bckg_col = MixColors(system.color.work, 0xBBBbbb, 80);
scroll1.frnt_col = MixColors(system.color.work,0xFFFfff,120); scroll1.frnt_col = MixColors(system.color.work,0xFFFfff,120);
@ -51,4 +68,4 @@ void DrawSelectListScroller()
scroll1.size_y = select_list.h+2; scroll1.size_y = select_list.h+2;
scrollbar_v_draw(#scroll1); scrollbar_v_draw(#scroll1);
} }