Subversion Repositories Kolibri OS

Rev

Rev 9577 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

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