tdf#158467 - UI: Part 50 - Unify lockdown behavior of Options dialog
for Calc - Calculate Page.
Change-Id: Ibe728e2ffc122879ee66abb88927be355d41348a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160462
Tested-by: Jenkins
Reviewed-by: Balazs Varga <balazs.varga.extern@allotropia.de>
diff --git a/sc/source/ui/inc/tpcalc.hxx b/sc/source/ui/inc/tpcalc.hxx
index 87b4f90..6bfacae 100644
--- a/sc/source/ui/inc/tpcalc.hxx
+++ b/sc/source/ui/inc/tpcalc.hxx
@@ -21,6 +21,8 @@
#include <sfx2/tabdlg.hxx>
#include "editfield.hxx"
#include <com/sun/star/configuration/ReadWriteAccess.hpp>
#include <com/sun/star/beans/PropertyAttribute.hpp>
class ScDocOptions;
@@ -38,32 +40,46 @@ public:
virtual DeactivateRC DeactivatePage ( SfxItemSet* pSet ) override;
private:
css::uno::Reference<css::configuration::XReadWriteAccess> m_xReadWriteAccess;
std::unique_ptr<ScDocOptions> pOldOptions;
std::unique_ptr<ScDocOptions> pLocalOptions;
std::unique_ptr<weld::CheckButton> m_xBtnIterate;
std::unique_ptr<weld::Widget> m_xBtnIterateImg;
std::unique_ptr<weld::Label> m_xFtSteps;
std::unique_ptr<weld::SpinButton> m_xEdSteps;
std::unique_ptr<weld::Widget> m_xEdStepsImg;
std::unique_ptr<weld::Label> m_xFtEps;
std::unique_ptr<ScDoubleField> m_xEdEps;
std::unique_ptr<weld::Widget> m_xEdEpsImg;
std::unique_ptr<weld::RadioButton> m_xBtnDateStd;
std::unique_ptr<weld::RadioButton> m_xBtnDateSc10;
std::unique_ptr<weld::RadioButton> m_xBtnDate1904;
std::unique_ptr<weld::Widget> m_xDateImg;
std::unique_ptr<weld::CheckButton> m_xBtnCase;
std::unique_ptr<weld::Widget> m_xBtnCaseImg;
std::unique_ptr<weld::CheckButton> m_xBtnCalc;
std::unique_ptr<weld::Widget> m_xBtnCalcImg;
std::unique_ptr<weld::CheckButton> m_xBtnMatch;
std::unique_ptr<weld::Widget> m_xBtnMatchImg;
std::unique_ptr<weld::RadioButton> m_xBtnWildcards;
std::unique_ptr<weld::RadioButton> m_xBtnRegex;
std::unique_ptr<weld::RadioButton> m_xBtnLiteral;
std::unique_ptr<weld::Widget> m_xFormulaImg;
std::unique_ptr<weld::CheckButton> m_xBtnLookUp;
std::unique_ptr<weld::Widget> m_xBtnLookUpImg;
std::unique_ptr<weld::CheckButton> m_xBtnGeneralPrec;
std::unique_ptr<weld::Widget> m_xBtnGeneralPrecImg;
std::unique_ptr<weld::Label> m_xFtPrec;
std::unique_ptr<weld::SpinButton> m_xEdPrec;
std::unique_ptr<weld::Widget> m_xEdPrecImg;
std::unique_ptr<weld::CheckButton> m_xBtnThread;
std::unique_ptr<weld::Widget> m_xBtnThreadImg;
private:
void Init();
diff --git a/sc/source/ui/optdlg/tpcalc.cxx b/sc/source/ui/optdlg/tpcalc.cxx
index 356fcd9b..edeb306 100644
--- a/sc/source/ui/optdlg/tpcalc.cxx
+++ b/sc/source/ui/optdlg/tpcalc.cxx
@@ -38,27 +38,42 @@ ScTpCalcOptions::ScTpCalcOptions(weld::Container* pPage, weld::DialogController*
rCoreAttrs.Get(SID_SCDOCOPTIONS).GetDocOptions()))
, pLocalOptions(new ScDocOptions)
, m_xBtnIterate(m_xBuilder->weld_check_button("iterate"))
, m_xBtnIterateImg(m_xBuilder->weld_widget("lockiterate"))
, m_xFtSteps(m_xBuilder->weld_label("stepsft"))
, m_xEdSteps(m_xBuilder->weld_spin_button("steps"))
, m_xEdStepsImg(m_xBuilder->weld_widget("locksteps"))
, m_xFtEps(m_xBuilder->weld_label("minchangeft"))
, m_xEdEps(new ScDoubleField(m_xBuilder->weld_entry("minchange")))
, m_xEdEpsImg(m_xBuilder->weld_widget("lockminchange"))
, m_xBtnDateStd(m_xBuilder->weld_radio_button("datestd"))
, m_xBtnDateSc10(m_xBuilder->weld_radio_button("datesc10"))
, m_xBtnDate1904(m_xBuilder->weld_radio_button("date1904"))
, m_xDateImg(m_xBuilder->weld_widget("lockdate"))
, m_xBtnCase(m_xBuilder->weld_check_button("case"))
, m_xBtnCaseImg(m_xBuilder->weld_widget("lockcase"))
, m_xBtnCalc(m_xBuilder->weld_check_button("calc"))
, m_xBtnCalcImg(m_xBuilder->weld_widget("lockcalc"))
, m_xBtnMatch(m_xBuilder->weld_check_button("match"))
, m_xBtnMatchImg(m_xBuilder->weld_widget("lockmatch"))
, m_xBtnWildcards(m_xBuilder->weld_radio_button("formulawildcards"))
, m_xBtnRegex(m_xBuilder->weld_radio_button("formularegex"))
, m_xBtnLiteral(m_xBuilder->weld_radio_button("formulaliteral"))
, m_xFormulaImg(m_xBuilder->weld_widget("lockformulawild"))
, m_xBtnLookUp(m_xBuilder->weld_check_button("lookup"))
, m_xBtnLookUpImg(m_xBuilder->weld_widget("locklookup"))
, m_xBtnGeneralPrec(m_xBuilder->weld_check_button("generalprec"))
, m_xBtnGeneralPrecImg(m_xBuilder->weld_widget("lockgeneralprec"))
, m_xFtPrec(m_xBuilder->weld_label("precft"))
, m_xEdPrec(m_xBuilder->weld_spin_button("prec"))
, m_xEdPrecImg(m_xBuilder->weld_widget("lockprec"))
, m_xBtnThread(m_xBuilder->weld_check_button("threadingenabled"))
, m_xBtnThreadImg(m_xBuilder->weld_widget("lockthreadingenabled"))
{
Init();
SetExchangeSupport();
css::uno::Reference < css::uno::XComponentContext > xContext(::comphelper::getProcessComponentContext());
m_xReadWriteAccess = css::configuration::ReadWriteAccess::create(xContext, "*");
}
ScTpCalcOptions::~ScTpCalcOptions()
@@ -90,12 +105,21 @@ void ScTpCalcOptions::Reset(const SfxItemSet* rCoreAttrs)
*pLocalOptions = *pOldOptions;
bool bReadOnly = officecfg::Office::Calc::Calculate::Other::CaseSensitive::isReadOnly();
m_xBtnCase->set_active( !pLocalOptions->IsIgnoreCase() );
m_xBtnCase->set_sensitive( !officecfg::Office::Calc::Calculate::Other::CaseSensitive::isReadOnly() );
m_xBtnCase->set_sensitive(!bReadOnly);
m_xBtnCaseImg->set_visible(bReadOnly);
bReadOnly = officecfg::Office::Calc::Calculate::Other::Precision::isReadOnly();
m_xBtnCalc->set_active( pLocalOptions->IsCalcAsShown() );
m_xBtnCalc->set_sensitive( !officecfg::Office::Calc::Calculate::Other::Precision::isReadOnly() );
m_xBtnCalc->set_sensitive(!bReadOnly);
m_xBtnCalcImg->set_visible(bReadOnly);
bReadOnly = officecfg::Office::Calc::Calculate::Other::SearchCriteria::isReadOnly();
m_xBtnMatch->set_active( pLocalOptions->IsMatchWholeCell() );
m_xBtnMatch->set_sensitive( !officecfg::Office::Calc::Calculate::Other::SearchCriteria::isReadOnly() );
m_xBtnMatch->set_sensitive(!bReadOnly);
m_xBtnMatchImg->set_visible(bReadOnly);
bool bWildcards = pLocalOptions->IsFormulaWildcardsEnabled();
bool bRegex = pLocalOptions->IsFormulaRegexEnabled();
// If both, Wildcards and Regex, are set then Wildcards shall take
@@ -116,9 +140,20 @@ void ScTpCalcOptions::Reset(const SfxItemSet* rCoreAttrs)
m_xBtnRegex->set_sensitive( false );
m_xBtnLiteral->set_sensitive( false );
}
bReadOnly = officecfg::Office::Calc::Calculate::Other::Wildcards::isReadOnly() ||
officecfg::Office::Calc::Calculate::Other::RegularExpressions::isReadOnly();
m_xFormulaImg->set_visible(bReadOnly);
bReadOnly = officecfg::Office::Calc::Calculate::Other::FindLabel::isReadOnly();
m_xBtnLookUp->set_active( pLocalOptions->IsLookUpColRowNames() );
m_xBtnLookUp->set_sensitive( !officecfg::Office::Calc::Calculate::Other::FindLabel::isReadOnly() );
m_xBtnLookUp->set_sensitive(!bReadOnly);
m_xBtnLookUpImg->set_visible(bReadOnly);
bReadOnly = officecfg::Office::Calc::Calculate::IterativeReference::Iteration::isReadOnly();
m_xBtnIterate->set_active( pLocalOptions->IsIter() );
m_xBtnIterate->set_sensitive(!bReadOnly);
m_xBtnIterateImg->set_visible(bReadOnly);
m_xEdSteps->set_value( pLocalOptions->GetIterCount() );
m_xEdEps->SetValue( pLocalOptions->GetIterEps(), 6 );
@@ -137,7 +172,45 @@ void ScTpCalcOptions::Reset(const SfxItemSet* rCoreAttrs)
break;
}
// TODO: these option settings need to be simplified.
bReadOnly = false;
OUString aDateConfPath = officecfg::Office::Calc::Calculate::Other::path() + "/Date/DD";
if (m_xReadWriteAccess->hasPropertyByHierarchicalName(aDateConfPath))
{
css::beans::Property aProperty = m_xReadWriteAccess->getPropertyByHierarchicalName(aDateConfPath);
bReadOnly = (aProperty.Attributes & css::beans::PropertyAttribute::READONLY) != 0;
}
if (!bReadOnly)
{
aDateConfPath = officecfg::Office::Calc::Calculate::Other::path() + "/Date/MM";
if (m_xReadWriteAccess->hasPropertyByHierarchicalName(aDateConfPath))
{
css::beans::Property aProperty = m_xReadWriteAccess->getPropertyByHierarchicalName(aDateConfPath);
bReadOnly = (aProperty.Attributes & css::beans::PropertyAttribute::READONLY) != 0;
}
}
if (!bReadOnly)
{
aDateConfPath = officecfg::Office::Calc::Calculate::Other::path() + "/Date/YY";
if (m_xReadWriteAccess->hasPropertyByHierarchicalName(aDateConfPath))
{
css::beans::Property aProperty = m_xReadWriteAccess->getPropertyByHierarchicalName(aDateConfPath);
bReadOnly = (aProperty.Attributes & css::beans::PropertyAttribute::READONLY) != 0;
}
}
if (bReadOnly)
{
m_xBtnDateStd->set_sensitive(false);
m_xBtnDateSc10->set_sensitive(false);
m_xBtnDate1904->set_sensitive(false);
m_xDateImg->set_visible(true);
}
sal_uInt16 nPrec = pLocalOptions->GetStdPrecision();
bReadOnly = officecfg::Office::Calc::Calculate::Other::DecimalPlaces::isReadOnly();
if (nPrec == SvNumberFormatter::UNLIMITED_PRECISION)
{
m_xFtPrec->set_sensitive(false);
@@ -149,11 +222,24 @@ void ScTpCalcOptions::Reset(const SfxItemSet* rCoreAttrs)
{
m_xBtnGeneralPrec->set_active(true);
m_xFtPrec->set_sensitive(true);
m_xEdPrec->set_sensitive(true);
m_xEdPrec->set_sensitive(!bReadOnly);
m_xEdPrec->set_value(nPrec);
}
m_xBtnGeneralPrec->set_sensitive(!bReadOnly);
m_xBtnGeneralPrecImg->set_visible(bReadOnly);
m_xEdPrecImg->set_visible(bReadOnly);
m_xBtnThread->set_sensitive( !officecfg::Office::Calc::Formula::Calculation::UseThreadedCalculationForFormulaGroups::isReadOnly() );
bReadOnly = officecfg::Office::Calc::Calculate::IterativeReference::Steps::isReadOnly();
m_xEdSteps->set_sensitive(!bReadOnly);
m_xEdStepsImg->set_visible(bReadOnly);
bReadOnly = officecfg::Office::Calc::Calculate::IterativeReference::MinimumChange::isReadOnly();
m_xEdEps->set_sensitive(!bReadOnly);
m_xEdEpsImg->set_visible(bReadOnly);
bReadOnly = officecfg::Office::Calc::Formula::Calculation::UseThreadedCalculationForFormulaGroups::isReadOnly();
m_xBtnThread->set_sensitive(!bReadOnly);
m_xBtnThreadImg->set_visible(bReadOnly);
m_xBtnThread->set_active( officecfg::Office::Calc::Formula::Calculation::UseThreadedCalculationForFormulaGroups::get() );
CheckClickHdl(*m_xBtnIterate);
@@ -281,7 +367,7 @@ IMPL_LINK(ScTpCalcOptions, CheckClickHdl, weld::Toggleable&, rBtn, void)
{
if (rBtn.get_active())
{
m_xEdPrec->set_sensitive(true);
m_xEdPrec->set_sensitive(!officecfg::Office::Calc::Calculate::Other::DecimalPlaces::isReadOnly());
m_xFtPrec->set_sensitive(true);
}
else
@@ -295,8 +381,8 @@ IMPL_LINK(ScTpCalcOptions, CheckClickHdl, weld::Toggleable&, rBtn, void)
if (rBtn.get_active())
{
pLocalOptions->SetIter( true );
m_xFtSteps->set_sensitive(true); m_xEdSteps->set_sensitive(true);
m_xFtEps->set_sensitive(true); m_xEdEps->set_sensitive(true);
m_xFtSteps->set_sensitive(true); m_xEdSteps->set_sensitive(!officecfg::Office::Calc::Calculate::IterativeReference::Steps::isReadOnly());
m_xFtEps->set_sensitive(true); m_xEdEps->set_sensitive(!officecfg::Office::Calc::Calculate::IterativeReference::MinimumChange::isReadOnly());
}
else
{
diff --git a/sc/uiconfig/scalc/ui/optcalculatepage.ui b/sc/uiconfig/scalc/ui/optcalculatepage.ui
index c88fbde..f7073fb 100644
--- a/sc/uiconfig/scalc/ui/optcalculatepage.ui
+++ b/sc/uiconfig/scalc/ui/optcalculatepage.ui
@@ -28,7 +28,7 @@
<property name="label-xalign">0</property>
<property name="shadow-type">none</property>
<child>
<!-- n-columns=2 n-rows=1 -->
<!-- n-columns=3 n-rows=1 -->
<object class="GtkGrid" id="grid4">
<property name="visible">True</property>
<property name="can-focus">False</property>
@@ -48,11 +48,24 @@
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
<property name="width">2</property>
</packing>
</child>
<child>
<object class="GtkImage" id="lockthreadingenabled">
<property name="can-focus">False</property>
<property name="no-show-all">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="icon-name">res/lock.png</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
</object>
</child>
<child type="label">
@@ -79,7 +92,7 @@
<property name="label-xalign">0</property>
<property name="shadow-type">none</property>
<child>
<!-- n-columns=1 n-rows=6 -->
<!-- n-columns=2 n-rows=6 -->
<object class="GtkGrid" id="grid3">
<property name="visible">True</property>
<property name="can-focus">False</property>
@@ -102,7 +115,7 @@
</child>
</object>
<packing>
<property name="left-attach">0</property>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
@@ -121,7 +134,7 @@
</child>
</object>
<packing>
<property name="left-attach">0</property>
<property name="left-attach">1</property>
<property name="top-attach">1</property>
</packing>
</child>
@@ -141,7 +154,7 @@
</child>
</object>
<packing>
<property name="left-attach">0</property>
<property name="left-attach">1</property>
<property name="top-attach">2</property>
</packing>
</child>
@@ -160,7 +173,7 @@
</child>
</object>
<packing>
<property name="left-attach">0</property>
<property name="left-attach">1</property>
<property name="top-attach">3</property>
</packing>
</child>
@@ -179,7 +192,7 @@
</child>
</object>
<packing>
<property name="left-attach">0</property>
<property name="left-attach">1</property>
<property name="top-attach">4</property>
</packing>
</child>
@@ -224,6 +237,84 @@
</child>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">5</property>
</packing>
</child>
<child>
<object class="GtkImage" id="lockcase">
<property name="can-focus">False</property>
<property name="no-show-all">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="icon-name">res/lock.png</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkImage" id="lockcalc">
<property name="can-focus">False</property>
<property name="no-show-all">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="icon-name">res/lock.png</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkImage" id="lockmatch">
<property name="can-focus">False</property>
<property name="no-show-all">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="icon-name">res/lock.png</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">2</property>
</packing>
</child>
<child>
<object class="GtkImage" id="locklookup">
<property name="can-focus">False</property>
<property name="no-show-all">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="icon-name">res/lock.png</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">3</property>
</packing>
</child>
<child>
<object class="GtkImage" id="lockgeneralprec">
<property name="can-focus">False</property>
<property name="no-show-all">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="icon-name">res/lock.png</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">4</property>
</packing>
</child>
<child>
<object class="GtkImage" id="lockprec">
<property name="can-focus">False</property>
<property name="no-show-all">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="icon-name">res/lock.png</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">5</property>
</packing>
@@ -262,17 +353,42 @@
<property name="orientation">vertical</property>
<property name="spacing">3</property>
<child>
<object class="GtkCheckButton" id="iterate">
<property name="label" translatable="yes" context="optcalculatepage|iterate">_Iterations</property>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="use-underline">True</property>
<property name="draw-indicator">True</property>
<child internal-child="accessible">
<object class="AtkObject" id="iterate-atkobject">
<property name="AtkObject::accessible-description" translatable="yes" context="extended_tip|iterate">Specifies whether formulas with iterative references (formulas that are continuously repeated until the problem is solved) are calculated after a specific number of repetitions.</property>
<property name="can-focus">False</property>
<child>
<object class="GtkImage" id="lockiterate">
<property name="can-focus">False</property>
<property name="no-show-all">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="icon-name">res/lock.png</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="iterate">
<property name="label" translatable="yes" context="optcalculatepage|iterate">_Iterations</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="use-underline">True</property>
<property name="draw-indicator">True</property>
<child internal-child="accessible">
<object class="AtkObject" id="iterate-atkobject">
<property name="AtkObject::accessible-description" translatable="yes" context="extended_tip|iterate">Specifies whether formulas with iterative references (formulas that are continuously repeated until the problem is solved) are calculated after a specific number of repetitions.</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
@@ -282,7 +398,7 @@
</packing>
</child>
<child>
<!-- n-columns=2 n-rows=2 -->
<!-- n-columns=3 n-rows=2 -->
<object class="GtkGrid" id="grid1">
<property name="visible">True</property>
<property name="can-focus">False</property>
@@ -299,7 +415,7 @@
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
@@ -313,7 +429,7 @@
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="left-attach">1</property>
<property name="top-attach">1</property>
</packing>
</child>
@@ -331,7 +447,7 @@
</child>
</object>
<packing>
<property name="left-attach">1</property>
<property name="left-attach">2</property>
<property name="top-attach">0</property>
</packing>
</child>
@@ -349,7 +465,33 @@
</child>
</object>
<packing>
<property name="left-attach">1</property>
<property name="left-attach">2</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkImage" id="locksteps">
<property name="can-focus">False</property>
<property name="no-show-all">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="icon-name">res/lock.png</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkImage" id="lockminchange">
<property name="can-focus">False</property>
<property name="no-show-all">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="icon-name">res/lock.png</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">1</property>
</packing>
</child>
@@ -386,7 +528,7 @@
<property name="label-xalign">0</property>
<property name="shadow-type">none</property>
<child>
<!-- n-columns=1 n-rows=3 -->
<!-- n-columns=2 n-rows=3 -->
<object class="GtkGrid" id="grid2">
<property name="visible">True</property>
<property name="can-focus">False</property>
@@ -409,7 +551,7 @@
</child>
</object>
<packing>
<property name="left-attach">0</property>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
@@ -430,7 +572,7 @@
</child>
</object>
<packing>
<property name="left-attach">0</property>
<property name="left-attach">1</property>
<property name="top-attach">1</property>
</packing>
</child>
@@ -451,10 +593,29 @@
</child>
</object>
<packing>
<property name="left-attach">0</property>
<property name="left-attach">1</property>
<property name="top-attach">2</property>
</packing>
</child>
<child>
<object class="GtkImage" id="lockdate">
<property name="can-focus">False</property>
<property name="no-show-all">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="icon-name">res/lock.png</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
</object>
</child>
<child type="label">
@@ -480,7 +641,7 @@
<property name="label-xalign">0</property>
<property name="shadow-type">none</property>
<child>
<!-- n-columns=1 n-rows=3 -->
<!-- n-columns=2 n-rows=3 -->
<object class="GtkGrid" id="grid5">
<property name="visible">True</property>
<property name="can-focus">False</property>
@@ -503,7 +664,7 @@
</child>
</object>
<packing>
<property name="left-attach">0</property>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
@@ -523,7 +684,7 @@
</child>
</object>
<packing>
<property name="left-attach">0</property>
<property name="left-attach">1</property>
<property name="top-attach">1</property>
</packing>
</child>
@@ -543,10 +704,29 @@
</child>
</object>
<packing>
<property name="left-attach">0</property>
<property name="left-attach">1</property>
<property name="top-attach">2</property>
</packing>
</child>
<child>
<object class="GtkImage" id="lockformulawild">
<property name="can-focus">False</property>
<property name="no-show-all">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="icon-name">res/lock.png</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
</object>
</child>
<child type="label">