Subversion Repositories Kolibri OS

Rev

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