[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 22:52:27
Message-ID: 1175381547.486448.28958.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 648659 by pino:
port the TextLabelWizard to the new QWizard, hopefully should work as before
M +0 -4 CMakeLists.txt
M +36 -42 modes/label.cc
M +2 -2 modes/label.h
M +2 -0 modes/linkslabel.cpp
M +5 -0 modes/linkslabel.h
M +139 -24 modes/textlabelwizard.cc
M +16 -5 modes/textlabelwizard.h
D modes/textlabelwizardbase.ui
--- trunk/KDE/kdeedu/kig/CMakeLists.txt #648658:648659
@@ -119,10 +119,6 @@
kig/kig_view.cpp
)
-kde4_add_ui3_files(kigpart_PART_SRCS
- modes/textlabelwizardbase.ui
-)
-
kde4_add_ui_files(kigpart_PART_SRCS
modes/typeswidget.ui
modes/edittypewidget.ui
--- trunk/KDE/kdeedu/kig/modes/label.cc #648658:648659
@@ -211,7 +211,6 @@
argcalcer->calc( mdoc.document() );
updateLinksLabel();
- updateWiz();
break;
}
default:
@@ -300,7 +299,8 @@
cancelConstruction();
}
-static uint percentCount( const QString& s )
+// also used in textlabelwizard.cc
+uint percentCount( const QString& s )
{
// QRegExp re( QString::fromUtf8( "%[0-9]" ) );
QRegExp re( QString::fromUtf8( "%[\\d]+" ) );
@@ -314,13 +314,13 @@
return percentcount;
}
-void TextLabelModeBase::finishPressed()
+bool TextLabelModeBase::canFinish()
{
- bool needframe = d->wiz->needFrameCheckBox->isChecked();
- QString s = d->wiz->labelTextInput->text();
+ bool finish = true;
+ QString s = d->wiz->text();
assert( percentCount( s ) == d->args.size() );
- if ( d->wiz->currentPage() == d->wiz->enter_text_page )
+ if ( d->wiz->currentId() == TextLabelWizard::TextPageId )
assert( d->args.size() == 0 );
bool finished = true;
@@ -328,20 +328,31 @@
finished &= ( *i != 0 );
if ( ! finished )
+ {
KMessageBox::sorry( mdoc.widget(),
i18n( "There are '%n' parts in the text that you have not selected a "
"value for. Please remove them or select enough arguments." ) );
- else
- {
- finish( d->mcoord, s, d->args, needframe, d->locationparent );
- killMode();
+ finished = false;
};
+
+ return finish;
}
-void TextLabelModeBase::updateWiz()
+void TextLabelModeBase::finishPressed()
{
- QString s = d->wiz->labelTextInput->text();
- uint percentcount = percentCount( s );
+ if ( !canFinish() )
+ return;
+
+ bool needframe = d->wiz->field( "wantframe" ).toBool();
+ QString s = d->wiz->text();
+
+ finish( d->mcoord, s, d->args, needframe, d->locationparent );
+ killMode();
+}
+
+bool TextLabelModeBase::percentCountChanged( uint percentcount )
+{
+ bool finish = true;
if ( d->lpc > percentcount )
{
d->args = argvect( d->args.begin(), d->args.begin() + percentcount );
@@ -351,37 +362,24 @@
d->args.resize( percentcount, 0 );
};
- if ( percentcount == 0 && ! s.isEmpty() )
+ if ( percentcount != 0 )
{
- d->wiz->setNextEnabled( d->wiz->enter_text_page, false );
- d->wiz->setFinishEnabled( d->wiz->enter_text_page, true );
- d->wiz->setAppropriate( d->wiz->select_arguments_page, false );
- }
- else
- {
- d->wiz->setAppropriate( d->wiz->select_arguments_page, !s.isEmpty() );
- d->wiz->setNextEnabled( d->wiz->enter_text_page, ! s.isEmpty() );
- d->wiz->setFinishEnabled( d->wiz->enter_text_page, false );
bool finished = true;
for ( argvect::iterator i = d->args.begin(); i != d->args.end(); ++i )
finished &= ( *i != 0 );
- assert( percentCount( s ) == d->args.size() );
-
- d->wiz->setFinishEnabled( d->wiz->select_arguments_page, finished );
+ assert( percentcount == d->args.size() );
+ finish = finished;
};
d->lpc = percentcount;
-}
-void TextLabelModeBase::labelTextChanged()
-{
- updateWiz();
+ return finish;
}
void TextLabelModeBase::updateLinksLabel()
{
- LinksLabel::LinksLabelEditBuf buf = d->wiz->myCustomWidget1->startEdit();
- QString s = d->wiz->labelTextInput->text();
+ LinksLabel::LinksLabelEditBuf buf = d->wiz->linksLabel()->startEdit();
+ QString s = d->wiz->text();
// QRegExp re( "%[0-9]" );
QRegExp re( "%[\\d]+" );
int prevpos = 0;
@@ -400,7 +398,7 @@
// fetch the text part...
QString subs = s.mid( prevpos, pos - prevpos );
// and add it...
- d->wiz->myCustomWidget1->addText( subs, buf );
+ d->wiz->linksLabel()->addText( subs, buf );
};
// we always need a link part...
QString linktext( "%1" );
@@ -415,7 +413,7 @@
// otherwise, we show a stub...
linktext = i18n( "argument %1", count + 1 );
- d->wiz->myCustomWidget1->addLink( linktext, buf );
+ d->wiz->linksLabel()->addLink( linktext, buf );
// set pos and prevpos to the next char after the last match, so
// we don't enter infinite loops...
// pos += 2;
@@ -425,10 +423,9 @@
};
if ( prevpos != s.length() )
- d->wiz->myCustomWidget1->addText( s.mid( prevpos ), buf );
+ d->wiz->linksLabel()->addText( s.mid( prevpos ), buf );
- d->wiz->myCustomWidget1->applyEdit( buf );
- d->wiz->relayoutArgsPage();
+ d->wiz->linksLabel()->applyEdit( buf );
d->wiz->resize( d->wiz->size() );
}
@@ -458,16 +455,13 @@
if ( d->mwawd == SelectingLocation )
{
d->mwawd = RequestingText;
- updateWiz();
d->wiz->show();
- // shouldn't be necessary, but seems to be anyway.. :(
- updateWiz();
};
}
void TextLabelModeBase::setText( const QString& s )
{
- d->wiz->labelTextInput->setText( s );
+ d->wiz->setText( s );
}
void TextLabelModeBase::setPropertyObjects( const argvect& props )
@@ -628,7 +622,7 @@
void TextLabelModeBase::setFrame( bool f )
{
- d->wiz->needFrameCheckBox->setChecked( f );
+ d->wiz->setField( "wantframe", f );
}
void TextLabelModeBase::setLocationParent( ObjectCalcer* o )
--- trunk/KDE/kdeedu/kig/modes/label.h #648658:648659
@@ -52,9 +52,10 @@
void finishPressed();
void enterTextPageEntered();
void selectArgumentsPageEntered();
- void labelTextChanged();
void linkClicked( int );
void redrawScreen( KigWidget* w );
+ bool percentCountChanged( uint percentcount );
+ bool canFinish();
protected:
typedef std::vector<ObjectCalcer::shared_ptr> argvect;
@@ -101,7 +102,6 @@
*/
typedef enum { SelectingLocation, RequestingText, SelectingArgs, ReallySelectingArgs } wawdtype;
- void updateWiz();
void updateLinksLabel();
};
--- trunk/KDE/kdeedu/kig/modes/linkslabel.cpp #648658:648659
@@ -131,4 +131,6 @@
std::for_each( p->urllabels.begin(), p->urllabels.end(), mem_fun( &QWidget::show ) );
std::for_each( p->labels.begin(), p->labels.end(), mem_fun( &QWidget::show ) );
+
+ emit changed();
}
--- trunk/KDE/kdeedu/kig/modes/linkslabel.h #648658:648659
@@ -74,6 +74,11 @@
*/
void linkClicked( int i );
+ /**
+ * the structure of links and texts was changed
+ */
+ void changed();
+
private slots:
void urlClicked();
--- trunk/KDE/kdeedu/kig/modes/textlabelwizard.cc #648658:648659
@@ -21,60 +21,162 @@
#include "label.h"
#include "linkslabel.h"
+#include <qcheckbox.h>
+#include <qlabel.h>
#include <qlayout.h>
#include <qtextedit.h>
+#include <kdialog.h>
#include <ktoolinvocation.h>
+#include <kdebug.h>
+// defined in label.cc
+extern uint percentCount( const QString& s );
+
+class TextPage : public QWizardPage
+{
+public:
+ TextPage( QWidget* parent, TextLabelModeBase* mode );
+
+ QTextEdit* mtext;
+
+private:
+ TextLabelModeBase* mmode;
+};
+
+TextPage::TextPage( QWidget* parent, TextLabelModeBase* mode )
+ : QWizardPage( parent ), mmode( mode )
+{
+ setTitle( i18n( "Enter Label Text" ) );
+ setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding );
+ setFinalPage( true );
+
+ QVBoxLayout* lay = new QVBoxLayout( this );
+ lay->setMargin( 0 );
+ QLabel* label = new QLabel( this );
+ lay->addWidget( label );
+ label->setText(
+ i18n( "Enter the text for your label here and press \"Next\".\n"
+ "If you want to show variable parts, then put %1, %2, ... "
+ "at the appropriate places (e.g. \"This segment is %1 units "
+ "long.\").", QString( "%1" ), QString( "%2" ) ) ); // grrr i18n()
+ label->setAlignment( Qt::AlignTop );
+ label->setWordWrap( true );
+ mtext = new QTextEdit( this );
+ lay->addWidget( mtext );
+ QCheckBox* wantframe = new QCheckBox( this );
+ lay->addWidget( wantframe );
+ wantframe->setText( i18n( "Show text in a frame" ) );
+
+ registerField( "wantframe", wantframe );
+
+ connect( mtext, SIGNAL( textChanged() ), parent, SLOT( textChanged() ) );
+}
+
+
+class ArgsPage : public QWizardPage
+{
+public:
+ ArgsPage( QWidget* parent, TextLabelModeBase* mode );
+
+ virtual bool validatePage();
+
+ LinksLabel* mlinks;
+
+private:
+ TextLabelModeBase* mmode;
+};
+
+ArgsPage::ArgsPage( QWidget* parent, TextLabelModeBase* mode )
+ : QWizardPage( parent ), mmode( mode )
+{
+ setTitle( i18n( "Select Arguments" ) );
+ setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding );
+ setFinalPage( true );
+
+ QVBoxLayout* lay = new QVBoxLayout( this );
+ lay->setMargin( 0 );
+ QLabel* label = new QLabel( this );
+ lay->addWidget( label );
+ label->setText(
+ i18n( "Now select the argument(s) you need. For every argument, "
+ "click on it, select an object and a property in the Kig "
+ "window, and click finish when you are done..." ) );
+ label->setWordWrap( true );
+ mlinks = new LinksLabel( this );
+ lay->addWidget( mlinks );
+
+ connect( mlinks, SIGNAL( changed() ), this, SIGNAL( completeChanged() ) );
+}
+
+bool ArgsPage::validatePage()
+{
+ return mmode->canFinish();
+}
+
+
TextLabelWizard::TextLabelWizard( QWidget* parent, TextLabelModeBase* mode )
- : TextLabelWizardBase( parent, "TextLabelWizard" ), mmode( mode )
+ : QWizard( parent ), mmode( mode )
{
setModal( false );
- connect( labelTextInput, SIGNAL( textChanged() ),
- SLOT( textChanged() ) );
- connect( myCustomWidget1, SIGNAL( linkClicked( int ) ),
+ setObjectName( QLatin1String( "TextLabelWizard" ) );
+ setWindowTitle( KDialog::makeStandardCaption( i18n( "Construct Label" ) ) );
+ setOption( HaveHelpButton );
+ setOption( HaveFinishButtonOnEarlyPages );
+
+ mtextPage = new TextPage( this, mmode );
+ setPage( TextPageId, mtextPage );
+ margsPage = new ArgsPage( this, mmode );
+ setPage( ArgsPageId, margsPage );
+
+ connect( this, SIGNAL( helpRequested() ), this,
+ SLOT( slotHelpClicked() ) );
+ connect( linksLabel(), SIGNAL( linkClicked( int ) ),
SLOT( linkClicked( int ) ) );
- connect( this, SIGNAL( helpClicked() ),
- this, SLOT( slotHelpClicked() ) );
- labelTextInput->setFocus();
+ connect( this, SIGNAL( currentIdChanged( int ) ),
+ this, SLOT( currentIdChanged( int ) ) );
+
+ mtextPage->mtext->setFocus();
}
TextLabelWizard::~TextLabelWizard()
{
}
-void TextLabelWizard::back()
+LinksLabel* TextLabelWizard::linksLabel()
{
- if ( currentPage() == select_arguments_page )
- {
- mmode->enterTextPageEntered();
- }
- TextLabelWizardBase::back();
+ return margsPage->mlinks;
}
-void TextLabelWizard::next()
+QString TextLabelWizard::text() const
{
- if ( currentPage() == enter_text_page )
- {
- mmode->selectArgumentsPageEntered();
- }
- TextLabelWizardBase::next();
+ return mtextPage->mtext->toPlainText();
}
+void TextLabelWizard::setText( const QString& newtext )
+{
+ mtextPage->mtext->setPlainText( newtext );
+}
+
void TextLabelWizard::reject()
{
- TextLabelWizardBase::reject();
+ QWizard::reject();
mmode->cancelPressed();
}
void TextLabelWizard::accept()
{
+ QWizard::accept();
mmode->finishPressed();
}
void TextLabelWizard::textChanged()
{
- mmode->labelTextChanged();
+ uint percentcount = percentCount( text() );
+ bool finish = mmode->percentCountChanged( percentcount );
+ (void)finish;
+ button( QWizard::FinishButton )->setEnabled( percentcount == 0 );
+ button( QWizard::NextButton )->setEnabled( percentcount > 0 );
}
void TextLabelWizard::linkClicked( int which )
@@ -82,10 +184,23 @@
mmode->linkClicked( which );
}
-void TextLabelWizard::relayoutArgsPage()
+void TextLabelWizard::currentIdChanged( int id )
{
- vboxLayout1->activate();
- repaint();
+ switch ( id )
+ {
+ case TextPageId:
+ mmode->enterTextPageEntered();
+ // simulate a text change
+ textChanged();
+ break;
+ case ArgsPageId:
+ mmode->selectArgumentsPageEntered();
+ break;
+ case -1: // no id - skip it
+ break;
+ default:
+ ;
+ }
}
void TextLabelWizard::slotHelpClicked()
--- trunk/KDE/kdeedu/kig/modes/textlabelwizard.h #648658:648659
@@ -18,29 +18,40 @@
#ifndef KIG_MODES_TEXTLABELWIZARD_H
#define KIG_MODES_TEXTLABELWIZARD_H
-#include "textlabelwizardbase.h"
+#include <qwizard.h>
+class ArgsPage;
+class LinksLabel;
class TextLabelModeBase;
+class TextPage;
-class TextLabelWizard : public TextLabelWizardBase
+class TextLabelWizard : public QWizard
{
Q_OBJECT
public:
TextLabelWizard( QWidget* parent, TextLabelModeBase* mode );
~TextLabelWizard();
- void back();
- void next();
+ static const int TextPageId = 0;
+ static const int ArgsPageId = 1;
+
+ LinksLabel* linksLabel();
+ QString text() const;
+ void setText( const QString& newtext );
+
+public slots:
void reject();
void accept();
- void relayoutArgsPage();
private slots:
void textChanged();
void linkClicked( int which );
+ void currentIdChanged( int id );
void slotHelpClicked();
private:
TextLabelModeBase* mmode;
+ TextPage* mtextPage;
+ ArgsPage* margsPage;
};
#endif // TEXTLABELWIZARD_H
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic