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">&lt; ~Back</value>
-        </prop>
-        <prop oor:name="STR_NEXT">
-            <value xml:lang="en-US">~Next &gt;</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;&lt;no change&gt;</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>&lt; ~Back</value>
-                       </prop>
-                       <prop oor:name="STR_NEXT" oor:type="xs:string" 
oor:localized="true">
-               <info><desc>String STR_NEXT.</desc></info>
-                               <value>~Next &gt;</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;&lt;no change&gt;</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">&lt;no change&gt;</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

Reply via email to