Salome HOME
Initial version
[modules/gui.git] / src / Qtx / QtxMenuButton.h
1 // File:      QtxMenuButton.h
2 // Author:    Sergey TELKOV
3
4 #ifndef QTXMENUBUTTON_H
5 #define QTXMENUBUTTON_H
6
7 #include "Qtx.h"
8
9 #include <qpushbutton.h>
10
11 class QIconSet;
12 class QPopupMenu;
13
14 class QTX_EXPORT QtxMenuButton : public QPushButton
15 {
16     Q_OBJECT
17
18     class PopupMenu;
19
20 public:
21     enum { Left, Right, Top, Bottom };
22
23 public:
24     QtxMenuButton( int, QWidget* = 0, const char* = 0 );
25         QtxMenuButton( const QString&, QWidget* = 0, const char* = 0 );
26         QtxMenuButton( int, const QString&, QWidget* = 0, const char* = 0 );
27         QtxMenuButton( QWidget* = 0, const char* = 0 );
28         virtual ~QtxMenuButton();
29
30         int           position() const;
31         void          setPosition( const int );
32
33     bool          isAlignWidth() const;
34     void          setAlignWidth( const bool );
35
36         bool          isArrowEnabled() const;
37         void          setArrowEnabled( const bool );
38
39         void          clear();
40         void          removeItem( int );
41         int           insertSeparator( int = -1 );
42         int           insertItem( const QString&, int = -1, int = -1 );
43         int           insertItem( const QIconSet&, const QString&, int = -1, int = -1 );
44
45         virtual QSize sizeHint() const;
46         virtual QSize minimumSizeHint() const;
47
48 signals:
49         void          activated( int );
50
51 private slots:
52         void          onShowPopup();
53
54 protected:
55     QPopupMenu*   popup() const;
56         virtual bool  event( QEvent* );
57         virtual void  resizeEvent( QResizeEvent* );
58         virtual void  drawButtonLabel( QPainter* );
59
60 private:
61     void          initialize();
62
63 private:
64         int           myPos;
65         bool          myArrow;
66     bool          myAlign;
67         QPopupMenu*   myPopup;
68 };
69
70 #endif