include/sfx2/printopt.hxx | 11 ++ sfx2/source/dialog/printopt.cxx | 89 +++++++++++++++++--- sfx2/uiconfig/ui/optprintpage.ui | 167 ++++++++++++++++++++++++++++++++++++--- 3 files changed, 243 insertions(+), 24 deletions(-)
New commits: commit 60952eb3234006e9fba189e4189e15f902cafb4b Author: Balazs Varga <balazs.varga.ext...@allotropia.de> AuthorDate: Fri Oct 20 19:38:58 2023 +0200 Commit: Balazs Varga <balazs.varga.ext...@allotropia.de> CommitDate: Tue Oct 24 08:38:54 2023 +0200 tdf#157838 - UI: Part 4 - Unify lockdown behavior of Options dialog for Print Page. Change-Id: I724dcbaf8e3ed479aaf053965d2d0e64381e53fe Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158269 Tested-by: Jenkins Reviewed-by: Balazs Varga <balazs.varga.ext...@allotropia.de> diff --git a/include/sfx2/printopt.hxx b/include/sfx2/printopt.hxx index a251616a4890..e01991dad347 100644 --- a/include/sfx2/printopt.hxx +++ b/include/sfx2/printopt.hxx @@ -33,22 +33,33 @@ private: std::unique_ptr<weld::RadioButton> m_xPrinterOutputRB; std::unique_ptr<weld::RadioButton> m_xPrintFileOutputRB; std::unique_ptr<weld::CheckButton> m_xReduceTransparencyCB; + std::unique_ptr<weld::Widget> m_xReduceTransparencyImg; std::unique_ptr<weld::RadioButton> m_xReduceTransparencyAutoRB; std::unique_ptr<weld::RadioButton> m_xReduceTransparencyNoneRB; + std::unique_ptr<weld::Widget> m_xReduceTransparencyModeImg; std::unique_ptr<weld::CheckButton> m_xReduceGradientsCB; + std::unique_ptr<weld::Widget> m_xReduceGradientsImg; std::unique_ptr<weld::RadioButton> m_xReduceGradientsStripesRB; std::unique_ptr<weld::RadioButton> m_xReduceGradientsColorRB; + std::unique_ptr<weld::Widget> m_xReduceGradientsModeImg; std::unique_ptr<weld::SpinButton> m_xReduceGradientsStepCountNF; std::unique_ptr<weld::CheckButton> m_xReduceBitmapsCB; + std::unique_ptr<weld::Widget> m_xReduceBitmapsImg; std::unique_ptr<weld::RadioButton> m_xReduceBitmapsOptimalRB; std::unique_ptr<weld::RadioButton> m_xReduceBitmapsNormalRB; std::unique_ptr<weld::RadioButton> m_xReduceBitmapsResolutionRB; + std::unique_ptr<weld::Widget> m_xReduceBitmapsModeImg; std::unique_ptr<weld::ComboBox> m_xReduceBitmapsResolutionLB; std::unique_ptr<weld::CheckButton> m_xReduceBitmapsTransparencyCB; + std::unique_ptr<weld::Widget> m_xReduceBitmapsTransparencyImg; std::unique_ptr<weld::CheckButton> m_xConvertToGreyscalesCB; + std::unique_ptr<weld::Widget> m_xConvertToGreyscalesImg; std::unique_ptr<weld::CheckButton> m_xPaperSizeCB; + std::unique_ptr<weld::Widget> m_xPaperSizeImg; std::unique_ptr<weld::CheckButton> m_xPaperOrientationCB; + std::unique_ptr<weld::Widget> m_xPaperOrientationImg; std::unique_ptr<weld::CheckButton> m_xTransparencyCB; + std::unique_ptr<weld::Widget> m_xTransparencyImg; private: diff --git a/sfx2/source/dialog/printopt.cxx b/sfx2/source/dialog/printopt.cxx index 1638f4e2f08e..d0ee19c17a1a 100644 --- a/sfx2/source/dialog/printopt.cxx +++ b/sfx2/source/dialog/printopt.cxx @@ -37,22 +37,33 @@ SfxCommonPrintOptionsTabPage::SfxCommonPrintOptionsTabPage(weld::Container* pPag , m_xPrinterOutputRB(m_xBuilder->weld_radio_button("printer")) , m_xPrintFileOutputRB(m_xBuilder->weld_radio_button("file")) , m_xReduceTransparencyCB(m_xBuilder->weld_check_button("reducetrans")) + , m_xReduceTransparencyImg(m_xBuilder->weld_widget("lockreducetrans")) , m_xReduceTransparencyAutoRB(m_xBuilder->weld_radio_button("reducetransauto")) , m_xReduceTransparencyNoneRB(m_xBuilder->weld_radio_button("reducetransnone")) + , m_xReduceTransparencyModeImg(m_xBuilder->weld_widget("lockreducetransmode")) , m_xReduceGradientsCB(m_xBuilder->weld_check_button("reducegrad")) + , m_xReduceGradientsImg(m_xBuilder->weld_widget("lockreducegrad")) , m_xReduceGradientsStripesRB(m_xBuilder->weld_radio_button("reducegradstripes")) , m_xReduceGradientsColorRB(m_xBuilder->weld_radio_button("reducegradcolor")) + , m_xReduceGradientsModeImg(m_xBuilder->weld_widget("lockreducegradmode")) , m_xReduceGradientsStepCountNF(m_xBuilder->weld_spin_button("reducegradstep")) , m_xReduceBitmapsCB(m_xBuilder->weld_check_button("reducebitmap")) + , m_xReduceBitmapsImg(m_xBuilder->weld_widget("lockreducebitmap")) , m_xReduceBitmapsOptimalRB(m_xBuilder->weld_radio_button("reducebitmapoptimal")) , m_xReduceBitmapsNormalRB(m_xBuilder->weld_radio_button("reducebitmapnormal")) , m_xReduceBitmapsResolutionRB(m_xBuilder->weld_radio_button("reducebitmapresol")) + , m_xReduceBitmapsModeImg(m_xBuilder->weld_widget("lockreducebitmapmode")) , m_xReduceBitmapsResolutionLB(m_xBuilder->weld_combo_box("reducebitmapdpi")) , m_xReduceBitmapsTransparencyCB(m_xBuilder->weld_check_button("reducebitmaptrans")) + , m_xReduceBitmapsTransparencyImg(m_xBuilder->weld_widget("lockreducebitmaptrans")) , m_xConvertToGreyscalesCB(m_xBuilder->weld_check_button("converttogray")) + , m_xConvertToGreyscalesImg(m_xBuilder->weld_widget("lockconverttogray")) , m_xPaperSizeCB(m_xBuilder->weld_check_button("papersize")) + , m_xPaperSizeImg(m_xBuilder->weld_widget("lockpapersize")) , m_xPaperOrientationCB(m_xBuilder->weld_check_button("paperorient")) + , m_xPaperOrientationImg(m_xBuilder->weld_widget("lockpaperorient")) , m_xTransparencyCB(m_xBuilder->weld_check_button("trans")) + , m_xTransparencyImg(m_xBuilder->weld_widget("locktrans")) { if (bOutputForPrinter) m_xPrinterOutputRB->set_active(true); @@ -142,8 +153,16 @@ bool SfxCommonPrintOptionsTabPage::FillItemSet( SfxItemSet* /*rSet*/ ) void SfxCommonPrintOptionsTabPage::Reset( const SfxItemSet* /*rSet*/ ) { m_xPaperSizeCB->set_active(officecfg::Office::Common::Print::Warning::PaperSize::get()); + m_xPaperSizeCB->set_sensitive(!officecfg::Office::Common::Print::Warning::PaperSize::isReadOnly()); + m_xPaperSizeImg->set_visible(officecfg::Office::Common::Print::Warning::PaperSize::isReadOnly()); + m_xPaperOrientationCB->set_active(officecfg::Office::Common::Print::Warning::PaperOrientation::get()); + m_xPaperOrientationCB->set_sensitive(!officecfg::Office::Common::Print::Warning::PaperOrientation::isReadOnly()); + m_xPaperOrientationImg->set_visible(officecfg::Office::Common::Print::Warning::PaperOrientation::isReadOnly()); + m_xTransparencyCB->set_active(officecfg::Office::Common::Print::Warning::Transparency::get()); + m_xTransparencyCB->set_sensitive(!officecfg::Office::Common::Print::Warning::Transparency::isReadOnly()); + m_xTransparencyImg->set_visible(officecfg::Office::Common::Print::Warning::Transparency::isReadOnly()); m_xPaperSizeCB->save_state(); m_xPaperOrientationCB->save_state(); @@ -168,23 +187,46 @@ DeactivateRC SfxCommonPrintOptionsTabPage::DeactivatePage( SfxItemSet* pItemSet void SfxCommonPrintOptionsTabPage::ImplUpdateControls( const vcl::printer::Options* pCurrentOptions ) { + bool bEnable = true; + + bEnable = !officecfg::Office::Common::Print::Option::File::ReduceTransparency::isReadOnly(); m_xReduceTransparencyCB->set_active( pCurrentOptions->IsReduceTransparency() ); + m_xReduceTransparencyCB->set_sensitive(bEnable); + m_xReduceTransparencyImg->set_visible(!bEnable); if( pCurrentOptions->GetReducedTransparencyMode() == vcl::printer::TransparencyMode::Auto ) m_xReduceTransparencyAutoRB->set_active(true); else m_xReduceTransparencyNoneRB->set_active(true); + bEnable = !officecfg::Office::Common::Print::Option::File::ReducedTransparencyMode::isReadOnly(); + m_xReduceTransparencyAutoRB->set_sensitive(bEnable); + m_xReduceTransparencyNoneRB->set_sensitive(bEnable); + m_xReduceTransparencyModeImg->set_visible(!bEnable); + + bEnable = !officecfg::Office::Common::Print::Option::Printer::ReduceGradients::isReadOnly(); m_xReduceGradientsCB->set_active( pCurrentOptions->IsReduceGradients() ); + m_xReduceGradientsCB->set_sensitive(bEnable); + m_xReduceGradientsImg->set_visible(!bEnable); if( pCurrentOptions->GetReducedGradientMode() == vcl::printer::GradientMode::Stripes ) m_xReduceGradientsStripesRB->set_active(true); else m_xReduceGradientsColorRB->set_active(true); + bEnable = !officecfg::Office::Common::Print::Option::Printer::ReducedGradientMode::isReadOnly(); + m_xReduceGradientsStripesRB->set_sensitive(bEnable); + m_xReduceGradientsColorRB->set_sensitive(bEnable); + m_xReduceGradientsModeImg->set_visible(!bEnable); + + bEnable = !officecfg::Office::Common::Print::Option::Printer::ReducedGradientStepCount::isReadOnly(); m_xReduceGradientsStepCountNF->set_value(pCurrentOptions->GetReducedGradientStepCount()); + m_xReduceGradientsStepCountNF->set_sensitive(bEnable); + bEnable = !officecfg::Office::Common::Print::Option::Printer::ReduceBitmaps::isReadOnly(); m_xReduceBitmapsCB->set_active( pCurrentOptions->IsReduceBitmaps() ); + m_xReduceBitmapsCB->set_sensitive(bEnable); + m_xReduceBitmapsImg->set_visible(!bEnable); if( pCurrentOptions->GetReducedBitmapMode() == vcl::printer::BitmapMode::Optimal ) m_xReduceBitmapsOptimalRB->set_active(true); @@ -193,6 +235,12 @@ void SfxCommonPrintOptionsTabPage::ImplUpdateControls( const vcl::printer::Optio else m_xReduceBitmapsResolutionRB->set_active(true); + bEnable = !officecfg::Office::Common::Print::Option::Printer::ReducedBitmapMode::isReadOnly(); + m_xReduceBitmapsOptimalRB->set_sensitive(bEnable); + m_xReduceBitmapsNormalRB->set_sensitive(bEnable); + m_xReduceBitmapsResolutionRB->set_sensitive(bEnable); + m_xReduceBitmapsModeImg->set_visible(!bEnable); + const sal_uInt16 nDPI = pCurrentOptions->GetReducedBitmapResolution(); if( nDPI < aDPIArray[ 0 ] ) @@ -208,9 +256,18 @@ void SfxCommonPrintOptionsTabPage::ImplUpdateControls( const vcl::printer::Optio } } } + bEnable = !officecfg::Office::Common::Print::Option::File::ReducedBitmapResolution::isReadOnly(); + m_xReduceBitmapsResolutionLB->set_sensitive(bEnable); + bEnable = !officecfg::Office::Common::Print::Option::Printer::ReducedBitmapIncludesTransparency::isReadOnly(); m_xReduceBitmapsTransparencyCB->set_active( pCurrentOptions->IsReducedBitmapIncludesTransparency() ); + m_xReduceBitmapsTransparencyCB->set_sensitive(bEnable); + m_xReduceBitmapsTransparencyImg->set_visible(!bEnable); + + bEnable = !officecfg::Office::Common::Print::Option::Printer::ConvertToGreyscales::isReadOnly(); m_xConvertToGreyscalesCB->set_active( pCurrentOptions->IsConvertToGreyscales() ); + m_xConvertToGreyscalesCB->set_sensitive(bEnable); + m_xConvertToGreyscalesImg->set_visible(!bEnable); ClickReduceTransparencyCBHdl(*m_xReduceTransparencyCB); ClickReduceGradientsCBHdl(*m_xReduceGradientsCB); @@ -236,20 +293,25 @@ void SfxCommonPrintOptionsTabPage::ImplSaveControls( vcl::printer::Options* pCur IMPL_LINK_NOARG( SfxCommonPrintOptionsTabPage, ClickReduceTransparencyCBHdl, weld::Toggleable&, void ) { const bool bReduceTransparency = m_xReduceTransparencyCB->get_active(); + bool bReadOnly = officecfg::Office::Common::Print::Option::File::ReducedTransparencyMode::isReadOnly(); - m_xReduceTransparencyAutoRB->set_sensitive( bReduceTransparency ); - m_xReduceTransparencyNoneRB->set_sensitive( bReduceTransparency ); + m_xReduceTransparencyAutoRB->set_sensitive( bReduceTransparency && !bReadOnly ); + m_xReduceTransparencyNoneRB->set_sensitive( bReduceTransparency && !bReadOnly ); - m_xTransparencyCB->set_sensitive( !bReduceTransparency ); + bReadOnly = officecfg::Office::Common::Print::Warning::Transparency::isReadOnly(); + m_xTransparencyCB->set_sensitive( !bReduceTransparency && !bReadOnly); } IMPL_LINK_NOARG( SfxCommonPrintOptionsTabPage, ClickReduceGradientsCBHdl, weld::Toggleable&, void ) { const bool bEnable = m_xReduceGradientsCB->get_active(); + bool bReadOnly = officecfg::Office::Common::Print::Option::Printer::ReducedGradientMode::isReadOnly(); - m_xReduceGradientsStripesRB->set_sensitive( bEnable ); - m_xReduceGradientsColorRB->set_sensitive( bEnable ); - m_xReduceGradientsStepCountNF->set_sensitive( bEnable ); + m_xReduceGradientsStripesRB->set_sensitive( bEnable && !bReadOnly ); + m_xReduceGradientsColorRB->set_sensitive( bEnable && !bReadOnly ); + + bReadOnly = officecfg::Office::Common::Print::Option::Printer::ReducedGradientStepCount::isReadOnly(); + m_xReduceGradientsStepCountNF->set_sensitive( bEnable && !bReadOnly ); ToggleReduceGradientsStripesRBHdl(*m_xReduceGradientsStripesRB); } @@ -257,12 +319,15 @@ IMPL_LINK_NOARG( SfxCommonPrintOptionsTabPage, ClickReduceGradientsCBHdl, weld:: IMPL_LINK_NOARG( SfxCommonPrintOptionsTabPage, ClickReduceBitmapsCBHdl, weld::Toggleable&, void ) { const bool bEnable = m_xReduceBitmapsCB->get_active(); - - m_xReduceBitmapsOptimalRB->set_sensitive( bEnable ); - m_xReduceBitmapsNormalRB->set_sensitive( bEnable ); - m_xReduceBitmapsResolutionRB->set_sensitive( bEnable ); - m_xReduceBitmapsTransparencyCB->set_sensitive( bEnable ); - m_xReduceBitmapsResolutionLB->set_sensitive( bEnable ); + bool bReadOnly = officecfg::Office::Common::Print::Option::Printer::ReducedBitmapMode::isReadOnly(); + + m_xReduceBitmapsOptimalRB->set_sensitive( bEnable && !bReadOnly); + m_xReduceBitmapsNormalRB->set_sensitive( bEnable && !bReadOnly); + m_xReduceBitmapsResolutionRB->set_sensitive( bEnable && !bReadOnly ); + m_xReduceBitmapsTransparencyCB->set_sensitive( bEnable && + !officecfg::Office::Common::Print::Option::Printer::ReducedBitmapIncludesTransparency::isReadOnly() ); + m_xReduceBitmapsResolutionLB->set_sensitive( bEnable && + !officecfg::Office::Common::Print::Option::File::ReducedBitmapResolution::isReadOnly() ); ToggleReduceBitmapsResolutionRBHdl(*m_xReduceBitmapsResolutionRB); } diff --git a/sfx2/uiconfig/ui/optprintpage.ui b/sfx2/uiconfig/ui/optprintpage.ui index 615b818e7152..a2b1a7c345ed 100644 --- a/sfx2/uiconfig/ui/optprintpage.ui +++ b/sfx2/uiconfig/ui/optprintpage.ui @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- Generated with glade 3.40.0 --> +<!-- Generated with glade 3.38.2 --> <interface domain="sfx"> <requires lib="gtk+" version="3.20"/> <object class="GtkAdjustment" id="adjustment1"> @@ -97,7 +97,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="grid3"> <property name="visible">True</property> <property name="can-focus">False</property> @@ -119,7 +119,7 @@ </child> </object> <packing> - <property name="left-attach">0</property> + <property name="left-attach">1</property> <property name="top-attach">0</property> </packing> </child> @@ -138,7 +138,7 @@ </child> </object> <packing> - <property name="left-attach">0</property> + <property name="left-attach">1</property> <property name="top-attach">1</property> </packing> </child> @@ -156,6 +156,45 @@ </object> </child> </object> + <packing> + <property name="left-attach">1</property> + <property name="top-attach">2</property> + </packing> + </child> + <child> + <object class="GtkImage" id="lockpapersize"> + <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="lockpaperorient"> + <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="locktrans"> + <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> @@ -186,7 +225,7 @@ <property name="label-xalign">0</property> <property name="shadow-type">none</property> <child> - <!-- n-columns=1 n-rows=2 --> + <!-- n-columns=2 n-rows=2 --> <object class="GtkGrid" id="grid4"> <property name="visible">True</property> <property name="can-focus">False</property> @@ -208,7 +247,7 @@ </child> </object> <packing> - <property name="left-attach">0</property> + <property name="left-attach">1</property> <property name="top-attach">0</property> </packing> </child> @@ -290,6 +329,32 @@ </packing> </child> </object> + <packing> + <property name="left-attach">1</property> + <property name="top-attach">1</property> + </packing> + </child> + <child> + <object class="GtkImage" id="lockreducegrad"> + <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="lockreducegradmode"> + <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> @@ -325,7 +390,7 @@ <property name="label-xalign">0</property> <property name="shadow-type">none</property> <child> - <!-- n-columns=1 n-rows=2 --> + <!-- n-columns=2 n-rows=2 --> <object class="GtkGrid" id="grid1"> <property name="visible">True</property> <property name="can-focus">False</property> @@ -347,7 +412,7 @@ </child> </object> <packing> - <property name="left-attach">0</property> + <property name="left-attach">1</property> <property name="top-attach">0</property> </packing> </child> @@ -454,6 +519,32 @@ </packing> </child> </object> + <packing> + <property name="left-attach">1</property> + <property name="top-attach">1</property> + </packing> + </child> + <child> + <object class="GtkImage" id="lockreducebitmap"> + <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="lockreducebitmapmode"> + <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> @@ -484,7 +575,7 @@ <property name="label-xalign">0</property> <property name="shadow-type">none</property> <child> - <!-- n-columns=1 n-rows=2 --> + <!-- n-columns=2 n-rows=2 --> <object class="GtkGrid" id="grid5"> <property name="visible">True</property> <property name="can-focus">False</property> @@ -506,7 +597,7 @@ </child> </object> <packing> - <property name="left-attach">0</property> + <property name="left-attach">1</property> <property name="top-attach">0</property> </packing> </child> @@ -558,6 +649,32 @@ </packing> </child> </object> + <packing> + <property name="left-attach">1</property> + <property name="top-attach">1</property> + </packing> + </child> + <child> + <object class="GtkImage" id="lockreducetrans"> + <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="lockreducetransmode"> + <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> @@ -588,7 +705,7 @@ <property name="label-xalign">0</property> <property name="shadow-type">none</property> <child> - <!-- n-columns=1 n-rows=2 --> + <!-- n-columns=2 n-rows=2 --> <object class="GtkGrid" id="grid7"> <property name="visible">True</property> <property name="can-focus">False</property> @@ -610,7 +727,7 @@ </child> </object> <packing> - <property name="left-attach">0</property> + <property name="left-attach">1</property> <property name="top-attach">0</property> </packing> </child> @@ -628,6 +745,32 @@ </object> </child> </object> + <packing> + <property name="left-attach">1</property> + <property name="top-attach">1</property> + </packing> + </child> + <child> + <object class="GtkImage" id="lockconverttogray"> + <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="lockreducebitmaptrans"> + <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>