tdf#158239 - UI: Part 41 - Unify lockdown behavior of Options dialog

for Impress - Grid Page.

Change-Id: I0864a0a47a890c34154e775a1f960fdff09de81c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159868
Tested-by: Jenkins
Reviewed-by: Balazs Varga <balazs.varga.extern@allotropia.de>
This commit is contained in:
Balazs Varga 2023-11-23 12:20:37 +01:00
parent 63ecd577f5
commit fbecf8009a
4 changed files with 313 additions and 31 deletions

View file

@ -104,8 +104,16 @@ public:
virtual DeactivateRC DeactivatePage( SfxItemSet* pSet ) override;
private:
enum ModuleMode
{
WRITER_MODE = 0,
CALC_MODE = 1,
IMPRESS_MODE = 2,
DRAW_MODE = 3,
HTML_MODE = 4
};
bool bAttrModified;
bool m_bHTMLMode;
ModuleMode m_Emode;
std::unique_ptr<weld::CheckButton> m_xCbxUseGridsnap;
std::unique_ptr<weld::Widget> m_xCbxUseGridsnapImg;
@ -125,15 +133,24 @@ protected:
//these controls are used in draw and impress
std::unique_ptr<weld::Widget> m_xSnapFrames;
std::unique_ptr<weld::CheckButton> m_xCbxSnapHelplines;
std::unique_ptr<weld::Widget> m_xCbxSnapHelplinesImg;
std::unique_ptr<weld::CheckButton> m_xCbxSnapBorder;
std::unique_ptr<weld::Widget> m_xCbxSnapBorderImg;
std::unique_ptr<weld::CheckButton> m_xCbxSnapFrame;
std::unique_ptr<weld::Widget> m_xCbxSnapFrameImg;
std::unique_ptr<weld::CheckButton> m_xCbxSnapPoints;
std::unique_ptr<weld::Widget> m_xCbxSnapPointsImg;
std::unique_ptr<weld::MetricSpinButton> m_xMtrFldSnapArea;
std::unique_ptr<weld::Widget> m_xMtrFldSnapAreaImg;
std::unique_ptr<weld::CheckButton> m_xCbxOrtho;
std::unique_ptr<weld::Widget> m_xCbxOrthoImg;
std::unique_ptr<weld::CheckButton> m_xCbxBigOrtho;
std::unique_ptr<weld::Widget> m_xCbxBigOrthoImg;
std::unique_ptr<weld::CheckButton> m_xCbxRotate;
std::unique_ptr<weld::Widget> m_xCbxRotateImg;
std::unique_ptr<weld::MetricSpinButton> m_xMtrFldAngle;
std::unique_ptr<weld::MetricSpinButton> m_xMtrFldBezAngle;
std::unique_ptr<weld::Widget> m_xMtrFldBezAngleImg;
DECL_LINK(ClickRotateHdl_Impl, weld::Toggleable&, void);
private:

View file

