1 // File: QtxDockAction.h
2 // Author: Sergey TELKOV
4 #ifndef QTX_DOCKACTION_H
5 #define QTX_DOCKACTION_H
11 #include <qpopupmenu.h>
19 #pragma warning( disable:4251 )
22 class QTX_EXPORT QtxDockAction : public QtxAction
26 Q_PROPERTY( bool autoAdd READ isAutoAdd WRITE setAutoAdd )
27 Q_PROPERTY( bool autoPlace READ isAutoPlace WRITE setAutoPlace )
28 Q_PROPERTY( bool separate READ isSeparate WRITE setSeparate )
31 QtxDockAction( QMainWindow*, const char* = 0 );
32 QtxDockAction( const QString&, const QString&, QMainWindow*, const char* = 0 );
33 QtxDockAction( const QString&, const QIconSet&, const QString&, QMainWindow*, const char* = 0 );
34 virtual ~QtxDockAction();
36 QMainWindow* mainWindow() const;
38 bool isAutoAdd() const;
39 void setAutoAdd( const bool );
41 bool isAutoPlace() const;
42 void setAutoPlace( const bool );
44 bool isSeparate() const;
45 void setSeparate( const bool );
47 virtual bool addTo( QWidget* );
48 virtual bool addTo( QWidget*, const int );
49 virtual bool removeFrom( QWidget* );
51 bool addDockWindow( QDockWindow* );
52 bool removeDockWindow( QDockWindow* );
54 virtual bool eventFilter( QObject*, QEvent* );
56 virtual void storeGeometry( QDockWindow* = 0 );
57 virtual void restoreGeometry( QDockWindow* = 0 ) const;
59 virtual void loadGeometry( QtxResourceMgr*, const QString&, const bool = true );
60 virtual void saveGeometry( QtxResourceMgr*, const QString&, const bool = true ) const;
64 void onToggled( bool );
65 void onVisibilityChanged( bool );
66 void onPopupDestroyed( QObject* );
67 void onWindowDestroyed( QObject* );
68 void onDockWindowPositionChanged( QDockWindow* );
71 virtual bool event( QEvent* );
74 QAction* action( QDockWindow* ) const;
75 QDockWindow* dockWindow( const QAction* ) const;
77 void checkPopup( QPopupMenu* );
78 void fillPopup( QPopupMenu* ) const;
79 int findId( QPopupMenu*, QPopupMenu* ) const;
81 void initialize( QMainWindow* );
82 void updateInfo( QDockWindow* );
83 bool isToolBar( QDockWindow* ) const;
84 void dockWindows( QPtrList<QDockWindow>&, QMainWindow* = 0 ) const;
86 QString windowName( QDockWindow* ) const;
87 void savePlaceInfo( QDockWindow* );
88 void loadPlaceInfo( QDockWindow* ) const;
90 bool autoAddDockWindow( QDockWindow* );
91 void autoLoadPlaceInfo( QDockWindow* );
93 void splitMenuText( QString&, QString& ) const;
94 QStringList splitText( const QString&, const QString& ) const;
96 int dockPlace( const QString& ) const;
99 enum { AutoAdd = QEvent::User };
101 typedef struct { bool vis, newLine;
102 int place, index, offset;
103 int x, y, w, h, fixW, fixH; } GeomInfo;
104 typedef struct { QString name; QAction* a; } DockInfo;
105 typedef struct { QPopupMenu *dock, *tool; } MenuInfo;
107 typedef QMap<QDockWindow*, DockInfo> InfoMap;
108 typedef QMap<QString, GeomInfo> GeomMap;
109 typedef QMap<QPopupMenu*, MenuInfo> MenuMap;
112 bool loadGeometry( QtxResourceMgr*, const QString&,
113 const QString&, GeomInfo& ) const;
114 bool saveGeometry( QtxResourceMgr*, const QString&,
115 const QString&, const GeomInfo& ) const;
129 #pragma warning( default:4251 )