1 #include "STD_MDIDesktop.h"
3 #include <SUIT_Session.h>
4 #include <SUIT_ViewWindow.h>
5 #include <SUIT_ResourceMgr.h>
8 #include <QtxActionMenuMgr.h>
9 #include <QtxWorkspaceAction.h>
13 #include <qworkspace.h>
14 #include <qobjectlist.h>
18 STD_MDIDesktop::STD_MDIDesktop()
21 myWorkspaceAction( 0 )
23 QVBox* base = new QVBox( this );
24 base->setFrameStyle( QFrame::Panel | QFrame::Sunken );
26 setCentralWidget( base );
28 myWorkspace = new QWorkspace( base );
30 connect( myWorkspace, SIGNAL( windowActivated( QWidget* ) ),
31 this, SLOT( onWindowActivated( QWidget* ) ) );
36 STD_MDIDesktop::~STD_MDIDesktop()
40 SUIT_ViewWindow* STD_MDIDesktop::activeWindow() const
42 SUIT_ViewWindow* wnd = 0;
44 QWidget* wid = myWorkspace->activeWindow();
45 if ( wid && wid->inherits( "SUIT_ViewWindow" ) )
46 wnd = (SUIT_ViewWindow*)wid;
51 QPtrList<SUIT_ViewWindow> STD_MDIDesktop::windows() const
53 QPtrList<SUIT_ViewWindow> winList;
55 QWidgetList children = myWorkspace->windowList();
56 for ( QWidgetListIt it( children ); it.current(); ++it )
58 if ( it.current()->inherits( "SUIT_ViewWindow" ) )
59 winList.append( (SUIT_ViewWindow*)it.current() );
65 QWidget* STD_MDIDesktop::parentArea() const
70 void STD_MDIDesktop::windowOperation( const int type )
72 myWorkspaceAction->perform( operationFlag( type ) );
75 void STD_MDIDesktop::setWindowOperations( const int first, ... )
78 va_start( ints, first );
80 QValueList<int> typeList;
85 typeList.append( cur );
86 cur = va_arg( ints, int );
89 setWindowOperations( typeList );
92 void STD_MDIDesktop::setWindowOperations( const QValueList<int>& opList )
96 for ( QValueList<int>::const_iterator it = opList.begin(); it != opList.end(); ++it )
97 flags = flags | operationFlag( *it );
99 myWorkspaceAction->setItems( flags );
102 QWorkspace* STD_MDIDesktop::workspace() const
107 void STD_MDIDesktop::onWindowActivated( QWidget* w )
109 if ( w && w->inherits( "SUIT_ViewWindow" ) )
110 emit windowActivated( (SUIT_ViewWindow*)w );
113 void STD_MDIDesktop::createActions()
115 if ( myWorkspaceAction )
118 SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
122 myWorkspaceAction = new QtxWorkspaceAction( workspace(), this );
124 myWorkspaceAction->setItems( QtxWorkspaceAction::Cascade | QtxWorkspaceAction::Tile |
125 QtxWorkspaceAction::HTile | QtxWorkspaceAction::VTile |
126 QtxWorkspaceAction::Windows );
129 myWorkspaceAction->setIconSet( QtxWorkspaceAction::Cascade,
130 resMgr->loadPixmap( "STD", tr( "ICON_DESK_WINDOW_CASCADE" ) ) );
131 myWorkspaceAction->setMenuText( QtxWorkspaceAction::Cascade, tr( "MEN_DESK_WINDOW_CASCADE" ) );
132 myWorkspaceAction->setStatusTip( QtxWorkspaceAction::Cascade, tr( "PRP_DESK_WINDOW_CASCADE" ) );
135 myWorkspaceAction->setIconSet( QtxWorkspaceAction::Tile,
136 resMgr->loadPixmap( "STD", tr( "ICON_DESK_WINDOW_TILE" ) ) );
137 myWorkspaceAction->setMenuText( QtxWorkspaceAction::Tile, tr( "MEN_DESK_WINDOW_TILE" ) );
138 myWorkspaceAction->setStatusTip( QtxWorkspaceAction::Tile, tr( "PRP_DESK_WINDOW_TILE" ) );
141 myWorkspaceAction->setIconSet( QtxWorkspaceAction::HTile,
142 resMgr->loadPixmap( "STD", tr( "ICON_DESK_WINDOW_HTILE" ) ) );
143 myWorkspaceAction->setMenuText( QtxWorkspaceAction::HTile, tr( "MEN_DESK_WINDOW_HTILE" ) );
144 myWorkspaceAction->setStatusTip( QtxWorkspaceAction::HTile, tr( "PRP_DESK_WINDOW_HTILE" ) );
147 myWorkspaceAction->setIconSet( QtxWorkspaceAction::VTile,
148 resMgr->loadPixmap( "STD", tr( "ICON_DESK_WINDOW_VTILE" ) ) );
149 myWorkspaceAction->setMenuText( QtxWorkspaceAction::VTile, tr( "MEN_DESK_WINDOW_VTILE" ) );
150 myWorkspaceAction->setStatusTip( QtxWorkspaceAction::VTile, tr( "PRP_DESK_WINDOW_VTILE" ) );
153 QtxActionMenuMgr* mMgr = menuMgr();
157 int winMenuId = mMgr->insert( tr( "MEN_DESK_WINDOW" ), -1, 100 );
158 mMgr->insert( myWorkspaceAction, winMenuId, -1 );
159 mMgr->insert( QtxActionMenuMgr::separator(), winMenuId, -1 );
162 int STD_MDIDesktop::operationFlag( const int type ) const
168 res = QtxWorkspaceAction::Cascade;
171 res = QtxWorkspaceAction::Tile;
174 res = QtxWorkspaceAction::HTile;
177 res = QtxWorkspaceAction::VTile;