#include <XGUI_HistoryMenu.h>
#include <XGUI_QtEvents.h>
+#ifndef HAVE_SALOME
#include <AppElements_Button.h>
#include <AppElements_Command.h>
#include <AppElements_MainMenu.h>
#include <AppElements_MenuGroupPanel.h>
#include <AppElements_Viewer.h>
#include <AppElements_Workbench.h>
+#endif
#include <ModelAPI_AttributeDocRef.h>
#include <ModelAPI_AttributeIntArray.h>
#include <QFileDialog>
#include <QMessageBox>
#include <QMdiSubWindow>
+#include <QMainWindow>
#include <QPushButton>
#include <QDockWidget>
#include <QLayout>
myObjectBrowser(0),
myDisplayer(0)
{
- myMainWindow = mySalomeConnector ? 0 : new AppElements_MainWindow();
+#ifndef HAVE_SALOME
+ myMainWindow = new AppElements_MainWindow();
- if (myMainWindow) {
- SUIT_ResourceMgr* aResMgr = ModuleBase_Preferences::resourceMgr();
- bool aCloc = aResMgr->booleanValue("language", "locale", true);
- if (aCloc)
- QLocale::setDefault( QLocale::c() );
- else
- QLocale::setDefault( QLocale::system() );
- }
+ SUIT_ResourceMgr* aResMgr = ModuleBase_Preferences::resourceMgr();
+ bool aCloc = aResMgr->booleanValue("language", "locale", true);
+ if (aCloc)
+ QLocale::setDefault( QLocale::c() );
+ else
+ QLocale::setDefault( QLocale::system() );
+#endif
myDisplayer = new XGUI_Displayer(this);
//connect(myOperationMgr, SIGNAL(validationStateChanged(bool)),
// myErrorMgr, SLOT(onValidationStateChanged()));
- if (myMainWindow)
- connect(myMainWindow, SIGNAL(exitKeySequence()), SLOT(onExit()));
+#ifndef HAVE_SALOME
+ connect(myMainWindow, SIGNAL(exitKeySequence()), SLOT(onExit()));
+#endif
+
connect(this, SIGNAL(errorOccurred(const QString&)), myErrorDlg, SLOT(addError(const QString&)));
connect(myEventsListener, SIGNAL(errorOccurred(const QString&)),
myErrorDlg, SLOT(addError(const QString&)));
// by Config_PropManger to restore user-defined path to plugins
ModuleBase_Preferences::loadCustomProps();
createModule();
- if (myMainWindow) {
- myMainWindow->show();
- updateCommandStatus();
- }
+
+#ifndef HAVE_SALOME
+ myMainWindow->show();
+ updateCommandStatus();
+#endif
onNew();
{
myContextMenuMgr->createActions();
- if (isSalomeMode()) {
- // Create only Undo, Redo commands
- QAction* aAction = salomeConnector()->addDesktopCommand("UNDO_CMD", tr("Undo"),
- tr("Undo last command"),
- QIcon(":pictures/undo.png"),
- QKeySequence::Undo, false, "MEN_DESK_EDIT");
- QString aToolBarTitle = tr( "INF_DESK_TOOLBAR_STANDARD" );
- salomeConnector()->addActionInToolbar( aAction,aToolBarTitle );
-
- connect(aAction, SIGNAL(triggered(bool)), this, SLOT(onUndo()));
- addHistoryMenu(aAction, SIGNAL(updateUndoHistory(const QList<ActionInfo>&)), SLOT(onUndo(int)));
-
- aAction = salomeConnector()->addDesktopCommand("REDO_CMD", tr("Redo"), tr("Redo last command"),
- QIcon(":pictures/redo.png"), QKeySequence::Redo,
- false, "MEN_DESK_EDIT");
- salomeConnector()->addActionInToolbar( aAction, aToolBarTitle );
-
- connect(aAction, SIGNAL(triggered(bool)), this, SLOT(onRedo()));
- addHistoryMenu(aAction, SIGNAL(updateRedoHistory(const QList<ActionInfo>&)), SLOT(onRedo(int)));
-
- salomeConnector()->addDesktopMenuSeparator("MEN_DESK_EDIT");
- aAction = salomeConnector()->addDesktopCommand("REBUILD_CMD", tr("Rebuild"), tr("Rebuild data objects"),
- QIcon(":pictures/rebuild.png"), QKeySequence(),
- false, "MEN_DESK_EDIT");
- salomeConnector()->addActionInToolbar( aAction, aToolBarTitle );
-
- connect(aAction, SIGNAL(triggered(bool)), this, SLOT(onRebuild()));
- salomeConnector()->addDesktopMenuSeparator("MEN_DESK_EDIT");
-
- aAction = salomeConnector()->addDesktopCommand("SAVEAS_CMD", tr("Export NewGeom..."), tr("Export the current document into a NewGeom file"),
- QIcon(), QKeySequence(),
- false, "MEN_DESK_FILE");
- connect(aAction, SIGNAL(triggered(bool)), this, SLOT(onSaveAs()));
-
- aAction = salomeConnector()->addDesktopCommand("OPEN_CMD", tr("Import NewGeom..."), tr("Import a NewGeom file"),
- QIcon(), QKeySequence(),
- false, "MEN_DESK_FILE");
- connect(aAction, SIGNAL(triggered(bool)), this, SLOT(onOpen()));
- salomeConnector()->addDesktopMenuSeparator("MEN_DESK_FILE");
+#ifdef HAVE_SALOME
+ // Create only Undo, Redo commands
+ QAction* aAction = salomeConnector()->addDesktopCommand("UNDO_CMD", tr("Undo"),
+ tr("Undo last command"),
+ QIcon(":pictures/undo.png"),
+ QKeySequence::Undo, false, "MEN_DESK_EDIT");
+ QString aToolBarTitle = tr( "INF_DESK_TOOLBAR_STANDARD" );
+ salomeConnector()->addActionInToolbar( aAction,aToolBarTitle );
+
+ connect(aAction, SIGNAL(triggered(bool)), this, SLOT(onUndo()));
+ addHistoryMenu(aAction, SIGNAL(updateUndoHistory(const QList<ActionInfo>&)), SLOT(onUndo(int)));
+
+ aAction = salomeConnector()->addDesktopCommand("REDO_CMD", tr("Redo"), tr("Redo last command"),
+ QIcon(":pictures/redo.png"), QKeySequence::Redo,
+ false, "MEN_DESK_EDIT");
+ salomeConnector()->addActionInToolbar( aAction, aToolBarTitle );
+
+ connect(aAction, SIGNAL(triggered(bool)), this, SLOT(onRedo()));
+ addHistoryMenu(aAction, SIGNAL(updateRedoHistory(const QList<ActionInfo>&)), SLOT(onRedo(int)));
+
+ salomeConnector()->addDesktopMenuSeparator("MEN_DESK_EDIT");
+ aAction = salomeConnector()->addDesktopCommand("REBUILD_CMD", tr("Rebuild"), tr("Rebuild data objects"),
+ QIcon(":pictures/rebuild.png"), QKeySequence(),
+ false, "MEN_DESK_EDIT");
+ salomeConnector()->addActionInToolbar( aAction, aToolBarTitle );
+
+ connect(aAction, SIGNAL(triggered(bool)), this, SLOT(onRebuild()));
+ salomeConnector()->addDesktopMenuSeparator("MEN_DESK_EDIT");
+
+ aAction = salomeConnector()->addDesktopCommand("SAVEAS_CMD", tr("Export NewGeom..."), tr("Export the current document into a NewGeom file"),
+ QIcon(), QKeySequence(),
+ false, "MEN_DESK_FILE");
+ connect(aAction, SIGNAL(triggered(bool)), this, SLOT(onSaveAs()));
+
+ aAction = salomeConnector()->addDesktopCommand("OPEN_CMD", tr("Import NewGeom..."), tr("Import a NewGeom file"),
+ QIcon(), QKeySequence(),
+ false, "MEN_DESK_FILE");
+ connect(aAction, SIGNAL(triggered(bool)), this, SLOT(onOpen()));
+ salomeConnector()->addDesktopMenuSeparator("MEN_DESK_FILE");
- return;
- }
+#else
// File commands group
AppElements_MenuGroupPanel* aGroup = myMainWindow->menuObject()->generalPage();
QIcon(":pictures/open.png"), QKeySequence::Open);
aCommand->connectTo(this, SLOT(onOpen()));
- //aCommand = aGroup->addFeature("NEW_CMD", tr("New"), tr("Create a new document"),
- // QIcon(":pictures/new.png"), QKeySequence::New);
- //aCommand->connectTo(this, SLOT(onNew()));
-
aCommand = aGroup->addFeature("PREF_CMD", tr("Preferences"), tr("Edit preferences"),
QIcon(":pictures/preferences.png"), QKeySequence::Preferences);
aCommand->connectTo(this, SLOT(onPreferences()));
aCommand = aGroup->addFeature("EXIT_CMD", tr("Exit"), tr("Exit application"),
QIcon(":pictures/close.png"), QKeySequence::Close);
aCommand->connectTo(this, SLOT(onExit()));
- //FIXME: SBH's test action. Can be used for some GUI tests.
-// #ifdef _DEBUG
-// aCommand = aGroup->addFeature("TEST_CMD", "Test!", "Private debug button",
-// QIcon(":pictures/close.png"), QKeySequence(), true);
-// aCommand->connectTo(myMainWindow, SLOT(dockPythonConsole()));
-// #endif
+#endif
}
-//******************************************************
+#ifndef HAVE_SALOME
AppElements_Workbench* XGUI_Workshop::addWorkbench(const QString& theName)
{
AppElements_MainMenu* aMenuBar = myMainWindow->menuObject();
return aMenuBar->addWorkbench(theName);
}
+#endif
//******************************************************
QMainWindow* XGUI_Workshop::desktop() const
{
- return isSalomeMode() ? salomeConnector()->desktop() : myMainWindow;
+#ifdef HAVE_SALOME
+ return salomeConnector()->desktop();
+#else
+ return myMainWindow;
+#endif
}
//******************************************************
{
bool aHasNested = false;
std::string aFeatureKind = theFeature->getKind();
- if (isSalomeMode()) {
+#ifdef HAVE_SALOME
XGUI_SalomeConnector* aSalomeConnector = salomeConnector();
if (aSalomeConnector->isFeatureOfNested(actionsMgr()->action(aFeatureKind.c_str())))
aHasNested = true;
- } else {
+#else
AppElements_MainMenu* aMenuBar = mainWindow()->menuObject();
AppElements_Command* aCommand = aMenuBar->feature(aFeatureKind.c_str());
if (aCommand && aCommand->button()->additionalButtonWidget())
aHasNested = true;
- }
+#endif
return aHasNested;
}
}
//******************************************************
-void XGUI_Workshop::onExit()
+void XGUI_Workshop::onOpen()
{
- SessionPtr aMgr = ModelAPI_Session::get();
- if (aMgr->isModified()) {
+ if(!abortAllOperations())
+ return;
+ //save current file before close if modified
+ SessionPtr aSession = ModelAPI_Session::get();
+ if (aSession->isModified()) {
+ //TODO(sbh): re-launch the app?
int anAnswer = QMessageBox::question(
- myMainWindow, tr("Save current file"), tr("The document is modified, save before exit?"),
+ desktop(), tr("Save current file"),
+ tr("The document is modified, save before opening another?"),
QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel, QMessageBox::Cancel);
if (anAnswer == QMessageBox::Save) {
- bool saved = onSave();
- if (!saved) {
- return;
- }
+ onSave();
} else if (anAnswer == QMessageBox::Cancel) {
return;
}
+ myCurrentDir = "";
}
- qApp->exit();
+
+ //show file dialog, check if readable and open
+ myCurrentDir = QFileDialog::getExistingDirectory(desktop(), tr("Select directory"));
+ if (myCurrentDir.isEmpty())
+ return;
+ QFileInfo aFileInfo(myCurrentDir);
+ if (!aFileInfo.exists() || !aFileInfo.isReadable()) {
+ QMessageBox::critical(desktop(), tr("Warning"), tr("Unable to open the file."));
+ myCurrentDir = "";
+ return;
+ }
+ QApplication::setOverrideCursor(Qt::WaitCursor);
+ aSession->closeAll();
+ aSession->load(myCurrentDir.toLatin1().constData());
+ myObjectBrowser->rebuildDataTree();
+ updateCommandStatus();
+ QApplication::restoreOverrideCursor();
}
//******************************************************
}
myViewerProxy->connectToViewer();
showObjectBrowser();
- if (!isSalomeMode()) {
- myMainWindow->showPythonConsole();
- QMdiSubWindow* aWnd = myMainWindow->viewer()->createView();
- aWnd->showMaximized();
- updateCommandStatus();
- }
+#ifndef HAVE_SALOME
+ myMainWindow->showPythonConsole();
+ QMdiSubWindow* aWnd = myMainWindow->viewer()->createView();
+ aWnd->showMaximized();
+ updateCommandStatus();
+#endif
myContextMenuMgr->connectViewer();
QApplication::restoreOverrideCursor();
}
+#ifndef HAVE_SALOME
//******************************************************
-void XGUI_Workshop::onOpen()
+void XGUI_Workshop::onExit()
{
- if(!abortAllOperations())
- return;
- //save current file before close if modified
- SessionPtr aSession = ModelAPI_Session::get();
- if (aSession->isModified()) {
- //TODO(sbh): re-launch the app?
+ SessionPtr aMgr = ModelAPI_Session::get();
+ if (aMgr->isModified()) {
int anAnswer = QMessageBox::question(
- myMainWindow, tr("Save current file"),
- tr("The document is modified, save before opening another?"),
+ myMainWindow, tr("Save current file"), tr("The document is modified, save before exit?"),
QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel, QMessageBox::Cancel);
if (anAnswer == QMessageBox::Save) {
- onSave();
+ bool saved = onSave();
+ if (!saved) {
+ return;
+ }
} else if (anAnswer == QMessageBox::Cancel) {
return;
}
- myCurrentDir = "";
}
+ qApp->exit();
+}
- //show file dialog, check if readable and open
- myCurrentDir = QFileDialog::getExistingDirectory(mainWindow(), tr("Select directory"));
- if (myCurrentDir.isEmpty())
- return;
- QFileInfo aFileInfo(myCurrentDir);
- if (!aFileInfo.exists() || !aFileInfo.isReadable()) {
- QMessageBox::critical(myMainWindow, tr("Warning"), tr("Unable to open the file."));
- myCurrentDir = "";
- return;
+//******************************************************
+void XGUI_Workshop::onPreferences()
+{
+ ModuleBase_Prefs aModif;
+ ModuleBase_Preferences::editPreferences(aModif);
+ if (aModif.size() > 0) {
+ QString aSection;
+ foreach (ModuleBase_Pref aPref, aModif)
+ {
+ aSection = aPref.first;
+ if (aSection == ModuleBase_Preferences::VIEWER_SECTION) {
+ myMainWindow->viewer()->updateFromResources();
+ } else if (aSection == ModuleBase_Preferences::MENU_SECTION) {
+ myMainWindow->menuObject()->updateFromResources();
+ }
+ }
+ displayer()->redisplayObjects();
}
- QApplication::setOverrideCursor(Qt::WaitCursor);
- aSession->closeAll();
- aSession->load(myCurrentDir.toLatin1().constData());
- myObjectBrowser->rebuildDataTree();
- updateCommandStatus();
- QApplication::restoreOverrideCursor();
}
+#endif
//******************************************************
bool XGUI_Workshop::onSave()
std::list<std::string> aFiles;
saveDocument(myCurrentDir, aFiles);
updateCommandStatus();
- if (!isSalomeMode())
+#ifndef HAVE_SALOME
myMainWindow->setModifiedState(false);
+#endif
return true;
}
{
if(!abortAllOperations())
return false;
- QFileDialog dialog(mainWindow());
+ QFileDialog dialog(desktop());
dialog.setWindowTitle(tr("Select directory to save files..."));
dialog.setFileMode(QFileDialog::Directory);
dialog.setFilter(tr("Directories (*)"));
QDir aDir(aTempDir);
if (aDir.exists() && !aDir.entryInfoList(QDir::NoDotAndDotDot | QDir::AllEntries).isEmpty()) {
int answer = QMessageBox::question(
- myMainWindow,
+ desktop(),
//: Title of the dialog which asks user if he wants to save study in existing non-empty folder
tr("Save"),
tr("The directory already contains some files, save anyway?"),
}
}
myCurrentDir = aTempDir;
- if (!isSalomeMode()) {
+#ifndef HAVE_SALOME
myMainWindow->setCurrentDir(myCurrentDir, false);
myMainWindow->setModifiedState(false);
- }
+#endif
return onSave();
}
updateCommandStatus();
}
-//******************************************************
-void XGUI_Workshop::onPreferences()
-{
- ModuleBase_Prefs aModif;
- ModuleBase_Preferences::editPreferences(aModif);
- if (aModif.size() > 0) {
- QString aSection;
- foreach (ModuleBase_Pref aPref, aModif)
- {
- aSection = aPref.first;
- if (aSection == ModuleBase_Preferences::VIEWER_SECTION) {
- if (!isSalomeMode())
- myMainWindow->viewer()->updateFromResources();
- } else if (aSection == ModuleBase_Preferences::MENU_SECTION) {
- if (!isSalomeMode())
- myMainWindow->menuObject()->updateFromResources();
- }
- }
- displayer()->redisplayObjects();
- }
-}
-
//******************************************************
ModuleBase_IModule* XGUI_Workshop::loadModule(const QString& theModule)
{
ModuleBase_IModule* aModule = crtInst ? crtInst(myModuleConnector) : 0;
if (!err.isEmpty()) {
- if (mainWindow()) {
+ if (desktop()) {
Events_Error::send(err.toStdString());
} else {
qWarning(qPrintable(err));
void XGUI_Workshop::updateCommandStatus()
{
QList<QAction*> aCommands;
- if (isSalomeMode()) { // update commands in SALOME mode
+#ifdef HAVE_SALOME
aCommands = salomeConnector()->commandList();
- } else {
+#else
AppElements_MainMenu* aMenuBar = myMainWindow->menuObject();
foreach (AppElements_Command* aCmd, aMenuBar->features())
aCommands.append(aCmd);
- }
+#endif
SessionPtr aMgr = ModelAPI_Session::get();
if (aMgr->hasModuleDocument()) {
foreach(QAction* aCmd, aCommands) {
*/
void XGUI_Workshop::createDockWidgets()
{
- QMainWindow* aDesktop = isSalomeMode() ? salomeConnector()->desktop() : myMainWindow;
+ QMainWindow* aDesktop = desktop();
QDockWidget* aObjDock = createObjectBrowser(aDesktop);
aDesktop->addDockWidget(Qt::LeftDockWidgetArea, aObjDock);
myPropertyPanel = new XGUI_PropertyPanel(aDesktop, myOperationMgr);
// set the focus on it. As a result, shortcuts of the application, like
// are processed by this console. For example Undo actions.
// It is possible that this code is to be moved to NewGeom package
- QMainWindow* aDesktop = isSalomeMode() ? salomeConnector()->desktop() : myMainWindow;
+ QMainWindow* aDesktop = desktop();
aDesktop->activateWindow();
aDesktop->setFocus();
}
// deletion and negative consequences connected with processing of already deleted items
mySelector->clearSelection();
// check whether the object can be deleted. There should not be parts which are not loaded
- if (!XGUI_Tools::canRemoveOrRename(myMainWindow, anObjects))
+ if (!XGUI_Tools::canRemoveOrRename(desktop(), anObjects))
return;
bool hasResult = false;
operationMgr()->startOperation(anOpAction);
// 3. delete objects
- QMainWindow* aDesktop = isSalomeMode() ? salomeConnector()->desktop() : myMainWindow;
std::set<FeaturePtr> anIgnoredFeatures;
- if (deleteFeatures(anObjects, anIgnoredFeatures, aDesktop, true)) {
+ if (deleteFeatures(anObjects, anIgnoredFeatures, desktop(), true)) {
operationMgr()->commitOperation();
}
else {
// moving and negative consequences connected with processing of already moved items
mySelector->clearSelection();
// check whether the object can be moved. There should not be parts which are not loaded
- if (!XGUI_Tools::canRemoveOrRename(myMainWindow, anObjects))
+ if (!XGUI_Tools::canRemoveOrRename(desktop(), anObjects))
return;
DocumentPtr anActiveDocument = aMgr->activeDocument();
if (!abortAllOperations())
return;
// 2. show the dialog to change the value
- XGUI_ColorDialog* aDlg = new XGUI_ColorDialog(mainWindow());
+ XGUI_ColorDialog* aDlg = new XGUI_ColorDialog(desktop());
aDlg->setColor(aColor);
aDlg->move(QCursor::pos());
bool isDone = aDlg->exec() == QDialog::Accepted;