@ -82,16 +82,54 @@ void SdTpOptionsSnap::Reset( const SfxItemSet* rAttrs )
SdOptionsSnapItem aOptsItem( rAttrs->Get( ATTR_OPTIONS_SNAP ) );
bool bReadOnly = officecfg::Office::Impress::Snap::Object::SnapLine::isReadOnly();
m_xCbxSnapHelplines->set_active( aOptsItem.GetOptionsSnap().IsSnapHelplines() );
m_xCbxSnapHelplines->set_sensitive(!bReadOnly);
m_xCbxSnapHelplinesImg->set_visible(bReadOnly);
bReadOnly = officecfg::Office::Impress::Snap::Object::PageMargin::isReadOnly();
m_xCbxSnapBorder->set_active( aOptsItem.GetOptionsSnap().IsSnapBorder() );
m_xCbxSnapBorder->set_sensitive(!bReadOnly);
m_xCbxSnapBorderImg->set_visible(bReadOnly);
bReadOnly = officecfg::Office::Impress::Snap::Object::ObjectFrame::isReadOnly();
m_xCbxSnapFrame->set_active( aOptsItem.GetOptionsSnap().IsSnapFrame() );
m_xCbxSnapFrame->set_sensitive(!bReadOnly);
m_xCbxSnapFrameImg->set_visible(bReadOnly);
bReadOnly = officecfg::Office::Impress::Snap::Object::ObjectPoint::isReadOnly();
m_xCbxSnapPoints->set_active( aOptsItem.GetOptionsSnap().IsSnapPoints() );
m_xCbxSnapPoints->set_sensitive(!bReadOnly);
m_xCbxSnapPointsImg->set_visible(bReadOnly);
bReadOnly = officecfg::Office::Impress::Snap::Position::CreatingMoving::isReadOnly();
m_xCbxOrtho->set_active( aOptsItem.GetOptionsSnap().IsOrtho() );
m_xCbxOrtho->set_sensitive(!bReadOnly);
m_xCbxOrthoImg->set_visible(bReadOnly);
bReadOnly = officecfg::Office::Impress::Snap::Position::ExtendEdges::isReadOnly();
m_xCbxBigOrtho->set_active( aOptsItem.GetOptionsSnap().IsBigOrtho() );
m_xCbxBigOrtho->set_sensitive(!bReadOnly);
m_xCbxBigOrthoImg->set_visible(bReadOnly);
bReadOnly = officecfg::Office::Impress::Snap::Position::Rotating::isReadOnly();
m_xCbxRotate->set_active( aOptsItem.GetOptionsSnap().IsRotate() );
m_xCbxRotate->set_sensitive(!bReadOnly);
m_xCbxRotateImg->set_visible(bReadOnly);
bReadOnly = officecfg::Office::Impress::Snap::Object::Range::isReadOnly();
m_xMtrFldSnapArea->set_value(aOptsItem.GetOptionsSnap().GetSnapArea(), FieldUnit::PIXEL);
m_xMtrFldSnapArea->set_sensitive(!bReadOnly);
m_xMtrFldSnapAreaImg->set_visible(bReadOnly);
bReadOnly = officecfg::Office::Impress::Snap::Position::RotatingValue::isReadOnly();
m_xMtrFldAngle->set_value(aOptsItem.GetOptionsSnap().GetAngle().get(), FieldUnit::DEGREE);
m_xMtrFldAngle->set_sensitive(!bReadOnly);
bReadOnly = officecfg::Office::Impress::Snap::Position::PointReduction::isReadOnly();
m_xMtrFldBezAngle->set_value(aOptsItem.GetOptionsSnap().GetEliminatePolyPointLimitAngle().get(), FieldUnit::DEGREE);
m_xMtrFldBezAngle->set_sensitive(!bReadOnly);
m_xMtrFldBezAngleImg->set_visible(bReadOnly);
ClickRotateHdl_Impl(*m_xCbxRotate);
}

View file

