• 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
base_mode.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 "base_mode.h"
19 
20 #include "popup/popup.h"
21 #include "popup/objectchooserpopup.h"
22 
23 #include "../kig/kig_view.h"
24 #include "../kig/kig_part.h"
25 #include "../kig/kig_document.h"
26 
27 #include <qevent.h>
28 #include <kcursor.h>
29 
30 BaseMode::BaseMode( KigPart& d )
31  : KigMode( d )
32 {
33 }
34 
35 BaseMode::~BaseMode()
36 {
37 }
38 
39 void BaseMode::leftClicked( QMouseEvent* e, KigWidget* v )
40 {
41  // touch screens don't send a mouseMoved event before a click event,
42  // apparently, so we simulate it.
43  mouseMoved( e, v );
44 
45  // get rid of text still showing...
46  v->updateCurPix();
47  v->updateWidget();
48 
49  mplc = e->pos();
50  moco = mdoc.document().whatAmIOn( v->fromScreen( mplc ), *v );
51 
52  if( moco.empty() )
53  {
54  // clicked on an empty spot --> we show the rectangle for
55  // selecting stuff...
56  dragRect( mplc, *v );
57  }
58  else
59  {
60  // the user clicked on some object.. --> this could either mean
61  // that he/she wants to select the object or that he wants to
62  // start moving it. We assume nothing here, we wait till he
63  // either moves some 4 pixels, or till he releases his mouse
64  // button in leftReleased() or mouseMoved()...
65  };
66 }
67 
68 void BaseMode::leftMouseMoved( QMouseEvent* e, KigWidget* w )
69 {
70  if( !moco.empty() && ( mplc - e->pos() ).manhattanLength() > 3 )
71  dragObject( moco, mplc, *w,
72  ( e->modifiers() & (Qt::ShiftModifier | Qt::ControlModifier ) ) != 0
73  );
74 }
75 
76 void BaseMode::leftReleased( QMouseEvent* e, KigWidget* v )
77 {
78  if( (mplc - e->pos()).manhattanLength() > 4 ) return;
79 
80  ObjectHolder* o = 0;
81  bool keyCtrl = ( e->modifiers() & Qt::ControlModifier ) != 0;
82  bool keyShift = ( e->modifiers() & Qt::ShiftModifier ) != 0;
83  if ( ! moco.empty() )
84  {
85  if ( keyShift )
86  {
87  int id = ObjectChooserPopup::getObjectFromList( e->pos(), v, moco );
88  if ( id >= 0 )
89  o = moco[id];
90  }
91  else
92  o = moco.front();
93  }
94  leftClickedObject( o, e->pos(), *v, keyCtrl );
95 }
96 
97 void BaseMode::midClicked( QMouseEvent* e, KigWidget* v )
98 {
99  // get rid of text still showing...
100  v->updateCurPix();
101  v->updateWidget();
102 
103  mplc = e->pos();
104  moco = mdoc.document().whatAmIOn( v->fromScreen( e->pos() ), *v );
105 }
106 
107 void BaseMode::midReleased( QMouseEvent* e, KigWidget* v )
108 {
109  if( (e->pos() - mplc).manhattanLength() > 4 ) return;
110 
111  midClicked( mplc, *v );
112 }
113 
114 void BaseMode::rightClicked( QMouseEvent* e, KigWidget* w )
115 {
116  // get rid of text still showing...
117  w->updateCurPix();
118  w->updateWidget();
119  // set a normal cursor...
120  w->setCursor( Qt::ArrowCursor );
121 
122  mplc = e->pos();
123  moco = mdoc.document().whatAmIOn( w->fromScreen( mplc ), *w );
124 
125  rightClicked( moco, mplc, *w );
126 }
127 
128 void BaseMode::mouseMoved( QMouseEvent* e, KigWidget* w )
129 {
130  std::vector<ObjectHolder*> os = mdoc.document().whatAmIOn( w->fromScreen( e->pos() ), *w );
131  mouseMoved( os, e->pos(), *w, e->modifiers() & Qt::ShiftModifier );
132 }
133 
134 void BaseMode::dragRect( const QPoint&, KigWidget& )
135 {
136 }
137 
138 void BaseMode::leftClickedObject( ObjectHolder*, const QPoint&,
139  KigWidget&, bool )
140 {
141 }
142 
143 void BaseMode::dragObject( const std::vector<ObjectHolder*>&, const QPoint&,
144  KigWidget&, bool )
145 {
146 }
147 
148 void BaseMode::enableActions()
149 {
150  KigMode::enableActions();
151 }
152 
153 std::vector<ObjectHolder*> BaseMode::oco()
154 {
155  return moco;
156 }
157 
158 QPoint BaseMode::pointLocation()
159 {
160  return mplc;
161 }
popup.h
BaseMode::mouseMoved
void mouseMoved(QMouseEvent *e, KigWidget *v)
mouse moved without any buttons down...
Definition: base_mode.cc:128
BaseMode::leftClickedObject
virtual void leftClickedObject(ObjectHolder *o, const QPoint &p, KigWidget &w, bool ctrlOrShiftDown)=0
Definition: base_mode.cc:138
BaseMode::dragRect
virtual void dragRect(const QPoint &p, KigWidget &w)
Definition: base_mode.cc:134
objectchooserpopup.h
BaseMode::dragObject
virtual void dragObject(const std::vector< ObjectHolder * > &os, const QPoint &pointClickedOn, KigWidget &w, bool ctrlOrShiftDown)
Definition: base_mode.cc:143
KigPart::document
const KigDocument & document() const
Definition: kig_part.cpp:989
KigMode::enableActions
virtual void enableActions()
actions: we enable the actions we want when our mode is made active.
Definition: mode.cc:27
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
KigMode::mdoc
KigPart & mdoc
Definition: mode.h:94
KigMode
this is an ABC of a class containing the current "Mode" of the Kig document...
Definition: mode.h:37
BaseMode::oco
std::vector< ObjectHolder * > oco()
Definition: base_mode.cc:153
ObjectHolder
An ObjectHolder represents an object as it is known to the document.
Definition: object_holder.h:40
BaseMode::leftClicked
void leftClicked(QMouseEvent *e, KigWidget *v)
Definition: base_mode.cc:39
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
BaseMode::leftReleased
void leftReleased(QMouseEvent *e, KigWidget *v)
Definition: base_mode.cc:76
KigDocument::whatAmIOn
std::vector< ObjectHolder * > whatAmIOn(const Coordinate &p, const KigWidget &w) const
Return a vector of objects that contain the given point.
Definition: kig_document.cc:68
BaseMode::midReleased
void midReleased(QMouseEvent *e, KigWidget *v)
Definition: base_mode.cc:107
KigWidget
This class is the real widget showing the document.
Definition: kig_view.h:50
KigWidget::updateCurPix
void updateCurPix(const std::vector< QRect > &=std::vector< QRect >())
update curPix (bitBlt stillPix onto curPix..)
Definition: kig_view.cpp:187
base_mode.h
BaseMode::midClicked
void midClicked(QMouseEvent *e, KigWidget *v)
Definition: base_mode.cc:97
BaseMode::~BaseMode
~BaseMode()
Definition: base_mode.cc:35
KigWidget::updateWidget
void updateWidget(const std::vector< QRect > &=std::vector< QRect >())
this means bitBlting curPix on the actual widget...
Definition: kig_view.cpp:115
BaseMode::pointLocation
QPoint pointLocation()
Definition: base_mode.cc:158
KigPart
This is a "Part".
Definition: kig_part.h:68
BaseMode::rightClicked
void rightClicked(QMouseEvent *, KigWidget *)
Definition: base_mode.cc:114
BaseMode::BaseMode
BaseMode(KigPart &)
Definition: base_mode.cc:30
BaseMode::leftMouseMoved
void leftMouseMoved(QMouseEvent *, KigWidget *)
this means: mouse moved with left mouse button down (in case that wasn't clear...) ...
Definition: base_mode.cc:68
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:35:38 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