diff options
author | Frank Schönheit <fs@openoffice.org> | 2000-10-05 09:09:48 +0000 |
---|---|---|
committer | Frank Schönheit <fs@openoffice.org> | 2000-10-05 09:09:48 +0000 |
commit | c38d96eb7b5314cd8ca415874ee9c5cd8b78e62e (patch) | |
tree | 8634b0a41d901de885a17d203fdd020b648e5330 /dbaccess/source/ui/dlg | |
parent | 894aa4cfccd91f2426824fc787f5e4d642912729 (diff) |
initial checkin
Diffstat (limited to 'dbaccess/source/ui/dlg')
-rw-r--r-- | dbaccess/source/ui/dlg/adminpages.cxx | 1344 | ||||
-rw-r--r-- | dbaccess/source/ui/dlg/adminpages.hxx | 402 | ||||
-rw-r--r-- | dbaccess/source/ui/dlg/dbadmin.cxx | 540 | ||||
-rw-r--r-- | dbaccess/source/ui/dlg/dbadmin.hrc | 146 | ||||
-rw-r--r-- | dbaccess/source/ui/dlg/dbadmin.src | 1435 | ||||
-rw-r--r-- | dbaccess/source/ui/dlg/dbfindex.cxx | 510 | ||||
-rw-r--r-- | dbaccess/source/ui/dlg/dbfindex.hrc | 26 | ||||
-rw-r--r-- | dbaccess/source/ui/dlg/dbfindex.hxx | 207 | ||||
-rw-r--r-- | dbaccess/source/ui/dlg/dbfindex.src | 279 | ||||
-rw-r--r-- | dbaccess/source/ui/dlg/dsitems.hxx | 103 | ||||
-rw-r--r-- | dbaccess/source/ui/dlg/makefile.mk | 106 | ||||
-rw-r--r-- | dbaccess/source/ui/dlg/sqlmessage.cxx | 552 | ||||
-rw-r--r-- | dbaccess/source/ui/dlg/sqlmessage.hrc | 95 | ||||
-rw-r--r-- | dbaccess/source/ui/dlg/sqlmessage.src | 322 |
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 + ************************************************************************/ + |