summaryrefslogtreecommitdiff
path: root/basctl/source/basicide/moduldl2.cxx
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2012-01-28 20:52:45 +0100
committerMichael Stahl <mstahl@redhat.com>2012-01-28 20:52:45 +0100
commit2e626373db2412ac22e8c5c27a60d11cd29e875b (patch)
tree9e9f67205cd5b72f1031721273e1534a3a1e5b0f /basctl/source/basicide/moduldl2.cxx
parentf7ee7bbd5174b084f018c2ec94d8c70c98ee04da (diff)
replace obsolete "master" branch with README that points at new repoHEADmaster-deletedmaster
Diffstat (limited to 'basctl/source/basicide/moduldl2.cxx')
-rw-r--r--basctl/source/basicide/moduldl2.cxx1706
1 files changed, 0 insertions, 1706 deletions
diff --git a/basctl/source/basicide/moduldl2.cxx b/basctl/source/basicide/moduldl2.cxx
deleted file mode 100644
index f1759d633..000000000
--- a/basctl/source/basicide/moduldl2.cxx
+++ /dev/null
@@ -1,1706 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_basctl.hxx"
-
-#define GLOBALOVERFLOW
-
-#include <ide_pch.hxx>
-
-#include <sot/storinfo.hxx>
-
-#include <moduldlg.hrc>
-#include <moduldlg.hxx>
-#include <basidesh.hrc>
-#include <basidesh.hxx>
-#include <bastypes.hxx>
-#include <basobj.hxx>
-#include <baside2.hrc>
-#include <iderdll.hxx>
-#include <iderdll2.hxx>
-#include <svx/passwd.hxx>
-#include <sbxitem.hxx>
-#include <basdoc.hxx>
-#include <ucbhelper/content.hxx>
-#include "rtl/uri.hxx"
-#include <tools/urlobj.hxx>
-#include <tools/diagnose_ex.h>
-
-#include <sot/storage.hxx>
-#include <com/sun/star/ui/dialogs/XFilePicker.hpp>
-#include <com/sun/star/ui/dialogs/XFolderPicker.hpp>
-#include <com/sun/star/ui/dialogs/XFilterManager.hpp>
-#include <com/sun/star/ui/dialogs/TemplateDescription.hpp>
-#include <com/sun/star/script/XLibraryContainer2.hpp>
-#include <com/sun/star/script/XLibraryContainerPassword.hpp>
-#include <com/sun/star/script/XLibraryContainerExport.hpp>
-#include <com/sun/star/ucb/XSimpleFileAccess.hpp>
-#include "com/sun/star/ucb/XCommandEnvironment.hpp"
-#include <com/sun/star/ucb/NameClash.hpp>
-#include "com/sun/star/packages/manifest/XManifestWriter.hpp"
-#include <unotools/pathoptions.hxx>
-#include <comphelper/processfactory.hxx>
-
-#include <com/sun/star/util/VetoException.hpp>
-#include <com/sun/star/script/ModuleSizeExceededRequest.hpp>
-
-using namespace ::comphelper;
-using ::rtl::OUString;
-using namespace ::com::sun::star;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::ucb;
-using namespace ::com::sun::star::ui::dialogs;
-
-
-typedef ::cppu::WeakImplHelper1< task::XInteractionHandler > HandlerImpl_BASE;
-
-class DummyInteractionHandler : public HandlerImpl_BASE
-{
- Reference< task::XInteractionHandler > m_xHandler;
-public:
- DummyInteractionHandler( const Reference< task::XInteractionHandler >& xHandler ) : m_xHandler( xHandler ){}
-
- virtual void SAL_CALL handle( const Reference< task::XInteractionRequest >& rRequest ) throw (::com::sun::star::uno::RuntimeException)
- {
- if ( m_xHandler.is() )
- {
- script::ModuleSizeExceededRequest aModSizeException;
- if ( rRequest->getRequest() >>= aModSizeException )
- m_xHandler->handle( rRequest );
- }
- }
-};
-
-//----------------------------------------------------------------------------
-// BasicLibUserData
-//----------------------------------------------------------------------------
-class BasicLibUserData
-{
-private:
- ScriptDocument m_aDocument;
-
-public:
- BasicLibUserData( const ScriptDocument& rDocument ) : m_aDocument( rDocument ) { }
- virtual ~BasicLibUserData() {};
-
- const ScriptDocument&
- GetDocument() const { return m_aDocument; }
-};
-
-
-//----------------------------------------------------------------------------
-// BasicLibLBoxString
-//----------------------------------------------------------------------------
-
-class BasicLibLBoxString : public SvLBoxString
-{
-public:
- BasicLibLBoxString( SvLBoxEntry* pEntry, sal_uInt16 nFlags, const String& rTxt ) :
- SvLBoxString( pEntry, nFlags, rTxt ) {}
-
- virtual void Paint( const Point& rPos, SvLBox& rDev, sal_uInt16 nFlags, SvLBoxEntry* pEntry );
-};
-
-//----------------------------------------------------------------------------
-
-void BasicLibLBoxString::Paint( const Point& rPos, SvLBox& rDev, sal_uInt16, SvLBoxEntry* pEntry )
-{
- // Change text color if library is read only:
- bool bReadOnly = false;
- if (pEntry && pEntry->GetUserData())
- {
- ScriptDocument aDocument(
- static_cast< BasicLibUserData * >(pEntry->GetUserData())->
- GetDocument() );
-
- rtl::OUString aLibName(
- static_cast< SvLBoxString * >(pEntry->GetItem(1))->GetText());
- Reference< script::XLibraryContainer2 > xModLibContainer(
- aDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY);
- Reference< script::XLibraryContainer2 > xDlgLibContainer(
- aDocument.getLibraryContainer( E_DIALOGS ), UNO_QUERY);
- bReadOnly
- = (xModLibContainer.is() && xModLibContainer->hasByName(aLibName)
- && xModLibContainer->isLibraryReadOnly(aLibName))
- || (xDlgLibContainer.is() && xDlgLibContainer->hasByName(aLibName)
- && xDlgLibContainer->isLibraryReadOnly(aLibName));
- }
- if (bReadOnly)
- rDev.DrawCtrlText(rPos, GetText(), 0, STRING_LEN, TEXT_DRAW_DISABLE);
- else
- rDev.DrawText(rPos, GetText());
-}
-
-
-//----------------------------------------------------------------------------
-// BasicCheckBox
-//----------------------------------------------------------------------------
-
-BasicCheckBox::BasicCheckBox( Window* pParent, const ResId& rResId )
- :SvTabListBox( pParent, rResId )
- ,m_aDocument( ScriptDocument::getApplicationScriptDocument() )
-{
- nMode = LIBMODE_MANAGER;
- long aTabs_[] = { 1, 12 }; // Mindestens einen braucht die TabPos...
- // 12 wegen der Checkbox
- SetTabs( aTabs_ );
- Init();
-}
-
-//----------------------------------------------------------------------------
-
-BasicCheckBox::~BasicCheckBox()
-{
- delete pCheckButton;
-
- // delete user data
- SvLBoxEntry* pEntry = First();
- while ( pEntry )
- {
- delete (BasicLibUserData*)pEntry->GetUserData();
- pEntry = Next( pEntry );
- }
-}
-
-//----------------------------------------------------------------------------
-
-void BasicCheckBox::Init()
-{
- pCheckButton = new SvLBoxButtonData(this);
-
- if ( nMode == LIBMODE_CHOOSER )
- EnableCheckButton( pCheckButton );
- else
- EnableCheckButton( 0 );
-
- SetHighlightRange();
-}
-
-//----------------------------------------------------------------------------
-
-void BasicCheckBox::SetMode( sal_uInt16 n )
-{
- nMode = n;
-
- if ( nMode == LIBMODE_CHOOSER )
- EnableCheckButton( pCheckButton );
- else
- EnableCheckButton( 0 );
-}
-
-//----------------------------------------------------------------------------
-
-SvLBoxEntry* BasicCheckBox::DoInsertEntry( const String& rStr, sal_uLong nPos )
-{
- return SvTabListBox::InsertEntryToColumn( rStr, nPos, 0 );
-}
-
-//----------------------------------------------------------------------------
-
-SvLBoxEntry* BasicCheckBox::FindEntry( const String& rName )
-{
- sal_uLong nCount = GetEntryCount();
- for ( sal_uLong i = 0; i < nCount; i++ )
- {
- SvLBoxEntry* pEntry = GetEntry( i );
- DBG_ASSERT( pEntry, "pEntry?!" );
- if ( rName.CompareIgnoreCaseToAscii( GetEntryText( pEntry, 0 ) ) == COMPARE_EQUAL )
- return pEntry;
- }
- return 0;
-}
-
-//----------------------------------------------------------------------------
-
-void BasicCheckBox::CheckEntryPos( sal_uLong nPos, sal_Bool bCheck )
-{
- if ( nPos < GetEntryCount() )
- {
- SvLBoxEntry* pEntry = GetEntry( nPos );
-
- if ( bCheck != GetCheckButtonState( pEntry ) )
- SetCheckButtonState( pEntry,
- bCheck
- ? SvButtonState(SV_BUTTON_CHECKED)
- : SvButtonState(SV_BUTTON_UNCHECKED) );
- }
-}
-
-//----------------------------------------------------------------------------
-
-sal_Bool BasicCheckBox::IsChecked( sal_uLong nPos ) const
-{
- if ( nPos < GetEntryCount() )
- return (GetCheckButtonState( GetEntry( nPos ) ) == SV_BUTTON_CHECKED);
- return sal_False;
-}
-
-//----------------------------------------------------------------------------
-
-void BasicCheckBox::InitEntry( SvLBoxEntry* pEntry, const XubString& rTxt, const Image& rImg1, const Image& rImg2, SvLBoxButtonKind eButtonKind )
-{
- SvTabListBox::InitEntry( pEntry, rTxt, rImg1, rImg2, eButtonKind );
-
- if ( nMode == LIBMODE_MANAGER )
- {
- // initialize all columns with own string class (column 0 == bitmap)
- sal_uInt16 nCount = pEntry->ItemCount();
- for ( sal_uInt16 nCol = 1; nCol < nCount; ++nCol )
- {
- SvLBoxString* pCol = (SvLBoxString*)pEntry->GetItem( nCol );
- BasicLibLBoxString* pStr = new BasicLibLBoxString( pEntry, 0, pCol->GetText() );
- pEntry->ReplaceItem( pStr, nCol );
- }
- }
-}
-
-//----------------------------------------------------------------------------
-
-sal_Bool BasicCheckBox::EditingEntry( SvLBoxEntry* pEntry, Selection& )
-{
- if ( nMode != LIBMODE_MANAGER )
- return sal_False;
-
- DBG_ASSERT( pEntry, "Kein Eintrag?" );
-
- // check, if Standard library
- String aLibName = GetEntryText( pEntry, 0 );
- if ( aLibName.EqualsIgnoreCaseAscii( "Standard" ) )
- {
- ErrorBox( this, WB_OK | WB_DEF_OK, String( IDEResId( RID_STR_CANNOTCHANGENAMESTDLIB ) ) ).Execute();
- return sal_False;
- }
-
- // check, if library is readonly
- ::rtl::OUString aOULibName( aLibName );
- Reference< script::XLibraryContainer2 > xModLibContainer( m_aDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
- Reference< script::XLibraryContainer2 > xDlgLibContainer( m_aDocument.getLibraryContainer( E_DIALOGS ), UNO_QUERY );
- if ( ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) && xModLibContainer->isLibraryReadOnly( aOULibName ) && !xModLibContainer->isLibraryLink( aOULibName ) ) ||
- ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aOULibName ) && xDlgLibContainer->isLibraryReadOnly( aOULibName ) && !xDlgLibContainer->isLibraryLink( aOULibName ) ) )
- {
- ErrorBox( this, WB_OK | WB_DEF_OK, String( IDEResId( RID_STR_LIBISREADONLY ) ) ).Execute();
- return sal_False;
- }
-
- // i24094: Password verification necessary for renaming
- sal_Bool bOK = sal_True;
- if ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) && !xModLibContainer->isLibraryLoaded( aOULibName ) )
- {
- // check password
- Reference< script::XLibraryContainerPassword > xPasswd( xModLibContainer, UNO_QUERY );
- if ( xPasswd.is() && xPasswd->isLibraryPasswordProtected( aOULibName ) && !xPasswd->isLibraryPasswordVerified( aOULibName ) )
- {
- String aPassword;
- Reference< script::XLibraryContainer > xModLibContainer1( xModLibContainer, UNO_QUERY );
- bOK = QueryPassword( xModLibContainer1, aLibName, aPassword );
- }
- if ( !bOK )
- return sal_False;
- }
-
- // TODO: check if library is reference/link
-
- return sal_True;
-}
-
-//----------------------------------------------------------------------------
-
-sal_Bool BasicCheckBox::EditedEntry( SvLBoxEntry* pEntry, const String& rNewText )
-{
- sal_Bool bValid = ( rNewText.Len() <= 30 ) && BasicIDE::IsValidSbxName( rNewText );
- String aCurText( GetEntryText( pEntry, 0 ) );
- if ( bValid && ( aCurText != rNewText ) )
- {
- try
- {
- ::rtl::OUString aOUOldName( aCurText );
- ::rtl::OUString aOUNewName( rNewText );
-
- Reference< script::XLibraryContainer2 > xModLibContainer( m_aDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
- if ( xModLibContainer.is() )
- {
- xModLibContainer->renameLibrary( aOUOldName, aOUNewName );
- }
-
- Reference< script::XLibraryContainer2 > xDlgLibContainer( m_aDocument.getLibraryContainer( E_DIALOGS ), UNO_QUERY );
- if ( xDlgLibContainer.is() )
- {
- xDlgLibContainer->renameLibrary( aOUOldName, aOUNewName );
- }
-
- BasicIDE::MarkDocumentModified( m_aDocument );
- SfxBindings* pBindings = BasicIDE::GetBindingsPtr();
- if ( pBindings )
- {
- pBindings->Invalidate( SID_BASICIDE_LIBSELECTOR );
- pBindings->Update( SID_BASICIDE_LIBSELECTOR );
- }
- }
- catch ( container::ElementExistException& )
- {
- ErrorBox( this, WB_OK | WB_DEF_OK, String( IDEResId( RID_STR_SBXNAMEALLREADYUSED ) ) ).Execute();
- return sal_False;
- }
- catch ( container::NoSuchElementException& )
- {
- DBG_UNHANDLED_EXCEPTION();
- return sal_False;
- }
- }
-
- if ( !bValid )
- {
- if ( rNewText.Len() > 30 )
- ErrorBox( this, WB_OK | WB_DEF_OK, String( IDEResId( RID_STR_LIBNAMETOLONG ) ) ).Execute();
- else
- ErrorBox( this, WB_OK | WB_DEF_OK, String( IDEResId( RID_STR_BADSBXNAME ) ) ).Execute();
- }
-
- return bValid;
-}
-
-//----------------------------------------------------------------------------
-// NewObjectDialog
-//----------------------------------------------------------------------------
-
-IMPL_LINK(NewObjectDialog, OkButtonHandler, Button *, EMPTYARG)
-{
- if (BasicIDE::IsValidSbxName(aEdit.GetText()))
- EndDialog(1);
- else
- {
- ErrorBox(this, WB_OK | WB_DEF_OK,
- String(IDEResId(RID_STR_BADSBXNAME))).Execute();
- aEdit.GrabFocus();
- }
- return 0;
-}
-
-NewObjectDialog::NewObjectDialog(Window * pParent, sal_uInt16 nMode,
- bool bCheckName)
- : ModalDialog( pParent, IDEResId( RID_DLG_NEWLIB ) ),
- aText( this, IDEResId( RID_FT_NEWLIB ) ),
- aEdit( this, IDEResId( RID_ED_LIBNAME ) ),
- aOKButton( this, IDEResId( RID_PB_OK ) ),
- aCancelButton( this, IDEResId( RID_PB_CANCEL ) )
-{
- FreeResource();
- aEdit.GrabFocus();
-
- if ( nMode == NEWOBJECTMODE_LIB )
- {
- SetText( String( IDEResId( RID_STR_NEWLIB ) ) );
- }
- else if ( nMode == NEWOBJECTMODE_MOD )
- {
- SetText( String( IDEResId( RID_STR_NEWMOD ) ) );
- }
- else if ( nMode == NEWOBJECTMODE_METH )
- {
- SetText( String( IDEResId( RID_STR_NEWMETH ) ) );
- }
- else
- {
- SetText( String( IDEResId( RID_STR_NEWDLG ) ) );
- }
-
- if (bCheckName)
- aOKButton.SetClickHdl(LINK(this, NewObjectDialog, OkButtonHandler));
-}
-
-//----------------------------------------------------------------------------
-
-NewObjectDialog::~NewObjectDialog()
-{
-}
-
-//----------------------------------------------------------------------------
-// ExportDialog
-//----------------------------------------------------------------------------
-
-IMPL_LINK(ExportDialog, OkButtonHandler, Button *, EMPTYARG)
-{
- mbExportAsPackage = maExportAsPackageButton.IsChecked();
- EndDialog(1);
- return 0;
-}
-
-ExportDialog::ExportDialog( Window * pParent )
- : ModalDialog( pParent, IDEResId( RID_DLG_EXPORT ) ),
- maExportAsPackageButton( this, IDEResId( RB_EXPORTASPACKAGE ) ),
- maExportAsBasicButton( this, IDEResId( RB_EXPORTASBASIC ) ),
- maOKButton( this, IDEResId( RID_PB_OK ) ),
- maCancelButton( this, IDEResId( RID_PB_CANCEL ) )
-{
- FreeResource();
- maExportAsPackageButton.Check();
- maOKButton.SetClickHdl(LINK(this, ExportDialog, OkButtonHandler));
-}
-
-//----------------------------------------------------------------------------
-
-ExportDialog::~ExportDialog()
-{
-}
-
-//----------------------------------------------------------------------------
-// LibPage
-//----------------------------------------------------------------------------
-
-LibPage::LibPage( Window * pParent )
- :TabPage( pParent, IDEResId( RID_TP_LIBS ) )
- ,aBasicsText( this, IDEResId( RID_STR_BASICS ) )
- ,aBasicsBox( this, IDEResId( RID_LB_BASICS ) )
- ,aLibText( this, IDEResId( RID_STR_LIB ) )
- ,aLibBox( this, IDEResId( RID_TRLBOX ) )
- ,aEditButton( this, IDEResId( RID_PB_EDIT ) )
- ,aCloseButton( this, IDEResId( RID_PB_CLOSE ) )
- ,aPasswordButton( this, IDEResId( RID_PB_PASSWORD ) )
- ,aNewLibButton( this, IDEResId( RID_PB_NEWLIB ) )
- ,aInsertLibButton( this, IDEResId( RID_PB_APPEND ) )
- ,aExportButton( this, IDEResId( RID_PB_EXPORT ) )
- ,aDelButton( this, IDEResId( RID_PB_DELETE ) )
- ,m_aCurDocument( ScriptDocument::getApplicationScriptDocument() )
- ,m_eCurLocation( LIBRARY_LOCATION_UNKNOWN )
-{
- FreeResource();
- pTabDlg = 0;
-
- aEditButton.SetClickHdl( LINK( this, LibPage, ButtonHdl ) );
- aNewLibButton.SetClickHdl( LINK( this, LibPage, ButtonHdl ) );
- aPasswordButton.SetClickHdl( LINK( this, LibPage, ButtonHdl ) );
- aExportButton.SetClickHdl( LINK( this, LibPage, ButtonHdl ) );
- aInsertLibButton.SetClickHdl( LINK( this, LibPage, ButtonHdl ) );
- aDelButton.SetClickHdl( LINK( this, LibPage, ButtonHdl ) );
- aCloseButton.SetClickHdl( LINK( this, LibPage, ButtonHdl ) );
- aLibBox.SetSelectHdl( LINK( this, LibPage, TreeListHighlightHdl ) );
-
- aBasicsBox.SetSelectHdl( LINK( this, LibPage, BasicSelectHdl ) );
-
- aLibBox.SetMode( LIBMODE_MANAGER );
- aLibBox.EnableInplaceEditing( sal_True );
- aLibBox.SetStyle( WB_HSCROLL | WB_BORDER | WB_TABSTOP );
- aCloseButton.GrabFocus();
-
- long aTabs[] = { 2, 30, 120 };
- aLibBox.SetTabs( aTabs, MAP_PIXEL );
-
- FillListBox();
- aBasicsBox.SelectEntryPos( 0 );
- SetCurLib();
-
- CheckButtons();
-}
-
-//----------------------------------------------------------------------------
-
-LibPage::~LibPage()
-{
- sal_uInt16 nCount = aBasicsBox.GetEntryCount();
- for ( sal_uInt16 i = 0; i < nCount; ++i )
- {
- BasicDocumentEntry* pEntry = (BasicDocumentEntry*)aBasicsBox.GetEntryData( i );
- delete pEntry;
- }
-}
-
-//----------------------------------------------------------------------------
-
-void LibPage::CheckButtons()
-{
- SvLBoxEntry* pCur = aLibBox.GetCurEntry();
- if ( pCur )
- {
- String aLibName = aLibBox.GetEntryText( pCur, 0 );
- ::rtl::OUString aOULibName( aLibName );
- Reference< script::XLibraryContainer2 > xModLibContainer( m_aCurDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
- Reference< script::XLibraryContainer2 > xDlgLibContainer( m_aCurDocument.getLibraryContainer( E_DIALOGS ), UNO_QUERY );
-
- if ( m_eCurLocation == LIBRARY_LOCATION_SHARE )
- {
- aPasswordButton.Disable();
- aNewLibButton.Disable();
- aInsertLibButton.Disable();
- aDelButton.Disable();
- }
- else if ( aLibName.EqualsIgnoreCaseAscii( "Standard" ) )
- {
- aPasswordButton.Disable();
- aNewLibButton.Enable();
- aInsertLibButton.Enable();
- aExportButton.Disable();
- aDelButton.Disable();
- if ( !aLibBox.HasFocus() )
- aCloseButton.GrabFocus();
- }
- else if ( ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) && xModLibContainer->isLibraryReadOnly( aOULibName ) ) ||
- ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aOULibName ) && xDlgLibContainer->isLibraryReadOnly( aOULibName ) ) )
- {
- aPasswordButton.Disable();
- aNewLibButton.Enable();
- aInsertLibButton.Enable();
- if ( ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) && xModLibContainer->isLibraryReadOnly( aOULibName ) && !xModLibContainer->isLibraryLink( aOULibName ) ) ||
- ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aOULibName ) && xDlgLibContainer->isLibraryReadOnly( aOULibName ) && !xDlgLibContainer->isLibraryLink( aOULibName ) ) )
- aDelButton.Disable();
- else
- aDelButton.Enable();
- }
- else
- {
- if ( xModLibContainer.is() && !xModLibContainer->hasByName( aOULibName ) )
- aPasswordButton.Disable();
- else
- aPasswordButton.Enable();
-
- aNewLibButton.Enable();
- aInsertLibButton.Enable();
- aExportButton.Enable();
- aDelButton.Enable();
- }
- }
-}
-
-//----------------------------------------------------------------------------
-
-void LibPage::ActivatePage()
-{
- SetCurLib();
-}
-
-//----------------------------------------------------------------------------
-
-
-void LibPage::DeactivatePage()
-{
-}
-
-//----------------------------------------------------------------------------
-
-
-IMPL_LINK_INLINE_START( LibPage, TreeListHighlightHdl, SvTreeListBox *, pBox )
-{
- if ( pBox->IsSelected( pBox->GetHdlEntry() ) )
- CheckButtons();
- return 0;
-}
-IMPL_LINK_INLINE_END( LibPage, TreeListHighlightHdl, SvTreeListBox *, pBox )
-
-//----------------------------------------------------------------------------
-
-IMPL_LINK_INLINE_START( LibPage, BasicSelectHdl, ListBox *, pBox )
-{
- (void)pBox;
- SetCurLib();
- CheckButtons();
- return 0;
-}
-IMPL_LINK_INLINE_END( LibPage, BasicSelectHdl, ListBox *, pBox )
-
-//----------------------------------------------------------------------------
-
-IMPL_LINK( LibPage, ButtonHdl, Button *, pButton )
-{
- if ( pButton == &aEditButton )
- {
- SfxAllItemSet aArgs( SFX_APP()->GetPool() );
- SfxRequest aRequest( SID_BASICIDE_APPEAR, SFX_CALLMODE_SYNCHRON, aArgs );
- SFX_APP()->ExecuteSlot( aRequest );
-
- SfxUsrAnyItem aDocItem( SID_BASICIDE_ARG_DOCUMENT_MODEL, makeAny( m_aCurDocument.getDocumentOrNull() ) );
- SvLBoxEntry* pCurEntry = aLibBox.GetCurEntry();
- DBG_ASSERT( pCurEntry, "Entry?!" );
- String aLibName( aLibBox.GetEntryText( pCurEntry, 0 ) );
- SfxStringItem aLibNameItem( SID_BASICIDE_ARG_LIBNAME, aLibName );
- BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
- SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
- SfxDispatcher* pDispatcher = pViewFrame ? pViewFrame->GetDispatcher() : NULL;
- if ( pDispatcher )
- {
- pDispatcher->Execute( SID_BASICIDE_LIBSELECTED,
- SFX_CALLMODE_ASYNCHRON, &aDocItem, &aLibNameItem, 0L );
- }
- EndTabDialog( 1 );
- return 0;
- }
- else if ( pButton == &aNewLibButton )
- NewLib();
- else if ( pButton == &aInsertLibButton )
- InsertLib();
- else if ( pButton == &aExportButton )
- Export();
- else if ( pButton == &aDelButton )
- DeleteCurrent();
- else if ( pButton == &aCloseButton )
- {
- EndTabDialog( 0 );
- return 0;
- }
- else if ( pButton == &aPasswordButton )
- {
- SvLBoxEntry* pCurEntry = aLibBox.GetCurEntry();
- String aLibName( aLibBox.GetEntryText( pCurEntry, 0 ) );
- ::rtl::OUString aOULibName( aLibName );
-
- // load module library (if not loaded)
- Reference< script::XLibraryContainer > xModLibContainer = m_aCurDocument.getLibraryContainer( E_SCRIPTS );
- if ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) && !xModLibContainer->isLibraryLoaded( aOULibName ) )
- {
- BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
- if ( pIDEShell )
- pIDEShell->GetViewFrame()->GetWindow().EnterWait();
- xModLibContainer->loadLibrary( aOULibName );
- if ( pIDEShell )
- pIDEShell->GetViewFrame()->GetWindow().LeaveWait();
- }
-
- // load dialog library (if not loaded)
- Reference< script::XLibraryContainer > xDlgLibContainer = m_aCurDocument.getLibraryContainer( E_DIALOGS );
- if ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aOULibName ) && !xDlgLibContainer->isLibraryLoaded( aOULibName ) )
- {
- BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
- if ( pIDEShell )
- pIDEShell->GetViewFrame()->GetWindow().EnterWait();
- xDlgLibContainer->loadLibrary( aOULibName );
- if ( pIDEShell )
- pIDEShell->GetViewFrame()->GetWindow().LeaveWait();
- }
-
- // check, if library is password protected
- if ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) )
- {
- Reference< script::XLibraryContainerPassword > xPasswd( xModLibContainer, UNO_QUERY );
- if ( xPasswd.is() )
- {
- sal_Bool bProtected = xPasswd->isLibraryPasswordProtected( aOULibName );
-
- // change password dialog
- SvxPasswordDialog* pDlg = new SvxPasswordDialog( this, sal_True, !bProtected );
- pDlg->SetCheckPasswordHdl( LINK( this, LibPage, CheckPasswordHdl ) );
-
- if ( pDlg->Execute() == RET_OK )
- {
- sal_Bool bNewProtected = xPasswd->isLibraryPasswordProtected( aOULibName );
-
- if ( bNewProtected != bProtected )
- {
- sal_uLong nPos = (sal_uLong)aLibBox.GetModel()->GetAbsPos( pCurEntry );
- aLibBox.GetModel()->Remove( pCurEntry );
- ImpInsertLibEntry( aLibName, nPos );
- aLibBox.SetCurEntry( aLibBox.GetEntry( nPos ) );
- }
-
- BasicIDE::MarkDocumentModified( m_aCurDocument );
- }
- delete pDlg;
- }
- }
- }
- CheckButtons();
- return 0;
-}
-
-//----------------------------------------------------------------------------
-
-IMPL_LINK_INLINE_START( LibPage, CheckPasswordHdl, SvxPasswordDialog *, pDlg )
-{
- long nRet = 0;
-
- SvLBoxEntry* pCurEntry = aLibBox.GetCurEntry();
- ::rtl::OUString aOULibName( aLibBox.GetEntryText( pCurEntry, 0 ) );
- Reference< script::XLibraryContainerPassword > xPasswd( m_aCurDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
-
- if ( xPasswd.is() )
- {
- try
- {
- ::rtl::OUString aOUOldPassword( pDlg->GetOldPassword() );
- ::rtl::OUString aOUNewPassword( pDlg->GetNewPassword() );
- xPasswd->changeLibraryPassword( aOULibName, aOUOldPassword, aOUNewPassword );
- nRet = 1;
- }
- catch (...)
- {
- }
- }
-
- return nRet;
-}
-IMPL_LINK_INLINE_END( LibPage, CheckPasswordHdl, SvxPasswordDialog *, pDlg )
-
-//----------------------------------------------------------------------------
-
-void LibPage::NewLib()
-{
- createLibImpl( static_cast<Window*>( this ), m_aCurDocument, &aLibBox, NULL);
-}
-
-//----------------------------------------------------------------------------
-
-void LibPage::InsertLib()
-{
- // file open dialog
- Reference< lang::XMultiServiceFactory > xMSF( ::comphelper::getProcessServiceFactory() );
- Reference < XFilePicker > xFP;
- if( xMSF.is() )
- {
- Sequence <Any> aServiceType(1);
- aServiceType[0] <<= TemplateDescription::FILEOPEN_SIMPLE;
- xFP = Reference< XFilePicker >( xMSF->createInstanceWithArguments(
- ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ui.dialogs.FilePicker" ) ), aServiceType ), UNO_QUERY );
- }
- xFP->setTitle( String( IDEResId( RID_STR_APPENDLIBS ) ) );
-
- // filter
- ::rtl::OUString aTitle = String( IDEResId( RID_STR_BASIC ) );
- ::rtl::OUString aFilter;
- aFilter = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "*.sbl;*.xlc;*.xlb" ) ); // library files
- aFilter += ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ";*.sdw;*.sxw;*.odt" ) ); // text
- aFilter += ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ";*.vor;*.stw;*.ott" ) ); // text template
- aFilter += ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ";*.sgl;*.sxg;*.odm" ) ); // master document
- aFilter += ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ";*.oth" ) ); // html document template
- aFilter += ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ";*.sdc;*.sxc;*.ods" ) ); // spreadsheet
- aFilter += ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ";*.stc;*.ots" ) ); // spreadsheet template
- aFilter += ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ";*.sda;*.sxd;*.odg" ) ); // drawing
- aFilter += ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ";*.std;*.otg" ) ); // drawing template
- aFilter += ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ";*.sdd;*.sxi;*.odp" ) ); // presentation
- aFilter += ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ";*.sti;*.otp" ) ); // presentation template
- aFilter += ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ";*.sxm;*.odf" ) ); // formula
- Reference< XFilterManager > xFltMgr(xFP, UNO_QUERY);
- xFltMgr->appendFilter( aTitle, aFilter );
-
- // set display directory and filter
- String aPath( IDE_DLL()->GetExtraData()->GetAddLibPath() );
- if ( aPath.Len() )
- {
- xFP->setDisplayDirectory( aPath );
- }
- else
- {
- // macro path from configuration management
- xFP->setDisplayDirectory( SvtPathOptions().GetWorkPath() );
- }
-
- String aLastFilter( IDE_DLL()->GetExtraData()->GetAddLibFilter() );
- if ( aLastFilter.Len() )
- {
- xFltMgr->setCurrentFilter( aLastFilter );
- }
- else
- {
- xFltMgr->setCurrentFilter( String( IDEResId( RID_STR_BASIC ) ) );
- }
-
- if ( xFP->execute() == RET_OK )
- {
- IDE_DLL()->GetExtraData()->SetAddLibPath( xFP->getDisplayDirectory() );
- IDE_DLL()->GetExtraData()->SetAddLibFilter( xFltMgr->getCurrentFilter() );
-
- // library containers for import
- Reference< script::XLibraryContainer2 > xModLibContImport;
- Reference< script::XLibraryContainer2 > xDlgLibContImport;
-
- // file URLs
- Sequence< ::rtl::OUString > aFiles = xFP->getFiles();
- INetURLObject aURLObj( aFiles[0] );
- INetURLObject aModURLObj( aURLObj );
- INetURLObject aDlgURLObj( aURLObj );
-
- String aBase = aURLObj.getBase();
- String aModBase = String::CreateFromAscii( "script" );
- String aDlgBase = String::CreateFromAscii( "dialog" );
-
- if ( aBase == aModBase || aBase == aDlgBase )
- {
- aModURLObj.setBase( aModBase );
- aDlgURLObj.setBase( aDlgBase );
- }
-
- if ( xMSF.is() )
- {
- Reference< XSimpleFileAccess > xSFA( xMSF->createInstance(
- ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ucb.SimpleFileAccess" ) ) ), UNO_QUERY );
-
- if ( xSFA.is() )
- {
- ::rtl::OUString aModURL( aModURLObj.GetMainURL( INetURLObject::NO_DECODE ) );
- if ( xSFA->exists( aModURL ) )
- {
- Sequence <Any> aSeqModURL(1);
- aSeqModURL[0] <<= aModURL;
- xModLibContImport = Reference< script::XLibraryContainer2 >( xMSF->createInstanceWithArguments(
- ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.script.DocumentScriptLibraryContainer" ) ), aSeqModURL ), UNO_QUERY );
- }
-
- ::rtl::OUString aDlgURL( aDlgURLObj.GetMainURL( INetURLObject::NO_DECODE ) );
- if ( xSFA->exists( aDlgURL ) )
- {
- Sequence <Any> aSeqDlgURL(1);
- aSeqDlgURL[0] <<= aDlgURL;
- xDlgLibContImport = Reference< script::XLibraryContainer2 >( xMSF->createInstanceWithArguments(
- ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.script.DocumentDialogLibraryContainer" ) ), aSeqDlgURL ), UNO_QUERY );
- }
- }
- }
-
- if ( xModLibContImport.is() || xDlgLibContImport.is() )
- {
- LibDialog* pLibDlg = 0;
-
- Reference< script::XLibraryContainer > xModLibContImp( xModLibContImport, UNO_QUERY );
- Reference< script::XLibraryContainer > xDlgLibContImp( xDlgLibContImport, UNO_QUERY );
- Sequence< ::rtl::OUString > aLibNames = BasicIDE::GetMergedLibraryNames( xModLibContImp, xDlgLibContImp );
- sal_Int32 nLibCount = aLibNames.getLength();
- const ::rtl::OUString* pLibNames = aLibNames.getConstArray();
- for ( sal_Int32 i = 0 ; i < nLibCount ; i++ )
- {
- // library import dialog
- if ( !pLibDlg )
- {
- pLibDlg = new LibDialog( this );
- pLibDlg->SetStorageName( aURLObj.getName() );
- pLibDlg->GetLibBox().SetMode( LIBMODE_CHOOSER );
- }
-
- // libbox entries
- String aLibName( pLibNames[ i ] );
- String aOULibName( aLibName );
- if ( !( ( xModLibContImport.is() && xModLibContImport->hasByName( aOULibName ) && xModLibContImport->isLibraryLink( aOULibName ) ) ||
- ( xDlgLibContImport.is() && xDlgLibContImport->hasByName( aOULibName ) && xDlgLibContImport->isLibraryLink( aOULibName ) ) ) )
- {
- SvLBoxEntry* pEntry = pLibDlg->GetLibBox().DoInsertEntry( aLibName );
- sal_uInt16 nPos = (sal_uInt16) pLibDlg->GetLibBox().GetModel()->GetAbsPos( pEntry );
- pLibDlg->GetLibBox().CheckEntryPos( nPos, sal_True);
- }
- }
-
- if ( !pLibDlg )
- InfoBox( this, String( IDEResId( RID_STR_NOLIBINSTORAGE ) ) ).Execute();
- else
- {
- sal_Bool bChanges = sal_False;
- String aExtension( aURLObj.getExtension() );
- String aLibExtension( String::CreateFromAscii( "xlb" ) );
- String aContExtension( String::CreateFromAscii( "xlc" ) );
-
- // disable reference checkbox for documents and sbls
- if ( aExtension != aLibExtension && aExtension != aContExtension )
- pLibDlg->EnableReference( sal_False );
-
- if ( pLibDlg->Execute() )
- {
- sal_uLong nNewPos = aLibBox.GetEntryCount();
- sal_Bool bRemove = sal_False;
- sal_Bool bReplace = pLibDlg->IsReplace();
- sal_Bool bReference = pLibDlg->IsReference();
- for ( sal_uInt16 nLib = 0; nLib < pLibDlg->GetLibBox().GetEntryCount(); nLib++ )
- {
- if ( pLibDlg->GetLibBox().IsChecked( nLib ) )
- {
- SvLBoxEntry* pEntry = pLibDlg->GetLibBox().GetEntry( nLib );
- DBG_ASSERT( pEntry, "Entry?!" );
- String aLibName( pLibDlg->GetLibBox().GetEntryText( pEntry, 0 ) );
- ::rtl::OUString aOULibName( aLibName );
- Reference< script::XLibraryContainer2 > xModLibContainer( m_aCurDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
- Reference< script::XLibraryContainer2 > xDlgLibContainer( m_aCurDocument.getLibraryContainer( E_DIALOGS ), UNO_QUERY );
-
- // check, if the library is already existing
- if ( ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) ) ||
- ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aOULibName ) ) )
- {
- if ( bReplace )
- {
- // check, if the library is the Standard library
- if ( aLibName.EqualsAscii( "Standard" ) )
- {
- ErrorBox( this, WB_OK | WB_DEF_OK, String( IDEResId( RID_STR_REPLACESTDLIB ) ) ).Execute();
- continue;
- }
-
- // check, if the library is readonly and not a link
- if ( ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) && xModLibContainer->isLibraryReadOnly( aOULibName ) && !xModLibContainer->isLibraryLink( aOULibName ) ) ||
- ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aOULibName ) && xDlgLibContainer->isLibraryReadOnly( aOULibName ) && !xDlgLibContainer->isLibraryLink( aOULibName ) ) )
- {
- String aErrStr( IDEResId( RID_STR_REPLACELIB ) );
- aErrStr.SearchAndReplace( String( RTL_CONSTASCII_USTRINGPARAM( "XX" ) ), aLibName );
- aErrStr += '\n';
- aErrStr += String( IDEResId( RID_STR_LIBISREADONLY ) );
- ErrorBox( this, WB_OK | WB_DEF_OK, aErrStr ).Execute();
- continue;
- }
-
- // remove existing libraries
- bRemove = sal_True;
- }
- else
- {
- String aErrStr;
- if ( bReference )
- aErrStr = String( IDEResId( RID_STR_REFNOTPOSSIBLE ) );
- else
- aErrStr = String( IDEResId( RID_STR_IMPORTNOTPOSSIBLE ) );
- aErrStr.SearchAndReplace( String( RTL_CONSTASCII_USTRINGPARAM( "XX" ) ), aLibName );
- aErrStr += '\n';
- aErrStr += String( IDEResId( RID_STR_SBXNAMEALLREADYUSED ) );
- ErrorBox( this, WB_OK | WB_DEF_OK, aErrStr ).Execute();
- continue;
- }
- }
-
- // check, if the library is password protected
- sal_Bool bOK = sal_False;
- String aPassword;
- if ( xModLibContImport.is() && xModLibContImport->hasByName( aOULibName ) )
- {
- Reference< script::XLibraryContainerPassword > xPasswd( xModLibContImport, UNO_QUERY );
- if ( xPasswd.is() && xPasswd->isLibraryPasswordProtected( aOULibName ) && !xPasswd->isLibraryPasswordVerified( aOULibName ) && !bReference )
- {
- bOK = QueryPassword( xModLibContImp, aLibName, aPassword, sal_True, sal_True );
-
- if ( !bOK )
- {
- String aErrStr( IDEResId( RID_STR_NOIMPORT ) );
- aErrStr.SearchAndReplace( String( RTL_CONSTASCII_USTRINGPARAM( "XX" ) ), aLibName );
- ErrorBox( this, WB_OK | WB_DEF_OK, aErrStr ).Execute();
- continue;
- }
- }
- }
-
- // remove existing libraries
- if ( bRemove )
- {
- // remove listbox entry
- SvLBoxEntry* pEntry_ = aLibBox.FindEntry( aLibName );
- if ( pEntry_ )
- aLibBox.SvTreeListBox::GetModel()->Remove( pEntry_ );
-
- // remove module library
- if ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) )
- xModLibContainer->removeLibrary( aOULibName );
-
- // remove dialog library
- if ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aOULibName ) )
- xDlgLibContainer->removeLibrary( aOULibName );
- }
-
- // copy module library
- if ( xModLibContImport.is() && xModLibContImport->hasByName( aOULibName ) && xModLibContainer.is() && !xModLibContainer->hasByName( aOULibName ) )
- {
- Reference< container::XNameContainer > xModLib;
- if ( bReference )
- {
- // storage URL
- INetURLObject aModStorageURLObj( aModURLObj );
- if ( aExtension == aContExtension )
- {
- sal_Int32 nCount = aModStorageURLObj.getSegmentCount();
- aModStorageURLObj.insertName( aLibName, false, nCount-1 );
- aModStorageURLObj.setExtension( aLibExtension );
- aModStorageURLObj.setFinalSlash();
- }
- ::rtl::OUString aModStorageURL( aModStorageURLObj.GetMainURL( INetURLObject::NO_DECODE ) );
-
- // create library link
- xModLib = Reference< container::XNameContainer >( xModLibContainer->createLibraryLink( aOULibName, aModStorageURL, sal_True ), UNO_QUERY);
- }
- else
- {
- // create library
- xModLib = xModLibContainer->createLibrary( aOULibName );
- if ( xModLib.is() )
- {
- // get import library
- Reference< container::XNameContainer > xModLibImport;
- Any aElement = xModLibContImport->getByName( aOULibName );
- aElement >>= xModLibImport;
-
- if ( xModLibImport.is() )
- {
- // load library
- if ( !xModLibContImport->isLibraryLoaded( aOULibName ) )
- xModLibContImport->loadLibrary( aOULibName );
-
- // copy all modules
- Sequence< ::rtl::OUString > aModNames = xModLibImport->getElementNames();
- sal_Int32 nModCount = aModNames.getLength();
- const ::rtl::OUString* pModNames = aModNames.getConstArray();
- for ( sal_Int32 i = 0 ; i < nModCount ; i++ )
- {
- ::rtl::OUString aOUModName( pModNames[ i ] );
- Any aElement_ = xModLibImport->getByName( aOUModName );
- xModLib->insertByName( aOUModName, aElement_ );
- }
-
- // set password
- if ( bOK )
- {
- Reference< script::XLibraryContainerPassword > xPasswd( xModLibContainer, UNO_QUERY );
- if ( xPasswd.is() )
- {
- try
- {
- ::rtl::OUString aOUPassword( aPassword );
- xPasswd->changeLibraryPassword( aOULibName, ::rtl::OUString(), aOUPassword );
- }
- catch (...)
- {
- }
- }
- }
- }
- }
- }
- }
-
- // copy dialog library
- if ( xDlgLibContImport.is() && xDlgLibContImport->hasByName( aOULibName ) && xDlgLibContainer.is() && !xDlgLibContainer->hasByName( aOULibName ) )
- {
- Reference< container::XNameContainer > xDlgLib;
- if ( bReference )
- {
- // storage URL
- INetURLObject aDlgStorageURLObj( aDlgURLObj );
- if ( aExtension == aContExtension )
- {
- sal_Int32 nCount = aDlgStorageURLObj.getSegmentCount();
- aDlgStorageURLObj.insertName( aLibName, false, nCount - 1 );
- aDlgStorageURLObj.setExtension( aLibExtension );
- aDlgStorageURLObj.setFinalSlash();
- }
- ::rtl::OUString aDlgStorageURL( aDlgStorageURLObj.GetMainURL( INetURLObject::NO_DECODE ) );
-
- // create library link
- xDlgLib = Reference< container::XNameContainer >( xDlgLibContainer->createLibraryLink( aOULibName, aDlgStorageURL, sal_True ), UNO_QUERY);
- }
- else
- {
- // create library
- xDlgLib = xDlgLibContainer->createLibrary( aOULibName );
- if ( xDlgLib.is() )
- {
- // get import library
- Reference< container::XNameContainer > xDlgLibImport;
- Any aElement = xDlgLibContImport->getByName( aOULibName );
- aElement >>= xDlgLibImport;
-
- if ( xDlgLibImport.is() )
- {
- // load library
- if ( !xDlgLibContImport->isLibraryLoaded( aOULibName ) )
- xDlgLibContImport->loadLibrary( aOULibName );
-
- // copy all dialogs
- Sequence< ::rtl::OUString > aDlgNames = xDlgLibImport->getElementNames();
- sal_Int32 nDlgCount = aDlgNames.getLength();
- const ::rtl::OUString* pDlgNames = aDlgNames.getConstArray();
- for ( sal_Int32 i = 0 ; i < nDlgCount ; i++ )
- {
- ::rtl::OUString aOUDlgName( pDlgNames[ i ] );
- Any aElement_ = xDlgLibImport->getByName( aOUDlgName );
- xDlgLib->insertByName( aOUDlgName, aElement_ );
- }
- }
- }
- }
- }
-
- // insert listbox entry
- ImpInsertLibEntry( aLibName, aLibBox.GetEntryCount() );
- bChanges = sal_True;
- }
- }
-
- SvLBoxEntry* pFirstNew = aLibBox.GetEntry( nNewPos );
- if ( pFirstNew )
- aLibBox.SetCurEntry( pFirstNew );
- }
-
- delete pLibDlg;
- if ( bChanges )
- BasicIDE::MarkDocumentModified( m_aCurDocument );
- }
- }
- }
-}
-
-//----------------------------------------------------------------------------
-
-void LibPage::Export( void )
-{
- SvLBoxEntry* pCurEntry = aLibBox.GetCurEntry();
- String aLibName( aLibBox.GetEntryText( pCurEntry, 0 ) );
-
- // Password verification
- ::rtl::OUString aOULibName( aLibName );
- Reference< script::XLibraryContainer2 > xModLibContainer( m_aCurDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
-
- if ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) && !xModLibContainer->isLibraryLoaded( aOULibName ) )
- {
- sal_Bool bOK = sal_True;
-
- // check password
- Reference< script::XLibraryContainerPassword > xPasswd( xModLibContainer, UNO_QUERY );
- if ( xPasswd.is() && xPasswd->isLibraryPasswordProtected( aOULibName ) && !xPasswd->isLibraryPasswordVerified( aOULibName ) )
- {
- String aPassword;
- Reference< script::XLibraryContainer > xModLibContainer1( xModLibContainer, UNO_QUERY );
- bOK = QueryPassword( xModLibContainer1, aLibName, aPassword );
- }
- if ( !bOK )
- return;
- }
-
-
- Window* pWin = static_cast<Window*>( this );
- std::auto_ptr< ExportDialog > xNewDlg( new ExportDialog( pWin ) );
-
- if ( xNewDlg->Execute() == RET_OK )
- {
- try
- {
- if( xNewDlg->isExportAsPackage() )
- ExportAsPackage( aLibName );
- else
- ExportAsBasic( aLibName );
- }
- catch( util::VetoException& ) // user cancled operation
- {
- }
- }
-}
-
-void LibPage::implExportLib( const String& aLibName, const String& aTargetURL,
- const Reference< task::XInteractionHandler >& Handler )
-{
- ::rtl::OUString aOULibName( aLibName );
- Reference< script::XLibraryContainerExport > xModLibContainerExport
- ( m_aCurDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
- Reference< script::XLibraryContainerExport > xDlgLibContainerExport
- ( m_aCurDocument.getLibraryContainer( E_DIALOGS ), UNO_QUERY );
- if ( xModLibContainerExport.is() )
- xModLibContainerExport->exportLibrary( aOULibName, aTargetURL, Handler );
-
- if ( xDlgLibContainerExport.is() )
- xDlgLibContainerExport->exportLibrary( aOULibName, aTargetURL, Handler );
-}
-
-
-//===========================================================================
-// Implementation XCommandEnvironment
-
-typedef cppu::WeakImplHelper1< XCommandEnvironment > LibCommandEnvironmentHelper;
-
-class OLibCommandEnvironment : public LibCommandEnvironmentHelper
-{
- Reference< task::XInteractionHandler > mxInteraction;
-
-public:
- OLibCommandEnvironment( Reference< task::XInteractionHandler > xInteraction )
- : mxInteraction( xInteraction )
- {}
-
- // Methods
- virtual Reference< task::XInteractionHandler > SAL_CALL getInteractionHandler()
- throw(RuntimeException);
- virtual Reference< XProgressHandler > SAL_CALL getProgressHandler()
- throw(RuntimeException);
-};
-
-Reference< task::XInteractionHandler > OLibCommandEnvironment::getInteractionHandler()
- throw(RuntimeException)
-{
- return mxInteraction;
-}
-
-Reference< XProgressHandler > OLibCommandEnvironment::getProgressHandler()
- throw(RuntimeException)
-{
- Reference< XProgressHandler > xRet;
- return xRet;
-}
-
-
-
-void LibPage::ExportAsPackage( const String& aLibName )
-{
- // file open dialog
- Reference< lang::XMultiServiceFactory > xMSF( ::comphelper::getProcessServiceFactory() );
- Reference< task::XInteractionHandler > xHandler;
- Reference< XSimpleFileAccess > xSFA;
- Reference < XFilePicker > xFP;
- if( xMSF.is() )
- {
- xHandler = Reference< task::XInteractionHandler >( xMSF->createInstance
- ( DEFINE_CONST_UNICODE("com.sun.star.task.InteractionHandler") ), UNO_QUERY );
-
- xSFA = Reference< XSimpleFileAccess > ( xMSF->createInstance(
- ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ucb.SimpleFileAccess" ) ) ), UNO_QUERY );
- if( !xSFA.is() )
- {
- OSL_FAIL( "No simpleFileAccess" );
- return;
- }
-
- Sequence <Any> aServiceType(1);
- aServiceType[0] <<= TemplateDescription::FILESAVE_SIMPLE;
- xFP = Reference< XFilePicker >( xMSF->createInstanceWithArguments(
- ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ui.dialogs.FilePicker" ) ), aServiceType ), UNO_QUERY );
- }
- xFP->setTitle( String( IDEResId( RID_STR_EXPORTPACKAGE ) ) );
-
- // filter
- ::rtl::OUString aTitle = String( IDEResId( RID_STR_PACKAGE_BUNDLE ) );
- ::rtl::OUString aFilter;
- aFilter = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "*.oxt" ) ); // library files
- Reference< XFilterManager > xFltMgr(xFP, UNO_QUERY);
- xFltMgr->appendFilter( aTitle, aFilter );
-
- // set display directory and filter
- String aPath( IDE_DLL()->GetExtraData()->GetAddLibPath() );
- if ( aPath.Len() )
- {
- xFP->setDisplayDirectory( aPath );
- }
- else
- {
- // macro path from configuration management
- xFP->setDisplayDirectory( SvtPathOptions().GetWorkPath() );
- }
- xFltMgr->setCurrentFilter( aTitle );
-
- if ( xFP->execute() == RET_OK )
- {
- IDE_DLL()->GetExtraData()->SetAddLibPath( xFP->getDisplayDirectory() );
-
- Sequence< ::rtl::OUString > aFiles = xFP->getFiles();
- INetURLObject aURL( aFiles[0] );
- if( !aURL.getExtension().getLength() )
- aURL.setExtension( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "oxt" ) ) );
-
- ::rtl::OUString aPackageURL( aURL.GetMainURL( INetURLObject::NO_DECODE ) );
-
- String aTmpPath = SvtPathOptions().GetTempPath();
- INetURLObject aInetObj( aTmpPath );
- aInetObj.insertName( aLibName, sal_True, INetURLObject::LAST_SEGMENT, sal_True, INetURLObject::ENCODE_ALL );
- OUString aSourcePath = aInetObj.GetMainURL( INetURLObject::NO_DECODE );
- if( xSFA->exists( aSourcePath ) )
- xSFA->kill( aSourcePath );
- Reference< task::XInteractionHandler > xDummyHandler( new DummyInteractionHandler( xHandler ) );
- implExportLib( aLibName, aTmpPath, xDummyHandler );
-
- Reference< XCommandEnvironment > xCmdEnv =
- static_cast<XCommandEnvironment*>( new OLibCommandEnvironment( xHandler ) );
-
- ::ucbhelper::Content sourceContent( aSourcePath, xCmdEnv );
-
- ::rtl::OUStringBuffer buf;
- buf.appendAscii( RTL_CONSTASCII_STRINGPARAM("vnd.sun.star.zip://") );
- buf.append( ::rtl::Uri::encode( aPackageURL,
- rtl_UriCharClassRegName,
- rtl_UriEncodeIgnoreEscapes,
- RTL_TEXTENCODING_UTF8 ) );
- buf.append( static_cast<sal_Unicode>('/') );
- OUString destFolder( buf.makeStringAndClear() );
-
- if( xSFA->exists( aPackageURL ) )
- xSFA->kill( aPackageURL );
-
- ::ucbhelper::Content destFolderContent( destFolder, xCmdEnv );
- destFolderContent.transferContent(
- sourceContent, ::ucbhelper::InsertOperation_COPY,
- OUString(), NameClash::OVERWRITE );
-
- INetURLObject aMetaInfInetObj( aTmpPath );
- aMetaInfInetObj.insertName( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "META-INF" ) ),
- sal_True, INetURLObject::LAST_SEGMENT, sal_True, INetURLObject::ENCODE_ALL );
- OUString aMetaInfFolder = aMetaInfInetObj.GetMainURL( INetURLObject::NO_DECODE );
- if( xSFA->exists( aMetaInfFolder ) )
- xSFA->kill( aMetaInfFolder );
- xSFA->createFolder( aMetaInfFolder );
-
- ::std::vector< Sequence<beans::PropertyValue> > manifest;
- const OUString strMediaType = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "MediaType" ) );
- const OUString strFullPath = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "FullPath" ) );
- const OUString strBasicMediaType = ::rtl::OUString
- ( RTL_CONSTASCII_USTRINGPARAM( "application/vnd.sun.star.basic-library" ) );
-
- Sequence<beans::PropertyValue> attribs( 2 );
- beans::PropertyValue * pattribs = attribs.getArray();
- pattribs[ 0 ].Name = strFullPath;
- OUString fullPath = aLibName;
- fullPath += ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "/") );
- pattribs[ 0 ].Value <<= fullPath;
- pattribs[ 1 ].Name = strMediaType;
- pattribs[ 1 ].Value <<= strBasicMediaType;
- manifest.push_back( attribs );
-
- // write into pipe:
- Reference<packages::manifest::XManifestWriter> xManifestWriter( xMSF->createInstance
- ( DEFINE_CONST_UNICODE("com.sun.star.packages.manifest.ManifestWriter") ), UNO_QUERY );
- Reference<io::XOutputStream> xPipe( xMSF->createInstance
- ( DEFINE_CONST_UNICODE("com.sun.star.io.Pipe") ), UNO_QUERY );
- xManifestWriter->writeManifestSequence(
- xPipe, Sequence< Sequence<beans::PropertyValue> >(
- &manifest[ 0 ], manifest.size() ) );
-
- aMetaInfInetObj.insertName( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "manifest.xml" ) ),
- sal_True, INetURLObject::LAST_SEGMENT, sal_True, INetURLObject::ENCODE_ALL );
-
- // write buffered pipe data to content:
- ::ucbhelper::Content manifestContent( aMetaInfInetObj.GetMainURL( INetURLObject::NO_DECODE ), xCmdEnv );
- manifestContent.writeStream( Reference<io::XInputStream>( xPipe, UNO_QUERY_THROW ), true );
-
- ::ucbhelper::Content MetaInfContent( aMetaInfFolder, xCmdEnv );
- destFolderContent.transferContent(
- MetaInfContent, ::ucbhelper::InsertOperation_COPY,
- OUString(), NameClash::OVERWRITE );
-
- if( xSFA->exists( aSourcePath ) )
- xSFA->kill( aSourcePath );
- if( xSFA->exists( aMetaInfFolder ) )
- xSFA->kill( aMetaInfFolder );
- }
-}
-
-void LibPage::ExportAsBasic( const String& aLibName )
-{
- // Folder picker
- Reference< lang::XMultiServiceFactory > xMSF( ::comphelper::getProcessServiceFactory() );
- Reference< XFolderPicker > xFolderPicker;
- Reference< task::XInteractionHandler > xHandler;
- if( xMSF.is() )
- {
- xFolderPicker = Reference< XFolderPicker >( xMSF->createInstance(
- ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ui.dialogs.FolderPicker" ) ) ), UNO_QUERY );
-
- xHandler = Reference< task::XInteractionHandler >( xMSF->createInstance
- ( DEFINE_CONST_UNICODE("com.sun.star.task.InteractionHandler") ), UNO_QUERY );
- }
-
- if( xFolderPicker.is() )
- {
- xFolderPicker->setTitle( String( IDEResId( RID_STR_EXPORTBASIC ) ) );
-
- // set display directory and filter
- String aPath( IDE_DLL()->GetExtraData()->GetAddLibPath() );
- if( !aPath.Len() )
- aPath = SvtPathOptions().GetWorkPath();
-
- // INetURLObject aURL(m_sSavePath, INET_PROT_FILE);
- xFolderPicker->setDisplayDirectory( aPath );
- short nRet = xFolderPicker->execute();
- if( nRet == RET_OK )
- {
- String aTargetURL = xFolderPicker->getDirectory();
- IDE_DLL()->GetExtraData()->SetAddLibPath( aTargetURL );
-
- Reference< task::XInteractionHandler > xDummyHandler( new DummyInteractionHandler( xHandler ) );
- implExportLib( aLibName, aTargetURL, xDummyHandler );
- }
- }
-}
-
-//----------------------------------------------------------------------------
-
-void LibPage::DeleteCurrent()
-{
- SvLBoxEntry* pCurEntry = aLibBox.GetCurEntry();
- String aLibName( aLibBox.GetEntryText( pCurEntry, 0 ) );
-
- // check, if library is link
- sal_Bool bIsLibraryLink = sal_False;
- ::rtl::OUString aOULibName( aLibName );
- Reference< script::XLibraryContainer2 > xModLibContainer( m_aCurDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
- Reference< script::XLibraryContainer2 > xDlgLibContainer( m_aCurDocument.getLibraryContainer( E_DIALOGS ), UNO_QUERY );
- if ( ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) && xModLibContainer->isLibraryLink( aOULibName ) ) ||
- ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aOULibName ) && xDlgLibContainer->isLibraryLink( aOULibName ) ) )
- {
- bIsLibraryLink = sal_True;
- }
-
- if ( QueryDelLib( aLibName, bIsLibraryLink, this ) )
- {
- // inform BasicIDE
- SfxUsrAnyItem aDocItem( SID_BASICIDE_ARG_DOCUMENT_MODEL, makeAny( m_aCurDocument.getDocumentOrNull() ) );
- SfxStringItem aLibNameItem( SID_BASICIDE_ARG_LIBNAME, aLibName );
- BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
- SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
- SfxDispatcher* pDispatcher = pViewFrame ? pViewFrame->GetDispatcher() : NULL;
- if( pDispatcher )
- {
- pDispatcher->Execute( SID_BASICIDE_LIBREMOVED,
- SFX_CALLMODE_SYNCHRON, &aDocItem, &aLibNameItem, 0L );
- }
-
- // remove library from module and dialog library containers
- if ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) )
- xModLibContainer->removeLibrary( aOULibName );
- if ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aOULibName ) )
- xDlgLibContainer->removeLibrary( aOULibName );
-
- ((SvLBox&)aLibBox).GetModel()->Remove( pCurEntry );
- BasicIDE::MarkDocumentModified( m_aCurDocument );
- }
-}
-
-//----------------------------------------------------------------------------
-
-void LibPage::EndTabDialog( sal_uInt16 nRet )
-{
- DBG_ASSERT( pTabDlg, "TabDlg nicht gesetzt!" );
- if ( pTabDlg )
- pTabDlg->EndDialog( nRet );
-}
-
-//----------------------------------------------------------------------------
-
-void LibPage::FillListBox()
-{
- InsertListBoxEntry( ScriptDocument::getApplicationScriptDocument(), LIBRARY_LOCATION_USER );
- InsertListBoxEntry( ScriptDocument::getApplicationScriptDocument(), LIBRARY_LOCATION_SHARE );
-
- ScriptDocuments aDocuments( ScriptDocument::getAllScriptDocuments( ScriptDocument::DocumentsSorted ) );
- for ( ScriptDocuments::const_iterator doc = aDocuments.begin();
- doc != aDocuments.end();
- ++doc
- )
- {
- InsertListBoxEntry( *doc, LIBRARY_LOCATION_DOCUMENT );
- }
-}
-
-//----------------------------------------------------------------------------
-
-void LibPage::InsertListBoxEntry( const ScriptDocument& rDocument, LibraryLocation eLocation )
-{
- String aEntryText( rDocument.getTitle( eLocation ) );
- sal_uInt16 nPos = aBasicsBox.InsertEntry( aEntryText, LISTBOX_APPEND );
- aBasicsBox.SetEntryData( nPos, new BasicDocumentEntry( rDocument, eLocation ) );
-}
-
-//----------------------------------------------------------------------------
-
-void LibPage::SetCurLib()
-{
- sal_uInt16 nSelPos = aBasicsBox.GetSelectEntryPos();
- BasicDocumentEntry* pEntry = (BasicDocumentEntry*)aBasicsBox.GetEntryData( nSelPos );
- if ( pEntry )
- {
- ScriptDocument aDocument( pEntry->GetDocument() );
- DBG_ASSERT( aDocument.isAlive(), "LibPage::SetCurLib: no document, or document is dead!" );
- if ( !aDocument.isAlive() )
- return;
- LibraryLocation eLocation = pEntry->GetLocation();
- if ( aDocument != m_aCurDocument || eLocation != m_eCurLocation )
- {
- m_aCurDocument = aDocument;
- m_eCurLocation = eLocation;
- aLibBox.SetDocument( aDocument );
- aLibBox.Clear();
-
- // get a sorted list of library names
- Sequence< ::rtl::OUString > aLibNames = aDocument.getLibraryNames();
- sal_Int32 nLibCount = aLibNames.getLength();
- const ::rtl::OUString* pLibNames = aLibNames.getConstArray();
-
- for ( sal_Int32 i = 0 ; i < nLibCount ; i++ )
- {
- String aLibName( pLibNames[ i ] );
- if ( eLocation == aDocument.getLibraryLocation( aLibName ) )
- ImpInsertLibEntry( aLibName, i );
- }
-
- SvLBoxEntry* pEntry_ = aLibBox.FindEntry( String::CreateFromAscii( "Standard" ) );
- if ( !pEntry_ )
- pEntry_ = aLibBox.GetEntry( 0 );
- aLibBox.SetCurEntry( pEntry_ );
- }
- }
-}
-
-//----------------------------------------------------------------------------
-
-SvLBoxEntry* LibPage::ImpInsertLibEntry( const String& rLibName, sal_uLong nPos )
-{
- // check, if library is password protected
- sal_Bool bProtected = sal_False;
- ::rtl::OUString aOULibName( rLibName );
- Reference< script::XLibraryContainer2 > xModLibContainer( m_aCurDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
- if ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) )
- {
- Reference< script::XLibraryContainerPassword > xPasswd( xModLibContainer, UNO_QUERY );
- if ( xPasswd.is() )
- {
- bProtected = xPasswd->isLibraryPasswordProtected( aOULibName );
- }
- }
-
- SvLBoxEntry* pNewEntry = aLibBox.DoInsertEntry( rLibName, nPos );
- pNewEntry->SetUserData( new BasicLibUserData( m_aCurDocument ) );
-
- if (bProtected)
- {
- Image aImage(IDEResId(RID_IMG_LOCKED));
- aLibBox.SetExpandedEntryBmp(pNewEntry, aImage);
- aLibBox.SetCollapsedEntryBmp(pNewEntry, aImage);
- }
-
- // check, if library is link
- if ( xModLibContainer.is() && xModLibContainer->hasByName( aOULibName ) && xModLibContainer->isLibraryLink( aOULibName ) )
- {
- String aLinkURL = xModLibContainer->getLibraryLinkURL( aOULibName );
- aLibBox.SetEntryText( aLinkURL, pNewEntry, 1 );
- }
-
- return pNewEntry;
-}
-
-//----------------------------------------------------------------------------
-
-// Helper function
-void createLibImpl( Window* pWin, const ScriptDocument& rDocument,
- BasicCheckBox* pLibBox, BasicTreeListBox* pBasicBox )
-{
- OSL_ENSURE( rDocument.isAlive(), "createLibImpl: invalid document!" );
- if ( !rDocument.isAlive() )
- return;
-
- // create library name
- String aLibName;
- String aLibStdName( String( RTL_CONSTASCII_USTRINGPARAM( "Library" ) ) );
- //String aLibStdName( IDEResId( RID_STR_STDLIBNAME ) );
- sal_Bool bValid = sal_False;
- sal_uInt16 i = 1;
- while ( !bValid )
- {
- aLibName = aLibStdName;
- aLibName += String::CreateFromInt32( i );
- if ( !rDocument.hasLibrary( E_SCRIPTS, aLibName ) && !rDocument.hasLibrary( E_DIALOGS, aLibName ) )
- bValid = sal_True;
- i++;
- }
-
- std::auto_ptr< NewObjectDialog > xNewDlg( new NewObjectDialog( pWin, NEWOBJECTMODE_LIB ) );
- xNewDlg->SetObjectName( aLibName );
-
- if ( xNewDlg->Execute() )
- {
- if ( xNewDlg->GetObjectName().Len() )
- aLibName = xNewDlg->GetObjectName();
-
- if ( aLibName.Len() > 30 )
- {
- ErrorBox( pWin, WB_OK | WB_DEF_OK, String( IDEResId( RID_STR_LIBNAMETOLONG ) ) ).Execute();
- }
- else if ( !BasicIDE::IsValidSbxName( aLibName ) )
- {
- ErrorBox( pWin, WB_OK | WB_DEF_OK,
- String( IDEResId( RID_STR_BADSBXNAME ) ) ).Execute();
- }
- else if ( rDocument.hasLibrary( E_SCRIPTS, aLibName ) || rDocument.hasLibrary( E_DIALOGS, aLibName ) )
- {
- ErrorBox( pWin, WB_OK | WB_DEF_OK,
- String( IDEResId( RID_STR_SBXNAMEALLREADYUSED2 ) ) ).Execute();
- }
- else
- {
- try
- {
- // create module and dialog library
- Reference< container::XNameContainer > xModLib( rDocument.getOrCreateLibrary( E_SCRIPTS, aLibName ) );
- Reference< container::XNameContainer > xDlgLib( rDocument.getOrCreateLibrary( E_DIALOGS, aLibName ) );
-
- if( pLibBox )
- {
- SvLBoxEntry* pEntry = pLibBox->DoInsertEntry( aLibName );
- pEntry->SetUserData( new BasicLibUserData( rDocument ) );
- pLibBox->SetCurEntry( pEntry );
- }
-
- // create a module
- String aModName = rDocument.createObjectName( E_SCRIPTS, aLibName );
- ::rtl::OUString sModuleCode;
- if ( !rDocument.createModule( aLibName, aModName, sal_True, sModuleCode ) )
- throw Exception();
-
- SbxItem aSbxItem( SID_BASICIDE_ARG_SBX, rDocument, aLibName, aModName, BASICIDE_TYPE_MODULE );
- BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
- SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
- SfxDispatcher* pDispatcher = pViewFrame ? pViewFrame->GetDispatcher() : NULL;
- if( pDispatcher )
- {
- pDispatcher->Execute( SID_BASICIDE_SBXINSERTED,
- SFX_CALLMODE_SYNCHRON, &aSbxItem, 0L );
- }
-
- if( pBasicBox )
- {
- SvLBoxEntry* pEntry = pBasicBox->GetCurEntry();
- SvLBoxEntry* pRootEntry = NULL;
- while( pEntry )
- {
- pRootEntry = pEntry;
- pEntry = pBasicBox->GetParent( pEntry );
- }
-
- sal_uInt16 nMode = pBasicBox->GetMode();
- bool bDlgMode = ( nMode & BROWSEMODE_DIALOGS ) && !( nMode & BROWSEMODE_MODULES );
- sal_uInt16 nId = bDlgMode ? RID_IMG_DLGLIB : RID_IMG_MODLIB;
- SvLBoxEntry* pNewLibEntry = pBasicBox->AddEntry(
- aLibName,
- Image( IDEResId( nId ) ),
- pRootEntry, false,
- std::auto_ptr< BasicEntry >( new BasicEntry( OBJ_TYPE_LIBRARY ) ) );
- DBG_ASSERT( pNewLibEntry, "InsertEntry fehlgeschlagen!" );
-
- if( pNewLibEntry )
- {
- SvLBoxEntry* pEntry_ = pBasicBox->AddEntry(
- aModName,
- Image( IDEResId( RID_IMG_MODULE ) ),
- pNewLibEntry, false,
- std::auto_ptr< BasicEntry >( new BasicEntry( OBJ_TYPE_MODULE ) ) );
- DBG_ASSERT( pEntry_, "InsertEntry fehlgeschlagen!" );
- pBasicBox->SetCurEntry( pEntry_ );
- pBasicBox->Select( pBasicBox->GetCurEntry() ); // OV-Bug?!
- }
- }
- }
- catch ( uno::Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
- }
-}
-
-//----------------------------------------------------------------------------
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */