/* Overloading the AbstractController one, because we don't manage the Spacing items in the same ways */ void DroppingController::createAndAddWidget( QBoxLayout *controlLayout, int i_index, buttonType_e i_type, int i_option ) { doubleInt *value = new doubleInt; value->i_type = i_type; value->i_option = i_option; /* Special case for SPACERS, who aren't QWidgets */ if( i_type == WIDGET_SPACER || i_type == WIDGET_SPACER_EXTEND ) { QLabel *label = new QLabel( this ); label->setPixmap( QPixmap( ":/toolbar/space" ) ); if( i_type == WIDGET_SPACER_EXTEND ) { label->setSizePolicy( QSizePolicy::MinimumExpanding, QSizePolicy::Preferred ); /* Create a box around it */ label->setFrameStyle( QFrame::Panel | QFrame::Sunken ); label->setLineWidth ( 1 ); label->setAlignment( Qt::AlignCenter ); } else label->setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Preferred ); /* Install event Filter for drag'n drop */ label->installEventFilter( this ); controlLayout->insertWidget( i_index, label ); } /* Normal Widgets */ else { QWidget *widg = createWidget( i_type, i_option ); if( !widg ) return; /* Install the Event Filter in order to catch the drag */ widg->setParent( this ); widg->installEventFilter( this ); /* We are in a complex widget, we need to stop events on children too */ if( i_type >= VOLUME && i_type < SPECIAL_MAX ) { QList<QObject *>children = widg->children(); QObject *child; foreach( child, children ) { QWidget *childWidg; if( ( childWidg = qobject_cast<QWidget *>( child ) ) ) { child->installEventFilter( this ); childWidg->setEnabled( true ); } } /* Decorating the frames when possible */ QFrame *frame; if( i_type >= MENU_BUTTONS /* Don't bother to check for volume */ && ( frame = qobject_cast<QFrame *>( widg ) ) != NULL ) { frame->setFrameStyle( QFrame::Panel | QFrame::Raised ); frame->setLineWidth ( 1 ); } }
Widget* ResourceLayout::createWidget(const WidgetInfo& _widgetInfo, const std::string& _prefix, Widget* _parent, bool _template) { std::string widgetName = _widgetInfo.name; WidgetStyle style = _widgetInfo.style; std::string widgetLayer = _widgetInfo.layer; if (!widgetName.empty()) widgetName = _prefix + widgetName; if (_parent != nullptr && style != WidgetStyle::Popup) widgetLayer.clear(); if (_parent == nullptr && widgetLayer.empty()) { MYGUI_LOG(Warning, "Root widget's layer is not specified, widget won't be visible. Specify layer or parent or attach it to another widget after load." << " [" << LayoutManager::getInstance().getCurrentLayout() << "]"); } IntCoord coord; if (_widgetInfo.positionType == WidgetInfo::Pixels) coord = _widgetInfo.intCoord; else if (_widgetInfo.positionType == WidgetInfo::Relative) { if (_parent == nullptr || style == WidgetStyle::Popup) coord = CoordConverter::convertFromRelative(_widgetInfo.floatCoord, RenderManager::getInstance().getViewSize()); else coord = CoordConverter::convertFromRelative(_widgetInfo.floatCoord, _parent->getClientCoord().size()); } Widget* wid; if (nullptr == _parent) wid = Gui::getInstance().createWidgetT(_widgetInfo.type, _widgetInfo.skin, coord, _widgetInfo.align, widgetLayer, widgetName); else if (_template) wid = _parent->_createSkinWidget(style, _widgetInfo.type, _widgetInfo.skin, coord, _widgetInfo.align, widgetLayer, widgetName); else wid = _parent->createWidgetT(style, _widgetInfo.type, _widgetInfo.skin, coord, _widgetInfo.align, widgetLayer, widgetName); for (VectorStringPairs::const_iterator iter = _widgetInfo.properties.begin(); iter != _widgetInfo.properties.end(); ++iter) { wid->setProperty(iter->first, iter->second); } for (MapString::const_iterator iter = _widgetInfo.userStrings.begin(); iter != _widgetInfo.userStrings.end(); ++iter) { wid->setUserString(iter->first, iter->second); if (!_template) LayoutManager::getInstance().eventAddUserString(wid, iter->first, iter->second); } for (VectorWidgetInfo::const_iterator iter = _widgetInfo.childWidgetsInfo.begin(); iter != _widgetInfo.childWidgetsInfo.end(); ++iter) { createWidget(*iter, _prefix, wid); } for (std::vector<ControllerInfo>::const_iterator iter = _widgetInfo.controllers.begin(); iter != _widgetInfo.controllers.end(); ++iter) { MyGUI::ControllerItem* item = MyGUI::ControllerManager::getInstance().createItem(iter->type); if (item) { for (MapString::const_iterator iterProp = iter->properties.begin(); iterProp != iter->properties.end(); ++iterProp) { item->setProperty(iterProp->first, iterProp->second); } MyGUI::ControllerManager::getInstance().addItem(wid, item); } else { MYGUI_LOG(Warning, "Controller '" << iter->type << "' not found"); } } return wid; }
static void loadMenuLayout(char *text) { int y, i, w, maxWidth; i = 0; menu.widgetCount = 2; menu.widgets = malloc(sizeof(Widget *) * menu.widgetCount); if (menu.widgets == NULL) { showErrorAndExit("Ran out of memory when creating OK Menu"); } menu.widgets[0] = createWidget(text, NULL, NULL, NULL, NULL, -1, 10, FALSE, 255, 255, 255); menu.widgets[1] = createWidget(_("OK"), NULL, NULL, NULL, &doOK, -1, 10, TRUE, 255, 255, 255); y = BUTTON_PADDING + BORDER_PADDING; maxWidth = w = 0; for (i=0;i<menu.widgetCount;i++) { if (menu.widgets[i]->label != NULL && menu.widgets[i]->normalState->w > maxWidth) { maxWidth = menu.widgets[i]->normalState->w; } } for (i=0;i<menu.widgetCount;i++) { menu.widgets[i]->y = y; if (menu.widgets[i]->x != -1) { menu.widgets[i]->x = BUTTON_PADDING + BORDER_PADDING; } if (menu.widgets[i]->label != NULL) { menu.widgets[i]->label->y = y; menu.widgets[i]->label->x = menu.widgets[i]->x + maxWidth + 10; if (menu.widgets[i]->label->x + menu.widgets[i]->label->text->w > w) { w = menu.widgets[i]->label->x + menu.widgets[i]->label->text->w; } } else { if (menu.widgets[i]->x + menu.widgets[i]->selectedState->w > w) { w = menu.widgets[i]->x + menu.widgets[i]->selectedState->w; } } y += menu.widgets[i]->selectedState->h + BUTTON_PADDING; } menu.w = w + BUTTON_PADDING; menu.h = y - BORDER_PADDING; menu.background = addBorder(createSurface(menu.w, menu.h), 255, 255, 255, 0, 0, 0); menu.x = (SCREEN_WIDTH - menu.background->w) / 2; menu.y = (SCREEN_HEIGHT - menu.background->h) / 2; }
static void loadMenuLayout() { char menuName[MAX_VALUE_LENGTH], *token; int w, y, i, maxWidth; float distance; w = 0; i = 0; maxWidth = 0; menu.widgetCount = 11; menu.widgets = malloc(sizeof(Widget *) * menu.widgetCount); if (menu.widgets == NULL) { showErrorAndExit("Ran out of memory when creating Stats Menu"); } menu.widgets[0] = createWidget(_("Statistics"), NULL, NULL, NULL, NULL, -1, 0, TRUE, 255, 255, 255); token = getPlayTimeAsString(); snprintf(menuName, MAX_VALUE_LENGTH, _("Play Time: %s"), token); free(token); menu.widgets[1] = createWidget(menuName, NULL, NULL, NULL, NULL, 10, 0, FALSE, 255, 255, 255); snprintf(menuName, MAX_VALUE_LENGTH, _("Kills: %d"), game.kills); menu.widgets[2] = createWidget(menuName, NULL, NULL, NULL, NULL, 10, 0, FALSE, 255, 255, 255); snprintf(menuName, MAX_VALUE_LENGTH, _("Arrows Fired: %d"), game.arrowsFired); menu.widgets[3] = createWidget(menuName, NULL, NULL, NULL, NULL, 10, 0, FALSE, 255, 255, 255); snprintf(menuName, MAX_VALUE_LENGTH, _("Bats Drowned: %d"), game.batsDrowned); menu.widgets[4] = createWidget(menuName, NULL, NULL, NULL, NULL, 10, 0, FALSE, 255, 255, 255); snprintf(menuName, MAX_VALUE_LENGTH, _("Times Eaten: %d"), game.timesEaten); menu.widgets[5] = createWidget(menuName, NULL, NULL, NULL, NULL, 10, 0, FALSE, 255, 255, 255); distance = game.distanceTravelled; distance /= 45000; /* 45 pixels is 1 metre */ snprintf(menuName, MAX_VALUE_LENGTH, _("Distanced Travelled: %0.1fKM"), distance); menu.widgets[6] = createWidget(menuName, NULL, NULL, NULL, NULL, 10, 0, FALSE, 255, 255, 255); snprintf(menuName, MAX_VALUE_LENGTH, _("Attacks Blocked: %d"), game.attacksBlocked); menu.widgets[7] = createWidget(menuName, NULL, NULL, NULL, NULL, 10, 0, FALSE, 255, 255, 255); token = getSlimeTimeAsString(); snprintf(menuName, MAX_VALUE_LENGTH, _("Time Spent As A Slime: %s"), token); free(token); menu.widgets[8] = createWidget(menuName, NULL, NULL, NULL, NULL, 10, 0, FALSE, 255, 255, 255); snprintf(menuName, MAX_VALUE_LENGTH, _("Secrets Found: %d / %d"), game.secretsFound, TOTAL_SECRETS); menu.widgets[9] = createWidget(menuName, NULL, NULL, NULL, NULL, 10, 0, FALSE, 255, 255, 255); menu.widgets[10] = createWidget(_("OK"), NULL, NULL, NULL, NULL, -1, 0, TRUE, 255, 255, 255); y = BUTTON_PADDING / 2 + BORDER_PADDING; for (i=0;i<menu.widgetCount;i++) { menu.widgets[i]->y = y; if (menu.widgets[i]->x != -1) { menu.widgets[i]->x = BUTTON_PADDING / 2 + BORDER_PADDING; } if (menu.widgets[i]->label != NULL) { menu.widgets[i]->label->y = y; menu.widgets[i]->label->x = menu.widgets[i]->x + maxWidth + 10; if (menu.widgets[i]->label->x + menu.widgets[i]->label->text->w > w) { w = menu.widgets[i]->label->x + menu.widgets[i]->label->text->w; } } else { if (menu.widgets[i]->x + menu.widgets[i]->selectedState->w > w) { w = menu.widgets[i]->x + menu.widgets[i]->selectedState->w; } } y += menu.widgets[i]->selectedState->h + BUTTON_PADDING / 2; } menu.w = w + BUTTON_PADDING; menu.h = y - BORDER_PADDING; menu.background = addBorder(createSurface(menu.w, menu.h), 255, 255, 255, 0, 0, 0); menu.x = (SCREEN_WIDTH - menu.background->w) / 2; menu.y = (SCREEN_HEIGHT - menu.background->h) / 2; }
static void loadMenuLayout() { Medal *medal; int i, width, medalCount; Texture *texture; medal = getMedals(); medalCount = getMedalCount(); i = 0; width = 0; menu.w = 0; menu.h = 0; menu.startY = 0; menu.endY = 0; menu.widgetCount = medalCount; menu.widgets = malloc(sizeof(Widget *) * menu.widgetCount); if (menu.widgets == NULL) { showErrorAndExit("Ran out of memory when creating Medals Menu"); } for (i=0;i<menu.widgetCount;i++) { if (medal[i].hidden == TRUE && medal[i].obtained == FALSE) { menu.widgets[i] = createWidget(_("Hidden Medal"), NULL, NULL, NULL, NULL, 10, 20 + i * 40, FALSE, 255, 255, 255); } else { if (medal[i].obtained == TRUE) { menu.widgets[i] = createWidget(_(medal[i].description), NULL, NULL, NULL, NULL, 10, 20 + i * 40, FALSE, 0, 200, 0); } else { menu.widgets[i] = createWidget(_(medal[i].description), NULL, NULL, NULL, NULL, 10, 20 + i * 40, FALSE, 255, 255, 255); } } if (width < menu.widgets[i]->x + menu.widgets[i]->normalState->w) { width = menu.widgets[i]->x + menu.widgets[i]->normalState->w; } texture = getMedalImage(medal[i].medalType, medal[i].obtained); menu.widgets[i]->label = createImageLabel(texture, menu.widgets[i]->x, menu.widgets[i]->y); menu.widgets[i]->label->y = menu.widgets[i]->y + menu.widgets[i]->normalState->h / 2 - menu.widgets[i]->label->text->h / 2; menu.endY = menu.widgets[i]->y + menu.widgets[i]->normalState->h - menu.h; } width += 15; menu.h = SCREEN_HEIGHT - BUTTON_PADDING; for (i=0;i<menu.widgetCount;i++) { if (menu.widgets[i]->label != NULL) { menu.widgets[i]->label->x = width; if (menu.w < menu.widgets[i]->label->x + menu.widgets[i]->label->text->w) { menu.w = menu.widgets[i]->label->x + menu.widgets[i]->label->text->w; } } } menu.background = addBorder(createSurface(menu.w, menu.h, FALSE), 255, 255, 255, 0, 0, 0); menu.x = (SCREEN_WIDTH - menu.background->w) / 2; menu.y = (SCREEN_HEIGHT - menu.background->h) / 2; }
/*! \internal */ QWidget *QFormBuilder::createWidget(const QString &widgetName, QWidget *parentWidget, const QString &name) { if (widgetName.isEmpty()) { //: Empty class name passed to widget factory method qWarning() << QCoreApplication::translate("QFormBuilder", "An empty class name was passed on to %1 (object name: '%2').").arg(QString::fromUtf8(Q_FUNC_INFO), name); return 0; } QWidget *w = 0; #ifndef QT_NO_TABWIDGET if (qobject_cast<QTabWidget*>(parentWidget)) parentWidget = 0; #endif #ifndef QT_NO_STACKEDWIDGET if (qobject_cast<QStackedWidget*>(parentWidget)) parentWidget = 0; #endif #ifndef QT_NO_TOOLBOX if (qobject_cast<QToolBox*>(parentWidget)) parentWidget = 0; #endif // ### special-casing for Line (QFrame) -- fix for 4.2 do { if (widgetName == QFormBuilderStrings::instance().lineClass) { w = new QFrame(parentWidget); static_cast<QFrame*>(w)->setFrameStyle(QFrame::HLine | QFrame::Sunken); break; } const QByteArray widgetNameBA = widgetName.toUtf8(); const char *widgetNameC = widgetNameBA.constData(); if (w) { // symmetry for macro } #define DECLARE_LAYOUT(L, C) #define DECLARE_COMPAT_WIDGET(W, C) #define DECLARE_WIDGET(W, C) else if (!qstrcmp(widgetNameC, #W)) { Q_ASSERT(w == 0); w = new W(parentWidget); } #define DECLARE_WIDGET_1(W, C) else if (!qstrcmp(widgetNameC, #W)) { Q_ASSERT(w == 0); w = new W(0, parentWidget); } #include "widgets.table" #undef DECLARE_COMPAT_WIDGET #undef DECLARE_LAYOUT #undef DECLARE_WIDGET #undef DECLARE_WIDGET_1 if (w) break; // try with a registered custom widget QDesignerCustomWidgetInterface *factory = m_customWidgets.value(widgetName); if (factory != 0) w = factory->createWidget(parentWidget); } while(false); QFormBuilderExtra *fb = QFormBuilderExtra::instance(this); if (w == 0) { // Attempt to instantiate base class of promoted/custom widgets const QString baseClassName = fb->customWidgetBaseClass(widgetName); if (!baseClassName.isEmpty()) { qWarning() << QCoreApplication::translate("QFormBuilder", "QFormBuilder was unable to create a custom widget of the class '%1'; defaulting to base class '%2'.").arg(widgetName, baseClassName); return createWidget(baseClassName, parentWidget, name); } } if (w == 0) { // nothing to do qWarning() << QCoreApplication::translate("QFormBuilder", "QFormBuilder was unable to create a widget of the class '%1'.").arg(widgetName); return 0; } w->setObjectName(name); if (qobject_cast<QDialog *>(w)) w->setParent(parentWidget); return w; }
GuiWidget::GuiWidget(QWidget *parent) : QWidget(parent) { createWidget(); }
void ItemOrderList::onListWidgetItemsCurrentItemChanged(QListWidgetItem *current, QListWidgetItem *) { setCurrentItemWidget( current ? createWidget(current) : nullptr ); }
static void loadMenuLayout() { int i, x, y, w, maxWidth; y = x = -1; menu.widgetCount = 10; menu.widgets = malloc(sizeof(Widget *) * menu.widgetCount); if (menu.widgets == NULL) { showErrorAndExit("Ran out of memory when creating Main Menu"); } menu.widgets[0] = createWidget(_("New Game"), NULL, NULL, NULL, &doNewGame, x, y, TRUE, 255, 255, 255); menu.widgets[1] = createWidget(_("Continue"), NULL, NULL, NULL, &continueGame, x, y, TRUE, 255, 255, 255); menu.widgets[1]->disabled = game.canContinue == TRUE ? FALSE : TRUE; menu.widgets[2] = createWidget(_("Restart Checkpoint"), NULL, NULL, NULL, &restartCheckpoint, x, y, TRUE, 255, 255, 255); menu.widgets[2]->disabled = game.canContinue == TRUE ? FALSE : TRUE; menu.widgets[3] = createWidget(_("Tutorial"), NULL, NULL, NULL, &doTutorial, x, y, TRUE, 255, 255, 255); menu.widgets[4] = createWidget(_("Load Game"), NULL, NULL, NULL, &showIOMenu, x, y, TRUE, 255, 255, 255); menu.widgets[5] = createWidget(_("Options"), NULL, NULL, NULL, &showOptionsMenu, x, y, TRUE, 255, 255, 255); menu.widgets[6] = createWidget(_("Statistics"), NULL, NULL, NULL, &showStatsMenu, x, y, TRUE, 255, 255, 255); menu.widgets[7] = createWidget(_("Medals"), NULL, NULL, NULL, &showMedalsMenu, x, y, TRUE, 255, 255, 255); menu.widgets[8] = createWidget(_("About"), NULL, NULL, NULL, &showAboutMenu, x, y, TRUE, 255, 255, 255); menu.widgets[9] = createWidget(_("Quit"), NULL, NULL, NULL, &doQuit, x, y, TRUE, 255, 255, 255); y = BUTTON_PADDING + BORDER_PADDING; w = 0; maxWidth = 0; for (i=0;i<menu.widgetCount;i++) { if (menu.widgets[i]->label != NULL && menu.widgets[i]->normalState->w > maxWidth) { maxWidth = menu.widgets[i]->normalState->w; } } for (i=0;i<menu.widgetCount;i++) { menu.widgets[i]->y = y; if (menu.widgets[i]->x != -1) { menu.widgets[i]->x = BUTTON_PADDING + BORDER_PADDING; } if (menu.widgets[i]->label != NULL) { menu.widgets[i]->label->y = y; menu.widgets[i]->label->x = menu.widgets[i]->x + maxWidth + 10; if (menu.widgets[i]->label->x + menu.widgets[i]->label->text->w > w) { w = menu.widgets[i]->label->x + menu.widgets[i]->label->text->w; } } else { if (menu.widgets[i]->x + menu.widgets[i]->selectedState->w > w) { w = menu.widgets[i]->x + menu.widgets[i]->selectedState->w; } } if (i != 1) { y += menu.widgets[i]->selectedState->h + BUTTON_PADDING; } } menu.w = w + BUTTON_PADDING; menu.h = y - BORDER_PADDING; menu.background = addBorder(createSurface(menu.w, menu.h), 255, 255, 255, 0, 0, 0); menu.x = (SCREEN_WIDTH - menu.background->w) / 2; menu.y = (SCREEN_HEIGHT - menu.background->h) / 2; }
static void loadMenuLayout() { int i, x, y, w, maxWidth; menu.widgetCount = 4; menu.widgets = malloc(sizeof(Widget *) * menu.widgetCount); if (menu.widgets == NULL) { showErrorAndExit("Ran out of memory when creating Cheat Menu"); } x = 20; y = 0; menu.widgets[0] = createWidget(_("Infinite Health"), NULL, &toggleInfiniteHealth, &toggleInfiniteHealth, &toggleInfiniteHealth, x, y, TRUE, 255, 255, 255); menu.widgets[0]->label = createLabel(game.infiniteEnergy == TRUE ? _("Yes") : _("No"), menu.widgets[0]->x + menu.widgets[0]->normalState->w + 10, y); healthCheat = game.infiniteEnergy; menu.widgets[1] = createWidget(_("Infinite Arrows"), NULL, &toggleInfiniteArrows, &toggleInfiniteArrows, &toggleInfiniteArrows, x, y, TRUE, 255, 255, 255); menu.widgets[1]->label = createLabel(game.infiniteArrows == TRUE ? _("Yes") : _("No"), menu.widgets[1]->x + menu.widgets[1]->normalState->w + 10, y); arrowCheat = game.infiniteArrows; menu.widgets[2] = createWidget(_("Lava is fatal"), NULL, &toggleLavaIsFatal, &toggleLavaIsFatal, &toggleLavaIsFatal, x, y, TRUE, 255, 255, 255); menu.widgets[2]->label = createLabel(game.lavaIsFatal == TRUE ? _("Yes") : _("No"), menu.widgets[2]->x + menu.widgets[2]->normalState->w + 10, y); lavaCheat = game.lavaIsFatal == TRUE ? FALSE : TRUE; menu.widgets[3] = createWidget(_("Back"), NULL, NULL, NULL, &showOptionsMenu, -1, y, TRUE, 255, 255, 255); y = BUTTON_PADDING + BORDER_PADDING; maxWidth = w = 0; for (i=0;i<menu.widgetCount;i++) { if (menu.widgets[i]->label != NULL && menu.widgets[i]->normalState->w > maxWidth) { maxWidth = menu.widgets[i]->normalState->w; } } for (i=0;i<menu.widgetCount;i++) { menu.widgets[i]->y = y; if (menu.widgets[i]->x != -1) { menu.widgets[i]->x = BUTTON_PADDING + BORDER_PADDING; } if (menu.widgets[i]->label != NULL) { menu.widgets[i]->label->y = y; menu.widgets[i]->label->x = menu.widgets[i]->x + maxWidth + 10; if (menu.widgets[i]->label->x + menu.widgets[i]->label->text->w > w) { w = menu.widgets[i]->label->x + menu.widgets[i]->label->text->w; } } else { if (menu.widgets[i]->x + menu.widgets[i]->selectedState->w > w) { w = menu.widgets[i]->x + menu.widgets[i]->selectedState->w; } } y += menu.widgets[i]->selectedState->h + BUTTON_PADDING; } menu.w = w + BUTTON_PADDING; menu.h = y - BORDER_PADDING; menu.background = addBorder(createSurface(menu.w, menu.h), 255, 255, 255, 0, 0, 0); menu.x = (SCREEN_WIDTH - menu.background->w) / 2; menu.y = (SCREEN_HEIGHT - menu.background->h) / 2; }
Widget* GUIManager::createWidget() { return createWidget("Widget"); }
void CLabel::initSetupUi() { createFrame(); createWidget(); createLayout(); }
setHeight(height); addWidgetListener(this); } void WidgetGroup::addButton(const std::string &tag) { addButton(tag, tag); } void WidgetGroup::addButton(const std::string &restrict text, const std::string &restrict tag) { if (text.empty() || tag.empty()) return; Widget *const widget = createWidget(text); if (widget) { widget->setActionEventId(mActionEventId + tag); widget->addActionListener(this); add(widget, mSpacing); } } void WidgetGroup::action(const ActionEvent &event) { for (ActionListenerIterator iter = mActionListeners.begin(); iter != mActionListeners.end(); ++iter) { (*iter)->action(event); }
int main() { auto widget = createWidget(); }
static void loadMenuLayout() { char *text; int x, y, w, maxWidth, i; menu.widgetCount = 5; menu.widgets = malloc(sizeof(Widget *) * menu.widgetCount); if (menu.widgets == NULL) { showErrorAndExit("Ran out of memory when creating Control Menu"); } x = y = 0; menu.widgets[0] = createWidget(_("Sound"), &control.button[CONTROL_UP], &toggleSound, &toggleSound, &toggleSound, x, y, TRUE, 255, 255, 255); menu.widgets[0]->label = createLabel(game.audio == TRUE || game.audioDisabled == TRUE ? _("Yes") : _("No"), menu.widgets[0]->x + menu.widgets[0]->normalState->w + 10, y); menu.widgets[1] = createWidget(_("SFX Volume"), &game.sfxDefaultVolume, &lowerSFXVolume, &raiseSFXVolume, NULL, x, y, TRUE, 255, 255, 255); text = getVolumePercent(game.sfxDefaultVolume); menu.widgets[1]->label = createLabel(_(text), menu.widgets[1]->x + menu.widgets[1]->normalState->w + 10, y); free(text); menu.widgets[2] = createWidget(_("Music Volume"), &game.musicDefaultVolume, &lowerMusicVolume, &raiseMusicVolume, NULL, x, y, TRUE, 255, 255, 255); text = getVolumePercent(game.musicDefaultVolume); menu.widgets[2]->label = createLabel(_(text), menu.widgets[2]->x + menu.widgets[2]->normalState->w + 10, y); free(text); menu.widgets[3] = createWidget(_("Audio Quality"), &game.audioQuality, &toggleQuality, &toggleQuality, &toggleQuality, x, y, TRUE, 255, 255, 255); text = getQuality(); menu.widgets[3]->label = createLabel(text, menu.widgets[3]->x + menu.widgets[3]->normalState->w + 10, y); free(text); menu.widgets[4] = createWidget(_("Back"), NULL, NULL, NULL, &showOptionsMenu, -1, y, TRUE, 255, 255, 255); y = BUTTON_PADDING + BORDER_PADDING; maxWidth = w = 0; for (i=0;i<menu.widgetCount;i++) { if (menu.widgets[i]->label != NULL && menu.widgets[i]->normalState->w > maxWidth) { maxWidth = menu.widgets[i]->normalState->w; } } for (i=0;i<menu.widgetCount;i++) { menu.widgets[i]->y = y; if (menu.widgets[i]->x != -1) { menu.widgets[i]->x = BUTTON_PADDING + BORDER_PADDING; } if (menu.widgets[i]->label != NULL) { menu.widgets[i]->label->y = y; menu.widgets[i]->label->x = menu.widgets[i]->x + maxWidth + 10; if (menu.widgets[i]->label->x + menu.widgets[i]->label->text->w > w) { w = menu.widgets[i]->label->x + menu.widgets[i]->label->text->w; } } else { if (menu.widgets[i]->x + menu.widgets[i]->selectedState->w > w) { w = menu.widgets[i]->x + menu.widgets[i]->selectedState->w; } } y += menu.widgets[i]->selectedState->h + BUTTON_PADDING; } menu.w = w + BUTTON_PADDING; menu.h = y - BORDER_PADDING; menu.background = addBorder(createSurface(menu.w, menu.h, FALSE), 255, 255, 255, 0, 0, 0); menu.x = (SCREEN_WIDTH - menu.background->w) / 2; menu.y = (SCREEN_HEIGHT - menu.background->h) / 2; }
m_canvasController = new KoCanvasControllerWidget(actionCollection(), this); m_canvasController->setCanvasMode(KoCanvasController::Infinite); createCanvas(0); KoToolManager::instance()->addController(m_canvasController); KoToolManager::instance()->registerTools(actionCollection(), m_canvasController); m_zoomController = new KoZoomController(m_canvasController, &m_zoomHandler, actionCollection()); connect(m_zoomController, SIGNAL(zoomChanged(KoZoomMode::Mode,qreal)), this, SLOT(slotZoomChanged(KoZoomMode::Mode,qreal))); m_zoomAction = m_zoomController->zoomAction(); m_mainWindow->addStatusBarItem(m_zoomAction->createWidget(m_mainWindow->statusBar()), 0, this); m_zoomController->setZoomMode(KoZoomMode::ZOOM_WIDTH); gridLayout->addWidget(m_canvasController, 1, 1); connect(m_canvasController->proxyObject, SIGNAL(canvasMousePositionChanged(QPoint)), this, SLOT(updateMousePosition(QPoint))); KoToolBoxFactory toolBoxFactory(m_canvasController); m_mainWindow->createDockWidget(&toolBoxFactory); connect(m_canvasController, SIGNAL(toolOptionWidgetsChanged(QList<QWidget*>)), m_mainWindow->dockerManager(), SLOT(newOptionWidgets(QList<QWidget*>))); SectionsBoxDockFactory structureDockerFactory; m_sectionsBoxDock = qobject_cast<SectionsBoxDock*>(m_mainWindow->createDockWidget(&structureDockerFactory));
void GUI::loadWidget(const Aurora::GFF3Struct &strct, Widget *parent) { WidgetContext ctx(strct, parent); createWidget(ctx); addWidget(ctx.widget); if (ctx.parent) { if (ctx.strct->getString("Obj_Parent") != ctx.parent->getTag()) throw Common::Exception("Parent's tag != Obj_Parent"); parent->addChild(*ctx.widget); float pX, pY, pZ; parent->getPosition(pX, pY, pZ); float x = ctx.strct->getDouble("Obj_X") * 100.0 + pX; float y = ctx.strct->getDouble("Obj_Y") * 100.0 + pY; float z = pZ - ctx.strct->getDouble("Obj_Z") * 100.0; ctx.widget->setPosition(x, y, z); } else { // We'll ignore these for now, centering the GUI } initWidget(ctx); // Create a caption/label and move the label to its destined position WidgetLabel *label = createCaption(ctx); if (label && ctx.strct->hasField("Obj_Caption")) { const Aurora::GFF3Struct &caption = ctx.strct->getStruct("Obj_Caption"); float alignH = caption.getDouble("AurString_AlignH"); float alignV = caption.getDouble("AurString_AlignV"); float labelX = ctx.strct->getDouble("Obj_Label_X") * 100.0; float labelY = ctx.strct->getDouble("Obj_Label_Y") * 100.0; float labelZ = ctx.strct->getDouble("Obj_Label_Z") * 100.0; if (ctx.type != kWidgetTypeLabel) { if (label->getWidth() > ctx.widget->getWidth() || label->getHeight() > ctx.widget->getHeight()) label->setText(label->getText(), alignH, ctx.widget->getWidth(), ctx.widget->getHeight()); labelX += ctx.widget->getWidth () * alignV; labelY += ctx.widget->getHeight() * alignH; labelX -= label->getWidth () / 2; labelY -= label->getHeight() / 2; } else { float labelWidth = 0.0; if (ctx.strct->hasField("Obj_Label_Width")) labelWidth = ctx.strct->getDouble("Obj_Label_Width") * 100.0; float labelHeight = 0.0; if (ctx.strct->hasField("Obj_Label_Height")) labelHeight = ctx.strct->getDouble("Obj_Label_Height") * 100.0; if (alignV == 0.5) { bool multilines = false; if (label->getWidth() > labelWidth) multilines = true; label->setText(label->getText(), alignH, labelWidth, labelHeight); labelX += labelWidth * alignH; if (multilines) labelY += label->getHeight() * alignV; } labelX -= label->getWidth () * alignH; labelY -= label->getHeight(); labelY -= label->getHeight() * alignV; } label->movePosition(labelX, labelY, -labelZ); } // uint32 layer = strct.getUint("Obj_Layer"); // bool locked = strct.getUint("Obj_Locked") != 0; // Go down to the children if (ctx.strct->hasField("Obj_ChildList")) { const Aurora::GFF3List &children = ctx.strct->getList("Obj_ChildList"); for (Aurora::GFF3List::const_iterator c = children.begin(); c != children.end(); ++c) loadWidget(**c, ctx.widget); } }
void MainWindow::loadPage(InstallationStep page) { m_ui.nextButton->setVisible(true); m_ui.previousButton->setVisible(true); disconnect(this, SLOT(showProgressWidget())); disconnect(this, SIGNAL(readyToCreate()), 0, 0); while (m_ui.stackedWidget->count() != 0) { QWidget *w = m_ui.stackedWidget->widget(0); m_ui.stackedWidget->removeWidget(w); w->deleteLater(); } switch (page) { case MainWindow::Welcome: m_ui.stackedWidget->addWidget(new IntroPage(this)); m_ui.abortButton->setVisible(true); m_ui.previousButton->setVisible(false); break; case MainWindow::ReleaseNotes: m_ui.stackedWidget->addWidget(new ReleaseNotesPage(this)); break; case MainWindow::LicenseApproval: m_ui.stackedWidget->addWidget(new LicensePage(this)); break; case MainWindow::Language: m_ui.stackedWidget->addWidget(new LocalePage(this)); break; case MainWindow::CreateUser: m_ui.stackedWidget->addWidget(new UserCreationPage(this)); break; case MainWindow::Partition: m_ui.stackedWidget->addWidget(new PartitionPage(this)); break; case MainWindow::ReadyToInstall: m_ui.stackedWidget->addWidget(new ReadyInstallPage(this)); break; case MainWindow::InstallSystem: m_ui.stackedWidget->addWidget(new InstallationPage(this)); m_ui.previousButton->setVisible(false); m_ui.nextButton->setVisible(false); break; case MainWindow::Configuration: m_ui.stackedWidget->addWidget(new ConfigPage(this)); m_ui.previousButton->setVisible(false); break; case MainWindow::FinishStep: m_ui.stackedWidget->addWidget(new FinishPage(this)); m_ui.previousButton->setVisible(false); m_ui.nextButton->setVisible(false); m_ui.abortButton->setVisible(false); break; default: break; } setInstallationStep(page, MainWindow::InProgress); m_ui.stackedWidget->setCurrentIndex(0); AbstractPage *abstractPage = qobject_cast<AbstractPage *>(m_ui.stackedWidget->widget(0)); if (abstractPage) { connect(abstractPage, SIGNAL(abortInstallation()), this, SLOT(abortInstallation())); connect(abstractPage, SIGNAL(goToNextStep()), this, SLOT(goToNextStep())); connect(abstractPage, SIGNAL(goToPreviousStep()), this, SLOT(goToPreviousStep())); connect(abstractPage, SIGNAL(showProgressWidget()), this, SLOT(showProgressWidget())); connect(abstractPage, SIGNAL(deleteProgressWidget()), this, SLOT(deleteProgressWidget())); connect(abstractPage, SIGNAL(updateProgressWidget(int)), this, SIGNAL(updateProgressWidget(int))); connect(abstractPage, SIGNAL(setProgressWidgetText(const QString&)), this, SIGNAL(setProgressWidgetText(const QString&))); connect(abstractPage, SIGNAL(enableNextButton(bool)), this, SLOT(enableNextButton(bool))); connect(abstractPage, SIGNAL(enablePreviousButton(bool)), this, SLOT(enablePreviousButton(bool))); connect(m_ui.nextButton, SIGNAL(clicked()), abstractPage, SLOT(aboutToGoToNext())); connect(m_ui.previousButton, SIGNAL(clicked()), abstractPage, SLOT(aboutToGoToPrevious())); connect(this, SIGNAL(readyToCreate()), abstractPage, SLOT(createWidget())); if (page == MainWindow::FinishStep) { FinishPage *finishPage = qobject_cast<FinishPage *>(abstractPage); connect(finishPage, SIGNAL(reboot()), this, SLOT(quitAndReboot())); connect(finishPage, SIGNAL(keepChakra()), this, SLOT(quitToChakra())); } } emit readyToCreate(); }
m_table::m_table() { init(); createWidget(); }
void PukeController::messageHandler(int fd, PukeMessage *pm) { /*FOLD00*/ widgetId wI, wIret; wI.fd = fd; wI.iWinId = pm->iWinId; commandStruct *cs; cs = qidCommandTable[pm->iCommand]; if(cs != NULL){ (this->*(cs->cmd))(fd,pm); } else if(pm->iCommand == PUKE_WIDGET_CREATE){ wIret = wI; wIret.iWinId = createWidget(wI, pm).iWinId; // Create the acutal pw PukeMessage pmRet; pmRet.iCommand = PUKE_WIDGET_CREATE_ACK; pmRet.iWinId = wIret.iWinId; pmRet.iArg = 0; pmRet.cArg = strdup(pm->cArg); // printf("Got: %s Copied: %s\n", pm->cArg, pmRet.cArg); pmRet.iTextSize = strlen(pm->cArg); emit outputMessage(fd, &pmRet); free(pmRet.cArg); } else if(pm->iCommand == PUKE_WIDGET_LOAD){ PukeMessage pmRet = *pm; KDynamicHandle handle; // const char *error; PObject *(*wc)(CreateArgs &ca); widgetCreate *wC; if(pm->iTextSize == 0){ emit(errorCommandFailed(-pm->iCommand, 1)); return; } // coolo: I concider this a major hack, but KApplication doesn't provide the libpath ;( handle = KDynamicLibrary::loadLibrary(kapp->kde_bindir() + "/../lib/ksirc/lib" + QString(pm->cArg), KDynamicLibrary::ResolveLazy); if (!handle) { emit(errorCommandFailed(-pm->iCommand, 1)); return; } wc = (PObject *(*)(CreateArgs &ca) ) KDynamicLibrary::getSymbol(handle, "createWidget"); wC = new("widgetCreate") widgetCreate; wC->wc = wc; wC->dlhandle = handle; widgetCF.insert(pm->iArg, wC); // warning("new("widget:") widget: %d with wc: %p and handle: %p", pm->iArg, wc, handle); pmRet.iCommand = -pm->iCommand; pmRet.iTextSize = 0; emit outputMessage(fd, &pmRet); } else if(pm->iCommand == PUKE_WIDGET_UNLOAD){ // const char *error; if(widgetCF[pm->iArg]){ /* dlclose(widgetCF[pm->iArg]->dlhandle); if ((error = dlerror()) != NULL) { fputs(error, stderr); pm->iCommand = -pm->iCommand; pm->iArg = -1; emit outputMessage(fd, pm); return; } */ KDynamicLibrary::unloadLibrary(widgetCF[pm->iArg]->dlhandle); widgetCF.remove(pm->iArg); pm->iCommand = -pm->iCommand; emit outputMessage(fd, pm); } } else{ if(checkWidgetId(&wI) == TRUE){ WidgetList[wI.fd]->find(wI.iWinId)->pwidget->messageHandler(fd, pm); } else{ PukeMessage pmRet; pmRet.iCommand = PUKE_INVALID; pmRet.iWinId = wI.iWinId; pmRet.iArg = 0; pmRet.iTextSize = 0; emit outputMessage(fd, &pmRet); } } }