Subversion Repositories Kolibri OS

Rev

Rev 9577 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
8097 maxcodehac 1
MODULE Dialogs;
2
 
9648 akron1 3
IMPORT
4
	KOSAPI, SYSTEM, OpenDlg, ColorDlg;
8097 maxcodehac 5
 
6
 
9648 akron1 7
CONST
8
	btnNone  =  0;
9
	btnClose =  1;
10
	btnOpen  = 17;
11
	btnColor = 18;
12
 
13
 
14
VAR
15
	header: ARRAY 1024 OF CHAR;
16
	back_color: INTEGER;
17
 
18
 
19
PROCEDURE BeginDraw;
8097 maxcodehac 20
BEGIN
9648 akron1 21
	KOSAPI.sysfunc2(12, 1)
22
END BeginDraw;
8097 maxcodehac 23
 
9648 akron1 24
 
25
PROCEDURE EndDraw;
8097 maxcodehac 26
BEGIN
9648 akron1 27
	KOSAPI.sysfunc2(12, 2)
28
END EndDraw;
29
 
30
 
31
PROCEDURE DefineAndDrawWindow (left, top, width, height, color, style, hcolor, hstyle: INTEGER; header: ARRAY OF CHAR);
32
BEGIN
33
	KOSAPI.sysfunc6(0, left*65536 + width, top*65536 + height, color + LSL(style, 24), hcolor + LSL(hstyle, 24), SYSTEM.ADR(header[0]))
8097 maxcodehac 34
END DefineAndDrawWindow;
35
 
9648 akron1 36
 
37
PROCEDURE WaitForEvent (): INTEGER;
38
	RETURN KOSAPI.sysfunc1(10)
8097 maxcodehac 39
END WaitForEvent;
40
 
9648 akron1 41
 
8097 maxcodehac 42
PROCEDURE ExitApp;
43
BEGIN
9648 akron1 44
	KOSAPI.sysfunc1(-1)
8097 maxcodehac 45
END ExitApp;
46
 
9648 akron1 47
 
48
PROCEDURE pause (t: INTEGER);
8097 maxcodehac 49
BEGIN
9648 akron1 50
	KOSAPI.sysfunc2(5, t)
8097 maxcodehac 51
END pause;
52
 
9648 akron1 53
 
8097 maxcodehac 54
PROCEDURE Buttons;
55
 
9648 akron1 56
	PROCEDURE Button (id, X, Y, W, H: INTEGER; Caption: ARRAY OF CHAR);
57
	VAR
58
		n: INTEGER;
59
	BEGIN
60
		n := LENGTH(Caption);
61
		KOSAPI.sysfunc5(8, X*65536 + W, Y*65536 + H, id, 00C0C0C0H);
62
		X := X + (W - 8*n) DIV 2;
63
		Y := Y + (H - 14) DIV 2;
64
		KOSAPI.sysfunc6(4, X*65536 + Y, LSL(48, 24), SYSTEM.ADR(Caption[0]), n, 0)
65
	END Button;
8097 maxcodehac 66
 
67
BEGIN
9648 akron1 68
	Button(btnOpen,   5, 5, 70, 25, "open");
69
	Button(btnColor, 85, 5, 70, 25, "color");
8097 maxcodehac 70
END Buttons;
71
 
9648 akron1 72
 
8097 maxcodehac 73
PROCEDURE draw_window;
74
BEGIN
9648 akron1 75
	BeginDraw;
76
	DefineAndDrawWindow(200, 200, 500, 100, back_color, 51, 0, 0, header);
77
	Buttons;
78
	EndDraw;
8097 maxcodehac 79
END draw_window;
80
 
9648 akron1 81
 
82
PROCEDURE OpenFile (Open: OpenDlg.Dialog);
8097 maxcodehac 83
BEGIN
9648 akron1 84
	IF Open # NIL THEN
85
		OpenDlg.Show(Open, 500, 450);
86
		WHILE Open.status = 2 DO
87
			pause(30)
88
		END;
89
		IF Open.status = 1 THEN
90
			COPY(Open.FilePath, header)
91
		END
92
	END
8097 maxcodehac 93
END OpenFile;
94
 
9648 akron1 95
 
96
PROCEDURE SelColor (Color: ColorDlg.Dialog);
8097 maxcodehac 97
BEGIN
9648 akron1 98
	IF Color # NIL THEN
99
		ColorDlg.Show(Color);
100
		WHILE Color.status = 2 DO
101
			pause(30)
102
		END;
103
		IF Color.status = 1 THEN
104
			back_color := Color.color
105
		END
106
	END
8097 maxcodehac 107
END SelColor;
108
 
9648 akron1 109
 
110
PROCEDURE GetButton (): INTEGER;
111
VAR
112
	btn: INTEGER;
113
BEGIN
114
	btn := KOSAPI.sysfunc1(17);
115
	IF btn MOD 256 = 0 THEN
116
		btn := btn DIV 256
117
	ELSE
118
		btn := btnNone
119
	END
120
	RETURN btn
121
END GetButton;
122
 
123
 
8097 maxcodehac 124
PROCEDURE main;
9648 akron1 125
CONST
126
	EVENT_REDRAW = 1;
127
	EVENT_KEY    = 2;
128
	EVENT_BUTTON = 3;
129
VAR
130
	Open: OpenDlg.Dialog;
131
	Color: ColorDlg.Dialog;
8097 maxcodehac 132
BEGIN
9648 akron1 133
	back_color := 00FFFFFFH;
134
	header := "Dialogs";
135
	Open := OpenDlg.Create(draw_window, 0, "/sys", "ASM|TXT|INI");
136
	Color := ColorDlg.Create(draw_window);
137
 
138
	WHILE TRUE DO
139
		CASE WaitForEvent() OF
140
		|EVENT_REDRAW:
141
			draw_window
142
 
143
		|EVENT_KEY:
144
 
145
		|EVENT_BUTTON:
146
			CASE GetButton() OF
147
			|btnNone:
148
			|btnClose: ExitApp
149
			|btnOpen:  OpenFile(Open)
150
			|btnColor: SelColor(Color)
151
			END
152
		END
153
	END
8097 maxcodehac 154
END main;
155
 
9648 akron1 156
 
8097 maxcodehac 157
BEGIN
9648 akron1 158
	main
8097 maxcodehac 159
END Dialogs.