/* * Copyright (c) 2005 Boudewijn Rempt * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef KIS_TOOL_MANAGER #define KIS_TOOL_MANAGER #include #include #include "kis_tool_controller.h" #include "kis_global.h" #include "kis_tool_types.h" #include "kis_input_device.h" class KoView; class KisCanvasSubject; class KisView; class KisTool; class KisToolRegistry; class KisCanvasController; class KoPaletteManager; class KoToolBox; /** * This class manages the activation and deactivation of tools for * each input device. */ class KisToolManager : public QObject, public KisToolControllerInterface { Q_OBJECT public: KisToolManager(KisCanvasSubject * parent, KisCanvasController * controller); ~KisToolManager(); public: void setUp(KoToolBox * toolbox, KoPaletteManager * paletteManager, KActionCollection * collection); // Called when the toolbox is deleted because the view was made inactive in favour of another view void youAintGotNoToolBox(); void updateGUI(); virtual void setCurrentTool(KisTool *tool); virtual void setCurrentTool(const QString & toolName); virtual KisTool *currentTool() const; void setToolForInputDevice(KisInputDevice oldDevice, KisInputDevice newDevice); KisTool *findTool(const QString &toolName, KisInputDevice inputDevice = KisInputDevice::unknown()) const; void activateCurrentTool(); private: void resetToolBox(KoToolBox * toolbox); private: typedef std::map InputDeviceToolMap; typedef std::map InputDeviceToolSetMap; InputDeviceToolMap m_inputDeviceToolMap; InputDeviceToolSetMap m_inputDeviceToolSetMap; KisCanvasSubject * m_subject; KisCanvasController * m_controller; KoPaletteManager * m_paletteManager; KActionCollection * m_actionCollection; KoToolBox * m_toolBox; KisTool * m_oldTool; KisTool * m_dummyTool; vKisTool m_tools; bool m_tools_disabled; bool setup; }; #endif