LCOV - code coverage report
Current view: top level - basctl/source/basicide - baside3.cxx (source / functions) Hit Total Coverage
Test: commit 10e77ab3ff6f4314137acd6e2702a6e5c1ce1fae Lines: 0 768 0.0 %
Date: 2014-11-03 Functions: 0 70 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : #include "basidesh.hrc"
      21             : #include "helpid.hrc"
      22             : 
      23             : #include "accessibledialogwindow.hxx"
      24             : #include "baside3.hxx"
      25             : #include "basidesh.hxx"
      26             : #include "bastype2.hxx"
      27             : #include "dlged.hxx"
      28             : #include "dlgeddef.hxx"
      29             : #include "dlgedmod.hxx"
      30             : #include "dlgedview.hxx"
      31             : #include "iderdll.hxx"
      32             : #include "idetemp.hxx"
      33             : #include "localizationmgr.hxx"
      34             : #include "propbrw.hxx"
      35             : #include "objdlg.hxx"
      36             : #include "managelang.hxx"
      37             : 
      38             : #include <basic/basmgr.hxx>
      39             : #include <com/sun/star/resource/StringResourceWithLocation.hpp>
      40             : #include <com/sun/star/ucb/SimpleFileAccess.hpp>
      41             : #include <com/sun/star/ui/dialogs/ExtendedFilePickerElementIds.hpp>
      42             : #include <com/sun/star/ui/dialogs/TemplateDescription.hpp>
      43             : #include <com/sun/star/ui/dialogs/FilePicker.hpp>
      44             : #include <com/sun/star/ui/dialogs/XFilePickerControlAccess.hpp>
      45             : #include <com/sun/star/ui/dialogs/XFilterManager.hpp>
      46             : #include <comphelper/processfactory.hxx>
      47             : #include <sfx2/dinfdlg.hxx>
      48             : #include <sfx2/dispatch.hxx>
      49             : #include <sfx2/request.hxx>
      50             : #include <svl/aeitem.hxx>
      51             : #include <svl/visitem.hxx>
      52             : #include <svl/whiter.hxx>
      53             : #include <tools/diagnose_ex.h>
      54             : #include <tools/urlobj.hxx>
      55             : #include <vcl/layout.hxx>
      56             : #include <vcl/msgbox.hxx>
      57             : #include <vcl/settings.hxx>
      58             : #include <xmlscript/xmldlg_imexp.hxx>
      59             : 
      60             : namespace basctl
      61             : {
      62             : 
      63             : using namespace ::com::sun::star;
      64             : using namespace ::com::sun::star::uno;
      65             : using namespace ::com::sun::star::ucb;
      66             : using namespace ::com::sun::star::io;
      67             : using namespace ::com::sun::star::resource;
      68             : using namespace ::com::sun::star::ui::dialogs;
      69             : 
      70             : #ifdef WNT
      71             : char const FilterMask_All[] = "*.*";
      72             : #else
      73             : char const FilterMask_All[] = "*";
      74             : #endif
      75             : 
      76           0 : TYPEINIT1( DialogWindow, BaseWindow );
      77             : 
      78           0 : DialogWindow::DialogWindow (
      79             :     DialogWindowLayout* pParent,
      80             :     ScriptDocument const& rDocument,
      81             :     const OUString& aLibName, const OUString& aName,
      82             :     com::sun::star::uno::Reference<com::sun::star::container::XNameContainer> const& xDialogModel
      83             : ) :
      84             :     BaseWindow(pParent, rDocument, aLibName, aName),
      85             :     rLayout(*pParent),
      86           0 :     pEditor(new DlgEditor(*this, rLayout, rDocument.isDocument() ? rDocument.getDocument() : Reference<frame::XModel>(), xDialogModel)),
      87           0 :     pUndoMgr(new SfxUndoManager)
      88             : {
      89           0 :     InitSettings( true, true, true );
      90             : 
      91           0 :     aOldNotifyUndoActionHdl = pEditor->GetModel().GetNotifyUndoActionHdl();
      92           0 :     pEditor->GetModel().SetNotifyUndoActionHdl(
      93             :         LINK(this, DialogWindow, NotifyUndoActionHdl)
      94           0 :     );
      95             : 
      96           0 :     SetHelpId( HID_BASICIDE_DIALOGWINDOW );
      97             : 
      98             :     // set readonly mode for readonly libraries
      99           0 :     Reference< script::XLibraryContainer2 > xDlgLibContainer( GetDocument().getLibraryContainer( E_DIALOGS ), UNO_QUERY );
     100           0 :     if ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aLibName ) && xDlgLibContainer->isLibraryReadOnly( aLibName ) )
     101           0 :         SetReadOnly(true);
     102             : 
     103           0 :     if ( rDocument.isDocument() && rDocument.isReadOnly() )
     104           0 :         SetReadOnly(true);
     105           0 : }
     106             : 
     107           0 : DialogWindow::~DialogWindow()
     108           0 : { }
     109             : 
     110           0 : void DialogWindow::LoseFocus()
     111             : {
     112           0 :     if ( IsModified() )
     113           0 :         StoreData();
     114             : 
     115           0 :     Window::LoseFocus();
     116           0 : }
     117             : 
     118             : 
     119             : 
     120           0 : void DialogWindow::Paint( const Rectangle& rRect )
     121             : {
     122           0 :     pEditor->Paint( rRect );
     123           0 : }
     124             : 
     125             : 
     126             : 
     127           0 : void DialogWindow::Resize()
     128             : {
     129           0 :     if ( GetHScrollBar() && GetVScrollBar() ) {
     130           0 :         pEditor->SetScrollBars( GetHScrollBar(), GetVScrollBar() );
     131             :     }
     132           0 : }
     133             : 
     134             : 
     135             : 
     136           0 : void DialogWindow::MouseButtonDown( const MouseEvent& rMEvt )
     137             : {
     138           0 :     pEditor->MouseButtonDown( rMEvt );
     139             : 
     140           0 :     if (SfxBindings* pBindings = GetBindingsPtr())
     141           0 :         pBindings->Invalidate( SID_SHOW_PROPERTYBROWSER );
     142           0 : }
     143             : 
     144             : 
     145             : 
     146           0 : void DialogWindow::MouseButtonUp( const MouseEvent& rMEvt )
     147             : {
     148           0 :     pEditor->MouseButtonUp( rMEvt );
     149           0 :     if( (pEditor->GetMode() == DlgEditor::INSERT) && !pEditor->IsCreateOK() )
     150             :     {
     151           0 :         pEditor->SetMode( DlgEditor::SELECT );
     152           0 :         if (SfxBindings* pBindings = GetBindingsPtr())
     153           0 :             pBindings->Invalidate( SID_CHOOSE_CONTROLS );
     154             :     }
     155           0 :     if (SfxBindings* pBindings = GetBindingsPtr())
     156             :     {
     157           0 :         pBindings->Invalidate( SID_SHOW_PROPERTYBROWSER );
     158           0 :         pBindings->Invalidate( SID_DOC_MODIFIED );
     159           0 :         pBindings->Invalidate( SID_SAVEDOC );
     160           0 :         pBindings->Invalidate( SID_COPY );
     161           0 :         pBindings->Invalidate( SID_CUT );
     162             :     }
     163           0 : }
     164             : 
     165             : 
     166             : 
     167           0 : void DialogWindow::MouseMove( const MouseEvent& rMEvt )
     168             : {
     169           0 :     pEditor->MouseMove( rMEvt );
     170           0 : }
     171             : 
     172             : 
     173             : 
     174           0 : void DialogWindow::KeyInput( const KeyEvent& rKEvt )
     175             : {
     176           0 :     SfxBindings* pBindings = GetBindingsPtr();
     177             : 
     178           0 :     if( rKEvt.GetKeyCode() == KEY_BACKSPACE )
     179             :     {
     180           0 :         if (SfxDispatcher* pDispatcher = GetDispatcher())
     181           0 :             pDispatcher->Execute( SID_BACKSPACE );
     182             :     }
     183             :     else
     184             :     {
     185           0 :         if( pBindings && rKEvt.GetKeyCode() == KEY_TAB )
     186           0 :             pBindings->Invalidate( SID_SHOW_PROPERTYBROWSER );
     187             : 
     188           0 :         if( !pEditor->KeyInput( rKEvt ) )
     189             :         {
     190           0 :             if( !SfxViewShell::Current()->KeyInput( rKEvt ) )
     191           0 :                 Window::KeyInput( rKEvt );
     192             :         }
     193             :     }
     194             : 
     195             :     // may be KEY_TAB, KEY_BACKSPACE, KEY_ESCAPE
     196           0 :     if( pBindings )
     197             :     {
     198           0 :         pBindings->Invalidate( SID_COPY );
     199           0 :         pBindings->Invalidate( SID_CUT );
     200             :     }
     201           0 : }
     202             : 
     203           0 : void DialogWindow::Command( const CommandEvent& rCEvt )
     204             : {
     205           0 :     if ( ( rCEvt.GetCommand() == COMMAND_WHEEL           ) ||
     206           0 :          ( rCEvt.GetCommand() == COMMAND_STARTAUTOSCROLL ) ||
     207           0 :          ( rCEvt.GetCommand() == COMMAND_AUTOSCROLL      ) )
     208             :     {
     209           0 :         HandleScrollCommand( rCEvt, GetHScrollBar(), GetVScrollBar() );
     210             :     }
     211           0 :     else if ( rCEvt.GetCommand() == COMMAND_CONTEXTMENU )
     212             :     {
     213           0 :         if (SfxDispatcher* pDispatcher = GetDispatcher())
     214             :         {
     215           0 :             SdrView& rView = GetView();
     216           0 :             if( !rCEvt.IsMouseEvent() && rView.AreObjectsMarked() )
     217             :             {
     218           0 :                 Rectangle aMarkedRect( rView.GetMarkedRect() );
     219           0 :                 Point MarkedCenter( aMarkedRect.Center() );
     220           0 :                 Point PosPixel( LogicToPixel( MarkedCenter ) );
     221           0 :                 pDispatcher->ExecutePopup( IDEResId(RID_POPUP_DLGED), this, &PosPixel );
     222             :             }
     223             :             else
     224             :             {
     225           0 :                 pDispatcher->ExecutePopup( IDEResId(RID_POPUP_DLGED) );
     226             :             }
     227             : 
     228             :         }
     229             :     }
     230             :     else
     231           0 :         BaseWindow::Command( rCEvt );
     232           0 : }
     233             : 
     234             : 
     235             : 
     236             : 
     237           0 : IMPL_LINK( DialogWindow, NotifyUndoActionHdl, SfxUndoAction *, pUndoAction )
     238             : {
     239             :     // #i120515# pUndoAction needs to be deleted, this hand over is an ownership
     240             :     // change. As long as it does not get added to the undo manager, it needs at
     241             :     // least to be deleted.
     242           0 :     delete pUndoAction;
     243             : 
     244           0 :     return 0;
     245             : }
     246             : 
     247             : 
     248             : 
     249           0 : void DialogWindow::DoInit()
     250             : {
     251           0 :     GetHScrollBar()->Show();
     252           0 :     GetVScrollBar()->Show();
     253           0 :     pEditor->SetScrollBars( GetHScrollBar(), GetVScrollBar() );
     254           0 : }
     255             : 
     256             : 
     257             : 
     258           0 : void DialogWindow::DoScroll( ScrollBar* pCurScrollBar )
     259             : {
     260           0 :     pEditor->DoScroll( pCurScrollBar );
     261           0 : }
     262             : 
     263           0 : void DialogWindow::GetState( SfxItemSet& rSet )
     264             : {
     265           0 :     SfxWhichIter aIter(rSet);
     266           0 :     bool bIsCalc = false;
     267           0 :     if ( GetDocument().isDocument() )
     268             :     {
     269           0 :         Reference< frame::XModel > xModel= GetDocument().getDocument();
     270           0 :         if ( xModel.is() )
     271             :         {
     272           0 :             Reference< lang::XServiceInfo > xServiceInfo ( xModel, UNO_QUERY );
     273           0 :             if ( xServiceInfo.is() && xServiceInfo->supportsService( "com.sun.star.sheet.SpreadsheetDocument" ) )
     274           0 :                 bIsCalc = true;
     275           0 :         }
     276             :     }
     277             : 
     278           0 :     for ( sal_uInt16 nWh = aIter.FirstWhich(); 0 != nWh; nWh = aIter.NextWhich() )
     279             :     {
     280           0 :         switch ( nWh )
     281             :         {
     282             :             case SID_PASTE:
     283             :             {
     284           0 :                 if ( !IsPasteAllowed() )
     285           0 :                     rSet.DisableItem( nWh );
     286             : 
     287           0 :                 if ( IsReadOnly() )
     288           0 :                     rSet.DisableItem( nWh );
     289             :             }
     290           0 :             break;
     291             :             case SID_COPY:
     292             :             {
     293             :                 // any object selected?
     294           0 :                 if ( !pEditor->GetView().AreObjectsMarked() )
     295           0 :                     rSet.DisableItem( nWh );
     296             :             }
     297           0 :             break;
     298             :             case SID_CUT:
     299             :             case SID_DELETE:
     300             :             case SID_BACKSPACE:
     301             :             {
     302             :                 // any object selected?
     303           0 :                 if ( !pEditor->GetView().AreObjectsMarked() )
     304           0 :                     rSet.DisableItem( nWh );
     305             : 
     306           0 :                 if ( IsReadOnly() )
     307           0 :                     rSet.DisableItem( nWh );
     308             :             }
     309           0 :             break;
     310             :             case SID_REDO:
     311             :             {
     312           0 :                 if ( !pUndoMgr->GetUndoActionCount() )
     313           0 :                     rSet.DisableItem( nWh );
     314             :             }
     315           0 :             break;
     316             : 
     317             :             case SID_DIALOG_TESTMODE:
     318             :             {
     319             :                 // is the IDE still active?
     320           0 :                 bool const bBool = GetShell()->GetFrame() &&
     321           0 :                     pEditor->GetMode() == DlgEditor::TEST;
     322           0 :                 rSet.Put(SfxBoolItem(SID_DIALOG_TESTMODE, bBool));
     323             :             }
     324           0 :             break;
     325             : 
     326             :             case SID_CHOOSE_CONTROLS:
     327             :             {
     328           0 :                 if ( IsReadOnly() )
     329             :                 {
     330           0 :                     rSet.DisableItem( nWh );
     331             :                 }
     332             :                 else
     333             :                 {
     334           0 :                     SfxAllEnumItem aItem( SID_CHOOSE_CONTROLS );
     335           0 :                     if ( GetEditor().GetMode() == DlgEditor::SELECT )
     336           0 :                         aItem.SetValue( SVX_SNAP_SELECT );
     337             :                     else
     338             :                     {
     339             :                         sal_uInt16 nObj;
     340           0 :                         switch( pEditor->GetInsertObj() )
     341             :                         {
     342           0 :                             case OBJ_DLG_PUSHBUTTON:        nObj = SVX_SNAP_PUSHBUTTON; break;
     343           0 :                             case OBJ_DLG_RADIOBUTTON:       nObj = SVX_SNAP_RADIOBUTTON; break;
     344           0 :                             case OBJ_DLG_CHECKBOX:          nObj = SVX_SNAP_CHECKBOX; break;
     345           0 :                             case OBJ_DLG_LISTBOX:           nObj = SVX_SNAP_LISTBOX; break;
     346           0 :                             case OBJ_DLG_COMBOBOX:          nObj = SVX_SNAP_COMBOBOX; break;
     347           0 :                             case OBJ_DLG_GROUPBOX:          nObj = SVX_SNAP_GROUPBOX; break;
     348           0 :                             case OBJ_DLG_EDIT:              nObj = SVX_SNAP_EDIT; break;
     349           0 :                             case OBJ_DLG_FIXEDTEXT:         nObj = SVX_SNAP_FIXEDTEXT; break;
     350           0 :                             case OBJ_DLG_IMAGECONTROL:      nObj = SVX_SNAP_IMAGECONTROL; break;
     351           0 :                             case OBJ_DLG_PROGRESSBAR:       nObj = SVX_SNAP_PROGRESSBAR; break;
     352           0 :                             case OBJ_DLG_HSCROLLBAR:        nObj = SVX_SNAP_HSCROLLBAR; break;
     353           0 :                             case OBJ_DLG_VSCROLLBAR:        nObj = SVX_SNAP_VSCROLLBAR; break;
     354           0 :                             case OBJ_DLG_HFIXEDLINE:        nObj = SVX_SNAP_HFIXEDLINE; break;
     355           0 :                             case OBJ_DLG_VFIXEDLINE:        nObj = SVX_SNAP_VFIXEDLINE; break;
     356           0 :                             case OBJ_DLG_DATEFIELD:         nObj = SVX_SNAP_DATEFIELD; break;
     357           0 :                             case OBJ_DLG_TIMEFIELD:         nObj = SVX_SNAP_TIMEFIELD; break;
     358           0 :                             case OBJ_DLG_NUMERICFIELD:      nObj = SVX_SNAP_NUMERICFIELD; break;
     359           0 :                             case OBJ_DLG_CURRENCYFIELD:     nObj = SVX_SNAP_CURRENCYFIELD; break;
     360           0 :                             case OBJ_DLG_FORMATTEDFIELD:    nObj = SVX_SNAP_FORMATTEDFIELD; break;
     361           0 :                             case OBJ_DLG_PATTERNFIELD:      nObj = SVX_SNAP_PATTERNFIELD; break;
     362           0 :                             case OBJ_DLG_FILECONTROL:       nObj = SVX_SNAP_FILECONTROL; break;
     363           0 :                             case OBJ_DLG_SPINBUTTON:        nObj = SVX_SNAP_SPINBUTTON; break;
     364           0 :                             case OBJ_DLG_TREECONTROL:       nObj = SVX_SNAP_TREECONTROL; break;
     365           0 :                             default:                        nObj = 0;
     366             :                         }
     367             : #ifdef DBG_UTIL
     368             :                         if( !nObj )
     369             :                         {
     370             :                             DBG_WARNING( "SID_CHOOSE_CONTROLS: Unbekannt!" );
     371             :                         }
     372             : #endif
     373           0 :                         aItem.SetValue( nObj );
     374             :                     }
     375             : 
     376           0 :                     rSet.Put( aItem );
     377             :                 }
     378             :             }
     379           0 :             break;
     380             : 
     381             :             case SID_SHOW_PROPERTYBROWSER:
     382             :             {
     383           0 :                 Shell* pShell = GetShell();
     384           0 :                 SfxViewFrame* pViewFrame = pShell ? pShell->GetViewFrame() : NULL;
     385           0 :                 if ( pViewFrame && !pViewFrame->HasChildWindow( SID_SHOW_PROPERTYBROWSER ) && !pEditor->GetView().AreObjectsMarked() )
     386           0 :                     rSet.DisableItem( nWh );
     387             : 
     388           0 :                 if ( IsReadOnly() )
     389           0 :                     rSet.DisableItem( nWh );
     390             :             }
     391           0 :             break;
     392             :             case SID_INSERT_FORM_RADIO:
     393             :             case SID_INSERT_FORM_CHECK:
     394             :             case SID_INSERT_FORM_LIST:
     395             :             case SID_INSERT_FORM_COMBO:
     396             :             case SID_INSERT_FORM_VSCROLL:
     397             :             case SID_INSERT_FORM_HSCROLL:
     398             :             case SID_INSERT_FORM_SPIN:
     399             :             {
     400           0 :                 if ( !bIsCalc || IsReadOnly() )
     401           0 :                     rSet.DisableItem( nWh );
     402             :             }
     403           0 :             break;
     404             :             case SID_SHOWLINES:
     405             :             {
     406             :                 // if this is not a module window hide the
     407             :                 // setting, doesn't make sense for example if the
     408             :                 // dialog editor is open
     409           0 :                 rSet.DisableItem(nWh);
     410           0 :                 rSet.Put(SfxVisibilityItem(nWh, false));
     411           0 :                 break;
     412             :             }
     413             :             case SID_SELECTALL:
     414             :             {
     415           0 :                 rSet.DisableItem( nWh );
     416             :             }
     417           0 :             break;
     418             :         }
     419           0 :     }
     420           0 : }
     421             : 
     422           0 : void DialogWindow::ExecuteCommand( SfxRequest& rReq )
     423             : {
     424           0 :     switch ( rReq.GetSlot() )
     425             :     {
     426             :         case SID_CUT:
     427           0 :             if ( !IsReadOnly() )
     428             :             {
     429           0 :                 GetEditor().Cut();
     430           0 :                 if (SfxBindings* pBindings = GetBindingsPtr())
     431           0 :                     pBindings->Invalidate( SID_DOC_MODIFIED );
     432             :             }
     433           0 :             break;
     434             :         case SID_DELETE:
     435           0 :             if ( !IsReadOnly() )
     436             :             {
     437           0 :                 GetEditor().Delete();
     438           0 :                 if (SfxBindings* pBindings = GetBindingsPtr())
     439           0 :                     pBindings->Invalidate( SID_DOC_MODIFIED );
     440             :             }
     441           0 :             break;
     442             :         case SID_COPY:
     443           0 :             GetEditor().Copy();
     444           0 :             break;
     445             :         case SID_PASTE:
     446           0 :             if ( !IsReadOnly() )
     447             :             {
     448           0 :                 GetEditor().Paste();
     449           0 :                 if (SfxBindings* pBindings = GetBindingsPtr())
     450           0 :                     pBindings->Invalidate( SID_DOC_MODIFIED );
     451             :             }
     452           0 :             break;
     453             :         case SID_INSERT_FORM_RADIO:
     454           0 :             GetEditor().SetMode( DlgEditor::INSERT );
     455           0 :             GetEditor().SetInsertObj( OBJ_DLG_FORMRADIO );
     456           0 :             break;
     457             :         case SID_INSERT_FORM_CHECK:
     458           0 :             GetEditor().SetMode( DlgEditor::INSERT );
     459           0 :             GetEditor().SetInsertObj( OBJ_DLG_FORMCHECK );
     460           0 :             break;
     461             :         case SID_INSERT_FORM_LIST:
     462           0 :             GetEditor().SetMode( DlgEditor::INSERT );
     463           0 :             GetEditor().SetInsertObj( OBJ_DLG_FORMLIST );
     464           0 :             break;
     465             :         case SID_INSERT_FORM_COMBO:
     466           0 :             GetEditor().SetMode( DlgEditor::INSERT );
     467           0 :             GetEditor().SetInsertObj( OBJ_DLG_FORMCOMBO );
     468           0 :             break;
     469             :         case SID_INSERT_FORM_SPIN:
     470           0 :             GetEditor().SetMode( DlgEditor::INSERT );
     471           0 :             GetEditor().SetInsertObj( OBJ_DLG_FORMSPIN );
     472           0 :             break;
     473             :         case SID_INSERT_FORM_VSCROLL:
     474           0 :             GetEditor().SetMode( DlgEditor::INSERT );
     475           0 :             GetEditor().SetInsertObj( OBJ_DLG_FORMVSCROLL );
     476           0 :             break;
     477             :         case SID_INSERT_FORM_HSCROLL:
     478           0 :             GetEditor().SetMode( DlgEditor::INSERT );
     479           0 :             GetEditor().SetInsertObj( OBJ_DLG_FORMHSCROLL );
     480           0 :             break;
     481             :         case SID_CHOOSE_CONTROLS:
     482             :         {
     483           0 :             const SfxItemSet* pArgs = rReq.GetArgs();
     484             :             DBG_ASSERT( pArgs, "Nix Args" );
     485             : 
     486           0 :             const SfxAllEnumItem& rItem = static_cast<const SfxAllEnumItem&>(pArgs->Get( SID_CHOOSE_CONTROLS ));
     487           0 :             switch( rItem.GetValue() )
     488             :             {
     489             :                 case SVX_SNAP_PUSHBUTTON:
     490             :                 {
     491           0 :                     GetEditor().SetMode( DlgEditor::INSERT );
     492           0 :                     GetEditor().SetInsertObj( OBJ_DLG_PUSHBUTTON );
     493             :                 }
     494           0 :                 break;
     495             :                 case SVX_SNAP_RADIOBUTTON:
     496             :                 {
     497           0 :                     GetEditor().SetMode( DlgEditor::INSERT );
     498           0 :                     GetEditor().SetInsertObj( OBJ_DLG_RADIOBUTTON );
     499             :                 }
     500           0 :                 break;
     501             :                 case SVX_SNAP_CHECKBOX:
     502             :                 {
     503           0 :                     GetEditor().SetMode( DlgEditor::INSERT );
     504           0 :                     GetEditor().SetInsertObj( OBJ_DLG_CHECKBOX);
     505             :                 }
     506           0 :                 break;
     507             :                 case SVX_SNAP_LISTBOX:
     508             :                 {
     509           0 :                     GetEditor().SetMode( DlgEditor::INSERT );
     510           0 :                     GetEditor().SetInsertObj( OBJ_DLG_LISTBOX );
     511             :                 }
     512           0 :                 break;
     513             :                 case SVX_SNAP_COMBOBOX:
     514             :                 {
     515           0 :                     GetEditor().SetMode( DlgEditor::INSERT );
     516           0 :                     GetEditor().SetInsertObj( OBJ_DLG_COMBOBOX );
     517             :                 }
     518           0 :                 break;
     519             :                 case SVX_SNAP_GROUPBOX:
     520             :                 {
     521           0 :                     GetEditor().SetMode( DlgEditor::INSERT );
     522           0 :                     GetEditor().SetInsertObj( OBJ_DLG_GROUPBOX );
     523             :                 }
     524           0 :                 break;
     525             :                 case SVX_SNAP_EDIT:
     526             :                 {
     527           0 :                     GetEditor().SetMode( DlgEditor::INSERT );
     528           0 :                     GetEditor().SetInsertObj( OBJ_DLG_EDIT );
     529             :                 }
     530           0 :                 break;
     531             :                 case SVX_SNAP_FIXEDTEXT:
     532             :                 {
     533           0 :                     GetEditor().SetMode( DlgEditor::INSERT );
     534           0 :                     GetEditor().SetInsertObj( OBJ_DLG_FIXEDTEXT );
     535             :                 }
     536           0 :                 break;
     537             :                 case SVX_SNAP_IMAGECONTROL:
     538             :                 {
     539           0 :                     GetEditor().SetMode( DlgEditor::INSERT );
     540           0 :                     GetEditor().SetInsertObj( OBJ_DLG_IMAGECONTROL );
     541             :                 }
     542           0 :                 break;
     543             :                 case SVX_SNAP_PROGRESSBAR:
     544             :                 {
     545           0 :                     GetEditor().SetMode( DlgEditor::INSERT );
     546           0 :                     GetEditor().SetInsertObj( OBJ_DLG_PROGRESSBAR );
     547             :                 }
     548           0 :                 break;
     549             :                 case SVX_SNAP_HSCROLLBAR:
     550             :                 {
     551           0 :                     GetEditor().SetMode( DlgEditor::INSERT );
     552           0 :                     GetEditor().SetInsertObj( OBJ_DLG_HSCROLLBAR );
     553             :                 }
     554           0 :                 break;
     555             :                 case SVX_SNAP_VSCROLLBAR:
     556             :                 {
     557           0 :                     GetEditor().SetMode( DlgEditor::INSERT );
     558           0 :                     GetEditor().SetInsertObj( OBJ_DLG_VSCROLLBAR );
     559             :                 }
     560           0 :                 break;
     561             :                 case SVX_SNAP_HFIXEDLINE:
     562             :                 {
     563           0 :                     GetEditor().SetMode( DlgEditor::INSERT );
     564           0 :                     GetEditor().SetInsertObj( OBJ_DLG_HFIXEDLINE );
     565             :                 }
     566           0 :                 break;
     567             :                 case SVX_SNAP_VFIXEDLINE:
     568             :                 {
     569           0 :                     GetEditor().SetMode( DlgEditor::INSERT );
     570           0 :                     GetEditor().SetInsertObj( OBJ_DLG_VFIXEDLINE );
     571             :                 }
     572           0 :                 break;
     573             :                 case SVX_SNAP_DATEFIELD:
     574             :                 {
     575           0 :                     GetEditor().SetMode( DlgEditor::INSERT );
     576           0 :                     GetEditor().SetInsertObj( OBJ_DLG_DATEFIELD );
     577             :                 }
     578           0 :                 break;
     579             :                 case SVX_SNAP_TIMEFIELD:
     580             :                 {
     581           0 :                     GetEditor().SetMode( DlgEditor::INSERT );
     582           0 :                     GetEditor().SetInsertObj( OBJ_DLG_TIMEFIELD );
     583             :                 }
     584           0 :                 break;
     585             :                 case SVX_SNAP_NUMERICFIELD:
     586             :                 {
     587           0 :                     GetEditor().SetMode( DlgEditor::INSERT );
     588           0 :                     GetEditor().SetInsertObj( OBJ_DLG_NUMERICFIELD );
     589             :                 }
     590           0 :                 break;
     591             :                 case SVX_SNAP_CURRENCYFIELD:
     592             :                 {
     593           0 :                     GetEditor().SetMode( DlgEditor::INSERT );
     594           0 :                     GetEditor().SetInsertObj( OBJ_DLG_CURRENCYFIELD );
     595             :                 }
     596           0 :                 break;
     597             :                 case SVX_SNAP_FORMATTEDFIELD:
     598             :                 {
     599           0 :                     GetEditor().SetMode( DlgEditor::INSERT );
     600           0 :                     GetEditor().SetInsertObj( OBJ_DLG_FORMATTEDFIELD );
     601             :                 }
     602           0 :                 break;
     603             :                 case SVX_SNAP_PATTERNFIELD:
     604             :                 {
     605           0 :                     GetEditor().SetMode( DlgEditor::INSERT );
     606           0 :                     GetEditor().SetInsertObj( OBJ_DLG_PATTERNFIELD );
     607             :                 }
     608           0 :                 break;
     609             :                 case SVX_SNAP_FILECONTROL:
     610             :                 {
     611           0 :                     GetEditor().SetMode( DlgEditor::INSERT );
     612           0 :                     GetEditor().SetInsertObj( OBJ_DLG_FILECONTROL );
     613             :                 }
     614           0 :                 break;
     615             :                 case SVX_SNAP_SPINBUTTON:
     616             :                 {
     617           0 :                     GetEditor().SetMode( DlgEditor::INSERT );
     618           0 :                     GetEditor().SetInsertObj( OBJ_DLG_SPINBUTTON );
     619             :                 }
     620           0 :                 break;
     621             :                 case SVX_SNAP_TREECONTROL:
     622             :                 {
     623           0 :                     GetEditor().SetMode( DlgEditor::INSERT );
     624           0 :                     GetEditor().SetInsertObj( OBJ_DLG_TREECONTROL );
     625             :                 }
     626           0 :                 break;
     627             : 
     628             :                 case SVX_SNAP_SELECT:
     629             :                 {
     630           0 :                     GetEditor().SetMode( DlgEditor::SELECT );
     631             :                 }
     632           0 :                 break;
     633             :             }
     634             : 
     635           0 :             if ( rReq.GetModifier() & KEY_MOD1 )
     636             :             {
     637           0 :                 if ( GetEditor().GetMode() == DlgEditor::INSERT )
     638           0 :                     GetEditor().CreateDefaultObject();
     639             :             }
     640             : 
     641           0 :             if (SfxBindings* pBindings = GetBindingsPtr())
     642           0 :                 pBindings->Invalidate( SID_DOC_MODIFIED );
     643             :         }
     644           0 :         break;
     645             : 
     646             :         case SID_DIALOG_TESTMODE:
     647             :         {
     648           0 :             DlgEditor::Mode eOldMode = GetEditor().GetMode();
     649           0 :             GetEditor().SetMode( DlgEditor::TEST );
     650           0 :             GetEditor().SetMode( eOldMode );
     651           0 :             rReq.Done();
     652           0 :             if (SfxBindings* pBindings = GetBindingsPtr())
     653           0 :                 pBindings->Invalidate( SID_DIALOG_TESTMODE );
     654           0 :             return;
     655             :         }
     656             :         case SID_EXPORT_DIALOG:
     657           0 :             SaveDialog();
     658           0 :             break;
     659             : 
     660             :         case SID_IMPORT_DIALOG:
     661           0 :             ImportDialog();
     662           0 :             break;
     663             : 
     664             :         case SID_BASICIDE_DELETECURRENT:
     665           0 :             if (QueryDelDialog(m_aName, this))
     666             :             {
     667           0 :                 if (RemoveDialog(m_aDocument, m_aLibName, m_aName))
     668             :                 {
     669           0 :                     MarkDocumentModified(m_aDocument);
     670           0 :                     GetShell()->RemoveWindow(this, true);
     671             :                 }
     672             :             }
     673           0 :             break;
     674             :     }
     675             : 
     676           0 :     rReq.Done();
     677             : }
     678             : 
     679           0 : Reference< container::XNameContainer > DialogWindow::GetDialog() const
     680             : {
     681           0 :     return pEditor->GetDialog();
     682             : }
     683             : 
     684           0 : bool DialogWindow::RenameDialog( const OUString& rNewName )
     685             : {
     686           0 :     if ( !basctl::RenameDialog( this, GetDocument(), GetLibName(), GetName(), rNewName ) )
     687           0 :         return false;
     688             : 
     689           0 :     if (SfxBindings* pBindings = GetBindingsPtr())
     690           0 :         pBindings->Invalidate( SID_DOC_MODIFIED );
     691             : 
     692           0 :     return true;
     693             : }
     694             : 
     695           0 : void DialogWindow::DisableBrowser()
     696             : {
     697           0 :     rLayout.DisablePropertyBrowser();
     698           0 : }
     699             : 
     700           0 : void DialogWindow::UpdateBrowser()
     701             : {
     702           0 :     rLayout.UpdatePropertyBrowser();
     703           0 : }
     704             : 
     705           0 : static OUString aResourceResolverPropName( "ResourceResolver" );
     706             : 
     707           0 : bool DialogWindow::SaveDialog()
     708             : {
     709           0 :     bool bDone = false;
     710             : 
     711           0 :     Reference< XComponentContext > xContext( comphelper::getProcessComponentContext() );
     712           0 :     Reference < XFilePicker3 > xFP = FilePicker::createWithMode(xContext, TemplateDescription::FILESAVE_AUTOEXTENSION_PASSWORD);
     713             : 
     714           0 :     Reference< XFilePickerControlAccess > xFPControl(xFP, UNO_QUERY);
     715           0 :     xFPControl->enableControl(ExtendedFilePickerElementIds::CHECKBOX_PASSWORD, false);
     716           0 :     Any aValue;
     717           0 :     aValue <<= true;
     718           0 :     xFPControl->setValue(ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION, 0, aValue);
     719             : 
     720           0 :     if ( !aCurPath.isEmpty() )
     721           0 :         xFP->setDisplayDirectory ( aCurPath );
     722             : 
     723           0 :     xFP->setDefaultName( OUString( GetName() ) );
     724             : 
     725           0 :     OUString aDialogStr(IDE_RESSTR(RID_STR_STDDIALOGNAME));
     726           0 :     xFP->appendFilter( aDialogStr, OUString( "*.xdl" ) );
     727           0 :     xFP->appendFilter( IDE_RESSTR(RID_STR_FILTER_ALLFILES), OUString( FilterMask_All ) );
     728           0 :     xFP->setCurrentFilter( aDialogStr );
     729             : 
     730           0 :     if( xFP->execute() == RET_OK )
     731             :     {
     732           0 :         Sequence< OUString > aPaths = xFP->getFiles();
     733           0 :         aCurPath = aPaths[0];
     734             : 
     735             :         // export dialog model to xml
     736           0 :         Reference< container::XNameContainer > xDialogModel = GetDialog();
     737           0 :         Reference< XInputStreamProvider > xISP = ::xmlscript::exportDialogModel( xDialogModel, xContext, GetDocument().isDocument() ? GetDocument().getDocument() : Reference< frame::XModel >() );
     738           0 :         Reference< XInputStream > xInput( xISP->createInputStream() );
     739             : 
     740           0 :         Reference< XSimpleFileAccess3 > xSFI( SimpleFileAccess::create(xContext) );
     741             : 
     742           0 :         Reference< XOutputStream > xOutput;
     743             :         try
     744             :         {
     745           0 :             if( xSFI->exists( aCurPath ) )
     746           0 :                 xSFI->kill( aCurPath );
     747           0 :             xOutput = xSFI->openFileWrite( aCurPath );
     748             :         }
     749           0 :         catch(const Exception& )
     750             :         {}
     751             : 
     752           0 :         if( xOutput.is() )
     753             :         {
     754           0 :             Sequence< sal_Int8 > bytes;
     755           0 :             sal_Int32 nRead = xInput->readBytes( bytes, xInput->available() );
     756             :             for (;;)
     757             :             {
     758           0 :                 if( nRead )
     759           0 :                     xOutput->writeBytes( bytes );
     760             : 
     761           0 :                 nRead = xInput->readBytes( bytes, 1024 );
     762           0 :                 if (! nRead)
     763           0 :                     break;
     764             :             }
     765           0 :             bDone = true;
     766             : 
     767             :             // With resource?
     768           0 :             Reference< beans::XPropertySet > xDialogModelPropSet( xDialogModel, UNO_QUERY );
     769           0 :             Reference< resource::XStringResourceResolver > xStringResourceResolver;
     770           0 :             if( xDialogModelPropSet.is() )
     771             :             {
     772             :                 try
     773             :                 {
     774           0 :                     Any aResourceResolver = xDialogModelPropSet->getPropertyValue( aResourceResolverPropName );
     775           0 :                     aResourceResolver >>= xStringResourceResolver;
     776             :                 }
     777           0 :                 catch(const beans::UnknownPropertyException& )
     778             :                 {}
     779             :             }
     780             : 
     781           0 :             bool bResource = false;
     782           0 :             if( xStringResourceResolver.is() )
     783             :             {
     784           0 :                 Sequence< lang::Locale > aLocaleSeq = xStringResourceResolver->getLocales();
     785           0 :                 sal_Int32 nLocaleCount = aLocaleSeq.getLength();
     786           0 :                 if( nLocaleCount > 0 )
     787           0 :                     bResource = true;
     788             :             }
     789             : 
     790           0 :             if( bResource )
     791             :             {
     792           0 :                 INetURLObject aURLObj( aCurPath );
     793           0 :                 aURLObj.removeExtension();
     794           0 :                 OUString aDialogName( aURLObj.getName() );
     795           0 :                 aURLObj.removeSegment();
     796           0 :                 OUString aURL( aURLObj.GetMainURL( INetURLObject::NO_DECODE ) );
     797           0 :                 bool bReadOnly = false;
     798           0 :                 OUString aComment( "# " );
     799           0 :                 aComment += aDialogName;
     800           0 :                 aComment += " strings" ;
     801           0 :                 Reference< task::XInteractionHandler > xDummyHandler;
     802             : 
     803             :                 // Remove old properties files in case of overwriting Dialog files
     804           0 :                 if( xSFI->isFolder( aURL ) )
     805             :                 {
     806           0 :                     Sequence< OUString > aContentSeq = xSFI->getFolderContents( aURL, false );
     807             : 
     808           0 :                     OUString aDialogName_( aDialogName );
     809           0 :                     aDialogName_ += "_" ;
     810           0 :                     sal_Int32 nCount = aContentSeq.getLength();
     811           0 :                     const OUString* pFiles = aContentSeq.getConstArray();
     812           0 :                     for( int i = 0 ; i < nCount ; i++ )
     813             :                     {
     814           0 :                         OUString aCompleteName = pFiles[i];
     815           0 :                         OUString aPureName;
     816           0 :                         OUString aExtension;
     817           0 :                         sal_Int32 iDot = aCompleteName.lastIndexOf( '.' );
     818           0 :                         sal_Int32 iSlash = aCompleteName.lastIndexOf( '/' );
     819           0 :                         if( iDot != -1 )
     820             :                         {
     821           0 :                             sal_Int32 iCopyFrom = (iSlash != -1) ? iSlash + 1 : 0;
     822           0 :                             aPureName = aCompleteName.copy( iCopyFrom, iDot-iCopyFrom );
     823           0 :                             aExtension = aCompleteName.copy( iDot + 1 );
     824             :                         }
     825             : 
     826           0 :                         if( aExtension == "properties" || aExtension == "default" )
     827             :                         {
     828           0 :                             if( aPureName.startsWith( aDialogName_ ) )
     829             :                             {
     830             :                                 try
     831             :                                 {
     832           0 :                                     xSFI->kill( aCompleteName );
     833             :                                 }
     834           0 :                                 catch(const uno::Exception& )
     835             :                                 {}
     836             :                             }
     837             :                         }
     838           0 :                     }
     839             :                 }
     840             : 
     841             :                 Reference< XStringResourceWithLocation > xStringResourceWithLocation =
     842             :                     StringResourceWithLocation::create( xContext, aURL, bReadOnly,
     843           0 :                         xStringResourceResolver->getDefaultLocale(), aDialogName, aComment, xDummyHandler );
     844             : 
     845             :                 // Add locales
     846           0 :                 Sequence< lang::Locale > aLocaleSeq = xStringResourceResolver->getLocales();
     847           0 :                 const lang::Locale* pLocales = aLocaleSeq.getConstArray();
     848           0 :                 sal_Int32 nLocaleCount = aLocaleSeq.getLength();
     849           0 :                 for( sal_Int32 iLocale = 0 ; iLocale < nLocaleCount ; iLocale++ )
     850             :                 {
     851           0 :                     const lang::Locale& rLocale = pLocales[ iLocale ];
     852           0 :                     xStringResourceWithLocation->newLocale( rLocale );
     853             :                 }
     854             : 
     855             :                 LocalizationMgr::copyResourceForDialog( xDialogModel,
     856           0 :                     xStringResourceResolver, xStringResourceWithLocation );
     857             : 
     858           0 :                 xStringResourceWithLocation->store();
     859           0 :             }
     860             :         }
     861             :         else
     862           0 :             MessageDialog(this, IDE_RESSTR(RID_STR_COULDNTWRITE)).Execute();
     863             :     }
     864             : 
     865           0 :     return bDone;
     866             : }
     867             : 
     868           0 : std::vector< lang::Locale > implGetLanguagesOnlyContainedInFirstSeq
     869             :     ( const Sequence< lang::Locale >& aFirstSeq, const Sequence< lang::Locale >& aSecondSeq )
     870             : {
     871           0 :     std::vector< lang::Locale > avRet;
     872             : 
     873           0 :     const lang::Locale* pFirst = aFirstSeq.getConstArray();
     874           0 :     const lang::Locale* pSecond = aSecondSeq.getConstArray();
     875           0 :     sal_Int32 nFirstCount = aFirstSeq.getLength();
     876           0 :     sal_Int32 nSecondCount = aSecondSeq.getLength();
     877             : 
     878           0 :     for( sal_Int32 iFirst = 0 ; iFirst < nFirstCount ; iFirst++ )
     879             :     {
     880           0 :         const lang::Locale& rFirstLocale = pFirst[ iFirst ];
     881             : 
     882           0 :         bool bAlsoContainedInSecondSeq = false;
     883           0 :         for( sal_Int32 iSecond = 0 ; iSecond < nSecondCount ; iSecond++ )
     884             :         {
     885           0 :             const lang::Locale& rSecondLocale = pSecond[ iSecond ];
     886             : 
     887           0 :             bool bMatch = localesAreEqual( rFirstLocale, rSecondLocale );
     888           0 :             if( bMatch )
     889             :             {
     890           0 :                 bAlsoContainedInSecondSeq = true;
     891           0 :                 break;
     892             :             }
     893             :         }
     894             : 
     895           0 :         if( !bAlsoContainedInSecondSeq )
     896           0 :             avRet.push_back( rFirstLocale );
     897             :     }
     898             : 
     899           0 :     return avRet;
     900             : }
     901             : 
     902             : 
     903           0 : class NameClashQueryBox : public MessBox
     904             : {
     905             : public:
     906             :     NameClashQueryBox( vcl::Window* pParent,
     907             :         const OUString& rTitle, const OUString& rMessage );
     908             : };
     909             : 
     910           0 : NameClashQueryBox::NameClashQueryBox( vcl::Window* pParent,
     911             :     const OUString& rTitle, const OUString& rMessage )
     912           0 :         : MessBox( pParent, 0, rTitle, rMessage )
     913             : {
     914           0 :     if ( !rTitle.isEmpty() )
     915           0 :         SetText( rTitle );
     916             : 
     917           0 :     maMessText = rMessage;
     918             : 
     919             :     AddButton( IDE_RESSTR(RID_STR_DLGIMP_CLASH_RENAME), RET_YES,
     920           0 :         BUTTONDIALOG_DEFBUTTON | BUTTONDIALOG_OKBUTTON | BUTTONDIALOG_FOCUSBUTTON );
     921           0 :     AddButton( IDE_RESSTR(RID_STR_DLGIMP_CLASH_REPLACE), RET_NO, 0 );
     922           0 :     AddButton( BUTTON_CANCEL, RET_CANCEL, BUTTONDIALOG_CANCELBUTTON );
     923             : 
     924           0 :     SetImage( QueryBox::GetStandardImage() );
     925           0 : }
     926             : 
     927             : 
     928           0 : class LanguageMismatchQueryBox : public MessBox
     929             : {
     930             : public:
     931             :     LanguageMismatchQueryBox( vcl::Window* pParent,
     932             :         const OUString& rTitle, const OUString& rMessage );
     933             : };
     934             : 
     935           0 : LanguageMismatchQueryBox::LanguageMismatchQueryBox( vcl::Window* pParent,
     936             :     const OUString& rTitle, const OUString& rMessage )
     937           0 :         : MessBox( pParent, 0, rTitle, rMessage )
     938             : {
     939           0 :     if ( !rTitle.isEmpty() )
     940           0 :         SetText( rTitle );
     941             : 
     942           0 :     maMessText = rMessage;
     943             :     AddButton( IDE_RESSTR(RID_STR_DLGIMP_MISMATCH_ADD), RET_YES,
     944           0 :         BUTTONDIALOG_DEFBUTTON | BUTTONDIALOG_OKBUTTON | BUTTONDIALOG_FOCUSBUTTON );
     945           0 :     AddButton( IDE_RESSTR(RID_STR_DLGIMP_MISMATCH_OMIT), RET_NO, 0 );
     946           0 :     AddButton( BUTTON_CANCEL, RET_CANCEL, BUTTONDIALOG_CANCELBUTTON );
     947           0 :     AddButton( BUTTON_HELP, RET_HELP, BUTTONDIALOG_HELPBUTTON, 4 );
     948             : 
     949           0 :     SetImage( QueryBox::GetStandardImage() );
     950           0 : }
     951             : 
     952             : 
     953           0 : bool implImportDialog( vcl::Window* pWin, const OUString& rCurPath, const ScriptDocument& rDocument, const OUString& aLibName )
     954             : {
     955           0 :     bool bDone = false;
     956             : 
     957           0 :     Reference< XComponentContext > xContext( comphelper::getProcessComponentContext() );
     958           0 :     Reference < XFilePicker3 > xFP = FilePicker::createWithMode(xContext, TemplateDescription::FILEOPEN_SIMPLE);
     959             : 
     960           0 :     Reference< XFilePickerControlAccess > xFPControl(xFP, UNO_QUERY);
     961           0 :     xFPControl->enableControl(ExtendedFilePickerElementIds::CHECKBOX_PASSWORD, false);
     962           0 :     Any aValue;
     963           0 :     aValue <<= true;
     964           0 :     xFPControl->setValue(ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION, 0, aValue);
     965             : 
     966           0 :     OUString aCurPath( rCurPath );
     967           0 :     if ( !aCurPath.isEmpty() )
     968           0 :         xFP->setDisplayDirectory ( aCurPath );
     969             : 
     970           0 :     OUString aDialogStr(IDE_RESSTR(RID_STR_STDDIALOGNAME));
     971           0 :     xFP->appendFilter( aDialogStr, OUString( "*.xdl" ) );
     972           0 :     xFP->appendFilter( IDE_RESSTR(RID_STR_FILTER_ALLFILES), OUString( FilterMask_All ) );
     973           0 :     xFP->setCurrentFilter( aDialogStr );
     974             : 
     975           0 :     if( xFP->execute() == RET_OK )
     976             :     {
     977           0 :         Sequence< OUString > aPaths = xFP->getFiles();
     978           0 :         aCurPath = aPaths[0];
     979             : 
     980           0 :         OUString aBasePath;
     981           0 :         OUString aOUCurPath( aCurPath );
     982           0 :         sal_Int32 iSlash = aOUCurPath.lastIndexOf( '/' );
     983           0 :         if( iSlash != -1 )
     984           0 :             aBasePath = aOUCurPath.copy( 0, iSlash + 1 );
     985             : 
     986             :         try
     987             :         {
     988             :             // create dialog model
     989             :             Reference< container::XNameContainer > xDialogModel(
     990           0 :                 xContext->getServiceManager()->createInstanceWithContext("com.sun.star.awt.UnoControlDialogModel", xContext),
     991           0 :                 UNO_QUERY_THROW );
     992             : 
     993           0 :             Reference< XSimpleFileAccess3 > xSFI( SimpleFileAccess::create(xContext) );
     994             : 
     995           0 :             Reference< XInputStream > xInput;
     996           0 :             if( xSFI->exists( aCurPath ) )
     997           0 :                 xInput = xSFI->openFileRead( aCurPath );
     998             : 
     999           0 :             ::xmlscript::importDialogModel( xInput, xDialogModel, xContext, rDocument.isDocument() ? rDocument.getDocument() : Reference< frame::XModel >() );
    1000             : 
    1001           0 :             OUString aXmlDlgName;
    1002           0 :             Reference< beans::XPropertySet > xDialogModelPropSet( xDialogModel, UNO_QUERY );
    1003           0 :             if( xDialogModelPropSet.is() )
    1004             :             {
    1005             :                 try
    1006             :                 {
    1007           0 :                     Any aXmlDialogNameAny = xDialogModelPropSet->getPropertyValue( DLGED_PROP_NAME );
    1008           0 :                     OUString aOUXmlDialogName;
    1009           0 :                     aXmlDialogNameAny >>= aOUXmlDialogName;
    1010           0 :                     aXmlDlgName = aOUXmlDialogName;
    1011             :                 }
    1012           0 :                 catch(const beans::UnknownPropertyException& )
    1013             :                 {}
    1014             :             }
    1015           0 :             bool bValidName = !aXmlDlgName.isEmpty();
    1016             :             OSL_ASSERT( bValidName );
    1017           0 :             if( !bValidName )
    1018           0 :                 return bDone;
    1019             : 
    1020           0 :             bool bDialogAlreadyExists = rDocument.hasDialog( aLibName, aXmlDlgName );
    1021             : 
    1022           0 :             OUString aNewDlgName = aXmlDlgName;
    1023             :             enum NameClashMode
    1024             :             {
    1025             :                 NO_CLASH,
    1026             :                 CLASH_OVERWRITE_DIALOG,
    1027             :                 CLASH_RENAME_DIALOG,
    1028             :             };
    1029           0 :             NameClashMode eNameClashMode = NO_CLASH;
    1030           0 :             if( bDialogAlreadyExists )
    1031             :             {
    1032           0 :                 OUString aQueryBoxTitle(IDE_RESSTR(RID_STR_DLGIMP_CLASH_TITLE));
    1033           0 :                 OUString aQueryBoxText(IDE_RESSTR(RID_STR_DLGIMP_CLASH_TEXT));
    1034           0 :                 aQueryBoxText = aQueryBoxText.replaceAll("$(ARG1)", aXmlDlgName);
    1035             : 
    1036           0 :                 NameClashQueryBox aQueryBox( pWin, aQueryBoxTitle, aQueryBoxText );
    1037           0 :                 sal_uInt16 nRet = aQueryBox.Execute();
    1038           0 :                 if( RET_YES == nRet )
    1039             :                 {
    1040             :                     // RET_YES == Rename, see NameClashQueryBox::NameClashQueryBox
    1041           0 :                     eNameClashMode = CLASH_RENAME_DIALOG;
    1042             : 
    1043           0 :                     aNewDlgName = rDocument.createObjectName( E_DIALOGS, aLibName );
    1044             :                 }
    1045           0 :                 else if( RET_NO == nRet )
    1046             :                 {
    1047             :                     // RET_NO == Replace, see NameClashQueryBox::NameClashQueryBox
    1048           0 :                     eNameClashMode = CLASH_OVERWRITE_DIALOG;
    1049             :                 }
    1050           0 :                 else if( RET_CANCEL == nRet )
    1051             :                 {
    1052           0 :                     return bDone;
    1053           0 :                 }
    1054             :             }
    1055             : 
    1056           0 :             Shell* pShell = GetShell();
    1057           0 :             if (!pShell)
    1058             :             {
    1059             :                 OSL_ASSERT(pShell);
    1060           0 :                 return bDone;
    1061             :             }
    1062             : 
    1063             :             // Resource?
    1064           0 :             ::com::sun::star::lang::Locale aLocale = Application::GetSettings().GetUILanguageTag().getLocale();
    1065           0 :             Reference< task::XInteractionHandler > xDummyHandler;
    1066           0 :             bool bReadOnly = true;
    1067             :             Reference< XStringResourceWithLocation > xImportStringResource =
    1068             :                 StringResourceWithLocation::create( xContext, aBasePath, bReadOnly,
    1069           0 :                 aLocale, aXmlDlgName, OUString(), xDummyHandler );
    1070             : 
    1071           0 :             Sequence< lang::Locale > aImportLocaleSeq = xImportStringResource->getLocales();
    1072           0 :             sal_Int32 nImportLocaleCount = aImportLocaleSeq.getLength();
    1073             : 
    1074           0 :             Reference< container::XNameContainer > xDialogLib( rDocument.getLibrary( E_DIALOGS, aLibName, true ) );
    1075           0 :             Reference< resource::XStringResourceManager > xLibStringResourceManager = LocalizationMgr::getStringResourceFromDialogLibrary( xDialogLib );
    1076           0 :             sal_Int32 nLibLocaleCount = 0;
    1077           0 :             Sequence< lang::Locale > aLibLocaleSeq;
    1078           0 :             if( xLibStringResourceManager.is() )
    1079             :             {
    1080           0 :                 aLibLocaleSeq = xLibStringResourceManager->getLocales();
    1081           0 :                 nLibLocaleCount = aLibLocaleSeq.getLength();
    1082             :             }
    1083             : 
    1084             :             // Check language matches
    1085             :             std::vector< lang::Locale > aOnlyInImportLanguages =
    1086           0 :                 implGetLanguagesOnlyContainedInFirstSeq( aImportLocaleSeq, aLibLocaleSeq );
    1087           0 :             int nOnlyInImportLanguageCount = aOnlyInImportLanguages.size();
    1088             : 
    1089             :             // For now: Keep languages from lib
    1090           0 :             bool bLibLocalized = (nLibLocaleCount > 0);
    1091           0 :             bool bImportLocalized = (nImportLocaleCount > 0);
    1092             : 
    1093           0 :             bool bAddDialogLanguagesToLib = false;
    1094           0 :             if( nOnlyInImportLanguageCount > 0 )
    1095             :             {
    1096           0 :                 OUString aQueryBoxTitle(IDE_RESSTR(RID_STR_DLGIMP_MISMATCH_TITLE));
    1097           0 :                 OUString aQueryBoxText(IDE_RESSTR(RID_STR_DLGIMP_MISMATCH_TEXT));
    1098           0 :                 LanguageMismatchQueryBox aQueryBox( pWin, aQueryBoxTitle, aQueryBoxText );
    1099           0 :                 sal_uInt16 nRet = aQueryBox.Execute();
    1100           0 :                 if( RET_YES == nRet )
    1101             :                 {
    1102             :                     // RET_YES == Add, see LanguageMismatchQueryBox::LanguageMismatchQueryBox
    1103           0 :                     bAddDialogLanguagesToLib = true;
    1104             :                 }
    1105             :                 // RET_NO == Omit, see LanguageMismatchQueryBox::LanguageMismatchQueryBox
    1106             :                 // -> nothing to do here
    1107             :                 //else if( RET_NO == nRet )
    1108             :                 //{
    1109             :                 //}
    1110           0 :                 else if( RET_CANCEL == nRet )
    1111             :                 {
    1112           0 :                     return bDone;
    1113           0 :                 }
    1114             :             }
    1115             : 
    1116           0 :             if( bImportLocalized )
    1117             :             {
    1118           0 :                 bool bCopyResourcesForDialog = true;
    1119           0 :                 if( bAddDialogLanguagesToLib )
    1120             :                 {
    1121           0 :                     boost::shared_ptr<LocalizationMgr> pCurMgr = pShell->GetCurLocalizationMgr();
    1122             : 
    1123           0 :                     lang::Locale aFirstLocale;
    1124           0 :                     aFirstLocale = aOnlyInImportLanguages[0];
    1125           0 :                     if( nOnlyInImportLanguageCount > 1 )
    1126             :                     {
    1127             :                         // Check if import default belongs to only import languages and use it then
    1128           0 :                         lang::Locale aImportDefaultLocale = xImportStringResource->getDefaultLocale();
    1129           0 :                         lang::Locale aTmpLocale;
    1130           0 :                         for( int i = 0 ; i < nOnlyInImportLanguageCount ; ++i )
    1131             :                         {
    1132           0 :                             aTmpLocale = aOnlyInImportLanguages[i];
    1133           0 :                             if( localesAreEqual( aImportDefaultLocale, aTmpLocale ) )
    1134             :                             {
    1135           0 :                                 aFirstLocale = aImportDefaultLocale;
    1136           0 :                                 break;
    1137             :                             }
    1138           0 :                         }
    1139             :                     }
    1140             : 
    1141           0 :                     Sequence< lang::Locale > aFirstLocaleSeq( 1 );
    1142           0 :                     aFirstLocaleSeq[0] = aFirstLocale;
    1143           0 :                     pCurMgr->handleAddLocales( aFirstLocaleSeq );
    1144             : 
    1145           0 :                     if( nOnlyInImportLanguageCount > 1 )
    1146             :                     {
    1147           0 :                         Sequence< lang::Locale > aRemainingLocaleSeq( nOnlyInImportLanguageCount - 1 );
    1148           0 :                         lang::Locale aTmpLocale;
    1149           0 :                         int iSeq = 0;
    1150           0 :                         for( int i = 0 ; i < nOnlyInImportLanguageCount ; ++i )
    1151             :                         {
    1152           0 :                             aTmpLocale = aOnlyInImportLanguages[i];
    1153           0 :                             if( !localesAreEqual( aFirstLocale, aTmpLocale ) )
    1154           0 :                                 aRemainingLocaleSeq[iSeq++] = aTmpLocale;
    1155             :                         }
    1156           0 :                         pCurMgr->handleAddLocales( aRemainingLocaleSeq );
    1157           0 :                     }
    1158             :                 }
    1159           0 :                 else if( !bLibLocalized )
    1160             :                 {
    1161           0 :                     Reference< resource::XStringResourceManager > xImportStringResourceManager( xImportStringResource, UNO_QUERY );
    1162           0 :                     LocalizationMgr::resetResourceForDialog( xDialogModel, xImportStringResourceManager );
    1163           0 :                     bCopyResourcesForDialog = false;
    1164             :                 }
    1165             : 
    1166           0 :                 if( bCopyResourcesForDialog )
    1167             :                 {
    1168           0 :                     Reference< resource::XStringResourceResolver > xImportStringResourceResolver( xImportStringResource, UNO_QUERY );
    1169             :                     LocalizationMgr::copyResourceForDroppedDialog( xDialogModel, aXmlDlgName,
    1170           0 :                         xLibStringResourceManager, xImportStringResourceResolver );
    1171             :                 }
    1172             :             }
    1173           0 :             else if( bLibLocalized )
    1174             :             {
    1175           0 :                 LocalizationMgr::setResourceIDsForDialog( xDialogModel, xLibStringResourceManager );
    1176             :             }
    1177             : 
    1178             : 
    1179           0 :             LocalizationMgr::setStringResourceAtDialog( rDocument, aLibName, aNewDlgName, xDialogModel );
    1180             : 
    1181           0 :             if( eNameClashMode == CLASH_OVERWRITE_DIALOG )
    1182             :             {
    1183           0 :                 if (basctl::RemoveDialog( rDocument, aLibName, aNewDlgName ) )
    1184             :                 {
    1185           0 :                     BaseWindow* pDlgWin = pShell->FindDlgWin( rDocument, aLibName, aNewDlgName, false, true );
    1186           0 :                     if( pDlgWin != NULL )
    1187           0 :                         pShell->RemoveWindow( pDlgWin, true );
    1188           0 :                     MarkDocumentModified( rDocument );
    1189             :                 }
    1190             :                 else
    1191             :                 {
    1192             :                     // TODO: Assertion?
    1193           0 :                     return bDone;
    1194             :                 }
    1195             :             }
    1196             : 
    1197           0 :             if( eNameClashMode == CLASH_RENAME_DIALOG )
    1198             :             {
    1199           0 :                 bool bRenamed = false;
    1200           0 :                 if( xDialogModelPropSet.is() )
    1201             :                 {
    1202             :                     try
    1203             :                     {
    1204           0 :                         Any aXmlDialogNameAny;
    1205           0 :                         aXmlDialogNameAny <<= OUString( aNewDlgName );
    1206           0 :                         xDialogModelPropSet->setPropertyValue( DLGED_PROP_NAME, aXmlDialogNameAny );
    1207           0 :                         bRenamed = true;
    1208             :                     }
    1209           0 :                     catch(const beans::UnknownPropertyException& )
    1210             :                     {}
    1211             :                 }
    1212             : 
    1213             : 
    1214           0 :                 if( bRenamed )
    1215             :                 {
    1216           0 :                     LocalizationMgr::renameStringResourceIDs( rDocument, aLibName, aNewDlgName, xDialogModel );
    1217             :                 }
    1218             :                 else
    1219             :                 {
    1220             :                     // TODO: Assertion?
    1221           0 :                     return bDone;
    1222             :                 }
    1223             :             }
    1224             : 
    1225           0 :             Reference< XInputStreamProvider > xISP = ::xmlscript::exportDialogModel( xDialogModel, xContext, rDocument.isDocument() ? rDocument.getDocument() : Reference< frame::XModel >() );
    1226           0 :             bool bSuccess = rDocument.insertDialog( aLibName, aNewDlgName, xISP );
    1227           0 :             if( bSuccess )
    1228             :             {
    1229           0 :                 DialogWindow* pNewDlgWin = pShell->CreateDlgWin( rDocument, aLibName, aNewDlgName );
    1230           0 :                 pShell->SetCurWindow( pNewDlgWin, true );
    1231             :             }
    1232             : 
    1233           0 :             bDone = true;
    1234             :         }
    1235           0 :         catch(const Exception& )
    1236           0 :         {}
    1237             :     }
    1238             : 
    1239           0 :     return bDone;
    1240             : }
    1241             : 
    1242             : 
    1243           0 : bool DialogWindow::ImportDialog()
    1244             : {
    1245           0 :     const ScriptDocument& rDocument = GetDocument();
    1246           0 :     OUString aLibName = GetLibName();
    1247           0 :     return implImportDialog( this, aCurPath, rDocument, aLibName );
    1248             : }
    1249             : 
    1250           0 : DlgEdModel& DialogWindow::GetModel() const
    1251             : {
    1252           0 :     return pEditor->GetModel();
    1253             : }
    1254             : 
    1255           0 : DlgEdPage& DialogWindow::GetPage() const
    1256             : {
    1257           0 :     return pEditor->GetPage();
    1258             : }
    1259             : 
    1260           0 : DlgEdView& DialogWindow::GetView() const
    1261             : {
    1262           0 :     return pEditor->GetView();
    1263             : }
    1264             : 
    1265           0 : bool DialogWindow::IsModified()
    1266             : {
    1267           0 :     return pEditor->IsModified();
    1268             : }
    1269             : 
    1270           0 : ::svl::IUndoManager* DialogWindow::GetUndoManager()
    1271             : {
    1272           0 :     return pUndoMgr.get();
    1273             : }
    1274             : 
    1275           0 : OUString DialogWindow::GetTitle()
    1276             : {
    1277           0 :     return GetName();
    1278             : }
    1279             : 
    1280           0 : EntryDescriptor DialogWindow::CreateEntryDescriptor()
    1281             : {
    1282           0 :     ScriptDocument aDocument( GetDocument() );
    1283           0 :     OUString aLibName( GetLibName() );
    1284           0 :     OUString aLibSubName;
    1285           0 :     LibraryLocation eLocation = aDocument.getLibraryLocation( aLibName );
    1286           0 :     return EntryDescriptor( aDocument, eLocation, aLibName, aLibSubName, GetName(), OBJ_TYPE_DIALOG );
    1287             : }
    1288             : 
    1289           0 : void DialogWindow::SetReadOnly (bool bReadOnly)
    1290             : {
    1291           0 :     pEditor->SetMode(bReadOnly ? DlgEditor::READONLY : DlgEditor::SELECT);
    1292           0 : }
    1293             : 
    1294           0 : bool DialogWindow::IsReadOnly ()
    1295             : {
    1296           0 :     return pEditor->GetMode() == DlgEditor::READONLY;
    1297             : }
    1298             : 
    1299           0 : bool DialogWindow::IsPasteAllowed()
    1300             : {
    1301           0 :     return pEditor->IsPasteAllowed();
    1302             : }
    1303             : 
    1304           0 : void DialogWindow::StoreData()
    1305             : {
    1306           0 :     if ( IsModified() )
    1307             :     {
    1308             :         try
    1309             :         {
    1310           0 :             Reference< container::XNameContainer > xLib = GetDocument().getLibrary( E_DIALOGS, GetLibName(), true );
    1311             : 
    1312           0 :             if( xLib.is() )
    1313             :             {
    1314           0 :                 Reference< container::XNameContainer > xDialogModel = pEditor->GetDialog();
    1315             : 
    1316           0 :                 if( xDialogModel.is() )
    1317             :                 {
    1318             :                     Reference< XComponentContext > xContext(
    1319           0 :                         comphelper::getProcessComponentContext() );
    1320           0 :                     Reference< XInputStreamProvider > xISP = ::xmlscript::exportDialogModel( xDialogModel, xContext, GetDocument().isDocument() ? GetDocument().getDocument() : Reference< frame::XModel >() );
    1321           0 :                     xLib->replaceByName( OUString( GetName() ), makeAny( xISP ) );
    1322           0 :                 }
    1323           0 :             }
    1324             :         }
    1325           0 :         catch (const uno::Exception& )
    1326             :         {
    1327             :             DBG_UNHANDLED_EXCEPTION();
    1328             :         }
    1329           0 :         MarkDocumentModified( GetDocument() );
    1330           0 :         pEditor->ClearModifyFlag();
    1331             :     }
    1332           0 : }
    1333             : 
    1334           0 : void DialogWindow::Activating ()
    1335             : {
    1336           0 :     UpdateBrowser();
    1337           0 :     Show();
    1338           0 : }
    1339             : 
    1340           0 : void DialogWindow::Deactivating()
    1341             : {
    1342           0 :     Hide();
    1343           0 :     if ( IsModified() )
    1344           0 :         MarkDocumentModified( GetDocument() );
    1345           0 :     DisableBrowser();
    1346           0 : }
    1347             : 
    1348           0 : sal_Int32 DialogWindow::countPages( Printer* pPrinter )
    1349             : {
    1350           0 :     return pEditor->countPages( pPrinter );
    1351             : }
    1352             : 
    1353           0 : void DialogWindow::printPage( sal_Int32 nPage, Printer* pPrinter )
    1354             : {
    1355           0 :     pEditor->printPage( nPage, pPrinter, CreateQualifiedName() );
    1356           0 : }
    1357             : 
    1358           0 : void DialogWindow::DataChanged( const DataChangedEvent& rDCEvt )
    1359             : {
    1360           0 :     if( (rDCEvt.GetType()==DATACHANGED_SETTINGS) && (rDCEvt.GetFlags() & SETTINGS_STYLE) )
    1361             :     {
    1362           0 :         InitSettings( true, true, true );
    1363           0 :         Invalidate();
    1364             :     }
    1365             :     else
    1366           0 :         BaseWindow::DataChanged( rDCEvt );
    1367           0 : }
    1368             : 
    1369           0 : void DialogWindow::InitSettings(bool bFont, bool bForeground, bool bBackground)
    1370             : {
    1371           0 :     const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
    1372           0 :     if( bFont )
    1373             :     {
    1374           0 :         vcl::Font aFont;
    1375           0 :         aFont = rStyleSettings.GetFieldFont();
    1376           0 :         SetPointFont( aFont );
    1377             :     }
    1378             : 
    1379           0 :     if( bForeground || bFont )
    1380             :     {
    1381           0 :         SetTextColor( rStyleSettings.GetFieldTextColor() );
    1382           0 :         SetTextFillColor();
    1383             :     }
    1384             : 
    1385           0 :     if( bBackground )
    1386           0 :         SetBackground( rStyleSettings.GetFieldColor() );
    1387           0 : }
    1388             : 
    1389           0 : ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > DialogWindow::CreateAccessible()
    1390             : {
    1391           0 :     return (::com::sun::star::accessibility::XAccessible*) new AccessibleDialogWindow( this );
    1392             : }
    1393             : 
    1394           0 : char const* DialogWindow::GetHid () const
    1395             : {
    1396           0 :     return HID_BASICIDE_DIALOGWINDOW;
    1397             : }
    1398           0 : ItemType DialogWindow::GetType () const
    1399             : {
    1400           0 :     return TYPE_DIALOG;
    1401             : }
    1402             : 
    1403             : 
    1404             : 
    1405             : // DialogWindowLayout
    1406             : 
    1407             : 
    1408             : 
    1409           0 : DialogWindowLayout::DialogWindowLayout (vcl::Window* pParent, ObjectCatalog& rObjectCatalog_) :
    1410             :     Layout(pParent),
    1411             :     pChild(0),
    1412             :     rObjectCatalog(rObjectCatalog_),
    1413           0 :     pPropertyBrowser(0)
    1414             : {
    1415           0 :     ShowPropertyBrowser();
    1416           0 : }
    1417             : 
    1418           0 : DialogWindowLayout::~DialogWindowLayout()
    1419             : {
    1420           0 :     if (pPropertyBrowser != 0)
    1421             :     {
    1422           0 :         Remove(pPropertyBrowser);
    1423           0 :         delete pPropertyBrowser;
    1424             :     }
    1425           0 : }
    1426             : 
    1427             : // shows the property browser (and creates if necessary)
    1428           0 : void DialogWindowLayout::ShowPropertyBrowser ()
    1429             : {
    1430             :     // not exists?
    1431           0 :     if (!pPropertyBrowser)
    1432             :     {
    1433             :         // creating
    1434           0 :         pPropertyBrowser = new PropBrw(*this);
    1435           0 :         pPropertyBrowser->Show();
    1436             :         // after OnFirstSize():
    1437           0 :         if (HasSize())
    1438           0 :             AddPropertyBrowser();
    1439             :         // updating if necessary
    1440           0 :         UpdatePropertyBrowser();
    1441             :     }
    1442             :     else
    1443           0 :         pPropertyBrowser->Show();
    1444             :     // refreshing the button state
    1445           0 :     if (SfxBindings* pBindings = GetBindingsPtr())
    1446           0 :         pBindings->Invalidate(SID_SHOW_PROPERTYBROWSER);
    1447           0 : }
    1448             : 
    1449             : // disables the property browser
    1450           0 : void DialogWindowLayout::DisablePropertyBrowser ()
    1451             : {
    1452           0 :     if (pPropertyBrowser)
    1453           0 :         pPropertyBrowser->Update(0);
    1454           0 : }
    1455             : 
    1456             : // updates the property browser
    1457           0 : void DialogWindowLayout::UpdatePropertyBrowser ()
    1458             : {
    1459           0 :     if (pPropertyBrowser)
    1460           0 :         pPropertyBrowser->Update(GetShell());
    1461           0 : }
    1462             : 
    1463           0 : void DialogWindowLayout::Activating (BaseWindow& rChild)
    1464             : {
    1465             :     assert(dynamic_cast<DialogWindow*>(&rChild));
    1466           0 :     pChild = &static_cast<DialogWindow&>(rChild);
    1467           0 :     rObjectCatalog.SetLayoutWindow(this);
    1468           0 :     rObjectCatalog.UpdateEntries();
    1469           0 :     rObjectCatalog.Show();
    1470           0 :     if (pPropertyBrowser)
    1471           0 :         pPropertyBrowser->Show();
    1472           0 :     Layout::Activating(rChild);
    1473           0 : }
    1474             : 
    1475           0 : void DialogWindowLayout::Deactivating ()
    1476             : {
    1477           0 :     Layout::Deactivating();
    1478           0 :     rObjectCatalog.Hide();
    1479           0 :     if (pPropertyBrowser)
    1480           0 :         pPropertyBrowser->Hide();
    1481           0 :     pChild = 0;
    1482           0 : }
    1483             : 
    1484           0 : void DialogWindowLayout::ExecuteGlobal (SfxRequest& rReq)
    1485             : {
    1486           0 :     switch (rReq.GetSlot())
    1487             :     {
    1488             :         case SID_SHOW_PROPERTYBROWSER:
    1489             :             // toggling property browser
    1490           0 :             if (pPropertyBrowser && pPropertyBrowser->IsVisible())
    1491           0 :                 pPropertyBrowser->Hide();
    1492             :             else
    1493           0 :                 ShowPropertyBrowser();
    1494           0 :             ArrangeWindows();
    1495             :             // refreshing the button state
    1496           0 :             if (SfxBindings* pBindings = GetBindingsPtr())
    1497           0 :                 pBindings->Invalidate(SID_SHOW_PROPERTYBROWSER);
    1498           0 :             break;
    1499             :     }
    1500           0 : }
    1501             : 
    1502           0 : void DialogWindowLayout::GetState (SfxItemSet& rSet, unsigned nWhich)
    1503             : {
    1504           0 :     switch (nWhich)
    1505             :     {
    1506             :         case SID_SHOW_PROPERTYBROWSER:
    1507           0 :             rSet.Put(SfxBoolItem(nWhich, pPropertyBrowser && pPropertyBrowser->IsVisible()));
    1508           0 :             break;
    1509             : 
    1510             :         case SID_BASICIDE_CHOOSEMACRO:
    1511           0 :             rSet.Put(SfxVisibilityItem(nWhich, false));
    1512           0 :             break;
    1513             :     }
    1514           0 : }
    1515             : 
    1516           0 : void DialogWindowLayout::OnFirstSize (long const nWidth, long const nHeight)
    1517             : {
    1518           0 :     AddToLeft(&rObjectCatalog, Size(nWidth * 0.25, nHeight * 0.35));
    1519           0 :     if (pPropertyBrowser)
    1520           0 :         AddPropertyBrowser();
    1521           0 : }
    1522             : 
    1523           0 : void DialogWindowLayout::AddPropertyBrowser () {
    1524           0 :     Size const aSize = GetOutputSizePixel();
    1525           0 :     AddToLeft(pPropertyBrowser, Size(aSize.Width() * 0.25, aSize.Height() * 0.65));
    1526           0 : }
    1527             : 
    1528             : 
    1529           0 : } // namespace basctl
    1530             : 
    1531             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10