From: <su...@us...> - 2010-04-27 18:05:04
|
Revision: 3522 http://tora.svn.sourceforge.net/tora/?rev=3522&view=rev Author: subik Date: 2010-04-27 18:04:55 +0000 (Tue, 27 Apr 2010) Log Message: ----------- close buttons in tabs implemented Modified Paths: -------------- trunk/tora/src/todebug.cpp trunk/tora/src/todebug.h trunk/tora/src/tomain.cpp trunk/tora/src/tomain.h trunk/tora/src/toplsqleditor.cpp trunk/tora/src/toplsqleditor.h Modified: trunk/tora/src/todebug.cpp =================================================================== --- trunk/tora/src/todebug.cpp 2010-04-26 05:15:31 UTC (rev 3521) +++ trunk/tora/src/todebug.cpp 2010-04-27 18:04:55 UTC (rev 3522) @@ -2298,7 +2298,13 @@ Editors = new QTabWidget(hsplitter); Editors->setTabPosition(QTabWidget::North); +#if QT_VERSION >= 0x040500 + Editors->setTabsClosable(true); + connect(Editors, SIGNAL(tabCloseRequested(int)), + this, SLOT(closeEditor(int))); +#endif + QToolButton *closeButton = new toPopupButton(Editors); closeButton->setIcon(QPixmap(const_cast<const char**>(close_xpm))); closeButton->setFixedSize(20, 18); @@ -3376,6 +3382,13 @@ closeEditor(editor); } +void toDebug::closeEditor(int ix) +{ + toDebugText * w = qobject_cast<toDebugText*>(Editors->widget(ix)); + assert(w); + closeEditor(w); +} + void toDebug::closeAllEditor() { int editorCount = Editors->count(); Modified: trunk/tora/src/todebug.h =================================================================== --- trunk/tora/src/todebug.h 2010-04-26 05:15:31 UTC (rev 3521) +++ trunk/tora/src/todebug.h 2010-04-27 18:04:55 UTC (rev 3522) @@ -328,6 +328,7 @@ void changeWatch(void); void changeWatch(toTreeWidgetItem *item); void closeEditor(void); + void closeEditor(int); void closeAllEditor(void); }; Modified: trunk/tora/src/tomain.cpp =================================================================== --- trunk/tora/src/tomain.cpp 2010-04-26 05:15:31 UTC (rev 3521) +++ trunk/tora/src/tomain.cpp 2010-04-27 18:04:55 UTC (rev 3522) @@ -120,6 +120,9 @@ Message = new toMessage(this); + // it needs go first due signal/slot connection in it + handleToolsDisplay(); + // setup all QAction objects createActions(); @@ -134,8 +137,6 @@ createDocklets(); - handleToolsDisplay(); - updateRecent(); char buffer[100]; @@ -722,8 +723,15 @@ void toMain::handleToolsDisplay() { #if QT_VERSION >= 0x040400 - if (toConfigurationSingle::Instance().tabbedTools()) + if (toConfigurationSingle::Instance().tabbedTools()) { Workspace->setViewMode(QMdiArea::TabbedView); + // HACK: a workaround for missing QMdiArea feature. Real patch is waiting in th Qt4 bugtracker. + foreach (QTabBar *b, Workspace->findChildren<QTabBar*>()) + { + b->setTabsClosable(true); + connect(b, SIGNAL(tabCloseRequested(int)), this, SLOT(workspaceCloseWindow(int))); + } + } else Workspace->setViewMode(QMdiArea::SubWindowView); #endif @@ -1695,6 +1703,27 @@ } +// HACK: workaround for close button in the tabs. See HACK note near the QMdiArea construction. +void toMain::workspaceCloseWindow(int ix) +{ + QMdiSubWindow * w = Workspace->subWindowList()[ix]; + assert(w); + if (w != Workspace->activeSubWindow()) + { + Workspace->setActiveSubWindow(w); + } + // HACK in HACK: toWorksheet's behaviour is strange here. + // it gets a QObject 0x0 pointer in this case. So this + // will handle it. + // Let's hope the MDI patch will be applied ASAP... + if (!Workspace->activeSubWindow()) + { + w->close(); + } + Workspace->closeActiveSubWindow(); +} + + void toMain::checkCaching(void) { int num = 0; Modified: trunk/tora/src/tomain.h =================================================================== --- trunk/tora/src/tomain.h 2010-04-26 05:15:31 UTC (rev 3521) +++ trunk/tora/src/tomain.h 2010-04-27 18:04:55 UTC (rev 3522) @@ -652,6 +652,8 @@ * */ void showMessageImpl(const QString &str, bool save, bool log); + + void workspaceCloseWindow(int); }; /** Get a pointer to the main window Modified: trunk/tora/src/toplsqleditor.cpp =================================================================== --- trunk/tora/src/toplsqleditor.cpp 2010-04-26 05:15:31 UTC (rev 3521) +++ trunk/tora/src/toplsqleditor.cpp 2010-04-27 18:04:55 UTC (rev 3522) @@ -245,6 +245,11 @@ splitter->addWidget(Objects); Editors = new QTabWidget(this); +#if QT_VERSION >= 0x040500 + Editors->setTabsClosable(true); + connect(Editors, SIGNAL(tabCloseRequested(int)), + this, SLOT(closeEditor(int))); +#endif splitter->addWidget(Editors); Editors->setTabPosition(QTabWidget::North); @@ -576,6 +581,13 @@ closeEditor(editor); } +void toPLSQLEditor::closeEditor(int ix) +{ + toPLSQLWidget * w = qobject_cast<toPLSQLWidget*>(Editors->widget(ix)); + assert(w); + closeEditor(w); +} + void toPLSQLEditor::closeAllEditor() { int editorCount = Editors->count(); @@ -720,4 +732,5 @@ currentEditor()->editor()->setErrors(Observations, false); currentEditor()->applyResult("STATIC", Observations); currentEditor()->resizeResults(); -} // checkCode \ No newline at end of file +} // checkCode + Modified: trunk/tora/src/toplsqleditor.h =================================================================== --- trunk/tora/src/toplsqleditor.h 2010-04-26 05:15:31 UTC (rev 3521) +++ trunk/tora/src/toplsqleditor.h 2010-04-27 18:04:55 UTC (rev 3522) @@ -138,6 +138,7 @@ void newSheet(void); void windowActivated(QMdiSubWindow *w); void closeEditor(void); + void closeEditor(int); void closeAllEditor(void); void checkCode(void); }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |