Procházet zdrojové kódy

COMP: PluginGenerator: Fixed class names and enhanced the gui

Sascha Zelzer před 14 roky
rodič
revize
36cc6c617f

+ 21 - 6
Applications/ctkPluginGenerator/ctkPluginGenerator.cpp

@@ -22,22 +22,22 @@
 #include "ctkPluginGenerator.h"
 #include "ui_ctkPluginGeneratorMainWindow.h"
 
+#include <ctkPluginFramework.h>
 
-ctkPluginGenerator::ctkPluginGenerator(QWidget *parent) :
+
+ctkPluginGenerator::ctkPluginGenerator(ctkPluginFramework* framework, QWidget *parent) :
     QMainWindow(parent),
-    ui(new Ui::ctkPluginGeneratorMainWindow)
+    framework(framework), ui(new Ui::ctkPluginGeneratorMainWindow),
+    mode(EDIT)
 {
     ui->setupUi(this);
 
     this->setStatusBar(0);
 
+    connect(ui->previewButton, SIGNAL(clicked()), this, SLOT(previewClicked()));
     connect(ui->cancelButton, SIGNAL(clicked()), qApp, SLOT(quit()));
 
-    //ctkPluginGeneratorAbstractSection* section = new ctkPluginGeneratorMainSection();
-    //ui->sectionsStack->addWidget(section->createWidget(ui->sectionsStack));
-    //sectionList.append(section);
 
-    //connect(section, SIGNAL(errorMessageChanged(QString)), this, SLOT(sectionErrorMessage(QString)));
 }
 
 ctkPluginGenerator::~ctkPluginGenerator()
@@ -50,3 +50,18 @@ void ctkPluginGenerator::sectionErrorMessage(const QString& errorMsg)
   ui->sectionMessageLabel->setText(errorMsg);
 }
 
+void ctkPluginGenerator::previewClicked()
+{
+  if (mode == EDIT)
+  {
+    ui->modeStack->setCurrentWidget(ui->previewPage);
+    ui->previewButton->setText(tr("<< Back"));
+    mode = PREVIEW;
+  }
+  else
+  {
+    ui->modeStack->setCurrentWidget(ui->editPage);
+    ui->previewButton->setText(tr("Preview >>"));
+    mode = EDIT;
+  }
+}

+ 17 - 4
Applications/ctkPluginGenerator/ctkPluginGenerator.h

@@ -24,7 +24,9 @@
 
 #include <QMainWindow>
 
-#include <ctkPluginGeneratorAbstractSection.h>
+#include <ctkPluginGeneratorAbstractUiExtension.h>
+
+class ctkPluginFramework;
 
 namespace Ui {
     class ctkPluginGeneratorMainWindow;
@@ -35,18 +37,29 @@ class ctkPluginGenerator : public QMainWindow
     Q_OBJECT
 
 public:
-    explicit ctkPluginGenerator(QWidget *parent = 0);
+    explicit ctkPluginGenerator(ctkPluginFramework* framework, QWidget *parent = 0);
     ~ctkPluginGenerator();
 
-public slots:
+protected slots:
 
     void sectionErrorMessage(const QString& errorMsg);
 
+    void previewClicked();
+
 private:
 
-    QList<ctkPluginGeneratorAbstractSection*> sectionList;
+    enum GeneratorMode {
+      EDIT,
+      PREVIEW
+    };
+
+    ctkPluginFramework *const framework;
+
+    QList<ctkPluginGeneratorAbstractUiExtension*> uiExtensionList;
 
     Ui::ctkPluginGeneratorMainWindow *ui;
+
+    GeneratorMode mode;
 };
 
 #endif // CTKPLUGINGENERATOR_H

+ 13 - 13
Applications/ctkPluginGenerator/ctkPluginGeneratorMain.cpp

