diff --git a/src/Gui/DlgMacroExecute.ui b/src/Gui/DlgMacroExecute.ui index 2b6d588363..9aac7e4152 100644 --- a/src/Gui/DlgMacroExecute.ui +++ b/src/Gui/DlgMacroExecute.ui @@ -166,6 +166,9 @@ Qt::StrongFocus + + Gui::FileChooser::Directory + diff --git a/src/Gui/DlgMacroExecuteImp.cpp b/src/Gui/DlgMacroExecuteImp.cpp index cca56f1078..134ae169a0 100644 --- a/src/Gui/DlgMacroExecuteImp.cpp +++ b/src/Gui/DlgMacroExecuteImp.cpp @@ -27,7 +27,6 @@ # include # include # include -# include #endif #include "DlgMacroExecuteImp.h" @@ -421,17 +420,17 @@ void DlgMacroExecuteImp::on_deleteButton_clicked() * toolbar dialog. */ -void DlgMacroExecuteImp::on_toolbarButton_clicked(){ - +void DlgMacroExecuteImp::on_toolbarButton_clicked() +{ /** * advise user of what we are doing, offer chance to cancel * unless user already said not to show this messagebox again **/ - bool showAgain = App::GetApplication().GetParameterGroupByPath( QByteArray("User parameter:BaseApp/Preferences/Macro"))->GetBool("ShowWalkthroughMessage",true); + bool showAgain = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Macro")->GetBool("ShowWalkthroughMessage", true); if (showAgain){ QMessageBox msgBox; - QAbstractButton* doNotShowAgainButton = msgBox.addButton(tr("Do not show again"),QMessageBox::YesRole); + QAbstractButton* doNotShowAgainButton = msgBox.addButton(tr("Do not show again"), QMessageBox::YesRole); msgBox.setText(tr("Guided Walkthrough")); msgBox.setInformativeText(tr("This will guide you in setting up this macro in a custom \ global toolbar. Instructions will be in red text inside the dialog.\n\ @@ -443,22 +442,21 @@ Note: your changes will be applied when you next switch workbenches\n")); if (result == QMessageBox::Cancel){ return; } - if (msgBox.clickedButton()==doNotShowAgainButton){ - App::GetApplication().GetParameterGroupByPath( QByteArray("User parameter:BaseApp/Preferences/Macro")) - ->SetBool("ShowWalkthroughMessage",false); + if (msgBox.clickedButton() == doNotShowAgainButton){ + App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Macro")->SetBool("ShowWalkthroughMessage",false); } } + QTreeWidgetItem* item = userMacroListBox->currentItem(); if (!item) return; QString fn = item->text(0); - QString bareFileName = fn; //for use as default menu text (filename without extension) - bareFileName.remove(QString::fromLatin1(".FCMacro").remove(QString::fromLatin1(".py"))); + QString bareFileName = QFileInfo(fn).baseName(); //for use as default menu text (filename without extension) /** check if user already has custom toolbar, so we can tailor instructions accordingly **/ bool hasCustomToolbar = true; - if (App::GetApplication().GetParameterGroupByPath(QByteArray("User parameter:BaseApp/Workbench/Global/Toolbar"))->GetGroups().size()==0){ + if (App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Workbench/Global/Toolbar")->GetGroups().empty()) { hasCustomToolbar=false; } @@ -468,38 +466,37 @@ Note: your changes will be applied when you next switch workbenches\n")); CommandManager & cCmdMgr = Application::Instance->commandManager(); std::vector aCmds = cCmdMgr.getGroupCommands("Macros"); for (std::vector::iterator it = aCmds.begin(); it != aCmds.end(); ++it) { - MacroCommand* mc = (MacroCommand*)(*it); - if(QString::fromLatin1(mc->getScriptName()) == fn){ + MacroCommand* mc = dynamic_cast(*it); + if (mc && fn.compare(QLatin1String(mc->getScriptName())) == 0) { hasMacroCommand = true; macroMenuText = QString::fromLatin1(mc->getMenuText()); } } - QTabWidget* tabWidget = (QTabWidget*) 0; - static QPointer dlg = 0; + QTabWidget* tabWidget = nullptr; if (!hasMacroCommand){ /** first the custom macros page dialog **/ - if (!dlg) - dlg = new Gui::Dialog::DlgCustomizeImp(this); - dlg->setAttribute(Qt::WA_DeleteOnClose); - dlg->setModal(true); - /** title is normally "Customize" **/ - dlg->setWindowTitle(tr("Walkthrough, dialog 1 of 2")); + Gui::Dialog::DlgCustomizeImp dlg(this); - tabWidget = dlg->findChild(QString::fromLatin1("Gui__Dialog__TabWidget")); - if (!tabWidget){ + /** title is normally "Customize" **/ + dlg.setWindowTitle(tr("Walkthrough, dialog 1 of 2")); + + tabWidget = dlg.findChild(QString::fromLatin1("Gui__Dialog__TabWidget")); + if (!tabWidget) { std::cerr << "Toolbar walkthrough error: Unable to find tabwidget" << std::endl; return; } - QWidget* setupCustomMacrosPage = tabWidget->findChild(QString::fromUtf8("Gui__Dialog__DlgCustomActions")); - if (!setupCustomMacrosPage){ + + QWidget* setupCustomMacrosPage = tabWidget->findChild(QString::fromLatin1("Gui__Dialog__DlgCustomActions")); + if (!setupCustomMacrosPage) { std::cerr << "Toolbar walkthrough error: Unable to find setupCustomMacrosPage" << std::endl; return; } tabWidget->setCurrentWidget(setupCustomMacrosPage); - QGroupBox* groupBox7 = setupCustomMacrosPage->findChild(QString::fromUtf8("GroupBox7")); - if (!groupBox7){ + + QGroupBox* groupBox7 = setupCustomMacrosPage->findChild(QString::fromLatin1("GroupBox7")); + if (!groupBox7) { Base::Console().Warning("Toolbar walkthrough: Unable to find groupBox7\n"); //just warn when not a fatal error } else { @@ -508,56 +505,56 @@ Note: your changes will be applied when you next switch workbenches\n")); groupBox7->setStyleSheet(QString::fromLatin1("QGroupBox::title {color:red}")); } - QPushButton* buttonAddAction = setupCustomMacrosPage->findChild(QString::fromUtf8("buttonAddAction")); - if (!buttonAddAction){ + QPushButton* buttonAddAction = setupCustomMacrosPage->findChild(QString::fromLatin1("buttonAddAction")); + if (!buttonAddAction) { Base::Console().Warning("Toolbar walkthrough: Unable to find buttonAddAction\n"); } else { buttonAddAction->setStyleSheet(QString::fromLatin1("color:red")); } - QComboBox* macroListBox = setupCustomMacrosPage->findChild(QString::fromUtf8("actionMacros")); - if (!macroListBox){ + QComboBox* macroListBox = setupCustomMacrosPage->findChild(QString::fromLatin1("actionMacros")); + if (!macroListBox) { Base::Console().Warning("Toolbar walkthrough: Unable to find actionMacros combo box\n"); } else { int macroIndex = macroListBox->findText(fn); //fn is the macro filename macroListBox->setCurrentIndex(macroIndex); //select it for the user so he doesn't have to } - QLineEdit* menuText = setupCustomMacrosPage->findChild(QString::fromUtf8("actionMenu")); - if (!menuText){ + + QLineEdit* menuText = setupCustomMacrosPage->findChild(QString::fromLatin1("actionMenu")); + if (!menuText) { Base::Console().Warning("Toolbar walkthrough: Unable to find actionMenu menuText\n"); } else { menuText->setText(bareFileName); //user can fill in other fields, e.g. tooltip } - dlg->exec(); + + dlg.exec(); } /** now for the toolbar selection dialog **/ - dlg = 0; - if (!dlg){ - dlg = new Gui::Dialog::DlgCustomizeImp(this); - } - dlg->setAttribute(Qt::WA_DeleteOnClose); - dlg->setModal(true); - if(hasMacroCommand){ - dlg->setWindowTitle(tr("Walkthrough, dialog 1 of 1")); + Gui::Dialog::DlgCustomizeImp dlg(this); + + if (hasMacroCommand){ + dlg.setWindowTitle(tr("Walkthrough, dialog 1 of 1")); } else { - dlg->setWindowTitle(tr("Walkthrough, dialog 2 of 2")); + dlg.setWindowTitle(tr("Walkthrough, dialog 2 of 2")); } - tabWidget = (QTabWidget*) 0; - tabWidget = dlg->findChild(QString::fromLatin1("Gui__Dialog__TabWidget")); - if (!tabWidget){ + tabWidget = nullptr; + tabWidget = dlg.findChild(QString::fromLatin1("Gui__Dialog__TabWidget")); + if (!tabWidget) { std::cerr << "Toolbar walkthrough: Unable to find tabWidget Gui__Dialog__TabWidget" << std::endl; return; } - DlgCustomToolbars* setupToolbarPage = tabWidget->findChild(QString::fromUtf8("Gui__Dialog__DlgCustomToolbars")); + + DlgCustomToolbars* setupToolbarPage = tabWidget->findChild(QString::fromLatin1("Gui__Dialog__DlgCustomToolbars")); if (!setupToolbarPage){ std::cerr << "Toolbar walkthrough: Unable to find setupToolbarPage Gui__Dialog__DlgCustomToolbars" << std::endl; return; } + tabWidget->setCurrentWidget(setupToolbarPage); - QPushButton* moveActionRightButton = setupToolbarPage->findChild(QString::fromUtf8("moveActionRightButton")); + QPushButton* moveActionRightButton = setupToolbarPage->findChild(QString::fromLatin1("moveActionRightButton")); if (!moveActionRightButton){ Base::Console().Warning("Toolbar walkthrough: Unable to find moveActionRightButton\n"); } else { @@ -568,21 +565,26 @@ Note: your changes will be applied when you next switch workbenches\n")); **/ QString instructions2 = tr("Walkthrough instructions: Click right arrow button (->), then Close."); - QComboBox* workbenchBox = setupToolbarPage->findChild(QString::fromUtf8("workbenchBox")); - if (!workbenchBox){ + QComboBox* workbenchBox = setupToolbarPage->findChild(QString::fromLatin1("workbenchBox")); + if (!workbenchBox) { Base::Console().Warning("Toolbar walkthrough: Unable to find workbenchBox\n"); - } else { + } + else { /** find the Global workbench and select it for the user **/ - int globalIdx = workbenchBox->findText(QString::fromLatin1("Global"));; + int globalIdx = workbenchBox->findData(QString::fromLatin1("Global")); if (globalIdx != -1){ workbenchBox->setCurrentIndex(globalIdx); - setupToolbarPage->on_workbenchBox_activated(globalIdx); + QMetaObject::invokeMethod(setupToolbarPage, "on_workbenchBox_activated", + Qt::DirectConnection, + QGenericReturnArgument(), + Q_ARG(int, globalIdx)); } else { Base::Console().Warning("Toolbar walkthrough: Unable to find Global workbench\n"); } + if (!hasCustomToolbar){ - QPushButton* newButton = setupToolbarPage->findChild(QString::fromUtf8("newButton")); + QPushButton* newButton = setupToolbarPage->findChild(QString::fromLatin1("newButton")); if (!newButton){ Base::Console().Warning("Toolbar walkthrough: Unable to find newButton\n"); } else { @@ -602,21 +604,25 @@ Note: your changes will be applied when you next switch workbenches\n")); } /** find Macros category and select it for the user **/ - QComboBox* categoryBox = setupToolbarPage->findChild(QString::fromUtf8("categoryBox")); + QComboBox* categoryBox = setupToolbarPage->findChild(QString::fromLatin1("categoryBox")); if (!categoryBox){ Base::Console().Warning("Toolbar walkthrough: Unable to find categoryBox\n"); } else { int macrosIdx = categoryBox->findText(tr("Macros")); if (macrosIdx != -1){ categoryBox->setCurrentIndex(macrosIdx); - setupToolbarPage->on_categoryBox_activated(macrosIdx); + QMetaObject::invokeMethod(setupToolbarPage, "on_categoryBox_activated", + Qt::DirectConnection, + QGenericReturnArgument(), + Q_ARG(int, macrosIdx)); } else { Base::Console().Warning("Toolbar walkthrough: Unable to find Macros in categoryBox\n"); } } + /** expand custom toolbar items **/ - QTreeWidget* toolbarTreeWidget = setupToolbarPage->findChild(QString::fromUtf8("toolbarTreeWidget")); - if (!toolbarTreeWidget){ + QTreeWidget* toolbarTreeWidget = setupToolbarPage->findChild(QString::fromLatin1("toolbarTreeWidget")); + if (!toolbarTreeWidget) { Base::Console().Warning("Toolbar walkthrough: Unable to find toolbarTreeWidget\n"); } else { toolbarTreeWidget->expandAll(); @@ -624,8 +630,8 @@ Note: your changes will be applied when you next switch workbenches\n")); /** preselect macro command for user **/ - QTreeWidget* commandTreeWidget = setupToolbarPage->findChild(QString::fromUtf8("commandTreeWidget")); - if (!commandTreeWidget){ + QTreeWidget* commandTreeWidget = setupToolbarPage->findChild(QString::fromLatin1("commandTreeWidget")); + if (!commandTreeWidget) { Base::Console().Warning("Toolbar walkthrough: Unable to find commandTreeWidget\n"); } else { if (!hasMacroCommand){ //will be the last in the list, the one just created @@ -633,13 +639,13 @@ Note: your changes will be applied when you next switch workbenches\n")); commandTreeWidget->scrollToItem(commandTreeWidget->currentItem()); } else { //pre-select it for the user (will be the macro menu text) QList items = commandTreeWidget->findItems(macroMenuText, Qt::MatchFixedString | Qt::MatchWrap,1); - if(items.size()!=0){ + if (!items.empty()) { commandTreeWidget->setCurrentItem(items[0]); commandTreeWidget->scrollToItem(commandTreeWidget->currentItem()); } } } - dlg->exec(); + dlg.exec(); } diff --git a/src/Gui/DlgToolbarsImp.cpp b/src/Gui/DlgToolbarsImp.cpp index a52ee2d7b1..062672d4d2 100644 --- a/src/Gui/DlgToolbarsImp.cpp +++ b/src/Gui/DlgToolbarsImp.cpp @@ -112,7 +112,7 @@ DlgCustomToolbars::DlgCustomToolbars(DlgCustomToolbars::Type t, QWidget* parent) QStringList workbenches = Application::Instance->workbenches(); workbenches.sort(); index = 1; - workbenchBox->addItem(QApplication::windowIcon(), QString::fromLatin1("Global")); + workbenchBox->addItem(QApplication::windowIcon(), tr("Global")); workbenchBox->setItemData(0, QVariant(QString::fromLatin1("Global")), Qt::UserRole); for (QStringList::Iterator it = workbenches.begin(); it != workbenches.end(); ++it) { QPixmap px = Application::Instance->workbenchIcon(*it); diff --git a/src/Gui/DlgToolbarsImp.h b/src/Gui/DlgToolbarsImp.h index 5c0486be3a..ff0c4424e5 100644 --- a/src/Gui/DlgToolbarsImp.h +++ b/src/Gui/DlgToolbarsImp.h @@ -26,7 +26,6 @@ #include "ui_DlgToolbars.h" #include "PropertyPage.h" -#include "DlgMacroExecuteImp.h" namespace Gui { namespace Dialog { @@ -44,7 +43,6 @@ class DlgCustomToolbars : public CustomizeActionPage, public Ui_DlgCustomToolbar Q_OBJECT protected: - friend class DlgMacroExecuteImp; enum Type { Toolbar, Toolboxbar }; DlgCustomToolbars(Type, QWidget* parent = 0);