[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdeedu/kig
From:       Pino Toscano <toscano.pino () tiscali ! it>
Date:       2007-03-31 11:24:44
Message-ID: 1175340284.050586.16753.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 648444 by pino:

port the MacroWizard to the new QWizard


 M  +0 -1      CMakeLists.txt  
 M  +28 -36    modes/macro.cc  
 M  +4 -6      modes/macro.h  
 M  +168 -37   modes/macrowizard.cc  
 M  +16 -5     modes/macrowizard.h  
 D             modes/macrowizardbase.ui  


--- trunk/KDE/kdeedu/kig/CMakeLists.txt #648443:648444
@@ -120,7 +120,6 @@
 )
 
 kde4_add_ui3_files(kigpart_PART_SRCS
-   modes/macrowizardbase.ui
    modes/textlabelwizardbase.ui
 )
 
--- trunk/KDE/kdeedu/kig/modes/macro.cc #648443:648444
@@ -42,7 +42,6 @@
 {
   mwizard = new MacroWizard( d.widget(), this );
   mwizard->show();
-  updateNexts();
 }
 
 DefineMacroMode::~DefineMacroMode()
@@ -55,18 +54,6 @@
   mdoc.doneMode( this );
 }
 
-void DefineMacroMode::updateNexts()
-{
-  mwizard->setNextEnabled( mwizard->mpgiven,
-                           !mgiven.empty() );
-  mwizard->setNextEnabled( mwizard->mpfinal,
-                           !mfinal.empty() );
-  mwizard->setFinishEnabled(
-    mwizard->mpname,
-    !mwizard->KLineEdit2->text().isEmpty()
-    );
-}
-
 void DefineMacroMode::enableActions()
 {
   KigMode::enableActions();
@@ -77,19 +64,17 @@
 {
   std::vector<ObjectHolder*> given( mgiven.begin(), mgiven.end() );
   static_cast<KigView*>( mdoc.widget() )->realWidget()->redrawScreen( given );
-  updateNexts();
 }
 
 void DefineMacroMode::finalPageEntered()
 {
   std::vector<ObjectHolder*> final( mfinal.begin(), mfinal.end() );
   static_cast<KigView*>( mdoc.widget() )->realWidget()->redrawScreen( final );
-
-  updateNexts();
 }
 
-void DefineMacroMode::namePageEntered()
+bool DefineMacroMode::validateObjects()
 {
+  bool res = true;
   ObjectCalcer* (ObjectHolder::*memfun)() = &ObjectHolder::calcer;
   std::vector<ObjectCalcer*> given;
   std::transform( mgiven.begin(), mgiven.end(),
@@ -108,7 +93,7 @@
                               "Kig cannot calculate this macro because of this. "
                               "Please press Back, and construct the objects "
                               "in the correct order..." ) );
-    mwizard->back();
+    res = false;
   }
   else if( !hier.allGivenObjectsUsed() )
   {
@@ -118,12 +103,12 @@
                               "probably means you are expecting Kig to do "
                               "something impossible.  Please check the "
                               "macro and try again." ) );
-    mwizard->back();
+    res = false;
   }
 
   static_cast<KigView*>( mdoc.widget() )->realWidget()->redrawScreen( \
std::vector<ObjectHolder*>() );  
-  updateNexts();
+  return res;
 }
 
 void DefineMacroMode::finishPressed()
@@ -140,8 +125,8 @@
   ObjectHierarchy hier( given, final );
   MacroConstructor* ctor =
     new MacroConstructor( hier,
-                          mwizard->KLineEdit2->text(),
-                          mwizard->KLineEdit1->text() );
+                          mwizard->field( "name" ).toString(),
+                          mwizard->field( "description" ).toString() );
   ConstructibleAction* act = new ConstructibleAction( ctor, 0 );
   MacroList::instance()->add( new Macro( act, ctor ) );
 
@@ -153,18 +138,10 @@
   abandonMacro();
 }
 
