Subversion Repositories Kolibri OS

Rev

Rev 7252 | 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)-2,#src_box_text,0, ed_focus};
  12. edit_box dst_box = {340,20,95,0xffffff,0x94AECE,0xFFFfff,0xffffff,0x10000000,sizeof(dst_box_text)-2,#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.                                         EditBox_UpdateText(#src_box, #src_box.flags);
  48.                                 }
  49.                                 break;
  50.                         case BID_DST_OPEN:
  51.                                 OpenDialog_start stdcall (#o_dialog);
  52.                                 if (o_dialog.status) {
  53.                                         strcpy(#dst_box_text, #openfile_path);
  54.                                         EditBox_UpdateText(#dst_box, #dst_box.flags);
  55.                                 }
  56.                                 break;
  57.                         case BID_COMPARE:
  58.                                 sprintf(#run_param, "\"%s\" \"%s\"", #src_box_text, #dst_box_text);
  59.                                 io.run(I_Path, #run_param);
  60.                                 break;
  61.                         }
  62.                         break;
  63.          
  64.                 case evKey:
  65.                         GetKeys();
  66.                         if (key_scancode == SCAN_CODE_ESC) ExitProcess();
  67.                         if (key_scancode == SCAN_CODE_TAB) {
  68.                                 if ( src_box.flags & ed_focus ) {
  69.                                         src_box.flags -= ed_focus;
  70.                                         dst_box.flags += ed_focus;
  71.                                 } else {
  72.                                         src_box.flags += ed_focus;
  73.                                         dst_box.flags -= ed_focus;                                     
  74.                                 }              
  75.                                 edit_box_draw stdcall (#src_box);
  76.                                 edit_box_draw stdcall (#dst_box);
  77.                         }
  78.                         EAX = key_editbox;
  79.                         edit_box_key stdcall (#src_box);
  80.                         EAX = key_editbox;
  81.                         edit_box_key stdcall (#dst_box);
  82.                         break;
  83.                  
  84.                 case evReDraw:
  85.                         draw_window();
  86.                         break;
  87.         }
  88. }
  89.  
  90. void draw_window()
  91. {
  92.         system.color.get();
  93.         DefineAndDrawWindow(215, 100, 450, 195 + skin_height, 0x34, system.color.work, #window_title,0);
  94.         GetProcessInfo(#Form, SelfInfo);
  95.  
  96.         WriteText(src_box.left-2, src_box.top-21, 0x90, system.color.work_text, "First file:");
  97.         WriteText(dst_box.left-2, dst_box.top-21, 0x90, system.color.work_text, "Second file:");
  98.         DrawEditBox(#src_box);
  99.         DrawEditBox(#dst_box);
  100.         DrawStandartCaptButton(src_box.left + src_box.width + 15, src_box.top-3, BID_SRC_OPEN, "...");
  101.         DrawStandartCaptButton(dst_box.left + dst_box.width + 15, dst_box.top-3, BID_DST_OPEN, "...");
  102.         DrawStandartCaptButton(dst_box.left - 2, dst_box.top + 40, BID_COMPARE, "Compare");
  103. }