Esempio n. 1
0
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;
}
Esempio n. 2
0
void MainWindow::detachChartView()
{
    if (!m_chartView)
        return;

    removeDockWidget(m_chartView);

    delete m_chartView;
    m_chartView = 0;
}
Esempio n. 3
0
void MainWindow::detachResultView()
{
    if (!m_resultView)
        return;

    removeDockWidget(m_resultView);

    delete m_resultView;
    m_resultView = 0;
}
Esempio n. 4
0
void MainWindow::detachFileBrowser()
{
    if (!m_fileBrowser)
        return;

    removeDockWidget(m_fileBrowser);

    delete m_fileBrowser;
    m_fileBrowser = 0;
}
Esempio n. 5
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
}
Esempio n. 6
0
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());
	}
}