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

kig

construct_mode.h

Go to the documentation of this file.
00001 // Copyright (C)  2003  Dominique Devriese <devriese@kde.org>
00002 
00003 // This program is free software; you can redistribute it and/or
00004 // modify it under the terms of the GNU General Public License
00005 // as published by the Free Software Foundation; either version 2
00006 // of the License, or (at your option) any later version.
00007 
00008 // This program is distributed in the hope that it will be useful,
00009 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00010 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00011 // GNU General Public License for more details.
00012 
00013 // You should have received a copy of the GNU General Public License
00014 // along with this program; if not, write to the Free Software
00015 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
00016 // 02110-1301, USA.
00017 
00018 #ifndef KIG_MODES_CONSTRUCT_MODE_H
00019 #define KIG_MODES_CONSTRUCT_MODE_H
00020 
00021 #include "base_mode.h"
00022 
00023 #include "../objects/object_calcer.h"
00024 
00025 class ArgsParserObjectType;
00026 class ObjectConstructor;
00027 class ObjectCalcer;
00028 
00029 class PointConstructMode
00030   : public BaseMode
00031 {
00036   ObjectTypeCalcer::shared_ptr mpt;
00037 public:
00038   PointConstructMode( KigPart& d );
00039   ~PointConstructMode();
00040 protected:
00041   void leftClickedObject( ObjectHolder* o, const QPoint& p,
00042                                 KigWidget& w, bool ctrlOrShiftDown );
00043   void midClicked( const QPoint& p, KigWidget& w );
00044   void rightClicked( const std::vector<ObjectHolder*>& oco, const QPoint& p, KigWidget& w );
00045   void mouseMoved( const std::vector<ObjectHolder*>& os, const QPoint& p, KigWidget& w, bool shiftpressed );
00046 
00047   void enableActions();
00048   void cancelConstruction();
00049 
00050   void redrawScreen( KigWidget* );
00051 };
00052 
00053 class BaseConstructMode
00054   : public BaseMode
00055 {
00060   ObjectTypeCalcer::shared_ptr mpt;
00069   ObjectTypeCalcer* mcursor;
00070   // we also allocate here the corresponding objectholder, since the
00071   // only sensible place where to deallocate it is in the destructor
00072   // of this class
00073 //  ObjectHolder* mcursorholder;
00074   std::vector<ObjectHolder*> mparents;
00075 
00076   void leftReleased( QMouseEvent* e, KigWidget* v );
00077 
00078 public:
00079   void selectObject( ObjectHolder* o, KigWidget& w );
00080   void selectObjects( const std::vector<ObjectHolder*>& os, KigWidget& w );
00081   virtual ~BaseConstructMode();
00082 protected:
00083   BaseConstructMode( KigPart& d );
00084 protected:
00085   void leftClickedObject( ObjectHolder* o, const QPoint& p,
00086                           KigWidget& w, bool ctrlOrShiftDown );
00087   void midClicked( const QPoint& p, KigWidget& w );
00088   void rightClicked( const std::vector<ObjectHolder*>& oco, const QPoint& p, KigWidget& w );
00089   void mouseMoved( const std::vector<ObjectHolder*>& os, const QPoint& p, KigWidget& w, bool shiftpressed );
00090 
00091   void enableActions();
00092   void cancelConstruction();
00093   void finish();
00094 
00095 protected:
00096   virtual void handlePrelim( const std::vector<ObjectCalcer*>& os, const QPoint& p, KigPainter&, KigWidget& w ) = 0;
00097   virtual QString selectStatement( const std::vector<ObjectCalcer*>& args, const KigWidget& w ) = 0;
00098   virtual int isAlreadySelectedOK( const std::vector<ObjectCalcer*>&, const int& ) = 0;
00099   virtual int wantArgs( const std::vector<ObjectCalcer*>&, KigDocument& d, KigWidget& w ) = 0;
00100   virtual void handleArgs( const std::vector<ObjectCalcer*>& args, KigWidget& w ) = 0;
00101 
00102   void redrawScreen( KigWidget* );
00103 };
00104 
00105 class ConstructMode
00106   : public BaseConstructMode
00107 {
00108   const ObjectConstructor* mctor;
00109 public:
00110   ConstructMode( KigPart& d, const ObjectConstructor* ctor );
00111   ~ConstructMode();
00112 
00113   void handlePrelim( const std::vector<ObjectCalcer*>& os, const QPoint& p, KigPainter&, KigWidget& w );
00114   QString selectStatement( const std::vector<ObjectCalcer*>& args, const KigWidget& w );
00115   int isAlreadySelectedOK( const std::vector<ObjectCalcer*>&, const int& );
00116   int wantArgs( const std::vector<ObjectCalcer*>&, KigDocument& d, KigWidget& w );
00117   void handleArgs( const std::vector<ObjectCalcer*>& args, KigWidget& w );
00118 };
00119 
00132 class TestConstructMode
00133   : public BaseConstructMode
00134 {
00135   const ArgsParserObjectType* mtype;
00136   ObjectCalcer::shared_ptr mresult;
00137 public:
00138   TestConstructMode( KigPart& d, const ArgsParserObjectType* type );
00139   ~TestConstructMode();
00140 
00141   void handlePrelim( const std::vector<ObjectCalcer*>& os, const QPoint& p, KigPainter&, KigWidget& w );
00142   QString selectStatement( const std::vector<ObjectCalcer*>& args, const KigWidget& w );
00143   int isAlreadySelectedOK( const std::vector<ObjectCalcer*>&, const int& );
00144   int wantArgs( const std::vector<ObjectCalcer*>&, KigDocument& d, KigWidget& w );
00145   void handleArgs( const std::vector<ObjectCalcer*>& args, KigWidget& w );
00146 
00147   void leftClickedObject( ObjectHolder* o, const QPoint& p,
00148                           KigWidget& w, bool ctrlOrShiftDown );
00149   void midClicked( const QPoint& p, KigWidget& w );
00150   void rightClicked( const std::vector<ObjectHolder*>& oco, const QPoint& p, KigWidget& w );
00151   void mouseMoved( const std::vector<ObjectHolder*>& os, const QPoint& p, KigWidget& w, bool shiftpressed );
00152 };
00153 
00154 #endif

kig

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

kdeedu

Skip menu "kdeedu"
  • kalzium
  • kanagram
  • kig
  •   lib
  • klettres
  • kstars
  • libkdeedu
  •   keduvocdocument
  •   docs
  •   src
  • parley
  •   stepcore
Generated for kdeedu by doxygen 1.5.4
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal