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

Generated by: LCOV version 1.11