Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. //@RB - v0.5
  2.  
  3. #include "..\lib\kolibri.h"
  4. #include "..\lib\figures.h"
  5. #include "..\lib\file_system.h"
  6.  
  7.  
  8. #define ITEM_HEIGHT 18
  9. #define ITEM_WIDTH  138
  10.  
  11. char *ITEMS_LIST[]={
  12. "Ñìåíèòü òåìó îêîí   "w, "/sys/SKINSEL",       0,
  13. "Âûáðàòü öâåò ôîíà   "w, "/sys/media/palitra", 0,
  14. "Óïðàâëåíèå èêîíêàìè "w, "/sys/ICON",          0,
  15. "Íàñòðîéêà óñòðîéñòâ "w, "/sys/SETUP",         0,
  16. "Îáíîâèòü ñòîë       "w, "/sys/REFRSCRN",      0,
  17. "Ïðîöåññû            "w, "/sys/CPU",           0,
  18. 0};
  19.  
  20. dword stak[100];
  21.  
  22.  
  23. void main()
  24. {
  25.         mouse mm;
  26.         byte thread_id;
  27.         SetEventMask(100000b);
  28.        
  29.         loop() switch(WaitEvent())
  30.         {
  31.                 case evMouse:
  32.                         mm.get();
  33.  
  34.                         if (GetPointOwner(mm.x, mm.y)==1) && (mm.pkm)
  35.                         {
  36.                                 SwitchToAnotherThread();
  37.                                 CreateThread(#window,#stak);
  38.                         }
  39.         }
  40. }
  41.  
  42.        
  43. void window()
  44. {
  45.         proc_info MenuForm;
  46.         system_colors sc;
  47.         mouse m;       
  48.         int items_num, items_cur;
  49.         int id1, key, i;
  50.        
  51.         sc.get();
  52.         SetEventMask(100111b);
  53.        
  54.         loop() switch(WaitEvent())
  55.         {
  56.         case evMouse:
  57.                                 m.get();
  58.  
  59.                                 GetProcessInfo(#MenuForm, SelfInfo);
  60.                                 id1=GetProcessSlot(MenuForm.ID);
  61.                                 if (id1<>GetActiveProcess()) ExitProcess();                    
  62.                                 id1=m.y-1/ITEM_HEIGHT;
  63.                                 if (m.y<0) || (id1+1>items_num) || (m.x<0) || (m.x>ITEM_WIDTH) break;
  64.                                 if (m.lkm) || (m.pkm)
  65.                                 {
  66.                                         //feel clicking
  67.                                         DrawBar(1, items_cur*ITEM_HEIGHT+2, ITEM_WIDTH-1, ITEM_HEIGHT-2, sc.work_graph);
  68.                                         WriteText(8,items_cur*ITEM_HEIGHT+6,0x80,sc.work_button_text,ITEMS_LIST[items_cur*3],0);
  69.                                         Pause(4);
  70.                                        
  71.                                         ItemProcess(items_cur);
  72.                                 }
  73.                                 if (items_cur<>id1)
  74.                                 {
  75.                                         items_cur=id1;
  76.                                         goto _ITEMS_DRAW;
  77.                                 }
  78.                                
  79.                                 break;
  80.                                
  81.                 case evButton:
  82.                                 break;
  83.                                
  84.                 case evKey:
  85.                                 key = GetKey();
  86.                                 if (key==27) ExitProcess();
  87.                                 if (key==178) && (items_cur)
  88.                                 {
  89.                                         items_cur--;
  90.                                         goto _ITEMS_DRAW;
  91.                                 }
  92.                                 if (key==177) && (items_cur+1<items_num)
  93.                                 {
  94.                                         items_cur++;
  95.                                         goto _ITEMS_DRAW;
  96.                                 }
  97.                                 if (key==13)
  98.                                 {
  99.                                         ItemProcess(items_cur);
  100.                                 }
  101.                                 break;
  102.                                
  103.                 case evReDraw:
  104.                                 while (ITEMS_LIST[items_num*3]) items_num++;
  105.                                 m.get();
  106.                                 DefineAndDrawWindow(m.x+1,m.y,ITEM_WIDTH,items_num*ITEM_HEIGHT+1,0x01,sc.work,0, 0x01fffFFF);
  107.                                 DrawRectangle(0,0,ITEM_WIDTH,items_num*ITEM_HEIGHT+1,sc.work_graph); //îáîäîê
  108.                                
  109.                                 _ITEMS_DRAW:
  110.                                 for (i=0; i<items_num; i++;)
  111.                                 {
  112.                                         if (i==items_cur)
  113.                                         {
  114.                                                 DrawBar(1, i*ITEM_HEIGHT+1, ITEM_WIDTH-1, 1, sc.work_graph);
  115.                                                 DrawBar(1, i+1*ITEM_HEIGHT, ITEM_WIDTH-1, 1, 0xFFFfff);
  116.                                                 DrawBar(1, i*ITEM_HEIGHT+2, ITEM_WIDTH-1, ITEM_HEIGHT-2, sc.work_button);
  117.                                                 WriteText(8,i*ITEM_HEIGHT+6,0x80,sc.work_button_text,ITEMS_LIST[i*3],0);
  118.                                         }
  119.                                         else
  120.                                         {
  121.                                                 DrawBar(1, i*ITEM_HEIGHT+1, ITEM_WIDTH-1, ITEM_HEIGHT, sc.work);
  122.                                                 WriteText(8,i*ITEM_HEIGHT+6,0x80,sc.work_text,ITEMS_LIST[i*3],0);
  123.                                         }
  124.                                 }
  125.         }
  126. }
  127.  
  128. void ItemProcess(int num_id)
  129. {
  130.         RunProgram(ITEMS_LIST[num_id*3+1], ITEMS_LIST[num_id*3+2]);
  131.         ExitProcess();
  132. }
  133.  
  134. stop:
  135.