/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ #ifndef SD_DRAW_DOC_SHELL_HXX #define SD_DRAW_DOC_SHELL_HXX #include #include #include #include "glob.hxx" #include "sdmod.hxx" #include "pres.hxx" #include "sddllapi.h" #include "fupoor.hxx" class SfxStyleSheetBasePool; class SfxStatusBarManager; class SdStyleSheetPool; class FontList; class SdDrawDocument; class SvxItemFactory; class SdPage; class SfxPrinter; struct SdrDocumentStreamInfo; struct SpellCallbackInfo; class AbstractSvxNameDialog; class SfxUndoManager; namespace sd { class FrameView; class View; class ViewShell; // ------------------ // - DrawDocShell - // ------------------ class SD_DLLPUBLIC DrawDocShell : public SfxObjectShell { public: TYPEINFO(); SFX_DECL_INTERFACE(SD_IF_SDDRAWDOCSHELL) SFX_DECL_OBJECTFACTORY(); DrawDocShell ( SfxObjectCreateMode eMode = SFX_CREATE_MODE_EMBEDDED, sal_Bool bSdDataObj=sal_False, DocumentType=DOCUMENT_TYPE_IMPRESS); DrawDocShell ( const sal_uInt64 nModelCreationFlags, sal_Bool bSdDataObj=sal_False, DocumentType=DOCUMENT_TYPE_IMPRESS); DrawDocShell ( SdDrawDocument* pDoc, SfxObjectCreateMode eMode = SFX_CREATE_MODE_EMBEDDED, sal_Bool bSdDataObj=sal_False, DocumentType=DOCUMENT_TYPE_IMPRESS); virtual ~DrawDocShell(); void UpdateRefDevice(); virtual void Activate( sal_Bool bMDI ); virtual void Deactivate( sal_Bool bMDI ); virtual sal_Bool InitNew( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage ); virtual sal_Bool ConvertFrom( SfxMedium &rMedium ); virtual sal_Bool Save(); virtual sal_Bool SaveAsOwnFormat( SfxMedium& rMedium ); virtual sal_Bool ConvertTo( SfxMedium &rMedium ); virtual sal_Bool SaveCompleted( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage ); virtual sal_Bool Load( SfxMedium &rMedium ); virtual sal_Bool LoadFrom( SfxMedium& rMedium ); virtual sal_Bool SaveAs( SfxMedium &rMedium ); virtual Rectangle GetVisArea(sal_uInt16 nAspect) const; virtual void Draw(OutputDevice*, const JobSetup& rSetup, sal_uInt16 nAspect = ASPECT_CONTENT); virtual ::svl::IUndoManager* GetUndoManager(); virtual Printer* GetDocumentPrinter(); virtual void OnDocumentPrinterChanged(Printer* pNewPrinter); virtual SfxStyleSheetBasePool* GetStyleSheetPool(); virtual void SetOrganizerSearchMask(SfxStyleSheetBasePool* pBasePool) const; virtual Size GetFirstPageSize(); virtual void FillClass(SvGlobalName* pClassName, sal_uInt32* pFormat, String* pAppName, String* pFullTypeName, String* pShortTypeName, sal_Int32 nFileFormat, sal_Bool bTemplate = sal_False ) const; virtual void SetModified( sal_Bool = sal_True ); using SotObject::GetInterface; using SfxObjectShell::GetVisArea; using SfxShell::GetViewShell; sd::ViewShell* GetViewShell() { return mpViewShell; } ::sd::FrameView* GetFrameView(); ::sd::FunctionReference GetDocShellFunction() const { return mxDocShellFunction; } void SetDocShellFunction( const ::sd::FunctionReference& xFunction ); SdDrawDocument* GetDoc(); DocumentType GetDocumentType() const { return meDocType; } SfxPrinter* GetPrinter(sal_Bool bCreate); void SetPrinter(SfxPrinter *pNewPrinter); void UpdateFontList(); sal_Bool IsInDestruction() const { return mbInDestruction; } void CancelSearching(); void Execute( SfxRequest& rReq ); void GetState(SfxItemSet&); void Connect(sd::ViewShell* pViewSh); void Disconnect(sd::ViewShell* pViewSh); void UpdateTablePointers(); sal_Bool GotoBookmark(const String& rBookmark); //Solution: realize multi-selection of objects sal_Bool GotoTreeBookmark(const String& rBookmark); sal_Bool IsMarked( SdrObject* pObject ); sal_Bool GetObjectIsmarked(const String& rBookmark); Bitmap GetPagePreviewBitmap(SdPage* pPage, sal_uInt16 nMaxEdgePixel); /** checks, if the given name is a valid new name for a slide

