[Libreoffice-commits] core.git: extensions/AllLangResTarget_scn.mk extensions/Module_extensions.mk extensions/source extensions/uiconfig extensions/UIConfig_scanner.mk scp2/source vcl/source

Palenik Mihály palenik.mihaly at gmail.com
Wed Jun 11 06:27:55 PDT 2014


 extensions/AllLangResTarget_scn.mk           |    1 
 extensions/Module_extensions.mk              |    1 
 extensions/UIConfig_scanner.mk               |   16 
 extensions/source/scanner/sanedlg.cxx        |  350 ++++++-------
 extensions/source/scanner/sanedlg.hrc        |   44 -
 extensions/source/scanner/sanedlg.hxx        |   73 +-
 extensions/source/scanner/sanedlg.src        |  283 -----------
 extensions/uiconfig/scanner.ui               |  480 ------------------
 extensions/uiconfig/scanner/ui/sanedialog.ui |  688 +++++++++++++++++++++++++++
 scp2/source/ooo/file_ooo.scp                 |    1 
 vcl/source/window/builder.cxx                |    8 
 11 files changed, 917 insertions(+), 1028 deletions(-)

New commits:
commit f188c982d5b8456fadb27ca5b88ece1c6ac1e719
Author: Palenik Mihály <palenik.mihaly at gmail.com>
Date:   Mon Jun 9 15:37:25 2014 +0200

    Convert RID_SANE_DIALOG to .ui
    
    Change-Id: I1f08493cdc18f4c0691a8436368432fe4e94dec3
    Reviewed-on: https://gerrit.libreoffice.org/9696
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/extensions/AllLangResTarget_scn.mk b/extensions/AllLangResTarget_scn.mk
index 2dfa1a2..56dbe69 100644
--- a/extensions/AllLangResTarget_scn.mk
+++ b/extensions/AllLangResTarget_scn.mk
@@ -26,7 +26,6 @@ $(eval $(call gb_SrsTarget_set_include,scn/res,\
 
 $(eval $(call gb_SrsTarget_add_files,scn/res,\
 	extensions/source/scanner/grid.src \
-	extensions/source/scanner/sanedlg.src \
 ))
 
 # vim:set noet sw=4 ts=4:
diff --git a/extensions/Module_extensions.mk b/extensions/Module_extensions.mk
index 139b886..de1fa1b 100644
--- a/extensions/Module_extensions.mk
+++ b/extensions/Module_extensions.mk
@@ -22,6 +22,7 @@ $(eval $(call gb_Module_add_l10n_targets,extensions,\
 	AllLangResTarget_scn \
 	AllLangResTarget_upd \
 	UIConfig_sabpilot \
+	UIConfig_scanner \
 ))
 
 ifneq ($(filter-out IOS ANDROID,$(OS)),)
diff --git a/extensions/UIConfig_scanner.mk b/extensions/UIConfig_scanner.mk
new file mode 100644
index 0000000..21d14c4
--- /dev/null
+++ b/extensions/UIConfig_scanner.mk
@@ -0,0 +1,16 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_UIConfig_UIConfig,modules/scanner))
+
+$(eval $(call gb_UIConfig_add_uifiles,modules/scanner,\
+	extensions/uiconfig/scanner/ui/sanedialog \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/extensions/source/scanner/sanedlg.cxx b/extensions/source/scanner/sanedlg.cxx
index 173ad3b..1ccfa51 100644
--- a/extensions/source/scanner/sanedlg.cxx
+++ b/extensions/source/scanner/sanedlg.cxx
@@ -37,7 +37,7 @@ ResId SaneResId( sal_uInt32 nID )
 }
 
 SaneDlg::SaneDlg( Window* pParent, Sane& rSane, bool bScanEnabled ) :
-        ModalDialog( pParent, SaneResId( RID_SANE_DIALOG ) ),
+        ModalDialog(pParent, "SaneDialog", "modules/scanner/ui/sanedialog.ui"),
         mrSane( rSane ),
         mbDragEnable( false ),
         mbIsDragging( false ),
@@ -45,39 +45,6 @@ SaneDlg::SaneDlg( Window* pParent, Sane& rSane, bool bScanEnabled ) :
         mbDragDrawn( false ),
         meDragDirection( TopLeft ),
         maMapMode( MAP_APPFONT ),
-        maOKButton( this, SaneResId( RID_SCAN_OK ) ),
-        maCancelButton( this, SaneResId( RID_SCAN_CANCEL ) ),
-        maDeviceInfoButton( this, SaneResId( RID_DEVICEINFO_BTN ) ),
-        maPreviewButton( this, SaneResId( RID_PREVIEW_BTN ) ),
-        maScanButton( this, SaneResId( RID_SCAN_BTN ) ),
-        maButtonOption( this, SaneResId( RID_SCAN_BUTTON_OPTION_BTN ) ),
-        maOptionsTxt( this, SaneResId( RID_SCAN_OPTION_TXT ) ),
-        maOptionTitle( this, SaneResId( RID_SCAN_OPTIONTITLE_TXT ) ),
-        maOptionDescTxt( this, SaneResId( RID_SCAN_OPTION_DESC_TXT ) ),
-        maVectorTxt( this, SaneResId( RID_SCAN_NUMERIC_VECTOR_TXT ) ),
-        maScanLeftTxt( this, SaneResId( RID_SCAN_LEFT_TXT ) ),
-        maLeftField( this, SaneResId( RID_SCAN_LEFT_BOX ) ),
-        maScanTopTxt( this, SaneResId( RID_SCAN_TOP_TXT ) ),
-        maTopField( this, SaneResId( RID_SCAN_TOP_BOX ) ),
-        maRightTxt( this, SaneResId( RID_SCAN_RIGHT_TXT ) ),
-        maRightField( this, SaneResId( RID_SCAN_RIGHT_BOX ) ),
-        maBottomTxt( this, SaneResId( RID_SCAN_BOTTOM_TXT ) ),
-        maBottomField( this, SaneResId( RID_SCAN_BOTTOM_BOX ) ),
-        maDeviceBoxTxt( this, SaneResId( RID_DEVICE_BOX_TXT ) ),
-        maDeviceBox( this, SaneResId( RID_DEVICE_BOX ) ),
-        maReslTxt( this, SaneResId( RID_SCAN_RESOLUTION_TXT ) ),
-        maReslBox( this, SaneResId( RID_SCAN_RESOLUTION_BOX ) ),
-        maAdvancedTxt( this, SaneResId( RID_SCAN_ADVANCED_TXT ) ),
-        maAdvancedBox( this, SaneResId( RID_SCAN_ADVANCED_BOX ) ),
-        maVectorBox( this, SaneResId( RID_SCAN_NUMERIC_VECTOR_BOX ) ),
-        maQuantumRangeBox( this, SaneResId( RID_SCAN_QUANTUM_RANGE_BOX ) ),
-        maStringRangeBox( this, SaneResId( RID_SCAN_STRING_RANGE_BOX ) ),
-        maPreviewBox( this, SaneResId( RID_PREVIEW_BOX ) ),
-        maAreaBox( this, SaneResId( RID_SCANAREA_BOX ) ),
-        maBoolCheckBox( this, SaneResId( RID_SCAN_BOOL_OPTION_BOX ) ),
-        maStringEdit( this, SaneResId( RID_SCAN_STRING_OPTION_EDT ) ),
-        maNumericEdit( this, SaneResId( RID_SCAN_NUMERIC_OPTION_EDT ) ),
-        maOptionBox( this, SaneResId( RID_SCAN_OPTION_BOX ) ),
         mnCurrentOption(0),
         mnCurrentElement(0),
         mpRange(0),
@@ -85,6 +52,39 @@ SaneDlg::SaneDlg( Window* pParent, Sane& rSane, bool bScanEnabled ) :
         mfMax(0.0),
         doScan(false)
 {
+    get(mpOKButton, "ok");
+    get(mpCancelButton, "cancel");
+    get(mpDeviceInfoButton, "deviceInfoButton");
+    get(mpPreviewButton, "previewButton");
+    get(mpScanButton, "scanButton");
+    get(mpButtonOption, "optionsButton");
+    get(mpOptionTitle, "optionTitleLabel");
+    Size aSize(LogicToPixel(Size(130, 102), MAP_APPFONT));
+    mpOptionTitle->set_width_request(aSize.Width());
+    mpOptionTitle->set_height_request(aSize.Height() / 2);
+    get(mpOptionDescTxt, "optionsDescLabel");
+    get(mpVectorTxt, "vectorLabel");
+    get(mpLeftField, "leftSpinbutton");
+    get(mpTopField, "topSpinbutton");
+    get(mpRightField, "rightSpinbutton");
+    get(mpBottomField, "bottomSpinbutton");
+    get(mpDeviceBox, "deviceCombobox");
+    mpDeviceBox->SetStyle(mpDeviceBox->GetStyle() | WB_SORT);
+    get(mpReslBox, "reslCombobox");
+    get(mpAdvancedBox, "advancedCheckbutton");
+    get(mpVectorBox, "vectorSpinbutton-nospin");
+    get(mpQuantumRangeBox, "quantumRangeCombobox");
+    get(mpStringRangeBox, "stringRangeCombobox");
+    get(mpStringEdit, "stringEntry");
+    get(mpNumericEdit, "numericEntry");
+    get(mpOptionBox, "optionSvTreeListBox");
+    mpOptionBox->set_width_request(aSize.Width());
+    mpOptionBox->set_height_request(aSize.Height());
+    get(mpBoolCheckBox, "boolCheckbutton");
+    get(mpPreview, "preview");
+    aSize = LogicToPixel(Size(PREVIEW_WIDTH, PREVIEW_HEIGHT), MAP_APPFONT);
+    mpPreview->set_width_request(aSize.Width());
+    mpPreview->set_height_request(aSize.Height());
     if( Sane::IsSane() )
     {
         InitDevices(); // opens first sane device
@@ -92,41 +92,38 @@ SaneDlg::SaneDlg( Window* pParent, Sane& rSane, bool bScanEnabled ) :
         InitFields();
     }
 
-    maDeviceInfoButton.SetClickHdl( LINK( this, SaneDlg, ClickBtnHdl ) );
-    maPreviewButton.SetClickHdl( LINK( this, SaneDlg, ClickBtnHdl ) );
-    maScanButton.SetClickHdl( LINK( this, SaneDlg, ClickBtnHdl ) );
-    maButtonOption.SetClickHdl( LINK( this, SaneDlg, ClickBtnHdl ) );
-    maDeviceBox.SetSelectHdl( LINK( this, SaneDlg, SelectHdl ) );
-    maOptionBox.SetSelectHdl( LINK( this, SaneDlg, OptionsBoxSelectHdl ) );
-    maOKButton.SetClickHdl( LINK( this, SaneDlg, ClickBtnHdl ) );
-    maCancelButton.SetClickHdl( LINK( this, SaneDlg, ClickBtnHdl ) );
-    maBoolCheckBox.SetClickHdl( LINK( this, SaneDlg, ClickBtnHdl ) );
-    maStringEdit.SetModifyHdl( LINK( this, SaneDlg, ModifyHdl ) );
-    maNumericEdit.SetModifyHdl( LINK( this, SaneDlg, ModifyHdl ) );
-    maVectorBox.SetModifyHdl( LINK( this, SaneDlg, ModifyHdl ) );
-    maReslBox.SetModifyHdl( LINK( this, SaneDlg, ModifyHdl ) );
-    maStringRangeBox.SetSelectHdl( LINK( this, SaneDlg, SelectHdl ) );
-    maQuantumRangeBox.SetSelectHdl( LINK( this, SaneDlg, SelectHdl ) );
-    maLeftField.SetModifyHdl( LINK( this, SaneDlg, ModifyHdl ) );
-    maRightField.SetModifyHdl( LINK( this, SaneDlg, ModifyHdl ) );
-    maTopField.SetModifyHdl( LINK( this, SaneDlg, ModifyHdl ) );
-    maBottomField.SetModifyHdl( LINK( this, SaneDlg, ModifyHdl ) );
-    maAdvancedBox.SetClickHdl( LINK( this, SaneDlg, ClickBtnHdl ) );
+    mpDeviceInfoButton->SetClickHdl( LINK( this, SaneDlg, ClickBtnHdl ) );
+    mpPreviewButton->SetClickHdl( LINK( this, SaneDlg, ClickBtnHdl ) );
+    mpScanButton->SetClickHdl( LINK( this, SaneDlg, ClickBtnHdl ) );
+    mpButtonOption->SetClickHdl( LINK( this, SaneDlg, ClickBtnHdl ) );
+    mpDeviceBox->SetSelectHdl( LINK( this, SaneDlg, SelectHdl ) );
+    mpOptionBox->SetSelectHdl( LINK( this, SaneDlg, OptionsBoxSelectHdl ) );
+    mpOKButton->SetClickHdl( LINK( this, SaneDlg, ClickBtnHdl ) );
+    mpCancelButton->SetClickHdl( LINK( this, SaneDlg, ClickBtnHdl ) );
+    mpBoolCheckBox->SetClickHdl( LINK( this, SaneDlg, ClickBtnHdl ) );
+    mpStringEdit->SetModifyHdl( LINK( this, SaneDlg, ModifyHdl ) );
+    mpNumericEdit->SetModifyHdl( LINK( this, SaneDlg, ModifyHdl ) );
+    mpVectorBox->SetModifyHdl( LINK( this, SaneDlg, ModifyHdl ) );
+    mpReslBox->SetModifyHdl( LINK( this, SaneDlg, ModifyHdl ) );
+    mpStringRangeBox->SetSelectHdl( LINK( this, SaneDlg, SelectHdl ) );
+    mpQuantumRangeBox->SetSelectHdl( LINK( this, SaneDlg, SelectHdl ) );
+    mpLeftField->SetModifyHdl( LINK( this, SaneDlg, ModifyHdl ) );
+    mpRightField->SetModifyHdl( LINK( this, SaneDlg, ModifyHdl ) );
+    mpTopField->SetModifyHdl( LINK( this, SaneDlg, ModifyHdl ) );
+    mpBottomField->SetModifyHdl( LINK( this, SaneDlg, ModifyHdl ) );
+    mpAdvancedBox->SetClickHdl( LINK( this, SaneDlg, ClickBtnHdl ) );
 
     maOldLink = mrSane.SetReloadOptionsHdl( LINK( this, SaneDlg, ReloadSaneOptionsHdl ) );
 
-    maOptionBox.SetNodeBitmaps(
-        Image(Bitmap( SaneResId(RID_SCAN_BITMAP_PLUS) )),
-        Image(Bitmap( SaneResId(RID_SCAN_BITMAP_MINUS) ))
-        );
-    maOptionBox.SetStyle( maOptionBox.GetStyle()|
+    mpOptionBox->SetNodeBitmaps(get<FixedImage>("plus")->GetImage(),
+        get<FixedImage>("minus")->GetImage());
+    mpOptionBox->SetStyle( mpOptionBox->GetStyle()|
                           WB_HASLINES           |
                           WB_HASBUTTONS         |
                           WB_NOINITIALSELECTION |
                           WB_HASBUTTONSATROOT   |
                           WB_HASLINESATROOT
                         );
-    FreeResource();
 }
 
 SaneDlg::~SaneDlg()
@@ -139,7 +136,7 @@ short SaneDlg::Execute()
     if( ! Sane::IsSane() )
     {
         ErrorBox aErrorBox( NULL, WB_OK | WB_DEF_OK,
-                            SaneResId(RID_SANE_NOSANELIB_TXT).toString() );
+                            "The SANE interface could not be initialized. Scanning is not possible." );
         aErrorBox.Execute();
         return sal_False;
     }
@@ -155,13 +152,13 @@ void SaneDlg::InitDevices()
     if( mrSane.IsOpen() )
         mrSane.Close();
     mrSane.ReloadDevices();
-    maDeviceBox.Clear();
+    mpDeviceBox->Clear();
     for( int i = 0; i < Sane::CountDevices(); i++ )
-        maDeviceBox.InsertEntry( Sane::GetName( i ) );
+        mpDeviceBox->InsertEntry( Sane::GetName( i ) );
     if( Sane::CountDevices() )
     {
         mrSane.Open( 0 );
-        maDeviceBox.SelectEntry( Sane::GetName( 0 ) );
+        mpDeviceBox->SelectEntry( Sane::GetName( 0 ) );
 
     }
 }
@@ -184,10 +181,10 @@ void SaneDlg::InitFields()
     };
 
     mbDragEnable = true;
-    maReslBox.Clear();
+    mpReslBox->Clear();
     maMinTopLeft = Point( 0, 0 );
     maMaxBottomRight = Point( PREVIEW_WIDTH,  PREVIEW_HEIGHT );
-    maScanButton.Show( mbScanEnabled );
+    mpScanButton->Show( mbScanEnabled );
 
     if( ! mrSane.IsOpen() )
         return;
@@ -201,28 +198,28 @@ void SaneDlg::InitFields()
         bSuccess = mrSane.GetOptionValue( nOption, fRes );
         if( bSuccess )
         {
-            maReslBox.Enable( true );
+            mpReslBox->Enable( true );
 
-            maReslBox.SetValue( (long)fRes );
+            mpReslBox->SetValue( (long)fRes );
             double *pDouble = NULL;
             nValue = mrSane.GetRange( nOption, pDouble );
             if( nValue > -1 )
             {
                 if( nValue )
                 {
-                    maReslBox.SetMin( (long)pDouble[0] );
-                    maReslBox.SetMax( (long)pDouble[ nValue-1 ] );
+                    mpReslBox->SetMin( (long)pDouble[0] );
+                    mpReslBox->SetMax( (long)pDouble[ nValue-1 ] );
                     for( i=0; i<nValue; i++ )
                     {
                         if( i == 0 || i == nValue-1 || ! ( ((int)pDouble[i]) % 20) )
-                            maReslBox.InsertValue( (long)pDouble[i] );
+                            mpReslBox->InsertValue( (long)pDouble[i] );
                     }
                 }
                 else
                 {
-                    maReslBox.SetMin( (long)pDouble[0] );
-                    maReslBox.SetMax( (long)pDouble[1] );
-                    maReslBox.InsertValue( (long)pDouble[0] );
+                    mpReslBox->SetMin( (long)pDouble[0] );
+                    mpReslBox->SetMax( (long)pDouble[1] );
+                    mpReslBox->InsertValue( (long)pDouble[0] );
                     // Can only select 75 and 2400 dpi in Scanner dialogue
                     // scanner allows random setting of dpi resolution, a slider might be useful
                     // support that
@@ -234,18 +231,18 @@ void SaneDlg::InitFields()
                         if ( !bGot300 && nRes > 300 ) {
                             nRes = 300; bGot300 = 1;
                         }
-                        maReslBox.InsertValue(nRes);
+                        mpReslBox->InsertValue(nRes);
                     }
-                    maReslBox.InsertValue( (long)pDouble[1] );
+                    mpReslBox->InsertValue( (long)pDouble[1] );
                 }
             }
             else
-                maReslBox.Enable( false );
+                mpReslBox->Enable( false );
             delete [] pDouble;
         }
     }
     else
-        maReslBox.Enable( false );
+        mpReslBox->Enable( false );
 
     // set scan area
     for( i = 0; i < 4; i++ )
@@ -256,19 +253,19 @@ void SaneDlg::InitFields()
         {
             case 0:
                 pOptionName = "tl-x";
-                pField = &maLeftField;
+                pField = mpLeftField;
                 break;
             case 1:
                 pOptionName = "tl-y";
-                pField = &maTopField;
+                pField = mpTopField;
                 break;
             case 2:
                 pOptionName = "br-x";
-                pField = &maRightField;
+                pField = mpRightField;
                 break;
             case 3:
                 pOptionName = "br-y";
-                pField = &maBottomField;
+                pField = mpBottomField;
         }
         nOption = pOptionName ? mrSane.GetOptionByName( pOptionName ) : -1;
         bSuccess = false;
