summaryrefslogtreecommitdiffstats
path: root/kdeui/klineedit.h
diff options
context:
space:
mode:
Diffstat (limited to 'kdeui/klineedit.h')
-rw-r--r--kdeui/klineedit.h656
1 files changed, 0 insertions, 656 deletions
diff --git a/kdeui/klineedit.h b/kdeui/klineedit.h
deleted file mode 100644
index 3bc12738a..000000000
--- a/kdeui/klineedit.h
+++ /dev/null
@@ -1,656 +0,0 @@
-/* This file is part of the KDE libraries
-
- This class was originally inspired by Torben Weis'
- fileentry.cpp for KFM II.
-
- Copyright (C) 1997 Sven Radej <[email protected]>
- Copyright (c) 1999 Patrick Ward <[email protected]>
- Copyright (c) 1999 Preston Brown <[email protected]>
-
- Completely re-designed:
- Copyright (c) 2000,2001 Dawit Alemayehu <[email protected]>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License (LGPL) 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser 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 _KLINEEDIT_H
-#define _KLINEEDIT_H
-
-#include <tqlineedit.h>
-#include <kcompletion.h>
-
-class TQPopupMenu;
-
-class KCompletionBox;
-class KURL;
-
-/**
- * An enhanced TQLineEdit widget for inputting text.
- *
- * \b Detail \n
- *
- * This widget inherits from TQLineEdit and implements the following
- * additional functionalities: a completion object that provides both
- * automatic and manual text completion as well as multiple match iteration
- * features, configurable key-bindings to activate these features and a
- * popup-menu item that can be used to allow the user to set text completion
- * modes on the fly based on their preference.
- *
- * To support these new features KLineEdit also emits a few more
- * additional signals. These are: completion( const TQString& ),
- * textRotation( KeyBindingType ), and returnPressed( const TQString& ).
- * The completion signal can be connected to a slot that will assist the
- * user in filling out the remaining text. The text rotation signal is
- * intended to be used to iterate through the list of all possible matches
- * whenever there is more than one match for the entered text. The
- * @p returnPressed( const TQString& ) signals are the same as QLineEdit's
- * except it provides the current text in the widget as its argument whenever
- * appropriate.
- *
- * This widget by default creates a completion object when you invoke
- * the completionObject( bool ) member function for the first time or
- * use setCompletionObject( KCompletion*, bool ) to assign your own
- * completion object. Additionally, to make this widget more functional,
- * KLineEdit will by default handle the text rotation and completion
- * events internally when a completion object is created through either one
- * of the methods mentioned above. If you do not need this functionality,
- * simply use @p setHandleSignals( bool ) or set the boolean parameter in
- * the above functions to false.
- *
- * The default key-bindings for completion and rotation is determined
- * from the global settings in KStdAccel. These values, however, can
- * be overridden locally by invoking @p setKeyBinding(). You can easily
- * revert these settings back to the default by simply calling
- * @p useGlobalSettings(). An alternate method would be to default
- * individual key-bindings by using setKeyBinding() with the default
- * second argument.
- *
- * If @p EchoMode for this widget is set to something other than @p TQLineEdit::Normal,
- * the completion mode will always be defaulted to KGlobalSettings::CompletionNone.
- * This is done purposefully to guard against protected entries such as passwords being
- * cached in KCompletion's list. Hence, if the @p EchoMode is not TQLineEdit::Normal, the
- * completion mode is automatically disabled.
- *
- * A read-only KLineEdit will have the same background color as a
- * disabled KLineEdit, but its foreground color will be the one used
- * for the read-write mode. This differs from QLineEdit's implementation
- * and is done to give visual distinction between the three different modes:
- * disabled, read-only, and read-write.
- *
- * \b Usage \n
- *
- * To enable the basic completion feature :
- *
- * \code
- * KLineEdit *edit = new KLineEdit( this, "mywidget" );
- * KCompletion *comp = edit->completionObject();
- * // Connect to the return pressed signal - optional
- * connect(edit,TQT_SIGNAL(returnPressed(const TQString&)),comp,TQT_SLOT(addItem(const TQString&)));
- * \endcode
- *
- * To use a customized completion objects or your
- * own completion object :
- *
- * \code
- * KLineEdit *edit = new KLineEdit( this,"mywidget" );
- * KURLCompletion *comp = new KURLCompletion();
- * edit->setCompletionObject( comp );
- * // Connect to the return pressed signal - optional
- * connect(edit,TQT_SIGNAL(returnPressed(const TQString&)),comp,TQT_SLOT(addItem(const TQString&)));
- * \endcode
- *
- * Note if you specify your own completion object you have to either delete
- * it when you don't need it anymore, or you can tell KLineEdit to delete it
- * for you:
- * \code
- * edit->setAutoDeleteCompletionObject( true );
- * \endcode
- *
- * <b>Miscellaneous function calls :</b>\n
- *
- * \code
- * // Tell the widget to not handle completion and iteration automatically.
- * edit->setHandleSignals( false );
- *
- * // Set your own key-bindings for a text completion mode.
- * edit->setKeyBinding( KCompletionBase::TextCompletion, Qt::End );
- *
- * // Hide the context (popup) menu
- * edit->setContextMenuEnabled( false );
- *
- * // Temporarily disable signal (both completion & iteration) emitions
- * edit->disableSignals();
- *
- * // Default the key-bindings back to the default system settings.
- * edit->useGlobalKeyBindings();
- * \endcode
- *
- * @author Dawit Alemayehu <[email protected]>
- */
-
-class KDEUI_EXPORT KLineEdit : public TQLineEdit, public KCompletionBase
-{
- friend class KComboBox;
-
- Q_OBJECT
- Q_PROPERTY( bool contextMenuEnabled READ isContextMenuEnabled WRITE setContextMenuEnabled )
- Q_PROPERTY( bool urlDropsEnabled READ isURLDropsEnabled WRITE setURLDropsEnabled )
- Q_PROPERTY( bool trapEnterKeyEvent READ trapReturnKey WRITE setTrapReturnKey )
- Q_PROPERTY( bool enableSqueezedText READ isSqueezedTextEnabled WRITE setEnableSqueezedText )
- // @since 3.5.4
- Q_PROPERTY( TQString clickMessage READ clickMessage WRITE setClickMessage )
-
-public:
-
- /**
- * Constructs a KLineEdit object with a default text, a parent,
- * and a name.
- *
- * @param string Text to be shown in the edit widget.
- * @param parent The parent object of this widget.
- * @param name the name of this widget
- */
- KLineEdit( const TQString &string, TQWidget *parent, const char *name = 0 );
-
- /**
- * Constructs a KLineEdit object with a parent and a name.
- *
- * @param parent The parent object of this widget.
- * @param name The name of this widget.
- */
- KLineEdit ( TQWidget *parent=0, const char *name=0 );
-
- /**
- * Destructor.
- */
- virtual ~KLineEdit ();
-
- /**
- * Sets @p url into the lineedit. It uses KURL::prettyURL() so
- * that the url is properly decoded for displaying.
- */
- void setURL( const KURL& url );
-
- /**
- * Puts the text cursor at the end of the string.
- *
- * This method is deprecated. Use TQLineEdit::end()
- * instead.
- *
- * @deprecated
- * TQLineEdit::end()
- */
- void cursorAtEnd() { end( false ); }
-
- /**
- * Re-implemented from KCompletionBase for internal reasons.
- *
- * This function is re-implemented in order to make sure that
- * the EchoMode is acceptable before we set the completion mode.
- *
- * See KCompletionBase::setCompletionMode
- */
- virtual void setCompletionMode( KGlobalSettings::Completion mode );
-
- /**
- * Enables/disables the popup (context) menu.
- *
- * Note that when this function is invoked with its argument
- * set to @p true, then both the context menu and the completion
- * menu item are enabled. If you do not want to the completion
- * item to be visible simply invoke hideModechanger() right
- * after calling this method. Also by default, the context
- * menu is automatically created if this widget is editable. Thus
- * you need to call this function with the argument set to false
- * if you do not want this behavior.
- *
- * @param showMenu If @p true, show the context menu.
- */
- virtual void setContextMenuEnabled( bool showMenu ) { m_bEnableMenu = showMenu; }
-
- /**
- * Returns @p true when the context menu is enabled.
- */
- bool isContextMenuEnabled() const { return m_bEnableMenu; }
-
- /**
- * Enables/Disables handling of URL drops. If enabled and the user
- * drops an URL, the decoded URL will be inserted. Otherwise the default
- * behavior of TQLineEdit is used, which inserts the encoded URL.
- *
- * @param enable If @p true, insert decoded URLs
- */
- void setURLDropsEnabled( bool enable );
-
- /**
- * Returns @p true when decoded URL drops are enabled
- */
- bool isURLDropsEnabled() const;
-
- /**
- * By default, KLineEdit recognizes @p Key_Return and @p Key_Enter and emits
- * the returnPressed() signals, but it also lets the event pass,
- * for example causing a dialog's default-button to be called.
- *
- * Call this method with @p trap = @p true to make @p KLineEdit stop these
- * events. The signals will still be emitted of course.
- *
- * @see trapReturnKey()
- */
- void setTrapReturnKey( bool trap );
-
- /**
- * @returns @p true if keyevents of @p Key_Return or
- * @p Key_Enter will be stopped or if they will be propagated.
- *
- * @see setTrapReturnKey ()
- */
- bool trapReturnKey() const;
-
- /**
- * Re-implemented for internal reasons. API not affected.
- *
- */
- virtual bool eventFilter( TQObject *, TQEvent * );
-
- /**
- * @returns the completion-box, that is used in completion mode
- * KGlobalSettings::CompletionPopup.
- * This method will create a completion-box if none is there, yet.
- *
- * @param create Set this to false if you don't want the box to be created
- * i.e. to test if it is available.
- */
- KCompletionBox * completionBox( bool create = true );
-
- /**
- * Reimplemented for internal reasons, the API is not affected.
- */
- virtual void setCompletionObject( KCompletion *, bool hsig = true );
-
- /**
- * Reimplemented for internal reasons, the API is not affected.
- */
- virtual void copy() const;
-
- /**
- * Enable text squeezing whenever the supplied text is too long.
- * Only works for "read-only" mode.
- *
- * Note that once text squeezing is enabled, TQLineEdit::text()
- * and TQLineEdit::displayText() return the squeezed text. If
- * you want the original text, use @ref originalText.
- *
- * @see QLineEdit
- * @since 3.2
- */
- void setEnableSqueezedText( bool enable );
-
- /**
- * Returns true if text squeezing is enabled.
- * This is only valid when the widget is in read-only mode.
- *
- * @since 3.2
- */
- bool isSqueezedTextEnabled() const;
-
- /**
- * Returns the original text if text squeezing is enabled.
- * If the widget is not in "read-only" mode, this function
- * returns the same thing as TQLineEdit::text().
- *
- * @see QLineEdit
- * @since 3.2
- */
- TQString originalText() const;
-
- /**
- * Set the completion-box to be used in completion mode
- * KGlobalSettings::CompletionPopup.
- * This will do nothing if a completion-box already exists.
- *
- * @param box The KCompletionBox to set
- * @since 3.4
- */
- void setCompletionBox( KCompletionBox *box );
-
- /**
- * This makes the line edit display a grayed-out hinting text as long as
- * the user didn't enter any text. It is often used as indication about
- * the purpose of the line edit.
- * @since 3.5.4
- */
- void setClickMessage( const TQString &msg );
-
- /**
- * @return the message set with setClickMessage
- * @since 3.5.4
- */
- TQString clickMessage() const;
-
-signals:
-
- /**
- * Emitted whenever the completion box is activated.
- * @since 3.1
- */
- void completionBoxActivated (const TQString &);
-
- /**
- * Emitted when the user presses the return key.
- *
- * The argument is the current text. Note that this
- * signal is @em not emitted if the widget's @p EchoMode is set to
- * TQLineEdit::EchoMode.
- */
- void returnPressed( const TQString& );
-
- /**
- * Emitted when the completion key is pressed.
- *
- * Please note that this signal is @em not emitted if the
- * completion mode is set to @p CompletionNone or @p EchoMode is
- * @em normal.
- */
- void completion( const TQString& );
-
- /**
- * Emitted when the shortcut for substring completion is pressed.
- */
- void substringCompletion( const TQString& );
-
- /**
- * Emitted when the text rotation key-bindings are pressed.
- *
- * The argument indicates which key-binding was pressed.
- * In KLineEdit's case this can be either one of two values:
- * PrevCompletionMatch or NextCompletionMatch. See
- * @p setKeyBinding for details.
- *
- * Note that this signal is @em not emitted if the completion
- * mode is set to @p KGlobalSettings::CompletionNone or
- * @p echoMode() is @em not normal.
- */
- void textRotation( KCompletionBase::KeyBindingType );
-
- /**
- * Emitted when the user changed the completion mode by using the
- * popupmenu.
- */
- void completionModeChanged( KGlobalSettings::Completion );
-
- /**
- * Emitted before the context menu is displayed.
- *
- * The signal allows you to add your own entries into the
- * the context menu that is created on demand.
- *
- * NOTE: Do not store the pointer to the QPopupMenu
- * provided through since it is created and deleted
- * on demand.
- *
- * @param p the context menu about to be displayed
- */
- void aboutToShowContextMenu( TQPopupMenu * p );
-
-public slots:
-
- /**
- * Re-implemented for internal reasons. API not changed.
- */
- virtual void setReadOnly(bool);
-
- /**
- * Iterates through all possible matches of the completed text or
- * the history list.
- *
- * This function simply iterates over all possible matches in case
- * multimple matches are found as a result of a text completion request.
- * It will have no effect if only a single match is found.
- *
- * @param type The key-binding invoked.
- */
- void rotateText( KCompletionBase::KeyBindingType type );
-
- /**
- * See KCompletionBase::setCompletedText.
- */
- virtual void setCompletedText( const TQString& );
-
- /**
- * Sets @p items into the completion-box if completionMode() is
- * CompletionPopup. The popup will be shown immediately.
- *
- * @param items list of completion matches to be shown in the completion box.
- */
- void setCompletedItems( const TQStringList& items );
-
- /**
- * Same as the above function except it allows you to temporarily
- * turn off text completion in CompletionPopupAuto mode.
- *
- * TODO: Merge with above function in KDE 4.
- * TODO: Does that make this or the above @deprecated ?
- *
- * @param items list of completion matches to be shown in the completion box.
- * @param autoSuggest true if you want automatic text completion (suggestion) enabled.
- */
- void setCompletedItems( const TQStringList& items, bool autoSuggest );
-
- /**
- * Reimplemented to workaround a buggy TQLineEdit::clear()
- * (changing the clipboard to the text we just had in the lineedit)
- */
- virtual void clear();
-
- /**
- * Squeezes @p text into the line edit.
- * This can only be used with read-only line-edits.
- * @since 3.1
- */
- void setSqueezedText( const TQString &text);
-
- /**
- * Re-implemented to enable text squeezing. API is not affected.
- */
- virtual void setText ( const TQString& );
-
-
-protected slots:
-
- /**
- * Completes the remaining text with a matching one from
- * a given list.
- */
- virtual void makeCompletion( const TQString& );
-
- /**
- * @deprecated. Will be removed in the next major release!
- */
- void slotAboutToShow() {}
-
- /**
- * @deprecated. Will be removed in the next major release!
- */
- void slotCancelled() {}
-
- /**
- * Resets the current displayed text.
- * Call this function to revert a text completion if the user
- * cancels the request. Mostly applies to popup completions.
- */
- void userCancelled(const TQString & cancelText);
-
-protected:
-
- /**
- * Re-implemented for internal reasons. API not affected.
- *
- * See TQLineEdit::resizeEvent().
- */
- virtual void resizeEvent( TQResizeEvent * );
-
- /**
- * Re-implemented for internal reasons. API not affected.
- *
- * See TQLineEdit::keyPressEvent().
- */
- virtual void keyPressEvent( TQKeyEvent * );
-
- /**
- * Re-implemented for internal reasons. API not affected.
- *
- * See TQLineEdit::mousePressEvent().
- */
- virtual void mousePressEvent( TQMouseEvent * );
-
- /**
- * Re-implemented for internal reasons. API not affected.
- *
- * See TQWidget::mouseDoubleClickEvent().
- */
- virtual void mouseDoubleClickEvent( TQMouseEvent * );
-
- /**
- * Re-implemented for internal reasons. API not affected.
- *
- * See TQLineEdit::mouseReleaseEvent().
- */
- virtual void mouseReleaseEvent( TQMouseEvent * );
-
- /**
- * Re-implemented for internal reasons. API not affected.
- *
- * See TQLineEdit::contextMenuEvent().
- */
- virtual void contextMenuEvent( TQContextMenuEvent * );
-
- /**
- * Re-implemented for internal reasons. API not affected.
- *
- * See TQLineEdit::createPopupMenu().
- */
- virtual TQPopupMenu *createPopupMenu();
-
- /**
- * Re-implemented for internal reasons. API not affected.
- *
- * See TQFrame::drawContents().
- */
- virtual void drawContents( TQPainter *p );
-
- /**
- * Re-implemented to handle URI drops.
- *
- * See TQLineEdit::dropEvent().
- */
- virtual void dropEvent( TQDropEvent * );
-
- /*
- * This function simply sets the lineedit text and
- * highlights the text appropriately if the boolean
- * value is set to true.
- *
- * @param text
- * @param marked
- */
- virtual void setCompletedText( const TQString& /*text*/, bool /*marked*/ );
-
-
- /**
- * Sets the widget in userSelection mode or in automatic completion
- * selection mode. This changes the colors of selections.
- */
- void setUserSelection( bool userSelection );
-
- /**
- * Reimplemented for internal reasons, the API is not affected.
- */
- virtual void create( WId = 0, bool initializeWindow = true,
- bool destroyOldWindow = true );
-
- /**
- * Re-implemented for internal reasons. API not affected.
- *
- * See TQLineEdit::focusInEvent().
- */
- virtual void focusInEvent( TQFocusEvent* );
-
- /**
- * Re-implemented for internal reasons. API not affected.
- *
- * See TQLineEdit::focusOutEvent().
- */
- virtual void focusOutEvent( TQFocusEvent* );
-
- /**
- * Whether in current state text should be auto-suggested
- * @since 3.4
- */
- bool autoSuggest() const;
-
-private slots:
- void completionMenuActivated( int id );
- void tripleClickTimeout(); // resets possibleTripleClick
- void slotRestoreSelectionColors();
- void setTextWorkaround( const TQString& text );
-
-private:
-
- // Constants that represent the ID's of the popup menu.
- enum MenuID
- {
- Default = 42,
- NoCompletion,
- AutoCompletion,
- ShellCompletion,
- PopupCompletion,
- ShortAutoCompletion,
- PopupAutoCompletion
- };
-
- /**
- * Initializes variables. Called from the constructors.
- */
- void init();
-
- bool copySqueezedText( bool clipboard ) const;
-
- /**
- * Checks whether we should/should not consume a key used as
- * an accelerator.
- */
- bool overrideAccel (const TQKeyEvent* e);
-
- /**
- * Properly sets the squeezed text whenever the widget is
- * created or resized.
- */
- void setSqueezedText ();
-
- bool m_bEnableMenu;
-
- bool possibleTripleClick; // set in mousePressEvent, deleted in tripleClickTimeout
-
-protected:
- virtual void virtual_hook( int id, void* data );
-private:
- class KLineEditPrivate;
- KLineEditPrivate *d;
-};
-
-#endif