• 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
  • popup
objectconstructoractionsprovider.cc
Go to the documentation of this file.
1 
20 #include "objectconstructoractionsprovider.h"
21 
22 #include "../../kig/kig_part.h"
23 #include "../../kig/kig_view.h"
24 #include "../../misc/argsparser.h"
25 #include "../../misc/lists.h"
26 #include "../../misc/object_constructor.h"
27 #include "../../modes/construct_mode.h"
28 #include "../../modes/normal.h"
29 
30 void ObjectConstructorActionsProvider::fillUpMenu( NormalModePopupObjects& popup, int menu, int& nextfree )
31 {
32  const KigDocument& d = popup.part().document();
33  const KigWidget& v = popup.widget();
34  typedef ObjectConstructorList::vectype vectype;
35  vectype vec = ObjectConstructorList::instance()->constructors();
36 
37  for ( vectype::iterator i = vec.begin(); i != vec.end(); ++i )
38  {
39  bool add = false;
40  if ( popup.objects().empty() )
41  {
42  add = menu == NormalModePopupObjects::StartMenu && ! (*i)->isTransform() && ! (*i)->isTest();
43  }
44  else
45  {
46  int ret = (*i)->wantArgs( getCalcers( popup.objects() ), d, v );
47  if ( ret == ArgsParser::Invalid ) continue;
48  if ( (*i)->isTransform() && popup.objects().size() == 1 ) add = menu == NormalModePopupObjects::TransformMenu;
49  else if ( (*i)->isTest() ) add = menu == NormalModePopupObjects::TestMenu;
50  else if ( ( *i )->isIntersection() ) add = menu == NormalModePopupObjects::ToplevelMenu;
51  else if ( ret == ArgsParser::Complete ) add = menu == NormalModePopupObjects::ConstructMenu;
52  else add = menu == NormalModePopupObjects::StartMenu;
53  };
54  if ( add )
55  {
56  QByteArray iconfile = (*i)->iconFileName();
57  if ( !iconfile.isEmpty() && !iconfile.isNull() )
58  {
59  popup.addInternalAction( menu, KIcon( iconfile, popup.part().iconLoader() ), (*i)->descriptiveName(), nextfree++ );
60  }
61  else
62  popup.addInternalAction( menu, (*i)->descriptiveName(), nextfree++ );
63  mctors[menu].push_back( *i );
64  }
65  };
66 }
67 
68 bool ObjectConstructorActionsProvider::executeAction(
69  int menu, int& id, const std::vector<ObjectHolder*>& os,
70  NormalModePopupObjects&,
71  KigPart& doc, KigWidget& w, NormalMode& m )
72 {
73  if ( (uint) id >= mctors[menu].size() )
74  {
75  id -= mctors[menu].size();
76  return false;
77  }
78 
79  ObjectConstructor* ctor = mctors[menu][id];
80  std::vector<ObjectCalcer*> osc = getCalcers( os );
81  if ( ! os.empty() && ctor->wantArgs( osc, doc.document(), w ) == ArgsParser::Complete )
82  {
83  ctor->handleArgs( osc, doc, w );
84  m.clearSelection();
85  }
86  else
87  {
88  BaseConstructMode* mode = ctor->constructMode( doc );
89  mode->selectObjects( os, w );
90  doc.runMode( mode );
91  delete mode;
92  };
93  return true;
94 }
95 
NormalModePopupObjects::widget
KigWidget & widget()
Definition: popup.h:71
NormalModePopupObjects::part
KigPart & part()
Definition: popup.h:70
objectconstructoractionsprovider.h
BaseConstructMode
Definition: construct_mode.h:58
ObjectConstructorActionsProvider::executeAction
bool executeAction(int menu, int &id, const std::vector< ObjectHolder * > &os, NormalModePopupObjects &popup, KigPart &doc, KigWidget &w, NormalMode &m)
try to execute the id'th action you added to menu menu in popup popup ( first is 0 )...
Definition: objectconstructoractionsprovider.cc:68
NormalModePopupObjects::addInternalAction
QAction * addInternalAction(int menu, const QString &name, int id)
Definition: popup.cc:276
KigPart::document
const KigDocument & document() const
Definition: kig_part.cpp:989
NormalModePopupObjects::ToplevelMenu
Definition: popup.h:60
NormalModePopupObjects::StartMenu
Definition: popup.h:59
NormalModePopupObjects::TransformMenu
Definition: popup.h:59
ArgsParser::Complete
Definition: argsparser.h:112
ObjectConstructor
This class represents a way to construct a set of objects from a set of other objects.
Definition: object_constructor.h:44
NormalModePopupObjects
This is the popup menu that appears when you click on selected objects in NormalMode.
Definition: popup.h:46
KigPart::runMode
void runMode(KigMode *)
Definition: kig_part.cpp:735
ObjectConstructor::handleArgs
virtual void handleArgs(const std::vector< ObjectCalcer * > &os, KigPart &d, KigWidget &v) const =0
do something fun with os .
ArgsParser::Invalid
Definition: argsparser.h:112
KigWidget
This class is the real widget showing the document.
Definition: kig_view.h:50
ObjectConstructorList::instance
static ObjectConstructorList * instance()
Definition: lists.cc:129
ObjectConstructorList::vectype
std::vector< ObjectConstructor * > vectype
Definition: lists.h:72
NormalModePopupObjects::TestMenu
Definition: popup.h:59
NormalModePopupObjects::objects
std::vector< ObjectHolder * > objects() const
Definition: popup.h:69
ObjectConstructorList::constructors
const vectype & constructors() const
Definition: lists.cc:392
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 ...
getCalcers
std::vector< ObjectCalcer * > getCalcers(const std::vector< ObjectHolder * > &os)
get the calcers that the holders represent ( not their namecalcers )
Definition: common.cc:34
ObjectConstructorActionsProvider::fillUpMenu
void fillUpMenu(NormalModePopupObjects &popup, int menu, int &nextfree)
This file is part of Kig, a KDE program for Interactive Geometry...
Definition: objectconstructoractionsprovider.cc:30
NormalModePopupObjects::ConstructMenu
Definition: popup.h:59
NormalMode::clearSelection
void clearSelection()
Definition: normal.cc:88
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
ObjectConstructor::constructMode
virtual BaseConstructMode * constructMode(KigPart &doc)
Which construct mode should be used for this ObjectConstructor.
Definition: object_constructor.cc:592
KigPart
This is a "Part".
Definition: kig_part.h:68
NormalMode
Definition: normal.h:26
uint
unsigned int uint
Definition: object_imp.h:87
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