//@RB - v0.5 #include "..\lib\kolibri.h" #include "..\lib\figures.h" #include "..\lib\file_system.h" #define ITEM_HEIGHT 18 #define ITEM_WIDTH 138 char *ITEMS_LIST[]={ "Сменить тему окон "w, "/sys/SKINSEL", 0, "Выбрать цвет фона "w, "/sys/media/palitra", 0, "Управление иконками "w, "/sys/ICON", 0, "Настройка устройств "w, "/sys/SETUP", 0, "Обновить стол "w, "/sys/REFRSCRN", 0, "Процессы "w, "/sys/CPU", 0, 0}; dword stak[100]; void main() { mouse mm; byte thread_id; SetEventMask(100000b); loop() switch(WaitEvent()) { case evMouse: mm.get(); if (GetPointOwner(mm.x, mm.y)==1) && (mm.pkm) { SwitchToAnotherThread(); CreateThread(#window,#stak); } } } void window() { proc_info MenuForm; system_colors sc; mouse m; int items_num, items_cur; int id1, key, i; sc.get(); SetEventMask(100111b); loop() switch(WaitEvent()) { case evMouse: m.get(); GetProcessInfo(#MenuForm, SelfInfo); id1=GetProcessSlot(MenuForm.ID); if (id1<>GetActiveProcess()) ExitProcess(); id1=m.y-1/ITEM_HEIGHT; if (m.y<0) || (id1+1>items_num) || (m.x<0) || (m.x>ITEM_WIDTH) break; if (m.lkm) || (m.pkm) { //feel clicking DrawBar(1, items_cur*ITEM_HEIGHT+2, ITEM_WIDTH-1, ITEM_HEIGHT-2, sc.work_graph); WriteText(8,items_cur*ITEM_HEIGHT+6,0x80,sc.work_button_text,ITEMS_LIST[items_cur*3],0); Pause(4); ItemProcess(items_cur); } if (items_cur<>id1) { items_cur=id1; goto _ITEMS_DRAW; } break; case evButton: break; case evKey: key = GetKey(); if (key==27) ExitProcess(); if (key==178) && (items_cur) { items_cur--; goto _ITEMS_DRAW; } if (key==177) && (items_cur+1