Subversion Repositories Kolibri OS

Rev

Rev 3077 | Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. //@RB - v0.6
  2.  
  3. #include "..\lib\kolibri.h"
  4. #include "..\lib\strings.h"
  5. #include "..\lib\figures.h"
  6. #include "..\lib\file_system.h"
  7.  
  8. #ifndef AUTOBUILD
  9. #include "lang.h--"
  10. #endif
  11.  
  12. #ifdef LANG_RUS
  13.         #define ITEM_HEIGHT 18
  14.         #define ITEM_WIDTH  138
  15.         char *ITEMS_LIST[]={
  16.         "‘¬¥­¨âì ⥬㠮ª®­   ", "/sys/SKINSEL",       0,
  17.         "‚ë¡à âì 梥â ä®­    ", "/sys/media/palitra", 0,
  18.         "“¯à ¢«¥­¨¥ ¨ª®­ª ¬¨ ", "/sys/ICON",          0,
  19.         " áâனª  ãáâனá⢠", "/sys/SETUP",         0,
  20.         "Ž¡­®¢¨âì á⮫       ", "/sys/REFRSCRN",      0,
  21.         "à®æ¥ááë            ", "/sys/CPU",           0,
  22.         0};
  23. #else
  24.         #define ITEM_HEIGHT 18
  25.         #define ITEM_WIDTH  122
  26.         char *ITEMS_LIST[]={
  27.         "Window skin         ", "/sys/SKINSEL",       0,
  28.         "Background          ", "/sys/media/palitra", 0,
  29.         "Icon manager        ", "/sys/ICON",          0,
  30.         "Device setup        ", "/sys/SETUP",         0,
  31.         "Refresh desktop     ", "/sys/REFRSCRN",      0,
  32.         "Processes           ", "/sys/CPU",           0,
  33.         0};
  34. #endif
  35.  
  36. dword stak[100];
  37.  
  38.  
  39. void main()
  40. {
  41.         mouse mm;
  42.         byte thread_id;
  43.         SetEventMask(100000b);
  44.        
  45.         loop() switch(WaitEvent())
  46.         {
  47.                 case evMouse:
  48.                         mm.get();
  49.  
  50.                         if (GetPointOwner(mm.x, mm.y)==1) && (mm.pkm)
  51.                         {
  52.                                 SwitchToAnotherThread();
  53.                                 CreateThread(#window,#stak);
  54.                         }
  55.         }
  56. }
  57.  
  58.        
  59. void window()
  60. {
  61.         proc_info MenuForm;
  62.         system_colors sc;
  63.         mouse m;       
  64.         int items_num, items_cur;
  65.         int id1, key, i;
  66.        
  67.         sc.get();
  68.         SetEventMask(100111b);
  69.        
  70.         loop() switch(WaitEvent())
  71.         {
  72.         case evMouse:
  73.                                 m.get();
  74.  
  75.                                 GetProcessInfo(#MenuForm, SelfInfo);
  76.                                 id1=GetProcessSlot(MenuForm.ID);
  77.                                 if (id1<>GetActiveProcess()) ExitProcess();                    
  78.                                 id1=m.y-1/ITEM_HEIGHT;
  79.                                 if (m.y<0) || (id1+1>items_num) || (m.x<0) || (m.x>ITEM_WIDTH) break;
  80.                                 if (m.lkm) || (m.pkm)
  81.                                 {
  82.                                         //feel clicking
  83.                                         DrawBar(1, items_cur*ITEM_HEIGHT+2, ITEM_WIDTH-1, ITEM_HEIGHT-2, sc.work_graph);
  84.                                         WriteText(8,items_cur*ITEM_HEIGHT+6,0x80,sc.work_button_text,ITEMS_LIST[items_cur*3]);
  85.                                         pause(4);
  86.                                        
  87.                                         ItemProcess(items_cur);
  88.                                 }
  89.                                 if (items_cur<>id1)
  90.                                 {
  91.                                         items_cur=id1;
  92.                                         goto _ITEMS_DRAW;
  93.                                 }
  94.                                
  95.                                 break;
  96.                                
  97.                 case evButton:
  98.                                 break;
  99.                                
  100.                 case evKey:
  101.                                 key = GetKey();
  102.                                 if (key==27) ExitProcess();
  103.                                 if (key==178) && (items_cur)
  104.                                 {
  105.                                         items_cur--;
  106.                                         goto _ITEMS_DRAW;
  107.                                 }
  108.                                 if (key==177) && (items_cur+1<items_num)
  109.                                 {
  110.                                         items_cur++;
  111.                                         goto _ITEMS_DRAW;
  112.                                 }
  113.                                 if (key==13)
  114.                                 {
  115.                                         ItemProcess(items_cur);
  116.                                 }
  117.                                 break;
  118.                                
  119.                 case evReDraw:
  120.                                 while (ITEMS_LIST[items_num*3]) items_num++;
  121.                                 m.get();
  122.                                 DefineAndDrawWindow(m.x+1,m.y,ITEM_WIDTH,items_num*ITEM_HEIGHT+1,0x01,sc.work,0, 0x01fffFFF);
  123.                                 DrawRectangle(0,0,ITEM_WIDTH,items_num*ITEM_HEIGHT+1,sc.work_graph); //îáîäîê
  124.                                
  125.                                 _ITEMS_DRAW:
  126.                                 for (i=0; i<items_num; i++;)
  127.                                 {
  128.                                         if (i==items_cur)
  129.                                         {
  130.                                                 DrawBar(1, i*ITEM_HEIGHT+1, ITEM_WIDTH-1, 1, sc.work_graph);
  131.                                                 DrawBar(1, i+1*ITEM_HEIGHT, ITEM_WIDTH-1, 1, 0xFFFfff);
  132.                                                 DrawBar(1, i*ITEM_HEIGHT+2, ITEM_WIDTH-1, ITEM_HEIGHT-2, sc.work_button);
  133.                                                 WriteText(8,i*ITEM_HEIGHT+6,0x80,sc.work_button_text,ITEMS_LIST[i*3]);
  134.                                         }
  135.                                         else
  136.                                         {
  137.                                                 DrawBar(1, i*ITEM_HEIGHT+1, ITEM_WIDTH-1, ITEM_HEIGHT, sc.work);
  138.                                                 WriteText(8,i*ITEM_HEIGHT+6,0x80,sc.work_text,ITEMS_LIST[i*3]);
  139.                                         }
  140.                                 }
  141.         }
  142. }
  143.  
  144. void ItemProcess(int num_id)
  145. {
  146.         RunProgram(ITEMS_LIST[num_id*3+1], ITEMS_LIST[num_id*3+2]);
  147.         ExitProcess();
  148. }
  149.  
  150. stop:
  151.