@@ -365,7 +362,7 @@ void SaneDlg::InitFields()
                                      maBottomRight.Y() - maTopLeft.Y() )
                                );
     // fill OptionBox
-    maOptionBox.Clear();
+    mpOptionBox->Clear();
     SvTreeListEntry* pParentEntry = 0;
     bool bGroupRejected = false;
     for( i = 1; i < mrSane.CountOptions(); i++ )
@@ -373,13 +370,13 @@ void SaneDlg::InitFields()
         OUString aOption=mrSane.GetOptionName( i );
         bool bInsertAdvanced =
             mrSane.GetOptionCap( i ) & SANE_CAP_ADVANCED &&
-            ! maAdvancedBox.IsChecked() ? sal_False : sal_True;
+            ! mpAdvancedBox->IsChecked() ? sal_False : sal_True;
         if( mrSane.GetOptionType( i ) == SANE_TYPE_GROUP )
         {
             if( bInsertAdvanced )
             {
                 aOption = mrSane.GetOptionTitle( i );
-                pParentEntry = maOptionBox.InsertEntry( aOption );
+                pParentEntry = mpOptionBox->InsertEntry( aOption );
                 bGroupRejected = false;
             }
             else
@@ -403,9 +400,9 @@ void SaneDlg::InitFields()
             if( ! bIsSpecial )
             {
                 if( pParentEntry )
-                    maOptionBox.InsertEntry( aOption, pParentEntry );
+                    mpOptionBox->InsertEntry( aOption, pParentEntry );
                 else
-                    maOptionBox.InsertEntry( aOption );
+                    mpOptionBox->InsertEntry( aOption );
             }
         }
     }
@@ -415,9 +412,9 @@ IMPL_LINK( SaneDlg, ClickBtnHdl, Button*, pButton )
 {
     if( mrSane.IsOpen() )
     {
-        if( pButton == &maDeviceInfoButton )
+        if( pButton == mpDeviceInfoButton )
         {
-            OUString aString(SaneResId(RID_SANE_DEVICEINFO_TXT).toString());
+            OUString aString("Device: %s\nVendor: %s\nModel: %s\nType: %s");
             aString = aString.replaceFirst( "%s", Sane::GetName( mrSane.GetDeviceNumber() ) );
             aString = aString.replaceFirst( "%s", Sane::GetVendor( mrSane.GetDeviceNumber() ) );
             aString = aString.replaceFirst( "%s", Sane::GetModel( mrSane.GetDeviceNumber() ) );
@@ -425,14 +422,14 @@ IMPL_LINK( SaneDlg, ClickBtnHdl, Button*, pButton )
             InfoBox aInfoBox( this, aString );
             aInfoBox.Execute();
         }
-        else if( pButton == &maPreviewButton )
+        else if( pButton == mpPreviewButton )
             AcquirePreview();
-        else if( pButton == &maBoolCheckBox )
+        else if( pButton == mpBoolCheckBox )
         {
             mrSane.SetOptionValue( mnCurrentOption,
-                                   maBoolCheckBox.IsChecked() );
+                                   mpBoolCheckBox->IsChecked() );
         }
-        else if( pButton == &maButtonOption )
+        else if( pButton == mpButtonOption )
         {
 
             SANE_Value_Type nType = mrSane.GetOptionType( mnCurrentOption );
@@ -464,21 +461,21 @@ IMPL_LINK( SaneDlg, ClickBtnHdl, Button*, pButton )
                     break;
             }
         }
-        else if( pButton == &maAdvancedBox )
+        else if( pButton == mpAdvancedBox )
         {
             ReloadSaneOptionsHdl( NULL );
         }
     }
-    if( pButton == &maOKButton || pButton == &maScanButton )
+    if( pButton == mpOKButton || pButton == mpScanButton )
     {
-        double fRes = (double)maReslBox.GetValue();
+        double fRes = (double)mpReslBox->GetValue();
         SetAdjustedNumericalValue( "resolution", fRes );
         UpdateScanArea( true );
         SaveState();
         EndDialog( mrSane.IsOpen() ? 1 : 0 );
-        doScan = (pButton == &maScanButton);
+        doScan = (pButton == mpScanButton);
     }
