|
|
//*************************************************************************** /* * TOra - An Oracle Toolkit for DBA's and developers * Copyright (C) 2003 Quest Software, Inc * * 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; only version 2 of * the License is valid for this program. * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * As a special exception, you have permission to link this program * with the Oracle Client libraries and distribute executables, as long * as you follow the requirements of the GNU GPL in regard to all of the * software in the executable aside from Oracle client libraries. * * Specifically you are not permitted to link this program with the * Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech. * And you are not permitted to distribute binaries compiled against * these libraries without written consent from Quest Software, Inc. * Observe that this does not disallow linking to the Qt Free Edition. * * All trademarks belong to their respective owners. * ****************************************************************************/ #ifndef TOEDITWIDGET_H #define TOEDITWIDGET_H #include <list> #include <qwidget.h> class toSearchReplace; /** This is an abstract base class for any widget (Not included in object) that wants to * access copy, cut, paste, open, save commands of the user interface. */ class toEditWidget { public: /** Class used to extent how to enable/disable parts of the interface as * focus changes. */ class editHandler { public: /** Constructor. */ editHandler(); /** Destructor. */ virtual ~editHandler(); /** Called when a new widget receives the focus. */ virtual void receivedFocus(toEditWidget *widget) = 0; /** Called when a widget loses the focus. */ virtual void lostFocus(toEditWidget *widget) = 0; }; private: bool Open; bool Save; bool Print; bool Undo; bool Redo; bool Cut; bool Copy; bool Paste; bool Search; bool SelectAll; bool ReadAll; void setMainSettings(void); static std::list<editHandler *> *Handlers; public: /** Empty constructor, all functions are disabled. */ toEditWidget(); /** Specified constructor, all functions are specified in the constructor. */ toEditWidget(bool open,bool save,bool print, bool undo,bool redo, bool cut,bool copy,bool paste, bool search, bool selectAll,bool readAll); virtual ~toEditWidget(); /** Specify new enabled functions. */ void setEdit(bool open,bool save,bool print, bool undo,bool redo, bool cut,bool copy,bool paste, bool search, bool selectAll,bool readAll); /** Perform an open on this widget. Default NOP. * @param file The file to open, if not specified prompt for file. */ virtual bool editOpen(QString file=QString::null); /** Perform a save on this widget. Default NOP. * @param askfile Ask filename even if default filename is available. */ virtual bool editSave(bool askfile); /** Print this widgets contents. Default NOP. */ virtual void editPrint(void) { } /** Perform undo. Default NOP. */ virtual void editUndo(void) { } /** Perform redo. Default NOP. */ virtual void editRedo(void) { } /** Perform cut. Default NOP. */ virtual void editCut(void) { } /** Perform copy. Default NOP. */ virtual void editCopy(void) { } /** Perform paste. Default NOP. */ virtual void editPaste(void) { } /** Select all contents. Default NOP. */ virtual void editSelectAll(void) { } /** Read all available data. Default NOP. */ virtual void editReadAll(void) { } /** Set if open is enabled. */ void openEnabled(bool val) { Open=val; setMainSettings(); } /** Set if save is enabled. */ void saveEnabled(bool val) { Save=val; setMainSettings(); } /** Set if print is enabled. */ void printEnabled(bool val) { Print=val; setMainSettings(); } /** Set if undo is enabled. */ void undoEnabled(bool val) { Undo=val; setMainSettings(); } /** Set if redo is enabled. */ void redoEnabled(bool val) { Redo=val; setMainSettings(); } /** Set if cut is enabled. */ void cutEnabled(bool val) { Cut=val; setMainSettings(); } /** Set if copy is enabled. */ void copyEnabled(bool val) { Copy=val; setMainSettings(); } /** Set if paste is enabled. */ void pasteEnabled(bool val) { Paste=val; setMainSettings(); } /** Set if search is enabled. */ void searchEnabled(bool val) { Search=val; setMainSettings(); } /** Set if select all is enabled. */ void selectAllEnabled(bool val) { SelectAll=val; setMainSettings(); } /** Set if read all is enabled. */ void readAllEnabled(bool val) { ReadAll=val; setMainSettings(); } /** Check if open is enabled. */ bool openEnabled(void) { return Open; } /** Check if save is enabled. */ bool saveEnabled(void) { return Save; } /** Check if print is enabled. */ bool printEnabled(void) { return Print; } /** Check if undo is enabled. */ bool undoEnabled(void) { return Undo; } /** Check if redo is enabled. */ bool redoEnabled(void) { return Redo; } /** Check if cut is enabled. */ bool cutEnabled(void) { return Cut; } /** Check if copy is enabled. */ bool copyEnabled(void) { return Copy; } /** Check if paste is enabled. */ bool pasteEnabled(void) { return Paste; } /** Check if search is enabled. */ bool searchEnabled(void) { return Search; } /** Check if select all is enabled. */ bool selectAllEnabled(void) { return SelectAll; } /** Check if read all is enabled. */ bool readAllEnabled(void) { return ReadAll; } /** Move to top of data */ virtual void searchTop(void) { } /** Search for next entry * @return True if found, should select the found text. */ virtual bool searchNext(toSearchReplace *search); /** Replace entry with new data */ virtual void searchReplace(const QString &newData); /** Check if data can be modified by search * @param all If true can replace all, otherwise can replace right now. */ virtual bool searchCanReplace(bool all); /** Call this when this widget has received the focus. Must be called by the implementor. */ virtual void receivedFocus(void); /** Called when this widget has lost the focus. Don't forget to call parent when reimplemented. */ virtual void lostFocus(void); /** Add a hook to be called every time focus changes. */ static void addHandler(editHandler *handler); /** Removed a hook from being called every time focus changes. */ static void delHandler(editHandler *handler); }; #endif