diff --git a/src/gui/FWWindow.cpp b/src/gui/FWWindow.cpp index c57e2015b..bc9a5665d 100644 --- a/src/gui/FWWindow.cpp +++ b/src/gui/FWWindow.cpp @@ -172,7 +172,8 @@ FWWindow::FWWindow(): m_space(0), m_space = new QMdiArea(this); setCentralWidget(m_space); - newProjectPanel(); + ProjectPanel *proj = newProjectPanel(); + showSub(proj); setSafeMode(false); setStartupFileName(""); @@ -209,19 +210,23 @@ FWWindow::~FWWindow() ProjectPanel *FWWindow::newProjectPanel() { - QMdiSubWindow *sub = new QMdiSubWindow; ProjectPanel *projectW = new ProjectPanel(m_space); projectW->initMain(this); + return projectW; +} + +void FWWindow::showSub(ProjectPanel *projectW) +{ + QMdiSubWindow *sub = new QMdiSubWindow; sub->setWidget(projectW); sub->setAttribute(Qt::WA_DeleteOnClose); m_space->addSubWindow(sub); sub->showMaximized(); QIcon p(":Icons/Firewall/icon-tree"); sub->setWindowIcon(p); - return projectW; } - + ProjectPanel* FWWindow::activeProject() { QMdiSubWindow *w = m_space->currentSubWindow(); @@ -304,6 +309,7 @@ void FWWindow::fileNew() { ProjectPanel *proj = newProjectPanel(); proj->fileNew(); + showSub(proj); } void FWWindow::addToRCSActionSetEn(bool en) @@ -329,7 +335,8 @@ void FWWindow::fileSaveActionSetEn(bool en) void FWWindow::fileOpen() { ProjectPanel *proj = newProjectPanel(); - proj->fileOpen(); + if (proj->fileOpen()) + showSub(proj); } void FWWindow::fileClose() diff --git a/src/gui/FWWindow.h b/src/gui/FWWindow.h index a1ebaf11a..697b54e6a 100644 --- a/src/gui/FWWindow.h +++ b/src/gui/FWWindow.h @@ -76,6 +76,7 @@ class FWWindow : public QMainWindow { void clearFirewallTabs(); ProjectPanel* activeProject(); ProjectPanel *newProjectPanel(); + void showSub(ProjectPanel *projectW); public slots: virtual void search(); diff --git a/src/gui/ProjectPanel.cpp b/src/gui/ProjectPanel.cpp index 6d1cdd2fb..ffc9bf8ca 100644 --- a/src/gui/ProjectPanel.cpp +++ b/src/gui/ProjectPanel.cpp @@ -932,7 +932,7 @@ void ProjectPanel::fileNew() mainW->fileSaveActionSetEn( !rcs->isRO() && !rcs->isTemp() ); } -void ProjectPanel::fileOpen() +bool ProjectPanel::fileOpen() { if (fwbdebug) qDebug("ProjectPanel::fileOpen(): start"); @@ -940,13 +940,13 @@ void ProjectPanel::fileOpen() RCSFilePreview fp(this); if ( fd.exec() != QDialog::Accepted ) - return; + return false; bool hasRCS = fp.showFileRLog( fd.selectedFiles()[0] ); if ( (!hasRCS) || (fp.exec() == QDialog::Accepted) ) { - if (!saveIfModified() || !checkin(true)) return; + if (!saveIfModified() || !checkin(true)) return false; if (!systemFile && rcs!=NULL) fileClose(); //try to get simple rcs instance from RCS preview @@ -959,7 +959,7 @@ void ProjectPanel::fileOpen() //if RCS isn't still formed, it's an error if (rcs==NULL) - return; + return false; /*********************************************************************** * TODO : add an option "RCS support" @@ -975,7 +975,7 @@ void ProjectPanel::fileOpen() { /* if there was an exception, abort operation. E.g. RCS::co may throw * exception */ - return; + return false; } /***********************************************************************/ @@ -983,7 +983,9 @@ void ProjectPanel::fileOpen() showFirewalls( true ); if (rcs->isTemp()) unlink(rcs->getFileName().toLatin1().constData()); + return true; } + return false; } void ProjectPanel::fileClose() diff --git a/src/gui/ProjectPanel.h b/src/gui/ProjectPanel.h index 7824f76b8..d3fdcd4f3 100644 --- a/src/gui/ProjectPanel.h +++ b/src/gui/ProjectPanel.h @@ -274,7 +274,7 @@ public: virtual void fileProp(); virtual void fileNew(); - virtual void fileOpen(); + virtual bool fileOpen(); virtual void fileClose(); virtual void fileSave();