[Uml-devel] KDE/kdesdk/umbrello/umbrello
Andi Fischer
andi.fischer at hispeed.ch
Mon Aug 16 11:25:05 UTC 2010
SVN commit 1164268 by fischer:
Save the opened diagrams (tabs) in the xmi and reset this state at loading the model.
M +5 -4 uml.cpp
M +10 -9 umldoc.cpp
M +15 -1 umlview.cpp
M +9 -1 umlview.h
--- trunk/KDE/kdesdk/umbrello/umbrello/uml.cpp #1164267:1164268
@@ -1636,8 +1636,7 @@
foreach (UMLView *view, views) {
m_viewStack->removeWidget(view);
- m_tabWidget->addTab(view, view->getName());
- int tabIndex = m_tabWidget->indexOf(view);
+ int tabIndex = m_tabWidget->addTab(view, view->getName());
m_tabWidget->setTabIcon(tabIndex, Icon_Utils::iconSet(view->getType()));
m_tabWidget->setTabToolTip(tabIndex, view->getName());
}
@@ -2381,6 +2380,7 @@
setCurrentView(view);
}
m_tabWidget->removeTab(m_tabWidget->indexOf(view));
+ view->setIsOpen(false);
}
}
@@ -2560,8 +2560,8 @@
Settings::OptionState optionState = Settings::getOptionState();
if (optionState.generalState.tabdiagrams) {
int tabIndex = m_tabWidget->indexOf(view);
- if (tabIndex < 0) {
- m_tabWidget->addTab(view, view->getName());
+ if ((tabIndex < 0) && (view->isOpen())) {
+ tabIndex = m_tabWidget->addTab(view, view->getName());
m_tabWidget->setTabIcon(tabIndex, Icon_Utils::iconSet(view->getType()));
m_tabWidget->setTabToolTip(tabIndex, view->getName());
}
@@ -2580,6 +2580,7 @@
if (lvitem) {
m_listView->setCurrentItem(lvitem);
}
+ uDebug() << "name=" << view->getName() << ", isOpen=" << view->isOpen();
}
/**
--- trunk/KDE/kdesdk/umbrello/umbrello/umldoc.cpp #1164267:1164268
@@ -361,7 +361,6 @@
*/
bool UMLDoc::newDocument()
{
- uDebug() << "*******************************";
closeDocument();
UMLApp::app()->setCurrentView(NULL);
m_doc_url.setFileName(i18n("Untitled"));
@@ -410,9 +409,7 @@
// changed to true to block recording of changes in redo-buffer
m_bLoading = true;
QString tmpfile;
- KIO::NetAccess::download( url, tmpfile
- , UMLApp::app()
- );
+ KIO::NetAccess::download(url, tmpfile, UMLApp::app());
QFile file( tmpfile );
if ( !file.exists() ) {
KMessageBox::error(0, i18n("The file %1 does not exist.", url.pathOrUrl()), i18n("Load Error"));
@@ -1370,15 +1367,19 @@
void UMLDoc::changeCurrentView(Uml::IDType id)
{
UMLApp* pApp = UMLApp::app();
- UMLView* w = findView(id);
- if (w) {
- pApp->setCurrentView(w);
- emit sigDiagramChanged(w->getType());
+ UMLView* view = findView(id);
+ if (view) {
+ view->setIsOpen(true);
+ pApp->setCurrentView(view);
+ emit sigDiagramChanged(view->getType());
pApp->setDiagramMenuItemsState( true );
setModified(true);
- }
emit sigCurrentViewChanged();
}
+ else {
+ uWarning() << "New current view was not found!";
+ }
+}
/**
* Deletes a diagram from the current file.
--- trunk/KDE/kdesdk/umbrello/umbrello/umlview.cpp #1164267:1164268
@@ -120,6 +120,7 @@
m_bUseSnapToGrid = false;
m_bUseSnapComponentSizeToGrid = false;
m_bShowSnapGrid = false;
+ m_isOpen = true;
m_nSnapX = 10;
m_nSnapY = 10;
m_nZoom = 100;
@@ -1952,7 +1953,6 @@
}
}
-
void UMLView::removeAllWidgets()
{
// Remove widgets.
@@ -3004,6 +3004,16 @@
m_Options.classState.showOpSig = bShowOpSig;
}
+bool UMLView::isOpen() const
+{
+ return m_isOpen;
+}
+
+void UMLView::setIsOpen(bool isOpen)
+{
+ m_isOpen = isOpen;
+}
+
/**
* Sets the zoom of the diagram.
*/
@@ -3154,6 +3164,7 @@
viewElement.setAttribute("zoom", m_nZoom);
viewElement.setAttribute("canvasheight", m_nCanvasHeight);
viewElement.setAttribute("canvaswidth", m_nCanvasWidth);
+ viewElement.setAttribute("isopen", isOpen());
//now save all the widgets
QDomElement widgetElement = qDoc.createElement("widgets");
@@ -3265,6 +3276,9 @@
QString width = qElement.attribute("canvaswidth", QString("%1").arg(UMLView::defaultCanvasSize));
m_nCanvasWidth = width.toInt();
+ QString isOpen = qElement.attribute("isopen", "1");
+ m_isOpen = (bool)isOpen.toInt();
+
int nType = type.toInt();
if (nType == -1 || nType >= 400) {
// Pre 1.5.5 numeric values
--- trunk/KDE/kdesdk/umbrello/umbrello/umlview.h #1164267:1164268
@@ -4,7 +4,7 @@
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
- * copyright (C) 2002-2009 *
+ * copyright (C) 2002-2010 *
* Umbrello UML Modeller Authors <uml-devel at uml.sf.net> *
***************************************************************************/
@@ -355,6 +355,9 @@
return m_MessageList;
}
+ bool isOpen() const;
+ void setIsOpen(bool isOpen);
+
// End of accessors and methods that only deal with loaded/saved data
////////////////////////////////////////////////////////////////////////
@@ -1032,6 +1035,11 @@
bool m_bShowSnapGrid;
/**
+ * Determines whether the view is shown to the user, i.e. opened in a tab.
+ */
+ bool m_isOpen;
+
+ /**
* The zoom level in percent, default 100
*/
int m_nZoom;
More information about the umbrello-devel
mailing list