-void DefineMacroMode::macroNameChanged()
-{
-  mwizard->setFinishEnabled(
-    mwizard->mpname,
-    !mwizard->KLineEdit2->text().isEmpty()
-    );
-}
-
 void DefineMacroMode::dragRect( const QPoint& p, KigWidget& w )
 {
-  if ( mwizard->currentPage() == mwizard->mpname ) return;
-  std::vector<ObjectHolder*>* objs = mwizard->currentPage() == mwizard->mpgiven ? \
&mgiven : &mfinal; +  if ( mwizard->currentId() == MacroWizard::MacroInfoPageId ) \
return; +  std::vector<ObjectHolder*>* objs = mwizard->currentId() == \
MacroWizard::GivenArgsPageId ? &mgiven : &mfinal;  DragRectMode dm( p, mdoc, w );
   mdoc.runMode( &dm );
   KigPainter pter( w.screenInfo(), &w.stillPix, mdoc.document() );
@@ -183,14 +160,17 @@
   w.updateCurPix( pter.overlay() );
   w.updateWidget();
 
-  updateNexts();
+  if ( mwizard->currentId() == MacroWizard::GivenArgsPageId )
+    mwizard->givenArgsChanged();
+  else
+    mwizard->finalArgsChanged();
 }
 
 void DefineMacroMode::leftClickedObject( ObjectHolder* o, const QPoint&,
                                          KigWidget& w, bool )
 {
-  if ( mwizard->currentPage() == mwizard->mpname ) return;
-  std::vector<ObjectHolder*>* objs = mwizard->currentPage() == mwizard->mpgiven ? \
&mgiven : &mfinal; +  if ( mwizard->currentId() == MacroWizard::MacroInfoPageId ) \
return; +  std::vector<ObjectHolder*>* objs = mwizard->currentId() == \
MacroWizard::GivenArgsPageId ? &mgiven : &mfinal;  \
std::vector<ObjectHolder*>::iterator iter = std::find( objs->begin(), objs->end(), o \
);  bool isselected = ( iter != objs->end() );
   if ( isselected ) objs->erase( iter );
@@ -201,7 +181,10 @@
   w.updateCurPix( p.overlay() );
   w.updateWidget();
 
-  updateNexts();
+  if ( mwizard->currentId() == MacroWizard::GivenArgsPageId )
+    mwizard->givenArgsChanged();
+  else
+    mwizard->finalArgsChanged();
 }
 
 void DefineMacroMode::mouseMoved( const std::vector<ObjectHolder*>& os, const \
QPoint& pt, KigWidget& w, bool ) @@ -243,3 +226,12 @@
 {
 }
 
+bool DefineMacroMode::hasGivenArgs() const
+{
+  return !mgiven.empty();
+}
+
+bool DefineMacroMode::hasFinalArgs() const
+{
+  return !mfinal.empty();
+}
--- trunk/KDE/kdeedu/kig/modes/macro.h #648443:648444
@@ -41,18 +41,16 @@
   // called by MacroWizard class
   void givenPageEntered();
   void finalPageEntered();
-  void namePageEntered();
+  bool validateObjects();
   void finishPressed();
   void cancelPressed();
-  void macroNameChanged();
 
+  bool hasGivenArgs() const;
+  bool hasFinalArgs() const;
+
 protected:
   void enableActions();
   /**
-   * update the enabled state of the next buttons on the wizard...
-   */
-  void updateNexts();
-  /**
    * quit this mode...
    */
   void abandonMacro();
--- trunk/KDE/kdeedu/kig/modes/macrowizard.cc #648443:648444
@@ -20,67 +20,171 @@
 
 #include "macro.h"
 
+#include <qlabel.h>
+#include <qlayout.h>
+
 #include <kdebug.h>
+#include <kdialog.h>
 #include <klineedit.h>
+#include <klocale.h>
 #include <ktoolinvocation.h>
 
