void tst_QDockWidget::dockLocationChanged() { qRegisterMetaType<Qt::DockWidgetArea>("Qt::DockWidgetArea"); QMainWindow mw; QDockWidget dw; dw.setObjectName("dock1"); QSignalSpy spy(&dw, SIGNAL(dockLocationChanged(Qt::DockWidgetArea))); mw.addDockWidget(Qt::LeftDockWidgetArea, &dw); QCOMPARE(spy.count(), 1); QCOMPARE(qvariant_cast<Qt::DockWidgetArea>(spy.at(0).at(0)), Qt::LeftDockWidgetArea); spy.clear(); mw.addDockWidget(Qt::LeftDockWidgetArea, &dw); QCOMPARE(spy.count(), 1); QCOMPARE(qvariant_cast<Qt::DockWidgetArea>(spy.at(0).at(0)), Qt::LeftDockWidgetArea); spy.clear(); mw.addDockWidget(Qt::RightDockWidgetArea, &dw); QCOMPARE(spy.count(), 1); QCOMPARE(qvariant_cast<Qt::DockWidgetArea>(spy.at(0).at(0)), Qt::RightDockWidgetArea); spy.clear(); mw.removeDockWidget(&dw); QCOMPARE(spy.count(), 0); QDockWidget dw2; dw2.setObjectName("dock2"); mw.addDockWidget(Qt::TopDockWidgetArea, &dw2); mw.tabifyDockWidget(&dw2, &dw); QCOMPARE(spy.count(), 1); QCOMPARE(qvariant_cast<Qt::DockWidgetArea>(spy.at(0).at(0)), Qt::TopDockWidgetArea); spy.clear(); mw.splitDockWidget(&dw2, &dw, Qt::Horizontal); QCOMPARE(spy.count(), 1); QCOMPARE(qvariant_cast<Qt::DockWidgetArea>(spy.at(0).at(0)), Qt::TopDockWidgetArea); spy.clear(); dw.setFloating(true); QTest::qWait(100); dw.setFloating(false); QTest::qWait(100); QCOMPARE(spy.count(), 1); QCOMPARE(qvariant_cast<Qt::DockWidgetArea>(spy.at(0).at(0)), Qt::TopDockWidgetArea); spy.clear(); QByteArray ba = mw.saveState(); mw.restoreState(ba); QCOMPARE(spy.count(), 1); QCOMPARE(qvariant_cast<Qt::DockWidgetArea>(spy.at(0).at(0)), Qt::TopDockWidgetArea); }
void ExecutingPietLibraries::MakeGLView (std::vector<PietTree> & pt){ if(pt.size() == 0 )return; if(pt[0].isLeaf()) return; pt = pt[0].Nodes(); if(pt.size() < 3) return; int w = pt[0].Val(); int h = pt[1].Val(); QString title = pt[2].toString(); for(int i:range(3)) pt.pop_back(); GLGameWidget* glgw = GLGameWidget::MakeUniqueGLWidget(nullptr); if(glgw == nullptr) return ; glgw->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed); glgw->setSize(w,h); QDockWidget* dw = new QDockWidget(nullptr); dw->setFloating(true); dw->setAllowedAreas(Qt::NoDockWidgetArea); dw->connect(dw,&QDockWidget::dockLocationChanged,[=](){ dw->setFloating(true);}); dw->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed); dw->setWidget(glgw); dw->setAttribute(Qt::WA_DeleteOnClose); dw->setWindowTitle(title); dw->show(); }
void tst_QDockWidget::task169808_setFloating() { //we try to test if the sizeHint of the dock widget widget is taken into account class MyWidget : public QWidget { public: QSize sizeHint() const { const QRect& deskRect = qApp->desktop()->availableGeometry(); return QSize(qMin(300, deskRect.width() / 2), qMin(300, deskRect.height() / 2)); } QSize minimumSizeHint() const { return QSize(20,20); } void paintEvent(QPaintEvent *) { QPainter p(this); p.fillRect(rect(), Qt::red); } }; QMainWindow mw; mw.setCentralWidget(new MyWidget); QDockWidget *dw = new QDockWidget("my dock"); dw->setWidget(new MyWidget); mw.addDockWidget(Qt::LeftDockWidgetArea, dw); dw->setFloating(true); mw.show(); QVERIFY(QTest::qWaitForWindowExposed(&mw)); QCOMPARE(dw->widget()->size(), dw->widget()->sizeHint()); //and now we try to test if the contents margin is taken into account dw->widget()->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); dw->setFloating(false); QVERIFY(QTest::qWaitForWindowExposed(&mw)); qApp->processEvents(); //leave time processing events const QSize oldSize = dw->size(); const int margin = 20; dw->setContentsMargins(margin, margin, margin, margin); QVERIFY(QTest::qWaitForWindowExposed(&mw)); qApp->processEvents(); //leave time processing events //widget size shouldn't have changed QCOMPARE(dw->widget()->size(), dw->widget()->sizeHint()); //dockwidget should be bigger QCOMPARE(dw->size(), oldSize + QSize(margin * 2, margin * 2)); }
Window::Window () : QMainWindow (NULL) { try { viewer = new GLViewer; } catch (GLViewer::Exception e) { cerr << e.getMessage () << endl; exit (1); } setCentralWidget (viewer); #if DEBUG cout << "/ ! \\ Building in Debug mode. Performance will be impacted" << endl; #else viewer->setBaseSize(500, 500); #endif initControlWidget (); QDockWidget * controlDockWidget = new QDockWidget (this); controlDockWidget->setWidget (controlWidget); controlDockWidget->adjustSize (); addDockWidget (Qt::RightDockWidgetArea, controlDockWidget); controlDockWidget->setFloating(true); controlDockWidget->setFeatures (QDockWidget::AllDockWidgetFeatures); controlDockWidget->adjustSize(); controlDockWidget->move(0, 0); QDockWidget * focalDockWidget = new QDockWidget (this); focalDockWidget->setWidget(focalWidget); focalDockWidget->adjustSize (); addDockWidget (Qt::LeftDockWidgetArea, focalDockWidget); focalDockWidget->setFloating(true); focalDockWidget->setFeatures (QDockWidget::AllDockWidgetFeatures); focalDockWidget->adjustSize(); focalDockWidget->move(200, 0); QDockWidget* rayTracerDockWidget = new QDockWidget(this); rayTracerDockWidget->setWidget(rayTracerWidget); rayTracerDockWidget->adjustSize (); addDockWidget (Qt::TopDockWidgetArea, rayTracerDockWidget); rayTracerDockWidget->setFloating(true); rayTracerDockWidget->setFeatures (QDockWidget::AllDockWidgetFeatures); rayTracerDockWidget->adjustSize(); // Move widgets around the raytracer QDesktopWidget desktop; QRect mainScreenSize = desktop.availableGeometry(desktop.primaryScreen()); controlDockWidget->move(mainScreenSize.width() - 200, 0); rayTracerDockWidget->move(0, 0); focalDockWidget->move(0, mainScreenSize.height() - focalDockWidget->height()); statusBar()->showMessage(""); }
/** * Constructs a DlgDisplayPropertiesImp which is a child of 'parent', with the * name 'name' and widget flags set to 'f' * * The dialog will by default be modeless, unless you set 'modal' to * true to construct a modal dialog. */ DlgDisplayPropertiesImp::DlgDisplayPropertiesImp( QWidget* parent, Qt::WindowFlags fl ) : QDialog( parent, fl ) { this->setupUi(this); textLabel1_3->hide(); changePlot->hide(); buttonLineColor->setModal(false); buttonColor->setModal(false); std::vector<Gui::ViewProvider*> views = getSelection(); setDisplayModes(views); fillupMaterials(); setMaterial(views); setColorPlot(views); setShapeColor(views); setLineColor(views); setPointSize(views); setLineWidth(views); setTransparency(views); setLineTransparency(views); // embed this dialog into a dockable widget container Gui::DockWindowManager* pDockMgr = Gui::DockWindowManager::instance(); QDockWidget* dw = pDockMgr->addDockWindow("Display properties", this, Qt::AllDockWidgetAreas); dw->setFeatures(QDockWidget::DockWidgetMovable|QDockWidget::DockWidgetFloatable); dw->setFloating(true); dw->show(); Gui::Selection().Attach(this); this->connectChangedObject = Gui::Application::Instance->signalChangedObject.connect(boost::bind (&DlgDisplayPropertiesImp::slotChangedObject, this, _1, _2)); }
void tst_QDockWidget::task237438_setFloatingCrash() { //should not crash QDockWidget pqdwDock; pqdwDock.setFloating(false); pqdwDock.show(); }
MainWindow::MainWindow() { AddressInput* addressInput = new AddressInput( this ); this->addToolBar( addressInput ); QDockWidget* motor0Dock = new QDockWidget( "Motor 0", this ); motor0Dock->setWidget( new MotorWidget( this, 0 ) ); motor0Dock->setFeatures( QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable ); addDockWidget(Qt::BottomDockWidgetArea, motor0Dock ); motor0Dock->setFloating( false ); motor0Dock->setVisible( true ); QDockWidget* motor1Dock = new QDockWidget( "Motor 1", this ); motor1Dock->setWidget( new MotorWidget( this, 1 ) ); motor1Dock->setFeatures( QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable ); addDockWidget(Qt::BottomDockWidgetArea, motor1Dock ); motor1Dock->setFloating( false ); motor1Dock->setVisible( true ); QDockWidget* motor2Dock = new QDockWidget( "Motor 2", this ); motor2Dock->setWidget( new MotorWidget( this, 2 ) ); motor2Dock->setFeatures( QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable ); addDockWidget(Qt::BottomDockWidgetArea, motor2Dock ); motor2Dock->setFloating( false ); motor2Dock->setVisible( true ); QDockWidget* odometryDock = new QDockWidget( "Odometry", this ); odometryDock->setWidget( new OdometryWidget( this ) ); odometryDock->setFeatures( QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable ); addDockWidget(Qt::BottomDockWidgetArea, odometryDock ); odometryDock->setFloating( false ); odometryDock->setVisible( true ); setCentralWidget( new ControlPanelWidget( this ) ); }
void MainWindow::on_configAction_triggered() { QDockWidget * configCameraDock = new QDockWidget( "Camera Configuration", this ); { _configCamera = new ConfigCamera( configCameraDock ); configCameraDock->setWidget( ( _configCamera ) ); addDockWidget( Qt::TopDockWidgetArea, configCameraDock ); } configCameraDock->setFloating( true ); }
QDockWidget* MainWindow::createDockWidget(KoDockFactoryBase* factory) { QDockWidget* dockWidget = 0; if(!m_dockWidgetMap.contains(factory->id())) { dockWidget = factory->createDockWidget(); // It is quite possible that a dock factory cannot create the dock; don't // do anything in that case. if(!dockWidget) return 0; m_dockWidgets.push_back(dockWidget); dockWidget->setObjectName(factory->id()); dockWidget->setParent(this); if(dockWidget->widget() && dockWidget->widget()->layout()) dockWidget->widget()->layout()->setContentsMargins(1, 1, 1, 1); Qt::DockWidgetArea side = Qt::RightDockWidgetArea; bool visible = true; switch(factory->defaultDockPosition()) { case KoDockFactoryBase::DockTornOff: dockWidget->setFloating(true); // position nicely? break; case KoDockFactoryBase::DockTop: side = Qt::TopDockWidgetArea; break; case KoDockFactoryBase::DockLeft: side = Qt::LeftDockWidgetArea; break; case KoDockFactoryBase::DockBottom: side = Qt::BottomDockWidgetArea; break; case KoDockFactoryBase::DockRight: side = Qt::RightDockWidgetArea; break; case KoDockFactoryBase::DockMinimized: visible = false; break; default:; } addDockWidget(side, dockWidget); if(dockWidget->features() & QDockWidget::DockWidgetClosable) { m_dockWidgetMenu->addAction(dockWidget->toggleViewAction()); if(!visible) dockWidget->hide(); } m_dockWidgetMap.insert(factory->id(), dockWidget); } else { dockWidget = m_dockWidgetMap[ factory->id()]; } connect(dockWidget, SIGNAL(dockLocationChanged(Qt::DockWidgetArea)), this, SLOT(forceDockTabFonts())); return dockWidget; }
void tst_QDockWidget::setFloating() { const QRect deskRect = QApplication::desktop()->availableGeometry(); QMainWindow mw; mw.move(deskRect.left() + deskRect.width() * 2 / 3, deskRect.top() + deskRect.height() / 3); QDockWidget dw; mw.addDockWidget(Qt::LeftDockWidgetArea, &dw); mw.show(); QVERIFY(QTest::qWaitForWindowExposed(&mw)); QVERIFY(!dw.isFloating()); const QPoint dockedPosition = dw.mapToGlobal(dw.pos()); QSignalSpy spy(&dw, SIGNAL(topLevelChanged(bool))); dw.setFloating(true); const QPoint floatingPosition = dw.pos(); // QTBUG-31044, show approximately at old position, give or take window frame. QVERIFY((dockedPosition - floatingPosition).manhattanLength() < 50); QVERIFY(dw.isFloating()); QCOMPARE(spy.count(), 1); QCOMPARE(spy.at(0).value(0).toBool(), dw.isFloating()); spy.clear(); dw.setFloating(dw.isFloating()); QCOMPARE(spy.count(), 0); spy.clear(); dw.setFloating(false); QVERIFY(!dw.isFloating()); QCOMPARE(spy.count(), 1); QCOMPARE(spy.at(0).value(0).toBool(), dw.isFloating()); spy.clear(); dw.setFloating(dw.isFloating()); QCOMPARE(spy.count(), 0); spy.clear(); }
void tst_QDockWidget::restoreStateOfFloating() { QMainWindow mw; QDockWidget dock; dock.setObjectName("dock1"); mw.addDockWidget(Qt::TopDockWidgetArea, &dock); QVERIFY(!dock.isFloating()); QByteArray ba = mw.saveState(); dock.setFloating(true); QVERIFY(dock.isFloating()); QVERIFY(mw.restoreState(ba)); QVERIFY(!dock.isFloating()); }
void tst_QWindowContainer::testDockWidget() { QMainWindow mainWindow; mainWindow.resize(200, 200); QDockWidget *dock = new QDockWidget(); QWindow *window = new QWindow(); QWidget *container = QWidget::createWindowContainer(window); dock->setWidget(container); mainWindow.addDockWidget(Qt::RightDockWidgetArea, dock); mainWindow.show(); QVERIFY(QTest::qWaitForWindowExposed(&mainWindow)); QVERIFY(window->parent() == mainWindow.window()->windowHandle()); QTest::qWait(1000); dock->setFloating(true); QTRY_VERIFY(window->parent() != mainWindow.window()->windowHandle()); QTest::qWait(1000); dock->setFloating(false); QTRY_VERIFY(window->parent() == mainWindow.window()->windowHandle()); }
void tst_QDockWidget::task165177_deleteFocusWidget() { QMainWindow mw; QDockWidget *dw = new QDockWidget(&mw); mw.addDockWidget(Qt::LeftDockWidgetArea, dw); QLineEdit *ledit = new QLineEdit; dw->setWidget(ledit); mw.show(); QVERIFY(QTest::qWaitForWindowExposed(&mw)); qApp->processEvents(); dw->setFloating(true); delete ledit; QCOMPARE(mw.focusWidget(), (QWidget *)0); QCOMPARE(dw->focusWidget(), (QWidget *)0); }
void MainWindow::newChart() { QDockWidget * chartDockWidget = new QDockWidget("Chart", this); EpidemicChartWidget * epidemicChartWidget = new EpidemicChartWidget(this); chartDockWidget->setWidget(epidemicChartWidget); addDockWidget(Qt::BottomDockWidgetArea, chartDockWidget); chartDockWidget->setFloating(true); if(dataSet_ != NULL) { epidemicChartWidget->setDataSet(dataSet_); epidemicChartWidget->setTime(time_); } }
void TitleWidget::ViewButtonClicked(void) { QDockWidget* Dock = qobject_cast<QDockWidget*>(parent()); if (Dock->isFloating()) { if (Dock->geometry() == QApplication::desktop()->availableGeometry(Dock)) { Dock->setGeometry(Dock->property("last-geometry").toRect()); } else { Dock->setProperty("last-geometry", Dock->geometry()); Dock->setGeometry(QApplication::desktop()->availableGeometry(Dock)); } } else Dock->setFloating(true); }
void MainWindow::createWidgets() { { // Dock Chutier _chutierDock = new QDockWidget( "Media List", this ); { _chutier = new Chutier( _chutierDock ); _chutierDock->setWidget( _chutier ); addDockWidget( Qt::TopDockWidgetArea, _chutierDock ); _viewMenu->addAction( _chutierDock->toggleViewAction() ); _viewMenu->addAction( _chutier->_viewerChutierDock->toggleViewAction() ); } } { // Dock Viewer createWidgetViewer(); saveWidgets(); // Dock UndoWidget QDockWidget * undoDock = new QDockWidget( "Command List", this ); { _undoView = new UndoView( Projet::getInstance().getCommandManager(), undoDock ); _undoWidget = new UndoWidget( _undoView ); undoDock->setWidget( _undoWidget ); addDockWidget( Qt::TopDockWidgetArea, undoDock ); _viewMenu->addAction( undoDock->toggleViewAction() ); } tabifyDockWidget( _chutierDock, undoDock ); undoDock->setHidden( true ); undoDock->setFloating( true ); // Dock Timeline QML _graphicTimelineDock = new QDockWidget( "Graphic Timeline", this ); _timelineGraphic = new TimelineGraphic( this ); _graphicTimelineDock->setWidget( _timelineGraphic ); addDockWidget( Qt::BottomDockWidgetArea, _graphicTimelineDock ); _viewMenu->addAction( _graphicTimelineDock->toggleViewAction() ); } }
WindowImpl::WindowImpl(): m_ui(new Ui::WindowImpl) { m_ui->setupUi(this); QApplication::setStyle(new QNotoStyle); QSettings sets(QSettings::IniFormat, QSettings::UserScope, "qnoto", "qnoto"); restoreGeometry(sets.value("MainWindow/Geometry").toByteArray()); QDockWidget *dockWidget = new QDockWidget("Left side", this); dockWidget->setContentsMargins(0, 0, 0, 0); dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea); dockWidget->setFloating(false); dockWidget->setFeatures(dockWidget->features() ^ QDockWidget::DockWidgetClosable ^ QDockWidget::DockWidgetMovable ^ QDockWidget::DockWidgetFloatable); dockWidget->setTitleBarWidget(new QWidget); m_split = new SideSplit(this); dockWidget->setWidget(m_split); addDockWidget(Qt::LeftDockWidgetArea, dockWidget); m_editors = qnoto::plugin<qnoto::Editors>(); connect(m_editors, &qnoto::Editors::updateEditMenu, this, &WindowImpl::updateEditMenu); setCentralWidget(m_editors); const auto& acts = m_editors->actions(); for(const auto& it: acts){ if (it->property("name").toString().startsWith("File_")){ m_ui->menuFile->addAction(it); } if (it->property("name").toString().startsWith("Window_")){ m_ui->menuWindow->addAction(it); } } connect(m_ui->actionPreferences, &QAction::triggered, this, &WindowImpl::showPreferences); m_split->restoreState(sets); m_editors->restoreState(); }
void KoDockWidgetTitleBar::Private::toggleFloating() { QDockWidget *q = qobject_cast<QDockWidget*>(thePublic->parentWidget()); q->setFloating(!q->isFloating()); }
ViewerWindow::ViewerWindow(): fileLoaded_(false){ setupUi( this ); #ifdef WIN32 //Reposition console window QRect myRegion=frameGeometry(); QPoint putAt=myRegion.topRight(); SetWindowPos(GetConsoleWindow(),winId(),putAt.x()+1,putAt.y(),0,0,SWP_NOSIZE); #endif mProdconn.ConnectConsumer( mViewer->InputPort()[0] ); mViewer->SetColorTransformType( M4D::GUI::ctTransferFunction1D ); action2D->setChecked(true); //---TF Editor--- std::vector<M4D::GUI::TF::Size> dataCT1D(1, 4096); //default CT editingSystem_ = M4D::GUI::TFPalette::Ptr(new M4D::GUI::TFPalette(this, dataCT1D)); editingSystem_->setupDefault(); bool previewUpdateConnected = QObject::connect(&(*editingSystem_), SIGNAL(UpdatePreview(M4D::GUI::TF::Size)), this, SLOT(updatePreview(M4D::GUI::TF::Size))); tfAssert(previewUpdateConnected); QDockWidget* dockWidget = new QDockWidget("Transfer Function Palette", this); dockWidget->setWidget( &(*editingSystem_) ); dockWidget->setFeatures(QDockWidget::AllDockWidgetFeatures); dockWidget->setAllowedAreas(Qt::AllDockWidgetAreas); addDockWidget(Qt::LeftDockWidgetArea, dockWidget); dockWidget->setFloating(true); //---Timer--- changeChecker_.setInterval( 500 ); QObject::connect( &changeChecker_, SIGNAL( timeout() ), this, SLOT( updateTransferFunction() ) ); //---Viewer Switch--- QActionGroup *viewerTypeSwitch = new QActionGroup( this ); QSignalMapper *viewerTypeSwitchSignalMapper = new QSignalMapper( this ); viewerTypeSwitch->setExclusive( true ); viewerTypeSwitch->addAction( action2D ); viewerTypeSwitch->addAction( action3D ); viewerTypeSwitchSignalMapper->setMapping( action2D, M4D::GUI::rt2DAlignedSlices ); viewerTypeSwitchSignalMapper->setMapping( action3D, M4D::GUI::rt3D ); QObject::connect( action2D, SIGNAL( triggered() ), viewerTypeSwitchSignalMapper, SLOT( map() ) ); QObject::connect( action3D, SIGNAL( triggered() ), viewerTypeSwitchSignalMapper, SLOT( map() ) ); QObject::connect( viewerTypeSwitchSignalMapper, SIGNAL( mapped ( int ) ), this, SLOT( changeViewerType( int ) ) ); //---Mouse info--- QLabel *infoLabel = new QLabel(); statusbar->addWidget( infoLabel ); mViewer->setMouseTracking ( true ); QObject::connect( mViewer, SIGNAL( MouseInfoUpdate( const QString & ) ), infoLabel, SLOT( setText( const QString & ) ) ); //---Default buffer--- buffer_ = Buffer1D::Ptr(new Buffer1D(4096, Interval(0.0f, 4095.0f))); #ifdef TF_NDEBUG showMaximized(); #endif #ifndef TF_NDEBUG show(); #endif //show must be called before setting transfer function buffer mViewer->SetTransferFunctionBuffer(buffer_); }
bool MainWindowImpl::loadFile( QFileInfo const & fi ) { if( ! fi.isFile() ) return false; // FIXME: this dispatch needs to be generalized. QString fn( fi.filePath() ); // fi.absoluteFilePath() ); bool worked = false; if( impl->gstate.board().fileNameMatches(fn) ) { worked = impl->gstate.board().s11nLoad(fn); } else if( impl->gstate.fileNameMatches(fn) ) { worked = this->loadGame(fn); } else if( fn.endsWith(".wiki") ) { worked = true; QString lbl = QString("Wiki: %1").arg(fi.fileName()); QDockWidget * win = new QDockWidget( lbl, this ); qboard::WikiLiteView * v = new qboard::WikiLiteView; win->setAttribute(Qt::WA_DeleteOnClose); win->setWidget( v ); win->move( impl->gv->viewport()->mapToGlobal(QPoint(0,0)) ); win->resize( impl->gv->viewport()->size() ); win->setFloating(true); this->addDockWidget(Qt::RightDockWidgetArea, win ); v->parseFile(fn); win->setWindowTitle( v->windowTitle() ); } else if( QRegExp("\\.[jq]s$",Qt::CaseInsensitive).indexIn(fn) > 0 ) { QScriptEngine & js( impl->gstate.jsEngine() ); qDebug() << "[ running script"<<fn<<"]"; QScriptValue rv = qboard::jsInclude( &js, fn ); if( rv.isError() ) { QStringList bt( js.uncaughtExceptionBacktrace() ); QScriptValue exv = rv.isError() ? rv : js.uncaughtException(); QString msg("Script threw or returned an exception:\n"); msg += exv.toString() + "\nBacktrace:\n" + bt.join("\n"); QMessageBox::warning( this, "JavaScript Exception", msg, QMessageBox::Ok, QMessageBox::Ok ); worked = false; } else { worked = true; } qDebug() << "[ done running script"<<fn<<"]"; } else if( QRegExp("\\.(html|txt)$",Qt::CaseInsensitive).indexIn(fn) > 0 ) { #if QT_VERSION >= 0x040400 QBoardDocsBrowser * b = new QBoardDocsBrowser; b->setHome(fn); b->setWindowTitle(fn); b->show(); worked = true; #else QMessageBox::warning( this, "Not implemented!", "MainWindowImpl::loadFile(*.{txt,html}) not implemented for Qt < 4.4", QMessageBox::Ok, QMessageBox::Ok ); worked = false; #endif } else if( QRegExp("\\.(png|jpg|gif|xpm|svg|bmp)$",Qt::CaseInsensitive).indexIn(fn) > 0 ) { // ^^^ FIXME: get the list of image formats from somewhere dynamic const size_t threshold = 10 * 1024; // ^^^ fixme: ^^^^ do this based on image resolution, not file size, cuz many // large-sized PNGs are quite small. if( fi.size() < threshold ) { worked = this->loadPiece(fi); } else { worked = this->impl->gstate.board().s11nLoad(fn); // fi.absoluteFilePath()); } } if( worked ) { this->statusBar()->showMessage("Loaded: "+fn); // fi.absoluteFilePath()); } else { this->statusBar()->showMessage("Load FAILED: "+fn); // fi.absoluteFilePath()); } return worked; }
QDockWidget* MainWindow::createDockWidget(KoDockFactoryBase* factory) { QDockWidget* dockWidget = 0; if(!m_dockWidgetMap.contains(factory->id())) { dockWidget = factory->createDockWidget(); // It is quite possible that a dock factory cannot create the dock; don't // do anything in that case. if(!dockWidget) return 0; m_dockWidgets.push_back(dockWidget); dockWidget->setObjectName(factory->id()); dockWidget->setParent(this); if(dockWidget->widget() && dockWidget->widget()->layout()) dockWidget->widget()->layout()->setContentsMargins(1, 1, 1, 1); Qt::DockWidgetArea side = Qt::RightDockWidgetArea; bool visible = true; switch(factory->defaultDockPosition()) { case KoDockFactoryBase::DockTornOff: dockWidget->setFloating(true); // position nicely? break; case KoDockFactoryBase::DockTop: side = Qt::TopDockWidgetArea; break; case KoDockFactoryBase::DockLeft: side = Qt::LeftDockWidgetArea; break; case KoDockFactoryBase::DockBottom: side = Qt::BottomDockWidgetArea; break; case KoDockFactoryBase::DockRight: side = Qt::RightDockWidgetArea; break; case KoDockFactoryBase::DockMinimized: visible = false; break; default:; } addDockWidget(side, dockWidget); if(dockWidget->features() & QDockWidget::DockWidgetClosable) { m_dockWidgetMenu->addAction(dockWidget->toggleViewAction()); if(!visible) dockWidget->hide(); } m_dockWidgetMap.insert(factory->id(), dockWidget); } else { dockWidget = m_dockWidgetMap[ factory->id()]; } KConfigGroup group(KSharedConfig::openConfig(), "GUI"); QFont dockWidgetFont = QFontDatabase::systemFont(QFontDatabase::GeneralFont); qreal pointSize = group.readEntry("palettefontsize", dockWidgetFont.pointSize() * 0.75); pointSize = qMax(pointSize, QFontDatabase::systemFont(QFontDatabase::SmallestReadableFont).pointSizeF()); dockWidgetFont.setPointSizeF(pointSize); #ifdef Q_WS_MAC dockWidget->setAttribute(Qt::WA_MacSmallSize, true); #endif dockWidget->setFont(dockWidgetFont); connect(dockWidget, SIGNAL(dockLocationChanged(Qt::DockWidgetArea)), this, SLOT(forceDockTabFonts())); return dockWidget; }
void MainWindow::createDockWidget() { signalMapper = new QSignalMapper(this); // Header Widget QWidget* headerWidget = new QWidget; headerWidget->setFixedHeight(109); QDockWidget* headerDockWidget = new QDockWidget(this); headerDockWidget->setObjectName("headerDockWidget"); headerDockWidget->setFloating(false); headerDockWidget->setTitleBarWidget(new QWidget); headerDockWidget->setWidget(headerWidget); this->addDockWidget(Qt::TopDockWidgetArea,headerDockWidget); // Right Panel Widget rightPanelWidget = new QWidget; rightPanelWidget->setObjectName("rightPanelWidget"); rightPanelWidget->setFixedWidth(213); rightPanelWidget->setFixedHeight(481); QDockWidget* rightDockWidget = new QDockWidget(this); rightDockWidget->setObjectName("rightDockWidget"); rightDockWidget->setFloating(false); rightDockWidget->setTitleBarWidget(new QWidget); rightDockWidget->setWidget(rightPanelWidget); this->addDockWidget(Qt::RightDockWidgetArea,rightDockWidget); // Set geometry for each button at fixed place. int y_aix = 8; int x_aix = 15; int button_height = 58; int button_width = 183; int spacing = 1 ; QPushButton* homeButton = new QPushButton(rightPanelWidget); homeButton->setObjectName("0_toolButton"); homeButton->setGeometry(x_aix,y_aix,button_width,button_height); homeButton->setStyleSheet("QPushButton {background-image: url(:/images/home.png);background-color: transparent;} QPushButton:hover {background-image: url(:/images/home-hover.png);background-color: transparent;} QPushButton:pressed,QPushButton:checked {background-image: url(:/images/home-checked.png);background-color: transparent;}"); homeButton->setCheckable(true); homeButton->setChecked(true); homeButton->setToolTip("الرئيسية"); homeButton->setStatusTip("البداية لحاجب ويمكنك من خلالها التحكم في عمل خدمات حاحب على كل المستخدمين بالاضافة الى خيارات اخرى ..."); connect(homeButton,SIGNAL(clicked()),signalMapper,SLOT(map())); signalMapper->setMapping(homeButton,Home); y_aix += button_height + spacing; QPushButton* userSettingsButton = new QPushButton(rightPanelWidget); userSettingsButton->setObjectName("1_toolButton"); userSettingsButton->setGeometry(x_aix,y_aix,button_width,button_height); userSettingsButton->setStyleSheet("QPushButton {background-image: url(:/images/userSettings.png);background-color: transparent;} QPushButton:hover {background-image: url(:/images/userSettings-hover.png);background-color: transparent;} QPushButton:pressed,QPushButton:checked {background-image: url(:/images/userSettings-checked.png);background-color: transparent;}"); userSettingsButton->setCheckable(true); userSettingsButton->setToolTip("إعدادات المستخدم"); userSettingsButton->setStatusTip("إعدادات المستخدم تمكنك من تفعيل او تعطيل خدمات حاجب لمستخدم ما ..."); connect(userSettingsButton,SIGNAL(clicked()),signalMapper,SLOT(map())); signalMapper->setMapping(userSettingsButton,UserSettings); y_aix += button_height + spacing; QPushButton* serviceLogButton = new QPushButton(rightPanelWidget); serviceLogButton->setObjectName("2_toolButton"); serviceLogButton->setGeometry(x_aix,y_aix,button_width,button_height); serviceLogButton->setStyleSheet("QPushButton {background-image: url(:/images/userLogs.png);background-color: transparent;} QPushButton:hover {background-image: url(:/images/userLogs-hover.png);background-color: transparent;} QPushButton:pressed,QPushButton:checked {background-image: url(:/images/userLogs-checked.png);background-color: transparent;}"); serviceLogButton->setCheckable(true); serviceLogButton->setToolTip("سجلات المستخدمين"); serviceLogButton->setStatusTip("من خلال السجلات يمكنك متابعة كافة الأحداث لكل المستخدمين ..."); connect(serviceLogButton,SIGNAL(clicked()),signalMapper,SLOT(map())); signalMapper->setMapping(serviceLogButton,ServiceLog); y_aix += button_height + spacing; QPushButton* screenshotMonitorButton = new QPushButton(rightPanelWidget); screenshotMonitorButton->setObjectName("3_toolButton"); screenshotMonitorButton->setGeometry(x_aix,y_aix,button_width,button_height); screenshotMonitorButton->setStyleSheet("QPushButton {background-image: url(:/images/screenshotsMonitor.png);background-color: transparent;} QPushButton:hover {background-image: url(:/images/screenshotsMonitor-hover.png);background-color: transparent;} QPushButton:pressed,QPushButton:checked {background-image: url(:/images/screenshotsMonitor-checked.png);background-color: transparent;}"); screenshotMonitorButton->setCheckable(true); screenshotMonitorButton->setToolTip("مراقبة الشاشة"); screenshotMonitorButton->setStatusTip("مشاهدة لقطات الشاشة لكل المستخدمين والتحكم بوقت أخذ اللقطات ..."); connect(screenshotMonitorButton,SIGNAL(clicked()),signalMapper,SLOT(map())); signalMapper->setMapping(screenshotMonitorButton,ScreenshotMonitor); y_aix += button_height + spacing; QPushButton* surfeTimeButton = new QPushButton(rightPanelWidget); surfeTimeButton->setObjectName("4_toolButton"); surfeTimeButton->setGeometry(x_aix,y_aix,button_width,button_height); surfeTimeButton->setStyleSheet("QPushButton {background-image: url(:/images/browseTime.png);background-color: transparent;} QPushButton:hover {background-image: url(:/images/browseTime-hover.png);background-color: transparent;} QPushButton:pressed,QPushButton:checked {background-image: url(:/images/browseTime-checked.png);background-color: transparent;}"); surfeTimeButton->setCheckable(true); surfeTimeButton->setToolTip("زمن التصفح"); surfeTimeButton->setStatusTip("تحديد وقت تصفح الاتنرنت لكل مستخدم لكافة أيام الأسبوع ..."); connect(surfeTimeButton,SIGNAL(clicked()),signalMapper,SLOT(map())); signalMapper->setMapping(surfeTimeButton,SurfTime); y_aix += button_height + spacing; QPushButton* websiteLockButton = new QPushButton(rightPanelWidget); websiteLockButton->setObjectName("5_toolButton"); websiteLockButton->setGeometry(x_aix,y_aix,button_width,button_height); websiteLockButton->setStyleSheet("QPushButton {background-image: url(:/images/websiteLock.png);background-color: transparent;} QPushButton:hover {background-image: url(:/images/websiteLock-hover.png);background-color: transparent;} QPushButton:pressed,QPushButton:checked {background-image: url(:/images/websiteLock-checked.png);background-color: transparent;}"); websiteLockButton->setCheckable(true); websiteLockButton->setToolTip("حظر المواقع"); websiteLockButton->setStatusTip("اضافة وازالة موقع من قائمة المواقع المحظورة ..."); connect(websiteLockButton,SIGNAL(clicked()),signalMapper,SLOT(map())); signalMapper->setMapping(websiteLockButton,WebsiteLocker); y_aix += button_height + spacing; QPushButton* programLockButton = new QPushButton(rightPanelWidget); programLockButton->setObjectName("6_toolButton"); programLockButton->setGeometry(x_aix,y_aix,button_width,button_height); programLockButton->setStyleSheet("QPushButton {background-image: url(:/images/programLock.png);background-color: transparent;} QPushButton:hover {background-image: url(:/images/programLock-hover.png);background-color: transparent;} QPushButton:pressed,QPushButton:checked {background-image: url(:/images/programLock-checked.png);background-color: transparent;}"); programLockButton->setCheckable(true); programLockButton->setToolTip("حظر البرامج"); programLockButton->setStatusTip("اضافة وازالة برنامج من قائمة البرامج المحظورة ..."); connect(programLockButton,SIGNAL(clicked()),signalMapper,SLOT(map())); signalMapper->setMapping(programLockButton,ProgramLocker); connect(signalMapper,SIGNAL(mapped(int)),this,SLOT(setCurrentWindow(int))); }
MainWindow::MainWindow() { setupUi(this); // add window for tool parameters QDockWidget *dockWidget_toolParams = new QDockWidget(this); dockWidget_toolParams->setWindowTitle("Parameters"); QWidget *dockWidgetContent_toolParams = new QWidget(); dockWidget_toolParams->setWidget(dockWidgetContent_toolParams); QGridLayout * gridLayout_toolParams = new QGridLayout(dockWidgetContent_toolParams); int indRow=1; QDoubleSpinBox * radiusSpinBox = addDoubleParameter("radius", dockWidgetContent_toolParams, gridLayout_toolParams, indRow); QSpinBox * nbPointsSpinBox = addIntParameter("nb points", dockWidgetContent_toolParams, gridLayout_toolParams, indRow); QSpacerItem * verticalSpacer = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); //QPushButton * pushButton_ok = new QPushButton("OK", dockWidgetContent_toolParams); int indCol=0, rowSpan=1, colSpan=1; //gridLayout_toolParams->addWidget(pushButton_ok,indRow, indCol, rowSpan, 2); //indRow++; gridLayout_toolParams->addItem(verticalSpacer, indRow, indCol, rowSpan, colSpan); addDockWidget(static_cast<Qt::DockWidgetArea>(1), dockWidget_toolParams); //QMainWindow::splitDockWidget(dockWidget_toolParams, layersWidget, static_cast<Qt::Orientation>(2)); m_matParametersView = new MaterialParametersView(); setCentralWidget(m_matParametersView); m_reducedCoordinatesView = new ReducedCoordinatesView(); QDockWidget *dockWidget = new QDockWidget(this); dockWidget->setWidget(m_reducedCoordinatesView); //dockWidget->setFeatures( QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetClosable); dockWidget->setObjectName(QString::fromUtf8("family plot")); dockWidget->setVisible(true); addDockWidget(static_cast<Qt::DockWidgetArea>(2), dockWidget); dockWidget->setFloating(true); dockWidget->setAllowedAreas(Qt::NoDockWidgetArea); setAcceptDrops(true); std::vector<QString> materialParameterStrings((int)exProject::UndefinedType); materialParameterStrings[exProject::EXType] = "EX"; materialParameterStrings[exProject::EYType] = "EY"; materialParameterStrings[exProject::EZType] = "EZ"; materialParameterStrings[exProject::NuXYType] = "NuXY"; materialParameterStrings[exProject::NuXZType] = "NuXZ"; materialParameterStrings[exProject::NuYZType] = "NuYZ"; materialParameterStrings[exProject::MuXYType] = "MuXY"; materialParameterStrings[exProject::MuXZType] = "MuXZ"; materialParameterStrings[exProject::MuYZType] = "MuYZ"; materialParameterStrings[exProject::DensityType] = "Density"; materialParameterStrings[exProject::StrengthType] = "Strength"; addMaterialParameterOptions(*m_x_comboBox, materialParameterStrings); addMaterialParameterOptions(*m_y_comboBox, materialParameterStrings); addMaterialParameterOptions(*m_z_comboBox, materialParameterStrings); addMaterialParameterOptions(*m_col_comboBox, materialParameterStrings); m_action2D->setChecked(true); m_actionRegionSelection->setChecked(false); std::vector<QString> typeStrings; typeStrings.push_back("Cubic"); typeStrings.push_back("Orthotropic"); addMaterialParameterOptions(*m_type_comboBox, typeStrings); m_x_comboBox->setCurrentIndex((int)exProject::EXType); m_y_comboBox->setCurrentIndex((int)exProject::NuXYType); m_z_comboBox->setCurrentIndex((int)exProject::DensityType); m_col_comboBox->setCurrentIndex((int)exProject::MuXYType); m_project = new exProject(); m_project->setFileDirectory("..//..//Output//"); setDim(); setType(); setParamToVisualize(0, m_x_comboBox->currentIndex()); setParamToVisualize(1, m_y_comboBox->currentIndex()); setParamToVisualize(2, m_z_comboBox->currentIndex()); setParamToVisualize(3, m_col_comboBox->currentIndex()); m_matParametersView->setProject(m_project); m_materialStructureView->setProject(m_project); m_reducedCoordinatesView->setProject(m_project); connect(radiusSpinBox, SIGNAL(valueChanged(double)), m_matParametersView, SLOT(onRadiusValueChanged(double))); connect(nbPointsSpinBox, SIGNAL(valueChanged(int)), m_matParametersView, SLOT(onNbPointsValueChanged(int))); }