]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/menu/item/dialog.qh
Some minor optimizations
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / item / dialog.qh
index 6f70f09beec2219624baeca92e2cd7deaa104fb4..6fa9b26ab38038fe9c271b495c8ff4cbd9a4052e 100644 (file)
@@ -1 +1,74 @@
 #pragma once
+
+// Note: this class is called Dialog, but it can also handle a tab under the following conditions:
+// - isTabRoot is 0
+// - backgroundImage is the tab's background
+// - closable is 0
+// - rootDialog is 0
+// - title is ""
+// - marginTop is
+// - intendedHeight ends up to be the tab's actual height, or at least close
+// - titleFontSize is 0
+// - marginTop cancels out as much of titleHeight as needed (that is, it should be actualMarginTop - titleHeight)
+// To ensure the latter, you best create all tabs FIRST and insert the tabbed
+// control to your dialog THEN - with the right height
+//
+// a subclass may help with using this as a tab
+
+#include "inputcontainer.qh"
+CLASS(Dialog, InputContainer)
+       METHOD(Dialog, configureDialog, void(entity)); // no runtime configuration, all parameters are given in the code!
+       METHOD(Dialog, fill, void(entity));            // to be overridden by user to fill the dialog with controls
+       METHOD(Dialog, keyDown, float(entity, float, float, float));
+       METHOD(Dialog, close, void(entity));
+       METHOD(Dialog, addItemSimple, void(entity, float, float, float, float, entity, vector));
+
+       METHOD(Dialog, TD, void(entity, float, float, entity));
+       METHOD(Dialog, TDNoMargin, void(entity, float, float, entity, vector));
+       METHOD(Dialog, TDempty, void(entity, float));
+       METHOD(Dialog, setFirstColumn, void(entity, float));
+       METHOD(Dialog, TR, void(entity));
+       METHOD(Dialog, gotoRC, void(entity, float, float));
+
+       ATTRIB(Dialog, isTabRoot, float, 1);
+       ATTRIB(Dialog, closeButton, entity);
+       ATTRIB(Dialog, intendedHeight, float, 0);
+       ATTRIB(Dialog, itemOrigin, vector, '0 0 0');
+       ATTRIB(Dialog, itemSize, vector, '0 0 0');
+       ATTRIB(Dialog, itemSpacing, vector, '0 0 0');
+       ATTRIB(Dialog, currentRow, float, 0);
+       ATTRIB(Dialog, currentColumn, float, 0);
+       ATTRIB(Dialog, firstColumn, float, 0);
+
+       // to be customized
+       ATTRIB(Dialog, closable, float, 1);
+       ATTRIB(Dialog, title, string, "Form1");
+       ATTRIB(Dialog, color, vector, '1 0.5 1');
+       ATTRIB(Dialog, intendedWidth, float, 0);
+       ATTRIB(Dialog, rows, float, 3);
+       ATTRIB(Dialog, columns, float, 2);
+
+       ATTRIB(Dialog, marginTop, float, 0);     // pixels
+       ATTRIB(Dialog, marginBottom, float, 0);  // pixels
+       ATTRIB(Dialog, marginLeft, float, 0);    // pixels
+       ATTRIB(Dialog, marginRight, float, 0);   // pixels
+       ATTRIB(Dialog, columnSpacing, float, 0); // pixels
+       ATTRIB(Dialog, rowSpacing, float, 0);    // pixels
+       ATTRIB(Dialog, rowHeight, float, 0);     // pixels
+       ATTRIB(Dialog, titleHeight, float, 0);   // pixels
+       ATTRIB(Dialog, titleFontSize, float, 0); // pixels; if 0, title causes no margin
+       ATTRIB(Dialog, zoomedOutTitleBarPosition, float, 0);
+       ATTRIB(Dialog, zoomedOutTitleBar, float, 0);
+
+       ATTRIB(Dialog, requiresConnection, float, 0);  // set to true if the dialog requires a connection to be opened
+
+       ATTRIB(Dialog, backgroundImage, string);
+       ATTRIB(Dialog, borderLines, float, 1);
+       ATTRIB(Dialog, closeButtonImage, string);
+
+       ATTRIB(Dialog, hideMenuOnClose, bool, false);
+
+       ATTRIB(Dialog, frame, entity);
+ENDCLASS(Dialog)
+
+void Dialog_Close(entity button, entity me);