Subversion Repositories Kolibri OS

Rev

Rev 9182 | Rev 9208 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 9182 Rev 9187
Line 17... Line 17...
17
    along with CEdit. If not, see .
17
    along with CEdit. If not, see .
18
*)
18
*)
Line 19... Line 19...
19
 
19
 
Line 20... Line 20...
20
MODULE CheckBox;
20
MODULE CheckBox;
-
 
21
 
Line 21... Line 22...
21
 
22
IMPORT G := Graph, K := KolibriOS, U := Utils;
22
IMPORT G := Graph, K := KolibriOS;
23
 
-
 
24
 
-
 
25
CONST
-
 
26
	padding = 4;
Line 23... Line 27...
23
 
27
    fontWidth = K.fontWidth;
24
CONST
28
    fontHeight = K.fontHeight;
Line 25... Line 29...
25
	padding = 4;
29
 
26
 
30
 
27
TYPE
31
TYPE
28
	tCheckBox* = POINTER TO RECORD
32
	tCheckBox* = RECORD
29
 
33
 
Line 30... Line 34...
30
		left*, top*: INTEGER;
34
		left*, top*: INTEGER;
Line 31... Line -...
31
		width, height: INTEGER;
-
 
32
		value*, mouse*: BOOLEAN;
-
 
33
		text: ARRAY 32 OF WCHAR;
-
 
34
		canvas: G.tCanvas
-
 
35
 
-
 
36
	END;
-
 
37
 
-
 
38
 
-
 
39
PROCEDURE mark (canvas: G.tCanvas);
-
 
40
BEGIN
35
		width, height: INTEGER;
41
    G.DLine(canvas, 2,  6,  6, -1);
36
		value*, mouse: BOOLEAN;
42
    G.DLine(canvas, 2,  6,  7, -1);
37
		text: ARRAY 32 OF WCHAR;
43
    G.DLine(canvas, 7, 13,  9,  1);
-
 
44
    G.DLine(canvas, 7, 13, 10,  1);
38
		canvas: G.tCanvas
45
END mark;
39
 
46
 
40
	END;
47
 
41
 
48
PROCEDURE paint* (chkbox: tCheckBox);
42
 
49
VAR
43
PROCEDURE paint* (chkbox: tCheckBox);
50
	canvas: G.tCanvas;
44
VAR
51
	fontHeight: INTEGER;
45
	canvas: G.tCanvas;
52
BEGIN
46
BEGIN
53
	canvas := chkbox.canvas;
47
	canvas := chkbox.canvas;
54
	fontHeight := canvas.font.height - 1;
48
	IF canvas # NIL THEN
-
 
49
		G.SetColor(canvas, K.winColor);
-
 
50
		G.clear(canvas);
-
 
51
		G.SetColor(canvas, 0FFFFFFH);
55
	G.SetColor(canvas, K.winColor);
52
		G.FillRect(canvas, 0, 0, fontHeight - 1, fontHeight - 1);
56
	G.clear(canvas);
53
		G.SetColor(canvas, K.borderColor);
57
	G.SetColor(canvas, 0FFFFFFH);
54
		G.Rect(canvas, 0, 0, fontHeight - 1, fontHeight - 1);
58
	G.FillRect(canvas, 0, 0, fontHeight, fontHeight);
55
		IF chkbox.value THEN
59
	G.SetColor(canvas, K.borderColor);
56
			G.SetColor(canvas, 0008000H);
60
	G.Rect(canvas, 0, 0, fontHeight, fontHeight);
57
		    G.DLine(canvas, 2,  6,  6, -1);
-
 
58
		    G.DLine(canvas, 2,  6,  7, -1);
61
	IF chkbox.value THEN
59
		    G.DLine(canvas, 7, 13,  9,  1);
Line 62... Line 60...
62
		G.SetColor(canvas, 0008000H);
60
		    G.DLine(canvas, 7, 13, 10,  1)
63
		mark(canvas)
61
		END;
64
	END;
62
		G.SetTextColor(canvas, K.textColor);
65
	G.SetTextColor(canvas, K.textColor);
-
 
66
	G.SetBkColor(canvas, K.winColor);
63
		G.SetBkColor(canvas, K.winColor);
67
	G.TextOut2(canvas, canvas.font.height + padding, 0, chkbox.text, LENGTH(chkbox.text));
-
 
68
	G.DrawCanvas(canvas, chkbox.left, chkbox.top)
-
 
69
END paint;
64
		G.TextOut2(canvas, fontHeight + padding, 0, chkbox.text, LENGTH(chkbox.text));
70
 
65
		G.DrawCanvas(canvas, chkbox.left, chkbox.top)
71
 
66
	END
72
PROCEDURE create* (text: ARRAY OF WCHAR): tCheckBox;
67
END paint;
73
VAR
68
 
74
	res: tCheckBox;
69
 
75
	font: G.tFont;
70
PROCEDURE create* (text: ARRAY OF WCHAR; VAR chkbox: tCheckBox);
76
BEGIN
71
VAR
77
	font := G.CreateFont(1, "", {});
72
	res: tCheckBox;
78
	NEW(res);
73
BEGIN
79
	res.left := 0;
74
	res.left := 0;
Line 80... Line -...
80
	res.top := 0;
-
 
81
	res.value := FALSE;
-
 
82
	res.mouse := FALSE;
-
 
83
	COPY(text, res.text);
-
 
84
	res.canvas := G.CreateCanvas(font.height + padding + LENGTH(res.text)*font.width, font.height + 1);
-
 
85
	G.SetFont(res.canvas, font);
75
	res.top := 0;
86
	res.width := res.canvas.width;
76
	res.value := FALSE;
87
	res.height := res.canvas.height;
77
	res.mouse := FALSE;
88
	RETURN res
78
	COPY(text, res.text);
89
END create;
79
	res.canvas := G.CreateCanvas(fontHeight + padding + LENGTH(res.text)*fontWidth, fontHeight + 1);
90
 
80
	G.SetFont(res.canvas, G.CreateFont(1, "", {}));
91
 
81
	res.width := res.canvas.width;
92
PROCEDURE between (a, b, c: INTEGER): BOOLEAN;
82
	res.height := res.canvas.height;
93
	RETURN (a <= b) & (b <= c)
83
	chkbox := res
94
END between;
84
END create;
95
 
85
 
96
 
86
 
Line 97... Line 87...
97
PROCEDURE MouseDown* (chkbox: tCheckBox; x, y: INTEGER);
87
PROCEDURE MouseDown* (VAR chkbox: tCheckBox; x, y: INTEGER);
98
BEGIN
88
BEGIN
99
	IF (chkbox # NIL) & ~chkbox.mouse THEN
89
	IF (chkbox.canvas # NIL) & ~chkbox.mouse THEN
100
		DEC(x, chkbox.left);
90
		DEC(x, chkbox.left);
101
		DEC(y, chkbox.top);
91
		DEC(y, chkbox.top);
102
		chkbox.mouse := TRUE;
92
		chkbox.mouse := TRUE;