3 #include "borderimage.qh"
7 void Dialog_Close(entity button, entity me)
12 void Dialog_fill(entity me)
15 void Dialog_addItemSimple(entity me, float row, float col, float rowspan, float colspan, entity e, vector v)
18 o = me.itemOrigin + eX * (col * me.itemSpacing.x) + eY * (row * me.itemSpacing.y);
19 s = me.itemSize + eX * ((colspan - 1) * me.itemSpacing.x) + eY * ((rowspan - 1) * me.itemSpacing.y);
20 o.x -= 0.5 * (me.itemSpacing.x - me.itemSize.x) * v.x;
21 s.x += (me.itemSpacing.x - me.itemSize.x) * v.x;
22 o.y -= 0.5 * (me.itemSpacing.y - me.itemSize.y) * v.y;
23 s.y += (me.itemSpacing.y - me.itemSize.y) * v.y;
24 me.addItem(me, e, o, s, 1);
27 void Dialog_gotoRC(entity me, float row, float col)
30 me.currentColumn = col;
33 void Dialog_TR(entity me)
36 me.currentColumn = me.firstColumn;
39 void Dialog_TD(entity me, float rowspan, float colspan, entity e)
41 me.addItemSimple(me, me.currentRow, me.currentColumn, rowspan, colspan, e, '0 0 0');
42 me.currentColumn += colspan;
45 void Dialog_TDNoMargin(entity me, float rowspan, float colspan, entity e, vector v)
47 me.addItemSimple(me, me.currentRow, me.currentColumn, rowspan, colspan, e, v);
48 me.currentColumn += colspan;
51 void Dialog_setFirstColumn(entity me, float col)
56 void Dialog_TDempty(entity me, float colspan)
58 me.currentColumn += colspan;
61 void Dialog_configureDialog(entity me)
63 float absWidth, absHeight;
67 me.frame = NEW(BorderImage);
68 me.frame.configureBorderImage(me.frame, me.title, me.titleFontSize, me.color, me.backgroundImage, me.borderLines * me.titleHeight);
69 me.frame.zoomedOutTitleBarPosition = me.zoomedOutTitleBarPosition;
70 me.frame.zoomedOutTitleBar = me.zoomedOutTitleBar;
71 me.frame.alpha = me.alpha;
72 me.addItem(me, me.frame, '0 0 0', '1 1 0', 1);
75 if (!me.titleFontSize) me.titleHeight = 0; // no title bar
77 absWidth = me.intendedWidth * conwidth;
78 absHeight = me.borderLines * me.titleHeight + me.marginTop + me.rows * me.rowHeight + (me.rows - 1) * me.rowSpacing + me.marginBottom;
79 me.itemOrigin = eX * (me.marginLeft / absWidth)
80 + eY * ((me.borderLines * me.titleHeight + me.marginTop) / absHeight);
81 me.itemSize = eX * ((1 - (me.marginLeft + me.marginRight + me.columnSpacing * (me.columns - 1)) / absWidth) / me.columns)
82 + eY * (me.rowHeight / absHeight);
83 me.itemSpacing = me.itemSize
84 + eX * (me.columnSpacing / absWidth)
85 + eY * (me.rowSpacing / absHeight);
86 me.intendedHeight = absHeight / conheight;
88 me.currentColumn = -1;
92 if (me.isTabRoot && me.closable && me.borderLines > 0)
95 closebutton = me.closeButton = me.frame.closeButton = NEW(Button);
96 closebutton.configureButton(closebutton, "", 0, me.closeButtonImage);
97 closebutton.onClick = Dialog_Close;
98 closebutton.onClickEntity = me;
99 closebutton.srcMulti = 0;
100 me.addItem(me, closebutton, '0 0 0', '1 1 0', 1); // put it as LAST
104 void Dialog_close(entity me)
106 if (me.parent.instanceOfNexposee)
108 ExposeeCloseButton_Click(me, me.parent);
109 if(me.hideMenuOnClose)
111 me.hideMenuOnClose = false;
115 else if (me.parent.instanceOfModalController)
116 DialogCloseButton_Click(me, me);
119 float Dialog_keyDown(entity me, float key, float ascii, float shift)
125 m_play_click_sound(MENU_SOUND_CLOSE);
130 float r = SUPER(Dialog).keyDown(me, key, ascii, shift);
131 if (!me.closable && key == K_ESCAPE)