Commit d55c6d29 authored by Ralf Habacker's avatar Ralf Habacker
Browse files

Add support for sequence diagrams to destroy an object

For the new message type a corresponding icon has been added to the
toolbar and a corresponding entry to the context menu.

The version of the xmi file was increased because a new value was
added to the xml tag for message types.

The api of the class SeqLineWidget for setting the line color was
unified by adding a method setLineColorCmd().

BUG:418249
FIXED-IN:2.30.80 (KDE releases 20.03.80)
parent b2612d8a
......@@ -222,7 +222,8 @@ namespace Uml
Asynchronous,
Creation,
Lost,
Found
Found,
Destroy,
};
QString toString(Enum item);
Enum fromString(const QString& item);
......
......@@ -316,6 +316,7 @@ QString toString(IconType type)
case it_Message_Async: return QLatin1String("umbr-message-asynchronous");
case it_Message_Asynchronous: return QLatin1String("umbr-coll-message-asynchronous");
case it_Message_Creation: return QLatin1String("umbr-message-creation");
case it_Message_Destroy: return QLatin1String("umbr-message-destroy");
case it_Message_Found: return QLatin1String("umbr-message-found");
case it_Message_Lost: return QLatin1String("umbr-message-lost");
case it_Message_Sync: return QLatin1String("umbr-message-synchronous");
......
......@@ -179,6 +179,7 @@ namespace Icon_Utils {
it_Enum_Literal,
it_State_Activity,
it_Message_Creation,
it_Message_Destroy,
it_Message_Sync,
it_Message_Async,
it_Message_Found,
......
......@@ -181,5 +181,7 @@
<file>pics/cursor-subsystem.png</file>
<file>pics/cursor-umbr-message-creation.png</file>
<file>pics/umbr-message-creation.png</file>
<file>pics/cursor-umbr-message-destroy.png</file>
<file>pics/umbr-message-destroy.png</file>
</qresource>
</RCC>
......@@ -196,6 +196,7 @@ void ListPopupMenu::insert(const MenuType m, KMenu* menu)
case mt_ForeignKeyConstraint: m_actions[m] = menu->addAction(Icon_Utils::SmallIcon(Icon_Utils::it_Constraint_ForeignKey), i18n("Foreign Key Constraint...")); break;
case mt_Fork: m_actions[m] = menu->addAction(Icon_Utils::SmallIcon(Icon_Utils::it_Fork_Join), i18n("Fork")); break;
case mt_GoToStateDiagram: m_actions[m] = menu->addAction(Icon_Utils::SmallIcon(Icon_Utils::it_Remove), i18n("Go to state diagram")); break;
case mt_Hide_Destruction_Box: m_actions[m] = menu->addAction(Icon_Utils::SmallIcon(Icon_Utils::it_Message_Destroy), i18n("Hide destruction box")); break;
case mt_Import_Class: m_actions[m] = menu->addAction(Icon_Utils::BarIcon(Icon_Utils::it_Import_File), i18n("Import File(s)...")); break;
case mt_Import_Project: m_actions[m] = menu->addAction(Icon_Utils::BarIcon(Icon_Utils::it_Import_Project), i18n("Import from Directory...")); break;
case mt_Import_from_File: m_actions[m] = menu->addAction(Icon_Utils::SmallIcon(Icon_Utils::it_Import_File), i18n("from file...")); break;
......@@ -213,6 +214,7 @@ void ListPopupMenu::insert(const MenuType m, KMenu* menu)
case mt_Logical_Folder: m_actions[m] = menu->addAction(Icon_Utils::BarIcon(Icon_Utils::it_Folder), i18n("Folder")); break;
case mt_MessageAsynchronous: m_actions[m] = menu->addAction(Icon_Utils::SmallIcon(Icon_Utils::it_Message_Async), i18n("Asynchronous Message")); break;
case mt_MessageCreation: m_actions[m] = menu->addAction(Icon_Utils::SmallIcon(Icon_Utils::it_Message_Creation), i18n("Creation Message")); break;
case mt_MessageDestroy: m_actions[m] = menu->addAction(Icon_Utils::SmallIcon(Icon_Utils::it_Message_Destroy), i18n("Destroy Message")); break;
case mt_MessageFound: m_actions[m] = menu->addAction(Icon_Utils::SmallIcon(Icon_Utils::it_Message_Found), i18n("Found Message")); break;
case mt_MessageLost: m_actions[m] = menu->addAction(Icon_Utils::SmallIcon(Icon_Utils::it_Message_Lost), i18n("Lost Message")); break;
case mt_MessageSynchronous: m_actions[m] = menu->addAction(Icon_Utils::SmallIcon(Icon_Utils::it_Message_Sync), i18n("Synchronous Message")); break;
......@@ -255,6 +257,7 @@ void ListPopupMenu::insert(const MenuType m, KMenu* menu)
case mt_Send_Signal: m_actions[m] = menu->addAction(Icon_Utils::SmallIcon(Icon_Utils::it_Send_Signal), i18n("Send Signal")); break;
case mt_ShallowHistory: m_actions[m] = menu->addAction(Icon_Utils::SmallIcon(Icon_Utils::it_History_Shallow), i18n("Shallow History")); break;
case mt_Show: m_actions[m] = menu->addAction(Icon_Utils::SmallIcon(Icon_Utils::it_Show), i18n("Show")); break;
case mt_Show_Destruction_Box: m_actions[m] = menu->addAction(Icon_Utils::SmallIcon(Icon_Utils::it_Message_Destroy), i18n("Show destruction box")); break;
case mt_State: m_actions[m] = menu->addAction(Icon_Utils::SmallIcon(Icon_Utils::it_State), i18nc("add new state", "State...")); break;
case mt_StateFork: m_actions[m] = menu->addAction(Icon_Utils::SmallIcon(Icon_Utils::it_Fork_State), i18n("Fork")); break;
case mt_StateJoin: m_actions[m] = menu->addAction(Icon_Utils::SmallIcon(Icon_Utils::it_Join), i18n("Join")); break;
......
......@@ -101,6 +101,7 @@ public:
mt_Junction,
mt_MessageAsynchronous,
mt_MessageCreation,
mt_MessageDestroy,
mt_MessageFound,
mt_MessageLost,
mt_MessageSynchronous,
......@@ -145,6 +146,7 @@ public:
// visual properties
mt_Hide_Attribute_Signature_Selection,
mt_Hide_Attributes_Selection, // Unset visual property on multiple widgets
mt_Hide_Destruction_Box,
mt_Hide_NonPublic_Selection, // Could be named "show public only"
mt_Hide_Operation_Signature_Selection,
mt_Hide_Operations_Selection, // Hide operations
......@@ -155,6 +157,7 @@ public:
mt_Show_Attribute_Signature_Selection,
mt_Show_Attributes_Selection, // Set visual property on multiple widgets
mt_Show_Attributes, // Toggle visual property on a widget
mt_Show_Destruction_Box,
mt_Show_Documentation,
mt_Show_NonPublic_Selection, // Could be named "hide public only" (crazy!)
mt_Show_Operation_Signature,
......
......@@ -192,6 +192,7 @@ void UMLScenePopupMenu::insertSubMenuNew(Uml::DiagramType::Enum type, KMenu *men
insert(mt_Object, menu);
if (m_scene->onWidgetLine(m_scene->pos())) {
insert(mt_MessageCreation, menu);
insert(mt_MessageDestroy, menu);
insert(mt_MessageSynchronous, menu);
insert(mt_MessageAsynchronous, menu);
insert(mt_MessageLost, menu);
......
......@@ -307,6 +307,11 @@ void WidgetBasePopupMenu::insertSingleSelectionMenu(WidgetBase* widget)
insertStdItems(true, type);
insert(mt_Rename_Object);
insert(mt_Rename, i18n("Rename Class..."));
if (widget->asObjectWidget() &&
widget->umlScene() &&
widget->umlScene()->isSequenceDiagram()) {
insert(widget->asObjectWidget()->showDestruction() ? mt_Hide_Destruction_Box : mt_Show_Destruction_Box);
}
insert(mt_Change_Font);
insert(mt_Properties);
break;
......
......@@ -103,6 +103,7 @@ set(ICONS
umbr-coll-message-synchronous
umbr-message-asynchronous
umbr-message-creation
umbr-message-destroy
umbr-message-found
umbr-message-lost
umbr-message-synchronous
......@@ -171,6 +172,7 @@ set(CURSOR_ICONS
umbr-coll-message-synchronous
umbr-message-asynchronous
umbr-message-creation
umbr-message-destroy
umbr-message-found
umbr-message-lost
umbr-message-synchronous
......
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg1"
sodipodi:version="0.32"
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
width="22pt"
height="22pt"
sodipodi:docname="umbr-message-destroy.svg"
version="1.1"
inkscape:export-filename="/home/ralf/src/umbrello/umbrello/pics/class-or-package.png"
inkscape:export-xdpi="72.081909"
inkscape:export-ydpi="72.081909">
<metadata
id="metadata3890">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs3">
<linearGradient
id="linearGradient830">
<stop
style="stop-color:#ebffff;stop-opacity:0.0000000;"
offset="0.0000000"
id="stop831" />
<stop
style="stop-color:#fff;stop-opacity:1;"
offset="1"
id="stop832" />
</linearGradient>
<linearGradient
id="linearGradient826">
<stop
style="stop-color:#ffff00;stop-opacity:1;"
offset="0"
id="stop827" />
<stop
style="stop-color:#fff;stop-opacity:1;"
offset="1"
id="stop828" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient830"
id="linearGradient829"
x1="1.5500000"
y1="0.52343750"
x2="0.20422535"
y2="-0.12195122"
spreadMethod="reflect" />
<linearGradient
xlink:href="#linearGradient830"
id="linearGradient834"
x1="-0.31159419"
y1="0.19531250"
x2="0.77536231"
y2="0.94531250" />
<linearGradient
xlink:href="#linearGradient830"
id="linearGradient836" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient830"
id="linearGradient2996"
spreadMethod="reflect"
x1="13.072974"
y1="5.8233799"
x2="2.6438784"
y2="0.8219328"
gradientTransform="scale(1.2660175,0.78987847)"
gradientUnits="userSpaceOnUse" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="22.627417"
inkscape:cx="-2.0706993"
inkscape:cy="14.920186"
inkscape:window-width="1680"
inkscape:window-height="989"
gridtolerance="1.0000000px"
inkscape:window-x="1680"
inkscape:window-y="0"
showgrid="true"
inkscape:window-maximized="1"
inkscape:current-layer="svg1">
<inkscape:grid
id="GridFromPre046Settings"
type="xygrid"
originx="0"
originy="0"
spacingx="1.4222222"
spacingy="1.4222222"
color="#3f3fff"
empcolor="#3f3fff"
opacity="0.15"
empopacity="0.38"
empspacing="5" />
</sodipodi:namedview>
<path
inkscape:connector-curvature="0"
style="font-size:12px;fill:#000000;stroke:#000000;stroke-width:2.4;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="M 5.8617078,4.8277721 23.692358,24.064126 M 5.8617078,24.01324 23.87009,4.8020025"
sodipodi:nodetypes="cccc"
id="path18" />
<use
id="use3817"
xlink:href="#(null)"
x="0"
y="0"
width="27.5"
height="27.5"
transform="translate(-3.0012332,4.7055785)" />
</svg>
......@@ -290,6 +290,7 @@ Uml::AssociationType::Enum ToolBarStateAssociation::getAssociationType()
case WorkToolBar::tbb_Dependency: at = Uml::AssociationType::Dependency; break;
case WorkToolBar::tbb_Containment: at = Uml::AssociationType::Containment; break;
case WorkToolBar::tbb_Seq_Message_Creation:
case WorkToolBar::tbb_Seq_Message_Destroy:
case WorkToolBar::tbb_Seq_Message_Synchronous:
case WorkToolBar::tbb_Seq_Combined_Fragment:
case WorkToolBar::tbb_Seq_Precondition:
......
......@@ -88,6 +88,7 @@ int ToolBarStateFactory::getKey(const WorkToolBar::ToolBar_Buttons &toolbarButto
// Messages
case WorkToolBar::tbb_Seq_Message_Creation: return 2;
case WorkToolBar::tbb_Seq_Message_Destroy: return 2;
case WorkToolBar::tbb_Seq_Message_Synchronous: return 2;
case WorkToolBar::tbb_Seq_Message_Asynchronous: return 2;
case WorkToolBar::tbb_Seq_Message_Found: return 2;
......
......@@ -302,7 +302,10 @@ Uml::SequenceMessage::Enum ToolBarStateMessages::getMessageType()
if (getButton() == WorkToolBar::tbb_Seq_Message_Creation) {
return Uml::SequenceMessage::Creation;
}
if (getButton() == WorkToolBar::tbb_Seq_Message_Synchronous) {
else if (getButton() == WorkToolBar::tbb_Seq_Message_Destroy) {
return Uml::SequenceMessage::Destroy;
}
else if (getButton() == WorkToolBar::tbb_Seq_Message_Synchronous) {
return Uml::SequenceMessage::Synchronous;
}
else if (getButton() == WorkToolBar::tbb_Seq_Message_Found) {
......@@ -311,9 +314,6 @@ Uml::SequenceMessage::Enum ToolBarStateMessages::getMessageType()
else if (getButton() == WorkToolBar::tbb_Seq_Message_Lost) {
return Uml::SequenceMessage::Lost;
}
else if (getButton() == WorkToolBar::tbb_Seq_Message_Creation) {
return Uml::SequenceMessage::Creation;
}
return Uml::SequenceMessage::Asynchronous;
}
......@@ -335,8 +335,12 @@ void ToolBarStateMessages::setupMessageWidget(MessageWidget *message, bool showO
FloatingTextWidget *ft = message->floatingTextWidget();
//TODO cancel doesn't cancel the creation of the message, only cancels setting an operation.
//Shouldn't it cancel also the whole creation?
ft->showOperationDialog();
m_pUMLScene->addWidgetCmd(ft);
if (message->sequenceMessageType() == Uml::SequenceMessage::Destroy) {
message->setOperationText(i18n("destroy"));
} else {
ft->showOperationDialog();
m_pUMLScene->addWidgetCmd(ft);
}
message->setTextPosition();
}
UMLApp::app()->executeCommand(new Uml::CmdCreateWidget(message));
......
......@@ -3316,6 +3316,10 @@ void UMLScene::slotMenuSelection(QAction* action)
m_d->triggerToolBarButton(WorkToolBar::tbb_Seq_Message_Creation);
break;
case ListPopupMenu::mt_MessageDestroy:
m_d->triggerToolBarButton(WorkToolBar::tbb_Seq_Message_Destroy);
break;
case ListPopupMenu::mt_MessageSynchronous:
m_d->triggerToolBarButton(WorkToolBar::tbb_Seq_Message_Synchronous);
break;
......
......@@ -65,7 +65,8 @@ MessageWidget::MessageWidget(UMLScene * scene, ObjectWidget* a, ObjectWidget* b,
if (m_sequenceMessageType == Uml::SequenceMessage::Creation) {
y -= m_pOw[Uml::RoleType::B]->height() / 2;
m_pOw[Uml::RoleType::B]->setY(y);
}
} else if (m_sequenceMessageType == Uml::SequenceMessage::Destroy)
m_pOw[Uml::RoleType::B]->setShowDestruction(true);
updateResizability();
calculateWidget();
y = y < getMinY() ? getMinY() : y;
......@@ -143,6 +144,8 @@ void MessageWidget::init()
*/
MessageWidget::~MessageWidget()
{
if (m_pOw[Uml::RoleType::B] && m_sequenceMessageType == Uml::SequenceMessage::Destroy)
m_pOw[Uml::RoleType::B]->setShowDestruction(false);
}
/**
......@@ -307,6 +310,8 @@ void MessageWidget::paint(QPainter *painter, const QStyleOptionGraphicsItem *opt
paintAsynchronous(painter, option);
} else if (m_sequenceMessageType == Uml::SequenceMessage::Creation) {
paintCreation(painter, option);
} else if (m_sequenceMessageType == Uml::SequenceMessage::Destroy) {
paintDestroy(painter, option);
} else if (m_sequenceMessageType == Uml::SequenceMessage::Lost) {
paintLost(painter, option);
} else if (m_sequenceMessageType == Uml::SequenceMessage::Found) {
......@@ -516,6 +521,10 @@ void MessageWidget::paintCreation(QPainter *painter, const QStyleOptionGraphicsI
UMLWidget::paint(painter, option);
}
void MessageWidget::paintDestroy(QPainter *painter, const QStyleOptionGraphicsItem *option)
{
paintSynchronous(painter, option);
}
/**
* Draws a solid arrow line and a stick arrow head
......@@ -1022,6 +1031,8 @@ void MessageWidget::calculateDimensions()
calculateDimensionsAsynchronous();
} else if (m_sequenceMessageType == Uml::SequenceMessage::Creation) {
calculateDimensionsCreation();
} else if (m_sequenceMessageType == Uml::SequenceMessage::Destroy) {
calculateDimensionsDestroy();
} else if (m_sequenceMessageType == Uml::SequenceMessage::Lost) {
calculateDimensionsLost();
} else if (m_sequenceMessageType == Uml::SequenceMessage::Found) {
......@@ -1135,6 +1146,14 @@ void MessageWidget::calculateDimensionsCreation()
setSize(widgetWidth, widgetHeight);
}
/**
* Calculates and sets the size of the widget for a destroy message.
*/
void MessageWidget::calculateDimensionsDestroy()
{
calculateDimensionsSynchronous();
}
/**
* Calculates and sets the size of the widget for a lost message.
*/
......@@ -1275,6 +1294,8 @@ QSizeF MessageWidget::minimumSize() const
return isSelf() ? QSizeF(width(), 20) : QSizeF(width(), 8);
} else if (m_sequenceMessageType == Uml::SequenceMessage::Creation) {
return QSizeF(width(), 8);
} else if (m_sequenceMessageType == Uml::SequenceMessage::Destroy) {
return QSizeF(width(), 8);
} else if (m_sequenceMessageType == Uml::SequenceMessage::Lost) {
return QSizeF(width(), 10);
} else if (m_sequenceMessageType == Uml::SequenceMessage::Found) {
......
......@@ -115,6 +115,7 @@ public:
void calculateDimensionsSynchronous();
void calculateDimensionsAsynchronous();
void calculateDimensionsCreation();
void calculateDimensionsDestroy();
void calculateDimensionsLost();
void calculateDimensionsFound();
......@@ -169,6 +170,7 @@ protected:
void paintSynchronous(QPainter *painter, const QStyleOptionGraphicsItem *option);
void paintAsynchronous(QPainter *painter, const QStyleOptionGraphicsItem *option);
void paintCreation(QPainter *painter, const QStyleOptionGraphicsItem *option);
void paintDestroy(QPainter *painter, const QStyleOptionGraphicsItem *option);
void paintLost(QPainter *painter, const QStyleOptionGraphicsItem *option);
void paintFound(QPainter *painter, const QStyleOptionGraphicsItem *option);
......
......@@ -631,9 +631,7 @@ void ObjectWidget::setLineColorCmd(const QColor &color)
{
UMLWidget::setLineColorCmd(color);
if (m_pLine) {
QPen pen = m_pLine->pen();
pen.setColor(color);
m_pLine->setPen(pen);
m_pLine->setLineColorCmd(color);
}
}
......
......@@ -114,6 +114,7 @@ private:
bool m_isOnDestructionBox; ///< true when a click occurred on the destruction box
MessageWidgetList m_messages; ///< message widgets with an end on this widget
friend class SeqLineWidget;
};
#endif
......@@ -17,6 +17,7 @@
#include "objectwidget.h"
#include "umlscene.h"
#include "umlview.h"
#include "widgetbasepopupmenu.h"
//qt includes
#include <QPainter>
......@@ -38,7 +39,6 @@ SeqLineWidget::SeqLineWidget(UMLScene *scene, ObjectWidget * pObject)
setPen(QPen(m_pObject->lineColor(), 0, Qt::DashLine));
setZValue(0);
setVisible(true);
m_DestructionBox.line1 = 0;
m_nLengthY = 250;
setupDestructionBox();
}
......@@ -199,3 +199,16 @@ void SeqLineWidget::setEndOfLine(int yPosition)
moveDestructionBox();
m_scene->resizeSceneToItems();
}
void SeqLineWidget::setLineColorCmd(const QColor &color)
{
QPen pen = this->pen();
pen.setColor(color);
setPen(pen);
m_DestructionBox.setLineColorCmd(color);
}
void SeqLineWidget::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
{
m_pObject->contextMenuEvent(event);
}
......@@ -13,6 +13,8 @@
#include <QGraphicsLineItem>
#include <QPen>
class ObjectWidget;
class UMLScene;
......@@ -56,6 +58,7 @@ public:
}
void setEndOfLine(int yPosition);
void setLineColorCmd(const QColor &color);
protected:
void cleanupDestructionBox();
......@@ -66,8 +69,18 @@ protected:
UMLScene* m_scene; ///< scene displayed on
struct DestructionBox {
QGraphicsLineItem * line1;
QGraphicsLineItem * line2;
QGraphicsLineItem * line1{nullptr};
QGraphicsLineItem * line2{nullptr};
void setLineColorCmd(const QColor &color)
{
if (!line1)
return;
QPen pen = line1->pen();
pen.setColor(color);
line1->setPen(pen);
line2->setPen(pen);
}
void setLine1Points(QRect rect) {
line1->setLine(rect.x(), rect.y(),
rect.x() + rect.width(), rect.y() + rect.height());
......@@ -81,6 +94,7 @@ protected:
int m_nLengthY; ///< the length of the line
static int const m_nMouseDownEpsilonX; ///< margin used for mouse clicks
void contextMenuEvent(QGraphicsSceneContextMenuEvent* event);
};
#endif
......@@ -30,6 +30,7 @@
#include "interfacewidget.h"
#include "notewidget.h"
#include "messagewidget.h"
#include "objectwidget.h"
#include "object_factory.h"
#include "idchangelog.h"
#include "menus/listpopupmenu.h"
......@@ -830,6 +831,20 @@ void UMLWidget::slotMenuSelection(QAction *trigger)
break;
}
case ListPopupMenu::mt_Hide_Destruction_Box: {
ObjectWidget *w = asObjectWidget();
if (w)
w->setShowDestruction(false);
break;
}
case ListPopupMenu::mt_Show_Destruction_Box: {
ObjectWidget *w = asObjectWidget();
if (w)
w->setShowDestruction(true);
break;
}
case ListPopupMenu::mt_Interface: {
UMLPackage* component = umlObject()->asUMLPackage();
QString name = Model_Utils::uniqObjectName(UMLObject::ot_Interface, component);
......@@ -889,6 +904,7 @@ void UMLWidget::slotMenuSelection(QAction *trigger)
}
case ListPopupMenu::mt_MessageCreation:
case ListPopupMenu::mt_MessageDestroy:
case ListPopupMenu::mt_MessageSynchronous:
// MessageWidget *widget = new MessageWidget(umlScene(), this);
// addConnectedWidget(widget, Uml::AssociationType::Coll_Message_Synchronous);
......
......@@ -30,9 +30,9 @@ inline QByteArray umbrelloVersion()
// Update this version and dtd's in doc/xml when changing the XMI file format
#if defined(ENABLE_WIDGET_SHOW_DOC) || defined(ENABLE_XMIRESOLUTION)
#define XMI_FILE_VERSION "1.6.18"
#define XMI_FILE_VERSION "1.6.19"
#else
#define XMI_FILE_VERSION "1.6.17"
#define XMI_FILE_VERSION "1.6.18"
#endif
#endif
......@@ -145,6 +145,7 @@ void WorkToolBar::slotCheckToolBar(Uml::DiagramType::Enum dt)
case Uml::DiagramType::Sequence:
insertHotBtn(tbb_Object);
insertHotBtn(tbb_Seq_Message_Creation);
insertHotBtn(tbb_Seq_Message_Destroy);
insertHotBtn(tbb_Seq_Message_Synchronous);
insertHotBtn(tbb_Seq_Message_Asynchronous);
insertHotBtn(tbb_Seq_Message_Found);
......@@ -329,6 +330,7 @@ void WorkToolBar::loadPixmaps()
{ tbb_Arrow, i18nc("selection arrow", "Select"), Icon_Utils::it_Arrow, SLOT(slotArrow()) },
{ tbb_Object, i18n("Object"), Icon_Utils::it_Object, SLOT(slotObject()) },
{ tbb_Seq_Message_Creation, i18n("Creation"), Icon_Utils::it_Message_Creation, SLOT(slotSeq_Message_Creation()) },
{ tbb_Seq_Message_Destroy, i18n("Destroy"), Icon_Utils::it_Message_Destroy, SLOT(slotSeq_Message_Destroy()) },
{ tbb_Seq_Message_Synchronous, i18n("Synchronous Message"), Icon_Utils::it_Message_Sync, SLOT(slotSeq_Message_Synchronous()) },
{ tbb_Seq_Message_Asynchronous, i18n("Asynchronous Message"), Icon_Utils::it_Message_Async, SLOT(slotSeq_Message_Asynchronous()) },
{ tbb_Seq_Message_Found, i18n("Found Message"), Icon_Utils::it_Message_Found, SLOT(slotSeq_Message_Found()) },
......@@ -433,6 +435,7 @@ void WorkToolBar::slotContainment() { buttonChanged(tbb_Containment
void WorkToolBar::slotColl_Message_Synchronous() { buttonChanged(tbb_Coll_Message_Synchronous); }
void WorkToolBar::slotColl_Message_Asynchronous(){ buttonChanged(tbb_Coll_Message_Asynchronous);}
void WorkToolBar::slotSeq_Message_Creation() { buttonChanged(tbb_Seq_Message_Creation); }
void WorkToolBar::slotSeq_Message_Destroy() { buttonChanged(tbb_Seq_Message_Destroy); }
void WorkToolBar::slotSeq_Message_Synchronous() { buttonChanged(tbb_Seq_Message_Synchronous); }
void WorkToolBar::slotSeq_Message_Asynchronous() { buttonChanged(tbb_Seq_Message_Asynchronous); }
void WorkToolBar::slotSeq_Message_Found() { buttonChanged(tbb_Seq_Message_Found); }
......
......@@ -65,6 +65,7 @@ public:
tbb_Coll_Message_Synchronous,
tbb_Coll_Message_Asynchronous,
tbb_Seq_Message_Creation,
tbb_Seq_Message_Destroy,
tbb_Seq_Message_Synchronous,
tbb_Seq_Message_Asynchronous,
tbb_Seq_Message_Found,
......@@ -172,6 +173,7 @@ public slots:
void slotColl_Message_Synchronous();
void slotColl_Message_Asynchronous();
void slotSeq_Message_Creation();
void slotSeq_Message_Destroy();
void slotSeq_Message_Synchronous();