Rev 7768 | Rev 7984 | Go to most recent revision | 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 | |||
6732 | leency | 21 | char default_dir[] = "/rd/1"; |
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 | |
7658 | leency | 38 | #ifndef COPYING |
39 | #define T_FIRST "First file:" |
||
40 | #define T_SECOND "Second file:" |
||
41 | #define T_GO " Compare " |
||
42 | #endif |
||
6732 | leency | 43 | |
7658 | leency | 44 | #define READY 0 |
45 | int state=READY; |
||
46 | |||
47 | //===================================================// |
||
48 | // // |
||
49 | // CODE // |
||
50 | // // |
||
51 | //===================================================// |
||
52 | |||
6732 | leency | 53 | void gui() |
54 | { |
||
55 | word btn; |
||
56 | load_dll(boxlib, #box_lib_init,0); |
||
57 | load_dll(Proc_lib, #OpenDialog_init,0); |
||
58 | OpenDialog_init stdcall (#o_dialog); |
||
7658 | leency | 59 | SetEventMask(EVM_REDRAW + EVM_KEY + EVM_BUTTON + EVM_MOUSE + EVM_MOUSE_FILTER); |
6732 | leency | 60 | |
61 | loop() switch(WaitEvent()) |
||
62 | { |
||
63 | case evMouse: |
||
7658 | leency | 64 | if (READY == state) { |
65 | edit_box_mouse stdcall (#src_box); |
||
66 | edit_box_mouse stdcall (#dst_box); |
||
67 | } |
||
6732 | leency | 68 | break; |
69 | |||
70 | case evButton: |
||
7658 | leency | 71 | btn = @GetButtonID(); |
72 | if (btn == BID_EXIT_PRC) ExitProcess(); |
||
73 | if (btn == BID_SRC_OPEN) EventOpenDialogFirst(); |
||
74 | if (btn == BID_DST_OPEN) EventOpenDialogSecond(); |
||
75 | if (btn == BID_GO) EventGo(); |
||
6732 | leency | 76 | break; |
77 | |||
78 | case evKey: |
||
79 | GetKeys(); |
||
80 | if (key_scancode == SCAN_CODE_ESC) ExitProcess(); |
||
7658 | leency | 81 | if (key_scancode == SCAN_CODE_TAB) EventTabClick(); |
82 | if (key_scancode == SCAN_CODE_ENTER) EventGo(); |
||
83 | if (key_scancode == SCAN_CODE_INS) EventInsert(); |
||
6732 | leency | 84 | EAX = key_editbox; |
85 | edit_box_key stdcall (#src_box); |
||
86 | EAX = key_editbox; |
||
87 | edit_box_key stdcall (#dst_box); |
||
88 | break; |
||
89 | |||
90 | case evReDraw: |
||
91 | draw_window(); |
||
92 | break; |
||
93 | } |
||
94 | } |
||
95 | |||
96 | void draw_window() |
||
97 | { |
||
7806 | leency | 98 | sc.get(); |
99 | DefineAndDrawWindow(215, 100, WIN_W+9, 170 + skin_height, 0x34, sc.work, #window_title,0); |
||
7658 | leency | 100 | //GetProcessInfo(#Form, SelfInfo); |
101 | if (READY==state) { |
||
102 | DrawFileBox(#src_box, T_FIRST, BID_SRC_OPEN); |
||
103 | DrawFileBox(#dst_box, T_SECOND, BID_DST_OPEN); |
||
104 | DrawStandartCaptButton(dst_box.left - 2, dst_box.top + 40, BID_GO, T_GO); |
||
105 | } |
||
106 | #ifdef COPYING |
||
107 | if (COPYING==state) { |
||
7806 | leency | 108 | pr.frame_color = sc.work_graph; |
109 | DrawRectangle3D(PR_LEFT-1, PR_TOP-1, PR_W+1, PR_H+1, sc.work_dark, |
||
110 | sc.work_light); |
||
7658 | leency | 111 | DrawProgress(); |
112 | DrawStandartCaptButton(-19*8+WIN_W/2-15, dst_box.top + 35, B_STOP, " Stop "); |
||
113 | } |
||
114 | #endif |
||
115 | } |
||
6732 | leency | 116 | |
7658 | leency | 117 | void UpdateEditBoxes(dword f1, f2) |
118 | { |
||
119 | EditBox_UpdateText(#src_box, f1); |
||
120 | EditBox_UpdateText(#dst_box, f2); |
||
121 | edit_box_draw stdcall (#src_box); |
||
122 | edit_box_draw stdcall (#dst_box); |
||
123 | } |
||
124 | |||
125 | //===================================================// |
||
126 | // // |
||
127 | // EVENTS // |
||
128 | // // |
||
129 | //===================================================// |
||
130 | |||
131 | #ifndef COPYING |
||
132 | void EventGo() |
||
133 | { |
||
134 | char run_param[4096]; |
||
7768 | leency | 135 | wsprintf(#run_param, "\"%s\" \"%s\"", #src_path, #dst_path); |
7658 | leency | 136 | RunProgram(I_Path, #run_param); |
137 | } |
||
138 | #endif |
||
139 | |||
140 | void EventTabClick() |
||
141 | { |
||
142 | if ( src_box.flags & ed_focus ) { |
||
143 | UpdateEditBoxes(0, ed_focus); |
||
144 | } else { |
||
145 | UpdateEditBoxes(ed_focus, 0); |
||
146 | } |
||
147 | } |
||
148 | |||
149 | void EventOpenDialogFirst() |
||
150 | { |
||
151 | o_dialog.type = 0; //0-file, 1-save, 2-select folder |
||
152 | OpenDialog_start stdcall (#o_dialog); |
||
153 | if (o_dialog.status) { |
||
154 | strcpy(#src_path, #openfile_path); |
||
155 | UpdateEditBoxes(ed_focus, 0); |
||
156 | } |
||
157 | } |
||
158 | |||
159 | void EventOpenDialogSecond() |
||
160 | { |
||
161 | #ifdef COPYING |
||
162 | o_dialog.type = 1; //0-file, 1-save, 2-select folder |
||
163 | #endif |
||
164 | OpenDialog_start stdcall (#o_dialog); |
||
165 | if (o_dialog.status) { |
||
166 | strcpy(#dst_path, #openfile_path); |
||
167 | UpdateEditBoxes(0, ed_focus); |
||
168 | } |
||
169 | } |
||
170 | |||
171 | void EventInsert() |
||
172 | { |
||
173 | if ( src_box.flags & ed_focus ) EventOpenDialogFirst(); |
||
174 | if ( dst_box.flags & ed_focus ) EventOpenDialogSecond(); |
||
6732 | leency | 175 | } |