If the name is invalid, an SvxNameDialog pops up that queries again for a new name until it is ok or the user chose Cancel.

@param pWin is necessary to pass to the SvxNameDialog in case an invalid name was entered. @param rName the new name that is to be set for a slide. This string may be set to an empty string (see below). @return sal_True, if the new name is unique. Note that if the user entered a default name of a not-yet-existing slide (e.g. 'Slide 17'), sal_True is returned, but rName is set to an empty string. */ sal_Bool CheckPageName(::Window* pWin, String& rName ); void SetSlotFilter(sal_Bool bEnable = sal_False, sal_uInt16 nCount = 0, const sal_uInt16* pSIDs = NULL) { mbFilterEnable = bEnable; mnFilterCount = nCount; mpFilterSIDs = pSIDs; } void ApplySlotFilter() const; sal_uInt16 GetStyleFamily() const { return mnStyleFamily; } void SetStyleFamily( sal_uInt16 nSF ) { mnStyleFamily = nSF; } /** executes the SID_OPENDOC slot to let the framework open a document with the given URL and this document as a referer */ void OpenBookmark( const String& rBookmarkURL ); /** checks, if the given name is a valid new name for a slide

This method does not pop up any dialog (like CheckPageName).

@param rInOutPageName the new name for a slide that is to be renamed. This string will be set to an empty string if bResetStringIfStandardName is true and the name is of the form of any, possibly not-yet existing, standard slide (e.g. 'Slide 17') @param bResetStringIfStandardName if true allows setting rInOutPageName to an empty string, which returns true and implies that the slide will later on get a new standard name (with a free slide number). @return true, if the new name is unique. If bResetStringIfStandardName is true, the return value is also true, if the slide name is a standard name (see above) */ bool IsNewPageNameValid( String & rInOutPageName, bool bResetStringIfStandardName = false ); /** Return the reference device for the current document. When the inherited implementation returns a device then this is passed to the caller. Otherwise the returned value depends on the printer independent layout mode and will usually be either a printer or a virtual device used for screen rendering. @return Returns NULL when the current document has no reference device. */ virtual OutputDevice* GetDocumentRefDev (void); DECL_LINK( RenameSlideHdl, AbstractSvxNameDialog* ); // #91457# ExecuteSpellPopup now handled by DrawDocShell DECL_LINK( OnlineSpellCallback, SpellCallbackInfo* ); void ClearUndoBuffer(); protected: SdDrawDocument* mpDoc; SfxUndoManager* mpUndoManager; SfxPrinter* mpPrinter; ::sd::ViewShell* mpViewShell; FontList* mpFontList; ::sd::FunctionReference mxDocShellFunction; DocumentType meDocType; sal_uInt16 mnStyleFamily; const sal_uInt16* mpFilterSIDs; sal_uInt16 mnFilterCount; sal_Bool mbFilterEnable; sal_Bool mbSdDataObj; sal_Bool mbInDestruction; sal_Bool mbOwnPrinter; sal_Bool mbNewDocument; bool mbOwnDocument; // if true, we own mpDoc and will delete it in our d'tor void Construct(bool bClipboard); virtual void InPlaceActivate( sal_Bool bActive ); public: virtual void setDocAccTitle( const String& rTitle ); virtual const String getDocAccTitle() const; virtual void setDocReadOnly( sal_Bool bReadOnly); virtual sal_Bool getDocReadOnly() const; }; #ifndef SV_DECL_DRAW_DOC_SHELL_DEFINED #define SV_DECL_DRAW_DOC_SHELL_DEFINED SV_DECL_REF(DrawDocShell) #endif SV_IMPL_REF (DrawDocShell) } // end of namespace sd #endif