From 19bbce6413f23e1da2f1137ac09dedeb85285e7d Mon Sep 17 00:00:00 2001 From: wmayer Date: Thu, 8 Oct 2015 12:37:30 +0200 Subject: [PATCH] + when running a bound macro check if file exists, proper unicode handling of macros in customize dialog --- src/Gui/Command.cpp | 15 +++++++++++---- src/Gui/DlgCommandsImp.cpp | 33 ++++++++++++++++++++++----------- src/Gui/DlgKeyboardImp.cpp | 33 ++++++++++++++++++++++----------- src/Gui/DlgToolbarsImp.cpp | 32 ++++++++++++++++++++++---------- 4 files changed, 77 insertions(+), 36 deletions(-) diff --git a/src/Gui/Command.cpp b/src/Gui/Command.cpp index 02325c60e6..7d43d883a0 100644 --- a/src/Gui/Command.cpp +++ b/src/Gui/Command.cpp @@ -708,10 +708,17 @@ void MacroCommand::activated(int iMsg) QDir d(QString::fromUtf8(cMacroPath.c_str())); QFileInfo fi(d, QString::fromUtf8(sScriptName)); - Application::Instance->macroManager()->run(MacroManager::File, fi.filePath().toUtf8()); - // after macro run recalculate the document - if (Application::Instance->activeDocument()) - Application::Instance->activeDocument()->getDocument()->recompute(); + if (!fi.exists()) { + QMessageBox::critical(Gui::getMainWindow(), + qApp->translate("Gui::MacroCommand", "Macro file doesn't exist"), + qApp->translate("Gui::MacroCommand", "No such macro file: '%1'").arg(fi.absoluteFilePath())); + } + else { + Application::Instance->macroManager()->run(MacroManager::File, fi.filePath().toUtf8()); + // after macro run recalculate the document + if (Application::Instance->activeDocument()) + Application::Instance->activeDocument()->getDocument()->recompute(); + } } Action * MacroCommand::createAction(void) diff --git a/src/Gui/DlgCommandsImp.cpp b/src/Gui/DlgCommandsImp.cpp index 1a462fa62f..8a169d5cfb 100644 --- a/src/Gui/DlgCommandsImp.cpp +++ b/src/Gui/DlgCommandsImp.cpp @@ -138,7 +138,7 @@ void DlgCustomCommandsImp::onDescription(QTreeWidgetItem *item) /** Shows all commands of this category */ void DlgCustomCommandsImp::onGroupActivated(QTreeWidgetItem* item) { - if (!item) + if (!item) return; QVariant data = item->data(0, Qt::UserRole); @@ -147,14 +147,27 @@ void DlgCustomCommandsImp::onGroupActivated(QTreeWidgetItem* item) CommandManager & cCmdMgr = Application::Instance->commandManager(); std::vector aCmds = cCmdMgr.getGroupCommands(group.toAscii()); - for (std::vector::iterator it = aCmds.begin(); it != aCmds.end(); ++it) { - QTreeWidgetItem* item = new QTreeWidgetItem(commandTreeWidget); - item->setText(1, qApp->translate((*it)->className(), (*it)->getMenuText())); - item->setToolTip(1, qApp->translate((*it)->className(), (*it)->getToolTipText())); - item->setData(1, Qt::UserRole, QByteArray((*it)->getName())); - item->setSizeHint(0, QSize(32, 32)); - if ((*it)->getPixmap()) - item->setIcon(0, BitmapFactory().iconFromTheme((*it)->getPixmap())); + if (group == QLatin1String("Macros")) { + for (std::vector::iterator it = aCmds.begin(); it != aCmds.end(); ++it) { + QTreeWidgetItem* item = new QTreeWidgetItem(commandTreeWidget); + item->setText(1, QString::fromUtf8((*it)->getMenuText())); + item->setToolTip(1, QString::fromUtf8((*it)->getToolTipText())); + item->setData(1, Qt::UserRole, QByteArray((*it)->getName())); + item->setSizeHint(0, QSize(32, 32)); + if ((*it)->getPixmap()) + item->setIcon(0, BitmapFactory().iconFromTheme((*it)->getPixmap())); + } + } + else { + for (std::vector::iterator it = aCmds.begin(); it != aCmds.end(); ++it) { + QTreeWidgetItem* item = new QTreeWidgetItem(commandTreeWidget); + item->setText(1, qApp->translate((*it)->className(), (*it)->getMenuText())); + item->setToolTip(1, qApp->translate((*it)->className(), (*it)->getToolTipText())); + item->setData(1, Qt::UserRole, QByteArray((*it)->getName())); + item->setSizeHint(0, QSize(32, 32)); + if ((*it)->getPixmap()) + item->setIcon(0, BitmapFactory().iconFromTheme((*it)->getPixmap())); + } } textLabel->setText(QString()); @@ -178,7 +191,6 @@ void DlgCustomCommandsImp::onAddMacroAction(const QByteArray& macro) item->setToolTip(1, QString::fromUtf8(pCmd->getToolTipText())); item->setData(1, Qt::UserRole, macro); item->setSizeHint(0, QSize(32, 32)); - item->setBackgroundColor(0, Qt::lightGray); if (pCmd->getPixmap()) item->setIcon(0, BitmapFactory().iconFromTheme(pCmd->getPixmap())); } @@ -226,7 +238,6 @@ void DlgCustomCommandsImp::onModifyMacroAction(const QByteArray& macro) item->setToolTip(1, QString::fromUtf8(pCmd->getToolTipText())); item->setData(1, Qt::UserRole, macro); item->setSizeHint(0, QSize(32, 32)); - item->setBackgroundColor(0, Qt::lightGray); if (pCmd->getPixmap()) item->setIcon(0, BitmapFactory().iconFromTheme(pCmd->getPixmap())); if (commandTreeWidget->isItemSelected(item)) diff --git a/src/Gui/DlgKeyboardImp.cpp b/src/Gui/DlgKeyboardImp.cpp index f379c2a02f..29391a7cd4 100644 --- a/src/Gui/DlgKeyboardImp.cpp +++ b/src/Gui/DlgKeyboardImp.cpp @@ -178,14 +178,28 @@ void DlgCustomKeyboardImp::on_categoryBox_activated(int index) CommandManager & cCmdMgr = Application::Instance->commandManager(); std::vector aCmds = cCmdMgr.getGroupCommands( group.toAscii() ); - for (std::vector::iterator it = aCmds.begin(); it != aCmds.end(); ++it) { - QTreeWidgetItem* item = new QTreeWidgetItem(commandTreeWidget); - item->setText(1, qApp->translate((*it)->className(), (*it)->getMenuText())); - item->setToolTip(1, qApp->translate((*it)->className(), (*it)->getToolTipText())); - item->setData(1, Qt::UserRole, QByteArray((*it)->getName())); - item->setSizeHint(0, QSize(32, 32)); - if ((*it)->getPixmap()) - item->setIcon(0, BitmapFactory().iconFromTheme((*it)->getPixmap())); + + if (group == QLatin1String("Macros")) { + for (std::vector::iterator it = aCmds.begin(); it != aCmds.end(); ++it) { + QTreeWidgetItem* item = new QTreeWidgetItem(commandTreeWidget); + item->setText(1, QString::fromUtf8((*it)->getMenuText())); + item->setToolTip(1, QString::fromUtf8((*it)->getToolTipText())); + item->setData(1, Qt::UserRole, QByteArray((*it)->getName())); + item->setSizeHint(0, QSize(32, 32)); + if ((*it)->getPixmap()) + item->setIcon(0, BitmapFactory().iconFromTheme((*it)->getPixmap())); + } + } + else { + for (std::vector::iterator it = aCmds.begin(); it != aCmds.end(); ++it) { + QTreeWidgetItem* item = new QTreeWidgetItem(commandTreeWidget); + item->setText(1, qApp->translate((*it)->className(), (*it)->getMenuText())); + item->setToolTip(1, qApp->translate((*it)->className(), (*it)->getToolTipText())); + item->setData(1, Qt::UserRole, QByteArray((*it)->getName())); + item->setSizeHint(0, QSize(32, 32)); + if ((*it)->getPixmap()) + item->setIcon(0, BitmapFactory().iconFromTheme((*it)->getPixmap())); + } } } @@ -326,7 +340,6 @@ void DlgCustomKeyboardImp::on_editShortcut_textChanged(const QString& sc) item->setToolTip(1, qApp->translate((*it)->className(), (*it)->getToolTipText())); item->setData(1, Qt::UserRole, QByteArray((*it)->getName())); item->setSizeHint(0, QSize(32, 32)); - item->setBackgroundColor(0, Qt::lightGray); if ((*it)->getPixmap()) item->setIcon(0, BitmapFactory().iconFromTheme((*it)->getPixmap())); break; @@ -372,7 +385,6 @@ void DlgCustomKeyboardImp::onAddMacroAction(const QByteArray& macro) item->setToolTip(1, QString::fromUtf8(pCmd->getToolTipText())); item->setData(1, Qt::UserRole, macro); item->setSizeHint(0, QSize(32, 32)); - item->setBackgroundColor(0, Qt::lightGray); if (pCmd->getPixmap()) item->setIcon(0, BitmapFactory().iconFromTheme(pCmd->getPixmap())); } @@ -412,7 +424,6 @@ void DlgCustomKeyboardImp::onModifyMacroAction(const QByteArray& macro) item->setToolTip(1, QString::fromUtf8(pCmd->getToolTipText())); item->setData(1, Qt::UserRole, macro); item->setSizeHint(0, QSize(32, 32)); - item->setBackgroundColor(0, Qt::lightGray); if (pCmd->getPixmap()) item->setIcon(0, BitmapFactory().iconFromTheme(pCmd->getPixmap())); if (commandTreeWidget->isItemSelected(item)) diff --git a/src/Gui/DlgToolbarsImp.cpp b/src/Gui/DlgToolbarsImp.cpp index b6f4fdca19..33356ad72b 100644 --- a/src/Gui/DlgToolbarsImp.cpp +++ b/src/Gui/DlgToolbarsImp.cpp @@ -204,14 +204,28 @@ void DlgCustomToolbars::on_categoryBox_activated(int index) sepitem->setText(1, tr("")); sepitem->setData(1, Qt::UserRole, QByteArray("Separator")); sepitem->setSizeHint(0, QSize(32, 32)); - for (std::vector::iterator it = aCmds.begin(); it != aCmds.end(); ++it) { - QTreeWidgetItem* item = new QTreeWidgetItem(commandTreeWidget); - item->setText(1, qApp->translate((*it)->className(), (*it)->getMenuText())); - item->setToolTip(1, qApp->translate((*it)->className(), (*it)->getToolTipText())); - item->setData(1, Qt::UserRole, QByteArray((*it)->getName())); - item->setSizeHint(0, QSize(32, 32)); - if ((*it)->getPixmap()) - item->setIcon(0, BitmapFactory().iconFromTheme((*it)->getPixmap())); + + if (group == QLatin1String("Macros")) { + for (std::vector::iterator it = aCmds.begin(); it != aCmds.end(); ++it) { + QTreeWidgetItem* item = new QTreeWidgetItem(commandTreeWidget); + item->setText(1, QString::fromUtf8((*it)->getMenuText())); + item->setToolTip(1, QString::fromUtf8((*it)->getToolTipText())); + item->setData(1, Qt::UserRole, QByteArray((*it)->getName())); + item->setSizeHint(0, QSize(32, 32)); + if ((*it)->getPixmap()) + item->setIcon(0, BitmapFactory().iconFromTheme((*it)->getPixmap())); + } + } + else { + for (std::vector::iterator it = aCmds.begin(); it != aCmds.end(); ++it) { + QTreeWidgetItem* item = new QTreeWidgetItem(commandTreeWidget); + item->setText(1, qApp->translate((*it)->className(), (*it)->getMenuText())); + item->setToolTip(1, qApp->translate((*it)->className(), (*it)->getToolTipText())); + item->setData(1, Qt::UserRole, QByteArray((*it)->getName())); + item->setSizeHint(0, QSize(32, 32)); + if ((*it)->getPixmap()) + item->setIcon(0, BitmapFactory().iconFromTheme((*it)->getPixmap())); + } } } @@ -541,7 +555,6 @@ void DlgCustomToolbars::onAddMacroAction(const QByteArray& macro) item->setToolTip(1, QString::fromUtf8(pCmd->getToolTipText())); item->setData(1, Qt::UserRole, macro); item->setSizeHint(0, QSize(32, 32)); - item->setBackgroundColor(0, Qt::lightGray); if (pCmd->getPixmap()) item->setIcon(0, BitmapFactory().iconFromTheme(pCmd->getPixmap())); } @@ -582,7 +595,6 @@ void DlgCustomToolbars::onModifyMacroAction(const QByteArray& macro) item->setToolTip(1, QString::fromUtf8(pCmd->getToolTipText())); item->setData(1, Qt::UserRole, macro); item->setSizeHint(0, QSize(32, 32)); - item->setBackgroundColor(0, Qt::lightGray); if (pCmd->getPixmap()) item->setIcon(0, BitmapFactory().iconFromTheme(pCmd->getPixmap())); break;