Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
6613 leency 1
MODULE Dialogs;
2
 
3
IMPORT KOSAPI, sys := SYSTEM, OpenDlg, ColorDlg;
4
 
5
VAR header: ARRAY 1024 OF CHAR; back_color: INTEGER;
6
 
7
PROCEDURE WindowRedrawStatus(p: INTEGER);
8
VAR aux: INTEGER;
9
BEGIN
10
  aux := KOSAPI.sysfunc2(12, p)
11
END WindowRedrawStatus;
12
 
13
PROCEDURE DefineAndDrawWindow(x, y, w, h, color, style, hcolor, hstyle, htext: INTEGER);
14
VAR aux: INTEGER;
15
BEGIN
16
  aux := KOSAPI.sysfunc6(0, x * 65536 + w, y * 65536 + h, color + LSL(style, 24), hcolor + LSL(hstyle, 24), htext)
17
END DefineAndDrawWindow;
18
 
19
PROCEDURE WaitForEvent(): INTEGER;
20
  RETURN KOSAPI.sysfunc1(10)
21
END WaitForEvent;
22
 
23
PROCEDURE ExitApp;
24
VAR aux: INTEGER;
25
BEGIN
26
  aux := KOSAPI.sysfunc1(-1)
27
END ExitApp;
28
 
29
PROCEDURE pause(t: INTEGER);
30
VAR aux: INTEGER;
31
BEGIN
32
  aux := KOSAPI.sysfunc2(5, t)
33
END pause;
34
 
35
PROCEDURE Buttons;
36
 
37
  PROCEDURE Button(id, X, Y, W, H: INTEGER; Caption: ARRAY OF CHAR);
38
  VAR n, aux: INTEGER;
39
  BEGIN
40
    n := LENGTH(Caption);
41
    aux := KOSAPI.sysfunc5(8, X * 65536 + W, Y * 65536 + H, id, 00C0C0C0H);
42
    X := X + (W - 8 * n) DIV 2;
43
    Y := Y + (H - 14) DIV 2;
44
    aux := KOSAPI.sysfunc6(4, X * 65536 + Y, LSL(48, 24), sys.ADR(Caption[0]), n, 0)
45
  END Button;
46
 
47
BEGIN
48
  Button(17,  5, 5, 70, 25, "open");
49
  Button(18, 85, 5, 70, 25, "color");
50
END Buttons;
51
 
52
PROCEDURE draw_window;
53
BEGIN
54
  WindowRedrawStatus(1);
55
  DefineAndDrawWindow(200, 200, 500, 100, back_color, 51, 0, 0, sys.ADR(header[0]));
56
  Buttons;
57
  WindowRedrawStatus(2);
58
END draw_window;
59
 
60
PROCEDURE OpenFile(Open: OpenDlg.Dialog);
61
BEGIN
62
  IF Open # NIL THEN
63
    OpenDlg.Show(Open, 500, 450);
64
    WHILE Open.status = 2 DO
65
      pause(30)
66
    END;
67
    IF Open.status = 1 THEN
68
      COPY(Open.FilePath, header)
69
    END
70
  END
71
END OpenFile;
72
 
73
PROCEDURE SelColor(Color: ColorDlg.Dialog);
74
BEGIN
75
  IF Color # NIL THEN
76
    ColorDlg.Show(Color);
77
    WHILE Color.status = 2 DO
78
      pause(30)
79
    END;
80
    IF Color.status = 1 THEN
81
      back_color := Color.color
82
    END
83
  END
84
END SelColor;
85
 
86
PROCEDURE main;
87
VAR Open: OpenDlg.Dialog; Color: ColorDlg.Dialog; res, al: INTEGER;
88
BEGIN
89
  back_color := 00FFFFFFH;
90
  header := "Dialogs";
91
  draw_window;
92
  Open := OpenDlg.Create(draw_window, 0, "/rd/1", "ASM|TXT|INI");
93
  Color := ColorDlg.Create(draw_window);
94
  WHILE TRUE DO
95
    CASE WaitForEvent() OF
96
    |1: draw_window
97
    |3: res := KOSAPI.sysfunc1(17);
98
        al := LSR(LSL(res, 24), 24);
99
        res := LSR(res, 8);
100
        IF al = 0 THEN
101
          CASE res OF
102
          | 1: ExitApp
103
          |17: OpenFile(Open)
104
          |18: SelColor(Color)
105
          END
106
        END
107
    ELSE
108
    END
109
  END
110
END main;
111
 
112
BEGIN
113
  main
114
END Dialogs.