1 #include "CAF_Application.h"
5 #include "SUIT_Desktop.h"
6 #include "SUIT_Session.h"
7 #include "SUIT_ViewModel.h"
8 #include "SUIT_Operation.h"
9 #include "SUIT_MessageBox.h"
10 #include "SUIT_ResourceMgr.h"
12 #include "QtxListAction.h"
16 #include <qpopupmenu.h>
17 #include <qstatusbar.h>
18 #include <qapplication.h>
20 extern "C" CAF_EXPORT SUIT_Application* createApplication()
22 return new CAF_Application();
25 CAF_Application::CAF_Application()
30 CAF_Application::~CAF_Application()
34 QString CAF_Application::applicationName() const
36 return QString( "CAFApplication" );
39 void CAF_Application::createActions()
41 STD_Application::createActions();
43 SUIT_Desktop* desk = desktop();
44 SUIT_ResourceMgr* resMgr = resourceMgr();
46 QtxListAction* editUndo =
47 new QtxListAction( tr( "TOT_APP_EDIT_UNDO" ), resMgr->loadPixmap( "CAF", tr( "ICON_APP_EDIT_UNDO" ) ),
48 tr( "MEN_APP_EDIT_UNDO" ), CTRL+Key_Z, desk );
49 registerAction( EditUndoId, editUndo );
51 QtxListAction* editRedo =
52 new QtxListAction( tr( "TOT_APP_EDIT_REDO" ), resMgr->loadPixmap( "CAF", tr( "ICON_APP_EDIT_REDO" ) ),
53 tr( "MEN_APP_EDIT_REDO" ), CTRL+Key_Y, desk );
54 registerAction( EditRedoId, editRedo );
56 editUndo->setComment( tr( "INF_APP_UNDOACTIONS" ) );
57 editRedo->setComment( tr( "INF_APP_REDOACTIONS" ) );
59 connect( editUndo, SIGNAL( activated( int ) ), this, SLOT( onUndo( int ) ) );
60 connect( editRedo, SIGNAL( activated( int ) ), this, SLOT( onRedo( int ) ) );
63 int editMenu = createMenu( tr( "MEN_DESK_EDIT" ), -1, -1, 10 );
65 createMenu( EditUndoId, editMenu, 0 );
66 createMenu( EditRedoId, editMenu, 0 );
67 createMenu( separator(), editMenu, -1, 0 );
69 int stdTBar = createTool( tr( "INF_DESK_TOOLBAR_STANDARD" ) );
71 createTool( separator(), stdTBar );
72 createTool( EditUndoId, stdTBar );
73 createTool( EditRedoId, stdTBar );
74 createTool( separator(), stdTBar );
78 Undo operation on the given document. [ virtual protected ]
80 bool CAF_Application::undo( CAF_Study* doc )
85 if ( success = doc->undo() )
92 Redo operation on the given document. [ virtual protected ]
94 bool CAF_Application::redo(CAF_Study* doc)
99 if ( success = doc->redo() )
106 Undo operation on the active document. [ virtual protected slot ]
108 bool CAF_Application::onUndo( int numActions )
111 while ( numActions > 0 )
113 CAF_Study* cafStudy = dynamic_cast<CAF_Study*>( activeStudy() );
116 if ( !undo( cafStudy ) )
124 updateCommandsStatus(); /* enable/disable undo/redo */
129 Redo operation on the active document. [ virtual protected slot ]
131 bool CAF_Application::onRedo( int numActions )
134 while ( numActions > 0 )
136 CAF_Study* cafStudy = dynamic_cast<CAF_Study*>( activeStudy() );
139 if ( !redo( cafStudy ) )
147 updateCommandsStatus(); /* enable/disable undo/redo */
152 Enables / disables the actions according to the application state. [ virtual protected ]
154 void CAF_Application::updateCommandsStatus()
156 STD_Application::updateCommandsStatus();
158 CAF_Study* cafStudy = 0;
159 if ( activeStudy() && activeStudy()->inherits( "CAF_Study" ) )
160 cafStudy = (CAF_Study*)activeStudy();
162 QAction* undo = action( EditUndoId );
163 if ( cafStudy && undo->inherits( "QtxListAction" ) )
164 ((QtxListAction*)undo)->addNames( cafStudy->undoNames() );
166 QAction* redo = action( EditRedoId );
167 if ( cafStudy && redo->inherits( "QtxListAction" ) )
168 ((QtxListAction*)redo)->addNames( cafStudy->redoNames() );
170 undo->setEnabled( cafStudy && cafStudy->canUndo() );
171 redo->setEnabled( cafStudy && cafStudy->canRedo() );
174 void CAF_Application::onHelpAbout()
176 SUIT_MessageBox::info1( desktop(), tr( "About" ), tr( "ABOUT_INFO" ), "&OK" );