Subversion Repositories Kolibri OS

Rev

Rev 6746 | Rev 7252 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. #include "../lib/gui.h"
  2. #include "../lib/obj/box_lib.h"
  3. #include "../lib/obj/proc_lib.h"
  4. #include "../lib/patterns/simple_open_dialog.h"
  5.  
  6. char default_dir[] = "/rd/1";
  7. od_filter filter2 = {0,0};
  8.  
  9. int mouse_dd1, mouse_dd2;
  10. char src_box_text[4096];
  11. char dst_box_text[4096];
  12. edit_box src_box = {340,20,35,0xffffff,0x94AECE,0xFFFfff,0xffffff,0x10000000,sizeof(src_box_text),#src_box_text,#mouse_dd1, 10b};
  13. edit_box dst_box = {340,20,95,0xffffff,0x94AECE,0xFFFfff,0xffffff,0x10000000,sizeof(dst_box_text),#dst_box_text,#mouse_dd2, 0b};
  14.  
  15. #define BID_EXIT_PRC 01
  16. #define BID_SRC_OPEN 10
  17. #define BID_DST_OPEN 11
  18. #define BID_COMPARE  12
  19.  
  20. proc_info Form;
  21.  
  22. void gui()
  23. {
  24.         word btn;
  25.         char run_param[4096];
  26.         load_dll(boxlib, #box_lib_init,0);
  27.         load_dll(Proc_lib,  #OpenDialog_init,0);
  28.         OpenDialog_init stdcall (#o_dialog);
  29.         SetEventMask(0x27);
  30.  
  31.         loop() switch(WaitEvent())
  32.         {
  33.                 case evMouse:
  34.                         edit_box_mouse stdcall (#src_box);
  35.                         edit_box_mouse stdcall (#dst_box);
  36.                         break;
  37.  
  38.                 case evButton:
  39.                         btn = GetButtonID();
  40.                         switch (btn)
  41.                         {
  42.                         case BID_EXIT_PRC:
  43.                                 ExitProcess();
  44.                         case BID_SRC_OPEN:
  45.                                 OpenDialog_start stdcall (#o_dialog);
  46.                                 if (o_dialog.status) {
  47.                                         strcpy(#src_box_text, #openfile_path);
  48.                                         src_box.size = src_box.pos
  49.                                         = src_box.shift = src_box.shift_old = strlen(#src_box_text);
  50.                                 }
  51.                                 break;
  52.                         case BID_DST_OPEN:
  53.                                 OpenDialog_start stdcall (#o_dialog);
  54.                                 if (o_dialog.status) {
  55.                                         strcpy(#dst_box_text, #openfile_path);
  56.                                         dst_box.size = dst_box.pos
  57.                                         = dst_box.shift = dst_box.shift_old = strlen(#dst_box_text);
  58.                                 }
  59.                                 break;
  60.                         case BID_COMPARE:
  61.                                 sprintf(#run_param, "\"%s\" \"%s\"", #src_box_text, #dst_box_text);
  62.                                 io.run(I_Path, #run_param);
  63.                                 break;
  64.                         }
  65.                         break;
  66.          
  67.                 case evKey:
  68.                         GetKeys();
  69.                         if (key_scancode == SCAN_CODE_ESC) ExitProcess();
  70.                         if (key_scancode == SCAN_CODE_TAB) {
  71.                                 if ( src_box.flags & 10b ) {
  72.                                         src_box.flags -= 10b;
  73.                                         dst_box.flags += 10b;
  74.                                 } else {
  75.                                         src_box.flags += 10b;
  76.                                         dst_box.flags -= 10b;                                  
  77.                                 }              
  78.                                 edit_box_draw stdcall (#src_box);
  79.                                 edit_box_draw stdcall (#dst_box);
  80.                         }
  81.                         EAX = key_editbox;
  82.                         edit_box_key stdcall (#src_box);
  83.                         EAX = key_editbox;
  84.                         edit_box_key stdcall (#dst_box);
  85.                         break;
  86.                  
  87.                 case evReDraw:
  88.                         draw_window();
  89.                         break;
  90.         }
  91. }
  92.  
  93. void draw_window()
  94. {
  95.         system.color.get();
  96.         DefineAndDrawWindow(215, 100, 450, 195 + skin_height, 0x34, system.color.work, #window_title,0);
  97.         GetProcessInfo(#Form, SelfInfo);
  98.  
  99.         WriteText(src_box.left-2, src_box.top-21, 0x90, system.color.work_text, "First file:");
  100.         WriteText(dst_box.left-2, dst_box.top-21, 0x90, system.color.work_text, "Second file:");
  101.         DrawEditBox(#src_box);
  102.         DrawEditBox(#dst_box);
  103.         DrawStandartCaptButton(src_box.left + src_box.width + 15, src_box.top-3, BID_SRC_OPEN, "...");
  104.         DrawStandartCaptButton(dst_box.left + dst_box.width + 15, dst_box.top-3, BID_DST_OPEN, "...");
  105.         DrawStandartCaptButton(dst_box.left - 2, dst_box.top + 40, BID_COMPARE, "Compare");
  106. }