From 35ef72ac0d81961057a21380d5b59e696b12b982 2017-09-07 09:33:14 From: Alexandre Leroux Date: 2017-09-07 09:33:14 Subject: [PATCH] Adds 'Duplicate' action on variable menu --- diff --git a/core/include/Variable/VariableController.h b/core/include/Variable/VariableController.h index cf03521..3350511 100644 --- a/core/include/Variable/VariableController.h +++ b/core/include/Variable/VariableController.h @@ -42,6 +42,13 @@ public: void setTimeController(TimeController *timeController) noexcept; /** + * Clones the variable passed in parameter and adds the duplicate to the controller + * @param variable the variable to duplicate + * @return the duplicate created, nullptr if the variable couldn't be created + */ + std::shared_ptr cloneVariable(std::shared_ptr variable) noexcept; + + /** * Deletes from the controller the variable passed in parameter. * * Delete a variable includes: diff --git a/core/src/Variable/VariableController.cpp b/core/src/Variable/VariableController.cpp index e7a3da5..c13c5d8 100644 --- a/core/src/Variable/VariableController.cpp +++ b/core/src/Variable/VariableController.cpp @@ -188,6 +188,11 @@ void VariableController::setTimeController(TimeController *timeController) noexc impl->m_TimeController = timeController; } +std::shared_ptr +VariableController::cloneVariable(std::shared_ptr variable) noexcept +{ +} + void VariableController::deleteVariable(std::shared_ptr variable) noexcept { if (!variable) { diff --git a/gui/src/Variable/VariableInspectorWidget.cpp b/gui/src/Variable/VariableInspectorWidget.cpp index 53889b0..45907ae 100644 --- a/gui/src/Variable/VariableInspectorWidget.cpp +++ b/gui/src/Variable/VariableInspectorWidget.cpp @@ -176,10 +176,16 @@ void VariableInspectorWidget::onTableMenuRequested(const QPoint &pos) noexcept if (!selectedVariables.isEmpty()) { tableMenu.addSeparator(); - // 'Rename' action (only if one variable selected) + // 'Rename' and 'Duplicate' actions (only if one variable selected) if (selectedVariables.size() == 1) { auto selectedVariable = selectedVariables.front(); + auto duplicateFun = [&selectedVariable]() { + sqpApp->variableController().cloneVariable(selectedVariable); + }; + + tableMenu.addAction(tr("Duplicate"), duplicateFun); + auto renameFun = [&selectedVariable, &model, this]() { // Generates forbidden names (names associated to existing variables) auto allVariables = model->variables();