]> Shamusworld >> Repos - architektonas/blob - src/mainapp/qc_dialogfactory.cpp
Removed more QC_ madness...
[architektonas] / src / mainapp / qc_dialogfactory.cpp
1 // qc_dialogfactory.cpp
2 //
3 // Part of the Architektonas Project
4 // Originally part of QCad Community Edition by Andrew Mustun
5 // Extensively rewritten and refactored by James L. Hammons
6 // (C) 2010 Underground Software
7 //
8 // JLH = James L. Hammons <jlhamm@acm.org>
9 //
10 // Who  When        What
11 // ---  ----------  -----------------------------------------------------------
12 // JLH  05/17/2010  Added this text. :-)
13 //
14
15 #include "qc_dialogfactory.h"
16
17 #include "applicationwindow.h"
18
19 QC_DialogFactory::QC_DialogFactory(QWidget * parent, QToolBar * ow): QG_DialogFactory(parent, ow)
20 {
21 }
22
23 /*virtual*/ QC_DialogFactory::~QC_DialogFactory()
24 {
25 }
26
27 /**
28  * Provides a new window for editing the active block.
29  */
30 void QC_DialogFactory::requestEditBlockWindow(RS_BlockList * blockList)
31 {
32         RS_DEBUG->print("QC_DialogFactory::requestEditBlockWindow()");
33
34         ApplicationWindow * appWindow = ApplicationWindow::getAppWindow();
35         MDIWindow * parent = appWindow->getMDIWindow();
36
37         if (parent != NULL)
38         {
39                 //RS_BlockList* blist = blockWidget->getBlockList();
40                 if (blockList != NULL)
41                 {
42                         RS_Block * blk = blockList->getActive();
43
44                         if (blk != NULL)
45                         {
46                                 MDIWindow * w = appWindow->slotFileNew(blk);
47                                 // the parent needs a pointer to the block window and
48                                 //   vice versa
49                                 parent->addChildWindow(w);
50                                 w->getGraphicView()->zoomAuto(false);
51                         }
52                 }
53         }
54 }
55
56 /**
57  * Closes all windows that are editing the given block.
58  */
59 void QC_DialogFactory::closeEditBlockWindow(RS_Block * block)
60 {
61         RS_DEBUG->print("QC_DialogFactory::closeEditBlockWindow");
62
63         ApplicationWindow * appWindow = ApplicationWindow::getAppWindow();
64         QMdiArea * workspace = appWindow->getWorkspace();
65
66         if (workspace != NULL)
67         {
68                 RS_DEBUG->print("QC_DialogFactory::closeEditBlockWindow: workspace found");
69
70                 QList<QMdiSubWindow *> windows = workspace->subWindowList();
71
72                 for(int i=0; i<int(windows.count()); ++i)
73                 {
74                         RS_DEBUG->print("QC_DialogFactory::closeEditBlockWindow: window: %d", i);
75                         MDIWindow * m = (MDIWindow *)windows.at(i);
76
77                         if (m != NULL)
78                         {
79                                 RS_DEBUG->print("QC_DialogFactory::closeEditBlockWindow: got mdi");
80
81                                 if (m->getDocument() == block)
82                                 {
83                                         RS_DEBUG->print("QC_DialogFactory::closeEditBlockWindow: closing mdi");
84                                         //m->closeMDI(true, false);
85 //                                      m->close(true);
86                                         m->close();
87                                 }
88                         }
89                 }
90         }
91
92         appWindow->slotWindowActivated(NULL);
93
94         RS_DEBUG->print("QC_DialogFactory::closeEditBlockWindow: OK");
95 }