diff options
author | Michele Calgaro <[email protected]> | 2019-04-21 23:22:20 +0900 |
---|---|---|
committer | Michele Calgaro <[email protected]> | 2019-04-21 23:22:20 +0900 |
commit | dba036816b279bc1539a9f3894fbc414665d2bce (patch) | |
tree | 29e4bf00bafe515e7afdd02168d65a47a3f9fbc0 /tqtinterface/qt4/src/widgets/tqmenudata.cpp | |
parent | 6f1b4f0c7505a049d992a33f6e409b7c75732d4b (diff) | |
download | experimental-dba036816b279bc1539a9f3894fbc414665d2bce.tar.gz experimental-dba036816b279bc1539a9f3894fbc414665d2bce.zip |
Removed unnecessary and/or TDE-unrelated code.
Signed-off-by: Michele Calgaro <[email protected]>
Signed-off-by: Slávek Banko <[email protected]>
Diffstat (limited to 'tqtinterface/qt4/src/widgets/tqmenudata.cpp')
-rw-r--r-- | tqtinterface/qt4/src/widgets/tqmenudata.cpp | 1606 |
1 files changed, 0 insertions, 1606 deletions
diff --git a/tqtinterface/qt4/src/widgets/tqmenudata.cpp b/tqtinterface/qt4/src/widgets/tqmenudata.cpp deleted file mode 100644 index 925ed22..0000000 --- a/tqtinterface/qt4/src/widgets/tqmenudata.cpp +++ /dev/null @@ -1,1606 +0,0 @@ -/**************************************************************************** -** -** Implementation of TQMenuData class -** -** Created : 941128 -** -** Copyright (C) 2010 Timothy Pearson and (C) 1992-2008 Trolltech ASA. -** -** This file is part of the widgets module of the TQt GUI Toolkit. -** -** This file may be used under the terms of the GNU General -** Public License versions 2.0 or 3.0 as published by the Free -** Software Foundation and appearing in the files LICENSE.GPL2 -** and LICENSE.GPL3 included in the packaging of this file. -** Alternatively you may (at your option) use any later version -** of the GNU General Public License if such license has been -** publicly approved by Trolltech ASA (or its successors, if any) -** and the KDE Free TQt Foundation. -** -** Please review the following information to ensure GNU General -** Public Licensing requirements will be met: -** http://trolltech.com/products/qt/licenses/licensing/opensource/. -** If you are unsure which license is appropriate for your use, please -** review the following information: -** http://trolltech.com/products/qt/licenses/licensing/licensingoverview -** or contact the sales department at [email protected]. -** -** This file may be used under the terms of the Q Public License as -** defined by Trolltech ASA and appearing in the file LICENSE.TQPL -** included in the packaging of this file. Licensees holding valid TQt -** Commercial licenses may use this file in accordance with the TQt -** Commercial License Agreement provided with the Software. -** -** This file is provided "AS IS" with NO WARRANTY OF ANY KIND, -** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted -** herein. -** -**********************************************************************/ - -#include "tqmenudata.h" -#ifndef TQT_NO_MENUDATA -#include "tqpopupmenu.h" -#include "tqmenubar.h" -#include "tqapplication.h" -#include "tqguardedptr.h" - -class TQMenuItemData { -public: - TQCustomMenuItem *custom_item; // custom menu item -}; - -class TQMenuDataData { - // attention: also defined in qmenubar.cpp and qpopupmenu.cpp -public: - TQMenuDataData(); - TQGuardedPtr<TQWidget> aWidget; - int aInt; -}; -TQMenuDataData::TQMenuDataData() - : aInt(-1) -{} - -/*! - \class TQMenuData tqmenudata.h - \brief The TQMenuData class is a base class for TQMenuBar and TQPopupMenu. - - \ingroup misc - - TQMenuData has an internal list of menu items. A menu item can have - a text(), an \link accel() accelerator\endlink, a pixmap(), an - iconSet(), a whatsThis() text and a popup menu (unless it is a - separator). Menu items may optionally be \link setItemChecked() - checked\endlink (except for separators). - - The menu item sends out an \link TQMenuBar::activated() - activated()\endlink signal when it is chosen and a \link - TQMenuBar::highlighted() highlighted()\endlink signal when it - receives the user input focus. - - \keyword menu identifier - - Menu items are assigned the menu identifier \e id that is passed - in insertItem() or an automatically generated identifier if \e id - is < 0 (the default). The generated identifiers (negative - integers) are guaranteed to be unique within the entire - application. The identifier is used to access the menu item in - other functions. - - Menu items can be removed with removeItem() and removeItemAt(), or - changed with changeItem(). All menu items can be removed with - clear(). Accelerators can be changed or set with setAccel(). - Checkable items can be checked or unchecked with setItemChecked(). - Items can be enabled or disabled using setItemEnabled() and - connected and disconnected with connectItem() and disconnectItem() - respectively. By default, newly created menu items are visible. - They can be hidden (and shown again) with setItemVisible(). - - Menu items are stored in a list. Use findItem() to find an item by - its list position or by its menu identifier. (See also indexOf() - and idAt().) - - \sa TQAccel TQPopupMenu TQAction -*/ - - -/***************************************************************************** - TQMenuItem member functions - *****************************************************************************/ - -TQMenuItem::TQMenuItem() - :ident( -1 ), iconset_data( 0 ), pixmap_data( 0 ), popup_menu( 0 ), - widget_item( 0 ), signal_data( 0 ), is_separator( FALSE ), is_enabled( TRUE ), - is_checked( FALSE ), is_dirty( TRUE ), is_visible( TRUE ), d( 0) -{} - -TQMenuItem::~TQMenuItem() -{ - delete iconset_data; - delete pixmap_data; - delete signal_data; - delete widget_item; - if ( d ) - delete d->custom_item; - delete d; -} - - -/***************************************************************************** - TQMenuData member functions - *****************************************************************************/ - -TQMenuItemData* TQMenuItem::extra() -{ - if ( !d ) d = new TQMenuItemData; - return d; -} - -TQCustomMenuItem *TQMenuItem::custom() const -{ - if ( !d ) return 0; - return d->custom_item; -} - - -static int get_seq_id() -{ - static int seq_no = -2; - return seq_no--; -} - - -/*! - Constructs an empty menu data list. -*/ - -TQMenuData::TQMenuData() -{ - actItem = -1; // no active menu item - mitems = new TQMenuItemList; // create list of menu items - TQ_CHECK_PTR( mitems ); - mitems->setAutoDelete( TRUE ); - parentMenu = 0; // assume top level - isPopupMenu = FALSE; - isMenuBar = FALSE; - mouseBtDn = FALSE; - badSize = TRUE; - avoid_circularity = 0; - actItemDown = FALSE; - d = new TQMenuDataData; -} - -/*! - Removes all menu items and disconnects any Q_SIGNALS that have been - connected. -*/ - -TQMenuData::~TQMenuData() -{ - delete mitems; // delete menu item list - delete d; -} - - -/*! - Virtual function; notifies subclasses about an item with \a id - that has been changed. -*/ - -void TQMenuData::updateItem( int /* id */ ) // reimplemented in subclass -{ -} - -/*! - Virtual function; notifies subclasses that one or more items have - been inserted or removed. -*/ - -void TQMenuData::menuContentsChanged() // reimplemented in subclass -{ -} - -/*! - Virtual function; notifies subclasses that one or more items have - changed state (enabled/disabled or checked/unchecked). -*/ - -void TQMenuData::menuStateChanged() // reimplemented in subclass -{ -} - -/*! - Virtual function; notifies subclasses that a popup menu item has - been inserted. -*/ - -void TQMenuData::menuInsPopup( TQPopupMenu * ) // reimplemented in subclass -{ -} - -/*! - Virtual function; notifies subclasses that a popup menu item has - been removed. -*/ - -void TQMenuData::menuDelPopup( TQPopupMenu * ) // reimplemented in subclass -{ -} - - -/*! - Returns the number of items in the menu. -*/ - -uint TQMenuData::count() const -{ - return mitems->count(); -} - - - -/*! - \internal - - Internal function that insert a menu item. Called by all insert() - functions. -*/ - -int TQMenuData::insertAny( const TQString *text, const TQPixmap *pixmap, - TQPopupMenu *popup, const TQIconSet* iconset, int id, int index, - TQWidget* widget, TQCustomMenuItem* custom ) -{ - if ( index < 0 ) { // append, but not if the rightmost item is an mdi separator in the menubar - index = mitems->count(); - if ( isMenuBar && mitems->last() && mitems->last()->widget() && mitems->last()->isSeparator() ) - index--; - } else if ( index > (int) mitems->count() ) { // append - index = mitems->count(); - } - if ( id < 0 ) // -2, -3 etc. - id = get_seq_id(); - - register TQMenuItem *mi = new TQMenuItem; - TQ_CHECK_PTR( mi ); - mi->ident = id; - if ( widget != 0 ) { - mi->widget_item = widget; - mi->is_separator = !widget->isFocusEnabled(); - } else if ( custom != 0 ) { - mi->extra()->custom_item = custom; - mi->is_separator = custom->isSeparator(); - if ( iconset && !iconset->isNull() ) - mi->iconset_data = new TQIconSet( *iconset ); - } else if ( text == 0 && pixmap == 0 && popup == 0 ) { - mi->is_separator = TRUE; // separator - } else { -#ifndef TQ_OS_TEMP - mi->text_data = text?*text:TQString(); -#else - TQString newText( *text ); - newText.truncate( newText.findRev( '\t' ) ); - mi->text_data = newText.isEmpty()?TQString():newText; -#endif -#ifndef TQT_NO_ACCEL - mi->accel_key = TQt::Key_unknown; -#endif - if ( pixmap && !pixmap->isNull() ) - mi->pixmap_data = new TQPixmap( *pixmap ); - if ( (mi->popup_menu = popup) ) - menuInsPopup( popup ); - if ( iconset && !iconset->isNull() ) - mi->iconset_data = new TQIconSet( *iconset ); - } - - mitems->insert( index, mi ); - TQPopupMenu* p = ::tqqt_cast<TQPopupMenu*>(TQMenuData::d->aWidget); - if (p && p->isVisible() && p->mitems) { - p->mitems->clear(); - for ( TQMenuItemListIt it( *mitems ); it.current(); ++it ) { - if ( it.current()->id() != TQMenuData::d->aInt && !it.current()->widget() ) - p->mitems->append( it.current() ); - } - } - menuContentsChanged(); // menu data changed - return mi->ident; -} - -/*! - \internal - - Internal function that finds the menu item where \a popup is located, - storing its index at \a index if \a index is not NULL. -*/ -TQMenuItem *TQMenuData::findPopup( TQPopupMenu *popup, int *index ) -{ - int i = 0; - TQMenuItem *mi = mitems->first(); - while ( mi ) { - if ( mi->popup_menu == popup ) // found popup - break; - i++; - mi = mitems->next(); - } - if ( index && mi ) - *index = i; - return mi; -} - -void TQMenuData::removePopup( TQPopupMenu *popup ) -{ - int index = 0; - TQMenuItem *mi = findPopup( popup, &index ); - if ( mi ) { - mi->popup_menu = 0; - removeItemAt( index ); - } -} - - -/*! - The family of insertItem() functions inserts menu items into a - popup menu or a menu bar. - - A menu item is usually either a text string or a pixmap, both with - an optional icon or keyboard accelerator. For special cases it is - also possible to insert custom items (see \l{TQCustomMenuItem}) or - even widgets into popup menus. - - Some insertItem() members take a popup menu as an additional - argument. Use this to insert submenus into existing menus or - pulldown menus into a menu bar. - - The number of insert functions may look confusing, but they are - actually quite simple to use. - - This default version inserts a menu item with the text \a text, - the accelerator key \a accel, an id and an optional index and - connects it to the slot \a member in the object \a receiver. - - Example: - \code - TQMenuBar *mainMenu = new TQMenuBar; - TQPopupMenu *fileMenu = new TQPopupMenu; - fileMenu->insertItem( "New", myView, TQT_SLOT(newFile()), CTRL+Key_N ); - fileMenu->insertItem( "Open", myView, TQT_SLOT(open()), CTRL+Key_O ); - mainMenu->insertItem( "File", fileMenu ); - \endcode - - Not all insert functions take an object/slot parameter or an - accelerator key. Use connectItem() and setAccel() on those items. - - If you need to translate accelerators, use tr() with the text and - accelerator. (For translations use a string \link TQKeySequence key - sequence\endlink.): - \code - fileMenu->insertItem( tr("Open"), myView, TQT_SLOT(open()), - tr("Ctrl+O") ); - \endcode - - In the example above, pressing Ctrl+O or selecting "Open" from the - menu activates the myView->open() function. - - Some insert functions take a TQIconSet parameter to specify the - little menu item icon. Note that you can always pass a TQPixmap - object instead. - - The \a id specifies the identification number associated with the - menu item. Note that only positive values are valid, as a negative - value will make TQt select a unique id for the item. - - The \a index specifies the position in the menu. The menu item is - appended at the end of the list if \a index is negative. - - Note that keyboard accelerators in TQt are not application-global, - instead they are bound to a certain top-level window. For example, - accelerators in TQPopupMenu items only work for menus that are - associated with a certain window. This is true for popup menus - that live in a menu bar since their accelerators will then be - installed in the menu bar itself. This also applies to stand-alone - popup menus that have a top-level widget in their parentWidget() - chain. The menu will then install its accelerator object on that - top-level widget. For all other cases use an independent TQAccel - object. - - \warning Be careful when passing a literal 0 to insertItem() - because some C++ compilers choose the wrong overloaded function. - Cast the 0 to what you mean, e.g. \c{(TQObject*)0}. - - \warning On Mac OS X, items that connect to a slot that are inserted into a - menubar will not function as we use the native menubar that knows nothing - about Q_SIGNALS or Q_SLOTS. Instead insert the items into a popup menu and - insert the popup menu into the menubar. This may be fixed in a future TQt - version. - - Returns the allocated menu identifier number (\a id if \a id >= 0). - - \sa removeItem(), changeItem(), setAccel(), connectItem(), TQAccel, - tqnamespace.h -*/ - -int TQMenuData::insertItem( const QString &text, - const TQT_BASE_OBJECT_NAME *receiver, const char* member, - const TQKeySequence& accel, int id, int index ) -{ - TQString tqtext = TQString(text); - int actualID = insertAny( &tqtext, 0, 0, 0, id, index ); - connectItem( actualID, receiver, member ); -#ifndef TQT_NO_ACCEL - if ( accel ) - setAccel( accel, actualID ); -#endif - return actualID; -} - -/*! - \overload - - Inserts a menu item with icon \a icon, text \a text, accelerator - \a accel, optional id \a id, and optional \a index position. The - menu item is connected it to the \a receiver's \a member slot. The - icon will be displayed to the left of the text in the item. - - Returns the allocated menu identifier number (\a id if \a id >= 0). - - \sa removeItem(), changeItem(), setAccel(), connectItem(), TQAccel, - tqnamespace.h -*/ - -int TQMenuData::insertItem( const TQIconSet& icon, - const TQString &text, - const TQT_BASE_OBJECT_NAME *receiver, const char* member, - const TQKeySequence& accel, int id, int index ) -{ - int actualID = insertAny( &text, 0, 0, &icon, id, index ); - connectItem( actualID, receiver, member ); -#ifndef TQT_NO_ACCEL - if ( accel ) - setAccel( accel, actualID ); -#endif - return actualID; -} - -/*! - \overload - - Inserts a menu item with pixmap \a pixmap, accelerator \a accel, - optional id \a id, and optional \a index position. The menu item - is connected it to the \a receiver's \a member slot. The icon will - be displayed to the left of the text in the item. - - To look best when being highlighted as a menu item, the pixmap - should provide a mask (see TQPixmap::mask()). - - Returns the allocated menu identifier number (\a id if \a id >= 0). - - \sa removeItem(), changeItem(), setAccel(), connectItem() -*/ - -int TQMenuData::insertItem( const QPixmap &pixmap, - const TQT_BASE_OBJECT_NAME *receiver, const char* member, - const TQKeySequence& accel, int id, int index ) -{ - int actualID = insertAny( 0, &TQT_TQPIXMAP_OBJECT(pixmap), 0, 0, id, index ); - connectItem( actualID, receiver, member ); -#ifndef TQT_NO_ACCEL - if ( accel ) - setAccel( accel, actualID ); -#endif - return actualID; -} - - -/*! - \overload - - Inserts a menu item with icon \a icon, pixmap \a pixmap, - accelerator \a accel, optional id \a id, and optional \a index - position. The icon will be displayed to the left of the pixmap in - the item. The item is connected to the \a member slot in the \a - receiver object. - - To look best when being highlighted as a menu item, the pixmap - should provide a mask (see TQPixmap::mask()). - - Returns the allocated menu identifier number (\a id if \a id >= 0). - - \sa removeItem(), changeItem(), setAccel(), connectItem(), TQAccel, - tqnamespace.h -*/ - -int TQMenuData::insertItem( const TQIconSet& icon, - const TQPixmap &pixmap, - const TQT_BASE_OBJECT_NAME *receiver, const char* member, - const TQKeySequence& accel, int id, int index ) -{ - int actualID = insertAny( 0, &pixmap, 0, &icon, id, index ); - connectItem( actualID, receiver, member ); -#ifndef TQT_NO_ACCEL - if ( accel ) - setAccel( accel, actualID ); -#endif - return actualID; -} - - - -/*! - \overload - - Inserts a menu item with text \a text, optional id \a id, and - optional \a index position. - - Returns the allocated menu identifier number (\a id if \a id >= 0). - - \sa removeItem(), changeItem(), setAccel(), connectItem() -*/ - -int TQMenuData::insertItem( const QString &text, int id, int index ) -{ - TQString tqtext = TQString(text); - return insertAny( &tqtext, 0, 0, 0, id, index ); -} - -/*! - \overload - - Inserts a menu item with icon \a icon, text \a text, optional id - \a id, and optional \a index position. The icon will be displayed - to the left of the text in the item. - - Returns the allocated menu identifier number (\a id if \a id >= 0). - - \sa removeItem(), changeItem(), setAccel(), connectItem() -*/ - -int TQMenuData::insertItem( const TQIconSet& icon, - const TQString &text, int id, int index ) -{ - return insertAny( &text, 0, 0, &icon, id, index ); -} - -/*! - \overload - - Inserts a menu item with text \a text, submenu \a popup, optional - id \a id, and optional \a index position. - - The \a popup must be deleted by the programmer or by its parent - widget. It is not deleted when this menu item is removed or when - the menu is deleted. - - Returns the allocated menu identifier number (\a id if \a id >= 0). - - \sa removeItem(), changeItem(), setAccel(), connectItem() -*/ - -int TQMenuData::insertItem( const QString &text, TQPopupMenu *popup, - int id, int index ) -{ - TQString tqtext = TQString(text); - return insertAny( &tqtext, 0, popup, 0, id, index ); -} - -/*! - \overload - - Inserts a menu item with icon \a icon, text \a text, submenu \a - popup, optional id \a id, and optional \a index position. The icon - will be displayed to the left of the text in the item. - - The \a popup must be deleted by the programmer or by its parent - widget. It is not deleted when this menu item is removed or when - the menu is deleted. - - Returns the allocated menu identifier number (\a id if \a id >= 0). - - \sa removeItem(), changeItem(), setAccel(), connectItem() -*/ - -int TQMenuData::insertItem( const TQIconSet& icon, - const TQString &text, TQPopupMenu *popup, - int id, int index ) -{ - return insertAny( &text, 0, popup, &icon, id, index ); -} - -/*! - \overload - - Inserts a menu item with pixmap \a pixmap, optional id \a id, and - optional \a index position. - - To look best when being highlighted as a menu item, the pixmap - should provide a mask (see TQPixmap::mask()). - - Returns the allocated menu identifier number (\a id if \a id >= 0). - - \sa removeItem(), changeItem(), setAccel(), connectItem() -*/ - -int TQMenuData::insertItem( const QPixmap &pixmap, int id, int index ) -{ - return insertAny( 0, &TQT_TQPIXMAP_OBJECT(pixmap), 0, 0, id, index ); -} - -/*! - \overload - - Inserts a menu item with icon \a icon, pixmap \a pixmap, optional - id \a id, and optional \a index position. The icon will be - displayed to the left of the pixmap in the item. - - Returns the allocated menu identifier number (\a id if \a id >= 0). - - \sa removeItem(), changeItem(), setAccel(), connectItem() -*/ - -int TQMenuData::insertItem( const TQIconSet& icon, - const TQPixmap &pixmap, int id, int index ) -{ - return insertAny( 0, &pixmap, 0, &icon, id, index ); -} - - -/*! - \overload - - Inserts a menu item with pixmap \a pixmap, submenu \a popup, - optional id \a id, and optional \a index position. - - The \a popup must be deleted by the programmer or by its parent - widget. It is not deleted when this menu item is removed or when - the menu is deleted. - - Returns the allocated menu identifier number (\a id if \a id >= 0). - - \sa removeItem(), changeItem(), setAccel(), connectItem() -*/ - -int TQMenuData::insertItem( const QPixmap &pixmap, TQPopupMenu *popup, - int id, int index ) -{ - return insertAny( 0, &TQT_TQPIXMAP_OBJECT(pixmap), popup, 0, id, index ); -} - - -/*! - \overload - - Inserts a menu item with icon \a icon, pixmap \a pixmap submenu \a - popup, optional id \a id, and optional \a index position. The icon - will be displayed to the left of the pixmap in the item. - - The \a popup must be deleted by the programmer or by its parent - widget. It is not deleted when this menu item is removed or when - the menu is deleted. - - Returns the allocated menu identifier number (\a id if \a id >= 0). - - \sa removeItem(), changeItem(), setAccel(), connectItem() -*/ - -int TQMenuData::insertItem( const TQIconSet& icon, - const TQPixmap &pixmap, TQPopupMenu *popup, - int id, int index ) -{ - return insertAny( 0, &pixmap, popup, &icon, id, index ); -} - - - -/*! - \overload - - Inserts a menu item that consists of the widget \a widget with - optional id \a id, and optional \a index position. - - Ownership of \a widget is transferred to the popup menu or to the - menu bar. - - Theoretically, any widget can be inserted into a popup menu. In - practice, this only makes sense with certain widgets. - - If a widget is not focus-enabled (see - \l{TQWidget::isFocusEnabled()}), the menu treats it as a separator; - this means that the item is not selectable and will never get - focus. In this way you can, for example, simply insert a TQLabel if - you need a popup menu with a title. - - If the widget is focus-enabled it will get focus when the user - traverses the popup menu with the arrow keys. If the widget does - not accept \c ArrowUp and \c ArrowDown in its key event handler, - the focus will move back to the menu when the respective arrow key - is hit one more time. This works with a TQLineEdit, for example. If - the widget accepts the arrow key itself, it must also provide the - possibility to put the focus back on the menu again by calling - TQWidget::focusNextPrevChild(). Futhermore, if the embedded widget - closes the menu when the user made a selection, this can be done - safely by calling: - \code - if ( isVisible() && - parentWidget() && - parentWidget()->inherits("TQPopupMenu") ) - parentWidget()->close(); - \endcode - - Returns the allocated menu identifier number (\a id if \a id >= 0). - - \sa removeItem() -*/ -int TQMenuData::insertItem( QWidget* widget, int id, int index ) -{ - return insertAny( 0, 0, 0, 0, id, index, TQT_TQWIDGET(widget) ); -} - - -/*! - \overload - - Inserts a custom menu item \a custom with optional id \a id, and - optional \a index position. - - This only works with popup menus. It is not supported for menu - bars. Ownership of \a custom is transferred to the popup menu. - - If you want to connect a custom item to a slot, use connectItem(). - - Returns the allocated menu identifier number (\a id if \a id >= 0). - - \sa connectItem(), removeItem(), TQCustomMenuItem -*/ -int TQMenuData::insertItem( TQCustomMenuItem* custom, int id, int index ) -{ - return insertAny( 0, 0, 0, 0, id, index, 0, custom ); -} - -/*! - \overload - - Inserts a custom menu item \a custom with an \a icon and with - optional id \a id, and optional \a index position. - - This only works with popup menus. It is not supported for menu - bars. Ownership of \a custom is transferred to the popup menu. - - If you want to connect a custom item to a slot, use connectItem(). - - Returns the allocated menu identifier number (\a id if \a id >= 0). - - \sa connectItem(), removeItem(), TQCustomMenuItem -*/ -int TQMenuData::insertItem( const TQIconSet& icon, TQCustomMenuItem* custom, int id, int index ) -{ - return insertAny( 0, 0, 0, &icon, id, index, 0, custom ); -} - - -/*! - Inserts a separator at position \a index, and returns the menu identifier - number allocated to it. The separator becomes the last menu item if - \a index is negative. - - In a popup menu a separator is rendered as a horizontal line. In a - Motif menu bar a separator is spacing, so the rest of the items - (normally just "Help") are drawn right-justified. In a Windows - menu bar separators are ignored (to comply with the Windows style - guidelines). -*/ -int TQMenuData::insertSeparator( int index ) -{ - return insertAny( 0, 0, 0, 0, -1, index ); -} - -/*! - \fn void TQMenuData::removeItem( int id ) - - Removes the menu item that has the identifier \a id. - - \sa removeItemAt(), clear() -*/ - -void TQMenuData::removeItem( int id ) -{ - TQMenuData *parent; - if ( findItem( id, &parent ) ) - parent->removeItemAt(parent->indexOf(id)); -} - -/*! - Removes the menu item at position \a index. - - \sa removeItem(), clear() -*/ - -void TQMenuData::removeItemAt( int index ) -{ - if ( index < 0 || index >= (int)mitems->count() ) { -#if defined(TQT_CHECK_RANGE) - qWarning( "TQMenuData::removeItem: Index %d out of range", index ); -#endif - return; - } - TQMenuItem *mi = mitems->at( index ); - if ( mi->popup_menu ) - menuDelPopup( mi->popup_menu ); - mitems->remove(); - TQPopupMenu* p = ::tqqt_cast<TQPopupMenu*>(TQMenuData::d->aWidget); - if (p && p->isVisible() && p->mitems) { - p->mitems->clear(); - for ( TQMenuItemListIt it( *mitems ); it.current(); ++it ) { - if ( it.current()->id() != TQMenuData::d->aInt && !it.current()->widget() ) - p->mitems->append( it.current() ); - } - } - if ( !TQApplication::closingDown() ) // avoid trouble - menuContentsChanged(); -} - - -/*! - Removes all menu items. - - \sa removeItem(), removeItemAt() -*/ - -void TQMenuData::clear() -{ - register TQMenuItem *mi = mitems->first(); - while ( mi ) { - if ( mi->popup_menu ) - menuDelPopup( mi->popup_menu ); - mitems->remove(); - mi = mitems->current(); - } - TQPopupMenu* p = ::tqqt_cast<TQPopupMenu*>(TQMenuData::d->aWidget); - if (p && p->isVisible() && p->mitems) { - p->mitems->clear(); - } - if ( !TQApplication::closingDown() ) // avoid trouble - menuContentsChanged(); -} - -#ifndef TQT_NO_ACCEL - -/*! - Returns the accelerator key that has been defined for the menu - item \a id, or 0 if it has no accelerator key or if there is no - such menu item. - - \sa setAccel(), TQAccel, tqnamespace.h -*/ - -TQKeySequence TQMenuData::accel( int id ) const -{ - TQMenuItem *mi = findItem( id ); - if ( mi ) - return mi->key(); - return TQKeySequence(); -} - -/*! - Sets the accelerator key for the menu item \a id to \a key. - - An accelerator key consists of a key code and a combination of the - modifiers \c SHIFT, \c CTRL, \c ALT or \c UNICODE_ACCEL (OR'ed or - added). The header file \c tqnamespace.h contains a list of key - codes. - - Defining an accelerator key produces a text that is added to the - menu item; for instance, \c CTRL + \c Key_O produces "Ctrl+O". The - text is formatted differently for different platforms. - - Note that keyboard accelerators in TQt are not application-global, - instead they are bound to a certain top-level window. For example, - accelerators in TQPopupMenu items only work for menus that are - associated with a certain window. This is true for popup menus - that live in a menu bar since their accelerators will then be - installed in the menu bar itself. This also applies to stand-alone - popup menus that have a top-level widget in their parentWidget() - chain. The menu will then install its accelerator object on that - top-level widget. For all other cases use an independent TQAccel - object. - - Example: - \code - TQMenuBar *mainMenu = new TQMenuBar; - TQPopupMenu *fileMenu = new TQPopupMenu; // file sub menu - fileMenu->insertItem( "Open Document", 67 ); // add "Open" item - fileMenu->setAccel( CTRL + Key_O, 67 ); // Ctrl+O to open - fileMenu->insertItem( "Quit", 69 ); // add "Quit" item - fileMenu->setAccel( CTRL + ALT + Key_Delete, 69 ); // add Alt+Del to quit - mainMenu->insertItem( "File", fileMenu ); // add the file menu - \endcode - - If you need to translate accelerators, use tr() with a string: - \code - fileMenu->setAccel( tr("Ctrl+O"), 67 ); - \endcode - - You can also specify the accelerator in the insertItem() function. - You may prefer to use TQAction to associate accelerators with menu - items. - - \sa accel() insertItem() TQAccel TQAction -*/ - -void TQMenuData::setAccel( const TQKeySequence& key, int id ) -{ - TQMenuData *parent; - TQMenuItem *mi = findItem( id, &parent ); - if ( mi ) { - mi->accel_key = key; - parent->menuContentsChanged(); - } -} - -#endif // TQT_NO_ACCEL - -/*! - Returns the icon set that has been set for menu item \a id, or 0 - if no icon set has been set. - - \sa changeItem(), text(), pixmap() -*/ - -TQIconSet* TQMenuData::iconSet( int id ) const -{ - TQMenuItem *mi = findItem( id ); - return mi ? mi->iconSet() : 0; -} - -/*! - Returns the text that has been set for menu item \a id, or - TQString::null if no text has been set. - - \sa changeItem(), pixmap(), iconSet() -*/ - -TQString TQMenuData::text( int id ) const -{ - TQMenuItem *mi = findItem( id ); - return mi ? mi->text() : TQString::null; -} - -/*! - Returns the pixmap that has been set for menu item \a id, or 0 if - no pixmap has been set. - - \sa changeItem(), text(), iconSet() -*/ - -TQPixmap *TQMenuData::pixmap( int id ) const -{ - TQMenuItem *mi = findItem( id ); - return mi ? mi->pixmap() : 0; -} - -/*! - \fn void TQMenuData::changeItem( const TQString &, int ) - \obsolete - - Changes the text of the menu item \a id. If the item has an icon, - the icon remains unchanged. - - \sa text() -*/ -/*! - \fn void TQMenuData::changeItem( const TQPixmap &, int ) - \obsolete - - Changes the pixmap of the menu item \a id. If the item has an icon, - the icon remains unchanged. - - \sa pixmap() -*/ - -/*! - \fn void TQMenuData::changeItem( const TQIconSet &, const TQString &, int ) - \obsolete - - Changes the icon and text of the menu item \a id. - - \sa pixmap() -*/ - -/*! - Changes the text of the menu item \a id to \a text. If the item - has an icon, the icon remains unchanged. - - \sa text() -*/ - -void TQMenuData::changeItem( int id, const TQString &text ) -{ - TQMenuData *parent; - TQMenuItem *mi = findItem( id, &parent ); - if ( mi ) { // item found - if ( mi->text_data == text ) // same string - return; - if ( mi->pixmap_data ) { // delete pixmap - delete mi->pixmap_data; - mi->pixmap_data = 0; - } - mi->text_data = text; -#ifndef TQT_NO_ACCEL - if ( !mi->accel_key && text.find( '\t' ) != -1 ) - mi->accel_key = TQt::Key_unknown; -#endif - parent->menuContentsChanged(); - } -} - -/*! - \overload - - Changes the pixmap of the menu item \a id to the pixmap \a pixmap. - If the item has an icon, the icon is unchanged. - - \sa pixmap() -*/ - -void TQMenuData::changeItem( int id, const TQPixmap &pixmap ) -{ - TQMenuData *parent; - TQMenuItem *mi = findItem( id, &parent ); - if ( mi ) { // item found - register TQPixmap *i = mi->pixmap_data; - bool fast_refresh = i != 0 && - i->width() == pixmap.width() && - i->height() == pixmap.height() && - !mi->text(); - if ( !mi->text_data.isNull() ) // delete text - mi->text_data = TQString::null; - if ( !pixmap.isNull() ) - mi->pixmap_data = new TQPixmap( pixmap ); - else - mi->pixmap_data = 0; - delete i; // old mi->pixmap_data, could be &pixmap - if ( fast_refresh ) - parent->updateItem( id ); - else - parent->menuContentsChanged(); - } -} - -/*! - \overload - - Changes the iconset and text of the menu item \a id to the \a icon - and \a text respectively. - - \sa pixmap() -*/ - -void TQMenuData::changeItem( int id, const TQIconSet &icon, const TQString &text ) -{ - changeItem( id, text ); - changeItemIconSet( id, icon ); -} - -/*! - \overload - - Changes the iconset and pixmap of the menu item \a id to \a icon - and \a pixmap respectively. - - \sa pixmap() -*/ - -void TQMenuData::changeItem( int id, const TQIconSet &icon, const TQPixmap &pixmap ) -{ - changeItem( id, pixmap ); - changeItemIconSet( id, icon ); -} - - - -/*! - Changes the icon of the menu item \a id to \a icon. - - \sa pixmap() -*/ - -void TQMenuData::changeItemIconSet( int id, const TQIconSet &icon ) -{ - TQMenuData *parent; - TQMenuItem *mi = findItem( id, &parent ); - if ( mi ) { // item found - register TQIconSet *i = mi->iconset_data; - bool fast_refresh = i != 0; - if ( !icon.isNull() ) - mi->iconset_data = new TQIconSet( icon ); - else - mi->iconset_data = 0; - delete i; // old mi->iconset_data, could be &icon - if ( fast_refresh ) - parent->updateItem( id ); - else - parent->menuContentsChanged(); - } -} - - -/*! - Returns TRUE if the item with identifier \a id is enabled; - otherwise returns FALSE - - \sa setItemEnabled(), isItemVisible() -*/ - -bool TQMenuData::isItemEnabled( int id ) const -{ - TQMenuItem *mi = findItem( id ); - return mi ? mi->isEnabled() : FALSE; -} - -/*! - If \a enable is TRUE, enables the menu item with identifier \a id; - otherwise disables the menu item with identifier \a id. - - \sa isItemEnabled() -*/ - -void TQMenuData::setItemEnabled( int id, bool enable ) -{ - TQMenuData *parent; - TQMenuItem *mi = findItem( id, &parent ); - if ( mi && (bool)mi->is_enabled != enable ) { - mi->is_enabled = enable; -#if !defined(TQT_NO_ACCEL) && !defined(TQT_NO_POPUPMENU) - if ( mi->popup() ) - mi->popup()->enableAccel( enable ); -#endif - parent->menuStateChanged(); - } -} - - -/*! - Returns TRUE if the menu item with the id \a id is currently - active; otherwise returns FALSE. -*/ -bool TQMenuData::isItemActive( int id ) const -{ - if ( actItem == -1 ) - return FALSE; - return indexOf( id ) == actItem; -} - -/*! - Returns TRUE if the menu item with the id \a id has been checked; - otherwise returns FALSE. - - \sa setItemChecked() -*/ - -bool TQMenuData::isItemChecked( int id ) const -{ - TQMenuItem *mi = findItem( id ); - return mi ? mi->isChecked() : FALSE; -} - -/*! - If \a check is TRUE, checks the menu item with id \a id; otherwise - unchecks the menu item with id \a id. Calls - TQPopupMenu::setCheckable( TRUE ) if necessary. - - \sa isItemChecked() -*/ - -void TQMenuData::setItemChecked( int id, bool check ) -{ - TQMenuData *parent; - TQMenuItem *mi = findItem( id, &parent ); - if ( mi && (bool)mi->is_checked != check ) { - mi->is_checked = check; -#ifndef TQT_NO_POPUPMENU - if ( parent->isPopupMenu && !((TQPopupMenu *)parent)->isCheckable() ) - ((TQPopupMenu *)parent)->setCheckable( TRUE ); -#endif - parent->menuStateChanged(); - } -} - -/*! - Returns TRUE if the menu item with the id \a id is visible; - otherwise returns FALSE. - - \sa setItemVisible() -*/ - -bool TQMenuData::isItemVisible( int id ) const -{ - TQMenuItem *mi = findItem( id ); - return mi ? mi->isVisible() : FALSE; -} - -/*! - If \a visible is TRUE, shows the menu item with id \a id; otherwise - hides the menu item with id \a id. - - \sa isItemVisible(), isItemEnabled() -*/ - -void TQMenuData::setItemVisible( int id, bool visible ) -{ - TQMenuData *parent; - TQMenuItem *mi = findItem( id, &parent ); - if ( mi && (bool)mi->is_visible != visible ) { - mi->is_visible = visible; - parent->menuContentsChanged(); - } -} - - -/*! - Returns the menu item with identifier \a id, or 0 if there is no - item with this identifier. - - Note that TQMenuItem is an internal class, and that you should not - need to call this function. Use the higher level functions like - text(), pixmap() and changeItem() to get and modify menu item - attributes instead. - - \sa indexOf() -*/ - -TQMenuItem *TQMenuData::findItem( int id ) const -{ - return findItem( id, 0 ); -} - - -/*! - \overload - - Returns the menu item with identifier \a id, or 0 if there is no - item with this identifier. Changes \a *parent to point to the - parent of the return value. - - Note that TQMenuItem is an internal class, and that you should not - need to call this function. Use the higher level functions like - text(), pixmap() and changeItem() to get and modify menu item - attributes instead. - - \sa indexOf() -*/ - -TQMenuItem * TQMenuData::findItem( int id, TQMenuData ** parent ) const -{ - if ( parent ) - *parent = (TQMenuData *)this; // ### - - if ( id == -1 ) // bad identifier - return 0; - TQMenuItemListIt it( *mitems ); - TQMenuItem *mi; - while ( (mi=it.current()) ) { // search this menu - ++it; - if ( mi->ident == id ) // found item - return mi; - } - it.toFirst(); - while ( (mi=it.current()) ) { // search submenus - ++it; -#ifndef TQT_NO_POPUPMENU - if ( mi->popup_menu ) { - TQPopupMenu *p = mi->popup_menu; - if (!p->avoid_circularity) { - p->avoid_circularity = 1; - mi = mi->popup_menu->findItem( id, parent ); - p->avoid_circularity = 0; - if ( mi ) // found item - return mi; - } - } -#endif - } - return 0; // not found -} - -/*! - Returns the index of the menu item with identifier \a id, or -1 if - there is no item with this identifier. - - \sa idAt(), findItem() -*/ - -int TQMenuData::indexOf( int id ) const -{ - if ( id == -1 ) // bad identifier - return -1; - TQMenuItemListIt it( *mitems ); - TQMenuItem *mi; - int index = 0; - while ( (mi=it.current()) ) { - if ( mi->ident == id ) // this one? - return index; - ++index; - ++it; - } - return -1; // not found -} - -/*! - Returns the identifier of the menu item at position \a index in - the internal list, or -1 if \a index is out of range. - - \sa setId(), indexOf() -*/ - -int TQMenuData::idAt( int index ) const -{ - return index < (int)mitems->count() && index >= 0 ? - mitems->at(index)->id() : -1; -} - -/*! - Sets the menu identifier of the item at \a index to \a id. - - If \a index is out of range, the operation is ignored. - - \sa idAt() -*/ - -void TQMenuData::setId( int index, int id ) -{ - if ( index < (int)mitems->count() ) - mitems->at(index)->ident = id; -} - - -/*! - Sets the parameter of the activation signal of item \a id to \a - param. - - If any receiver takes an integer parameter, this value is passed. - - \sa connectItem(), disconnectItem(), itemParameter() -*/ -bool TQMenuData::setItemParameter( int id, int param ) { - TQMenuItem *mi = findItem( id ); - if ( !mi ) // no such identifier - return FALSE; - if ( !mi->signal_data ) { // create new signal - mi->signal_data = new TQSignal; - TQ_CHECK_PTR( mi->signal_data ); - } - mi->signal_data->setValue( param ); - return TRUE; -} - - -/*! - Returns the parameter of the activation signal of item \a id. - - If no parameter has been specified for this item with - setItemParameter(), the value defaults to \a id. - - \sa connectItem(), disconnectItem(), setItemParameter() -*/ -int TQMenuData::itemParameter( int id ) const -{ - TQMenuItem *mi = findItem( id ); - if ( !mi || !mi->signal_data ) - return id; - return mi->signal_data->value().toInt(); -} - - -/*! - Connects the menu item with identifier \a id to \a{receiver}'s \a - member slot or signal. - - The receiver's slot (or signal) is activated when the menu item is - activated. - - \sa disconnectItem(), setItemParameter() -*/ - -bool TQMenuData::connectItem( int id, const TQT_BASE_OBJECT_NAME *receiver, - const char* member ) -{ - TQMenuItem *mi = findItem( id ); - if ( !mi ) // no such identifier - return FALSE; - if ( !mi->signal_data ) { // create new signal - mi->signal_data = new TQSignal; - TQ_CHECK_PTR( mi->signal_data ); - mi->signal_data->setValue( id ); - } - return mi->signal_data->connect( receiver, member ); -} - - -/*! - Disconnects the \a{receiver}'s \a member from the menu item with - identifier \a id. - - All connections are removed when the menu data object is - destroyed. - - \sa connectItem(), setItemParameter() -*/ - -bool TQMenuData::disconnectItem( int id, const TQT_BASE_OBJECT_NAME *receiver, - const char* member ) -{ - TQMenuItem *mi = findItem( id ); - if ( !mi || !mi->signal_data ) // no identifier or no signal - return FALSE; - return mi->signal_data->disconnect( receiver, member ); -} - -/*! - Sets \a text as What's This help for the menu item with identifier - \a id. - - \sa whatsThis() -*/ -void TQMenuData::setWhatsThis( int id, const TQString& text ) -{ - - TQMenuData *parent; - TQMenuItem *mi = findItem( id, &parent ); - if ( mi ) { - mi->setWhatsThis( text ); - parent->menuContentsChanged(); - } -} - -/*! - Returns the What's This help text for the item with identifier \a - id or TQString::null if no text has yet been defined. - - \sa setWhatsThis() -*/ -TQString TQMenuData::whatsThis( int id ) const -{ - - TQMenuItem *mi = findItem( id ); - return mi? mi->whatsThis() : TQString::null; -} - - - -/*! - \class TQCustomMenuItem tqmenudata.h - \brief The TQCustomMenuItem class is an abstract base class for custom menu items in popup menus. - - \ingroup misc - - A custom menu item is a menu item that is defined by two pure - virtual functions, paint() and tqsizeHint(). The size hint tells the - menu how much space it needs to reserve for this item, and paint - is called whenever the item needs painting. - - This simple mechanism allows you to create all kinds of - application specific menu items. Examples are items showing - different fonts in a word processor or menus that allow the - selection of drawing utilities in a vector drawing program. - - A custom item is inserted into a popup menu with - TQPopupMenu::insertItem(). - - By default, a custom item can also have an icon and a keyboard - accelerator. You can reimplement fullSpan() to return TRUE if you - want the item to span the entire popup menu width. This is - particularly useful for labels. - - If you want the custom item to be treated just as a separator, - reimplement isSeparator() to return TRUE. - - Note that you can insert pixmaps or bitmaps as items into a popup - menu without needing to create a TQCustomMenuItem. However, custom - menu items offer more flexibility, and -- especially important - with Windows style -- provide the possibility of drawing the item - with a different color when it is highlighted. - - \link menu-example.html menu/menu.cpp\endlink shows a simple - example how custom menu items can be used. - - Note: the current implementation of TQCustomMenuItem will not - recognize shortcut keys that are from text with ampersands. Normal - accelerators work though. - - <img src=qpopmenu-fancy.png> - - \sa TQMenuData, TQPopupMenu -*/ - - - -/*! - Constructs a TQCustomMenuItem -*/ -TQCustomMenuItem::TQCustomMenuItem() -{ -} - -/*! - Destroys a TQCustomMenuItem -*/ -TQCustomMenuItem::~TQCustomMenuItem() -{ -} - - -/*! - Sets the font of the custom menu item to \a font. - - This function is called whenever the font in the popup menu - changes. For menu items that show their own individual font entry, - you want to ignore this. -*/ -void TQCustomMenuItem::setFont( const TQFont& /* font */ ) -{ -} - - - -/*! - Returns TRUE if this item wants to span the entire popup menu - width; otherwise returns FALSE. The default is FALSE, meaning that - the menu may show an icon and an accelerator key for this item as - well. -*/ -bool TQCustomMenuItem::fullSpan() const -{ - return FALSE; -} - -/*! - Returns TRUE if this item is just a separator; otherwise returns - FALSE. -*/ -bool TQCustomMenuItem::isSeparator() const -{ - return FALSE; -} - - -/*! - \fn void TQCustomMenuItem::paint( TQPainter* p, const TQColorGroup& cg, bool act, bool enabled, int x, int y, int w, int h ); - - Paints this item. When this function is invoked, the painter \a p - is set to a font and foreground color suitable for a menu item - text using color group \a cg. The item is active if \a act is TRUE - and enabled if \a enabled is TRUE. The tqgeometry values \a x, \a y, - \a w and \a h specify where to draw the item. - - Do not draw any background, this has already been done by the - popup menu according to the current GUI style. -*/ - - -/*! - \fn TQSize TQCustomMenuItem::tqsizeHint(); - - Returns the item's size hint. -*/ - - - -/*! - Activates the menu item at position \a index. - - If the index is invalid (for example, -1), the object itself is - deactivated. -*/ -void TQMenuData::activateItemAt( int index ) -{ -#ifndef TQT_NO_MENUBAR - if ( isMenuBar ) - ( (TQMenuBar*)this )->activateItemAt( index ); - else -#endif - { -#ifndef TQT_NO_POPUPMENU - if ( isPopupMenu ) - ( (TQPopupMenu*)this )->activateItemAt( index ); -#endif - } -} - -#endif |