summaryrefslogtreecommitdiffstats
path: root/umbrello/umbrello/dialogs/classwizard.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'umbrello/umbrello/dialogs/classwizard.cpp')
-rw-r--r--umbrello/umbrello/dialogs/classwizard.cpp107
1 files changed, 107 insertions, 0 deletions
diff --git a/umbrello/umbrello/dialogs/classwizard.cpp b/umbrello/umbrello/dialogs/classwizard.cpp
new file mode 100644
index 00000000..7ac1cb27
--- /dev/null
+++ b/umbrello/umbrello/dialogs/classwizard.cpp
@@ -0,0 +1,107 @@
+/***************************************************************************
+ * *
+ * 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 "classwizard.h"
+
+// system includes
+#include <khelpmenu.h>
+#include <klocale.h>
+
+// local includes
+#include "classifierlistpage.h"
+#include "../uml.h"
+#include "../umldoc.h"
+#include "../classifier.h"
+#include "../attribute.h"
+#include "../operation.h"
+#include "../umlclassifierlistitemlist.h"
+#include "../classifierlistitem.h"
+
+ClassWizard::ClassWizard( UMLDoc * pDoc ) : KWizard( (QWidget*)pDoc -> parent(), "_CLASSWIZARD_", true) {
+ m_pDoc = pDoc;
+ //create a unique class to start with
+ UMLObject * pTemp = 0;
+ QString name = i18n("new_class");
+ QString newName = name;
+ QString num = "";
+ int i = 0;
+ m_pClass = new UMLClassifier( newName );
+ do {
+ m_pClass -> setName( newName );
+ pTemp = m_pDoc -> findUMLObject( newName );
+ num.setNum( ++i);
+ newName = name;
+ newName.append("_").append( num );
+ } while( pTemp );
+ //setup pages
+ setupPages();
+}
+
+ClassWizard::~ClassWizard() {}
+
+void ClassWizard::setupPages() {
+ //Setup General Page
+ m_pGenPage = new ClassGenPage( m_pDoc, this, m_pClass );
+ addPage( m_pGenPage, i18n("New Class") );
+ setHelpEnabled(m_pGenPage, false);
+
+ //Setup Attribute Page
+ m_pAttPage = new ClassifierListPage(this, m_pClass, m_pDoc, Uml::ot_Attribute);
+ addPage( m_pAttPage, i18n("Class Attributes") );
+
+ //Setup Operation Page
+ m_pOpPage = new ClassifierListPage(this, m_pClass, m_pDoc, Uml::ot_Operation);
+ addPage( m_pOpPage, i18n("Class Operations") );
+}
+
+void ClassWizard::showPage( QWidget * pWidget ) {
+ QWizard::showPage( pWidget );
+ if( pWidget == m_pOpPage )
+ finishButton() -> setEnabled( true );
+}
+
+void ClassWizard::next() {
+ QWidget * pWidget = currentPage();
+ if( pWidget == m_pGenPage ) {
+ m_pGenPage -> updateObject();
+ } else if( pWidget == m_pAttPage ) {
+ m_pAttPage -> updateObject();
+ }
+ QWizard::next();
+}
+
+void ClassWizard::back() {
+ QWidget * pWidget = currentPage();
+ if( pWidget == m_pAttPage ) {
+ m_pAttPage -> updateObject();
+ } else if( pWidget == m_pOpPage ) {
+ m_pOpPage -> updateObject();
+ }
+ QWizard::back();
+}
+
+void ClassWizard::accept() {
+ m_pDoc -> addUMLObject( m_pClass );
+ m_pDoc->signalUMLObjectCreated(m_pClass);
+
+ QWizard::accept();
+}
+
+void ClassWizard::reject() {
+ delete m_pClass;
+ QWizard::reject();
+}
+
+void ClassWizard::help() {
+ KHelpMenu helpMenu(this);
+ helpMenu.appHelpActivated();
+}