Rev 9539 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
7658 | leency | 1 | //===================================================// |
2 | // // |
||
3 | // LIB // |
||
4 | // // |
||
5 | //===================================================// |
||
6 | |||
6732 | leency | 7 | #include "../lib/gui.h" |
8 | #include "../lib/obj/box_lib.h" |
||
9 | #include "../lib/obj/proc_lib.h" |
||
10 | #include "../lib/patterns/simple_open_dialog.h" |
||
11 | |||
7658 | leency | 12 | //===================================================// |
13 | // // |
||
14 | // DATA // |
||
15 | // // |
||
16 | //===================================================// |
||
17 | |||
18 | //proc_info Form; |
||
19 | #define WIN_W 450 |
||
20 | |||
9585 | vitalkrilo | 21 | char default_dir[] = "/sys"; |
6732 | leency | 22 | od_filter filter2 = {0,0}; |
23 | |||
7658 | leency | 24 | char src_path[4096]; |
25 | char dst_path[4096]; |
||
26 | edit_box src_box = {WIN_W-36-DOT_W,18,30,0xffffff,0x94AECE,0xFFFfff, |
||
27 | 0xffffff,0x10000000,sizeof(src_path)-2,#src_path,0, ed_focus}; |
||
28 | edit_box dst_box = {WIN_W-36-DOT_W,18,85,0xffffff,0x94AECE,0xFFFfff, |
||
29 | 0xffffff,0x10000000,sizeof(dst_path)-2,#dst_path,0, 0b}; |
||
6732 | leency | 30 | |
7658 | leency | 31 | enum { |
32 | BID_EXIT_PRC=1, |
||
33 | BID_SRC_OPEN, |
||
34 | BID_DST_OPEN, |
||
35 | BID_GO |
||
36 | }; |
||
6732 | leency | 37 | |
7984 | leency | 38 | #define T_FIRST "First file:" |
39 | #define T_SECOND "Second file:" |
||
40 | #define T_GO " Compare " |
||
6732 | leency | 41 | |
7984 | leency | 42 | |
7658 | leency | 43 | #define READY 0 |
44 | int state=READY; |
||
45 | |||
46 | //===================================================// |
||
47 | // // |
||
48 | // CODE // |
||
49 | // // |
||
50 | //===================================================// |
||
51 | |||
6732 | leency | 52 | void gui() |
53 | { |
||
7984 | leency | 54 | #define NO_DLL_INIT |
6732 | leency | 55 | load_dll(boxlib, #box_lib_init,0); |
56 | load_dll(Proc_lib, #OpenDialog_init,0); |
||
57 | OpenDialog_init stdcall (#o_dialog); |
||
7984 | leency | 58 | @SetEventMask(EVM_REDRAW + EVM_KEY + EVM_BUTTON + EVM_MOUSE + EVM_MOUSE_FILTER); |
6732 | leency | 59 | |
7984 | leency | 60 | loop() switch(@WaitEvent()) |
6732 | leency | 61 | { |
62 | case evMouse: |
||
7658 | leency | 63 | if (READY == state) { |
64 | edit_box_mouse stdcall (#src_box); |
||
65 | edit_box_mouse stdcall (#dst_box); |
||
66 | } |
||
6732 | leency | 67 | break; |
68 | |||
69 | case evButton: |
||
7984 | leency | 70 | @GetButtonID(); |
71 | if (EAX == BID_EXIT_PRC) ExitProcess(); |
||
72 | if (EAX == BID_SRC_OPEN) EventOpenDialogFirst(); |
||
73 | if (EAX == BID_DST_OPEN) EventOpenDialogSecond(); |
||
74 | if (EAX == BID_GO) EventGo(); |
||
6732 | leency | 75 | break; |
76 | |||
77 | case evKey: |
||
7984 | leency | 78 | @GetKey(); |
6732 | leency | 79 | edit_box_key stdcall (#src_box); |
80 | edit_box_key stdcall (#dst_box); |
||
7984 | leency | 81 | EAX >>= 16; |
82 | if (AL == SCAN_CODE_ESC) ExitProcess(); |
||
83 | if (AL == SCAN_CODE_TAB) EventTabClick(); |
||
84 | if (AL == SCAN_CODE_ENTER) EventGo(); |
||
85 | if (AL == SCAN_CODE_INS) EventInsert(); |
||
6732 | leency | 86 | break; |
87 | |||
88 | case evReDraw: |
||
89 | draw_window(); |
||
90 | break; |
||
91 | } |
||
92 | } |
||
93 | |||
94 | void draw_window() |
||
95 | { |
||
7806 | leency | 96 | sc.get(); |
9539 | leency | 97 | DefineAndDrawWindow(215, 100, WIN_W+9, 170 + GetSkinHeight(), 0x34, sc.work, #window_title,0); |
7658 | leency | 98 | //GetProcessInfo(#Form, SelfInfo); |
99 | if (READY==state) { |
||
100 | DrawFileBox(#src_box, T_FIRST, BID_SRC_OPEN); |
||
101 | DrawFileBox(#dst_box, T_SECOND, BID_DST_OPEN); |
||
9539 | leency | 102 | DrawCaptButton(dst_box.left - 2, dst_box.top + 40, 120, 25, BID_GO, sc.button, sc.button_text, T_GO); |
7658 | leency | 103 | } |
104 | } |
||
6732 | leency | 105 | |
9539 | leency | 106 | void UpdateEditBoxes(dword flag1, flag2) |
7658 | leency | 107 | { |
9539 | leency | 108 | EditBox_UpdateText(#src_box, flag1); |
109 | EditBox_UpdateText(#dst_box, flag2); |
||
7658 | leency | 110 | edit_box_draw stdcall (#src_box); |
111 | edit_box_draw stdcall (#dst_box); |
||
112 | } |
||
113 | |||
114 | //===================================================// |
||
115 | // // |
||
116 | // EVENTS // |
||
117 | // // |
||
118 | //===================================================// |
||
119 | |||
120 | void EventGo() |
||
121 | { |
||
122 | char run_param[4096]; |
||
7768 | leency | 123 | wsprintf(#run_param, "\"%s\" \"%s\"", #src_path, #dst_path); |
7658 | leency | 124 | RunProgram(I_Path, #run_param); |
125 | } |
||
126 | |||
127 | void EventTabClick() |
||
128 | { |
||
129 | if ( src_box.flags & ed_focus ) { |
||
130 | UpdateEditBoxes(0, ed_focus); |
||
131 | } else { |
||
132 | UpdateEditBoxes(ed_focus, 0); |
||
133 | } |
||
134 | } |
||
135 | |||
136 | void EventOpenDialogFirst() |
||
137 | { |
||
138 | o_dialog.type = 0; //0-file, 1-save, 2-select folder |
||
139 | OpenDialog_start stdcall (#o_dialog); |
||
140 | if (o_dialog.status) { |
||
141 | strcpy(#src_path, #openfile_path); |
||
142 | UpdateEditBoxes(ed_focus, 0); |
||
143 | } |
||
144 | } |
||
145 | |||
146 | void EventOpenDialogSecond() |
||
147 | { |
||
148 | OpenDialog_start stdcall (#o_dialog); |
||
149 | if (o_dialog.status) { |
||
150 | strcpy(#dst_path, #openfile_path); |
||
151 | UpdateEditBoxes(0, ed_focus); |
||
152 | } |
||
153 | } |
||
154 | |||
155 | void EventInsert() |
||
156 | { |
||
157 | if ( src_box.flags & ed_focus ) EventOpenDialogFirst(); |
||
158 | if ( dst_box.flags & ed_focus ) EventOpenDialogSecond(); |
||
9585 | vitalkrilo | 159 | } |