diff options
Diffstat (limited to 'kdecore/kcompletion.h')
-rw-r--r-- | kdecore/kcompletion.h | 1010 |
1 files changed, 0 insertions, 1010 deletions
diff --git a/kdecore/kcompletion.h b/kdecore/kcompletion.h deleted file mode 100644 index f6c8f0f82..000000000 --- a/kdecore/kcompletion.h +++ /dev/null @@ -1,1010 +0,0 @@ -/* This file is part of the KDE libraries - Copyright (C) 1999,2000 Carsten Pfeiffer <pfeiffer@kde.org> - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#ifndef KCOMPLETION_H -#define KCOMPLETION_H - -#include <tqmap.h> -#include <tqptrlist.h> -#include <tqobject.h> -#include <tqstring.h> -#include <tqstringlist.h> -#include <tqguardedptr.h> - -#include "kdelibs_export.h" -#include <kglobalsettings.h> -#include <ksortablevaluelist.h> -#include <kshortcut.h> - -class KCompTreeNode; -class KCompletionPrivate; -class KCompletionBasePrivate; -class KCompletionMatchesWrapper; -class KCompletionMatches; -class TQPopupMenu; - -/** - * @short A generic class for completing QStrings - * - * This class offers easy use of "auto-completion", "manual-completion" or - * "shell completion" on TQString objects. A common use is completing filenames - * or URLs (see KURLCompletion()). - * But it is not limited to URL-completion -- everything should be completable! - * The user should be able to complete email-addresses, telephone-numbers, - * commands, SQL queries, ... - * Every time your program knows what the user can type into an edit-field, you - * should offer completion. With KCompletion, this is very easy, and if you are - * using a line edit widget ( KLineEdit), it is even more easy. - * Basically, you tell a KCompletion object what strings should be completable - * and whenever completion should be invoked, you call makeCompletion(). - * KLineEdit and (an editable) KComboBox even do this automatically for you. - * - * KCompletion offers the completed string via the signal match() and - * all matching strings (when the result is ambiguous) via the method - * allMatches(). - * - * Notice: auto-completion, shell completion and manual completion work - * slightly differently: - * - * @li auto-completion always returns a complete item as match. - * When more than one matching items are available, it will deliver just - * the first (depending on sorting order) item. Iterating over all matches - * is possible via nextMatch() and previousMatch(). - * - * @li popup-completion works in the same way, the only difference being that - * the completed items are not put into the edit-widget, but into a - * separate popup-box. - * - * @li manual completion works the same way as auto-completion, the - * subtle difference is, that it isn't invoked automatically while the user - * is typing, but only when the user presses a special key. The difference - * of manual and auto-completion is therefore only visible in UI classes, - * KCompletion needs to know whether to deliver partial matches - * (shell completion) or whole matches (auto/manual completion), therefore - * KGlobalSettings::CompletionMan and - * KGlobalSettings::CompletionAuto have the exact same effect in - * KCompletion. - * - * @li shell completion works like how shells complete filenames: - * when multiple matches are available, the longest possible string of all - * matches is returned (i.e. only a partial item). - * Iterating over all matching items (complete, not partial) is possible - * via nextMatch() and previousMatch(). - * - * You don't have to worry much about that though, KCompletion handles - * that for you, according to the setting setCompletionMode(). - * The default setting is globally configured by the user and read - * from KGlobalSettings::completionMode(). - * - * A short example: - * \code - * KCompletion completion; - * completion.setOrder( KCompletion::Sorted ); - * completion.addItem( "pfeiffer@kde.org" ); - * completion.addItem( "coolo@kde.org" ); - * completion.addItem( "carpdjih@sp.zrz.tu-berlin.de" ); - * completion.addItem( "carp@cs.tu-berlin.de" ); - * - * cout << completion.makeCompletion( "ca" ).latin1() << endl; - * \endcode - * - * In shell-completion-mode, this will be "carp"; in auto-completion- - * mode it will be "carp\@cs.tu-berlin.de", as that is alphabetically - * smaller. - * If setOrder was set to Insertion, "carpdjih\@sp.zrz.tu-berlin.de" - * would be completed in auto-completion-mode, as that was inserted before - * "carp\@cs.tu-berlin.de". - * - * You can dynamically update the completable items by removing and adding them - * whenever you want. - * For advanced usage, you could even use multiple KCompletion objects. E.g. - * imagine an editor like kwrite with multiple open files. You could store - * items of each file in a different KCompletion object, so that you know (and - * tell the user) where a completion comes from. - * - * Note: KCompletion does not work with strings that contain 0x0 characters - * (tqunicode nul), as this is used internally as a delimiter. - * - * You may inherit from KCompletion and override makeCompletion() in - * special cases (like reading directories/urls and then supplying the - * contents to KCompletion, as KURLCompletion does), but generally, this is - * not necessary. - * - * - * @author Carsten Pfeiffer <pfeiffer@kde.org> - */ -class KDECORE_EXPORT KCompletion : public TQObject -{ - Q_ENUMS( CompOrder ) - Q_PROPERTY( CompOrder order READ order WRITE setOrder ) - Q_PROPERTY( bool ignoreCase READ ignoreCase WRITE setIgnoreCase ) - Q_PROPERTY( TQStringList items READ items WRITE setItems ) - Q_OBJECT - -public: - /** - * Constants that represent the order in which KCompletion performs - * completion-lookups. - */ - enum CompOrder { Sorted, ///< Use alphabetically sorted order - Insertion, ///< Use order of insertion - Weighted ///< Use weighted order - }; - - /** - * Constructor, nothing special here :) - */ - KCompletion(); - - // FIXME: copy constructor, assignment operator... - - /** - * Destructor, nothing special here, either. - */ - virtual ~KCompletion(); - - /** - * Attempts to find an item in the list of available completions, - * that begins with @p string. Will either return the first matching item - * (if there is more than one match) or TQString::null, if no match was - * found. - * - * In the latter case, a sound will be issued, depending on - * isSoundsEnabled(). - * If a match was found, it will also be emitted via the signal - * match(). - * - * If this is called twice or more often with the same string while no - * items were added or removed in the meantime, all available completions - * will be emitted via the signal #matches(). - * This happens only in shell-completion-mode. - * - * @param string the string to complete - * @return the matching item, or TQString::null if there is no matching - * item. - * @see slotMakeCompletion - * @see substringCompletion - */ - virtual TQString makeCompletion( const TQString& string ); - - /** - * Returns a list of all completion items that contain the given @p string. - * @param string the string to complete - * @return a list of items which all contain @p text as a substring, - * i.e. not necessarily at the beginning. - * - * @see makeCompletion - */ - TQStringList substringCompletion( const TQString& string ) const; - - /** - * Returns the next item from the matching-items-list. - * When reaching the beginning, the list is rotated so it will return the - * last match and a sound is issued (depending on isSoundsEnabled()). - * @return the next item from the matching-items-list. - * When there is no match, TQString::null is returned and - * a sound is be issued. - * @see slotPreviousMatch - */ - TQString previousMatch(); - - /** - * Returns the next item from the matching-items-list. - * When reaching the last item, the list is rotated, so it will return - * the first match and a sound is issued (depending on - * isSoundsEnabled()). - * @return the next item from the matching-items-list. When there is no - * match, TQString::null is returned and a sound is issued - * @see slotNextMatch - */ - TQString nextMatch(); - - /** - * Returns the last match. Might be useful if you need to check whether - * a completion is different from the last one. - * @return the last match. TQString::null is returned when there is no - * last match. - */ - virtual const TQString& lastMatch() const { return myLastMatch; } - - /** - * Returns a list of all items inserted into KCompletion. This is useful - * if you need to save the state of a KCompletion object and restore it - * later. - * - * Important note: when order() == Weighted, then every item in the - * stringlist has its weight appended, delimited by a colon. E.g. an item - * "www.kde.org" might look like "www.kde.org:4", where 4 is the weight. - * - * This is necessary so that you can save the items along with its - * weighting on disk and load them back with setItems(), restoring its - * weight as well. If you really don't want the appended weightings, call - * setOrder( KCompletion::Insertion ) - * before calling items(). - * - * @return a list of all items - * @see setItems - */ - TQStringList items() const; - - /** - * Returns true when the completion object contains no entries. - */ - bool isEmpty() const; - - /** - * Sets the completion mode to Auto/Manual, Shell or None. - * If you don't set the mode explicitly, the global default value - * KGlobalSettings::completionMode() is used. - * KGlobalSettings::CompletionNone disables completion. - * @param mode the completion mode - * @see completionMode - * @see KGlobalSettings::completionMode - */ - virtual void setCompletionMode( KGlobalSettings::Completion mode ); - - /** - * Return the current completion mode. - * May be different from KGlobalSettings::completionMode(), if you - * explicitly called setCompletionMode(). - * @return the current completion mode - * @see setCompletionMode - */ - KGlobalSettings::Completion completionMode() const { - return myCompletionMode; - } - - /** - * KCompletion offers three different ways in which it offers its items: - * @li in the order of insertion - * @li sorted alphabetically - * @li weighted - * - * Choosing weighted makes KCompletion perform an implicit weighting based - * on how often an item is inserted. Imagine a web browser with a location - * bar, where the user enters URLs. The more often a URL is entered, the - * higher priority it gets. - * - * Note: Setting the order to sorted only affects new inserted items, - * already existing items will stay in the current order. So you probably - * want to call setOrder( Sorted ) before inserting items, when you want - * everything sorted. - * - * Default is insertion order. - * @param order the new order - * @see order - */ - virtual void setOrder( CompOrder order ); - - /** - * Returns the completion order. - * @return the current completion order. - * @see setOrder - */ - CompOrder order() const { return myOrder; } - - /** - * Setting this to true makes KCompletion behave case insensitively. - * E.g. makeCompletion( "CA" ); might return "carp\@cs.tu-berlin.de". - * Default is false (case sensitive). - * @param ignoreCase true to ignore the case - * @see ignoreCase - */ - virtual void setIgnoreCase( bool ignoreCase ); - - /** - * Return whether KCompletion acts case insensitively or not. - * Default is false (case sensitive). - * @return true if the case will be ignored - * @see setIgnoreCase - */ - bool ignoreCase() const { return myIgnoreCase; } - - /** - * Returns a list of all items matching the last completed string. - * Might take some time, when you have LOTS of items. - * @return a list of all matches for the last completed string. - * @see substringCompletion - */ - TQStringList allMatches(); - - /** - * Returns a list of all items matching @p string. - * @param string the string to match - * @return the list of all matches - */ - TQStringList allMatches( const TQString& string ); - - /** - * Returns a list of all items matching the last completed string. - * Might take some time, when you have LOTS of items. - * The matches are returned as KCompletionMatches, which also - * keeps the weight of the matches, allowing - * you to modify some matches or merge them with matches - * from another call to allWeightedMatches(), and sort the matches - * after that in order to have the matches ordered correctly. - * - * @return a list of all completion matches - * @see substringCompletion - */ - KCompletionMatches allWeightedMatches(); - - /** - * Returns a list of all items matching @p string. - * @param string the string to match - * @return a list of all matches - */ - KCompletionMatches allWeightedMatches( const TQString& string ); - - /** - * Enables/disables playing a sound when - * @li makeCompletion() can't find a match - * @li there is a partial completion (= multiple matches in - * Shell-completion mode) - * @li nextMatch() or previousMatch() hit the last possible - * match -> rotation - * - * For playing the sounds, KNotifyClient() is used. - * - * @param enable true to enable sounds - * @see isSoundsEnabled - */ - virtual void setEnableSounds( bool enable ) { myBeep = enable; } - - /** - * Tells you whether KCompletion will play sounds on certain occasions. - * Default is enabled. - * @return true if sounds are enabled - * @see enableSounds - * @see disableSounds - */ - bool isSoundsEnabled() const { return myBeep; } - - /** - * Returns true when more than one match is found. - * @return true if there are more than one match - * @see multipleMatches - */ - bool hasMultipleMatches() const { return myHasMultipleMatches; } - -#ifndef KDE_NO_COMPAT - /** - * @deprecated - * @see setEnableSounds - */ - void enableSounds() { myBeep = true; } - - /** - * @deprecated - * @see setEnableSounds - */ - void disableSounds() { myBeep = false; } -#endif - -public slots: - /** - * Attempts to complete "string" and emits the completion via match(). - * Same as makeCompletion() (just as a slot). - * @param string the string to complete - * @see makeCompletion - */ - void slotMakeCompletion( const TQString& string ) { - (void) makeCompletion( string ); - } - - /** - * Searches the previous matching item and emits it via match(). - * Same as previousMatch() (just as a slot). - * @see previousMatch - */ - void slotPreviousMatch() { - (void) previousMatch(); - } - - /** - * Searches the next matching item and emits it via match(). - * Same as nextMatch() (just as a slot). - * @see nextMatch - */ - void slotNextMatch() { - (void) nextMatch(); - } - - // FIXME ###: KDE4: unify the nomenclature. We have insertItems, addItem, - // setItems... - /** - * Inserts @p items into the list of possible completions. - * Does the same as setItems(), but does not call clear() before. - * @param items the items to insert - */ - void insertItems( const TQStringList& items ); - - /** - * Sets the list of items available for completion. Removes all previous - * items. - * - * Notice: when order() == Weighted, then the weighting is looked up for - * every item in the stringlist. Every item should have ":number" appended, - * where number is an unsigned integer, specifying the weighting. - * - * If you don't like this, call - * setOrder( KCompletion::Insertion ) - * before calling setItems(). - * - * @param list the list of items that are available for completion - * @see items - */ - virtual void setItems( const TQStringList& list); - - /** - * Adds an item to the list of available completions. - * Resets the current item-state ( previousMatch() and nextMatch() - * won't work anymore). - * @param item the item to add - */ - void addItem( const TQString& item); - - /** - * Adds an item to the list of available completions. - * Resets the current item-state ( previousMatch() and nextMatch() - * won't work anymore). - * - * Sets the weighting of the item to @p weight or adds it to the current - * weighting if the item is already available. The weight has to be greater - * than 1 to take effect (default weight is 1). - * @param item the item to add - * @param weight the weight of the item, default is 1 - */ - void addItem( const TQString& item, uint weight ); - - /** - * Removes an item from the list of available completions. - * Resets the current item-state ( previousMatch() and nextMatch() - * won't work anymore). - * @param item the item to remove - */ - void removeItem( const TQString& item); - - /** - * Removes all inserted items. - */ - virtual void clear(); - - -signals: - /** - * The matching item. Will be emitted by makeCompletion(), - * previousMatch() or nextMatch(). May be TQString::null if there - * is no matching item. - * @param item the match, or TQString::null if there is none - */ - void match( const TQString& item); - - /** - * All matching items. Will be emitted by makeCompletion() in shell- - * completion-mode, when the same string is passed to makeCompletion twice - * or more often. - * @param matchlist the list of matches - */ - void matches( const TQStringList& matchlist); - - /** - * This signal is emitted, when calling makeCompletion() and more than - * one matching item is found. - * @see hasMultipleMatches - */ - void multipleMatches(); - -protected: - /** - * This method is called after a completion is found and before the - * matching string is emitted. You can override this method to modify the - * string that will be emitted. - * This is necessary e.g. in KURLCompletion(), where files with spaces - * in their names are shown escaped ("filename\ with\ spaces"), but stored - * unescaped inside KCompletion. - * Never delete that pointer! - * - * Default implementation does nothing. - * @param match the match to process - * @see postProcessMatches - */ - virtual void postProcessMatch( TQString *match ) const { Q_UNUSED(match) } - - /** - * This method is called before a list of all available completions is - * emitted via #matches. You can override this method to modify the - * found items before match() or #matches are emitted. - * Never delete that pointer! - * - * Default implementation does nothing. - * @param matches the matches to process - * @see postProcessMatch - */ - virtual void postProcessMatches( TQStringList * matches ) const { Q_UNUSED(matches)} - - /** - * This method is called before a list of all available completions is - * emitted via #matches. You can override this method to modify the - * found items before #match() or #matches() are emitted. - * Never delete that pointer! - * - * Default implementation does nothing. - * @param matches the matches to process - * @see postProcessMatch - */ - virtual void postProcessMatches( KCompletionMatches * matches ) const {Q_UNUSED(matches)} - -private: - void addWeightedItem( const TQString& ); - TQString findCompletion( const TQString& string ); - void findAllCompletions( const TQString&, - KCompletionMatchesWrapper *matches, - bool& hasMultipleMatches ) const; - - void extractStringsFromNode( const KCompTreeNode *, - const TQString& beginning, - KCompletionMatchesWrapper *matches, - bool addWeight = false ) const; - void extractStringsFromNodeCI( const KCompTreeNode *, - const TQString& beginning, - const TQString& restString, - KCompletionMatchesWrapper *matches) const; - - enum BeepMode { NoMatch, PartialMatch, Rotation }; - void doBeep( BeepMode ) const; - - KGlobalSettings::Completion myCompletionMode; - - CompOrder myOrder; - TQString myLastString; - TQString myLastMatch; - TQString myCurrentMatch; - KCompTreeNode * myTreeRoot; - TQStringList myRotations; - bool myBeep; - bool myIgnoreCase; - bool myHasMultipleMatches; - uint myRotationIndex; - - -protected: - virtual void virtual_hook( int id, void* data ); -private: - KCompletionPrivate *d; -}; - -// some more helper stuff -typedef KSortableValueList<TQString> KCompletionMatchesList; -class KCompletionMatchesPrivate; - -/** - * This structure is returned by KCompletion::allWeightedMatches . - * It also keeps the weight of the matches, allowing - * you to modify some matches or merge them with matches - * from another call to allWeightedMatches(), and sort the matches - * after that in order to have the matches ordered correctly - * - * Example (a simplified example of what Konqueror's completion does): - * \code - * KCompletionMatches matches = completion->allWeightedMatches( location ); - * if( !location.startsWith( "www." )) - matches += completion->allWeightedmatches( "www." + location" ); - * matches.removeDuplicates(); - * TQStringList list = matches.list(); - * \endcode - * - * @short List for keeping matches returned from KCompletion - */ -class KDECORE_EXPORT KCompletionMatches : public KCompletionMatchesList -{ -public: - KCompletionMatches( bool sort ); - /** - * @internal - */ - KCompletionMatches( const KCompletionMatchesWrapper& matches ); - ~KCompletionMatches(); - /** - * Removes duplicate matches. Needed only when you merged several matches - * results and there's a possibility of duplicates. - */ - void removeDuplicates(); - /** - * Returns the matches as a TQStringList. - * @param sort if false, the matches won't be sorted before the conversion, - * use only if you're sure the sorting is not needed - * @return the list of matches - */ - TQStringList list( bool sort = true ) const; - /** - * If sorting() returns false, the matches aren't sorted by their weight, - * even if true is passed to list(). - * @return true if the matches won't be sorted - */ - bool sorting() const { - return _sorting; - } -private: - bool _sorting; - KCompletionMatchesPrivate* d; -}; - -/** - * An abstract base class for adding a completion feature - * into widgets. - * - * This is a convenience class that provides the basic functions - * needed to add text completion support into widgets. All that - * is required is an implementation for the pure virtual function - * setCompletedText. Refer to KLineEdit or KComboBox - * to see how easily such support can be added using this as a base - * class. - * - * @short An abstract class for adding text completion support to widgets. - * @author Dawit Alemayehu <adawit@kde.org> - */ -class KDECORE_EXPORT KCompletionBase -{ -public: - /** - * Constants that represent the items whose short-cut - * key-binding is programmable. The default key-bindings - * for these items are defined in KStdAccel. - */ - enum KeyBindingType { - /** - * Text completion (by default Ctrl-E). - */ - TextCompletion, - /** - * Switch to previous completion (by default Ctrl-Up). - */ - PrevCompletionMatch, - /** - * Switch to next completion (by default Ctrl-Down). - */ - NextCompletionMatch, - /** - * Substring completion (by default Ctrl-T). - */ - SubstringCompletion - }; - - - // Map for the key binding types mentioned above. - typedef TQMap<KeyBindingType, KShortcut> KeyBindingMap; - - /** - * Default constructor. - */ - KCompletionBase(); - - /** - * Destructor. - */ - virtual ~KCompletionBase(); - - /** - * Returns a pointer to the current completion object. - * - * If the completion object does not exist, it is automatically created and - * by default handles all the completion signals internally unless @p hsig - * is set to false. It is also automatically destroyed when the destructor - * is called. You can change this default behavior using the - * @ref setAutoDeleteCompletionObject and @ref setHandleSignals member - * functions. - * - * See also @ref compObj. - * - * @param hsig if true, handles completion signals internally. - * @return a pointer the completion object. - */ - KCompletion* completionObject( bool hsig = true ); - - /** - * Sets up the completion object to be used. - * - * This method assigns the completion object and sets it up to automatically - * handle the completion and rotation signals internally. You should use - * this function if you want to share one completion object among your - * widgets or need to use a customized completion object. - * - * The object assigned through this method is not deleted when this object's - * destructor is invoked unless you explicitly call @ref setAutoDeleteCompletionObject - * after calling this method. Be sure to set the bool argument to false, if - * you want to handle the completion signals yourself. - * - * @param compObj a KCompletion() or a derived child object. - * @param hsig if true, handles completion signals internally. - */ - virtual void setCompletionObject( KCompletion* compObj, bool hsig = true ); - - /** - * Enables this object to handle completion and rotation - * events internally. - * - * This function simply assigns a boolean value that - * indicates whether it should handle rotation and - * completion events or not. Note that this does not - * stop the object from emitting signals when these - * events occur. - * - * @param handle if true, handle completion & rotation internally. - */ - virtual void setHandleSignals( bool handle ); - - /** - * Returns true if the completion object is deleted - * upon this widget's destruction. - * - * See setCompletionObject() and enableCompletion() - * for details. - * - * @return true if the completion object will be deleted - * automatically - */ - bool isCompletionObjectAutoDeleted() const { - return m_delegate ? m_delegate->isCompletionObjectAutoDeleted() : m_bAutoDelCompObj; - } - - /** - * Sets the completion object when this widget's destructor - * is called. - * - * If the argument is set to true, the completion object - * is deleted when this widget's destructor is called. - * - * @param autoDelete if true, delete completion object on destruction. - */ - void setAutoDeleteCompletionObject( bool autoDelete ) { - if ( m_delegate ) - m_delegate->setAutoDeleteCompletionObject( autoDelete ); - else - m_bAutoDelCompObj = autoDelete; - } - - /** - * Sets the widget's ability to emit text completion and - * rotation signals. - * - * Invoking this function with @p enable set to @p false will - * cause the completion & rotation signals not to be emitted. - * However, unlike setting the completion object to @p NULL - * using setCompletionObject, disabling the emition of - * the signals through this method does not affect the current - * completion object. - * - * There is no need to invoke this function by default. When a - * completion object is created through completionObject or - * setCompletionObject, these signals are set to emit - * automatically. Also note that disabling this signals will not - * necessarily interfere with the objects ability to handle these - * events internally. See setHandleSignals. - * - * @param enable if false, disables the emition of completion & rotation signals. - */ - void setEnableSignals( bool enable ) { - if ( m_delegate ) - m_delegate->setEnableSignals( enable ); - else - m_bEmitSignals = enable; - } - - /** - * Returns true if the object handles the signals. - * - * @return true if this signals are handled internally. - */ - bool handleSignals() const { return m_delegate ? m_delegate->handleSignals() : m_bHandleSignals; } - - /** - * Returns true if the object emits the signals. - * - * @return true if signals are emitted - */ - bool emitSignals() const { return m_delegate ? m_delegate->emitSignals() : m_bEmitSignals; } - - /** - * Sets the type of completion to be used. - * - * The completion modes supported are those defined in - * KGlobalSettings(). See below. - * - * @param mode Completion type: - * @li CompletionNone: Disables completion feature. - * @li CompletionAuto: Attempts to find a match & - * fills-in the remaining text. - * @li CompletionMan: Acts the same as the above - * except the action has to be - * manually triggered through - * pre-defined completion key. - * @li CompletionShell: Mimics the completion feature - * found in typical *nix shell - * environments. - * @li CompletionPopup: Shows all available completions at once, - * in a listbox popping up. - */ - virtual void setCompletionMode( KGlobalSettings::Completion mode ); - - /** - * Returns the current completion mode. - * - * The return values are of type KGlobalSettings::Completion. - * See setCompletionMode() for details. - * - * @return the completion mode. - */ - KGlobalSettings::Completion completionMode() const { - return m_delegate ? m_delegate->completionMode() : m_iCompletionMode; - } - - /** - * Sets the key-binding to be used for manual text - * completion, text rotation in a history list as - * well as a completion list. - * - * - * When the keys set by this function are pressed, a - * signal defined by the inheriting widget will be activated. - * If the default value or 0 is specified by the second - * parameter, then the key-binding as defined in the global - * setting should be used. This method returns false value - * for @p key is negative or the supplied key-binding conflicts - * with the ones set for one of the other features. - * - * NOTE: To use a modifier key (Shift, Ctrl, Alt) as part of - * the key-binding simply simply @p sum up the values of the - * modifier and the actual key. For example, to use CTRL+E as - * a key binding for one of the items, you would simply supply - * @p "Qt::CtrlButton + Qt::Key_E" as the second argument to this - * function. - * - * @param item the feature whose key-binding needs to be set: - * @li TextCompletion the manual completion key-binding. - * @li PrevCompletionMatch the previous match key for multiple completion. - * @li NextCompletionMatch the next match key for for multiple completion. - * @li SubstringCompletion the key for substring completion - * @param key key-binding used to rotate down in a list. - * @return true if key-binding can successfully be set. - * @see getKeyBinding - */ - bool setKeyBinding( KeyBindingType item , const KShortcut& key ); - - /** - * Returns the key-binding used for the specified item. - * - * This methods returns the key-binding used to activate - * the feature feature given by @p item. If the binding - * contains modifier key(s), the SUM of the modifier key - * and the actual key code are returned. - * - * @param item the item to check - * @return the key-binding used for the feature given by @p item. - * @see setKeyBinding - */ - const KShortcut& getKeyBinding( KeyBindingType item ) const { - return m_delegate ? m_delegate->getKeyBinding( item ) : m_keyMap[ item ]; - } - - /** - * Sets this object to use global values for key-bindings. - * - * This method changes the values of the key bindings for - * rotation and completion features to the default values - * provided in KGlobalSettings. - * - * NOTE: By default inheriting widgets should uses the - * global key-bindings so that there will be no need to - * call this method. - */ - void useGlobalKeyBindings(); - - /** - * A pure virtual function that must be implemented by - * all inheriting classes. - * - * This function is intended to allow external completion - * implementations to set completed text appropriately. It - * is mostly relevant when the completion mode is set to - * CompletionAuto and CompletionManual modes. See - * KCompletionBase::setCompletedText. - * Does nothing in CompletionPopup mode, as all available - * matches will be shown in the popup. - * - * @param text the completed text to be set in the widget. - */ - virtual void setCompletedText( const TQString& text ) = 0; - - /** - * A pure virtual function that must be implemented by - * all inheriting classes. - * @param items the list of completed items - */ - virtual void setCompletedItems( const TQStringList& items ) = 0; - - /** - * Returns a pointer to the completion object. - * - * This method is only different from completionObject() - * in that it does not create a new KCompletion object even if - * the internal pointer is @p NULL. Use this method to get the - * pointer to a completion object when inheriting so that you - * won't inadvertently create it!! - * - * @return the completion object or NULL if one does not exist. - */ - KCompletion* compObj() const { return m_delegate ? m_delegate->compObj() : (KCompletion*) m_pCompObj; } - -protected: - /** - * Returns a key-binding map. - * - * This method is the same as getKeyBinding() except it - * returns the whole keymap containing the key-bindings. - * - * @return the key-binding used for the feature given by @p item. - */ - KeyBindingMap getKeyBindings() const { return m_delegate ? m_delegate->getKeyBindings() : m_keyMap; } - - /** - * Sets or removes the delegation object. If a delegation object is - * set, all function calls will be forwarded to the delegation object. - * @param delegate the delegation object, or 0 to remove it - */ - void setDelegate( KCompletionBase *delegate ); - - /** - * Returns the delegation object. - * @return the delegation object, or 0 if there is none - * @see setDelegate() - */ - KCompletionBase *delegate() const { return m_delegate; } - -private: - // This method simply sets the autodelete boolean for - // the completion object, the emit signals and handle - // signals internally flags to the provided values. - void setup( bool, bool, bool ); - - // Flag that determined whether the completion object - // should be deleted when this object is destroyed. - bool m_bAutoDelCompObj; - // Determines whether this widget handles completion signals - // internally or not - bool m_bHandleSignals; - // Determines whether this widget fires rotation signals - bool m_bEmitSignals; - // Stores the completion mode locally. - KGlobalSettings::Completion m_iCompletionMode; - // Pointer to Completion object. - TQGuardedPtr<KCompletion> m_pCompObj; - // Keybindings - KeyBindingMap m_keyMap; - // we may act as a proxy to another KCompletionBase object - KCompletionBase *m_delegate; - - // BCI -protected: - virtual void virtual_hook( int id, void* data ); -private: - KCompletionBasePrivate *d; -}; - -#endif // KCOMPLETION_H |