[PATCH] Use UI builder for database wizard's start page

Mathias Hasselmann (via Code Review) gerrit at gerrit.libreoffice.org
Thu Mar 21 01:22:57 PDT 2013


Hi,

I have submitted a patch for review:

    https://gerrit.libreoffice.org/2887

To pull it, you can do:

    git pull ssh://gerrit.libreoffice.org:29418/core refs/changes/87/2887/1

Use UI builder for database wizard's start page

Actually the resource based code maintaining two pretty different pages
in one single class: The start page of the setup wizard and the start page
for the change datasource type wizard. Both dialogs looked pretty different
so to simplify the UI definition and to reduce number of null pointers and
branches in the underlaying code I've split dbaui::OGeneralPage into two
separate classes that share a few common pieces.

Change-Id: I690e178992c528de112d91cecf00cc3c5156f1cf
---
M dbaccess/UI_dbaccess.mk
M dbaccess/source/ui/dlg/adminpages.cxx
M dbaccess/source/ui/dlg/dbadmin.hrc
M dbaccess/source/ui/dlg/dbadmin.src
M dbaccess/source/ui/dlg/dbwiz.cxx
M dbaccess/source/ui/dlg/dbwizsetup.cxx
M dbaccess/source/ui/dlg/generalpage.cxx
M dbaccess/source/ui/dlg/generalpage.hxx
M dbaccess/source/ui/inc/dbu_dlg.hrc
M dbaccess/source/ui/inc/dbu_resource.hrc
M dbaccess/source/ui/inc/dbwizsetup.hxx
A dbaccess/uiconfig/ui/generalpagedialog.ui
A dbaccess/uiconfig/ui/generalpagewizard.ui
13 files changed, 747 insertions(+), 565 deletions(-)



diff --git a/dbaccess/UI_dbaccess.mk b/dbaccess/UI_dbaccess.mk
index 71c6ddc..3468a40 100644
--- a/dbaccess/UI_dbaccess.mk
+++ b/dbaccess/UI_dbaccess.mk
@@ -11,6 +11,8 @@
 
 $(eval $(call gb_UI_add_uifiles,dbaccess, \
     dbaccess/uiconfig/ui/querypropertiesdialog  \
+    dbaccess/uiconfig/ui/generalpagedialog \
+    dbaccess/uiconfig/ui/generalpagewizard \
 ))
 
 # vim: set noet sw=4 ts=4:
diff --git a/dbaccess/source/ui/dlg/adminpages.cxx b/dbaccess/source/ui/dlg/adminpages.cxx
index 27ce056..558dd99 100644
--- a/dbaccess/source/ui/dlg/adminpages.cxx
+++ b/dbaccess/source/ui/dlg/adminpages.cxx
@@ -155,8 +155,7 @@
         if (!aEnumeration.isLoaded())
         {
             // show an error message
-            LocalResourceAccess aLocRes( PAGE_GENERAL, RSC_TABPAGE );
-            String sError(ModuleRes(STR_COULDNOTLOAD_ODBCLIB));
+            String sError( ModuleRes( STR_COULD_NOT_LOAD_ODBC_LIB ) );
             sError.SearchAndReplaceAscii("#lib#", aEnumeration.getLibraryName());
             ErrorBox aDialog(this, WB_OK, sError);
             aDialog.Execute();
diff --git a/dbaccess/source/ui/dlg/dbadmin.hrc b/dbaccess/source/ui/dlg/dbadmin.hrc
index 3a6ea77..88bf919 100644
--- a/dbaccess/source/ui/dlg/dbadmin.hrc
+++ b/dbaccess/source/ui/dlg/dbadmin.hrc
@@ -23,8 +23,8 @@
 //========================================================================
 // control ids
 
-#define FT_DATATYPE             1
-#define FT_DATASOURCETYPE_PRE   2
+    // FREE
+    // FREE
 #define FT_USERNAME             3
 #define FT_PASSWORD             4
 #define FT_OPTIONS              5
@@ -36,16 +36,6 @@
 #define FT_BASEDN               11
 #define FT_PORTNUMBER           12
 #define FT_LDAPROWCOUNT         13
-#define FT_DATASOURCETYPE_POST  14
-#define FT_GENERALHEADERTEXT    15
-#define FT_GENERALHELPTEXT      16
-#define FT_DATATYPEAPPENDIX     17
-#define FT_DATASOURCEHEADER     18
-#define FT_DOCLISTLABEL         19
-
-#define LB_DATATYPE             1
-    // FREE
-#define LB_DOCUMENTLIST         3
 
 #define ET_USERNAME             1
 #define ET_PASSWORD             2
@@ -59,7 +49,6 @@
 #define BTN_PASSWORD_CANCEL     3
 #define BTN_PASSWORD_HELP       4
 #define PB_TESTDRIVERCLASS      5
-#define PB_OPENDOCUMENT         6
 
 #define CB_PASSWORD_REQUIRED    1
 #define CB_SHOWDELETEDROWS      2
@@ -75,20 +64,12 @@
 #define NF_PORTNUMBER           1
 #define NF_LDAPROWCOUNT         2
 
-#define RB_CREATEDBDATABASE     1
-#define RB_GETEXISTINGDATABASE  2
-#define RB_OPENEXISTINGDOC      3
-
 //========================================================================
 // string ids (usually relative to other resources, that's why not necessarily unique)
 
 #define STR_PAGETITLE_GENERAL               1
 #define STR_PAGETITLE_CONNECTION            2
 #define STR_PAGETITLE_ADVANCED              3
-#define STR_MYSQLENTRY                      5
-#define STR_PARENTTITLE                     6
-#define STR_COULDNOTLOAD_ODBCLIB            7
-#define STR_UNSUPPORTED_DATASOURCE_TYPE     8
 
 #endif // _DBAUI_DBADMIN_HRC_
 
diff --git a/dbaccess/source/ui/dlg/dbadmin.src b/dbaccess/source/ui/dlg/dbadmin.src
index 4d59ad9..5d695b6 100644
--- a/dbaccess/source/ui/dlg/dbadmin.src
+++ b/dbaccess/source/ui/dlg/dbadmin.src
@@ -128,158 +128,6 @@
     Text [ en-US ] = "Database properties" ;
 };
 
-//-------------------------------------------------------------------------
-
-TabPage PAGE_GENERAL
-{
-    SVLook = TRUE ;
-    Size = MAP_APPFONT ( WIZARD_PAGE_X , WIZARD_PAGE_Y ) ;
-    Hide = TRUE;
-    HelpId = HID_DSADMIN_PAGE_GENERAL;
-
-
-    FixedText FT_GENERALHEADERTEXT
-    {
-        Pos = MAP_APPFONT ( START_X , 8 ) ;
-        Size = MAP_APPFONT ( (WIZARD_PAGE_X - START_X) - 12 , 2 * FIXEDTEXT_HEIGHT ) ;
-        Text [ en-US ] = "Welcome to the %PRODUCTNAME Database Wizard";
-        WordBreak = TRUE;
-    };
-
-    FixedText FT_GENERALHELPTEXT
-    {
-        Pos = MAP_APPFONT (START_X , 27 );
-        Size = MAP_APPFONT ( WIZARD_PAGE_X - START_X - 6, 5* FIXEDTEXT_HEIGHT ) ;
-        Text [ en-US ]  = "Use the Database Wizard to create a new database, open an existing database file, or connect to a database stored on a server." ;
-        WordBreak = TRUE ;
-    };
-
-    FixedText FT_DATASOURCEHEADER
-    {
-        Pos = MAP_APPFONT ( START_X , 73 ) ;
-        Size = MAP_APPFONT ( WIZARD_PAGE_X - 12 , FIXEDTEXT_HEIGHT ) ;
-        Text [ en-US ] = "What do you want to do?";
-    };
-
-    RadioButton RB_CREATEDBDATABASE
-    {
-        HelpId = HID_PAGE_DBWIZARD_GENERAL_RB_CREATEDBDATABASE ;
-        Pos = MAP_APPFONT (START_X + 6 , 85 )  ;
-        Size = MAP_APPFONT ( 205 , 10 ) ;
-        Group = TRUE;
-        Text [ en-US ]  = "Create a n~ew database" ;
-    };
-
-    RadioButton RB_OPENEXISTINGDOC
-    {
-        HelpID = "dbaccess:RadioButton:PAGE_GENERAL:RB_OPENEXISTINGDOC";
-        Pos = MAP_APPFONT (START_X + 6 , 97 );
-        Size = MAP_APPFONT ( 206 , 8 ) ;
-        Text [ en-US ]  = "Open an existing database ~file" ;
-    };
-
-    FixedText FT_DOCLISTLABEL
-    {
-        Pos = MAP_APPFONT( START_X + INDENTED_X + INDENT_BELOW_RADIO, 110 );
-        Size = MAP_APPFONT( 120, 8 );
-        Text [ en-US ] = "Recently used";
-    };
-
-    ListBox LB_DOCUMENTLIST
-    {
-        HelpID = "dbaccess:ListBox:PAGE_GENERAL:LB_DOCUMENTLIST";
-        Pos = MAP_APPFONT( START_X + INDENTED_X + INDENT_BELOW_RADIO, 121 );
-        Size = MAP_APPFONT( 120, 14 );
-        DropDown = TRUE;
-        Border = TRUE;
-    };
-
-    PushButton PB_OPENDOCUMENT
-    {
-        HelpID = "dbaccess:PushButton:PAGE_GENERAL:PB_OPENDOCUMENT";
-        Pos = MAP_APPFONT( START_X + INDENTED_X + INDENT_BELOW_RADIO, 139 );
-        Size = MAP_APPFONT( 50, 16 );
-        OutputSize = TRUE;
-        TabStop = TRUE;
-    };
-
-    RadioButton RB_GETEXISTINGDATABASE
-    {
-          HelpId = HID_PAGE_DBWIZARD_GENERAL_RB_GETEXISTINGDATABASE;
-        Pos = MAP_APPFONT (START_X + 6 , 159 )  ;
-        Size = MAP_APPFONT ( 206 , 8 ) ;
-        Text [ en-US ]  = "Connect to an e~xisting database" ;
-    };
-
-    FixedText FT_DATASOURCETYPE_PRE
-    {
-        Pos = MAP_APPFONT ( 6 , UNRELATED_CONTROLS ) ;
-        Size = MAP_APPFONT ( WIZARD_PAGE_X - 12 , 3*FIXEDTEXT_HEIGHT ) ;
-        WordBreak = TRUE;
-        Text [ en-US ] = "Select the type of database to which you want to establish a connection.";
-    };
-
-    FixedText FT_DATATYPE
-    {
-        Pos = MAP_APPFONT ( 6 , 2*UNRELATED_CONTROLS + 3*FIXEDTEXT_HEIGHT + RELATED_CONTROLS) ;
-        Size = MAP_APPFONT ( 80 , FIXEDTEXT_HEIGHT ) ;
-        Text [ en-US ] = "Database ~type ";
-    };
-
-    ListBox LB_DATATYPE
-    {
-        HelpId = HID_DSADMIN_DSTYPE;
-        Pos = MAP_APPFONT ( 90, 2*UNRELATED_CONTROLS + 3*FIXEDTEXT_HEIGHT + RELATED_CONTROLS -2 ) ;
-        Size = MAP_APPFONT ( 120, 120 ) ;
-        Border = TRUE ;
-        TabStop = TRUE ;
-        DropDown = TRUE ;
-        Sort = FALSE;
-    };
-
-    FixedText FT_DATATYPEAPPENDIX
-    {
-        Pos = MAP_APPFONT ( 90, 2*UNRELATED_CONTROLS + 3*FIXEDTEXT_HEIGHT + RELATED_CONTROLS -2  + 72) ;
-        Size = MAP_APPFONT ( 60, 8 );
-        Text [ en-US ] = "Database";
-    };
-
-    FixedText FT_DATASOURCETYPE_POST
-    {
-        Pos = MAP_APPFONT ( 6 , 4*UNRELATED_CONTROLS + 4*FIXEDTEXT_HEIGHT + RELATED_CONTROLS ) ;
-        Size = MAP_APPFONT ( WIZARD_PAGE_X - 12 , 5*FIXEDTEXT_HEIGHT ) ;
-        WordBreak = TRUE;
-        Text [ en-US ] = "On the following pages, you can make detailed settings for the connection.\n\nThe new settings you make will overwrite your existing settings.";
-    };
-
-    FixedText FT_SPECIAL_MESSAGE
-    {
-        Pos = MAP_APPFONT ( 6, 4*UNRELATED_CONTROLS + 9*FIXEDTEXT_HEIGHT + 2*RELATED_CONTROLS  );
-        Size = MAP_APPFONT ( WIZARD_PAGE_X - 12, 3*FIXEDTEXT_HEIGHT );
-        WordBreak = TRUE;
-        HelpId = HID_DSADMIN_SPECIAL_MESSAGE;
-    };
-
-    String STR_MYSQLENTRY
-    {
-        Text [ en-US ] = "MySQL" ;
-    };
-
-    String STR_PARENTTITLE
-    {
-        Text [ en-US ] = "Data Source Properties: #" ;
-    };
-    String STR_COULDNOTLOAD_ODBCLIB
-    {
-        Text [ en-US ] = "Could not load the program library #lib# or it is corrupted. The ODBC data source selection is not available.";
-    };
-    String STR_UNSUPPORTED_DATASOURCE_TYPE
-    {
-        Text [ en-US ] = "This kind of data source is not supported on this platform.\nYou are allowed to change the settings, but you probably will not be able to connect to the database.";
-    };
-    Text [ en-US ] = "General" ;
-};
-
 //.........................................................................
 
 TabPage PAGE_DBASE
@@ -656,9 +504,24 @@
     AUTO_CHARSET( 4*UNRELATED_CONTROLS+ 3*FIXEDTEXT_HEIGHT + RELATED_CONTROLS, PAGE_X)
 };
 
+String STR_PARENTTITLE_GENERAL
+{
+    Text [ en-US ] = "Data Source Properties: #" ;
+};
+
 String STR_ERR_USE_CONNECT_TO
 {
     Text [ en-US ] = "Please choose 'Connect to an existing database' to connect to an existing database instead.";
 };
 
+String STR_COULD_NOT_LOAD_ODBC_LIB
+{
+    Text [ en-US ] = "Could not load the program library #lib# or it is corrupted. The ODBC data source selection is not available.";
+};
+
+String STR_UNSUPPORTED_DATASOURCE_TYPE
+{
+    Text [ en-US ] = "This kind of data source is not supported on this platform.\nYou are allowed to change the settings, but you probably will not be able to connect to the database.";
+};
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/dlg/dbwiz.cxx b/dbaccess/source/ui/dlg/dbwiz.cxx
index 232ebff..b8e5273 100644
--- a/dbaccess/source/ui/dlg/dbwiz.cxx
+++ b/dbaccess/source/ui/dlg/dbwiz.cxx
@@ -250,10 +250,9 @@
     {
         case START_PAGE: // start state
         {
-            pPage = OGeneralPage::Create(this,*m_pOutSet);
+            pPage = new OGeneralPageDialog(this,*m_pOutSet);
             OGeneralPage* pGeneralPage = static_cast< OGeneralPage* >( pPage );
             pGeneralPage->SetTypeSelectHandler( LINK( this, ODbTypeWizDialog, OnTypeSelected));
-//            pGeneralPage->SetCreationModeHandler( LINK( this, ODbTypeWizDialog, TODO ) );
             nStringId = STR_PAGETITLE_GENERAL;
         }
         break;
diff --git a/dbaccess/source/ui/dlg/dbwizsetup.cxx b/dbaccess/source/ui/dlg/dbwizsetup.cxx
index 338e7c0..5db7e5f 100644
--- a/dbaccess/source/ui/dlg/dbwizsetup.cxx
+++ b/dbaccess/source/ui/dlg/dbwizsetup.cxx
@@ -340,7 +340,7 @@
 {
     switch ( m_pGeneralPage->GetDatabaseCreationMode() )
     {
-    case OGeneralPage::eCreateNew:
+    case OGeneralPageWizard::eCreateNew:
     {
         sal_Int32 nCreateNewDBIndex = m_pCollection->getIndexOf( m_pCollection->getEmbeddedDatabase() );
         if ( nCreateNewDBIndex == -1 )
@@ -352,7 +352,7 @@
         enableButtons( WZB_FINISH, sal_True);
     }
     break;
-    case OGeneralPage::eConnectExternal:
+    case OGeneralPageWizard::eConnectExternal:
     {
         ::rtl::OUString sOld = m_sURL;
         m_sURL = m_pGeneralPage->GetSelectedType();
@@ -365,7 +365,7 @@
         updateTypeDependentStates();
     }
     break;
-    case OGeneralPage::eOpenExisting:
+    case OGeneralPageWizard::eOpenExisting:
     {
         activatePath( static_cast<PathId>(m_pCollection->size() + 1), sal_True );
         enableButtons( WZB_FINISH, m_pGeneralPage->GetSelectedDocument().sURL.Len() != 0 );
@@ -375,7 +375,7 @@
         OSL_FAIL( "ODbTypeWizDialogSetup::activateDatabasePath: unknown creation mode!" );
     }
 
-    enableButtons( WZB_NEXT, m_pGeneralPage->GetDatabaseCreationMode() != OGeneralPage::eOpenExisting );
+    enableButtons( WZB_NEXT, m_pGeneralPage->GetDatabaseCreationMode() != OGeneralPageWizard::eOpenExisting );
         // TODO: this should go into the base class. Point is, we activate a path whose *last*
         // step is also the current one. The base class should automatically disable
         // the Next button in such a case. However, not for this patch ...
@@ -509,9 +509,9 @@
     switch(_nState)
     {
         case PAGE_DBSETUPWIZARD_INTRO:
-            pFirstPage = OGeneralPage::Create(this,*m_pOutSet, sal_True);
+            pFirstPage = new OGeneralPageWizard(this,*m_pOutSet);
             pPage = static_cast<OGenericAdministrationPage*> (pFirstPage);
-            m_pGeneralPage = static_cast<OGeneralPage*>(pFirstPage);
+            m_pGeneralPage = static_cast<OGeneralPageWizard*>(pFirstPage);
             m_pGeneralPage->SetTypeSelectHandler(LINK(this, ODbTypeWizDialogSetup, OnTypeSelected));
             m_pGeneralPage->SetCreationModeHandler(LINK( this, ODbTypeWizDialogSetup, OnChangeCreationMode ) );
             m_pGeneralPage->SetDocumentSelectionHandler(LINK( this, ODbTypeWizDialogSetup, OnRecentDocumentSelected ) );
@@ -641,21 +641,21 @@
 }
 
 // -----------------------------------------------------------------------------
-IMPL_LINK(ODbTypeWizDialogSetup, OnChangeCreationMode, OGeneralPage*, /*_pGeneralPage*/)
+IMPL_LINK(ODbTypeWizDialogSetup, OnChangeCreationMode, OGeneralPageWizard*, /*_pGeneralPage*/)
 {
     activateDatabasePath();
     return sal_True;
 }
 
 // -----------------------------------------------------------------------------
-IMPL_LINK(ODbTypeWizDialogSetup, OnRecentDocumentSelected, OGeneralPage*, /*_pGeneralPage*/)
+IMPL_LINK(ODbTypeWizDialogSetup, OnRecentDocumentSelected, OGeneralPageWizard*, /*_pGeneralPage*/)
 {
     enableButtons( WZB_FINISH, m_pGeneralPage->GetSelectedDocument().sURL.Len() != 0 );
     return 0L;
 }
 
 // -----------------------------------------------------------------------------
-IMPL_LINK(ODbTypeWizDialogSetup, OnSingleDocumentChosen, OGeneralPage*, /*_pGeneralPage*/)
+IMPL_LINK(ODbTypeWizDialogSetup, OnSingleDocumentChosen, OGeneralPageWizard*, /*_pGeneralPage*/)
 {
     if ( prepareLeaveCurrentState( eFinish ) )
         onFinish();
@@ -743,7 +743,7 @@
             Reference< XModel > xModel( getDataSourceOrModel( xDatasource ), UNO_QUERY_THROW );
             Reference< XStorable > xStore( xModel, UNO_QUERY_THROW );
 
-            if ( m_pGeneralPage->GetDatabaseCreationMode() == OGeneralPage::eCreateNew )
+            if ( m_pGeneralPage->GetDatabaseCreationMode() == OGeneralPageWizard::eCreateNew )
                 CreateDatabase();
 
             ::comphelper::NamedValueCollection aArgs( xModel->getArgs() );
@@ -785,7 +785,7 @@
     // ------------------------------------------------------------------------
     sal_Bool ODbTypeWizDialogSetup::IsDatabaseDocumentToBeOpened() const
     {
-        if ( m_pGeneralPage->GetDatabaseCreationMode() == OGeneralPage::eOpenExisting )
+        if ( m_pGeneralPage->GetDatabaseCreationMode() == OGeneralPageWizard::eOpenExisting )
             return sal_True;
 
         if ( pFinalPage != NULL )
@@ -797,7 +797,7 @@
     // ------------------------------------------------------------------------
     sal_Bool ODbTypeWizDialogSetup::IsTableWizardToBeStarted() const
     {
-        if ( m_pGeneralPage->GetDatabaseCreationMode() == OGeneralPage::eOpenExisting )
+        if ( m_pGeneralPage->GetDatabaseCreationMode() == OGeneralPageWizard::eOpenExisting )
             return sal_False;
 
         if ( pFinalPage != NULL )
@@ -1070,7 +1070,7 @@
     // -----------------------------------------------------------------------------
     sal_Bool ODbTypeWizDialogSetup::onFinish()
     {
-        if ( m_pGeneralPage->GetDatabaseCreationMode() == OGeneralPage::eOpenExisting )
+        if ( m_pGeneralPage->GetDatabaseCreationMode() == OGeneralPageWizard::eOpenExisting )
         {
             // we're not going to re-use the XModel we have - since the document the user
             // wants us to load could be a non-database document. Instead, we asynchronously
diff --git a/dbaccess/source/ui/dlg/generalpage.cxx b/dbaccess/source/ui/dlg/generalpage.cxx
index 38f807d..5117f2e 100644
--- a/dbaccess/source/ui/dlg/generalpage.cxx
+++ b/dbaccess/source/ui/dlg/generalpage.cxx
@@ -58,93 +58,32 @@
     //= OGeneralPage
     //=========================================================================
     //-------------------------------------------------------------------------
-    OGeneralPage::OGeneralPage(Window* pParent, const SfxItemSet& _rItems, sal_Bool _bDBWizardMode)
-        :OGenericAdministrationPage(pParent, ModuleRes(PAGE_GENERAL), _rItems)
-        ,m_aFTHeaderText                (this, ModuleRes(FT_GENERALHEADERTEXT))
-        ,m_aFTHelpText                  (this, ModuleRes(FT_GENERALHELPTEXT))
-        ,m_aFT_DatasourceTypeHeader     (this, ModuleRes(FT_DATASOURCEHEADER))
-        ,m_aRB_CreateDatabase           (this, ModuleRes(RB_CREATEDBDATABASE))
-        ,m_aRB_OpenDocument             (this, ModuleRes(RB_OPENEXISTINGDOC))
-        ,m_aRB_GetExistingDatabase      (this, ModuleRes(RB_GETEXISTINGDATABASE))
-        ,m_aFT_DocListLabel             (this, ModuleRes(FT_DOCLISTLABEL))
-        ,m_pLB_DocumentList             ( new OpenDocumentListBox( this, "com.sun.star.sdb.OfficeDatabaseDocument", ModuleRes( LB_DOCUMENTLIST ) ) )
-        ,m_aPB_OpenDocument             (this, "com.sun.star.sdb.OfficeDatabaseDocument", ModuleRes(PB_OPENDOCUMENT))
-        ,m_aTypePreLabel                (this, ModuleRes(FT_DATASOURCETYPE_PRE))
-        ,m_aDatasourceTypeLabel         (this, ModuleRes(FT_DATATYPE))
-        ,m_pDatasourceType              ( new ListBox(this, ModuleRes(LB_DATATYPE)))
-        ,m_aFTDataSourceAppendix        (this, ModuleRes(FT_DATATYPEAPPENDIX))
-        ,m_aTypePostLabel               (this, ModuleRes(FT_DATASOURCETYPE_POST))
-        ,m_aSpecialMessage              (this, ModuleRes(FT_SPECIAL_MESSAGE))
-        ,m_DBWizardMode                 (_bDBWizardMode)
-        ,m_sMySQLEntry                  (ModuleRes(STR_MYSQLENTRY))
-        ,m_eOriginalCreationMode        (eCreateNew)
-        ,m_pCollection                  (NULL)
-        ,m_eNotSupportedKnownType       ( ::dbaccess::DST_UNKNOWN)
-        ,m_eLastMessage                 (smNone)
-        ,m_bDisplayingInvalid           (sal_False)
-        ,m_bInitTypeList                (true)
+    OGeneralPage::OGeneralPage( Window* pParent, const rtl::OUString& _rUIXMLDescription, const SfxItemSet& _rItems )
+        :OGenericAdministrationPage( pParent, "PageGeneral", _rUIXMLDescription, _rItems )
+        ,m_pSpecialMessage              ( NULL )
+        ,m_eNotSupportedKnownType       ( ::dbaccess::DST_UNKNOWN )
+        ,m_eLastMessage                 ( smNone )
+        ,m_bDisplayingInvalid           ( sal_False )
+        ,m_bInitTypeList                ( true )
+        ,m_pDatasourceType              ( NULL )
+        ,m_pCollection                  ( NULL )
     {
-        // fill the listbox with the UI descriptions for the possible types
-        // and remember the respective DSN prefixes
-        FreeResource();
+        get( m_pDatasourceType, "datasourceType" );
+        get( m_pSpecialMessage, "specialMessage" );
+
         // extract the datasource type collection from the item set
         DbuTypeCollectionItem* pCollectionItem = PTR_CAST(DbuTypeCollectionItem, _rItems.GetItem(DSID_TYPECOLLECTION));
         if (pCollectionItem)
             m_pCollection = pCollectionItem->getCollection();
         OSL_ENSURE(m_pCollection, "OGeneralPage::OGeneralPage : really need a DSN type collection !");
 
-        // If no driver for embedded DBs is installed, and no dBase driver, then hide the "Create new database" option
-        sal_Int32 nCreateNewDBIndex = m_pCollection->getIndexOf( m_pCollection->getEmbeddedDatabase() );
-        if ( nCreateNewDBIndex == -1 )
-            nCreateNewDBIndex = m_pCollection->getIndexOf( OUString("sdbc:dbase:") );
-        bool bHideCreateNew = ( nCreateNewDBIndex == -1 );
-
-        // also, if our application policies tell us to hide the option, do it
-        ::utl::OConfigurationTreeRoot aConfig( ::utl::OConfigurationTreeRoot::createWithComponentContext(
-            ::comphelper::getProcessComponentContext(),
-            OUString("/org.openoffice.Office.DataAccess/Policies/Features/Base")
-        ) );
-        sal_Bool bAllowCreateLocalDatabase( sal_True );
-        OSL_VERIFY( aConfig.getNodeValue( "CreateLocalDatabase" ) >>= bAllowCreateLocalDatabase );
-        if ( !bAllowCreateLocalDatabase )
-            bHideCreateNew = true;
-
-        if ( bHideCreateNew )
-        {
-            m_aRB_CreateDatabase.Hide();
-            Window* pWindowsToMove[] = {
-                &m_aRB_OpenDocument, &m_aRB_GetExistingDatabase, &m_aFT_DocListLabel, m_pLB_DocumentList.get(),
-                &m_aPB_OpenDocument, &m_aDatasourceTypeLabel, m_pDatasourceType.get(), &m_aFTDataSourceAppendix,
-                &m_aTypePostLabel
-            };
-            const long nOffset = m_aRB_OpenDocument.GetPosPixel().Y() - m_aRB_CreateDatabase.GetPosPixel().Y();
-            for ( size_t i=0; i < sizeof( pWindowsToMove ) / sizeof( pWindowsToMove[0] ); ++i )
-            {
-                Point aPos( pWindowsToMove[i]->GetPosPixel() );
-                aPos.Y() -= nOffset;
-                pWindowsToMove[i]->SetPosPixel( aPos );
-            }
-        }
-
-        if ( bHideCreateNew )
-            m_aRB_GetExistingDatabase.Check();
-        else
-            m_aRB_CreateDatabase.Check();
-
         // do some knittings
         m_pDatasourceType->SetSelectHdl(LINK(this, OGeneralPage, OnDatasourceTypeSelected));
-           m_aRB_CreateDatabase.SetClickHdl(LINK(this, OGeneralPage, OnSetupModeSelected));
-           m_aRB_GetExistingDatabase.SetClickHdl(LINK(this, OGeneralPage, OnSetupModeSelected));
-           m_aRB_OpenDocument.SetClickHdl(LINK(this, OGeneralPage, OnSetupModeSelected));
-        m_pLB_DocumentList->SetSelectHdl( LINK( this, OGeneralPage, OnDocumentSelected ) );
-        m_aPB_OpenDocument.SetClickHdl( LINK( this, OGeneralPage, OnOpenDocument ) );
     }
 
     //-------------------------------------------------------------------------
     OGeneralPage::~OGeneralPage()
     {
-        m_pDatasourceType.reset( NULL );
-        m_pLB_DocumentList.reset( NULL );
     }
 
     //-------------------------------------------------------------------------
@@ -191,7 +130,7 @@
                     {
                         OUString sDisplayName = aTypeLoop.getDisplayName();
                         if (   m_pDatasourceType->GetEntryPos( sDisplayName ) == LISTBOX_ENTRY_NOTFOUND
-                            && approveDataSourceType( sURLPrefix, sDisplayName ) )
+                            && approveDatasourceType( sURLPrefix, sDisplayName ) )
                         {
                             aDisplayedTypes.push_back( DisplayedTypes::value_type( sURLPrefix, sDisplayName ) );
                         }
@@ -208,41 +147,9 @@
         }
     }
 
-
-
     //-------------------------------------------------------------------------
-    void OGeneralPage::setParentTitle(const OUString& _sURLPrefix)
+    void OGeneralPage::setParentTitle(const OUString&)
     {
-        if (!m_DBWizardMode)
-        {
-            const OUString sName = m_pCollection->getTypeDisplayName(_sURLPrefix);
-            if ( m_pAdminDialog )
-            {
-                LocalResourceAccess aStringResAccess( PAGE_GENERAL, RSC_TABPAGE );
-                OUString sMessage = OUString(ModuleRes(STR_PARENTTITLE));
-                m_pAdminDialog->setTitle(sMessage.replaceAll("#",sName));
-            }
-        }
-    }
-
-    //-------------------------------------------------------------------------
-    OGeneralPage::CreationMode OGeneralPage::GetDatabaseCreationMode() const
-    {
-        if ( m_aRB_CreateDatabase.IsChecked() )
-            return eCreateNew;
-        if ( m_aRB_GetExistingDatabase.IsChecked() )
-            return eConnectExternal;
-        return eOpenExisting;
-    }
-
-    //-------------------------------------------------------------------------
-    void OGeneralPage::GetFocus()
-    {
-        OGenericAdministrationPage::GetFocus();
-        if ( m_pLB_DocumentList.get() && m_pLB_DocumentList->IsEnabled() )
-            m_pLB_DocumentList->GrabFocus();
-        else if (m_pDatasourceType.get() && m_pDatasourceType->IsEnabled())
-            m_pDatasourceType->GrabFocus();
     }
 
     //-------------------------------------------------------------------------
@@ -262,12 +169,9 @@
                 nResId = STR_UNSUPPORTED_DATASOURCE_TYPE;
             String sMessage;
             if ( nResId )
-            {
-                LocalResourceAccess aStringResAccess( PAGE_GENERAL, RSC_TABPAGE );
-                sMessage = String(ModuleRes(nResId));
-            }
-            m_aSpecialMessage.SetText(sMessage);
+                sMessage = String( ModuleRes( nResId ) );
 
+            m_pSpecialMessage->SetText( sMessage );
             m_eLastMessage = eMessage;
         }
     }
@@ -285,78 +189,48 @@
     }
 
     //-------------------------------------------------------------------------
-    void OGeneralPage::implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue)
+    void OGeneralPage::implInitControls( const SfxItemSet& _rSet, sal_Bool _bSaveValue )
     {
         initializeTypeList();
 
+        const OUString eOldSelection = m_eCurrentSelection;
+
+        m_pDatasourceType->SelectEntry( getDatasourceName( _rSet ) );
+
+        // notify our listener that our type selection has changed (if so)
+        if ( eOldSelection != m_eCurrentSelection )
+        {
+            setParentTitle( m_eCurrentSelection );
+            onTypeSelected( m_eCurrentSelection );
+        }
+
+        // a special message for the current page state
+        switchMessage( m_eCurrentSelection );
+
+        OGenericAdministrationPage::implInitControls( _rSet, _bSaveValue );
+    }
+
+    //-------------------------------------------------------------------------
+    OUString OGeneralPage::getDatasourceName( const SfxItemSet& _rSet )
+    {
         // first check whether or not the selection is invalid or readonly (invalid implies readonly, but not vice versa)
         sal_Bool bValid, bReadonly;
-        getFlags(_rSet, bValid, bReadonly);
-        if (m_DBWizardMode)
-        {
-            m_aTypePreLabel.Hide();
-            m_aTypePostLabel.Hide();
-            m_aSpecialMessage.Hide();
-            SetControlFontWeight(&m_aFTHeaderText);
-            SetText(String());
+        getFlags( _rSet, bValid, bReadonly );
 
-            LayoutHelper::positionBelow( m_aRB_GetExistingDatabase, *m_pDatasourceType, RelatedControls, INDENT_BELOW_RADIO );
-
-            if ( !bValid || bReadonly )
-            {
-                m_aDatasourceTypeLabel.Enable( false );
-                m_pDatasourceType->Enable( false );
-                m_aFTDataSourceAppendix.Enable( false );
-                m_aPB_OpenDocument.Enable( false );
-                m_aFT_DocListLabel.Enable( false );
-                m_pLB_DocumentList->Enable( false );
-            }
-            else
-            {
-                m_aControlDependencies.enableOnRadioCheck( m_aRB_GetExistingDatabase, m_aDatasourceTypeLabel, *m_pDatasourceType, m_aFTDataSourceAppendix );
-                m_aControlDependencies.enableOnRadioCheck( m_aRB_OpenDocument, m_aPB_OpenDocument, m_aFT_DocListLabel, *m_pLB_DocumentList );
-            }
-
-            m_pLB_DocumentList->SetDropDownLineCount( 20 );
-            if ( m_pLB_DocumentList->GetEntryCount() )
-                m_pLB_DocumentList->SelectEntryPos( 0 );
-
-            m_aDatasourceTypeLabel.Hide();
-            m_aFTDataSourceAppendix.Hide();
-
-            m_eOriginalCreationMode = GetDatabaseCreationMode();
-        }
-        else
-        {
-            m_aFT_DatasourceTypeHeader.Hide();
-            m_aRB_CreateDatabase.Hide();
-            m_aRB_GetExistingDatabase.Hide();
-            m_aRB_OpenDocument.Hide();
-            m_aPB_OpenDocument.Hide();
-            m_aFT_DocListLabel.Hide();
-            m_pLB_DocumentList->Hide();
-            m_aFTHeaderText.Hide();
-            m_aFTHelpText.Hide();
-            m_aTypePreLabel.Enable(bValid);
-            m_aTypePostLabel.Enable(bValid);
-            m_aDatasourceTypeLabel.Enable(bValid);
-            m_pDatasourceType->Enable(bValid);
-        }
-        // if the selection is invalid, disable evrything
+        // if the selection is invalid, disable everything
         String sName,sConnectURL;
         m_bDisplayingInvalid = !bValid;
         if ( bValid )
         {
             // collect some items and some values
-            SFX_ITEMSET_GET(_rSet, pNameItem, SfxStringItem, DSID_NAME, sal_True);
-            SFX_ITEMSET_GET(_rSet, pUrlItem, SfxStringItem, DSID_CONNECTURL, sal_True);
-            OSL_ENSURE(pUrlItem, "OGeneralPage::implInitControls : missing the type attribute !");
-            OSL_ENSURE(pNameItem, "OGeneralPage::implInitControls : missing the type attribute !");
+            SFX_ITEMSET_GET( _rSet, pNameItem, SfxStringItem, DSID_NAME, sal_True );
+            SFX_ITEMSET_GET( _rSet, pUrlItem, SfxStringItem, DSID_CONNECTURL, sal_True );
+            OSL_ENSURE( pUrlItem, "OGeneralPage::getDatasourceName: missing the type attribute !" );
+            OSL_ENSURE( pNameItem, "OGeneralPage::getDatasourceName: missing the type attribute !" );
             sName = pNameItem->GetValue();
             sConnectURL = pUrlItem->GetValue();
         }
 
-        OUString eOldSelection = m_eCurrentSelection;
         m_eNotSupportedKnownType =  ::dbaccess::DST_UNKNOWN;
         implSetCurrentType(  OUString() );
 
@@ -365,40 +239,25 @@
 
         if (m_pCollection && bValid)
         {
-            implSetCurrentType( m_pCollection->getPrefix(sConnectURL) );
-            sDisplayName = m_pCollection->getTypeDisplayName(m_eCurrentSelection);
+            implSetCurrentType( m_pCollection->getPrefix( sConnectURL ) );
+            sDisplayName = m_pCollection->getTypeDisplayName( m_eCurrentSelection );
         }
 
         // select the correct datasource type
-        if  (   approveDataSourceType( m_eCurrentSelection, sDisplayName )
+        if  (   approveDatasourceType( m_eCurrentSelection, sDisplayName )
             &&  ( LISTBOX_ENTRY_NOTFOUND == m_pDatasourceType->GetEntryPos( sDisplayName ) )
             )
         {   // this indicates it's really a type which is known in general, but not supported on the current platform
             // show a message saying so
             //  eSpecialMessage = smUnsupportedType;
-            insertDatasourceTypeEntryData(m_eCurrentSelection, sDisplayName);
+            insertDatasourceTypeEntryData( m_eCurrentSelection, sDisplayName );
             // remember this type so we can show the special message again if the user selects this
             // type again (without changing the data source)
-            m_eNotSupportedKnownType = m_pCollection->determineType(m_eCurrentSelection);
+            m_eNotSupportedKnownType = m_pCollection->determineType( m_eCurrentSelection );
         }
 
-        if (m_aRB_CreateDatabase.IsChecked() && m_DBWizardMode)
-            sDisplayName = m_pCollection->getTypeDisplayName( OUString("jdbc:"));
-        m_pDatasourceType->SelectEntry(sDisplayName);
-
-        // notify our listener that our type selection has changed (if so)
-        if ( eOldSelection != m_eCurrentSelection )
-        {
-            setParentTitle(m_eCurrentSelection);
-            onTypeSelected(m_eCurrentSelection);
-        }
-
-        // a special message for the current page state
-        switchMessage(m_eCurrentSelection);
-
-        OGenericAdministrationPage::implInitControls(_rSet, _bSaveValue);
+        return sDisplayName;
     }
-
 
     // For the databaseWizard we only have one entry for the MySQL Database,
     // because we have a seperate tabpage to retrieve the respective datasource type
@@ -406,28 +265,13 @@
     // representative for all MySQl databases)
     // Also, embedded databases (embedded HSQL, at the moment), are not to appear in the list of
     // databases to connect to.
-    bool OGeneralPage::approveDataSourceType( const OUString& _sURLPrefix, OUString& _inout_rDisplayName )
+    bool OGeneralPage::approveDatasourceType( const OUString& _sURLPrefix, OUString& _inout_rDisplayName )
     {
-        const ::dbaccess::DATASOURCE_TYPE eType = m_pCollection->determineType(_sURLPrefix);
+        return approveDatasourceType( m_pCollection->determineType(_sURLPrefix), _inout_rDisplayName );
+    }
 
-        if ( m_DBWizardMode )
-        {
-            switch ( eType )
-            {
-            case ::dbaccess::DST_MYSQL_JDBC:
-                _inout_rDisplayName = m_sMySQLEntry;
-                break;
-            case ::dbaccess::DST_MYSQL_ODBC:
-            case ::dbaccess::DST_MYSQL_NATIVE:
-                // don't display those, the decision whether the user connects via JDBC/ODBC/C-OOo is made on another
-                // page
-                _inout_rDisplayName = String();
-                break;
-            default:
-                break;
-            }
-        }
-
+    bool OGeneralPage::approveDatasourceType( ::dbaccess::DATASOURCE_TYPE eType, OUString& _inout_rDisplayName )
+    {
         if ( eType == ::dbaccess::DST_MYSQL_NATIVE_DIRECT )
         {
             // do not display the Connector/OOo driver itself, it is always wrapped via the MySQL-Driver, if
@@ -456,22 +300,13 @@
     // -----------------------------------------------------------------------
     void OGeneralPage::fillWindows(::std::vector< ISaveValueWrapper* >& _rControlList)
     {
-        _rControlList.push_back(new ODisableWrapper<FixedText>(&m_aTypePreLabel));
-        _rControlList.push_back(new ODisableWrapper<FixedText>(&m_aDatasourceTypeLabel));
-        _rControlList.push_back(new ODisableWrapper<FixedText>(&m_aTypePostLabel));
-        _rControlList.push_back(new ODisableWrapper<FixedText>(&m_aSpecialMessage));
-        _rControlList.push_back(new ODisableWrapper<FixedText>(&m_aFTDataSourceAppendix));
+        _rControlList.push_back( new ODisableWrapper<FixedText>( m_pSpecialMessage ) );
     }
+
     // -----------------------------------------------------------------------
     void OGeneralPage::fillControls(::std::vector< ISaveValueWrapper* >& _rControlList)
     {
-        _rControlList.push_back(new OSaveValueWrapper<ListBox>(m_pDatasourceType.get()));
-    }
-
-    //-------------------------------------------------------------------------
-    SfxTabPage* OGeneralPage::Create(Window* _pParent, const SfxItemSet& _rAttrSet, sal_Bool _bWizardMode)
-    {
-           return ( new OGeneralPage( _pParent, _rAttrSet, _bWizardMode ) );
+        _rControlList.push_back( new OSaveValueWrapper<ListBox>( m_pDatasourceType ) );
     }
 
     //-------------------------------------------------------------------------
@@ -494,75 +329,252 @@
     }
 
     //-------------------------------------------------------------------------
-    sal_Bool OGeneralPage::FillItemSet(SfxItemSet& _rCoreAttrs)
-    {
-        sal_Bool bChangedSomething = sal_False;
-
-        bool bCommitTypeSelection = true;
-        if ( m_DBWizardMode )
-        {
-            if ( m_aRB_CreateDatabase.IsChecked() )
-            {
-                _rCoreAttrs.Put(SfxStringItem(DSID_CONNECTURL, OUString("sdbc:dbase:")));
-                bChangedSomething = sal_True;
-                bCommitTypeSelection = false;
-            }
-            else if ( m_aRB_OpenDocument.IsChecked() )
-            {
-                if ( m_aRB_OpenDocument.GetSavedValue() != m_aRB_OpenDocument.IsChecked() )
-                    bChangedSomething = sal_True;
-
-                // TODO
-                bCommitTypeSelection = false;
-            }
-        }
-
-        if ( bCommitTypeSelection )
-        {
-            sal_uInt16 nEntry = m_pDatasourceType->GetSelectEntryPos();
-            OUString sURLPrefix = m_aURLPrefixes[nEntry];
-            if (m_DBWizardMode)
-            {
-                if  (  ( m_pDatasourceType->GetSavedValue() != nEntry )
-                    || ( GetDatabaseCreationMode() != m_eOriginalCreationMode )
-                    )
-                {
-                    _rCoreAttrs.Put(SfxStringItem(DSID_CONNECTURL,sURLPrefix ));
-                    bChangedSomething = sal_True;
-                }
-                else
-                    implSetCurrentType(sURLPrefix);
-            }
-            else
-            {
-                if ( m_pDatasourceType->GetSavedValue() != nEntry)
-                {
-                    _rCoreAttrs.Put(SfxStringItem(DSID_CONNECTURL, sURLPrefix));
-                    bChangedSomething = sal_True;
-                }
-            }
-        }
-        return bChangedSomething;
-    }
-
-    //-------------------------------------------------------------------------
-    IMPL_LINK(OGeneralPage, OnDatasourceTypeSelected, ListBox*, _pBox)
+    IMPL_LINK( OGeneralPage, OnDatasourceTypeSelected, ListBox*, _pBox )
     {
         // get the type from the entry data
         sal_Int16 nSelected = _pBox->GetSelectEntryPos();
-        const OUString sURLPrefix = m_aURLPrefixes[nSelected];
+        const OUString sURLPrefix = m_aURLPrefixes[ nSelected ];
 
-        setParentTitle(sURLPrefix);
+        setParentTitle( sURLPrefix );
         // let the impl method do all the stuff
-        onTypeSelected(sURLPrefix);
+        onTypeSelected( sURLPrefix );
         // tell the listener we were modified
         callModifiedHdl();
         // outta here
         return 0L;
     }
 
+    //=========================================================================
+    //= OGeneralPageDialog
+    //=========================================================================
     //-------------------------------------------------------------------------
-    OGeneralPage::DocumentDescriptor OGeneralPage::GetSelectedDocument() const
+    OGeneralPageDialog::OGeneralPageDialog( Window* pParent, const SfxItemSet& _rItems )
+        :OGeneralPage( pParent, "dbaccess/ui/generalpagedialog.ui", _rItems )
+    {
+    }
+
+    //-------------------------------------------------------------------------
+    void OGeneralPageDialog::setParentTitle( const OUString& _sURLPrefix )
+    {
+        const OUString sName = m_pCollection->getTypeDisplayName( _sURLPrefix );
+        if ( m_pAdminDialog )
+        {
+            OUString sMessage = OUString( ModuleRes( STR_PARENTTITLE_GENERAL ) );
+            m_pAdminDialog->setTitle( sMessage.replaceAll( "#", sName ) );
+        }
+    }
+
+    //-------------------------------------------------------------------------
+    void OGeneralPageDialog::implInitControls( const SfxItemSet& _rSet, sal_Bool _bSaveValue )
+    {
+        OGeneralPage::implInitControls( _rSet, _bSaveValue );
+
+        // first check whether or not the selection is invalid or readonly (invalid implies readonly, but not vice versa)
+        sal_Bool bValid, bReadonly;
+        getFlags(_rSet, bValid, bReadonly );
+
+        m_pDatasourceType->Enable( bValid );
+    }
+
+    //-------------------------------------------------------------------------
+    sal_Bool OGeneralPageDialog::FillItemSet( SfxItemSet& _rCoreAttrs )
+    {
+        sal_Bool bChangedSomething = sal_False;
+
+        sal_uInt16 nEntry = m_pDatasourceType->GetSelectEntryPos();
+        OUString sURLPrefix = m_aURLPrefixes[ nEntry ];
+
+        if ( m_pDatasourceType->GetSavedValue() != nEntry )
+        {
+            _rCoreAttrs.Put( SfxStringItem( DSID_CONNECTURL, sURLPrefix ) );
+            bChangedSomething = sal_True;
+        }
+
+        return bChangedSomething;
+    }
+
+    //=========================================================================
+    //= OGeneralPageWizard
+    //=========================================================================
+    //-------------------------------------------------------------------------
+    OGeneralPageWizard::OGeneralPageWizard( Window* pParent, const SfxItemSet& _rItems )
+        :OGeneralPage( pParent, "dbaccess/ui/generalpagewizard.ui", _rItems )
+        ,m_pFT_HeaderText               ( NULL )
+        ,m_pFT_HelpText                 ( NULL )
+        ,m_pRB_CreateDatabase           ( NULL )
+        ,m_pRB_OpenExistingDatabase     ( NULL )
+        ,m_pRB_ConnectDatabase          ( NULL )
+        ,m_pFT_DocListLabel             ( NULL )
+        ,m_pLB_DocumentList             ( NULL )
+        ,m_pPB_OpenDatabase             ( NULL )
+        ,m_eOriginalCreationMode        ( eCreateNew )
+    {
+        get( m_pFT_HeaderText, "headerText" );
+        get( m_pFT_HelpText, "helpText" );
+        get( m_pRB_CreateDatabase, "createDatabase" );
+        get( m_pRB_OpenExistingDatabase, "openExistingDatabase" );
+        get( m_pRB_ConnectDatabase, "connectDatabase" );
+        get( m_pFT_DocListLabel, "docListLabel" );
+        get( m_pLB_DocumentList, "documentList" );
+        get( m_pPB_OpenDatabase, "openDatabase" );
+
+        // If no driver for embedded DBs is installed, and no dBase driver, then hide the "Create new database" option
+        sal_Int32 nCreateNewDBIndex = m_pCollection->getIndexOf( m_pCollection->getEmbeddedDatabase() );
+        if ( nCreateNewDBIndex == -1 )
+            nCreateNewDBIndex = m_pCollection->getIndexOf( OUString( "sdbc:dbase:" ) );
+        bool bHideCreateNew = ( nCreateNewDBIndex == -1 );
+
+        // also, if our application policies tell us to hide the option, do it
+        ::utl::OConfigurationTreeRoot aConfig( ::utl::OConfigurationTreeRoot::createWithComponentContext(
+            ::comphelper::getProcessComponentContext(),
+            OUString( "/org.openoffice.Office.DataAccess/Policies/Features/Base" )
+        ) );
+        sal_Bool bAllowCreateLocalDatabase( sal_True );
+        OSL_VERIFY( aConfig.getNodeValue( "CreateLocalDatabase" ) >>= bAllowCreateLocalDatabase );
+        if ( !bAllowCreateLocalDatabase )
+            bHideCreateNew = true;
+
+        if ( bHideCreateNew )
+        {
+            m_pRB_CreateDatabase->Hide();
+            m_pRB_ConnectDatabase->Check();
+        }
+        else
+            m_pRB_CreateDatabase->Check();
+
+        // do some knittings
+        m_pRB_CreateDatabase->SetClickHdl( LINK( this, OGeneralPageWizard, OnSetupModeSelected ) );
+        m_pRB_ConnectDatabase->SetClickHdl( LINK( this, OGeneralPageWizard, OnSetupModeSelected ) );
+        m_pRB_OpenExistingDatabase->SetClickHdl( LINK( this, OGeneralPageWizard, OnSetupModeSelected ) );
+        m_pLB_DocumentList->SetSelectHdl( LINK( this, OGeneralPageWizard, OnDocumentSelected ) );
+        m_pPB_OpenDatabase->SetClickHdl( LINK( this, OGeneralPageWizard, OnOpenDocument ) );
+    }
+
+    //-------------------------------------------------------------------------
+    OGeneralPageWizard::CreationMode OGeneralPageWizard::GetDatabaseCreationMode() const
+    {
+        if ( m_pRB_CreateDatabase->IsChecked() )
+            return eCreateNew;
+        if ( m_pRB_ConnectDatabase->IsChecked() )
+            return eConnectExternal;
+        return eOpenExisting;
+    }
+
+    //-------------------------------------------------------------------------
+    void OGeneralPageWizard::GetFocus()
+    {
+        OGeneralPage::GetFocus();
+        if ( m_pLB_DocumentList && m_pLB_DocumentList->IsEnabled() )
+            m_pLB_DocumentList->GrabFocus();
+        else if ( m_pDatasourceType && m_pDatasourceType->IsEnabled() )
+            m_pDatasourceType->GrabFocus();
+    }
+
+    //-------------------------------------------------------------------------
+    void OGeneralPageWizard::implInitControls( const SfxItemSet& _rSet, sal_Bool _bSaveValue )
+    {
+        OGeneralPage::implInitControls( _rSet, _bSaveValue );
+
+        // first check whether or not the selection is invalid or readonly (invalid implies readonly, but not vice versa)
+        sal_Bool bValid, bReadonly;
+        getFlags( _rSet, bValid, bReadonly );
+
+        SetText( String() );
+
+        LayoutHelper::positionBelow( *m_pRB_ConnectDatabase, *m_pDatasourceType, RelatedControls, INDENT_BELOW_RADIO );
+
+        if ( !bValid || bReadonly )
+        {
+            m_pDatasourceType->Enable( false );
+            m_pPB_OpenDatabase->Enable( false );
+            m_pFT_DocListLabel->Enable( false );
+            m_pLB_DocumentList->Enable( false );
+        }
+        else
+        {
+            m_aControlDependencies.enableOnRadioCheck( *m_pRB_ConnectDatabase, *m_pDatasourceType );
+            m_aControlDependencies.enableOnRadioCheck( *m_pRB_OpenExistingDatabase, *m_pPB_OpenDatabase, *m_pFT_DocListLabel, *m_pLB_DocumentList );
+        }
+
+        m_pLB_DocumentList->SetDropDownLineCount( 20 );
+        if ( m_pLB_DocumentList->GetEntryCount() )
+            m_pLB_DocumentList->SelectEntryPos( 0 );
+
+        m_eOriginalCreationMode = GetDatabaseCreationMode();
+    }
+
+    //-------------------------------------------------------------------------
+    OUString OGeneralPageWizard::getDatasourceName(const SfxItemSet& _rSet)
+    {
+        if (m_pRB_CreateDatabase->IsChecked() )
+            return m_pCollection->getTypeDisplayName( OUString( "jdbc:" ) );
+
+        return OGeneralPage::getDatasourceName( _rSet );
+    }
+
+    //-------------------------------------------------------------------------
+    bool OGeneralPageWizard::approveDatasourceType( ::dbaccess::DATASOURCE_TYPE eType, OUString& _inout_rDisplayName )
+    {
+        switch ( eType )
+        {
+        case ::dbaccess::DST_MYSQL_JDBC:
+            _inout_rDisplayName = "MySQL";
+            break;
+        case ::dbaccess::DST_MYSQL_ODBC:
+        case ::dbaccess::DST_MYSQL_NATIVE:
+            // don't display those, the decision whether the user connects via JDBC/ODBC/C-OOo is made on another
+            // page
+            _inout_rDisplayName = String();
+            break;
+        default:
+            break;
+        }
+
+        return OGeneralPage::approveDatasourceType( eType, _inout_rDisplayName );
+    }
+
+    //-------------------------------------------------------------------------
+    sal_Bool OGeneralPageWizard::FillItemSet(SfxItemSet& _rCoreAttrs)
+    {
+        sal_Bool bChangedSomething = sal_False;
+
+        bool bCommitTypeSelection = true;
+
+        if ( m_pRB_CreateDatabase->IsChecked() )
+        {
+            _rCoreAttrs.Put( SfxStringItem( DSID_CONNECTURL, OUString( "sdbc:dbase:" ) ) );
+            bChangedSomething = sal_True;
+            bCommitTypeSelection = false;
+        }
+        else if ( m_pRB_OpenExistingDatabase->IsChecked() )
+        {
+            if ( m_pRB_OpenExistingDatabase->GetSavedValue() != m_pRB_OpenExistingDatabase->IsChecked() )
+                bChangedSomething = sal_True;
+
+            // TODO
+            bCommitTypeSelection = false;
+        }
+
+        if ( bCommitTypeSelection )
+        {
+            sal_uInt16 nEntry = m_pDatasourceType->GetSelectEntryPos();
+            OUString sURLPrefix = m_aURLPrefixes[nEntry];
+
+            if  (  ( m_pDatasourceType->GetSavedValue() != nEntry )
+                || ( GetDatabaseCreationMode() != m_eOriginalCreationMode )
+                )
+            {
+                _rCoreAttrs.Put( SfxStringItem( DSID_CONNECTURL,sURLPrefix ) );
+                bChangedSomething = sal_True;
+            }
+            else
+                implSetCurrentType( sURLPrefix );
+        }
+        return bChangedSomething;
+    }
+
+    //-------------------------------------------------------------------------
+    OGeneralPageWizard::DocumentDescriptor OGeneralPageWizard::GetSelectedDocument() const
     {
         DocumentDescriptor aDocument;
         if ( m_aBrowsedDocument.sURL.Len() )
@@ -576,22 +588,22 @@
     }
 
     //-------------------------------------------------------------------------
-    IMPL_LINK(OGeneralPage, OnSetupModeSelected, RadioButton*, /*_pBox*/)
+    IMPL_LINK( OGeneralPageWizard, OnSetupModeSelected, RadioButton*, /*_pBox*/ )
     {
         if ( m_aCreationModeHandler.IsSet() )
-            m_aCreationModeHandler.Call(this);
+            m_aCreationModeHandler.Call( this );
         return 1L;
     }
 
     //-------------------------------------------------------------------------
-    IMPL_LINK(OGeneralPage, OnDocumentSelected, ListBox*, /*_pBox*/)
+    IMPL_LINK( OGeneralPageWizard, OnDocumentSelected, ListBox*, /*_pBox*/ )
     {
         m_aDocumentSelectionHandler.Call( this );
         return 0L;
     }
 
     //-------------------------------------------------------------------------
-    IMPL_LINK(OGeneralPage, OnOpenDocument, PushButton*, /*_pBox*/)
+    IMPL_LINK( OGeneralPageWizard, OnOpenDocument, PushButton*, /*_pBox*/ )
     {
         ::sfx2::FileDialogHelper aFileDlg(
                 ui::dialogs::TemplateDescription::FILEOPEN_READONLY_VERSION,
@@ -609,8 +621,8 @@
                 String sMessage(ModuleRes(STR_ERR_USE_CONNECT_TO));
                 InfoBox aError(this, sMessage);
                 aError.Execute();
-                m_aRB_GetExistingDatabase.Check();
-                OnSetupModeSelected(&m_aRB_GetExistingDatabase);
+                m_pRB_ConnectDatabase->Check();
+                OnSetupModeSelected( m_pRB_ConnectDatabase );
                 return 0L;
             }
             m_aBrowsedDocument.sURL = sPath;
diff --git a/dbaccess/source/ui/dlg/generalpage.hxx b/dbaccess/source/ui/dlg/generalpage.hxx
index 7213c0f..a10e5ff 100644
--- a/dbaccess/source/ui/dlg/generalpage.hxx
+++ b/dbaccess/source/ui/dlg/generalpage.hxx
@@ -37,8 +37,94 @@
     //=========================================================================
     class OGeneralPage : public OGenericAdministrationPage
     {
-        OGeneralPage(Window* pParent, const SfxItemSet& _rItems, sal_Bool _bDBWizardMode = sal_False);
+    protected:
+        OGeneralPage( Window* pParent, const rtl::OUString& _rUIXMLDescription, const SfxItemSet& _rItems );
         ~OGeneralPage();
+
+    private:
+        FixedText*          m_pSpecialMessage;
+
+        OUString            m_eCurrentSelection;    /// currently selected type
+        ::dbaccess::DATASOURCE_TYPE
+                            m_eNotSupportedKnownType;   /// if a data source of an unsupported, but known type is encountered ....
+
+        enum SPECIAL_MESSAGE
+        {
+            smNone,
+            smUnsupportedType
+        };
+        SPECIAL_MESSAGE     m_eLastMessage;
+
+        Link                m_aTypeSelectHandler;   /// to be called if a new type is selected
+        sal_Bool            m_bDisplayingInvalid : 1;   // the currently displayed data source is deleted
+        bool                m_bInitTypeList : 1;
+        bool                approveDatasourceType( const OUString& _sURLPrefix, OUString& _inout_rDisplayName );
+        void                insertDatasourceTypeEntryData( const OUString& _sType, String sDisplayName );
+
+    protected:
+        ListBox*            m_pDatasourceType;
+
+        ::dbaccess::ODsnTypeCollection*
+                            m_pCollection;  /// the DSN type collection instance
+
+        ::std::vector< OUString>
+                            m_aURLPrefixes;
+
+    public:
+        /// set a handler which gets called every time the user selects a new type
+        void            SetTypeSelectHandler( const Link& _rHandler ) { m_aTypeSelectHandler = _rHandler; }
+
+        /// get the currently selected datasource type
+        OUString     GetSelectedType() const { return m_eCurrentSelection; }
+
+    protected:
+        // SfxTabPage overridables
+        virtual void Reset( const SfxItemSet& _rCoreAttrs );
+
+        virtual void implInitControls( const SfxItemSet& _rSet, sal_Bool _bSaveValue );
+        virtual OUString getDatasourceName( const SfxItemSet& _rSet );
+        virtual bool approveDatasourceType( ::dbaccess::DATASOURCE_TYPE eType, OUString& _inout_rDisplayName );
+
+        // <method>OGenericAdministrationPage::fillControls</method>
+        virtual void fillControls(::std::vector< ISaveValueWrapper* >& _rControlList);
+        // <method>OGenericAdministrationPage::fillWindows</method>
+        virtual void fillWindows(::std::vector< ISaveValueWrapper* >& _rControlList);
+
+        void onTypeSelected(const OUString& _sURLPrefix);
+        void initializeTypeList();
+
+        void implSetCurrentType( const OUString& _eType );
+
+        void switchMessage(const OUString& _sURLPrefix);
+
+        /// sets the title of the parent dialog
+        virtual void setParentTitle( const OUString& _sURLPrefix );
+
+        DECL_LINK(OnDatasourceTypeSelected, ListBox*);
+    };
+
+    //=========================================================================
+    //= OGeneralPageDialog
+    //=========================================================================
+    class OGeneralPageDialog : public OGeneralPage
+    {
+    public:
+        OGeneralPageDialog( Window* pParent, const SfxItemSet& _rItems );
+
+    protected:
+        virtual sal_Bool FillItemSet( SfxItemSet& _rCoreAttrs );
+
+        virtual void implInitControls( const SfxItemSet& _rSet, sal_Bool _bSaveValue );
+        virtual void setParentTitle( const OUString& _sURLPrefix );
+    };
+
+    //=========================================================================
+    //= OGeneralPageWizard
+    //=========================================================================
+    class OGeneralPageWizard : public OGeneralPage
+    {
+    public:
+        OGeneralPageWizard( Window* pParent, const SfxItemSet& _rItems );
 
     public:
         enum CreationMode
@@ -56,99 +142,49 @@
 
     private:
         // dialog controls
-        FixedText           m_aFTHeaderText;
-        FixedText           m_aFTHelpText;
-        FixedText           m_aFT_DatasourceTypeHeader;
-        RadioButton         m_aRB_CreateDatabase;
-        RadioButton         m_aRB_OpenDocument;
-        RadioButton         m_aRB_GetExistingDatabase;
-        FixedText           m_aFT_DocListLabel;
-        ::std::auto_ptr< OpenDocumentListBox >
-                            m_pLB_DocumentList;
-        OpenDocumentButton  m_aPB_OpenDocument;
-        FixedText           m_aTypePreLabel;
-        FixedText           m_aDatasourceTypeLabel;
-        ::std::auto_ptr< ListBox >
-                            m_pDatasourceType;
-        FixedText           m_aFTDataSourceAppendix;
-        FixedText           m_aTypePostLabel;
-        FixedText           m_aSpecialMessage;
-        sal_Bool            m_DBWizardMode;
-        String              m_sMySQLEntry;
-        CreationMode        m_eOriginalCreationMode;
-        DocumentDescriptor  m_aBrowsedDocument;
+        FixedText*              m_pFT_HeaderText;
+        FixedText*              m_pFT_HelpText;
+
+        RadioButton*            m_pRB_CreateDatabase;
+        RadioButton*            m_pRB_OpenExistingDatabase;
+        RadioButton*            m_pRB_ConnectDatabase;
+
+        FixedText*              m_pFT_DocListLabel;
+        OpenDocumentListBox*    m_pLB_DocumentList;
+        OpenDocumentButton*     m_pPB_OpenDatabase;
+
+        // state
+        DocumentDescriptor      m_aBrowsedDocument;
+        CreationMode            m_eOriginalCreationMode;
+
+        Link                    m_aCreationModeHandler;         /// to be called if a new type is selected
+        Link                    m_aDocumentSelectionHandler;    /// to be called when a document in the RecentDoc list is selected
+        Link                    m_aChooseDocumentHandler;       /// to be called when a recent document has been definitely chosen
 
         ::svt::ControlDependencyManager
-                            m_aControlDependencies;
-        ::std::vector< OUString> m_aURLPrefixes;
-
-
-        ::dbaccess::ODsnTypeCollection*
-                            m_pCollection;  /// the DSN type collection instance
-        OUString     m_eCurrentSelection;    /// currently selected type
-        ::dbaccess::DATASOURCE_TYPE     m_eNotSupportedKnownType;   /// if a data source of an unsupported, but known type is encountered ....
-
-        enum SPECIAL_MESSAGE
-        {
-            smNone,
-            smUnsupportedType
-        };
-        SPECIAL_MESSAGE     m_eLastMessage;
-
-        Link                m_aTypeSelectHandler;   /// to be called if a new type is selected
-        Link                m_aCreationModeHandler; /// to be called if a new type is selected
-        Link                m_aDocumentSelectionHandler;    /// to be called when a document in the RecentDoc list is selected
-        Link                m_aChooseDocumentHandler;       /// to be called when a recent document has been definitely chosen
-        sal_Bool            m_bDisplayingInvalid : 1;   // the currently displayed data source is deleted
-        bool                m_bInitTypeList : 1;
-        bool                approveDataSourceType( const OUString& _sURLPrefix, OUString& _inout_rDisplayName );
-        void                insertDatasourceTypeEntryData(const OUString& _sType, String sDisplayName);
+                                m_aControlDependencies;
 
     public:
-        static SfxTabPage*  Create(Window* pParent, const SfxItemSet& _rAttrSet, sal_Bool _bDBWizardMode = sal_False);
+        void                    SetCreationModeHandler( const Link& _rHandler ) { m_aCreationModeHandler = _rHandler; }
+        CreationMode            GetDatabaseCreationMode() const;
 
-        /// set a handler which gets called every time the user selects a new type
-        void            SetTypeSelectHandler(const Link& _rHandler) { m_aTypeSelectHandler = _rHandler; }
-        void            SetCreationModeHandler(const Link& _rHandler) { m_aCreationModeHandler = _rHandler; }
-        void            SetDocumentSelectionHandler( const Link& _rHandler) { m_aDocumentSelectionHandler = _rHandler; }
-        void            SetChooseDocumentHandler( const Link& _rHandler) { m_aChooseDocumentHandler = _rHandler; }
-        CreationMode    GetDatabaseCreationMode() const;
-
-        DocumentDescriptor  GetSelectedDocument() const;
-
-        /// get the currently selected datasource type
-        OUString     GetSelectedType() const { return m_eCurrentSelection; }
+        void                    SetDocumentSelectionHandler( const Link& _rHandler) { m_aDocumentSelectionHandler = _rHandler; }
+        void                    SetChooseDocumentHandler( const Link& _rHandler) { m_aChooseDocumentHandler = _rHandler; }
+        DocumentDescriptor      GetSelectedDocument() const;
 
     protected:
-        // SfxTabPage overridables
-        virtual sal_Bool FillItemSet(SfxItemSet& _rCoreAttrs);
-        virtual void Reset(const SfxItemSet& _rCoreAttrs);
-
-        virtual void implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue);
+        virtual sal_Bool FillItemSet( SfxItemSet& _rCoreAttrs );
 
         virtual void GetFocus();
 
-        // <method>OGenericAdministrationPage::fillControls</method>
-        virtual void fillControls(::std::vector< ISaveValueWrapper* >& _rControlList);
-        // <method>OGenericAdministrationPage::fillWindows</method>
-        virtual void fillWindows(::std::vector< ISaveValueWrapper* >& _rControlList);
+        virtual void implInitControls( const SfxItemSet& _rSet, sal_Bool _bSaveValue );
+        virtual OUString getDatasourceName( const SfxItemSet& _rSet );
+        virtual bool approveDatasourceType( ::dbaccess::DATASOURCE_TYPE eType, OUString& _inout_rDisplayName );
 
     protected:
-
-        void onTypeSelected(const OUString& _sURLPrefix);
-        void initializeTypeList();
-
-        void implSetCurrentType( const OUString& _eType );
-
-        void switchMessage(const OUString& _sURLPrefix);
-
-        /// sets the title of the parent dialog
-        void setParentTitle(const OUString& _sURLPrefix);
-
-        DECL_LINK(OnDatasourceTypeSelected, ListBox*);
-        DECL_LINK(OnSetupModeSelected, RadioButton*);
-        DECL_LINK(OnDocumentSelected, ListBox*);
-        DECL_LINK(OnOpenDocument, PushButton*);
+        DECL_LINK( OnSetupModeSelected, RadioButton* );
+        DECL_LINK( OnDocumentSelected, ListBox* );
+        DECL_LINK( OnOpenDocument, PushButton* );
     };
 
 //.........................................................................
diff --git a/dbaccess/source/ui/inc/dbu_dlg.hrc b/dbaccess/source/ui/inc/dbu_dlg.hrc
index 425be67..afc45ab 100644
--- a/dbaccess/source/ui/inc/dbu_dlg.hrc
+++ b/dbaccess/source/ui/inc/dbu_dlg.hrc
@@ -44,7 +44,7 @@
 #define INDENT_BELOW_RADIO   10
 
 
-    // FREE
+#define STR_PARENTTITLE_GENERAL             RID_STR_DLG_START + 0
     // FREE
     // FREE
     // FREE
@@ -57,11 +57,11 @@
     // FREE
 #define STR_ERR_USE_CONNECT_TO              RID_STR_DLG_START + 11
 #define STR_ALREADYEXISTOVERWRITE           RID_STR_DLG_START + 12
-    // FREE
+#define STR_COULD_NOT_LOAD_ODBC_LIB         RID_STR_DLG_START + 13
 #define STR_INDEX_NAME_ALREADY_USED         RID_STR_DLG_START + 14
 #define STR_ASK_FOR_DIRECTORY_CREATION      RID_STR_DLG_START + 15
 #define STR_COULD_NOT_CREATE_DIRECTORY      RID_STR_DLG_START + 16
-    // FREE
+#define STR_UNSUPPORTED_DATASOURCE_TYPE     RID_STR_DLG_START + 17
     // FREE
     // FREE
     // FREE
diff --git a/dbaccess/source/ui/inc/dbu_resource.hrc b/dbaccess/source/ui/inc/dbu_resource.hrc
index 2c00faf..cf4aa1f 100644
--- a/dbaccess/source/ui/inc/dbu_resource.hrc
+++ b/dbaccess/source/ui/inc/dbu_resource.hrc
@@ -107,7 +107,7 @@
 //========================================================================
 // tab pages
 
-#define PAGE_GENERAL                    RID_PAGE_START +  0
+    // FREE
 #define PAGE_DBASE                      RID_PAGE_START +  1
 #define PAGE_ODBC                       RID_PAGE_START +  3
 #define PAGE_TEXT                       RID_PAGE_START +  4
diff --git a/dbaccess/source/ui/inc/dbwizsetup.hxx b/dbaccess/source/ui/inc/dbwizsetup.hxx
index d04508a..32e6ea3 100644
--- a/dbaccess/source/ui/inc/dbwizsetup.hxx
+++ b/dbaccess/source/ui/inc/dbwizsetup.hxx
@@ -53,6 +53,7 @@
 //= ODbTypeWizDialogSetup
 //=========================================================================
 class OGeneralPage;
+class OGeneralPageWizard;
 class ODbDataSourceAdministrationHelper;
 /** tab dialog for administrating the office wide registered data sources
 */
@@ -87,7 +88,7 @@
     String                  m_sRM_FinalText;
     INetURLObject           m_aDocURL;
     String                  m_sWorkPath;
-    OGeneralPage*           m_pGeneralPage;
+    OGeneralPageWizard*     m_pGeneralPage;
     OMySQLIntroPageSetup*   m_pMySQLIntroPage;
     ::dbaccess::ODsnTypeCollection*
                             m_pCollection;  /// the DSN type collection instance
@@ -179,9 +180,9 @@
     sal_Bool callSaveAsDialog();
     sal_Bool IsConnectionUrlRequired();
     DECL_LINK(OnTypeSelected, OGeneralPage*);
-    DECL_LINK(OnChangeCreationMode, OGeneralPage*);
-    DECL_LINK(OnRecentDocumentSelected, OGeneralPage*);
-    DECL_LINK(OnSingleDocumentChosen, OGeneralPage*);
+    DECL_LINK(OnChangeCreationMode, OGeneralPageWizard*);
+    DECL_LINK(OnRecentDocumentSelected, OGeneralPageWizard*);
+    DECL_LINK(OnSingleDocumentChosen, OGeneralPageWizard*);
     DECL_LINK(ImplClickHdl, OMySQLIntroPageSetup*);
     DECL_LINK(ImplModifiedHdl, OGenericAdministrationPage*);
 };
diff --git a/dbaccess/uiconfig/ui/generalpagedialog.ui b/dbaccess/uiconfig/ui/generalpagedialog.ui
new file mode 100644
index 0000000..3832cb6
--- /dev/null
+++ b/dbaccess/uiconfig/ui/generalpagedialog.ui
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <!-- interface-requires gtk+ 3.0 -->
+  <object class="GtkGrid" id="PageGeneral">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="border_width">16</property>
+    <property name="row_spacing">8</property>
+    <property name="column_spacing">8</property>
+    <child>
+      <object class="GtkLabel" id="datasourceTypePre">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="margin_bottom">24</property>
+        <property name="xalign">0</property>
+        <property name="yalign">0</property>
+        <property name="label" translatable="yes">Select the type of database to which you want to establish a connection.</property>
+      </object>
+      <packing>
+        <property name="left_attach">0</property>
+        <property name="top_attach">0</property>
+        <property name="width">2</property>
+        <property name="height">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkLabel" id="datasourceTypeLabel">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="margin_left">48</property>
+        <property name="xalign">0</property>
+        <property name="label" translatable="yes">Database _type:</property>
+        <property name="use_underline">True</property>
+        <property name="mnemonic_widget">datasourceType</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="GtkComboBoxText" id="datasourceType">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="halign">start</property>
+        <property name="hexpand">True</property>
+        <property name="entry_text_column">0</property>
+        <property name="id_column">1</property>
+      </object>
+      <packing>
+        <property name="left_attach">1</property>
+        <property name="top_attach">1</property>
+        <property name="width">1</property>
+        <property name="height">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkLabel" id="datasourceTypeHelp">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="margin_top">24</property>
+        <property name="xalign">0</property>
+        <property name="yalign">0</property>
+        <property name="label" translatable="yes">On the following pages, you can make detailed settings for the connection.
+
+The new settings you make will overwrite your existing settings.</property>
+      </object>
+      <packing>
+        <property name="left_attach">0</property>
+        <property name="top_attach">2</property>
+        <property name="width">2</property>
+        <property name="height">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkLabel" id="specialMessage">
+        <property name="can_focus">False</property>
+        <property name="xalign">0</property>
+      </object>
+      <packing>
+        <property name="left_attach">0</property>
+        <property name="top_attach">3</property>
+        <property name="width">2</property>
+        <property name="height">1</property>
+      </packing>
+    </child>
+  </object>
+</interface>
diff --git a/dbaccess/uiconfig/ui/generalpagewizard.ui b/dbaccess/uiconfig/ui/generalpagewizard.ui
new file mode 100644
index 0000000..b55272f
--- /dev/null
+++ b/dbaccess/uiconfig/ui/generalpagewizard.ui
@@ -0,0 +1,199 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <!-- interface-requires gtk+ 3.0 -->
+  <!-- interface-requires LibreOffice 1.0 -->
+  <object class="GtkBox" id="PageGeneral">
+    <property name="width_request">400</property>
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="border_width">8</property>
+    <property name="orientation">vertical</property>
+    <property name="spacing">12</property>
+    <child>
+      <object class="GtkLabel" id="headerText">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="xalign">0</property>
+        <property name="label" translatable="yes">Welcome to the %PRODUCTNAME Database Wizard</property>
+        <property name="wrap">True</property>
+        <attributes>
+          <attribute name="weight" value="bold"/>
+        </attributes>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">True</property>
+        <property name="position">0</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkLabel" id="helpText">
+        <property name="height_request">50</property>
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="xalign">0</property>
+        <property name="label" translatable="yes">Use the Database Wizard to create a new database, open an existing database file, or connect to a database stored on a server.</property>
+        <property name="wrap">True</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="sourceTypeHeader">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="margin_bottom">12</property>
+        <property name="xalign">0</property>
+        <property name="label" translatable="yes">What do you want to do?</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>
+    <child>
+      <object class="GtkRadioButton" id="createDatabase">
+        <property name="label" translatable="yes">Create a n_ew database</property>
+        <property name="visible">True</property>
+        <property name="can_focus">True</property>
+        <property name="receives_default">False</property>
+        <property name="margin_left">12</property>
+        <property name="use_underline">True</property>
+        <property name="xalign">0</property>
+        <property name="active">True</property>
+        <property name="draw_indicator">True</property>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">True</property>
+        <property name="position">3</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkRadioButton" id="openExistingDatabase">
+        <property name="label" translatable="yes">Open an existing database _file</property>
+        <property name="visible">True</property>
+        <property name="can_focus">True</property>
+        <property name="receives_default">False</property>
+        <property name="margin_left">12</property>
+        <property name="use_underline">True</property>
+        <property name="xalign">0</property>
+        <property name="active">True</property>
+        <property name="draw_indicator">True</property>
+        <property name="group">createDatabase</property>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">True</property>
+        <property name="position">4</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkBox" id="docListBox">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="margin_left">48</property>
+        <property name="spacing">8</property>
+        <child>
+          <object class="GtkLabel" id="docListLabel">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="xalign">0</property>
+            <property name="label" translatable="yes">_Recently used:</property>
+            <property name="use_underline">True</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="dbaui-OpenDocumentListBox" id="documentList">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="halign">start</property>
+            <property name="entry_text_column">0</property>
+            <property name="id_column">1</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">True</property>
+        <property name="position">5</property>
+      </packing>
+    </child>
+    <child>
+      <object class="dbaui-OpenDocumentButton" id="openDatabase">
+        <property name="label">Open</property>
+        <property name="visible">True</property>
+        <property name="can_focus">True</property>
+        <property name="receives_default">True</property>
+        <property name="halign">start</property>
+        <property name="margin_left">48</property>
+        <property name="always_show_image">True</property>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">True</property>
+        <property name="position">6</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkRadioButton" id="connectDatabase">
+        <property name="label" translatable="yes">Connect to an e_xisting database</property>
+        <property name="visible">True</property>
+        <property name="can_focus">True</property>
+        <property name="receives_default">False</property>
+        <property name="margin_left">12</property>
+        <property name="use_underline">True</property>
+        <property name="xalign">0</property>
+        <property name="active">True</property>
+        <property name="draw_indicator">True</property>
+        <property name="group">createDatabase</property>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">True</property>
+        <property name="position">7</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkComboBoxText" id="datasourceType">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="halign">start</property>
+        <property name="margin_left">48</property>
+        <property name="entry_text_column">0</property>
+        <property name="id_column">1</property>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">True</property>
+        <property name="position">8</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkLabel" id="specialMessage">
+        <property name="can_focus">False</property>
+        <property name="xalign">0</property>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">True</property>
+        <property name="position">9</property>
+      </packing>
+    </child>
+  </object>
+</interface>

-- 
To view, visit https://gerrit.libreoffice.org/2887
To unsubscribe, visit https://gerrit.libreoffice.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I690e178992c528de112d91cecf00cc3c5156f1cf
Gerrit-PatchSet: 1
Gerrit-Project: core
Gerrit-Branch: master
Gerrit-Owner: Mathias Hasselmann <mathias at openismus.com>



More information about the LibreOffice mailing list