From 2dd6a72629d57176738e4b5eaf7422ffdb3fca84 Mon Sep 17 00:00:00 2001 From: Abdullah Tahiri Date: Sat, 19 Dec 2015 15:07:31 +0100 Subject: [PATCH] Gui Bug fix: Tabbed support for system-wide macros =============================================== What? Implementation of triplus' idea of making user-specific and system-specific macros having a different list in different tabs. Fixing of a bug related to the previous "separator". Suggested terminology. --- src/Gui/DlgMacroExecute.ui | 261 +++++++++++++++++++++++---------- src/Gui/DlgMacroExecuteImp.cpp | 157 ++++++++++++++------ src/Gui/DlgMacroExecuteImp.h | 4 +- 3 files changed, 298 insertions(+), 124 deletions(-) diff --git a/src/Gui/DlgMacroExecute.ui b/src/Gui/DlgMacroExecute.ui index 1ffdb2dd5a..b343a3f9e4 100644 --- a/src/Gui/DlgMacroExecute.ui +++ b/src/Gui/DlgMacroExecute.ui @@ -1,60 +1,138 @@ - - - - + + Gui::Dialog::DlgMacroExecute - - + + 0 0 - 344 - 346 + 640 + 480 - + Execute macro - + true - - + + 9 - + + 9 + + + 9 + + + 9 + + 6 - - - + + + 0 - + + 0 + + + 0 + + + 0 + + 6 - - - + + + Macro name: - - + + 9 - + + 9 + + + 9 + + + 9 + + 6 - - - - false + + + + QTabWidget::North + + 0 + + + + User macros + + + + + + + 0 + 0 + + + + false + + + + 1 + + + + + + + + + System macros + + + + + + + 0 + 0 + + + + false + + + + 1 + + + + + + - - - + + + false @@ -62,21 +140,30 @@ - - - - Macro destination: + + + + User macros location: - - + + 9 - + + 9 + + + 9 + + + 9 + + 6 - - - + + + Qt::StrongFocus @@ -87,40 +174,49 @@ - - - - 0 - - + + + 6 + + 0 + + + 0 + + + 0 + + + 0 + - - + + false - + Execute - - + + Close - + Qt::Vertical - + QSizePolicy::Expanding - + 77 34 @@ -129,41 +225,41 @@ - - + + true - + Create - - + + false - + Delete - - + + false - + Edit - + Qt::Vertical - + 20 40 @@ -177,19 +273,16 @@ - + Gui::FileChooser QWidget
Gui/FileDialog.h
- 0 -
LineEditMacroName - macroListBox executeButton closeButton createButton @@ -205,27 +298,43 @@ Gui::Dialog::DlgMacroExecute reject() - + 268 42 - + 20 20 - macroListBox + userMacroListBox itemDoubleClicked(QTreeWidgetItem*,int) Gui::Dialog::DlgMacroExecute accept() - + 110 110 - + + 281 + 281 + + + + + systemMacroListBox + itemDoubleClicked(QTreeWidgetItem*,int) + Gui::Dialog::DlgMacroExecute + accept() + + + 110 + 110 + + 281 281 @@ -237,11 +346,11 @@ Gui::Dialog::DlgMacroExecute accept() - + 317 16 - + 302 319 diff --git a/src/Gui/DlgMacroExecuteImp.cpp b/src/Gui/DlgMacroExecuteImp.cpp index 8158f7f81d..5cf43437b8 100644 --- a/src/Gui/DlgMacroExecuteImp.cpp +++ b/src/Gui/DlgMacroExecuteImp.cpp @@ -50,15 +50,13 @@ namespace Gui { class MacroItem : public QTreeWidgetItem { public: - MacroItem(QTreeWidget * widget, bool systemwide, bool separator=false) + MacroItem(QTreeWidget * widget, bool systemwide) : QTreeWidgetItem(widget), - systemWide(systemwide), - Separator(separator){} + systemWide(systemwide){} ~MacroItem(){} bool systemWide; - bool Separator; }; } } @@ -85,8 +83,10 @@ DlgMacroExecuteImp::DlgMacroExecuteImp( QWidget* parent, Qt::WindowFlags fl ) // Fill the List box QStringList labels; labels << tr("Macros"); - macroListBox->setHeaderLabels(labels); - macroListBox->header()->hide(); + userMacroListBox->setHeaderLabels(labels); + userMacroListBox->header()->hide(); + systemMacroListBox->setHeaderLabels(labels); + systemMacroListBox->header()->hide(); fillUpList(); } @@ -103,59 +103,112 @@ DlgMacroExecuteImp::~DlgMacroExecuteImp() */ void DlgMacroExecuteImp::fillUpList(void) { + // lists all files in macro path QDir dir(this->macroPath, QLatin1String("*.FCMacro *.py")); - + // fill up with the directory - macroListBox->clear(); + userMacroListBox->clear(); for (unsigned int i=0; isetText(0, dir[i]); + MacroItem* item = new MacroItem(userMacroListBox,false); + item->setText(0, dir[i]); } - + QString dirstr = QString::fromUtf8(App::GetApplication().getHomePath()) + QString::fromUtf8("Macro"); dir = QDir(dirstr, QLatin1String("*.FCMacro *.py")); - if(dir.exists()) { - MacroItem* item = new MacroItem(macroListBox,false,true); - item->setText(0, tr("----- system-wide macros -----")); - - for (unsigned int i=0; isetText(0, dir[i]); - } + systemMacroListBox->clear(); + if(dir.exists()) { + + for (unsigned int i=0; isetText(0, dir[i]); + } } + } /** * Selects a macro file in the list view. */ -void DlgMacroExecuteImp::on_macroListBox_currentItemChanged(QTreeWidgetItem* item) +void DlgMacroExecuteImp::on_userMacroListBox_currentItemChanged(QTreeWidgetItem* item) { if (item) { - MacroItem * mitem = static_cast(item); - - if(!mitem->Separator) { - LineEditMacroName->setText(item->text(0)); - - if(!mitem->systemWide) { - executeButton->setEnabled(true); - editButton->setEnabled(true); - deleteButton->setEnabled(true); - } - else { - executeButton->setEnabled(true); - editButton->setEnabled(false); - deleteButton->setEnabled(false); - } - } - else { - LineEditMacroName->setText(QString::fromLatin1("")); - executeButton->setEnabled(false); - editButton->setEnabled(false); - deleteButton->setEnabled(false); - } + LineEditMacroName->setText(item->text(0)); + + executeButton->setEnabled(true); + editButton->setEnabled(true); + deleteButton->setEnabled(true); + createButton->setEnabled(true); + } + else { + executeButton->setEnabled(false); + editButton->setEnabled(false); + deleteButton->setEnabled(false); + createButton->setEnabled(true); + } +} + +void DlgMacroExecuteImp::on_systemMacroListBox_currentItemChanged(QTreeWidgetItem* item) +{ + if (item) { + LineEditMacroName->setText(item->text(0)); + + executeButton->setEnabled(true); + editButton->setEnabled(false); + deleteButton->setEnabled(false); + createButton->setEnabled(false); + } + else { + executeButton->setEnabled(false); + editButton->setEnabled(false); + deleteButton->setEnabled(false); + createButton->setEnabled(false); + } +} + +void DlgMacroExecuteImp::on_tabMacroWidget_currentChanged(int index) +{ + QTreeWidgetItem* item; + + if(index == 0) { //user-specific + item = userMacroListBox->currentItem(); + if(item) { + executeButton->setEnabled(true); + editButton->setEnabled(true); + deleteButton->setEnabled(true); + createButton->setEnabled(true); + } + else { + executeButton->setEnabled(false); + editButton->setEnabled(false); + deleteButton->setEnabled(false); + createButton->setEnabled(true); + } + } + else { //index==1 system-wide + item = systemMacroListBox->currentItem(); + + if(item) { + executeButton->setEnabled(true); + editButton->setEnabled(false); + deleteButton->setEnabled(false); + createButton->setEnabled(false); + } + else { + executeButton->setEnabled(false); + editButton->setEnabled(false); + deleteButton->setEnabled(false); + createButton->setEnabled(false); + } + } + + if (item) { + LineEditMacroName->setText(item->text(0)); + } + else { + LineEditMacroName->setText(QString::fromLatin1("")); } } @@ -164,7 +217,17 @@ void DlgMacroExecuteImp::on_macroListBox_currentItemChanged(QTreeWidgetItem* ite */ void DlgMacroExecuteImp::accept() { - QTreeWidgetItem* item = macroListBox->currentItem(); + QTreeWidgetItem* item; + + int index = tabMacroWidget->currentIndex(); + + if(index == 0) { //user-specific + item = userMacroListBox->currentItem(); + } + else { + //index == 1 system-wide + item = systemMacroListBox->currentItem(); + } if (!item) return; QDialog::accept(); @@ -216,7 +279,7 @@ void DlgMacroExecuteImp::on_fileChooser_fileNameChanged(const QString& fn) */ void DlgMacroExecuteImp::on_editButton_clicked() { - QTreeWidgetItem* item = macroListBox->currentItem(); + QTreeWidgetItem* item = userMacroListBox->currentItem(); if (!item) return; MacroItem * mitem = static_cast(item); @@ -276,7 +339,7 @@ void DlgMacroExecuteImp::on_createButton_clicked() /** Deletes the selected macro file from your harddisc. */ void DlgMacroExecuteImp::on_deleteButton_clicked() { - QTreeWidgetItem* item = macroListBox->currentItem(); + QTreeWidgetItem* item = userMacroListBox->currentItem(); if (!item) return; MacroItem * mitem = static_cast(item); @@ -295,8 +358,8 @@ void DlgMacroExecuteImp::on_deleteButton_clicked() { QDir dir(this->macroPath); dir.remove(fn); - int index = macroListBox->indexOfTopLevelItem(item); - macroListBox->takeTopLevelItem(index); + int index = userMacroListBox->indexOfTopLevelItem(item); + userMacroListBox->takeTopLevelItem(index); delete item; } } diff --git a/src/Gui/DlgMacroExecuteImp.h b/src/Gui/DlgMacroExecuteImp.h index a8561d7f31..4ec5b1e51f 100644 --- a/src/Gui/DlgMacroExecuteImp.h +++ b/src/Gui/DlgMacroExecuteImp.h @@ -52,7 +52,9 @@ public Q_SLOTS: void on_editButton_clicked(); protected Q_SLOTS: - void on_macroListBox_currentItemChanged(QTreeWidgetItem*); + void on_userMacroListBox_currentItemChanged(QTreeWidgetItem*); + void on_systemMacroListBox_currentItemChanged(QTreeWidgetItem*); + void on_tabMacroWidget_currentChanged(int index); protected: void fillUpList(void);