[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