-MacroWizard::MacroWizard( QWidget* parent, DefineMacroMode* m )
-  : MacroWizardBase( parent, "Define Macro Wizard" ), mmode( m )
+class GivenArgsPage
+  : public QWizardPage
 {
-  setModal( false );
-  connect( KLineEdit2, SIGNAL( textChanged( const QString& ) ),
-           this, SLOT( nameTextChanged( const QString& ) ) );
-  connect( this, SIGNAL( helpClicked() ), this,
-           SLOT( slotHelpClicked() ) );
+public:
+  GivenArgsPage( QWidget* parent, DefineMacroMode* mode );
+
+  bool isComplete() const;
+
+  void setChanged();
+
+private:
+  DefineMacroMode* mmode;
+};
+
+GivenArgsPage::GivenArgsPage( QWidget* parent, DefineMacroMode* mode )
+  : QWizardPage( parent ), mmode( mode )
+{
+  setTitle( i18n( "Given Objects" ) );
+  setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding );
+
+  QVBoxLayout* lay = new QVBoxLayout( this );
+  lay->setMargin( 0 );
+  QLabel* label = new QLabel( this );
+  lay->addWidget( label );
+  label->setText( i18n( "Select the \"given\" objects for your new macro and press \
\"Next\"." ) ); +  label->setAlignment( Qt::AlignCenter );
 }
 
-MacroWizard::~MacroWizard()
+bool GivenArgsPage::isComplete() const
 {
+  return mmode->hasGivenArgs();
 }
 
-void MacroWizard::back()
+void GivenArgsPage::setChanged()
 {
-  if ( currentPage() == mpfinal )
-  {
-    // currentPage() is not yet updated when we get here, so this
-    // means that the page about to be shown is actually mpgiven...
-    mmode->givenPageEntered();
-  }
-  else if ( currentPage() == mpname )
-  {
-    mmode->finalPageEntered();
-  }
-  MacroWizardBase::back();
+  emit completeChanged();
 }
 
-void MacroWizard::next()
+
+class FinalArgsPage
+  : public QWizardPage
 {
-  if ( currentPage() == mpgiven )
-  {
-    // currentPage() is not yet updated when we get here, so this
-    // means that the page about to be shown is actually mpfinal...
-    mmode->finalPageEntered();
-  }
-  else if ( currentPage() == mpfinal )
-  {
-    mmode->namePageEntered();
-  }
-  MacroWizardBase::next();
+public:
+  FinalArgsPage( QWidget* parent, DefineMacroMode* mode );
+
+  bool isComplete() const;
+  bool validatePage();
+
+  void setChanged();
+
+private:
+  DefineMacroMode* mmode;
+};
+
+FinalArgsPage::FinalArgsPage( QWidget* parent, DefineMacroMode* mode )
+  : QWizardPage( parent ), mmode( mode )
+{
+  setTitle( i18n( "Final Object" ) );
+  setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding );
+
+  QVBoxLayout* lay = new QVBoxLayout( this );
+  lay->setMargin( 0 );
+  QLabel* label = new QLabel( this );
+  lay->addWidget( label );
+  label->setText( i18n( "Select the final object(s) for your new macro." ) );
+  label->setAlignment( Qt::AlignCenter );
 }
 
-void MacroWizard::reject()
+bool FinalArgsPage::isComplete() const
 {
-  MacroWizardBase::reject();
-  mmode->cancelPressed();
+  return mmode->hasFinalArgs();
 }
 
-void MacroWizard::nameTextChanged( const QString& )
+bool FinalArgsPage::validatePage()
 {
-  mmode->macroNameChanged();
+  return mmode->validateObjects();
 }
 
