[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