]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/menu/item/dialog.qh
Merge branch 'master' into terencehill/dynamic_hud
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / item / dialog.qh
1 #pragma once
2
3 // Note: this class is called Dialog, but it can also handle a tab under the following conditions:
4 // - isTabRoot is 0
5 // - backgroundImage is the tab's background
6 // - closable is 0
7 // - rootDialog is 0
8 // - title is ""
9 // - marginTop is
10 // - intendedHeight ends up to be the tab's actual height, or at least close
11 // - titleFontSize is 0
12 // - marginTop cancels out as much of titleHeight as needed (that is, it should be actualMarginTop - titleHeight)
13 // To ensure the latter, you best create all tabs FIRST and insert the tabbed
14 // control to your dialog THEN - with the right height
15 //
16 // a subclass may help with using this as a tab
17
18 #include "inputcontainer.qh"
19 CLASS(Dialog, InputContainer)
20         METHOD(Dialog, configureDialog, void(entity)); // no runtime configuration, all parameters are given in the code!
21         METHOD(Dialog, fill, void(entity));            // to be overridden by user to fill the dialog with controls
22         METHOD(Dialog, keyDown, float(entity, float, float, float));
23         METHOD(Dialog, close, void(entity));
24         METHOD(Dialog, addItemSimple, void(entity, float, float, float, float, entity, vector));
25
26         METHOD(Dialog, TD, void(entity, float, float, entity));
27         METHOD(Dialog, TDNoMargin, void(entity, float, float, entity, vector));
28         METHOD(Dialog, TDempty, void(entity, float));
29         METHOD(Dialog, setFirstColumn, void(entity, float));
30         METHOD(Dialog, TR, void(entity));
31         METHOD(Dialog, gotoRC, void(entity, float, float));
32
33         ATTRIB(Dialog, isTabRoot, float, 1)
34         ATTRIB(Dialog, closeButton, entity, NULL)
35         ATTRIB(Dialog, intendedHeight, float, 0)
36         ATTRIB(Dialog, itemOrigin, vector, '0 0 0')
37         ATTRIB(Dialog, itemSize, vector, '0 0 0')
38         ATTRIB(Dialog, itemSpacing, vector, '0 0 0')
39         ATTRIB(Dialog, currentRow, float, 0)
40         ATTRIB(Dialog, currentColumn, float, 0)
41         ATTRIB(Dialog, firstColumn, float, 0)
42
43         // to be customized
44         ATTRIB(Dialog, closable, float, 1)
45         ATTRIB(Dialog, title, string, "Form1")  // ;)
46         ATTRIB(Dialog, color, vector, '1 0.5 1')
47         ATTRIB(Dialog, intendedWidth, float, 0)
48         ATTRIB(Dialog, rows, float, 3)
49         ATTRIB(Dialog, columns, float, 2)
50
51         ATTRIB(Dialog, marginTop, float, 0)     // pixels
52         ATTRIB(Dialog, marginBottom, float, 0)  // pixels
53         ATTRIB(Dialog, marginLeft, float, 0)    // pixels
54         ATTRIB(Dialog, marginRight, float, 0)   // pixels
55         ATTRIB(Dialog, columnSpacing, float, 0) // pixels
56         ATTRIB(Dialog, rowSpacing, float, 0)    // pixels
57         ATTRIB(Dialog, rowHeight, float, 0)     // pixels
58         ATTRIB(Dialog, titleHeight, float, 0)   // pixels
59         ATTRIB(Dialog, titleFontSize, float, 0) // pixels; if 0, title causes no margin
60         ATTRIB(Dialog, zoomedOutTitleBarPosition, float, 0)
61         ATTRIB(Dialog, zoomedOutTitleBar, float, 0)
62
63         ATTRIB(Dialog, requiresConnection, float, 0)  // set to true if the dialog requires a connection to be opened
64
65         ATTRIB(Dialog, backgroundImage, string, string_null)
66         ATTRIB(Dialog, borderLines, float, 1)
67         ATTRIB(Dialog, closeButtonImage, string, string_null)
68
69         ATTRIB(Dialog, frame, entity, NULL)
70 ENDCLASS(Dialog)
71
72 void Dialog_Close(entity button, entity me);