+void FinalArgsPage::setChanged()
+{
+  emit completeChanged();
+}
+
+
+class MacroInfoPage
+  : public QWizardPage
+{
+public:
+  MacroInfoPage( QWidget* parent, DefineMacroMode* mode );
+
+private:
+  DefineMacroMode* mmode;
+};
+
+MacroInfoPage::MacroInfoPage( QWidget* parent, DefineMacroMode* mode )
+  : QWizardPage( parent ), mmode( mode )
+{
+  setTitle( i18n( "Name" ) );
+  setSubTitle( i18n( "Enter a name and description for your new type." ) );
+  setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding );
+  setFinalPage( true );
+
+  QGridLayout* lay = new QGridLayout( this );
+  lay->setMargin( 0 );
+  QLabel* label = new QLabel( this );
+  lay->addWidget( label, 0, 0 );
+  label->setText( i18n( "&Name:" ) );
+  label->setAlignment( Qt::AlignRight );
+  KLineEdit* editname = new KLineEdit( this );
+  lay->addWidget( editname, 0, 1 );
+  label->setBuddy( editname );
+  label = new QLabel( this );
+  lay->addWidget( label, 1, 0 );
+  label->setText( i18n( "&Description:" ) );
+  label->setAlignment( Qt::AlignRight );
+  KLineEdit* editdesc = new KLineEdit( this );
+  lay->addWidget( editdesc, 1, 1 );
+  label->setBuddy( editdesc );
+
+  registerField( "name*", editname );
+  registerField( "description", editdesc );
+}
+
+
+MacroWizard::MacroWizard( QWidget* parent, DefineMacroMode* m )
+  : QWizard( parent ), mmode( m )
+{
+  setModal( false );
+  setObjectName( QLatin1String( "Define Macro Wizard" ) );
+  setWindowTitle( KDialog::makeStandardCaption( i18n( "Define New Macro" ) ) );
+  setOption( HaveHelpButton );
+
+  mgivenArgsPage = new GivenArgsPage( this, mmode );
+  setPage( GivenArgsPageId, mgivenArgsPage );
+  mfinalArgsPage = new FinalArgsPage( this, mmode );
+  setPage( FinalArgsPageId, mfinalArgsPage );
+  setPage( MacroInfoPageId, new MacroInfoPage( this, mmode ) );
+
+  connect( this, SIGNAL( helpRequested() ), this,
+           SLOT( slotHelpClicked() ) );
+  connect( this, SIGNAL( currentIdChanged( int ) ), this, SLOT( currentIdChanged( \
int ) ) ); +}
+
+MacroWizard::~MacroWizard()
+{
+}
+
+void MacroWizard::reject()
+{
+  QWizard::reject();
+  mmode->cancelPressed();
+}
+
 void MacroWizard::accept()
 {
+  QWizard::accept();
   mmode->finishPressed();
 }
 
@@ -88,3 +192,30 @@
 {
   KToolInvocation::invokeHelp( "defining-macros", "kig" );
 }
+
+void MacroWizard::currentIdChanged( int id )
+{
+  switch ( id )
+  {
+    case GivenArgsPageId:
+      mmode->givenPageEntered();
+      break;
+    case FinalArgsPageId:
+      mmode->finalPageEntered();
+      break;
+    case -1: // no id - skip it
+      break;
+    default:
+      ;
+  }
+}
+
+void MacroWizard::givenArgsChanged()
+{
+  mgivenArgsPage->setChanged();
+}
+
+void MacroWizard::finalArgsChanged()
+{
+  mfinalArgsPage->setChanged();
+}
--- trunk/KDE/kdeedu/kig/modes/macrowizard.h #648443:648444
@@ -18,26 +18,37 @@
 #ifndef MACROWIZARD_H
 #define MACROWIZARD_H
 
-#include "macrowizardbase.h"
+#include <qwizard.h>
 
 class DefineMacroMode;
+class GivenArgsPage;
+class FinalArgsPage;
 
-class MacroWizard : public MacroWizardBase
+class MacroWizard : public QWizard
 {
   Q_OBJECT
 public:
   MacroWizard( QWidget* parent, DefineMacroMode* m );
   ~MacroWizard();
 
-  void back();
-  void next();
+  static const int GivenArgsPageId = 0;
+  static const int FinalArgsPageId = 1;
+  static const int MacroInfoPageId = 2;
+
+  void givenArgsChanged();
+  void finalArgsChanged();
+
+public slots:
   void reject();
   void accept();
+
 private slots:
-  void nameTextChanged( const QString& );
+  void currentIdChanged( int id );
   void slotHelpClicked();
 private:
   DefineMacroMode* mmode;
+  GivenArgsPage* mgivenArgsPage;
+  FinalArgsPage* mfinalArgsPage;
 };
 
 #endif // MACROWIZARD_H


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic