[Libreoffice-commits] core.git: extensions/source extensions/uiconfig extensions/UIConfig_sabpilot.mk

Szymon KÅ‚os eszkadev at gmail.com
Mon Jul 7 05:18:51 PDT 2014


 extensions/UIConfig_sabpilot.mk                            |    6 
 extensions/source/dbpilots/commonpagesdbp.cxx              |   81 +-
 extensions/source/dbpilots/commonpagesdbp.hxx              |   11 
 extensions/source/dbpilots/commonpagesdbp.src              |  130 ----
 extensions/source/dbpilots/controlwizard.cxx               |   41 -
 extensions/source/dbpilots/controlwizard.hxx               |    4 
 extensions/source/dbpilots/dbpresid.hrc                    |   55 -
 extensions/source/dbpilots/gridpages.src                   |   79 --
 extensions/source/dbpilots/gridwizard.cxx                  |   98 +--
 extensions/source/dbpilots/gridwizard.hxx                  |   16 
 extensions/source/dbpilots/groupboxpages.src               |   61 --
 extensions/source/dbpilots/groupboxwiz.cxx                 |   83 +-
 extensions/source/dbpilots/groupboxwiz.hxx                 |   12 
 extensions/source/dbpilots/listcombopages.src              |  157 -----
 extensions/source/dbpilots/listcombowizard.cxx             |   93 +--
 extensions/source/dbpilots/listcombowizard.hxx             |   22 
 extensions/uiconfig/sabpilot/ui/contentfieldpage.ui        |  137 ++++
 extensions/uiconfig/sabpilot/ui/contenttablepage.ui        |  247 ++++++++
 extensions/uiconfig/sabpilot/ui/fieldlinkpage.ui           |  140 ++++
 extensions/uiconfig/sabpilot/ui/gridfieldsselectionpage.ui |  372 +++++++++++++
 extensions/uiconfig/sabpilot/ui/groupradioselectionpage.ui |  332 +++++++++++
 extensions/uiconfig/sabpilot/ui/tableselectionpage.ui      |  188 ++++++
 22 files changed, 1643 insertions(+), 722 deletions(-)

New commits:
commit 05e81af1f87b09c6a08683726822824fbcaa7bec
Author: Szymon KÅ‚os <eszkadev at gmail.com>
Date:   Thu Jul 3 09:33:14 2014 +0200

    RID_DLG_LISTCOMBOWIZARD tab pages conversion to .ui
    
    Change-Id: I348a876413fa1acf2cf253784d53a0078bbedd92
    Reviewed-on: https://gerrit.libreoffice.org/10043
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/extensions/UIConfig_sabpilot.mk b/extensions/UIConfig_sabpilot.mk
index 5623c5e..b833f4c 100644
--- a/extensions/UIConfig_sabpilot.mk
+++ b/extensions/UIConfig_sabpilot.mk
@@ -10,11 +10,17 @@
 $(eval $(call gb_UIConfig_UIConfig,modules/sabpilot))
 
 $(eval $(call gb_UIConfig_add_uifiles,modules/sabpilot,\
+	extensions/uiconfig/sabpilot/ui/contentfieldpage \
+	extensions/uiconfig/sabpilot/ui/contenttablepage \
 	extensions/uiconfig/sabpilot/ui/datasourcepage \
 	extensions/uiconfig/sabpilot/ui/fieldassignpage \
+	extensions/uiconfig/sabpilot/ui/fieldlinkpage \
+	extensions/uiconfig/sabpilot/ui/gridfieldsselectionpage \
+	extensions/uiconfig/sabpilot/ui/groupradioselectionpage \
 	extensions/uiconfig/sabpilot/ui/invokeadminpage \
 	extensions/uiconfig/sabpilot/ui/selecttablepage \
 	extensions/uiconfig/sabpilot/ui/selecttypepage \
+	extensions/uiconfig/sabpilot/ui/tableselectionpage \
 ))
 
 # vim: set noet sw=4 ts=4:
diff --git a/extensions/source/dbpilots/commonpagesdbp.cxx b/extensions/source/dbpilots/commonpagesdbp.cxx
index ee6dd81..d71a167d 100644
--- a/extensions/source/dbpilots/commonpagesdbp.cxx
+++ b/extensions/source/dbpilots/commonpagesdbp.cxx
@@ -35,6 +35,7 @@
 #include <connectivity/dbtools.hxx>
 #include <vcl/stdtext.hxx>
 #include <vcl/waitobj.hxx>
+#include <vcl/layout.hxx>
 #include <sfx2/docfilt.hxx>
 #include <unotools/pathoptions.hxx>
 #include <sfx2/filedlghelper.hxx>
@@ -59,32 +60,28 @@ namespace dbp
 
 
     OTableSelectionPage::OTableSelectionPage(OControlWizard* _pParent)
-        :OControlWizardPage(_pParent, ModuleRes(RID_PAGE_TABLESELECTION))
-        ,m_aData            (this, ModuleRes(FL_DATA))
-        ,m_aExplanation     (this, ModuleRes(FT_EXPLANATION))
-        ,m_aDatasourceLabel (this, ModuleRes(FT_DATASOURCE))
-        ,m_aDatasource      (this, ModuleRes(LB_DATASOURCE))
-        ,m_aSearchDatabase  (this, ModuleRes(PB_FORMDATASOURCE))
-        ,m_aTableLabel      (this, ModuleRes(FT_TABLE))
-        ,m_aTable           (this, ModuleRes(LB_TABLE))
+        :OControlWizardPage(_pParent, "TableSelectionPage", "modules/sabpilot/ui/tableselectionpage.ui")
     {
-        FreeResource();
+        get(m_pTable,"table");
+        get(m_pDatasource, "datasource");
+        get(m_pDatasourceLabel, "datasourcelabel");
+        get(m_pSearchDatabase, "search");
 
         implCollectDatasource();
 
-        m_aDatasource.SetSelectHdl(LINK(this, OTableSelectionPage, OnListboxSelection));
-        m_aTable.SetSelectHdl(LINK(this, OTableSelectionPage, OnListboxSelection));
-        m_aTable.SetDoubleClickHdl(LINK(this, OTableSelectionPage, OnListboxDoubleClicked));
-        m_aSearchDatabase.SetClickHdl(LINK(this, OTableSelectionPage, OnSearchClicked));
+        m_pDatasource->SetSelectHdl(LINK(this, OTableSelectionPage, OnListboxSelection));
+        m_pTable->SetSelectHdl(LINK(this, OTableSelectionPage, OnListboxSelection));
+        m_pTable->SetDoubleClickHdl(LINK(this, OTableSelectionPage, OnListboxDoubleClicked));
+        m_pSearchDatabase->SetClickHdl(LINK(this, OTableSelectionPage, OnSearchClicked));
 
-        m_aDatasource.SetDropDownLineCount(10);
+        m_pDatasource->SetDropDownLineCount(10);
     }
 
 
     void OTableSelectionPage::ActivatePage()
     {
         OControlWizardPage::ActivatePage();
-        m_aDatasource.GrabFocus();
+        m_pDatasource->GrabFocus();
     }
 
 
@@ -93,10 +90,10 @@ namespace dbp
         if (!OControlWizardPage::canAdvance())
             return false;
 
-        if (0 == m_aDatasource.GetSelectEntryCount())
+        if (0 == m_pDatasource->GetSelectEntryCount())
             return false;
 
-        if (0 == m_aTable.GetSelectEntryCount())
+        if (0 == m_pTable->GetSelectEntryCount())
             return false;
 
         return true;
@@ -117,14 +114,11 @@ namespace dbp
             bool bEmbedded = ::dbtools::isEmbeddedInDatabase( rContext.xForm, xConnection );
             if ( bEmbedded )
             {
-                m_aDatasource.Hide();
-                m_aDatasourceLabel.Hide();
-                m_aSearchDatabase.Hide();
-                m_aTableLabel.SetPosPixel(m_aDatasourceLabel.GetPosPixel());
-                m_aTable.SetPosPixel(m_aDatasource.GetPosPixel());
-                m_aDatasource.InsertEntry(sDataSourceName);
+                VclVBox *_pSourceBox = get<VclVBox>("sourcebox");
+                _pSourceBox->Hide();
+                m_pDatasource->InsertEntry(sDataSourceName);
             }
-            m_aDatasource.SelectEntry(sDataSourceName);
+            m_pDatasource->SelectEntry(sDataSourceName);
 
             implFillTables(xConnection);
 
@@ -134,13 +128,13 @@ namespace dbp
             OSL_VERIFY( rContext.xForm->getPropertyValue("CommandType") >>= nCommandType );
 
             // search the entry of the given type with the given name
-            for ( sal_uInt16 nLookup = 0; nLookup < m_aTable.GetEntryCount(); ++nLookup )
+            for ( sal_uInt16 nLookup = 0; nLookup < m_pTable->GetEntryCount(); ++nLookup )
             {
-                if (sCommand.equals(m_aTable.GetEntry(nLookup)))
+                if (sCommand.equals(m_pTable->GetEntry(nLookup)))
                 {
-                    if ( reinterpret_cast< sal_IntPtr >( m_aTable.GetEntryData( nLookup ) ) == nCommandType )
+                    if ( reinterpret_cast< sal_IntPtr >( m_pTable->GetEntryData( nLookup ) ) == nCommandType )
                     {
-                        m_aTable.SelectEntryPos( nLookup );
+                        m_pTable->SelectEntryPos( nLookup );
                         break;
                     }
                 }
@@ -166,11 +160,11 @@ namespace dbp
             {
                 xOldConn = getFormConnection();
 
-                OUString sDataSource = m_aDatasource.GetSelectEntry();
+                OUString sDataSource = m_pDatasource->GetSelectEntry();
                 rContext.xForm->setPropertyValue("DataSourceName", makeAny( sDataSource ) );
             }
-            OUString sCommand = m_aTable.GetSelectEntry();
-            sal_Int32 nCommandType = reinterpret_cast< sal_IntPtr >( m_aTable.GetEntryData( m_aTable.GetSelectEntryPos() ) );
+            OUString sCommand = m_pTable->GetSelectEntry();
+            sal_Int32 nCommandType = reinterpret_cast< sal_IntPtr >( m_pTable->GetEntryData( m_pTable->GetSelectEntryPos() ) );
 
             rContext.xForm->setPropertyValue("Command", makeAny( sCommand ) );
             rContext.xForm->setPropertyValue("CommandType", makeAny( nCommandType ) );
@@ -208,9 +202,9 @@ namespace dbp
             OUString sDataSourceName = aFileDlg.GetPath();
             ::svt::OFileNotation aFileNotation(sDataSourceName);
             sDataSourceName = aFileNotation.get(::svt::OFileNotation::N_SYSTEM);
-            m_aDatasource.InsertEntry(sDataSourceName);
-            m_aDatasource.SelectEntry(sDataSourceName);
-            LINK(this, OTableSelectionPage, OnListboxSelection).Call(&m_aDatasource);
+            m_pDatasource->InsertEntry(sDataSourceName);
+            m_pDatasource->SelectEntry(sDataSourceName);
+            LINK(this, OTableSelectionPage, OnListboxSelection).Call(m_pDatasource);
         }
         return 0L;
     }
@@ -225,7 +219,7 @@ namespace dbp
 
     IMPL_LINK( OTableSelectionPage, OnListboxSelection, ListBox*, _pBox )
     {
-        if (&m_aDatasource == _pBox)
+        if (m_pDatasource == _pBox)
         {   // new data source selected
             implFillTables();
         }
@@ -257,7 +251,7 @@ namespace dbp
 
     void OTableSelectionPage::implFillTables(const Reference< XConnection >& _rxConn)
     {
-        m_aTable.Clear();
+        m_pTable->Clear();
 
         WaitObject aWaitCursor(this);
 
@@ -275,7 +269,7 @@ namespace dbp
             // connect to the data source
             try
             {
-                OUString sCurrentDatasource = m_aDatasource.GetSelectEntry();
+                OUString sCurrentDatasource = m_pDatasource->GetSelectEntry();
                 if (!sCurrentDatasource.isEmpty())
                 {
                     // obtain the DS object
@@ -359,14 +353,11 @@ namespace dbp
         }
 
         Image aTableImage, aQueryImage;
-        {
-            ::svt::OLocalResourceAccess aLocalResAccess( ModuleRes( RID_PAGE_TABLESELECTION ), RSC_TABPAGE );
+        aTableImage = Image( ModuleRes( IMG_TABLE ) );
+        aQueryImage = Image( ModuleRes( IMG_QUERY ) );
 
-            aTableImage = Image( ModuleRes( IMG_TABLE ) );
-            aQueryImage = Image( ModuleRes( IMG_QUERY ) );
-        }
-        lcl_fillEntries( m_aTable, aTableNames, aTableImage, CommandType::TABLE );
-        lcl_fillEntries( m_aTable, aQueryNames, aQueryImage, CommandType::QUERY );
+        lcl_fillEntries( *m_pTable, aTableNames, aTableImage, CommandType::TABLE );
+        lcl_fillEntries( *m_pTable, aQueryNames, aQueryImage, CommandType::QUERY );
     }
 
 
@@ -376,7 +367,7 @@ namespace dbp
         {
             m_xDSContext = getContext().xDatasourceContext;
             if (m_xDSContext.is())
-                fillListBox(m_aDatasource, m_xDSContext->getElementNames());
+                fillListBox(*m_pDatasource, m_xDSContext->getElementNames());
         }
         catch (const Exception&)
         {
diff --git a/extensions/source/dbpilots/commonpagesdbp.hxx b/extensions/source/dbpilots/commonpagesdbp.hxx
index b348b94..b93e40e 100644
--- a/extensions/source/dbpilots/commonpagesdbp.hxx
+++ b/extensions/source/dbpilots/commonpagesdbp.hxx
@@ -36,13 +36,10 @@ namespace dbp
     class OTableSelectionPage : public OControlWizardPage
     {
     protected:
-        FixedLine       m_aData;
-        FixedText       m_aExplanation;
-        FixedText       m_aDatasourceLabel;
-        ListBox         m_aDatasource;
-        PushButton      m_aSearchDatabase;
-        FixedText       m_aTableLabel;
-        ListBox         m_aTable;
+        FixedText       *m_pDatasourceLabel;
+        ListBox         *m_pDatasource;
+        PushButton      *m_pSearchDatabase;
+        ListBox         *m_pTable;
 
         ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XDatabaseContext >
                         m_xDSContext;
diff --git a/extensions/source/dbpilots/commonpagesdbp.src b/extensions/source/dbpilots/commonpagesdbp.src
index 2e8824f..d40c759 100644
--- a/extensions/source/dbpilots/commonpagesdbp.src
+++ b/extensions/source/dbpilots/commonpagesdbp.src
@@ -19,82 +19,17 @@
 
 #include "dbpresid.hrc"
 
-TabPage RID_PAGE_TABLESELECTION
-{
-    HelpID = "extensions:TabPage:RID_PAGE_TABLESELECTION";
-    SVLook = TRUE ;
-    Size = MAP_APPFONT ( WINDOW_SIZE_X , WINDOW_SIZE_Y ) ;
-    Text [ en-US ] = "Data";
-
-    FixedLine FL_DATA
-    {
-        Pos = MAP_APPFONT ( 4 , 3  ) ;
-        Size = MAP_APPFONT ( WINDOW_SIZE_X - 8 , 8 ) ;
-        Text [ en-US ]  = "Data";
-    };
-    FixedText FT_EXPLANATION
-    {
-        Pos = MAP_APPFONT ( 7 , 15  ) ;
-        Size = MAP_APPFONT ( WINDOW_HALF_SIZE_X - 10 , WINDOW_SIZE_Y - 21 ) ;
-        WordBreak = TRUE;
-        Group = TRUE;
-        Text [ en-US ] = "Currently, the form the control belongs to is not (or not completely) bound to a data source.\n\nPlease choose a data source and a table.\n\n\nPlease note that the settings made on this page will take effect immediately upon leaving the page.";
-    };
-    FixedText FT_DATASOURCE
-    {
-        Pos = MAP_APPFONT ( WINDOW_HALF_SIZE_X + 3 , 15  ) ;
-        Size = MAP_APPFONT ( WINDOW_HALF_SIZE_X - 10 , 8) ;
-        Group = TRUE;
-        Text [ en-US ] = "~Data source:";
-    };
-    ListBox LB_DATASOURCE
-    {
-        HelpID = "extensions:ListBox:RID_PAGE_TABLESELECTION:LB_DATASOURCE";
-        Pos = MAP_APPFONT ( WINDOW_HALF_SIZE_X + 3 , 26  ) ;
-        Size = MAP_APPFONT ( WINDOW_HALF_SIZE_X - 27 , 14 ) ;
-        SVLook = TRUE ;
-        Border = TRUE ;
-        DropDown = TRUE ;
-        AutoHScroll = TRUE ;
-    };
-
-    PushButton PB_FORMDATASOURCE
-    {
-        HelpID = "extensions:PushButton:RID_PAGE_TABLESELECTION:PB_FORMDATASOURCE";
-        Pos = MAP_APPFONT ( WINDOW_HALF_SIZE_X + 3 + WINDOW_HALF_SIZE_X - 24 , 25  ) ;
-        Size = MAP_APPFONT ( 14 , 14 ) ;
-        Text [ en-US ] = "~...";
-    };
-
-    FixedText FT_TABLE
-    {
-        Pos = MAP_APPFONT ( WINDOW_HALF_SIZE_X + 3, 46 ) ;
-        Size = MAP_APPFONT ( WINDOW_HALF_SIZE_X - 14 , 8) ;
-        Group = TRUE;
-        Text [ en-US ] = "~Table / Query:";
-    };
-    ListBox LB_TABLE
-    {
-        HelpID = "extensions:ListBox:RID_PAGE_TABLESELECTION:LB_TABLE";
-        Pos = MAP_APPFONT ( WINDOW_HALF_SIZE_X + 3, 57  ) ;
-        Size = MAP_APPFONT ( WINDOW_HALF_SIZE_X - 10 , WINDOW_SIZE_Y - 6 - 57 ) ;
-        SVLook = TRUE ;
-        Border = TRUE ;
-        Sort = TRUE;
-        AutoHScroll = TRUE ;
-    };
 
-    Image IMG_TABLE
-    {
-        ImageBitmap = Bitmap { File = "sx03188.bmp"; };
-        MaskColor = Color { Red = 0xFFFF; Green = 0x0; Blue = 0xFFFF; };
-    };
+Image IMG_TABLE
+{
+    ImageBitmap = Bitmap { File = "sx03188.bmp"; };
+    MaskColor = Color { Red = 0xFFFF; Green = 0x0; Blue = 0xFFFF; };
+};
 
-    Image IMG_QUERY
-    {
-        ImageBitmap = Bitmap { File = "sx03202.bmp"; };
-        MaskColor = Color { Red = 0xFFFF; Green = 0x0; Blue = 0xFFFF; };
-    };
+Image IMG_QUERY
+{
+    ImageBitmap = Bitmap { File = "sx03202.bmp"; };
+    MaskColor = Color { Red = 0xFFFF; Green = 0x0; Blue = 0xFFFF; };
 };
 
 TabPage RID_PAGE_OPTION_DBFIELD
@@ -152,53 +87,6 @@ TabPage RID_PAGE_OPTION_DBFIELD
     };
 };
 
-TabPage RID_PAGE_FORM_DATASOURCE_STATUS
-{
-    HelpID = "extensions:TabPage:RID_PAGE_FORM_DATASOURCE_STATUS";
-    FixedLine FL_FORMSETINGS
-    {
-        Pos = MAP_APPFONT ( 4 , 3  ) ;
-        Size = MAP_APPFONT ( WINDOW_SIZE_X - 8 , 8 ) ;
-        Text [ en-US ] = "Form";
-    };
-    FixedText FT_FORMDATASOURCELABEL
-    {
-        Pos = MAP_APPFONT ( 7 , 15 ) ;
-        Size = MAP_APPFONT ( 60 , 8 ) ;
-        Text [ en-US ] = "Data source";
-    };
-    FixedText FT_FORMDATASOURCE
-    {
-        Pos = MAP_APPFONT ( 7 + 60 + 3 , 15 ) ;
-        Size = MAP_APPFONT ( WINDOW_SIZE_X / 2 - 80 - 3 , 19 ) ;
-        WordBreak = TRUE;
-    };
-
-    FixedText FT_FORMCONTENTTYPELABEL
-    {
-        Pos = MAP_APPFONT ( WINDOW_SIZE_X / 2 + 3, 15 ) ;
-        Size = MAP_APPFONT ( 60 , 8 ) ;
-        Text [ en-US ] = "Content type";
-    };
-    FixedText FT_FORMCONTENTTYPE
-    {
-        Pos = MAP_APPFONT ( WINDOW_SIZE_X / 2 + 3 + 60 , 15 ) ;
-        Size = MAP_APPFONT ( WINDOW_SIZE_X - ( WINDOW_SIZE_X / 2 + 3 + 60 ) - 7 , 8 ) ;
-    };
-
-    FixedText FT_FORMTABLELABEL
-    {
-        Pos = MAP_APPFONT ( WINDOW_SIZE_X / 2 + 3, 26 ) ;
-        Size = MAP_APPFONT ( 60 , 8 ) ;
-        Text [ en-US ] = "Content";
-    };
-    FixedText FT_FORMTABLE
-    {
-        Pos = MAP_APPFONT ( WINDOW_SIZE_X / 2 + 3 + 60 , 26 ) ;
-        Size = MAP_APPFONT ( WINDOW_SIZE_X - ( WINDOW_SIZE_X / 2 + 3 + 60 ) - 7 , 8 ) ;
-    };
-};
-
 String RID_STR_TYPE_TABLE
 {
     Text [ en-US ] = "Table";
diff --git a/extensions/source/dbpilots/controlwizard.cxx b/extensions/source/dbpilots/controlwizard.cxx
index 530ef32..53179e6 100644
--- a/extensions/source/dbpilots/controlwizard.cxx
+++ b/extensions/source/dbpilots/controlwizard.cxx
@@ -44,6 +44,7 @@
 #include <connectivity/conncleanup.hxx>
 #include <com/sun/star/sdbc/DataType.hpp>
 #include <tools/urlobj.hxx>
+#include <vcl/layout.hxx>
 
 
 namespace dbp
@@ -84,7 +85,18 @@ namespace dbp
 
     OControlWizardPage::OControlWizardPage( OControlWizard* _pParent, const ResId& _rResId )
         :OControlWizardPage_Base( _pParent, _rResId )
-        ,m_pFormSettingsSeparator(NULL)
+        ,m_pFormDatasourceLabel(NULL)
+        ,m_pFormDatasource(NULL)
+        ,m_pFormContentTypeLabel(NULL)
+        ,m_pFormContentType(NULL)
+        ,m_pFormTableLabel(NULL)
+        ,m_pFormTable(NULL)
+    {
+    }
+
+
+    OControlWizardPage::OControlWizardPage( OControlWizard* _pParent, const OString& rID, const OUString& rUIXMLDescription )
+        :OControlWizardPage_Base( _pParent, rID, rUIXMLDescription )
         ,m_pFormDatasourceLabel(NULL)
         ,m_pFormDatasource(NULL)
         ,m_pFormContentTypeLabel(NULL)
@@ -97,13 +109,6 @@ namespace dbp
 
     OControlWizardPage::~OControlWizardPage()
     {
-        delete m_pFormSettingsSeparator;
-        delete m_pFormDatasourceLabel;
-        delete m_pFormDatasource;
-        delete m_pFormContentTypeLabel;
-        delete m_pFormContentType;
-        delete m_pFormTableLabel;
-        delete m_pFormTable;
     }
 
 
@@ -177,20 +182,18 @@ namespace dbp
 
     void OControlWizardPage::enableFormDatasourceDisplay()
     {
-        if (m_pFormSettingsSeparator)
+        if (m_pFormContentType)
             // nothing to do
             return;
 
-        ModuleRes aModuleRes(RID_PAGE_FORM_DATASOURCE_STATUS);
-        OLocalResourceAccess aLocalControls(aModuleRes, RSC_TABPAGE);
-
-        m_pFormSettingsSeparator    = new FixedLine(this,  ModuleRes(FL_FORMSETINGS));
-        m_pFormDatasourceLabel      = new FixedText(this,  ModuleRes(FT_FORMDATASOURCELABEL));
-        m_pFormDatasource           = new FixedText(this,  ModuleRes(FT_FORMDATASOURCE));
-        m_pFormContentTypeLabel     = new FixedText(this,  ModuleRes(FT_FORMCONTENTTYPELABEL));
-        m_pFormContentType          = new FixedText(this,  ModuleRes(FT_FORMCONTENTTYPE));
-        m_pFormTableLabel           = new FixedText(this,  ModuleRes(FT_FORMTABLELABEL));
-        m_pFormTable                = new FixedText(this,  ModuleRes(FT_FORMTABLE));
+        VclFrame *_pFrame = get<VclFrame>("sourceframe");
+        _pFrame->Show();
+        get(m_pFormContentType,"contenttype");
+        get(m_pFormContentTypeLabel,"contenttypelabel");
+        get(m_pFormDatasource, "datasource");
+        get(m_pFormDatasourceLabel, "datasourcelabel");
+        get(m_pFormTable,"formtable");
+        get(m_pFormTableLabel,"formtablelabel");
 
         const OControlWizardContext& rContext = getContext();
         if ( rContext.bEmbedded )
diff --git a/extensions/source/dbpilots/controlwizard.hxx b/extensions/source/dbpilots/controlwizard.hxx
index 8a048a21..971f2cc 100644
--- a/extensions/source/dbpilots/controlwizard.hxx
+++ b/extensions/source/dbpilots/controlwizard.hxx
@@ -57,7 +57,6 @@ namespace dbp
     class OControlWizardPage : public OControlWizardPage_Base
     {
     protected:
-        FixedLine*      m_pFormSettingsSeparator;
         FixedText*      m_pFormDatasourceLabel;
         FixedText*      m_pFormDatasource;
         FixedText*      m_pFormContentTypeLabel;
@@ -76,6 +75,7 @@ namespace dbp
 
     public:
         OControlWizardPage( OControlWizard* _pParent, const ResId& _rResId );
+        OControlWizardPage( OControlWizard* _pParent, const OString& rID, const OUString& rUIXMLDescription );
         virtual ~OControlWizardPage();
 
     protected:
@@ -128,7 +128,7 @@ namespace dbp
         const OControlWizardContext&    getContext() const { return m_aContext; }
         bool                        updateContext(const OAccessRegulator&);
         void                            setFormConnection(const OAccessRegulator&, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxConn, bool _bAutoDispose = true );
-        ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >
+            ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >
                                         getFormConnection(const OAccessRegulator&) const;
 
         /** returns the com.sun.star.task.InteractionHandler
diff --git a/extensions/source/dbpilots/dbpresid.hrc b/extensions/source/dbpilots/dbpresid.hrc
index 0aad843..620e4e7 100644
--- a/extensions/source/dbpilots/dbpresid.hrc
+++ b/extensions/source/dbpilots/dbpresid.hrc
@@ -42,6 +42,8 @@
 #define RID_STR_TYPE_QUERY              (RID_STRING_START +  8 )
 #define RID_STR_TYPE_TABLE              (RID_STRING_START +  9 )
 #define RID_STR_TYPE_COMMAND            (RID_STRING_START + 10 )
+#define RID_STR_FIELDINFO_LISTBOX       (RID_STRING_START + 11 )
+#define RID_STR_FIELDINFO_COMBOBOX      (RID_STRING_START + 12 )
 
 // please adjust RID_STRING_END (below) when adding new strings
 #define RID_STRING_END                  RID_STR_TIMEPOSTFIX
@@ -97,8 +99,6 @@
 // local ids
 
 // FixedLine
-
-#define FL_DATA                     1
 #define FL_DEFAULTSELECTION         2
 #define FL_OPTIONVALUES             3
 #define FL_DATABASEFIELD_EXPL       4
@@ -108,9 +108,6 @@
 
 // FixedText
 
-#define FT_DATASOURCE                1
-#define FT_TABLE                     2
-#define FT_RADIOLABELS               3
 #define FT_RADIOBUTTONS              4
 #define FT_DEFAULTSELECTION          5
 #define FT_OPTIONVALUES_EXPL         6
@@ -119,51 +116,17 @@
 #define FT_DATABASEFIELD_QUEST       9
 #define FT_NAMEIT                   10
 #define FT_THATSALL                 11
-#define FT_SELECTTABLE_LABEL        12
-#define FT_TABLEFIELDS              13
-#define FT_DISPLAYEDFIELD           14
-#define FT_CONTENTFIELD_INFO        15
-#define FT_VALUELISTFIELD           16
-#define FT_TABLEFIELD               17
-#define FT_EXPLANATION              18
-#define FT_EXISTING_FIELDS          19
-#define FT_SELECTED_FIELDS          20
-#define FT_FIELDLINK_DESC           21
-#define FT_FORMDATASOURCELABEL      22
-#define FT_FORMDATASOURCE           23
-#define FT_FORMTABLELABEL           24
-#define FT_FORMTABLE                25
-#define FT_FORMCONTENTTYPELABEL     26
-#define FT_FORMCONTENTTYPE          27
 
 // ListBox
 
-#define LB_DATASOURCE               1
-#define LB_TABLE                    2
 #define LB_RADIOBUTTONS             3
 #define LB_DEFSELECTIONFIELD        3
 #define LB_STOREINFIELD             4
-#define LB_SELECTTABLE              5
-#define LB_SELECTFIELD              6
-#define LB_EXISTING_FIELDS          7
-#define LB_SELECTED_FIELDS          8
 
 // Edit
 
-#define ET_RADIOLABELS              1
 #define ET_OPTIONVALUE              2
 #define ET_NAMEIT                   3
-#define ET_DISPLAYEDFIELD           4
-
-// PushButton
-
-#define PB_MOVETORIGHT              1
-#define PB_MOVETOLEFT               2
-#define PB_FIELDRIGHT               3
-#define PB_ALLFIELDSRIGHT           4
-#define PB_FIELDLEFT                5
-#define PB_ALLFIELDSLEFT            6
-#define PB_FORMDATASOURCE           7
 
 // RadioButton
 
@@ -172,20 +135,10 @@
 #define RB_STOREINFIELD_YES         3
 #define RB_STOREINFIELD_NO          4
 
-// ComboBox
-
-#define CMB_VALUELISTFIELD          1
-#define CMB_TABLEFIELD              2
-
-// String
-
-#define STR_FIELDINFO_LISTBOX       1
-#define STR_FIELDINFO_COMBOBOX      2
-
 // Image
 
-#define IMG_TABLE                   1
-#define IMG_QUERY                   3
+#define IMG_TABLE                   ( RID_DIALOG_START + 1 )
+#define IMG_QUERY                   ( RID_DIALOG_START + 2 )
 
 #define WINDOW_SIZE_X       260
 #define WINDOW_SIZE_Y       185
diff --git a/extensions/source/dbpilots/gridpages.src b/extensions/source/dbpilots/gridpages.src
index 099eb90..bdcb800 100644
--- a/extensions/source/dbpilots/gridpages.src
+++ b/extensions/source/dbpilots/gridpages.src
@@ -19,85 +19,6 @@
 
 #include "dbpresid.hrc"
 
-TabPage RID_PAGE_GW_FIELDSELECTION
-{
-    HelpID = "extensions:TabPage:RID_PAGE_GW_FIELDSELECTION";
-    SVLook = TRUE ;
-    Size = MAP_APPFONT ( WINDOW_SIZE_X , WINDOW_SIZE_Y ) ;
-
-    Text [ en-US ] = "Field Selection";
-
-    FixedLine FL_FRAME
-    {
-        Pos = MAP_APPFONT ( 4 , 40  ) ;
-        Size = MAP_APPFONT ( WINDOW_SIZE_X - 8 , 8 ) ;
-        Text [ en-US ] = "Table element";
-    };
-
-    FixedText FT_EXISTING_FIELDS
-    {
-        Pos = MAP_APPFONT ( 7, 52 );
-        Size = MAP_APPFONT ( WINDOW_HALF_SIZE_X - ITEM_BUTTON_SIZE_X / 2 - 13, 8 );
-        Text [ en-US ] = "Existing fields";
-    };
-    ListBox LB_EXISTING_FIELDS
-    {
-        HelpID = "extensions:ListBox:RID_PAGE_GW_FIELDSELECTION:LB_EXISTING_FIELDS";
-        Pos = MAP_APPFONT ( 7 , 63  ) ;
-        Size = MAP_APPFONT ( WINDOW_HALF_SIZE_X - ITEM_BUTTON_SIZE_X / 2 - 13, WINDOW_SIZE_Y - 63 - 6 ) ;
-        SVLook = TRUE ;
-        Border = TRUE ;
-        AutoHScroll = TRUE ;
-        Sort = FALSE;
-        DropDown = FALSE;
-    };
-    PushButton PB_FIELDRIGHT
-    {
-        HelpID = "extensions:PushButton:RID_PAGE_GW_FIELDSELECTION:PB_FIELDRIGHT";
-        Pos = MAP_APPFONT ( WINDOW_HALF_SIZE_X - ITEM_BUTTON_SIZE_X / 2, 63 );
-        Size = MAP_APPFONT ( ITEM_BUTTON_SIZE_X, ITEM_BUTTON_SIZE_Y );
-        Text = "->";
-    };
-    PushButton PB_ALLFIELDSRIGHT
-    {
-        HelpID = "extensions:PushButton:RID_PAGE_GW_FIELDSELECTION:PB_ALLFIELDSRIGHT";
-        Pos = MAP_APPFONT ( WINDOW_HALF_SIZE_X - ITEM_BUTTON_SIZE_X / 2, 63 + ITEM_BUTTON_SIZE_Y + 3 );
-        Size = MAP_APPFONT ( ITEM_BUTTON_SIZE_X, ITEM_BUTTON_SIZE_Y );
-        Text = "=>>";
-    };
-    PushButton PB_FIELDLEFT
-    {
-        HelpID = "extensions:PushButton:RID_PAGE_GW_FIELDSELECTION:PB_FIELDLEFT";
-        Pos = MAP_APPFONT ( WINDOW_HALF_SIZE_X - ITEM_BUTTON_SIZE_X / 2, 63 + ITEM_BUTTON_SIZE_Y + 3 + ITEM_BUTTON_SIZE_Y + 12 );
-        Size = MAP_APPFONT ( ITEM_BUTTON_SIZE_X, ITEM_BUTTON_SIZE_Y );
-        Text = "<-";
-    };
-    PushButton PB_ALLFIELDSLEFT
-    {
-        HelpID = "extensions:PushButton:RID_PAGE_GW_FIELDSELECTION:PB_ALLFIELDSLEFT";
-        Pos = MAP_APPFONT ( WINDOW_HALF_SIZE_X - ITEM_BUTTON_SIZE_X / 2, 63 + ITEM_BUTTON_SIZE_Y + 3 + ITEM_BUTTON_SIZE_Y + 12 + ITEM_BUTTON_SIZE_Y + 3 );
-        Size = MAP_APPFONT ( ITEM_BUTTON_SIZE_X, ITEM_BUTTON_SIZE_Y );
-        Text = "<<=";
-    };
-    FixedText FT_SELECTED_FIELDS
-    {
-        Pos = MAP_APPFONT ( WINDOW_HALF_SIZE_X + ITEM_BUTTON_SIZE_X / 2 + 6, 52 );
-        Size = MAP_APPFONT ( WINDOW_HALF_SIZE_X - ITEM_BUTTON_SIZE_X / 2 - 13, 8 );
-        Text [ en-US ] = "Selected fields";
-    };
-    ListBox LB_SELECTED_FIELDS
-    {
-        HelpID = "extensions:ListBox:RID_PAGE_GW_FIELDSELECTION:LB_SELECTED_FIELDS";
-        Pos = MAP_APPFONT ( WINDOW_HALF_SIZE_X + ITEM_BUTTON_SIZE_X / 2 + 6 , 63  ) ;
-        Size = MAP_APPFONT ( WINDOW_HALF_SIZE_X - ITEM_BUTTON_SIZE_X / 2 - 13, WINDOW_SIZE_Y - 63 - 6 ) ;
-        SVLook = TRUE ;
-        Border = TRUE ;
-        AutoHScroll = TRUE ;
-        Sort = FALSE;
-        DropDown = FALSE;
-    };
-};
-
 String RID_STR_DATEPOSTFIX
 {
     Text [ en-US ] = " (Date)";
diff --git a/extensions/source/dbpilots/gridwizard.cxx b/extensions/source/dbpilots/gridwizard.cxx
index d7482a2..9f599cc 100644
--- a/extensions/source/dbpilots/gridwizard.cxx
+++ b/extensions/source/dbpilots/gridwizard.cxx
@@ -295,37 +295,33 @@ namespace dbp
 
 
     OGridFieldsSelection::OGridFieldsSelection( OGridWizard* _pParent )
-        :OGridPage(_pParent, ModuleRes(RID_PAGE_GW_FIELDSELECTION))
-        ,m_aFrame               (this, ModuleRes(FL_FRAME))
-        ,m_aExistFieldsLabel    (this, ModuleRes(FT_EXISTING_FIELDS))
-        ,m_aExistFields         (this, ModuleRes(LB_EXISTING_FIELDS))
-        ,m_aSelectOne           (this, ModuleRes(PB_FIELDRIGHT))
-        ,m_aSelectAll           (this, ModuleRes(PB_ALLFIELDSRIGHT))
-        ,m_aDeselectOne         (this, ModuleRes(PB_FIELDLEFT))
-        ,m_aDeselectAll         (this, ModuleRes(PB_ALLFIELDSLEFT))
-        ,m_aSelFieldsLabel      (this, ModuleRes(FT_SELECTED_FIELDS))
-        ,m_aSelFields           (this, ModuleRes(LB_SELECTED_FIELDS))
+        :OGridPage(_pParent, "GridFieldsSelection", "modules/sabpilot/ui/gridfieldsselectionpage.ui")
     {
-        FreeResource();
+        get(m_pExistFields,"existingfields");
+        get(m_pSelectOne,"fieldright");
+        get(m_pSelectAll,"allfieldsright");
+        get(m_pDeselectOne,"fieldleft");
+        get(m_pDeselectAll,"allfieldsleft");
+        get(m_pSelFields,"selectedfields");
 
         enableFormDatasourceDisplay();
 
-        m_aSelectOne.SetClickHdl(LINK(this, OGridFieldsSelection, OnMoveOneEntry));
-        m_aSelectAll.SetClickHdl(LINK(this, OGridFieldsSelection, OnMoveAllEntries));
-        m_aDeselectOne.SetClickHdl(LINK(this, OGridFieldsSelection, OnMoveOneEntry));
-        m_aDeselectAll.SetClickHdl(LINK(this, OGridFieldsSelection, OnMoveAllEntries));
+        m_pSelectOne->SetClickHdl(LINK(this, OGridFieldsSelection, OnMoveOneEntry));
+        m_pSelectAll->SetClickHdl(LINK(this, OGridFieldsSelection, OnMoveAllEntries));
+        m_pDeselectOne->SetClickHdl(LINK(this, OGridFieldsSelection, OnMoveOneEntry));
+        m_pDeselectAll->SetClickHdl(LINK(this, OGridFieldsSelection, OnMoveAllEntries));
 
-        m_aExistFields.SetSelectHdl(LINK(this, OGridFieldsSelection, OnEntrySelected));
-        m_aSelFields.SetSelectHdl(LINK(this, OGridFieldsSelection, OnEntrySelected));
-        m_aExistFields.SetDoubleClickHdl(LINK(this, OGridFieldsSelection, OnEntryDoubleClicked));
-        m_aSelFields.SetDoubleClickHdl(LINK(this, OGridFieldsSelection, OnEntryDoubleClicked));
+        m_pExistFields->SetSelectHdl(LINK(this, OGridFieldsSelection, OnEntrySelected));
+        m_pSelFields->SetSelectHdl(LINK(this, OGridFieldsSelection, OnEntrySelected));
+        m_pExistFields->SetDoubleClickHdl(LINK(this, OGridFieldsSelection, OnEntryDoubleClicked));
+        m_pSelFields->SetDoubleClickHdl(LINK(this, OGridFieldsSelection, OnEntryDoubleClicked));
     }
 
 
     void OGridFieldsSelection::ActivatePage()
     {
         OGridPage::ActivatePage();
-        m_aExistFields.GrabFocus();
+        m_pExistFields->GrabFocus();
     }
 
 
@@ -341,16 +337,16 @@ namespace dbp
         OGridPage::initializePage();
 
         const OControlWizardContext& rContext = getContext();
-        fillListBox(m_aExistFields, rContext.aFieldNames);
+        fillListBox(*m_pExistFields, rContext.aFieldNames);
 
-        m_aSelFields.Clear();
+        m_pSelFields->Clear();
         const OGridSettings& rSettings = getSettings();
         const OUString* pSelected = rSettings.aSelectedFields.getConstArray();
         const OUString* pEnd = pSelected + rSettings.aSelectedFields.getLength();
         for (; pSelected < pEnd; ++pSelected)
         {
-            m_aSelFields.InsertEntry(*pSelected);
-            m_aExistFields.RemoveEntry(*pSelected);
+            m_pSelFields->InsertEntry(*pSelected);
+            m_pExistFields->RemoveEntry(*pSelected);
         }
 
         implCheckButtons();
@@ -363,13 +359,13 @@ namespace dbp
             return false;
 
         OGridSettings& rSettings = getSettings();
-        sal_uInt16 nSelected = m_aSelFields.GetEntryCount();
+        sal_uInt16 nSelected = m_pSelFields->GetEntryCount();
 
         rSettings.aSelectedFields.realloc(nSelected);
         OUString* pSelected = rSettings.aSelectedFields.getArray();
 
         for (sal_uInt16 i=0; i<nSelected; ++i, ++pSelected)
-            *pSelected = m_aSelFields.GetEntry(i);
+            *pSelected = m_pSelFields->GetEntry(i);
 
         return true;
     }
@@ -377,19 +373,19 @@ namespace dbp
 
     void OGridFieldsSelection::implCheckButtons()
     {
-        m_aSelectOne.Enable(m_aExistFields.GetSelectEntryCount() != 0);
-        m_aSelectAll.Enable(m_aExistFields.GetEntryCount() != 0);
+        m_pSelectOne->Enable(m_pExistFields->GetSelectEntryCount() != 0);
+        m_pSelectAll->Enable(m_pExistFields->GetEntryCount() != 0);
 
-        m_aDeselectOne.Enable(m_aSelFields.GetSelectEntryCount() != 0);
-        m_aDeselectAll.Enable(m_aSelFields.GetEntryCount() != 0);
+        m_pDeselectOne->Enable(m_pSelFields->GetSelectEntryCount() != 0);
+        m_pDeselectAll->Enable(m_pSelFields->GetEntryCount() != 0);
 
-        getDialog()->enableButtons(WZB_FINISH, 0 != m_aSelFields.GetEntryCount());
+        getDialog()->enableButtons(WZB_FINISH, 0 != m_pSelFields->GetEntryCount());
     }
 
 
     IMPL_LINK(OGridFieldsSelection, OnEntryDoubleClicked, ListBox*, _pList)
     {
-        PushButton* pSimulateButton = &m_aExistFields == _pList ? &m_aSelectOne : &m_aDeselectOne;
+        PushButton* pSimulateButton = m_pExistFields == _pList ? m_pSelectOne : m_pDeselectOne;
         if (pSimulateButton->IsEnabled())
             return OnMoveOneEntry( pSimulateButton );
         else
@@ -406,13 +402,13 @@ namespace dbp
 
     IMPL_LINK(OGridFieldsSelection, OnMoveOneEntry, PushButton*, _pButton)
     {
-        bool bMoveRight = (&m_aSelectOne == _pButton);
-        ListBox& rMoveTo = bMoveRight ? m_aSelFields : m_aExistFields;
+        bool bMoveRight = (m_pSelectOne == _pButton);
+        ListBox& rMoveTo = bMoveRight ? *m_pSelFields : *m_pExistFields;
 
         // the index of the selected entry
-        sal_uInt16 nSelected = bMoveRight ? m_aExistFields.GetSelectEntryPos() : m_aSelFields.GetSelectEntryPos();
+        sal_uInt16 nSelected = bMoveRight ? m_pExistFields->GetSelectEntryPos() : m_pSelFields->GetSelectEntryPos();
         // the (original) relative position of the entry
-        sal_IntPtr nRelativeIndex = reinterpret_cast<sal_IntPtr>(bMoveRight ? m_aExistFields.GetEntryData(nSelected) : m_aSelFields.GetEntryData(nSelected));
+        sal_IntPtr nRelativeIndex = reinterpret_cast<sal_IntPtr>(bMoveRight ? m_pExistFields->GetEntryData(nSelected) : m_pSelFields->GetEntryData(nSelected));
 
         sal_uInt16 nInsertPos = SAL_MAX_UINT16;
         if (!bMoveRight)
@@ -427,7 +423,7 @@ namespace dbp
         }
 
         // the text of the entry to move
-        OUString sMovingEntry = bMoveRight ? m_aExistFields.GetEntry(nSelected) : m_aSelFields.GetEntry(nSelected);
+        OUString sMovingEntry = bMoveRight ? m_pExistFields->GetEntry(nSelected) : m_pSelFields->GetEntry(nSelected);
 
         // insert the entry
         nInsertPos = rMoveTo.InsertEntry(sMovingEntry, nInsertPos);
@@ -437,21 +433,21 @@ namespace dbp
         // remove the entry from it's old list
         if (bMoveRight)
         {
-            sal_Int32 nSelectPos = m_aExistFields.GetSelectEntryPos();
-            m_aExistFields.RemoveEntry(nSelected);
-            if ((LISTBOX_ENTRY_NOTFOUND != nSelectPos) && (nSelectPos < m_aExistFields.GetEntryCount()))
-                m_aExistFields.SelectEntryPos(nSelectPos);
+            sal_Int32 nSelectPos = m_pExistFields->GetSelectEntryPos();
+            m_pExistFields->RemoveEntry(nSelected);
+            if ((LISTBOX_ENTRY_NOTFOUND != nSelectPos) && (nSelectPos < m_pExistFields->GetEntryCount()))
+                m_pExistFields->SelectEntryPos(nSelectPos);
 
-            m_aExistFields.GrabFocus();
+            m_pExistFields->GrabFocus();
         }
         else
         {
-            sal_Int32 nSelectPos = m_aSelFields.GetSelectEntryPos();
-            m_aSelFields.RemoveEntry(nSelected);
-            if ((LISTBOX_ENTRY_NOTFOUND != nSelectPos) && (nSelectPos < m_aSelFields.GetEntryCount()))
-                m_aSelFields.SelectEntryPos(nSelectPos);
+            sal_Int32 nSelectPos = m_pSelFields->GetSelectEntryPos();
+            m_pSelFields->RemoveEntry(nSelected);
+            if ((LISTBOX_ENTRY_NOTFOUND != nSelectPos) && (nSelectPos < m_pSelFields->GetEntryCount()))
+                m_pSelFields->SelectEntryPos(nSelectPos);
 
-            m_aSelFields.GrabFocus();
+            m_pSelFields->GrabFocus();
         }
 
         implCheckButtons();
@@ -461,10 +457,10 @@ namespace dbp
 
     IMPL_LINK(OGridFieldsSelection, OnMoveAllEntries, PushButton*, _pButton)
     {
-        bool bMoveRight = (&m_aSelectAll == _pButton);
-        m_aExistFields.Clear();
-        m_aSelFields.Clear();
-        fillListBox(bMoveRight ? m_aSelFields : m_aExistFields, getContext().aFieldNames);
+        bool bMoveRight = (m_pSelectAll == _pButton);
+        m_pExistFields->Clear();
+        m_pSelFields->Clear();
+        fillListBox(bMoveRight ? *m_pSelFields : *m_pExistFields, getContext().aFieldNames);
 
         implCheckButtons();
         return 0;
diff --git a/extensions/source/dbpilots/gridwizard.hxx b/extensions/source/dbpilots/gridwizard.hxx
index cd89e7a..e65e75d 100644
--- a/extensions/source/dbpilots/gridwizard.hxx
+++ b/extensions/source/dbpilots/gridwizard.hxx
@@ -75,6 +75,7 @@ namespace dbp
     {
     public:
         OGridPage( OGridWizard* _pParent, const ResId& _rId ) : OControlWizardPage(_pParent, _rId) { }
+        OGridPage( OGridWizard* _pParent, const OString& _rID, const OUString& _rUIXMLDescription ) : OControlWizardPage(_pParent, _rID, _rUIXMLDescription) { }
 
     protected:
         OGridSettings& getSettings() { return static_cast<OGridWizard*>(getDialog())->getSettings(); }
@@ -86,15 +87,12 @@ namespace dbp
     class OGridFieldsSelection : public OGridPage
     {
     protected:
-        FixedLine       m_aFrame;
-        FixedText       m_aExistFieldsLabel;
-        ListBox         m_aExistFields;
-        PushButton      m_aSelectOne;
-        PushButton      m_aSelectAll;
-        PushButton      m_aDeselectOne;
-        PushButton      m_aDeselectAll;
-        FixedText       m_aSelFieldsLabel;
-        ListBox         m_aSelFields;
+        ListBox         *m_pExistFields;
+        PushButton      *m_pSelectOne;
+        PushButton      *m_pSelectAll;
+        PushButton      *m_pDeselectOne;
+        PushButton      *m_pDeselectAll;
+        ListBox         *m_pSelFields;
 
     public:
         OGridFieldsSelection( OGridWizard* _pParent );
diff --git a/extensions/source/dbpilots/groupboxpages.src b/extensions/source/dbpilots/groupboxpages.src
index bc8eef8..3d22719 100644
--- a/extensions/source/dbpilots/groupboxpages.src
+++ b/extensions/source/dbpilots/groupboxpages.src
@@ -19,67 +19,6 @@
 
 #include "dbpresid.hrc"
 
-TabPage RID_PAGE_GROUPRADIOSELECTION
-{
-    HelpID = "extensions:TabPage:RID_PAGE_GROUPRADIOSELECTION";
-    SVLook = TRUE ;
-    Size = MAP_APPFONT ( WINDOW_SIZE_X , WINDOW_SIZE_Y ) ;
-    Text [ en-US ] = "Data";
-
-    FixedLine FL_DATA
-    {
-        Pos = MAP_APPFONT ( 4 , 40  ) ;
-        Size = MAP_APPFONT ( WINDOW_SIZE_X - 8 , 8 ) ;
-    };
-    FixedText FT_RADIOLABELS
-    {
-        Pos = MAP_APPFONT ( 7 , 52  ) ;
-        Size = MAP_APPFONT ( WINDOW_HALF_SIZE_X - ITEM_BUTTON_SIZE_X / 2 - 13, 24 ) ;
-        WordBreak = TRUE;
-        Group = TRUE;
-        Text [ en-US ] = "Which ~names do you want to give the option fields?";
-    };
-    Edit ET_RADIOLABELS
-    {
-        HelpID = "extensions:Edit:RID_PAGE_GROUPRADIOSELECTION:ET_RADIOLABELS";
-        Pos = MAP_APPFONT ( 7 , 79  ) ;
-        Size = MAP_APPFONT ( WINDOW_HALF_SIZE_X - ITEM_BUTTON_SIZE_X / 2 - 13, 12 ) ;
-        SVLook = TRUE ;
-        Border = TRUE ;
-    };
-    PushButton PB_MOVETORIGHT
-    {
-        HelpID = "extensions:PushButton:RID_PAGE_GROUPRADIOSELECTION:PB_MOVETORIGHT";
-        Pos = MAP_APPFONT ( WINDOW_HALF_SIZE_X - ITEM_BUTTON_SIZE_X / 2 , 79  ) ;
-        Size = MAP_APPFONT ( ITEM_BUTTON_SIZE_X , ITEM_BUTTON_SIZE_Y ) ;
-        Text = "~>>";
-    };
-    PushButton PB_MOVETOLEFT
-    {
-        HelpID = "extensions:PushButton:RID_PAGE_GROUPRADIOSELECTION:PB_MOVETOLEFT";
-        Pos = MAP_APPFONT ( WINDOW_HALF_SIZE_X - ITEM_BUTTON_SIZE_X / 2 , 79 + ITEM_BUTTON_SIZE_Y + 3 ) ;
-        Size = MAP_APPFONT ( ITEM_BUTTON_SIZE_X , ITEM_BUTTON_SIZE_Y ) ;
-        Text = "~<<";
-    };
-    FixedText FT_RADIOBUTTONS
-    {
-        Pos = MAP_APPFONT ( WINDOW_HALF_SIZE_X + ITEM_BUTTON_SIZE_X / 2 + 6 , 52  ) ;
-        Size = MAP_APPFONT ( WINDOW_SIZE_X - WINDOW_HALF_SIZE_X - ITEM_BUTTON_SIZE_X / 2 - 6 - 7, 8 ) ;
-        Group = TRUE;
-        Text [ en-US ] = "~Option fields";
-    };
-    ListBox LB_RADIOBUTTONS
-    {
-        HelpID = "extensions:ListBox:RID_PAGE_GROUPRADIOSELECTION:LB_RADIOBUTTONS";
-        Pos = MAP_APPFONT ( WINDOW_HALF_SIZE_X + ITEM_BUTTON_SIZE_X / 2 + 6 , 79  ) ;
-        Size = MAP_APPFONT ( WINDOW_SIZE_X - WINDOW_HALF_SIZE_X - ITEM_BUTTON_SIZE_X / 2 - 6 - 7, WINDOW_SIZE_Y - 79 - 6 ) ;
-        SVLook = TRUE ;
-        Border = TRUE ;
-        AutoHScroll = TRUE ;
-        Sort = FALSE;
-    };
-};
-
 TabPage RID_PAGE_DEFAULTFIELDSELECTION
 {
     HelpID = "extensions:TabPage:RID_PAGE_DEFAULTFIELDSELECTION";
diff --git a/extensions/source/dbpilots/groupboxwiz.cxx b/extensions/source/dbpilots/groupboxwiz.cxx
index ed7c53d..8733a27 100644
--- a/extensions/source/dbpilots/groupboxwiz.cxx
+++ b/extensions/source/dbpilots/groupboxwiz.cxx
@@ -186,51 +186,36 @@ namespace dbp
 
 
     ORadioSelectionPage::ORadioSelectionPage( OControlWizard* _pParent )
-        :OGBWPage(_pParent, ModuleRes(RID_PAGE_GROUPRADIOSELECTION))
-        ,m_aFrame               (this, ModuleRes(FL_DATA))
-        ,m_aRadioNameLabel      (this, ModuleRes(FT_RADIOLABELS))
-        ,m_aRadioName           (this, ModuleRes(ET_RADIOLABELS))
-        ,m_aMoveRight           (this, ModuleRes(PB_MOVETORIGHT))
-        ,m_aMoveLeft            (this, ModuleRes(PB_MOVETOLEFT))
-        ,m_aExistingRadiosLabel (this, ModuleRes(FT_RADIOBUTTONS))
-        ,m_aExistingRadios      (this, ModuleRes(LB_RADIOBUTTONS))
+        :OGBWPage(_pParent, "GroupRadioSelectionPage", "modules/sabpilot/ui/groupradioselectionpage.ui")
     {
-        FreeResource();
+        get(m_pRadioName, "radiolabels");
+        get(m_pMoveRight, "toright");
+        get(m_pMoveLeft, "toleft");
+        get(m_pExistingRadios, "radiobuttons");
 
         if (getContext().aFieldNames.getLength())
         {
             enableFormDatasourceDisplay();
         }
-        else
-        {
-            adjustControlForNoDSDisplay(&m_aFrame);
-            adjustControlForNoDSDisplay(&m_aRadioNameLabel);
-            adjustControlForNoDSDisplay(&m_aRadioName);
-            adjustControlForNoDSDisplay(&m_aMoveRight);
-            adjustControlForNoDSDisplay(&m_aMoveLeft);
-            adjustControlForNoDSDisplay(&m_aExistingRadiosLabel);
-            adjustControlForNoDSDisplay(&m_aExistingRadios, true);
-        }
 
-        m_aMoveLeft.SetClickHdl(LINK(this, ORadioSelectionPage, OnMoveEntry));
-        m_aMoveRight.SetClickHdl(LINK(this, ORadioSelectionPage, OnMoveEntry));
-        m_aRadioName.SetModifyHdl(LINK(this, ORadioSelectionPage, OnNameModified));
-        m_aExistingRadios.SetSelectHdl(LINK(this, ORadioSelectionPage, OnEntrySelected));
+        m_pMoveLeft->SetClickHdl(LINK(this, ORadioSelectionPage, OnMoveEntry));
+        m_pMoveRight->SetClickHdl(LINK(this, ORadioSelectionPage, OnMoveEntry));
+        m_pRadioName->SetModifyHdl(LINK(this, ORadioSelectionPage, OnNameModified));
+        m_pExistingRadios->SetSelectHdl(LINK(this, ORadioSelectionPage, OnEntrySelected));
 
         implCheckMoveButtons();
-        m_aExistingRadios.EnableMultiSelection(true);
+        m_pExistingRadios->EnableMultiSelection(true);
 
-        getDialog()->defaultButton(&m_aMoveRight);
+        getDialog()->defaultButton(m_pMoveRight);
 
-        m_aExistingRadios.SetAccessibleRelationMemberOf(&m_aExistingRadios);
-        m_aExistingRadios.SetAccessibleRelationLabeledBy(&m_aExistingRadiosLabel);
+        m_pExistingRadios->SetAccessibleRelationMemberOf(m_pExistingRadios);
     }
 
 
     void ORadioSelectionPage::ActivatePage()
     {
         OGBWPage::ActivatePage();
-        m_aRadioName.GrabFocus();
+        m_pRadioName->GrabFocus();
     }
 
 
@@ -238,7 +223,7 @@ namespace dbp
     {
         OGBWPage::initializePage();
 
-        m_aRadioName.SetText("");
+        m_pRadioName->SetText("");
 
         // no need to initialize the list of radios here
         // (we're the only one affecting this special setting, so it will be in the same state as last time this
@@ -258,11 +243,11 @@ namespace dbp
         OOptionGroupSettings& rSettings = getSettings();
         rSettings.aLabels.clear();
         rSettings.aValues.clear();
-        rSettings.aLabels.reserve(m_aExistingRadios.GetEntryCount());
-        rSettings.aValues.reserve(m_aExistingRadios.GetEntryCount());
-        for (::svt::WizardTypes::WizardState i=0; i<m_aExistingRadios.GetEntryCount(); ++i)
+        rSettings.aLabels.reserve(m_pExistingRadios->GetEntryCount());
+        rSettings.aValues.reserve(m_pExistingRadios->GetEntryCount());
+        for (::svt::WizardTypes::WizardState i=0; i<m_pExistingRadios->GetEntryCount(); ++i)
         {
-            rSettings.aLabels.push_back(m_aExistingRadios.GetEntry(i));
+            rSettings.aLabels.push_back(m_pExistingRadios->GetEntry(i));
             rSettings.aValues.push_back(OUString::number((i + 1)));
         }
 
@@ -272,25 +257,25 @@ namespace dbp
 
     IMPL_LINK( ORadioSelectionPage, OnMoveEntry, PushButton*, _pButton )
     {
-        bool bMoveLeft = (&m_aMoveLeft == _pButton);
+        bool bMoveLeft = (m_pMoveLeft == _pButton);
         if (bMoveLeft)
         {
-            while (m_aExistingRadios.GetSelectEntryCount())
-                m_aExistingRadios.RemoveEntry(m_aExistingRadios.GetSelectEntryPos(0));
+            while (m_pExistingRadios->GetSelectEntryCount())
+                m_pExistingRadios->RemoveEntry(m_pExistingRadios->GetSelectEntryPos(0));
         }
         else
         {
-            m_aExistingRadios.InsertEntry(m_aRadioName.GetText());
-            m_aRadioName.SetText("");
+            m_pExistingRadios->InsertEntry(m_pRadioName->GetText());
+            m_pRadioName->SetText("");
         }
 
         implCheckMoveButtons();
 
         //adjust the focus
         if (bMoveLeft)
-            m_aExistingRadios.GrabFocus();
+            m_pExistingRadios->GrabFocus();
         else
-            m_aRadioName.GrabFocus();
+            m_pRadioName->GrabFocus();
         return 0L;
     }
 
@@ -311,29 +296,29 @@ namespace dbp
 
     bool ORadioSelectionPage::canAdvance() const
     {
-        return 0 != m_aExistingRadios.GetEntryCount();
+        return 0 != m_pExistingRadios->GetEntryCount();
     }
 
 
     void ORadioSelectionPage::implCheckMoveButtons()
     {
-        bool bHaveSome = (0 != m_aExistingRadios.GetEntryCount());
-        bool bSelectedSome = (0 != m_aExistingRadios.GetSelectEntryCount());
-        bool bUnfinishedInput = (!m_aRadioName.GetText().isEmpty());
+        bool bHaveSome = (0 != m_pExistingRadios->GetEntryCount());
+        bool bSelectedSome = (0 != m_pExistingRadios->GetSelectEntryCount());
+        bool bUnfinishedInput = (!m_pRadioName->GetText().isEmpty());
 
-        m_aMoveLeft.Enable(bSelectedSome);
-        m_aMoveRight.Enable(bUnfinishedInput);
+        m_pMoveLeft->Enable(bSelectedSome);
+        m_pMoveRight->Enable(bUnfinishedInput);
 
         getDialog()->enableButtons(WZB_NEXT, bHaveSome);
 
         if (bUnfinishedInput)
         {
-            if (0 == (m_aMoveRight.GetStyle() & WB_DEFBUTTON))
-                getDialog()->defaultButton(&m_aMoveRight);
+            if (0 == (m_pMoveRight->GetStyle() & WB_DEFBUTTON))
+                getDialog()->defaultButton(m_pMoveRight);
         }
         else
         {
-            if (WB_DEFBUTTON == (m_aMoveRight.GetStyle() & WB_DEFBUTTON))
+            if (WB_DEFBUTTON == (m_pMoveRight->GetStyle() & WB_DEFBUTTON))
                 getDialog()->defaultButton(WZB_NEXT);
         }
     }
diff --git a/extensions/source/dbpilots/groupboxwiz.hxx b/extensions/source/dbpilots/groupboxwiz.hxx
index ccdad61..33bc09c 100644
--- a/extensions/source/dbpilots/groupboxwiz.hxx
+++ b/extensions/source/dbpilots/groupboxwiz.hxx
@@ -80,6 +80,7 @@ namespace dbp
     {
     public:
         OGBWPage( OControlWizard* _pParent, const ResId& _rId ) : OControlWizardPage(_pParent, _rId) { }
+        OGBWPage( OControlWizard* _pParent, const OString& _rID, const OUString& _rUIXMLDescription ) : OControlWizardPage(_pParent, _rID, _rUIXMLDescription) { }
 
     protected:
         OOptionGroupSettings& getSettings() { return static_cast<OGroupBoxWizard*>(getDialog())->getSettings(); }
@@ -91,13 +92,10 @@ namespace dbp
     class ORadioSelectionPage : public OGBWPage
     {
     protected:
-        FixedLine       m_aFrame;
-        FixedText       m_aRadioNameLabel;
-        Edit            m_aRadioName;
-        PushButton      m_aMoveRight;
-        PushButton      m_aMoveLeft;
-        FixedText       m_aExistingRadiosLabel;
-        ListBox         m_aExistingRadios;
+        Edit            *m_pRadioName;
+        PushButton      *m_pMoveRight;
+        PushButton      *m_pMoveLeft;
+        ListBox         *m_pExistingRadios;
 
     public:
         ORadioSelectionPage( OControlWizard* _pParent );
diff --git a/extensions/source/dbpilots/listcombopages.src b/extensions/source/dbpilots/listcombopages.src
index 7223f46..c235798 100644
--- a/extensions/source/dbpilots/listcombopages.src
+++ b/extensions/source/dbpilots/listcombopages.src
@@ -19,163 +19,14 @@
 
 #include "dbpresid.hrc"
 
-TabPage RID_PAGE_LCW_CONTENTSELECTION_TABLE
+String RID_STR_FIELDINFO_COMBOBOX
 {
-    HelpID = "extensions:TabPage:RID_PAGE_LCW_CONTENTSELECTION_TABLE";
-    SVLook = TRUE ;
-    Size = MAP_APPFONT ( WINDOW_SIZE_X , WINDOW_SIZE_Y ) ;
-
-    Text [ en-US ] = "Table Selection";
-
-    FixedLine FL_FRAME
-    {
-        Pos = MAP_APPFONT ( 4 , 40  ) ;
-        Size = MAP_APPFONT ( WINDOW_SIZE_X - 8 , 8 ) ;
-        Text [ en-US ] = "Control";
-    };
-
-    FixedText FT_SELECTTABLE_LABEL
-    {
-        Pos = MAP_APPFONT ( 7 , 52  ) ;
-        Size = MAP_APPFONT ( 120, WINDOW_SIZE_Y - 21 ) ;
-        WordBreak = TRUE;
-        Group = TRUE;
-        Text [ en-US ] = "On the right side, you see all the tables from the data source of the form.\n\n\nChoose the table from which the data should be used as basis for the list content:";
-    };
-    ListBox LB_SELECTTABLE
-    {
-        HelpID = "extensions:ListBox:RID_PAGE_LCW_CONTENTSELECTION_TABLE:LB_SELECTTABLE";
-        Pos = MAP_APPFONT ( 130 , 52  ) ;
-        Size = MAP_APPFONT ( WINDOW_SIZE_X - 130 - 7, WINDOW_SIZE_Y - 52 - 6 ) ;
-        SVLook = TRUE ;
-        Border = TRUE ;
-        AutoHScroll = TRUE ;
-        Sort = FALSE;
-        DropDown = FALSE;
-    };
-};
-
-TabPage RID_PAGE_LCW_CONTENTSELECTION_FIELD
-{
-    HelpID = "extensions:TabPage:RID_PAGE_LCW_CONTENTSELECTION_FIELD";
-    SVLook = TRUE ;
-    Size = MAP_APPFONT ( WINDOW_SIZE_X , WINDOW_SIZE_Y ) ;
-
-    Text [ en-US ] = "Field Selection";
-
-    FixedLine FL_FRAME
-    {
-        Pos = MAP_APPFONT ( 4 , 3  ) ;
-        Size = MAP_APPFONT ( WINDOW_SIZE_X - 8 , 8 ) ;
-    };
-
-    FixedText FT_TABLEFIELDS
-    {
-        Pos = MAP_APPFONT ( 7 , 15  ) ;
-        Size = MAP_APPFONT ( WINDOW_HALF_SIZE_X - 3, 8 ) ;
-        WordBreak = TRUE;
-        Group = TRUE;
-        Text [ en-US ] = "Existing fields";
-    };
-    ListBox LB_SELECTFIELD
-    {
-        HelpID = "extensions:ListBox:RID_PAGE_LCW_CONTENTSELECTION_FIELD:LB_SELECTFIELD";
-        Pos = MAP_APPFONT ( 7 , 26  ) ;
-        Size = MAP_APPFONT ( WINDOW_HALF_SIZE_X - 10, WINDOW_SIZE_Y - 32 ) ;
-        SVLook = TRUE ;
-        Border = TRUE ;
-        AutoHScroll = TRUE ;
-        Sort = FALSE;
-        DropDown = FALSE;
-    };
-    FixedText FT_DISPLAYEDFIELD
-    {
-        Pos = MAP_APPFONT ( WINDOW_HALF_SIZE_X + 3 , 15  ) ;
-        Size = MAP_APPFONT ( WINDOW_HALF_SIZE_X - 10, 8 ) ;
-        Text [ en-US ] = "Display field";
-    };
-    Edit ET_DISPLAYEDFIELD
-    {
-        HelpID = "extensions:Edit:RID_PAGE_LCW_CONTENTSELECTION_FIELD:ET_DISPLAYEDFIELD";
-        Pos = MAP_APPFONT ( WINDOW_HALF_SIZE_X + 3 , 26  ) ;
-        Size = MAP_APPFONT ( WINDOW_HALF_SIZE_X - 10, 12 ) ;
-        SVLook = TRUE ;
-        Border = TRUE ;
-        ReadOnly = TRUE;
-    };
-    FixedText FT_CONTENTFIELD_INFO
-    {
-        Pos = MAP_APPFONT ( WINDOW_HALF_SIZE_X + 3 , 45  ) ;
-        Size = MAP_APPFONT ( WINDOW_HALF_SIZE_X - 10, WINDOW_SIZE_Y - 51 ) ;
-        WordBreak = TRUE;
-    };
-    String STR_FIELDINFO_COMBOBOX
-    {
-        Text [ en-US ] = "The contents of the field selected will be shown in the combo box list.";
-    };
-
-    String STR_FIELDINFO_LISTBOX
-    {
-        Text [ en-US ] = "The contents of the selected field will be shown in the list box if the linked fields are identical.";
-    };
+    Text [ en-US ] = "The contents of the field selected will be shown in the combo box list.";
 };
 
-TabPage RID_PAGE_LCW_FIELDLINK
+String RID_STR_FIELDINFO_LISTBOX
 {
-    HelpID = "extensions:TabPage:RID_PAGE_LCW_FIELDLINK";
-    SVLook = TRUE ;
-    Size = MAP_APPFONT ( WINDOW_SIZE_X , WINDOW_SIZE_Y ) ;
-
-    Text [ en-US ] = "Field Link";
-
-    FixedText FT_FIELDLINK_DESC
-    {
-        Pos = MAP_APPFONT ( 7 , 6  ) ;
-        Size = MAP_APPFONT ( WINDOW_SIZE_X - 14 , 16 ) ;
-        WordBreak = TRUE;
-        Text [ en-US ] = "This is where you select fields with matching contents so that the value from the display field will be shown.";
-    };
-    FixedLine FL_FRAME
-    {
-        Pos = MAP_APPFONT ( 4 , 25  ) ;
-        Size = MAP_APPFONT ( WINDOW_SIZE_X - 8 , 8 ) ;
-    };
-    FixedText FT_VALUELISTFIELD
-    {
-        Pos = MAP_APPFONT ( 7 , 37  ) ;
-        Size = MAP_APPFONT ( WINDOW_HALF_SIZE_X - 10, 8 ) ;
-        Group = TRUE;
-        Text [ en-US ] = "Field from the ~Value Table";
-    };
-    ComboBox CMB_VALUELISTFIELD
-    {
-        HelpID = "extensions:ComboBox:RID_PAGE_LCW_FIELDLINK:CMB_VALUELISTFIELD";
-        Pos = MAP_APPFONT ( 7 , 48  ) ;
-        Size = MAP_APPFONT ( WINDOW_HALF_SIZE_X - 10, WINDOW_SIZE_Y - 54 ) ;
-        SVLook = TRUE ;
-        Border = TRUE ;
-        DropDown = FALSE;
-        Sort = FALSE;
-        AutoHScroll = TRUE;
-    };
-    FixedText FT_TABLEFIELD
-    {
-        Pos = MAP_APPFONT ( WINDOW_HALF_SIZE_X + 3 , 37 ) ;
-        Size = MAP_APPFONT ( WINDOW_HALF_SIZE_X - 10, 8 ) ;
-        Group = TRUE;
-        Text [ en-US ] = "Field from the ~List Table";
-    };
-    ComboBox CMB_TABLEFIELD
-    {
-        HelpID = "extensions:ComboBox:RID_PAGE_LCW_FIELDLINK:CMB_TABLEFIELD";
-        Pos = MAP_APPFONT ( WINDOW_HALF_SIZE_X + 3 , 48 ) ;
-        Size = MAP_APPFONT ( WINDOW_HALF_SIZE_X - 10, WINDOW_SIZE_Y - 54 ) ;
-        SVLook = TRUE ;
-        Border = TRUE ;
-        DropDown = FALSE;
-        Sort = FALSE;
-        AutoHScroll = TRUE;
-    };
+    Text [ en-US ] = "The contents of the selected field will be shown in the list box if the linked fields are identical.";
 };
 
 String RID_STR_COMBOWIZ_DBFIELD
diff --git a/extensions/source/dbpilots/listcombowizard.cxx b/extensions/source/dbpilots/listcombowizard.cxx
index 0c73372..b191e98 100644
--- a/extensions/source/dbpilots/listcombowizard.cxx
+++ b/extensions/source/dbpilots/listcombowizard.cxx
@@ -275,24 +275,21 @@ namespace dbp
 
 
     OContentTableSelection::OContentTableSelection( OListComboWizard* _pParent )
-        :OLCPage(_pParent, ModuleRes(RID_PAGE_LCW_CONTENTSELECTION_TABLE))
-        ,m_aFrame               (this, ModuleRes(FL_FRAME))
-        ,m_aSelectTableLabel    (this, ModuleRes(FT_SELECTTABLE_LABEL))
-        ,m_aSelectTable         (this, ModuleRes(LB_SELECTTABLE))
+        :OLCPage(_pParent, "TableSelectionPage", "modules/sabpilot/ui/contenttablepage.ui")
     {
-        FreeResource();
+        get(m_pSelectTable, "table");
 
         enableFormDatasourceDisplay();
 
-        m_aSelectTable.SetDoubleClickHdl(LINK(this, OContentTableSelection, OnTableDoubleClicked));
-        m_aSelectTable.SetSelectHdl(LINK(this, OContentTableSelection, OnTableSelected));
+        m_pSelectTable->SetDoubleClickHdl(LINK(this, OContentTableSelection, OnTableDoubleClicked));
+        m_pSelectTable->SetSelectHdl(LINK(this, OContentTableSelection, OnTableSelected));
     }
 
 
     void OContentTableSelection::ActivatePage()
     {
         OLCPage::ActivatePage();
-        m_aSelectTable.GrabFocus();
+        m_pSelectTable->GrabFocus();
     }
 
 
@@ -301,7 +298,7 @@ namespace dbp
         if (!OLCPage::canAdvance())
             return false;
 
-        return 0 != m_aSelectTable.GetSelectEntryCount();
+        return 0 != m_pSelectTable->GetSelectEntryCount();
     }
 
 
@@ -325,21 +322,21 @@ namespace dbp
         OLCPage::initializePage();
 
         // fill the list with the table name
-        m_aSelectTable.Clear();
+        m_pSelectTable->Clear();
         try
         {
             Reference< XNameAccess > xTables = getTables(true);
             Sequence< OUString > aTableNames;
             if (xTables.is())
                 aTableNames = xTables->getElementNames();
-            fillListBox(m_aSelectTable, aTableNames);
+            fillListBox(*m_pSelectTable, aTableNames);
         }
         catch(const Exception&)
         {
             OSL_FAIL("OContentTableSelection::initializePage: could not retrieve the table names!");
         }
 
-        m_aSelectTable.SelectEntry(getSettings().sListContentTable);
+        m_pSelectTable->SelectEntry(getSettings().sListContentTable);
     }
 
 
@@ -349,7 +346,7 @@ namespace dbp
             return false;
 
         OListComboSettings& rSettings = getSettings();
-        rSettings.sListContentTable = m_aSelectTable.GetSelectEntry();
+        rSettings.sListContentTable = m_pSelectTable->GetSelectEntry();
         if (rSettings.sListContentTable.isEmpty() && (::svt::WizardTypes::eTravelBackward != _eReason))
             // need to select a table
             return false;
@@ -362,25 +359,20 @@ namespace dbp
 
 
     OContentFieldSelection::OContentFieldSelection( OListComboWizard* _pParent )
-        :OLCPage(_pParent, ModuleRes(RID_PAGE_LCW_CONTENTSELECTION_FIELD))
-        ,m_aFrame               (this, ModuleRes(FL_FRAME))
-        ,m_aTableFields         (this, ModuleRes(FT_TABLEFIELDS))
-        ,m_aSelectTableField    (this, ModuleRes(LB_SELECTFIELD))
-        ,m_aDisplayedFieldLabel (this, ModuleRes(FT_DISPLAYEDFIELD))
-        ,m_aDisplayedField      (this, ModuleRes(ET_DISPLAYEDFIELD))
-        ,m_aInfo                (this, ModuleRes(FT_CONTENTFIELD_INFO))
+        :OLCPage(_pParent, "FieldSelectionPage", "modules/sabpilot/ui/contentfieldpage.ui")
     {
-        m_aInfo.SetText(ModuleRes( isListBox() ? STR_FIELDINFO_LISTBOX : STR_FIELDINFO_COMBOBOX).toString());
-        FreeResource();
-        m_aSelectTableField.SetSelectHdl(LINK(this, OContentFieldSelection, OnFieldSelected));
-        m_aSelectTableField.SetDoubleClickHdl(LINK(this, OContentFieldSelection, OnTableDoubleClicked));
+        get(m_pSelectTableField, "selectfield");
+        get(m_pDisplayedField, "displayfield");
+        get(m_pInfo, "info");
+        m_pInfo->SetText(ModuleRes( isListBox() ? RID_STR_FIELDINFO_LISTBOX : RID_STR_FIELDINFO_COMBOBOX).toString());
+        m_pSelectTableField->SetSelectHdl(LINK(this, OContentFieldSelection, OnFieldSelected));
+        m_pSelectTableField->SetDoubleClickHdl(LINK(this, OContentFieldSelection, OnTableDoubleClicked));
     }
 
 
     void OContentFieldSelection::ActivatePage()
     {
         OLCPage::ActivatePage();
-        m_aTableFields.GrabFocus();
     }
 
 
@@ -389,10 +381,10 @@ namespace dbp
         OLCPage::initializePage();
 
         // fill the list of fields
-        fillListBox(m_aSelectTableField, getTableFields(true));
+        fillListBox(*m_pSelectTableField, getTableFields(true));
 
-        m_aSelectTableField.SelectEntry(getSettings().sListContentField);
-        m_aDisplayedField.SetText(getSettings().sListContentField);
+        m_pSelectTableField->SelectEntry(getSettings().sListContentField);
+        m_pDisplayedField->SetText(getSettings().sListContentField);
     }
 
 
@@ -401,13 +393,13 @@ namespace dbp
         if (!OLCPage::canAdvance())
             return false;
 
-        return 0 != m_aSelectTableField.GetSelectEntryCount();
+        return 0 != m_pSelectTableField->GetSelectEntryCount();
     }
 
 
     IMPL_LINK( OContentFieldSelection, OnTableDoubleClicked, ListBox*, /*NOTINTERESTEDIN*/ )
     {
-        if (m_aSelectTableField.GetSelectEntryCount())
+        if (m_pSelectTableField->GetSelectEntryCount())
             getDialog()->travelNext();
         return 0L;
     }
@@ -416,7 +408,7 @@ namespace dbp
     IMPL_LINK( OContentFieldSelection, OnFieldSelected, ListBox*, /*NOTINTERESTEDIN*/ )
     {
         updateDialogTravelUI();
-        m_aDisplayedField.SetText(m_aSelectTableField.GetSelectEntry());
+        m_pDisplayedField->SetText(m_pSelectTableField->GetSelectEntry());
         return 0L;
     }
 
@@ -426,7 +418,7 @@ namespace dbp
         if (!OLCPage::commitPage(_eReason))
             return false;
 
-        getSettings().sListContentField = m_aSelectTableField.GetSelectEntry();
+        getSettings().sListContentField = m_pSelectTableField->GetSelectEntry();
 
         return true;
     }
@@ -436,27 +428,22 @@ namespace dbp
 
 
     OLinkFieldsPage::OLinkFieldsPage( OListComboWizard* _pParent )
-        :OLCPage(_pParent, ModuleRes(RID_PAGE_LCW_FIELDLINK))
-        ,m_aDescription         (this, ModuleRes(FT_FIELDLINK_DESC))
-        ,m_aFrame               (this, ModuleRes(FL_FRAME))
-        ,m_aValueListFieldLabel (this, ModuleRes(FT_VALUELISTFIELD))
-        ,m_aValueListField      (this, ModuleRes(CMB_VALUELISTFIELD))
-        ,m_aTableFieldLabel     (this, ModuleRes(FT_TABLEFIELD))
-        ,m_aTableField          (this, ModuleRes(CMB_TABLEFIELD))
+        :OLCPage(_pParent, "FieldLinkPage", "modules/sabpilot/ui/fieldlinkpage.ui")
     {
-        FreeResource();
+        get(m_pValueListField, "valuefield");
+        get(m_pTableField, "listtable");
 
-        m_aValueListField.SetModifyHdl(LINK(this, OLinkFieldsPage, OnSelectionModified));
-        m_aTableField.SetModifyHdl(LINK(this, OLinkFieldsPage, OnSelectionModified));
-        m_aValueListField.SetSelectHdl(LINK(this, OLinkFieldsPage, OnSelectionModified));
-        m_aTableField.SetSelectHdl(LINK(this, OLinkFieldsPage, OnSelectionModified));
+        m_pValueListField->SetModifyHdl(LINK(this, OLinkFieldsPage, OnSelectionModified));
+        m_pTableField->SetModifyHdl(LINK(this, OLinkFieldsPage, OnSelectionModified));
+        m_pValueListField->SetSelectHdl(LINK(this, OLinkFieldsPage, OnSelectionModified));
+        m_pTableField->SetSelectHdl(LINK(this, OLinkFieldsPage, OnSelectionModified));
     }
 
 
     void OLinkFieldsPage::ActivatePage()
     {
         OLCPage::ActivatePage();
-        m_aValueListField.GrabFocus();
+        m_pValueListField->GrabFocus();
     }
 
 
@@ -465,13 +452,13 @@ namespace dbp
         OLCPage::initializePage();
 
         // fill the value list
-        fillListBox(m_aValueListField, getContext().aFieldNames);
+        fillListBox(*m_pValueListField, getContext().aFieldNames);
         // fill the table field list
-        fillListBox(m_aTableField, getTableFields(true));
+        fillListBox(*m_pTableField, getTableFields(true));
 
         // the initial selections
-        m_aValueListField.SetText(getSettings().sLinkedFormField);
-        m_aTableField.SetText(getSettings().sLinkedListField);
+        m_pValueListField->SetText(getSettings().sLinkedFormField);
+        m_pTableField->SetText(getSettings().sLinkedListField);
 
         implCheckFinish();
     }
@@ -486,8 +473,8 @@ namespace dbp
 
     void OLinkFieldsPage::implCheckFinish()
     {
-        bool bInvalidSelection = (COMBOBOX_ENTRY_NOTFOUND == m_aValueListField.GetEntryPos(m_aValueListField.GetText()));
-        bInvalidSelection |= (COMBOBOX_ENTRY_NOTFOUND == m_aTableField.GetEntryPos(m_aTableField.GetText()));
+        bool bInvalidSelection = (COMBOBOX_ENTRY_NOTFOUND == m_pValueListField->GetEntryPos(m_pValueListField->GetText()));
+        bInvalidSelection |= (COMBOBOX_ENTRY_NOTFOUND == m_pTableField->GetEntryPos(m_pTableField->GetText()));
         getDialog()->enableButtons(WZB_FINISH, !bInvalidSelection);
     }
 
@@ -504,8 +491,8 @@ namespace dbp
         if (!OLCPage::commitPage(_eReason))
             return false;
 
-        getSettings().sLinkedFormField = m_aValueListField.GetText();
-        getSettings().sLinkedListField = m_aTableField.GetText();
+        getSettings().sLinkedFormField = m_pValueListField->GetText();
+        getSettings().sLinkedListField = m_pTableField->GetText();
 
         return true;
     }
diff --git a/extensions/source/dbpilots/listcombowizard.hxx b/extensions/source/dbpilots/listcombowizard.hxx
index d055030..d757609 100644
--- a/extensions/source/dbpilots/listcombowizard.hxx
+++ b/extensions/source/dbpilots/listcombowizard.hxx
@@ -89,6 +89,7 @@ namespace dbp
     {
     public:
         OLCPage( OListComboWizard* _pParent, const ResId& _rId ) : OControlWizardPage(_pParent, _rId) { }
+        OLCPage( OListComboWizard* _pParent, const OString& rID, const OUString& rUIXMLDescription ) : OControlWizardPage(_pParent, rID, rUIXMLDescription) { }
 
     protected:
         OListComboSettings& getSettings() { return static_cast<OListComboWizard*>(getDialog())->getSettings(); }
@@ -107,9 +108,7 @@ namespace dbp
     class OContentTableSelection : public OLCPage
     {
     protected:
-        FixedLine       m_aFrame;
-        FixedText       m_aSelectTableLabel;
-        ListBox         m_aSelectTable;
+        ListBox         *m_pSelectTable;
 
     public:
         OContentTableSelection( OListComboWizard* _pParent );
@@ -134,12 +133,9 @@ namespace dbp
     class OContentFieldSelection : public OLCPage
     {
     protected:
-        FixedLine       m_aFrame;
-        FixedText       m_aTableFields;
-        ListBox         m_aSelectTableField;
-        FixedText       m_aDisplayedFieldLabel;
-        Edit            m_aDisplayedField;
-        FixedText       m_aInfo;
+        ListBox         *m_pSelectTableField;
+        Edit            *m_pDisplayedField;
+        FixedText       *m_pInfo;
 
 
     public:
@@ -164,12 +160,8 @@ namespace dbp
     class OLinkFieldsPage : public OLCPage
     {
     protected:
-        FixedText       m_aDescription;
-        FixedLine       m_aFrame;
-        FixedText       m_aValueListFieldLabel;
-        ComboBox        m_aValueListField;
-        FixedText       m_aTableFieldLabel;
-        ComboBox        m_aTableField;
+        ComboBox        *m_pValueListField;
+        ComboBox        *m_pTableField;
 
 
     public:
diff --git a/extensions/uiconfig/sabpilot/ui/contentfieldpage.ui b/extensions/uiconfig/sabpilot/ui/contentfieldpage.ui
new file mode 100644
index 0000000..c0c9008
--- /dev/null
+++ b/extensions/uiconfig/sabpilot/ui/contentfieldpage.ui
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.16.1 -->
+<interface>
+  <requires lib="gtk+" version="3.0"/>
+  <object class="GtkBox" id="FieldSelectionPage">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="hexpand">True</property>
+    <property name="vexpand">True</property>
+    <property name="border_width">6</property>
+    <property name="orientation">vertical</property>
+    <property name="spacing">6</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="spacing">12</property>
+        <property name="homogeneous">True</property>
+        <child>
+          <object class="GtkBox" id="box2">
+            <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="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="halign">start</property>
+                <property name="label" translatable="yes">Existing fields</property>
+                <property name="use_underline">True</property>
+                <property name="mnemonic_widget">selectfield:border</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkTreeView" id="selectfield: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="treeview-selection1"/>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">True</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="hexpand">True</property>
+            <property name="vexpand">True</property>
+            <property name="orientation">vertical</property>
+            <property name="spacing">6</property>
+            <child>
+              <object class="GtkLabel" id="label3">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="halign">start</property>
+                <property name="valign">start</property>
+                <property name="label" translatable="yes">Display field</property>
+                <property name="use_underline">True</property>
+                <property name="wrap">True</property>
+                <property name="mnemonic_widget">displayfield</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkEntry" id="displayfield">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="hexpand">True</property>
+                <property name="editable">False</property>
+                <property name="invisible_char">•</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="info">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="hexpand">True</property>
+                <property name="vexpand">True</property>
+                <property name="xalign">0</property>
+                <property name="yalign">0</property>
+                <property name="wrap">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+      <packing>
+        <property name="expand">True</property>
+        <property name="fill">True</property>
+        <property name="position">0</property>
+      </packing>
+    </child>
+  </object>
+</interface>
diff --git a/extensions/uiconfig/sabpilot/ui/contenttablepage.ui b/extensions/uiconfig/sabpilot/ui/contenttablepage.ui
new file mode 100644
index 0000000..5fc5673
--- /dev/null
+++ b/extensions/uiconfig/sabpilot/ui/contenttablepage.ui
@@ -0,0 +1,247 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.16.1 -->
+<interface>
+  <requires lib="gtk+" version="3.0"/>
+  <object class="GtkBox" id="TableSelectionPage">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="hexpand">True</property>
+    <property name="vexpand">True</property>
+    <property name="border_width">6</property>
+    <property name="orientation">vertical</property>
+    <property name="spacing">12</property>
+    <child>
+      <object class="GtkFrame" id="sourceframe">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="hexpand">True</property>
+        <property name="label_xalign">0</property>
+        <property name="shadow_type">none</property>
+        <child>
+          <object class="GtkAlignment" id="alignment1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="hexpand">True</property>
+            <property name="top_padding">6</property>
+            <property name="left_padding">12</property>
+            <child>
+              <object class="GtkBox" id="box2">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="hexpand">True</property>
+                <property name="spacing">6</property>
+                <child>
+                  <object class="GtkGrid" id="grid1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="row_spacing">12</property>
+                    <child>
+                      <object class="GtkLabel" id="datasourcelabel">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="halign">start</property>
+                        <property name="label" translatable="yes">Data source</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="contenttypelabel">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="halign">start</property>
+                        <property name="label" translatable="yes">Content type</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="GtkLabel" id="formtablelabel">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="halign">start</property>
+                        <property name="label" translatable="yes">Content</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>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkGrid" id="grid2">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="hexpand">True</property>
+                    <property name="row_spacing">6</property>
+                    <property name="column_spacing">6</property>
+                    <child>
+                      <object class="GtkLabel" id="datasource">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="halign">start</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="contenttype">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="halign">start</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="GtkLabel" id="formtable">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="halign">start</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>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+            </child>
+          </object>
+        </child>
+        <child type="label">
+          <object class="GtkLabel" id="formsettings">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes">Form</property>
+            <attributes>
+              <attribute name="weight" value="bold"/>
+            </attributes>
+          </object>
+        </child>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">True</property>
+        <property name="position">0</property>
+      </packing>
+    </child>
+    <child>
+      <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="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="spacing">12</property>
+                <property name="homogeneous">True</property>
+                <child>
+                  <object class="GtkLabel" id="label3">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="halign">start</property>
+                    <property name="valign">start</property>
+                    <property name="hexpand">True</property>
+                    <property name="xalign">0</property>
+                    <property name="yalign">0</property>
+                    <property name="label" translatable="yes">On the right side, you see all the tables from the data source of the form.
+
+
+Choose the table from which the data should be used as basis for the list content:</property>
+                    <property name="use_underline">True</property>
+                    <property name="wrap">True</property>
+                    <property name="mnemonic_widget">table:border</property>
+                    <property name="max_width_chars">50</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkTreeView" id="table: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="treeview-selection1"/>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+            </child>
+          </object>
+        </child>
+        <child type="label">
+          <object class="GtkLabel" id="label2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes">Control</property>
+            <attributes>
+              <attribute name="weight" value="bold"/>
+            </attributes>
+          </object>
+        </child>
+      </object>
+      <packing>
+        <property name="expand">True</property>
+        <property name="fill">True</property>
+        <property name="position">2</property>
+      </packing>
+    </child>
+  </object>
+</interface>
diff --git a/extensions/uiconfig/sabpilot/ui/fieldlinkpage.ui b/extensions/uiconfig/sabpilot/ui/fieldlinkpage.ui
new file mode 100644
index 0000000..c1d7eb7
--- /dev/null
+++ b/extensions/uiconfig/sabpilot/ui/fieldlinkpage.ui
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.16.1 -->
+<interface>
+  <requires lib="gtk+" version="3.0"/>
+  <object class="GtkBox" id="FieldLinkPage">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="hexpand">True</property>
+    <property name="vexpand">True</property>
+    <property name="border_width">6</property>
+    <property name="orientation">vertical</property>
+    <property name="spacing">12</property>
+    <child>
+      <object class="GtkLabel" id="desc">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="xalign">0</property>
+        <property name="yalign">0</property>
+        <property name="label" translatable="yes">This is where you select fields with matching contents so that the value from the display field will be shown.</property>
+        <property name="wrap">True</property>
+        <property name="max_width_chars">90</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="box1">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="hexpand">True</property>
+        <property name="vexpand">True</property>
+        <property name="spacing">6</property>
+        <child>
+          <object class="GtkBox" id="box2">
+            <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="GtkLabel" id="label2">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="halign">start</property>
+                <property name="label" translatable="yes">Field from the _Value Table</property>
+                <property name="use_underline">True</property>
+                <property name="mnemonic_widget">valuefield</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkComboBox" id="valuefield">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="hexpand">True</property>
+                <property name="has_entry">True</property>
+                <child internal-child="entry">
+                  <object class="GtkEntry" id="combobox-entry2">
+                    <property name="can_focus">False</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">True</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="hexpand">True</property>
+            <property name="vexpand">True</property>
+            <property name="orientation">vertical</property>
+            <property name="spacing">6</property>
+            <child>
+              <object class="GtkLabel" id="label3">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="halign">start</property>
+                <property name="label" translatable="yes">Field from the _List Table</property>
+                <property name="use_underline">True</property>
+                <property name="mnemonic_widget">listtable</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkComboBox" id="listtable">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="hexpand">True</property>
+                <property name="has_entry">True</property>
+                <child internal-child="entry">
+                  <object class="GtkEntry" id="combobox-entry4">
+                    <property name="can_focus">False</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+      <packing>
+        <property name="expand">True</property>
+        <property name="fill">True</property>
+        <property name="position">1</property>
+      </packing>
+    </child>
+  </object>
+</interface>
diff --git a/extensions/uiconfig/sabpilot/ui/gridfieldsselectionpage.ui b/extensions/uiconfig/sabpilot/ui/gridfieldsselectionpage.ui
new file mode 100644
index 0000000..0d308a2
--- /dev/null
+++ b/extensions/uiconfig/sabpilot/ui/gridfieldsselectionpage.ui
@@ -0,0 +1,372 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.16.1 -->
+<interface>
+  <requires lib="gtk+" version="3.0"/>
+  <object class="GtkBox" id="GridFieldsSelection">
+    <property name="height_request">200</property>
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="hexpand">True</property>
+    <property name="vexpand">True</property>
+    <property name="border_width">6</property>
+    <property name="orientation">vertical</property>
+    <property name="spacing">12</property>
+    <child>
+      <object class="GtkFrame" id="sourceframe">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="valign">start</property>
+        <property name="hexpand">True</property>
+        <property name="label_xalign">0</property>
+        <property name="shadow_type">none</property>
+        <child>
+          <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="GtkBox" id="box2">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="hexpand">True</property>
+                <property name="spacing">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>
+                    <child>
+                      <object class="GtkLabel" id="datasourcelabel">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="halign">start</property>
+                        <property name="label" translatable="yes">Data source</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="contenttypelabel">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="halign">start</property>
+                        <property name="label" translatable="yes">Content type</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="GtkLabel" id="formtablelabel">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="halign">start</property>
+                        <property name="label" translatable="yes">Content</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>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkGrid" id="grid2">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="hexpand">True</property>
+                    <property name="row_spacing">6</property>
+                    <child>
+                      <object class="GtkLabel" id="datasource">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="halign">start</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="contenttype">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="halign">start</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="GtkLabel" id="formtable">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="halign">start</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>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+            </child>
+          </object>
+        </child>
+        <child type="label">
+          <object class="GtkLabel" id="formsettings">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes">Form</property>
+            <attributes>
+              <attribute name="weight" value="bold"/>
+            </attributes>
+          </object>
+        </child>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">True</property>
+        <property name="position">0</property>
+      </packing>
+    </child>
+    <child>
+      <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>

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list