void model_import_dlg::create_model_tab(QString title, render::lod lod) { QWidget * tab = new QWidget(ui.tabModels); QTabWidget * tabHost = new QTabWidget(tab); tabHost->setGeometry(-1, 10, 590, 620); tabHost->setObjectName("meshTabHost"); QObject::connect(tabHost, SIGNAL(tabBarClicked(int)), this, SLOT(on_mesh_tab_changed(int))); for (size_t i = 0; i < conv.count(); i++) { model_import_dlg::create_mesh_tab(tabHost, i, lod); } ui.tabModels->addTab(tab, "Model " + title); }
void CelestiaAppWindow::init(const QString& qConfigFileName, const QStringList& qExtrasDirectories) { QString celestia_data_dir = QString::fromLocal8Bit(::getenv("CELESTIA_DATA_DIR")); if (celestia_data_dir.isEmpty()) { QString celestia_data_dir = CONFIG_DATA_DIR; QDir::setCurrent(celestia_data_dir); } else if (QDir(celestia_data_dir).isReadable()) { QDir::setCurrent(celestia_data_dir); } else { QMessageBox::critical(0, "Celestia", _("Celestia is unable to run because the data directroy was not " "found, probably due to improper installation.")); exit(1); } // Get the config file name string configFileName; if (qConfigFileName.isEmpty()) configFileName = DEFAULT_CONFIG_FILE.toUtf8().data(); else configFileName = qConfigFileName.toUtf8().data(); // Translate extras directories from QString -> std::string vector<string> extrasDirectories; for (QStringList::const_iterator iter = qExtrasDirectories.begin(); iter != qExtrasDirectories.end(); iter++) { extrasDirectories.push_back(iter->toUtf8().data()); } #ifdef TARGET_OS_MAC static short domains[] = { kUserDomain, kLocalDomain, kNetworkDomain }; int domain = 0; int domainCount = (sizeof domains / sizeof(short)); QString resourceDir = QDir::currentPath(); while (!QDir::setCurrent(resourceDir+"/CelestiaResources") && domain < domainCount) { FSRef folder; CFURLRef url; UInt8 fullPath[PATH_MAX]; if (noErr == FSFindFolder(domains[domain++], kApplicationSupportFolderType, FALSE, &folder)) { url = CFURLCreateFromFSRef(nil, &folder); if (CFURLGetFileSystemRepresentation(url, TRUE, fullPath, PATH_MAX)) resourceDir = (const char *)fullPath; CFRelease(url); } } if (domain >= domainCount) { QMessageBox::critical(0, "Celestia", _("Celestia is unable to run because the CelestiaResources folder was not " "found, probably due to improper installation.")); exit(1); } #endif initAppDataDirectory(); m_appCore = new CelestiaCore(); AppProgressNotifier* progress = new AppProgressNotifier(this); alerter = new AppAlerter(this); m_appCore->setAlerter(alerter); setWindowIcon(QIcon(":/icons/celestia.png")); m_appCore->initSimulation(&configFileName, &extrasDirectories, progress); delete progress; // Enable antialiasing if requested in the config file. // TODO: Make this settable via the GUI QGLFormat glformat = QGLFormat::defaultFormat(); if (m_appCore->getConfig()->aaSamples > 1) { glformat.setSampleBuffers(true); glformat.setSamples(m_appCore->getConfig()->aaSamples); QGLFormat::setDefaultFormat(glformat); } glWidget = new CelestiaGlWidget(NULL, "Celestia", m_appCore); glWidget->makeCurrent(); GLenum glewErr = glewInit(); if (glewErr != GLEW_OK) { QMessageBox::critical(0, "Celestia", QString(_("Celestia was unable to initialize OpenGL extensions (error %1). Graphics quality will be reduced.")).arg(glewErr)); } m_appCore->setCursorHandler(glWidget); m_appCore->setContextMenuCallback(ContextMenu); MainWindowInstance = this; // TODO: Fix context menu callback setCentralWidget(glWidget); setWindowTitle("Celestia"); actions = new CelestiaActions(this, m_appCore); createMenus(); QTabWidget* tabWidget = new QTabWidget(this); tabWidget->setObjectName("celestia-tabbed-browser"); toolsDock = new QDockWidget(_("Celestial Browser"), this); toolsDock->setObjectName("celestia-tools-dock"); toolsDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); // Create the various browser widgets celestialBrowser = new CelestialBrowser(m_appCore, NULL); celestialBrowser->setObjectName("celestia-browser"); connect(celestialBrowser, SIGNAL(selectionContextMenuRequested(const QPoint&, Selection&)), this, SLOT(slotShowSelectionContextMenu(const QPoint&, Selection&))); QWidget* deepSkyBrowser = new DeepSkyBrowser(m_appCore, NULL); deepSkyBrowser->setObjectName("deepsky-browser"); connect(deepSkyBrowser, SIGNAL(selectionContextMenuRequested(const QPoint&, Selection&)), this, SLOT(slotShowSelectionContextMenu(const QPoint&, Selection&))); SolarSystemBrowser* solarSystemBrowser = new SolarSystemBrowser(m_appCore, NULL); solarSystemBrowser->setObjectName("ssys-browser"); connect(solarSystemBrowser, SIGNAL(selectionContextMenuRequested(const QPoint&, Selection&)), this, SLOT(slotShowSelectionContextMenu(const QPoint&, Selection&))); // Set up the browser tabs tabWidget->addTab(solarSystemBrowser, _("Solar System")); tabWidget->addTab(celestialBrowser, _("Stars")); tabWidget->addTab(deepSkyBrowser, _("Deep Sky Objects")); toolsDock->setWidget(tabWidget); addDockWidget(Qt::LeftDockWidgetArea, toolsDock); infoPanel = new InfoPanel(_("Info Browser"), this); infoPanel->setObjectName("info-panel"); infoPanel->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); addDockWidget(Qt::RightDockWidgetArea, infoPanel); infoPanel->setVisible(false); eventFinder = new EventFinder(m_appCore, _("Event Finder"), this); eventFinder->setObjectName("event-finder"); eventFinder->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); addDockWidget(Qt::LeftDockWidgetArea, eventFinder); eventFinder->setVisible(false); //addDockWidget(Qt::DockWidgetArea, eventFinder); // Create the time toolbar TimeToolBar* timeToolBar = new TimeToolBar(m_appCore, _("Time")); timeToolBar->setObjectName("time-toolbar"); timeToolBar->setFloatable(true); timeToolBar->setMovable(true); addToolBar(Qt::TopToolBarArea, timeToolBar); // Create the guides toolbar QToolBar* guidesToolBar = new QToolBar(_("Guides")); guidesToolBar->setObjectName("guides-toolbar"); guidesToolBar->setFloatable(true); guidesToolBar->setMovable(true); guidesToolBar->setToolButtonStyle(Qt::ToolButtonTextOnly); guidesToolBar->addAction(actions->equatorialGridAction); guidesToolBar->addAction(actions->galacticGridAction); guidesToolBar->addAction(actions->eclipticGridAction); guidesToolBar->addAction(actions->horizonGridAction); guidesToolBar->addAction(actions->eclipticAction); guidesToolBar->addAction(actions->markersAction); guidesToolBar->addAction(actions->constellationsAction); guidesToolBar->addAction(actions->boundariesAction); guidesToolBar->addAction(actions->orbitsAction); guidesToolBar->addAction(actions->labelsAction); addToolBar(Qt::TopToolBarArea, guidesToolBar); // Give keyboard focus to the 3D view glWidget->setFocus(); m_bookmarkManager = new BookmarkManager(this); // Load the bookmarks file and nitialize the bookmarks menu if (!loadBookmarks()) m_bookmarkManager->initializeBookmarks(); populateBookmarkMenu(); connect(m_bookmarkManager, SIGNAL(bookmarkTriggered(const QString&)), this, SLOT(slotBookmarkTriggered(const QString&))); m_bookmarkToolBar = new BookmarkToolBar(m_bookmarkManager, this); m_bookmarkToolBar->setObjectName("bookmark-toolbar"); m_bookmarkToolBar->rebuild(); addToolBar(Qt::TopToolBarArea, m_bookmarkToolBar); // Read saved window preferences readSettings(); // Build the view menu // Add dockable panels and toolbars to the view menu viewMenu->addAction(timeToolBar->toggleViewAction()); viewMenu->addAction(guidesToolBar->toggleViewAction()); viewMenu->addAction(m_bookmarkToolBar->toggleViewAction()); viewMenu->addSeparator(); viewMenu->addAction(toolsDock->toggleViewAction()); viewMenu->addAction(infoPanel->toggleViewAction()); viewMenu->addAction(eventFinder->toggleViewAction()); viewMenu->addSeparator(); QAction* fullScreenAction = new QAction(_("Full screen"), this); fullScreenAction->setCheckable(true); fullScreenAction->setShortcut(QString(_("Shift+F11"))); // Set the full screen check state only after reading settings fullScreenAction->setChecked(isFullScreen()); connect(fullScreenAction, SIGNAL(triggered()), this, SLOT(slotToggleFullScreen())); viewMenu->addAction(fullScreenAction); // We use a timer with a null timeout value // to add m_appCore->tick to Qt's event loop QTimer *t = new QTimer(dynamic_cast<QObject *>(this)); QObject::connect(t, SIGNAL(timeout()), SLOT(celestia_tick())); t->start(0); }
QWidget* WidgetStyle::createWidget(const QString& name) { if(name == "CheckBox") { QCheckBox* box = new QCheckBox("CheckBox"); box->setObjectName("CheckBox"); return setLayoutWidget({ box }, { 100, 30 }); } else if(name == "ComboBox") { QComboBox* box = new QComboBox; box->addItem("Item1"); box->addItem("Item3"); box->addItem("Item3"); box->setObjectName("ComboBox"); return setLayoutWidget({ box }, { 70, 30 }); } else if(name == "DateEdit") { QDateEdit* date = new QDateEdit; date->setObjectName("DateEdit"); return setLayoutWidget({ date }, { 110, 40 }); } else if(name == "DateTimeEdit") { QDateTimeEdit* date = new QDateTimeEdit; date->setObjectName("DateTimeEdit"); return setLayoutWidget({ date }, { 160, 30 }); } else if(name == "Dialog") { QDialog* dialog = new QDialog; dialog->setObjectName("Dialog"); return setLayoutWidget({ dialog }, { 160, 110 }); } else if(name == "DockWidget") //? { QDockWidget* widget = new QDockWidget; widget->setObjectName("DockWidget"); widget->resize(61, 22); return widget; } else if(name == "DoubleSpinBox") { QDoubleSpinBox* box = new QDoubleSpinBox; box->setObjectName("DoubleSpinBox"); return setLayoutWidget({ box }, { 90, 40 }); } else if(name == "Frame") //?? { QFrame* frame = new QFrame; frame->setObjectName("Frame"); frame->resize(150, 100); return frame; } else if(name == "GroupBox") { QGroupBox* box = new QGroupBox("GroupBox"); box->setObjectName("GroupBox"); return setLayoutWidget({ box }, { 160, 110 }); } else if(name == "Label") { QLabel* label = new QLabel("Label"); label->setObjectName("Label"); return setLayoutWidget({ label }, { 40, 20}); } else if(name == "LineEdit") { QLineEdit* line = new QLineEdit; line->setObjectName("LineEdit"); return setLayoutWidget({ line }, { 30, 30 }); } else if(name == "ListView") //?? { QListView* view = new QListView; view->setObjectName("ListView"); view->resize(71, 71); return view; } else if(name == "ListWidget") { QListWidget* list = new QListWidget; list->setObjectName("ListWidget"); for(int i = 0; i < 20; i++) list->addItem(QString("Item %1").arg(i)); return setLayoutWidget({ list }, { 80, 80 }); } else if(name == "MainWindow") { QMainWindow* window = new QMainWindow; window->setObjectName("MainWindow"); return setLayoutWidget({ window }, { 160, 110 }); } else if(name == "Menu") { QMenu* parentMenu = new QMenu; parentMenu->setObjectName("Menu"); parentMenu->addMenu("Menu1"); QMenu* menu1 = parentMenu->addMenu("Menu2"); menu1->addMenu("Menu1"); menu1->addMenu("Menu2"); parentMenu->addSeparator(); parentMenu->addMenu("Menu3"); return setLayoutWidget({ parentMenu }, { 160, 110 }); } else if(name == "MenuBar") { QMenuBar* bar = new QMenuBar; bar->setObjectName("QMenuBar"); QMenu* menu1 = bar->addMenu("MenuBar1"); menu1->addMenu("Menu1"); menu1->addSeparator(); menu1->addMenu("Menu2"); QMenu* menu2 = bar->addMenu("MenuBar2"); menu2->addMenu("Menu1"); menu2->addSeparator(); menu2->addMenu("Menu2"); QMenu* menu3 = bar->addMenu("MenuBar3"); menu3->addMenu("Menu1"); menu3->addSeparator(); menu3->addMenu("Menu2"); return setLayoutWidget({ bar }, { 280, 60 }); } else if(name == "ProgressBar") { QProgressBar* bar = new QProgressBar; bar->setObjectName("ProgressBar"); bar->setRange(0, 100); bar->setValue(0); QTimer* timer = new QTimer(bar); this->connect(timer, &QTimer::timeout, this, [bar]() { if(bar->value() == 100) bar->setValue(0); else bar->setValue(bar->value() + 1); }); timer->start(100); return setLayoutWidget({ bar }, { 110, 30 }); } else if(name == "PushButton") { QPushButton* button = new QPushButton("PushButton"); button->setObjectName("PushButton"); return setLayoutWidget({ button }, { 125, 30 }); } else if(name == "RadioButton") { QRadioButton* button = new QRadioButton("RadioButton"); button->setObjectName("RadioButton"); return setLayoutWidget({ button }, { 125, 30 }); } else if(name == "ScrollBar") { QScrollBar* barH = new QScrollBar(Qt::Horizontal); QScrollBar* barV = new QScrollBar(Qt::Vertical); barH->setObjectName("ScrollBarH"); barV->setObjectName("ScrollBarV"); return setLayoutWidget({ barH, barV }, { 200, 100 }); } else if(name == "Slider") { QSlider* sliderH = new QSlider(Qt::Horizontal); QSlider* sliderV = new QSlider(Qt::Vertical); sliderH->setObjectName("SliderH"); sliderV->setObjectName("SliderV"); return setLayoutWidget({ sliderH, sliderV }, { 200, 100 }); } else if(name == "SpinBox") { QSpinBox* spinBox = new QSpinBox; spinBox->setObjectName("SpinBox"); return setLayoutWidget({ spinBox }, { 60, 35 }); } else if(name == "Splitter") { QSplitter* splitterV = new QSplitter(Qt::Vertical); QSplitter* splitterH = new QSplitter(Qt::Horizontal); splitterV->setObjectName("SplitterV"); splitterH->setObjectName("SplitterH"); splitterV->addWidget(new QPushButton("PushButton1")); splitterV->addWidget(new QPushButton("PushButton2")); splitterH->addWidget(splitterV); splitterH->addWidget(new QPushButton("PushButton3")); return setLayoutWidget({ splitterH }, { 250, 110 }); } else if(name == "TabWidget") { QTabWidget* tab = new QTabWidget; tab->addTab(new QWidget, "Widget1"); tab->addTab(new QWidget, "Widget2"); tab->addTab(new QWidget, "Widget3"); tab->setObjectName("TabWidget"); return setLayoutWidget({ tab }, { 210, 110 }); } else if(name == "TableView") //? { QTableView* view = new QTableView; view->setObjectName("TableView"); view->resize(200, 100); return view; } else if(name == "TableWidget") { const int n = 100; QStringList list = { "one", "two", "three" }; QTableWidget* table = new QTableWidget(n, n); table->setObjectName("TableWidget"); table->setHorizontalHeaderLabels(list); table->setVerticalHeaderLabels(list); for(int i = 0; i < n; i++) for(int j = 0; j < n; j++) table->setItem(i, j, new QTableWidgetItem(QString("%1, %2").arg(i).arg(j))); return setLayoutWidget({ table }, { 210, 110 }); } else if(name == "TextEdit") { QTextEdit* text = new QTextEdit; text->setObjectName("TextEdit"); return setLayoutWidget({ text }, { 80, 80 }); } else if(name == "TimeEdit") { QTimeEdit* time = new QTimeEdit; time->setObjectName("TimeEdit"); return setLayoutWidget({ time }, { 80, 80 }); } else if(name == "ToolButton") { QToolButton* button = new QToolButton; button->setText("ToolButton"); button->setObjectName("ToolButton"); return setLayoutWidget({ button }, { 95, 25 }); } else if(name == "ToolBox") { QToolBox* box = new QToolBox; box->addItem(new QWidget, "Widget1"); box->addItem(new QWidget, "Widget2"); box->addItem(new QWidget, "Widget3"); box->setObjectName("ToolBox"); return setLayoutWidget({ box }, { 110, 180 }); } else if(name == "TreeView") //? { QTreeView* tree = new QTreeView; tree->setObjectName("TreeView"); tree->resize(200, 100); return tree; } else if(name == "TreeWidget") { QTreeWidget* tree = new QTreeWidget; tree->setObjectName("TreeWidget"); tree->setHeaderLabels({ "Folders", "Used Space" }); QTreeWidgetItem* item = new QTreeWidgetItem(tree); item->setText(0, "Local Disk"); for(int i = 1; i < 20; i++) { QTreeWidgetItem* dir = new QTreeWidgetItem(item); dir->setText(0, "Directory" + QString::number(i)); dir->setText(1, QString::number(i) + "MB"); } tree->setItemExpanded(item, true); return setLayoutWidget({ tree }, { 210, 110 }); } else if(name == "Widget") { QWidget* widget = new QWidget; widget->setObjectName("Widget"); return setLayoutWidget({ widget }, { 210, 110 }); } return nullptr; }
void setupUi(QDialog *MemberEditDialog) { p = MemberEditDialog; mainWidget = new QWidget(MemberEditDialog); horizontalLayout = new QHBoxLayout(mainWidget); tabWidget = new QTabWidget(mainWidget); generalTab = new QWidget(); generalHLayout = new QHBoxLayout(generalTab); formWidget = new QWidget(generalTab); formTab1LeftLayout = new QFormLayout(formWidget); titleLabel = new QLabel(formWidget); firstNameLabel = new QLabel(formWidget); firstNameLineEdit = new QLineEdit(formWidget); lastNameLabel = new QLabel(formWidget); lastNameLineEdit = new QLineEdit(formWidget); streetLabel = new QLabel(formWidget); zipLabel = new QLabel(formWidget); streetHorizontalWidget = new QWidget(formWidget); streetHLayout = new QHBoxLayout(streetHorizontalWidget); streetLineEdit = new QLineEdit(streetHorizontalWidget); numberLabel = new QLabel(streetHorizontalWidget); numberLineEdit = new QLineEdit(streetHorizontalWidget); cityHorizontalWidget = new QWidget(formWidget); cityHLayout = new QHBoxLayout(cityHorizontalWidget); zipLineEdit = new QLineEdit(cityHorizontalWidget); cityLabel = new QLabel(cityHorizontalWidget); cityLineEdit = new QLineEdit(cityHorizontalWidget); titleHorizontalWidget = new QWidget(formWidget); titleHLayout = new QHBoxLayout(titleHorizontalWidget); comboBox = new QComboBox(titleHorizontalWidget); titleExtLabel = new QLabel(titleHorizontalWidget); titleExtLineEdit = new QLineEdit(titleHorizontalWidget); formTab1Right = new QWidget(generalTab); formTab1RightLayout = new QFormLayout(formTab1Right); phoneLabel = new QLabel(formTab1Right); phoneEdit = new QLineEdit(formTab1Right); cellLabel = new QLabel(formTab1Right); cellEdit = new QLineEdit(formTab1Right); emailLabel = new QLabel(formTab1Right); emailEdit = new QLineEdit(formTab1Right); maritalLabel = new QLabel(formTab1Right); maritalCBox = new QComboBox(formTab1Right); accountTab = new QWidget(); accountVLayout = new QVBoxLayout(accountTab); tableView = new QTableView(accountTab); tab2BottomLayout = new QHBoxLayout(); formTab2BottomLayout = new QFormLayout(); ibanLabel = new QLabel(accountTab); ibanLineEdit = new QLineEdit(accountTab); bicLabel = new QLabel(accountTab); bicLineEdit = new QLineEdit(accountTab); ownerLabel = new QLabel(accountTab); ownerLineEdit = new QLineEdit(accountTab); noteLabel = new QLabel(accountTab); noteLineEdit = new QLineEdit(accountTab); buttonsTab2BottomLayout = new QVBoxLayout(); addButton = new QPushButton(accountTab); editButton = new QPushButton(accountTab); deleteButton = new QPushButton(accountTab); verticalLayout = new QVBoxLayout(); okButton = new QPushButton(mainWidget); applyButton = new QPushButton(mainWidget); verticalSpacer = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); leaveButton = new QPushButton(mainWidget); verticalSpacer_2 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); cancelButton = new QPushButton(mainWidget); // # layout definitions # // tabs on left, buttons on the right horizontalLayout->addWidget(tabWidget); horizontalLayout->addLayout(verticalLayout); // set up buttons on right verticalLayout->addWidget(okButton); verticalLayout->addWidget(applyButton); verticalLayout->addItem(verticalSpacer); verticalLayout->addWidget(leaveButton); verticalLayout->addItem(verticalSpacer_2); verticalLayout->addWidget(cancelButton); // set up tabs tabWidget->addTab(generalTab, QString()); tabWidget->addTab(accountTab, QString()); tabWidget->setCurrentIndex(0); // set up general tab generalHLayout->addWidget(formWidget); generalHLayout->addWidget(formTab1Right); // set up account tab accountVLayout->addWidget(tableView); accountVLayout->addLayout(tab2BottomLayout); accountVLayout->setContentsMargins(0, 0, 0, 0); // set up lazout of bottom part of account tab // form and buttons to add entries to table in a h-box tab2BottomLayout->addLayout(formTab2BottomLayout); tab2BottomLayout->addLayout(buttonsTab2BottomLayout); // buttons column of bottom part of account tab buttonsTab2BottomLayout->addWidget(addButton); buttonsTab2BottomLayout->addWidget(editButton); buttonsTab2BottomLayout->addWidget(deleteButton); // ## forms of general tab / general personal data ## // left side - personal data, address, etc. formTab1LeftLayout->setFieldGrowthPolicy(QFormLayout::AllNonFixedFieldsGrow); formTab1LeftLayout->setWidget(0, QFormLayout::LabelRole, titleLabel); formTab1LeftLayout->setWidget(0, QFormLayout::FieldRole, titleHorizontalWidget); formTab1LeftLayout->setWidget(1, QFormLayout::LabelRole, firstNameLabel); formTab1LeftLayout->setWidget(1, QFormLayout::FieldRole, firstNameLineEdit); formTab1LeftLayout->setWidget(2, QFormLayout::LabelRole, lastNameLabel); formTab1LeftLayout->setWidget(2, QFormLayout::FieldRole, lastNameLineEdit); formTab1LeftLayout->setWidget(3, QFormLayout::LabelRole, streetLabel); formTab1LeftLayout->setWidget(3, QFormLayout::FieldRole, streetHorizontalWidget); formTab1LeftLayout->setWidget(4, QFormLayout::LabelRole, zipLabel); formTab1LeftLayout->setWidget(4, QFormLayout::FieldRole, cityHorizontalWidget); // right side - phone, email, formTab1RightLayout->setFieldGrowthPolicy(QFormLayout::AllNonFixedFieldsGrow); formTab1RightLayout->setWidget(0, QFormLayout::LabelRole, phoneLabel); // phone formTab1RightLayout->setWidget(0, QFormLayout::FieldRole, phoneEdit); formTab1RightLayout->setWidget(1, QFormLayout::LabelRole, cellLabel); // mobile / cell phone number formTab1RightLayout->setWidget(1, QFormLayout::FieldRole, cellEdit); formTab1RightLayout->setWidget(2, QFormLayout::LabelRole, emailLabel); // email formTab1RightLayout->setWidget(2, QFormLayout::FieldRole, emailEdit); formTab1RightLayout->setWidget(3, QFormLayout::LabelRole, maritalLabel); // marital status formTab1RightLayout->setWidget(3, QFormLayout::FieldRole, maritalCBox); // form on bottom of account tab formTab2BottomLayout->setWidget(0, QFormLayout::LabelRole, ibanLabel); formTab2BottomLayout->setWidget(0, QFormLayout::FieldRole, ibanLineEdit); formTab2BottomLayout->setWidget(1, QFormLayout::LabelRole, bicLabel); formTab2BottomLayout->setWidget(1, QFormLayout::FieldRole, bicLineEdit); formTab2BottomLayout->setWidget(2, QFormLayout::LabelRole, ownerLabel); formTab2BottomLayout->setWidget(2, QFormLayout::FieldRole, ownerLineEdit); formTab2BottomLayout->setWidget(3, QFormLayout::LabelRole, noteLabel); formTab2BottomLayout->setWidget(3, QFormLayout::FieldRole, noteLineEdit); // street and number next to each other in one cell // so put them in a hbox and that into the form streetHLayout->addWidget(streetLineEdit); streetHLayout->addWidget(numberLabel); streetHLayout->addWidget(numberLineEdit); streetHLayout->setContentsMargins(0, 0, 0, 0); streetHLayout->setStretch(0, 5); streetHLayout->setStretch(2, 1); // zip and city in one cell like above cityHLayout->addWidget(zipLineEdit); cityHLayout->addWidget(cityLabel); cityHLayout->addWidget(cityLineEdit); cityHLayout->setContentsMargins(0, 0, 0, 0); // title and titleext like above titleHLayout->addWidget(comboBox); titleHLayout->addWidget(titleExtLabel); titleHLayout->addWidget(titleExtLineEdit); titleHLayout->setContentsMargins(0, 0, 0, 0); // zip codes have only 5 digits, also define appropriate size zipLineEdit->setMaxLength(5); zipLineEdit->setMaximumSize(QSize(80, 16777215)); // initial siye of dialog. TODO: Save in conf on quit. Restore here. MemberEditDialog->resize(1200, 700); updateGeometry(); retranslateUi(MemberEditDialog); QMetaObject::connectSlotsByName(MemberEditDialog); if (MemberEditDialog->objectName().isEmpty()) MemberEditDialog->setObjectName(QStringLiteral("MemberEditDialog")); mainWidget->setObjectName(QStringLiteral("mainWidget")); horizontalLayout->setObjectName(QStringLiteral("horizontalLayout")); tabWidget->setObjectName(QStringLiteral("tabWidget")); generalTab->setObjectName(QStringLiteral("generalTab")); generalHLayout->setObjectName(QStringLiteral("generalHLayout")); formWidget->setObjectName(QStringLiteral("formWidget")); formTab1LeftLayout->setObjectName(QStringLiteral("formTab1LeftLayout")); titleLabel->setObjectName(QStringLiteral("titleLabel")); firstNameLabel->setObjectName(QStringLiteral("firstNameLabel")); firstNameLineEdit->setObjectName(QStringLiteral("firstNameLineEdit")); lastNameLabel->setObjectName(QStringLiteral("lastNameLabel")); lastNameLineEdit->setObjectName(QStringLiteral("lastNameLineEdit")); streetLabel->setObjectName(QStringLiteral("streetLabel")); zipLabel->setObjectName(QStringLiteral("zipLabel")); streetHorizontalWidget->setObjectName(QStringLiteral("streetHorizontalWidget")); streetHLayout->setObjectName(QStringLiteral("streetHLayout")); streetLineEdit->setObjectName(QStringLiteral("streetLineEdit")); numberLabel->setObjectName(QStringLiteral("numberLabel")); numberLineEdit->setObjectName(QStringLiteral("numberLineEdit")); cityHorizontalWidget->setObjectName(QStringLiteral("cityHorizontalWidget")); cityHLayout->setObjectName(QStringLiteral("cityHLayout")); zipLineEdit->setObjectName(QStringLiteral("zipLineEdit")); cityLabel->setObjectName(QStringLiteral("cityLabel")); cityLineEdit->setObjectName(QStringLiteral("cityLineEdit")); titleHorizontalWidget->setObjectName(QStringLiteral("titleHorizontalWidget")); titleHLayout->setObjectName(QStringLiteral("titleHLayout")); comboBox->setObjectName(QStringLiteral("comboBox")); titleExtLabel->setObjectName(QStringLiteral("titleExtLabel")); titleExtLineEdit->setObjectName(QStringLiteral("titleExtLineEdit")); formTab1Right->setObjectName(QStringLiteral("formTab1Right")); formTab1RightLayout->setObjectName(QStringLiteral("formTab1RightLayout")); phoneLabel->setObjectName(QStringLiteral("phoneLabel")); phoneEdit->setObjectName(QStringLiteral("phoneEdit")); cellLabel->setObjectName(QStringLiteral("cellLabel")); cellEdit->setObjectName(QStringLiteral("cellEdit")); emailLabel->setObjectName(QStringLiteral("emailLabel")); emailEdit->setObjectName(QStringLiteral("emailEdit")); maritalLabel->setObjectName(QStringLiteral("maritalLabel")); maritalCBox->setObjectName(QStringLiteral("maritalCBox")); accountTab->setObjectName(QStringLiteral("accountTab")); accountVLayout->setObjectName(QStringLiteral("accountVLayout")); tableView->setObjectName(QStringLiteral("tableView")); tab2BottomLayout->setObjectName(QStringLiteral("tab2BottomLayout")); formTab2BottomLayout->setObjectName(QStringLiteral("formTab2BottomLayout")); ibanLabel->setObjectName(QStringLiteral("ibanLabel")); ibanLineEdit->setObjectName(QStringLiteral("ibanLineEdit")); bicLabel->setObjectName(QStringLiteral("bicLabel")); bicLineEdit->setObjectName(QStringLiteral("bicLineEdit")); ownerLabel->setObjectName(QStringLiteral("ownerLabel")); ownerLineEdit->setObjectName(QStringLiteral("ownerLineEdit")); noteLabel->setObjectName(QStringLiteral("noteLabel")); noteLineEdit->setObjectName(QStringLiteral("noteLineEdit")); buttonsTab2BottomLayout->setObjectName(QStringLiteral("buttonsTab2BottomLayout")); addButton->setObjectName(QStringLiteral("addButton")); editButton->setObjectName(QStringLiteral("editButton")); deleteButton->setObjectName(QStringLiteral("deleteButton")); verticalLayout->setObjectName(QStringLiteral("verticalLayout")); okButton->setObjectName(QStringLiteral("okButton")); applyButton->setObjectName(QStringLiteral("applyButton")); leaveButton->setObjectName(QStringLiteral("leaveButton")); cancelButton->setObjectName(QStringLiteral("cancelButton")); } // setupUi
static void* ui_companion_qt_init(void) { ui_companion_qt_t *handle = (ui_companion_qt_t*)calloc(1, sizeof(*handle)); MainWindow *mainwindow = NULL; QHBoxLayout *browserButtonsHBoxLayout = NULL; QVBoxLayout *layout = NULL; QVBoxLayout *launchWithWidgetLayout = NULL; QHBoxLayout *coreComboBoxLayout = NULL; QMenuBar *menu = NULL; QDesktopWidget *desktop = NULL; QMenu *fileMenu = NULL; QMenu *editMenu = NULL; QMenu *viewMenu = NULL; QMenu *viewClosedDocksMenu = NULL; QRect desktopRect; QDockWidget *thumbnailDock = NULL; QDockWidget *thumbnail2Dock = NULL; QDockWidget *thumbnail3Dock = NULL; QDockWidget *browserAndPlaylistTabDock = NULL; QDockWidget *coreSelectionDock = NULL; QTabWidget *browserAndPlaylistTabWidget = NULL; QWidget *widget = NULL; QWidget *browserWidget = NULL; QWidget *playlistWidget = NULL; QWidget *coreSelectionWidget = NULL; QWidget *launchWithWidget = NULL; ThumbnailWidget *thumbnailWidget = NULL; ThumbnailWidget *thumbnail2Widget = NULL; ThumbnailWidget *thumbnail3Widget = NULL; QPushButton *browserDownloadsButton = NULL; QPushButton *browserUpButton = NULL; QPushButton *browserStartButton = NULL; ThumbnailLabel *thumbnail = NULL; ThumbnailLabel *thumbnail2 = NULL; ThumbnailLabel *thumbnail3 = NULL; QAction *editSearchAction = NULL; QAction *loadCoreAction = NULL; QAction *unloadCoreAction = NULL; QAction *exitAction = NULL; QComboBox *launchWithComboBox = NULL; QSettings *qsettings = NULL; if (!handle) return NULL; handle->app = static_cast<ui_application_qt_t*>(ui_application_qt.initialize()); handle->window = static_cast<ui_window_qt_t*>(ui_window_qt.init()); desktop = qApp->desktop(); desktopRect = desktop->availableGeometry(); mainwindow = handle->window->qtWindow; qsettings = mainwindow->settings(); mainwindow->resize(qMin(desktopRect.width(), INITIAL_WIDTH), qMin(desktopRect.height(), INITIAL_HEIGHT)); mainwindow->setGeometry(QStyle::alignedRect(Qt::LeftToRight, Qt::AlignCenter, mainwindow->size(), desktopRect)); mainwindow->setWindowTitle("RetroArch"); mainwindow->setDockOptions(QMainWindow::AnimatedDocks | QMainWindow::AllowNestedDocks | QMainWindow::AllowTabbedDocks | GROUPED_DRAGGING); widget = new QWidget(mainwindow); widget->setObjectName("tableWidget"); layout = new QVBoxLayout(); layout->addWidget(mainwindow->contentTableWidget()); widget->setLayout(layout); mainwindow->setCentralWidget(widget); menu = mainwindow->menuBar(); fileMenu = menu->addMenu(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_MENU_FILE)); loadCoreAction = fileMenu->addAction(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_MENU_FILE_LOAD_CORE), mainwindow, SLOT(onLoadCoreClicked())); loadCoreAction->setShortcut(QKeySequence("Ctrl+L")); unloadCoreAction = fileMenu->addAction(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_MENU_FILE_UNLOAD_CORE), mainwindow, SLOT(onUnloadCoreMenuAction())); unloadCoreAction->setObjectName("unloadCoreAction"); unloadCoreAction->setEnabled(false); unloadCoreAction->setShortcut(QKeySequence("Ctrl+U")); exitAction = fileMenu->addAction(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_MENU_FILE_EXIT), mainwindow, SLOT(close())); exitAction->setShortcut(QKeySequence::Quit); editMenu = menu->addMenu(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_MENU_EDIT)); editSearchAction = editMenu->addAction(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_MENU_EDIT_SEARCH), mainwindow->searchLineEdit(), SLOT(setFocus())); editSearchAction->setShortcut(QKeySequence::Find); viewMenu = menu->addMenu(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW)); viewClosedDocksMenu = viewMenu->addMenu(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_CLOSED_DOCKS)); viewClosedDocksMenu->setObjectName("viewClosedDocksMenu"); QObject::connect(viewClosedDocksMenu, SIGNAL(aboutToShow()), mainwindow, SLOT(onViewClosedDocksAboutToShow())); viewMenu->addAction(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS), mainwindow->viewOptionsDialog(), SLOT(showDialog())); playlistWidget = new QWidget(); playlistWidget->setLayout(new QVBoxLayout()); playlistWidget->setObjectName("playlistWidget"); playlistWidget->layout()->addWidget(mainwindow->playlistListWidget()); browserWidget = new QWidget(); browserWidget->setLayout(new QVBoxLayout()); browserWidget->setObjectName("browserWidget"); browserDownloadsButton = new QPushButton(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CORE_ASSETS_DIRECTORY)); browserUpButton = new QPushButton(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_TAB_FILE_BROWSER_UP)); browserStartButton = new QPushButton(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_FAVORITES)); QObject::connect(browserDownloadsButton, SIGNAL(clicked()), mainwindow, SLOT(onBrowserDownloadsClicked())); QObject::connect(browserUpButton, SIGNAL(clicked()), mainwindow, SLOT(onBrowserUpClicked())); QObject::connect(browserStartButton, SIGNAL(clicked()), mainwindow, SLOT(onBrowserStartClicked())); browserButtonsHBoxLayout = new QHBoxLayout(); browserButtonsHBoxLayout->addWidget(browserUpButton); browserButtonsHBoxLayout->addWidget(browserStartButton); browserButtonsHBoxLayout->addWidget(browserDownloadsButton); qobject_cast<QVBoxLayout*>(browserWidget->layout())->addLayout(browserButtonsHBoxLayout); browserWidget->layout()->addWidget(mainwindow->dirTreeView()); browserAndPlaylistTabWidget = mainwindow->browserAndPlaylistTabWidget(); browserAndPlaylistTabWidget->setObjectName("browserAndPlaylistTabWidget"); /* Several functions depend on the same tab title strings here, so if you change these, make sure to change those too * setCoreActions() * onTabWidgetIndexChanged() * onCurrentListItemChanged() */ browserAndPlaylistTabWidget->addTab(playlistWidget, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_TAB_PLAYLISTS)); browserAndPlaylistTabWidget->addTab(browserWidget, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_TAB_FILE_BROWSER)); browserAndPlaylistTabDock = new QDockWidget(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_MENU_DOCK_CONTENT_BROWSER), mainwindow); browserAndPlaylistTabDock->setObjectName("browserAndPlaylistTabDock"); browserAndPlaylistTabDock->setProperty("default_area", Qt::LeftDockWidgetArea); browserAndPlaylistTabDock->setProperty("menu_text", msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_MENU_DOCK_CONTENT_BROWSER)); browserAndPlaylistTabDock->setWidget(browserAndPlaylistTabWidget); mainwindow->addDockWidget(static_cast<Qt::DockWidgetArea>(browserAndPlaylistTabDock->property("default_area").toInt()), browserAndPlaylistTabDock); browserButtonsHBoxLayout->addItem(new QSpacerItem(browserAndPlaylistTabWidget->tabBar()->width(), 20, QSizePolicy::Expanding, QSizePolicy::Minimum)); thumbnailWidget = new ThumbnailWidget(); thumbnail2Widget = new ThumbnailWidget(); thumbnail3Widget = new ThumbnailWidget(); thumbnailWidget->setLayout(new QVBoxLayout()); thumbnail2Widget->setLayout(new QVBoxLayout()); thumbnail3Widget->setLayout(new QVBoxLayout()); thumbnailWidget->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)); thumbnail2Widget->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)); thumbnail3Widget->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)); thumbnail = new ThumbnailLabel(); thumbnail->setObjectName("thumbnail"); thumbnail2 = new ThumbnailLabel(); thumbnail2->setObjectName("thumbnail2"); thumbnail3 = new ThumbnailLabel(); thumbnail3->setObjectName("thumbnail3"); thumbnail->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)); thumbnail2->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)); thumbnail3->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)); QObject::connect(mainwindow, SIGNAL(thumbnailChanged(const QPixmap&)), thumbnail, SLOT(setPixmap(const QPixmap&))); QObject::connect(mainwindow, SIGNAL(thumbnail2Changed(const QPixmap&)), thumbnail2, SLOT(setPixmap(const QPixmap&))); QObject::connect(mainwindow, SIGNAL(thumbnail3Changed(const QPixmap&)), thumbnail3, SLOT(setPixmap(const QPixmap&))); thumbnailWidget->layout()->addWidget(thumbnail); thumbnail2Widget->layout()->addWidget(thumbnail2); thumbnail3Widget->layout()->addWidget(thumbnail3); thumbnailDock = new QDockWidget(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_THUMBNAIL_BOXART), mainwindow); thumbnailDock->setObjectName("thumbnailDock"); thumbnailDock->setProperty("default_area", Qt::RightDockWidgetArea); thumbnailDock->setProperty("menu_text", msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_THUMBNAIL_BOXART)); thumbnailDock->setWidget(thumbnailWidget); mainwindow->addDockWidget(static_cast<Qt::DockWidgetArea>(thumbnailDock->property("default_area").toInt()), thumbnailDock); thumbnail2Dock = new QDockWidget(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_THUMBNAIL_TITLE_SCREEN), mainwindow); thumbnail2Dock->setObjectName("thumbnail2Dock"); thumbnail2Dock->setProperty("default_area", Qt::RightDockWidgetArea); thumbnail2Dock->setProperty("menu_text", msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_THUMBNAIL_TITLE_SCREEN)); thumbnail2Dock->setWidget(thumbnail2Widget); mainwindow->addDockWidget(static_cast<Qt::DockWidgetArea>(thumbnail2Dock->property("default_area").toInt()), thumbnail2Dock); thumbnail3Dock = new QDockWidget(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_THUMBNAIL_SCREENSHOT), mainwindow); thumbnail3Dock->setObjectName("thumbnail3Dock"); thumbnail3Dock->setProperty("default_area", Qt::RightDockWidgetArea); thumbnail3Dock->setProperty("menu_text", msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_THUMBNAIL_SCREENSHOT)); thumbnail3Dock->setWidget(thumbnail3Widget); mainwindow->addDockWidget(static_cast<Qt::DockWidgetArea>(thumbnail3Dock->property("default_area").toInt()), thumbnail3Dock); mainwindow->tabifyDockWidget(thumbnailDock, thumbnail2Dock); mainwindow->tabifyDockWidget(thumbnailDock, thumbnail3Dock); /* when tabifying the dock widgets, the last tab added is selected by default, so we need to re-select the first tab */ thumbnailDock->raise(); coreSelectionWidget = new QWidget(); coreSelectionWidget->setLayout(new QVBoxLayout()); launchWithComboBox = mainwindow->launchWithComboBox(); launchWithWidgetLayout = new QVBoxLayout(); launchWithWidget = new QWidget(); launchWithWidget->setLayout(launchWithWidgetLayout); coreComboBoxLayout = new QHBoxLayout(); mainwindow->runPushButton()->setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding)); mainwindow->stopPushButton()->setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding)); mainwindow->startCorePushButton()->setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding)); coreComboBoxLayout->addWidget(launchWithComboBox); coreComboBoxLayout->addWidget(mainwindow->startCorePushButton()); coreComboBoxLayout->addWidget(mainwindow->coreInfoPushButton()); coreComboBoxLayout->addWidget(mainwindow->runPushButton()); coreComboBoxLayout->addWidget(mainwindow->stopPushButton()); mainwindow->stopPushButton()->hide(); coreComboBoxLayout->setStretchFactor(launchWithComboBox, 1); launchWithWidgetLayout->addLayout(coreComboBoxLayout); coreSelectionWidget->layout()->addWidget(launchWithWidget); coreSelectionWidget->layout()->addItem(new QSpacerItem(20, browserAndPlaylistTabWidget->height(), QSizePolicy::Minimum, QSizePolicy::Expanding)); coreSelectionDock = new QDockWidget(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_CORE), mainwindow); coreSelectionDock->setObjectName("coreSelectionDock"); coreSelectionDock->setProperty("default_area", Qt::LeftDockWidgetArea); coreSelectionDock->setProperty("menu_text", msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_CORE)); coreSelectionDock->setWidget(coreSelectionWidget); mainwindow->addDockWidget(static_cast<Qt::DockWidgetArea>(coreSelectionDock->property("default_area").toInt()), coreSelectionDock); mainwindow->splitDockWidget(browserAndPlaylistTabDock, coreSelectionDock, Qt::Vertical); #if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) mainwindow->resizeDocks(QList<QDockWidget*>() << coreSelectionDock, QList<int>() << 1, Qt::Vertical); #endif /* this should come last */ mainwindow->resizeThumbnails(true, true, true); if (qsettings->contains("geometry")) if (qsettings->contains("save_geometry")) mainwindow->restoreGeometry(qsettings->value("geometry").toByteArray()); if (qsettings->contains("save_dock_positions")) if (qsettings->contains("dock_positions")) mainwindow->restoreState(qsettings->value("dock_positions").toByteArray()); if (qsettings->contains("save_last_tab")) { if (qsettings->contains("last_tab")) { int lastTabIndex = qsettings->value("last_tab", 0).toInt(); if (lastTabIndex >= 0 && browserAndPlaylistTabWidget->count() > lastTabIndex) browserAndPlaylistTabWidget->setCurrentIndex(lastTabIndex); } } if (qsettings->contains("theme")) { QString themeStr = qsettings->value("theme").toString(); MainWindow::Theme theme = mainwindow->getThemeFromString(themeStr); if (qsettings->contains("custom_theme") && theme == MainWindow::THEME_CUSTOM) { QString customThemeFilePath = qsettings->value("custom_theme").toString(); mainwindow->setCustomThemeFile(customThemeFilePath); } mainwindow->setTheme(theme); } else mainwindow->setTheme(); return handle; }
static void* ui_companion_qt_init(void) { ui_companion_qt_t *handle = (ui_companion_qt_t*)calloc(1, sizeof(*handle)); MainWindow *mainwindow = NULL; QHBoxLayout *browserButtonsHBoxLayout = NULL; QVBoxLayout *layout = NULL; QVBoxLayout *launchWithWidgetLayout = NULL; QHBoxLayout *coreComboBoxLayout = NULL; QMenuBar *menu = NULL; QDesktopWidget *desktop = NULL; QMenu *fileMenu = NULL; QMenu *editMenu = NULL; QMenu *viewMenu = NULL; QMenu *viewClosedDocksMenu = NULL; QMenu *toolsMenu = NULL; QMenu *updaterMenu = NULL; QMenu *helpMenu = NULL; QRect desktopRect; QDockWidget *thumbnailDock = NULL; QDockWidget *thumbnail2Dock = NULL; QDockWidget *thumbnail3Dock = NULL; QDockWidget *browserAndPlaylistTabDock = NULL; QDockWidget *coreSelectionDock = NULL; QTabWidget *browserAndPlaylistTabWidget = NULL; QWidget *widget = NULL; QWidget *browserWidget = NULL; QWidget *playlistWidget = NULL; QWidget *coreSelectionWidget = NULL; QWidget *launchWithWidget = NULL; ThumbnailWidget *thumbnailWidget = NULL; ThumbnailWidget *thumbnail2Widget = NULL; ThumbnailWidget *thumbnail3Widget = NULL; QPushButton *browserDownloadsButton = NULL; QPushButton *browserUpButton = NULL; QPushButton *browserStartButton = NULL; ThumbnailLabel *thumbnail = NULL; ThumbnailLabel *thumbnail2 = NULL; ThumbnailLabel *thumbnail3 = NULL; QAction *editSearchAction = NULL; QAction *loadCoreAction = NULL; QAction *unloadCoreAction = NULL; QAction *exitAction = NULL; QComboBox *launchWithComboBox = NULL; QSettings *qsettings = NULL; QListWidget *listWidget = NULL; int i = 0; if (!handle) return NULL; handle->app = static_cast<ui_application_qt_t*>(ui_application_qt.initialize()); handle->window = static_cast<ui_window_qt_t*>(ui_window_qt.init()); desktop = qApp->desktop(); desktopRect = desktop->availableGeometry(); mainwindow = handle->window->qtWindow; qsettings = mainwindow->settings(); mainwindow->resize(qMin(desktopRect.width(), INITIAL_WIDTH), qMin(desktopRect.height(), INITIAL_HEIGHT)); mainwindow->setGeometry(QStyle::alignedRect(Qt::LeftToRight, Qt::AlignCenter, mainwindow->size(), desktopRect)); mainwindow->setWindowTitle("RetroArch"); mainwindow->setDockOptions(QMainWindow::AnimatedDocks | QMainWindow::AllowNestedDocks | QMainWindow::AllowTabbedDocks | GROUPED_DRAGGING); listWidget = mainwindow->playlistListWidget(); widget = new FileDropWidget(mainwindow); widget->setObjectName("tableWidget"); widget->setContextMenuPolicy(Qt::CustomContextMenu); QObject::connect(widget, SIGNAL(filesDropped(QStringList)), mainwindow, SLOT(onPlaylistFilesDropped(QStringList))); QObject::connect(widget, SIGNAL(deletePressed()), mainwindow, SLOT(deleteCurrentPlaylistItem())); QObject::connect(widget, SIGNAL(customContextMenuRequested(const QPoint&)), mainwindow, SLOT(onFileDropWidgetContextMenuRequested(const QPoint&))); layout = new QVBoxLayout(); layout->addWidget(mainwindow->contentTableWidget()); layout->addWidget(mainwindow->contentGridWidget()); widget->setLayout(layout); mainwindow->setCentralWidget(widget); menu = mainwindow->menuBar(); fileMenu = menu->addMenu(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_MENU_FILE)); loadCoreAction = fileMenu->addAction(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_MENU_FILE_LOAD_CORE), mainwindow, SLOT(onLoadCoreClicked())); loadCoreAction->setShortcut(QKeySequence("Ctrl+L")); unloadCoreAction = fileMenu->addAction(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_MENU_FILE_UNLOAD_CORE), mainwindow, SLOT(onUnloadCoreMenuAction())); unloadCoreAction->setObjectName("unloadCoreAction"); unloadCoreAction->setEnabled(false); unloadCoreAction->setShortcut(QKeySequence("Ctrl+U")); exitAction = fileMenu->addAction(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_MENU_FILE_EXIT), mainwindow, SLOT(close())); exitAction->setShortcut(QKeySequence::Quit); editMenu = menu->addMenu(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_MENU_EDIT)); editSearchAction = editMenu->addAction(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_MENU_EDIT_SEARCH), mainwindow->searchLineEdit(), SLOT(setFocus())); editSearchAction->setShortcut(QKeySequence::Find); viewMenu = menu->addMenu(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW)); viewClosedDocksMenu = viewMenu->addMenu(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_CLOSED_DOCKS)); viewClosedDocksMenu->setObjectName("viewClosedDocksMenu"); QObject::connect(viewClosedDocksMenu, SIGNAL(aboutToShow()), mainwindow, SLOT(onViewClosedDocksAboutToShow())); viewMenu->addSeparator(); viewMenu->addAction(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_VIEW_TYPE_ICONS), mainwindow, SLOT(onIconViewClicked())); viewMenu->addAction(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_VIEW_TYPE_LIST), mainwindow, SLOT(onListViewClicked())); viewMenu->addSeparator(); viewMenu->addAction(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS), mainwindow->viewOptionsDialog(), SLOT(showDialog())); toolsMenu = menu->addMenu(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_MENU_TOOLS)); updaterMenu = toolsMenu->addMenu(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_ONLINE_UPDATER)); #ifdef Q_OS_WIN updaterMenu->addAction(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_UPDATE_RETROARCH_NIGHTLY), mainwindow, SLOT(updateRetroArchNightly())); #endif helpMenu = menu->addMenu(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_MENU_HELP)); helpMenu->addAction(QString(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_MENU_HELP_DOCUMENTATION)), mainwindow, SLOT(showDocs())); helpMenu->addAction(QString(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_MENU_HELP_ABOUT)) + "...", mainwindow, SLOT(showAbout())); helpMenu->addAction("About Qt...", qApp, SLOT(aboutQt())); playlistWidget = new QWidget(); playlistWidget->setLayout(new QVBoxLayout()); playlistWidget->setObjectName("playlistWidget"); playlistWidget->layout()->addWidget(mainwindow->playlistListWidget()); browserWidget = new QWidget(); browserWidget->setLayout(new QVBoxLayout()); browserWidget->setObjectName("browserWidget"); browserDownloadsButton = new QPushButton(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CORE_ASSETS_DIRECTORY)); browserUpButton = new QPushButton(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_TAB_FILE_BROWSER_UP)); browserStartButton = new QPushButton(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_FAVORITES)); QObject::connect(browserDownloadsButton, SIGNAL(clicked()), mainwindow, SLOT(onBrowserDownloadsClicked())); QObject::connect(browserUpButton, SIGNAL(clicked()), mainwindow, SLOT(onBrowserUpClicked())); QObject::connect(browserStartButton, SIGNAL(clicked()), mainwindow, SLOT(onBrowserStartClicked())); browserButtonsHBoxLayout = new QHBoxLayout(); browserButtonsHBoxLayout->addWidget(browserUpButton); browserButtonsHBoxLayout->addWidget(browserStartButton); browserButtonsHBoxLayout->addWidget(browserDownloadsButton); qobject_cast<QVBoxLayout*>(browserWidget->layout())->addLayout(browserButtonsHBoxLayout); browserWidget->layout()->addWidget(mainwindow->dirTreeView()); browserAndPlaylistTabWidget = mainwindow->browserAndPlaylistTabWidget(); browserAndPlaylistTabWidget->setObjectName("browserAndPlaylistTabWidget"); /* Several functions depend on the same tab title strings here, so if you change these, make sure to change those too * setCoreActions() * onTabWidgetIndexChanged() * onCurrentListItemChanged() */ browserAndPlaylistTabWidget->addTab(playlistWidget, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_TAB_PLAYLISTS)); browserAndPlaylistTabWidget->addTab(browserWidget, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_TAB_FILE_BROWSER)); browserAndPlaylistTabDock = new QDockWidget(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_MENU_DOCK_CONTENT_BROWSER), mainwindow); browserAndPlaylistTabDock->setObjectName("browserAndPlaylistTabDock"); browserAndPlaylistTabDock->setProperty("default_area", Qt::LeftDockWidgetArea); browserAndPlaylistTabDock->setProperty("menu_text", msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_MENU_DOCK_CONTENT_BROWSER)); browserAndPlaylistTabDock->setWidget(browserAndPlaylistTabWidget); mainwindow->addDockWidget(static_cast<Qt::DockWidgetArea>(browserAndPlaylistTabDock->property("default_area").toInt()), browserAndPlaylistTabDock); browserButtonsHBoxLayout->addItem(new QSpacerItem(browserAndPlaylistTabWidget->tabBar()->width(), 20, QSizePolicy::Expanding, QSizePolicy::Minimum)); thumbnailWidget = new ThumbnailWidget(); thumbnail2Widget = new ThumbnailWidget(); thumbnail3Widget = new ThumbnailWidget(); thumbnailWidget->setLayout(new QVBoxLayout()); thumbnail2Widget->setLayout(new QVBoxLayout()); thumbnail3Widget->setLayout(new QVBoxLayout()); thumbnailWidget->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)); thumbnail2Widget->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)); thumbnail3Widget->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)); thumbnail = new ThumbnailLabel(); thumbnail->setObjectName("thumbnail"); thumbnail2 = new ThumbnailLabel(); thumbnail2->setObjectName("thumbnail2"); thumbnail3 = new ThumbnailLabel(); thumbnail3->setObjectName("thumbnail3"); thumbnail->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)); thumbnail2->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)); thumbnail3->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)); QObject::connect(mainwindow, SIGNAL(thumbnailChanged(const QPixmap&)), thumbnail, SLOT(setPixmap(const QPixmap&))); QObject::connect(mainwindow, SIGNAL(thumbnail2Changed(const QPixmap&)), thumbnail2, SLOT(setPixmap(const QPixmap&))); QObject::connect(mainwindow, SIGNAL(thumbnail3Changed(const QPixmap&)), thumbnail3, SLOT(setPixmap(const QPixmap&))); thumbnailWidget->layout()->addWidget(thumbnail); thumbnail2Widget->layout()->addWidget(thumbnail2); thumbnail3Widget->layout()->addWidget(thumbnail3); thumbnailDock = new QDockWidget(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_THUMBNAIL_BOXART), mainwindow); thumbnailDock->setObjectName("thumbnailDock"); thumbnailDock->setProperty("default_area", Qt::RightDockWidgetArea); thumbnailDock->setProperty("menu_text", msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_THUMBNAIL_BOXART)); thumbnailDock->setWidget(thumbnailWidget); mainwindow->addDockWidget(static_cast<Qt::DockWidgetArea>(thumbnailDock->property("default_area").toInt()), thumbnailDock); thumbnail2Dock = new QDockWidget(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_THUMBNAIL_TITLE_SCREEN), mainwindow); thumbnail2Dock->setObjectName("thumbnail2Dock"); thumbnail2Dock->setProperty("default_area", Qt::RightDockWidgetArea); thumbnail2Dock->setProperty("menu_text", msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_THUMBNAIL_TITLE_SCREEN)); thumbnail2Dock->setWidget(thumbnail2Widget); mainwindow->addDockWidget(static_cast<Qt::DockWidgetArea>(thumbnail2Dock->property("default_area").toInt()), thumbnail2Dock); thumbnail3Dock = new QDockWidget(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_THUMBNAIL_SCREENSHOT), mainwindow); thumbnail3Dock->setObjectName("thumbnail3Dock"); thumbnail3Dock->setProperty("default_area", Qt::RightDockWidgetArea); thumbnail3Dock->setProperty("menu_text", msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_THUMBNAIL_SCREENSHOT)); thumbnail3Dock->setWidget(thumbnail3Widget); mainwindow->addDockWidget(static_cast<Qt::DockWidgetArea>(thumbnail3Dock->property("default_area").toInt()), thumbnail3Dock); mainwindow->tabifyDockWidget(thumbnailDock, thumbnail2Dock); mainwindow->tabifyDockWidget(thumbnailDock, thumbnail3Dock); /* when tabifying the dock widgets, the last tab added is selected by default, so we need to re-select the first tab */ thumbnailDock->raise(); coreSelectionWidget = new QWidget(); coreSelectionWidget->setLayout(new QVBoxLayout()); launchWithComboBox = mainwindow->launchWithComboBox(); launchWithWidgetLayout = new QVBoxLayout(); launchWithWidget = new QWidget(); launchWithWidget->setLayout(launchWithWidgetLayout); coreComboBoxLayout = new QHBoxLayout(); mainwindow->runPushButton()->setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding)); mainwindow->stopPushButton()->setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding)); mainwindow->startCorePushButton()->setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding)); coreComboBoxLayout->addWidget(launchWithComboBox); coreComboBoxLayout->addWidget(mainwindow->startCorePushButton()); coreComboBoxLayout->addWidget(mainwindow->coreInfoPushButton()); coreComboBoxLayout->addWidget(mainwindow->runPushButton()); coreComboBoxLayout->addWidget(mainwindow->stopPushButton()); mainwindow->stopPushButton()->hide(); coreComboBoxLayout->setStretchFactor(launchWithComboBox, 1); launchWithWidgetLayout->addLayout(coreComboBoxLayout); coreSelectionWidget->layout()->addWidget(launchWithWidget); coreSelectionWidget->layout()->addItem(new QSpacerItem(20, browserAndPlaylistTabWidget->height(), QSizePolicy::Minimum, QSizePolicy::Expanding)); coreSelectionDock = new QDockWidget(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_CORE), mainwindow); coreSelectionDock->setObjectName("coreSelectionDock"); coreSelectionDock->setProperty("default_area", Qt::LeftDockWidgetArea); coreSelectionDock->setProperty("menu_text", msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_CORE)); coreSelectionDock->setWidget(coreSelectionWidget); mainwindow->addDockWidget(static_cast<Qt::DockWidgetArea>(coreSelectionDock->property("default_area").toInt()), coreSelectionDock); mainwindow->splitDockWidget(browserAndPlaylistTabDock, coreSelectionDock, Qt::Vertical); #if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) mainwindow->resizeDocks(QList<QDockWidget*>() << coreSelectionDock, QList<int>() << 1, Qt::Vertical); #endif /* this should come last */ mainwindow->resizeThumbnails(true, true, true); if (qsettings->contains("all_playlists_list_max_count")) mainwindow->setAllPlaylistsListMaxCount(qsettings->value("all_playlists_list_max_count", 0).toInt()); if (qsettings->contains("all_playlists_grid_max_count")) mainwindow->setAllPlaylistsGridMaxCount(qsettings->value("all_playlists_grid_max_count", 5000).toInt()); if (qsettings->contains("geometry")) if (qsettings->contains("save_geometry")) mainwindow->restoreGeometry(qsettings->value("geometry").toByteArray()); if (qsettings->contains("save_dock_positions")) if (qsettings->contains("dock_positions")) mainwindow->restoreState(qsettings->value("dock_positions").toByteArray()); if (qsettings->contains("theme")) { QString themeStr = qsettings->value("theme").toString(); MainWindow::Theme theme = mainwindow->getThemeFromString(themeStr); if (qsettings->contains("custom_theme") && theme == MainWindow::THEME_CUSTOM) { QString customThemeFilePath = qsettings->value("custom_theme").toString(); mainwindow->setCustomThemeFile(customThemeFilePath); } mainwindow->setTheme(theme); } else mainwindow->setTheme(); if (qsettings->contains("view_type")) { QString viewType = qsettings->value("view_type", "list").toString(); if (viewType == "list") mainwindow->setCurrentViewType(MainWindow::VIEW_TYPE_LIST); else if (viewType == "icons") mainwindow->setCurrentViewType(MainWindow::VIEW_TYPE_ICONS); else mainwindow->setCurrentViewType(MainWindow::VIEW_TYPE_LIST); /* we set it to the same thing a second time so that m_lastViewType is also equal to the startup view type */ mainwindow->setCurrentViewType(mainwindow->getCurrentViewType()); } else mainwindow->setCurrentViewType(MainWindow::VIEW_TYPE_LIST); /* We make sure to hook up the tab widget callback only after the tabs themselves have been added, * but before changing to a specific one, to avoid the callback firing before the view type is set. */ QObject::connect(browserAndPlaylistTabWidget, SIGNAL(currentChanged(int)), mainwindow, SLOT(onTabWidgetIndexChanged(int))); /* setting the last tab must come after setting the view type */ if (qsettings->contains("save_last_tab")) { int lastTabIndex = qsettings->value("last_tab", 0).toInt(); if (lastTabIndex >= 0 && browserAndPlaylistTabWidget->count() > lastTabIndex) { browserAndPlaylistTabWidget->setCurrentIndex(lastTabIndex); mainwindow->onTabWidgetIndexChanged(lastTabIndex); } } else { browserAndPlaylistTabWidget->setCurrentIndex(0); mainwindow->onTabWidgetIndexChanged(0); } for (i = 0; i < listWidget->count() && listWidget->count() > 0; i++) { /* select the first non-hidden row */ if (!listWidget->isRowHidden(i)) { listWidget->setCurrentRow(i); break; } } return handle; }