Subversion Repositories Kolibri OS

Rev

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

Rev 8728 Rev 8762
Line 46... Line 46...
46
        text: ARRAY 32 OF WCHAR;
46
        text: ARRAY 32 OF WCHAR;
47
        enabled, delim: BOOLEAN
47
        enabled, delim: BOOLEAN
48
    END;
48
    END;
Line 49... Line 49...
49
 
49
 
50
    tMenu* = POINTER TO RECORD
-
 
51
        (*stack: POINTER TO RECORD stk: ARRAY 250000 OF INTEGER END;*)
50
    tMenu* = POINTER TO RECORD
52
        tid*: INTEGER;
51
        tid*: INTEGER;
53
        winX, winY, width*, height*: INTEGER;
52
        winX, winY, width*, height*: INTEGER;
Line 54... Line 53...
54
        selItem, cliItem: INTEGER;
53
        selItem, cliItem: INTEGER;
Line 161... Line 160...
161
PROCEDURE click (m: tMenu; i: INTEGER);
160
PROCEDURE click (m: tMenu; i: INTEGER);
162
VAR
161
VAR
163
    item: List.tItem;
162
    item: List.tItem;
164
BEGIN
163
BEGIN
165
    item := List.getItem(m.items, i);
164
    item := List.getItem(m.items, i);
166
    IF item(tItem).enabled THEN
165
    IF (item # NIL) & item(tItem).enabled THEN
167
        m.click(m, item(tItem).id);
166
        m.click(m, item(tItem).id);
168
        exit(m)
167
        exit(m)
169
    END
168
    END
170
END click;
169
END click;
Line 302... Line 301...
302
PROCEDURE open* (m: tMenu; x, y: INTEGER);
301
PROCEDURE open* (m: tMenu; x, y: INTEGER);
303
BEGIN
302
BEGIN
304
    IF m.tid = 0 THEN
303
    IF m.tid = 0 THEN
305
        m.winX := x;
304
        m.winX := x;
306
        m.winY := y;
305
        m.winY := y;
307
(*        DISPOSE(m.stack);
-
 
308
        NEW(m.stack);
-
 
309
        SYSTEM.PUT(SYSTEM.ADR(m.stack.stk[LEN(m.stack.stk) - 1]), m);
-
 
310
        lastTID := K.CreateThread(SYSTEM.ADR(window), m.stack.stk);*)
-
 
311
        SYSTEM.PUT(SYSTEM.ADR(stack[LEN(stack) - 1]), m);
306
        SYSTEM.PUT(SYSTEM.ADR(stack[LEN(stack) - 1]), m);
312
        lastTID := K.CreateThread(SYSTEM.ADR(window), stack);
307
        lastTID := K.CreateThread(SYSTEM.ADR(window), stack);
313
        m.tid := lastTID
308
        m.tid := lastTID
314
    END
309
    END
315
END open;
310
END open;
Line 317... Line 312...
317
 
312
 
318
PROCEDURE close* (m: tMenu);
313
PROCEDURE close* (m: tMenu);
319
BEGIN
314
BEGIN
320
    IF m.tid # 0 THEN
315
    IF m.tid # 0 THEN
321
        K.ExitID(m.tid);
-
 
322
        (*DISPOSE(m.stack);*)
316
        K.ExitID(m.tid);
323
        m.tid := 0
317
        m.tid := 0
324
    END
318
    END
Line 344... Line 338...
344
    END;
338
    END;
345
    m.width  := maxLength*fontWidth + LEFT + RIGHT;
339
    m.width  := maxLength*fontWidth + LEFT + RIGHT;
346
    m.height := items.count*fontHeight - 2;
340
    m.height := items.count*fontHeight - 2;
347
    m.font := G.CreateFont(1, "", {});
341
    m.font := G.CreateFont(1, "", {});
348
    m.canvas := G.CreateCanvas(m.width + 1, m.height + 1);
342
    m.canvas := G.CreateCanvas(m.width + 1, m.height + 1);
349
    (*m.stack := NIL;*)
-
 
350
    G.SetFont(m.canvas, m.font);
343
    G.SetFont(m.canvas, m.font);
351
    RETURN m
344
    RETURN m
352
END create;
345
END create;