• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdeedu API Reference
  • KDE Home
  • Contact Us
 

kig

  • sources
  • kde-4.12
  • kdeedu
  • kig
  • modes
macrowizard.cc
Go to the documentation of this file.
1 // Copyright (C) 2002 Dominique Devriese <devriese@kde.org>
2 
3 // This program is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU General Public License
5 // as published by the Free Software Foundation; either version 2
6 // of the License, or (at your option) any later version.
7 
8 // This program is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 // GNU General Public License for more details.
12 
13 // You should have received a copy of the GNU General Public License
14 // along with this program; if not, write to the Free Software
15 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
16 // 02110-1301, USA.
17 
18 #include "macrowizard.h"
19 #include "macrowizard.moc"
20 
21 #include "macro.h"
22 
23 #include <qlabel.h>
24 #include <qlayout.h>
25 
26 #include <kdebug.h>
27 #include <kdialog.h>
28 #include <kicondialog.h>
29 #include <klineedit.h>
30 #include <klocale.h>
31 #include <ktoolinvocation.h>
32 
33 class GivenArgsPage
34  : public QWizardPage
35 {
36 public:
37  GivenArgsPage( QWidget* parent, DefineMacroMode* mode );
38 
39  bool isComplete() const;
40 
41  void setChanged();
42 
43 private:
44  DefineMacroMode* mmode;
45 };
46 
47 GivenArgsPage::GivenArgsPage( QWidget* parent, DefineMacroMode* mode )
48  : QWizardPage( parent ), mmode( mode )
49 {
50  setTitle( i18n( "Given Objects" ) );
51  setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding );
52 
53  QVBoxLayout* lay = new QVBoxLayout( this );
54  lay->setMargin( 0 );
55  QLabel* label = new QLabel( this );
56  lay->addWidget( label );
57  label->setText( i18n( "Select the \"given\" objects for your new macro and press \"Next\"." ) );
58  label->setAlignment( Qt::AlignCenter );
59 }
60 
61 bool GivenArgsPage::isComplete() const
62 {
63  return mmode->hasGivenArgs();
64 }
65 
66 void GivenArgsPage::setChanged()
67 {
68  emit completeChanged();
69 }
70 
71 
72 class FinalArgsPage
73  : public QWizardPage
74 {
75 public:
76  FinalArgsPage( QWidget* parent, DefineMacroMode* mode );
77 
78  bool isComplete() const;
79  bool validatePage();
80 
81  void setChanged();
82 
83 private:
84  DefineMacroMode* mmode;
85 };
86 
87 FinalArgsPage::FinalArgsPage( QWidget* parent, DefineMacroMode* mode )
88  : QWizardPage( parent ), mmode( mode )
89 {
90  setTitle( i18n( "Final Object" ) );
91  setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding );
92 
93  QVBoxLayout* lay = new QVBoxLayout( this );
94  lay->setMargin( 0 );
95  QLabel* label = new QLabel( this );
96  lay->addWidget( label );
97  label->setText( i18n( "Select the final object(s) for your new macro." ) );
98  label->setAlignment( Qt::AlignCenter );
99 }
100 
101 bool FinalArgsPage::isComplete() const
102 {
103  return mmode->hasFinalArgs();
104 }
105 
106 bool FinalArgsPage::validatePage()
107 {
108  return mmode->validateObjects();
109 }
110 
111 void FinalArgsPage::setChanged()
112 {
113  emit completeChanged();
114 }
115 
116 
117 class MacroInfoPage
118  : public QWizardPage
119 {
120 public:
121  MacroInfoPage( QWidget* parent, DefineMacroMode* mode );
122 
123 private:
124  DefineMacroMode* mmode;
125 };
126 
127 MacroInfoPage::MacroInfoPage( QWidget* parent, DefineMacroMode* mode )
128  : QWizardPage( parent ), mmode( mode )
129 {
130  setTitle( i18n( "Name" ) );
131  setSubTitle( i18n( "Enter a name and description for your new type." ) );
132  setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding );
133  setFinalPage( true );
134 
135  QGridLayout* lay = new QGridLayout( this );
136  lay->setMargin( 0 );
137  QLabel* label = new QLabel( this );
138  lay->addWidget( label, 0, 0 );
139  label->setText( i18n( "&Name:" ) );
140  label->setAlignment( Qt::AlignRight );
141  KLineEdit* editname = new KLineEdit( this );
142  lay->addWidget( editname, 0, 1 );
143  label->setBuddy( editname );
144  label = new QLabel( this );
145  lay->addWidget( label, 1, 0 );
146  label->setText( i18n( "&Description:" ) );
147  label->setAlignment( Qt::AlignRight );
148  KLineEdit* editdesc = new KLineEdit( this );
149  lay->addWidget( editdesc, 1, 1 );
150  label->setBuddy( editdesc );
151  label = new QLabel( this );
152  label->setText( i18n( "&Icon:" ) );
153  label->setAlignment( Qt::AlignRight );
154  lay->addWidget( label, 2, 0 );
155  QHBoxLayout* iconlay = new QHBoxLayout();
156  lay->addLayout( iconlay, 2, 1 );
157  KIconButton* iconbutton = new KIconButton( this );
158  iconlay->addWidget( iconbutton );
159  label->setBuddy( iconbutton );
160  iconbutton->setIcon( "system-run" );
161  iconlay->addItem( new QSpacerItem( 5, 5, QSizePolicy::Expanding, QSizePolicy::Fixed ) );
162 
163  registerField( "name*", editname );
164  registerField( "description", editdesc );
165  registerField( "icon", iconbutton, "icon", SIGNAL( iconChanged( const QString& ) ) );
166 }
167 
168 
169 MacroWizard::MacroWizard( QWidget* parent, DefineMacroMode* m )
170  : QWizard( parent ), mmode( m )
171 {
172  setModal( false );
173  setObjectName( QLatin1String( "Define Macro Wizard" ) );
174  setWindowTitle( KDialog::makeStandardCaption( i18n( "Define New Macro" ) ) );
175  setOption( HaveHelpButton );
176 
177  mgivenArgsPage = new GivenArgsPage( this, mmode );
178  setPage( GivenArgsPageId, mgivenArgsPage );
179  mfinalArgsPage = new FinalArgsPage( this, mmode );
180  setPage( FinalArgsPageId, mfinalArgsPage );
181  setPage( MacroInfoPageId, new MacroInfoPage( this, mmode ) );
182 
183  connect( this, SIGNAL( helpRequested() ), this,
184  SLOT( slotHelpClicked() ) );
185  connect( this, SIGNAL( currentIdChanged( int ) ), this, SLOT( currentIdChanged( int ) ) );
186 }
187 
188 MacroWizard::~MacroWizard()
189 {
190 }
191 
192 void MacroWizard::reject()
193 {
194  QWizard::reject();
195  mmode->cancelPressed();
196 }
197 
198 void MacroWizard::accept()
199 {
200  QWizard::accept();
201  mmode->finishPressed();
202 }
203 
204 void MacroWizard::slotHelpClicked()
205 {
206  KToolInvocation::invokeHelp( "defining-macros", "kig" );
207 }
208 
209 void MacroWizard::currentIdChanged( int id )
210 {
211  switch ( id )
212  {
213  case GivenArgsPageId:
214  mmode->givenPageEntered();
215  break;
216  case FinalArgsPageId:
217  mmode->finalPageEntered();
218  break;
219  case -1: // no id - skip it
220  break;
221  default:
222  ;
223  }
224 }
225 
226 void MacroWizard::givenArgsChanged()
227 {
228  mgivenArgsPage->setChanged();
229 }
230 
231 void MacroWizard::finalArgsChanged()
232 {
233  mfinalArgsPage->setChanged();
234 }
DefineMacroMode::cancelPressed
void cancelPressed()
Definition: macro.cc:138
MacroWizard::accept
void accept()
Definition: macrowizard.cc:198
DefineMacroMode
Definition: macro.h:27
QWidget
MacroWizard::givenArgsChanged
void givenArgsChanged()
Definition: macrowizard.cc:226
MacroWizard::MacroWizard
MacroWizard(QWidget *parent, DefineMacroMode *m)
Definition: macrowizard.cc:169
MacroWizard::~MacroWizard
~MacroWizard()
Definition: macrowizard.cc:188
MacroWizard::MacroInfoPageId
static const int MacroInfoPageId
Definition: macrowizard.h:36
MacroWizard::finalArgsChanged
void finalArgsChanged()
Definition: macrowizard.cc:231
DefineMacroMode::finalPageEntered
void finalPageEntered()
Definition: macro.cc:70
macrowizard.h
MacroWizard::reject
void reject()
Definition: macrowizard.cc:192
DefineMacroMode::givenPageEntered
void givenPageEntered()
Definition: macro.cc:64
DefineMacroMode::finishPressed
void finishPressed()
Definition: macro.cc:115
MacroWizard::GivenArgsPageId
static const int GivenArgsPageId
Definition: macrowizard.h:34
macro.h
MacroWizard::FinalArgsPageId
static const int FinalArgsPageId
Definition: macrowizard.h:35
QWizard
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:35:39 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kig

Skip menu "kig"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

kdeedu API Reference

Skip menu "kdeedu API Reference"
  • Analitza
  •     lib
  • kalgebra
  • kalzium
  •   libscience
  • kanagram
  • kig
  •   lib
  • klettres
  • kstars
  • libkdeedu
  •   keduvocdocument
  • marble
  • parley
  • rocs
  •   App
  •   RocsCore
  •   VisualEditor
  •   stepcore

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal