F:/KPlato/koffice/libs/kofficeui/KoToolManager.h

Aller à la documentation de ce fichier.
00001 /* This file is part of the KDE project
00002  *  Copyright (c) 2005-2006 Boudewijn Rempt <boud@valdyas.org>
00003  * Copyright (C) 2006 Thomas Zander <zander@kde.org>
00004  *
00005  * This library is free software; you can redistribute it and/or
00006  * modify it under the terms of the GNU Library General Public
00007  * License as published by the Free Software Foundation; either
00008  * version 2 of the License, or (at your option) any later version.
00009  *
00010  * This library is distributed in the hope that it will be useful,
00011  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00012  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013  * Library General Public License for more details.
00014  *
00015  * You should have received a copy of the GNU Library General Public License
00016  * along with this library; see the file COPYING.LIB.  If not, write to
00017  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00018  * Boston, MA 02110-1301, USA.
00019  */
00020 #ifndef KO_TOOL_MANAGER
00021 #define KO_TOOL_MANAGER
00022 
00023 #include <koffice_export.h>
00024 #include <QMap>
00025 #include <QObject>
00026 #include <QCursor>
00027 #include <QStack>
00028 
00029 #include <KoToolProxy.h>
00030 #include <KoInputDevice.h>
00031 
00032 class ToolHelper;
00033 class KoCanvasController;
00034 class KoCanvasBase;
00035 class KoTool;
00036 class KoShapeControllerBase;
00037 class KoToolBox;
00038 class KoShapeController;
00039 class KActionCollection;
00040 class KoShape;
00041 
00042 
00097 class KOFFICEUI_EXPORT KoToolManager : public QObject, public KoToolProxy {
00098     Q_OBJECT
00099 
00100 public:
00102     static KoToolManager* instance();
00103     ~KoToolManager();
00104 
00105 
00106 public: // KoToolProxy implementation
00107 
00108     KoToolProxy * toolProxy() { return this; }
00109 
00110 private:
00111 
00112     void paint( QPainter &painter, KoViewConverter &converter );
00113     void repaintDecorations();
00114     void tabletEvent( QTabletEvent *event, const QPointF &pnt );
00115     void mousePressEvent( QMouseEvent *event, const QPointF &pnt );
00116     void mouseDoubleClickEvent( QMouseEvent *event, const QPointF &pnt );
00117     void mouseMoveEvent( QMouseEvent *event, const QPointF &pnt );
00118     void mouseReleaseEvent( QMouseEvent *event, const QPointF &pnt );
00119     void keyPressEvent(QKeyEvent *event );
00120     void keyReleaseEvent(QKeyEvent *event);
00121     void wheelEvent ( QWheelEvent * event, const QPointF &pnt );
00122 
00123 public:
00135     KoToolBox *toolBox(const QString &applicationName = QString());
00136 
00137     void registerTools(KActionCollection *ac);
00138 
00145     void addControllers(KoCanvasController *controller, KoShapeControllerBase *sc);
00146 
00154     void removeCanvasController(KoCanvasController *controller);
00155 
00157     KoCanvasController *activeCanvasController() const;
00158 
00160     KoShapeController *shapeCreatorTool(KoCanvasBase *canvas) const;
00168     KoShapeController *shapeController(KoCanvasBase *canvas) const;
00169 
00171     KoInputDevice currentInputDevice() const;
00172 
00173 public slots:
00178     void switchToolRequested(const QString &id);
00179 
00180 signals:
00185     void changedTool(int uniqueToolId);
00186 
00192     void toolCodesSelected(QList<QString> types);
00193 
00198     void inputDeviceChanged( const KoInputDevice & );
00199 
00200 private:
00201 
00202     KoToolManager();
00203     KoToolManager(const KoToolManager&);
00204     KoToolManager operator=(const KoToolManager&);
00205     void setup();
00206     void switchTool(KoTool *tool);
00207     void switchTool(const QString &id, bool temporary);
00208 
00209 private slots:
00210 
00211     void toolActivated(ToolHelper *tool);
00212     void detachCanvas(KoCanvasController *controller);
00213     void attachCanvas(KoCanvasController *controller);
00214     void movedFocus(QWidget *from, QWidget *to);
00215     void updateCursor(QCursor cursor);
00216     void switchToolTemporaryRequested(const QString &id);
00217     void switchBackRequested();
00218     void selectionChanged(QList<KoShape*> shapes);
00219 
00220 private:
00221 
00222     static KoToolManager* s_instance;
00223 
00224     QList<ToolHelper*> m_tools;
00225     QMap<KoCanvasController*, KoShapeControllerBase*> m_shapeControllers;
00226     QList<KoCanvasController*> m_canvases;
00227     KoCanvasController *m_activeCanvas;
00228     KoTool *m_activeTool, *m_dummyTool;
00229     ToolHelper *m_defaultTool; // the pointer thingy
00230     QString m_activeToolId;
00231 
00232     QMap<KoTool*, int> m_uniqueToolIds; // for the changedTool signal
00233     QMap<KoCanvasController*, QMap<QString, KoTool*> > m_allTools;
00234     QStack<QString> m_stack; // stack of temporary tools
00235 
00236     QList<KoShape*> m_lastSelectedShapes;
00237 };
00238 
00239 #endif

Généré le Wed Nov 22 23:41:05 2006 pour KPlato par  doxygen 1.5.1-p1