summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorRafael Lima <rafael.palma.lima@gmail.com>2020-11-17 17:59:50 -0300
committerNoel Grandin <noel.grandin@collabora.co.uk>2020-11-24 07:11:30 +0100
commite1b05b134e43d3186ddc5b8cfbbacb62ee4af483 (patch)
treeefa42145bcbffdf9f9fa6f4fe397368e23f25d29 /sc
parent5ca88c4a1a97b95c829f6c7c570c4e5219e80e2e (diff)
tdf#134528 Add "Reset All" button to Calc Solver dialog
Change-Id: I27a2fb4dddf3da31801bc2283ee58a24a921d7ff Reviewed-on: https://gerrit.libreoffice.org/c/core/+/106030 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'sc')
-rw-r--r--sc/source/ui/inc/optsolver.hxx1
-rw-r--r--sc/source/ui/miscdlgs/optsolver.cxx25
-rw-r--r--sc/uiconfig/scalc/ui/solverdlg.ui46
3 files changed, 56 insertions, 16 deletions
diff --git a/sc/source/ui/inc/optsolver.hxx b/sc/source/ui/inc/optsolver.hxx
index ed9860e8b652..410f513375ee 100644
--- a/sc/source/ui/inc/optsolver.hxx
+++ b/sc/source/ui/inc/optsolver.hxx
@@ -177,6 +177,7 @@ private:
std::unique_ptr<weld::Button> m_xBtnOpt;
std::unique_ptr<weld::Button> m_xBtnCancel;
std::unique_ptr<weld::Button> m_xBtnSolve;
+ std::unique_ptr<weld::Button> m_xBtnResetAll;
std::unique_ptr<weld::Label> m_xResultFT;
std::unique_ptr<weld::Widget> m_xContents;
diff --git a/sc/source/ui/miscdlgs/optsolver.cxx b/sc/source/ui/miscdlgs/optsolver.cxx
index e3c6b1d751e9..8fc81893e26c 100644
--- a/sc/source/ui/miscdlgs/optsolver.cxx
+++ b/sc/source/ui/miscdlgs/optsolver.cxx
@@ -202,6 +202,7 @@ ScOptSolverDlg::ScOptSolverDlg(SfxBindings* pB, SfxChildWindow* pCW, weld::Windo
, m_xBtnOpt(m_xBuilder->weld_button("options"))
, m_xBtnCancel(m_xBuilder->weld_button("close"))
, m_xBtnSolve(m_xBuilder->weld_button("ok"))
+ , m_xBtnResetAll(m_xBuilder->weld_button("resetall"))
, m_xResultFT(m_xBuilder->weld_label("result"))
, m_xContents(m_xBuilder->weld_widget("grid"))
{
@@ -273,6 +274,7 @@ void ScOptSolverDlg::Init(const ScAddress& rCursorPos)
m_xBtnOpt->connect_clicked( LINK( this, ScOptSolverDlg, BtnHdl ) );
m_xBtnCancel->connect_clicked( LINK( this, ScOptSolverDlg, BtnHdl ) );
m_xBtnSolve->connect_clicked( LINK( this, ScOptSolverDlg, BtnHdl ) );
+ m_xBtnResetAll->connect_clicked( LINK( this, ScOptSolverDlg, BtnHdl ) );
Link<formula::RefEdit&,void> aEditLink = LINK( this, ScOptSolverDlg, GetEditFocusHdl );
Link<formula::RefButton&,void> aButtonLink = LINK( this, ScOptSolverDlg, GetButtonFocusHdl );
@@ -545,6 +547,29 @@ IMPL_LINK(ScOptSolverDlg, BtnHdl, weld::Button&, rBtn, void)
m_xOptDlg.reset();
});
}
+ else if (&rBtn == m_xBtnResetAll.get())
+ {
+ OUString sEmpty;
+ m_xEdObjectiveCell->SetText(sEmpty);
+ m_xEdTargetValue->SetText(sEmpty);
+ m_xEdVariableCells->SetText(sEmpty);
+
+ // Get default property values of solver implementations
+ maEngine = maImplNames[0];
+ maProperties = ScSolverUtil::GetDefaults( maEngine );
+
+ // Clear all conditions (Constraints)
+ maConditions.clear();
+ std::unique_ptr<ScOptSolverSave> pEmpty( new ScOptSolverSave(
+ sEmpty, true, false, false,
+ sEmpty, sEmpty, maConditions, maEngine, maProperties ) );
+ mpDocShell->SetSolverSaveData( std::move(pEmpty) );
+ ShowConditions();
+
+ m_xRbMax->set_active(true);
+ m_xEdObjectiveCell->GrabFocus();
+ mpEdActive = m_xEdObjectiveCell.get();
+ }
}
IMPL_LINK( ScOptSolverDlg, GetEditFocusHdl, formula::RefEdit&, rCtrl, void )
diff --git a/sc/uiconfig/scalc/ui/solverdlg.ui b/sc/uiconfig/scalc/ui/solverdlg.ui
index a4f63ef2b3e8..ccd87c6f54d1 100644
--- a/sc/uiconfig/scalc/ui/solverdlg.ui
+++ b/sc/uiconfig/scalc/ui/solverdlg.ui
@@ -20,37 +20,51 @@
<property name="can_focus">False</property>
<property name="layout_style">end</property>
<child>
- <object class="GtkButton" id="options">
- <property name="label" translatable="yes" context="solverdlg|options">O_ptions...</property>
+ <object class="GtkButton" id="help">
+ <property name="label">gtk-help</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
- <property name="use_underline">True</property>
- <child internal-child="accessible">
- <object class="AtkObject" id="options-atkobject">
- <property name="AtkObject::accessible-description" translatable="yes" context="solverdlg|extended_tip|options">Opens the Solver Options dialog.</property>
- </object>
- </child>
+ <property name="use_stock">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
+ <property name="secondary">True</property>
</packing>
</child>
<child>
- <object class="GtkButton" id="help">
- <property name="label">gtk-help</property>
+ <object class="GtkButton" id="resetall">
+ <property name="label" translatable="yes" context="solverdlg|resetall">_Reset All</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
- <property name="use_stock">True</property>
+ <property name="use_underline">True</property>
</object>
<packing>
- <property name="expand">False</property>
+ <property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
- <property name="secondary">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="options">
+ <property name="label" translatable="yes" context="solverdlg|options">O_ptions...</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ <child internal-child="accessible">
+ <object class="AtkObject" id="options-atkobject">
+ <property name="AtkObject::accessible-description" translatable="yes" context="solverdlg|extended_tip|options">Opens the Solver Options dialog.</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
</packing>
</child>
<child>
@@ -66,7 +80,7 @@
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
- <property name="position">2</property>
+ <property name="position">3</property>
</packing>
</child>
<child>
@@ -80,7 +94,7 @@
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
- <property name="position">3</property>
+ <property name="position">4</property>
</packing>
</child>
</object>
@@ -869,8 +883,8 @@
</object>
</child>
<action-widgets>
- <action-widget response="101">options</action-widget>
<action-widget response="-11">help</action-widget>
+ <action-widget response="101">options</action-widget>
<action-widget response="-5">ok</action-widget>
<action-widget response="-7">close</action-widget>
</action-widgets>