void QtDockRegion::removeView(IView& view) { auto qMainWindow = qtWindow_.window(); if (qMainWindow == nullptr) { return; } auto findIt = dockWidgetMap_.find(&view); if (findIt == dockWidgetMap_.end()) { return; } // TODO: save dockWidget state auto dockWidget = std::move(findIt->second.first); auto action = std::move(findIt->second.second); dockWidgetMap_.erase(findIt); auto application = get<IUIApplication>(); assert(application != nullptr); application->removeAction(*action); action = nullptr; assert(dockWidget != nullptr); dockWidget->setWidget(nullptr); qMainWindow->removeDockWidget(dockWidget.get()); // call this function to let IView control the qWidget's life-cycle again. auto qtFramework = get<IQtFramework>(); assert(qtFramework != nullptr); qtFramework->retainQWidget(view); dockWidget = nullptr; }
void MainWindow::detachChartView() { if (!m_chartView) return; removeDockWidget(m_chartView); delete m_chartView; m_chartView = 0; }
void MainWindow::detachResultView() { if (!m_resultView) return; removeDockWidget(m_resultView); delete m_resultView; m_resultView = 0; }
void MainWindow::detachFileBrowser() { if (!m_fileBrowser) return; removeDockWidget(m_fileBrowser); delete m_fileBrowser; m_fileBrowser = 0; }
RenderWindow::RenderWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::RenderWindow) { ui->setupUi(this); fractalWidgets = new QWidget*[NUMBER_OF_FRACTALS]; //store default geometry and state defaultGeometry = saveGeometry(); defaultState = saveState(); #ifdef USE_GAMEPAD QApplication::connect(&gamepad, SIGNAL(axisLeftXChanged(double)), this, SLOT(slotGamepadPitch(double))); QApplication::connect(&gamepad, SIGNAL(axisLeftYChanged(double)), this, SLOT(slotGamepadYaw(double))); QApplication::connect(&gamepad, SIGNAL(buttonL2Changed(double)), this, SLOT(slotGamepadRoll())); QApplication::connect(&gamepad, SIGNAL(buttonR2Changed(double)), this, SLOT(slotGamepadRoll())); QApplication::connect(&gamepad, SIGNAL(buttonL1Changed(bool)), this, SLOT(slotShiftModeChange(bool))); QApplication::connect(&gamepad, SIGNAL(axisRightXChanged(double)), this, SLOT(slotGamepadX(double))); QApplication::connect(&gamepad, SIGNAL(axisRightYChanged(double)), this, SLOT(slotGamepadY(double))); QApplication::connect(&gamepad, SIGNAL(buttonAChanged(bool)), this, SLOT(slotGamepadZ())); QApplication::connect(&gamepad, SIGNAL(buttonBChanged(bool)), this, SLOT(slotGamepadZ())); QApplication::connect(this->ui->groupCheck_gamepad_enabled, SIGNAL(toggled(bool)), &gamepad, SLOT(setConnected(bool))); #else ui->menuView->removeAction(ui->actionShow_gamepad_dock); removeDockWidget(ui->dockWidget_gamepad_dock); #endif }
void MainWindow::slotTabChanged(int index) { QString text; int ipvbtab, ww, hh, ii; char buf[32]; if(opt.arg_debug) printf("old_url=%s\n",(const char *) pvbtab[currentTab].url.toUtf8()); if(pvbtab[currentTab].s != -1) // pause old tab { sprintf(buf,"@pause(%d)\n",1); if(tcp_send(&pvbtab[currentTab].s,buf,strlen(buf)) == -1) { // connection lost tcp_close(&pvbtab[currentTab].s); pvbtab[currentTab].s = -1; QPalette palette(QColor(255,0,0)); statusBar()->setPalette(palette); statusBar()->showMessage(l_status_connection_lost); if(opt.arg_debug) printf("view->setDisabled1 tcp_close(%d)\n", currentTab); pvbtab[currentTab].rootWidget->setDisabled(1); pvbtab[currentTab].interpreter.perhapsCloseModalDialog(); qApp->beep(); } } pvbtab[currentTab].rootWidget = scroll->takeWidget(); text = tabBar->tabWhatsThis(index); sscanf((const char *) text.toUtf8(),"%d", &ipvbtab); if(opt.arg_debug) printf("Tab changed to index=%d ipvbtab=%d begin\n", index, ipvbtab); for(ii=0; ii<MAX_DOCK_WIDGETS; ii++) // perhaps hide the docks { MyQDockWidget *dock = pvbtab[currentTab].dock[ii]; if(dock != NULL) { if(opt.arg_debug) printf("removeDock %d\n", ii); removeDockWidget(dock); } } currentTab = ipvbtab; if(opt.arg_debug) printf("new_url=%s\n",(const char *) pvbtab[currentTab].url.toUtf8()); urlComboBox->setEditText(pvbtab[currentTab].url); ww = pvbtab[currentTab].interpreter.width(); hh = pvbtab[currentTab].interpreter.height(); pvbtab[currentTab].rootWidget->resize(ww,hh); scroll->resize(ww,hh); scroll->setWidget(pvbtab[currentTab].rootWidget); // workaround for qt if(pvbtab[currentTab].interpreter.hasLayout == 1) scroll->setWidgetResizable(true); else scroll->setWidgetResizable(false); QApplication::postEvent(this, new QResizeEvent(QSize(ww-1,hh-1),QSize(ww,hh))); // force qt to update slider if(pvbtab[currentTab].s != -1) // unpause new tab { sprintf(buf,"@pause(%d)\n",0); if(tcp_send(&pvbtab[currentTab].s,buf,strlen(buf)) == -1) { // connection lost tcp_close(&pvbtab[currentTab].s); pvbtab[currentTab].s = -1; QPalette palette(QColor(255,0,0)); statusBar()->setPalette(palette); statusBar()->showMessage(l_status_connection_lost); if(opt.arg_debug) printf("view->setDisabled2 tcp_close(%d)\n", currentTab); pvbtab[currentTab].rootWidget->setDisabled(1); pvbtab[currentTab].interpreter.perhapsCloseModalDialog(); qApp->beep(); } } for(ii=0; ii<MAX_DOCK_WIDGETS; ii++) // perhaps show the docks { MyQDockWidget *dock = pvbtab[currentTab].dock[ii]; if(dock != NULL) { if(opt.arg_debug) printf("addDock %d\n", ii); addDockWidget(Qt::LeftDockWidgetArea,dock); dock->show(); } } if(opt.arg_debug) printf("Tab changed to index=%d ipvbtab=%d end\n", index, ipvbtab); }
void RenderWindow::slotUpdateDocksAndToolbarByAction() { // Animation dock if (ui->actionShow_animation_dock->isChecked() != ui->dockWidget_animation->isVisible()) { if (ui->actionShow_animation_dock->isChecked()) { addDockWidget(Qt::BottomDockWidgetArea, ui->dockWidget_animation); } else { removeDockWidget(ui->dockWidget_animation); } ui->dockWidget_animation->setVisible(ui->actionShow_animation_dock->isChecked()); } // Information dock if (ui->actionShow_info_dock->isChecked() != ui->dockWidget_info->isVisible()) { if (ui->actionShow_info_dock->isChecked()) { addDockWidget(Qt::LeftDockWidgetArea, ui->dockWidget_info); } else { removeDockWidget(ui->dockWidget_info); } ui->dockWidget_info->setVisible(ui->actionShow_info_dock->isChecked()); } // Histogram dock if (ui->actionShow_statistics_dock->isChecked() != ui->dockWidget_histogram->isVisible()) { if (ui->actionShow_statistics_dock->isChecked()) { addDockWidget(Qt::LeftDockWidgetArea, ui->dockWidget_histogram); } else { removeDockWidget(ui->dockWidget_histogram); } ui->dockWidget_histogram->setVisible(ui->actionShow_statistics_dock->isChecked()); } // Toolbar if (ui->actionShow_toolbar->isChecked() != ui->toolBar->isVisible()) { ui->toolBar->setVisible(ui->actionShow_toolbar->isChecked()); } // Gamepad dock #ifdef USE_GAMEPAD if (ui->actionShow_gamepad_dock->isChecked() != ui->dockWidget_gamepad_dock->isVisible()) { if (ui->actionShow_gamepad_dock->isChecked()) { addDockWidget(Qt::RightDockWidgetArea, ui->dockWidget_gamepad_dock); } else { removeDockWidget(ui->dockWidget_gamepad_dock); } ui->dockWidget_gamepad_dock->setVisible(ui->actionShow_gamepad_dock->isChecked()); } #endif // Queue dock if (ui->actionShow_queue_dock->isChecked() != ui->dockWidget_queue_dock->isVisible()) { if (ui->actionShow_queue_dock->isChecked()) { addDockWidget(Qt::RightDockWidgetArea, ui->dockWidget_queue_dock); } else { removeDockWidget(ui->dockWidget_queue_dock); } ui->dockWidget_queue_dock->setVisible(ui->actionShow_queue_dock->isChecked()); } // Queue dock if (ui->actionShow_measurement_dock->isChecked() != ui->dockWidget_measurement->isVisible()) { if (ui->actionShow_measurement_dock->isChecked()) { addDockWidget(Qt::RightDockWidgetArea, ui->dockWidget_measurement); } else { removeDockWidget(ui->dockWidget_measurement); } ui->dockWidget_measurement->setVisible(ui->actionShow_measurement_dock->isChecked()); } }