• 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
construct_mode.cc
Go to the documentation of this file.
1 // Copyright (C) 2003 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 "construct_mode.h"
19 
20 #include "../objects/object_factory.h"
21 #include "../objects/object_drawer.h"
22 #include "../objects/text_type.h"
23 #include "../objects/text_imp.h"
24 #include "../objects/bogus_imp.h"
25 #include "../objects/point_imp.h"
26 #include "../misc/argsparser.h"
27 
28 #include "../kig/kig_document.h"
29 #include "../kig/kig_part.h"
30 #include "../kig/kig_view.h"
31 #include "../misc/object_constructor.h"
32 #include "../misc/coordinate_system.h"
33 #include "../misc/kigpainter.h"
34 #include "../misc/calcpaths.h"
35 
36 #include "popup/popup.h"
37 #include "popup/objectchooserpopup.h"
38 
39 #include <qevent.h>
40 
41 #include <kcursor.h>
42 #include <kaction.h>
43 
44 #include <algorithm>
45 #include <functional>
46 #include <iterator>
47 
48 static void redefinePoint( ObjectTypeCalcer* mpt, const Coordinate& c, KigDocument& doc, const KigWidget& w )
49 {
50  ObjectFactory::instance()->redefinePoint( mpt, c, doc, w );
51  mpt->calc( doc );
52 }
53 
54 BaseConstructMode::BaseConstructMode( KigPart& d )
55  : BaseMode( d )
56 {
57  mpt = ObjectFactory::instance()->fixedPointCalcer( Coordinate( 0, 0 ) );
58  mpt->calc( d.document() );
59  mcursor = ObjectFactory::instance()->cursorPointCalcer( Coordinate( 0, 0 ) );
60  mcursor->calc( d.document() );
61  mdoc.startObjectGroup();
62 }
63 
64 BaseConstructMode::~BaseConstructMode()
65 {
66  mdoc.finishObjectGroup();
67 
68  delete mcursor;
69 }
70 
71 void BaseConstructMode::leftReleased( QMouseEvent* e, KigWidget* v )
72 {
73  if( (pointLocation() - e->pos()).manhattanLength() > 4 ) return;
74 
75  ObjectHolder* o = 0;
76  bool keyCtrlOrShift = ( e->modifiers() & ( Qt::ControlModifier | Qt::ShiftModifier) ) != 0;
77  std::vector<ObjectHolder*> moco = oco();
78  if ( ! moco.empty() )
79  {
80  std::vector<ObjectHolder*> goodargs;
81  if ( !moco.empty() )
82  {
83  std::vector<ObjectHolder*>::const_iterator it;
84  std::vector<ObjectCalcer*> testargs = getCalcers( mparents );
85  for ( std::vector<ObjectHolder*>::const_iterator i = moco.begin(); i != moco.end(); ++i )
86  {
87  it = std::find( mparents.begin(), mparents.end(), *i );
88  bool newdup =
89  ( it == mparents.end() ) ||
90  isAlreadySelectedOK( testargs, it - mparents.begin() );
91  if ( newdup )
92  {
93  testargs.push_back( ( *i )->calcer() );
94  if ( wantArgs( testargs, mdoc.document(), *v ) )
95  goodargs.push_back( *i );
96  testargs.pop_back();
97  }
98  }
99  int id = ObjectChooserPopup::getObjectFromList( e->pos(), v, goodargs );
100  if ( id >= 0 )
101  o = goodargs[id];
102  }
103  }
104  leftClickedObject( o, e->pos(), *v, keyCtrlOrShift );
105  KigMode::leftReleased( e, v );
106 }
107 
108 void BaseConstructMode::leftClickedObject(
109  ObjectHolder* o, const QPoint& p, KigWidget& w, bool )
110 {
111  std::vector<ObjectHolder*>::iterator it = std::find( mparents.begin(), mparents.end(), o );
112  std::vector<ObjectCalcer*> nargs = getCalcers( mparents );
113 //
114 // mp: duplicationchecked controls whether the arguments list is
115 // free of duplications or if a duplication is safe (asking this to
116 // the Constructor class through the "isAlreadySelectedOK" method).
117 //
118  bool duplicationchecked =
119  ( it == mparents.end() ) ||
120  isAlreadySelectedOK( nargs, it - mparents.begin() );
121  if ( o && duplicationchecked )
122  {
123  nargs.push_back( o->calcer() );
124  if ( wantArgs( nargs, mdoc.document(), w ) )
125  {
126  selectObject( o, w );
127  return;
128  }
129  }
130 
131  nargs = getCalcers( mparents );
132  nargs.push_back( mpt.get() );
133  if ( wantArgs( nargs, mdoc.document(), w ) )
134  {
135  // add mpt to the document..
136  ObjectHolder* n = new ObjectHolder( mpt.get() );
137  mdoc.addObject( n );
138  selectObject( n, w );
139  // get a new mpt for our further use..
140  mpt = ObjectFactory::instance()->sensiblePointCalcer( w.fromScreen( p ), mdoc.document(), w );
141  mpt->calc( mdoc.document() );
142  return;
143  }
144 
145  nargs = getCalcers( mparents );
146  nargs.push_back( mcursor );
147 
148  if ( wantArgs( nargs, mdoc.document(), w ) )
149  {
150  // DON'T add mpt to the document..
151  // the objectholder has been constructed once and for all
152  // when entering construction mode, and delete in the
153  // destructor.
154  ObjectHolder* n = new ObjectHolder( mcursor );
155  selectObject( n, w );
156  mcursor = ObjectFactory::instance()->cursorPointCalcer( w.fromScreen( p ) );
157 // mcursor = ObjectFactory::instance()->sensiblePointCalcer( w.fromScreen( p ), mdoc.document(), w );
158  mcursor->calc( mdoc.document() );
159  delete n;
160  }
161 }
162 
163 void BaseConstructMode::midClicked( const QPoint& p, KigWidget& w )
164 {
165  std::vector<ObjectCalcer*> args = getCalcers( mparents );
166  args.push_back( mpt.get() );
167  if ( wantArgs( args, mdoc.document(), w ) )
168  {
169  ObjectHolder* n = new ObjectHolder( mpt.get() );
170  mdoc.addObject( n );
171 
172  selectObject( n, w );
173 
174  mpt = ObjectFactory::instance()->sensiblePointCalcer( w.fromScreen( p ), mdoc.document(), w );
175  mpt->calc( mdoc.document() );
176  }
177 }
178 
179 void BaseConstructMode::rightClicked( const std::vector<ObjectHolder*>&, const QPoint&, KigWidget& )
180 {
181  // TODO ?
182 }
183 
184 void BaseConstructMode::mouseMoved( const std::vector<ObjectHolder*>& os, const QPoint& p,
185  KigWidget& w, bool shiftpressed )
186 {
187  mdoc.emitStatusBarText( selectStatement( getCalcers( mparents ), w ) );
188 
189  w.updateCurPix();
190  KigPainter pter( w.screenInfo(), &w.curPix, mdoc.document() );
191 
192  Coordinate ncoord = w.fromScreen( p );
193  if ( shiftpressed )
194  ncoord = mdoc.document().coordinateSystem().snapToGrid( ncoord, w );
195 
196  redefinePoint( mpt.get(), ncoord, mdoc.document(), w );
197  mcursor->move( ncoord, mdoc.document() );
198  mcursor->calc( mdoc.document() );
199 
200  std::vector<ObjectCalcer*> args = getCalcers( mparents );
201  bool duplicationchecked = false;
202  std::vector<ObjectHolder*> goodargs;
203  if ( ! os.empty() )
204  {
205  std::vector<ObjectHolder*>::const_iterator it;
206  std::vector<ObjectCalcer*> testargs = getCalcers( mparents );
207  for ( std::vector<ObjectHolder*>::const_iterator i = os.begin(); i != os.end(); ++i )
208  {
209  it = std::find( mparents.begin(), mparents.end(), *i );
210  bool newdup =
211  ( it == mparents.end() ) ||
212  isAlreadySelectedOK( args, it - mparents.begin() );
213  if ( newdup )
214  {
215  testargs.push_back( ( *i )->calcer() );
216  if ( wantArgs( testargs, mdoc.document(), w ) )
217  goodargs.push_back( *i );
218  testargs.pop_back();
219  }
220  duplicationchecked |= newdup;
221  }
222  }
223  bool calcnow = ( goodargs.size() == 1 ) || ( ( goodargs.size() > 0 ) && ( goodargs.front()->imp()->inherits( PointImp::stype() ) ) );
224  if ( calcnow )
225  {
226  args.push_back( goodargs.front()->calcer() );
227  }
228 
229  if ( !os.empty() && duplicationchecked && calcnow )
230  {
231  handlePrelim( args, p, pter, w );
232 
233  w.setCursor( Qt::PointingHandCursor );
234  }
235  else
236  {
237  std::vector<ObjectCalcer*> args = getCalcers( mparents );
238  args.push_back( mpt.get() );
239  std::vector<ObjectCalcer*> argscursor = getCalcers( mparents );
240  argscursor.push_back( mcursor );
241  bool text = true;
242  if ( wantArgs( args, mdoc.document(), w ) )
243  {
244  ObjectDrawer d;
245  d.draw( *mpt->imp(), pter, true );
246 
247  handlePrelim( args, p, pter, w );
248 
249  w.setCursor( Qt::PointingHandCursor );
250  }
251  else if ( wantArgs( argscursor, mdoc.document(), w ) )
252  {
253  ObjectDrawer d;
254 // d.draw( *mcursor->imp(), pter, true );
255 
256  handlePrelim( argscursor, p, pter, w );
257 
258  w.setCursor( Qt::CrossCursor );
259  }
260  else
261  {
262  w.setCursor( Qt::ArrowCursor );
263  text = false;
264  }
265  if ( !text && ( goodargs.size() > 1 ) )
266  {
267  QString strwhich = i18n( "Which object?" );
268  mdoc.emitStatusBarText( strwhich );
269 
270  QPoint textloc = p;
271  textloc.setX( textloc.x() + 15 );
272  pter.drawTextStd( textloc, strwhich );
273 
274  w.setCursor( Qt::PointingHandCursor );
275  }
276  }
277  w.updateWidget( pter.overlay() );
278 }
279 
280 void BaseConstructMode::selectObject( ObjectHolder* o, KigWidget& w )
281 {
282  mparents.push_back( o );
283  std::vector<ObjectCalcer*> args = getCalcers( mparents );
284 
285  if ( wantArgs( args, mdoc.document(), w ) == ArgsParser::Complete )
286  {
287  handleArgs( args, w );
288  };
289 
290  w.redrawScreen( mparents );
291 }
292 
293 PointConstructMode::PointConstructMode( KigPart& d )
294  : BaseMode( d )
295 {
296  // we add the data objects to the document cause
297  // ObjectFactory::redefinePoint does that too, and this way, we can
298  // depend on them already being known by the doc when we add the
299  // mpt..
300  mpt = ObjectFactory::instance()->fixedPointCalcer( Coordinate() );
301  mpt->calc( d.document() );
302 
303  mdoc.emitStatusBarText( i18n( "Click the location where you want to place the new point, or the curve that you want to attach it to..." ) );
304 }
305 
306 PointConstructMode::~PointConstructMode()
307 {
308 }
309 
310 void PointConstructMode::leftClickedObject(
311  ObjectHolder*, const QPoint&, KigWidget& w, bool )
312 {
313  mdoc.addObject( new ObjectHolder( mpt.get() ) );
314  w.redrawScreen( std::vector<ObjectHolder*>() );
315 
316  mdoc.emitStatusBarText( QString() );
317  mdoc.doneMode( this );
318 }
319 
320 void PointConstructMode::midClicked( const QPoint& p, KigWidget& w )
321 {
322  leftClickedObject( 0, p, w, true );
323 }
324 
325 void PointConstructMode::rightClicked( const std::vector<ObjectHolder*>&, const QPoint&,
326  KigWidget& )
327 {
328  // TODO ?
329 }
330 
331 void PointConstructMode::mouseMoved(
332  const std::vector<ObjectHolder*>&,
333  const QPoint& p,
334  KigWidget& w,
335  bool shiftpressed )
336 {
337  w.updateCurPix();
338  KigPainter pter( w.screenInfo(), &w.curPix, mdoc.document() );
339 
340  Coordinate ncoord = w.fromScreen( p );
341  if ( shiftpressed )
342  ncoord = mdoc.document().coordinateSystem().snapToGrid( ncoord, w );
343 
344  redefinePoint( mpt.get(), ncoord, mdoc.document(), w );
345 
346  ObjectDrawer d;
347  d.draw( *mpt->imp(), pter, true );
348  w.setCursor( Qt::BlankCursor );
349 
350  w.updateWidget( pter.overlay() );
351 }
352 
353 void BaseConstructMode::enableActions()
354 {
355  BaseMode::enableActions();
356 
357  mdoc.aCancelConstruction->setEnabled( true );
358 }
359 
360 void BaseConstructMode::cancelConstruction()
361 {
362  mdoc.cancelObjectGroup();
363  finish();
364 }
365 
366 void PointConstructMode::enableActions()
367 {
368  BaseMode::enableActions();
369 
370  mdoc.aCancelConstruction->setEnabled( true );
371 }
372 
373 void PointConstructMode::cancelConstruction()
374 {
375  mdoc.doneMode( this );
376 }
377 
378 void BaseConstructMode::selectObjects( const std::vector<ObjectHolder*>& os, KigWidget& w )
379 {
380  for ( std::vector<ObjectHolder*>::const_iterator i = os.begin(); i != os.end(); ++i )
381  {
382  std::vector<ObjectCalcer*> args = getCalcers( mparents );
383  assert( wantArgs( args, mdoc.document(), w ) != ArgsParser::Complete );
384  selectObject( *i, w );
385  };
386 }
387 
388 void ConstructMode::handlePrelim( const std::vector<ObjectCalcer*>& args, const QPoint& p, KigPainter& pter, KigWidget& w )
389 {
390  // set the text next to the arrow cursor like in modes/normal.cc
391  QPoint textloc = p;
392  textloc.setX( textloc.x() + 15 );
393 
394  mctor->handlePrelim( pter, args, mdoc.document(), w );
395 
396  QString o = mctor->useText( *args.back(), args, mdoc.document(), w );
397  pter.drawTextStd( textloc, o );
398 }
399 
400 int ConstructMode::isAlreadySelectedOK( const std::vector<ObjectCalcer*>& os,
401  const int& pos )
402 {
403  return mctor->isAlreadySelectedOK( os, pos );
404 }
405 
406 int ConstructMode::wantArgs( const std::vector<ObjectCalcer*>& os, KigDocument& d, KigWidget& w )
407 {
408  return mctor->wantArgs( os, d, w );
409 }
410 
411 void BaseConstructMode::finish()
412 {
413  mdoc.doneMode( this );
414 }
415 
416 ConstructMode::ConstructMode( KigPart& d, const ObjectConstructor* ctor )
417  : BaseConstructMode( d ), mctor( ctor )
418 {
419 }
420 
421 ConstructMode::~ConstructMode()
422 {
423 }
424 
425 // does a test result have a frame by default ?
426 static const bool test_has_frame_dflt = true;
427 
428 void TestConstructMode::handlePrelim( const std::vector<ObjectCalcer*>& os, const QPoint& p, KigPainter& pter, KigWidget& w )
429 {
430  Args args;
431  std::transform( os.begin(), os.end(), std::back_inserter( args ),
432  std::mem_fun( &ObjectCalcer::imp ) );
433 
434  // usetext
435  QString usetext = i18n( mtype->argsParser().usetext( args.back(), args ).c_str() );
436  QPoint textloc = p;
437  textloc.setX( textloc.x() + 15 );
438  pter.drawTextStd( textloc, usetext );
439 
440  // test result
441  ObjectImp* data = mtype->calc( args, mdoc.document() );
442  if ( ! data->valid() ) return;
443  assert( data->inherits( TestResultImp::stype() ) );
444  QString outputtext = static_cast<TestResultImp*>( data )->data();
445  TextImp ti( outputtext, w.fromScreen( p + QPoint( - 40, 30 ) ), test_has_frame_dflt );
446  ti.draw( pter );
447 
448  delete data;
449 }
450 
451 TestConstructMode::TestConstructMode( KigPart& d, const ArgsParserObjectType* type )
452  : BaseConstructMode( d ), mtype( type )
453 {
454 }
455 
456 TestConstructMode::~TestConstructMode()
457 {
458 }
459 
460 void ConstructMode::handleArgs( const std::vector<ObjectCalcer*>& args, KigWidget& w )
461 {
462  mctor->handleArgs( args, mdoc, w );
463  finish();
464 }
465 
466 int TestConstructMode::isAlreadySelectedOK( const std::vector<ObjectCalcer*>&,
467  const int& )
468 {
469  return false;
470 }
471 
472 int TestConstructMode::wantArgs( const std::vector<ObjectCalcer*>& os, KigDocument&, KigWidget& )
473 {
474  return mtype->argsParser().check( os );
475 }
476 
477 void TestConstructMode::handleArgs( const std::vector<ObjectCalcer*>& args, KigWidget& )
478 {
479  mresult = new ObjectTypeCalcer( mtype, args );
480  mresult->calc( mdoc.document() );
481  mdoc.emitStatusBarText( i18n( "Now select the location for the result label." ) );
482 }
483 
484 void TestConstructMode::leftClickedObject( ObjectHolder* o, const QPoint& p,
485  KigWidget& w, bool ctrlOrShiftDown )
486 {
487  if ( mresult ) {
488  QPoint qloc = p + QPoint( -40, 0 );
489  Coordinate loc = w.fromScreen( qloc );
490 
491  std::vector<ObjectCalcer*> parents;
492  parents.push_back( new ObjectConstCalcer( new IntImp( test_has_frame_dflt ) ) );
493  parents.push_back( new ObjectConstCalcer( new PointImp( loc ) ) );
494  parents.push_back( new ObjectConstCalcer( new StringImp( QString::fromLatin1( "%1" ) ) ) );
495  assert( mresult->imp()->inherits( TestResultImp::stype() ) );
496 // parents.push_back(
497 // new ObjectPropertyCalcer(
498 // mresult.get(), "test-result" ) );
499 // parents.back()->calc( mdoc.document() );
500 
501 /* (mp)
502  * now we can refer directly to the TestResultImp, since it is also a StringImp
503  * this creates a backward compatibility issue with kig save files: new versions of
504  * kig can still read old saved files, but files created with the new kig version
505  * cannot be read by old versions of kig. This is necessary in order to allow a test
506  * result to also carry its intrinsic boolean value and thus be used in further
507  * constructions, e.g. as an argument to a python script.
508  */
509 
510  parents.push_back( mresult.get() );
511 
512  ObjectCalcer* ret = new ObjectTypeCalcer( TextType::instance(), parents );
513  ret->calc( mdoc.document() );
514  mdoc.addObject( new ObjectHolder( ret ) );
515 
516  w.unsetCursor();
517  mdoc.emitStatusBarText( QString() );
518 
519  finish();
520  }
521  else
522  BaseConstructMode::leftClickedObject( o, p, w, ctrlOrShiftDown );
523 }
524 
525 void TestConstructMode::midClicked( const QPoint& p, KigWidget& w )
526 {
527  if ( mresult ) {
528  // nothing to be done here, really
529  }
530  else
531  BaseConstructMode::midClicked( p, w );
532 }
533 
534 void TestConstructMode::rightClicked( const std::vector<ObjectHolder*>& oco, const QPoint& p, KigWidget& w )
535 {
536  if ( mresult ) {
537  // nothing to be done here, really
538  }
539  else
540  BaseConstructMode::rightClicked( oco, p, w );
541 }
542 
543 void TestConstructMode::mouseMoved( const std::vector<ObjectHolder*>& os, const QPoint& p, KigWidget& w, bool shiftPressed )
544 {
545  if ( mresult ) {
546  w.setCursor( Qt::BlankCursor );
547 
548  w.updateCurPix();
549  KigPainter pter( w.screenInfo(), &w.curPix, mdoc.document() );
550 
551  QPoint qloc = p + QPoint( -40, 0 );
552  Coordinate loc = w.fromScreen( qloc );
553  assert( dynamic_cast<const TestResultImp*>( mresult->imp() ) );
554  TextImp ti( static_cast<const TestResultImp*>( mresult->imp() )->data(), loc, test_has_frame_dflt );
555  ObjectDrawer d;
556  d.draw( ti, pter, false );
557 
558 
559  w.updateWidget( pter.overlay() );
560  }
561  else
562  BaseConstructMode::mouseMoved( os, p, w, shiftPressed );
563 }
564 
565 QString ConstructMode::selectStatement( const std::vector<ObjectCalcer*>& args, const KigWidget& w )
566 {
567  return mctor->selectStatement( args, mdoc.document(), w );
568 }
569 
570 QString TestConstructMode::selectStatement( const std::vector<ObjectCalcer*>& sel, const KigWidget& )
571 {
572  using namespace std;
573  Args args;
574  transform( sel.begin(), sel.end(), back_inserter( args ), mem_fun( &ObjectCalcer::imp ) );
575 
576  std::string ret = mtype->argsParser().selectStatement( args );
577  if ( ret.empty() ) return QString();
578  return i18n( ret.c_str() );
579 }
580 
581 void PointConstructMode::redrawScreen( KigWidget* w )
582 {
583  w->redrawScreen( std::vector<ObjectHolder*>() );
584 }
585 
586 void BaseConstructMode::redrawScreen( KigWidget* w )
587 {
588  w->redrawScreen( std::vector<ObjectHolder*>() );
589 }
BaseConstructMode::handleArgs
virtual void handleArgs(const std::vector< ObjectCalcer * > &args, KigWidget &w)=0
popup.h
BaseConstructMode::midClicked
void midClicked(const QPoint &p, KigWidget &w)
Definition: construct_mode.cc:163
ObjectFactory::instance
static const ObjectFactory * instance()
Definition: object_factory.cc:90
BaseConstructMode::cancelConstruction
void cancelConstruction()
Definition: construct_mode.cc:360
TestConstructMode::handleArgs
void handleArgs(const std::vector< ObjectCalcer * > &args, KigWidget &w)
Definition: construct_mode.cc:477
ObjectTypeCalcer::move
void move(const Coordinate &to, const KigDocument &doc)
This is the method that does the real moving work.
Definition: object_calcer.cc:296
ObjectImp::inherits
bool inherits(const ObjectImpType *t) const
Returns true if this ObjectImp inherits the ObjectImp type represented by t.
Definition: object_imp.cc:279
BaseConstructMode
Definition: construct_mode.h:58
ConstructMode::handleArgs
void handleArgs(const std::vector< ObjectCalcer * > &args, KigWidget &w)
Definition: construct_mode.cc:460
PointConstructMode::redrawScreen
void redrawScreen(KigWidget *)
Redraw the document on KigWidget w .
Definition: construct_mode.cc:581
ArgsParserObjectType
This is a convenience subclass of ObjectType that a type should inherit from if its parents can be sp...
Definition: object_type.h:113
StringImp
This ObjectImp is a BogusImp containing only a string value.
Definition: bogus_imp.h:167
PointConstructMode::mouseMoved
void mouseMoved(const std::vector< ObjectHolder * > &os, const QPoint &p, KigWidget &w, bool shiftpressed)
Definition: construct_mode.cc:331
TestConstructMode::selectStatement
QString selectStatement(const std::vector< ObjectCalcer * > &args, const KigWidget &w)
Definition: construct_mode.cc:570
CoordinateSystem::snapToGrid
virtual Coordinate snapToGrid(const Coordinate &c, const KigWidget &w) const =0
BaseConstructMode::handlePrelim
virtual void handlePrelim(const std::vector< ObjectCalcer * > &os, const QPoint &p, KigPainter &, KigWidget &w)=0
ObjectConstCalcer
This is an ObjectCalcer that keeps an ObjectImp, and never calculates a new one.
Definition: object_calcer.h:232
BaseConstructMode::finish
void finish()
Definition: construct_mode.cc:411
TestConstructMode::~TestConstructMode
~TestConstructMode()
Definition: construct_mode.cc:456
BaseConstructMode::mouseMoved
void mouseMoved(const std::vector< ObjectHolder * > &os, const QPoint &p, KigWidget &w, bool shiftpressed)
Definition: construct_mode.cc:184
redefinePoint
static void redefinePoint(ObjectTypeCalcer *mpt, const Coordinate &c, KigDocument &doc, const KigWidget &w)
Definition: construct_mode.cc:48
TextImp
Definition: text_imp.h:26
ObjectFactory::fixedPointCalcer
ObjectTypeCalcer * fixedPointCalcer(const Coordinate &c) const
Definition: object_factory.cc:50
objectchooserpopup.h
BaseConstructMode::redrawScreen
void redrawScreen(KigWidget *)
Redraw the document on KigWidget w .
Definition: construct_mode.cc:586
KigPart::document
const KigDocument & document() const
Definition: kig_part.cpp:989
ObjectConstructor::selectStatement
virtual QString selectStatement(const std::vector< ObjectCalcer * > &sel, const KigDocument &d, const KigWidget &w) const =0
return a string describing what argument you want next, if the given selection of objects were select...
PointConstructMode::cancelConstruction
void cancelConstruction()
Definition: construct_mode.cc:373
PointConstructMode::PointConstructMode
PointConstructMode(KigPart &d)
Definition: construct_mode.cc:293
KigPart::emitStatusBarText
void emitStatusBarText(const QString &text)
Definition: kig_part.cpp:695
ObjectDrawer::draw
void draw(const ObjectImp &imp, KigPainter &p, bool selected) const
Draw the object imp on kigpainter p .
Definition: object_drawer.cc:29
ArgsParser::Complete
Definition: argsparser.h:112
ObjectChooserPopup::getObjectFromList
static int getObjectFromList(const QPoint &p, KigWidget *w, const std::vector< ObjectHolder * > &objs, bool givepopup=true)
Get the index of the chosen object from a list of objects.
Definition: objectchooserpopup.cc:26
ConstructMode::ConstructMode
ConstructMode(KigPart &d, const ObjectConstructor *ctor)
Definition: construct_mode.cc:416
PointConstructMode::rightClicked
void rightClicked(const std::vector< ObjectHolder * > &oco, const QPoint &p, KigWidget &w)
Definition: construct_mode.cc:325
KigPart::finishObjectGroup
void finishObjectGroup()
Draws the current group of objects and add them as a whole to the Undo history.
Definition: kig_part.cpp:574
BaseMode
The BaseMode is a particular mode that allows an easy mapping of the mouse actions to real...
Definition: base_mode.h:33
ObjectTypeCalcer
This is an ObjectCalcer that uses one of the various ObjectType's to calculate its ObjectImp...
Definition: object_calcer.h:183
PointConstructMode::enableActions
void enableActions()
actions: we enable the actions we want when our mode is made active.
Definition: construct_mode.cc:366
IntImp
This ObjectImp is a BogusImp containing only an int value.
Definition: bogus_imp.h:128
KigMode::mdoc
KigPart & mdoc
Definition: mode.h:94
ObjectConstructor::handlePrelim
virtual void handlePrelim(KigPainter &p, const std::vector< ObjectCalcer * > &sel, const KigDocument &d, const KigWidget &v) const =0
show a preliminary version of what you would do when handleArgs would be called.
ObjectType::calc
virtual ObjectImp * calc(const Args &parents, const KigDocument &d) const =0
Coordinate
The Coordinate class is the basic class representing a 2D location by its x and y components...
Definition: coordinate.h:33
TestConstructMode::isAlreadySelectedOK
int isAlreadySelectedOK(const std::vector< ObjectCalcer * > &, const int &)
Definition: construct_mode.cc:466
ObjectConstructor
This class represents a way to construct a set of objects from a set of other objects.
Definition: object_constructor.h:44
BaseMode::oco
std::vector< ObjectHolder * > oco()
Definition: base_mode.cc:153
KigWidget::screenInfo
const ScreenInfo & screenInfo() const
the part of the document we're currently showing i.e.
Definition: kig_view.cpp:272
TestConstructMode::TestConstructMode
TestConstructMode(KigPart &d, const ArgsParserObjectType *type)
Definition: construct_mode.cc:451
TextImp::draw
void draw(KigPainter &p) const
Definition: text_imp.cc:48
ObjectFactory::redefinePoint
void redefinePoint(ObjectTypeCalcer *point, const Coordinate &c, KigDocument &d, const KigWidget &w) const
set point to what sensiblePoint would have returned.
Definition: object_factory.cc:497
ConstructMode::isAlreadySelectedOK
int isAlreadySelectedOK(const std::vector< ObjectCalcer * > &, const int &)
Definition: construct_mode.cc:400
KigPainter
KigPainter is an extended QPainter.
Definition: kigpainter.h:51
TestConstructMode::handlePrelim
void handlePrelim(const std::vector< ObjectCalcer * > &os, const QPoint &p, KigPainter &, KigWidget &w)
Definition: construct_mode.cc:428
ObjectHolder
An ObjectHolder represents an object as it is known to the document.
Definition: object_holder.h:40
ObjectTypeCalcer::imp
const ObjectImp * imp() const
Returns the ObjectImp of this ObjectCalcer.
Definition: object_calcer.cc:100
TestResultImp::stype
static const ObjectImpType * stype()
Definition: bogus_imp.cc:294
PointImp
An ObjectImp representing a point.
Definition: point_imp.h:27
ObjectCalcer
An ObjectCalcer is an object that represents an algorithm for calculating an ObjectImp from other Obj...
Definition: object_calcer.h:66
Args
std::vector< const ObjectImp * > Args
Definition: objects/common.h:47
KigWidget::fromScreen
const Coordinate fromScreen(const QPoint &p)
Definition: kig_view.cpp:282
BaseMode::enableActions
void enableActions()
actions: we enable the actions we want when our mode is made active.
Definition: base_mode.cc:148
TestConstructMode::mouseMoved
void mouseMoved(const std::vector< ObjectHolder * > &os, const QPoint &p, KigWidget &w, bool shiftpressed)
Definition: construct_mode.cc:543
ObjectConstructor::handleArgs
virtual void handleArgs(const std::vector< ObjectCalcer * > &os, KigPart &d, KigWidget &v) const =0
do something fun with os .
ObjectCalcer::calc
virtual void calc(const KigDocument &)=0
Makes the ObjectCalcer recalculate its ObjectImp from its parents.
KigWidget
This class is the real widget showing the document.
Definition: kig_view.h:50
BaseConstructMode::selectObject
void selectObject(ObjectHolder *o, KigWidget &w)
Definition: construct_mode.cc:280
ArgsParserObjectType::argsParser
const ArgsParser & argsParser() const
Definition: object_type.cc:81
KigPart::startObjectGroup
void startObjectGroup()
Call this method to start an object group which will be deleted as a whole if the construction is can...
Definition: kig_part.cpp:558
ObjectConstructor::useText
virtual QString useText(const ObjectCalcer &o, const std::vector< ObjectCalcer * > &sel, const KigDocument &d, const KigWidget &v) const =0
return a string describing what you would use o for if it were selected...
KigPart::doneMode
void doneMode(KigMode *)
Definition: kig_part.cpp:749
TestConstructMode::wantArgs
int wantArgs(const std::vector< ObjectCalcer * > &, KigDocument &d, KigWidget &w)
Definition: construct_mode.cc:472
KigWidget::updateCurPix
void updateCurPix(const std::vector< QRect > &=std::vector< QRect >())
update curPix (bitBlt stillPix onto curPix..)
Definition: kig_view.cpp:187
BaseConstructMode::leftClickedObject
void leftClickedObject(ObjectHolder *o, const QPoint &p, KigWidget &w, bool ctrlOrShiftDown)
Definition: construct_mode.cc:108
ObjectFactory::cursorPointCalcer
ObjectTypeCalcer * cursorPointCalcer(const Coordinate &c) const
this returns a CursorPointType; this is used during special constructions (e.g.
Definition: object_factory.cc:81
PointConstructMode::~PointConstructMode
~PointConstructMode()
Definition: construct_mode.cc:306
ObjectHolder::calcer
const ObjectCalcer * calcer() const
Definition: object_holder.cc:53
ObjectConstructor::wantArgs
virtual int wantArgs(const std::vector< ObjectCalcer * > &os, const KigDocument &d, const KigWidget &v) const =0
can this constructor do something useful with os ? return ArgsParser::Complete, Valid or NotGood ...
ConstructMode::handlePrelim
void handlePrelim(const std::vector< ObjectCalcer * > &os, const QPoint &p, KigPainter &, KigWidget &w)
Definition: construct_mode.cc:388
ObjectConstructor::isAlreadySelectedOK
virtual bool isAlreadySelectedOK(const std::vector< ObjectCalcer * > &os, const uint &) const =0
the following function is called in case of duplication of arguments and returns true if this is acce...
KigPart::addObject
void addObject(ObjectHolder *inObject)
Definition: kig_part.cpp:492
BaseConstructMode::~BaseConstructMode
virtual ~BaseConstructMode()
Definition: construct_mode.cc:64
ConstructMode::selectStatement
QString selectStatement(const std::vector< ObjectCalcer * > &args, const KigWidget &w)
Definition: construct_mode.cc:565
construct_mode.h
ObjectDrawer
A class holding some information about how a certain object is drawn on the window.
Definition: object_drawer.h:47
BaseConstructMode::wantArgs
virtual int wantArgs(const std::vector< ObjectCalcer * > &, KigDocument &d, KigWidget &w)=0
ObjectFactory::sensiblePointCalcer
ObjectTypeCalcer * sensiblePointCalcer(const Coordinate &c, const KigDocument &d, const KigWidget &w) const
this returns a "sensible point".
Definition: object_factory.cc:96
KigWidget::curPix
QPixmap curPix
temporary, gets bitBlt'd (copied) onto the widget (to avoid flickering)
Definition: kig_view.h:84
getCalcers
std::vector< ObjectCalcer * > getCalcers(const std::vector< ObjectHolder * > &os)
get the calcers that the holders represent ( not their namecalcers )
Definition: common.cc:34
TestConstructMode::leftClickedObject
void leftClickedObject(ObjectHolder *o, const QPoint &p, KigWidget &w, bool ctrlOrShiftDown)
Definition: construct_mode.cc:484
PointImp::stype
static const ObjectImpType * stype()
Returns the ObjectImpType representing PointImp's.
Definition: point_imp.cc:159
BaseConstructMode::selectStatement
virtual QString selectStatement(const std::vector< ObjectCalcer * > &args, const KigWidget &w)=0
PointConstructMode::leftClickedObject
void leftClickedObject(ObjectHolder *o, const QPoint &p, KigWidget &w, bool ctrlOrShiftDown)
Definition: construct_mode.cc:310
KigWidget::updateWidget
void updateWidget(const std::vector< QRect > &=std::vector< QRect >())
this means bitBlting curPix on the actual widget...
Definition: kig_view.cpp:115
BaseConstructMode::enableActions
void enableActions()
actions: we enable the actions we want when our mode is made active.
Definition: construct_mode.cc:353
KigDocument
KigDocument is the class holding the real data in a Kig document.
Definition: kig_document.h:36
BaseConstructMode::selectObjects
void selectObjects(const std::vector< ObjectHolder * > &os, KigWidget &w)
Definition: construct_mode.cc:378
BaseMode::pointLocation
QPoint pointLocation()
Definition: base_mode.cc:158
ObjectCalcer::imp
virtual const ObjectImp * imp() const =0
Returns the ObjectImp of this ObjectCalcer.
ArgsParser::usetext
std::string usetext(const ObjectImp *o, const Args &sel) const
returns the usetext for the argument that o would be used for, if sel were used as parents...
Definition: argsparser.cpp:192
KigMode::leftReleased
virtual void leftReleased(QMouseEvent *, KigWidget *)
Definition: mode.cc:60
ObjectTypeCalcer::calc
void calc(const KigDocument &doc)
Makes the ObjectCalcer recalculate its ObjectImp from its parents.
Definition: object_calcer.cc:32
ArgsParser::check
int check(const Args &os) const
Definition: argsparser.cpp:99
ObjectImp
The ObjectImp class represents the behaviour of an object after it is calculated. ...
Definition: object_imp.h:226
ObjectImp::valid
bool valid() const
Returns true if this is a valid ObjectImp.
Definition: object_imp.cc:41
KigPart
This is a "Part".
Definition: kig_part.h:68
BaseConstructMode::isAlreadySelectedOK
virtual int isAlreadySelectedOK(const std::vector< ObjectCalcer * > &, const int &)=0
BaseConstructMode::BaseConstructMode
BaseConstructMode(KigPart &d)
Definition: construct_mode.cc:54
TextType::instance
static const TextType * instance()
Definition: text_type.cc:237
test_has_frame_dflt
static const bool test_has_frame_dflt
Definition: construct_mode.cc:426
myboost::intrusive_ptr::get
T * get() const
Definition: boost_intrusive_pointer.hpp:122
ConstructMode::~ConstructMode
~ConstructMode()
Definition: construct_mode.cc:421
KigDocument::coordinateSystem
const CoordinateSystem & coordinateSystem() const
Definition: kig_document.cc:40
KigPart::aCancelConstruction
KAction * aCancelConstruction
Definition: kig_part.h:236
KigPart::cancelObjectGroup
void cancelObjectGroup()
Deletes the current group of objects from the document without adding them to the Undo history...
Definition: kig_part.cpp:567
KigWidget::redrawScreen
void redrawScreen(const std::vector< ObjectHolder * > &selection, bool paintOnWidget=true)
Definition: kig_view.cpp:252
BaseConstructMode::rightClicked
void rightClicked(const std::vector< ObjectHolder * > &oco, const QPoint &p, KigWidget &w)
Definition: construct_mode.cc:179
TestResultImp
Definition: bogus_imp.h:253
TestConstructMode::midClicked
void midClicked(const QPoint &p, KigWidget &w)
Definition: construct_mode.cc:525
ConstructMode::wantArgs
int wantArgs(const std::vector< ObjectCalcer * > &, KigDocument &d, KigWidget &w)
Definition: construct_mode.cc:406
TestConstructMode::rightClicked
void rightClicked(const std::vector< ObjectHolder * > &oco, const QPoint &p, KigWidget &w)
Definition: construct_mode.cc:534
PointConstructMode::midClicked
void midClicked(const QPoint &p, KigWidget &w)
Definition: construct_mode.cc:320
KigPainter::drawTextStd
void drawTextStd(const QPoint &p, const QString &s)
draws text in a standard manner, convenience function...
Definition: kigpainter.cpp:531
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