• 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
  • misc
object_constructor.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 "object_constructor.h"
19 
20 #include "argsparser.h"
21 #include "kigpainter.h"
22 #include "guiaction.h"
23 
24 #include "../kig/kig_part.h"
25 #include "../kig/kig_view.h"
26 
27 #include "../objects/object_holder.h"
28 #include "../objects/object_drawer.h"
29 #include "../objects/object_type.h"
30 #include "../objects/other_type.h"
31 #include "../objects/object_imp.h"
32 #include "../objects/bogus_imp.h"
33 #include "../objects/line_imp.h"
34 #include "../objects/circle_imp.h"
35 #include "../objects/point_imp.h"
36 
37 #include "../modes/construct_mode.h"
38 
39 #include <qpen.h>
40 
41 #include <klocale.h>
42 
43 #include <algorithm>
44 #include <functional>
45 #include <iterator>
46 
47 const QString StandardConstructorBase::descriptiveName() const
48 {
49  return i18n( mdescname );
50 }
51 
52 const QString StandardConstructorBase::description() const
53 {
54  return i18n( mdesc );
55 }
56 
57 const QByteArray StandardConstructorBase::iconFileName( const bool ) const
58 {
59  return miconfile;
60 }
61 
62 bool StandardConstructorBase::isAlreadySelectedOK( const std::vector<ObjectCalcer*>&, const uint& ) const
63 {
64  return false;
65 }
66 
67 StandardConstructorBase::StandardConstructorBase(
68  const char* descname, const char* desc,
69  const char* iconfile, const ArgsParser& parser )
70  : mdescname( descname ),
71  mdesc( desc ),
72  miconfile( iconfile ),
73  margsparser( parser )
74 {
75 }
76 
77 int StandardConstructorBase::wantArgs( const std::vector<ObjectCalcer*>& os,
78  const KigDocument&,
79  const KigWidget& ) const
80 {
81  return margsparser.check( os );
82 }
83 
84 void StandardConstructorBase::handleArgs(
85  const std::vector<ObjectCalcer*>& os, KigPart& d,
86  KigWidget& v ) const
87 {
88  std::vector<ObjectHolder*> bos = build( os, d.document(), v );
89  for ( std::vector<ObjectHolder*>::iterator i = bos.begin();
90  i != bos.end(); ++i )
91  {
92  (*i)->calc( d.document() );
93  }
94 
95  d.addObjects( bos );
96 }
97 
98 void StandardConstructorBase::handlePrelim(
99  KigPainter& p, const std::vector<ObjectCalcer*>& os,
100  const KigDocument& d, const KigWidget&
101  ) const
102 {
103  assert ( margsparser.check( os ) != ArgsParser::Invalid );
104  std::vector<ObjectCalcer*> args = margsparser.parse( os );
105  p.setBrushStyle( Qt::NoBrush );
106  p.setBrushColor( Qt::red );
107  p.setPen( QPen ( Qt::red, 1) );
108  p.setWidth( -1 ); // -1 means the default width for the object being
109  // drawn..
110 
111  ObjectDrawer drawer( Qt::red );
112  drawprelim( drawer, p, args, d );
113 }
114 
115 SimpleObjectTypeConstructor::SimpleObjectTypeConstructor(
116  const ArgsParserObjectType* t, const char* descname,
117  const char* desc, const char* iconfile )
118  : StandardConstructorBase( descname, desc, iconfile,
119  t->argsParser() ),
120  mtype( t )
121 {
122 }
123 
124 SimpleObjectTypeConstructor::~SimpleObjectTypeConstructor()
125 {
126 }
127 
128 void SimpleObjectTypeConstructor::drawprelim( const ObjectDrawer& drawer, KigPainter& p, const std::vector<ObjectCalcer*>& parents,
129  const KigDocument& doc ) const
130 {
131  Args args;
132  using namespace std;
133  transform( parents.begin(), parents.end(),
134  back_inserter( args ), mem_fun( &ObjectCalcer::imp ) );
135  ObjectImp* data = mtype->calc( args, doc );
136  drawer.draw( *data, p, true );
137  delete data;
138 }
139 
140 std::vector<ObjectHolder*> SimpleObjectTypeConstructor::build(
141  const std::vector<ObjectCalcer*>& os, KigDocument&, KigWidget& ) const
142 {
143  ObjectTypeCalcer* calcer = new ObjectTypeCalcer( mtype, os );
144  ObjectHolder* h = new ObjectHolder( calcer );
145  std::vector<ObjectHolder*> ret;
146  ret.push_back( h );
147  return ret;
148 }
149 
150 StandardConstructorBase::~StandardConstructorBase()
151 {
152 }
153 
154 MultiObjectTypeConstructor::MultiObjectTypeConstructor(
155  const ArgsParserObjectType* t, const char* descname,
156  const char* desc, const char* iconfile,
157  const std::vector<int>& params )
158  : StandardConstructorBase( descname, desc, iconfile, mparser ),
159  mtype( t ), mparams( params ),
160  mparser( t->argsParser().without( IntImp::stype() ) )
161 {
162 }
163 
164 MultiObjectTypeConstructor::MultiObjectTypeConstructor(
165  const ArgsParserObjectType* t, const char* descname,
166  const char* desc, const char* iconfile,
167  int a, int b, int c, int d )
168  : StandardConstructorBase( descname, desc, iconfile, mparser ),
169  mtype( t ), mparams(),
170  mparser( t->argsParser().without( IntImp::stype() ) )
171 {
172  mparams.push_back( a );
173  mparams.push_back( b );
174  if ( c != -999 ) mparams.push_back( c );
175  if ( d != -999 ) mparams.push_back( d );
176 }
177 
178 MultiObjectTypeConstructor::~MultiObjectTypeConstructor()
179 {
180 }
181 
182 void MultiObjectTypeConstructor::drawprelim( const ObjectDrawer& drawer, KigPainter& p, const std::vector<ObjectCalcer*>& parents,
183  const KigDocument& doc ) const
184 {
185  Args args;
186  using namespace std;
187  transform( parents.begin(), parents.end(),
188  back_inserter( args ), mem_fun( &ObjectCalcer::imp ) );
189 
190  for ( vector<int>::const_iterator i = mparams.begin(); i != mparams.end(); ++i )
191  {
192  IntImp param( *i );
193  args.push_back( &param );
194  ObjectImp* data = mtype->calc( args, doc );
195  drawer.draw( *data, p, true );
196  delete data;
197  args.pop_back();
198  };
199 }
200 
201 std::vector<ObjectHolder*> MultiObjectTypeConstructor::build(
202  const std::vector<ObjectCalcer*>& os, KigDocument&, KigWidget& ) const
203 {
204  std::vector<ObjectHolder*> ret;
205  for ( std::vector<int>::const_iterator i = mparams.begin();
206  i != mparams.end(); ++i )
207  {
208  ObjectConstCalcer* d = new ObjectConstCalcer( new IntImp( *i ) );
209 
210  std::vector<ObjectCalcer*> args( os );
211  args.push_back( d );
212 
213  ret.push_back( new ObjectHolder( new ObjectTypeCalcer( mtype, args ) ) );
214  };
215  return ret;
216 }
217 
218 MergeObjectConstructor::~MergeObjectConstructor()
219 {
220  for ( vectype::iterator i = mctors.begin(); i != mctors.end(); ++i )
221  delete *i;
222 }
223 
224 MergeObjectConstructor::MergeObjectConstructor(
225  const char* descname, const char* desc, const char* iconfilename )
226  : ObjectConstructor(), mdescname( descname ), mdesc( desc ),
227  miconfilename( iconfilename ), mctors()
228 {
229 }
230 
231 ObjectConstructor::~ObjectConstructor()
232 {
233 }
234 
235 void MergeObjectConstructor::merge( ObjectConstructor* e )
236 {
237  mctors.push_back( e );
238 }
239 
240 const QString MergeObjectConstructor::descriptiveName() const
241 {
242  return i18n( mdescname );
243 }
244 
245 const QString MergeObjectConstructor::description() const
246 {
247  return i18n( mdesc );
248 }
249 
250 const QByteArray MergeObjectConstructor::iconFileName( const bool ) const
251 {
252  return miconfilename;
253 }
254 
255 bool MergeObjectConstructor::isAlreadySelectedOK( const std::vector<ObjectCalcer*>&, const uint& ) const
256 {
257  return false;
258 }
259 
260 int MergeObjectConstructor::wantArgs(
261  const std::vector<ObjectCalcer*>& os, const KigDocument& d, const KigWidget& v ) const
262 {
263  for ( vectype::const_iterator i = mctors.begin(); i != mctors.end(); ++i )
264  {
265  int w = (*i)->wantArgs( os, d, v );
266  if ( w != ArgsParser::Invalid ) return w;
267  };
268  return ArgsParser::Invalid;
269 }
270 
271 void MergeObjectConstructor::handleArgs(
272  const std::vector<ObjectCalcer*>& os, KigPart& d, KigWidget& v ) const
273 {
274  for ( vectype::const_iterator i = mctors.begin(); i != mctors.end(); ++i )
275  {
276  int w = (*i)->wantArgs( os, d.document(), v );
277  if ( w == ArgsParser::Complete )
278  {
279  (*i)->handleArgs( os, d, v );
280  return;
281  };
282  };
283  assert( false );
284 }
285 
286 void MergeObjectConstructor::handlePrelim(
287  KigPainter& p, const std::vector<ObjectCalcer*>& sel,
288  const KigDocument& d, const KigWidget& v ) const
289 {
290  for ( vectype::const_iterator i = mctors.begin(); i != mctors.end(); ++i )
291  {
292  int w = (*i)->wantArgs( sel, d, v );
293  if ( w != ArgsParser::Invalid )
294  {
295  (*i)->handlePrelim( p, sel, d, v );
296  return;
297  };
298  };
299 }
300 
301 QString StandardConstructorBase::useText( const ObjectCalcer& o, const std::vector<ObjectCalcer*>& sel,
302  const KigDocument&, const KigWidget& ) const
303 {
304  using namespace std;
305  Args args;
306  transform( sel.begin(), sel.end(), back_inserter( args ), mem_fun( &ObjectCalcer::imp ) );
307 
308  std::string ret = margsparser.usetext( o.imp(), args );
309  if ( ret.empty() ) return QString();
310  return i18n( ret.c_str() );
311 }
312 
313 QString StandardConstructorBase::selectStatement(
314  const std::vector<ObjectCalcer*>& sel, const KigDocument&,
315  const KigWidget& ) const
316 {
317  using namespace std;
318  Args args;
319  transform( sel.begin(), sel.end(), back_inserter( args ), mem_fun( &ObjectCalcer::imp ) );
320 
321  std::string ret = margsparser.selectStatement( args );
322  if ( ret.empty() ) return QString();
323  return i18n( ret.c_str() );
324 }
325 
326 QString MergeObjectConstructor::useText( const ObjectCalcer& o, const std::vector<ObjectCalcer*>& sel,
327  const KigDocument& d, const KigWidget& v ) const
328 {
329  for ( vectype::const_iterator i = mctors.begin(); i != mctors.end(); ++i )
330  {
331  std::vector<ObjectCalcer*> args( sel );
332  int w = (*i)->wantArgs( args, d, v );
333  if ( w != ArgsParser::Invalid ) return (*i)->useText( o, sel, d, v );
334  };
335  return QString();
336 }
337 
338 QString MergeObjectConstructor::selectStatement(
339  const std::vector<ObjectCalcer*>& sel, const KigDocument& d,
340  const KigWidget& w ) const
341 {
342  for ( vectype::const_iterator i = mctors.begin(); i != mctors.end(); ++i )
343  {
344  std::vector<ObjectCalcer*> args( sel );
345  int wa = (*i)->wantArgs( args, d, w );
346  if ( wa != ArgsParser::Invalid ) return (*i)->selectStatement( sel, d, w );
347  };
348  return QString();
349 }
350 
351 MacroConstructor::MacroConstructor( const ObjectHierarchy& hier, const QString& name,
352  const QString& desc, const QByteArray& iconfile )
353  : ObjectConstructor(), mhier( hier ), mname( name ), mdesc( desc ),
354  mbuiltin( false ), miconfile( iconfile ),
355  mparser( mhier.argParser() )
356 {
357 }
358 
359 MacroConstructor::MacroConstructor(
360  const std::vector<ObjectCalcer*>& input, const std::vector<ObjectCalcer*>& output,
361  const QString& name, const QString& description,
362  const QByteArray& iconfile )
363  : ObjectConstructor(), mhier( input, output ),
364  mname( name ), mdesc( description ), mbuiltin( false ),
365  miconfile( iconfile ),
366  mparser( mhier.argParser() )
367 {
368 }
369 
370 MacroConstructor::~MacroConstructor()
371 {
372 }
373 
374 const QString MacroConstructor::descriptiveName() const
375 {
376  return mname;
377 }
378 
379 const QString MacroConstructor::description() const
380 {
381  return mdesc;
382 }
383 
384 const QByteArray MacroConstructor::iconFileName( const bool canBeNull ) const
385 {
386  return ( miconfile.isNull() && !canBeNull ) ? QByteArray( "system-run" ) : miconfile;
387 }
388 
389 bool MacroConstructor::isAlreadySelectedOK( const std::vector<ObjectCalcer*>&, const uint& ) const
390 {
391  return false;
392 }
393 
394 int MacroConstructor::wantArgs( const std::vector<ObjectCalcer*>& os, const KigDocument&,
395  const KigWidget& ) const
396 {
397  return mparser.check( os );
398 }
399 
400 void MacroConstructor::handleArgs( const std::vector<ObjectCalcer*>& os, KigPart& d,
401  KigWidget& ) const
402 {
403  std::vector<ObjectCalcer*> args = mparser.parse( os );
404  std::vector<ObjectCalcer*> bos = mhier.buildObjects( args, d.document() );
405  std::vector<ObjectHolder*> hos;
406  for ( std::vector<ObjectCalcer*>::iterator i = bos.begin();
407  i != bos.end(); ++i )
408  {
409  hos.push_back( new ObjectHolder( *i ) );
410  hos.back()->calc( d.document() );
411  }
412 
413  d.addObjects( hos );
414 }
415 
416 QString MacroConstructor::selectStatement(
417  const std::vector<ObjectCalcer*>& sel, const KigDocument&,
418  const KigWidget& ) const
419 {
420  using namespace std;
421  Args args;
422  transform( sel.begin(), sel.end(), back_inserter( args ),
423  mem_fun( &ObjectCalcer::imp ) );
424  std::string ret = mparser.selectStatement( args );
425  if ( ret.empty() ) return QString();
426  else return i18n( ret.c_str() );
427 }
428 
429 QString MacroConstructor::useText( const ObjectCalcer& o, const std::vector<ObjectCalcer*>& sel,
430  const KigDocument&, const KigWidget&
431  ) const
432 {
433  using namespace std;
434  Args args;
435  transform( sel.begin(), sel.end(), back_inserter( args ),
436  mem_fun( &ObjectCalcer::imp ) );
437  std::string ret = mparser.usetext( o.imp(), args );
438  if ( ret.empty() ) return QString();
439  else return i18n( ret.c_str() );
440 }
441 
442 void MacroConstructor::handlePrelim( KigPainter& p, const std::vector<ObjectCalcer*>& sel,
443  const KigDocument& doc, const KigWidget&
444  ) const
445 {
446  if ( sel.size() != mhier.numberOfArgs() ) return;
447 
448  using namespace std;
449  Args args;
450  transform( sel.begin(), sel.end(), back_inserter( args ),
451  mem_fun( &ObjectCalcer::imp ) );
452  args = mparser.parse( args );
453  std::vector<ObjectImp*> ret = mhier.calc( args, doc );
454  for ( uint i = 0; i < ret.size(); ++i )
455  {
456  ObjectDrawer d;
457  d.draw( *ret[i], p, true );
458  ret[i]->draw( p );
459  delete ret[i];
460  };
461 }
462 
463 void SimpleObjectTypeConstructor::plug( KigPart*, KigGUIAction* )
464 {
465 }
466 
467 void MultiObjectTypeConstructor::plug( KigPart*, KigGUIAction* )
468 {
469 }
470 
471 void MergeObjectConstructor::plug( KigPart*, KigGUIAction* )
472 {
473 }
474 
475 void MacroConstructor::plug( KigPart* doc, KigGUIAction* kact )
476 {
477  if ( mbuiltin ) return;
478  if ( mhier.numberOfResults() != 1 )
479  doc->aMNewOther.append( kact );
480  else
481  {
482  if ( mhier.idOfLastResult() == SegmentImp::stype() )
483  doc->aMNewSegment.append( kact );
484  else if ( mhier.idOfLastResult() == PointImp::stype() )
485  doc->aMNewPoint.append( kact );
486  else if ( mhier.idOfLastResult() == CircleImp::stype() )
487  doc->aMNewCircle.append( kact );
488  else if ( mhier.idOfLastResult()->inherits( AbstractLineImp::stype() ) )
489  // line or ray
490  doc->aMNewLine.append( kact );
491  else if ( mhier.idOfLastResult() == ConicImp::stype() )
492  doc->aMNewConic.append( kact );
493  else doc->aMNewOther.append( kact );
494  };
495  doc->aMNewAll.append( kact );
496 }
497 
498 const ObjectHierarchy& MacroConstructor::hierarchy() const
499 {
500  return mhier;
501 }
502 
503 bool SimpleObjectTypeConstructor::isTransform() const
504 {
505  return mtype->isTransform();
506 }
507 
508 bool MultiObjectTypeConstructor::isTransform() const
509 {
510  return mtype->isTransform();
511 }
512 
513 bool MergeObjectConstructor::isTransform() const
514 {
515  bool ret = false;
516  for ( vectype::const_iterator i = mctors.begin(); i != mctors.end(); ++i )
517  ret |= (*i)->isTransform();
518  return ret;
519 }
520 
521 bool MacroConstructor::isTransform() const
522 {
523  return false;
524 }
525 
526 void MacroConstructor::setBuiltin( bool builtin )
527 {
528  mbuiltin = builtin;
529 }
530 
531 bool ObjectConstructor::isIntersection() const
532 {
533  return false;
534 }
535 
536 PropertyObjectConstructor::PropertyObjectConstructor(
537  const ObjectImpType* imprequirement, const char* usetext,
538  const char* selectstat, const char* descname, const char* desc,
539  const char* iconfile, const char* propertyinternalname )
540  : StandardConstructorBase( descname, desc, iconfile, mparser ),
541  mpropinternalname( propertyinternalname )
542 {
543  ArgsParser::spec argsspec[1];
544  argsspec[0].type = imprequirement;
545  argsspec[0].usetext = usetext;
546  argsspec[0].selectstat = selectstat;
547  mparser.initialize( argsspec, 1 );
548 }
549 
550 PropertyObjectConstructor::~PropertyObjectConstructor()
551 {
552 }
553 
554 void PropertyObjectConstructor::drawprelim(
555  const ObjectDrawer& drawer, KigPainter& p, const std::vector<ObjectCalcer*>& parents,
556  const KigDocument& d ) const
557 {
558  int index = parents[0]->imp()->propertiesInternalNames().indexOf( mpropinternalname );
559  assert ( index != -1 );
560  ObjectImp* imp = parents[0]->imp()->property( index, d );
561  drawer.draw( *imp, p, true );
562  delete imp;
563 }
564 
565 std::vector<ObjectHolder*> PropertyObjectConstructor::build(
566  const std::vector<ObjectCalcer*>& parents, KigDocument&,
567  KigWidget& ) const
568 {
569 // int index = parents[0]->imp()->propertiesInternalNames().indexOf( mpropinternalname );
570 // assert( index != -1 );
571  std::vector<ObjectHolder*> ret;
572  ret.push_back(
573  new ObjectHolder(
574  new ObjectPropertyCalcer( parents[0], mpropinternalname ) ) );
575  return ret;
576 }
577 
578 void PropertyObjectConstructor::plug( KigPart*, KigGUIAction* )
579 {
580 }
581 
582 bool PropertyObjectConstructor::isTransform() const
583 {
584  return false;
585 }
586 
587 bool ObjectConstructor::isTest() const
588 {
589  return false;
590 }
591 
592 BaseConstructMode* ObjectConstructor::constructMode( KigPart& doc )
593 {
594  return new ConstructMode( doc, this );
595 }
596 
597 void MacroConstructor::setName( const QString& name )
598 {
599  mname = name;
600 }
601 
602 void MacroConstructor::setDescription( const QString& desc )
603 {
604  mdesc = desc;
605 }
606 
607 void MacroConstructor::setIcon( QByteArray& icon )
608 {
609  miconfile = icon;
610 }
MacroConstructor::isAlreadySelectedOK
bool isAlreadySelectedOK(const std::vector< ObjectCalcer * > &os, const uint &) const
the following function is called in case of duplication of arguments and returns true if this is acce...
Definition: object_constructor.cc:389
StandardConstructorBase::isAlreadySelectedOK
bool isAlreadySelectedOK(const std::vector< ObjectCalcer * > &os, const uint &) const
the following function is called in case of duplication of arguments and returns true if this is acce...
Definition: object_constructor.cc:62
ObjectImpType
Instances of this class represent a certain ObjectImp type.
Definition: object_imp.h:95
ObjectHierarchy::idOfLastResult
const ObjectImpType * idOfLastResult() const
Definition: object_hierarchy.cc:634
MergeObjectConstructor::isTransform
bool isTransform() const
Definition: object_constructor.cc:513
StandardConstructorBase::wantArgs
virtual int wantArgs(const std::vector< ObjectCalcer * > &os, const KigDocument &d, const KigWidget &v) const
can this constructor do something useful with os ? return ArgsParser::Complete, Valid or NotGood ...
Definition: object_constructor.cc:77
ObjectHierarchy
Definition: object_hierarchy.h:30
BaseConstructMode
Definition: construct_mode.h:58
MacroConstructor::descriptiveName
const QString descriptiveName() const
Definition: object_constructor.cc:374
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
KigPainter::setBrushColor
void setBrushColor(const QColor &c)
Definition: kigpainter.cpp:265
MergeObjectConstructor::iconFileName
const QByteArray iconFileName(const bool canBeNull=false) const
Definition: object_constructor.cc:250
SimpleObjectTypeConstructor::SimpleObjectTypeConstructor
SimpleObjectTypeConstructor(const ArgsParserObjectType *t, const char *descname, const char *desc, const char *iconfile)
Definition: object_constructor.cc:115
KigPart::aMNewSegment
QList< QAction * > aMNewSegment
Definition: kig_part.h:227
StandardConstructorBase::~StandardConstructorBase
virtual ~StandardConstructorBase()
Definition: object_constructor.cc:150
ObjectConstCalcer
This is an ObjectCalcer that keeps an ObjectImp, and never calculates a new one.
Definition: object_calcer.h:232
MultiObjectTypeConstructor::plug
void plug(KigPart *doc, KigGUIAction *kact)
Definition: object_constructor.cc:467
MacroConstructor::hierarchy
const ObjectHierarchy & hierarchy() const
Definition: object_constructor.cc:498
MacroConstructor::handlePrelim
void handlePrelim(KigPainter &p, const std::vector< ObjectCalcer * > &sel, const KigDocument &d, const KigWidget &v) const
show a preliminary version of what you would do when handleArgs would be called.
Definition: object_constructor.cc:442
PropertyObjectConstructor::~PropertyObjectConstructor
~PropertyObjectConstructor()
Definition: object_constructor.cc:550
MacroConstructor::MacroConstructor
MacroConstructor(const std::vector< ObjectCalcer * > &input, const std::vector< ObjectCalcer * > &output, const QString &name, const QString &description, const QByteArray &iconfile=0)
Definition: object_constructor.cc:359
ObjectImp::property
virtual ObjectImp * property(int which, const KigDocument &d) const
Definition: object_imp.cc:70
KigPart::document
const KigDocument & document() const
Definition: kig_part.cpp:989
KigPart::aMNewLine
QList< QAction * > aMNewLine
Definition: kig_part.h:230
ObjectImpType::inherits
bool inherits(const ObjectImpType *t) const
Does the ObjectImp type represented by this instance inherit the ObjectImp type represented by t ...
Definition: object_imp.cc:224
MergeObjectConstructor::handlePrelim
void handlePrelim(KigPainter &p, const std::vector< ObjectCalcer * > &sel, const KigDocument &d, const KigWidget &v) const
show a preliminary version of what you would do when handleArgs would be called.
Definition: object_constructor.cc:286
MacroConstructor::description
const QString description() const
Definition: object_constructor.cc:379
StandardConstructorBase::build
virtual std::vector< ObjectHolder * > build(const std::vector< ObjectCalcer * > &os, KigDocument &d, KigWidget &w) const =0
kigpainter.h
MacroConstructor::~MacroConstructor
~MacroConstructor()
Definition: object_constructor.cc:370
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
MacroConstructor::handleArgs
void handleArgs(const std::vector< ObjectCalcer * > &os, KigPart &d, KigWidget &v) const
do something fun with os .
Definition: object_constructor.cc:400
ArgsParser::spec::type
const ObjectImpType * type
Definition: argsparser.h:113
MultiObjectTypeConstructor::isTransform
bool isTransform() const
Definition: object_constructor.cc:508
ObjectTypeCalcer
This is an ObjectCalcer that uses one of the various ObjectType's to calculate its ObjectImp...
Definition: object_calcer.h:183
StandardConstructorBase::iconFileName
const QByteArray iconFileName(const bool canBeNull=false) const
Definition: object_constructor.cc:57
IntImp
This ObjectImp is a BogusImp containing only an int value.
Definition: bogus_imp.h:128
ArgsParser::initialize
void initialize(const std::vector< spec > &args)
Definition: argsparser.cpp:42
ObjectConstructor::isIntersection
virtual bool isIntersection() const
Definition: object_constructor.cc:531
ArgsParser::spec::usetext
std::string usetext
Definition: argsparser.h:113
StandardConstructorBase::selectStatement
QString selectStatement(const std::vector< ObjectCalcer * > &sel, const KigDocument &d, const KigWidget &w) const
return a string describing what argument you want next, if the given selection of objects were select...
Definition: object_constructor.cc:313
StandardConstructorBase::useText
QString useText(const ObjectCalcer &o, const std::vector< ObjectCalcer * > &sel, const KigDocument &d, const KigWidget &v) const
return a string describing what you would use o for if it were selected...
Definition: object_constructor.cc:301
StandardConstructorBase::drawprelim
virtual void drawprelim(const ObjectDrawer &drawer, KigPainter &p, const std::vector< ObjectCalcer * > &parents, const KigDocument &) const =0
MacroConstructor::iconFileName
const QByteArray iconFileName(const bool canBeNull=false) const
Definition: object_constructor.cc:384
MacroConstructor::plug
void plug(KigPart *doc, KigGUIAction *kact)
Definition: object_constructor.cc:475
KigGUIAction
Definition: guiaction.h:34
SimpleObjectTypeConstructor::isTransform
bool isTransform() const
Definition: object_constructor.cc:503
MacroConstructor::selectStatement
QString selectStatement(const std::vector< ObjectCalcer * > &sel, const KigDocument &d, const KigWidget &w) const
return a string describing what argument you want next, if the given selection of objects were select...
Definition: object_constructor.cc:416
ObjectConstructor
This class represents a way to construct a set of objects from a set of other objects.
Definition: object_constructor.h:44
SimpleObjectTypeConstructor::drawprelim
void drawprelim(const ObjectDrawer &drawer, KigPainter &p, const std::vector< ObjectCalcer * > &parents, const KigDocument &) const
Definition: object_constructor.cc:128
ObjectHierarchy::numberOfArgs
uint numberOfArgs() const
Definition: object_hierarchy.h:99
StandardConstructorBase::handleArgs
void handleArgs(const std::vector< ObjectCalcer * > &os, KigPart &d, KigWidget &v) const
do something fun with os .
Definition: object_constructor.cc:84
MacroConstructor::wantArgs
int wantArgs(const std::vector< ObjectCalcer * > &os, const KigDocument &d, const KigWidget &v) const
can this constructor do something useful with os ? return ArgsParser::Complete, Valid or NotGood ...
Definition: object_constructor.cc:394
StandardConstructorBase::StandardConstructorBase
StandardConstructorBase(const char *descname, const char *desc, const char *iconfile, const ArgsParser &parser)
Definition: object_constructor.cc:67
PropertyObjectConstructor::PropertyObjectConstructor
PropertyObjectConstructor(const ObjectImpType *imprequirement, const char *usetext, const char *selectstat, const char *descname, const char *desc, const char *iconfile, const char *propertyinternalname)
Definition: object_constructor.cc:536
KigPainter
KigPainter is an extended QPainter.
Definition: kigpainter.h:51
SimpleObjectTypeConstructor::~SimpleObjectTypeConstructor
~SimpleObjectTypeConstructor()
Definition: object_constructor.cc:124
MergeObjectConstructor::isAlreadySelectedOK
virtual bool isAlreadySelectedOK(const std::vector< ObjectCalcer * > &os, const uint &) const
the following function is called in case of duplication of arguments and returns true if this is acce...
Definition: object_constructor.cc:255
KigPainter::setWidth
void setWidth(int c)
setting this to -1 means to use the default width for the object being drawn.
Definition: kigpainter.cpp:232
ObjectHolder
An ObjectHolder represents an object as it is known to the document.
Definition: object_holder.h:40
MergeObjectConstructor::plug
void plug(KigPart *doc, KigGUIAction *kact)
Definition: object_constructor.cc:471
PropertyObjectConstructor::build
std::vector< ObjectHolder * > build(const std::vector< ObjectCalcer * > &os, KigDocument &d, KigWidget &w) const
Definition: object_constructor.cc:565
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
MacroConstructor::isTransform
bool isTransform() const
is this the ctor for a transformation type.
Definition: object_constructor.cc:521
StandardConstructorBase
This class provides wraps ObjectConstructor in a more simple interface for the most common object typ...
Definition: object_constructor.h:133
MultiObjectTypeConstructor::MultiObjectTypeConstructor
MultiObjectTypeConstructor(const ArgsParserObjectType *t, const char *descname, const char *desc, const char *iconfile, const std::vector< int > &params)
Definition: object_constructor.cc:154
SimpleObjectTypeConstructor::build
std::vector< ObjectHolder * > build(const std::vector< ObjectCalcer * > &os, KigDocument &d, KigWidget &w) const
Definition: object_constructor.cc:140
KigPainter::setBrushStyle
void setBrushStyle(Qt::BrushStyle c)
Definition: kigpainter.cpp:259
ArgsParser::Invalid
Definition: argsparser.h:112
KigWidget
This class is the real widget showing the document.
Definition: kig_view.h:50
ObjectConstructor::~ObjectConstructor
virtual ~ObjectConstructor()
Definition: object_constructor.cc:231
SegmentImp::stype
static const ObjectImpType * stype()
Returns the ObjectImpType representing the SegmentImp type.
Definition: line_imp.cc:545
ObjectPropertyCalcer
This is an ObjectCalcer that has a single parent, and gets a certain property from it in its calc() m...
Definition: object_calcer.h:276
ArgsParser::spec
Definition: argsparser.h:113
ArgsParser
This class is meant to take care of checking the types of the parents to ObjectCalcer's, and to put them in the correct order.
Definition: argsparser.h:106
MultiObjectTypeConstructor::drawprelim
void drawprelim(const ObjectDrawer &drawer, KigPainter &p, const std::vector< ObjectCalcer * > &parents, const KigDocument &) const
Definition: object_constructor.cc:182
MacroConstructor::setDescription
void setDescription(const QString &desc)
Definition: object_constructor.cc:602
CircleImp::stype
static const ObjectImpType * stype()
Returns the ObjectImpType representing the CircleImp type.
Definition: circle_imp.cc:342
MultiObjectTypeConstructor::~MultiObjectTypeConstructor
~MultiObjectTypeConstructor()
Definition: object_constructor.cc:178
PropertyObjectConstructor::plug
void plug(KigPart *doc, KigGUIAction *kact)
Definition: object_constructor.cc:578
ObjectHierarchy::numberOfResults
uint numberOfResults() const
Definition: object_hierarchy.h:100
MultiObjectTypeConstructor::build
std::vector< ObjectHolder * > build(const std::vector< ObjectCalcer * > &os, KigDocument &d, KigWidget &w) const
Definition: object_constructor.cc:201
MacroConstructor::setName
void setName(const QString &name)
Definition: object_constructor.cc:597
ObjectDrawer
A class holding some information about how a certain object is drawn on the window.
Definition: object_drawer.h:47
KigPart::aMNewCircle
QList< QAction * > aMNewCircle
Definition: kig_part.h:229
ObjectHierarchy::buildObjects
std::vector< ObjectCalcer * > buildObjects(const std::vector< ObjectCalcer * > &os, const KigDocument &) const
build a set of objects that interdepend according to this ObjectHierarchy.
Definition: object_hierarchy.cc:613
PointImp::stype
static const ObjectImpType * stype()
Returns the ObjectImpType representing PointImp's.
Definition: point_imp.cc:159
MergeObjectConstructor::selectStatement
QString selectStatement(const std::vector< ObjectCalcer * > &sel, const KigDocument &d, const KigWidget &w) const
return a string describing what argument you want next, if the given selection of objects were select...
Definition: object_constructor.cc:338
KigPainter::setPen
void setPen(const QPen &p)
Definition: kigpainter.cpp:244
ConicImp::stype
static const ObjectImpType * stype()
Returns the ObjectImpType representing the ConicImp type.
Definition: conic_imp.cc:380
KigDocument
KigDocument is the class holding the real data in a Kig document.
Definition: kig_document.h:36
MacroConstructor::useText
QString useText(const ObjectCalcer &o, const std::vector< ObjectCalcer * > &sel, const KigDocument &d, const KigWidget &v) const
return a string describing what you would use o for if it were selected...
Definition: object_constructor.cc:429
AbstractLineImp::stype
static const ObjectImpType * stype()
Returns the ObjectImpType representing the AbstractLineImp type.
Definition: line_imp.cc:520
ObjectConstructor::isTest
virtual bool isTest() const
Definition: object_constructor.cc:587
StandardConstructorBase::descriptiveName
const QString descriptiveName() const
Definition: object_constructor.cc:47
ObjectCalcer::imp
virtual const ObjectImp * imp() const =0
Returns the ObjectImp of this ObjectCalcer.
ObjectConstructor::constructMode
virtual BaseConstructMode * constructMode(KigPart &doc)
Which construct mode should be used for this ObjectConstructor.
Definition: object_constructor.cc:592
ArgsParser::spec::selectstat
std::string selectstat
Definition: argsparser.h:113
guiaction.h
MergeObjectConstructor::wantArgs
int wantArgs(const std::vector< ObjectCalcer * > &os, const KigDocument &d, const KigWidget &v) const
can this constructor do something useful with os ? return ArgsParser::Complete, Valid or NotGood ...
Definition: object_constructor.cc:260
StandardConstructorBase::description
const QString description() const
Definition: object_constructor.cc:52
MacroConstructor::setIcon
void setIcon(QByteArray &icon)
Definition: object_constructor.cc:607
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
KigPart
This is a "Part".
Definition: kig_part.h:68
argsparser.h
KigPart::aMNewPoint
QList< QAction * > aMNewPoint
Definition: kig_part.h:228
KigPart::addObjects
void addObjects(const std::vector< ObjectHolder * > &os)
Definition: kig_part.cpp:503
MergeObjectConstructor::handleArgs
void handleArgs(const std::vector< ObjectCalcer * > &os, KigPart &d, KigWidget &v) const
do something fun with os .
Definition: object_constructor.cc:271
MergeObjectConstructor::descriptiveName
const QString descriptiveName() const
Definition: object_constructor.cc:240
SimpleObjectTypeConstructor::plug
void plug(KigPart *doc, KigGUIAction *kact)
Definition: object_constructor.cc:463
MacroConstructor::setBuiltin
void setBuiltin(bool builtin)
Definition: object_constructor.cc:526
MergeObjectConstructor::~MergeObjectConstructor
~MergeObjectConstructor()
Definition: object_constructor.cc:218
ConstructMode
Definition: construct_mode.h:114
MergeObjectConstructor::MergeObjectConstructor
MergeObjectConstructor(const char *descname, const char *desc, const char *iconfilename)
Definition: object_constructor.cc:224
StandardConstructorBase::handlePrelim
void handlePrelim(KigPainter &p, const std::vector< ObjectCalcer * > &sel, const KigDocument &d, const KigWidget &v) const
show a preliminary version of what you would do when handleArgs would be called.
Definition: object_constructor.cc:98
KigPart::aMNewConic
QList< QAction * > aMNewConic
Definition: kig_part.h:233
PropertyObjectConstructor::isTransform
bool isTransform() const
Definition: object_constructor.cc:582
MergeObjectConstructor::useText
QString useText(const ObjectCalcer &o, const std::vector< ObjectCalcer * > &sel, const KigDocument &d, const KigWidget &v) const
return a string describing what you would use o for if it were selected...
Definition: object_constructor.cc:326
uint
unsigned int uint
Definition: object_imp.h:87
PropertyObjectConstructor::drawprelim
void drawprelim(const ObjectDrawer &drawer, KigPainter &p, const std::vector< ObjectCalcer * > &parents, const KigDocument &) const
Definition: object_constructor.cc:554
MergeObjectConstructor::merge
void merge(ObjectConstructor *e)
Definition: object_constructor.cc:235
KigPart::aMNewOther
QList< QAction * > aMNewOther
Definition: kig_part.h:231
MergeObjectConstructor::description
const QString description() const
Definition: object_constructor.cc:245
KigPart::aMNewAll
QList< QAction * > aMNewAll
Definition: kig_part.h:232
ArgsParser::parse
Args parse(const Args &os) const
Definition: argsparser.cpp:135
object_constructor.h
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