Subversion Repositories Kolibri OS

Rev

Rev 6735 | Rev 6759 | 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.         debugln("GUI");
  32.  
  33.         loop() switch(WaitEvent())
  34.         {
  35.                 case evMouse:
  36.                         edit_box_mouse stdcall (#src_box);
  37.                         edit_box_mouse stdcall (#dst_box);
  38.                         break;
  39.  
  40.                 case evButton:
  41.                         btn = GetButtonID();
  42.                         switch (btn)
  43.                         {
  44.                         case BID_EXIT_PRC:
  45.                                 ExitProcess();
  46.                         case BID_SRC_OPEN:
  47.                                 OpenDialog_start stdcall (#o_dialog);
  48.                                 if (o_dialog.status) {
  49.                                         strcpy(#src_box_text, #openfile_path);
  50.                                         src_box.size = src_box.pos
  51.                                         = src_box.shift = src_box.shift_old = strlen(#src_box_text);
  52.                                 }
  53.                                 break;
  54.                         case BID_DST_OPEN:
  55.                                 OpenDialog_start stdcall (#o_dialog);
  56.                                 if (o_dialog.status) {
  57.                                         strcpy(#dst_box_text, #openfile_path);
  58.                                         dst_box.size = dst_box.pos
  59.                                         = dst_box.shift = dst_box.shift_old = strlen(#dst_box_text);
  60.                                 }
  61.                                 break;
  62.                         case BID_COMPARE:
  63.                                 sprintf(#run_param, "\"%s\" \"%s\"", #src_box_text, #dst_box_text);
  64.                                 io.run(I_Path, #run_param);
  65.                                 break;
  66.                         }
  67.                         break;
  68.          
  69.                 case evKey:
  70.                         GetKeys();
  71.                         if (key_scancode == SCAN_CODE_ESC) ExitProcess();
  72.                         if (key_scancode == SCAN_CODE_TAB) {
  73.                                 if ( src_box.flags & 10b ) {
  74.                                         src_box.flags -= 10b;
  75.                                         dst_box.flags += 10b;
  76.                                 } else {
  77.                                         src_box.flags += 10b;
  78.                                         dst_box.flags -= 10b;                                  
  79.                                 }              
  80.                                 edit_box_draw stdcall (#src_box);
  81.                                 edit_box_draw stdcall (#dst_box);
  82.                         }
  83.                         EAX = key_editbox;
  84.                         edit_box_key stdcall (#src_box);
  85.                         EAX = key_editbox;
  86.                         edit_box_key stdcall (#dst_box);
  87.                         break;
  88.                  
  89.                 case evReDraw:
  90.                         draw_window();
  91.                         break;
  92.         }
  93. }
  94.  
  95. void draw_window()
  96. {
  97.         system.color.get();
  98.         DefineAndDrawWindow(215, 100, 450, 195 + skin_height, 0x34, system.color.work, #window_title,0);
  99.         GetProcessInfo(#Form, SelfInfo);
  100.  
  101.         WriteText(src_box.left-2, src_box.top-21, 0x90, system.color.work_text, "First file:");
  102.         WriteText(dst_box.left-2, dst_box.top-21, 0x90, system.color.work_text, "Second file:");
  103.         DrawEditBox(#src_box);
  104.         DrawEditBox(#dst_box);
  105.         DrawStandartCaptButton(src_box.left + src_box.width + 15, src_box.top-3, BID_SRC_OPEN, "...");
  106.         DrawStandartCaptButton(dst_box.left + dst_box.width + 15, dst_box.top-3, BID_DST_OPEN, "...");
  107.         DrawStandartCaptButton(dst_box.left - 2, dst_box.top + 40, BID_COMPARE, "Compare");
  108. }