Subversion Repositories Kolibri OS

Rev

Rev 7806 | Rev 9539 | 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
 
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();
97
	DefineAndDrawWindow(215, 100, WIN_W+9, 170 + skin_height, 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);
102
		DrawStandartCaptButton(dst_box.left - 2, dst_box.top + 40, BID_GO, T_GO);
103
	}
104
}
6732 leency 105
 
7658 leency 106
void UpdateEditBoxes(dword f1, f2)
107
{
108
	EditBox_UpdateText(#src_box, f1);
109
	EditBox_UpdateText(#dst_box, f2);
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();
6732 leency 159
}