1 #include "SUIT_Application.h"
3 #include "SUIT_Session.h"
4 #include "SUIT_Desktop.h"
5 #include "SUIT_ResourceMgr.h"
7 #include <qstatusbar.h>
10 #include <QtxActionMenuMgr.h>
11 #include <QtxActionToolMgr.h>
13 SUIT_Application::SUIT_Application()
20 SUIT_Application::~SUIT_Application()
26 SUIT_Desktop* SUIT_Application::desktop()
31 bool SUIT_Application::isPossibleToClose()
36 void SUIT_Application::closeApplication()
38 emit applicationClosed( this );
41 SUIT_Study* SUIT_Application::activeStudy() const
46 void SUIT_Application::start()
52 void SUIT_Application::useFile( const QString& theFileName )
56 activeStudy()->openDocument( theFileName );
59 void SUIT_Application::createEmptyStudy()
62 setActiveStudy( createNewStudy() );
65 int SUIT_Application::getNbStudies() const
67 return activeStudy() ? 1 : 0;
70 SUIT_ResourceMgr* SUIT_Application::resourceMgr() const
72 if ( !SUIT_Session::session() )
75 return SUIT_Session::session()->resourceMgr();
78 #define DEFAULT_MESSAGE_DELAY 3000
79 void SUIT_Application::putInfo ( const QString& msg, const int msec )
82 desktop()->statusBar()->message( msg, msec <= 0 ? DEFAULT_MESSAGE_DELAY : msec );
85 SUIT_Application* SUIT_Application::startApplication( int argc, char** argv ) const
87 return startApplication( name(), argc, argv );
90 SUIT_Application* SUIT_Application::startApplication( const QString& name, int argc, char** argv ) const
92 SUIT_Session* session = SUIT_Session::session();
96 return session->startApplication( name, argc, argv );
99 void SUIT_Application::setDesktop( SUIT_Desktop* desk )
101 if ( myDesktop == desk )
108 SUIT_Study* SUIT_Application::createNewStudy()
110 return new SUIT_Study( this );
113 void SUIT_Application::setActiveStudy( SUIT_Study* study )
115 if ( myStudy == study )
121 int SUIT_Application::createTool( const QString& name )
123 if ( !desktop() || !desktop()->toolMgr() )
126 return desktop()->toolMgr()->createToolBar( name );
129 int SUIT_Application::createTool( QAction* a, const int tBar, const int id, const int idx )
131 if ( !desktop() || !desktop()->toolMgr() )
134 int regId = desktop()->toolMgr()->registerAction( a, id );
135 return desktop()->toolMgr()->insert( regId, tBar, idx );
138 int SUIT_Application::createTool( QAction* a, const QString& tBar, const int id, const int idx )
140 if ( !desktop() || !desktop()->toolMgr() )
143 return desktop()->toolMgr()->insert( a, tBar, idx );
146 int SUIT_Application::createTool( const int id, const int tBar, const int idx )
148 if ( !desktop() || !desktop()->toolMgr() )
151 return desktop()->toolMgr()->insert( id, tBar, idx );
154 int SUIT_Application::createTool( const int id, const QString& tBar, const int idx )
156 if ( !desktop() || !desktop()->toolMgr() )
159 return desktop()->toolMgr()->insert( id, tBar, idx );
162 int SUIT_Application::createMenu( const QString& subMenu, const int menu,
163 const int id, const int group, const int index )
165 if ( !desktop() || !desktop()->menuMgr() )
168 return desktop()->menuMgr()->insert( subMenu, menu, group, index );
171 int SUIT_Application::createMenu( const QString& subMenu, const QString& menu,
172 const int id, const int group, const int index )
174 if ( !desktop() || !desktop()->menuMgr() )
177 return desktop()->menuMgr()->insert( subMenu, menu, group, index );
180 int SUIT_Application::createMenu( QAction* a, const int menu, const int id, const int group, const int index )
182 if ( !a || !desktop() || !desktop()->menuMgr() )
185 int regId = desktop()->menuMgr()->registerAction( a, id );
186 return desktop()->menuMgr()->insert( regId, menu, group, index );
189 int SUIT_Application::createMenu( QAction* a, const QString& menu, const int id, const int group, const int index )
191 if ( !a || !desktop() || !desktop()->menuMgr() )
194 int regId = desktop()->menuMgr()->registerAction( a, id );
195 return desktop()->menuMgr()->insert( regId, menu, group, index );
198 int SUIT_Application::createMenu( const int id, const int menu, const int group, const int index )
200 if ( !desktop() || !desktop()->menuMgr() )
203 return desktop()->menuMgr()->insert( id, menu, group, index );
206 int SUIT_Application::createMenu( const int id, const QString& menu, const int group, const int index )
208 if ( !desktop() || !desktop()->menuMgr() )
211 return desktop()->menuMgr()->insert( id, menu, group, index );
214 void SUIT_Application::setMenuShown( QAction* a, const bool on )
216 setMenuShown( actionId( a ), on );
219 void SUIT_Application::setMenuShown( const int id, const bool on )
221 if ( desktop() && desktop()->menuMgr() )
222 desktop()->menuMgr()->setShown( id, on );
225 void SUIT_Application::setToolShown( QAction* a, const bool on )
227 setToolShown( actionId( a ), on );
230 void SUIT_Application::setToolShown( const int id, const bool on )
232 if ( desktop() && desktop()->toolMgr() )
233 desktop()->toolMgr()->setShown( id, on );
236 QAction* SUIT_Application::action( const int id ) const
238 SUIT_Application* that = (SUIT_Application*)this;
239 SUIT_Desktop* desk = that->desktop();
244 if ( desk->menuMgr() )
245 a = desk->menuMgr()->action( id );
246 if ( !a && desk->toolMgr() )
247 a = desk->toolMgr()->action( id );
251 int SUIT_Application::actionId( const QAction* a ) const
253 SUIT_Application* that = (SUIT_Application*)this;
254 SUIT_Desktop* desk = that->desktop();
259 if ( desk->menuMgr() )
260 id = desk->menuMgr()->actionId( a );
261 if ( id == -1 && desk->toolMgr() )
262 id = desk->toolMgr()->actionId( a );
266 QAction* SUIT_Application::createAction( const int id, const QString& text, const QIconSet& icon,
267 const QString& menu, const QString& tip, const int key,
268 QObject* parent, const bool toggle, QObject* reciever, const char* member )
270 QtxAction* a = new QtxAction( text, icon, menu, key, parent, 0, toggle );
271 a->setStatusTip( tip );
273 if ( reciever && member )
274 connect( a, SIGNAL( activated() ), reciever, member );
276 registerAction( id, a );
281 void SUIT_Application::registerAction( const int id, QAction* a )
283 if ( desktop() && desktop()->menuMgr() )
284 desktop()->menuMgr()->registerAction( a, id );
286 if ( desktop() && desktop()->toolMgr() )
287 desktop()->toolMgr()->registerAction( a, id );
290 QAction* SUIT_Application::separator()
292 return QtxActionMgr::separator();