compilerplugins/clang/unusedenumconstants.writeonly.results | 64 include/vcl/weld.hxx | 2 officecfg/registry/data/org/openoffice/Office/PresentationMinimizer.xcu | 110 - officecfg/registry/schema/org/openoffice/Office/PresentationMinimizer.xcs | 146 - sd/UIConfig_simpress.mk | 5 sd/uiconfig/simpress/ui/pmimagespage.ui | 201 + sd/uiconfig/simpress/ui/pmintropage.ui | 134 + sd/uiconfig/simpress/ui/pmobjectspage.ui | 120 + sd/uiconfig/simpress/ui/pmslidespage.ui | 129 + sd/uiconfig/simpress/ui/pmsummarypage.ui | 267 ++ sdext/source/minimizer/configurationaccess.cxx | 2 sdext/source/minimizer/configurationaccess.hxx | 6 sdext/source/minimizer/optimizerdialog.cxx | 1042 ++++------ sdext/source/minimizer/optimizerdialog.hxx | 258 +- sdext/source/minimizer/optimizerdialogcontrols.cxx | 604 ----- sdext/source/minimizer/pppoptimizerdialog.cxx | 1 sdext/source/minimizer/pppoptimizertoken.cxx | 56 sdext/source/minimizer/pppoptimizertoken.hxx | 54 vcl/inc/wizdlg.hxx | 1 vcl/source/app/salvtables.cxx | 5 vcl/source/control/roadmapwizard.cxx | 5 vcl/unx/gtk3/gtkinst.cxx | 5 22 files changed, 1524 insertions(+), 1693 deletions(-)
New commits: commit 353ede41b97729a98ac090f89889a055051db98c Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Tue Dec 6 15:30:10 2022 +0000 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Tue Dec 6 19:29:51 2022 +0000 add Assistant::set_page_side_image Change-Id: I70685a74ebed465771473ce885f4f29af209cda6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/143737 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caol...@redhat.com> diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx index 4b376d3ac44f..4b4ea74f13b3 100644 --- a/include/vcl/weld.hxx +++ b/include/vcl/weld.hxx @@ -650,6 +650,8 @@ public: virtual void set_page_side_help_id(const OString& rHelpId) = 0; + virtual void set_page_side_image(const OUString& rImage) = 0; + void connect_jump_page(const Link<const OString&, bool>& rLink) { m_aJumpPageHdl = rLink; } }; diff --git a/sdext/source/minimizer/optimizerdialog.cxx b/sdext/source/minimizer/optimizerdialog.cxx index 15ce1c3d1187..4b7e6f039988 100644 --- a/sdext/source/minimizer/optimizerdialog.cxx +++ b/sdext/source/minimizer/optimizerdialog.cxx @@ -242,9 +242,7 @@ void OptimizerDialog::InitRoadmap() ITEM_ID_SUMMARY} ); -#if 0 - xPropertySet->setPropertyValue( "ImageURL", Any( OUString("private:graphicrepository/" BMP_PRESENTATION_MINIMIZER) ) ); -#endif + m_xAssistant->set_page_side_image(BMP_PRESENTATION_MINIMIZER); } void OptimizerDialog::UpdateConfiguration() diff --git a/vcl/inc/wizdlg.hxx b/vcl/inc/wizdlg.hxx index da3ff4d1af3a..31bd376168b6 100644 --- a/vcl/inc/wizdlg.hxx +++ b/vcl/inc/wizdlg.hxx @@ -134,6 +134,7 @@ namespace vcl const Size& GetPageSizePixel() const { return maPageSize; } void SetRoadmapHelpId( const OString& _rId ); + void SetRoadmapBitmap( const BitmapEx& maBitmap ); void InsertRoadmapItem(int nIndex, const OUString& rLabel, int nId, bool bEnabled); void DeleteRoadmapItems(); diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index 7af5cccb4e6b..39ee33de947f 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -2157,6 +2157,11 @@ public: m_xWizard->SetRoadmapHelpId(rHelpId); } + virtual void set_page_side_image(const OUString& rImage) override + { + m_xWizard->SetRoadmapBitmap(createImage(rImage).GetBitmapEx()); + } + weld::Button* weld_widget_for_response(int nResponse) override; virtual ~SalInstanceAssistant() override diff --git a/vcl/source/control/roadmapwizard.cxx b/vcl/source/control/roadmapwizard.cxx index b1738d5bef83..fe4c53b92e02 100644 --- a/vcl/source/control/roadmapwizard.cxx +++ b/vcl/source/control/roadmapwizard.cxx @@ -228,6 +228,11 @@ namespace vcl m_xRoadmapImpl->pRoadmap->SetHelpId( _rId ); } + void RoadmapWizard::SetRoadmapBitmap(const BitmapEx& rBmp) + { + m_xRoadmapImpl->pRoadmap->SetRoadmapBitmap(rBmp); + } + void RoadmapWizardMachine::SetRoadmapHelpId(const OString& rId) { m_xAssistant->set_page_side_help_id(rId); diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx index dce54e17d693..e523e871290d 100644 --- a/vcl/unx/gtk3/gtkinst.cxx +++ b/vcl/unx/gtk3/gtkinst.cxx @@ -7735,6 +7735,11 @@ public: return pButton; } + virtual void set_page_side_image(const OUString& /*rImage*/) override + { + // Since GTK+ 3.2, sidebar images are not shown anymore + } + virtual ~GtkInstanceAssistant() override { if (m_nButtonPressSignalId) commit a70ad1568ea0fb5b4d7f888fb56fcee130afc433 Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Mon Dec 5 11:44:48 2022 +0000 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Tue Dec 6 19:29:38 2022 +0000 Resolves: tdf#121297 weld Presentation Minimizer Change-Id: Ifdf1746bc9f6567a1aded233a4350f6828604c9e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/143678 Tested-by: Caolán McNamara <caol...@redhat.com> Reviewed-by: Caolán McNamara <caol...@redhat.com> diff --git a/compilerplugins/clang/unusedenumconstants.writeonly.results b/compilerplugins/clang/unusedenumconstants.writeonly.results index e22323c9d683..bf474efc7ad8 100644 --- a/compilerplugins/clang/unusedenumconstants.writeonly.results +++ b/compilerplugins/clang/unusedenumconstants.writeonly.results @@ -3936,94 +3936,30 @@ sdext/source/minimizer/pppoptimizertoken.hxx:79 enum PPPOptimizerTokenEnum TK_Pages sdext/source/minimizer/pppoptimizertoken.hxx:81 enum PPPOptimizerTokenEnum STR_SUN_OPTIMIZATION_WIZARD2 -sdext/source/minimizer/pppoptimizertoken.hxx:82 - enum PPPOptimizerTokenEnum STR_STEPS -sdext/source/minimizer/pppoptimizertoken.hxx:83 - enum PPPOptimizerTokenEnum STR_BACK -sdext/source/minimizer/pppoptimizertoken.hxx:84 - enum PPPOptimizerTokenEnum STR_NEXT -sdext/source/minimizer/pppoptimizertoken.hxx:85 - enum PPPOptimizerTokenEnum STR_FINISH -sdext/source/minimizer/pppoptimizertoken.hxx:86 - enum PPPOptimizerTokenEnum STR_CANCEL sdext/source/minimizer/pppoptimizertoken.hxx:87 enum PPPOptimizerTokenEnum STR_INTRODUCTION -sdext/source/minimizer/pppoptimizertoken.hxx:88 - enum PPPOptimizerTokenEnum STR_INTRODUCTION_T -sdext/source/minimizer/pppoptimizertoken.hxx:89 - enum PPPOptimizerTokenEnum STR_CHOSE_SETTINGS -sdext/source/minimizer/pppoptimizertoken.hxx:90 - enum PPPOptimizerTokenEnum STR_REMOVE -sdext/source/minimizer/pppoptimizertoken.hxx:91 - enum PPPOptimizerTokenEnum STR_GRAPHIC_OPTIMIZATION sdext/source/minimizer/pppoptimizertoken.hxx:92 enum PPPOptimizerTokenEnum STR_IMAGE_OPTIMIZATION -sdext/source/minimizer/pppoptimizertoken.hxx:93 - enum PPPOptimizerTokenEnum STR_LOSSLESS_COMPRESSION -sdext/source/minimizer/pppoptimizertoken.hxx:94 - enum PPPOptimizerTokenEnum STR_JPEG_COMPRESSION -sdext/source/minimizer/pppoptimizertoken.hxx:95 - enum PPPOptimizerTokenEnum STR_QUALITY -sdext/source/minimizer/pppoptimizertoken.hxx:96 - enum PPPOptimizerTokenEnum STR_REMOVE_CROP_AREA -sdext/source/minimizer/pppoptimizertoken.hxx:97 - enum PPPOptimizerTokenEnum STR_IMAGE_RESOLUTION -sdext/source/minimizer/pppoptimizertoken.hxx:98 - enum PPPOptimizerTokenEnum STR_IMAGE_RESOLUTION_0 -sdext/source/minimizer/pppoptimizertoken.hxx:99 - enum PPPOptimizerTokenEnum STR_IMAGE_RESOLUTION_1 -sdext/source/minimizer/pppoptimizertoken.hxx:100 - enum PPPOptimizerTokenEnum STR_IMAGE_RESOLUTION_2 -sdext/source/minimizer/pppoptimizertoken.hxx:102 - enum PPPOptimizerTokenEnum STR_EMBED_LINKED_GRAPHICS sdext/source/minimizer/pppoptimizertoken.hxx:103 enum PPPOptimizerTokenEnum STR_OLE_OBJECTS -sdext/source/minimizer/pppoptimizertoken.hxx:104 - enum PPPOptimizerTokenEnum STR_OLE_OPTIMIZATION sdext/source/minimizer/pppoptimizertoken.hxx:105 enum PPPOptimizerTokenEnum STR_OLE_REPLACE -sdext/source/minimizer/pppoptimizertoken.hxx:106 - enum PPPOptimizerTokenEnum STR_ALL_OLE_OBJECTS -sdext/source/minimizer/pppoptimizertoken.hxx:107 - enum PPPOptimizerTokenEnum STR_ALIEN_OLE_OBJECTS_ONLY sdext/source/minimizer/pppoptimizertoken.hxx:108 enum PPPOptimizerTokenEnum STR_OLE_OBJECTS_DESC sdext/source/minimizer/pppoptimizertoken.hxx:109 enum PPPOptimizerTokenEnum STR_NO_OLE_OBJECTS_DESC sdext/source/minimizer/pppoptimizertoken.hxx:110 enum PPPOptimizerTokenEnum STR_SLIDES -sdext/source/minimizer/pppoptimizertoken.hxx:111 - enum PPPOptimizerTokenEnum STR_CHOOSE_SLIDES -sdext/source/minimizer/pppoptimizertoken.hxx:112 - enum PPPOptimizerTokenEnum STR_DELETE_MASTER_PAGES -sdext/source/minimizer/pppoptimizertoken.hxx:113 - enum PPPOptimizerTokenEnum STR_DELETE_NOTES_PAGES -sdext/source/minimizer/pppoptimizertoken.hxx:114 - enum PPPOptimizerTokenEnum STR_DELETE_HIDDEN_SLIDES -sdext/source/minimizer/pppoptimizertoken.hxx:115 - enum PPPOptimizerTokenEnum STR_CUSTOM_SHOW sdext/source/minimizer/pppoptimizertoken.hxx:116 enum PPPOptimizerTokenEnum STR_SUMMARY -sdext/source/minimizer/pppoptimizertoken.hxx:117 - enum PPPOptimizerTokenEnum STR_SUMMARY_TITLE -sdext/source/minimizer/pppoptimizertoken.hxx:118 - enum PPPOptimizerTokenEnum STR_APPLY_TO_CURRENT sdext/source/minimizer/pppoptimizertoken.hxx:119 enum PPPOptimizerTokenEnum STR_AUTOMATICALLY_OPEN -sdext/source/minimizer/pppoptimizertoken.hxx:120 - enum PPPOptimizerTokenEnum STR_SAVE_SETTINGS -sdext/source/minimizer/pppoptimizertoken.hxx:121 - enum PPPOptimizerTokenEnum STR_SAVE_AS sdext/source/minimizer/pppoptimizertoken.hxx:122 enum PPPOptimizerTokenEnum STR_DELETE_SLIDES sdext/source/minimizer/pppoptimizertoken.hxx:123 enum PPPOptimizerTokenEnum STR_OPTIMIZE_IMAGES sdext/source/minimizer/pppoptimizertoken.hxx:124 enum PPPOptimizerTokenEnum STR_CREATE_REPLACEMENT -sdext/source/minimizer/pppoptimizertoken.hxx:125 - enum PPPOptimizerTokenEnum STR_CURRENT_FILESIZE -sdext/source/minimizer/pppoptimizertoken.hxx:126 - enum PPPOptimizerTokenEnum STR_ESTIMATED_FILESIZE sdext/source/minimizer/pppoptimizertoken.hxx:127 enum PPPOptimizerTokenEnum STR_MY_SETTINGS sdext/source/minimizer/pppoptimizertoken.hxx:128 diff --git a/officecfg/registry/data/org/openoffice/Office/PresentationMinimizer.xcu b/officecfg/registry/data/org/openoffice/Office/PresentationMinimizer.xcu index a50b315c28c4..f1ac8d8f1891 100644 --- a/officecfg/registry/data/org/openoffice/Office/PresentationMinimizer.xcu +++ b/officecfg/registry/data/org/openoffice/Office/PresentationMinimizer.xcu @@ -22,92 +22,15 @@ <prop oor:name="STR_SUN_OPTIMIZATION_WIZARD2"> <value xml:lang="en-US">Presentation Minimizer</value> </prop> - <prop oor:name="STR_STEPS"> - <value xml:lang="en-US">Steps</value> - </prop> - <prop oor:name="STR_BACK"> - <value xml:lang="en-US">< ~Back</value> - </prop> - <prop oor:name="STR_NEXT"> - <value xml:lang="en-US">~Next ></value> - </prop> - <prop oor:name="STR_FINISH"> - <value xml:lang="en-US">~Finish</value> - </prop> - <prop oor:name="STR_CANCEL"> - <value xml:lang="en-US">Cancel</value> - </prop> <prop oor:name="STR_INTRODUCTION"> <value xml:lang="en-US">Introduction</value> </prop> - <prop oor:name="STR_INTRODUCTION_T"> - <value xml:lang="en-US">The Presentation Minimizer is used to reduce the file size of the current presentation. Images will be compressed and data, that is no longer needed, will be removed. - - At the last step of the wizard you can choose to apply the changes to the current presentation or to create an optimized new version of the presentation.</value> - </prop> - <prop oor:name="STR_CHOSE_SETTINGS"> - <value xml:lang="en-US">~Choose settings for Presentation Minimizer</value> - </prop> - <prop oor:name="STR_REMOVE"> - <value xml:lang="en-US">~Delete</value> - </prop> - <prop oor:name="STR_GRAPHIC_OPTIMIZATION"> - <value xml:lang="en-US">Choose settings for optimizing images</value> - </prop> <prop oor:name="STR_IMAGE_OPTIMIZATION"> <value xml:lang="en-US">Images</value> </prop> - <prop oor:name="STR_LOSSLESS_COMPRESSION"> - <value xml:lang="en-US">~Lossless compression</value> - </prop> - <prop oor:name="STR_JPEG_COMPRESSION"> - <value xml:lang="en-US">~JPEG compression</value> - </prop> - <prop oor:name="STR_QUALITY"> - <value xml:lang="en-US">~Quality in %</value> - </prop> - <prop oor:name="STR_REMOVE_CROP_AREA"> - <value xml:lang="en-US">~Delete cropped image areas</value> - </prop> - <prop oor:name="STR_IMAGE_RESOLUTION"> - <value xml:lang="en-US">Reduce ~image resolution</value> - </prop> - <prop oor:name="STR_IMAGE_RESOLUTION_0"> - <value xml:lang="en-US">0;<no change></value> - </prop> - <prop oor:name="STR_IMAGE_RESOLUTION_1"> - <value xml:lang="en-US">96;96 DPI (screen resolution)</value> - </prop> - <prop oor:name="STR_IMAGE_RESOLUTION_2"> - <value xml:lang="en-US">150;150 DPI (projector resolution)</value> - </prop> - <prop oor:name="STR_IMAGE_RESOLUTION_3"> - <value xml:lang="en-US">250;250 DPI (print resolution)</value> - </prop> - <prop oor:name="STR_IMAGE_RESOLUTION_4"> - <value xml:lang="en-US">300;300 DPI (print resolution)</value> - </prop> - <prop oor:name="STR_IMAGE_RESOLUTION_5"> - <value xml:lang="en-US">600;600 DPI (print resolution)</value> - </prop> - <prop oor:name="STR_EMBED_LINKED_GRAPHICS"> - <value xml:lang="en-US">~Embed external images</value> - </prop> <prop oor:name="STR_OLE_OBJECTS"> <value xml:lang="en-US">OLE Objects</value> </prop> - <prop oor:name="STR_OLE_OPTIMIZATION"> - <value xml:lang="en-US">Choose settings for replacing OLE objects</value> - </prop> - <prop oor:name="STR_OLE_REPLACE"> - <value xml:lang="en-US">Create static replacement images for OLE objects</value> - </prop> - <prop oor:name="STR_ALL_OLE_OBJECTS"> - <value xml:lang="en-US">For ~all OLE objects</value> - </prop> - <prop oor:name="STR_ALIEN_OLE_OBJECTS_ONLY"> - <value xml:lang="en-US">~For OLE objects not based on OpenDocument format</value> - </prop> <prop oor:name="STR_OLE_OBJECTS_DESC"> <value xml:lang="en-US">Object Linking and Embedding (OLE) is a technology that allows embedding and linking to documents and other objects. @@ -121,39 +44,12 @@ The current presentation contains no OLE objects.</value> <prop oor:name="STR_SLIDES"> <value xml:lang="en-US">Slides</value> </prop> - <prop oor:name="STR_CHOOSE_SLIDES"> - <value xml:lang="en-US">Choose which slides to delete</value> - </prop> - <prop oor:name="STR_DELETE_MASTER_PAGES"> - <value xml:lang="en-US">Delete unused ~master slides</value> - </prop> - <prop oor:name="STR_DELETE_NOTES_PAGES"> - <value xml:lang="en-US">~Clear notes</value> - </prop> - <prop oor:name="STR_DELETE_HIDDEN_SLIDES"> - <value xml:lang="en-US">Delete hidden ~slides</value> - </prop> - <prop oor:name="STR_CUSTOM_SHOW"> - <value xml:lang="en-US">Delete slides that are not used for the ~custom slide show</value> - </prop> <prop oor:name="STR_SUMMARY"> <value xml:lang="en-US">Summary</value> </prop> - <prop oor:name="STR_SUMMARY_TITLE"> - <value xml:lang="en-US">Choose where to apply the following changes</value> - </prop> - <prop oor:name="STR_APPLY_TO_CURRENT"> - <value xml:lang="en-US">~Apply changes to current presentation</value> - </prop> <prop oor:name="STR_AUTOMATICALLY_OPEN"> <value xml:lang="en-US">~Open newly created presentation</value> </prop> - <prop oor:name="STR_SAVE_SETTINGS"> - <value xml:lang="en-US">~Save settings as</value> - </prop> - <prop oor:name="STR_SAVE_AS"> - <value xml:lang="en-US">~Duplicate presentation before applying changes</value> - </prop> <prop oor:name="STR_DELETE_SLIDES"> <value xml:lang="en-US">Delete %SLIDES slides.</value> </prop> @@ -163,12 +59,6 @@ The current presentation contains no OLE objects.</value> <prop oor:name="STR_CREATE_REPLACEMENT"> <value xml:lang="en-US">Create replacement images for %OLE objects.</value> </prop> - <prop oor:name="STR_CURRENT_FILESIZE"> - <value xml:lang="en-US">Current file size:</value> - </prop> - <prop oor:name="STR_ESTIMATED_FILESIZE"> - <value xml:lang="en-US">Estimated new file size:</value> - </prop> <prop oor:name="MY_SETTINGS"> <value xml:lang="en-US">My Settings </value> </prop> diff --git a/officecfg/registry/schema/org/openoffice/Office/PresentationMinimizer.xcs b/officecfg/registry/schema/org/openoffice/Office/PresentationMinimizer.xcs index 4ed868a5a938..d2148807ca01 100644 --- a/officecfg/registry/schema/org/openoffice/Office/PresentationMinimizer.xcs +++ b/officecfg/registry/schema/org/openoffice/Office/PresentationMinimizer.xcs @@ -129,120 +129,18 @@ <info><desc>String STR_SUN_OPTIMIZATION_WIZARD2</desc></info> <value>Presentation Minimizer</value> </prop> - <prop oor:name="STR_STEPS" oor:type="xs:string" oor:localized="true"> - <info><desc>String STR_STEPS.</desc></info> - <value>Steps</value> - </prop> - <prop oor:name="STR_BACK" oor:type="xs:string" oor:localized="true"> - <info><desc>String STR_BACK.</desc></info> - <value>< ~Back</value> - </prop> - <prop oor:name="STR_NEXT" oor:type="xs:string" oor:localized="true"> - <info><desc>String STR_NEXT.</desc></info> - <value>~Next ></value> - </prop> - <prop oor:name="STR_FINISH" oor:type="xs:string" oor:localized="true"> - <info><desc>String STR_FINISH.</desc></info> - <value>~Finish</value> - </prop> - <prop oor:name="STR_CANCEL" oor:type="xs:string" oor:localized="true"> - <info><desc>String STR_CANCEL.</desc></info> - <value>Cancel</value> - </prop> <prop oor:name="STR_INTRODUCTION" oor:type="xs:string" oor:localized="true"> <info><desc>String STR_INTRODUCTION.</desc></info> <value>Introduction</value> </prop> - <prop oor:name="STR_INTRODUCTION_T" oor:type="xs:string" oor:localized="true"> - <info><desc>String STR_INTRODUCTION_T.</desc></info> - <value>The Presentation Minimizer is used to reduce the file size of the current presentation. Images will be compressed and data, that is no longer needed, will be removed. - - At the last step of the wizard you can choose to apply the changes to the current presentation or to create an optimized new version of the presentation.</value> - </prop> - <prop oor:name="STR_CHOSE_SETTINGS" oor:type="xs:string" oor:localized="true"> - <info><desc>String STR_CHOSE_SETTINGS.</desc></info> - <value>~Choose settings for the Presentation Minimization Wizard</value> - </prop> - <prop oor:name="STR_REMOVE" oor:type="xs:string" oor:localized="true"> - <info><desc>String STR_REMOVE.</desc></info> - <value>~Delete</value> - </prop> - <prop oor:name="STR_GRAPHIC_OPTIMIZATION" oor:type="xs:string" oor:localized="true"> - <info><desc>String STR_GRAPHIC_OPTIMIZATION.</desc></info> - <value>Choose settings for optimizing images</value> - </prop> <prop oor:name="STR_IMAGE_OPTIMIZATION" oor:type="xs:string" oor:localized="true"> <info><desc>String STR_IMAGE_OPTIMIZATION.</desc></info> <value>Images</value> </prop> - <prop oor:name="STR_LOSSLESS_COMPRESSION" oor:type="xs:string" oor:localized="true"> - <info><desc>String STR_LOSSLESS_COMPRESSION.</desc></info> - <value>~Lossless compression</value> - </prop> - <prop oor:name="STR_JPEG_COMPRESSION" oor:type="xs:string" oor:localized="true"> - <info><desc>String STR_JPEG_COMPRESSION.</desc></info> - <value>~JPEG compression</value> - </prop> - <prop oor:name="STR_QUALITY" oor:type="xs:string" oor:localized="true"> - <info><desc>String STR_QUALITY.</desc></info> - <value>~Quality</value> - </prop> - <prop oor:name="STR_REMOVE_CROP_AREA" oor:type="xs:string" oor:localized="true"> - <info><desc>String STR_REMOVE_CROP_AREA.</desc></info> - <value>~Delete cropped image areas</value> - </prop> - <prop oor:name="STR_IMAGE_RESOLUTION" oor:type="xs:string" oor:localized="true"> - <info><desc>String STR_IMAGE_RESOLUTION.</desc></info> - <value>~Image Resolution</value> - </prop> - <prop oor:name="STR_IMAGE_RESOLUTION_0" oor:type="xs:string" oor:localized="true"> - <info><desc>String STR_IMAGE_RESOLUTION_0.</desc></info> - <value>0;<no change></value> - </prop> - <prop oor:name="STR_IMAGE_RESOLUTION_1" oor:type="xs:string" oor:localized="true"> - <info><desc>String STR_IMAGE_RESOLUTION_1.</desc></info> - <value>96;96 DPI (screen resolution)</value> - </prop> - <prop oor:name="STR_IMAGE_RESOLUTION_2" oor:type="xs:string" oor:localized="true"> - <info><desc>String STR_IMAGE_RESOLUTION_2.</desc></info> - <value>150;150 DPI (projector resolution)</value> - </prop> - <prop oor:name="STR_IMAGE_RESOLUTION_3" oor:type="xs:string" oor:localized="true"> - <info><desc>String STR_IMAGE_RESOLUTION_3.</desc></info> - <value>250;250 DPI</value> - </prop> - <prop oor:name="STR_IMAGE_RESOLUTION_4" oor:type="xs:string" oor:localized="true"> - <info><desc>String STR_IMAGE_RESOLUTION_4.</desc></info> - <value>300;300 DPI (print resolution)</value> - </prop> - <prop oor:name="STR_IMAGE_RESOLUTION_5" oor:type="xs:string" oor:localized="true"> - <info><desc>String STR_IMAGE_RESOLUTION_5.</desc></info> - <value>600;600 DPI</value> - </prop> - <prop oor:name="STR_EMBED_LINKED_GRAPHICS" oor:type="xs:string" oor:localized="true"> - <info><desc>String STR_EMBED_LINKED_GRAPHICS.</desc></info> - <value>~Embed external images</value> - </prop> <prop oor:name="STR_OLE_OBJECTS" oor:type="xs:string" oor:localized="true"> <info><desc>String STR_OLE_OBJECTS.</desc></info> <value>OLE Objects</value> </prop> - <prop oor:name="STR_OLE_OPTIMIZATION" oor:type="xs:string" oor:localized="true"> - <info><desc>String STR_OLE_OPTIMIZATION.</desc></info> - <value>Choose settings for replacing OLE objects</value> - </prop> - <prop oor:name="STR_OLE_REPLACE" oor:type="xs:string" oor:localized="true"> - <info><desc>String STR_OLE_REPLACE.</desc></info> - <value>Create static replacement images for OLE objects</value> - </prop> - <prop oor:name="STR_ALL_OLE_OBJECTS" oor:type="xs:string" oor:localized="true"> - <info><desc>String STR_ALL_OLE_OBJECTS.</desc></info> - <value>For ~all OLE objects</value> - </prop> - <prop oor:name="STR_ALIEN_OLE_OBJECTS_ONLY" oor:type="xs:string" oor:localized="true"> - <info><desc>String STR_ALIEN_OLE_OBJECTS_ONLY.</desc></info> - <value>~For OLE objects not based on OpenDocument format</value> - </prop> <prop oor:name="STR_OLE_OBJECTS_DESC" oor:type="xs:string" oor:localized="true"> <info><desc>String STR_OLE_OBJECTS_DESC.</desc></info> <value>Object Linking and Embedding (OLE) is a technology that allows embedding and linking to documents and other objects. @@ -259,50 +157,14 @@ The current presentation contains no OLE objects.</value> <info><desc>String STR_SLIDES.</desc></info> <value>Slides</value> </prop> - <prop oor:name="STR_CHOOSE_SLIDES" oor:type="xs:string" oor:localized="true"> - <info><desc>String STR_CHOOSE_SLIDES.</desc></info> - <value>Choose which slides to delete</value> - </prop> - <prop oor:name="STR_DELETE_MASTER_PAGES" oor:type="xs:string" oor:localized="true"> - <info><desc>String STR_DELETE_MASTER_PAGES.</desc></info> - <value>Delete unused ~master pages</value> - </prop> - <prop oor:name="STR_DELETE_NOTES_PAGES" oor:type="xs:string" oor:localized="true"> - <info><desc>String STR_DELETE_NOTES_PAGES.</desc></info> - <value>~Clear notes</value> - </prop> - <prop oor:name="STR_DELETE_HIDDEN_SLIDES" oor:type="xs:string" oor:localized="true"> - <info><desc>String STR_DELETE_HIDDEN_SLIDES.</desc></info> - <value>Delete hidden ~slides</value> - </prop> - <prop oor:name="STR_CUSTOM_SHOW" oor:type="xs:string" oor:localized="true"> - <info><desc>String STR_CUSTOM_SHOW.</desc></info> - <value>Delete slides that are not used for the ~custom slide show</value> - </prop> <prop oor:name="STR_SUMMARY" oor:type="xs:string" oor:localized="true"> <info><desc>String STR_SUMMARY.</desc></info> <value>Summary</value> </prop> - <prop oor:name="STR_SUMMARY_TITLE" oor:type="xs:string" oor:localized="true"> - <info><desc>String STR_SUMMARY_TITLE.</desc></info> - <value>Choose where to apply the following changes</value> - </prop> - <prop oor:name="STR_APPLY_TO_CURRENT" oor:type="xs:string" oor:localized="true"> - <info><desc>String STR_APPLY_TO_CURRENT.</desc></info> - <value>~Apply changes to current presentation</value> - </prop> <prop oor:name="STR_AUTOMATICALLY_OPEN" oor:type="xs:string" oor:localized="true"> <info><desc>String STR_AUTOMATICALLY_OPEN.</desc></info> <value>~Open newly created presentation</value> </prop> - <prop oor:name="STR_SAVE_SETTINGS" oor:type="xs:string" oor:localized="true"> - <info><desc>String STR_SAVE_SETTINGS.</desc></info> - <value>~Save settings as</value> - </prop> - <prop oor:name="STR_SAVE_AS" oor:type="xs:string" oor:localized="true"> - <info><desc>String STR_SAVE_AS.</desc></info> - <value>~Duplicate presentation before applying changes</value> - </prop> <prop oor:name="STR_DELETE_SLIDES" oor:type="xs:string" oor:localized="true"> <info><desc>String STR_DELETE_SLIDES.</desc></info> <value>Delete %SLIDES slides</value> @@ -317,14 +179,6 @@ The current presentation contains no OLE objects.</value> <info><desc>String STR_CREATE_REPLACEMENT.</desc></info> <value>Create replacement images for %OLE objects.</value> </prop> - <prop oor:name="STR_CURRENT_FILESIZE" oor:type="xs:string" oor:localized="true"> - <info><desc>String STR_CURRENT_FILESIZE.</desc></info> - <value>Current file size:</value> - </prop> - <prop oor:name="STR_ESTIMATED_FILESIZE" oor:type="xs:string" oor:localized="true"> - <info><desc>String STR_ESTIMATED_FILESIZE.</desc></info> - <value>Estimated new file size:</value> - </prop> <prop oor:name="MY_SETTINGS" oor:type="xs:string" oor:localized="true"> <info><desc>String MY_SETTINGS.</desc></info> <value>My Settings</value> diff --git a/sd/UIConfig_simpress.mk b/sd/UIConfig_simpress.mk index 3476e409a73b..d71e7ff71f67 100644 --- a/sd/UIConfig_simpress.mk +++ b/sd/UIConfig_simpress.mk @@ -150,6 +150,11 @@ $(eval $(call gb_UIConfig_add_uifiles,modules/simpress,\ sd/uiconfig/simpress/ui/optimpressgeneralpage \ sd/uiconfig/simpress/ui/pagesfieldbox \ sd/uiconfig/simpress/ui/photoalbum \ + sd/uiconfig/simpress/ui/pmimagespage \ + sd/uiconfig/simpress/ui/pmintropage \ + sd/uiconfig/simpress/ui/pmobjectspage \ + sd/uiconfig/simpress/ui/pmslidespage \ + sd/uiconfig/simpress/ui/pmsummarypage \ sd/uiconfig/simpress/ui/presentationdialog \ sd/uiconfig/simpress/ui/prntopts \ sd/uiconfig/simpress/ui/publishingdialog \ diff --git a/sd/uiconfig/simpress/ui/pmimagespage.ui b/sd/uiconfig/simpress/ui/pmimagespage.ui new file mode 100644 index 000000000000..f3c6068e7481 --- /dev/null +++ b/sd/uiconfig/simpress/ui/pmimagespage.ui @@ -0,0 +1,201 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Generated with glade 3.40.0 --> +<interface domain="sd"> + <requires lib="gtk+" version="3.20"/> + <object class="GtkAdjustment" id="adjustment1"> + <property name="upper">100</property> + <property name="step-increment">1</property> + <property name="page-increment">10</property> + </object> + <object class="GtkBox" id="PMImagesPage"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="border-width">6</property> + <property name="orientation">vertical</property> + <property name="spacing">12</property> + <child> + <object class="GtkFrame" id="frame1"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="margin-top">6</property> + <property name="margin-bottom">6</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="label-xalign">0</property> + <property name="shadow-type">none</property> + <child> + <!-- n-columns=1 n-rows=6 --> + <object class="GtkGrid" id="grid1"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="margin-start">12</property> + <property name="margin-end">6</property> + <property name="margin-top">6</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="row-spacing">6</property> + <child> + <object class="GtkCheckButton" id="STR_REMOVE_CROP_AREA"> + <property name="label" translatable="yes" context="pmimagespage|STR_REMOVE_CROP_AREA">_Delete cropped image areas</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> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">4</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="STR_EMBED_LINKED_GRAPHICS"> + <property name="label" translatable="yes" context="pmimagespage|STR_EMBED_LINKED_GRAPHICS">_Embed external images</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> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">5</property> + </packing> + </child> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="spacing">12</property> + <child> + <object class="GtkLabel" id="STR_IMAGE_RESOLUTION"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="pmimagespage|STR_IMAGE_RESOLUTION">Reduce _image resolution</property> + <property name="use-underline">True</property> + <property name="mnemonic-widget">LB_RESOLUTION</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkComboBoxText" id="LB_RESOLUTION"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="active">0</property> + <items> + <item id="0" translatable="yes" context="pmimagespage|LB_RESOLUTION"><no change></item> + <item id="96" translatable="yes" context="pmimagespage|LB_RESOLUTION">96 DPI (screen resolution)</item> + <item id="150" translatable="yes" context="pmimagespage|LB_RESOLUTION">150 DPI (projector resolution)</item> + <item id="300" translatable="yes" context="pmimagespage|LB_RESOLUTION">300 DPI (print resolution)</item> + <item id="600" translatable="yes" context="pmimagespage|LB_RESOLUTION">600 DPI (print resolution)</item> + </items> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">3</property> + </packing> + </child> + <child> + <object class="GtkRadioButton" id="STR_LOSSLESS_COMPRESSION"> + <property name="label" translatable="yes" context="pmimagespage|STR_LOSSLESS_COMPRESSION">_Lossless compression</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="active">True</property> + <property name="draw-indicator">True</property> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">0</property> + </packing> + </child> + <child> + <object class="GtkRadioButton" id="STR_JPEG_COMPRESSION"> + <property name="label" translatable="yes" context="pmimagespage|STR_JPEG_COMPRESSION">_JPEG compression</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> + <property name="group">STR_LOSSLESS_COMPRESSION</property> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">1</property> + </packing> + </child> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="margin-start">24</property> + <property name="spacing">12</property> + <child> + <object class="GtkLabel" id="STR_QUALITY"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="pmimagespage|STR_IMAGE_RESOLUTION">_Quality in %</property> + <property name="use-underline">True</property> + <property name="mnemonic-widget">SB_QUALITY</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkSpinButton" id="SB_QUALITY"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can-focus">True</property> + <property name="adjustment">adjustment1</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">2</property> + </packing> + </child> + </object> + </child> + <child type="label"> + <object class="GtkLabel" id="STR_GRAPHIC_OPTIMIZATION"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="pmimagespages|STR_GRAPHIC_OPTIMIZATION">Choose settings for optimizing images</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + </object> +</interface> diff --git a/sd/uiconfig/simpress/ui/pmintropage.ui b/sd/uiconfig/simpress/ui/pmintropage.ui new file mode 100644 index 000000000000..6361cf301c79 --- /dev/null +++ b/sd/uiconfig/simpress/ui/pmintropage.ui @@ -0,0 +1,134 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Generated with glade 3.40.0 --> +<interface domain="sd"> + <requires lib="gtk+" version="3.20"/> + <object class="GtkBox" id="PMIntroPage"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="border-width">6</property> + <property name="orientation">vertical</property> + <property name="spacing">12</property> + <child> + <object class="GtkFrame" id="frame1"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="margin-top">6</property> + <property name="margin-bottom">6</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="label-xalign">0</property> + <property name="shadow-type">none</property> + <child> + <!-- n-columns=1 n-rows=4 --> + <object class="GtkGrid" id="grid1"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="margin-start">12</property> + <property name="margin-end">6</property> + <property name="margin-top">6</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="row-spacing">6</property> + <child> + <object class="GtkLabel" id="STR_INTRODUCTION_T"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="label" translatable="yes" context="pmintropage|STR_INTRODUCTION_T">The Presentation Minimizer is used to reduce the file size of the current presentation. Images will be compressed and data, that is no longer needed, will be removed. + + At the last step of the wizard you can choose to apply the changes to the current presentation or to create an optimized new version of the presentation.</property> + <property name="wrap">True</property> + <property name="width-chars">58</property> + <property name="max-width-chars">58</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">0</property> + </packing> + </child> + <child> + <!-- n-columns=2 n-rows=1 --> + <object class="GtkGrid"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="column-spacing">12</property> + <child> + <object class="GtkComboBoxText" id="LB_SETTINGS"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="hexpand">True</property> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">0</property> + </packing> + </child> + <child> + <object class="GtkButton" id="STR_REMOVE"> + <property name="label" translatable="yes" context="pmintropage:STR_REMOVE">_Delete</property> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">True</property> + <property name="use-underline">True</property> + </object> + <packing> + <property name="left-attach">1</property> + <property name="top-attach">0</property> + </packing> + </child> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">3</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="STR_CHOSE_SETTINGS"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="halign">start</property> + <property name="label" translatable="yes" context="pmintropage|STR_CHOSE_SETTINGS">_Choose settings for Presentation Minimizer</property> + <property name="use-underline">True</property> + <property name="mnemonic-widget">LB_SETTINGS</property> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">2</property> + </packing> + </child> + <child> + <object class="GtkSeparator"> + <property name="visible">True</property> + <property name="can-focus">False</property> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">1</property> + </packing> + </child> + </object> + </child> + <child type="label"> + <object class="GtkLabel" id="STR_INTRODUCTION"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="pmintropage|STR_INTRODUCTION">Introduction</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + </object> +</interface> diff --git a/sd/uiconfig/simpress/ui/pmobjectspage.ui b/sd/uiconfig/simpress/ui/pmobjectspage.ui new file mode 100644 index 000000000000..303432106cce --- /dev/null +++ b/sd/uiconfig/simpress/ui/pmobjectspage.ui @@ -0,0 +1,120 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Generated with glade 3.40.0 --> +<interface domain="sd"> + <requires lib="gtk+" version="3.20"/> + <object class="GtkBox" id="PMObjectsPage"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="border-width">6</property> + <property name="orientation">vertical</property> + <property name="spacing">12</property> + <child> + <object class="GtkFrame" id="frame1"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="margin-top">6</property> + <property name="margin-bottom">6</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="label-xalign">0</property> + <property name="shadow-type">none</property> + <child> + <!-- n-columns=1 n-rows=4 --> + <object class="GtkGrid" id="grid1"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="margin-start">12</property> + <property name="margin-end">6</property> + <property name="margin-top">6</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="row-spacing">6</property> + <child> + <object class="GtkCheckButton" id="STR_OLE_REPLACE"> + <property name="label" translatable="yes" context="pmimagespage|STR_OLE_REPLACE">Create static replacement images for OLE objects</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="active">True</property> + <property name="draw-indicator">True</property> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">0</property> + </packing> + </child> + <child> + <object class="GtkRadioButton" id="STR_ALL_OLE_OBJECTS"> + <property name="label" translatable="yes" context="pmobjectspage|STR_ALL_OLE_OBJECTS">For _all OLE objects</property> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">False</property> + <property name="margin-start">18</property> + <property name="use-underline">True</property> + <property name="active">True</property> + <property name="draw-indicator">True</property> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">1</property> + </packing> + </child> + <child> + <object class="GtkRadioButton" id="STR_ALIEN_OLE_OBJECTS_ONLY"> + <property name="label" translatable="yes" context="pmobjectspage|STR_ALIEN_OLE_OBJECTS_ONLY">_For OLE objects not based on OpenDocument format</property> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">False</property> + <property name="margin-start">18</property> + <property name="use-underline">True</property> + <property name="draw-indicator">True</property> + <property name="group">STR_ALL_OLE_OBJECTS</property> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">2</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="STR_OLE_OBJECTS_DESC"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="margin-start">6</property> + <property name="margin-top">12</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="wrap">True</property> + <property name="width-chars">58</property> + <property name="max-width-chars">58</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">3</property> + </packing> + </child> + </object> + </child> + <child type="label"> + <object class="GtkLabel" id="STR_OLE_OPTIMIZATION"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="pmobjectspages|STR_OLE_OPTIMIZATION">Choose settings for replacing OLE objects</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + </object> +</interface> diff --git a/sd/uiconfig/simpress/ui/pmslidespage.ui b/sd/uiconfig/simpress/ui/pmslidespage.ui new file mode 100644 index 000000000000..fdc9fa511488 --- /dev/null +++ b/sd/uiconfig/simpress/ui/pmslidespage.ui @@ -0,0 +1,129 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Generated with glade 3.40.0 --> +<interface domain="sd"> + <requires lib="gtk+" version="3.20"/> + <object class="GtkBox" id="PMSlidesPage"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="border-width">6</property> + <property name="orientation">vertical</property> + <property name="spacing">12</property> + <child> + <object class="GtkFrame" id="frame1"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="margin-top">6</property> + <property name="margin-bottom">6</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="label-xalign">0</property> + <property name="shadow-type">none</property> + <child> + <!-- n-columns=1 n-rows=5 --> + <object class="GtkGrid" id="grid1"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="margin-start">12</property> + <property name="margin-end">6</property> + <property name="margin-top">6</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="row-spacing">6</property> + <child> + <object class="GtkCheckButton" id="STR_DELETE_MASTER_PAGES"> + <property name="label" translatable="yes" context="pmslidespage|STR_DELETE_MASTER_PAGES">Delete unused _master slides</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> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">0</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="STR_DELETE_HIDDEN_SLIDES"> + <property name="label" translatable="yes" context="pmslidespage|STR_DELETE_HIDDEN_SLIDES">Delete hidden _slides</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> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">1</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="STR_CUSTOM_SHOW"> + <property name="label" translatable="yes" context="pmslidespage|STR_CUSTOM_SHOW">Delete slides that are not used for the _custom slide show</property> + <property name="visible">True</property> + <property name="sensitive">False</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> + <accessibility> + <relation type="label-for" target="LB_SLIDES"/> + </accessibility> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">2</property> + </packing> + </child> + <child> + <object class="GtkComboBoxText" id="LB_SLIDES"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can-focus">False</property> + <property name="margin-start">12</property> + <accessibility> + <relation type="labelled-by" target="STR_CUSTOM_SHOW"/> + </accessibility> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">3</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="STR_DELETE_NOTES_PAGES"> + <property name="label" translatable="yes" context="pmslidespage|STR_DELETE_NOTES_PAGES">_Clear notes</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> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">4</property> + </packing> + </child> + </object> + </child> + <child type="label"> + <object class="GtkLabel" id="STR_CHOOSE_SLIDES"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="pmslidespages|STR_CHOOSE_SLIDES">Choose which slides to delete</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + </object> +</interface> diff --git a/sd/uiconfig/simpress/ui/pmsummarypage.ui b/sd/uiconfig/simpress/ui/pmsummarypage.ui new file mode 100644 index 000000000000..51ec684ac6b6 --- /dev/null +++ b/sd/uiconfig/simpress/ui/pmsummarypage.ui @@ -0,0 +1,267 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Generated with glade 3.40.0 --> +<interface domain="sd"> + <requires lib="gtk+" version="3.20"/> + <object class="GtkBox" id="PMSummaryPage"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="border-width">6</property> + <property name="orientation">vertical</property> + <property name="spacing">12</property> + <child> + <object class="GtkFrame" id="frame1"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="margin-top">6</property> + <property name="margin-bottom">6</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="label-xalign">0</property> + <property name="shadow-type">none</property> + <child> + <!-- n-columns=1 n-rows=10 --> + <object class="GtkGrid" id="grid1"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="margin-start">12</property> + <property name="margin-end">6</property> + <property name="margin-top">6</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="row-spacing">6</property> + <child> + <object class="GtkLabel" id="LABEL1"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="xalign">0</property> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">0</property> + </packing> + </child> + <child> + <object class="GtkRadioButton" id="STR_APPLY_TO_CURRENT"> + <property name="label" translatable="yes" context="pmsummarypage|STR_APPLY_TO_CURRENT">_Apply changes to current presentation</property> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">False</property> + <property name="margin-top">12</property> + <property name="use-underline">True</property> + <property name="draw-indicator">True</property> + <property name="group">STR_SAVE_AS</property> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">4</property> + </packing> + </child> + <child> + <object class="GtkRadioButton" id="STR_SAVE_AS"> + <property name="label" translatable="yes" context="pmsummarypage|STR_SAVE_AS">_Duplicate presentation before applying changes</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> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">5</property> + </packing> + </child> + <child> + <object class="GtkProgressBar" id="PROGRESS"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="hexpand">True</property> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">7</property> + </packing> + </child> + <child> + <object class="GtkSeparator"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="hexpand">True</property> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">8</property> + </packing> + </child> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="spacing">12</property> + <child> + <object class="GtkCheckButton" id="STR_SAVE_SETTINGS"> + <property name="label" translatable="yes" context="pmsummarypage|STR_SAVE_SETTINGS">_Save settings as</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> + <accessibility> + <relation type="label-for" target="MY_SETTINGS"/> + </accessibility> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkComboBoxText" id="MY_SETTINGS"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="has-entry">True</property> + <child internal-child="entry"> + <object class="GtkEntry"> + <property name="can-focus">False</property> + </object> + </child> + <accessibility> + <relation type="labelled-by" target="STR_SAVE_SETTINGS"/> + </accessibility> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">9</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="LABEL2"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="xalign">0</property> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="LABEL3"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="xalign">0</property> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">2</property> + </packing> + </child> + <child> + <!-- n-columns=2 n-rows=2 --> + <object class="GtkGrid"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="margin-top">18</property> + <property name="row-spacing">6</property> + <property name="column-spacing">12</property> + <child> + <object class="GtkLabel" id="STR_CURRENT_FILESIZE"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="pmsummarypage|STR_CURRENT_FILESIZE">Current file size:</property> + <property name="xalign">0</property> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="STR_ESTIMATED_FILESIZE"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="pmsummarypage|STR_ESTIMATED_FILESIZE">Estimated new file size:</property> + <property name="xalign">0</property> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="CURRENT_FILESIZE"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="xalign">0</property> + </object> + <packing> + <property name="left-attach">1</property> + <property name="top-attach">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="ESTIMATED_FILESIZE"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="xalign">0</property> + </object> + <packing> + <property name="left-attach">1</property> + <property name="top-attach">1</property> + </packing> + </child> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">3</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="STR_STATUS"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="margin-top">12</property> + <property name="use-underline">True</property> + <property name="mnemonic-widget">PROGRESS</property> + <property name="xalign">0</property> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">6</property> + </packing> + </child> + </object> + </child> + <child type="label"> + <object class="GtkLabel" id="STR_SUMMARY_TITLE"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="pmsummarypages|STR_SUMMARY_TITLE">Choose where to apply the following changes</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + </object> + <object class="GtkAdjustment" id="adjustment1"> + <property name="upper">100</property> + <property name="step-increment">1</property> + <property name="page-increment">10</property> + </object> +</interface> diff --git a/sdext/source/minimizer/configurationaccess.cxx b/sdext/source/minimizer/configurationaccess.cxx index 8373e1f425f1..55e60c52ca96 100644 --- a/sdext/source/minimizer/configurationaccess.cxx +++ b/sdext/source/minimizer/configurationaccess.cxx @@ -140,10 +140,8 @@ bool OptimizerSettings::operator==( const OptimizerSettings& rOptimizerSettings && ( rOptimizerSettings.mbDeleteUnusedMasterPages == mbDeleteUnusedMasterPages ) && ( rOptimizerSettings.mbDeleteHiddenSlides == mbDeleteHiddenSlides ) && ( rOptimizerSettings.mbDeleteNotesPages == mbDeleteNotesPages ); -// && ( rOptimizerSettings.mbOpenNewDocument == mbOpenNewDocument ); } - ConfigurationAccess::ConfigurationAccess( const Reference< uno::XComponentContext >& rxContext ) : mxContext( rxContext ) { diff --git a/sdext/source/minimizer/configurationaccess.hxx b/sdext/source/minimizer/configurationaccess.hxx index d4d4c4d3f898..5cf884fc13fe 100644 --- a/sdext/source/minimizer/configurationaccess.hxx +++ b/sdext/source/minimizer/configurationaccess.hxx @@ -96,14 +96,14 @@ class ConfigurationAccess std::vector< OptimizerSettings >& GetOptimizerSettings() { return maSettings; }; std::vector< OptimizerSettings >::iterator GetOptimizerSettingsByName( const OUString& rName ); - private: + protected: + css::uno::Reference< css::uno::XComponentContext > mxContext; + private: std::map < PPPOptimizerTokenEnum, OUString > maStrings; std::vector< OptimizerSettings > maSettings; - css::uno::Reference< css::uno::XComponentContext > mxContext; - void LoadStrings(); void LoadConfiguration(); css::uno::Reference< css::uno::XInterface > OpenConfiguration( bool bReadOnly ); diff --git a/sdext/source/minimizer/optimizerdialog.cxx b/sdext/source/minimizer/optimizerdialog.cxx index 3112c6f22959..15ce1c3d1187 100644 --- a/sdext/source/minimizer/optimizerdialog.cxx +++ b/sdext/source/minimizer/optimizerdialog.cxx @@ -55,164 +55,220 @@ using namespace ::com::sun::star::frame; using namespace ::com::sun::star::beans; using namespace ::com::sun::star::container; +IntroPage::IntroPage(weld::Container* pPage, OptimizerDialog& rOptimizerDialog) + : vcl::OWizardPage(pPage, &rOptimizerDialog, "modules/simpress/ui/pmintropage.ui", "PMIntroPage") + , mrOptimizerDialog(rOptimizerDialog) + , mxComboBox(m_xBuilder->weld_combo_box("LB_SETTINGS")) + , mxButton(m_xBuilder->weld_button("STR_REMOVE")) +{ + mxComboBox->connect_changed(LINK(this, IntroPage, ComboBoxActionPerformed)); + mxButton->connect_clicked(LINK(this, IntroPage, ButtonActionPerformed)); +} -void OptimizerDialog::InitDialog() +void IntroPage::UpdateControlStates(const std::vector<OUString>& rItemList, int nSelectedItem, bool bRemoveButtonEnabled) { - // setting the dialog properties - OUString pNames[] = { - OUString("Closeable"), - OUString("Height"), - OUString("Moveable"), - OUString("PositionX"), - OUString("PositionY"), - OUString("Title"), - OUString("Width") }; + mxComboBox->clear(); + for (const auto& a : rItemList) + mxComboBox->append_text(a); + mxComboBox->set_active(nSelectedItem); + mxButton->set_sensitive(bRemoveButtonEnabled); +} - Any pValues[] = { - Any( true ), - Any( sal_Int32( DIALOG_HEIGHT ) ), - Any( true ), - Any( sal_Int32( 200 ) ), - Any( sal_Int32( 52 ) ), - Any( getString( STR_SUN_OPTIMIZATION_WIZARD2 ) ), - Any( sal_Int32( OD_DIALOG_WIDTH ) ) }; +SlidesPage::SlidesPage(weld::Container* pPage, OptimizerDialog& rOptimizerDialog) + : vcl::OWizardPage(pPage, &rOptimizerDialog, "modules/simpress/ui/pmslidespage.ui", "PMSlidesPage") + , mrOptimizerDialog(rOptimizerDialog) + , mxMasterSlides(m_xBuilder->weld_check_button("STR_DELETE_MASTER_PAGES")) + , mxHiddenSlides(m_xBuilder->weld_check_button("STR_DELETE_HIDDEN_SLIDES")) + , mxUnusedSlides(m_xBuilder->weld_check_button("STR_CUSTOM_SHOW")) + , mxComboBox(m_xBuilder->weld_combo_box("LB_SLIDES")) + , mxClearNodes(m_xBuilder->weld_check_button("STR_DELETE_NOTES_PAGES")) +{ + mxMasterSlides->connect_toggled(LINK(this, SlidesPage, UnusedMasterPagesActionPerformed)); + mxHiddenSlides->connect_toggled(LINK(this, SlidesPage, UnusedHiddenSlidesActionPerformed)); + mxUnusedSlides->connect_toggled(LINK(this, SlidesPage, UnusedSlidesActionPerformed)); + mxClearNodes->connect_toggled(LINK(this, SlidesPage, DeleteNotesActionPerformed)); +} - sal_Int32 nCount = SAL_N_ELEMENTS( pNames ); +void SlidesPage::Init(const css::uno::Sequence<OUString>& rCustomShowList) +{ + mxComboBox->clear(); + for (const auto& a : rCustomShowList) + mxComboBox->append_text(a); + mxUnusedSlides->set_sensitive(rCustomShowList.hasElements()); +} + +void SlidesPage::UpdateControlStates(bool bDeleteUnusedMasterPages, bool bDeleteHiddenSlides, bool bDeleteNotesPages) +{ + mxMasterSlides->set_active(bDeleteUnusedMasterPages); + mxHiddenSlides->set_active(bDeleteHiddenSlides); + mxClearNodes->set_active(bDeleteNotesPages); + mxComboBox->set_sensitive(mxUnusedSlides->get_sensitive()); +} - Sequence< OUString > aNames( pNames, nCount ); - Sequence< Any > aValues( pValues, nCount ); +ImagesPage::ImagesPage(weld::Container* pPage, OptimizerDialog& rOptimizerDialog) + : vcl::OWizardPage(pPage, &rOptimizerDialog, "modules/simpress/ui/pmimagespage.ui", "PMImagesPage") + , mrOptimizerDialog(rOptimizerDialog) + , m_xLossLessCompression(m_xBuilder->weld_radio_button("STR_LOSSLESS_COMPRESSION")) + , m_xQualityLabel(m_xBuilder->weld_label("STR_QUALITY")) + , m_xQuality(m_xBuilder->weld_spin_button("SB_QUALITY")) + , m_xJpegCompression(m_xBuilder->weld_radio_button("STR_JPEG_COMPRESSION")) + , m_xResolution(m_xBuilder->weld_combo_box("LB_RESOLUTION")) + , m_xRemoveCropArea(m_xBuilder->weld_check_button("STR_REMOVE_CROP_AREA")) + , m_xEmbedLinkedGraphics(m_xBuilder->weld_check_button("STR_EMBED_LINKED_GRAPHICS")) +{ + m_xRemoveCropArea->connect_toggled(LINK(this, ImagesPage, RemoveCropAreaActionPerformed)); + m_xEmbedLinkedGraphics->connect_toggled(LINK(this, ImagesPage, EmbedLinkedGraphicsActionPerformed)); + m_xResolution->connect_changed(LINK(this, ImagesPage, ComboBoxActionPerformed)); + m_xQuality->connect_value_changed(LINK(this, ImagesPage, SpinButtonActionPerformed)); - setPropertyValues(aNames, aValues); + m_xJpegCompression->connect_toggled(LINK(this, ImagesPage, CompressionActionPerformed)); + m_xLossLessCompression->connect_toggled(LINK(this, ImagesPage, CompressionActionPerformed)); } +void ImagesPage::UpdateControlStates(bool bJPEGCompression, int nJPEGQuality, bool bRemoveCropArea, + int nResolution, bool bEmbedLinkedGraphics) +{ + m_xLossLessCompression->set_active(!bJPEGCompression); + m_xJpegCompression->set_active(bJPEGCompression); + m_xQualityLabel->set_sensitive(bJPEGCompression); + m_xQuality->set_sensitive(bJPEGCompression); + m_xQuality->set_value(nJPEGQuality); + m_xResolution->set_active_id(OUString::number(nResolution)); + m_xRemoveCropArea->set_active(bRemoveCropArea); + m_xEmbedLinkedGraphics->set_active(bEmbedLinkedGraphics); +} -void OptimizerDialog::InitRoadmap() +ObjectsPage::ObjectsPage(weld::Container* pPage, OptimizerDialog& rOptimizerDialog) + : vcl::OWizardPage(pPage, &rOptimizerDialog, "modules/simpress/ui/pmobjectspage.ui", "PMObjectsPage") + , mrOptimizerDialog(rOptimizerDialog) + , m_xCreateStaticImage(m_xBuilder->weld_check_button("STR_OLE_REPLACE")) + , m_xAllOLEObjects(m_xBuilder->weld_radio_button("STR_ALL_OLE_OBJECTS")) + , m_xForeignOLEObjects(m_xBuilder->weld_radio_button("STR_ALIEN_OLE_OBJECTS_ONLY")) + , m_xLabel(m_xBuilder->weld_label("STR_OLE_OBJECTS_DESC")) { - try - { - OUString pNames[] = { - OUString("Height"), - OUString("PositionX"), - OUString("PositionY"), - OUString("Step"), - OUString("TabIndex"), - OUString("Width") }; - - Any pValues[] = { - Any( sal_Int32( DIALOG_HEIGHT - 26 ) ), - Any( sal_Int32( 0 ) ), - Any( sal_Int32( 0 ) ), - Any( sal_Int32( 0 ) ), - Any( mnTabIndex++ ), - Any( sal_Int32( 85 ) ) }; - - sal_Int32 nCount = SAL_N_ELEMENTS( pNames ); - - Sequence< OUString > aNames( pNames, nCount ); - Sequence< Any > aValues( pValues, nCount ); - - mxRoadmapControlModel = insertControlModel( "com.sun.star.awt.UnoControlRoadmapModel", - "rdmNavi", aNames, aValues ); - - Reference< XPropertySet > xPropertySet( mxRoadmapControlModel, UNO_QUERY_THROW ); - xPropertySet->setPropertyValue( "Name", Any( OUString("rdmNavi") ) ); - mxRoadmapControl = getControl( "rdmNavi" ); - InsertRoadmapItem( 0, getString( STR_INTRODUCTION ), ITEM_ID_INTRODUCTION ); - InsertRoadmapItem( 1, getString( STR_SLIDES ), ITEM_ID_SLIDES ); - InsertRoadmapItem( 2, getString( STR_IMAGE_OPTIMIZATION ), ITEM_ID_GRAPHIC_OPTIMIZATION ); - InsertRoadmapItem( 3, getString( STR_OLE_OBJECTS ), ITEM_ID_OLE_OPTIMIZATION ); - InsertRoadmapItem( 4, getString( STR_SUMMARY ), ITEM_ID_SUMMARY ); - - xPropertySet->setPropertyValue( "ImageURL", Any( OUString("private:graphicrepository/" BMP_PRESENTATION_MINIMIZER) ) ); - xPropertySet->setPropertyValue( "Activated", Any( true ) ); - xPropertySet->setPropertyValue( "Complete", Any( true ) ); - xPropertySet->setPropertyValue( "CurrentItemID", Any( sal_Int16(ITEM_ID_INTRODUCTION) ) ); - xPropertySet->setPropertyValue( "Text", Any( getString( STR_STEPS ) ) ); - } - catch( Exception& ) - { - } + m_xCreateStaticImage->connect_toggled(LINK(this, ObjectsPage, OLEOptimizationActionPerformed)); + m_xAllOLEObjects->connect_toggled(LINK(this, ObjectsPage, OLEActionPerformed)); + m_xForeignOLEObjects->connect_toggled(LINK(this, ObjectsPage, OLEActionPerformed)); } +void ObjectsPage::Init(const OUString& rDesc) +{ + m_xLabel->set_label(rDesc); +} -void OptimizerDialog::InsertRoadmapItem( const sal_Int32 nIndex, const OUString& rLabel, const sal_Int32 nItemID ) +void ObjectsPage::UpdateControlStates(bool bConvertOLEObjects, int nOLEOptimizationType) { - try - { - Reference< XSingleServiceFactory > xSFRoadmap( mxRoadmapControlModel, UNO_QUERY_THROW ); - Reference< XIndexContainer > aIndexContainerRoadmap( mxRoadmapControlModel, UNO_QUERY_THROW ); - Reference< XInterface > xRoadmapItem( xSFRoadmap->createInstance(), UNO_SET_THROW ); - Reference< XPropertySet > xPropertySet( xRoadmapItem, UNO_QUERY_THROW ); - xPropertySet->setPropertyValue( "Label", Any( rLabel ) ); - xPropertySet->setPropertyValue( "Enabled", Any( true ) ); - xPropertySet->setPropertyValue( "ID", Any( nItemID ) ); - aIndexContainerRoadmap->insertByIndex( nIndex, Any( xRoadmapItem ) ); - } - catch( Exception& ) - { + m_xCreateStaticImage->set_active(bConvertOLEObjects); + m_xAllOLEObjects->set_sensitive(bConvertOLEObjects); + m_xForeignOLEObjects->set_sensitive(bConvertOLEObjects); + m_xAllOLEObjects->set_active(nOLEOptimizationType == 0); + m_xForeignOLEObjects->set_active(nOLEOptimizationType == 1); +} - } +SummaryPage::SummaryPage(weld::Container* pPage, OptimizerDialog& rOptimizerDialog) + : vcl::OWizardPage(pPage, &rOptimizerDialog, "modules/simpress/ui/pmsummarypage.ui", "PMSummaryPage") + , mrOptimizerDialog(rOptimizerDialog) + , m_xLabel1(m_xBuilder->weld_label("LABEL1")) + , m_xLabel2(m_xBuilder->weld_label("LABEL2")) + , m_xLabel3(m_xBuilder->weld_label("LABEL3")) + , m_xCurrentSize(m_xBuilder->weld_label("CURRENT_FILESIZE")) + , m_xEstimatedSize(m_xBuilder->weld_label("ESTIMATED_FILESIZE")) + , m_xStatus(m_xBuilder->weld_label("STR_STATUS")) + , m_xProgress(m_xBuilder->weld_progress_bar("PROGRESS")) + , m_xApplyToCurrent(m_xBuilder->weld_radio_button("STR_APPLY_TO_CURRENT")) + , m_xSaveToNew(m_xBuilder->weld_radio_button("STR_SAVE_AS")) + , m_xComboBox(m_xBuilder->weld_combo_box("MY_SETTINGS")) + , m_xSaveSettings(m_xBuilder->weld_check_button("STR_SAVE_SETTINGS")) +{ + m_xApplyToCurrent->connect_toggled(LINK(this, SummaryPage, SaveAsNewActionPerformed)); + m_xSaveToNew->connect_toggled(LINK(this, SummaryPage, SaveAsNewActionPerformed)); + m_xSaveSettings->connect_toggled(LINK(this, SummaryPage, SaveSettingsActionPerformed)); } +void SummaryPage::Init(const OUString& rSettingsName, bool bIsReadonly) +{ + m_xComboBox->set_entry_text(rSettingsName); + m_xApplyToCurrent->set_sensitive(!bIsReadonly); + m_xSaveToNew->set_sensitive(!bIsReadonly); +} -void OptimizerDialog::UpdateConfiguration() +void SummaryPage::UpdateControlStates(bool bSaveAs, bool bSaveSettingsEnabled, + const std::vector<OUString>& rItemList, + const std::vector<OUString>& rSummaryStrings, + const OUString& rCurrentFileSize, + const OUString& rEstimatedFileSize) { - sal_Int16 nInt16 = 0; - Any aAny; + m_xApplyToCurrent->set_active(!bSaveAs); + m_xSaveToNew->set_active(bSaveAs); - Sequence< sal_Int16 > aSelectedItems; - Sequence< OUString > aStringItemList; + for (const auto& a : rItemList) + m_xComboBox->append_text(a); - // page0 - aAny = getControlProperty( "ListBox0Pg0", "SelectedItems" ); - if ( aAny >>= aSelectedItems ) - { - if ( aSelectedItems.hasElements() ) - { - sal_Int16 nSelectedItem = aSelectedItems[ 0 ]; - aAny = getControlProperty( "ListBox0Pg0", "StringItemList" ); - if ( aAny >>= aStringItemList ) - { - if ( aStringItemList.getLength() > nSelectedItem ) - SetConfigProperty( TK_Name, Any( aStringItemList[ nSelectedItem ] ) ); - } - } - } + m_xSaveSettings->set_sensitive(bSaveSettingsEnabled); + m_xComboBox->set_sensitive(bSaveSettingsEnabled && m_xSaveSettings->get_active()); - aAny = getControlProperty( "CheckBox3Pg3", "State" ); - if ( !((aAny >>= nInt16) && nInt16) ) - return; + assert(rSummaryStrings.size() == 3); + m_xLabel1->set_label(rSummaryStrings[0]); + m_xLabel2->set_label(rSummaryStrings[1]); + m_xLabel3->set_label(rSummaryStrings[2]); - aAny = getControlProperty( "ListBox0Pg3", "SelectedItems" ); - if ( !(aAny >>= aSelectedItems) ) - return; + m_xCurrentSize->set_label(rCurrentFileSize); + m_xEstimatedSize->set_label(rEstimatedFileSize); +} - if ( aSelectedItems.hasElements() ) - { - sal_Int16 nSelectedItem = aSelectedItems[ 0 ]; - aAny = getControlProperty( "ListBox0Pg3", "StringItemList" ); - if ( aAny >>= aStringItemList ) - { - if ( aStringItemList.getLength() > nSelectedItem ) - SetConfigProperty( TK_CustomShowName, Any( aStringItemList[ nSelectedItem ] ) ); - } - } +void SummaryPage::UpdateStatusLabel(const OUString& rStatus) +{ + m_xStatus->set_label(rStatus); +} + +void SummaryPage::UpdateProgressValue(int nProgress) +{ + m_xProgress->set_percentage(nProgress); +} + +void OptimizerDialog::InitDialog() +{ + set_title(getString(STR_SUN_OPTIMIZATION_WIZARD2)); } +void OptimizerDialog::InitRoadmap() +{ + declarePath( + 0, + {ITEM_ID_INTRODUCTION, + ITEM_ID_SLIDES, + ITEM_ID_GRAPHIC_OPTIMIZATION, + ITEM_ID_OLE_OPTIMIZATION, + ITEM_ID_SUMMARY} + ); + +#if 0 + xPropertySet->setPropertyValue( "ImageURL", Any( OUString("private:graphicrepository/" BMP_PRESENTATION_MINIMIZER) ) ); +#endif +} -OptimizerDialog::OptimizerDialog( const Reference< XComponentContext > &rxContext, Reference< XFrame > const & rxFrame, Reference< XDispatch > const & rxStatusDispatcher ) : - UnoDialog( rxContext, rxFrame ), - ConfigurationAccess( rxContext ), - mnCurrentStep( 0 ), - mnTabIndex( 0 ), - mxFrame( rxFrame ), - mxItemListener( new ItemListener( *this ) ), - mxActionListener( new ActionListener( *this ) ), - mxActionListenerListBox0Pg0( new ActionListenerListBox0Pg0( *this ) ), - mxTextListenerFormattedField0Pg1( new TextListenerFormattedField0Pg1( *this ) ), - mxTextListenerComboBox0Pg1( new TextListenerComboBox0Pg1( *this ) ), - mxSpinListenerFormattedField0Pg1( new SpinListenerFormattedField0Pg1( *this ) ), - mxStatusDispatcher( rxStatusDispatcher ) +void OptimizerDialog::UpdateConfiguration() +{ + // page0 + OUString sTKName(mpPage0->Get_TK_Name()); + if (!sTKName.isEmpty()) + SetConfigProperty(TK_Name, Any(sTKName)); + + // page1 + OUString sTKCustomShowName(mpPage1->Get_TK_CustomShowName()); + if (!sTKCustomShowName.isEmpty()) + SetConfigProperty(TK_CustomShowName, Any(sTKCustomShowName)); +} + +OptimizerDialog::OptimizerDialog( const Reference< XComponentContext > &rxContext, Reference< XFrame > const & rxFrame, Reference< XDispatch > const & rxStatusDispatcher ) + : vcl::RoadmapWizardMachine(Application::GetFrameWeld(rxFrame->getComponentWindow())) + , ConfigurationAccess(rxContext) + , mnCurrentStep(0) + , mnTabIndex(0) + , mnEndStatus(RET_CANCEL) + , mxFrame(rxFrame) + , mxController(rxFrame->getController()) + , mxStatusDispatcher(rxStatusDispatcher) { Reference< XStorable > xStorable( mxController->getModel(), UNO_QUERY_THROW ); mbIsReadonly = xStorable->isReadonly(); @@ -225,7 +281,9 @@ OptimizerDialog::OptimizerDialog( const Reference< XComponentContext > &rxContex InitPage2(); InitPage3(); InitPage4(); - ActivatePage( 0 ); + + ActivatePage(); + m_xAssistant->set_current_page(0); OptimizationStats aStats; aStats.InitializeStatusValuesFromDocument( mxController->getModel() ); @@ -233,48 +291,71 @@ OptimizerDialog::OptimizerDialog( const Reference< XComponentContext > &rxContex UpdateStatus( aStatusSequence ); } - -OptimizerDialog::~OptimizerDialog() +OUString OptimizerDialog::getStateDisplayName(vcl::WizardTypes::WizardState nState) const { - // not saving configuration if the dialog has been finished via cancel or close window - if ( endStatus() ) - SaveConfiguration(); + switch (nState) + { + case ITEM_ID_INTRODUCTION: + return getString(STR_INTRODUCTION); + case ITEM_ID_SLIDES: + return getString(STR_SLIDES); + case ITEM_ID_GRAPHIC_OPTIMIZATION: + return getString(STR_IMAGE_OPTIMIZATION); + case ITEM_ID_OLE_OPTIMIZATION: + return getString(STR_OLE_OBJECTS); + case ITEM_ID_SUMMARY: + return getString(STR_SUMMARY); + } + return OUString(); } - -void OptimizerDialog::execute() +std::unique_ptr<BuilderPage> OptimizerDialog::createPage(vcl::WizardTypes::WizardState nState) { - Reference< XItemEventBroadcaster > xRoadmapBroadcaster( mxRoadmapControl, UNO_QUERY_THROW ); - xRoadmapBroadcaster->addItemListener( mxItemListener ); - UnoDialog::execute(); - UpdateConfiguration(); // taking actual control settings for the configuration - xRoadmapBroadcaster->removeItemListener( mxItemListener ); -} + OString sIdent(OString::number(nState)); + weld::Container* pPageContainer = m_xAssistant->append_page(sIdent); + std::unique_ptr<vcl::OWizardPage> xRet; -void OptimizerDialog::SwitchPage( sal_Int16 nNewStep ) -{ - if ( !(( nNewStep != mnCurrentStep ) && ( nNewStep <= MAX_STEP ) && ( nNewStep >= 0 )) ) - return; - - sal_Int16 nOldStep = mnCurrentStep; - if ( nNewStep == 0 ) - disableControl( "btnNavBack" ); - else if ( nOldStep == 0 ) - enableControl( "btnNavBack" ); + switch (nState) + { + case ITEM_ID_INTRODUCTION: + xRet.reset(new IntroPage(pPageContainer, *this)); + mpPage0 = static_cast<IntroPage*>(xRet.get()); + break; + case ITEM_ID_SLIDES: + xRet.reset(new SlidesPage(pPageContainer, *this)); + mpPage1 = static_cast<SlidesPage*>(xRet.get()); + break; + case ITEM_ID_GRAPHIC_OPTIMIZATION: + xRet.reset(new ImagesPage(pPageContainer, *this)); + mpPage2 = static_cast<ImagesPage*>(xRet.get()); + break; + case ITEM_ID_OLE_OPTIMIZATION: + xRet.reset(new ObjectsPage(pPageContainer, *this)); + mpPage3 = static_cast<ObjectsPage*>(xRet.get()); + break; + case ITEM_ID_SUMMARY: + xRet.reset(new SummaryPage(pPageContainer, *this)); + mpPage4 = static_cast<SummaryPage*>(xRet.get()); + break; + }; - if ( nNewStep == MAX_STEP ) - disableControl( "btnNavNext" ); - else if ( nOldStep == MAX_STEP ) - enableControl( "btnNavNext" ); + m_xAssistant->set_page_title(sIdent, getStateDisplayName(nState)); - setControlProperty( "rdmNavi", "CurrentItemID", Any( nNewStep ) ); + return xRet; +} - DeactivatePage( nOldStep ); - UpdateControlStates( nNewStep ); +OptimizerDialog::~OptimizerDialog() +{ + // not saving configuration if the dialog has been finished via cancel or close window + if (mnEndStatus == RET_OK) + SaveConfiguration(); +} - ActivatePage( nNewStep ); - mnCurrentStep = nNewStep; +void OptimizerDialog::execute() +{ + mnEndStatus = run(); + UpdateConfiguration(); // taking actual control settings for the configuration } void OptimizerDialog::UpdateControlStates( sal_Int16 nPage ) @@ -297,27 +378,6 @@ void OptimizerDialog::UpdateControlStates( sal_Int16 nPage ) } } - -OUString OptimizerDialog::GetSelectedString( OUString const & token ) -{ - OUString aSelectedItem; - Sequence< sal_Int16 > sSelectedItems; - Sequence< OUString > sItemList; - - if ( ( getControlProperty( token, "SelectedItems" ) >>= sSelectedItems ) && - ( getControlProperty( token, "StringItemList" ) >>= sItemList ) ) - { - if ( sSelectedItems.getLength() == 1 ) - { - sal_Int16 nSelectedItem = sSelectedItems[ 0 ]; - if ( nSelectedItem < sItemList.getLength() ) - aSelectedItem = sItemList[ nSelectedItem ]; - } - } - return aSelectedItem; -} - - void OptimizerDialog::UpdateStatus( const css::uno::Sequence< css::beans::PropertyValue >& rStatus ) { maStats.InitializeStatusValues( rStatus ); @@ -327,8 +387,7 @@ void OptimizerDialog::UpdateStatus( const css::uno::Sequence< css::beans::Proper OUString sStatus; if ( *pVal >>= sStatus ) { - setControlProperty( "FixedText1Pg4", "Enabled", Any( true ) ); - setControlProperty( "FixedText1Pg4", "Label", Any( getString( TKGet( sStatus ) ) ) ); + mpPage4->UpdateStatusLabel(getString(TKGet(sStatus))); } } pVal = maStats.GetStatusValue( TK_Progress ); @@ -336,445 +395,284 @@ void OptimizerDialog::UpdateStatus( const css::uno::Sequence< css::beans::Proper { sal_Int32 nProgress = 0; if ( *pVal >>= nProgress ) - setControlProperty( "Progress", "ProgressValue", Any( nProgress ) ); + mpPage4->UpdateProgressValue(nProgress); } pVal = maStats.GetStatusValue( TK_OpenNewDocument ); if ( pVal ) SetConfigProperty( TK_OpenNewDocument, *pVal ); - reschedule(); + Application::Reschedule(true); } - -void ItemListener::itemStateChanged( const ItemEvent& Event ) +IMPL_LINK(SummaryPage, SaveAsNewActionPerformed, weld::Toggleable&, rBox, void) { - try - { - sal_Int16 nState; - Reference< XControl > xControl; - Any aSource( Event.Source ); - if ( aSource >>= xControl ) - { - Reference< XPropertySet > xPropertySet( xControl->getModel(), UNO_QUERY_THROW ); - OUString aControlName; - xPropertySet->getPropertyValue( "Name" ) >>= aControlName; - PPPOptimizerTokenEnum eControl( TKGet( aControlName ) ); - switch( eControl ) - { - case TK_rdmNavi : - { - mrOptimizerDialog.SwitchPage( static_cast< sal_Int16 >( Event.ItemId ) ); - } - break; - case TK_CheckBox1Pg1 : - { - if ( xPropertySet->getPropertyValue( "State" ) >>= nState ) - mrOptimizerDialog.SetConfigProperty( TK_RemoveCropArea, Any( nState != 0 ) ); - } - break; - case TK_CheckBox2Pg1 : - { - if ( xPropertySet->getPropertyValue( "State" ) >>= nState ) - mrOptimizerDialog.SetConfigProperty( TK_EmbedLinkedGraphics, Any( nState != 0 ) ); - } - break; - case TK_CheckBox0Pg2 : - { - if ( xPropertySet->getPropertyValue( "State" ) >>= nState ) - { - mrOptimizerDialog.SetConfigProperty( TK_OLEOptimization, Any( nState != 0 ) ); - mrOptimizerDialog.setControlProperty( "RadioButton0Pg2", "Enabled", Any( nState != 0 ) ); - mrOptimizerDialog.setControlProperty( "RadioButton1Pg2", "Enabled", Any( nState != 0 ) ); - } - } - break; - case TK_RadioButton0Pg1 : - { - sal_Int16 nInt16 = 0; - if ( xPropertySet->getPropertyValue( "State" ) >>= nInt16 ) - { - nInt16 ^= 1; - mrOptimizerDialog.SetConfigProperty( TK_JPEGCompression, Any( nInt16 != 0 ) ); - mrOptimizerDialog.setControlProperty( "FixedText1Pg1", "Enabled", Any( nInt16 != 0 ) ); - mrOptimizerDialog.setControlProperty( "FormattedField0Pg1", "Enabled", Any( nInt16 != 0 ) ); - } - } - break; - case TK_RadioButton1Pg1 : - { - if ( xPropertySet->getPropertyValue( "State" ) >>= nState ) - { - mrOptimizerDialog.SetConfigProperty( TK_JPEGCompression, Any( nState != 0 ) ); - mrOptimizerDialog.setControlProperty( "FixedText1Pg1", "Enabled", Any( nState != 0 ) ); - mrOptimizerDialog.setControlProperty( "FormattedField0Pg1", "Enabled", Any( nState != 0 ) ); - } - } - break; - case TK_RadioButton0Pg2 : - { - sal_Int16 nInt16; - if ( xPropertySet->getPropertyValue( "State" ) >>= nInt16 ) - { - nInt16 ^= 1; - mrOptimizerDialog.SetConfigProperty( TK_OLEOptimizationType, Any( nInt16 ) ); - } - } - break; - case TK_RadioButton1Pg2 : - { - if ( xPropertySet->getPropertyValue( "State" ) >>= nState ) - mrOptimizerDialog.SetConfigProperty( TK_OLEOptimizationType, Any( nState ) ); - } - break; - case TK_CheckBox0Pg3 : - { - if ( xPropertySet->getPropertyValue( "State" ) >>= nState ) - mrOptimizerDialog.SetConfigProperty( TK_DeleteUnusedMasterPages, Any( nState != 0 ) ); - } - break; - case TK_CheckBox1Pg3 : - { - if ( xPropertySet->getPropertyValue( "State" ) >>= nState ) - mrOptimizerDialog.SetConfigProperty( TK_DeleteNotesPages, Any( nState != 0 ) ); - } - break; - case TK_CheckBox2Pg3 : - { - if ( xPropertySet->getPropertyValue( "State" ) >>= nState ) - mrOptimizerDialog.SetConfigProperty( TK_DeleteHiddenSlides, Any( nState != 0 ) ); - } - break; - case TK_CheckBox3Pg3 : - { - if ( xPropertySet->getPropertyValue( "State" ) >>= nState ) - mrOptimizerDialog.setControlProperty( "ListBox0Pg3", "Enabled", Any( nState != 0 ) ); - } - break; - case TK_CheckBox1Pg4 : - { - if ( xPropertySet->getPropertyValue( "State" ) >>= nState ) - mrOptimizerDialog.setControlProperty( "ComboBox0Pg4", "Enabled", Any( nState != 0 ) ); - } - break; - case TK_RadioButton0Pg4 : - case TK_RadioButton1Pg4 : - { - if ( xPropertySet->getPropertyValue( "State" ) >>= nState ) - mrOptimizerDialog.SetConfigProperty( TK_SaveAs, Any( eControl == TK_RadioButton1Pg4 ? nState != 0 : nState == 0 ) ); - } - break; - default: - break; - } - } - } - catch ( Exception& ) - { + if (!rBox.get_active()) + return; - } + const bool bSaveToNew = &rBox == m_xSaveToNew.get(); + mrOptimizerDialog.SetConfigProperty( TK_SaveAs, Any(bSaveToNew) ); } -void ItemListener::disposing( const css::lang::EventObject& /* Source */ ) + +IMPL_LINK(SummaryPage, SaveSettingsActionPerformed, weld::Toggleable&, rBox, void) { + m_xComboBox->set_sensitive(rBox.get_active()); } -void ActionListener::actionPerformed( const ActionEvent& rEvent ) +IMPL_LINK(ObjectsPage, OLEActionPerformed, weld::Toggleable&, rBox, void) { - switch( TKGet( rEvent.ActionCommand ) ) - { ... etc. - the rest is truncated