summaryrefslogtreecommitdiffstats
path: root/umbrello/umbrello/dialogs/selectopdlg.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'umbrello/umbrello/dialogs/selectopdlg.cpp')
-rw-r--r--umbrello/umbrello/dialogs/selectopdlg.cpp141
1 files changed, 141 insertions, 0 deletions
diff --git a/umbrello/umbrello/dialogs/selectopdlg.cpp b/umbrello/umbrello/dialogs/selectopdlg.cpp
new file mode 100644
index 00000000..cb9e344d
--- /dev/null
+++ b/umbrello/umbrello/dialogs/selectopdlg.cpp
@@ -0,0 +1,141 @@
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * copyright (C) 2002-2006 *
+ * Umbrello UML Modeller Authors <uml-devel@uml.sf.net> *
+ ***************************************************************************/
+
+// own header
+#include "selectopdlg.h"
+
+// qt includes
+#include <qlayout.h>
+
+// kde includes
+#include <klocale.h>
+#include <kdebug.h>
+
+// local includes
+#include "../attribute.h"
+#include "../operation.h"
+#include "../umlclassifierlistitemlist.h"
+#include "../umlview.h"
+#include "../dialog_utils.h"
+
+SelectOpDlg::SelectOpDlg(UMLView * parent, UMLClassifier * c)
+ : KDialogBase(Plain, i18n("Select Operation"), Ok | Cancel , Ok, parent, "_SELOPDLG_", true, true)
+{
+ m_pView = parent;
+ QVBoxLayout * topLayout = new QVBoxLayout(plainPage());
+
+ m_pOpGB = new QGroupBox(i18n("Select Operation"), plainPage());
+ topLayout -> addWidget(m_pOpGB);
+
+ QGridLayout * mainLayout = new QGridLayout(m_pOpGB, 3, 2);
+ mainLayout -> setSpacing(spacingHint());
+ mainLayout -> setMargin(fontMetrics().height());
+
+ Dialog_Utils::makeLabeledEditField( m_pOpGB, mainLayout, 0,
+ m_pSeqL, i18n("Sequence number:"),
+ m_pSeqLE );
+
+ m_pOpRB = new QRadioButton(i18n("Class operation:"), m_pOpGB);
+ mainLayout -> addWidget(m_pOpRB, 1, 0);
+
+ m_pOpCB = new KComboBox(m_pOpGB);
+ m_pOpCB->setCompletionMode( KGlobalSettings::CompletionPopup );
+ m_pOpCB->setDuplicatesEnabled(false);//only allow one of each type in box
+ mainLayout -> addWidget(m_pOpCB, 1, 1);
+
+ m_pCustomRB = new QRadioButton(i18n("Custom operation:"), m_pOpGB);
+ mainLayout -> addWidget(m_pCustomRB, 2, 0);
+
+ m_pOpLE = new QLineEdit(m_pOpGB);
+ mainLayout -> addWidget(m_pOpLE, 2, 1);
+
+ m_pOpBG = new QButtonGroup(0);
+ m_pOpBG -> insert(m_pOpRB, OP);
+ m_pOpBG -> insert(m_pCustomRB, CUSTOM);
+ m_pOpBG -> setExclusive(true);
+ m_pOpBG -> setButton(OP);
+
+ UMLOperationList list = c -> getOpList(true);
+ for (UMLOperation *obj = list.first(); obj; obj=list.next()) {
+ insertOperation( obj->toString(Uml::st_SigNoVis) );
+ }
+ //disableResize();
+ connect(m_pOpBG, SIGNAL(clicked(int)), this, SLOT(slotSelected(int)));
+ m_nOpCount = c -> operations();
+ slotSelected(OP);
+}
+
+SelectOpDlg::~SelectOpDlg() {
+ disconnect(m_pOpBG, SIGNAL(clicked(int)), this, SLOT(slotSelected(int)));
+ delete m_pOpBG;
+}
+
+void SelectOpDlg::insertOperation( const QString& type, int index )
+{
+ m_pOpCB->insertItem( type, index );
+ m_pOpCB->completionObject()->addItem( type );
+}
+
+QString SelectOpDlg::getOpText() {
+ if(m_pOpRB -> isChecked())
+ return m_pOpCB -> currentText();
+ else
+ return m_pOpLE -> text();
+}
+
+bool SelectOpDlg::isClassOp() const {
+ return (m_id == OP);
+}
+
+void SelectOpDlg::slotSelected(int id) {
+ if(id == OP) {
+ m_pOpLE -> setEnabled(false);
+ if(m_nOpCount > 0)
+ m_pOpCB -> setEnabled(true);
+ } else {
+ m_pOpLE -> setEnabled(true);
+ m_pOpCB -> setEnabled(false);
+ }
+ m_id = id;
+}
+
+void SelectOpDlg::setCustomOp(const QString &op) {
+ m_pOpLE -> setText(op);
+ if(op.length() > 0) {
+ slotSelected(CUSTOM);
+ m_pCustomRB -> setChecked(true);
+ }
+}
+
+bool SelectOpDlg::setClassOp(const QString &op) {
+ for (int i = 1; i!= m_pOpCB->count(); ++i)
+ {
+ if ( m_pOpCB->text(i) == op ) {
+ m_pOpCB->setCurrentItem(i);
+ m_pCustomRB -> setChecked(false);
+ slotSelected(OP);
+ return true;
+ }
+ }
+ return false;
+}
+
+QString SelectOpDlg::getSeqNumber() {
+ return m_pSeqLE->text();
+}
+
+void SelectOpDlg::setSeqNumber(const QString &num) {
+ m_pSeqLE->setText(num);
+}
+
+
+
+#include "selectopdlg.moc"