Exemplo n.º 1
0
/**
 * 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");
}
Exemplo n.º 2
0
/**
 * 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");
}
Exemplo n.º 4
0
/**
 * 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();
            }
        }
    }
}