@ -19,8 +19,12 @@
#include <svl/intitem.hxx>
#include <svtools/unitconv.hxx>
#include <unotools/moduleoptions.hxx>
#include <unotools/localedatawrapper.hxx>
#include <unotools/syslocale.hxx>
#include <officecfg/Office/Writer.hxx>
#include <officecfg/Office/WriterWeb.hxx>
#include <officecfg/Office/Impress.hxx>
#include <svx/svxids.hrc>
#include <svx/optgrid.hxx>
@ -39,6 +43,14 @@ static void lcl_SetMinMax(weld::MetricSpinButton& rField, sal_Int64 nMin, sal_In
rField.set_range(rField.normalize(nMin), rField.normalize(nMax), FieldUnit::TWIP);
}
static bool lcl_IsMetricSystem()
{
SvtSysLocale aSysLocale;
MeasurementSystem eSys = aSysLocale.GetLocaleData().getMeasurementSystemEnum();
return (eSys == MeasurementSystem::Metric);
}
SvxOptionsGrid::SvxOptionsGrid() :
nFldDrawX ( 100 ),
nFldDivisionX ( 0 ),
@ -92,7 +104,7 @@ bool SvxGridItem::GetPresentation
SvxGridTabPage::SvxGridTabPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rCoreSet)
: SfxTabPage(pPage, pController, "svx/ui/optgridpage.ui", "OptGridPage", &rCoreSet)
, bAttrModified(false)
, m_bHTMLMode(false)
, m_Emode(WRITER_MODE)
, m_xCbxUseGridsnap(m_xBuilder->weld_check_button("usegridsnap"))
, m_xCbxUseGridsnapImg(m_xBuilder->weld_widget("lockusegridsnap"))
, m_xCbxGridVisible(m_xBuilder->weld_check_button("gridvisible"))
@ -109,15 +121,24 @@ SvxGridTabPage::SvxGridTabPage(weld::Container* pPage, weld::DialogController* p
, m_xCbxSynchronizeImg(m_xBuilder->weld_widget("locksynchronize"))
, m_xSnapFrames(m_xBuilder->weld_widget("snapframes"))
, m_xCbxSnapHelplines(m_xBuilder->weld_check_button("snaphelplines"))
, m_xCbxSnapHelplinesImg(m_xBuilder->weld_widget("locksnaphelplines"))
, m_xCbxSnapBorder(m_xBuilder->weld_check_button("snapborder"))
, m_xCbxSnapBorderImg(m_xBuilder->weld_widget("locksnapborder"))
, m_xCbxSnapFrame(m_xBuilder->weld_check_button("snapframe"))
, m_xCbxSnapFrameImg(m_xBuilder->weld_widget("locksnapframe"))
, m_xCbxSnapPoints(m_xBuilder->weld_check_button("snappoints"))
, m_xCbxSnapPointsImg(m_xBuilder->weld_widget("locksnappoints"))
, m_xMtrFldSnapArea(m_xBuilder->weld_metric_spin_button("mtrfldsnaparea", FieldUnit::PIXEL))
, m_xMtrFldSnapAreaImg(m_xBuilder->weld_widget("lockmtrfldsnaparea"))
, m_xCbxOrtho(m_xBuilder->weld_check_button("ortho"))
, m_xCbxOrthoImg(m_xBuilder->weld_widget("lockortho"))
, m_xCbxBigOrtho(m_xBuilder->weld_check_button("bigortho"))
, m_xCbxBigOrthoImg(m_xBuilder->weld_widget("lockbigortho"))
, m_xCbxRotate(m_xBuilder->weld_check_button("rotate"))
, m_xCbxRotateImg(m_xBuilder->weld_widget("lockrotate"))
, m_xMtrFldAngle(m_xBuilder->weld_metric_spin_button("mtrfldangle", FieldUnit::DEGREE))
, m_xMtrFldBezAngle(m_xBuilder->weld_metric_spin_button("mtrfldbezangle", FieldUnit::DEGREE))
, m_xMtrFldBezAngleImg(m_xBuilder->weld_widget("lockmtrfldbezangle"))
{
// This page requires exchange Support
SetExchangeSupport();
@ -136,7 +157,20 @@ SvxGridTabPage::SvxGridTabPage(weld::Container* pPage, weld::DialogController* p
if (const SfxUInt16Item* pItem = rCoreSet.GetItemIfSet(SID_HTML_MODE, false))
{
m_bHTMLMode = 0 != (pItem->GetValue() & HTMLMODE_ON);
if (0 != (pItem->GetValue() & HTMLMODE_ON))
m_Emode = HTML_MODE;
}
else
{
SvtModuleOptions aMOpt;
if (aMOpt.IsImpress())
m_Emode = IMPRESS_MODE;
else if (aMOpt.IsDraw())
m_Emode = DRAW_MODE;
else if (aMOpt.IsCalc())
m_Emode = CALC_MODE;
else
m_Emode = WRITER_MODE;
}
m_xCbxRotate->connect_toggled(LINK(this, SvxGridTabPage, ClickRotateHdl_Impl));
@ -219,20 +253,39 @@ void SvxGridTabPage::Reset( const SfxItemSet* rSet )
if( (pGridAttr = rSet->GetItemIfSet( SID_ATTR_GRID_OPTIONS , false )) )
{
bool bReadOnly = !m_bHTMLMode ? officecfg::Office::Writer::Grid::Option::SnapToGrid::isReadOnly() :
officecfg::Office::WriterWeb::Grid::Option::SnapToGrid::isReadOnly();
bool bReadOnly = false;
switch (m_Emode)
{
case WRITER_MODE: bReadOnly = officecfg::Office::Writer::Grid::Option::SnapToGrid::isReadOnly(); break;
case HTML_MODE: bReadOnly = officecfg::Office::WriterWeb::Grid::Option::SnapToGrid::isReadOnly(); break;
case IMPRESS_MODE: bReadOnly = officecfg::Office::Impress::Grid::Option::SnapToGrid::isReadOnly(); break;
default: //TODO Calc/Draw
break;
}
m_xCbxUseGridsnap->set_active(pGridAttr->bUseGridsnap);
m_xCbxUseGridsnap->set_sensitive(!bReadOnly);
m_xCbxUseGridsnapImg->set_visible(bReadOnly);
bReadOnly = !m_bHTMLMode ? officecfg::Office::Writer::Grid::Option::Synchronize::isReadOnly() :
officecfg::Office::WriterWeb::Grid::Option::Synchronize::isReadOnly();
switch (m_Emode)
{
case WRITER_MODE: bReadOnly = officecfg::Office::Writer::Grid::Option::Synchronize::isReadOnly(); break;
case HTML_MODE: bReadOnly = officecfg::Office::WriterWeb::Grid::Option::Synchronize::isReadOnly(); break;
case IMPRESS_MODE: bReadOnly = officecfg::Office::Impress::Grid::Option::Synchronize::isReadOnly(); break;
default: //TODO Calc/Draw
break;
}
m_xCbxSynchronize->set_active(pGridAttr->bSynchronize);
m_xCbxSynchronize->set_sensitive(!bReadOnly);
m_xCbxSynchronizeImg->set_visible(bReadOnly);
bReadOnly = !m_bHTMLMode ? officecfg::Office::Writer::Grid::Option::VisibleGrid::isReadOnly() :
officecfg::Office::WriterWeb::Grid::Option::VisibleGrid::isReadOnly();
switch (m_Emode)
{
case WRITER_MODE: bReadOnly = officecfg::Office::Writer::Grid::Option::VisibleGrid::isReadOnly(); break;
case HTML_MODE: bReadOnly = officecfg::Office::WriterWeb::Grid::Option::VisibleGrid::isReadOnly(); break;
case IMPRESS_MODE: bReadOnly = officecfg::Office::Impress::Grid::Option::VisibleGrid::isReadOnly(); break;
default: //TODO Calc/Draw
break;
}
m_xCbxGridVisible->set_active(pGridAttr->bGridVisible);
m_xCbxGridVisible->set_sensitive(!bReadOnly);
m_xCbxGridVisibleImg->set_visible(bReadOnly);
@ -241,26 +294,64 @@ void SvxGridTabPage::Reset( const SfxItemSet* rSet )
SetMetricValue( *m_xMtrFldDrawX , pGridAttr->nFldDrawX, eUnit );
SetMetricValue( *m_xMtrFldDrawY , pGridAttr->nFldDrawY, eUnit );
bReadOnly = !m_bHTMLMode ? officecfg::Office::Writer::Grid::Resolution::XAxis::isReadOnly() :
officecfg::Office::WriterWeb::Grid::Resolution::XAxis::isReadOnly();
switch (m_Emode)
{
case WRITER_MODE: bReadOnly = officecfg::Office::Writer::Grid::Resolution::XAxis::isReadOnly(); break;
case HTML_MODE: bReadOnly = officecfg::Office::WriterWeb::Grid::Resolution::XAxis::isReadOnly(); break;
case IMPRESS_MODE:
{
if (lcl_IsMetricSystem())
bReadOnly = officecfg::Office::Impress::Grid::Resolution::XAxis::Metric::isReadOnly();
else
bReadOnly = officecfg::Office::Impress::Grid::Resolution::XAxis::NonMetric::isReadOnly();
}
break;
default: //TODO Calc/Draw
break;
}
m_xMtrFldDrawX->set_sensitive(!bReadOnly);
m_xMtrFldDrawXImg->set_visible(bReadOnly);
bReadOnly = !m_bHTMLMode ? officecfg::Office::Writer::Grid::Resolution::YAxis::isReadOnly() :
officecfg::Office::WriterWeb::Grid::Resolution::YAxis::isReadOnly();
switch (m_Emode)
{
case WRITER_MODE: bReadOnly = officecfg::Office::Writer::Grid::Resolution::YAxis::isReadOnly(); break;
case HTML_MODE: bReadOnly = officecfg::Office::WriterWeb::Grid::Resolution::YAxis::isReadOnly(); break;
case IMPRESS_MODE:
{
if (lcl_IsMetricSystem())
bReadOnly = officecfg::Office::Impress::Grid::Resolution::YAxis::Metric::isReadOnly();
else
bReadOnly = officecfg::Office::Impress::Grid::Resolution::YAxis::NonMetric::isReadOnly();
}
break;
default: //TODO Calc/Draw
break;
}
m_xMtrFldDrawY->set_sensitive(!bReadOnly);
m_xMtrFldDrawYImg->set_visible(bReadOnly);
m_xNumFldDivisionX->set_value(pGridAttr->nFldDivisionX + 1);
m_xNumFldDivisionY->set_value(pGridAttr->nFldDivisionY + 1);
bReadOnly = !m_bHTMLMode ? officecfg::Office::Writer::Grid::Subdivision::XAxis::isReadOnly() :
officecfg::Office::WriterWeb::Grid::Subdivision::XAxis::isReadOnly();
switch (m_Emode)
{
case WRITER_MODE: bReadOnly = officecfg::Office::Writer::Grid::Subdivision::XAxis::isReadOnly(); break;
case HTML_MODE: bReadOnly = officecfg::Office::WriterWeb::Grid::Subdivision::XAxis::isReadOnly(); break;
case IMPRESS_MODE: bReadOnly = officecfg::Office::Impress::Grid::Subdivision::XAxis::isReadOnly(); break;
default: //TODO Calc/Draw
break;
}
m_xNumFldDivisionX->set_sensitive(!bReadOnly);
m_xNumFldDivisionXImg->set_visible(bReadOnly);
bReadOnly = !m_bHTMLMode ? officecfg::Office::Writer::Grid::Subdivision::YAxis::isReadOnly() :
officecfg::Office::WriterWeb::Grid::Subdivision::YAxis::isReadOnly();
switch (m_Emode)
{
case WRITER_MODE: bReadOnly = officecfg::Office::Writer::Grid::Subdivision::YAxis::isReadOnly(); break;
case HTML_MODE: bReadOnly = officecfg::Office::WriterWeb::Grid::Subdivision::YAxis::isReadOnly(); break;
case IMPRESS_MODE: bReadOnly = officecfg::Office::Impress::Grid::Subdivision::YAxis::isReadOnly(); break;
default: //TODO Calc/Draw
break;
}
m_xNumFldDivisionY->set_sensitive(!bReadOnly);
m_xNumFldDivisionYImg->set_visible(bReadOnly);
}
@ -330,7 +421,7 @@ IMPL_LINK(SvxGridTabPage, ChangeDrawHdl_Impl, weld::MetricSpinButton&, rField, v
IMPL_LINK_NOARG(SvxGridTabPage, ClickRotateHdl_Impl, weld::Toggleable&, void)
{
if (m_xCbxRotate->get_active())
m_xMtrFldAngle->set_sensitive(true);
m_xMtrFldAngle->set_sensitive(!officecfg::Office::Impress::Snap::Position::RotatingValue::isReadOnly());
else
m_xMtrFldAngle->set_sensitive(false);
}

View file

@ -509,7 +509,7 @@
<property name="label-xalign">0</property>
<property name="shadow-type">none</property>
<child>
<!-- n-columns=1 n-rows=5 -->
<!-- n-columns=2 n-rows=5 -->
<object class="GtkGrid" id="grid2">
<property name="visible">True</property>
<property name="can-focus">False</property>
@ -531,7 +531,7 @@
</child>
</object>
<packing>
<property name="left-attach">0</property>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
@ -550,7 +550,7 @@
</child>
</object>
<packing>
<property name="left-attach">0</property>
<property name="left-attach">1</property>
<property name="top-attach">1</property>
</packing>
</child>
@ -569,7 +569,7 @@
</child>
</object>
<packing>
<property name="left-attach">0</property>
<property name="left-attach">1</property>
<property name="top-attach">2</property>
</packing>
</child>
@ -588,7 +588,7 @@
</child>
</object>
<packing>
<property name="left-attach">0</property>
<property name="left-attach">1</property>
<property name="top-attach">3</property>
</packing>
</child>
@ -631,6 +631,71 @@
</packing>
</child>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">4</property>
</packing>
</child>
<child>
<object class="GtkImage" id="locksnaphelplines">
<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="locksnapborder">
<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="locksnapframe">
<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="locksnappoints">
<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="lockmtrfldsnaparea">
<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>
@ -663,7 +728,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="grid8">
<property name="visible">True</property>
<property name="can-focus">False</property>
@ -686,7 +751,7 @@
</child>
</object>
<packing>
<property name="left-attach">0</property>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
@ -705,12 +770,12 @@
</child>
</object>
<packing>
<property name="left-attach">0</property>
<property name="left-attach">1</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<!-- n-columns=2 n-rows=2 -->
<!-- n-columns=4 n-rows=2 -->
<object class="GtkGrid" id="grid9">
<property name="visible">True</property>
<property name="can-focus">False</property>
@ -733,7 +798,7 @@
</child>
</object>
<packing>
<property name="left-attach">1</property>
<property name="left-attach">3</property>
<property name="top-attach">0</property>
</packing>
</child>
@ -755,7 +820,7 @@
</child>
</object>
<packing>
<property name="left-attach">0</property>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
@ -774,7 +839,7 @@
</child>
</object>
<packing>
<property name="left-attach">1</property>
<property name="left-attach">3</property>
<property name="top-attach">1</property>
</packing>
</child>
@ -787,17 +852,88 @@
<property name="mnemonic-widget">mtrfldbezangle</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkImage" id="lockrotate">
<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="lockmtrfldbezangle">
<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="lockmtrfldangle">
<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">2</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">2</property>
</packing>
</child>
<child>
<object class="GtkImage" id="lockortho">
<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>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkImage" id="lockbigortho">
<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>
</object>
</child>
<child type="label">