-    else if( pButton == &maCancelButton )
+    else if( pButton == mpCancelButton )
     {
         mrSane.Close();
         EndDialog( 0 );
@@ -488,9 +485,9 @@ IMPL_LINK( SaneDlg, ClickBtnHdl, Button*, pButton )
 
 IMPL_LINK( SaneDlg, SelectHdl, ListBox*, pListBox )
 {
-    if( pListBox == &maDeviceBox && Sane::IsSane() && Sane::CountDevices() )
+    if( pListBox == mpDeviceBox && Sane::IsSane() && Sane::CountDevices() )
     {
-        OUString aNewDevice = maDeviceBox.GetSelectEntry();
+        OUString aNewDevice = mpDeviceBox->GetSelectEntry();
         int nNumber;
         if( aNewDevice == Sane::GetName( nNumber = mrSane.GetDeviceNumber() ) )
         {
@@ -501,16 +498,16 @@ IMPL_LINK( SaneDlg, SelectHdl, ListBox*, pListBox )
     }
     if( mrSane.IsOpen() )
     {
-        if( pListBox == &maQuantumRangeBox )
+        if( pListBox == mpQuantumRangeBox )
         {
-            OString aValue(OUStringToOString(maQuantumRangeBox.GetSelectEntry(),
+            OString aValue(OUStringToOString(mpQuantumRangeBox->GetSelectEntry(),
                 osl_getThreadTextEncoding()));
             double fValue = atof(aValue.getStr());
             mrSane.SetOptionValue( mnCurrentOption, fValue, mnCurrentElement );
         }
-        else if( pListBox == &maStringRangeBox )
+        else if( pListBox == mpStringRangeBox )
         {
-            mrSane.SetOptionValue( mnCurrentOption, maStringRangeBox.GetSelectEntry() );
+            mrSane.SetOptionValue( mnCurrentOption, mpStringRangeBox->GetSelectEntry() );
         }
     }
     return 0;
@@ -518,17 +515,17 @@ IMPL_LINK( SaneDlg, SelectHdl, ListBox*, pListBox )
 
 IMPL_LINK( SaneDlg, OptionsBoxSelectHdl, SvTreeListBox*, pBox )
 {
-    if( pBox == &maOptionBox && Sane::IsSane() )
+    if( pBox == mpOptionBox && Sane::IsSane() )
     {
         OUString aOption =
-            maOptionBox.GetEntryText( maOptionBox.FirstSelected() );
+            mpOptionBox->GetEntryText( mpOptionBox->FirstSelected() );
         int nOption = mrSane.GetOptionByName(OUStringToOString(aOption,
             osl_getThreadTextEncoding()).getStr());
         if( nOption != -1 && nOption != mnCurrentOption )
         {
             DisableOption();
             mnCurrentOption = nOption;
-            maOptionTitle.SetText( mrSane.GetOptionTitle( mnCurrentOption ) );
+            mpOptionTitle->SetText( mrSane.GetOptionTitle( mnCurrentOption ) );
             SANE_Value_Type nType = mrSane.GetOptionType( mnCurrentOption );
             SANE_Constraint_Type nConstraint;
             switch( nType )
@@ -559,12 +556,12 @@ IMPL_LINK( SaneDlg, OptionsBoxSelectHdl, SvTreeListBox*, pBox )
                     {
                         if( nElements <= 10 )
                         {
-                            maVectorBox.SetValue( 1 );
-                            maVectorBox.SetMin( 1 );
-                            maVectorBox.SetMax(
+                            mpVectorBox->SetValue( 1 );
+                            mpVectorBox->SetMin( 1 );
+                            mpVectorBox->SetMax(
                                 mrSane.GetOptionElements( mnCurrentOption ) );
-                            maVectorBox.Show( true );
-                            maVectorTxt.Show( true );
+                            mpVectorBox->Show( true );
+                            mpVectorTxt->Show( true );
                         }
                         else
                         {
@@ -589,13 +586,13 @@ IMPL_LINK( SaneDlg, ModifyHdl, Edit*, pEdit )
 {
     if( mrSane.IsOpen() )
     {
-        if( pEdit == &maStringEdit )
+        if( pEdit == mpStringEdit )
         {
-            mrSane.SetOptionValue( mnCurrentOption, maStringEdit.GetText() );
+            mrSane.SetOptionValue( mnCurrentOption, mpStringEdit->GetText() );
         }
-        else if( pEdit == &maReslBox )
+        else if( pEdit == mpReslBox )
         {
-            double fRes = (double)maReslBox.GetValue();
+            double fRes = (double)mpReslBox->GetValue();
             int nOption = mrSane.GetOptionByName( "resolution" );
             if( nOption != -1 )
             {
@@ -620,13 +617,13 @@ IMPL_LINK( SaneDlg, ModifyHdl, Edit*, pEdit )
                         fRes = pDouble[ 1 ];
                 }
                 delete[] pDouble;
-                maReslBox.SetValue( (sal_uLong)fRes );
+                mpReslBox->SetValue( (sal_uLong)fRes );
             }
         }
-        else if( pEdit == &maNumericEdit )
+        else if( pEdit == mpNumericEdit )
         {
             double fValue;
-            OString aContents(OUStringToOString(maNumericEdit.GetText(),
+            OString aContents(OUStringToOString(mpNumericEdit->GetText(),
                 osl_getThreadTextEncoding()));
             fValue = atof(aContents.getStr());
             if( mfMin != mfMax && ( fValue < mfMin || fValue > mfMax ) )
@@ -637,45 +634,45 @@ IMPL_LINK( SaneDlg, ModifyHdl, Edit*, pEdit )
                 else if( fValue > mfMax )
                     fValue = mfMax;
                 sprintf( pBuf, "%g", fValue );
-                maNumericEdit.SetText( OUString( pBuf, strlen(pBuf), osl_getThreadTextEncoding() ) );
+                mpNumericEdit->SetText( OUString( pBuf, strlen(pBuf), osl_getThreadTextEncoding() ) );
             }
             mrSane.SetOptionValue( mnCurrentOption, fValue, mnCurrentElement );
         }
-        else if( pEdit == &maVectorBox )
+        else if( pEdit == mpVectorBox )
         {
             char pBuf[256];
-            mnCurrentElement = maVectorBox.GetValue()-1;
+            mnCurrentElement = mpVectorBox->GetValue()-1;
             double fValue;
             mrSane.GetOptionValue( mnCurrentOption, fValue, mnCurrentElement );
             sprintf( pBuf, "%g", fValue );
             OUString aValue( pBuf, strlen(pBuf), osl_getThreadTextEncoding() );
-            maNumericEdit.SetText( aValue );
-            maQuantumRangeBox.SelectEntry( aValue );
+            mpNumericEdit->SetText( aValue );
+            mpQuantumRangeBox->SelectEntry( aValue );
         }
-        else if( pEdit == &maTopField )
+        else if( pEdit == mpTopField )
         {
-            Point aPoint( 0, maTopField.GetValue() );
+            Point aPoint( 0, mpTopField->GetValue() );
             aPoint = GetPixelPos( aPoint );
             maTopLeft.Y() = aPoint.Y();
             DrawDrag();
         }
-        else if( pEdit == &maLeftField )
+        else if( pEdit == mpLeftField )
         {
-            Point aPoint( maLeftField.GetValue(), 0 );
+            Point aPoint( mpLeftField->GetValue(), 0 );
             aPoint = GetPixelPos( aPoint );
             maTopLeft.X() = aPoint.X();
             DrawDrag();
         }
-        else if( pEdit == &maBottomField )
+        else if( pEdit == mpBottomField )
         {
-            Point aPoint( 0, maBottomField.GetValue() );
+            Point aPoint( 0, mpBottomField->GetValue() );
             aPoint = GetPixelPos( aPoint );
             maBottomRight.Y() = aPoint.Y();
             DrawDrag();
         }
-        else if( pEdit == &maRightField )
+        else if( pEdit == mpRightField )
         {
-            Point aPoint( maRightField.GetValue(), 0 );
+            Point aPoint( mpRightField->GetValue(), 0 );
             aPoint = GetPixelPos( aPoint );
             maBottomRight.X() = aPoint.X();
             DrawDrag();
@@ -706,13 +703,13 @@ void SaneDlg::AcquirePreview()
 
     UpdateScanArea( true );
     // set small resolution for preview
-    double fResl = (double)maReslBox.GetValue();
+    double fResl = (double)mpReslBox->GetValue();
     SetAdjustedNumericalValue( "resolution", 30.0 );
 
     int nOption = mrSane.GetOptionByName( "preview" );
     if( nOption == -1 )
     {
-        OUString aString(SaneResId(RID_SANE_NORESOLUTIONOPTION_TXT).toString());
+        OUString aString("The device does not offer a preview option. Therefore, a normal scan will be used as a preview instead. This may take a considerable amount of time." );
         WarningBox aBox( this, WB_OK_CANCEL | WB_DEF_OK, aString );
         if( aBox.Execute() == RET_CANCEL )
             return;
@@ -724,7 +721,7 @@ void SaneDlg::AcquirePreview()
     if( ! mrSane.Start( aTransporter ) )
     {
         ErrorBox aErrorBox( this, WB_OK | WB_DEF_OK,
-                            SaneResId( RID_SANE_SCANERROR_TXT).toString() );
+                            "An error occurred while scanning." );
         aErrorBox.Execute();
     }
     else
@@ -738,7 +735,7 @@ void SaneDlg::AcquirePreview()
     }
 
     SetAdjustedNumericalValue( "resolution", fResl );
-    maReslBox.SetValue( (sal_uLong)fResl );
+    mpReslBox->SetValue( (sal_uLong)fResl );
 
     if( mbDragEnable )
     {
@@ -789,15 +786,15 @@ void SaneDlg::Paint( const Rectangle& rRect )
 
 void SaneDlg::DisableOption()
 {
-    maBoolCheckBox.Show( false );
-    maStringEdit.Show( false );
-    maNumericEdit.Show( false );
-    maQuantumRangeBox.Show( false );
-    maStringRangeBox.Show( false );
-    maButtonOption.Show( false );
-    maVectorBox.Show( false );
-    maVectorTxt.Show( false );
-    maOptionDescTxt.Show( false );
+    mpBoolCheckBox->Show( false );
+    mpStringEdit->Show( false );
+    mpNumericEdit->Show( false );
+    mpQuantumRangeBox->Show( false );
+    mpStringRangeBox->Show( false );
+    mpButtonOption->Show( false );
+    mpVectorBox->Show( false );
+    mpVectorTxt->Show( false );
+    mpOptionDescTxt->Show( false );
 }
 
 void SaneDlg::EstablishBoolOption()
@@ -807,10 +804,9 @@ void SaneDlg::EstablishBoolOption()
     bSuccess = mrSane.GetOptionValue( mnCurrentOption, bValue );
     if( bSuccess )
     {
-        maOptionDescTxt.SetText( mrSane.GetOptionName( mnCurrentOption ) );
-        maOptionDescTxt.Show( true );
-        maBoolCheckBox.Check( bValue );
-        maBoolCheckBox.Show( true );
+        mpBoolCheckBox->SetText( mrSane.GetOptionName( mnCurrentOption ) );
+        mpBoolCheckBox->Check( bValue );
+        mpBoolCheckBox->Show( true );
     }
 }
 
@@ -822,25 +818,25 @@ void SaneDlg::EstablishStringOption()
     bSuccess = mrSane.GetOptionValue( mnCurrentOption, aValue );
     if( bSuccess )
     {
-        maOptionDescTxt.SetText( mrSane.GetOptionName( mnCurrentOption ) );
-        maOptionDescTxt.Show( true );
-        maStringEdit.SetText(OStringToOUString(aValue, osl_getThreadTextEncoding()));
-        maStringEdit.Show( true );
+        mpOptionDescTxt->SetText( mrSane.GetOptionName( mnCurrentOption ) );
+        mpOptionDescTxt->Show( true );
+        mpStringEdit->SetText(OStringToOUString(aValue, osl_getThreadTextEncoding()));
+        mpStringEdit->Show( true );
     }
 }
 
 void SaneDlg::EstablishStringRange()
 {
     const char** ppStrings = mrSane.GetStringConstraint( mnCurrentOption );
-    maStringRangeBox.Clear();
+    mpStringRangeBox->Clear();
     for( int i = 0; ppStrings[i] != 0; i++ )
-        maStringRangeBox.InsertEntry( OUString( ppStrings[i], strlen(ppStrings[i]), osl_getThreadTextEncoding() ) );
+        mpStringRangeBox->InsertEntry( OUString( ppStrings[i], strlen(ppStrings[i]), osl_getThreadTextEncoding() ) );
     OString aValue;
     mrSane.GetOptionValue( mnCurrentOption, aValue );
-    maStringRangeBox.SelectEntry(OStringToOUString(aValue, osl_getThreadTextEncoding()));
-    maStringRangeBox.Show( true );
-    maOptionDescTxt.SetText( mrSane.GetOptionName( mnCurrentOption ) );
-    maOptionDescTxt.Show( true );
+    mpStringRangeBox->SelectEntry(OStringToOUString(aValue, osl_getThreadTextEncoding()));
+    mpStringRangeBox->Show( true );
+    mpOptionDescTxt->SetText( mrSane.GetOptionName( mnCurrentOption ) );
+    mpOptionDescTxt->Show( true );
 }
 
 void SaneDlg::EstablishQuantumRange()
@@ -862,26 +858,26 @@ void SaneDlg::EstablishQuantumRange()
     else if( nValues > 0 )
     {
         char pBuf[ 256 ];
-        maQuantumRangeBox.Clear();
+        mpQuantumRangeBox->Clear();
         mfMin = mpRange[ 0 ];
         mfMax = mpRange[ nValues-1 ];
         for( int i = 0; i < nValues; i++ )
         {
             sprintf( pBuf, "%g", mpRange[ i ] );
-            maQuantumRangeBox.InsertEntry( OUString( pBuf, strlen(pBuf), osl_getThreadTextEncoding() ) );
+            mpQuantumRangeBox->InsertEntry( OUString( pBuf, strlen(pBuf), osl_getThreadTextEncoding() ) );
         }
         double fValue;
         if( mrSane.GetOptionValue( mnCurrentOption, fValue, mnCurrentElement ) )
         {
             sprintf( pBuf, "%g", fValue );
-            maQuantumRangeBox.SelectEntry( OUString( pBuf, strlen(pBuf), osl_getThreadTextEncoding() ) );
+            mpQuantumRangeBox->SelectEntry( OUString( pBuf, strlen(pBuf), osl_getThreadTextEncoding() ) );
         }
-        maQuantumRangeBox.Show( true );
+        mpQuantumRangeBox->Show( true );
         OUString aText( mrSane.GetOptionName( mnCurrentOption ) );
         aText += " ";
         aText += mrSane.GetOptionUnitName( mnCurrentOption );
-        maOptionDescTxt.SetText( aText );
-        maOptionDescTxt.Show( true );
+        mpOptionDescTxt->SetText( aText );
+        mpOptionDescTxt->Show( true );
     }
 }
 
@@ -903,18 +899,18 @@ void SaneDlg::EstablishNumericOption()
         sprintf( pBuf, " < %g ; %g >", mfMin, mfMax );
         aText += OUString( pBuf, strlen(pBuf), osl_getThreadTextEncoding() );
     }
-    maOptionDescTxt.SetText( aText );
-    maOptionDescTxt.Show( true );
+    mpOptionDescTxt->SetText( aText );
+    mpOptionDescTxt->Show( true );
     sprintf( pBuf, "%g", fValue );
-    maNumericEdit.SetText( OUString( pBuf, strlen(pBuf), osl_getThreadTextEncoding() ) );
-    maNumericEdit.Show( true );
+    mpNumericEdit->SetText( OUString( pBuf, strlen(pBuf), osl_getThreadTextEncoding() ) );
+    mpNumericEdit->Show( true );
 }
 
 void SaneDlg::EstablishButtonOption()
 {
-    maOptionDescTxt.SetText( mrSane.GetOptionName( mnCurrentOption ) );
-    maOptionDescTxt.Show( true );
-    maButtonOption.Show( true );
+    mpOptionDescTxt->SetText( mrSane.GetOptionName( mnCurrentOption ) );
+    mpOptionDescTxt->Show( true );
+    mpButtonOption->Show( true );
 }
 
 #define RECT_SIZE_PIX 7
@@ -1149,10 +1145,10 @@ void SaneDlg::UpdateScanArea( bool bSend )
     Point aUL = GetLogicPos( maTopLeft );
     Point aBR = GetLogicPos( maBottomRight );
 
-    maLeftField.SetValue( aUL.X() );
-    maTopField.SetValue( aUL.Y() );
-    maRightField.SetValue( aBR.X() );
-    maBottomField.SetValue( aBR.Y() );
+    mpLeftField->SetValue( aUL.X() );
+    mpTopField->SetValue( aUL.Y() );
+    mpRightField->SetValue( aBR.X() );
+    mpBottomField->SetValue( aBR.Y() );
 
     if( ! bSend )
         return;
@@ -1255,7 +1251,7 @@ void SaneDlg::SaveState()
     aConfig.DeleteGroup( "SANE" );
     aConfig.SetGroup( "SANE" );
     aConfig.WriteKey( "SO_LastSANEDevice",
-        OUStringToOString(maDeviceBox.GetSelectEntry(), RTL_TEXTENCODING_UTF8) );
+        OUStringToOString(mpDeviceBox->GetSelectEntry(), RTL_TEXTENCODING_UTF8) );
 
     static char const* pSaveOptions[] = {
         "resolution",
diff --git a/extensions/source/scanner/sanedlg.hrc b/extensions/source/scanner/sanedlg.hrc
index dfd4566..ebf2dbe 100644
--- a/extensions/source/scanner/sanedlg.hrc
+++ b/extensions/source/scanner/sanedlg.hrc
@@ -19,56 +19,12 @@
 #ifndef _SVT_SANEDLG_HRC
 #define _SVT_SANEDLG_HRC
 
-#define RID_SANE_DIALOG                 1000
-#define RID_SCAN_OK                        1
-#define RID_SCAN_CANCEL                    2
-#define RID_DEVICEINFO_BTN                 3
-#define RID_PREVIEW_BOX                    4
-#define RID_DEVICE_BOX_TXT                 5
-#define RID_DEVICE_BOX                     6
-#define RID_SCANAREA_BOX                   7
-#define RID_SCAN_LEFT_TXT                  8
-#define RID_SCAN_LEFT_BOX                  9
-#define RID_SCAN_TOP_BOX                  10
-#define RID_SCAN_TOP_TXT                  11
-#define RID_SCAN_RIGHT_TXT                12
-#define RID_SCAN_RIGHT_BOX                13
-#define RID_SCAN_BOTTOM_TXT               14
-#define RID_SCAN_BOTTOM_BOX               15
-#define RID_SCAN_RESOLUTION_TXT           16
-#define RID_SCAN_RESOLUTION_BOX           17
-#define RID_PREVIEW_BTN                   18
-#define RID_SCAN_OPTION_BOX               19
-#define RID_SCAN_OPTIONTITLE_TXT          20
-#define RID_SCAN_OPTION_DESC_TXT          21
-#define RID_SCAN_BOOL_OPTION_BOX          22
-#define RID_SCAN_OPTION_TXT               23
-#define RID_SCAN_STRING_OPTION_EDT        24
-#define RID_SCAN_QUANTUM_RANGE_BOX        25
-#define RID_SCAN_STRING_RANGE_BOX         26
-#define RID_SCAN_NUMERIC_OPTION_EDT       27
-#define RID_SCAN_BUTTON_OPTION_BTN        28
-#define RID_SCAN_NUMERIC_VECTOR_BOX       29
-#define RID_SCAN_NUMERIC_VECTOR_TXT       30
-#define RID_SCAN_BITMAP_PLUS              31
-#define RID_SCAN_BITMAP_MINUS             32
-#define RID_SCAN_ADVANCED_BOX             33
-#define RID_SCAN_ADVANCED_TXT             34
-#define RID_SCAN_BTN                      35
-
-#define RID_SANE_DEVICEINFO_TXT         1001
-#define RID_SANE_SCANERROR_TXT          1002
-#define RID_SANE_NORESOLUTIONOPTION_TXT 1003
-#define RID_SANE_NOSANELIB_TXT          1004
-
 #define SCAN_AREA_TOP       17
 #define SCAN_AREA_LEFT      8
 #define PREVIEW_UPPER_LEFT  SCAN_AREA_LEFT
 #define PREVIEW_UPPER_TOP   SCAN_AREA_TOP + 80
 #define PREVIEW_WIDTH       113
 #define PREVIEW_HEIGHT      160
-#define SECOND_COLUMN       PREVIEW_WIDTH + 20
-#define THIRD_COLUMN        SECOND_COLUMN + 135
 
 #endif
 
diff --git a/extensions/source/scanner/sanedlg.hxx b/extensions/source/scanner/sanedlg.hxx
index 1bb2836..d45642b 100644
--- a/extensions/source/scanner/sanedlg.hxx
+++ b/extensions/source/scanner/sanedlg.hxx
@@ -51,47 +51,38 @@ private:
 
     Link            maOldLink;
 
-    OKButton        maOKButton;
-    CancelButton    maCancelButton;
-    PushButton      maDeviceInfoButton;
-    PushButton      maPreviewButton;
-    PushButton      maScanButton;
-    PushButton      maButtonOption;
-
-    FixedText       maOptionsTxt;
-    FixedText       maOptionTitle;
-    FixedText       maOptionDescTxt;
-    FixedText       maVectorTxt;
-
-    FixedText       maScanLeftTxt;
-    MetricField     maLeftField;
-    FixedText       maScanTopTxt;
-    MetricField     maTopField;
-    FixedText       maRightTxt;
-    MetricField     maRightField;
-    FixedText       maBottomTxt;
-    MetricField     maBottomField;
-
-    FixedText       maDeviceBoxTxt;
-    ListBox         maDeviceBox;
-    FixedText       maReslTxt;
-    NumericBox      maReslBox;
-    FixedText       maAdvancedTxt;
-    CheckBox        maAdvancedBox;
-
-    NumericField    maVectorBox;
-    ListBox         maQuantumRangeBox;
-    ListBox         maStringRangeBox;
-
-    FixedLine       maPreviewBox;
-    FixedLine       maAreaBox;
-
-    CheckBox        maBoolCheckBox;
-
-    Edit            maStringEdit;
-    Edit            maNumericEdit;
-
-    SvTreeListBox   maOptionBox;
+    OKButton*       mpOKButton;
+    CancelButton*   mpCancelButton;
+    PushButton*     mpDeviceInfoButton;
+    PushButton*     mpPreviewButton;
+    PushButton*     mpScanButton;
+    PushButton*     mpButtonOption;
+
+    FixedText*      mpOptionTitle;
+    FixedText*      mpOptionDescTxt;
+    FixedText*      mpVectorTxt;
+
+    MetricField*    mpLeftField;
+    MetricField*    mpTopField;
+    MetricField*    mpRightField;
+    MetricField*    mpBottomField;
+
+    ListBox*        mpDeviceBox;
+    NumericBox*     mpReslBox;
+    CheckBox*       mpAdvancedBox;
+
+    NumericField*   mpVectorBox;
+    ListBox*        mpQuantumRangeBox;
+    ListBox*        mpStringRangeBox;
+
+    CheckBox*       mpBoolCheckBox;
+
+    Edit*           mpStringEdit;
+    Edit*           mpNumericEdit;
+
+    SvTreeListBox*  mpOptionBox;
+
+    Window*         mpPreview;
 
     int             mnCurrentOption;
     int             mnCurrentElement;
diff --git a/extensions/source/scanner/sanedlg.src b/extensions/source/scanner/sanedlg.src
deleted file mode 100644
index 242d1ea..0000000
--- a/extensions/source/scanner/sanedlg.src
+++ /dev/null
@@ -1,283 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- *   Licensed to the Apache Software Foundation (ASF) under one or more
- *   contributor license agreements. See the NOTICE file distributed
- *   with this work for additional information regarding copyright
- *   ownership. The ASF licenses this file to you under the Apache
- *   License, Version 2.0 (the "License"); you may not use this file
- *   except in compliance with the License. You may obtain a copy of
- *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-#include <sanedlg.hrc>
-ModalDialog RID_SANE_DIALOG
-{
-    HelpID = "extensions:ModalDialog:RID_SANE_DIALOG";
-    OutputSize = TRUE ;
-    SVLook = TRUE ;
-    Pos = MAP_APPFONT ( 10 , 10 ) ;
-    Size = MAP_APPFONT ( THIRD_COLUMN + 60 , 268 ) ;
-    Moveable = TRUE ;
-    Closeable = TRUE ;
-    OKButton RID_SCAN_OK
-    {
-        Pos = MAP_APPFONT ( THIRD_COLUMN , 6 ) ;
-        Size = MAP_APPFONT ( 55 , 14 ) ;
-        DefButton = TRUE;
-    };
-    CancelButton RID_SCAN_CANCEL
-    {
-        Pos = MAP_APPFONT ( THIRD_COLUMN , 25 ) ;
-        Size = MAP_APPFONT ( 55 , 14 ) ;
-    };
-    PushButton RID_DEVICEINFO_BTN
-    {
-        HelpID = "extensions:PushButton:RID_SANE_DIALOG:RID_DEVICEINFO_BTN";
-        Pos = MAP_APPFONT ( THIRD_COLUMN , 44 ) ;
-        Size = MAP_APPFONT ( 55 , 22 ) ;
-        Text [ en-US ] = "About\n Dev~ice" ;
-    };
-    PushButton RID_PREVIEW_BTN
-    {
-        HelpID = "extensions:PushButton:RID_SANE_DIALOG:RID_PREVIEW_BTN";
-        Pos = MAP_APPFONT ( THIRD_COLUMN , 71 ) ;
-        Size = MAP_APPFONT ( 55 , 22 ) ;
-        Text [ en-US ] = "Create\nPreview" ;
-    };
-    PushButton RID_SCAN_BTN
-    {
-        HelpID = "extensions:PushButton:RID_SANE_DIALOG:RID_SCAN_BTN";
-        Pos = MAP_APPFONT ( THIRD_COLUMN , 98 ) ;
-        Size = MAP_APPFONT ( 55 , 14 ) ;
-        Text [ en-US ] = "Scan" ;
-    };
-    FixedLine RID_PREVIEW_BOX
-    {
-        Pos = MAP_APPFONT ( PREVIEW_UPPER_LEFT - 5 , PREVIEW_UPPER_TOP - 8 ) ;
-        Size = MAP_APPFONT ( PREVIEW_WIDTH + 10 , 8 ) ;
-        Text [ en-US ] = "Preview" ;
-    };
-    FixedLine RID_SCANAREA_BOX
-    {
-        Pos = MAP_APPFONT ( SCAN_AREA_LEFT - 5 , SCAN_AREA_TOP - 12 ) ;
-        Size = MAP_APPFONT ( PREVIEW_WIDTH + 10 , 8 ) ;
-        Text [ en-US ] = "Scan area" ;
-    };
-    FixedText RID_SCAN_LEFT_TXT
-    {
-        Pos = MAP_APPFONT ( SCAN_AREA_LEFT , SCAN_AREA_TOP ) ;
-        Size = MAP_APPFONT ( 50 , 8 ) ;
-        Text [ en-US ] = "Left:" ;
-    };
-    MetricField RID_SCAN_LEFT_BOX
-    {
-        HelpID = "extensions:MetricField:RID_SANE_DIALOG:RID_SCAN_LEFT_BOX";
-        Spin = TRUE ;
-        Repeat = TRUE ;
-        Border = TRUE ;
-        Pos = MAP_APPFONT ( SCAN_AREA_LEFT + 50 , SCAN_AREA_TOP - 2 ) ;
-        Size = MAP_APPFONT ( PREVIEW_WIDTH - 50 , 12 ) ;
-    };
-    FixedText RID_SCAN_TOP_TXT
-    {
-        Pos = MAP_APPFONT ( SCAN_AREA_LEFT , SCAN_AREA_TOP + 17 ) ;
-        Size = MAP_APPFONT ( 50 , 8 ) ;
-        Text [ en-US ] = "Top:" ;
-    };
-    MetricField RID_SCAN_TOP_BOX
-    {
-        HelpID = "extensions:MetricField:RID_SANE_DIALOG:RID_SCAN_TOP_BOX";
-        Spin = TRUE ;
-        Repeat = TRUE ;
-        Border = TRUE ;
-        Pos = MAP_APPFONT ( SCAN_AREA_LEFT + 50 , SCAN_AREA_TOP + 15 ) ;
-        Size = MAP_APPFONT ( PREVIEW_WIDTH - 50 , 12 ) ;
-    };
-    FixedText RID_SCAN_RIGHT_TXT
-    {
-        Pos = MAP_APPFONT ( SCAN_AREA_LEFT , SCAN_AREA_TOP + 34 ) ;
-        Size = MAP_APPFONT ( 50 , 8 ) ;
-        Text [ en-US ] = "Right:" ;
-    };
-    MetricField RID_SCAN_RIGHT_BOX
-    {
-        HelpID = "extensions:MetricField:RID_SANE_DIALOG:RID_SCAN_RIGHT_BOX";
-        Spin = TRUE ;
-        Repeat = TRUE ;
-        Border = TRUE ;
-        Pos = MAP_APPFONT ( SCAN_AREA_LEFT + 50 , SCAN_AREA_TOP + 32 ) ;
-        Size = MAP_APPFONT ( PREVIEW_WIDTH - 50 , 12 ) ;
-    };
-    FixedText RID_SCAN_BOTTOM_TXT
-    {
-        Pos = MAP_APPFONT ( SCAN_AREA_LEFT , SCAN_AREA_TOP + 51 ) ;
-        Size = MAP_APPFONT ( 50 , 8 ) ;
-        Text [ en-US ] = "Bottom:" ;
-    };
-    MetricField RID_SCAN_BOTTOM_BOX
-    {
-        HelpID = "extensions:MetricField:RID_SANE_DIALOG:RID_SCAN_BOTTOM_BOX";
-        Spin = TRUE ;
-        Repeat = TRUE ;
-        Border = TRUE ;
-        Pos = MAP_APPFONT ( SCAN_AREA_LEFT + 50 , SCAN_AREA_TOP + 49 ) ;
-        Size = MAP_APPFONT ( PREVIEW_WIDTH - 50 , 12 ) ;
-    };
-    FixedText RID_DEVICE_BOX_TXT
-    {
-        Pos = MAP_APPFONT ( SECOND_COLUMN , 8 ) ;
-        Size = MAP_APPFONT ( 70 , 8 ) ;
-        Text [ en-US ] = "Device used:" ;
-    };
-    ListBox RID_DEVICE_BOX
-    {
-        HelpID = "extensions:ListBox:RID_SANE_DIALOG:RID_DEVICE_BOX";
-        Border = TRUE ;
-        Dropdown = TRUE ;
-        Sort = TRUE ;
-        Pos = MAP_APPFONT ( SECOND_COLUMN + 70 , 6 ) ;
-        Size = MAP_APPFONT ( 60 , 80 ) ;
-    };
-    FixedText RID_SCAN_RESOLUTION_TXT
-    {
-        Pos = MAP_APPFONT ( SECOND_COLUMN , 25 ) ;
-        Size = MAP_APPFONT ( 70 , 8 ) ;
-        Text [ en-US ] = "Resolution [~DPI]" ;
-    };
-    NumericBox RID_SCAN_RESOLUTION_BOX
-    {
-        HelpID = "extensions:NumericBox:RID_SANE_DIALOG:RID_SCAN_RESOLUTION_BOX";
-        Dropdown = TRUE ;
-        Pos = MAP_APPFONT ( SECOND_COLUMN + 70 , 23 ) ;
-        Size = MAP_APPFONT ( 60 , 80 ) ;
-    };
-    FixedText RID_SCAN_ADVANCED_TXT
-    {
-        Pos = MAP_APPFONT ( SECOND_COLUMN , 40 ) ;
-        Size = MAP_APPFONT ( 120 , 8 ) ;
-        Text [ en-US ] = "Show advanced options" ;
-    };
-    CheckBox RID_SCAN_ADVANCED_BOX
-    {
-        HelpID = "extensions:CheckBox:RID_SANE_DIALOG:RID_SCAN_ADVANCED_BOX";
-        Check = FALSE ;
-        Pos = MAP_APPFONT ( SECOND_COLUMN + 120 , 40 ) ;
-        Size = MAP_APPFONT ( 8 , 8 ) ;
-    };
-    FixedText RID_SCAN_OPTION_TXT
-    {
-        Pos = MAP_APPFONT ( SECOND_COLUMN , 54 ) ;
-        Size = MAP_APPFONT ( 130 , 8 ) ;
-        Text [ en-US ] = "Options:" ;
-    };
-    Control RID_SCAN_OPTION_BOX
-    {
-        Border = TRUE ;
-        Pos = MAP_APPFONT ( SECOND_COLUMN , 63 ) ;
-        Size = MAP_APPFONT ( 130 , 102 ) ;
-    };
-    FixedText RID_SCAN_OPTIONTITLE_TXT
-    {
-        WordBreak = TRUE ;
-        Border = TRUE ;
-        Pos = MAP_APPFONT ( SECOND_COLUMN , 170 ) ;
-        Size = MAP_APPFONT ( 130 , 50 ) ;
-    };
-    FixedText RID_SCAN_OPTION_DESC_TXT
-    {
-        Pos = MAP_APPFONT ( SECOND_COLUMN , 225 ) ;
-        Size = MAP_APPFONT ( 120 , 8 ) ;
-    };
-    CheckBox RID_SCAN_BOOL_OPTION_BOX
-    {
-        HelpID = "extensions:CheckBox:RID_SANE_DIALOG:RID_SCAN_BOOL_OPTION_BOX";
-        Pos = MAP_APPFONT ( SECOND_COLUMN + 120 , 225 ) ;
-        Size = MAP_APPFONT ( 8 , 8 ) ;
-    };
-    Edit RID_SCAN_STRING_OPTION_EDT
-    {
-        HelpID = "extensions:Edit:RID_SANE_DIALOG:RID_SCAN_STRING_OPTION_EDT";
-        Border = TRUE ;
-        Pos = MAP_APPFONT ( SECOND_COLUMN , 234 ) ;
-        Size = MAP_APPFONT ( 130 , 12 ) ;
-    };
-    ListBox RID_SCAN_QUANTUM_RANGE_BOX
-    {
-        HelpID = "extensions:ListBox:RID_SANE_DIALOG:RID_SCAN_QUANTUM_RANGE_BOX";
-        Border = TRUE ;
-        Dropdown = TRUE ;
-        Pos = MAP_APPFONT ( SECOND_COLUMN , 234 ) ;
-        Size = MAP_APPFONT ( 130 , 80 ) ;
-    };
-    ListBox RID_SCAN_STRING_RANGE_BOX
-    {
-        HelpID = "extensions:ListBox:RID_SANE_DIALOG:RID_SCAN_STRING_RANGE_BOX";
-        Border = TRUE ;
-        Dropdown = TRUE ;
-        Pos = MAP_APPFONT ( SECOND_COLUMN , 234 ) ;
-        Size = MAP_APPFONT ( 130 , 80 ) ;
-    };
-    Edit RID_SCAN_NUMERIC_OPTION_EDT
-    {
-        HelpID = "extensions:Edit:RID_SANE_DIALOG:RID_SCAN_NUMERIC_OPTION_EDT";
-        Border = TRUE ;
-        Pos = MAP_APPFONT ( SECOND_COLUMN , 234 ) ;
-        Size = MAP_APPFONT ( 130 , 12 ) ;
-    };
-    FixedText RID_SCAN_NUMERIC_VECTOR_TXT
-    {
-        Pos = MAP_APPFONT ( SECOND_COLUMN , 253 ) ;
-        Size = MAP_APPFONT ( 90 , 8 ) ;
-        Text [ en-US ] = "Vector element" ;
-    };
-    NumericField RID_SCAN_NUMERIC_VECTOR_BOX
-    {
-        HelpID = "extensions:NumericField:RID_SANE_DIALOG:RID_SCAN_NUMERIC_VECTOR_BOX";
-        Border = TRUE ;
-        Spin = TRUE ;
-        Repeat = TRUE ;
-        Pos = MAP_APPFONT ( SECOND_COLUMN + 90 , 251 ) ;
-        Size = MAP_APPFONT ( 40 , 12 ) ;
-    };
-    PushButton RID_SCAN_BUTTON_OPTION_BTN
-    {
-        HelpID = "extensions:PushButton:RID_SANE_DIALOG:RID_SCAN_BUTTON_OPTION_BTN";
-        Pos = MAP_APPFONT ( SECOND_COLUMN , 234 ) ;
-        Size = MAP_APPFONT ( 130 , 14 ) ;
-        Text [ en-US ] = "Set" ;
-    };
-    Bitmap RID_SCAN_BITMAP_PLUS
-    {
-        File = "plus.bmp" ;
-    };
-    Bitmap RID_SCAN_BITMAP_MINUS
-    {
-        File = "minus.bmp" ;
-    };
-    Text [ en-US ] = "Scanner" ;
-};
-String RID_SANE_DEVICEINFO_TXT
-{
-    Text [ en-US ] = "Device: %s\nVendor: %s\nModel: %s\nType: %s" ;
-};
-String RID_SANE_SCANERROR_TXT
-{
-    Text [ en-US ] = "An error occurred while scanning." ;
-};
-String RID_SANE_NORESOLUTIONOPTION_TXT
-{
-    Text [ en-US ] = "The device does not offer a preview option. Therefore, a normal scan will be used as a preview instead. This may take a considerable amount of time." ;
-};
-String RID_SANE_NOSANELIB_TXT
-{
-    Text [ en-US ] = "The SANE interface could not be initialized. Scanning is not possible." ;
-};
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/extensions/uiconfig/scanner.ui b/extensions/uiconfig/scanner/ui/sanedialog.ui
similarity index 54%
rename from extensions/uiconfig/scanner.ui
rename to extensions/uiconfig/scanner/ui/sanedialog.ui
index 8216a8d..794bca0 100644
--- a/extensions/uiconfig/scanner.ui
+++ b/extensions/uiconfig/scanner/ui/sanedialog.ui
@@ -1,105 +1,25 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.16.1 -->
 <interface>
-  <!-- interface-requires gtk+ 3.0 -->
-  <object class="GtkAction" id="action1"/>
-  <object class="GtkDialog" id="Scanner">
+  <requires lib="gtk+" version="3.0"/>
+  <!-- interface-requires LibreOffice 1.0 -->
+  <object class="GtkDialog" id="SaneDialog">
     <property name="can_focus">False</property>
-    <property name="border_width">5</property>
+    <property name="border_width">6</property>
+    <property name="title" translatable="yes">Scanner</property>
     <property name="type_hint">dialog</property>
     <child internal-child="vbox">
       <object class="GtkBox" id="dialog-vbox1">
         <property name="can_focus">False</property>
-        <property name="spacing">2</property>
-        <child internal-child="action_area">
-          <object class="GtkButtonBox" id="dialog-action_area1">
-            <property name="can_focus">False</property>
-            <property name="orientation">vertical</property>
-            <property name="layout_style">start</property>
-            <child>
-              <object class="GtkButton" id="ok">
-                <property name="label">gtk-ok</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">True</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="cancel">
-                <property name="label">gtk-cancel</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">True</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="button3">
-                <property name="label" translatable="yes">About
-Dev_ice</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="expand">False</property>
-                <property name="fill">True</property>
-                <property name="position">2</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="button4">
-                <property name="label" translatable="yes">Create
-Previe_w</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="expand">False</property>
-                <property name="fill">True</property>
-                <property name="position">3</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="button5">
-                <property name="label" translatable="yes">_Scan</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="expand">False</property>
-                <property name="fill">True</property>
-                <property name="position">4</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
+        <property name="spacing">12</property>
         <child>
           <object class="GtkBox" id="box1">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
+            <property name="hexpand">True</property>
+            <property name="vexpand">True</property>
             <property name="orientation">vertical</property>
+            <property name="spacing">12</property>
             <child>
               <object class="GtkFrame" id="frame1">
                 <property name="visible">True</property>
@@ -110,13 +30,14 @@ Previe_w</property>
                   <object class="GtkAlignment" id="alignment1">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
+                    <property name="top_padding">6</property>
                     <property name="left_padding">12</property>
                     <child>
                       <object class="GtkGrid" id="grid1">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
                         <property name="row_spacing">6</property>
-                        <property name="column_spacing">15</property>
+                        <property name="column_spacing">12</property>
                         <child>
                           <object class="GtkLabel" id="label3">
                             <property name="visible">True</property>
@@ -124,6 +45,7 @@ Previe_w</property>
                             <property name="xalign">0</property>
                             <property name="label" translatable="yes">_Left:</property>
                             <property name="use_underline">True</property>
+                            <property name="mnemonic_widget">leftSpinbutton:0</property>
                           </object>
                           <packing>
                             <property name="left_attach">0</property>
@@ -139,6 +61,7 @@ Previe_w</property>
                             <property name="xalign">0</property>
                             <property name="label" translatable="yes">To_p:</property>
                             <property name="use_underline">True</property>
+                            <property name="mnemonic_widget">topSpinbutton:0</property>
                           </object>
                           <packing>
                             <property name="left_attach">0</property>
@@ -154,6 +77,7 @@ Previe_w</property>
                             <property name="xalign">0</property>
                             <property name="label" translatable="yes">_Right:</property>
                             <property name="use_underline">True</property>
+                            <property name="mnemonic_widget">rightSpinbutton:0</property>
                           </object>
                           <packing>
                             <property name="left_attach">0</property>
@@ -169,6 +93,7 @@ Previe_w</property>
                             <property name="xalign">0</property>
                             <property name="label" translatable="yes">_Bottom:</property>
                             <property name="use_underline">True</property>
+                            <property name="mnemonic_widget">bottomSpinbutton:0</property>
                           </object>
                           <packing>
                             <property name="left_attach">0</property>
@@ -178,53 +103,53 @@ Previe_w</property>
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkSpinButton" id="spinbutton1">
+                          <object class="GtkSpinButton" id="topSpinbutton:0">
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
-                            <property name="invisible_char">•</property>
+                            <property name="hexpand">True</property>
                           </object>
                           <packing>
                             <property name="left_attach">1</property>
-                            <property name="top_attach">0</property>
+                            <property name="top_attach">1</property>
                             <property name="width">1</property>
                             <property name="height">1</property>
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkSpinButton" id="spinbutton2">
+                          <object class="GtkSpinButton" id="rightSpinbutton:0">
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
-                            <property name="invisible_char">•</property>
+                            <property name="hexpand">True</property>
                           </object>
                           <packing>
                             <property name="left_attach">1</property>
-                            <property name="top_attach">1</property>
+                            <property name="top_attach">2</property>
                             <property name="width">1</property>
                             <property name="height">1</property>
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkSpinButton" id="spinbutton3">
+                          <object class="GtkSpinButton" id="bottomSpinbutton:0">
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
-                            <property name="invisible_char">•</property>
+                            <property name="hexpand">True</property>
                           </object>
                           <packing>
                             <property name="left_attach">1</property>
-                            <property name="top_attach">2</property>
+                            <property name="top_attach">3</property>
                             <property name="width">1</property>
                             <property name="height">1</property>
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkSpinButton" id="spinbutton4">
+                          <object class="GtkSpinButton" id="leftSpinbutton:0">
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
-                            <property name="invisible_char">•</property>
+                            <property name="hexpand">True</property>
                           </object>
                           <packing>
                             <property name="left_attach">1</property>
-                            <property name="top_attach">3</property>
+                            <property name="top_attach">0</property>
                             <property name="width">1</property>
                             <property name="height">1</property>
                           </packing>
@@ -237,6 +162,7 @@ Previe_w</property>
                   <object class="GtkLabel" id="label1">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
+                    <property name="xalign">0</property>
                     <property name="label" translatable="yes">Scan area</property>
                   </object>
                 </child>
@@ -251,21 +177,24 @@ Previe_w</property>
               <object class="GtkFrame" id="frame2">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
+                <property name="hexpand">True</property>
+                <property name="vexpand">True</property>
                 <property name="label_xalign">0</property>
                 <property name="shadow_type">none</property>
                 <child>
                   <object class="GtkAlignment" id="alignment2">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
+                    <property name="hexpand">True</property>
+                    <property name="vexpand">True</property>
+                    <property name="top_padding">6</property>
                     <property name="left_padding">12</property>
                     <child>
-                      <object class="GtkScrolledWindow" id="scrolledwindow1">
+                      <object class="GtkDrawingArea" id="preview">
                         <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="shadow_type">in</property>
-                        <child>
-                          <placeholder/>
-                        </child>
+                        <property name="can_focus">False</property>
+                        <property name="hexpand">True</property>
+                        <property name="vexpand">True</property>
                       </object>
                     </child>
                   </object>
@@ -288,7 +217,7 @@ Previe_w</property>
           <packing>
             <property name="expand">False</property>
             <property name="fill">True</property>
-            <property name="position">1</property>
+            <property name="position">0</property>
           </packing>
         </child>
         <child>
@@ -296,13 +225,13 @@ Previe_w</property>
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="orientation">vertical</property>
-            <property name="spacing">6</property>
+            <property name="spacing">12</property>
             <child>
               <object class="GtkGrid" id="grid2">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
                 <property name="row_spacing">6</property>
-                <property name="column_spacing">6</property>
+                <property name="column_spacing">12</property>
                 <child>
                   <object class="GtkLabel" id="label7">
                     <property name="visible">True</property>
@@ -310,6 +239,7 @@ Previe_w</property>
                     <property name="xalign">0</property>
                     <property name="label" translatable="yes">Device _used</property>
                     <property name="use_underline">True</property>
+                    <property name="mnemonic_widget">deviceCombobox</property>
                   </object>
                   <packing>
                     <property name="left_attach">0</property>
@@ -325,6 +255,7 @@ Previe_w</property>
                     <property name="xalign">0</property>
                     <property name="label" translatable="yes">Resolution [_DPI]</property>
                     <property name="use_underline">True</property>
+                    <property name="mnemonic_widget">reslCombobox</property>
                   </object>
                   <packing>
                     <property name="left_attach">0</property>
@@ -334,25 +265,10 @@ Previe_w</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkLabel" id="label9">
+                  <object class="GtkComboBox" id="deviceCombobox">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
-                    <property name="xalign">0</property>
-                    <property name="label" translatable="yes">Show advanced options</property>
-                  </object>
-                  <packing>
-                    <property name="left_attach">0</property>
-                    <property name="top_attach">2</property>
-                    <property name="width">1</property>
-                    <property name="height">1</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkComboBoxText" id="comboboxtext1">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="entry_text_column">0</property>
-                    <property name="id_column">1</property>
+                    <property name="hexpand">True</property>
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
@@ -362,9 +278,10 @@ Previe_w</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkComboBox" id="combobox1">
+                  <object class="VclComboBoxNumeric" id="reslCombobox">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
+                    <property name="hexpand">True</property>
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
@@ -373,22 +290,6 @@ Previe_w</property>
                     <property name="height">1</property>
                   </packing>
                 </child>
-                <child>
-                  <object class="GtkCheckButton" id="checkbutton1">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">False</property>
-                    <property name="xalign">0</property>
-                    <property name="image_position">right</property>
-                    <property name="draw_indicator">True</property>
-                  </object>
-                  <packing>
-                    <property name="left_attach">1</property>
-                    <property name="top_attach">2</property>
-                    <property name="width">1</property>
-                    <property name="height">1</property>
-                  </packing>
-                </child>
               </object>
               <packing>
                 <property name="expand">False</property>
@@ -400,19 +301,72 @@ Previe_w</property>
               <object class="GtkBox" id="box4">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
+                <property name="hexpand">True</property>
+                <property name="vexpand">True</property>
                 <property name="orientation">vertical</property>
                 <property name="spacing">6</property>
                 <child>
-                  <object class="GtkBox" id="box5">
+                  <object class="GtkCheckButton" id="advancedCheckbutton">
+                    <property name="label" translatable="yes">Show advanced options</property>
+                    <property name="use_action_appearance">False</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="xalign">0</property>
+                    <property name="image_position">right</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkBox" id="box3">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
                     <property name="orientation">vertical</property>
+                    <property name="spacing">12</property>
+                    <property name="homogeneous">True</property>
                     <child>
-                      <object class="GtkLabel" id="label10">
+                      <object class="GtkGrid" id="grid3">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="xalign">0</property>
-                        <property name="label" translatable="yes">Options:</property>
+                        <property name="row_spacing">6</property>
+                        <child>
+                          <object class="GtkLabel" id="label10">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Options:</property>
+                            <property name="use_underline">True</property>
+                            <property name="mnemonic_widget">optionSvTreeListBox:border</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">0</property>
+                            <property name="width">1</property>
+                            <property name="height">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="svtlo-SvTreeListBox" id="optionSvTreeListBox:border">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="hexpand">True</property>
+                            <property name="vexpand">True</property>
+                            <child internal-child="selection">
+                              <object class="GtkTreeSelection" id="Tree List-selection"/>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">1</property>
+                            <property name="width">1</property>
+                            <property name="height">1</property>
+                          </packing>
+                        </child>
                       </object>
                       <packing>
                         <property name="expand">False</property>
@@ -421,12 +375,186 @@ Previe_w</property>
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkScrolledWindow" id="scrolledwindow2">
+                      <object class="GtkGrid" id="grid4">
                         <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="shadow_type">in</property>
+                        <property name="can_focus">False</property>
+                        <property name="row_spacing">6</property>
                         <child>
-                          <placeholder/>
+                          <object class="GtkLabel" id="optionTitleLabel:border">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="halign">start</property>
+                            <property name="valign">start</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>
+                            <property name="width">1</property>
+                            <property name="height">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="optionsDescLabel">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="halign">start</property>
+                            <property name="xalign">0</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">1</property>
+                            <property name="width">1</property>
+                            <property name="height">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkButton" id="optionsButton">
+                            <property name="label" translatable="yes">Se_t</property>
+                            <property name="use_action_appearance">False</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">0</property>
+                            <property name="top_attach">2</property>
+                            <property name="width">1</property>
+                            <property name="height">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkComboBox" id="quantumRangeCombobox">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">3</property>
+                            <property name="width">1</property>
+                            <property name="height">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkComboBox" id="stringRangeCombobox">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">4</property>
+                            <property name="width">1</property>
+                            <property name="height">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkCheckButton" id="boolCheckbutton">
+                            <property name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="xalign">0</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">5</property>
+                            <property name="width">1</property>
+                            <property name="height">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkEntry" id="stringEntry">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">6</property>
+                            <property name="width">1</property>
+                            <property name="height">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkEntry" id="numericEntry">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">7</property>
+                            <property name="width">1</property>
+                            <property name="height">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="vectorLabel">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="halign">start</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Vector element</property>
+                            <property name="use_underline">True</property>
+                            <property name="mnemonic_widget">vectorSpinbutton-nospin</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">8</property>
+                            <property name="width">1</property>
+                            <property name="height">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" id="vectorSpinbutton-nospin">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">9</property>
+                            <property name="width">1</property>
+                            <property name="height">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkGrid" id="grid5">
+                            <property name="can_focus">False</property>
+                            <property name="no_show_all">True</property>
+                            <child>
+                              <object class="GtkImage" id="plus">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="pixbuf">extensions/source/scanner/plus.png</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="top_attach">0</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkImage" id="minus">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="pixbuf">extensions/source/scanner/minus.png</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="top_attach">0</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">10</property>
+                            <property name="width">1</property>
+                            <property name="height">1</property>
+                          </packing>
                         </child>
                       </object>
                       <packing>
@@ -439,17 +567,6 @@ Previe_w</property>
                   <packing>
                     <property name="expand">False</property>
                     <property name="fill">True</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkDrawingArea" id="drawingarea1">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">True</property>
                     <property name="position">1</property>
                   </packing>
                 </child>
@@ -464,6 +581,97 @@ Previe_w</property>
           <packing>
             <property name="expand">False</property>
             <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkButtonBox" id="dialog-action_area1">
+            <property name="can_focus">False</property>
+            <property name="orientation">vertical</property>
+            <property name="homogeneous">True</property>
+            <property name="layout_style">start</property>
+            <child>
+              <object class="GtkButton" id="ok">
+                <property name="label">gtk-ok</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="cancel">
+                <property name="label">gtk-cancel</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="deviceInfoButton">
+                <property name="label" translatable="yes">About Dev_ice</property>
+                <property name="use_action_appearance">False</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="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="previewButton">
+                <property name="label" translatable="yes">Create Previe_w</property>
+                <property name="use_action_appearance">False</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="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">3</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="scanButton">
+                <property name="label" translatable="yes">_Scan</property>
+                <property name="use_action_appearance">False</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="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">4</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">end</property>
             <property name="position">2</property>
           </packing>
         </child>
@@ -472,9 +680,9 @@ Previe_w</property>
     <action-widgets>
       <action-widget response="0">ok</action-widget>
       <action-widget response="0">cancel</action-widget>
-      <action-widget response="0">button3</action-widget>
-      <action-widget response="0">button4</action-widget>
-      <action-widget response="0">button5</action-widget>
+      <action-widget response="0">deviceInfoButton</action-widget>
+      <action-widget response="0">previewButton</action-widget>
+      <action-widget response="0">scanButton</action-widget>
     </action-widgets>
   </object>
 </interface>
diff --git a/scp2/source/ooo/file_ooo.scp b/scp2/source/ooo/file_ooo.scp
index 5875930..63219dc 100644
--- a/scp2/source/ooo/file_ooo.scp
+++ b/scp2/source/ooo/file_ooo.scp
@@ -499,6 +499,7 @@ UI_FILELIST(dbtdata, "UIConfig/modules/dbtdata.filelist")
 UI_FILELIST(desktop, "UIConfig/desktop.filelist")
 UI_FILELIST(filter, "UIConfig/filter.filelist")
 UI_FILELIST(sabpilot, "UIConfig/modules/sabpilot.filelist")
+UI_FILELIST(scanner, "UIConfig/modules/scanner.filelist")
 #ifdef DBCONNECTIVITY
 UI_FILELIST(sbibliography, "UIConfig/modules/sbibliography.filelist")
 UI_FILELIST(spropctrlr, "UIConfig/modules/spropctrlr.filelist")
diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx
index 97271e8..98055fc 100644
--- a/vcl/source/window/builder.cxx
+++ b/vcl/source/window/builder.cxx
@@ -1420,11 +1420,15 @@ Window *VclBuilder::makeObject(Window *pParent, const OString &name, const OStri
     }
     else if (name == "GtkLabel")
     {
+        WinBits nWinStyle = WB_CENTER|WB_VCENTER|WB_3DLOOK;
+        OString sBorder = extractCustomProperty(rMap);
+        if (!sBorder.isEmpty())
+            nWinStyle |= WB_BORDER;
         extractMnemonicWidget(id, rMap);
         if (extractSelectable(rMap))
-            pWindow = new SelectableFixedText(pParent, WB_CENTER|WB_VCENTER|WB_3DLOOK);
+            pWindow = new SelectableFixedText(pParent, nWinStyle);
         else
-            pWindow = new FixedText(pParent, WB_CENTER|WB_VCENTER|WB_3DLOOK);
+            pWindow = new FixedText(pParent, nWinStyle);
     }
     else if (name == "GtkImage")
     {


More information about the Libreoffice-commits mailing list