void MainWindow::createDockWidget()
{
    CreateDockWidgetDialog dialog(this);
    int ret = dialog.exec();
    if (ret == QDialog::Rejected)
        return;

    QDockWidget *dw = new QDockWidget;
    dw->setObjectName(dialog.objectName());
    dw->setWindowTitle(dialog.objectName());
    dw->setWidget(new QTextEdit);

    Qt::DockWidgetArea area = dialog.location();
    switch (area) {
        case Qt::LeftDockWidgetArea:
        case Qt::RightDockWidgetArea:
        case Qt::TopDockWidgetArea:
        case Qt::BottomDockWidgetArea:
            addDockWidget(area, dw);
            break;
        default:
            if (!restoreDockWidget(dw)) {
                QMessageBox::warning(this, QString(), tr("Failed to restore dock widget"));
                delete dw;
                return;
            }
            break;
    }

    extraDockWidgets.append(dw);
    destroyDockWidgetMenu->setEnabled(true);
    destroyDockWidgetMenu->addAction(new QAction(dialog.objectName(), this));
}
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
void SIMPLView_UI::readDockWidgetSettings(SIMPLViewSettings* prefs, QDockWidget* dw)
{
  restoreDockWidget(dw);

  QString name = dw->objectName();
  bool b = prefs->value(dw->objectName(), QVariant(false)).toBool();
  dw->setHidden(b);
}
Exemple #3
0
void MainWindow::setMainWidget( QWidget *mainWidget )
{
   mpMainWidget = mainWidget;
   setCentralWidget( mpMainWidget );
   restoreGeometry( Settings::value( Settings::CommonGeometry ) );
   restoreState( Settings::value( Settings::CommonState ) );
   QList<QDockWidget*> docks( findChildren<QDockWidget*>() );
   foreach( QDockWidget *dock, docks )
   {
      restoreDockWidget( dock );
   }
Exemple #4
0
void MainWindow::readSettings()
{
  QSettings settings("fix8","logviewer");
   restoreGeometry(settings.value("Geometry").toByteArray());
   restoreState(settings.value("MainWindowState").toByteArray());
   restoreDockWidget(consoleDock);
    lastSelectedDir = settings.value("LastSelectedDir").toString();
   fileDirState= settings.value("FileDirState").toByteArray();
   fileFilter = settings.value("FileFilter").toString();
   Qt::ToolButtonStyle  tbs = (Qt::ToolButtonStyle) settings.value("ToolButtonStyle",Qt::ToolButtonIconOnly).toInt();
   setToolButtonStyle(tbs);
   switch (tbs) {
     case Qt::ToolButtonIconOnly:
       iconsOnlyA->setChecked(true);
       break;
   case Qt::ToolButtonTextOnly:
       iconsTextOnlyA->setChecked(true);
       break;
   default:
        iconsWithTextA->setChecked(true);
   }
   QSize toolbarIconSize = settings.value("ToolButtonSize",GUI::Globals::regIconSize).toSize();
   mainToolBar->setIconSize(toolbarIconSize);
   searchToolBar->setIconSize(toolbarIconSize);
   if (toolbarIconSize == GUI::Globals::smallIconSize)
       iconSizeSmallA->setChecked(true);
   else if (toolbarIconSize == GUI::Globals::largeIconSize)
       iconSizeLargeA->setChecked(true);
   else
       iconSizeRegA->setChecked(true);

    QVariant var;
    QPalette pal = mainMenuBar->palette();
    QColor defaultColor = pal.color(QPalette::Background);
    var = settings.value("MenuBarColor",defaultColor);
    QColor color = var.value<QColor>();
    pal.setColor(QPalette::Background,color);
    mainMenuBar->setPalette(pal);
    menubarColor = color;
    messageSplitterSettings = settings.value("MessageSplitter").toByteArray();

}
Exemple #5
0
void QtDockRegion::restoreDockWidgets()
{
	auto qtFramework = get<IQtFramework>();
	assert(qtFramework != nullptr);
	auto qMainWindow = qtWindow_.window();
	assert(qMainWindow != nullptr);
	for (auto& it : dockWidgetMap_)
	{
		auto view = it.first;
		assert(view != nullptr);
		auto qDockWidget = it.second.first.get();
		assert(qDockWidget != nullptr);
		if (qtWindow_.isReady())
		{
			qMainWindow->restoreDockWidget(qDockWidget);
		}
		else
		{
			needToRestorePreference_.push_back(std::make_pair(qDockWidget, view));
		}
	}
}
Exemple #6
0
QtDockRegion::QtDockRegion(IComponentContext& context, QtWindow& qtWindow, QDockWidget& qDockWidget)
    : Depends(context), qtWindow_(qtWindow), qDockWidget_(qDockWidget), hidden_(false)
{
	auto qMainWindow = qtWindow_.window();
	assert(qMainWindow != nullptr);

	// Walk our parent hierarchy and make sure we are tabified with the topmost dock widget.
	// Dock widgets as children of anything but the main window are not supported.
	// We support this in the Qt designer so that we can override the properties of a tab or collection of tabs within a
	// dock region
	QWidget* qWidget = &qDockWidget_;
	while (qWidget != nullptr)
	{
		qWidget = qWidget->parentWidget();
		if (qWidget == nullptr)
		{
			break;
		}
		auto qDockWidget = qobject_cast<QDockWidget*>(qWidget);
		if (qDockWidget != nullptr)
		{
			qMainWindow->tabifyDockWidget(qDockWidget, &qDockWidget_);
		}
	}
	qDockWidget_.setVisible(false);

	auto layoutTagsProperty = qDockWidget_.property("layoutTags");
	if (layoutTagsProperty.isValid())
	{
		auto tags = layoutTagsProperty.toStringList();
		for (auto it = tags.cbegin(); it != tags.cend(); ++it)
		{
			tags_.tags_.push_back(std::string(it->toUtf8()));
		}
	}

	auto hiddenProperty = qDockWidget_.property("hidden");
	if (hiddenProperty.isValid())
	{
		hidden_ = hiddenProperty.toBool();
	}

	QObject::connect(&qtWindow_, &QtWindow::windowReady, [&]() {
		if (needToRestorePreference_.empty())
		{
			return;
		}
		auto qtFramework = get<IQtFramework>();
		assert(qtFramework != nullptr);
		auto qMainWindow = qtWindow_.window();
		for (auto& it : needToRestorePreference_)
		{
			auto qtDockWidget = it.first;
			assert(qtDockWidget != nullptr);
			auto pView = it.second;
			assert(pView != nullptr);
			bool isOk = qMainWindow->restoreDockWidget(qtDockWidget);
			if (!isOk)
			{
				setDefaultPreferenceForDockWidget(qtDockWidget);
			}
			auto pQWidget = qtFramework->toQWidget(*pView);
			assert(pQWidget != nullptr);
			qtDockWidget->setWidget(pQWidget);
			QmlView* qmlView = dynamic_cast<QmlView*>(pView);
			if (qmlView == nullptr)
			{
				return;
			}
			auto ngtDockWidget = dynamic_cast<NGTDockWidget*>(qtDockWidget);
			if (ngtDockWidget == nullptr)
			{
				return;
			}
			if (ngtDockWidget->isVisible() && ngtDockWidget->getVisibility())
			{
				qmlView->setNeedsToLoad(true);
			}
		}
		needToRestorePreference_.clear();
	});
}
Exemple #7
0
void QtDockRegion::addView(IView& view)
{
	auto qMainWindow = qtWindow_.window();
	assert(qMainWindow != nullptr);

	auto findIt = dockWidgetMap_.find(&view);
	if (findIt != dockWidgetMap_.end())
	{
		// already added into the dockWidget
		return;
	}
	// IView will not control qWidget's life-cycle after this call.
	auto qtFramework = get<IQtFramework>();
	assert(qtFramework != nullptr);
	auto qWidget = qtFramework->toQWidget(view);
	if (qWidget == nullptr)
	{
		return;
	}
	auto centralWidget = qMainWindow->centralWidget();
	if (centralWidget != nullptr)
	{
		centralWidget->layout()->addWidget(qWidget);
	}
	qWidget->setSizePolicy(qDockWidget_.sizePolicy());
	qWidget->setMinimumSize(qDockWidget_.minimumSize());
	qWidget->setMaximumSize(qDockWidget_.maximumSize());
	qWidget->setSizeIncrement(qDockWidget_.sizeIncrement());
	qWidget->setBaseSize(qDockWidget_.baseSize());
	qWidget->resize(qWidget->baseSize());

	auto qDockWidget = new NGTDockWidget(&view);
	qDockWidget->setObjectName(view.id());
	IView* pView = &view;
	QtWindow* pWindow = &qtWindow_;
	QObject::connect(qDockWidget, &QDockWidget::visibilityChanged, [qDockWidget, pWindow](bool visible) {
		qDockWidget->visibilityChanged(visible);
		if (visible)
		{
			if (pWindow->isLoadingPreferences())
			{
				return;
			}
			QCoreApplication::postEvent(qDockWidget, new QEvent(QEvent::FocusIn));
		}

	});

	if (qtWindow_.isReady())
	{
		bool isOk = qMainWindow->restoreDockWidget(qDockWidget);
		if (!isOk)
		{
			setDefaultPreferenceForDockWidget(qDockWidget);
		}
		QmlView* qmlView = dynamic_cast<QmlView*>(pView);
		if (qmlView != nullptr)
		{
			if (qDockWidget->isVisible() && qDockWidget->getVisibility())
			{
				qmlView->setNeedsToLoad(true);
			}
		}
	}
	else
	{
		needToRestorePreference_.push_back(std::make_pair(qDockWidget, pView));
	}
	qDockWidget->setWidget(qWidget);

	std::string actionId("View.");
	actionId += view.title();

	auto action = qtFramework->createAction(actionId.c_str(), view.title(), "View", [pView, qDockWidget](IAction*) {
		qDockWidget->show();
		qDockWidget->raise();
		pView->focusInEvent();
	});
	auto application = get<IUIApplication>();
	assert(application != nullptr);
	application->addAction(*action);

	dockWidgetMap_[&view] = std::make_pair(std::unique_ptr<QDockWidget>(qDockWidget), std::move(action));
}