@@ -32,19 +32,19 @@ int main(int argv, char** argc)
 {
   QApplication app(argv, argc);
 
-  //ctkPluginFrameworkFactory fwFactory;
-  //ctkPluginFramework* framework = fwFactory.getFramework();
-
-//  try {
-//    framework->init();
-//  }
-//  catch (const ctkPluginException& exc)
-//  {
-//    qCritical() << "Failed to initialize the plug-in framework:" << exc;
-//    exit(1);
-//  }
-
-  ctkPluginGenerator generator; //(framework);
+  ctkPluginFrameworkFactory fwFactory;
+  ctkPluginFramework* framework = fwFactory.getFramework();
+
+  try {
+    framework->init();
+  }
+  catch (const ctkPluginException& exc)
+  {
+    qCritical() << "Failed to initialize the plug-in framework:" << exc;
+    exit(1);
+  }
+
+  ctkPluginGenerator generator(framework);
   generator.show();
 
   return app.exec();

+ 158 - 88
Applications/ctkPluginGenerator/ctkPluginGeneratorMainWindow.ui

@@ -19,34 +19,38 @@
   <widget class="QWidget" name="centralwidget">
    <layout class="QVBoxLayout" name="verticalLayout">
     <item>
-     <widget class="QSplitter" name="splitter">
+     <widget class="QStackedWidget" name="modeStack">
       <property name="sizePolicy">
-       <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+       <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
         <horstretch>0</horstretch>
         <verstretch>1</verstretch>
        </sizepolicy>
       </property>
-      <property name="orientation">
-       <enum>Qt::Horizontal</enum>
-      </property>
-      <property name="childrenCollapsible">
-       <bool>false</bool>
-      </property>
-      <widget class="QWidget" name="widget_5" native="true">
-       <layout class="QVBoxLayout" name="verticalLayout_3">
+      <widget class="QWidget" name="editPage">
+       <layout class="QVBoxLayout" name="verticalLayout_4">
         <property name="margin">
          <number>0</number>
         </property>
         <item>
-         <widget class="QLabel" name="sectionListLabel">
-          <property name="minimumSize">
-           <size>
-            <width>0</width>
-            <height>40</height>
-           </size>
+         <widget class="QSplitter" name="splitter">
+          <property name="orientation">
+           <enum>Qt::Horizontal</enum>
           </property>
-          <property name="text">
-           <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+          <widget class="QWidget" name="widget_5" native="true">
+           <layout class="QVBoxLayout" name="verticalLayout_3">
+            <property name="margin">
+             <number>0</number>
+            </property>
+            <item>
+             <widget class="QLabel" name="uiExtensionListLabel">
+              <property name="minimumSize">
+               <size>
+                <width>0</width>
+                <height>40</height>
+               </size>
+              </property>
+              <property name="text">
+               <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
 &lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
 p, li { white-space: pre-wrap; }
 &lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
@@ -55,83 +59,149 @@ p, li { white-space: pre-wrap; }
 &lt;td style=&quot;border: none;&quot;&gt;
 &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:12pt; font-weight:600;&quot;&gt;Plugin&lt;/span&gt;&lt;/p&gt;
 &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:12pt; font-weight:600;&quot;&gt;Generator&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</string>
-          </property>
-          <property name="alignment">
-           <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QListWidget" name="sectionList">
-          <property name="sizePolicy">
-           <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
-            <horstretch>0</horstretch>
-            <verstretch>0</verstretch>
-           </sizepolicy>
-          </property>
-          <property name="minimumSize">
-           <size>
-            <width>200</width>
-            <height>0</height>
-           </size>
-          </property>
-          <item>
-           <property name="text">
-            <string>Main</string>
-           </property>
-          </item>
-          <item>
-           <property name="text">
-            <string>Dependencies</string>
-           </property>
-          </item>
-          <item>
-           <property name="text">
-            <string>Meta-Data</string>
-           </property>
-          </item>
+              </property>
+              <property name="alignment">
+               <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QListWidget" name="uiExtensionList">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="minimumSize">
+               <size>
+                <width>200</width>
+                <height>0</height>
+               </size>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </widget>
+          <widget class="QWidget" name="widget_4" native="true">
+           <layout class="QVBoxLayout" name="verticalLayout_2">
+            <property name="leftMargin">
+             <number>6</number>
+            </property>
+            <property name="topMargin">
+             <number>0</number>
+            </property>
+            <property name="rightMargin">
+             <number>0</number>
+            </property>
+            <property name="bottomMargin">
+             <number>0</number>
+            </property>
+            <item>
+             <widget class="QLabel" name="sectionMessageLabel">
+              <property name="minimumSize">
+               <size>
+                <width>0</width>
+                <height>40</height>
+               </size>
+              </property>
+              <property name="text">
+               <string/>
+              </property>
+              <property name="alignment">
+               <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QStackedWidget" name="sectionsStack">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+                <horstretch>1</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </widget>
          </widget>
         </item>
        </layout>
       </widget>
-      <widget class="QWidget" name="widget_4" native="true">
-       <layout class="QVBoxLayout" name="verticalLayout_2">
-        <property name="leftMargin">
-         <number>6</number>
-        </property>
-        <property name="topMargin">
-         <number>0</number>
-        </property>
-        <property name="rightMargin">
-         <number>0</number>
-        </property>
-        <property name="bottomMargin">
+      <widget class="QWidget" name="previewPage">
+       <property name="layoutDirection">
+        <enum>Qt::LeftToRight</enum>
+       </property>
+       <layout class="QVBoxLayout" name="verticalLayout_5">
+        <property name="margin">
          <number>0</number>
         </property>
         <item>
-         <widget class="QLabel" name="sectionMessageLabel">
-          <property name="minimumSize">
-           <size>
-            <width>0</width>
-            <height>40</height>
-           </size>
-          </property>
-          <property name="text">
-           <string/>
-          </property>
-          <property name="alignment">
-           <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QStackedWidget" name="sectionsStack">
-          <property name="sizePolicy">
-           <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
-            <horstretch>1</horstretch>
-            <verstretch>0</verstretch>
-           </sizepolicy>
+         <widget class="QSplitter" name="splitter_2">
+          <property name="orientation">
+           <enum>Qt::Horizontal</enum>
           </property>
+          <widget class="QWidget" name="widget_2" native="true">
+           <layout class="QVBoxLayout" name="verticalLayout_6">
+            <property name="margin">
+             <number>0</number>
+            </property>
+            <item>
+             <widget class="QLabel" name="previewLabel">
+              <property name="minimumSize">
+               <size>
+                <width>0</width>
+                <height>40</height>
+               </size>
+              </property>
+              <property name="text">
+               <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;table border=&quot;0&quot; style=&quot;-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;&quot;&gt;
+&lt;tr&gt;
+&lt;td style=&quot;border: none;&quot;&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:12pt; font-weight:600;&quot;&gt;Plugin &lt;/span&gt;&lt;span style=&quot; font-size:12pt; font-weight:600;&quot;&gt;Generator&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:12pt; font-weight:600;&quot;&gt;Preview&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</string>
+              </property>
+              <property name="alignment">
+               <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QTreeView" name="previewTreeView"/>
+            </item>
+           </layout>
+          </widget>
+          <widget class="QWidget" name="widget_6" native="true">
+           <layout class="QVBoxLayout" name="verticalLayout_7">
+            <property name="margin">
+             <number>0</number>
+            </property>
+            <item>
+             <widget class="QLabel" name="previewTextLabel">
+              <property name="minimumSize">
+               <size>
+                <width>0</width>
+                <height>40</height>
+               </size>
+              </property>
+              <property name="text">
+               <string/>
+              </property>
+              <property name="alignment">
+               <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QTextEdit" name="previewTextEdit"/>
+            </item>
+           </layout>
+          </widget>
          </widget>
         </item>
        </layout>
@@ -202,7 +272,7 @@ p, li { white-space: pre-wrap; }
        <item>
         <widget class="QPushButton" name="previewButton">
          <property name="text">
-          <string>Preview</string>
+          <string>Preview &gt;&gt;</string>
          </property>
         </widget>
        </item>

+ 2 - 1
Plugins/org.commontk.plugingenerator.core/CMakeLists.txt

@@ -10,7 +10,8 @@ SET(PLUGIN_SRCS
 )
 
 SET(PLUGIN_MOC_SRCS
-  
+  ctkPluginGeneratorAbstractExtension.h
+  ctkPluginGeneratorAbstractTemplate.h
 )
 
 SET(PLUGIN_UI_FORMS

+ 3 - 1
Plugins/org.commontk.plugingenerator.core/ctkPluginGeneratorAbstractExtension.h

@@ -26,9 +26,11 @@
 #include <QObject>
 #include <QHash>
 
+#include <org_commontk_plugingenerator_core_Export.h>
+
 class ctkPluginGeneratorAbstractExtensionPrivate;
 
-class ctkPluginGeneratorAbstractExtension : public QObject
+class org_commontk_plugingenerator_core_EXPORT ctkPluginGeneratorAbstractExtension : public QObject
 {
   Q_OBJECT
 

+ 3 - 1
Plugins/org.commontk.plugingenerator.core/ctkPluginGeneratorAbstractTemplate.h

@@ -27,9 +27,11 @@
 #include <QScopedPointer>
 #include <QStringList>
 
+#include <org_commontk_plugingenerator_core_Export.h>
+
 class ctkPluginGeneratorAbstractTemplatePrivate;
 
-class ctkPluginGeneratorAbstractTemplate : public QObject
+class org_commontk_plugingenerator_core_EXPORT ctkPluginGeneratorAbstractTemplate : public QObject
 {
   Q_OBJECT
 

+ 0 - 1
Plugins/org.commontk.plugingenerator.core/ctkPluginGeneratorCMakeLists.h

@@ -27,7 +27,6 @@
 
 class ctkPluginGeneratorCMakeLists : public ctkPluginGeneratorAbstractTemplate
 {
-  Q_OBJECT
 
 public:
 

+ 1 - 3
Plugins/org.commontk.plugingenerator.core/ctkPluginGeneratorCodeModel.h

@@ -30,11 +30,9 @@
 
 class ctkPluginGeneratorCodeModelPrivate;
 
-class ctkPluginGeneratorCodeModel : public QObject
+class org_commontk_plugingenerator_core_EXPORT ctkPluginGeneratorCodeModel : public QObject
 {
 
-  Q_OBJECT
-
 public:
     ctkPluginGeneratorCodeModel();
 

+ 9 - 9
Plugins/org.commontk.plugingenerator.ui/ctkPluginGeneratorAbstractUiExtension.cpp

@@ -52,37 +52,37 @@ ctkPluginGeneratorAbstractUiExtension::~ctkPluginGeneratorAbstractUiExtension()
 
 QWidget* ctkPluginGeneratorAbstractUiExtension::getWidget()
 {
-  Q_D(ctkPluginGeneratorAbstractExtension);
+  Q_D(ctkPluginGeneratorAbstractUiExtension);
   return d->sectionWidget;
 }
 
 QString ctkPluginGeneratorAbstractUiExtension::getDescription() const
 {
-  Q_D(ctkPluginGeneratorAbstractExtension);
+  Q_D(const ctkPluginGeneratorAbstractUiExtension);
   return d->description;
 }
 
 QString ctkPluginGeneratorAbstractUiExtension::getTitle() const
 {
-  Q_D(ctkPluginGeneratorAbstractExtension);
+  Q_D(const ctkPluginGeneratorAbstractUiExtension);
   return d->title;
 }
 
 QString ctkPluginGeneratorAbstractUiExtension::getMessage() const
 {
-  Q_D(ctkPluginGeneratorAbstractExtension);
+  Q_D(const ctkPluginGeneratorAbstractUiExtension);
   return d->message;
 }
 
 QIcon ctkPluginGeneratorAbstractUiExtension::getIcon() const
 {
-  Q_D(ctkPluginGeneratorAbstractExtension);
+  Q_D(const ctkPluginGeneratorAbstractUiExtension);
   return d->icon;
 }
 
 void ctkPluginGeneratorAbstractUiExtension::setDescription(const QString& description)
 {
-  Q_D(ctkPluginGeneratorAbstractExtension);
+  Q_D(ctkPluginGeneratorAbstractUiExtension);
   if (d->description != description)
   {
     d->description = description;
@@ -92,7 +92,7 @@ void ctkPluginGeneratorAbstractUiExtension::setDescription(const QString& descri
 
 void ctkPluginGeneratorAbstractUiExtension::setTitle(const QString& title)
 {
-  Q_D(ctkPluginGeneratorAbstractExtension);
+  Q_D(ctkPluginGeneratorAbstractUiExtension);
   if (d->title != title)
   {
     d->title = title;
@@ -102,7 +102,7 @@ void ctkPluginGeneratorAbstractUiExtension::setTitle(const QString& title)
 
 void ctkPluginGeneratorAbstractUiExtension::setMessage(const QString& msg)
 {
-  Q_D(ctkPluginGeneratorAbstractExtension);
+  Q_D(ctkPluginGeneratorAbstractUiExtension);
   if (d->message != msg)
   {
     d->message = msg;
@@ -112,7 +112,7 @@ void ctkPluginGeneratorAbstractUiExtension::setMessage(const QString& msg)
 
 void ctkPluginGeneratorAbstractUiExtension::setIcon(const QIcon& icon)
 {
-  Q_D(ctkPluginGeneratorAbstractExtension);
+  Q_D(ctkPluginGeneratorAbstractUiExtension);
   d->icon = icon;
   emit iconChanged(icon);
 }

+ 3 - 2
Plugins/org.commontk.plugingenerator.ui/ctkPluginGeneratorMainExtension.cpp

@@ -28,7 +28,6 @@ ctkPluginGeneratorMainExtension::ctkPluginGeneratorMainExtension()
 
 }
 
-
 QWidget* ctkPluginGeneratorMainExtension::createWidget(QWidget* parent)
 {
   ui = new Ui::ctkPluginGeneratorMainExtension();
@@ -37,6 +36,8 @@ QWidget* ctkPluginGeneratorMainExtension::createWidget(QWidget* parent)
 
   connectSignals();
 
+  setTitle(tr("Main"));
+
   return container;
 }
 
@@ -49,7 +50,7 @@ void ctkPluginGeneratorMainExtension::verifySection()
 {
   if (ui->symbolicNameEdit->text().isEmpty())
   {
-    this->setErrorMessage("The symbolic name cannot be empty");
+    this->setErrorMessage(tr("The symbolic name cannot be empty"));
   }
   else
   {

+ 1 - 0
Plugins/org.commontk.plugingenerator.ui/manifest_headers.cmake

@@ -0,0 +1 @@
+SET(Require-Plugin org.commontk.plugingenerator.core)

+ 0 - 9
Plugins/org.commontk.plugingenerator.ui/target_libraries.cmake

@@ -1,9 +0,0 @@
-#
-# See CMake/ctkMacroGetTargetLibraries.cmake
-# 
-# This file should list the libraries required to build the current CTK plugin.
-# 
-
-SET(target_libraries
-  CTKPluginFramework
-  )