[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [umbrello/_associationline_refactoring_] umbrello: Patch from Ralf Habacker applied:
From: Andi Fischer <andi.fischer () hispeed ! ch>
Date: 2013-07-31 22:50:34
Message-ID: E1V4fE2-0005iF-2G () scm ! kde ! org
[Download RAW message or body]
Git commit f788d6ce93f0f254858580acd4c01d1e3d3f16c1 by Andi Fischer.
Committed on 31/07/2013 at 22:47.
Pushed by fischer into branch '_associationline_refactoring_'.
Patch from Ralf Habacker applied:
- save to and load from xmi-file the layout of the association line
- layout selection in popup menu changed to checked items.
M +24 -8 umbrello/listpopupmenu.cpp
M +3 -2 umbrello/listpopupmenu.h
M +1 -1 umbrello/version.h
M +30 -1 umbrello/widgets/associationline.cpp
M +5 -3 umbrello/widgets/associationline.h
http://commits.kde.org/umbrello/f788d6ce93f0f254858580acd4c01d1e3d3f16c1
diff --git a/umbrello/listpopupmenu.cpp b/umbrello/listpopupmenu.cpp
index 54ea367..48a8412 100644
--- a/umbrello/listpopupmenu.cpp
+++ b/umbrello/listpopupmenu.cpp
@@ -4,7 +4,7 @@
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
- * copyright (C) 2002-2012 *
+ * copyright (C) 2002-2013 *
* Umbrello UML Modeller Authors <uml-devel@uml.sf.net> *
***************************************************************************/
@@ -13,6 +13,7 @@
// app includes
#include "activitywidget.h"
+#include "associationline.h"
#include "category.h"
#include "classifier.h"
#include "classifierwidget.h"
@@ -902,10 +903,10 @@ void ListPopupMenu::insertAssociationItem(MenuType mt)
insert(mt_Add_Point, Icon_Utils::SmallIcon(Icon_Utils::it_Add_Point), \
i18n("Add Point")); if (w->isPointRemovable())
insert(mt_Delete_Point, \
Icon_Utils::SmallIcon(Icon_Utils::it_Delete_Point), i18n("Delete Point")); + \
addSeparator(); + insertSubMenuLayout(w->associationLine());
}
addSeparator();
- insertSubMenuLayout();
- addSeparator();
insert(mt_Delete);
switch(mt) {
@@ -948,13 +949,28 @@ void ListPopupMenu::insertAssociationTextItem(const QString \
&label, MenuType mt) /**
* Inserts a sub menu for association layouts.
*/
-void ListPopupMenu::insertSubMenuLayout()
+void ListPopupMenu::insertSubMenuLayout(AssociationLine *associationLine)
{
KMenu* layout = new KMenu(i18nc("Layout menu", "Layout"), this);
- insert(mt_LayoutDirect, layout, i18n("Direct"));
- insert(mt_LayoutSpline, layout, i18n("Spline"));
- insert(mt_LayoutOrthogonal, layout, i18n("Orthogonal"));
- insert(mt_LayoutPolyline, layout, i18n("Polyline"));
+ insert(mt_LayoutDirect, layout, i18n("Direct"), true);
+ insert(mt_LayoutSpline, layout, i18n("Spline"), true);
+ insert(mt_LayoutOrthogonal, layout, i18n("Orthogonal"), true);
+ insert(mt_LayoutPolyline, layout, i18n("Polyline"), true);
+ switch(associationLine->layout()) {
+ case AssociationLine::Direct:
+ m_actions[mt_LayoutDirect]->setChecked(true);
+ break;
+ case AssociationLine::Orthogonal:
+ m_actions[mt_LayoutOrthogonal]->setChecked(true);
+ break;
+ case AssociationLine::Spline:
+ m_actions[mt_LayoutSpline]->setChecked(true);
+ break;
+ case AssociationLine::Polyline:
+ default:
+ m_actions[mt_LayoutPolyline]->setChecked(true);
+ break;
+ }
addMenu(layout);
}
diff --git a/umbrello/listpopupmenu.h b/umbrello/listpopupmenu.h
index 0d70cfb..d9d0b64 100644
--- a/umbrello/listpopupmenu.h
+++ b/umbrello/listpopupmenu.h
@@ -20,9 +20,10 @@
#include <QHash>
-class UMLView;
+class AssociationLine;
class ClassifierWidget;
class UMLCategory;
+class UMLView;
/**
* A popup menu that depending on what type is set to will
@@ -280,7 +281,7 @@ private:
void insertContainerItems(bool folderAndDiagrams);
void insertAssociationItem(MenuType mt);
void insertAssociationTextItem(const QString &label, MenuType mt);
- void insertSubMenuLayout();
+ void insertSubMenuLayout(AssociationLine *associationLine);
void insertSubmodelAction();
void insertLayoutItems(UMLView *view);
diff --git a/umbrello/version.h b/umbrello/version.h
index 27d4c5b..3c94e86 100644
--- a/umbrello/version.h
+++ b/umbrello/version.h
@@ -27,6 +27,6 @@ inline QByteArray umbrelloVersion()
}
// Update this version when changing the XMI file format
-#define XMI_FILE_VERSION "1.6.1"
+#define XMI_FILE_VERSION "1.6.2"
#endif
diff --git a/umbrello/widgets/associationline.cpp \
b/umbrello/widgets/associationline.cpp index c8e3216..21d5a0d 100644
--- a/umbrello/widgets/associationline.cpp
+++ b/umbrello/widgets/associationline.cpp
@@ -300,6 +300,9 @@ void AssociationLine::dumpPoints()
*/
bool AssociationLine::loadFromXMI(QDomElement &qElement)
{
+ QString layout = qElement.attribute("layout", "polyline");
+ m_layout = fromString(layout);
+
QDomNode node = qElement.firstChild();
m_points.clear();
@@ -352,6 +355,7 @@ void AssociationLine::saveToXMI(QDomDocument &qDoc, QDomElement \
&qElement) {
QPointF point = m_associationWidget->mapToScene(startPoint());
QDomElement lineElement = qDoc.createElement("linepath");
+ lineElement.setAttribute("layout", toString(m_layout));
QDomElement startElement = qDoc.createElement("startpoint");
startElement.setAttribute("startx", point.x());
startElement.setAttribute("starty", point.y());
@@ -921,14 +925,38 @@ QString AssociationLine::toString(LayoutType layout)
}
/**
+ * Convert string to enum LayoutType.
+ */
+AssociationLine::LayoutType AssociationLine::fromString(const QString &layout)
+{
+ if (layout == "Direct")
+ return Direct;
+ if (layout == "Spline")
+ return Spline;
+ if (layout == "Orthogonal")
+ return Orthogonal;
+ return Polyline;
+}
+
+/**
+ * Return the layout type of the association line.
+ * @return the currently used layout
+ */
+AssociationLine::LayoutType AssociationLine::layout() const
+{
+ return m_layout;
+}
+
+/**
* Set the layout type of the association line.
* @param layout the desired layout to set
*/
void AssociationLine::setLayout(LayoutType layout)
{
+ prepareGeometryChange();
m_layout = layout;
DEBUG(DBG_SRC) << "new layout = " << toString(m_layout);
- update();
+ alignSymbols();
}
/**
@@ -1101,6 +1129,7 @@ void AssociationLine::paint(QPainter* painter, const \
QStyleOptionGraphicsItem* o painter->setPen(p);
painter->setBrush(Qt::NoBrush);
painter->drawPath(shape());
+ painter->drawRect(shape().boundingRect());
}
}
diff --git a/umbrello/widgets/associationline.h b/umbrello/widgets/associationline.h
index 5d8274e..89b83c0 100644
--- a/umbrello/widgets/associationline.h
+++ b/umbrello/widgets/associationline.h
@@ -107,13 +107,14 @@ class AssociationLine : public QGraphicsObject
Q_ENUMS(LayoutType)
public:
enum LayoutType {
- Direct,
- Spline,
+ Direct = 1,
Orthogonal,
- Polyline
+ Polyline,
+ Spline
};
static QString toString(LayoutType layout);
+ static LayoutType fromString(const QString& layout);
explicit AssociationLine(AssociationWidget *association);
virtual ~AssociationLine();
@@ -153,6 +154,7 @@ public:
QRectF boundingRect() const;
QPainterPath shape() const;
+ LayoutType layout() const;
void setLayout(LayoutType layout);
void mousePressEvent(QGraphicsSceneMouseEvent *event);
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic