#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);