diff options
Diffstat (limited to 'basctl/source/basicide/baside3.cxx')
-rw-r--r-- | basctl/source/basicide/baside3.cxx | 1393 |
1 files changed, 0 insertions, 1393 deletions
diff --git a/basctl/source/basicide/baside3.cxx b/basctl/source/basicide/baside3.cxx deleted file mode 100644 index 03d264a1a..000000000 --- a/basctl/source/basicide/baside3.cxx +++ /dev/null @@ -1,1393 +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 _SDR_NOITEMS -#define _SDR_NOTOUCH -#define _SDR_NOTRANSFORM -#define _SDR_NOOBJECTS -#define _SDR_NOVIEWMARKER -#define _SDR_NODRAGMETHODS -#define _SDR_NOXOUTDEV - -#include <ide_pch.hxx> - - -#include <vector> -#include <basidesh.hrc> -#include <baside3.hxx> -#include <localizationmgr.hxx> -#include <accessibledialogwindow.hxx> -#include <dlged.hxx> -#include <dlgedmod.hxx> -#include <dlgedview.hxx> -#include <dlgeddef.hxx> -#include <propbrw.hxx> - -#include <basobj.hxx> -#include <iderdll.hxx> -#include <basidesh.hxx> -#include <idetemp.hxx> -#include <helpid.hrc> -#include <bastype2.hxx> -#include <svx/svdview.hxx> -#include <editeng/unolingu.hxx> -#include <tools/diagnose_ex.h> -#include <tools/urlobj.hxx> -#include <comphelper/processfactory.hxx> -#include <com/sun/star/container/XNameContainer.hpp> -#include <com/sun/star/beans/XPropertySet.hpp> -#include <xmlscript/xmldlg_imexp.hxx> -#include <com/sun/star/script/XLibraryContainer2.hpp> -#include <svtools/ehdl.hxx> -#include <svtools/langtab.hxx> -#include <com/sun/star/ui/dialogs/XFilePicker.hpp> -#include <com/sun/star/ui/dialogs/XFilePickerControlAccess.hpp> -#include <com/sun/star/ui/dialogs/XFilterManager.hpp> -#include <com/sun/star/ui/dialogs/TemplateDescription.hpp> -#include <com/sun/star/ui/dialogs/ExtendedFilePickerElementIds.hpp> -#include <com/sun/star/ucb/XSimpleFileAccess.hpp> -#include <com/sun/star/resource/XStringResourceResolver.hpp> -#include <com/sun/star/resource/StringResourceWithLocation.hpp> -#include <com/sun/star/task/XInteractionHandler.hpp> -#include <com/sun/star/script/vba/XVBACompatibility.hpp> - -using namespace comphelper; -using namespace ::com::sun::star; -using namespace ::com::sun::star::uno; -using namespace ::com::sun::star::ucb; -using namespace ::com::sun::star::io; -using namespace ::com::sun::star::resource; -using namespace ::com::sun::star::ui::dialogs; - -#if defined(UNX) -#define FILTERMASK_ALL "*" -#else -#define FILTERMASK_ALL "*.*" -#endif - -DBG_NAME( DialogWindow ) - -TYPEINIT1( DialogWindow, IDEBaseWindow ); - -DialogWindow::DialogWindow( Window* pParent, const ScriptDocument& rDocument, String aLibName, String aName, - const com::sun::star::uno::Reference< com::sun::star::container::XNameContainer >& xDialogModel ) - :IDEBaseWindow( pParent, rDocument, aLibName, aName ) - ,pUndoMgr(NULL) -{ - InitSettings( sal_True, sal_True, sal_True ); - - pEditor = new DlgEditor( rDocument.isDocument() ? rDocument.getDocument() : Reference< frame::XModel >() ); - pEditor->SetWindow( this ); - pEditor->SetDialog( xDialogModel ); - - // Undo einrichten - pUndoMgr = new SfxUndoManager; - - Link aDummyLink; - aOldNotifyUndoActionHdl = pEditor->GetModel()->GetNotifyUndoActionHdl(); - pEditor->GetModel()->SetNotifyUndoActionHdl( - LINK(this, DialogWindow, NotifyUndoActionHdl)); - - SetHelpId( HID_BASICIDE_DIALOGWINDOW ); - - // set readonly mode for readonly libraries - ::rtl::OUString aOULibName( aLibName ); - Reference< script::XLibraryContainer2 > xDlgLibContainer( GetDocument().getLibraryContainer( E_DIALOGS ), UNO_QUERY ); - if ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aOULibName ) && xDlgLibContainer->isLibraryReadOnly( aOULibName ) ) - SetReadOnly( sal_True ); - - if ( rDocument.isDocument() && rDocument.isReadOnly() ) - SetReadOnly( sal_True ); -} - -DialogWindow::~DialogWindow() -{ - delete pEditor; - delete pUndoMgr; -} - -void DialogWindow::LoseFocus() -{ - if ( IsModified() ) - StoreData(); - - Window::LoseFocus(); -} - - - -void DialogWindow::Paint( const Rectangle& rRect ) -{ - pEditor->Paint( rRect ); -} - - - -void DialogWindow::Resize() -{ - if ( GetHScrollBar() && GetVScrollBar() ) { - pEditor->SetScrollBars( GetHScrollBar(), GetVScrollBar() ); - } -} - - - -void DialogWindow::MouseButtonDown( const MouseEvent& rMEvt ) -{ - pEditor->MouseButtonDown( rMEvt ); - - SfxBindings* pBindings = BasicIDE::GetBindingsPtr(); - if ( pBindings ) - pBindings->Invalidate( SID_SHOW_PROPERTYBROWSER ); -} - - - -void DialogWindow::MouseButtonUp( const MouseEvent& rMEvt ) -{ - pEditor->MouseButtonUp( rMEvt ); - SfxBindings* pBindings = BasicIDE::GetBindingsPtr(); - if( (pEditor->GetMode() == DLGED_INSERT) && !pEditor->IsCreateOK() ) - { - pEditor->SetMode( DLGED_SELECT ); - if ( pBindings ) - pBindings->Invalidate( SID_CHOOSE_CONTROLS ); - } - if ( pBindings ) - { - pBindings->Invalidate( SID_SHOW_PROPERTYBROWSER ); - pBindings->Invalidate( SID_DOC_MODIFIED ); - pBindings->Invalidate( SID_SAVEDOC ); - } -} - - - -void DialogWindow::MouseMove( const MouseEvent& rMEvt ) -{ - pEditor->MouseMove( rMEvt ); -} - - - -void DialogWindow::KeyInput( const KeyEvent& rKEvt ) -{ - if( rKEvt.GetKeyCode() == KEY_BACKSPACE ) - { - BasicIDEShell* pIDEShell = IDE_DLL()->GetShell(); - SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL; - SfxDispatcher* pDispatcher = pViewFrame ? pViewFrame->GetDispatcher() : NULL; - if( pDispatcher ) - { - pDispatcher->Execute( SID_BACKSPACE ); - } - } - else - { - SfxBindings* pBindings = BasicIDE::GetBindingsPtr(); - if( pBindings && rKEvt.GetKeyCode() == KEY_TAB ) - pBindings->Invalidate( SID_SHOW_PROPERTYBROWSER ); - - if( !pEditor->KeyInput( rKEvt ) ) - { - if( !SfxViewShell::Current()->KeyInput( rKEvt ) ) - Window::KeyInput( rKEvt ); - } - } -} - -void DialogWindow::Command( const CommandEvent& rCEvt ) -{ - if ( ( rCEvt.GetCommand() == COMMAND_WHEEL ) || - ( rCEvt.GetCommand() == COMMAND_STARTAUTOSCROLL ) || - ( rCEvt.GetCommand() == COMMAND_AUTOSCROLL ) ) - { - HandleScrollCommand( rCEvt, GetHScrollBar(), GetVScrollBar() ); - } - else if ( rCEvt.GetCommand() == COMMAND_CONTEXTMENU ) - { - BasicIDEShell* pIDEShell = IDE_DLL()->GetShell(); - SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL; - SfxDispatcher* pDispatcher = pViewFrame ? pViewFrame->GetDispatcher() : NULL; - if ( pDispatcher ) - { - SdrView* pView = GetView(); - if( !rCEvt.IsMouseEvent() && pView->AreObjectsMarked() ) - { - Rectangle aMarkedRect( pView->GetMarkedRect() ); - Point MarkedCenter( aMarkedRect.Center() ); - Point PosPixel( LogicToPixel( MarkedCenter ) ); - pDispatcher->ExecutePopup( IDEResId(RID_POPUP_DLGED), this, &PosPixel ); - } - else - { - pDispatcher->ExecutePopup( IDEResId(RID_POPUP_DLGED) ); - } - - } - } - else - IDEBaseWindow::Command( rCEvt ); -} - - - - -IMPL_LINK( DialogWindow, NotifyUndoActionHdl, SfxUndoAction *, pUndoAction ) -{ - (void)pUndoAction; - - return 0; -} - - - -void DialogWindow::DoInit() -{ - GetHScrollBar()->Show(); - GetVScrollBar()->Show(); - pEditor->SetScrollBars( GetHScrollBar(), GetVScrollBar() ); -} - - - -void DialogWindow::DoScroll( ScrollBar* pCurScrollBar ) -{ - pEditor->DoScroll( pCurScrollBar ); -} - -void DialogWindow::GetState( SfxItemSet& rSet ) -{ - SfxWhichIter aIter(rSet); - for ( sal_uInt16 nWh = aIter.FirstWhich(); 0 != nWh; nWh = aIter.NextWhich() ) - { - switch ( nWh ) - { - case SID_PASTE: - { - if ( !IsPasteAllowed() ) - rSet.DisableItem( nWh ); - - if ( IsReadOnly() ) - rSet.DisableItem( nWh ); - } - break; - case SID_COPY: - { - // any object selected? - if ( !pEditor->GetView()->AreObjectsMarked() ) - rSet.DisableItem( nWh ); - } - break; - case SID_CUT: - case SID_DELETE: - case SID_BACKSPACE: - { - // any object selected? - if ( !pEditor->GetView()->AreObjectsMarked() ) - rSet.DisableItem( nWh ); - - if ( IsReadOnly() ) - rSet.DisableItem( nWh ); - } - break; - case SID_REDO: - { - if ( !pUndoMgr->GetUndoActionCount() ) - rSet.DisableItem( nWh ); - } - break; - - // Nur Dialogfenster: - case SID_DIALOG_TESTMODE: - { - // ist die IDE noch aktiv? - if( IDE_DLL()->GetShell()->GetFrame() ) - { - rSet.Put( SfxBoolItem( SID_DIALOG_TESTMODE, - (pEditor->GetMode() == DLGED_TEST) ? sal_True : sal_False) ); - } - else - rSet.Put( SfxBoolItem( SID_DIALOG_TESTMODE,sal_False )); - } - break; - - case SID_CHOOSE_CONTROLS: - { - if ( IsReadOnly() ) - { - rSet.DisableItem( nWh ); - } - else - { - SfxAllEnumItem aItem( SID_CHOOSE_CONTROLS ); - if ( GetEditor()->GetMode() == DLGED_SELECT ) - aItem.SetValue( SVX_SNAP_SELECT ); - else - { - sal_uInt16 nObj; - switch( pEditor->GetInsertObj() ) - { - case OBJ_DLG_PUSHBUTTON: nObj = SVX_SNAP_PUSHBUTTON; break; - case OBJ_DLG_RADIOBUTTON: nObj = SVX_SNAP_RADIOBUTTON; break; - case OBJ_DLG_CHECKBOX: nObj = SVX_SNAP_CHECKBOX; break; - case OBJ_DLG_LISTBOX: nObj = SVX_SNAP_LISTBOX; break; - case OBJ_DLG_COMBOBOX: nObj = SVX_SNAP_COMBOBOX; break; - case OBJ_DLG_GROUPBOX: nObj = SVX_SNAP_GROUPBOX; break; - case OBJ_DLG_EDIT: nObj = SVX_SNAP_EDIT; break; - case OBJ_DLG_FIXEDTEXT: nObj = SVX_SNAP_FIXEDTEXT; break; - case OBJ_DLG_IMAGECONTROL: nObj = SVX_SNAP_IMAGECONTROL; break; - case OBJ_DLG_PROGRESSBAR: nObj = SVX_SNAP_PROGRESSBAR; break; - case OBJ_DLG_HSCROLLBAR: nObj = SVX_SNAP_HSCROLLBAR; break; - case OBJ_DLG_VSCROLLBAR: nObj = SVX_SNAP_VSCROLLBAR; break; - case OBJ_DLG_HFIXEDLINE: nObj = SVX_SNAP_HFIXEDLINE; break; - case OBJ_DLG_VFIXEDLINE: nObj = SVX_SNAP_VFIXEDLINE; break; - case OBJ_DLG_DATEFIELD: nObj = SVX_SNAP_DATEFIELD; break; - case OBJ_DLG_TIMEFIELD: nObj = SVX_SNAP_TIMEFIELD; break; - case OBJ_DLG_NUMERICFIELD: nObj = SVX_SNAP_NUMERICFIELD; break; - case OBJ_DLG_CURRENCYFIELD: nObj = SVX_SNAP_CURRENCYFIELD; break; - case OBJ_DLG_FORMATTEDFIELD: nObj = SVX_SNAP_FORMATTEDFIELD; break; - case OBJ_DLG_PATTERNFIELD: nObj = SVX_SNAP_PATTERNFIELD; break; - case OBJ_DLG_FILECONTROL: nObj = SVX_SNAP_FILECONTROL; break; - case OBJ_DLG_TREECONTROL: nObj = SVX_SNAP_TREECONTROL; break; - default: nObj = 0; - } -#ifdef DBG_UTIL - if( !nObj ) - { - DBG_WARNING( "SID_CHOOSE_CONTROLS: Unbekannt!" ); - } -#endif - aItem.SetValue( nObj ); - } - - rSet.Put( aItem ); - } - } - break; - - case SID_SHOW_PROPERTYBROWSER: - { - BasicIDEShell* pIDEShell = IDE_DLL()->GetShell(); - SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL; - if ( pViewFrame && !pViewFrame->HasChildWindow( SID_SHOW_PROPERTYBROWSER ) && !pEditor->GetView()->AreObjectsMarked() ) - rSet.DisableItem( nWh ); - - if ( IsReadOnly() ) - rSet.DisableItem( nWh ); - } - break; - } - } -} - - - -void DialogWindow::ExecuteCommand( SfxRequest& rReq ) -{ - switch ( rReq.GetSlot() ) - { - case SID_CUT: - if ( !IsReadOnly() ) - { - GetEditor()->Cut(); - SfxBindings* pBindings = BasicIDE::GetBindingsPtr(); - if ( pBindings ) - pBindings->Invalidate( SID_DOC_MODIFIED ); - } - break; - case SID_DELETE: - if ( !IsReadOnly() ) - { - GetEditor()->Delete(); - SfxBindings* pBindings = BasicIDE::GetBindingsPtr(); - if ( pBindings ) - pBindings->Invalidate( SID_DOC_MODIFIED ); - } - break; - case SID_COPY: - GetEditor()->Copy(); - break; - case SID_PASTE: - if ( !IsReadOnly() ) - { - GetEditor()->Paste(); - SfxBindings* pBindings = BasicIDE::GetBindingsPtr(); - if ( pBindings ) - pBindings->Invalidate( SID_DOC_MODIFIED ); - } - break; - case SID_CHOOSE_CONTROLS: - { - const SfxItemSet* pArgs = rReq.GetArgs(); - DBG_ASSERT( pArgs, "Nix Args" ); - - const SfxAllEnumItem& rItem = (SfxAllEnumItem&)pArgs->Get( SID_CHOOSE_CONTROLS ); - switch( rItem.GetValue() ) - { - case SVX_SNAP_PUSHBUTTON: - { - GetEditor()->SetMode( DLGED_INSERT ); - GetEditor()->SetInsertObj( OBJ_DLG_PUSHBUTTON ); - } - break; - case SVX_SNAP_RADIOBUTTON: - { - GetEditor()->SetMode( DLGED_INSERT ); - GetEditor()->SetInsertObj( OBJ_DLG_RADIOBUTTON ); - } - break; - case SVX_SNAP_CHECKBOX: - { - GetEditor()->SetMode( DLGED_INSERT ); - GetEditor()->SetInsertObj( OBJ_DLG_CHECKBOX); - } - break; - case SVX_SNAP_LISTBOX: - { - GetEditor()->SetMode( DLGED_INSERT ); - GetEditor()->SetInsertObj( OBJ_DLG_LISTBOX ); - } - break; - case SVX_SNAP_COMBOBOX: - { - GetEditor()->SetMode( DLGED_INSERT ); - GetEditor()->SetInsertObj( OBJ_DLG_COMBOBOX ); - } - break; - case SVX_SNAP_GROUPBOX: - { - GetEditor()->SetMode( DLGED_INSERT ); - GetEditor()->SetInsertObj( OBJ_DLG_GROUPBOX ); - } - break; - case SVX_SNAP_EDIT: - { - GetEditor()->SetMode( DLGED_INSERT ); - GetEditor()->SetInsertObj( OBJ_DLG_EDIT ); - } - break; - case SVX_SNAP_FIXEDTEXT: - { - GetEditor()->SetMode( DLGED_INSERT ); - GetEditor()->SetInsertObj( OBJ_DLG_FIXEDTEXT ); - } - break; - case SVX_SNAP_IMAGECONTROL: - { - GetEditor()->SetMode( DLGED_INSERT ); - GetEditor()->SetInsertObj( OBJ_DLG_IMAGECONTROL ); - } - break; - case SVX_SNAP_PROGRESSBAR: - { - GetEditor()->SetMode( DLGED_INSERT ); - GetEditor()->SetInsertObj( OBJ_DLG_PROGRESSBAR ); - } - break; - case SVX_SNAP_HSCROLLBAR: - { - GetEditor()->SetMode( DLGED_INSERT ); - GetEditor()->SetInsertObj( OBJ_DLG_HSCROLLBAR ); - } - break; - case SVX_SNAP_VSCROLLBAR: - { - GetEditor()->SetMode( DLGED_INSERT ); - GetEditor()->SetInsertObj( OBJ_DLG_VSCROLLBAR ); - } - break; - case SVX_SNAP_HFIXEDLINE: - { - GetEditor()->SetMode( DLGED_INSERT ); - GetEditor()->SetInsertObj( OBJ_DLG_HFIXEDLINE ); - } - break; - case SVX_SNAP_VFIXEDLINE: - { - GetEditor()->SetMode( DLGED_INSERT ); - GetEditor()->SetInsertObj( OBJ_DLG_VFIXEDLINE ); - } - break; - case SVX_SNAP_DATEFIELD: - { - GetEditor()->SetMode( DLGED_INSERT ); - GetEditor()->SetInsertObj( OBJ_DLG_DATEFIELD ); - } - break; - case SVX_SNAP_TIMEFIELD: - { - GetEditor()->SetMode( DLGED_INSERT ); - GetEditor()->SetInsertObj( OBJ_DLG_TIMEFIELD ); - } - break; - case SVX_SNAP_NUMERICFIELD: - { - GetEditor()->SetMode( DLGED_INSERT ); - GetEditor()->SetInsertObj( OBJ_DLG_NUMERICFIELD ); - } - break; - case SVX_SNAP_CURRENCYFIELD: - { - GetEditor()->SetMode( DLGED_INSERT ); - GetEditor()->SetInsertObj( OBJ_DLG_CURRENCYFIELD ); - } - break; - case SVX_SNAP_FORMATTEDFIELD: - { - GetEditor()->SetMode( DLGED_INSERT ); - GetEditor()->SetInsertObj( OBJ_DLG_FORMATTEDFIELD ); - } - break; - case SVX_SNAP_PATTERNFIELD: - { - GetEditor()->SetMode( DLGED_INSERT ); - GetEditor()->SetInsertObj( OBJ_DLG_PATTERNFIELD ); - } - break; - case SVX_SNAP_FILECONTROL: - { - GetEditor()->SetMode( DLGED_INSERT ); - GetEditor()->SetInsertObj( OBJ_DLG_FILECONTROL ); - } - break; - case SVX_SNAP_TREECONTROL: - { - GetEditor()->SetMode( DLGED_INSERT ); - GetEditor()->SetInsertObj( OBJ_DLG_TREECONTROL ); - } - break; - - case SVX_SNAP_SELECT: - { - GetEditor()->SetMode( DLGED_SELECT ); - } - break; - } - - if ( rReq.GetModifier() & KEY_MOD1 ) - { - if ( GetEditor()->GetMode() == DLGED_INSERT ) - GetEditor()->CreateDefaultObject(); - } - - SfxBindings* pBindings = BasicIDE::GetBindingsPtr(); - if ( pBindings ) - pBindings->Invalidate( SID_DOC_MODIFIED ); - } - break; - - case SID_DIALOG_TESTMODE: - { - DlgEdMode eOldMode = GetEditor()->GetMode(); - GetEditor()->SetMode( DLGED_TEST ); - GetEditor()->SetMode( eOldMode ); - rReq.Done(); - SfxBindings* pBindings = BasicIDE::GetBindingsPtr(); - if ( pBindings ) - pBindings->Invalidate( SID_DIALOG_TESTMODE ); - return; - } - case SID_EXPORT_DIALOG: - SaveDialog(); - break; - - case SID_IMPORT_DIALOG: - ImportDialog(); - break; - } - - rReq.Done(); -} - -Reference< container::XNameContainer > DialogWindow::GetDialog() const -{ - return pEditor->GetDialog(); -} - -sal_Bool DialogWindow::RenameDialog( const String& rNewName ) -{ - if ( !BasicIDE::RenameDialog( this, GetDocument(), GetLibName(), GetName(), rNewName ) ) - return sal_False; - - SfxBindings* pBindings = BasicIDE::GetBindingsPtr(); - if ( pBindings ) - pBindings->Invalidate( SID_DOC_MODIFIED ); - - return sal_True; -} - -void DialogWindow::DisableBrowser() -{ - BasicIDEShell* pIDEShell = IDE_DLL()->GetShell(); - SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL; - SfxChildWindow* pChildWin = pViewFrame ? pViewFrame->GetChildWindow(SID_SHOW_PROPERTYBROWSER) : NULL; - if( pChildWin ) - ((PropBrw*)(pChildWin->GetWindow()))->Update( NULL ); -} - -void DialogWindow::UpdateBrowser() -{ - BasicIDEShell* pIDEShell = IDE_DLL()->GetShell(); - SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL; - SfxChildWindow* pChildWin = pViewFrame ? pViewFrame->GetChildWindow(SID_SHOW_PROPERTYBROWSER) : NULL; - if( pChildWin ) - ((PropBrw*)(pChildWin->GetWindow()))->Update( pIDEShell ); -} - -static ::rtl::OUString aResourceResolverPropName( RTL_CONSTASCII_USTRINGPARAM( "ResourceResolver" )); - -sal_Bool DialogWindow::SaveDialog() -{ - DBG_CHKTHIS( DialogWindow, 0 ); - sal_Bool bDone = sal_False; - - Reference< lang::XMultiServiceFactory > xMSF( ::comphelper::getProcessServiceFactory() ); - Reference < XFilePicker > xFP; - if( xMSF.is() ) - { - Sequence <Any> aServiceType(1); - aServiceType[0] <<= TemplateDescription::FILESAVE_AUTOEXTENSION_PASSWORD; - xFP = Reference< XFilePicker >( xMSF->createInstanceWithArguments( - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ui.dialogs.FilePicker" ) ), aServiceType ), UNO_QUERY ); - } - - Reference< XFilePickerControlAccess > xFPControl(xFP, UNO_QUERY); - xFPControl->enableControl(ExtendedFilePickerElementIds::CHECKBOX_PASSWORD, sal_False); - Any aValue; - aValue <<= (sal_Bool) sal_True; - xFPControl->setValue(ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION, 0, aValue); - - if ( aCurPath.Len() ) - xFP->setDisplayDirectory ( aCurPath ); - - xFP->setDefaultName( ::rtl::OUString( GetName() ) ); - - String aDialogStr( IDEResId( RID_STR_STDDIALOGNAME ) ); - Reference< XFilterManager > xFltMgr(xFP, UNO_QUERY); - xFltMgr->appendFilter( aDialogStr, String( RTL_CONSTASCII_USTRINGPARAM( "*.xdl" ) ) ); - xFltMgr->appendFilter( String( IDEResId( RID_STR_FILTER_ALLFILES ) ), String( RTL_CONSTASCII_USTRINGPARAM( FILTERMASK_ALL ) ) ); - xFltMgr->setCurrentFilter( aDialogStr ); - - if( xFP->execute() == RET_OK ) - { - Sequence< ::rtl::OUString > aPaths = xFP->getFiles(); - aCurPath = aPaths[0]; - - // export dialog model to xml - Reference< container::XNameContainer > xDialogModel = GetDialog(); - Reference< XComponentContext > xContext; - Reference< beans::XPropertySet > xProps( ::comphelper::getProcessServiceFactory(), UNO_QUERY ); - OSL_ASSERT( xProps.is() ); - OSL_VERIFY( xProps->getPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DefaultContext")) ) >>= xContext ); - Reference< XInputStreamProvider > xISP = ::xmlscript::exportDialogModel( xDialogModel, xContext, GetDocument().isDocument() ? GetDocument().getDocument() : Reference< frame::XModel >() ); - Reference< XInputStream > xInput( xISP->createInputStream() ); - - Reference< XSimpleFileAccess > xSFI( xMSF->createInstance - ( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ucb.SimpleFileAccess" )) ), UNO_QUERY ); - - Reference< XOutputStream > xOutput; - try - { - if( xSFI->exists( aCurPath ) ) - xSFI->kill( aCurPath ); - xOutput = xSFI->openFileWrite( aCurPath ); - } - catch( Exception& ) - {} - - if( xOutput.is() ) - { - Sequence< sal_Int8 > bytes; - sal_Int32 nRead = xInput->readBytes( bytes, xInput->available() ); - for (;;) - { - if( nRead ) - xOutput->writeBytes( bytes ); - - nRead = xInput->readBytes( bytes, 1024 ); - if (! nRead) - break; - } - bDone = true; - - // With resource? - Reference< beans::XPropertySet > xDialogModelPropSet( xDialogModel, UNO_QUERY ); - Reference< resource::XStringResourceResolver > xStringResourceResolver; - if( xDialogModelPropSet.is() ) - { - try - { - Any aResourceResolver = xDialogModelPropSet->getPropertyValue( aResourceResolverPropName ); - aResourceResolver >>= xStringResourceResolver; - } - catch( beans::UnknownPropertyException& ) - {} - } - - bool bResource = false; - if( xStringResourceResolver.is() ) - { - Sequence< lang::Locale > aLocaleSeq = xStringResourceResolver->getLocales(); - sal_Int32 nLocaleCount = aLocaleSeq.getLength(); - if( nLocaleCount > 0 ) - bResource = true; - } - - if( bResource ) - { - INetURLObject aURLObj( aCurPath ); - aURLObj.removeExtension(); - ::rtl::OUString aDialogName( aURLObj.getName() ); - aURLObj.removeSegment(); - ::rtl::OUString aURL( aURLObj.GetMainURL( INetURLObject::NO_DECODE ) ); - sal_Bool bReadOnly = sal_False; - ::rtl::OUString aComment( RTL_CONSTASCII_USTRINGPARAM( "# " )); - aComment += aDialogName; - aComment += ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( " strings" )); - Reference< task::XInteractionHandler > xDummyHandler; - - // Remove old properties files in case of overwriting Dialog files - if( xSFI->isFolder( aURL ) ) - { - Sequence< ::rtl::OUString > aContentSeq = xSFI->getFolderContents( aURL, false ); - - ::rtl::OUString aDialogName_( aDialogName ); - aDialogName_ += ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "_" )); - sal_Int32 nCount = aContentSeq.getLength(); - const ::rtl::OUString* pFiles = aContentSeq.getConstArray(); - for( int i = 0 ; i < nCount ; i++ ) - { - ::rtl::OUString aCompleteName = pFiles[i]; - rtl::OUString aPureName; - rtl::OUString aExtension; - sal_Int32 iDot = aCompleteName.lastIndexOf( '.' ); - sal_Int32 iSlash = aCompleteName.lastIndexOf( '/' ); - if( iDot != -1 ) - { - sal_Int32 iCopyFrom = (iSlash != -1) ? iSlash + 1 : 0; - aPureName = aCompleteName.copy( iCopyFrom, iDot-iCopyFrom ); - aExtension = aCompleteName.copy( iDot + 1 ); - } - - if( aExtension.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "properties" ) ) || - aExtension.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "default" ) ) ) - { - if( aPureName.indexOf( aDialogName_ ) == 0 ) - { - try - { - xSFI->kill( aCompleteName ); - } - catch( uno::Exception& ) - {} - } - } - } - } - - Reference< XStringResourceWithLocation > xStringResourceWithLocation = - StringResourceWithLocation::create( xContext, aURL, bReadOnly, - xStringResourceResolver->getDefaultLocale(), aDialogName, aComment, xDummyHandler ); - - // Add locales - Sequence< lang::Locale > aLocaleSeq = xStringResourceResolver->getLocales(); - const lang::Locale* pLocales = aLocaleSeq.getConstArray(); - sal_Int32 nLocaleCount = aLocaleSeq.getLength(); - for( sal_Int32 iLocale = 0 ; iLocale < nLocaleCount ; iLocale++ ) - { - const lang::Locale& rLocale = pLocales[ iLocale ]; - xStringResourceWithLocation->newLocale( rLocale ); - } - - Reference< XStringResourceManager > xTargetStringResourceManager( xStringResourceWithLocation, uno::UNO_QUERY ); - - LocalizationMgr::copyResourceForDialog( xDialogModel, - xStringResourceResolver, xTargetStringResourceManager ); - - xStringResourceWithLocation->store(); - } - } - else - ErrorBox( this, WB_OK | WB_DEF_OK, String( IDEResId( RID_STR_COULDNTWRITE) ) ).Execute(); - } - - return bDone; -} - -extern bool localesAreEqual( const ::com::sun::star::lang::Locale& rLocaleLeft, - const ::com::sun::star::lang::Locale& rLocaleRight ); - -std::vector< lang::Locale > implGetLanguagesOnlyContainedInFirstSeq - ( Sequence< lang::Locale > aFirstSeq, Sequence< lang::Locale > aSecondSeq ) -{ - std::vector< lang::Locale > avRet; - - const lang::Locale* pFirst = aFirstSeq.getConstArray(); - const lang::Locale* pSecond = aSecondSeq.getConstArray(); - sal_Int32 nFirstCount = aFirstSeq.getLength(); - sal_Int32 nSecondCount = aSecondSeq.getLength(); - - for( sal_Int32 iFirst = 0 ; iFirst < nFirstCount ; iFirst++ ) - { - const lang::Locale& rFirstLocale = pFirst[ iFirst ]; - - bool bAlsoContainedInSecondSeq = false; - for( sal_Int32 iSecond = 0 ; iSecond < nSecondCount ; iSecond++ ) - { - const lang::Locale& rSecondLocale = pSecond[ iSecond ]; - - bool bMatch = localesAreEqual( rFirstLocale, rSecondLocale ); - if( bMatch ) - { - bAlsoContainedInSecondSeq = true; - break; - } - } - - if( !bAlsoContainedInSecondSeq ) - avRet.push_back( rFirstLocale ); - } - - return avRet; -} - - -class NameClashQueryBox : public MessBox -{ -public: - NameClashQueryBox( Window* pParent, - const XubString& rTitle, const XubString& rMessage ); -}; - -NameClashQueryBox::NameClashQueryBox( Window* pParent, - const XubString& rTitle, const XubString& rMessage ) - : MessBox( pParent, 0, rTitle, rMessage ) -{ - if ( rTitle.Len() ) - SetText( rTitle ); - - maMessText = rMessage; - - AddButton( String( IDEResId( RID_STR_DLGIMP_CLASH_RENAME ) ), RET_YES, - BUTTONDIALOG_DEFBUTTON | BUTTONDIALOG_OKBUTTON | BUTTONDIALOG_FOCUSBUTTON ); - AddButton( String( IDEResId( RID_STR_DLGIMP_CLASH_REPLACE ) ), RET_NO, 0 ); - AddButton( BUTTON_CANCEL, RET_CANCEL, BUTTONDIALOG_CANCELBUTTON ); - - SetImage( QueryBox::GetStandardImage() ); -} - - -class LanguageMismatchQueryBox : public MessBox -{ -public: - LanguageMismatchQueryBox( Window* pParent, - const XubString& rTitle, const XubString& rMessage ); -}; - -LanguageMismatchQueryBox::LanguageMismatchQueryBox( Window* pParent, - const XubString& rTitle, const XubString& rMessage ) - : MessBox( pParent, 0, rTitle, rMessage ) -{ - if ( rTitle.Len() ) - SetText( rTitle ); - - maMessText = rMessage; - AddButton( String( IDEResId( RID_STR_DLGIMP_MISMATCH_ADD ) ), RET_YES, - BUTTONDIALOG_DEFBUTTON | BUTTONDIALOG_OKBUTTON | BUTTONDIALOG_FOCUSBUTTON ); - AddButton( String( IDEResId( RID_STR_DLGIMP_MISMATCH_OMIT ) ), RET_NO, 0 ); - AddButton( BUTTON_CANCEL, RET_CANCEL, BUTTONDIALOG_CANCELBUTTON ); - AddButton( BUTTON_HELP, BUTTONID_HELP, BUTTONDIALOG_HELPBUTTON, 4 ); - - SetImage( QueryBox::GetStandardImage() ); -} - -sal_Bool implImportDialog( Window* pWin, const String& rCurPath, const ScriptDocument& rDocument, const String& aLibName ) -{ - sal_Bool bDone = sal_False; - - 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 ); - } - - Reference< XFilePickerControlAccess > xFPControl(xFP, UNO_QUERY); - xFPControl->enableControl(ExtendedFilePickerElementIds::CHECKBOX_PASSWORD, sal_False); - Any aValue; - aValue <<= (sal_Bool) sal_True; - xFPControl->setValue(ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION, 0, aValue); - - String aCurPath( rCurPath ); - if ( aCurPath.Len() ) - xFP->setDisplayDirectory ( aCurPath ); - - String aDialogStr( IDEResId( RID_STR_STDDIALOGNAME ) ); - Reference< XFilterManager > xFltMgr(xFP, UNO_QUERY); - xFltMgr->appendFilter( aDialogStr, String( RTL_CONSTASCII_USTRINGPARAM( "*.xdl" ) ) ); - xFltMgr->appendFilter( String( IDEResId( RID_STR_FILTER_ALLFILES ) ), String( RTL_CONSTASCII_USTRINGPARAM( FILTERMASK_ALL ) ) ); - xFltMgr->setCurrentFilter( aDialogStr ); - - if( xFP->execute() == RET_OK ) - { - Sequence< ::rtl::OUString > aPaths = xFP->getFiles(); - aCurPath = aPaths[0]; - - ::rtl::OUString aBasePath; - ::rtl::OUString aOUCurPath( aCurPath ); - sal_Int32 iSlash = aOUCurPath.lastIndexOf( '/' ); - if( iSlash != -1 ) - aBasePath = aOUCurPath.copy( 0, iSlash + 1 ); - - try - { - // create dialog model - Reference< container::XNameContainer > xDialogModel( xMSF->createInstance - ( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlDialogModel" ) ) ), UNO_QUERY_THROW ); - - Reference< XSimpleFileAccess > xSFI( xMSF->createInstance - ( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ucb.SimpleFileAccess" )) ), UNO_QUERY_THROW ); - - Reference< XInputStream > xInput; - if( xSFI->exists( aCurPath ) ) - xInput = xSFI->openFileRead( aCurPath ); - - Reference< XComponentContext > xContext; - Reference< beans::XPropertySet > xProps( xMSF, UNO_QUERY ); - OSL_ASSERT( xProps.is() ); - OSL_VERIFY( xProps->getPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DefaultContext")) ) >>= xContext ); - ::xmlscript::importDialogModel( xInput, xDialogModel, xContext, rDocument.isDocument() ? rDocument.getDocument() : Reference< frame::XModel >() ); - - String aXmlDlgName; - Reference< beans::XPropertySet > xDialogModelPropSet( xDialogModel, UNO_QUERY ); - if( xDialogModelPropSet.is() ) - { - try - { - Any aXmlDialogNameAny = xDialogModelPropSet->getPropertyValue( DLGED_PROP_NAME ); - ::rtl::OUString aOUXmlDialogName; - aXmlDialogNameAny >>= aOUXmlDialogName; - aXmlDlgName = aOUXmlDialogName; - } - catch( beans::UnknownPropertyException& ) - {} - } - bool bValidName = (aXmlDlgName.Len() != 0); - OSL_ASSERT( bValidName ); - if( !bValidName ) - return bDone; - - bool bDialogAlreadyExists = rDocument.hasDialog( aLibName, aXmlDlgName ); - - String aNewDlgName = aXmlDlgName; - enum NameClashMode - { - NO_CLASH, - CLASH_OVERWRITE_DIALOG, - CLASH_RENAME_DIALOG, - }; - NameClashMode eNameClashMode = NO_CLASH; - if( bDialogAlreadyExists ) - { - String aQueryBoxTitle( IDEResId( RID_STR_DLGIMP_CLASH_TITLE ) ); - String aQueryBoxText( IDEResId( RID_STR_DLGIMP_CLASH_TEXT ) ); - aQueryBoxText.SearchAndReplace( String( RTL_CONSTASCII_USTRINGPARAM( "$(ARG1)" ) ), aXmlDlgName ); - - NameClashQueryBox aQueryBox( pWin, aQueryBoxTitle, aQueryBoxText ); - sal_uInt16 nRet = aQueryBox.Execute(); - if( RET_YES == nRet ) - { - // RET_YES == Rename, see NameClashQueryBox::NameClashQueryBox - eNameClashMode = CLASH_RENAME_DIALOG; - - aNewDlgName = rDocument.createObjectName( E_DIALOGS, aLibName ); - } - else if( RET_NO == nRet ) - { - // RET_NO == Replace, see NameClashQueryBox::NameClashQueryBox - eNameClashMode = CLASH_OVERWRITE_DIALOG; - } - else if( RET_CANCEL == nRet ) - { - return bDone; - } - } - - BasicIDEShell* pIDEShell = IDE_DLL()->GetShell(); - if( pIDEShell == NULL ) - { - OSL_ASSERT( pIDEShell != NULL ); - return bDone; - } - - // Resource? - ::com::sun::star::lang::Locale aLocale = Application::GetSettings().GetUILocale(); - Reference< task::XInteractionHandler > xDummyHandler; - bool bReadOnly = true; - Reference< XStringResourceWithLocation > xImportStringResource = - StringResourceWithLocation::create( xContext, aBasePath, bReadOnly, - aLocale, aXmlDlgName, ::rtl::OUString(), xDummyHandler ); - - Sequence< lang::Locale > aImportLocaleSeq = xImportStringResource->getLocales(); - sal_Int32 nImportLocaleCount = aImportLocaleSeq.getLength(); - - Reference< container::XNameContainer > xDialogLib( rDocument.getLibrary( E_DIALOGS, aLibName, sal_True ) ); - Reference< resource::XStringResourceManager > xLibStringResourceManager = LocalizationMgr::getStringResourceFromDialogLibrary( xDialogLib ); - sal_Int32 nLibLocaleCount = 0; - Sequence< lang::Locale > aLibLocaleSeq; - if( xLibStringResourceManager.is() ) - { - aLibLocaleSeq = xLibStringResourceManager->getLocales(); - nLibLocaleCount = aLibLocaleSeq.getLength(); - } - - // Check language matches - std::vector< lang::Locale > aOnlyInImportLanguages = - implGetLanguagesOnlyContainedInFirstSeq( aImportLocaleSeq, aLibLocaleSeq ); - int nOnlyInImportLanguageCount = aOnlyInImportLanguages.size(); - - // For now: Keep languages from lib - bool bLibLocalized = (nLibLocaleCount > 0); - bool bImportLocalized = (nImportLocaleCount > 0); - - bool bAddDialogLanguagesToLib = false; - if( nOnlyInImportLanguageCount > 0 ) - { - String aQueryBoxTitle( IDEResId( RID_STR_DLGIMP_MISMATCH_TITLE ) ); - String aQueryBoxText( IDEResId( RID_STR_DLGIMP_MISMATCH_TEXT ) ); - LanguageMismatchQueryBox aQueryBox( pWin, aQueryBoxTitle, aQueryBoxText ); - sal_uInt16 nRet = aQueryBox.Execute(); - if( RET_YES == nRet ) - { - // RET_YES == Add, see LanguageMismatchQueryBox::LanguageMismatchQueryBox - bAddDialogLanguagesToLib = true; - } - // RET_NO == Omit, see LanguageMismatchQueryBox::LanguageMismatchQueryBox - // -> nothing to do here - //else if( RET_NO == nRet ) - //{ - //} - else if( RET_CANCEL == nRet ) - { - return bDone; - } - } - - if( bImportLocalized ) - { - bool bCopyResourcesForDialog = true; - if( bAddDialogLanguagesToLib ) - { - LocalizationMgr* pCurMgr = pIDEShell->GetCurLocalizationMgr(); - - lang::Locale aFirstLocale; - aFirstLocale = aOnlyInImportLanguages[0]; - if( nOnlyInImportLanguageCount > 1 ) - { - // Check if import default belongs to only import languages and use it then - lang::Locale aImportDefaultLocale = xImportStringResource->getDefaultLocale(); - lang::Locale aTmpLocale; - for( int i = 0 ; i < nOnlyInImportLanguageCount ; ++i ) - { - aTmpLocale = aOnlyInImportLanguages[i]; - if( localesAreEqual( aImportDefaultLocale, aTmpLocale ) ) - { - aFirstLocale = aImportDefaultLocale; - break; - } - } - } - - Sequence< lang::Locale > aFirstLocaleSeq( 1 ); - aFirstLocaleSeq[0] = aFirstLocale; - pCurMgr->handleAddLocales( aFirstLocaleSeq ); - - if( nOnlyInImportLanguageCount > 1 ) - { - Sequence< lang::Locale > aRemainingLocaleSeq( nOnlyInImportLanguageCount - 1 ); - lang::Locale aTmpLocale; - int iSeq = 0; - for( int i = 0 ; i < nOnlyInImportLanguageCount ; ++i ) - { - aTmpLocale = aOnlyInImportLanguages[i]; - if( !localesAreEqual( aFirstLocale, aTmpLocale ) ) - aRemainingLocaleSeq[iSeq++] = aTmpLocale; - } - pCurMgr->handleAddLocales( aRemainingLocaleSeq ); - } - } - else if( !bLibLocalized ) - { - Reference< resource::XStringResourceManager > xImportStringResourceManager( xImportStringResource, UNO_QUERY ); - LocalizationMgr::resetResourceForDialog( xDialogModel, xImportStringResourceManager ); - bCopyResourcesForDialog = false; - } - - if( bCopyResourcesForDialog ) - { - Reference< resource::XStringResourceResolver > xImportStringResourceResolver( xImportStringResource, UNO_QUERY ); - LocalizationMgr::copyResourceForDroppedDialog( xDialogModel, aXmlDlgName, - xLibStringResourceManager, xImportStringResourceResolver ); - } - } - else if( bLibLocalized ) - { - LocalizationMgr::setResourceIDsForDialog( xDialogModel, xLibStringResourceManager ); - } - - - LocalizationMgr::setStringResourceAtDialog( rDocument, aLibName, aNewDlgName, xDialogModel ); - - if( eNameClashMode == CLASH_OVERWRITE_DIALOG ) - { - if ( BasicIDE::RemoveDialog( rDocument, aLibName, aNewDlgName ) ) - { - IDEBaseWindow* pDlgWin = pIDEShell->FindDlgWin( rDocument, aLibName, aNewDlgName, sal_False, sal_True ); - if( pDlgWin != NULL ) - pIDEShell->RemoveWindow( pDlgWin, sal_True ); - BasicIDE::MarkDocumentModified( rDocument ); - } - else - { - // TODO: Assertion? - return bDone; - } - } - - if( eNameClashMode == CLASH_RENAME_DIALOG ) - { - bool bRenamed = false; - if( xDialogModelPropSet.is() ) - { - try - { - Any aXmlDialogNameAny; - aXmlDialogNameAny <<= ::rtl::OUString( aNewDlgName ); - xDialogModelPropSet->setPropertyValue( DLGED_PROP_NAME, aXmlDialogNameAny ); - bRenamed = true; - } - catch( beans::UnknownPropertyException& ) - {} - } - - - if( bRenamed ) - { - LocalizationMgr::renameStringResourceIDs( rDocument, aLibName, aNewDlgName, xDialogModel ); - } - else - { - // TODO: Assertion? - return bDone; - } - } - - Reference< XInputStreamProvider > xISP = ::xmlscript::exportDialogModel( xDialogModel, xContext, rDocument.isDocument() ? rDocument.getDocument() : Reference< frame::XModel >() ); - bool bSuccess = rDocument.insertDialog( aLibName, aNewDlgName, xISP ); - if( bSuccess ) - { - DialogWindow* pNewDlgWin = pIDEShell->CreateDlgWin( rDocument, aLibName, aNewDlgName ); - pIDEShell->SetCurWindow( pNewDlgWin, sal_True ); - } - - bDone = sal_True; - } - catch( Exception& ) - {} - } - - return bDone; -} - -sal_Bool DialogWindow::ImportDialog() -{ - DBG_CHKTHIS( DialogWindow, 0 ); - - const ScriptDocument& rDocument = GetDocument(); - String aLibName = GetLibName(); - sal_Bool bRet = implImportDialog( this, aCurPath, rDocument, aLibName ); - return bRet; -} - -DlgEdModel* DialogWindow::GetModel() const -{ - return pEditor ? pEditor->GetModel() : NULL; -} - -DlgEdPage* DialogWindow::GetPage() const -{ - return pEditor ? pEditor->GetPage() : NULL; -} - -DlgEdView* DialogWindow::GetView() const -{ - return pEditor ? pEditor->GetView() : NULL; -} - -sal_Bool DialogWindow::IsModified() -{ - return pEditor->IsModified(); -} - -::svl::IUndoManager* DialogWindow::GetUndoManager() -{ - return pUndoMgr; -} - -String DialogWindow::GetTitle() -{ - return GetName(); -} - -BasicEntryDescriptor DialogWindow::CreateEntryDescriptor() -{ - ScriptDocument aDocument( GetDocument() ); - String aLibName( GetLibName() ); - String aLibSubName; - LibraryLocation eLocation = aDocument.getLibraryLocation( aLibName ); - return BasicEntryDescriptor( aDocument, eLocation, aLibName, aLibSubName, GetName(), OBJ_TYPE_DIALOG ); -} - -void DialogWindow::SetReadOnly( sal_Bool b ) -{ - if ( pEditor ) - { - if ( b ) - pEditor->SetMode( DLGED_READONLY ); - else - pEditor->SetMode( DLGED_SELECT ); - } -} - -sal_Bool DialogWindow::IsReadOnly() -{ - sal_Bool bReadOnly = sal_False; - - if ( pEditor && pEditor->GetMode() == DLGED_READONLY ) - bReadOnly = sal_True; - - return bReadOnly; -} - -sal_Bool DialogWindow::IsPasteAllowed() -{ - return pEditor ? pEditor->IsPasteAllowed() : sal_False; -} - -void DialogWindow::StoreData() -{ - if ( IsModified() ) - { - try - { - Reference< container::XNameContainer > xLib = GetDocument().getLibrary( E_DIALOGS, GetLibName(), true ); - - if( xLib.is() ) - { - Reference< container::XNameContainer > xDialogModel = pEditor->GetDialog(); - - if( xDialogModel.is() ) - { - Reference< XComponentContext > xContext; - Reference< beans::XPropertySet > xProps( ::comphelper::getProcessServiceFactory(), UNO_QUERY ); - OSL_ASSERT( xProps.is() ); - OSL_VERIFY( xProps->getPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DefaultContext")) ) >>= xContext ); - Reference< XInputStreamProvider > xISP = ::xmlscript::exportDialogModel( xDialogModel, xContext, GetDocument().isDocument() ? GetDocument().getDocument() : Reference< frame::XModel >() ); - xLib->replaceByName( ::rtl::OUString( GetName() ), makeAny( xISP ) ); - } - } - } - catch ( uno::Exception& ) - { - DBG_UNHANDLED_EXCEPTION(); - } - BasicIDE::MarkDocumentModified( GetDocument() ); - pEditor->ClearModifyFlag(); - } -} - -void DialogWindow::Deactivating() -{ - if ( IsModified() ) - BasicIDE::MarkDocumentModified( GetDocument() ); -} - -sal_Int32 DialogWindow::countPages( Printer* pPrinter ) -{ - return pEditor->countPages( pPrinter ); -} - -void DialogWindow::printPage( sal_Int32 nPage, Printer* pPrinter ) -{ - pEditor->printPage( nPage, pPrinter, CreateQualifiedName() ); -} - -void DialogWindow::DataChanged( const DataChangedEvent& rDCEvt ) -{ - if( (rDCEvt.GetType()==DATACHANGED_SETTINGS) && (rDCEvt.GetFlags() & SETTINGS_STYLE) ) - { - InitSettings( sal_True, sal_True, sal_True ); - Invalidate(); - } - else - IDEBaseWindow::DataChanged( rDCEvt ); -} - -void DialogWindow::InitSettings(sal_Bool bFont,sal_Bool bForeground,sal_Bool bBackground) -{ - const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings(); - if( bFont ) - { - Font aFont; - aFont = rStyleSettings.GetFieldFont(); - SetPointFont( aFont ); - } - - if( bForeground || bFont ) - { - SetTextColor( rStyleSettings.GetFieldTextColor() ); - SetTextFillColor(); - } - - if( bBackground ) - SetBackground( rStyleSettings.GetFieldColor() ); -} - -::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > DialogWindow::CreateAccessible() -{ - return (::com::sun::star::accessibility::XAccessible*) new AccessibleDialogWindow( this ); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |