summaryrefslogtreecommitdiff
path: root/dbaccess/source/ui/dlg
diff options
context:
space:
mode:
authorFrank Schönheit <fs@openoffice.org>2000-10-05 09:09:48 +0000
committerFrank Schönheit <fs@openoffice.org>2000-10-05 09:09:48 +0000
commitc38d96eb7b5314cd8ca415874ee9c5cd8b78e62e (patch)
tree8634b0a41d901de885a17d203fdd020b648e5330 /dbaccess/source/ui/dlg
parent894aa4cfccd91f2426824fc787f5e4d642912729 (diff)
initial checkin
Diffstat (limited to 'dbaccess/source/ui/dlg')
-rw-r--r--dbaccess/source/ui/dlg/adminpages.cxx1344
-rw-r--r--dbaccess/source/ui/dlg/adminpages.hxx402
-rw-r--r--dbaccess/source/ui/dlg/dbadmin.cxx540
-rw-r--r--dbaccess/source/ui/dlg/dbadmin.hrc146
-rw-r--r--dbaccess/source/ui/dlg/dbadmin.src1435
-rw-r--r--dbaccess/source/ui/dlg/dbfindex.cxx510
-rw-r--r--dbaccess/source/ui/dlg/dbfindex.hrc26
-rw-r--r--dbaccess/source/ui/dlg/dbfindex.hxx207
-rw-r--r--dbaccess/source/ui/dlg/dbfindex.src279
-rw-r--r--dbaccess/source/ui/dlg/dsitems.hxx103
-rw-r--r--dbaccess/source/ui/dlg/makefile.mk106
-rw-r--r--dbaccess/source/ui/dlg/sqlmessage.cxx552
-rw-r--r--dbaccess/source/ui/dlg/sqlmessage.hrc95
-rw-r--r--dbaccess/source/ui/dlg/sqlmessage.src322
14 files changed, 6067 insertions, 0 deletions
diff --git a/dbaccess/source/ui/dlg/adminpages.cxx b/dbaccess/source/ui/dlg/adminpages.cxx
new file mode 100644
index 000000000..92e9b64d9
--- /dev/null
+++ b/dbaccess/source/ui/dlg/adminpages.cxx
@@ -0,0 +1,1344 @@
+/*************************************************************************
+ *
+ * $RCSfile: adminpages.cxx,v $
+ *
+ * $Revision: 1.1 $
+ *
+ * last change: $Author: fs $ $Date: 2000-10-05 10:04:12 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc..
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _DBAUI_ADMINPAGES_HXX_
+#include "adminpages.hxx"
+#endif
+#ifndef _DBAUI_DBADMIN_HRC_
+#include "dbadmin.hrc"
+#endif
+#ifndef _DBAUI_MODULE_DBU_HXX_
+#include "moduledbu.hxx"
+#endif
+#ifndef _DBAUI_SQLMESSAGE_HXX_
+#include "sqlmessage.hxx"
+#endif
+#ifndef _SFXSTRITEM_HXX
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SFXINTITEM_HXX
+#include <svtools/intitem.hxx>
+#endif
+#ifndef _SV_MSGBOX_HXX
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _DBAUI_DATASOURCEITEMS_HXX_
+#include "dsitems.hxx"
+#endif
+#ifndef _DBU_RESOURCE_HRC_
+#include "dbu_resource.hrc"
+#endif
+#ifndef _DBAUI_DBFINDEX_HXX_
+#include "dbfindex.hxx"
+#endif
+#ifndef _DBAUI_LOCALRESACCESS_HXX_
+#include "localresaccess.hxx"
+#endif
+#ifndef _DBAUI_STRINGLISTITEM_HXX_
+#include "stringlistitem.hxx"
+#endif
+#ifndef _DBAUI_DBADMIN_HXX_
+#include "dbadmin.hxx"
+#endif
+#ifndef _DBHELPER_DBEXCEPTION_HXX_
+#include <connectivity/dbexception.hxx>
+#endif
+#ifndef _CONNECTIVITY_DBTOOLS_HXX_
+#include <connectivity/dbtools.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_SDB_SQLCONTEXT_HPP_
+#include <com/sun/star/sdb/SQLContext.hpp>
+#endif
+
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::sdb;
+using namespace ::com::sun::star::sdbc;
+using namespace ::com::sun::star::beans;
+using namespace ::dbtools;
+
+//.........................................................................
+namespace dbaui
+{
+//.........................................................................
+
+#define FILL_STRING_ITEM(editcontrol, itemset, itemid, modifiedflag) \
+ if (editcontrol.GetText() != editcontrol.GetSavedValue()) \
+ { \
+ itemset.Put(SfxStringItem(itemid, editcontrol.GetText())); \
+ modifiedflag = sal_True; \
+ }
+
+//=========================================================================
+//= OGenericAdministrationPage
+//=========================================================================
+//-------------------------------------------------------------------------
+OGenericAdministrationPage::OGenericAdministrationPage(Window* _pParent, const ResId& _rId, const SfxItemSet& _rAttrSet)
+ :SfxTabPage(_pParent, _rId, _rAttrSet)
+{
+ SetExchangeSupport(sal_True);
+}
+
+//-------------------------------------------------------------------------
+int OGenericAdministrationPage::DeactivatePage(SfxItemSet* _pSet)
+{
+ if (_pSet)
+ {
+ if (!checkItems(*_pSet))
+ return KEEP_PAGE;
+ FillItemSet(*_pSet);
+ }
+
+ return LEAVE_PAGE;
+}
+
+//-------------------------------------------------------------------------
+void OGenericAdministrationPage::Reset(const SfxItemSet& _rCoreAttrs)
+{
+ implInitControls(_rCoreAttrs, sal_False);
+}
+
+//-------------------------------------------------------------------------
+void OGenericAdministrationPage::ActivatePage(const SfxItemSet& _rSet)
+{
+ implInitControls(_rSet, sal_True);
+}
+
+// -----------------------------------------------------------------------
+void OGenericAdministrationPage::getFlags(const SfxItemSet& _rSet, sal_Bool& _rValid, sal_Bool& _rReadonly)
+{
+ SFX_ITEMSET_GET(_rSet, pInvalid, SfxBoolItem, DSID_INVALID_SELECTION, sal_True);
+ _rValid = !pInvalid || !pInvalid->GetValue();
+ SFX_ITEMSET_GET(_rSet, pReadonly, SfxBoolItem, DSID_READONLY, sal_True);
+ _rReadonly = !_rValid || (pReadonly && pReadonly->GetValue());
+}
+
+// -----------------------------------------------------------------------
+IMPL_LINK(OGenericAdministrationPage, OnControlModified, Control*, EMPTYARG)
+{
+ callModifiedHdl();
+ return 0L;
+}
+
+//=========================================================================
+//= OGeneralPage
+//=========================================================================
+//-------------------------------------------------------------------------
+OGeneralPage::OGeneralPage(Window* pParent, const SfxItemSet& _rItems)
+ :OGenericAdministrationPage(pParent, ModuleRes(PAGE_GENERAL), _rItems)
+ ,m_aNameLabel (this, ResId(FT_DATASOURCENAME))
+ ,m_aName (this, ResId(ET_DATASOURCENAME))
+ ,m_aTypeBox (this, ResId(GB_CONNECTION))
+ ,m_aDatasourceTypeLabel (this, ResId(FT_DATATYPE))
+ ,m_aDatasourceType (this, ResId(LB_DATATYPE))
+ ,m_aConnectionLabel (this, ResId(FT_CONNECTURL))
+ ,m_aConnection (this, ResId(ET_CONNECTURL))
+ ,m_aBrowseConnection (this, ResId(PB_BROWSECONNECTION))
+ ,m_pCollection(NULL)
+ ,m_eCurrentSelection(DST_UNKNOWN)
+{
+ // fill the listbox with the UI descriptions for the possible types
+ // and remember the respective DSN prefixes
+ FreeResource();
+
+ // extract the datasource type collection from the item set
+ DbuTypeCollectionItem* pCollectionItem = PTR_CAST(DbuTypeCollectionItem, _rItems.GetItem(DSID_TYPECOLLECTION));
+ if (pCollectionItem)
+ m_pCollection = pCollectionItem->getCollection();
+
+ DBG_ASSERT(m_pCollection, "OGeneralPage::OGeneralPage : really need a DSN type collection !");
+
+ // initially fill the listbox
+ if (m_pCollection)
+ {
+ for ( ODsnTypeCollection::TypeIterator aTypeLoop = m_pCollection->begin();
+ aTypeLoop != m_pCollection->end();
+ ++aTypeLoop
+ )
+ {
+ DATASOURCE_TYPE eType = aTypeLoop.getType();
+ sal_uInt16 nPos = m_aDatasourceType.InsertEntry(aTypeLoop.getDisplayName());
+ m_aDatasourceType.SetEntryData(nPos, reinterpret_cast<void*>(eType));
+ }
+ }
+
+ // do some knittings
+ m_aDatasourceType.SetSelectHdl(LINK(this, OGeneralPage, OnDatasourceTypeSelected));
+ m_aName.SetModifyHdl(LINK(this, OGenericAdministrationPage, OnControlModified));
+ m_aConnection.SetModifyHdl(LINK(this, OGenericAdministrationPage, OnControlModified));
+}
+
+//-------------------------------------------------------------------------
+void OGeneralPage::initializeHistory()
+{
+ m_aSelectionHistory.clear();
+ if (m_pCollection)
+ {
+ for ( ODsnTypeCollection::TypeIterator aTypeLoop = m_pCollection->begin();
+ aTypeLoop != m_pCollection->end();
+ ++aTypeLoop
+ )
+ m_aSelectionHistory[aTypeLoop.getType()] = m_pCollection->getDatasourcePrefix(aTypeLoop.getType());
+ }
+
+}
+
+//-------------------------------------------------------------------------
+void OGeneralPage::onTypeSelected(DATASOURCE_TYPE _eType)
+{
+ sal_Bool bBrowseable = sal_False; // enable or disable the browse button ?
+
+ switch (_eType)
+ {
+ case DST_DBASE:
+ case DST_TEXT:
+ case DST_ADABAS:
+ case DST_ODBC:
+ bBrowseable = sal_True;
+ break;
+ default:
+ bBrowseable = sal_False;
+ break;
+ }
+
+ m_aBrowseConnection.Enable(bBrowseable);
+
+ // update the selection history
+ m_aSelectionHistory[m_eCurrentSelection] = m_aConnection.GetText();
+
+ // the the new URL text as indicated by the selection history
+ m_eCurrentSelection = _eType;
+ m_aConnection.SetText(m_aSelectionHistory[m_eCurrentSelection]);
+
+ if (m_aTypeSelectHandler.IsSet())
+ m_aTypeSelectHandler.Call(this);
+}
+
+//-------------------------------------------------------------------------
+void OGeneralPage::implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue)
+{
+ initializeHistory();
+
+ // 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 the selection is invalid, disable evrything
+ m_aNameLabel.Enable(bValid);
+ m_aName.Enable(bValid);
+ m_aTypeBox.Enable(bValid);
+ m_aDatasourceTypeLabel.Enable(bValid);
+ m_aDatasourceType.Enable(bValid);
+ m_aConnectionLabel.Enable(bValid);
+ m_aConnection.Enable(bValid);
+ m_aBrowseConnection.Enable(bValid);
+
+ String sConnectURL, sName;
+ if (bValid)
+ {
+ // collect some items and some values
+ SFX_ITEMSET_GET(_rSet, pUrlItem, SfxStringItem, DSID_CONNECTURL, sal_True);
+ SFX_ITEMSET_GET(_rSet, pNameItem, SfxStringItem, DSID_NAME, sal_True);
+ DBG_ASSERT(pUrlItem, "OGeneralPage::implInitControls : missing the type attribute !");
+ DBG_ASSERT(pNameItem, "OGeneralPage::implInitControls : missing the name attribute !");
+ sConnectURL = pUrlItem->GetValue();
+ sName = pNameItem->GetValue();
+ }
+
+ // compare the DSN prefix with the registered ones
+ String sDisplayName;
+ DATASOURCE_TYPE eOldSelection = m_eCurrentSelection;
+ m_eCurrentSelection = DST_UNKNOWN;
+ if (m_pCollection && bValid)
+ {
+ m_eCurrentSelection = m_pCollection->getType(sConnectURL);
+ sDisplayName = m_pCollection->getTypeDisplayName(m_eCurrentSelection);
+ }
+
+ // select the correct datasource type
+ m_aDatasourceType.SelectEntry(sDisplayName);
+ if (_bSaveValue)
+ m_aDatasourceType.SaveValue();
+
+ // notify our listener that our type selection has changed (if so)
+ if (eOldSelection != m_eCurrentSelection)
+ onTypeSelected(m_eCurrentSelection);
+
+ m_aConnection.SetText(sConnectURL);
+ if (_bSaveValue)
+ m_aConnection.SaveValue();
+
+ // the datasource name
+ m_aName.SetText(sName);
+ if (_bSaveValue)
+ m_aName.SaveValue();
+}
+
+//-------------------------------------------------------------------------
+SfxTabPage* OGeneralPage::Create(Window* _pParent, const SfxItemSet& _rAttrSet)
+{
+ return ( new OGeneralPage( _pParent, _rAttrSet ) );
+}
+
+//-------------------------------------------------------------------------
+void OGeneralPage::Reset(const SfxItemSet& _rCoreAttrs)
+{
+ m_eCurrentSelection = DST_UNKNOWN;
+ // this ensures that our type selection link will be called, even if the new is is the same as the
+ // current one
+ OGenericAdministrationPage::Reset(_rCoreAttrs);
+}
+
+//-------------------------------------------------------------------------
+BOOL OGeneralPage::FillItemSet(SfxItemSet& _rCoreAttrs)
+{
+ sal_Bool bChangedSomething = sal_False;
+ if (m_aName.GetText() != m_aName.GetSavedValue())
+ {
+ _rCoreAttrs.Put(SfxStringItem(DSID_NAME, m_aName.GetText()));
+ bChangedSomething = sal_True;
+ }
+
+ if ((m_aConnection.GetText() != m_aConnection.GetSavedValue()) || (m_aDatasourceType.GetSavedValue() != m_aDatasourceType.GetSelectEntryPos()))
+ {
+ _rCoreAttrs.Put(SfxStringItem(DSID_CONNECTURL, m_aConnection.GetText()));
+ bChangedSomething = sal_True;
+ }
+
+ return bChangedSomething;
+}
+
+//-------------------------------------------------------------------------
+IMPL_LINK(OGeneralPage, OnDatasourceTypeSelected, ListBox*, _pBox)
+{
+ // get the type from the entry data
+ sal_Int16 nSelected = _pBox->GetSelectEntryPos();
+ DATASOURCE_TYPE eSelectedType = static_cast<DATASOURCE_TYPE>(reinterpret_cast<sal_Int32>(_pBox->GetEntryData(nSelected)));
+ // let the impl method do all the stuff
+ onTypeSelected(eSelectedType);
+ // tell the listener we were modified
+ callModifiedHdl();
+ // outta here
+ return 0L;
+}
+
+//========================================================================
+//= OCommonBehaviourTabPage
+//========================================================================
+OCommonBehaviourTabPage::OCommonBehaviourTabPage(Window* pParent, sal_uInt16 nResId, const SfxItemSet& _rCoreAttrs,
+ sal_uInt16 nControlFlags)
+
+ :OGenericAdministrationPage(pParent, ModuleRes(nResId), _rCoreAttrs)
+ ,m_pUserNameLabel(NULL)
+ ,m_pUserName(NULL)
+ ,m_pPasswordLabel(NULL)
+ ,m_pPassword(NULL)
+ ,m_pAskIfEmptyPwd(NULL)
+ ,m_pOptionsLabel(NULL)
+ ,m_pOptions(NULL)
+ ,m_pCharsetLabel(NULL)
+ ,m_pCharset(NULL)
+ ,m_nControlFlags(nControlFlags)
+{
+ if ((m_nControlFlags & CBTP_USE_UIDPWD) == CBTP_USE_UIDPWD)
+ {
+ m_pUserNameLabel = new FixedText(this, ResId(FT_USERNAME));
+ m_pUserName = new Edit(this, ResId(ET_USERNAME));
+ m_pUserName->SetModifyHdl(LINK(this, OGenericAdministrationPage, OnControlModified));
+ m_pPasswordLabel = new FixedText(this, ResId(FT_PASSWORD));
+ m_pPassword = new Edit(this, ResId(ET_PASSWORD));
+ m_pPassword->SetModifyHdl(LINK(this, OGenericAdministrationPage, OnControlModified));
+
+ m_pAskIfEmptyPwd = new CheckBox(this, ResId(CB_ASK_WHEN_EMPTY_PWD));
+ m_pAskIfEmptyPwd->SetClickHdl(LINK(this, OGenericAdministrationPage, OnControlModified));
+ }
+
+ if ((m_nControlFlags & CBTP_USE_OPTIONS) == CBTP_USE_OPTIONS)
+ {
+ m_pOptionsLabel = new FixedText(this, ResId(FT_OPTIONS));
+ m_pOptions = new Edit(this, ResId(ET_OPTIONS));
+ m_pOptions->SetModifyHdl(LINK(this, OGenericAdministrationPage, OnControlModified));
+ }
+
+ if ((m_nControlFlags & CBTP_USE_CHARSET) == CBTP_USE_CHARSET)
+ {
+ m_pCharsetLabel = new FixedText(this, ResId(FT_CHARSET));
+ m_pCharset = new ListBox(this, ResId(LB_CHARSET));
+ m_pCharset->SetSelectHdl(LINK(this, OGenericAdministrationPage, OnControlModified));
+
+ OCharsetCollection::CharsetIterator aLoop = m_aCharsets.begin();
+ while (aLoop != m_aCharsets.end())
+ {
+ m_pCharset->InsertEntry(aLoop.getName());
+ ++aLoop;
+ }
+ }
+}
+
+// -----------------------------------------------------------------------
+OCommonBehaviourTabPage::~OCommonBehaviourTabPage()
+{
+ DELETEZ(m_pUserNameLabel);
+ DELETEZ(m_pUserName);
+ DELETEZ(m_pPasswordLabel);
+ DELETEZ(m_pPassword);
+ DELETEZ(m_pAskIfEmptyPwd);
+
+ DELETEZ(m_pOptionsLabel);
+ DELETEZ(m_pOptions);
+
+ DELETEZ(m_pCharsetLabel);
+ DELETEZ(m_pCharset);
+}
+
+// -----------------------------------------------------------------------
+void OCommonBehaviourTabPage::implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue)
+{
+ // 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);
+
+ // collect the items
+ SFX_ITEMSET_GET(_rSet, pUidItem, SfxStringItem, DSID_USER, sal_True);
+ SFX_ITEMSET_GET(_rSet, pPwdItem, SfxStringItem, DSID_PASSWORD, sal_True);
+ SFX_ITEMSET_GET(_rSet, pOptionsItem, SfxStringItem, DSID_ADDITIONALOPTIONS, sal_True);
+ SFX_ITEMSET_GET(_rSet, pCharsetItem, SfxStringItem, DSID_CHARSET, sal_True);
+ SFX_ITEMSET_GET(_rSet, pAllowEmptyPwd, SfxBoolItem, DSID_ASKFOREMPTYPWD, sal_True);
+
+ // forward the values to the controls
+ if (bValid)
+ {
+ if ((m_nControlFlags & CBTP_USE_UIDPWD) == CBTP_USE_UIDPWD)
+ {
+ m_pUserName->SetText(pUidItem->GetValue());
+ m_pPassword->SetText(pPwdItem->GetValue());
+ m_pAskIfEmptyPwd->Check(pAllowEmptyPwd->GetValue());
+
+ m_pUserName->ClearModifyFlag();
+ m_pPassword->ClearModifyFlag();
+
+ if (_bSaveValue)
+ {
+ m_pUserName->SaveValue();
+ m_pPassword->SaveValue();
+ m_pAskIfEmptyPwd->SaveValue();
+ }
+
+ m_pUserName->SetModifyHdl(LINK(this, OCommonBehaviourTabPage, OnPasswordModified));
+ m_pPassword->SetModifyHdl(LINK(this, OCommonBehaviourTabPage, OnPasswordModified));
+ LINK(this, OCommonBehaviourTabPage, OnPasswordModified).Call(m_pAskIfEmptyPwd);
+ // for the initial state
+ }
+
+ if ((m_nControlFlags & CBTP_USE_OPTIONS) == CBTP_USE_OPTIONS)
+ {
+ m_pOptions->SetText(pOptionsItem->GetValue());
+ m_pOptions->ClearModifyFlag();
+ if (_bSaveValue)
+ m_pOptions->SaveValue();
+ }
+
+ if ((m_nControlFlags & CBTP_USE_CHARSET) == CBTP_USE_CHARSET)
+ {
+ m_pCharset->SelectEntry(m_aCharsets.KeyToName(pCharsetItem->GetValue()));
+ if (_bSaveValue)
+ m_pCharset->SaveValue();
+ }
+ }
+
+ if (bReadonly)
+ {
+ if ((m_nControlFlags & CBTP_USE_UIDPWD) == CBTP_USE_UIDPWD)
+ {
+ m_pUserNameLabel->Disable();
+ m_pUserName->Disable();
+ m_pPasswordLabel->Disable();
+ m_pPassword->Disable();
+ m_pAskIfEmptyPwd->Disable();
+ }
+
+ if ((m_nControlFlags & CBTP_USE_OPTIONS) == CBTP_USE_OPTIONS)
+ {
+ m_pOptionsLabel->Disable();
+ m_pOptions->Disable();
+ }
+
+ if ((m_nControlFlags & CBTP_USE_CHARSET) == CBTP_USE_CHARSET)
+ {
+ m_pCharsetLabel->Disable();
+ m_pCharset->Disable();
+ }
+ }
+}
+
+// -----------------------------------------------------------------------
+sal_Bool OCommonBehaviourTabPage::FillItemSet(SfxItemSet& _rSet)
+{
+ sal_Bool bChangedSomething = sal_False;
+ if ((m_nControlFlags & CBTP_USE_UIDPWD) == CBTP_USE_UIDPWD)
+ {
+ if (m_pUserName->GetText() != m_pUserName->GetSavedValue())
+ {
+ String strUserId(m_pUserName->GetText());
+ _rSet.Put(SfxStringItem(DSID_USER, strUserId));
+ bChangedSomething = sal_True;
+ }
+
+ if (m_pPassword->GetText() != m_pPassword->GetSavedValue())
+ {
+ String strPassword(m_pPassword->GetText());
+ _rSet.Put(SfxStringItem(DSID_PASSWORD, strPassword));
+ bChangedSomething = sal_True;
+ }
+
+ if (m_pAskIfEmptyPwd->IsChecked() != m_pAskIfEmptyPwd->GetSavedValue())
+ _rSet.Put(SfxBoolItem(DSID_ASKFOREMPTYPWD, m_pAskIfEmptyPwd->IsChecked()));
+ }
+
+ if ((m_nControlFlags & CBTP_USE_OPTIONS) == CBTP_USE_OPTIONS)
+ {
+ if( m_pOptions->GetText() != m_pOptions->GetSavedValue() )
+ {
+ String strOptions = m_pOptions->GetText();
+ _rSet.Put(SfxStringItem(DSID_ADDITIONALOPTIONS, strOptions));
+ bChangedSomething = sal_True;
+ }
+ }
+
+ if ((m_nControlFlags & CBTP_USE_CHARSET) == CBTP_USE_CHARSET)
+ {
+ if (m_pCharset->GetSelectEntryPos() != m_pCharset->GetSavedValue())
+ {
+ _rSet.Put(SfxStringItem(DSID_CHARSET, m_aCharsets.NameToKey(m_pCharset->GetSelectEntry())));
+ bChangedSomething = sal_True;
+ }
+ }
+
+ return bChangedSomething;
+}
+
+//------------------------------------------------------------------------
+IMPL_LINK( OCommonBehaviourTabPage, OnPasswordModified, Control*, pControl)
+{
+ DBG_ASSERT((m_nControlFlags & CBTP_USE_UIDPWD) == CBTP_USE_UIDPWD, "OCommonBehaviourTabPage::OnPasswordModified : wrong mode, will probably crash!");
+
+ m_pAskIfEmptyPwd->Enable((m_pUserName->GetText().Len() > 0) && (m_pPassword->GetText().Len() == 0));
+ return 0L;
+}
+
+//========================================================================
+//= ODbaseDetailsPage
+//========================================================================
+//------------------------------------------------------------------------
+ODbaseDetailsPage::ODbaseDetailsPage( Window* pParent, const SfxItemSet& _rCoreAttrs )
+ :OCommonBehaviourTabPage(pParent, PAGE_DBASE, _rCoreAttrs, CBTP_USE_CHARSET)
+ ,m_aFrame (this, ResId(GB_DBASE_MAIN))
+ ,m_aShowDeleted (this, ResId(CB_SHOWDELETEDROWS))
+ ,m_aLongTableNames (this, ResId(CB_ALLOWLONGNAMES))
+ ,m_aIndexes (this, ResId(PB_INDICIES))
+{
+ m_aIndexes.SetClickHdl(LINK(this, ODbaseDetailsPage, OnButtonClicked));
+ m_aShowDeleted.SetClickHdl(LINK(this, ODbaseDetailsPage, OnButtonClicked));
+ m_aLongTableNames.SetClickHdl(LINK(this, ODbaseDetailsPage, OnButtonClicked));
+
+ // correct the z-order which is mixed-up because the base class constructed some controls before we did
+ m_pCharset->SetZOrder(&m_aLongTableNames, WINDOW_ZORDER_BEHIND);
+
+ FreeResource();
+}
+
+// -----------------------------------------------------------------------
+ODbaseDetailsPage::~ODbaseDetailsPage()
+{
+}
+
+// -----------------------------------------------------------------------
+SfxTabPage* ODbaseDetailsPage::Create( Window* pParent, const SfxItemSet& _rAttrSet )
+{
+ return ( new ODbaseDetailsPage( pParent, _rAttrSet ) );
+}
+
+// -----------------------------------------------------------------------
+void ODbaseDetailsPage::implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue)
+{
+ OCommonBehaviourTabPage::implInitControls(_rSet, _bSaveValue);
+
+ // 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);
+
+ // get the DSN string (needed for the index dialog)
+ SFX_ITEMSET_GET(_rSet, pUrlItem, SfxStringItem, DSID_CONNECTURL, sal_True);
+ SFX_ITEMSET_GET(_rSet, pTypesItem, DbuTypeCollectionItem, DSID_TYPECOLLECTION, sal_True);
+ ODsnTypeCollection* pTypeCollection = pTypesItem ? pTypesItem->getCollection() : NULL;
+ SfxItemState eState = _rSet.GetItemState(DSID_TYPECOLLECTION);
+ if (pTypeCollection && pUrlItem && (SFX_ITEM_DEFAULT != eState))
+ m_sDsn = pTypeCollection->cutPrefix(pUrlItem->GetValue());
+
+ // get the other relevant items
+ SFX_ITEMSET_GET(_rSet, pDeletedItem, SfxBoolItem, DSID_SHOWDELETEDROWS, sal_True);
+ SFX_ITEMSET_GET(_rSet, pLongNameItem, SfxBoolItem, DSID_ALLOWLONGTABLENAMES, sal_True);
+ sal_Bool bDeleted = sal_False, bLongNames = sal_False;
+ if (bValid)
+ {
+ bDeleted = pDeletedItem->GetValue();
+ bLongNames = pLongNameItem->GetValue();
+ }
+ m_aShowDeleted.Check(pDeletedItem->GetValue());
+ m_aLongTableNames.Check(pLongNameItem->GetValue());
+
+ if (_bSaveValue)
+ {
+ m_aShowDeleted.SaveValue();
+ m_aLongTableNames.SaveValue();
+ }
+
+ if (bReadonly)
+ {
+ m_aShowDeleted.Disable();
+ m_aLongTableNames.Disable();
+ }
+}
+
+// -----------------------------------------------------------------------
+sal_Bool ODbaseDetailsPage::FillItemSet( SfxItemSet& _rSet )
+{
+ sal_Bool bChangedSomething = OCommonBehaviourTabPage::FillItemSet(_rSet);
+
+ if( m_aShowDeleted.IsChecked() != m_aShowDeleted.GetSavedValue() )
+ {
+ _rSet.Put( SfxBoolItem(DSID_SHOWDELETEDROWS, m_aShowDeleted.IsChecked() ) );
+ bChangedSomething = sal_True;
+ }
+
+ if( m_aLongTableNames.IsChecked() != m_aLongTableNames.GetSavedValue() )
+ {
+ _rSet.Put( SfxBoolItem(DSID_ALLOWLONGTABLENAMES, m_aLongTableNames.IsChecked() ) );
+ bChangedSomething = sal_True;
+ }
+
+ return bChangedSomething;
+}
+
+//------------------------------------------------------------------------
+IMPL_LINK( ODbaseDetailsPage, OnButtonClicked, Button*, pButton )
+{
+ if (&m_aIndexes == pButton)
+ {
+ ODbaseIndexDialog aIndexDialog(this, m_sDsn);
+ aIndexDialog.Execute();
+ }
+ else
+ // it was one of the checkboxes -> we count as modified from now on
+ callModifiedHdl();
+
+ return 0;
+}
+
+//========================================================================
+//= OJdbcDetailsPage
+//========================================================================
+OJdbcDetailsPage::OJdbcDetailsPage( Window* pParent, const SfxItemSet& _rCoreAttrs )
+ :OCommonBehaviourTabPage(pParent, PAGE_JDBC, _rCoreAttrs, CBTP_USE_UIDPWD | CBTP_USE_CHARSET)
+
+ ,m_aDriverLabel (this, ResId(FT_JDBCDRIVERCLASS))
+ ,m_aDriver (this, ResId(ET_JDBCDRIVERCLASS))
+ ,m_aJdbcUrlLabel (this, ResId(FT_CONNECTURL))
+ ,m_aJdbcUrl (this, ResId(ET_CONNECTURL))
+ ,m_aSeparator1 (this, ResId(FL_SEPARATOR1))
+{
+ m_aDriver.SetModifyHdl(LINK(this, OGenericAdministrationPage, OnControlModified));
+ m_aJdbcUrl.SetModifyHdl(LINK(this, OGenericAdministrationPage, OnControlModified));
+
+ m_pUserName->SetZOrder(&m_aJdbcUrl, WINDOW_ZORDER_BEHIND);
+ m_pPassword->SetZOrder(m_pUserName, WINDOW_ZORDER_BEHIND);
+ m_pAskIfEmptyPwd->SetZOrder(m_pPassword, WINDOW_ZORDER_BEHIND);
+ m_pCharset->SetZOrder(m_pAskIfEmptyPwd, WINDOW_ZORDER_BEHIND);
+
+ FreeResource();
+}
+
+// -----------------------------------------------------------------------
+OJdbcDetailsPage::~OJdbcDetailsPage()
+{
+}
+
+// -----------------------------------------------------------------------
+SfxTabPage* OJdbcDetailsPage::Create( Window* pParent, const SfxItemSet& _rAttrSet )
+{
+ return ( new OJdbcDetailsPage( pParent, _rAttrSet ) );
+}
+
+// -----------------------------------------------------------------------
+void OJdbcDetailsPage::implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue)
+{
+ OCommonBehaviourTabPage::implInitControls(_rSet, _bSaveValue);
+
+ // 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);
+
+ SFX_ITEMSET_GET(_rSet, pJdbcDrvItem, SfxStringItem, DSID_JDBCDRIVERCLASS, sal_True);
+ SFX_ITEMSET_GET(_rSet, pUrlItem, SfxStringItem, DSID_CONNECTURL, sal_True);
+
+ String sDriver, sURL;
+ if (bValid)
+ {
+ sDriver = pJdbcDrvItem->GetValue();
+ sURL = pUrlItem->GetValue();
+ }
+ m_aDriver.SetText(sDriver);
+ m_aJdbcUrl.SetText(sURL);
+
+ m_aDriver.ClearModifyFlag();
+ m_aJdbcUrl.ClearModifyFlag();
+
+ if (_bSaveValue)
+ {
+ m_aDriver.SaveValue();
+ m_aJdbcUrl.SaveValue();
+ }
+
+ if (bReadonly)
+ {
+ m_aDriverLabel.Disable();
+ m_aDriver.Disable();
+ m_aJdbcUrlLabel.Disable();
+ m_aJdbcUrl.Disable();
+ }
+}
+
+// -----------------------------------------------------------------------
+sal_Bool OJdbcDetailsPage::FillItemSet( SfxItemSet& _rSet )
+{
+ sal_Bool bChangedSomething = OCommonBehaviourTabPage::FillItemSet(_rSet);
+
+ FILL_STRING_ITEM(m_aDriver, _rSet, DSID_JDBCDRIVERCLASS, bChangedSomething);
+ FILL_STRING_ITEM(m_aJdbcUrl, _rSet, DSID_CONNECTURL, bChangedSomething);
+
+ return bChangedSomething;
+}
+
+//========================================================================
+//= OOdbcDetailsPage
+//========================================================================
+OOdbcDetailsPage::OOdbcDetailsPage( Window* pParent, const SfxItemSet& _rCoreAttrs )
+ :OCommonBehaviourTabPage(pParent, PAGE_ODBC, _rCoreAttrs, CBTP_USE_UIDPWD | CBTP_USE_CHARSET | CBTP_USE_OPTIONS)
+ ,m_aSeparator1 (this, ResId(FL_SEPARATOR1))
+{
+ FreeResource();
+}
+
+// -----------------------------------------------------------------------
+SfxTabPage* OOdbcDetailsPage::Create( Window* pParent, const SfxItemSet& _rAttrSet )
+{
+ return ( new OOdbcDetailsPage( pParent, _rAttrSet ) );
+}
+
+//========================================================================
+//= OAdabasDetailsPage
+//========================================================================
+OAdabasDetailsPage::OAdabasDetailsPage( Window* pParent, const SfxItemSet& _rCoreAttrs )
+ :OCommonBehaviourTabPage(pParent, PAGE_ODBC, _rCoreAttrs, CBTP_USE_UIDPWD | CBTP_USE_CHARSET)
+ // Yes, we're using the resource for the ODBC page here. It contains two controls which we don't use
+ // and except that it's excatly what we need here.
+ ,m_aSeparator1 (this, ResId(FL_SEPARATOR1))
+{
+ // move the charset related control some pixel up (as they are positioned as if above them there are the option
+ // controls, which is the case for the ODBC page only)
+ Size aMovesize(LogicToPixel(Size(0, 15), MAP_APPFONT));
+ Point aPos = m_pCharsetLabel->GetPosPixel();
+ m_pCharsetLabel->SetPosPixel(Point(aPos.X(), aPos.Y() - aMovesize.Height()));
+ aPos = m_pCharset->GetPosPixel();
+ m_pCharset->SetPosPixel(Point(aPos.X(), aPos.Y() - aMovesize.Height()));
+
+ FreeResource();
+}
+
+// -----------------------------------------------------------------------
+SfxTabPage* OAdabasDetailsPage::Create( Window* pParent, const SfxItemSet& _rAttrSet )
+{
+ return ( new OAdabasDetailsPage( pParent, _rAttrSet ) );
+}
+
+//========================================================================
+//= OTextDetailsPage
+//========================================================================
+//------------------------------------------------------------------------
+OTextDetailsPage::OTextDetailsPage( Window* pParent, const SfxItemSet& _rCoreAttrs )
+ :OCommonBehaviourTabPage(pParent, PAGE_TEXT, _rCoreAttrs, CBTP_USE_CHARSET)
+
+ ,m_aHeader (this, ResId(CB_HEADER))
+ ,m_aFieldSeparatorLabel (this, ResId(FT_FIELDSEPARATOR))
+ ,m_aFieldSeparator (this, ResId(CM_FIELDSEPARATOR))
+ ,m_aTextSeparatorLabel (this, ResId(FT_TEXTSEPARATOR))
+ ,m_aTextSeparator (this, ResId(CM_TEXTSEPARATOR))
+ ,m_aDecimalSeparatorLabel (this, ResId(FT_DECIMALSEPARATOR))
+ ,m_aDecimalSeparator (this, ResId(CM_DECIMALSEPARATOR))
+ ,m_aThousandsSeparatorLabel (this, ResId(FT_THOUSANDSSEPARATOR))
+ ,m_aThousandsSeparator (this, ResId(CM_THOUSANDSSEPARATOR))
+ ,m_aSeparator1 (this, ResId(FL_SEPARATOR1))
+ ,m_aExtensionLabel (this, ResId(FT_EXTENSION))
+ ,m_aExtension (this, ResId(CM_EXTENSION))
+
+ ,m_aFieldSeparatorList (ResId(STR_FIELDSEPARATORLIST))
+ ,m_aTextSeparatorList (ResId(STR_TEXTSEPARATORLIST))
+{
+ xub_StrLen nCnt = m_aFieldSeparatorList.GetTokenCount( '\t' );
+ for( xub_StrLen i=0 ; i<nCnt ; i+=2 )
+ m_aFieldSeparator.InsertEntry( m_aFieldSeparatorList.GetToken( i, '\t' ) );
+
+ nCnt = m_aTextSeparatorList.GetTokenCount( '\t' );
+ for( i=0 ; i<nCnt ; i+=2 )
+ m_aTextSeparator.InsertEntry( m_aTextSeparatorList.GetToken( i, '\t' ) );
+
+ // set the modify handlers
+ m_aHeader.SetClickHdl(LINK(this, OGenericAdministrationPage, OnControlModified));
+ m_aFieldSeparator.SetUpdateDataHdl(LINK(this, OGenericAdministrationPage, OnControlModified));
+ m_aFieldSeparator.SetSelectHdl(LINK(this, OGenericAdministrationPage, OnControlModified));
+ m_aTextSeparator.SetUpdateDataHdl(LINK(this, OGenericAdministrationPage, OnControlModified));
+ m_aTextSeparator.SetSelectHdl(LINK(this, OGenericAdministrationPage, OnControlModified));
+ m_aExtension.SetSelectHdl(LINK(this, OGenericAdministrationPage, OnControlModified));
+
+ m_aFieldSeparator.SetModifyHdl(LINK(this, OGenericAdministrationPage, OnControlModified));
+ m_aTextSeparator.SetModifyHdl(LINK(this, OGenericAdministrationPage, OnControlModified));
+ m_aDecimalSeparator.SetModifyHdl(LINK(this, OGenericAdministrationPage, OnControlModified));
+ m_aThousandsSeparator.SetModifyHdl(LINK(this, OGenericAdministrationPage, OnControlModified));
+ m_aExtension.SetModifyHdl(LINK(this, OGenericAdministrationPage, OnControlModified));
+
+
+ m_pCharset->SetZOrder(&m_aExtension, WINDOW_ZORDER_BEHIND);
+
+ FreeResource();
+}
+
+// -----------------------------------------------------------------------
+OTextDetailsPage::~OTextDetailsPage()
+{
+}
+
+// -----------------------------------------------------------------------
+SfxTabPage* OTextDetailsPage::Create( Window* pParent, const SfxItemSet& _rAttrSet )
+{
+ return ( new OTextDetailsPage( pParent, _rAttrSet ) );
+}
+
+// -----------------------------------------------------------------------
+void OTextDetailsPage::implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue)
+{
+ OCommonBehaviourTabPage::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);
+
+ SFX_ITEMSET_GET(_rSet, pDelItem, SfxUInt16Item, DSID_FIELDDELIMITER, sal_True);
+ SFX_ITEMSET_GET(_rSet, pStrItem, SfxUInt16Item, DSID_TEXTDELIMITER, sal_True);
+ SFX_ITEMSET_GET(_rSet, pDecdelItem, SfxUInt16Item, DSID_DECIMALDELIMITER, sal_True);
+ SFX_ITEMSET_GET(_rSet, pThodelItem, SfxUInt16Item, DSID_THOUSANDSDELIMITER, sal_True);
+ SFX_ITEMSET_GET(_rSet, pExtensionItem, SfxStringItem, DSID_TEXTFILEEXTENSION, sal_True);
+ SFX_ITEMSET_GET(_rSet, pHdrItem, SfxBoolItem, DSID_TEXTFILEHEADER, sal_True);
+
+ if (bValid)
+ {
+ m_aHeader.Check( pHdrItem->GetValue() );
+
+ SetSeparator(m_aFieldSeparator, m_aFieldSeparatorList, pDelItem->GetValue());
+ SetSeparator(m_aTextSeparator, m_aTextSeparatorList, pStrItem->GetValue());
+
+ m_aDecimalSeparator.SetText(sal_Unicode(pDecdelItem->GetValue()));
+ m_aThousandsSeparator.SetText(sal_Unicode(pThodelItem->GetValue()));
+ m_aExtension.SetText(pExtensionItem->GetValue());
+ }
+
+ if (_bSaveValue)
+ {
+ m_aHeader.SaveValue();
+ m_aFieldSeparator.SaveValue();
+ m_aTextSeparator.SaveValue();
+ m_aDecimalSeparator.SaveValue();
+ m_aThousandsSeparator.SaveValue();
+ m_aExtension.SaveValue();
+ }
+
+ if (bReadonly)
+ {
+ m_aHeader.Disable();
+ m_aFieldSeparatorLabel.Disable();
+ m_aFieldSeparator.Disable();
+ m_aTextSeparatorLabel.Disable();
+ m_aTextSeparator.Disable();
+ m_aDecimalSeparatorLabel.Disable();
+ m_aDecimalSeparator.Disable();
+ m_aThousandsSeparatorLabel.Disable();
+ m_aThousandsSeparator.Disable();
+ m_aExtensionLabel.Disable();
+ m_aExtension.Disable();
+ }
+}
+// -----------------------------------------------------------------------
+sal_Bool OTextDetailsPage::checkItems(const SfxItemSet& _rSet)
+{
+ OLocalResourceAccess aStringResAccess(PAGE_TEXT, RSC_TABPAGE);
+ // for accessing the strings which are local to our own resource block
+
+ String aErrorText;
+ Control* pErrorWin = NULL;
+ // if (!m_aFieldSeparator.GetText().Len())
+ // bug (#42168) if this line is compiled under OS2 (in a product environent)
+ // -> use a temporary variable
+ String aDelText(m_aFieldSeparator.GetText());
+ if(!aDelText.Len())
+ { // Kein FeldTrenner
+ aErrorText = String(ResId(STR_DELIMITER_MISSING));
+ aErrorText.SearchAndReplaceAscii("#1",m_aFieldSeparatorLabel.GetText());
+ pErrorWin = &m_aFieldSeparator;
+ }
+ else if (!m_aDecimalSeparator.GetText().Len())
+ { // kein Decimaltrenner
+ aErrorText = String(ResId(STR_DELIMITER_MISSING));
+ aErrorText.SearchAndReplaceAscii("#1",m_aDecimalSeparatorLabel.GetText());
+ pErrorWin = &m_aDecimalSeparator;
+ }
+ else if (m_aTextSeparator.GetText() == m_aFieldSeparator.GetText())
+ { // Feld und TextTrenner duerfen nicht gleich sein
+ aErrorText = String(ResId(STR_DELIMITER_MUST_DIFFER));
+ aErrorText.SearchAndReplaceAscii("#1",m_aTextSeparatorLabel.GetText());
+ aErrorText.SearchAndReplaceAscii("#2",m_aFieldSeparatorLabel.GetText());
+ pErrorWin = &m_aTextSeparator;
+ }
+ else if (m_aDecimalSeparator.GetText() == m_aThousandsSeparator.GetText())
+ { // Tausender und DecimalTrenner duerfen nicht gleich sein
+ aErrorText = String(ResId(STR_DELIMITER_MUST_DIFFER));
+ aErrorText.SearchAndReplaceAscii("#1",m_aDecimalSeparatorLabel.GetText());
+ aErrorText.SearchAndReplaceAscii("#2",m_aThousandsSeparatorLabel.GetText());
+ pErrorWin = &m_aDecimalSeparator;
+ }
+ else if (m_aFieldSeparator.GetText() == m_aThousandsSeparator.GetText())
+ { // Tausender und FeldTrenner duerfen nicht gleich sein
+ aErrorText = String(ResId(STR_DELIMITER_MUST_DIFFER));
+ aErrorText.SearchAndReplaceAscii("#1",m_aFieldSeparatorLabel.GetText());
+ aErrorText.SearchAndReplaceAscii("#2",m_aThousandsSeparatorLabel.GetText());
+ pErrorWin = &m_aFieldSeparator;
+ }
+ else if (m_aFieldSeparator.GetText() == m_aDecimalSeparator.GetText())
+ { // Zehner und FeldTrenner duerfen nicht gleich sein
+ aErrorText = String(ResId(STR_DELIMITER_MUST_DIFFER));
+ aErrorText.SearchAndReplaceAscii("#1",m_aFieldSeparatorLabel.GetText());
+ aErrorText.SearchAndReplaceAscii("#2",m_aDecimalSeparatorLabel.GetText());
+ pErrorWin = &m_aFieldSeparator;
+ }
+ else if (m_aTextSeparator.GetText() == m_aThousandsSeparator.GetText())
+ { // Tausender und TextTrenner duerfen nicht gleich sein
+ aErrorText = String(ResId(STR_DELIMITER_MUST_DIFFER));
+ aErrorText.SearchAndReplaceAscii("#1",m_aTextSeparatorLabel.GetText());
+ aErrorText.SearchAndReplaceAscii("#2",m_aThousandsSeparatorLabel.GetText());
+ pErrorWin = &m_aTextSeparator;
+ }
+ else if (m_aTextSeparator.GetText() == m_aDecimalSeparator.GetText())
+ { // Zehner und TextTrenner duerfen nicht gleich sein
+ aErrorText = String(ResId(STR_DELIMITER_MUST_DIFFER));
+ aErrorText.SearchAndReplaceAscii("#1",m_aTextSeparatorLabel.GetText());
+ aErrorText.SearchAndReplaceAscii("#2",m_aDecimalSeparatorLabel.GetText());
+ pErrorWin = &m_aTextSeparator;
+ }
+ else if ( (m_aExtension.GetText().Search('*') != STRING_NOTFOUND)
+ ||
+ (m_aExtension.GetText().Search('?') != STRING_NOTFOUND)
+ )
+ {
+ aErrorText = String(ResId(STR_NO_WILDCARDS));
+ aErrorText.SearchAndReplaceAscii("#1",m_aExtensionLabel.GetText());
+ pErrorWin = &m_aExtension;
+ }
+ else
+ return sal_True;
+
+ aErrorText.EraseAllChars('~');
+ ErrorBox(NULL, WB_OK, aErrorText).Execute();
+ pErrorWin->GrabFocus();
+ return 0;
+}
+
+// -----------------------------------------------------------------------
+sal_Bool OTextDetailsPage::FillItemSet( SfxItemSet& rSet )
+{
+ sal_Bool bChangedSomething = OCommonBehaviourTabPage::FillItemSet(rSet);
+
+ if( m_aHeader.IsChecked() != m_aHeader.GetSavedValue() )
+ {
+ rSet.Put( SfxBoolItem(DSID_TEXTFILEHEADER, m_aHeader.IsChecked() ) );
+ bChangedSomething = sal_True;
+ }
+
+ if( m_aFieldSeparator.GetText() != m_aFieldSeparator.GetSavedValue() )
+ {
+ rSet.Put( SfxUInt16Item(DSID_FIELDDELIMITER, GetSeparator( m_aFieldSeparator, m_aFieldSeparatorList) ) );
+ bChangedSomething = sal_True;
+ }
+ if( m_aTextSeparator.GetText() != m_aTextSeparator.GetSavedValue() )
+ {
+ rSet.Put( SfxUInt16Item(DSID_TEXTDELIMITER, GetSeparator( m_aTextSeparator, m_aTextSeparatorList) ) );
+ bChangedSomething = sal_True;
+ }
+
+ if( m_aDecimalSeparator.GetText() != m_aDecimalSeparator.GetSavedValue() )
+ {
+ rSet.Put( SfxUInt16Item(DSID_DECIMALDELIMITER, (sal_uInt16)(m_aDecimalSeparator.GetText().GetChar(0)) ) );
+ bChangedSomething = sal_True;
+ }
+ if( m_aThousandsSeparator.GetText() != m_aThousandsSeparator.GetSavedValue() )
+ {
+ rSet.Put( SfxUInt16Item(DSID_THOUSANDSDELIMITER, (sal_uInt16)(m_aThousandsSeparator.GetText().GetChar(0)) ) );
+ bChangedSomething = sal_True;
+ }
+ if( m_aExtension.GetText() != m_aExtension.GetSavedValue() )
+ {
+ rSet.Put( SfxStringItem(DSID_TEXTFILEEXTENSION, m_aExtension.GetText()));
+ bChangedSomething = sal_True;
+ }
+
+ return bChangedSomething;
+}
+
+//------------------------------------------------------------------------
+sal_uInt16 OTextDetailsPage::GetSeparator( const ComboBox& rBox, const String& rList )
+{
+ char nTok = '\t';
+ sal_uInt16 nRet(0);
+ sal_uInt16 nPos(rBox.GetEntryPos( rBox.GetText() ));
+
+ if( nPos == COMBOBOX_ENTRY_NOTFOUND )
+ return (sal_uInt16)(rBox.GetText().GetChar(0));
+ else
+ return (sal_uInt16)rList.GetToken((nPos*2)+1, nTok ).ToInt32();
+}
+
+//------------------------------------------------------------------------
+void OTextDetailsPage::SetSeparator( ComboBox& rBox, const String& rList, sal_uInt16 nVal )
+{
+ char nTok = '\t';
+ xub_StrLen nCnt(rList.GetTokenCount( nTok ));
+ xub_StrLen i;
+
+ for( i=0 ; i<nCnt ; i+=2 )
+ {
+ sal_uInt16 nTVal(rList.GetToken( i+1, nTok ).ToInt32());
+
+ if( nTVal == nVal )
+ {
+ rBox.SetText( rList.GetToken( i, nTok ) );
+ break;
+ }
+ }
+
+ if( i >= nCnt )
+ {
+ rBox.SetText( (sal_Unicode)nVal );
+ }
+}
+
+//========================================================================
+//= OTableSubscriptionPage
+//========================================================================
+//------------------------------------------------------------------------
+OTableSubscriptionPage::OTableSubscriptionPage( Window* pParent, const SfxItemSet& _rCoreAttrs )
+ :OGenericAdministrationPage( pParent, ModuleRes(PAGE_TABLESUBSCRIPTION), _rCoreAttrs )
+ ,m_aTablesListLabel (this, ResId(FT_TABLESUBSCRIPTION))
+ ,m_aTablesList (this, ResId(CTL_TABLESUBSCRIPTION))
+ ,m_aIncludeAllTables (this, ResId(PB_ADDALLTABLES))
+ ,m_bCheckedAll (sal_True)
+{
+ m_aIncludeAllTables.SetClickHdl( LINK(this, OTableSubscriptionPage, AddAllClickHdl) );
+ m_aIncludeAllTables.SetText( ResId(STR_CHECK_ALL) );
+
+ // initialize the TabListBox
+ m_aTablesList.SetSelectionMode( MULTIPLE_SELECTION );
+ m_aTablesList.SetDragDropMode( 0 );
+ m_aTablesList.EnableInplaceEditing( sal_False );
+ m_aTablesList.SetWindowBits(WB_BORDER | WB_HASLINES | WB_HASLINESATROOT | WB_SORT | WB_HASBUTTONS | WB_HSCROLL |WB_HASBUTTONSATROOT);
+
+ m_aTablesList.Clear();
+
+ FreeResource();
+
+ m_aTablesList.SetCheckButtonHdl(LINK(this, OGenericAdministrationPage, OnControlModified));
+}
+
+//------------------------------------------------------------------------
+OTableSubscriptionPage::~OTableSubscriptionPage()
+{
+}
+
+//------------------------------------------------------------------------
+SfxTabPage* OTableSubscriptionPage::Create( Window* pParent, const SfxItemSet& rAttrSet )
+{
+ return ( new OTableSubscriptionPage( pParent, rAttrSet ) );
+}
+
+//------------------------------------------------------------------------
+void OTableSubscriptionPage::implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue)
+{
+ // 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_aTablesList.Enable(!bReadonly);
+ m_aTablesListLabel.Enable(!bReadonly);
+ m_aIncludeAllTables.Enable(!bReadonly);
+
+ // the PropertyValues for the current dialog settings
+ Sequence< PropertyValue > aConnectionParams = ODbAdminDialog::toDriverParams(_rSet);
+ // the current DSN
+ String sURL;
+ SFX_ITEMSET_GET(_rSet, pUrlItem, SfxStringItem, DSID_CONNECTURL, sal_True);
+ if (bValid)
+ sURL = pUrlItem->GetValue();
+
+ // fill the table list with this connection information
+ Reference< XConnection > xConn;
+ Reference< XDatabaseMetaData > xMeta;
+ SQLExceptionInfo aErrorInfo;
+ try
+ {
+ xConn = m_aTablesList.UpdateTableList(sURL, aConnectionParams);
+ }
+ catch (SQLContext& e) { aErrorInfo = SQLExceptionInfo(e); }
+ catch (SQLWarning& e) { aErrorInfo = SQLExceptionInfo(e); }
+ catch (SQLException& e) { aErrorInfo = SQLExceptionInfo(e); }
+
+ if (aErrorInfo.isValid())
+ {
+ // establishing the connection failed. Show an error window and exit.
+ OSQLMessageBox(GetParent(), aErrorInfo, WB_OK | WB_DEF_OK, OSQLMessageBox::Error).Execute();
+ m_aTablesList.Enable(sal_False);
+ m_aTablesListLabel.Enable(sal_False);
+ m_aIncludeAllTables.Enable(sal_False);
+ m_aTablesList.Clear();
+ return;
+ }
+
+ // in addition, we need some infos about the connection used
+ m_sCatalogSeparator = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".")); // (default)
+ m_bCatalogAtStart = sal_True; // (default)
+ try
+ {
+ if (xConn.is())
+ xMeta = xConn->getMetaData();
+ if (xMeta.is())
+ {
+ m_sCatalogSeparator = xMeta->getCatalogSeparator();
+ m_bCatalogAtStart = xMeta->isCatalogAtStart();
+ }
+ }
+ catch(SQLException&)
+ {
+ DBG_ERROR("OTableSubscriptionPage::implInitControls : could not retrieve the qualifier separator for the used connection !");
+ }
+
+ m_bCheckedAll = sal_True;
+ // get the current table filter
+ SFX_ITEMSET_GET(_rSet, pTableFilter, OStringListItem, DSID_TABLEFILTER, sal_True);
+ Sequence< ::rtl::OUString > aTableFilter;
+ if (pTableFilter)
+ aTableFilter = pTableFilter->getList();
+
+ if (!aTableFilter.getLength())
+ { // unfortunally, we don't know what this means: It could be that the user unchecked _all_ the tables,
+ // because he/she does not want to see any of them, or the user did _check_ all of them.
+ CheckAll();
+ }
+ else
+ { // check the ones which are in the list
+ String aListBoxTable;
+ ::rtl::OUString aCatalog,aSchema,aName;
+
+ const ::rtl::OUString* pIncludeTable = aTableFilter.getConstArray();
+ for (sal_Int32 i=0; i<aTableFilter.getLength(); ++i, ++pIncludeTable)
+ {
+ if (xMeta.is())
+ qualifiedNameComponents(xMeta, pIncludeTable->getStr(), aCatalog, aSchema, aName);
+ else
+ aName = pIncludeTable->getStr();
+
+ SvLBoxEntry* pCatalog = m_aTablesList.GetEntryPosByName(aCatalog);
+ SvLBoxEntry* pSchema = m_aTablesList.GetEntryPosByName(aSchema,pCatalog);
+ SvLBoxEntry* pEntry = m_aTablesList.GetEntryPosByName(aName,pSchema);
+
+ if(pEntry)
+ m_aTablesList.SetCheckButtonState(pEntry, SV_BUTTON_CHECKED);
+ }
+ m_aTablesList.CheckButtons();
+ m_bCheckedAll = sal_False;
+ }
+
+ m_aIncludeAllTables.Enable(0 != m_aTablesList.GetEntryCount());
+}
+
+//------------------------------------------------------------------------
+void OTableSubscriptionPage::CheckAll( sal_Bool bCheck )
+{
+ SvButtonState eState = bCheck ? SV_BUTTON_CHECKED : SV_BUTTON_UNCHECKED;
+ SvLBoxEntry* pEntry = m_aTablesList.GetModel()->First();
+ while(pEntry)
+ {
+ m_aTablesList.SetCheckButtonState( pEntry, eState);
+ pEntry = m_aTablesList.GetModel()->Next(pEntry);
+ }
+
+ {
+ OLocalResourceAccess aStringResAccess(PAGE_TABLESUBSCRIPTION, RSC_TABPAGE);
+ m_aIncludeAllTables.SetText(bCheck ? ResId(STR_CHECK_NONE) : ResId(STR_CHECK_ALL));
+ }
+
+ m_bCheckedAll = bCheck;
+}
+
+//------------------------------------------------------------------------
+sal_Bool OTableSubscriptionPage::FillItemSet( SfxItemSet& _rCoreAttrs )
+{
+ /////////////////////////////////////////////////////////////////////////
+ // create the output string which contains all the table names
+ sal_uInt16 nEntryCount = 0;
+ sal_uInt16 nChecked = 0;
+
+ Sequence< ::rtl::OUString > aTableFilter;
+ static const ::rtl::OUString sDot(RTL_CONSTASCII_USTRINGPARAM("."));
+
+ ::rtl::OUString sComposedName;
+ SvLBoxEntry* pEntry = m_aTablesList.GetModel()->First();
+ while(pEntry)
+ {
+ if(m_aTablesList.GetCheckButtonState(pEntry) == SV_BUTTON_CHECKED && !m_aTablesList.GetModel()->HasChilds(pEntry))
+ { // checked and a leaf, which means it's no catalog, not schema, but a real table
+ ::rtl::OUString sCatalog;
+ if(m_aTablesList.GetModel()->HasParent(pEntry))
+ {
+ SvLBoxEntry* pSchema = m_aTablesList.GetModel()->GetParent(pEntry);
+ if(m_aTablesList.GetModel()->HasParent(pSchema))
+ {
+ SvLBoxEntry* pCatalog = m_aTablesList.GetModel()->GetParent(pSchema);
+ if (m_bCatalogAtStart)
+ {
+ sComposedName += m_aTablesList.GetEntryText( pCatalog );
+ sComposedName += m_sCatalogSeparator;
+ }
+ else
+ {
+ sCatalog += m_sCatalogSeparator;
+ sCatalog += m_aTablesList.GetEntryText( pCatalog );
+ }
+ }
+ sComposedName += m_aTablesList.GetEntryText( pSchema );
+ sComposedName += sDot;
+ }
+ sComposedName += m_aTablesList.GetEntryText( pEntry );
+ if (!m_bCatalogAtStart)
+ sComposedName += sCatalog;
+
+ // need some space
+ sal_Int32 nOldLen = aTableFilter.getLength();
+ aTableFilter.realloc(nOldLen + 1);
+ // add the new name
+ aTableFilter[nOldLen] = sComposedName;
+ // reset the composed name
+ sComposedName = String();
+
+ nChecked++;
+ }
+
+ if(!m_aTablesList.GetModel()->HasChilds(pEntry))
+ nEntryCount++;
+ pEntry = m_aTablesList.GetModel()->Next(pEntry);
+ }
+
+ if (nChecked == nEntryCount)
+ aTableFilter.realloc(0);
+ // TODO : have no possibility to distinguish between "all" and "none"
+
+ //////////////////////////////////////////////////////////////////////
+ // put this string into the set
+ _rCoreAttrs.Put( OStringListItem(DSID_TABLEFILTER, aTableFilter) );
+ return sal_True;
+}
+
+//------------------------------------------------------------------------
+IMPL_LINK( OTableSubscriptionPage, AddAllClickHdl, PushButton*, pButton )
+{
+ CheckAll( !m_bCheckedAll );
+ callModifiedHdl();
+ return 0L;
+}
+
+//.........................................................................
+} // namespace dbaui
+//.........................................................................
+
+/*************************************************************************
+ * history:
+ * $Log: not supported by cvs2svn $
+ *
+ * Revision 1.0 26.09.00 11:47:18 fs
+ ************************************************************************/
+
diff --git a/dbaccess/source/ui/dlg/adminpages.hxx b/dbaccess/source/ui/dlg/adminpages.hxx
new file mode 100644
index 000000000..001c185e4
--- /dev/null
+++ b/dbaccess/source/ui/dlg/adminpages.hxx
@@ -0,0 +1,402 @@
+/*************************************************************************
+ *
+ * $RCSfile: adminpages.hxx,v $
+ *
+ * $Revision: 1.1 $
+ *
+ * last change: $Author: fs $ $Date: 2000-10-05 10:04:22 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc..
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _DBAUI_ADMINPAGES_HXX_
+#define _DBAUI_ADMINPAGES_HXX_
+
+#ifndef _SFXTABDLG_HXX
+#include <sfx2/tabdlg.hxx>
+#endif
+#ifndef _SV_FIXED_HXX
+#include <vcl/fixed.hxx>
+#endif
+#ifndef _SV_LSTBOX_HXX
+#include <vcl/lstbox.hxx>
+#endif
+#ifndef _SV_EDIT_HXX
+#include <vcl/edit.hxx>
+#endif
+#ifndef _SV_BUTTON_HXX
+#include <vcl/imagebtn.hxx>
+#endif
+#ifndef _SV_GROUP_HXX
+#include <vcl/group.hxx>
+#endif
+#ifndef _SV_COMBOBOX_HXX
+#include <vcl/combobox.hxx>
+#endif
+#ifndef _DBAUI_DSNTYPES_HXX_
+#include "dsntypes.hxx"
+#endif
+#ifndef _DBAUI_CHARSETS_HXX_
+#include "charsets.hxx"
+#endif
+#ifndef _DBAUI_CURLEDIT_HXX_
+#include "curledit.hxx"
+#endif
+#ifndef _DBAUI_TABLETREE_HXX_
+#include "tabletree.hxx"
+#endif
+
+//.........................................................................
+namespace dbaui
+{
+//.........................................................................
+
+//=========================================================================
+//= OGenericAdministrationPage
+//=========================================================================
+class OGenericAdministrationPage : public SfxTabPage
+{
+protected:
+ Link m_aModifiedHandler; /// to be called if something on the page has been modified
+
+public:
+ OGenericAdministrationPage(Window* _pParent, const ResId& _rId, const SfxItemSet& _rAttrSet);
+
+ /// set a handler which gets called every time something on the page has been modified
+ void SetModifiedHandler(const Link& _rHandler) { m_aModifiedHandler = _rHandler; }
+
+protected:
+ /// default implementation: call FillItemSet, call checkItems,
+ virtual int DeactivatePage(SfxItemSet* pSet);
+ /// default implementation: call implInitControls with the given item set and _bSaveValue = sal_False
+ virtual void Reset(const SfxItemSet& _rCoreAttrs);
+ /// default implementation: call implInitControls with the given item set and _bSaveValue = sal_True
+ virtual void ActivatePage(const SfxItemSet& _rSet);
+
+protected:
+ void callModifiedHdl() const { if (m_aModifiedHandler.IsSet()) m_aModifiedHandler.Call((void*)this); }
+
+ /// called from within DeactivatePage. The page is allowed to be deactivated if this method returns sal_True
+ virtual sal_Bool checkItems(const SfxItemSet& _rSet) { return sal_True; }
+
+ /** called from within Reset and ActivatePage, use to initialize the controls with the items from the given set
+ @param _bSaveValue if set to sal_True, the implementation should call SaveValue on all relevant controls
+ */
+ virtual void implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue) { }
+
+ /// analyze the invalid and the readonly flag which may be present in the set
+ void getFlags(const SfxItemSet& _rSet, sal_Bool& _rValid, sal_Bool& _rReadonly);
+
+protected:
+ /** This link be used for controls where the tabpage does not need to take any special action when the control
+ is modified. The implementation just calls callModifiedHdl.
+ */
+ DECL_LINK(OnControlModified, Control*);
+};
+
+//=========================================================================
+//= OGeneralPage
+//=========================================================================
+/**
+*/
+class OGeneralPage : public OGenericAdministrationPage
+{
+ OGeneralPage(Window* pParent, const SfxItemSet& _rItems);
+
+private:
+ // dialog controls
+ FixedText m_aNameLabel;
+ Edit m_aName;
+ GroupBox m_aTypeBox;
+ FixedText m_aDatasourceTypeLabel;
+ ListBox m_aDatasourceType;
+ FixedText m_aConnectionLabel;
+ OConnectionURLEdit m_aConnection;
+ PushButton m_aBrowseConnection;
+
+ ODsnTypeCollection* m_pCollection; /// the DSN type collection instance
+ DECLARE_STL_MAP(DATASOURCE_TYPE, String, ::std::less< DATASOURCE_TYPE >, SelectionHistory);
+ DATASOURCE_TYPE m_eCurrentSelection; /// currently selected type
+ SelectionHistory m_aSelectionHistory; /// last selected ConnectURLs for all types
+
+ Link m_aTypeSelectHandler; /// to be called if a new type is selected
+
+public:
+ static SfxTabPage* Create(Window* pParent, const SfxItemSet& _rAttrSet);
+
+ /// 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
+ DATASOURCE_TYPE GetSelectedType() const { return m_eCurrentSelection; }
+
+protected:
+ // SfxTabPage overridables
+ virtual BOOL FillItemSet(SfxItemSet& _rCoreAttrs);
+ virtual void Reset(const SfxItemSet& _rCoreAttrs);
+
+ virtual void implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue);
+
+protected:
+ void onTypeSelected(DATASOURCE_TYPE _eType);
+ void initializeHistory();
+
+ DECL_LINK(OnDatasourceTypeSelected, ListBox*);
+ DECL_LINK(OnEditModified, Edit*);
+};
+
+
+//=========================================================================
+//= OCommonBehaviourTabPage
+//=========================================================================
+#define CBTP_NONE 0x0000
+#define CBTP_USE_UIDPWD 0x0001
+#define CBTP_USE_CHARSET 0x0002
+#define CBTP_USE_OPTIONS 0x0004
+
+/** eases the implementation of tab pages handling user/password and/or character
+ set and/or generic options input
+ <BR>
+ The controls to be used habe to be defined within the resource, as usual, but
+ this class does all the handling necessary.
+*/
+class OCommonBehaviourTabPage : public OGenericAdministrationPage
+{
+protected:
+ FixedText* m_pUserNameLabel;
+ Edit* m_pUserName;
+ FixedText* m_pPasswordLabel;
+ Edit* m_pPassword;
+ CheckBox* m_pAskIfEmptyPwd;
+
+ FixedText* m_pOptionsLabel;
+ Edit* m_pOptions;
+
+ FixedText* m_pCharsetLabel;
+ ListBox* m_pCharset;
+
+ OCharsetCollection m_aCharsets;
+
+ USHORT m_nControlFlags;
+
+public:
+ virtual BOOL FillItemSet (SfxItemSet& _rCoreAttrs);
+ virtual void implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue);
+
+protected:
+ OCommonBehaviourTabPage(Window* pParent, USHORT nResId, const SfxItemSet& _rCoreAttrs, USHORT nControlFlags);
+ // nControlFlags ist eine Kombination der CBTP_xxx-Konstanten
+ virtual ~OCommonBehaviourTabPage();
+
+private:
+ DECL_LINK(OnPasswordModified, Control*);
+};
+
+//========================================================================
+//= ODbaseDetailsPage
+//========================================================================
+class ODbaseDetailsPage : public OCommonBehaviourTabPage
+{
+public:
+ static SfxTabPage* Create( Window* pParent, const SfxItemSet& _rAttrSet );
+ virtual BOOL FillItemSet ( SfxItemSet& _rCoreAttrs );
+
+private:
+ GroupBox m_aFrame;
+ CheckBox m_aShowDeleted;
+ CheckBox m_aLongTableNames;
+ PushButton m_aIndexes;
+
+ String m_sDsn;
+
+protected:
+ ODbaseDetailsPage(Window* pParent, const SfxItemSet& _rCoreAttrs);
+ ~ODbaseDetailsPage();
+
+protected:
+ virtual void implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue);
+
+private:
+ DECL_LINK( OnButtonClicked, Button * );
+};
+
+//========================================================================
+//= OJdbcDetailsPage
+//========================================================================
+class OJdbcDetailsPage : public OCommonBehaviourTabPage
+{
+public:
+ static SfxTabPage* Create( Window* pParent, const SfxItemSet& _rAttrSet );
+ virtual BOOL FillItemSet ( SfxItemSet& _rCoreAttrs );
+
+private:
+ FixedText m_aDriverLabel;
+ Edit m_aDriver;
+ FixedText m_aJdbcUrlLabel;
+ OConnectionURLEdit m_aJdbcUrl;
+ FixedLine m_aSeparator1;
+
+ OJdbcDetailsPage( Window* pParent, const SfxItemSet& _rCoreAttrs );
+ ~OJdbcDetailsPage();
+
+ virtual void implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue);
+};
+
+//========================================================================
+//= OOdbcDetailsPage
+//========================================================================
+class OOdbcDetailsPage : public OCommonBehaviourTabPage
+{
+public:
+ static SfxTabPage* Create( Window* pParent, const SfxItemSet& _rAttrSet );
+
+private:
+ FixedLine m_aSeparator1;
+
+ OOdbcDetailsPage( Window* pParent, const SfxItemSet& _rCoreAttrs );
+};
+
+//========================================================================
+//= OAdabasDetailsPage
+//========================================================================
+class OAdabasDetailsPage : public OCommonBehaviourTabPage
+{
+public:
+ static SfxTabPage* Create( Window* pParent, const SfxItemSet& _rAttrSet );
+
+private:
+ FixedLine m_aSeparator1;
+
+ OAdabasDetailsPage( Window* pParent, const SfxItemSet& _rCoreAttrs );
+};
+
+//========================================================================
+//= OTextDetailsPage
+//========================================================================
+class OTextDetailsPage : public OCommonBehaviourTabPage
+{
+public:
+ static SfxTabPage* Create( Window* pParent, const SfxItemSet& _rAttrSet );
+ virtual BOOL FillItemSet ( SfxItemSet& _rCoreAttrs );
+
+private:
+ CheckBox m_aHeader;
+ FixedText m_aFieldSeparatorLabel;
+ ComboBox m_aFieldSeparator;
+ FixedText m_aTextSeparatorLabel;
+ ComboBox m_aTextSeparator;
+ FixedText m_aDecimalSeparatorLabel;
+ ComboBox m_aDecimalSeparator;
+ FixedText m_aThousandsSeparatorLabel;
+ ComboBox m_aThousandsSeparator;
+ FixedLine m_aSeparator1;
+ FixedText m_aExtensionLabel;
+ ComboBox m_aExtension;
+
+ String m_aFieldSeparatorList;
+ String m_aTextSeparatorList;
+
+ OTextDetailsPage( Window* pParent, const SfxItemSet& _rCoreAttrs );
+ ~OTextDetailsPage();
+
+private:
+ USHORT GetSeparator( const ComboBox& rBox, const String& rList );
+ void SetSeparator( ComboBox& rBox, const String& rList, USHORT nVal );
+
+ virtual void implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue);
+ virtual sal_Bool checkItems(const SfxItemSet& _rSet);
+};
+
+//========================================================================
+//= OTableSubscriptionPage
+//========================================================================
+class OTableSubscriptionPage : public OGenericAdministrationPage
+{
+private:
+ OTableTreeListBox m_aTablesList;
+ FixedText m_aTablesListLabel;
+ PushButton m_aIncludeAllTables;
+ sal_Bool m_bCheckedAll : 1;
+ sal_Bool m_bCatalogAtStart : 1;
+ ::rtl::OUString m_sCatalogSeparator;
+
+public:
+ static SfxTabPage* Create( Window* _pParent, const SfxItemSet& _rAttrSet);
+ virtual BOOL FillItemSet(SfxItemSet& _rCoreAttrs);
+
+ void setServiceFactory(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > _rxORB)
+ { m_aTablesList.setServiceFactory(_rxORB); }
+
+private:
+ OTableSubscriptionPage( Window* pParent, const SfxItemSet& _rCoreAttrs );
+ ~OTableSubscriptionPage();
+
+ void CheckAll( BOOL bCheck=TRUE );
+ DECL_LINK( AddAllClickHdl, PushButton* );
+ // plausibility check
+
+ virtual void implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue);
+};
+
+//.........................................................................
+} // namespace dbaui
+//.........................................................................
+
+#endif // _DBAUI_ADMINPAGES_HXX_
+
+/*************************************************************************
+ * history:
+ * $Log: not supported by cvs2svn $
+ *
+ * Revision 1.0 26.09.00 11:46:15 fs
+ ************************************************************************/
+
diff --git a/dbaccess/source/ui/dlg/dbadmin.cxx b/dbaccess/source/ui/dlg/dbadmin.cxx
new file mode 100644
index 000000000..3769cd33c
--- /dev/null
+++ b/dbaccess/source/ui/dlg/dbadmin.cxx
@@ -0,0 +1,540 @@
+/*************************************************************************
+ *
+ * $RCSfile: dbadmin.cxx,v $
+ *
+ * $Revision: 1.1 $
+ *
+ * last change: $Author: fs $ $Date: 2000-10-05 10:04:31 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc..
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _DBAUI_DBADMIN_HXX_
+#include "dbadmin.hxx"
+#endif
+#ifndef _DBAUI_DBADMIN_HRC_
+#include "dbadmin.hrc"
+#endif
+#ifndef _DBU_RESOURCE_HRC_
+#include "dbu_resource.hrc"
+#endif
+#ifndef _DBAUI_MODULE_DBU_HXX_
+#include "moduledbu.hxx"
+#endif
+#ifndef _DBAUI_DATASOURCEITEMS_HXX_
+#include "dsitems.hxx"
+#endif
+#ifndef _SFXSTRITEM_HXX
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SFXINTITEM_HXX
+#include <svtools/intitem.hxx>
+#endif
+#ifndef _VCL_STDTEXT_HXX
+#include <vcl/stdtext.hxx>
+#endif
+#ifndef _SV_MSGBOX_HXX
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _COM_SUN_STAR_UNO_XNAMINGSERVICE_HPP_
+#include <com/sun/star/uno/XNamingService.hpp>
+#endif
+#ifndef _DBASHARED_STRINGCONSTANTS_HRC_
+#include "stringconstants.hrc"
+#endif
+#ifndef _CPPUHELPER_EXTRACT_HXX_
+#include <cppuhelper/extract.hxx>
+#endif
+#ifndef _DBAUI_ADMINPAGES_HXX_
+#include "adminpages.hxx"
+#endif
+#ifndef _DBAUI_LOCALRESACCESS_HXX_
+#include "localresaccess.hxx"
+#endif
+#ifndef _DBAUI_STRINGLISTITEM_HXX_
+#include "stringlistitem.hxx"
+#endif
+
+#define MODIFIED_MARKER " (*)"
+
+//.........................................................................
+namespace dbaui
+{
+//.........................................................................
+
+using namespace dbaccess;
+using namespace com::sun::star::uno;
+using namespace com::sun::star::lang;
+using namespace com::sun::star::beans;
+using namespace com::sun::star::container;
+
+//=========================================================================
+//= ODbAdminDialog
+//=========================================================================
+//-------------------------------------------------------------------------
+ODbAdminDialog::ODbAdminDialog(Window* _pParent, SfxItemSet* _pItems, const Reference< XMultiServiceFactory >& _rxORB)
+ :SfxTabDialog(_pParent, ModuleRes(DLG_DATABASE_ADMINISTRATION), _pItems)
+ ,m_aSelector(this, ResId(WND_DATASOURCESELECTOR))
+ ,m_xORB(_rxORB)
+{
+ // add the initial tab pages
+ AddTabPage(PAGE_GENERAL, String(ResId(STR_PAGETITLE_GENERAL)), OGeneralPage::Create, NULL);
+ AddTabPage(PAGE_TABLESUBSCRIPTION, String(ResId(STR_PAGETITLE_TABLESUBSCRIPTION)), OTableSubscriptionPage::Create, NULL);
+
+ // no local resources needed anymore
+ FreeResource();
+
+ // register the view window
+ SetViewWindow(&m_aSelector);
+ SetViewAlign(WINDOWALIGN_LEFT);
+
+ // do some knittings
+ m_aSelector.m_aDatasourceList.SetSelectHdl(LINK(this, ODbAdminDialog, OnDatasourceSelected));
+
+ // concretize some items in our set which are independent of a concret selected datasource
+// GetInputSetImpl()->Put(DbuTypeCollectionItem(DSID_TYPECOLLECTION, m_pCollection));
+
+ // create the DatabaseContext service
+ DBG_ASSERT(m_xORB.is(), "ODbAdminDialog::ODbAdminDialog : need a service factory !");
+ try
+ {
+ m_xDatabaseContext = Reference< XNameAccess >(m_xORB->createInstance(SERVICE_SDB_DATABASECONTEXT), UNO_QUERY);
+ }
+ catch(Exception&)
+ {
+ }
+
+ ::rtl::OUString sInitialSelection; // will be the initial selection
+
+ if (!m_xDatabaseContext.is())
+ {
+ ShowServiceNotAvailableError(_pParent, String(SERVICE_SDB_DATABASECONTEXT), sal_True);
+ }
+ else
+ {
+ // fill the listbox with the names of the registered datasources
+ Sequence< ::rtl::OUString > aDatasources = m_xDatabaseContext->getElementNames();
+ const ::rtl::OUString* pDatasources = aDatasources.getConstArray();
+ for (sal_Int32 i=0; i<aDatasources.getLength(); ++i, ++pDatasources)
+ {
+ sal_Int16 nPos = m_aSelector.m_aDatasourceList.InsertEntry(*pDatasources);
+ m_aSelector.m_aDatasourceList.SetEntryData(nPos, reinterpret_cast<void*>(sal_False));
+ // the entry data is the modified flags
+ }
+
+ if (!aDatasources.getLength())
+ {
+ WarningBox(_pParent, ModuleRes(ERR_NOREGISTEREDDATASOURCES)).Execute();
+ }
+ else
+ sInitialSelection = aDatasources[0];
+ }
+ // TODO : get the initial selection from the configuration
+
+ implSelectDatasource(sInitialSelection);
+}
+
+//-------------------------------------------------------------------------
+ODbAdminDialog::~ODbAdminDialog()
+{
+ SetInputSet(NULL);
+ DELETEZ(pExampleSet);
+}
+
+//-------------------------------------------------------------------------
+Sequence< PropertyValue > ODbAdminDialog::toDriverParams(const SfxItemSet& _rSet)
+{
+ // TODO
+ return Sequence< PropertyValue >();
+}
+
+//-------------------------------------------------------------------------
+void ODbAdminDialog::toDialogItems(const Sequence< PropertyValue >& _rProperties, SfxItemSet& _rOutSet)
+{
+ // TODO
+}
+
+//-------------------------------------------------------------------------
+void ODbAdminDialog::PageCreated(USHORT _nId, SfxTabPage& _rPage)
+{
+ // register ourself as modified listener
+ static_cast<OGenericAdministrationPage&>(_rPage).SetModifiedHandler(LINK(this, ODbAdminDialog, OnDatasourceModifed));
+
+ // some registrations which depend on the type of the page
+ switch (_nId)
+ {
+ case PAGE_GENERAL:
+ static_cast<OGeneralPage&>(_rPage).SetTypeSelectHandler(LINK(this, ODbAdminDialog, OnTypeSelected));
+ break;
+ case PAGE_TABLESUBSCRIPTION:
+ static_cast<OTableSubscriptionPage&>(_rPage).setServiceFactory(m_xORB);
+ break;
+ }
+
+ SfxTabDialog::PageCreated(_nId, _rPage);
+}
+
+//-------------------------------------------------------------------------
+SfxItemSet* ODbAdminDialog::createItemSet(SfxItemSet*& _rpSet, SfxItemPool*& _rpPool, SfxPoolItem**& _rppDefaults, ODsnTypeCollection* _pTypeCollection)
+{
+ // just to be sure ....
+ _rpSet = NULL;
+ _rpPool = NULL;
+ _rppDefaults = NULL;
+
+ // create and initialize the defaults
+ _rppDefaults = new SfxPoolItem*[DSID_LAST_ITEM_ID - DSID_FIRST_ITEM_ID + 1];
+ SfxPoolItem** pCounter = _rppDefaults; // want to modify this without affecting the out param _rppDefaults
+ *pCounter++ = new SfxStringItem(DSID_NAME, String());
+ *pCounter++ = new SfxStringItem(DSID_CONNECTURL, String());
+ *pCounter++ = new OStringListItem(DSID_TABLEFILTER, Sequence< ::rtl::OUString >());
+ *pCounter++ = new DbuTypeCollectionItem(DSID_TYPECOLLECTION, _pTypeCollection);
+ *pCounter++ = new SfxBoolItem(DSID_INVALID_SELECTION, sal_False);
+ *pCounter++ = new SfxBoolItem(DSID_READONLY, sal_False);
+ *pCounter++ = new SfxStringItem(DSID_USER, String());
+ *pCounter++ = new SfxStringItem(DSID_PASSWORD, String());
+ *pCounter++ = new SfxStringItem(DSID_ADDITIONALOPTIONS, String());
+ *pCounter++ = new SfxStringItem(DSID_CHARSET, String());
+ *pCounter++ = new SfxBoolItem(DSID_ASKFOREMPTYPWD, sal_False);
+ *pCounter++ = new SfxBoolItem(DSID_SHOWDELETEDROWS, sal_False);
+ *pCounter++ = new SfxBoolItem(DSID_ALLOWLONGTABLENAMES, sal_False);
+ *pCounter++ = new SfxStringItem(DSID_JDBCDRIVERCLASS, String());
+ *pCounter++ = new SfxUInt16Item(DSID_FIELDDELIMITER, ';');
+ *pCounter++ = new SfxUInt16Item(DSID_TEXTDELIMITER, '"');
+ *pCounter++ = new SfxUInt16Item(DSID_DECIMALDELIMITER, '.');
+ *pCounter++ = new SfxUInt16Item(DSID_THOUSANDSDELIMITER, ',');
+ *pCounter++ = new SfxStringItem(DSID_TEXTFILEEXTENSION, String::CreateFromAscii("txt"));
+ *pCounter++ = new SfxBoolItem(DSID_TEXTFILEHEADER, sal_True);
+
+ // create the pool
+ static SfxItemInfo __READONLY_DATA aItemInfos[DSID_LAST_ITEM_ID - DSID_FIRST_ITEM_ID + 1] =
+ {
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ };
+
+ _rpPool = new SfxItemPool(String::CreateFromAscii("DSAItemPool"), DSID_FIRST_ITEM_ID, DSID_LAST_ITEM_ID,
+ aItemInfos, _rppDefaults);
+ _rpPool->FreezeIdRanges();
+
+ // and, finally, the set
+ _rpSet = new SfxItemSet(*_rpPool, sal_True);
+
+ return _rpSet;
+}
+
+//-------------------------------------------------------------------------
+void ODbAdminDialog::destroyItemSet(SfxItemSet*& _rpSet, SfxItemPool*& _rpPool, SfxPoolItem**& _rppDefaults)
+{
+ // _first_ delete the set (refering the pool)
+ if (_rpSet)
+ {
+ delete _rpSet;
+ _rpSet = NULL;
+ }
+
+ // delete the pool
+ if (_rpPool)
+ {
+ _rpPool->ReleaseDefaults(sal_True);
+ // the "true" means delete the items, too
+ delete _rpPool;
+ _rpPool = NULL;
+ }
+
+ // reset the defaults ptr
+ _rppDefaults = NULL;
+ // no need to explicitly delete the defaults, this has been done by the ReleaseDefaults
+}
+
+//-------------------------------------------------------------------------
+IMPL_LINK(ODbAdminDialog, OnDatasourceSelected, ListBox*, _pBox)
+{
+ sal_Int16 nSelected = _pBox->GetSelectEntryPos();
+ sal_Bool bModified = reinterpret_cast<sal_Bool>(_pBox->GetEntryData(nSelected));
+
+ // if the entry is modified, we have to remove the modified marker to get the correct name
+ String sSelected = _pBox->GetEntry(nSelected);
+
+ if (bModified)
+ implSelectDatasource(sSelected.Copy(0, sSelected.Len() - (sizeof(MODIFIED_MARKER) - 1)));
+ else
+ implSelectDatasource(sSelected);
+ return 0L;
+}
+
+//-------------------------------------------------------------------------
+IMPL_LINK(ODbAdminDialog, OnDatasourceModifed, SfxTabPage*, _pTabPage)
+{
+ // check if the currently selected entry is already marked as modified
+ sal_Int16 nSelected = m_aSelector.m_aDatasourceList.GetSelectEntryPos();
+ sal_Bool bModified = reinterpret_cast<sal_Bool>(m_aSelector.m_aDatasourceList.GetEntryData(nSelected));
+ if (bModified)
+ // yes -> nothing to do
+ return 0L;
+
+ // no -> append the modified marker to the text
+ // (unfortunally the ListBox does not have an operation such as SetEntryText ...)
+ m_aSelector.m_aDatasourceList.SetUpdateMode(sal_False);
+ String sText = m_aSelector.m_aDatasourceList.GetEntry(nSelected);
+ m_aSelector.m_aDatasourceList.RemoveEntry(nSelected);
+ sText.AppendAscii(MODIFIED_MARKER);
+ nSelected = m_aSelector.m_aDatasourceList.InsertEntry(sText, nSelected);
+ m_aSelector.m_aDatasourceList.SelectEntryPos (nSelected, sal_True);
+ m_aSelector.m_aDatasourceList.SetUpdateMode(sal_True);
+
+ // mark it as modified
+ m_aSelector.m_aDatasourceList.SetEntryData(nSelected, reinterpret_cast<void*>(sal_True));
+
+ return 0L;
+}
+
+//-------------------------------------------------------------------------
+IMPL_LINK(ODbAdminDialog, OnTypeSelected, OGeneralPage*, _pTabPage)
+{
+ // remove all current detail pages
+ while (m_aCurrentDetailPages.size())
+ {
+ RemoveTabPage(m_aCurrentDetailPages.top());
+ m_aCurrentDetailPages.pop();
+ }
+
+ // open our own resource block, as the page titles are strings local to this block
+ OLocalResourceAccess aDummy(DLG_DATABASE_ADMINISTRATION, RSC_TABDIALOG);
+
+ // and insert the new ones
+ switch (_pTabPage->GetSelectedType())
+ {
+ case DST_DBASE:
+ AddTabPage(PAGE_DBASE, String(ResId(STR_PAGETITLE_DBASE)), ODbaseDetailsPage::Create, 0, sal_False, 1);
+ m_aCurrentDetailPages.push(PAGE_DBASE);
+ break;
+ case DST_JDBC:
+ AddTabPage(PAGE_JDBC, String(ResId(STR_PAGETITLE_JDBC)), OJdbcDetailsPage::Create, 0, sal_False, 1);
+ m_aCurrentDetailPages.push(PAGE_JDBC);
+ break;
+ case DST_TEXT:
+ AddTabPage(PAGE_TEXT, String(ResId(STR_PAGETITLE_TEXT)), OTextDetailsPage::Create, 0, sal_False, 1);
+ m_aCurrentDetailPages.push(PAGE_TEXT);
+ break;
+ case DST_ODBC:
+ AddTabPage(PAGE_ODBC, String(ResId(STR_PAGETITLE_ODBC)), OOdbcDetailsPage::Create, 0, sal_False, 1);
+ m_aCurrentDetailPages.push(PAGE_ODBC);
+ break;
+ case DST_ADABAS:
+ AddTabPage(PAGE_ADABAS, String(ResId(STR_PAGETITLE_ADABAS)), OAdabasDetailsPage::Create, 0, sal_False, 1);
+ m_aCurrentDetailPages.push(PAGE_ADABAS);
+ break;
+ }
+
+ return 0L;
+}
+
+//-------------------------------------------------------------------------
+void ODbAdminDialog::implSelectDatasource(const ::rtl::OUString& _rRegisteredName)
+{
+ DBG_ASSERT(m_xDatabaseContext.is(), "ODbAdminDialog::implSelectDatasource : have no database context!");
+ Reference< XPropertySet > xDatasource;
+ try
+ {
+ if (m_xDatabaseContext.is() && _rRegisteredName.getLength())
+ ::cppu::extractInterface(xDatasource, m_xDatabaseContext->getByName(_rRegisteredName));
+ }
+ catch(NoSuchElementException&)
+ {
+ DBG_ERROR("ODbAdminDialog::implSelectDatasource : did not find the element with the given name!");
+ }
+ catch(WrappedTargetException&)
+ {
+ DBG_ERROR("ODbAdminDialog::implSelectDatasource : caught a WrappedTargetException!");
+ }
+ if (!xDatasource.is())
+ {
+ m_aSelector.m_aDatasourceList.SelectEntryPos(m_aSelector.m_aDatasourceList.GetSelectEntryPos(), sal_False);
+ }
+ else
+ m_aSelector.m_aDatasourceList.SelectEntry(_rRegisteredName);
+
+ // the selection is valid if and only if we have a datasource now
+ GetInputSetImpl()->Put(SfxBoolItem(DSID_INVALID_SELECTION, !xDatasource.is()));
+ // (sal_False tells the tab pages to disable and reset all their controls, which is different
+ // from "just set them to readonly")
+
+ // reset the pages
+ resetPages(xDatasource);
+}
+
+//-------------------------------------------------------------------------
+void ODbAdminDialog::resetPages(const Reference< XPropertySet >& _rxDatasource)
+{
+ // remove all tab pages (except the general one)
+ // remove all current detail pages
+ while (m_aCurrentDetailPages.size())
+ {
+ RemoveTabPage(m_aCurrentDetailPages.top());
+ m_aCurrentDetailPages.pop();
+ }
+ // remove the table/query tab pages
+ RemoveTabPage(PAGE_TABLESUBSCRIPTION);
+
+ // extract all relevant data from the property set
+ ::rtl::OUString sNewConnectURL, sName;
+ try
+ {
+ if (_rxDatasource.is())
+ {
+ _rxDatasource->getPropertyValue(PROPERTY_URL) >>= sNewConnectURL;
+ _rxDatasource->getPropertyValue(PROPERTY_NAME) >>= sName;
+ }
+ }
+ catch(Exception&)
+ {
+ DBG_ERROR("ODbAdminDialog::toDialogItems : could not extract all the relevant datasource properties!");
+ }
+
+ GetInputSetImpl()->Put(SfxStringItem(DSID_CONNECTURL, sNewConnectURL));
+ GetInputSetImpl()->Put(SfxStringItem(DSID_NAME, sName));
+
+ // propagate this set as our new input set and reset the example set
+ SetInputSet(GetInputSetImpl());
+ delete pExampleSet;
+ pExampleSet = new SfxItemSet(*GetInputSetImpl());
+
+ // and again, add the non-details tab pages
+ {
+ OLocalResourceAccess aDummy(DLG_DATABASE_ADMINISTRATION, RSC_TABDIALOG);
+ AddTabPage(PAGE_TABLESUBSCRIPTION, String(ResId(STR_PAGETITLE_TABLESUBSCRIPTION)), OTableSubscriptionPage::Create, NULL);
+ }
+
+ // propagate the new data to the general tab page the general tab page
+ SfxTabPage* pGeneralPage = GetTabPage(PAGE_GENERAL);
+ if (pGeneralPage)
+ pGeneralPage->Reset(*GetInputSetImpl());
+ // if this is NULL, the page has not been created yet, which means we're called before the
+ // dialog was displayed (probably from inside the ctor)
+}
+
+//=========================================================================
+//= ODatasourceSelector
+//=========================================================================
+//-------------------------------------------------------------------------
+ODatasourceSelector::ODatasourceSelector(Window* _pParent, const ResId& _rResId)
+ :Window(_pParent, _rResId)
+ ,m_aBorderWindow (this, ResId(WND_SELECTORBORDER))
+ ,m_aTitle (this, ResId(FT_SELECTOR_TITLE))
+ ,m_aDatasourceList (this, ResId(LB_DATASOURCES))
+{
+ FreeResource();
+
+ m_aDatasourceList.SetZOrder(NULL, WINDOW_ZORDER_FIRST);
+
+ m_aDatasourceList.EnableClipSiblings(sal_True);
+ m_aBorderWindow.EnableClipSiblings(sal_True);
+}
+
+//-------------------------------------------------------------------------
+ODatasourceSelector::~ODatasourceSelector()
+{
+}
+
+//-------------------------------------------------------------------------
+void ODatasourceSelector::Resize()
+{
+ Window::Resize();
+ // set the border window to the same size weself have
+ Size aSize = GetSizePixel();
+ m_aBorderWindow.SetSizePixel(aSize);
+
+ // resize the text field
+ sal_Int32 nTextHeight = LogicToPixel(Size(0, GetTextHeight())).Height();
+ nTextHeight += 4; // leave a margin
+ m_aTitle.SetPosPixel(Point(2, 2 + 2));
+ m_aTitle.SetSizePixel(Size(aSize.Width() - 4, nTextHeight));
+
+ // resize the listbox accordingly
+ m_aDatasourceList.SetPosPixel(Point(2, 4 + nTextHeight));
+ m_aDatasourceList.SetSizePixel(Size(aSize.Width() - 4, aSize.Height() - 4 - nTextHeight));
+}
+
+//.........................................................................
+} // namespace dbaui
+//.........................................................................
+
+/*************************************************************************
+ * history:
+ * $Log: not supported by cvs2svn $
+ *
+ * Revision 1.0 20.09.00 10:55:58 fs
+ ************************************************************************/
+
diff --git a/dbaccess/source/ui/dlg/dbadmin.hrc b/dbaccess/source/ui/dlg/dbadmin.hrc
new file mode 100644
index 000000000..91a07bdf7
--- /dev/null
+++ b/dbaccess/source/ui/dlg/dbadmin.hrc
@@ -0,0 +1,146 @@
+/*************************************************************************
+ *
+ * $RCSfile: dbadmin.hrc,v $
+ *
+ * $Revision: 1.1 $
+ *
+ * last change: $Author: fs $ $Date: 2000-10-05 10:04:46 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc..
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _DBAUI_DBADMIN_HRC_
+#define _DBAUI_DBADMIN_HRC_
+
+//========================================================================
+// control ids
+
+#define FT_DATATYPE 1
+#define FT_CONNECTURL 2
+#define FT_SELECTOR_TITLE 3
+#define FT_DATASOURCENAME 4
+#define FT_USERNAME 5
+#define FT_PASSWORD 6
+#define FT_OPTIONS 7
+#define FT_CHARSET 8
+#define FT_JDBCDRIVERCLASS 9
+#define FT_FIELDSEPARATOR 10
+#define FT_TEXTSEPARATOR 11
+#define FT_DECIMALSEPARATOR 12
+#define FT_THOUSANDSSEPARATOR 13
+#define FT_EXTENSION 14
+#define FT_TABLESUBSCRIPTION 15
+
+#define LB_DATATYPE 1
+#define LB_DATASOURCES 2
+#define LB_CHARSET 3
+
+#define ET_CONNECTURL 1
+#define ET_DATASOURCENAME 2
+#define ET_USERNAME 3
+#define ET_PASSWORD 4
+#define ET_OPTIONS 5
+#define ET_JDBCDRIVERCLASS 6
+
+#define PB_BROWSECONNECTION 1
+#define PB_INDICIES 2
+#define PB_ADDALLTABLES 3
+
+#define GB_CONNECTION 1
+#define GB_DBASE_MAIN 2
+
+#define CB_ASK_WHEN_EMPTY_PWD 1
+#define CB_SHOWDELETEDROWS 2
+#define CB_ALLOWLONGNAMES 3
+#define CB_HEADER 4
+
+#define FL_SEPARATOR1 1
+
+#define CM_FIELDSEPARATOR 1
+#define CM_TEXTSEPARATOR 2
+#define CM_DECIMALSEPARATOR 3
+#define CM_THOUSANDSSEPARATOR 4
+#define CM_EXTENSION 5
+
+#define WND_DATASOURCESELECTOR 1
+#define WND_SELECTORBORDER 2
+
+#define CTL_TABLESUBSCRIPTION 1
+
+//========================================================================
+// string ids (relative to other resources, that's why not necessarily unique)
+
+#define STR_PAGETITLE_GENERAL 1
+#define STR_PAGETITLE_DBASE 2
+#define STR_PAGETITLE_JDBC 3
+#define STR_PAGETITLE_ODBC 4
+#define STR_PAGETITLE_ADABAS 5
+#define STR_PAGETITLE_TEXT 6
+#define STR_PAGETITLE_TABLESUBSCRIPTION 7
+#define STR_FIELDSEPARATORLIST 8
+#define STR_TEXTSEPARATORLIST 9
+#define STR_DELIMITER_MISSING 10
+#define STR_DELIMITER_MUST_DIFFER 11
+#define STR_NO_WILDCARDS 12
+#define STR_CHECK_ALL 13
+#define STR_CHECK_NONE 14
+
+#endif // _DBAUI_DBADMIN_HRC_
+
+/*************************************************************************
+ * history:
+ * $Log: not supported by cvs2svn $
+ *
+ * Revision 1.0 20.09.00 11:42:05 fs
+ ************************************************************************/
+
diff --git a/dbaccess/source/ui/dlg/dbadmin.src b/dbaccess/source/ui/dlg/dbadmin.src
new file mode 100644
index 000000000..2f0ccae0d
--- /dev/null
+++ b/dbaccess/source/ui/dlg/dbadmin.src
@@ -0,0 +1,1435 @@
+/*************************************************************************
+ *
+ * $RCSfile: dbadmin.src,v $
+ *
+ * $Revision: 1.1 $
+ *
+ * last change: $Author: fs $ $Date: 2000-10-05 10:05:05 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc..
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _DBU_RESOURCE_HRC_
+#include "dbu_resource.hrc"
+#endif
+
+#ifndef _DBAUI_DBADMIN_HRC_
+#include "dbadmin.hrc"
+#endif
+
+//-------------------------------------------------------------------------
+TabDialog DLG_DATABASE_ADMINISTRATION
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ Hide = TRUE;
+
+ Window WND_DATASOURCESELECTOR
+ {
+ Pos = MAP_APPFONT ( 0, 0 ) ;
+ Size = MAP_APPFONT ( 80, 200 ) ;
+ ClipChildren = TRUE;
+
+ // the following window is just to have a border. In a tab dialog, we can't use a window with border
+ // directly as view window
+ Window WND_SELECTORBORDER
+ {
+ Pos = MAP_APPFONT ( 0, 0 ) ;
+ Size = MAP_APPFONT ( 80, 200 ) ;
+ Border = TRUE;
+ };
+ FixedText FT_SELECTOR_TITLE
+ {
+ Pos = MAP_APPFONT ( 2, 2 ) ;
+ Size = MAP_APPFONT ( 76, 20 ) ;
+ Center = TRUE;
+
+ Text = "Datenquellen";
+ Text [ english ] = "Data sources";
+ };
+ ListBox LB_DATASOURCES
+ {
+ SVLook = TRUE;
+ Pos = MAP_APPFONT ( 2, 22 ) ;
+ Size = MAP_APPFONT ( 76, 196 ) ;
+ };
+ };
+
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ };
+
+ Text = "Datenquellen verwalten" ;
+ Text [ english ] = "Datasource administration" ;
+ Text [ english_us ] = "Datasource administration" ;
+
+ //.........................................................................
+ String STR_PAGETITLE_GENERAL
+ {
+ Text = "Allgemein" ;
+ Text [ english ] = "General" ;
+ Text [ norwegian ] = "Generell" ;
+ Text [ italian ] = "Generale" ;
+ Text [ portuguese_brazilian ] = "Geral" ;
+ Text [ portuguese ] = "Geral" ;
+ Text [ finnish ] = "Yleiset" ;
+ Text [ danish ] = "Generelt" ;
+ Text [ french ] = "Gnral" ;
+ Text [ swedish ] = "Allmnt" ;
+ Text [ dutch ] = "Algemeen" ;
+ Text [ spanish ] = "General" ;
+ Text [ english_us ] = "General" ;
+ Text[ chinese_simplified ] = "";
+ Text[ russian ] = "";
+ Text[ polish ] = "Oglne";
+ Text[ japanese ] = "S";
+ Text[ chinese_traditional ] = "@";
+ Text[ arabic ] = "";
+ Text[ greek ] = "";
+ Text[ korean ] = "Ϲ";
+ Text[ turkish ] = "Genel";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PAGETITLE_DBASE
+ {
+ Text = "dBase" ;
+ Text [ ENGLISH ] = "dBase" ;
+ Text [ norwegian ] = "dBase" ;
+ Text [ italian ] = "dBase" ;
+ Text [ portuguese_brazilian ] = "dBase" ;
+ Text [ portuguese ] = "dBase" ;
+ Text [ finnish ] = "dBase" ;
+ Text [ danish ] = "dBase" ;
+ Text [ french ] = "dBase" ;
+ Text [ swedish ] = "dBase" ;
+ Text [ dutch ] = "dBase" ;
+ Text [ spanish ] = "dBase" ;
+ Text [ english_us ] = "dBase" ;
+ Text[ chinese_simplified ] = "dBase";
+ Text[ russian ] = "dBase";
+ Text[ polish ] = "dBase";
+ Text[ japanese ] = "dBase";
+ Text[ chinese_traditional ] = "dBase";
+ Text[ arabic ] = "dBase";
+ Text[ greek ] = "dBase";
+ Text[ korean ] = "dBase";
+ Text[ turkish ] = "dBase";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PAGETITLE_JDBC
+ {
+ Text = "JDBC" ;
+ Text [ ENGLISH ] = "JDBC" ;
+ Text [ norwegian ] = "JDBC" ;
+ Text [ italian ] = "JDBC" ;
+ Text [ portuguese_brazilian ] = "JDBC" ;
+ Text [ portuguese ] = "JDBC" ;
+ Text [ finnish ] = "JDBC" ;
+ Text [ danish ] = "JDBC" ;
+ Text [ french ] = "JDBC" ;
+ Text [ swedish ] = "JDBC" ;
+ Text [ dutch ] = "JDBC" ;
+ Text [ spanish ] = "JDBC" ;
+ Text [ english_us ] = "JDBC" ;
+ Text[ chinese_simplified ] = "JDBC";
+ Text[ russian ] = "JDBC";
+ Text[ polish ] = "JDBC";
+ Text[ japanese ] = "JDBC";
+ Text[ chinese_traditional ] = "JDBC";
+ Text[ arabic ] = "JDBC";
+ Text[ greek ] = "JDBC";
+ Text[ korean ] = "JDBC";
+ Text[ turkish ] = "JDBC";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PAGETITLE_ODBC
+ {
+ Text = "ODBC" ;
+ Text [ ENGLISH ] = "ODBC" ;
+ Text [ norwegian ] = "ODBC" ;
+ Text [ italian ] = "ODBC" ;
+ Text [ portuguese_brazilian ] = "ODBC" ;
+ Text [ portuguese ] = "ODBC" ;
+ Text [ finnish ] = "ODBC" ;
+ Text [ danish ] = "ODBC" ;
+ Text [ french ] = "ODBC" ;
+ Text [ swedish ] = "ODBC" ;
+ Text [ dutch ] = "ODBC" ;
+ Text [ spanish ] = "ODBC" ;
+ Text [ english_us ] = "ODBC" ;
+ Text[ chinese_simplified ] = "ODBC";
+ Text[ russian ] = "ODBC";
+ Text[ polish ] = "ODBC";
+ Text[ japanese ] = "ODBC";
+ Text[ chinese_traditional ] = "ODBC";
+ Text[ arabic ] = "ODBC";
+ Text[ greek ] = "ODBC";
+ Text[ korean ] = "ODBC";
+ Text[ turkish ] = "ODBC";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PAGETITLE_ADABAS
+ {
+ Text = "Adabas D" ;
+ Text[ENGLISH] = "Adabas D" ;
+ Text[ english_us ] = "Adabas D";
+ Text[ portuguese ] = "Adabas D";
+ Text[ russian ] = "Adabas D";
+ Text[ greek ] = "Adabas D";
+ Text[ dutch ] = "Adabas D";
+ Text[ french ] = "Adabas D";
+ Text[ spanish ] = "Adabas D";
+ Text[ italian ] = "Adabas D";
+ Text[ danish ] = "Adabas D";
+ Text[ swedish ] = "Adabas D";
+ Text[ polish ] = "Adabas D";
+ Text[ portuguese_brazilian ] = "Adabas D";
+ Text[ japanese ] = "Adabas D";
+ Text[ korean ] = "Adabas D";
+ Text[ chinese_simplified ] = "Adabas D";
+ Text[ chinese_traditional ] = "Adabas D";
+ Text[ arabic ] = "Adabas D";
+ Text[ turkish ] = "Adabas D";
+ };
+ String STR_PAGETITLE_TEXT
+ {
+ Text = "Text" ;
+ Text [ ENGLISH ] = "Text" ;
+ Text [ norwegian ] = "Text" ;
+ Text [ italian ] = "Testo" ;
+ Text [ portuguese_brazilian ] = "Texto" ;
+ Text [ portuguese ] = "Texto" ;
+ Text [ finnish ] = "Teksti" ;
+ Text [ danish ] = "Tekst" ;
+ Text [ french ] = "Texte" ;
+ Text [ swedish ] = "Text" ;
+ Text [ dutch ] = "Tekst" ;
+ Text [ spanish ] = "Texto" ;
+ Text [ english_us ] = "Text" ;
+ Text[ chinese_simplified ] = "";
+ Text[ russian ] = "";
+ Text[ polish ] = "Tekst";
+ Text[ japanese ] = "÷";
+ Text[ chinese_traditional ] = "r";
+ Text[ arabic ] = "";
+ Text[ greek ] = "";
+ Text[ korean ] = "ؽƮ";
+ Text[ turkish ] = "Metin";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PAGETITLE_TABLESUBSCRIPTION
+ {
+ Text = "Tabellen" ;
+ Text [ ENGLISH ] = "Tables" ;
+ Text [ portuguese ] = "Tabelas" ;
+ Text [ english_us ] = "Tables" ;
+ Text [ portuguese_brazilian ] = "Tabellen" ;
+ Text [ swedish ] = "Tabeller" ;
+ Text [ danish ] = "Tabeller" ;
+ Text [ italian ] = "Tabelle" ;
+ Text [ spanish ] = "Tablas" ;
+ Text [ french ] = "Tables" ;
+ Text [ dutch ] = "Tabellen" ;
+ Text[ chinese_simplified ] = "";
+ Text[ russian ] = "";
+ Text[ polish ] = "Tabele";
+ Text[ japanese ] = "ð";
+ Text[ chinese_traditional ] = "";
+ Text[ arabic ] = "";
+ Text[ greek ] = "";
+ Text[ korean ] = "̺";
+ Text[ turkish ] = "Tablolar";
+ Text[ language_user1 ] = " ";
+ };
+};
+
+//-------------------------------------------------------------------------
+TabPage PAGE_GENERAL
+{
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Hide = TRUE;
+
+ FixedText FT_DATASOURCENAME
+ {
+ Pos = MAP_APPFONT ( 6 , 7 ) ;
+ Size = MAP_APPFONT ( 74 , 10 ) ;
+ Text = "~Name:";
+ Text [ english ] = "~Name:";
+ Text [ english_us ] = "~Name:";
+ };
+
+ Edit ET_DATASOURCENAME
+ {
+ Pos = MAP_APPFONT ( 90 , 6 ) ;
+ Size = MAP_APPFONT ( 164 , 12 ) ;
+ TabStop = TRUE ;
+ Border = TRUE ;
+ };
+
+ GroupBox GB_CONNECTION
+ {
+ Pos = MAP_APPFONT ( 6 , 24 ) ;
+ Size = MAP_APPFONT ( 248 , 48 ) ;
+ Text = "Verbindung" ;
+ Text [ english ] = "Connection" ;
+ Text [ english_us ] = "Connection" ;
+ };
+
+ FixedText FT_DATATYPE
+ {
+ Pos = MAP_APPFONT ( 10 , 35 ) ;
+ Size = MAP_APPFONT ( 70 , 10 ) ;
+ Text = "Datenbank~typ:" ;
+ Text [ english ] = "Database ~type:" ;
+ Text [ english_us ] = "Database ~type:" ;
+ Text [ dutch ] = "Databasetype:" ;
+ Text [ italian ] = "Tipo di database:" ;
+ Text [ spanish ] = "Tipo de base de datos:" ;
+ Text [ french ] = "Type de B.D.:" ;
+ Text [ swedish ] = "Databastyp:" ;
+ Text [ danish ] = "Databasetype:" ;
+ Text [ portuguese ] = "Tipo da base de dados:" ;
+ Text [ portuguese_brazilian ] = "Datenbanktyp:" ;
+ Text [ chinese_simplified ] = "ݿ";
+ Text [ russian ] = " ";
+ Text [ polish ] = "Typ bazy danych";
+ Text [ japanese ] = "ްް ";
+ Text [ chinese_traditional ] = "Ʈw";
+ Text [ arabic ] = " ";
+ Text [ greek ] = " ";
+ Text [ korean ] = "ͺ̽ Ÿ";
+ Text [ turkish ] = "Veritaban tipi";
+ Text [ language_user1 ] = " ";
+ };
+ ListBox LB_DATATYPE
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 90, 33 ) ;
+ Size = MAP_APPFONT ( 60, 60 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ FixedText FT_CONNECTURL
+ {
+ Pos = MAP_APPFONT ( 10 , 53 ) ;
+ Size = MAP_APPFONT ( 70 , 10 ) ;
+ Text = "D~atenquelle URL:" ;
+ Text [ english ] = "~Data source URL:" ;
+ Text [ english_us ] = "~Data source URL:" ;
+ };
+ Edit ET_CONNECTURL
+ {
+ Pos = MAP_APPFONT ( 90 , 52 ) ;
+ Size = MAP_APPFONT ( 104 , 12 ) ;
+ TabStop = TRUE ;
+ Border = TRUE ;
+ };
+ PushButton PB_BROWSECONNECTION
+ {
+ TabStop = TRUE ;
+ Pos = MAP_APPFONT ( 198 , 51 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ Text = "D~urchsuchen..." ;
+ Text [ english ] = "~Search..." ;
+ Text [ english_us ] = "~Browse..." ;
+ Text [ italian ] = "S~foglia..." ;
+ Text [ spanish ] = "E~xaminar..." ;
+ Text [ french ] = "Parcourir..." ;
+ Text [ dutch ] = "~Doorzoeken..." ;
+ Text [ swedish ] = "Geno~msk..." ;
+ Text [ danish ] = "Gennemse..." ;
+ Text [ portuguese_brazilian ] = "Durchsuchen..." ;
+ Text [ portuguese ] = "~Pesquisar..." ;
+ Text[ chinese_simplified ] = "...";
+ Text[ russian ] = "...";
+ Text[ polish ] = "Przegldaj...";
+ Text[ japanese ] = "...";
+ Text[ chinese_traditional ] = "s...";
+ Text[ arabic ] = "...";
+ Text[ greek ] = "...";
+ Text[ korean ] = "Ž...";
+ Text[ turkish ] = "Tara...";
+ Text[ language_user1 ] = " ";
+ };
+};
+
+//.........................................................................
+TabPage PAGE_DBASE
+{
+ SVLook = TRUE ;
+ Hide = TRUE;
+ Pos = MAP_APPFONT ( 0 , 0 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+
+ GroupBox GB_DBASE_MAIN
+ {
+ Pos = MAP_APPFONT ( 6 , 6 ) ;
+ Size = MAP_APPFONT ( 248 , 55 ) ;
+ };
+
+ CheckBox CB_SHOWDELETEDROWS
+ {
+ Pos = MAP_APPFONT ( 76 , 12 ) ;
+ Size = MAP_APPFONT ( 127 , 10 ) ;
+ TabStop = TRUE ;
+ Text = "I~naktive Datenstze anzeigen" ;
+ Text [ english ] = "Show deleted records" ;
+ Text [ NORWEGIAN ] = "Show deleted records" ;
+ Text [ DANISH ] = "Vis inaktive dataposter" ;
+ Text [ ENGLISH_US ] = "Display inactive records" ;
+ Text [ SPANISH ] = "Mostrar registros inacti~vos" ;
+ Text [ FINNISH ] = "Nyt poistetut tietueet" ;
+ Text [ FRENCH ] = "Afficher les enregistrements ~dsactivs" ;
+ Text [ ITALIAN ] = "~Mostra record inattivi" ;
+ Text [ DUTCH ] = "I~nactieve records weergeven" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "Mostrar registros apagados" ;
+ Text [ SWEDISH ] = "Visa i~naktiva dataposter" ;
+ Text [ PORTUGUESE ] = "Mostrar registos i~nactivos" ;
+ Text[ chinese_simplified ] = "ʾݼ¼";
+ Text[ russian ] = " ";
+ Text[ polish ] = "Poka nieaktywne rekordy";
+ Text[ japanese ] = "èނłȂںނ\\";
+ Text[ chinese_traditional ] = "Jƶ";
+ Text[ arabic ] = " ";
+ Text[ greek ] = "~ ";
+ Text[ korean ] = "Ȱ ڵ ÷";
+ Text[ turkish ] = "Etkin olmayan kaytlar grntle";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_ALLOWLONGNAMES
+ {
+ Pos = MAP_APPFONT ( 76 , 26 ) ;
+ Size = MAP_APPFONT ( 127 , 10 ) ;
+ TabStop = TRUE ;
+ Text= "~Lange Tabellennamen";
+ Text[ italian ] = "~Nomi di tabella lunghi";
+ Text[ portuguese_brazilian ] = "Lange Tabellennamen";
+ Text[ portuguese ] = "Nomes de tabelas ~longos";
+ Text[ danish ] = "Lange tabelnavn";
+ Text[ french ] = "Noms de tables longs";
+ Text[ swedish ] = "~Lnga tabellnamn";
+ Text[ dutch ] = "~Lange tabelnamen";
+ Text[ spanish ] = "Nombres de ta~bla largos";
+ Text[ english_us ] = "Long table names";
+ Text[ chinese_simplified ] = "";
+ Text[ russian ] = " ";
+ Text[ polish ] = "Dugie nazwy tabeli";
+ Text[ japanese ] = "\\";
+ Text [ english ] = "Long table names" ;
+ Text[ chinese_traditional ] = "W";
+ Text[ arabic ] = " ";
+ Text[ greek ] = " ~ ";
+ Text[ korean ] = " ̺ ";
+ Text[ turkish ] = "Uzun tablo adlar";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_CHARSET
+ {
+ Pos = MAP_APPFONT ( 12 , 43 ) ;
+ Size = MAP_APPFONT ( 57 , 10 ) ;
+ Text = "~Zeichensatz" ;
+ Text [ english ] = "~Character set" ;
+ Text [ NORWEGIAN ] = "~Character set" ;
+ Text [ DANISH ] = "Tegnst" ;
+ Text [ ENGLISH_US ] = "~Character set" ;
+ Text [ SPANISH ] = "J~uego de caracteres" ;
+ Text [ FINNISH ] = "~Merkist" ;
+ Text [ FRENCH ] = "~Jeu de caractres" ;
+ Text [ ITALIAN ] = "~Tipo di carattere" ;
+ Text [ DUTCH ] = "~Tekenset" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "~Conjunto de caracteres" ;
+ Text [ SWEDISH ] = "Te~ckenuppsttning" ;
+ Text [ PORTUGUESE ] = "~Conjunto de caracteres" ;
+ Text[ chinese_simplified ] = "(~C)";
+ Text[ russian ] = " ";
+ Text[ polish ] = "Zbir znakw";
+ Text[ japanese ] = "(~C)";
+ Text[ chinese_traditional ] = "r(~C)";
+ Text[ arabic ] = " ";
+ Text[ greek ] = "~ ";
+ Text[ korean ] = " Ʈ(~C)";
+ Text[ turkish ] = "Karakter kmesi";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_CHARSET
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 76 , 41 ) ;
+ Size = MAP_APPFONT ( 105 , 60 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ CurPos = 0 ;
+ };
+ PushButton PB_INDICIES
+ {
+ Pos = MAP_APPFONT ( 199 , 115 ) ;
+ Size = MAP_APPFONT ( 55 , 14 ) ;
+ TabStop = TRUE ;
+ Text= "~Indizes...";
+ Text [ english ] = "Indexes..." ;
+ Text[ chinese_traditional ] = "лx...";
+ Text[ arabic ] = "...";
+ Text[ greek ] = "~...";
+ Text[ korean ] = "ε";
+ Text[ turkish ] = "Dizinler...";
+ Text[ language_user1 ] = " ";
+ Text[ italian ] = "I~ndici...";
+ Text[ portuguese_brazilian ] = "Indizes";
+ Text[ portuguese ] = "~ndices...";
+ Text[ danish ] = "Indeks...";
+ Text[ french ] = "Index...";
+ Text[ swedish ] = "~Index...";
+ Text[ dutch ] = "~Indicies...";
+ Text[ spanish ] = "~ndices...";
+ Text[ english_us ] = "Indexes...";
+ Text[ chinese_simplified ] = "־...";
+ Text[ russian ] = "...";
+ Text[ polish ] = "Indeksy...";
+ Text[ japanese ] = "ޯ...";
+ };
+};
+
+//.........................................................................
+TabPage PAGE_JDBC
+{
+ SVLook = TRUE ;
+ Pos = MAP_APPFONT ( 0 , 0 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Hide = TRUE;
+ FixedText FT_JDBCDRIVERCLASS
+ {
+ Pos = MAP_APPFONT ( 6 , 7 ) ;
+ Size = MAP_APPFONT ( 71 , 10 ) ;
+ Text = "~JDBC Treiberklasse" ;
+ Text [ ENGLISH ] = "~JDBC driverclass" ;
+ Text [ english_us ] = "~JDBC driver class" ;
+ Text [ portuguese_brazilian ] = "~JDBC Treiberklasse" ;
+ Text [ swedish ] = "~JDBC-drivrutinsklass" ;
+ Text [ danish ] = "JDBC-driverklasse" ;
+ Text [ italian ] = "~Classe di driver JDBC" ;
+ Text [ spanish ] = "~Clase de controlador JDBC" ;
+ Text [ french ] = "~Classe du pilote JDBC" ;
+ Text [ dutch ] = "Driverklasse ~JDBC" ;
+ Text [ portuguese ] = "Classe do controlador ~JDBC" ;
+ Text[ chinese_simplified ] = "~JDBC ";
+ Text[ russian ] = " ~JDBC";
+ Text[ polish ] = "Klasa sterownika JDBC";
+ Text[ japanese ] = "JDBC ײ޸׽(~J)";
+ Text[ chinese_traditional ] = "~JDBC Xʵ{";
+ Text[ arabic ] = " JDBC";
+ Text[ greek ] = " ~JDBC";
+ Text[ korean ] = "JDBC ̹ Ŭ(~J)";
+ Text[ turkish ] = "~JDBC src snf";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ET_JDBCDRIVERCLASS
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 90 , 6 ) ;
+ Size = MAP_APPFONT ( 105 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_CONNECTURL
+ {
+ Pos = MAP_APPFONT ( 6 , 22 ) ;
+ Size = MAP_APPFONT ( 51 , 10 ) ;
+ Text = "U~RL" ;
+ Text [ ENGLISH ] = "U~RL" ;
+ Text [ english_us ] = "U~RL" ;
+ Text [ portuguese_brazilian ] = "U~RL" ;
+ Text [ swedish ] = "U~RL" ;
+ Text [ danish ] = "URL" ;
+ Text [ italian ] = "U~RL" ;
+ Text [ spanish ] = "U~RL" ;
+ Text [ french ] = "U~RL" ;
+ Text [ dutch ] = "U~RL" ;
+ Text [ portuguese ] = "U~RL" ;
+ Text[ chinese_simplified ] = "U~RL";
+ Text[ russian ] = "U~RL";
+ Text[ polish ] = "URL";
+ Text[ japanese ] = "U~RL";
+ Text[ chinese_traditional ] = "U~RL";
+ Text[ arabic ] = "U~RL";
+ Text[ greek ] = "URL";
+ Text[ korean ] = "URL(~R)";
+ Text[ turkish ] = "U~RL";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ET_CONNECTURL
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 90 , 21 ) ;
+ Size = MAP_APPFONT ( 105 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_USERNAME
+ {
+ Pos = MAP_APPFONT ( 6 , 37 ) ;
+ Size = MAP_APPFONT ( 51 , 10 ) ;
+ Text = "~Benutzername" ;
+ Text [ ENGLISH ] = "~Username" ;
+ Text [ NORWEGIAN ] = "~Username" ;
+ Text [ DANISH ] = "Brugernavn" ;
+ Text [ ENGLISH_US ] = "~User name" ;
+ Text [ SPANISH ] = "N~ombre del usuario" ;
+ Text [ FINNISH ] = "~Kyttjtunnus" ;
+ Text [ FRENCH ] = "Nom d'~utilisateur" ;
+ Text [ ITALIAN ] = "Nome ~utente" ;
+ Text [ DUTCH ] = "Naam ~gebruiker" ;
+ Text [ SWEDISH ] = "~Anvndarnamn" ;
+ Text [ PORTUGUESE ] = "Nome do ~utilizador" ;
+ Text [ portuguese_brazilian ] = "~Benutzername" ;
+ Text[ chinese_simplified ] = "ʹ(~U)";
+ Text[ russian ] = " ";
+ Text[ polish ] = "Nazwisko uytk.";
+ Text[ japanese ] = "հް(~U)";
+ Text[ chinese_traditional ] = "ϥΪ(~U)";
+ Text[ arabic ] = " ";
+ Text[ greek ] = " ";
+ Text[ korean ] = "ڸ(~U)";
+ Text[ turkish ] = "Kullanc ad";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ET_USERNAME
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 90 , 36 ) ;
+ Size = MAP_APPFONT ( 105 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_PASSWORD
+ {
+ Pos = MAP_APPFONT ( 6 , 52 ) ;
+ Size = MAP_APPFONT ( 51 , 10 ) ;
+ Text = "~Passwort" ;
+ Text [ ENGLISH ] = "~Password" ;
+ Text [ NORWEGIAN ] = "~Passord" ;
+ Text [ DANISH ] = "Adgangskode" ;
+ Text [ ENGLISH_US ] = "~Password" ;
+ Text [ SPANISH ] = "~Contrasea" ;
+ Text [ FINNISH ] = "~Salasana" ;
+ Text [ FRENCH ] = "~Mot de passe" ;
+ Text [ ITALIAN ] = "~Password" ;
+ Text [ DUTCH ] = "~Wachtwoord" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "~Senha" ;
+ Text [ SWEDISH ] = "~Lsenord" ;
+ Text [ PORTUGUESE ] = "~Senha" ;
+ Text[ chinese_simplified ] = "(~P)";
+ Text[ russian ] = "";
+ Text[ polish ] = "Haso";
+ Text[ japanese ] = "߽ܰ(~P)";
+ Text[ chinese_traditional ] = "KX(~P)";
+ Text[ arabic ] = " ";
+ Text[ greek ] = " ";
+ Text[ korean ] = "н(~P)";
+ Text[ turkish ] = "ifre";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ET_PASSWORD
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 90 , 51 ) ;
+ Size = MAP_APPFONT ( 105 , 12 ) ;
+ TabStop = TRUE ;
+ PassWord = TRUE ;
+ };
+ CheckBox CB_ASK_WHEN_EMPTY_PWD
+ {
+ Pos = MAP_APPFONT ( 90 , 66 ) ;
+ Size = MAP_APPFONT ( 105 , 10 ) ;
+ Text = "beim ffnen ~fragen";
+ Text [ ENGLISH ] = "beim ffnen ~fragen";
+ Text[ italian ] = "Chiedi all'apertura";
+ Text[ portuguese_brazilian ] = "beim ffnen ~fragen";
+ Text[ portuguese ] = "~Perguntar ao abrir";
+ Text[ danish ] = "sprg ved bning";
+ Text[ french ] = "~Requte l'ouverture";
+ Text[ swedish ] = "~frga vid ppnandet";
+ Text[ dutch ] = "bij openen ~vragen";
+ Text[ spanish ] = "preguntar al ~abrir";
+ Text[ english_us ] = "Request when opened";
+ Text[ chinese_simplified ] = "ڴʱѯ";
+ Text[ russian ] = " ";
+ Text[ polish ] = "Pytaj przy otwieraniu";
+ Text[ japanese ] = "Jۂɐq˂";
+ Text[ chinese_traditional ] = "b}Үɸ߰";
+ Text[ arabic ] = " ";
+ Text[ greek ] = " ";
+ Text[ korean ] = " û";
+ Text[ turkish ] = "Aarken sor";
+ Text[ language_user1 ] = " ";
+ };
+ FixedLine FL_SEPARATOR1
+ {
+ Pos = MAP_APPFONT ( 6 , 79 ) ;
+ Size = MAP_APPFONT ( 248 , 1 ) ;
+ };
+ FixedText FT_CHARSET
+ {
+ Pos = MAP_APPFONT ( 6 , 85 ) ;
+ Size = MAP_APPFONT ( 51 , 10 ) ;
+ Text = "~Zeichensatz" ;
+ Text [ ENGLISH ] = "~Character set" ;
+ Text [ NORWEGIAN ] = "~Character set" ;
+ Text [ DANISH ] = "Tegnst" ;
+ Text [ ENGLISH_US ] = "~Character set" ;
+ Text [ SPANISH ] = "J~uego de caracteres" ;
+ Text [ FINNISH ] = "~Merkist" ;
+ Text [ FRENCH ] = "~Jeu de caractres" ;
+ Text [ ITALIAN ] = "Ti~po di carattere" ;
+ Text [ DUTCH ] = "~Tekenset" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "~Conjunto de caracteres" ;
+ Text [ SWEDISH ] = "Te~ckenuppsttning" ;
+ Text [ PORTUGUESE ] = "~Conjunto de caracteres" ;
+ Text[ chinese_simplified ] = "(~C)";
+ Text[ russian ] = " ";
+ Text[ polish ] = "Zbir znakw";
+ Text[ japanese ] = "(~C)";
+ Text[ chinese_traditional ] = "r(~C)";
+ Text[ arabic ] = " ";
+ Text[ greek ] = "~ ";
+ Text[ korean ] = " Ʈ(~C)";
+ Text[ turkish ] = "Karakter kmesi";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_CHARSET
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 90 , 85 ) ;
+ Size = MAP_APPFONT ( 105 , 60 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ CurPos = 0 ;
+ };
+};
+
+//.........................................................................
+TabPage PAGE_ODBC
+{
+ SVLook = TRUE ;
+ Pos = MAP_APPFONT ( 0 , 0 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Hide = TRUE;
+ FixedText FT_USERNAME
+ {
+ Pos = MAP_APPFONT ( 6 , 7 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "~Benutzername" ;
+ Text [ ENGLISH ] = "~Username" ;
+ Text [ NORWEGIAN ] = "~Username" ;
+ Text [ DANISH ] = "Brugernavn" ;
+ Text [ ENGLISH_US ] = "~User name" ;
+ Text [ SPANISH ] = "N~ombre del usuario" ;
+ Text [ FINNISH ] = "~Kyttjtunnus" ;
+ Text [ FRENCH ] = "Nom d'~utilisateur" ;
+ Text [ ITALIAN ] = "Nome ~utente" ;
+ Text [ DUTCH ] = "Naam ~gebruiker" ;
+ Text [ SWEDISH ] = "~Anvndarnamn" ;
+ Text [ PORTUGUESE ] = "Nome do ~utilizador" ;
+ Text [ portuguese_brazilian ] = "~Benutzername" ;
+ Text[ chinese_simplified ] = "ʹ(~U)";
+ Text[ russian ] = " ";
+ Text[ polish ] = "Nazwisko uytk.";
+ Text[ japanese ] = "հް(~U)";
+ Text[ chinese_traditional ] = "ϥΪ(~U)";
+ Text[ arabic ] = " ";
+ Text[ greek ] = " ";
+ Text[ korean ] = "ڸ(~U)";
+ Text[ turkish ] = "Kullanc ad";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ET_USERNAME
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 110 , 6 ) ;
+ Size = MAP_APPFONT ( 105 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_PASSWORD
+ {
+ Pos = MAP_APPFONT ( 6 , 22 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "~Passwort" ;
+ Text [ ENGLISH ] = "~Password" ;
+ Text [ NORWEGIAN ] = "~Passord" ;
+ Text [ DANISH ] = "Adgangskode" ;
+ Text [ ENGLISH_US ] = "~Password" ;
+ Text [ SPANISH ] = "~Contrasea" ;
+ Text [ FINNISH ] = "~Salasana" ;
+ Text [ FRENCH ] = "~Mot de passe" ;
+ Text [ ITALIAN ] = "~Password" ;
+ Text [ DUTCH ] = "~Wachtwoord" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "~Senha" ;
+ Text [ SWEDISH ] = "~Lsenord" ;
+ Text [ PORTUGUESE ] = "~Senha" ;
+ Text[ chinese_simplified ] = "(~P)";
+ Text[ russian ] = "";
+ Text[ polish ] = "Haso";
+ Text[ japanese ] = "߽ܰ(~P)";
+ Text[ chinese_traditional ] = "KX(~P)";
+ Text[ arabic ] = " ";
+ Text[ greek ] = " ";
+ Text[ korean ] = "н(~P)";
+ Text[ turkish ] = "ifre";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ET_PASSWORD
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 110 , 21 ) ;
+ Size = MAP_APPFONT ( 105 , 12 ) ;
+ TabStop = TRUE ;
+ PassWord = TRUE ;
+ };
+ CheckBox CB_ASK_WHEN_EMPTY_PWD
+ {
+ Pos = MAP_APPFONT ( 110 , 36 ) ;
+ Size = MAP_APPFONT ( 105 , 10 ) ;
+ Text = "beim ffnen ~fragen";
+ Text [ ENGLISH ] = "beim ffnen ~fragen";
+ Text[ italian ] = "Chiedi all'apertura";
+ Text[ portuguese_brazilian ] = "beim ffnen ~fragen";
+ Text[ portuguese ] = "~Perguntar ao abrir";
+ Text[ danish ] = "sprg ved bning";
+ Text[ french ] = "~Requte l'ouverture";
+ Text[ swedish ] = "~frga vid ppnandet";
+ Text[ dutch ] = "bij openen ~vragen";
+ Text[ spanish ] = "preguntar al ~abrir";
+ Text[ english_us ] = "Request when opened";
+ Text[ chinese_simplified ] = "ڴʱѯ";
+ Text[ russian ] = " ";
+ Text[ polish ] = "Pytaj przy otwieraniu";
+ Text[ japanese ] = "Jۂɐq˂";
+ Text[ chinese_traditional ] = "b}Үɸ߰";
+ Text[ arabic ] = " ";
+ Text[ greek ] = " ";
+ Text[ korean ] = " û";
+ Text[ turkish ] = "Aarken sor";
+ Text[ language_user1 ] = " ";
+ };
+ FixedLine FL_SEPARATOR1
+ {
+ Pos = MAP_APPFONT ( 6 , 49 ) ;
+ Size = MAP_APPFONT ( 248 , 1 ) ;
+ };
+ FixedText FT_OPTIONS
+ {
+ Pos = MAP_APPFONT ( 6 , 55 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "~Treibereinstellungen" ;
+ Text [ ENGLISH ] = "ODBC ~options" ;
+ Text [ NORWEGIAN ] = "ODBC ~options" ;
+ Text [ DANISH ] = "Driverindstillinger" ;
+ Text [ ENGLISH_US ] = "Driver settings" ;
+ Text [ SPANISH ] = "Opciones del ~controlador" ;
+ Text [ FINNISH ] = "ODBC-~mritykset" ;
+ Text [ FRENCH ] = "Paramtres du pilote" ;
+ Text [ ITALIAN ] = "Imposta~zioni drive" ;
+ Text [ DUTCH ] = "~Driveropties" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "ODBC opes" ;
+ Text [ SWEDISH ] = "Drivru~tinsinstllningar" ;
+ Text [ PORTUGUESE ] = "Definies do ~controlador" ;
+ Text[ chinese_simplified ] = "趨";
+ Text[ russian ] = " ";
+ Text[ polish ] = "Opcje sterownika";
+ Text[ japanese ] = "ײނ̐ݒ";
+ Text[ chinese_traditional ] = "]wXʵ{";
+ Text[ arabic ] = " ";
+ Text[ greek ] = " ~ ";
+ Text[ korean ] = "̹ ";
+ Text[ turkish ] = "Src ayarlar";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ET_OPTIONS
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 110 , 54 ) ;
+ Size = MAP_APPFONT ( 105 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_CHARSET
+ {
+ Pos = MAP_APPFONT ( 6 , 70 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "~Zeichensatz" ;
+ Text [ ENGLISH ] = "~Character set" ;
+ Text [ NORWEGIAN ] = "~Character set" ;
+ Text [ DANISH ] = "Tegnst" ;
+ Text [ ENGLISH_US ] = "~Character set" ;
+ Text [ SPANISH ] = "J~uego de caracteres" ;
+ Text [ FINNISH ] = "~Merkist" ;
+ Text [ FRENCH ] = "~Jeu de caractres" ;
+ Text [ ITALIAN ] = "~Tipo di carattere" ;
+ Text [ DUTCH ] = "~Tekenset" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "~Conjunto de caracteres" ;
+ Text [ SWEDISH ] = "~Teckenuppsttning" ;
+ Text [ PORTUGUESE ] = "~Conjunto de caracteres" ;
+ Text[ chinese_simplified ] = "(~C)";
+ Text[ russian ] = " ";
+ Text[ polish ] = "Zbir znakw";
+ Text[ japanese ] = "(~C)";
+ Text[ chinese_traditional ] = "r(~C)";
+ Text[ arabic ] = " ";
+ Text[ greek ] = "~ ";
+ Text[ korean ] = " Ʈ(~C)";
+ Text[ turkish ] = "Karakter kmesi";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_CHARSET
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 110 , 69 ) ;
+ Size = MAP_APPFONT ( 105 , 60 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ CurPos = 0 ;
+ };
+};
+
+//.........................................................................
+TabPage PAGE_TEXT
+{
+ SVLook = TRUE ;
+ Hide = TRUE;
+ Pos = MAP_APPFONT ( 0 , 0 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ CheckBox CB_HEADER
+ {
+ TabStop = TRUE ;
+ Pos = MAP_APPFONT ( 125 , 6 ) ;
+ Size = MAP_APPFONT ( 150 , 10 ) ;
+ Text = "~Text beinhaltet Kopfzeile" ;
+ Text [ ENGLISH ] = "Header record" ;
+ Text [ NORWEGIAN ] = "Header record" ;
+ Text [ DANISH ] = "Teksten indeholder sidehoved" ;
+ Text [ ENGLISH_US ] = "Text contains a header" ;
+ Text [ SPANISH ] = "Te~xto contiene encabezamiento" ;
+ Text [ FINNISH ] = "Otsikkotietue" ;
+ Text [ FRENCH ] = "Texte avec en-tte" ;
+ Text [ ITALIAN ] = "T~esto contiene riga d'intestazione" ;
+ Text [ DUTCH ] = "~Tekst bevat koptekst" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "Registro do cabealho" ;
+ Text [ SWEDISH ] = "~Text innehller sidhuvud" ;
+ Text [ PORTUGUESE ] = "~Texto tem cabealho" ;
+ Text[ chinese_simplified ] = "ĺҳü";
+ Text[ russian ] = " ";
+ Text[ polish ] = "Tekst zawiera nagwek";
+ Text[ japanese ] = "ͯނ܂";
+ Text[ chinese_traditional ] = "t";
+ Text[ arabic ] = " ";
+ Text[ greek ] = " ";
+ Text[ korean ] = " ؽƮ";
+ Text[ turkish ] = "Metin stbilgi ieriyor";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_FIELDSEPARATOR
+ {
+ Pos = MAP_APPFONT ( 6 , 21 ) ;
+ Size = MAP_APPFONT ( 119 , 10 ) ;
+ Text = "~Feldtrenner" ;
+ Text [ ENGLISH ] = "Field delimiter" ;
+ Text [ NORWEGIAN ] = "Field delimiter" ;
+ Text [ DANISH ] = "Feltseparator" ;
+ Text [ ENGLISH_US ] = "Field separator" ;
+ Text [ SPANISH ] = "~Separador de campo" ;
+ Text [ FINNISH ] = "Kenttien erotin" ;
+ Text [ FRENCH ] = "Sparateur de champ" ;
+ Text [ ITALIAN ] = "~Separatore di campo" ;
+ Text [ DUTCH ] = "~Veldscheidingsteken" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "Delimitador de campo" ;
+ Text [ SWEDISH ] = "~Fltavgrnsare" ;
+ Text [ PORTUGUESE ] = "~Separador de campo" ;
+ Text[ chinese_simplified ] = "ֶηָ";
+ Text[ russian ] = " ";
+ Text[ polish ] = "Separator pola";
+ Text[ japanese ] = "̨ނ̋؂L";
+ Text[ chinese_traditional ] = "j";
+ Text[ arabic ] = " ";
+ Text[ greek ] = " ";
+ Text[ korean ] = "ʵ ";
+ Text[ turkish ] = "Alan ayrcs";
+ Text[ language_user1 ] = " ";
+ };
+ ComboBox CM_FIELDSEPARATOR
+ {
+ Pos = MAP_APPFONT ( 125 , 19 ) ;
+ Size = MAP_APPFONT ( 48 , 60 ) ;
+ Text = ";" ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ FixedText FT_TEXTSEPARATOR
+ {
+ Pos = MAP_APPFONT ( 6 , 38 ) ;
+ Size = MAP_APPFONT ( 119 , 10 ) ;
+ Text = "T~exttrenner" ;
+ Text [ ENGLISH ] = "String delimiter" ;
+ Text [ NORWEGIAN ] = "String delimiter" ;
+ Text [ DANISH ] = "Tekstseparator" ;
+ Text [ ENGLISH_US ] = "Text separator" ;
+ Text [ SPANISH ] = "Separador de te~xto" ;
+ Text [ FINNISH ] = "Merkkijonojen erotin" ;
+ Text [ FRENCH ] = "Sparateur de texte" ;
+ Text [ ITALIAN ] = "S~eparatore di testo" ;
+ Text [ DUTCH ] = "T~ekstafbrekingsteken" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "Delimitador de cadeia" ;
+ Text [ SWEDISH ] = "T~extavgrnsare" ;
+ Text [ PORTUGUESE ] = "Separador de t~exto" ;
+ Text[ chinese_simplified ] = "ַָ";
+ Text[ russian ] = " ";
+ Text[ polish ] = "Separator tekstu";
+ Text[ japanese ] = "÷Ă̋؂L";
+ Text[ chinese_traditional ] = "rj";
+ Text[ arabic ] = " ";
+ Text[ greek ] = " ~";
+ Text[ korean ] = "ؽƮ ";
+ Text[ turkish ] = "Metin ayrcs";
+ Text[ language_user1 ] = " ";
+ };
+ ComboBox CM_TEXTSEPARATOR
+ {
+ Pos = MAP_APPFONT ( 125 , 36 ) ;
+ Size = MAP_APPFONT ( 48 , 60 ) ;
+ Text = "\"" ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ FixedText FT_DECIMALSEPARATOR
+ {
+ Pos = MAP_APPFONT ( 6 , 55 ) ;
+ Size = MAP_APPFONT ( 119 , 10 ) ;
+ Text = "~Dezimaltrennzeichen" ;
+ Text [ ENGLISH ] = "~Decimal point" ;
+ Text [ NORWEGIAN ] = "~Decimal point" ;
+ Text [ DANISH ] = "Decimalkomma" ;
+ Text [ ENGLISH_US ] = "Decimal separator" ;
+ Text [ SPANISH ] = "Separa~dor decimal" ;
+ Text [ FINNISH ] = "~Desimaalierotin" ;
+ Text [ FRENCH ] = "Sparateur de dcimale" ;
+ Text [ ITALIAN ] = "Car. di separaz. decimali" ;
+ Text [ DUTCH ] = "~Decimaalteken" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "Ponto decimal" ;
+ Text [ SWEDISH ] = "~Decimaltecken" ;
+ Text [ PORTUGUESE ] = "Separador de ~decimais" ;
+ Text[ chinese_simplified ] = "С";
+ Text[ russian ] = " ";
+ Text[ polish ] = "Separator dziesitny";
+ Text[ japanese ] = "_";
+ Text[ language_user1 ] = "LS: Access sagt \"s?arateur d?imal*";
+ Text[ chinese_traditional ] = "pIŸ";
+ Text[ arabic ] = " ";
+ Text[ greek ] = " ";
+ Text[ korean ] = "Ҽ ";
+ Text[ turkish ] = "Ondalk ayrcs";
+ };
+ ComboBox CM_DECIMALSEPARATOR
+ {
+ Pos = MAP_APPFONT ( 125 , 53 ) ;
+ Size = MAP_APPFONT ( 32 , 60 ) ;
+ Text = ";" ;
+ TabStop = TRUE ;
+ MaxTextLength = 1 ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ "." ;
+ "," ;
+ ";" ;
+ ":" ;
+ };
+ };
+ FixedText FT_THOUSANDSSEPARATOR
+ {
+ Pos = MAP_APPFONT ( 6 , 72 ) ;
+ Size = MAP_APPFONT ( 119 , 10 ) ;
+ Text = "T~ausendertrennzeichen" ;
+ Text [ ENGLISH ] = "Decimal point" ;
+ Text [ NORWEGIAN ] = "Decimal point" ;
+ Text [ DANISH ] = "Tusindtalsseparator" ;
+ Text [ ENGLISH_US ] = "Thousands separator" ;
+ Text [ SPANISH ] = "Separad~or de miles" ;
+ Text [ FINNISH ] = "Desimaalierotin" ;
+ Text [ FRENCH ] = "Sparateur de milliers" ;
+ Text [ ITALIAN ] = "Car. di separaz. migliaia" ;
+ Text [ DUTCH ] = "~Scheidingsteken voor duizendtallen" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "Ponto decimal" ;
+ Text [ SWEDISH ] = "Tusent~alsavgrnsare" ;
+ Text [ PORTUGUESE ] = "Separador de ~milhares" ;
+ Text[ chinese_simplified ] = "ǧλָ";
+ Text[ russian ] = " ";
+ Text[ polish ] = "Separator tysiczny";
+ Text[ japanese ] = "猅؂";
+ Text[ language_user1 ] = "LS: auch laut Access";
+ Text[ chinese_traditional ] = "dj";
+ Text[ arabic ] = " ";
+ Text[ greek ] = "~ ";
+ Text[ korean ] = "õ ";
+ Text[ turkish ] = "Binlik ayrcs";
+ };
+ ComboBox CM_THOUSANDSSEPARATOR
+ {
+ Pos = MAP_APPFONT ( 125 , 70 ) ;
+ Size = MAP_APPFONT ( 32 , 44 ) ;
+ Text = "." ;
+ TabStop = TRUE ;
+ MaxTextLength = 1 ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ "," ;
+ "." ;
+ };
+ };
+ FixedLine FL_SEPARATOR1
+ {
+ Pos = MAP_APPFONT ( 6 , 87 ) ;
+ Size = MAP_APPFONT ( 248 , 1 ) ;
+ };
+ FixedText FT_EXTENSION
+ {
+ Pos = MAP_APPFONT ( 6 , 93 ) ;
+ Size = MAP_APPFONT ( 119 , 10 ) ;
+ Text = "E~rweiterung" ;
+ Text [ ENGLISH ] = "Extension" ;
+ Text [ english_us ] = "Extension" ;
+ Text [ italian ] = "Est~ensione" ;
+ Text [ spanish ] = "E~xtensin" ;
+ Text [ french ] = "Extension" ;
+ Text [ dutch ] = "V~ergroting" ;
+ Text [ swedish ] = "Utknin~g" ;
+ Text [ danish ] = "Filtypenavn" ;
+ Text [ portuguese_brazilian ] = "Erweiterung" ;
+ Text [ portuguese ] = "~Extenso" ;
+ Text[ chinese_simplified ] = "չ";
+ Text[ russian ] = "";
+ Text[ polish ] = "Rozszerzenie";
+ Text[ japanese ] = "gq";
+ Text[ chinese_traditional ] = "Xi";
+ Text[ arabic ] = " ";
+ Text[ greek ] = "";
+ Text[ korean ] = "Ȯ";
+ Text[ turkish ] = "Uzant";
+ Text[ language_user1 ] = " ";
+ };
+ ComboBox CM_EXTENSION
+ {
+ Pos = MAP_APPFONT ( 125 , 91 ) ;
+ Size = MAP_APPFONT ( 32 , 44 ) ;
+ Text = "txt" ;
+ TabStop = TRUE ;
+ MaxTextLength = 3 ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ "csv" ;
+ "sdf" ;
+ "txt" ;
+ };
+ };
+ FixedText FT_CHARSET
+ {
+ Pos = MAP_APPFONT ( 6 , 110 ) ;
+ Size = MAP_APPFONT ( 119 , 10 ) ;
+ Text = "~Zeichensatz" ;
+ Text [ ENGLISH ] = "~Character set" ;
+ Text [ NORWEGIAN ] = "~Character set" ;
+ Text [ DANISH ] = "Tegnst" ;
+ Text [ ENGLISH_US ] = "~Character set" ;
+ Text [ SPANISH ] = "J~uego de caracteres" ;
+ Text [ FINNISH ] = "~Merkist" ;
+ Text [ FRENCH ] = "~Jeu de caractres" ;
+ Text [ ITALIAN ] = "~Tipo di carattere" ;
+ Text [ DUTCH ] = "~Tekenset" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "~Conjunto de caracteres" ;
+ Text [ SWEDISH ] = "~Teckenuppsttning" ;
+ Text [ PORTUGUESE ] = "~Conjunto de caracteres" ;
+ Text[ chinese_simplified ] = "(~C)";
+ Text[ russian ] = " ";
+ Text[ polish ] = "Zbir znakw";
+ Text[ japanese ] = "(~C)";
+ Text[ chinese_traditional ] = "r(~C)";
+ Text[ arabic ] = " ";
+ Text[ greek ] = "~ ";
+ Text[ korean ] = " Ʈ(~C)";
+ Text[ turkish ] = "Karakter kmesi";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_CHARSET
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 125 , 108 ) ;
+ Size = MAP_APPFONT ( 61 , 60 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ CurPos = 0 ;
+ };
+
+ String STR_FIELDSEPARATORLIST
+ {
+ Text = ";\t59\t,\t44\t:\t58\t{Tab}\t9\t{Leer}\t32" ;
+ Text [ ENGLISH ] = ";\t59\t,\t44\t:\t58\t{Tab}\t9\t{Space}\t32" ;
+ Text [ NORWEGIAN ] = ";\t59\t,\t44\t:\t58\t{Tab}\t9\t{Space}\t32" ;
+ Text [ DANISH ] = ";\t59\t,\t44\t:\t58\t{Tab}\t9\t{tom}\t32" ;
+ Text [ ENGLISH_US ] = ";\t59\t,\t44\t:\t58\t{Tab}\t9\t{empty}\t32" ;
+ Text [ SPANISH ] = ";\t59\t,\t44\t:\t58\t{Tab}\t9\t{vaco}\t32" ;
+ Text [ FINNISH ] = ";\t59\t,\t44\t:\t58\t{Tab}\t9\t{Space}\t32" ;
+ Text [ FRENCH ] = ";\t59\t,\t44\t:\t58\t{Tab}\t9\t{Espace}\t32" ;
+ Text [ ITALIAN ] = ";\t59\t,\t44\t:\t58\t{tab}\t9\t{spazio}\t32" ;
+ Text [ DUTCH ] = ";\t59\t,\t44\t:\t58\t{Tab}\t9\t{leeg}\t32" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = ";\t59\t,\t44\t:\t58\t{Tab}\t9\t{Space}\t32" ;
+ Text [ SWEDISH ] = ";\t59\t,\t44\t:\t58\t{Tab}\t9\t{tom}\t32" ;
+ Text [ PORTUGUESE ] = ";\t59\t,\t44\t:\t58\t{Tab}\t9\t{vazio}\t32" ;
+ Text[ chinese_simplified ] = ";\t59\t,\t44\t:\t58\t{Ʊ}\t9\t{հ}\t32";
+ Text[ russian ] = ";\t59\t,\t44\t:\t58\t{Ta}\t9\t{}\t32";
+ Text[ polish ] = ";\t59\t,\t44\t:\t58\t{Tab}\t9\t{Pusty}\t32";
+ Text[ japanese ] = ";\t59\t,\t44\t:\t58\t{}\t9\t{}\t32";
+ Text[ chinese_traditional ] = ";\t59\t,\t44\t:\t58\t{s}\t9\t{ť}\t32";
+ Text[ arabic ] = ";\t59\t,\t44\t:\t58\t{ }\t9\t{\t32";
+ Text[ greek ] = ";\t59\t,\t44\t:\t58\t{Tab}\t9\t{}\t32";
+ Text[ korean ] = ";\t59\t,\t44\t:\t58\t{}\t9\t{}\t32";
+ Text[ turkish ] = ";\t59\t,\t44\t:\t58\t{Tab}\t9\t{Bo}\t32";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_TEXTSEPARATORLIST
+ {
+ Text = "\"\t34\t'\t39" ;
+ };
+ String STR_DELIMITER_MISSING
+ {
+ Text = "#1 muss angegeben sein." ;
+ Text [ English ] = "#1 must be set." ;
+ Text [ english_us ] = "#1 must be set." ;
+ Text [ portuguese ] = "#1 tem que ser especificado." ;
+ Text [ portuguese_brazilian ] = "#1 mu angegeben sein." ;
+ Text [ swedish ] = "#1 mste anges." ;
+ Text [ danish ] = "#1 skal vre angivet." ;
+ Text [ italian ] = "#1 deve essere digitato." ;
+ Text [ spanish ] = "#1 debe indicarse." ;
+ Text [ french ] = "#1 doit tre spcifi." ;
+ Text [ dutch ] = "#1 moet aangegeven zijn." ;
+ Text[ chinese_simplified ] = " #1 ";
+ Text[ russian ] = "#1 .";
+ Text[ polish ] = "#1 musi by podane.";
+ Text[ japanese ] = "#1͎w肳ĂȂ΂Ȃ܂B";
+ Text[ chinese_traditional ] = "w#1 C";
+ Text[ arabic ] = " #1.";
+ Text[ greek ] = "#1 .";
+ Text[ korean ] = "#1 ݵ Ǿ մϴ.";
+ Text[ turkish ] = "#1 belirlenmi olmal.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_DELIMITER_MUST_DIFFER
+ {
+ Text = "#1 und #2 mssen unterschiedlich sein." ;
+ Text [ English ] = "#1 and #2 delimeter must differ." ;
+ Text [ english_us ] = "#1 and #2 must differ." ;
+ Text [ portuguese ] = "#1 e #2 tm que ser diferentes." ;
+ Text [ portuguese_brazilian ] = "#1 und #2 mssen unterschiedlich sein." ;
+ Text [ swedish ] = "#1 och #2 mste vara olika." ;
+ Text [ danish ] = "#1 og #2 skal vre forskellige." ;
+ Text [ italian ] = "#1 e #2 devono essere diversi." ;
+ Text [ spanish ] = "#1 y #2 tienen que ser diferentes." ;
+ Text [ french ] = "#1 et #2 doivent diffrer." ;
+ Text [ dutch ] = "#1 en #2 moeten verschillend zijn." ;
+ Text[ chinese_simplified ] = "#1 #2 벻ͬ";
+ Text[ russian ] = "#1 #2 .";
+ Text[ polish ] = "#1 i #2 musz by rne.";
+ Text[ japanese ] = "#1#2͈قȂĂȂ΂܂܂B";
+ Text[ chinese_traditional ] = "#1 M #2 ۦPC";
+ Text[ arabic ] = " #1 #2 .";
+ Text[ greek ] = "#1 #2 .";
+ Text[ korean ] = "#1 #2 ݵ ٸ.";
+ Text[ turkish ] = "#1 ve #2 farkl olmal.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_NO_WILDCARDS
+ {
+ Text = "Platzhalter wie *,? sind in der #1 nicht mglich." ;
+ Text [ English ] = "Wildcards (?,*) in #1 are not allowed." ;
+ Text [ english_us ] = "Wildcards (?,*) in #1 are not allowed." ;
+ Text [ portuguese ] = "Caracteres polivalentes como *,? no so admitidos emr #1." ;
+ Text [ portuguese_brazilian ] = "Platzhalter wie *,? sind in der #1 nicht mglich." ;
+ Text [ swedish ] = "Jokertecken som *,? r inte tilltna i #1." ;
+ Text [ danish ] = "Jokertegn som *,? er ikke mulige i #1." ;
+ Text [ italian ] = "Segnaposto quali *,? non sono possibili in #1." ;
+ Text [ spanish ] = "Comodines como *,? no estn permitidos en #1." ;
+ Text [ french ] = "L'utilisation de substituants (?,*) dans #1 n'est pas permise." ;
+ Text [ dutch ] = "Plaatsvervangers zoals *,? zijn in de #1 niet mogelijk." ;
+ Text[ chinese_simplified ] = "#1 ܹͨ '*,?' ";
+ Text[ russian ] = " , *,? #1 .";
+ Text[ polish ] = "Symboli wieloznacznych jak *,? nie mona uy w #1.";
+ Text[ japanese ] = "*,?̂悤ܲ޶ނ #1ł͒ʗp܂B";
+ Text[ chinese_traditional ] = "#1 tqt '*,?' C";
+ Text[ arabic ] = " *,? #1.";
+ Text[ greek ] = " (?,*) #1.";
+ Text[ korean ] = "#1 ȣ ? * ɼ ϴ.";
+ Text[ turkish ] = "*,? gibi deikenler #1 iin kullanlamaz.";
+ Text[ language_user1 ] = " ";
+ };
+};
+//.........................................................................
+TabPage PAGE_TABLESUBSCRIPTION
+{
+ SVLook = TRUE ;
+ Hide = TRUE;
+ Pos = MAP_APPFONT ( 0 , 0 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ FixedText FT_TABLESUBSCRIPTION
+ {
+ TabStop = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 6 ) ;
+ Size = MAP_APPFONT ( 248 , 12 ) ;
+ Text = "~Whlen Sie die Tabellen aus, die angezeigt werden sollen:" ;
+ Text [ ENGLISH ] = "Choose the tables that should be displayed:" ;
+ Text [ english_us ] = "Select the tables to be displayed:" ;
+ Text [ portuguese_brazilian ] = "Whlen Sie die Tabellen aus, die angezeigt werden sollen:" ;
+ Text [ swedish ] = "V~lj ut tabellerna som skall visas:" ;
+ Text [ danish ] = "Vlg de tabeller, som skal vises:" ;
+ Text [ italian ] = "Scegliere le tabelle da visualizzare:" ;
+ Text [ spanish ] = "Seleccione las tablas q~ue deban verse:" ;
+ Text [ french ] = "Slectionnez les tables afficher :" ;
+ Text [ dutch ] = "~Kies de tabellen die moeten worden weergegeven:" ;
+ Text [ portuguese ] = "~Seleccione as tabelas a visualizar:" ;
+ Text[ chinese_simplified ] = "ѡҪʾı";
+ Text[ russian ] = " , :";
+ Text[ polish ] = "Wybierz tabele, ktre maj by wywietlone:";
+ Text[ japanese ] = "\\ðقIĂ:";
+ Text[ chinese_traditional ] = "бzܤ@ӭnܪG";
+ Text[ arabic ] = " :";
+ Text[ greek ] = " :";
+ Text[ korean ] = " ̺ :";
+ Text[ turkish ] = "Grntlenecek tablolar sein:";
+ Text[ language_user1 ] = " ";
+ };
+ Control CTL_TABLESUBSCRIPTION
+ {
+ Pos = MAP_APPFONT ( 6 , 20 ) ;
+ Size = MAP_APPFONT ( 192 , 109 ) ;
+ Border = TRUE ;
+ TabStop = TRUE ;
+ };
+ PushButton PB_ADDALLTABLES
+ {
+ TabStop = TRUE ;
+ Pos = MAP_APPFONT ( 204 , 20 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ };
+ String STR_CHECK_ALL
+ {
+ Text = "~Alle" ;
+ Text [ English ] = "All" ;
+ Text [ portuguese ] = "~Todas" ;
+ Text [ english_us ] = "~All" ;
+ Text [ portuguese_brazilian ] = "Alle" ;
+ Text [ swedish ] = "~Alla" ;
+ Text [ danish ] = "Alle" ;
+ Text [ italian ] = "Tutte" ;
+ Text [ spanish ] = "To~das" ;
+ Text [ french ] = "Toutes" ;
+ Text [ dutch ] = "~Alle" ;
+ Text[ chinese_simplified ] = "ȫ(~A)";
+ Text[ russian ] = "";
+ Text[ polish ] = "Wszystkie";
+ Text[ japanese ] = "ׂ(~A)";
+ Text[ chinese_traditional ] = "(~A)";
+ Text[ arabic ] = "";
+ Text[ greek ] = "";
+ Text[ korean ] = "ü(~A)";
+ Text[ turkish ] = "Tm";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_CHECK_NONE
+ {
+ Text = "~Keine" ;
+ Text [ English ] = "None" ;
+ Text [ portuguese ] = "~Nenhuma" ;
+ Text [ english_us ] = "~None" ;
+ Text [ portuguese_brazilian ] = "Keine" ;
+ Text [ swedish ] = "In~ga" ;
+ Text [ danish ] = "Ingen" ;
+ Text [ italian ] = "Nessuna" ;
+ Text [ spanish ] = "~Ninguna" ;
+ Text [ french ] = "Aucune" ;
+ Text [ dutch ] = "~Geen" ;
+ Text[ chinese_simplified ] = "(~N)";
+ Text[ russian ] = "";
+ Text[ polish ] = "Brak";
+ Text[ japanese ] = "Ȃ(~N)";
+ Text[ chinese_traditional ] = "L(~N)";
+ Text[ arabic ] = "";
+ Text[ greek ] = "";
+ Text[ korean ] = "(~N)";
+ Text[ turkish ] = "Hibiri";
+ Text[ language_user1 ] = " ";
+ };
+};
+
+
+WarningBox ERR_NOREGISTEREDDATASOURCES
+{
+ Message = "Es sind augenblicklich keine Datenquellen registriert.";
+ Message [ english ] = "Currently, there are no registered data sources.";
+ Message [ english_us ] = "Currently, there are no registered data sources.";
+};
+
+/*************************************************************************
+ * history:
+ * $Log: not supported by cvs2svn $
+ *
+ * Revision 1.0 20.09.00 10:58:47 fs
+ ************************************************************************/
+
diff --git a/dbaccess/source/ui/dlg/dbfindex.cxx b/dbaccess/source/ui/dlg/dbfindex.cxx
new file mode 100644
index 000000000..05698a9cb
--- /dev/null
+++ b/dbaccess/source/ui/dlg/dbfindex.cxx
@@ -0,0 +1,510 @@
+/*************************************************************************
+ *
+ * $RCSfile: dbfindex.cxx,v $
+ *
+ * $Revision: 1.1 $
+ *
+ * last change: $Author: fs $ $Date: 2000-10-05 10:05:22 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc..
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _DBAUI_DBFINDEX_HXX_
+#include "dbfindex.hxx"
+#endif
+
+#ifndef _FSYS_HXX //autogen
+#include <tools/fsys.hxx>
+#endif
+#ifndef _CONFIG_HXX //autogen
+#include <vcl/config.hxx>
+#endif
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+
+#ifndef _DBAUI_MODULE_DBU_HXX_
+#include "moduledbu.hxx"
+#endif
+#ifndef _DBU_RESOURCE_HRC_
+#include "dbu_resource.hrc"
+#endif
+#ifndef _DBAUI_DBF_INDEXES_HRC_
+#include "dbfindex.hrc"
+#endif
+#ifndef _TOOLS_DEBUG_HXX
+#include <tools/debug.hxx>
+#endif
+
+//.........................................................................
+namespace dbaui
+{
+//.........................................................................
+
+const ByteString aGroupIdent("dbase III");
+
+//////////////////////////////////////////////////////////////////////////
+// Klasse ODbaseIndexDialog
+ODbaseIndexDialog::ODbaseIndexDialog( Window * pParent, String aDataSrcName )
+ : ModalDialog( pParent, ModuleRes(DLG_DBASE_INDEXES) ),
+ aPB_OK( this, ResId( PB_OK ) ),
+ aPB_CANCEL( this, ResId( PB_CANCEL ) ),
+ aPB_HELP( this, ResId( PB_HELP ) ),
+ m_FT_Tables( this, ResId( FT_TABLES ) ),
+ aCB_Tables( this, ResId( CB_TABLES ) ),
+ m_GB_Indexes( this, ResId( GB_INDEXES ) ),
+ m_FT_TableIndexes( this, ResId( FT_TABLEINDEXES ) ),
+ aLB_TableIndexes( this, ResId( LB_TABLEINDEXES ) ),
+ m_FT_AllIndexes( this, ResId( FT_ALLINDEXES ) ),
+ aLB_FreeIndexes( this, ResId( LB_FREEINDEXES ) ),
+ aPB_Add( this, ResId( PB_ADD ) ),
+ aPB_Remove( this, ResId( PB_REMOVE ) ),
+ aPB_AddAll( this, ResId( PB_ADDALL ) ),
+ aPB_RemoveAll( this, ResId( PB_REMOVEALL ) ),
+ m_aDSN(aDataSrcName)
+{
+ aCB_Tables.SetSelectHdl( LINK(this, ODbaseIndexDialog, TableSelectHdl) );
+ aPB_Add.SetClickHdl( LINK(this, ODbaseIndexDialog, AddClickHdl) );
+ aPB_Remove.SetClickHdl( LINK(this, ODbaseIndexDialog, RemoveClickHdl) );
+ aPB_AddAll.SetClickHdl( LINK(this, ODbaseIndexDialog, AddAllClickHdl) );
+ aPB_RemoveAll.SetClickHdl( LINK(this, ODbaseIndexDialog, RemoveAllClickHdl) );
+ aPB_OK.SetClickHdl( LINK(this, ODbaseIndexDialog, OKClickHdl) );
+
+ Init();
+ SetCtrls();
+ FreeResource();
+}
+
+ODbaseIndexDialog::~ODbaseIndexDialog()
+{
+}
+
+sal_Bool ODbaseIndexDialog::GetTable(const String& _rName, TableInfoListIterator& _rPosition)
+{
+ for ( _rPosition = m_aTableInfoList.begin();
+ _rPosition != m_aTableInfoList.end();
+ ++_rPosition
+ )
+ {
+ if (m_bCaseSensitiv)
+ {
+ if (_rPosition->aTableName.Equals(_rName))
+ return sal_True;
+ }
+ else
+ {
+ if (_rPosition->aTableName.EqualsIgnoreCaseAscii(_rName))
+ return sal_True;
+ }
+ }
+ return sal_False;
+}
+
+OTableIndex ODbaseIndexDialog::implRemoveIndex(const String& _rName, TableIndexList& _rList, ListBox& _rDisplay)
+{
+ OTableIndex aReturn;
+
+ sal_Int32 nPos = 0;
+ for ( TableIndexListIterator aSearch = _rList.begin();
+ aSearch != _rList.end();
+ ++aSearch, ++nPos
+ )
+ {
+ if ( m_bCaseSensitiv ? aSearch->GetIndexFileName().Equals(_rName) : aSearch->GetIndexFileName().EqualsIgnoreCaseAscii(_rName) )
+ {
+ aReturn = *aSearch;
+
+ _rList.erase(aSearch);
+ _rDisplay.RemoveEntry( _rName );
+
+ // adjust selection if necessary
+ if (nPos == _rList.size())
+ _rDisplay.SelectEntryPos((sal_uInt16)nPos-1);
+ else
+ _rDisplay.SelectEntryPos((sal_uInt16)nPos);
+
+ break;
+ }
+ }
+
+ DBG_ASSERT(aSearch != _rList.end(), "ODbaseIndexDialog::RemoveFreeIndex : did not find the index!");
+ return aReturn;
+}
+
+void ODbaseIndexDialog::implInsertIndex(const OTableIndex& _rIndex, TableIndexList& _rList, ListBox& _rDisplay)
+{
+ _rList.push_front( _rIndex );
+ _rDisplay.InsertEntry( _rIndex.GetIndexFileName() );
+ _rDisplay.SelectEntryPos(0);
+}
+
+OTableIndex ODbaseIndexDialog::RemoveTableIndex( const String& _rTableName, const String& _rIndexName )
+{
+ OTableIndex aReturn;
+
+ // does the table exist ?
+ TableInfoListIterator aTablePos;
+ if (!GetTable(_rTableName, aTablePos))
+ return aReturn;
+
+ return implRemoveIndex(_rIndexName, aTablePos->aIndexList, aLB_TableIndexes);
+}
+
+void ODbaseIndexDialog::InsertTableIndex( const String& _rTableName, const OTableIndex& _rIndex )
+{
+ TableInfoListIterator aTablePos;
+ if (!GetTable(_rTableName, aTablePos))
+ return;
+
+ implInsertIndex(_rIndex, aTablePos->aIndexList, aLB_TableIndexes);
+}
+
+IMPL_LINK( ODbaseIndexDialog, OKClickHdl, PushButton*, pButton )
+{
+ // let all tables write their INF file
+
+ for ( ConstTableInfoListIterator aLoop = m_aTableInfoList.begin();
+ aLoop != m_aTableInfoList.end();
+ ++aLoop
+ )
+ aLoop->WriteInfFile(m_aDSN);
+
+ EndDialog();
+ return 0;
+}
+
+IMPL_LINK( ODbaseIndexDialog, AddClickHdl, PushButton*, pButton )
+{
+ String aSelection = aLB_FreeIndexes.GetSelectEntry();
+ String aTableName = aCB_Tables.GetText();
+ OTableIndex aIndex = RemoveFreeIndex( aSelection );
+ InsertTableIndex( aTableName, aIndex );
+ return 0;
+}
+
+IMPL_LINK( ODbaseIndexDialog, RemoveClickHdl, PushButton*, pButton )
+{
+ String aSelection = aLB_TableIndexes.GetSelectEntry();
+ String aTableName = aCB_Tables.GetText();
+ OTableIndex aIndex = RemoveTableIndex( aTableName, aSelection );
+ InsertFreeIndex( aIndex );
+
+ return 0;
+}
+
+IMPL_LINK( ODbaseIndexDialog, AddAllClickHdl, PushButton*, pButton )
+{
+ sal_uInt16 nCnt = aLB_FreeIndexes.GetEntryCount();
+ String aTableName = aCB_Tables.GetText();
+ String aEntry;
+
+ for( sal_uInt16 nPos = 0; nPos < nCnt; ++nPos )
+ InsertTableIndex( aTableName, RemoveFreeIndex( aLB_FreeIndexes.GetEntry(0) ) );
+
+ return 0;
+}
+
+IMPL_LINK( ODbaseIndexDialog, RemoveAllClickHdl, PushButton*, pButton )
+{
+ sal_uInt16 nCnt = aLB_TableIndexes.GetEntryCount();
+ String aTableName = aCB_Tables.GetText();
+ String aEntry;
+
+ for( sal_uInt16 nPos = 0; nPos < nCnt; ++nPos )
+ InsertFreeIndex( RemoveTableIndex( aTableName, aLB_TableIndexes.GetEntry(0) ) );
+
+ return 0;
+}
+
+IMPL_LINK( ODbaseIndexDialog, TableSelectHdl, ComboBox*, pComboBox )
+{
+ // search the table
+ TableInfoListIterator aTablePos;
+ if (!GetTable(pComboBox->GetText(), aTablePos))
+ return 0L;
+
+ // fill the listbox for the indexes
+ aLB_TableIndexes.Clear();
+ for ( ConstTableIndexListIterator aLoop = aTablePos->aIndexList.begin();
+ aLoop != aTablePos->aIndexList.end();
+ ++aLoop
+ )
+ aLB_TableIndexes.InsertEntry( aLoop->GetIndexFileName() );
+
+ if ( aTablePos->aIndexList.size() )
+ aLB_TableIndexes.SelectEntryPos(0);
+
+ return 0;
+}
+
+void ODbaseIndexDialog::Init()
+{
+ ///////////////////////////////////////////////////////////////////////////
+ // Alle Indizes werden erst einmal zur Liste der freien Indizes hinzugefuegt.
+ // Dann wird fuer jede Tabelle in der Inf-Datei nachgeschaut, welche Indizes sie besitzt.
+ // Diese Indizes werden aus der Liste der freien Indizes entfernt
+ // und in die Indexliste der Tabelle eingetragen
+
+ ///////////////////////////////////////////////////////////////////////////
+ // substitute $(INST)
+ m_aDSN = SFX_APP()->GetIniManager()->SubstPathVars( m_aDSN );
+
+ ///////////////////////////////////////////////////////////////////////////
+ // if the string does not contain a path, cut the string
+ DirEntry aInitEntry( m_aDSN );
+ FileStat aFileStat(aInitEntry); // do not combine - bug in VC++ 2.0!
+
+ if (aFileStat.IsKind(FSYS_KIND_WILD))
+ m_aDSN = (DirEntry(m_aDSN).GetPath()).GetFull();
+ else if (aFileStat.IsKind(FSYS_KIND_DIR))
+ m_aDSN = DirEntry(m_aDSN).GetFull();
+ else if (aFileStat.IsKind(FSYS_KIND_FILE))
+ m_aDSN = (DirEntry(m_aDSN).GetPath()).GetFull();
+
+ ///////////////////////////////////////////////////////////////////////////
+ // first assume for all indexes they're free
+ DirEntry aDirEntry( m_aDSN );
+
+ m_bCaseSensitiv = aDirEntry.IsCaseSensitive();
+
+ aDirEntry += String::CreateFromAscii("*.ndx");
+ Dir* pDir = new Dir( aDirEntry, FSYS_KIND_FILE,FSYS_SORT_NAME | FSYS_SORT_ASCENDING | FSYS_SORT_END );
+
+ sal_uInt16 nCount = pDir->Count();
+ String aEntry;
+
+ for( sal_uInt16 nCurPos = 0; nCurPos < nCount; nCurPos++ )
+ {
+ aEntry = (*pDir)[nCurPos].GetName();
+ m_aFreeIndexList.push_back( OTableIndex(aEntry) );
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ // fill the table list
+ aDirEntry.SetExtension(String::CreateFromAscii("dbf"));
+ delete pDir;
+ pDir = new Dir( aDirEntry, FSYS_KIND_FILE,FSYS_SORT_NAME | FSYS_SORT_ASCENDING | FSYS_SORT_END );
+
+ nCount = pDir->Count();
+ if(!nCount)
+ {
+ aPB_OK.Disable(sal_True);
+ m_GB_Indexes.Disable(sal_True);
+ m_FT_TableIndexes.Disable(sal_True);
+ aLB_TableIndexes.Disable(sal_True);
+ m_FT_AllIndexes.Disable(sal_True);
+ aLB_FreeIndexes.Disable(sal_True);
+ aPB_Add.Disable(sal_True);
+ aPB_Remove.Disable(sal_True);
+ aPB_AddAll.Disable(sal_True);
+ aPB_RemoveAll.Disable(sal_True);
+ }
+
+ for( nCurPos = 0; nCurPos < nCount; nCurPos++ )
+ {
+ // add the table to the list
+ aEntry = (*pDir)[nCurPos].GetName();
+ m_aTableInfoList.push_back( OTableInfo(aEntry) );
+ OTableInfo& rTabInfo = m_aTableInfoList.back();
+
+ // open the INF file
+ String aTableName = (*pDir)[nCurPos].GetBase();
+ String aFileName = m_aDSN;
+ aFileName += DirEntry::GetAccessDelimiter();
+ aFileName += aTableName;
+ aFileName.AppendAscii(".inf");
+ Config aInfFile( aFileName );
+ aInfFile.SetGroup( aGroupIdent );
+
+ ///////////////////////////////////////////////////////////////////////////
+ // fill the indexes list
+ ByteString aNDX;
+ sal_uInt16 nKeyCnt = aInfFile.GetKeyCount();
+ ByteString aKeyName;
+
+ for( sal_uInt16 nKey = 0; nKey < nKeyCnt; nKey++ )
+ {
+ // does the key point to an index file ?
+ aKeyName = aInfFile.GetKeyName( nKey );
+ aNDX = aKeyName.Copy(0,3);
+
+ // yes -> add to the tables index list
+ if (aNDX == "NDX" )
+ {
+ aEntry = String(aInfFile.ReadKey(aKeyName), gsl_getSystemTextEncoding());
+ rTabInfo.aIndexList.push_back( OTableIndex( aEntry ) );
+
+ // and remove it from the free index list
+ RemoveFreeIndex( aEntry );
+ }
+
+ }
+
+ }
+
+ delete pDir;
+}
+
+void ODbaseIndexDialog::SetCtrls()
+{
+ // ComboBox Tabellen
+ for ( ConstTableInfoListIterator aLoop = m_aTableInfoList.begin();
+ aLoop != m_aTableInfoList.end();
+ ++aLoop
+ )
+ aCB_Tables.InsertEntry( aLoop->aTableName );
+
+ // Den ersten Datensatz ins Edit stellen
+ if( m_aTableInfoList.size() )
+ {
+ const OTableInfo& rTabInfo = m_aTableInfoList.front();
+ aCB_Tables.SetText( rTabInfo.aTableName );
+
+ // ListBox der Tabellenindizes aufbauen
+ for ( ConstTableIndexListIterator aIndex = rTabInfo.aIndexList.begin();
+ aIndex != rTabInfo.aIndexList.begin();
+ ++aIndex
+ )
+ aLB_TableIndexes.InsertEntry( aIndex->GetIndexFileName() );
+
+ if( rTabInfo.aIndexList.size() )
+ aLB_TableIndexes.SelectEntryPos( 0 );
+
+ }
+
+ // ListBox freie Indizes
+ for ( ConstTableIndexListIterator aFree = m_aFreeIndexList.begin();
+ aFree != m_aFreeIndexList.begin();
+ ++aFree
+ )
+ aLB_FreeIndexes.InsertEntry( aFree->GetIndexFileName() );
+
+ if( m_aFreeIndexList.size() )
+ aLB_FreeIndexes.SelectEntryPos( 0 );
+
+}
+
+//////////////////////////////////////////////////////////////////////////
+// Klasse OTableInfo
+void OTableInfo::WriteInfFile( const String& rDSN ) const
+{
+ // INF-Datei oeffnen
+ xub_StrLen nLen = aTableName.Len();
+ String aName = aTableName.Copy( 0,(nLen-4) ); // Extension ausblenden
+ String aFileName = rDSN;
+ aFileName += '\\';
+ aFileName += aName;
+ aFileName.AppendAscii(".inf");
+ Config aInfFile( aFileName );
+ aInfFile.SetGroup( aGroupIdent );
+
+ // Erst einmal alle Tabellenindizes loeschen
+ ByteString aNDX;
+ sal_uInt16 nKeyCnt = aInfFile.GetKeyCount();
+ ByteString aKeyName;
+ ByteString aEntry;
+ sal_uInt16 nKey = 0;
+
+ while( nKey < nKeyCnt )
+ {
+ // Verweist der Key auf ein Indexfile?...
+ aKeyName = aInfFile.GetKeyName( nKey );
+ aNDX = aKeyName.Copy(0,3);
+
+ //...wenn ja, Indexfile loeschen, nKey steht dann auf nachfolgendem Key
+ if( aNDX == "NDX" )
+ {
+ aInfFile.DeleteKey(aKeyName);
+ nKeyCnt--;
+ }
+ else
+ nKey++;
+
+ }
+
+ // Jetzt alle gespeicherten Indizes hinzufuegen
+ sal_uInt16 nPos = 0;
+ for ( ConstTableIndexListIterator aIndex = aIndexList.begin();
+ aIndex != aIndexList.end();
+ ++aIndex, ++nPos
+ )
+ {
+ aKeyName = "NDX";
+ if( nPos > 0 ) // Erster Index erhaelt keine Ziffer
+ aKeyName += ByteString::CreateFromInt32( nPos );
+ aInfFile.WriteKey( aKeyName, ByteString(aIndex->GetIndexFileName(), gsl_getSystemTextEncoding()) );
+ }
+
+ aInfFile.Flush();
+
+ // Falls nur noch [dbase] in INF-File steht, Datei loeschen
+ DirEntry aDirEntry( aFileName );
+ FileStat aFileStat( aDirEntry );
+ sal_uInt32 nFileSize = aFileStat.GetSize();
+ xub_StrLen nGroupIdLen = aGroupIdent.Len();
+
+ if( (xub_StrLen)nFileSize == (nGroupIdLen+4) )
+ aDirEntry.Kill();
+}
+
+//.........................................................................
+} // namespace dbaui
+//.........................................................................
+
+/*************************************************************************
+ * history:
+ * $Log: not supported by cvs2svn $
+ *
+ * Revision 1.0 26.09.00 15:54:26 fs
+ ************************************************************************/
+
diff --git a/dbaccess/source/ui/dlg/dbfindex.hrc b/dbaccess/source/ui/dlg/dbfindex.hrc
new file mode 100644
index 000000000..bde1ebc60
--- /dev/null
+++ b/dbaccess/source/ui/dlg/dbfindex.hrc
@@ -0,0 +1,26 @@
+#ifndef _DBAUI_DBF_INDEXES_HRC_
+#define _DBAUI_DBF_INDEXES_HRC_
+
+#define CB_TABLES 1
+
+#define FT_TABLES 1
+#define FT_TABLEINDEXES 2
+#define FT_ALLINDEXES 3
+
+#define GB_INDEXES 1
+
+#define LB_TABLEINDEXES 1
+#define LB_FREEINDEXES 2
+
+#define PB_OK 1
+#define PB_CANCEL 1
+#define PB_HELP 1
+
+#define PB_ADD 1
+#define PB_REMOVE 2
+#define PB_ADDALL 3
+#define PB_REMOVEALL 4
+
+
+#endif //_DBAUI_DBF_INDEXES_HRC_
+
diff --git a/dbaccess/source/ui/dlg/dbfindex.hxx b/dbaccess/source/ui/dlg/dbfindex.hxx
new file mode 100644
index 000000000..3421912b6
--- /dev/null
+++ b/dbaccess/source/ui/dlg/dbfindex.hxx
@@ -0,0 +1,207 @@
+/*************************************************************************
+ *
+ * $RCSfile: dbfindex.hxx,v $
+ *
+ * $Revision: 1.1 $
+ *
+ * last change: $Author: fs $ $Date: 2000-10-05 10:05:38 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc..
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _DBAUI_DBFINDEX_HXX_
+#define _DBAUI_DBFINDEX_HXX_
+
+#ifndef _DIALOG_HXX //autogen
+#include <vcl/dialog.hxx>
+#endif
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+#ifndef _COMBOBOX_HXX //autogen
+#include <vcl/combobox.hxx>
+#endif
+#ifndef _LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+#ifndef _SV_FIXED_HXX
+#include <vcl/fixed.hxx>
+#endif
+#ifndef __SGI_STL_LIST
+#include <stl/list>
+#endif
+#ifndef _UTL_STLTYPES_HXX_
+#include <unotools/stl_types.hxx>
+#endif
+
+//.........................................................................
+namespace dbaui
+{
+//.........................................................................
+
+//=========================================================================
+//= OTableIndex
+//=========================================================================
+/// represents a single dbf index
+class OTableIndex
+{
+private:
+ String aIndexFileName;
+
+public:
+ OTableIndex() { }
+ OTableIndex( const OTableIndex& _rSource) : aIndexFileName(_rSource.aIndexFileName) { }
+ OTableIndex( const String& rFileName ) : aIndexFileName( rFileName ) { }
+
+ void SetIndexFileName( const String& rFileName ) { aIndexFileName = rFileName; }
+ String GetIndexFileName() const { return aIndexFileName; }
+};
+
+//-------------------------------------------------------------------------
+typedef ::std::list< OTableIndex > TableIndexList;
+DECLARE_STL_ITERATORS(TableIndexList);
+
+//=========================================================================
+//= OTableInfo
+//=========================================================================
+class ODbaseIndexDialog;
+/** holds the INF file of a table
+*/
+class OTableInfo
+{
+ friend class ODbaseIndexDialog;
+private:
+ String aTableName;
+ TableIndexList aIndexList;
+
+public:
+ OTableInfo() { }
+ OTableInfo( const String& rName ) : aTableName(rName) { }
+
+ void WriteInfFile( const String& rDSN ) const;
+};
+
+//-------------------------------------------------------------------------
+typedef ::std::list< OTableInfo > TableInfoList;
+DECLARE_STL_ITERATORS(TableInfoList);
+
+//////////////////////////////////////////////////////////////////////////
+// IndexDialog
+class ODbaseIndexDialog : public ModalDialog
+{
+protected:
+ OKButton aPB_OK;
+ CancelButton aPB_CANCEL;
+ HelpButton aPB_HELP;
+
+ FixedText m_FT_Tables;
+ ComboBox aCB_Tables;
+
+ GroupBox m_GB_Indexes;
+
+ FixedText m_FT_TableIndexes;
+ ListBox aLB_TableIndexes;
+
+ FixedText m_FT_AllIndexes;
+ ListBox aLB_FreeIndexes;
+
+ PushButton aPB_Add;
+ PushButton aPB_Remove;
+ PushButton aPB_AddAll;
+ PushButton aPB_RemoveAll;
+
+ DECL_LINK( TableSelectHdl, ComboBox* );
+ DECL_LINK( AddClickHdl, PushButton* );
+ DECL_LINK( RemoveClickHdl, PushButton* );
+ DECL_LINK( AddAllClickHdl, PushButton* );
+ DECL_LINK( RemoveAllClickHdl, PushButton* );
+ DECL_LINK( OKClickHdl, PushButton* );
+
+ String m_aDSN;
+ TableInfoList m_aTableInfoList;
+ TableIndexList m_aFreeIndexList;
+ BOOL m_bCaseSensitiv;
+
+ void Init();
+ void SetCtrls();
+ sal_Bool GetTable(const String& rName, TableInfoListIterator& _rPosition);
+
+ OTableIndex implRemoveIndex(const String& _rName, TableIndexList& _rList, ListBox& _rDisplay);
+ void implInsertIndex(const OTableIndex& _rIndex, TableIndexList& _rList, ListBox& _rDisplay);
+
+ OTableIndex RemoveFreeIndex( const String& _rName ) { return implRemoveIndex(_rName, m_aFreeIndexList, aLB_FreeIndexes); }
+ void InsertFreeIndex( const OTableIndex& _rIndex ) { implInsertIndex(_rIndex, m_aFreeIndexList, aLB_FreeIndexes); }
+ OTableIndex RemoveTableIndex( const String& _rTableName, const String& _rIndexName );
+ void InsertTableIndex( const String& _rTableName, const OTableIndex& _rIndex );
+
+public:
+ ODbaseIndexDialog( Window * pParent, String aDataSrcName );
+ virtual ~ODbaseIndexDialog();
+};
+
+//.........................................................................
+} // namespace dbaui
+//.........................................................................
+
+#endif // _DBAUI_DBFINDEX_HXX_
+
+/*************************************************************************
+ * history:
+ * $Log: not supported by cvs2svn $
+ *
+ * Revision 1.0 26.09.00 15:49:08 fs
+ ************************************************************************/
+
diff --git a/dbaccess/source/ui/dlg/dbfindex.src b/dbaccess/source/ui/dlg/dbfindex.src
new file mode 100644
index 000000000..23f358e9e
--- /dev/null
+++ b/dbaccess/source/ui/dlg/dbfindex.src
@@ -0,0 +1,279 @@
+/*************************************************************************
+ *
+ * $RCSfile: dbfindex.src,v $
+ *
+ * $Revision: 1.1 $
+ *
+ * last change: $Author: fs $ $Date: 2000-10-05 10:05:48 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc..
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _DBAUI_DBF_INDEXES_HRC_
+#include "dbfindex.hrc"
+#endif
+#ifndef _DBU_RESOURCE_HRC_
+#include "dbu_resource.hrc"
+#endif
+
+#define WIN_X 202
+#define WIN_Y 168
+
+ModalDialog DLG_DBASE_INDEXES
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( WIN_X , WIN_Y ) ;
+ Text = "Indizes" ;
+ Text [ english ] = "Indexes" ;
+ Text [ italian ] = "Indici" ;
+ Text [ portuguese ] = "ndices" ;
+ Text [ french ] = "Index" ;
+ Text [ dutch ] = "Indices" ;
+ Text [ spanish ] = "ndices" ;
+ Text [ english_us ] = "Indexes" ;
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ OKButton PB_OK
+ {
+ Pos = MAP_APPFONT ( 6 , WIN_Y - 20 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ CancelButton PB_CANCEL
+ {
+ Pos = MAP_APPFONT ( 59 , WIN_Y - 20 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton PB_HELP
+ {
+ Pos = MAP_APPFONT ( WIN_X - 56 , WIN_Y - 20 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_TABLES
+ {
+ Pos = MAP_APPFONT ( 8 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ Text = "~Tabelle:" ;
+ Text [ english ] = "Table:" ;
+ Text [ english_us ] = "~Table:" ;
+ Text [ spanish ] = "~Tabla:" ;
+ Text [ french ] = "~Table :" ;
+ Text [ italian ] = "Tabella:" ;
+ Text [ dutch ] = "~Tabel:" ;
+ Text [ portuguese ] = "~Tabela:" ;
+ Text [ portuguese_brazilian ] = "Tabelle:" ;
+ Text [ danish ] = "Tabel:" ;
+ Text [ swedish ] = "~Tabell:" ;
+ Text[ chinese_simplified ] = "(~T)";
+ Text[ russian ] = ":";
+ Text[ polish ] = "Tabela:";
+ Text[ japanese ] = "ð(~T):";
+ Text[ chinese_traditional ] = "(~T)G";
+ Text[ arabic ] = ":";
+ Text[ greek ] = "~:";
+ Text[ korean ] = "ǥ:(~T)";
+ Text[ turkish ] = "Tablo:";
+ };
+ ComboBox CB_TABLES
+ {
+ Border = TRUE ;
+ SVLook = TRUE ;
+ Pos = MAP_APPFONT ( 62 , 5 ) ;
+ Size = MAP_APPFONT ( 134 , 12 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ GroupBox GB_INDEXES
+ {
+ Pos = MAP_APPFONT ( 6 , 22 ) ;
+ Size = MAP_APPFONT ( WIN_X - 12 , 120 ) ;
+ Text = "Zuweisung" ;
+ Text [ english ] = "Assignment" ;
+ Text [ english_us ] = "Assignment" ;
+ Text[ portuguese ] = "Atribuio";
+ Text[ russian ] = "";
+ Text[ greek ] = "";
+ Text[ dutch ] = "Toewijzing";
+ Text[ french ] = "Assignement";
+ Text[ spanish ] = "Asignacin";
+ Text[ italian ] = "Assegnazione";
+ Text[ danish ] = "Tildeling";
+ Text[ swedish ] = "Tilldelning";
+ Text[ polish ] = "Przydzia";
+ Text[ portuguese_brazilian ] = "Assignment";
+ Text[ japanese ] = "Kp";
+ Text[ korean ] = "";
+ Text[ chinese_simplified ] = "ָ";
+ Text[ chinese_traditional ] = "w";
+ Text[ arabic ] = "";
+ Text[ turkish ] = "Atama";
+ };
+ FixedText FT_TABLEINDEXES
+ {
+ Pos = MAP_APPFONT ( 12 , 33 ) ;
+ Size = MAP_APPFONT ( 83 , 10 ) ;
+ Text = "T~abellenindizes:" ;
+ Text [ english ] = "Table indexes:" ;
+ Text [ english_us ] = "T~able indexes:" ;
+ Text [ spanish ] = "ndices de ta~bla:" ;
+ Text [ french ] = "~Index de table :" ;
+ Text [ italian ] = "Indici t~abella:" ;
+ Text [ dutch ] = "Tabel~indices:" ;
+ Text [ portuguese ] = "~ndices de tabelas:" ;
+ Text [ portuguese_brazilian ] = "Tabellenindizes:" ;
+ Text [ swedish ] = "T~abellindex:" ;
+ Text [ danish ] = "Tabelindeks:" ;
+ Text[ chinese_simplified ] = "־(~A)";
+ Text[ russian ] = " :";
+ Text[ polish ] = "Indeksy tabeli:";
+ Text[ japanese ] = "ðق̲ޯ:";
+ Text[ chinese_traditional ] = "лxG";
+ Text[ arabic ] = " :";
+ Text[ greek ] = "~ :";
+ Text[ korean ] = "ǥ :(~A)";
+ Text[ turkish ] = "Tablo dizinleri:";
+ };
+ ListBox LB_TABLEINDEXES
+ {
+ Border = TRUE ;
+ SVLook = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 46 ) ;
+ Size = MAP_APPFONT ( 73 , 90 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_ALLINDEXES
+ {
+ Pos = MAP_APPFONT ( 117 , 33 ) ;
+ Size = MAP_APPFONT ( 73 , 10 ) ;
+ Text = "~Freie Indizes:" ;
+ Text [ english ] = "Free Indexes:" ;
+ Text [ english_us ] = "~Free indexes:" ;
+ Text [ spanish ] = "ndices lib~res:" ;
+ Text [ french ] = "Index ~libres" ;
+ Text [ italian ] = "Indici liberi:" ;
+ Text [ dutch ] = "~Vrije indices" ;
+ Text [ portuguese ] = "ndices ~livres" ;
+ Text [ portuguese_brazilian ] = "Freie Indizes" ;
+ Text [ swedish ] = "~Fria index:" ;
+ Text [ danish ] = "Frie indeks:" ;
+ Text[ chinese_simplified ] = "ɱ־(~F)";
+ Text[ russian ] = " ";
+ Text[ polish ] = "Wolne indeksy";
+ Text[ japanese ] = "ذ ޯ";
+ Text[ chinese_traditional ] = "ۥѼлx(~F)G";
+ Text[ arabic ] = " :";
+ Text[ greek ] = "~ ";
+ Text[ korean ] = " (~F)";
+ Text[ turkish ] = "Bo dizinler:";
+ };
+ ListBox LB_FREEINDEXES
+ {
+ Border = TRUE ;
+ SVLook = TRUE ;
+ Pos = MAP_APPFONT ( 117 , 46 ) ;
+ Size = MAP_APPFONT ( 73 , 90 ) ;
+ TabStop = TRUE ;
+ };
+ PushButton PB_ADD
+ {
+ Pos = MAP_APPFONT ( 91 , 60 ) ;
+ Size = MAP_APPFONT ( 20 , 14 ) ;
+ Text = "<-" ;
+ TabStop = TRUE ;
+ };
+ PushButton PB_ADDALL
+ {
+ Pos = MAP_APPFONT ( 91 , 77 ) ;
+ Size = MAP_APPFONT ( 20 , 14 ) ;
+ Text = "~<<=" ;
+ TabStop = TRUE ;
+ };
+ PushButton PB_REMOVE
+ {
+ Pos = MAP_APPFONT ( 91 , 98 ) ;
+ Size = MAP_APPFONT ( 20 , 14 ) ;
+ Text = "->" ;
+ TabStop = TRUE ;
+ };
+ PushButton PB_REMOVEALL
+ {
+ Pos = MAP_APPFONT ( 91, 114 ) ;
+ Size = MAP_APPFONT ( 20 , 14 ) ;
+ Text = "=~>>" ;
+ TabStop = TRUE ;
+ };
+
+ Text [ portuguese_brazilian ] = "Indizes" ;
+ Text [ swedish ] = "Index" ;
+ Text [ danish ] = "Indeks" ;
+ Text[ chinese_simplified ] = "־";
+ Text[ russian ] = "";
+ Text[ polish ] = "Indeksy";
+ Text[ japanese ] = "ޯ";
+ Text[ chinese_traditional ] = "лx";
+ Text[ arabic ] = "";
+ Text[ greek ] = "";
+ Text[ korean ] = "ε";
+ Text[ turkish ] = "Dizinler";
+};
+
+/*************************************************************************
+ * history:
+ * $Log: not supported by cvs2svn $
+ *
+ * Revision 1.0 26.09.00 17:03:30 fs
+ ************************************************************************/
+
diff --git a/dbaccess/source/ui/dlg/dsitems.hxx b/dbaccess/source/ui/dlg/dsitems.hxx
new file mode 100644
index 000000000..fd915f4b9
--- /dev/null
+++ b/dbaccess/source/ui/dlg/dsitems.hxx
@@ -0,0 +1,103 @@
+/*************************************************************************
+ *
+ * $RCSfile: dsitems.hxx,v $
+ *
+ * $Revision: 1.1 $
+ *
+ * last change: $Author: fs $ $Date: 2000-10-05 10:05:55 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc..
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _DBAUI_DATASOURCEITEMS_HXX_
+#define _DBAUI_DATASOURCEITEMS_HXX_
+
+//========================================================================
+//= item ids for the data source administration dialog
+
+#define DSID_NAME 1
+#define DSID_CONNECTURL 2
+#define DSID_TABLEFILTER 3
+#define DSID_TYPECOLLECTION 4
+#define DSID_INVALID_SELECTION 5
+#define DSID_READONLY 6
+#define DSID_USER 7
+#define DSID_PASSWORD 8
+#define DSID_ADDITIONALOPTIONS 9
+#define DSID_CHARSET 10
+#define DSID_ASKFOREMPTYPWD 11
+#define DSID_SHOWDELETEDROWS 12
+#define DSID_ALLOWLONGTABLENAMES 13
+#define DSID_JDBCDRIVERCLASS 14
+#define DSID_FIELDDELIMITER 15
+#define DSID_TEXTDELIMITER 16
+#define DSID_DECIMALDELIMITER 17
+#define DSID_THOUSANDSDELIMITER 18
+#define DSID_TEXTFILEEXTENSION 19
+#define DSID_TEXTFILEHEADER 20
+
+//========================================================================
+//= item range. Adjust this if you introduce new items above
+
+#define DSID_FIRST_ITEM_ID DSID_NAME
+#define DSID_LAST_ITEM_ID DSID_TEXTFILEHEADER
+
+#endif // _DBAUI_DATASOURCEITEMS_HXX_
+
+/*************************************************************************
+ * history:
+ * $Log: not supported by cvs2svn $
+ *
+ * Revision 1.0 22.09.00 08:10:45 fs
+ ************************************************************************/
+
diff --git a/dbaccess/source/ui/dlg/makefile.mk b/dbaccess/source/ui/dlg/makefile.mk
new file mode 100644
index 000000000..fe4fad571
--- /dev/null
+++ b/dbaccess/source/ui/dlg/makefile.mk
@@ -0,0 +1,106 @@
+ #########################################################################
+ #
+ # $RCSfile: makefile.mk,v $
+ #
+ # $Revision: 1.1 $
+ #
+ # last change: $Author: fs $ $Date: 2000-10-05 10:06:31 $
+ #
+ # The Contents of this file are made available subject to the terms of
+ # either of the following licenses
+ #
+ # - GNU Lesser General Public License Version 2.1
+ # - Sun Industry Standards Source License Version 1.1
+ #
+ # Sun Microsystems Inc., October, 2000
+ #
+ # GNU Lesser General Public License Version 2.1
+ # =============================================
+ # Copyright 2000 by Sun Microsystems, Inc.
+ # 901 San Antonio Road, Palo Alto, CA 94303, USA
+ #
+ # This library is free software; you can redistribute it and/or
+ # modify it under the terms of the GNU Lesser General Public
+ # License version 2.1, as published by the Free Software Foundation.
+ #
+ # This library is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ # Lesser General Public License for more details.
+ #
+ # You should have received a copy of the GNU Lesser General Public
+ # License along with this library; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ # MA 02111-1307 USA
+ #
+ #
+ # Sun Industry Standards Source License Version 1.1
+ # =================================================
+ # The contents of this file are subject to the Sun Industry Standards
+ # Source License Version 1.1 (the "License"); You may not use this file
+ # except in compliance with the License. You may obtain a copy of the
+ # License at http://www.openoffice.org/license.html.
+ #
+ # Software provided under this License is provided on an "AS IS" basis,
+ # WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING,
+ # WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ # MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ # See the License for the specific provisions governing your rights and
+ # obligations concerning the Software.
+ #
+ # The Initial Developer of the Original Code is: Sun Microsystems, Inc..
+ #
+ # Copyright: 2000 by Sun Microsystems, Inc.
+ #
+ # All Rights Reserved.
+ #
+ # Contributor(s): _______________________________________
+ #
+ #
+ ########################################################################/
+
+PRJ=..$/..$/..
+PRJINC=$(PRJ)$/source
+PRJNAME=dbaccess
+TARGET=uidlg
+
+ENABLE_EXCEPTIONS=TRUE
+
+# --- Settings ----------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files -------------------------------------
+
+# ... resource files ............................
+
+BMP_IN=$(PRJ)$/res
+
+SRCFILES = \
+ dbadmin.src \
+ dbfindex.src \
+ sqlmessage.src
+
+# ... object files ............................
+
+SLOFILES= \
+ $(SLO)$/adminpages.obj \
+ $(SLO)$/genericunodialog.obj \
+ $(SLO)$/dbadmin.obj \
+ $(SLO)$/unoadmin.obj \
+ $(SLO)$/unosqlmessage.obj \
+ $(SLO)$/sqlmessage.obj \
+ $(SLO)$/dbfindex.obj
+
+# --- Targets ----------------------------------
+
+.INCLUDE : target.mk
+
+
+ #########################################################################
+ # history:
+ # $Log: not supported by cvs2svn $
+ #
+ # Revision 1.0 20.09.00 10:58:55 fs
+ ########################################################################/
+
diff --git a/dbaccess/source/ui/dlg/sqlmessage.cxx b/dbaccess/source/ui/dlg/sqlmessage.cxx
new file mode 100644
index 000000000..d84ff15e8
--- /dev/null
+++ b/dbaccess/source/ui/dlg/sqlmessage.cxx
@@ -0,0 +1,552 @@
+/*************************************************************************
+ *
+ * $RCSfile: sqlmessage.cxx,v $
+ *
+ * $Revision: 1.1 $
+ *
+ * last change: $Author: fs $ $Date: 2000-10-05 10:06:44 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc..
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _DBAUI_SQLMESSAGE_HXX_
+#include "sqlmessage.hxx"
+#endif
+#ifndef _DBAUI_MODULE_DBU_HXX_
+#include "moduledbu.hxx"
+#endif
+#ifndef _DBU_RESOURCE_HRC_
+#include "dbu_resource.hrc"
+#endif
+#ifndef _DBAUI_SQLMESSAGE_HRC_
+#include "sqlmessage.hrc"
+#endif
+#ifndef _COM_SUN_STAR_SDBC_SQLEXCEPTION_HPP_
+#include <com/sun/star/sdbc/SQLException.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDB_SQLCONTEXT_HPP_
+#include <com/sun/star/sdb/SQLContext.hpp>
+#endif
+#ifndef _SV_GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+#ifndef _SVTREEBOX_HXX
+#include <svtools/svtreebx.hxx>
+#endif
+#ifndef _SVEDIT_HXX //autogen
+#include <svtools/svmedit.hxx>
+#endif
+#ifndef _DBHELPER_DBEXCEPTION_HXX_
+#include <connectivity/dbexception.hxx>
+#endif
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+
+#define BUTTONID_MORE BUTTONID_RETRY + 1
+
+#define DLG_LIMIT 320 // max dialog size
+#define BTN_HEIGHT 14
+#define BTN_WIDTH 50
+#define BORDER_HEIGHT 6 // default distance control - dialog
+#define BORDER_WIDTH 6 // default distance control - dialog
+
+using namespace dbtools;
+using namespace com::sun::star::sdb;
+using namespace com::sun::star::sdbc;
+
+//.........................................................................
+namespace dbaui
+{
+//.........................................................................
+
+//==============================================================================
+class OExceptionChainDialog : public ModalDialog
+{
+ GroupBox m_aFrame;
+ FixedText m_aListLabel;
+ SvTreeListBox m_aExceptionList;
+ FixedText m_aDescLabel;
+ MultiLineEdit m_aExceptionText;
+ OKButton m_aOK;
+
+public:
+ OExceptionChainDialog(Window* pParent, const ::com::sun::star::uno::Any& _rStart);
+ ~OExceptionChainDialog();
+
+protected:
+ DECL_LINK(OnExceptionSelected, void*);
+};
+
+//------------------------------------------------------------------------------
+OExceptionChainDialog::OExceptionChainDialog(Window* pParent, const ::com::sun::star::uno::Any& _rStart)
+ :ModalDialog(pParent, ModuleRes(DLG_SQLEXCEPTIONCHAIN))
+ ,m_aFrame (this, ResId(GB_DETAILS))
+ ,m_aListLabel (this, ResId(FT_ERRORLIST))
+ ,m_aExceptionList (this, ResId(CTL_ERRORLIST))
+ ,m_aDescLabel (this, ResId(FT_DESCRIPTION))
+ ,m_aExceptionText (this, ResId(ME_DESCRIPTION))
+ ,m_aOK (this, ResId(PB_OK))
+{
+ String sErrorLabel(ResId(STR_EXCEPTION_ERROR));
+ String sWarningLabel(ResId(STR_EXCEPTION_WARNING));
+ String sInfoLabel(ResId(STR_EXCEPTION_INFO));
+ String sDetailsLabel(ResId(STR_EXCEPTION_DETAILS));
+ String sStatusLabel(ResId(STR_EXCEPTION_STATUS));
+ String sErrorCodeLabel(ResId(STR_EXCEPTION_ERRORCODE));
+
+ FreeResource();
+
+ m_aExceptionList.SetSelectionMode(SINGLE_SELECTION);
+ m_aExceptionList.SetDragDropMode(0);
+ m_aExceptionList.EnableInplaceEditing(sal_False);
+ m_aExceptionList.SetWindowBits(WB_HASLINES | WB_HASLINESATROOT | WB_HASBUTTONS | WB_HASBUTTONSATROOT | WB_HSCROLL);
+
+ m_aExceptionList.SetSelectHdl(LINK(this, OExceptionChainDialog, OnExceptionSelected));
+ Image aCollapsedImage(Bitmap(ModuleRes(BMP_PLUSBUTTON)));
+ Image aExpandedImage(Bitmap(ModuleRes(BMP_MINUSBUTTON)));
+ m_aExceptionList.SetNodeBitmaps(aCollapsedImage, aExpandedImage);
+
+ m_aExceptionText.SetReadOnly(sal_True);
+
+ SQLExceptionInfo aInfo(_rStart);
+ DBG_ASSERT(aInfo.isValid(), "OExceptionChainDialog::OExceptionChainDialog : invalid chain start !");
+ SQLExceptionIteratorHelper aIter(( const ::com::sun::star::sdbc::SQLException*)aInfo);
+
+ Image aErrorImage(BMP_EXCEPTION_ERROR),
+ aWarningImage(BMP_EXCEPTION_WARNING),
+ m_aInfoImage(BMP_EXCEPTION_INFO);
+
+ while (aIter.hasMoreElements())
+ {
+ SQLExceptionInfo aCurrent(*aIter.next());
+ if (aCurrent.isValid())
+ {
+ const ::com::sun::star::sdbc::SQLException* pCurrentException = (const ::com::sun::star::sdbc::SQLException*)aCurrent;
+ SvLBoxEntry* pListEntry = NULL;
+ ::com::sun::star::sdbc::SQLException* pUserData;
+ switch (aCurrent.getType())
+ {
+ case SQLExceptionInfo::SQL_EXCEPTION:
+ pListEntry = m_aExceptionList.InsertEntry(sErrorLabel, aErrorImage, aErrorImage);
+ pUserData = new ::com::sun::star::sdbc::SQLException(*(const ::com::sun::star::sdbc::SQLException*)aCurrent);
+ if (pUserData->SQLState.getLength())
+ {
+ UniString sTitle(sStatusLabel);
+ sTitle.AppendAscii(" : ");
+ sTitle += pUserData->SQLState.getStr();
+ SvLBoxEntry* pSQLstateEntry = m_aExceptionList.InsertEntry(sTitle, aErrorImage, aErrorImage, pListEntry);
+ pSQLstateEntry->SetUserData(pUserData);
+ m_aExceptionList.Expand(pListEntry);
+ }
+ if (pUserData->ErrorCode != 0)
+ {
+ UniString sTitle(sErrorCodeLabel);
+ sTitle.AppendAscii(" : ");
+ sTitle += pUserData->ErrorCode;
+ SvLBoxEntry* pErrorCodeEntry = m_aExceptionList.InsertEntry(sTitle, aErrorImage, aErrorImage, pListEntry);
+ pErrorCodeEntry->SetUserData(pUserData);
+ m_aExceptionList.Expand(pListEntry);
+ }
+ break;
+ case SQLExceptionInfo::SQL_WARNING:
+ pListEntry = m_aExceptionList.InsertEntry(sWarningLabel, aWarningImage, aWarningImage);
+ pUserData = new ::com::sun::star::sdbc::SQLWarning(*(const ::com::sun::star::sdbc::SQLWarning*)aCurrent);
+ break;
+ case SQLExceptionInfo::SQL_CONTEXT:
+ {
+ pListEntry = m_aExceptionList.InsertEntry(sInfoLabel, m_aInfoImage, m_aInfoImage);
+ pUserData = new SQLContext(*(const SQLContext*)aCurrent);
+ if (((const SQLContext*)aCurrent)->Details.getLength())
+ {
+ SvLBoxEntry* pDetailsEntry = m_aExceptionList.InsertEntry(sDetailsLabel, m_aInfoImage, m_aInfoImage, pListEntry);
+ pDetailsEntry->SetUserData(pUserData);
+ m_aExceptionList.Expand(pListEntry);
+ }
+ }
+ break;
+ default:
+ DBG_ERROR("OExceptionChainDialog::OExceptionChainDialog : valid ::com::sun::star::sdbc::SQLException but unknown type !");
+ break;
+ }
+ if (pListEntry)
+ pListEntry->SetUserData(pUserData);
+ }
+ }
+}
+
+//------------------------------------------------------------------------------
+OExceptionChainDialog::~OExceptionChainDialog()
+{
+ SvLBoxEntry* pLoop = m_aExceptionList.First();
+ while (pLoop)
+ {
+ if (!m_aExceptionList.GetParent(pLoop))
+ // it's not the "details" entry for an SQLContext object
+ delete (::com::sun::star::sdbc::SQLException*)pLoop->GetUserData();
+ pLoop = m_aExceptionList.Next(pLoop);
+ }
+}
+
+//------------------------------------------------------------------------------
+IMPL_LINK(OExceptionChainDialog, OnExceptionSelected, void*, EMPTYARG)
+{
+ SvLBoxEntry* pSelected = m_aExceptionList.FirstSelected();
+ DBG_ASSERT(!pSelected || !m_aExceptionList.NextSelected(pSelected), "OExceptionChainDialog::OnExceptionSelected : multi selection ?");
+
+ if (!pSelected)
+ m_aExceptionText.SetText(UniString());
+ else
+ {
+ SQLExceptionInfo aInfo(*(const ::com::sun::star::sdbc::SQLException*)pSelected->GetUserData());
+ ::rtl::OUString aText = ((const ::com::sun::star::sdbc::SQLException*)aInfo)->Message;
+
+ if (m_aExceptionList.GetParent(pSelected))
+ if (aInfo.isKindOf(SQLExceptionInfo::SQL_CONTEXT))
+ // Context-Details
+ aText = ((const SQLContext*)aInfo)->Details;
+ else
+ // all other children get the text of the parent
+ aText = ((const ::com::sun::star::sdbc::SQLException*)aInfo)->Message;
+
+ m_aExceptionText.SetText(aText);
+ }
+
+ return 0L;
+}
+
+//------------------------------------------------------------------------------
+void OSQLMessageBox::Construct(const UniString& rTitle,
+ const UniString& rMessage,
+ WinBits nStyle,
+ MessageType eImage)
+{
+ SetText(String::CreateFromAscii("StarBase"));
+ SetSizePixel(LogicToPixel(Size(220, 30),MAP_APPFONT));
+
+ m_aInfoImage.SetPosSizePixel(LogicToPixel(Point(6, 6),MAP_APPFONT),
+ LogicToPixel(Size(20, 20),MAP_APPFONT));
+ m_aInfoImage.Show();
+
+ m_aTitle.SetPosSizePixel(LogicToPixel(Point(45, 6),MAP_APPFONT),
+ LogicToPixel(Size(169, 20),MAP_APPFONT));
+
+ Font aFont = m_aTitle.GetFont();
+ aFont.SetWeight(WEIGHT_SEMIBOLD);
+ m_aTitle.SetFont(aFont);
+ m_aTitle.Show();
+
+ m_aMessage.SetPosSizePixel(LogicToPixel(Point(45, 29),MAP_APPFONT),
+ LogicToPixel(Size(169, 1),MAP_APPFONT));
+ m_aMessage.Show();
+
+ m_pInfoButton = NULL;
+
+ // Image festlegen
+ switch (eImage)
+ {
+ case Info:
+ m_aInfoImage.SetImage(InfoBox::GetStandardImage());
+ break;
+ case Warning:
+ m_aInfoImage.SetImage(WarningBox::GetStandardImage());
+ break;
+ case Error:
+ m_aInfoImage.SetImage(ErrorBox::GetStandardImage());
+ break;
+ case Query:
+ m_aInfoImage.SetImage(QueryBox::GetStandardImage());
+ break;
+ }
+
+ // Title setzen
+ m_aTitle.SetText(rTitle);
+
+ // Ermitteln der Hoehe des Textfeldes und des Dialogs
+ Size aBorderSize = LogicToPixel(Size(BORDER_WIDTH, BORDER_HEIGHT),MAP_APPFONT);
+ Rectangle aDlgRect(GetPosPixel(),GetSizePixel());
+ Rectangle aMessageRect(m_aMessage.GetPosPixel(),m_aMessage.GetSizePixel());
+ Rectangle aTextRect =
+ GetTextRect(aMessageRect,rMessage, TEXT_DRAW_WORDBREAK |
+ TEXT_DRAW_MULTILINE | TEXT_DRAW_LEFT);
+
+ long nHText = aTextRect.Bottom() > aMessageRect.Bottom() ? aTextRect.Bottom() - aMessageRect.Bottom() : 0;
+
+ aDlgRect.Bottom() += nHText + 2 * aBorderSize.Height();
+ aMessageRect.Bottom() += nHText;
+
+ // Dialog anpassen
+ SetSizePixel(aDlgRect.GetSize());
+ SetPageSizePixel(aDlgRect.GetSize());
+
+ // Message Text anpassen und setzen
+ m_aMessage.SetSizePixel(aMessageRect.GetSize());
+ m_aMessage.SetText(rMessage);
+
+ // Buttons anlegen
+ long nBtnCount = (m_sInfo.Len() != 0) ? 1 : 0;
+ sal_Bool bHelp = sal_False; //aHelpBtn.IsVisible();
+
+ sal_uInt16 nDefId = 0;
+
+ if (nStyle & WB_DEF_YES)
+ nDefId = BUTTONID_YES;
+ else if (nStyle & WB_DEF_NO)
+ nDefId = BUTTONID_NO;
+ else if (nStyle & WB_DEF_CANCEL)
+ nDefId = BUTTONID_CANCEL;
+ else if (nStyle & WB_DEF_RETRY)
+ nDefId = BUTTONID_RETRY;
+ else
+ nDefId = BUTTONID_OK;
+
+ if (nStyle & WB_YES_NO_CANCEL)
+ {
+ if (nStyle & WB_DEF_YES)
+ AddButton(BUTTON_YES,BUTTONID_YES,BUTTONDIALOG_DEFBUTTON|BUTTONDIALOG_FOCUSBUTTON);
+ else
+ AddButton(BUTTON_YES,BUTTONID_YES,0);
+
+ if (nStyle & WB_DEF_NO)
+ AddButton(BUTTON_NO,BUTTONID_NO,BUTTONDIALOG_DEFBUTTON|BUTTONDIALOG_FOCUSBUTTON);
+ else
+ AddButton(BUTTON_NO,BUTTONID_NO, 0);
+
+ if (nStyle & WB_DEF_CANCEL)
+ AddButton(BUTTON_CANCEL,BUTTONID_CANCEL,BUTTONDIALOG_DEFBUTTON|BUTTONDIALOG_FOCUSBUTTON);
+ else
+ AddButton(BUTTON_CANCEL,BUTTONID_CANCEL, 0);
+ }
+ else if (nStyle & WB_OK_CANCEL)
+ {
+ if (nStyle & WB_DEF_CANCEL)
+ {
+ AddButton(BUTTON_OK,BUTTONID_OK,0);
+ AddButton(BUTTON_CANCEL,BUTTONID_CANCEL,BUTTONDIALOG_DEFBUTTON|BUTTONDIALOG_FOCUSBUTTON);
+ }
+ else
+ {
+ AddButton(BUTTON_OK,BUTTONID_OK,BUTTONDIALOG_DEFBUTTON|BUTTONDIALOG_FOCUSBUTTON);
+ AddButton(BUTTON_CANCEL,BUTTONID_CANCEL,0);
+ }
+ }
+ else if (nStyle & WB_YES_NO)
+ {
+ if (nStyle & WB_DEF_YES)
+ AddButton(BUTTON_YES,BUTTONID_YES,BUTTONDIALOG_DEFBUTTON|BUTTONDIALOG_FOCUSBUTTON);
+ else
+ AddButton(BUTTON_YES,BUTTONID_YES,0);
+
+ if (nStyle & WB_DEF_NO)
+ AddButton(BUTTON_NO,BUTTONID_NO,BUTTONDIALOG_DEFBUTTON|BUTTONDIALOG_FOCUSBUTTON);
+ else
+ AddButton(BUTTON_NO,BUTTONID_NO, 0);
+ }
+ else if (nStyle & WB_RETRY_CANCEL)
+ {
+ if (nStyle & WB_DEF_RETRY)
+ AddButton(BUTTON_RETRY,BUTTONID_RETRY,BUTTONDIALOG_DEFBUTTON|BUTTONDIALOG_FOCUSBUTTON);
+ else
+ AddButton(BUTTON_YES,BUTTONID_YES,0);
+
+ if (nStyle & WB_DEF_CANCEL)
+ AddButton(BUTTON_CANCEL,BUTTONID_CANCEL,BUTTONDIALOG_DEFBUTTON|BUTTONDIALOG_FOCUSBUTTON);
+ else
+ AddButton(BUTTON_CANCEL,BUTTONID_CANCEL, 0);
+ }
+ else
+ {
+ DBG_ASSERT(WB_OK & nStyle, "kein Button gesetzt");
+ AddButton(BUTTON_OK,BUTTONID_OK,BUTTONDIALOG_DEFBUTTON|BUTTONDIALOG_FOCUSBUTTON);
+ }
+
+ sal_Bool bAtLeastTwo = m_aNextChainElement.hasValue() && ((::com::sun::star::sdbc::SQLException*)m_aNextChainElement.getValue())->NextException.getValue();
+ if (bAtLeastTwo)
+ {
+ m_pInfoButton = new PushButton(this);
+ m_pInfoButton->SetText(Button::GetStandardText(BUTTON_MORE));
+ m_pInfoButton->SetClickHdl(LINK(this,OSQLMessageBox,ButtonClickHdl));
+ m_pInfoButton->Show();
+ AddButton(m_pInfoButton, BUTTONID_MORE, 0);
+ }
+}
+
+//------------------------------------------------------------------------------
+void OSQLMessageBox::Construct(const SQLExceptionInfo& _rException, WinBits _nStyle, MessageType _eImage)
+{
+ const SQLException* pFirst = NULL;
+ if (_rException.isKindOf(SQLExceptionInfo::SQL_EXCEPTION))
+ pFirst = (const SQLException*)_rException;
+
+ // get the first two strings in the chain
+ String sTitle, sMessage;
+ if (pFirst)
+ {
+ sTitle = pFirst->Message;
+ // we assume this to be not empty, so in reall we're searching the only te second string, the first
+ // one is always the Message of the first exception)
+
+ if (_rException.isKindOf(SQLExceptionInfo::SQL_CONTEXT))
+ { // take the detailed message
+ const SQLContext* pContext = (const SQLContext*)_rException;
+ sMessage = pContext->Details.getStr();
+ }
+
+ if (!sMessage.Len())
+ {
+ // loop through all the remaining exceptions
+ SQLExceptionIteratorHelper aIter((const SQLException*)pFirst);
+ // note that this leaves aIter in a state where it's current exception is only an SQLException,
+ // even if _rException was more than this. But this is irrelevant here, as we always handled
+ // this first chain element
+ while (aIter.hasMoreElements())
+ {
+ SQLExceptionInfo aInfo(*aIter.next());
+ if (aInfo.isValid())
+ { // first take the normal message of the exception
+ const SQLException* pException = (const SQLException*)aInfo;
+ sMessage = pException->Message.getStr();
+ // the, if necessary and possible, the details
+ if (aInfo.isKindOf(SQLExceptionInfo::SQL_CONTEXT))
+ { // check if we have a detailed message
+ const SQLContext* pContext = (const SQLContext*)aInfo;
+ sMessage = pContext->Details.getStr();
+ }
+ }
+ }
+ }
+ }
+
+ if (!sMessage.Len())
+ { // use the only string we have as message and an default title
+ sMessage = sTitle;
+ sTitle = ModuleRes(STR_GENERAL_SDB_ERROR);
+ }
+
+ Construct(sTitle, sMessage, _nStyle, _eImage);
+}
+
+//------------------------------------------------------------------------------
+OSQLMessageBox::OSQLMessageBox(Window* _pParent, const UniString& _rTitle, const ::com::sun::star::sdbc::SQLException& _rError, WinBits _nStyle,
+ MessageType _eImage)
+ :ButtonDialog(_pParent,WB_HORZ | WB_STDDIALOG)
+ ,m_aInfoImage(this)
+ ,m_aTitle(this,WB_WORDBREAK | WB_LEFT)
+ ,m_aMessage(this,WB_WORDBREAK | WB_LEFT)
+ ,m_pInfoButton(NULL)
+ ,m_aNextChainElement(SQLExceptionInfo(_rError).get())
+{
+ Construct(_rTitle, _rError.Message, _nStyle, _eImage);
+}
+
+//------------------------------------------------------------------------------
+OSQLMessageBox::OSQLMessageBox(Window* _pParent, const ::com::sun::star::sdbc::SQLException& _rError, WinBits _nStyle, MessageType _eImage)
+ :ButtonDialog(_pParent,WB_HORZ | WB_STDDIALOG)
+ ,m_aInfoImage(this)
+ ,m_aTitle(this,WB_WORDBREAK | WB_LEFT)
+ ,m_aMessage(this,WB_WORDBREAK | WB_LEFT)
+ ,m_pInfoButton(NULL)
+ ,m_aNextChainElement(SQLExceptionInfo(_rError).get())
+{
+ Construct(SQLExceptionInfo(_rError), _nStyle, _eImage);
+}
+
+//------------------------------------------------------------------------------
+OSQLMessageBox::OSQLMessageBox(Window* _pParent, const SQLExceptionInfo& _rException, WinBits _nStyle, MessageType _eImage)
+ :ButtonDialog(_pParent,WB_HORZ | WB_STDDIALOG)
+ ,m_aInfoImage(this)
+ ,m_aTitle(this,WB_WORDBREAK | WB_LEFT)
+ ,m_aMessage(this,WB_WORDBREAK | WB_LEFT)
+ ,m_pInfoButton(NULL)
+{
+ Construct(_rException, _nStyle, _eImage);
+}
+
+//------------------------------------------------------------------------------
+OSQLMessageBox::OSQLMessageBox(Window* pParent, const UniString& rTitle, const UniString& rMessage, WinBits nStyle, MessageType eImage)
+ :ButtonDialog(pParent,WB_HORZ | WB_STDDIALOG)
+ ,m_aInfoImage(this)
+ ,m_aTitle(this,WB_WORDBREAK | WB_LEFT)
+ ,m_aMessage(this,WB_WORDBREAK | WB_LEFT)
+ ,m_pInfoButton(NULL)
+{
+ Construct(rTitle, rMessage, nStyle, eImage);
+}
+
+//------------------------------------------------------------------------------
+OSQLMessageBox::~OSQLMessageBox()
+{
+ delete m_pInfoButton;
+}
+
+//--------------------------------------------------------------------------
+IMPL_LINK( OSQLMessageBox, ButtonClickHdl, Button *, pButton )
+{
+ OExceptionChainDialog aDlg(GetParent(), m_aNextChainElement);
+ Hide();
+ aDlg.Execute();
+ Show();
+ return 0;
+}
+
+//.........................................................................
+} // namespace dbaui
+//.........................................................................
+
+/*************************************************************************
+ * history:
+ * $Log: not supported by cvs2svn $
+ *
+ * Revision 1.0 02.10.00 12:37:20 fs
+ ************************************************************************/
+
diff --git a/dbaccess/source/ui/dlg/sqlmessage.hrc b/dbaccess/source/ui/dlg/sqlmessage.hrc
new file mode 100644
index 000000000..77ec51f77
--- /dev/null
+++ b/dbaccess/source/ui/dlg/sqlmessage.hrc
@@ -0,0 +1,95 @@
+/*************************************************************************
+ *
+ * $RCSfile: sqlmessage.hrc,v $
+ *
+ * $Revision: 1.1 $
+ *
+ * last change: $Author: fs $ $Date: 2000-10-05 10:07:00 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc..
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _DBAUI_SQLMESSAGE_HRC_
+#define _DBAUI_SQLMESSAGE_HRC_
+
+#define FT_ERRORLIST 1
+#define FT_DESCRIPTION 2
+
+#define ED_TEXT 1
+
+#define GB_DATA 1
+#define GB_DETAILS 2
+
+#define PB_OK 1
+#define PB_CANCEL 2
+
+#define CTL_ERRORLIST 1
+
+#define ME_DESCRIPTION 1
+
+#define STR_EXCEPTION_ERROR 1
+#define STR_EXCEPTION_WARNING 2
+#define STR_EXCEPTION_INFO 3
+#define STR_EXCEPTION_DETAILS 4
+#define STR_EXCEPTION_STATUS 5
+#define STR_EXCEPTION_ERRORCODE 6
+
+#endif // _DBAUI_SQLMESSAGE_HRC_
+
+/*************************************************************************
+ * history:
+ * $Log: not supported by cvs2svn $
+ *
+ * Revision 1.0 02.10.00 12:44:05 fs
+ ************************************************************************/
+
diff --git a/dbaccess/source/ui/dlg/sqlmessage.src b/dbaccess/source/ui/dlg/sqlmessage.src
new file mode 100644
index 000000000..fe0cfafe4
--- /dev/null
+++ b/dbaccess/source/ui/dlg/sqlmessage.src
@@ -0,0 +1,322 @@
+/*************************************************************************
+ *
+ * $RCSfile: sqlmessage.src,v $
+ *
+ * $Revision: 1.1 $
+ *
+ * last change: $Author: fs $ $Date: 2000-10-05 10:07:13 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc..
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _DBU_RESOURCE_HRC_
+#include "dbu_resource.hrc"
+#endif
+#ifndef _DBAUI_SQLMESSAGE_HRC_
+#include "sqlmessage.hrc"
+#endif
+
+//-------------------------------------------------------------------------
+Image BMP_EXCEPTION_ERROR
+{
+ ImageBitmap = Bitmap { File = "exerror.bmp"; };
+ MaskColor = Color { Red = 0xff00 ; Green = 0x0000 ; Blue = 0xff00 ; };
+};
+
+Image BMP_EXCEPTION_WARNING
+{
+ ImageBitmap = Bitmap { File = "exwarning.bmp"; };
+ MaskColor = Color { Red = 0xff00 ; Green = 0x0000 ; Blue = 0xff00 ; };
+};
+
+Image BMP_EXCEPTION_INFO
+{
+ ImageBitmap = Bitmap { File = "exinfo.bmp"; };
+ MaskColor = Color { Red = 0xff00 ; Green = 0x0000 ; Blue = 0xff00 ; };
+};
+
+ModalDialog DLG_SQLMESSAGE
+{
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 238 , 101 ) ;
+ Text = "Text" ;
+ Text [ ENGLISH ] = "Text" ;
+ Text [ norwegian ] = "Text" ;
+ Text [ italian ] = "Testo" ;
+ Text [ portuguese_brazilian ] = "Texto" ;
+ Text [ portuguese ] = "Texto" ;
+ Text [ finnish ] = "Teksti" ;
+ Text [ danish ] = "Tekst" ;
+ Text [ french ] = "Texte" ;
+ Text [ swedish ] = "Text" ;
+ Text [ dutch ] = "Tekst" ;
+ Text [ spanish ] = "Texto" ;
+ Text [ english_us ] = "Text" ;
+ MultiLineEdit ED_TEXT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 153 , 76 ) ;
+ TabStop = TRUE ;
+ };
+ GroupBox GB_DATA
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 165 , 92 ) ;
+ Text = "Text" ;
+ Text [ ENGLISH ] = "Text" ;
+ Text [ norwegian ] = "Text" ;
+ Text [ italian ] = "Testo" ;
+ Text [ portuguese_brazilian ] = "Texto" ;
+ Text [ portuguese ] = "Texto" ;
+ Text [ finnish ] = "Teksti" ;
+ Text [ danish ] = "Tekst" ;
+ Text [ french ] = "Texte" ;
+ Text [ swedish ] = "Text" ;
+ Text [ dutch ] = "Tekst" ;
+ Text [ spanish ] = "Texto" ;
+ Text [ english_us ] = "Text" ;
+ Text[ chinese_simplified ] = "";
+ Text[ russian ] = "";
+ Text[ polish ] = "Tekst";
+ Text[ japanese ] = "÷";
+ Text[ chinese_traditional ] = "r";
+ Text[ arabic ] = "";
+ Text[ greek ] = "";
+ Text[ korean ] = "ؽƮ";
+ Text[ turkish ] = "Metin";
+ Text[ language_user1 ] = " ";
+ };
+ OKButton PB_OK
+ {
+ Pos = MAP_APPFONT ( 181 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton PB_CANCEL
+ {
+ Pos = MAP_APPFONT ( 181 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ Text[ chinese_simplified ] = "";
+ Text[ russian ] = "";
+ Text[ polish ] = "Tekst";
+ Text[ japanese ] = "÷";
+ Text[ chinese_traditional ] = "r";
+ Text[ arabic ] = "";
+ Text[ greek ] = "";
+ Text[ korean ] = "ؽƮ";
+ Text[ turkish ] = "Metin";
+ Text[ language_user1 ] = " ";
+
+ String STR_EXCEPTION_ERROR
+ {
+ Text = "Fehler";
+ Text [ english ] = "Error";
+ Text [ english_us ] = "Error";
+ };
+ String STR_EXCEPTION_WARNING
+ {
+ Text = "Warnung";
+ Text [ english ] = "Warning";
+ Text [ english_us ] = "Warning";
+ };
+ String STR_EXCEPTION_INFO
+ {
+ Text = "Information";
+ Text [ english ] = "Information";
+ Text [ english_us ] = "Information";
+ };
+ String STR_EXCEPTION_DETAILS
+ {
+ Text = "Details";
+ Text [ english ] = "Details";
+ Text [ english_us ] = "Details";
+ };
+ String STR_EXCEPTION_STATUS
+ {
+ Text = "SQL-Status";
+ Text [ english ] = "SQL State";
+ Text [ english_us ] = "SQL State";
+ };
+ String STR_EXCEPTION_ERRORCODE
+ {
+ Text = "Fehler-Code";
+ Text [ english ] = "Error code";
+ Text [ english_us ] = "Error code";
+ };
+};
+
+ModalDialog DLG_SQLEXCEPTIONCHAIN
+{
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 280 , 150 ) ;
+ Text = "StarBase" ;
+
+ GroupBox GB_DETAILS
+ {
+ Pos = MAP_APPFONT ( 6, 3 ) ;
+ Size = MAP_APPFONT ( 268, 121 ) ;
+ Text = "Details";
+ Text [ english ] = "details";
+ Text [ english_us ] = "Details";
+ Text[ portuguese ] = "Detalhes";
+ Text[ russian ] = "";
+ Text[ greek ] = "";
+ Text[ dutch ] = "Details";
+ Text[ french ] = "Dtails";
+ Text[ spanish ] = "Detalles";
+ Text[ italian ] = "Dettagli";
+ Text[ danish ] = "Detaljer";
+ Text[ swedish ] = "Detaljer";
+ Text[ polish ] = "Szczegy";
+ Text[ portuguese_brazilian ] = "details";
+ Text[ japanese ] = "ڍ";
+ Text[ korean ] = "ڼ";
+ Text[ chinese_simplified ] = "ϸ";
+ Text[ chinese_traditional ] = "Ӹ`";
+ Text[ arabic ] = "";
+ Text[ turkish ] = "Ayrntlar";
+ };
+ FixedText FT_ERRORLIST
+ {
+ Pos = MAP_APPFONT ( 12, 12 ) ;
+ Size = MAP_APPFONT ( 125, 10 ) ;
+ Text = "~Fehlerliste:";
+ Text [ english ] = "error ~list:";
+ Text [ english_us ] = "Error ~list:";
+ Group = TRUE;
+ Text[ portuguese ] = "~Lista de erros:";
+ Text[ russian ] = " :";
+ Text[ greek ] = " :";
+ Text[ dutch ] = "Lijst met ~fouten:";
+ Text[ french ] = "~Liste d'erreurs :";
+ Text[ spanish ] = "Lista de ~errores:";
+ Text[ italian ] = "Lista errori:";
+ Text[ danish ] = "~Fejlliste:";
+ Text[ swedish ] = "~Fellista:";
+ Text[ polish ] = "~Lista bdw:";
+ Text[ portuguese_brazilian ] = "error ~list:";
+ Text[ japanese ] = "װؽ:";
+ Text[ korean ] = " (~L)";
+ Text[ chinese_simplified ] = "е";
+ Text[ chinese_traditional ] = "~MG";
+ Text[ arabic ] = " :";
+ Text[ turkish ] = "Hata listesi:";
+ };
+ Control CTL_ERRORLIST
+ {
+ Pos = MAP_APPFONT ( 12, 25 ) ;
+ Size = MAP_APPFONT ( 125, 93 ) ;
+ Border = TRUE;
+ TabStop = TRUE;
+ };
+ FixedText FT_DESCRIPTION
+ {
+ Pos = MAP_APPFONT ( 143, 12 ) ;
+ Size = MAP_APPFONT ( 125, 10 ) ;
+ Text = "~Beschreibung:";
+ Text [ english ] = "~description:";
+ Text [ english_us ] = "~Description:";
+ Group = TRUE;
+ Text[ portuguese ] = "~Descrio:";
+ Text[ russian ] = ":";
+ Text[ greek ] = ":";
+ Text[ dutch ] = "~beschrijving:";
+ Text[ french ] = "~description :";
+ Text[ spanish ] = "~Descripcin:";
+ Text[ italian ] = "Descrizione:";
+ Text[ danish ] = "~Beskrivelse:";
+ Text[ swedish ] = "~Beskrivning:";
+ Text[ polish ] = "~Opis:";
+ Text[ portuguese_brazilian ] = "~description:";
+ Text[ japanese ] = ":";
+ Text[ korean ] = ":(~D)";
+ Text[ chinese_simplified ] = "˵";
+ Text[ chinese_traditional ] = "yzG";
+ Text[ arabic ] = ":";
+ Text[ turkish ] = "Aklama:";
+ };
+ MultiLineEdit ME_DESCRIPTION
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 143 , 25 ) ;
+ Size = MAP_APPFONT ( 125 , 93 ) ;
+ TabStop = TRUE ;
+ VScroll = TRUE ;
+ };
+ OKButton PB_OK
+ {
+ Pos = MAP_APPFONT ( 115 , 130 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+};
+
+
+/*************************************************************************
+ * history:
+ * $Log: not supported by cvs2svn $
+ *
+ * Revision 1.0 02.10.00 12:43:18 fs
+ ************************************************************************/
+