/** * Closes all windows that are editing the given block. */ void QC_DialogFactory::closeEditBlockWindow(RS_Block* block) { RS_DEBUG->print("QC_DialogFactory::closeEditBlockWindow"); QC_ApplicationWindow* appWindow = QC_ApplicationWindow::getAppWindow(); QMdiArea* mdiAreaCAD = appWindow->getMdiArea(); if (mdiAreaCAD!=NULL) { RS_DEBUG->print("QC_DialogFactory::closeEditBlockWindow: workspace found"); QList<QMdiSubWindow*> windows = mdiAreaCAD->subWindowList(); for (int i = 0; i <windows.size(); ++i) { RS_DEBUG->print("QC_DialogFactory::closeEditBlockWindow: window: %d", i); QC_MDIWindow* m = qobject_cast<QC_MDIWindow*>(windows.at(i)->widget()); if (m!=NULL) { RS_DEBUG->print( "QC_DialogFactory::closeEditBlockWindow: got mdi"); if (m->getDocument()==block) { RS_DEBUG->print( "QC_DialogFactory::closeEditBlockWindow: closing mdi"); //m->closeMDI(true, false); m->setAttribute(Qt::WA_DeleteOnClose);//RLZ: to ensure the window is deleted m->close(); } } } } QMdiSubWindow* subWindow=NULL; appWindow->slotWindowActivated(subWindow); RS_DEBUG->print("QC_DialogFactory::closeEditBlockWindow: OK"); }
/** * Provides a new window for editing the active block. */ void QC_DialogFactory::requestEditBlockWindow(RS_BlockList* blockList) { RS_DEBUG->print("QC_DialogFactory::requestEditBlockWindow()"); QC_ApplicationWindow* appWindow = QC_ApplicationWindow::getAppWindow(); QC_MDIWindow* parent = appWindow->getMDIWindow(); if (parent!=NULL) { //RS_BlockList* blist = blockWidget->getBlockList(); if (blockList!=NULL) { RS_Block* blk = blockList->getActive(); if (blk!=NULL) { QC_MDIWindow* w = appWindow->slotFileNew(blk); // the parent needs a pointer to the block window and // vice versa parent->addChildWindow(w); w->getGraphicView()->zoomAuto(false); } } } }
/** * Closes all windows that are editing the given block. */ void QC_DialogFactory::closeEditBlockWindow(RS_Block* block) { RS_DEBUG->print("QC_DialogFactory::closeEditBlockWindow"); QC_ApplicationWindow* appWindow = QC_ApplicationWindow::getAppWindow(); QMdiArea* mdiAreaCAD = appWindow->getMdiArea(); if (mdiAreaCAD==NULL) return; //should not happen RS_DEBUG->print("QC_DialogFactory::closeEditBlockWindow: workspace found"); for (int i = 0; i <mdiAreaCAD->subWindowList().size(); ) { RS_DEBUG->print("QC_DialogFactory::closeEditBlockWindow: window: %d", i); QC_MDIWindow* m = qobject_cast<QC_MDIWindow*>(mdiAreaCAD->subWindowList().at(i)); if(m==NULL) { mdiAreaCAD->removeSubWindow(mdiAreaCAD->subWindowList().at(i)); continue; } RS_DEBUG->print( "QC_DialogFactory::closeEditBlockWindow: got mdi"); if (m->getDocument()==block) { RS_DEBUG->print( "QC_DialogFactory::closeEditBlockWindow: closing mdi"); appWindow->slotFilePrintPreview(false); m->closeMDI(true, false); mdiAreaCAD->removeSubWindow(mdiAreaCAD->subWindowList().at(i)); continue; // m->setAttribute(Qt::WA_DeleteOnClose);//RLZ: to ensure the window is deleted // m->close(); } i++; } //activate a subWindow, bug#3486357 QMdiSubWindow* subWindow=mdiAreaCAD->currentSubWindow(); appWindow->slotWindowActivated(subWindow); RS_DEBUG->print("QC_DialogFactory::closeEditBlockWindow: OK"); }
/** * Provides a new window for editing the active block. */ void QC_DialogFactory::requestEditBlockWindow(RS_BlockList* /*blockList*/) { RS_DEBUG->print("QC_DialogFactory::requestEditBlockWindow()"); QC_ApplicationWindow* appWindow = QC_ApplicationWindow::getAppWindow(); QC_MDIWindow* parent = appWindow->getMDIWindow(); if (parent!=NULL) { //get blocklist from block widget, bug#3497154 RS_BlockList* blist = appWindow->getBlockWidget() -> getBlockList(); if (blist !=NULL) { RS_Block* blk = blist->getActive(); // std::cout<<"QC_DialogFactory::requestEditBlockWindow(): size()="<<((blk==NULL)?0:blk->count() )<<std::endl; if (blk!=NULL) { QC_MDIWindow* w = appWindow->slotFileNew(blk); // the parent needs a pointer to the block window and // vice versa parent->addChildWindow(w); w->getGraphicView()->zoomAuto(false); //update grid settings, bug#3443293 w->getGraphicView()->getGrid()->updatePointArray(); } } } }