Subversion Repositories Kolibri OS

Rev

Rev 7219 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. #ifndef AUTOBUILD
  2. #include "lang.h--"
  3. #endif
  4.  
  5. #define MEMSIZE 0x23E80
  6. #include "..\lib\kolibri.h"
  7. #include "..\lib\strings.h"
  8. #include "..\lib\mem.h"
  9. #include "..\lib\fs.h"
  10. #include "..\lib\dll.h"
  11. #include "..\lib\gui.h"
  12.  
  13. #include "..\lib\obj\libio.h"
  14. #include "..\lib\obj\libini.h"
  15. #include "..\lib\obj\box_lib.h"
  16.  
  17. #include "..\lib\patterns\restart_process.h"
  18.  
  19. #ifdef LANG_RUS
  20.         ?define WINDOW_TITLE "Настройки панели задач и Дока"
  21.     ?define TASK_FRAME_T " Панель задач "
  22.         ?define DOCK_FRAME_T " Док "
  23.         ?define MIN_LEFT_BUTTON "Кнопка скрытия слева"
  24.         ?define MIN_RIGHT_BUTTON "Кнопка скрытия справа"
  25.         ?define SOFTEN_UP   "Сглаживание сверху"
  26.         ?define SOFTEN_DOWN "Сглаживание снизу"
  27.         ?define CLOCK    "Часы"
  28.         ?define CPU_USAGE "Загрузка ЦП"
  29.         ?define CHANGE_LANG "Язык ввода"
  30.         ?define MENU_BUTTON "Кнопка меню"
  31.         ?define PANEL_HEIGHT "Высота панели"
  32.         ?define SOFTEN_HEIGHT "Высота сглаживания"
  33.         ?define BUTTON_OFFSET "Поле вокруг кнопок"
  34.         ?define FSIZE "Режим панели"
  35.         ?define ASHOW "Не скрывать"
  36.         ?define CHANGE_POS "Нажмите на изображение для смены позиции"
  37. #else
  38.         ?define WINDOW_TITLE "Taskbar and Docky configuration"
  39.     ?define TASK_FRAME_T " Taskbar "
  40.         ?define DOCK_FRAME_T " Docky "
  41.         ?define MIN_LEFT_BUTTON "Min Left Button"
  42.         ?define MIN_RIGHT_BUTTON "Min Right Button"
  43.         ?define SOFTEN_UP   "Soften Up"
  44.         ?define SOFTEN_DOWN "Soften Down"
  45.         ?define CLOCK    "Clock"
  46.         ?define CPU_USAGE "Cpu Usage"
  47.         ?define CHANGE_LANG "Change Language"
  48.         ?define MENU_BUTTON "Menu Button"
  49.         ?define PANEL_HEIGHT "Panel Height"
  50.         ?define SOFTEN_HEIGHT "Soften Height"
  51.         ?define BUTTON_OFFSET "Button Offset"
  52.         ?define FSIZE "Full width"
  53.         ?define ASHOW "Always show"
  54.         ?define CHANGE_POS "Click on image to change position"
  55. #endif
  56.  
  57. char taskbar_ini_path[] = "/sys/settings/taskbar.ini";
  58. _ini taskbar_flags_ini = { #taskbar_ini_path, "Flags" };
  59. _ini taskbar_vars_ini = { #taskbar_ini_path, "Variables" };
  60.  
  61. _ini docky_ini = { "/sys/settings/docky.ini", "@" };
  62.  
  63. unsigned char panels_img_data[] = FROM "panels_image.raw";
  64. raw_image panels_img = { 37, 27, #panels_img_data };
  65.  
  66. proc_info Form;
  67.  
  68. word dkFsize;
  69. byte dkLocation, dkAshow;
  70.  
  71. byte tbAttachment, tbPanelHeight, tbSoftenHeight, tbButtonOffset,
  72.      tbSoftenUp, tbSoftenDown, tbMinLeftButton, tbMinRightButton, tbMenuButton,
  73.      tbRunApplButton, tbClnDeskButton, tbClock, tbCpuUsage, tbChangeLang;
  74.  
  75. enum {
  76.         TASKBAR,
  77.         DOCKY,
  78.         ALL
  79. };
  80.  
  81.  
  82. void main()
  83. {
  84.         dword id, key;
  85.  
  86.         load_dll(libini, #lib_init,1);
  87.         load_dll(boxlib, #box_lib_init,0);
  88.  
  89.         LoadCfg();
  90.  
  91.         loop() switch(WaitEvent())
  92.         {
  93.                 case evButton:
  94.                                 id=GetButtonID();
  95.                                 if (id==1) ExitProcess();
  96.                                 //taskbar buttons
  97.                                 if (id>=100) && (id<200)
  98.                                 {
  99.                                         if (id==100) tbAttachment ^= 1;
  100.                                         if (id==105) tbSoftenUp ^= 1;
  101.                                         if (id==106) tbSoftenDown ^= 1;
  102.                                         if (id==107) tbMinLeftButton ^= 1;
  103.                                         if (id==108) tbMinRightButton ^= 1;
  104.                                         if (id==109) tbRunApplButton ^= 1;
  105.                                         if (id==110) tbClnDeskButton ^= 1;
  106.                                         if (id==111) tbClock ^= 1;
  107.                                         if (id==112) tbCpuUsage ^= 1;
  108.                                         if (id==113) tbChangeLang ^= 1;
  109.                                         if (id==114) tbMenuButton ^= 1;
  110.                                         if (id==120) tbPanelHeight++;
  111.                                         if (id==121) && (tbPanelHeight>6) tbPanelHeight--;
  112.                                         if (id==122) tbSoftenHeight++;
  113.                                         if (id==123) && (tbSoftenHeight>0) tbSoftenHeight--;
  114.                                         if (id==124) tbButtonOffset++;
  115.                                         if (id==125) && (tbButtonOffset>0) tbButtonOffset--;
  116.                                         DrawWindowContent(TASKBAR);
  117.                                         SaveCfg(TASKBAR);
  118.                                         RestartProcess(TASKBAR);
  119.                                 }
  120.                                 //docky buttons                
  121.                                 if (id>=200)
  122.                                 {
  123.                                         if (id==200)
  124.                                         {
  125.                                                 dkLocation++;
  126.                                                 if (dkLocation>3) dkLocation=1;
  127.                                         }
  128.                                         if (id==201) dkFsize ^= 1;
  129.                                         if (id==202) dkAshow ^= 1;
  130.                                         DrawWindowContent(DOCKY);
  131.                                         SaveCfg(DOCKY);
  132.                                         RestartProcess(DOCKY);
  133.                                 }
  134.                                 break;
  135.                                
  136.                 case evKey:
  137.                                 key = GetKey();
  138.                                 if (key==27) ExitProcess();
  139.                                 break;
  140.                        
  141.                 case evReDraw:
  142.                                 system.color.get();
  143.                                 DefineAndDrawWindow(130, 150, 465, 398 + skin_height, 0x34, system.color.work, WINDOW_TITLE, 0);
  144.                                 GetProcessInfo(#Form, SelfInfo);
  145.                                 if (Form.status_window>2) break;
  146.                                 DrawWindowContent(ALL);
  147.         }
  148. }
  149.  
  150.  
  151. void DrawWindowContent(byte panel_type)
  152. {
  153.         #define PD 10
  154.         dword frame_y;
  155.         word win_center_x = Form.cwidth / 2 + 20;
  156.         incn y;
  157.  
  158.         if (panel_type==ALL) || (panel_type==TASKBAR)
  159.         {
  160.                 frame_y = 15;
  161.                 y.n = frame_y;
  162.                 DefineButton(22, y.inc(18), panels_img.w-1, 27-1, 100 + BT_HIDE, 0);
  163.                 _PutImage(22, y.n, 37, 27, tbAttachment * 37 * 27 * 3 + panels_img.data);
  164.                 WriteText(68, y.inc(7), 0x90, system.color.work_text, CHANGE_POS);
  165.                 CheckBox(22, y.inc(35), 105, SOFTEN_UP, tbSoftenUp);
  166.                 CheckBox(win_center_x, y.n, 111, CLOCK, tbClock);
  167.                 CheckBox(22, y.inc(24), 106, SOFTEN_DOWN, tbSoftenDown);
  168.                 CheckBox(win_center_x, y.n, 112, CPU_USAGE, tbCpuUsage);
  169.                 CheckBox(22, y.inc(24), 107, MIN_LEFT_BUTTON, tbMinLeftButton);
  170.                 CheckBox(win_center_x, y.n, 113, CHANGE_LANG, tbChangeLang);
  171.                 CheckBox(22, y.inc(24), 108, MIN_RIGHT_BUTTON, tbMinRightButton);
  172.                 CheckBox(win_center_x, y.n, 114, MENU_BUTTON, tbMenuButton);   
  173.                 MoreLessBox(22, y.inc(28), 120, 121, tbPanelHeight, PANEL_HEIGHT);
  174.                 MoreLessBox(22, y.inc(32), 122, 123, tbSoftenHeight, SOFTEN_HEIGHT);
  175.                 MoreLessBox(22, y.inc(32), 124, 125, tbButtonOffset, BUTTON_OFFSET);
  176.                 DrawFrame(PD, frame_y, Form.cwidth-PD-PD, y.inc(32)-frame_y, TASK_FRAME_T);
  177.         }
  178.         if (panel_type==ALL) || (panel_type==DOCKY)
  179.         {
  180.                 frame_y = calc(y.inc(20));
  181.                 DefineButton(22, y.inc(18), panels_img.w-1, 27-1, 200 + BT_HIDE, 0);
  182.                 _PutImage(22, y.n,  37, 27, dkLocation + 1 * 37 * 27 * 3 + panels_img.data);
  183.                 WriteText(68, y.inc(7), 0x90, system.color.work_text, CHANGE_POS);
  184.                 CheckBox(22, y.inc(35), 201, FSIZE,  dkFsize);
  185.                 CheckBox(win_center_x, y.n, 202, ASHOW, dkAshow);
  186.                 DrawFrame(PD, frame_y, Form.cwidth-PD-PD, Form.cheight-frame_y-PD, DOCK_FRAME_T);
  187.         }
  188. }
  189.  
  190. void LoadCfg()
  191. {
  192.         tbAttachment     = taskbar_flags_ini.GetInt("Attachment", 1);    
  193.         tbSoftenUp       = taskbar_flags_ini.GetInt("SoftenUp", 1);      
  194.         tbSoftenDown     = taskbar_flags_ini.GetInt("SoftenDown", 1);    
  195.         tbMinLeftButton  = taskbar_flags_ini.GetInt("MinLeftButton", 1);
  196.         tbMinRightButton = taskbar_flags_ini.GetInt("MinRightButton", 1);
  197.         tbClock          = taskbar_flags_ini.GetInt("Clock", 1);        
  198.         tbCpuUsage       = taskbar_flags_ini.GetInt("CpuUsage", 1);      
  199.         tbChangeLang     = taskbar_flags_ini.GetInt("ChangeLang", 1);    
  200.         tbMenuButton     = taskbar_flags_ini.GetInt("MenuButton", 1);    
  201.         tbPanelHeight  = taskbar_vars_ini.GetInt("PanelHeight", 18);  
  202.         tbSoftenHeight = taskbar_vars_ini.GetInt("SoftenHeight", 4);  
  203.         tbButtonOffset = taskbar_vars_ini.GetInt("ButtonTopOffset", 3);
  204.         tbButtonOffset = taskbar_vars_ini.GetInt("ButtonBotOffset", 3);
  205.  
  206.         dkLocation = docky_ini.GetInt("location", 0);
  207.         dkFsize = docky_ini.GetInt("fsize", 0);  
  208.         dkAshow = docky_ini.GetInt("ashow", 0);  
  209. }
  210.  
  211. void SaveCfg(byte panel_type)
  212. {
  213.         if (panel_type==TASKBAR) {
  214.                 taskbar_flags_ini.SetInt("Attachment", tbAttachment);
  215.                 taskbar_flags_ini.SetInt("SoftenUp", tbSoftenUp);
  216.                 taskbar_flags_ini.SetInt("SoftenDown", tbSoftenDown);
  217.                 taskbar_flags_ini.SetInt("MinLeftButton", tbMinLeftButton);
  218.                 taskbar_flags_ini.SetInt("MinRightButton", tbMinRightButton);
  219.                 taskbar_flags_ini.SetInt("RunApplButton", tbRunApplButton);
  220.                 taskbar_flags_ini.SetInt("ClnDeskButton", tbClnDeskButton);
  221.                 taskbar_flags_ini.SetInt("Clock", tbClock);
  222.                 taskbar_flags_ini.SetInt("CpuUsage", tbCpuUsage);
  223.                 taskbar_flags_ini.SetInt("ChangeLang", tbChangeLang);
  224.                 taskbar_flags_ini.SetInt("MenuButton", tbMenuButton);
  225.                 taskbar_vars_ini.SetInt("PanelHeight", tbPanelHeight);
  226.                 taskbar_vars_ini.SetInt("SoftenHeight", tbSoftenHeight);
  227.                 taskbar_vars_ini.SetInt("ButtonTopOffset", tbButtonOffset);
  228.                 taskbar_vars_ini.SetInt("ButtonBottOffset", tbButtonOffset);
  229.         }
  230.         if (panel_type==DOCKY) {
  231.                 docky_ini.SetInt("location", dkLocation);
  232.                 docky_ini.SetInt("fsize", dkFsize);
  233.                 docky_ini.SetInt("ashow", dkAshow);
  234.         }
  235. }
  236.  
  237. void RestartProcess(byte panel_type)
  238. {
  239.         dword proc_name1;
  240.         if (panel_type == TASKBAR)
  241.         {
  242.                 RestartProcessByName("@taskbar", SINGLE);
  243.                 pause(50);
  244.         }
  245.         else
  246.         {
  247.                 RestartProcessByName("@docky", SINGLE);
  248.                 pause(120);
  249.         }
  250.         GetProcessInfo(#Form, SelfInfo);
  251.         ActivateWindow(GetProcessSlot(Form.ID));
  252. }
  253.  
  254.  
  255.  
  256. stop: