Salome HOME
Compilation bugs are fixed.
[modules/gui.git] / src / STD / STD_MDIDesktop.cxx
1 #include "STD_MDIDesktop.h"\r
2 \r
3 #include <SUIT_Session.h>\r
4 #include <SUIT_ViewWindow.h>\r
5 #include <SUIT_ResourceMgr.h>\r
6 \r
7 #include <QtxAction.h>\r
8 #include <QtxWorkstack.h>\r
9 #include <QtxActionMenuMgr.h>\r
10 #include <QtxWorkspaceAction.h>\r
11 \r
12 #include <qvbox.h>\r
13 #include <qmenubar.h>\r
14 #include <qworkspace.h>\r
15 #include <qobjectlist.h>\r
16 \r
17 #include <stdarg.h>\r
18 \r
19 STD_MDIDesktop::STD_MDIDesktop()\r
20 : SUIT_Desktop(),\r
21 myWorkstack( 0 )\r
22 //myWorkspaceAction( 0 )\r
23 {\r
24   QVBox* base = new QVBox( this );\r
25   base->setFrameStyle( QFrame::Panel | QFrame::Sunken );\r
26 \r
27   setCentralWidget( base );\r
28 \r
29   myWorkstack = new QtxWorkstack( base );\r
30 \r
31   connect( myWorkstack, SIGNAL( windowActivated( QWidget* ) ),\r
32            this, SLOT( onWindowActivated( QWidget* ) ) );\r
33 \r
34   createActions();\r
35 }\r
36 \r
37 STD_MDIDesktop::~STD_MDIDesktop()\r
38 {\r
39 }\r
40 \r
41 SUIT_ViewWindow* STD_MDIDesktop::activeWindow() const\r
42 {\r
43   SUIT_ViewWindow* wnd = 0;\r
44 \r
45   QWidget* wid = myWorkstack->activeWindow();\r
46   if ( wid && wid->inherits( "SUIT_ViewWindow" ) )\r
47     wnd = (SUIT_ViewWindow*)wid;\r
48 \r
49   return wnd;\r
50 }\r
51 \r
52 QPtrList<SUIT_ViewWindow> STD_MDIDesktop::windows() const\r
53 {\r
54   QPtrList<SUIT_ViewWindow> winList;\r
55 \r
56   QWidgetList children = myWorkstack->windowList();\r
57   for ( QWidgetListIt it( children ); it.current(); ++it )\r
58   {\r
59     if ( it.current()->inherits( "SUIT_ViewWindow" ) )\r
60       winList.append( (SUIT_ViewWindow*)it.current() );\r
61   }\r
62 \r
63   return winList;\r
64 }\r
65 \r
66 QWidget* STD_MDIDesktop::parentArea() const\r
67 {\r
68   return myWorkstack;\r
69 }\r
70 \r
71 void STD_MDIDesktop::windowOperation( const int type )\r
72 {\r
73 //  myWorkspaceAction->perform( operationFlag( type ) );\r
74 }\r
75 \r
76 void STD_MDIDesktop::setWindowOperations( const int first, ... )\r
77 {\r
78   va_list ints;\r
79         va_start( ints, first );\r
80 \r
81         QValueList<int> typeList;\r
82 \r
83         int cur = first;\r
84         while ( cur )\r
85         {\r
86           typeList.append( cur );\r
87                 cur = va_arg( ints, int );\r
88   }\r
89 \r
90         setWindowOperations( typeList );\r
91 }\r
92 \r
93 void STD_MDIDesktop::setWindowOperations( const QValueList<int>& opList )\r
94 {\r
95   int flags = 0;\r
96 \r
97   for ( QValueList<int>::const_iterator it = opList.begin(); it != opList.end(); ++it )\r
98     flags = flags | operationFlag( *it );\r
99 \r
100 //  myWorkspaceAction->setItems( flags );\r
101 }\r
102 \r
103 QWorkspace* STD_MDIDesktop::workspace() const\r
104 {\r
105   return 0;//myWorkspace;\r
106 }\r
107 \r
108 void STD_MDIDesktop::onWindowActivated( QWidget* w )\r
109 {\r
110   if ( w && w->inherits( "SUIT_ViewWindow" ) )\r
111     emit windowActivated( (SUIT_ViewWindow*)w );\r
112 }\r
113 \r
114 void STD_MDIDesktop::createActions()\r
115 {\r
116 /*\r
117   if ( myWorkspaceAction )\r
118     return;\r
119 \r
120   SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();\r
121   if ( !resMgr )\r
122     return;\r
123 \r
124   myWorkspaceAction = new QtxWorkspaceAction( workspace(), this );\r
125 \r
126   myWorkspaceAction->setItems( QtxWorkspaceAction::Cascade | QtxWorkspaceAction::Tile |\r
127                                QtxWorkspaceAction::HTile | QtxWorkspaceAction::VTile |\r
128                                QtxWorkspaceAction::Windows );\r
129 \r
130   // Cascade\r
131   myWorkspaceAction->setIconSet( QtxWorkspaceAction::Cascade,\r
132                                  resMgr->loadPixmap( "STD", tr( "ICON_DESK_WINDOW_CASCADE" ) ) );\r
133   myWorkspaceAction->setMenuText( QtxWorkspaceAction::Cascade, tr( "MEN_DESK_WINDOW_CASCADE" ) );\r
134   myWorkspaceAction->setStatusTip( QtxWorkspaceAction::Cascade, tr( "PRP_DESK_WINDOW_CASCADE" ) );\r
135 \r
136   // Tile\r
137   myWorkspaceAction->setIconSet( QtxWorkspaceAction::Tile,\r
138                                  resMgr->loadPixmap( "STD", tr( "ICON_DESK_WINDOW_TILE" ) ) );\r
139   myWorkspaceAction->setMenuText( QtxWorkspaceAction::Tile, tr( "MEN_DESK_WINDOW_TILE" ) );\r
140   myWorkspaceAction->setStatusTip( QtxWorkspaceAction::Tile, tr( "PRP_DESK_WINDOW_TILE" ) );\r
141 \r
142   // Tile Horizontal\r
143   myWorkspaceAction->setIconSet( QtxWorkspaceAction::HTile,\r
144                                  resMgr->loadPixmap( "STD", tr( "ICON_DESK_WINDOW_HTILE" ) ) );\r
145   myWorkspaceAction->setMenuText( QtxWorkspaceAction::HTile, tr( "MEN_DESK_WINDOW_HTILE" ) );\r
146   myWorkspaceAction->setStatusTip( QtxWorkspaceAction::HTile, tr( "PRP_DESK_WINDOW_HTILE" ) );\r
147 \r
148   // Tile Vertical\r
149   myWorkspaceAction->setIconSet( QtxWorkspaceAction::VTile,\r
150                                  resMgr->loadPixmap( "STD", tr( "ICON_DESK_WINDOW_VTILE" ) ) );\r
151   myWorkspaceAction->setMenuText( QtxWorkspaceAction::VTile, tr( "MEN_DESK_WINDOW_VTILE" ) );\r
152   myWorkspaceAction->setStatusTip( QtxWorkspaceAction::VTile, tr( "PRP_DESK_WINDOW_VTILE" ) );\r
153 \r
154 \r
155   QtxActionMenuMgr* mMgr = menuMgr();\r
156   if ( !mMgr )\r
157     return;\r
158 \r
159   int winMenuId = mMgr->insert( tr( "MEN_DESK_WINDOW" ), -1, 100 );\r
160   mMgr->insert( myWorkspaceAction, winMenuId, -1 );\r
161   mMgr->insert( QtxActionMenuMgr::separator(), winMenuId, -1 );\r
162 */\r
163 }\r
164 \r
165 int STD_MDIDesktop::operationFlag( const int type ) const\r
166 {\r
167   int res = 0;\r
168   switch ( type )\r
169   {\r
170   case Cascade:\r
171     res = QtxWorkspaceAction::Cascade;\r
172     break;\r
173   case Tile:\r
174     res = QtxWorkspaceAction::Tile;\r
175     break;\r
176   case HTile:\r
177     res = QtxWorkspaceAction::HTile;\r
178     break;\r
179   case VTile:\r
180     res = QtxWorkspaceAction::VTile;\r
181     break;\r
182   }\r
183   return res;\r
184 }\r