home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / qt3_emx.zip / include / qmenudata.h < prev    next >
C/C++ Source or Header  |  2001-10-11  |  9KB  |  277 lines

  1. /****************************************************************************
  2. ** $Id:  qt/qmenudata.h   3.0.0   edited Oct 8 04:10 $
  3. **
  4. ** Definition of QMenuData class
  5. **
  6. ** Created : 941128
  7. **
  8. ** Copyright (C) 1992-2000 Trolltech AS.  All rights reserved.
  9. **
  10. ** This file is part of the widgets module of the Qt GUI Toolkit.
  11. **
  12. ** This file may be distributed under the terms of the Q Public License
  13. ** as defined by Trolltech AS of Norway and appearing in the file
  14. ** LICENSE.QPL included in the packaging of this file.
  15. **
  16. ** This file may be distributed and/or modified under the terms of the
  17. ** GNU General Public License version 2 as published by the Free Software
  18. ** Foundation and appearing in the file LICENSE.GPL included in the
  19. ** packaging of this file.
  20. **
  21. ** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
  22. ** licenses may use this file in accordance with the Qt Commercial License
  23. ** Agreement provided with the Software.
  24. **
  25. ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
  26. ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  27. **
  28. ** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
  29. **   information about Qt Commercial License Agreements.
  30. ** See http://www.trolltech.com/qpl/ for QPL licensing information.
  31. ** See http://www.trolltech.com/gpl/ for GPL licensing information.
  32. **
  33. ** Contact info@trolltech.com if any conditions of this licensing are
  34. ** not clear to you.
  35. **
  36. **********************************************************************/
  37.  
  38. #ifndef QMENUDATA_H
  39. #define QMENUDATA_H
  40.  
  41. #ifndef QT_H
  42. #include "qglobal.h"
  43. #include "qiconset.h" // conversion QPixmap->QIconset
  44. #include "qkeysequence.h"
  45. #include "qstring.h"
  46. #include "qsignal.h"
  47. #include "qfont.h"
  48. #endif // QT_H
  49.  
  50. #ifndef QT_NO_MENUDATA
  51.  
  52. class QPopupMenu;
  53. class QMenuDataData;
  54. class QObject;
  55.  
  56. class QCustomMenuItem;
  57. class QMenuItemData;
  58.  
  59. class Q_EXPORT QMenuItem            // internal menu item class
  60. {
  61. friend class QMenuData;
  62. public:
  63.     QMenuItem();
  64.    ~QMenuItem();
  65.  
  66.     int        id()        const    { return ident; }
  67.     QIconSet   *iconSet()    const    { return iconset_data; }
  68.     QString    text()        const    { return text_data; }
  69.     QString    whatsThis()    const    { return whatsthis_data; }
  70.     QPixmap    *pixmap()    const    { return pixmap_data; }
  71.     QPopupMenu *popup()        const    { return popup_menu; }
  72.     QWidget *widget()        const    { return widget_item; }
  73.     QCustomMenuItem *custom()    const;
  74. #ifndef QT_NO_ACCEL
  75.     QKeySequence key()        const    { return accel_key; }
  76. #endif
  77.     QSignal    *signal()    const    { return signal_data; }
  78.     bool    isSeparator()    const    { return is_separator; }
  79.     bool    isEnabled()    const    { return is_enabled; }
  80.     bool    isChecked()    const    { return is_checked; }
  81.     bool    isDirty()    const    { return is_dirty; }
  82.  
  83.     void    setText( const QString &text ) { text_data = text; }
  84.     void    setDirty( bool dirty )           { is_dirty = dirty; }
  85.     void    setWhatsThis( const QString &text ) { whatsthis_data = text; }
  86.  
  87. private:
  88.     int        ident;                // item identifier
  89.     QIconSet   *iconset_data;            // icons
  90.     QString    text_data;            // item text
  91.     QString    whatsthis_data;            // item Whats This help text
  92.     QPixmap    *pixmap_data;            // item pixmap
  93.     QPopupMenu *popup_menu;            // item popup menu
  94.     QWidget    *widget_item;            // widget menu item
  95. #ifndef QT_NO_ACCEL
  96.     QKeySequence    accel_key;        // accelerator key (state|ascii)
  97. #endif
  98.     QSignal    *signal_data;            // connection
  99.     uint    is_separator : 1;        // separator flag
  100.     uint    is_enabled   : 1;        // disabled flag
  101.     uint    is_checked   : 1;        // checked flag
  102.     uint    is_dirty     : 1;        // dirty (update) flag
  103.     QMenuItemData* d;
  104.  
  105.     QMenuItemData* extra();
  106.  
  107. private:    // Disabled copy constructor and operator=
  108. #if defined(Q_DISABLE_COPY)
  109.     QMenuItem( const QMenuItem & );
  110.     QMenuItem &operator=( const QMenuItem & );
  111. #endif
  112. };
  113.  
  114. #include "qptrlist.h"
  115. typedef QPtrList<QMenuItem>     QMenuItemList;
  116. typedef QPtrListIterator<QMenuItem> QMenuItemListIt;
  117.  
  118.  
  119. class Q_EXPORT QCustomMenuItem : public Qt
  120. {
  121. public:
  122.     QCustomMenuItem();
  123.     virtual ~QCustomMenuItem();
  124.     virtual bool fullSpan() const;
  125.     virtual bool isSeparator() const;
  126.     virtual void setFont( const QFont& font );
  127.     virtual void paint( QPainter* p, const QColorGroup& cg, bool act,
  128.             bool enabled, int x, int y, int w, int h ) = 0;
  129.     virtual QSize sizeHint() = 0;
  130. };
  131.  
  132.  
  133. class Q_EXPORT QMenuData            // menu data class
  134. {
  135. friend class QMenuBar;
  136. friend class QPopupMenu;
  137. public:
  138.     QMenuData();
  139.     virtual ~QMenuData();
  140.  
  141.     uint    count() const;
  142.  
  143.  
  144.     int        insertItem( const QString &text,
  145.                 const QObject *receiver, const char* member,
  146.                 const QKeySequence& accel = 0, int id = -1, int index = -1 );
  147.     int        insertItem( const QIconSet& icon,
  148.                 const QString &text,
  149.                 const QObject *receiver, const char* member,
  150.                 const QKeySequence& accel = 0, int id = -1, int index = -1 );
  151.     int        insertItem( const QPixmap &pixmap,
  152.                 const QObject *receiver, const char* member,
  153.                 const QKeySequence& accel = 0, int id = -1, int index = -1 );
  154.     int        insertItem( const QIconSet& icon,
  155.                 const QPixmap &pixmap,
  156.                 const QObject *receiver, const char* member,
  157.                 const QKeySequence& accel = 0, int id = -1, int index = -1 );
  158.  
  159.     int        insertItem( const QString &text, int id=-1, int index=-1 );
  160.     int        insertItem( const QIconSet& icon,
  161.                 const QString &text, int id=-1, int index=-1 );
  162.  
  163.     int        insertItem( const QString &text, QPopupMenu *popup,
  164.                 int id=-1, int index=-1 );
  165.     int        insertItem( const QIconSet& icon,
  166.                 const QString &text, QPopupMenu *popup,
  167.                 int id=-1, int index=-1 );
  168.  
  169.  
  170.     int        insertItem( const QPixmap &pixmap, int id=-1, int index=-1 );
  171.     int        insertItem( const QIconSet& icon,
  172.                 const QPixmap &pixmap, int id=-1, int index=-1 );
  173.     int        insertItem( const QPixmap &pixmap, QPopupMenu *popup,
  174.                 int id=-1, int index=-1 );
  175.     int        insertItem( const QIconSet& icon,
  176.                 const QPixmap &pixmap, QPopupMenu *popup,
  177.                 int id=-1, int index=-1 );
  178.  
  179.     int        insertItem( QWidget* widget, int id=-1, int index=-1 );
  180.  
  181.     int        insertItem( const QIconSet& icon, QCustomMenuItem* custom, int id=-1, int index=-1 );
  182.     int        insertItem( QCustomMenuItem* custom, int id=-1, int index=-1 );
  183.  
  184.  
  185.     int        insertSeparator( int index=-1 );
  186.  
  187.     void    removeItem( int id )        { removeItemAt(indexOf(id)); }
  188.     void    removeItemAt( int index );
  189.     void    clear();
  190.  
  191. #ifndef QT_NO_ACCEL
  192.     QKeySequence accel( int id )    const;
  193.     void    setAccel( const QKeySequence& key, int id );
  194. #endif
  195.  
  196.     QIconSet    *iconSet( int id )    const;
  197.     QString text( int id )        const;
  198.     QPixmap    *pixmap( int id )    const;
  199.  
  200.     void setWhatsThis( int id, const QString& );
  201.     QString whatsThis( int id ) const;
  202.  
  203.  
  204.     void    changeItem( int id, const QString &text );
  205.     void    changeItem( int id, const QPixmap &pixmap );
  206.     void    changeItem( int id, const QIconSet &icon, const QString &text );
  207.     void    changeItem( int id, const QIconSet &icon, const QPixmap &pixmap );
  208.  
  209.     void    changeItem( const QString &text, int id ) { changeItem( id, text); } // obsolete
  210.     void    changeItem( const QPixmap &pixmap, int id ) { changeItem( id, pixmap ); } // obsolete
  211.     void    changeItem( const QIconSet &icon, const QString &text, int id ) {    // obsolete
  212.     changeItem( id, icon, text );
  213.     }
  214.  
  215.     bool    isItemActive( int id ) const;
  216.  
  217.     bool    isItemEnabled( int id ) const;
  218.     void    setItemEnabled( int id, bool enable );
  219.  
  220.     bool    isItemChecked( int id ) const;
  221.     void    setItemChecked( int id, bool check );
  222.  
  223.     virtual void updateItem( int id );
  224.  
  225.     int        indexOf( int id )    const;
  226.     int        idAt( int index )    const;
  227.     virtual void    setId( int index, int id );
  228.  
  229.     bool    connectItem( int id,
  230.                  const QObject *receiver, const char* member );
  231.     bool    disconnectItem( int id,
  232.                 const QObject *receiver, const char* member );
  233.  
  234.     bool    setItemParameter( int id, int param );
  235.     int    itemParameter( int id ) const;
  236.  
  237.     QMenuItem  *findItem( int id )    const;
  238.     QMenuItem  *findItem( int id, QMenuData ** parent )    const;
  239.     QMenuItem * findPopup( QPopupMenu *, int *index = 0 );
  240.  
  241.     virtual void activateItemAt( int index );
  242.  
  243. protected:
  244.     int           actItem;
  245.     QMenuItemList *mitems;
  246.     QMenuData      *parentMenu;
  247.     uint       isPopupMenu    : 1;
  248.     uint       isMenuBar    : 1;
  249.     uint       badSize    : 1;
  250.     uint       mouseBtDn    : 1;
  251.     uint    avoid_circularity : 1;
  252.     uint    actItemDown : 1;
  253.     virtual void   menuContentsChanged();
  254.     virtual void   menuStateChanged();
  255.     virtual void   menuInsPopup( QPopupMenu * );
  256.     virtual void   menuDelPopup( QPopupMenu * );
  257.  
  258. private:
  259.     int        insertAny( const QString *, const QPixmap *, QPopupMenu *,
  260.                const QIconSet*, int, int, QWidget* = 0, QCustomMenuItem* = 0);
  261.     void    removePopup( QPopupMenu * );
  262.     void    changeItemIconSet( int id, const QIconSet &icon );
  263.  
  264.     QMenuDataData *d;
  265.  
  266. private:    // Disabled copy constructor and operator=
  267. #if defined(Q_DISABLE_COPY)
  268.     QMenuData( const QMenuData & );
  269.     QMenuData &operator=( const QMenuData & );
  270. #endif
  271. };
  272.  
  273.  
  274. #endif // QT_NO_MENUDATA
  275.  
  276. #endif // QMENUDATA_H
  277.