diff options
Diffstat (limited to 'sd/source/ui/inc')
273 files changed, 30454 insertions, 0 deletions
diff --git a/sd/source/ui/inc/3dchld.hxx b/sd/source/ui/inc/3dchld.hxx new file mode 100755 index 000000000000..b5258f06eba6 --- /dev/null +++ b/sd/source/ui/inc/3dchld.hxx @@ -0,0 +1,50 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + + +#ifndef _SD_3DCHLD_HXX +#define _SD_3DCHLD_HXX + + +#include <sfx2/childwin.hxx> + +/************************************************************************* +|* +|* Ableitung vom SfxChildWindow als "Behaelter" fuer 3D Window +|* +\************************************************************************/ + +class Sd3DChildWindow : public SfxChildWindow +{ + public: + Sd3DChildWindow( Window*, sal_uInt16, SfxBindings*, SfxChildWinInfo* ); + + SFX_DECL_CHILDWINDOW(Sd3DChildWindow); +}; + +#endif // _SD_3DCHLD_HXX + diff --git a/sd/source/ui/inc/AccessibleDocumentViewBase.hxx b/sd/source/ui/inc/AccessibleDocumentViewBase.hxx new file mode 100644 index 000000000000..b070db968959 --- /dev/null +++ b/sd/source/ui/inc/AccessibleDocumentViewBase.hxx @@ -0,0 +1,372 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_ACCESSIBILITY_ACCESSIBLE_DOCUMENT_VIEW_BASE_HXX +#define SD_ACCESSIBILITY_ACCESSIBLE_DOCUMENT_VIEW_BASE_HXX + +#include <editeng/AccessibleContextBase.hxx> +#include <editeng/AccessibleComponentBase.hxx> +#include <editeng/AccessibleSelectionBase.hxx> +#include "AccessibleViewForwarder.hxx" +#include "AccessiblePageShape.hxx" +#include <svx/ChildrenManager.hxx> +#include <com/sun/star/frame/XModel.hpp> +#include <com/sun/star/awt/XWindowListener.hpp> +#include <com/sun/star/awt/XFocusListener.hpp> +#include <com/sun/star/beans/XPropertyChangeListener.hpp> +#include <com/sun/star/accessibility/XAccessible.hpp> +#include <com/sun/star/lang/IndexOutOfBoundsException.hpp> +#include <tools/link.hxx> + +namespace sd { +class ViewShell; +class Window; +} + +class VclSimpleEvent; + +namespace accessibility { + + +/** Base class for the various document views of the Draw and + Impress applications. + + <p>The different view modes of the Draw and Impress applications + are made accessible by derived classes. When the view mode is + changed than the object representing the document view is + disposed and replaced by a new instance of the then appropriate + derived class.</p> + + <p>This base class also manages an optionally active accessible OLE + object. If you overwrite the <member>getAccessibleChildCount</member> + and <member>getAccessibleChild</member> methods then make sure to first + call the corresponding method of this class and adapt your child count + and indices accordingly. Only one active OLE object is allowed at a + time. This class does not listen for disposing calls at the moment + because it does not use the accessible OLE object directly and trusts on + getting informed through VCL window events.</p> + + <p>This class implements three kinds of listeners: + <ol><li>The property change listener is not used directly but exists as + convenience for derived classes. May be moved to those classes + instead.</li> + <li>As window listener it waits for changes of the window geometry and + forwards those as view forwarder changes.</li> + <li>As focus listener it keeps track of the focus to give this class and + derived classes the oportunity to set and remove the focus to/from + shapes.</li> + </ol> + </p> +*/ +class AccessibleDocumentViewBase + : public AccessibleContextBase, + public AccessibleComponentBase, + public AccessibleSelectionBase, + public IAccessibleViewForwarderListener, + public ::com::sun::star::beans::XPropertyChangeListener, + public ::com::sun::star::awt::XWindowListener, + public ::com::sun::star::awt::XFocusListener +{ +public: + //===== internal ======================================================== + + /** Create a new object. Note that the caller has to call the + Init method directly after this constructor has finished. + @param pSdWindow + The window whose content is to be made accessible. + @param pViewShell + The view shell associated with the given window. + @param rxController + The controller from which to get the model. + @param rxParent + The accessible parent of the new object. Note that this parent does + not necessarily correspond with the parent of the given window. + */ + AccessibleDocumentViewBase ( + ::sd::Window* pSdWindow, + ::sd::ViewShell* pViewShell, + const ::com::sun::star::uno::Reference< + ::com::sun::star::frame::XController>& rxController, + const ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessible>& rxParent); + + virtual ~AccessibleDocumentViewBase (void); + + /** Initialize a new object. Call this method directly after creating a + new object. It finished the initialization begun in the constructor + but which needs a fully created object. + */ + virtual void Init (void); + + /** Define callback for listening to window child events of VCL. + Listen for creation or destruction of OLE objects. + */ + DECL_LINK (WindowChildEventListener, VclSimpleEvent*); + + //===== IAccessibleViewForwarderListener ================================ + + /** A view forwarder change is signalled for instance when any of the + window events is recieved. Thus, instead of overloading the four + windowResized... methods it will be sufficient in most cases just to + overload this method. + */ + virtual void ViewForwarderChanged (ChangeType aChangeType, + const IAccessibleViewForwarder* pViewForwarder); + + //===== XAccessibleContext ============================================== + + virtual ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessible> SAL_CALL + getAccessibleParent (void) + throw (::com::sun::star::uno::RuntimeException); + + /** This implementation returns either 1 or 0 depending on whether there + is an active accessible OLE object or not. + */ + virtual sal_Int32 SAL_CALL + getAccessibleChildCount (void) + throw (::com::sun::star::uno::RuntimeException); + + /** This implementation either returns the active accessible OLE object + if it exists and the given index is 0 or throws an exception. + */ + virtual ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessible> SAL_CALL + getAccessibleChild (sal_Int32 nIndex) + throw (::com::sun::star::uno::RuntimeException, + ::com::sun::star::lang::IndexOutOfBoundsException); + + + //===== XAccessibleComponent ============================================ + + virtual ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessible > SAL_CALL + getAccessibleAtPoint (const ::com::sun::star::awt::Point& aPoint) + throw (::com::sun::star::uno::RuntimeException); + + virtual ::com::sun::star::awt::Rectangle SAL_CALL getBounds (void) + throw (::com::sun::star::uno::RuntimeException); + + virtual ::com::sun::star::awt::Point SAL_CALL getLocation (void) + throw (::com::sun::star::uno::RuntimeException); + + virtual ::com::sun::star::awt::Point SAL_CALL getLocationOnScreen (void) + throw (::com::sun::star::uno::RuntimeException); + + virtual ::com::sun::star::awt::Size SAL_CALL getSize (void) + throw (::com::sun::star::uno::RuntimeException); + + + //===== XInterface ====================================================== + + virtual com::sun::star::uno::Any SAL_CALL + queryInterface (const com::sun::star::uno::Type & rType) + throw (::com::sun::star::uno::RuntimeException); + + virtual void SAL_CALL + acquire (void) + throw (); + + virtual void SAL_CALL + release (void) + throw (); + + + //===== XServiceInfo ==================================================== + + /** Returns an identifier for the implementation of this object. + */ + virtual ::rtl::OUString SAL_CALL + getImplementationName (void) + throw (::com::sun::star::uno::RuntimeException); + + virtual ::com::sun::star::uno::Sequence< ::rtl::OUString> SAL_CALL + getSupportedServiceNames (void) + throw (::com::sun::star::uno::RuntimeException); + + + //===== XTypeProvider =================================================== + + virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type> SAL_CALL + getTypes (void) + throw (::com::sun::star::uno::RuntimeException); + + + //===== lang::XEventListener ============================================ + + virtual void SAL_CALL + disposing (const ::com::sun::star::lang::EventObject& rEventObject) + throw (::com::sun::star::uno::RuntimeException); + + + //===== XPropertyChangeListener ========================================= + + virtual void SAL_CALL + propertyChange (const ::com::sun::star::beans::PropertyChangeEvent& rEventObject) + throw (::com::sun::star::uno::RuntimeException); + + + //===== XWindowListener ================================================= + + virtual void SAL_CALL + windowResized (const ::com::sun::star::awt::WindowEvent& e) + throw (::com::sun::star::uno::RuntimeException); + + virtual void SAL_CALL + windowMoved (const ::com::sun::star::awt::WindowEvent& e) + throw (::com::sun::star::uno::RuntimeException); + + virtual void SAL_CALL + windowShown (const ::com::sun::star::lang::EventObject& e) + throw (::com::sun::star::uno::RuntimeException); + + virtual void SAL_CALL + windowHidden (const ::com::sun::star::lang::EventObject& e) + throw (::com::sun::star::uno::RuntimeException); + + //===== XFocusListener ================================================= + + virtual void SAL_CALL focusGained (const ::com::sun::star::awt::FocusEvent& e) + throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL focusLost (const ::com::sun::star::awt::FocusEvent& e) + throw (::com::sun::star::uno::RuntimeException); + +private: + + // return the member maMutex; + virtual ::osl::Mutex& + implGetMutex(); + + // return ourself as context in default case + virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > + implGetAccessibleContext() + throw ( ::com::sun::star::uno::RuntimeException ); + + // return sal_False in default case + virtual sal_Bool + implIsSelected( sal_Int32 nAccessibleChildIndex ) + throw (::com::sun::star::uno::RuntimeException); + + // return nothing in default case + virtual void + implSelect( sal_Int32 nAccessibleChildIndex, sal_Bool bSelect ) + throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException); + +protected: + /// The core window that is made accessible. + ::sd::Window* mpWindow; + + /// The API window that is made accessible. + ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow> + mxWindow; + + /// The controller of the window in which this view is displayed. + ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController> + mxController; + + /// Model of the document. + ::com::sun::star::uno::Reference < ::com::sun::star::frame::XModel> + mxModel; + + // Bundle of information that is passed down the shape tree. + AccessibleShapeTreeInfo maShapeTreeInfo; + + /// The view forwarder passed to the children manager. + AccessibleViewForwarder maViewForwarder; + + /** Accessible OLE object. Set or removed by the + <member>SetAccessibleOLEObject</member> method. + */ + ::com::sun::star::uno::Reference < + ::com::sun::star::accessibility::XAccessible> + mxAccessibleOLEObject; + + Link maWindowLink; + + // This method is called from the component helper base class while + // disposing. + virtual void SAL_CALL disposing (void); + + /** Create a name string. The current name is not modified and, + therefore, no events are send. This method is usually called once + by the <member>getAccessibleName</member> method of the base class. + @return + A name string. + */ + virtual ::rtl::OUString + CreateAccessibleName () + throw (::com::sun::star::uno::RuntimeException); + + /** Create a description string. The current description is not + modified and, therefore, no events are send. This method is usually + called once by the <member>getAccessibleDescription</member> method + of the base class. + @return + A description string. + */ + virtual ::rtl::OUString + CreateAccessibleDescription () + throw (::com::sun::star::uno::RuntimeException); + + /** This method is called when (after) the frame containing this + document has been activated. Can be used to send FOCUSED state + changes for the currently selected element. + + Note: Currently used as a substitute for FocusGained. Should be + renamed in the future. + */ + virtual void Activated (void); + + /** This method is called when (before or after?) the frame containing + this document has been deactivated. Can be used to send FOCUSED + state changes for the currently selected element. + + Note: Currently used as a substitute for FocusLost. Should be + renamed in the future. + */ + virtual void Deactivated (void); + + /** Set or remove the currently active accessible OLE object. + @param xOLEObject + If this is a valid reference then a child event is send that + informs the listeners of a new child. If there has already been + an active accessible OLE object then this is removed first and + appropriate events are send. + + If this is an empty reference then the currently active + accessible OLE object (if there is one) is removed. + */ + virtual void SetAccessibleOLEObject ( + const ::com::sun::star::uno::Reference < + ::com::sun::star::accessibility::XAccessible>& xOLEObject); + + virtual void impl_dispose (void); +}; + +} // end of namespace accessibility + +#endif diff --git a/sd/source/ui/inc/AccessibleDrawDocumentView.hxx b/sd/source/ui/inc/AccessibleDrawDocumentView.hxx new file mode 100644 index 000000000000..512520266ef2 --- /dev/null +++ b/sd/source/ui/inc/AccessibleDrawDocumentView.hxx @@ -0,0 +1,173 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SD_ACCESSIBILITY_ACCESSIBLE_DRAW_DOCUMENT_VIEW_HXX +#define _SD_ACCESSIBILITY_ACCESSIBLE_DRAW_DOCUMENT_VIEW_HXX + +#include "AccessibleDocumentViewBase.hxx" + +namespace accessibility { + + +/** This class makes draw documents in the general view modes + accessible. It passes all shapes on the current draw page to a + children manager and additionally creates a new shape that + represents the actual draw page. + + Please see the documentation of the base class for further + explanations of the individual methods. +*/ +class AccessibleDrawDocumentView : + public AccessibleDocumentViewBase +{ +public: + //===== internal ======================================================== + + AccessibleDrawDocumentView (::sd::Window* pSdWindow, + ::sd::ViewShell* pViewShell, + const ::com::sun::star::uno::Reference< + ::com::sun::star::frame::XController>& rxController, + const ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessible>& rxParent); + + virtual ~AccessibleDrawDocumentView (void); + + /** Complete the initialization begun in the constructor. + */ + virtual void Init (void); + + + //===== IAccessibleViewForwarderListener ================================ + + virtual void ViewForwarderChanged (ChangeType aChangeType, + const IAccessibleViewForwarder* pViewForwarder); + + //===== XAccessibleContext ============================================== + + virtual sal_Int32 SAL_CALL + getAccessibleChildCount (void) + throw (::com::sun::star::uno::RuntimeException); + + virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible> SAL_CALL + getAccessibleChild (sal_Int32 nIndex) + throw (::com::sun::star::uno::RuntimeException, + ::com::sun::star::lang::IndexOutOfBoundsException); + + + //===== lang::XEventListener ============================================ + + virtual void SAL_CALL + disposing (const ::com::sun::star::lang::EventObject& rEventObject) + throw (::com::sun::star::uno::RuntimeException); + + + //===== XPropertyChangeListener ========================================= + + virtual void SAL_CALL + propertyChange (const ::com::sun::star::beans::PropertyChangeEvent& rEventObject) + throw (::com::sun::star::uno::RuntimeException); + +protected: + + //===== XServiceInfo ==================================================== + + virtual ::rtl::OUString SAL_CALL + getImplementationName (void) + throw (::com::sun::star::uno::RuntimeException); + + virtual ::com::sun::star::uno::Sequence< ::rtl::OUString> SAL_CALL + getSupportedServiceNames (void) + throw (::com::sun::star::uno::RuntimeException); + + + virtual sal_Bool + implIsSelected( sal_Int32 nAccessibleChildIndex ) + throw (::com::sun::star::uno::RuntimeException); + + /** Select or deselect the specified child or all children if the given + index has the special value ACCESSIBLE_SELECTION_CHILD_ALL. + Selecting or deselecting a child sets or resets the + <const>SELECTED</const> state and selects or deslects the UNO shape + beeing made accessible by the child. + @param nAccessibleChildIndex + Index of the child to select or deselect. If the parameter has + the value ACCESSIBLE_SELECTION_CHILD_ALL then all children are + selected or deslected. + @param bSelect + Indicates whether to select or deselect the specified child + reps. children. + */ + virtual void + implSelect( sal_Int32 nAccessibleChildIndex, sal_Bool bSelect ) + throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException); + +protected: + /** This object manages the shapes of the represented draw page. It is + responsible to determine the visible shapes and create on demand the + accessible objects representing them. + */ + ChildrenManager* mpChildrenManager; + + // This method is called from the component helper base class while + // disposing. + virtual void SAL_CALL disposing (void); + + /** Create a shape the represents the page as seen on the screen. + */ + AccessiblePageShape* CreateDrawPageShape (void); + + /// Create an accessible name that contains the current view mode. + virtual ::rtl::OUString + CreateAccessibleName () + throw (::com::sun::star::uno::RuntimeException); + + /** Create an accessible description that contains the current + view mode. + */ + virtual ::rtl::OUString + CreateAccessibleDescription () + throw (::com::sun::star::uno::RuntimeException); + + /** Make sure that the currently focused shape sends a FOCUSED state + change event indicating that it has (regained) the focus. + */ + virtual void Activated (void); + + /** Make sure that the currently focused shape sends a FOCUSED state + change event indicating that it has lost the focus. + */ + virtual void Deactivated (void); + + virtual void impl_dispose (void); + +private: + void UpdateAccessibleName (void); +}; + +} // end of namespace accessibility + +#endif diff --git a/sd/source/ui/inc/AccessibleOutlineEditSource.hxx b/sd/source/ui/inc/AccessibleOutlineEditSource.hxx new file mode 100755 index 000000000000..f40d735c5e64 --- /dev/null +++ b/sd/source/ui/inc/AccessibleOutlineEditSource.hxx @@ -0,0 +1,104 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_ACCESSIBILITY_ACCESSIBLE_OUTLINE_EDITSOURCE_HXX +#define SD_ACCESSIBILITY_ACCESSIBLE_OUTLINE_EDITSOURCE_HXX + +#include <memory> +#include <vcl/svapp.hxx> +#include <svl/brdcst.hxx> +#include <svl/lstner.hxx> +#include <editeng/unoedsrc.hxx> +#include <editeng/editdata.hxx> +#include <editeng/unoforou.hxx> +#include <editeng/unoviwou.hxx> + +class OutlinerView; +class SdrOutliner; +class SdrView; +class Window; + +namespace accessibility +{ + /** Implementation of the SvxEditSource interface in the SdOutlineView + + This class connects the SdOutlineView and its EditEngine + outliner with the AccessibleTextHelper, which provides all + necessary functionality to make the outliner text accessible + + @see SvxEditSource + @see SvxViewForwarder + */ + class AccessibleOutlineEditSource : public SvxEditSource, public SvxViewForwarder, public SfxBroadcaster, public SfxListener + { + public: + /// Create an SvxEditSource interface for the given Outliner + AccessibleOutlineEditSource( + SdrOutliner& rOutliner, + SdrView& rView, + OutlinerView& rOutlView, + const ::Window& rViewWindow ); + virtual ~AccessibleOutlineEditSource(); + + /// This method is disabled and always returns NULL + virtual SvxEditSource* Clone() const; + virtual SvxTextForwarder* GetTextForwarder(); + virtual SvxViewForwarder* GetViewForwarder(); + virtual SvxEditViewForwarder* GetEditViewForwarder( sal_Bool bCreate = sal_False ); + virtual void UpdateData(); + virtual SfxBroadcaster& GetBroadcaster() const; + + // the view forwarder + virtual sal_Bool IsValid() const; + virtual Rectangle GetVisArea() const; + virtual Point LogicToPixel( const Point& rPoint, const MapMode& rMapMode ) const; + virtual Point PixelToLogic( const Point& rPoint, const MapMode& rMapMode ) const; + + // SfxListener + virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); + + private: + + // declared, but not defined + AccessibleOutlineEditSource( const AccessibleOutlineEditSource& ); + AccessibleOutlineEditSource& operator=( const AccessibleOutlineEditSource& ); + + DECL_LINK( NotifyHdl, EENotify* ); + + SdrView& mrView; + const ::Window& mrWindow; + SdrOutliner* mpOutliner; + OutlinerView* mpOutlinerView; + + SvxOutlinerForwarder mTextForwarder; + SvxDrawOutlinerViewForwarder mViewForwarder; + + }; + +} // end of namespace accessibility + +#endif diff --git a/sd/source/ui/inc/AccessibleOutlineView.hxx b/sd/source/ui/inc/AccessibleOutlineView.hxx new file mode 100644 index 000000000000..44e705f6dce5 --- /dev/null +++ b/sd/source/ui/inc/AccessibleOutlineView.hxx @@ -0,0 +1,161 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_ACCESSIBILITY_ACCESSIBLE_OUTLINE_VIEW_HXX +#define SD_ACCESSIBILITY_ACCESSIBLE_OUTLINE_VIEW_HXX + +#include "AccessibleDocumentViewBase.hxx" +#include <svx/AccessibleTextHelper.hxx> + +namespace sd { +class OutlineViewShell; +class Window; +} + +namespace accessibility { + + +/** This class makes the Impress outline view accessible. + + Please see the documentation of the base class for further + explanations of the individual methods. This class is a mere + wrapper around the AccessibleTextHelper class; as basically the + Outline View is a big Outliner. +*/ +class AccessibleOutlineView + : public AccessibleDocumentViewBase +{ +public: + AccessibleOutlineView ( + ::sd::Window* pSdWindow, + ::sd::OutlineViewShell* pViewShell, + const ::com::sun::star::uno::Reference< + ::com::sun::star::frame::XController>& rxController, + const ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessible>& rxParent); + + virtual ~AccessibleOutlineView (void); + + /** Complete the initialization begun in the constructor. + */ + virtual void Init (void); + + + //===== IAccessibleViewForwarderListener ================================ + + virtual void ViewForwarderChanged (ChangeType aChangeType, + const IAccessibleViewForwarder* pViewForwarder); + + //===== XAccessibleContext ============================================== + + virtual sal_Int32 SAL_CALL + getAccessibleChildCount (void) + throw (::com::sun::star::uno::RuntimeException); + + virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible> SAL_CALL + getAccessibleChild (sal_Int32 nIndex) + throw (::com::sun::star::uno::RuntimeException); + + //===== XAccessibleEventBroadcaster ======================================== + + virtual void SAL_CALL + addEventListener ( + const ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessibleEventListener >& xListener) + throw (::com::sun::star::uno::RuntimeException); + + virtual void SAL_CALL + removeEventListener ( + const ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessibleEventListener >& xListener) + throw (::com::sun::star::uno::RuntimeException); + + using cppu::WeakComponentImplHelperBase::addEventListener; + using cppu::WeakComponentImplHelperBase::removeEventListener; + + //===== XServiceInfo ==================================================== + + /** Returns an identifier for the implementation of this object. + */ + virtual ::rtl::OUString SAL_CALL + getImplementationName (void) + throw (::com::sun::star::uno::RuntimeException); + + //===== lang::XEventListener ============================================ + + virtual void SAL_CALL + disposing (const ::com::sun::star::lang::EventObject& rEventObject) + throw (::com::sun::star::uno::RuntimeException); + + //===== XPropertyChangeListener ========================================= + + virtual void SAL_CALL + propertyChange (const ::com::sun::star::beans::PropertyChangeEvent& rEventObject) + throw (::com::sun::star::uno::RuntimeException); + + +protected: + + // overridden, as we hold the listeners ourselves + virtual void FireEvent (const ::com::sun::star::accessibility::AccessibleEventObject& aEvent); + + // overridden to detect focus changes + virtual void Activated (void); + + // overridden to detect focus changes + virtual void Deactivated (void); + + // declared, but not defined + AccessibleOutlineView( const AccessibleOutlineView& ); + AccessibleOutlineView& operator= ( const AccessibleOutlineView& ); + + // This method is called from the component helper base class while disposing. + virtual void SAL_CALL disposing (void); + + /// Create an accessible name that contains the current view mode. + virtual ::rtl::OUString + CreateAccessibleName () + throw (::com::sun::star::uno::RuntimeException); + + /// Create an accessible description that contains the current + /// view mode. + virtual ::rtl::OUString + CreateAccessibleDescription () + throw (::com::sun::star::uno::RuntimeException); + +private: + + /// Invalidate text helper, updates visible children + void UpdateChildren(); + + AccessibleTextHelper maTextHelper; + +}; + +} // end of namespace accessibility + +#endif diff --git a/sd/source/ui/inc/AccessiblePageShape.hxx b/sd/source/ui/inc/AccessiblePageShape.hxx new file mode 100644 index 000000000000..e92bbfb91f41 --- /dev/null +++ b/sd/source/ui/inc/AccessiblePageShape.hxx @@ -0,0 +1,178 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + + +#ifndef _SD_ACCESSIBILITY_ACCESSIBLE_PAGE_SHAPE_HXX +#define _SD_ACCESSIBILITY_ACCESSIBLE_PAGE_SHAPE_HXX + +#include <svx/AccessibleShape.hxx> +#include <svx/AccessibleShapeTreeInfo.hxx> +#include <svx/IAccessibleViewForwarderListener.hxx> +#include <com/sun/star/accessibility/XAccessible.hpp> +#include <com/sun/star/accessibility/XAccessibleExtendedComponent.hpp> +#include <com/sun/star/accessibility/AccessibleRole.hpp> +#include <com/sun/star/drawing/XDrawPage.hpp> +#include <com/sun/star/lang/XEventListener.hpp> + +#include <svx/AccessibleTextHelper.hxx> + +namespace accessibility { + +/** A page shape represents the actual page as seen on the screen. +*/ +class AccessiblePageShape + : public AccessibleShape +{ +public: + //===== internal ======================================================== + + /** Create a new accessible object that makes the given shape accessible. + @param rxParent + The accessible parent object. It will be used, for example when + the <member>getIndexInParent</member> method is called. + @param rShapeTreeInfo + Bundel of information passed to this shape and all of its desendants. + @param nIndex + Index used to disambiguate between objects that have the same + name. Passing a value of -1 leads to the use of the object's + z-order instead. Because that is not a good substitute, better + pass an ever increasing counter. + @attention + Always call the <member>init</member> method after creating a + new accessible shape. This is one way to overcome the potential + problem of registering the new object with e.g. event + broadcasters. That would delete the new object if a broadcaster + would not keep a strong reference to the new object. + */ + AccessiblePageShape ( + const ::com::sun::star::uno::Reference< + ::com::sun::star::drawing::XDrawPage>& rxPage, + const ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessible>& rxParent, + const AccessibleShapeTreeInfo& rShapeTreeInfo, + long nIndex = -1); + + virtual ~AccessiblePageShape (void); + + /** Initialize a new shape. See the documentation of the constructor + for the reason of this method's existence. + */ + virtual void Init (void); + + //===== XAccessibleContext ============================================== + + /// Returns always 0 because there can be no children. + virtual sal_Int32 SAL_CALL + getAccessibleChildCount (void) + throw (); + + /** Return the specified child. + @param nIndex + Index of the requested child. + @return + Reference of the requested child which is the accessible object + of a visible shape. + @raises IndexOutOfBoundsException + Throws always an exception because there are no children. + */ + virtual ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessible> SAL_CALL + getAccessibleChild (sal_Int32 nIndex) + throw (::com::sun::star::uno::RuntimeException); + + + //===== XAccessibleComponent ============================================ + + virtual ::com::sun::star::awt::Rectangle SAL_CALL getBounds (void) + throw (::com::sun::star::uno::RuntimeException); + + virtual sal_Int32 SAL_CALL getForeground (void) + throw (::com::sun::star::uno::RuntimeException); + + virtual sal_Int32 SAL_CALL getBackground (void) + throw (::com::sun::star::uno::RuntimeException); + + //===== XComponent ====================================================== + + virtual void SAL_CALL + dispose (void) + throw (::com::sun::star::uno::RuntimeException); + + + //===== XServiceInfo ==================================================== + + virtual ::rtl::OUString SAL_CALL + getImplementationName (void) + throw (::com::sun::star::uno::RuntimeException); + + virtual ::com::sun::star::uno::Sequence< ::rtl::OUString> SAL_CALL + getSupportedServiceNames (void) + throw (::com::sun::star::uno::RuntimeException); + + + //===== lang::XEventListener ============================================ + + virtual void SAL_CALL + disposing (const ::com::sun::star::lang::EventObject& Source) + throw (::com::sun::star::uno::RuntimeException); + + + using AccessibleShape::disposing; + +protected: + /** Create a base name string that contains the accessible name. + */ + virtual ::rtl::OUString + CreateAccessibleBaseName (void) + throw (::com::sun::star::uno::RuntimeException); + + virtual ::rtl::OUString + CreateAccessibleName (void) + throw (::com::sun::star::uno::RuntimeException); + + /// Create a description string that contains the accessible description. + virtual ::rtl::OUString + CreateAccessibleDescription (void) + throw (::com::sun::star::uno::RuntimeException); + +private: + ::com::sun::star::uno::Reference< + ::com::sun::star::drawing::XDrawPage> mxPage; + + /** Don't use the default constructor. Use the public constructor that + takes the original shape and the parent as arguments instead. + */ + explicit AccessiblePageShape (void); + /// Don't use the copy constructor. Is there any use for it? + explicit AccessiblePageShape (const AccessiblePageShape&); + /// Don't use the assignment operator. Do we need this? + AccessibleShape& operator= (const AccessiblePageShape&); +}; + +} // end of namespace accessibility + +#endif diff --git a/sd/source/ui/inc/AccessiblePresentationGraphicShape.hxx b/sd/source/ui/inc/AccessiblePresentationGraphicShape.hxx new file mode 100644 index 000000000000..93c8f33444f2 --- /dev/null +++ b/sd/source/ui/inc/AccessiblePresentationGraphicShape.hxx @@ -0,0 +1,71 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + + +#ifndef _SD_ACCESSIBILITY_ACCESSIBLE_PRESENTATION_GRAPHIC_SHAPE_HXX +#define _SD_ACCESSIBILITY_ACCESSIBLE_PRESENTATION_GRAPHIC_SHAPE_HXX + +#include <svx/AccessibleGraphicShape.hxx> + +namespace accessibility { + +/** This class makes Impress shapes accessible. +*/ +class AccessiblePresentationGraphicShape + : public AccessibleGraphicShape +{ +public: + //===== internal ======================================================== + AccessiblePresentationGraphicShape ( + const AccessibleShapeInfo& rShapeInfo, + const AccessibleShapeTreeInfo& rShapeTreeInfo); + virtual ~AccessiblePresentationGraphicShape (void); + + //===== XServiceInfo ==================================================== + + /** Returns an identifier for the implementation of this object. + */ + virtual ::rtl::OUString SAL_CALL + getImplementationName (void) + throw (::com::sun::star::uno::RuntimeException); + + //===== internal ======================================================== + + /// Create a name string that contains the accessible name. + virtual ::rtl::OUString + CreateAccessibleBaseName () + throw (::com::sun::star::uno::RuntimeException); + + /// Create a description string that contains the accessible description. + virtual ::rtl::OUString + CreateAccessibleDescription () + throw (::com::sun::star::uno::RuntimeException); +}; + +} // end of namespace accessibility + +#endif diff --git a/sd/source/ui/inc/AccessiblePresentationOLEShape.hxx b/sd/source/ui/inc/AccessiblePresentationOLEShape.hxx new file mode 100644 index 000000000000..e03ed7ef4374 --- /dev/null +++ b/sd/source/ui/inc/AccessiblePresentationOLEShape.hxx @@ -0,0 +1,71 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + + +#ifndef _SD_ACCESSIBILITY_ACCESSIBLE_PRESENTATION_OLE_SHAPE_HXX +#define _SD_ACCESSIBILITY_ACCESSIBLE_PRESENTATION_OLE_SHAPE_HXX + +#include <svx/AccessibleOLEShape.hxx> + +namespace accessibility { + +/** This class makes Impress shapes accessible. +*/ +class AccessiblePresentationOLEShape + : public AccessibleOLEShape +{ +public: + //===== internal ======================================================== + AccessiblePresentationOLEShape ( + const AccessibleShapeInfo& rShapeInfo, + const AccessibleShapeTreeInfo& rShapeTreeInfo); + virtual ~AccessiblePresentationOLEShape (void); + + //===== XServiceInfo ==================================================== + + /** Returns an identifier for the implementation of this object. + */ + virtual ::rtl::OUString SAL_CALL + getImplementationName (void) + throw (::com::sun::star::uno::RuntimeException); + + //===== internal ======================================================== + + /// Create a name string that contains the accessible name. + virtual ::rtl::OUString + CreateAccessibleBaseName () + throw (::com::sun::star::uno::RuntimeException); + + /// Create a description string that contains the accessible description. + virtual ::rtl::OUString + CreateAccessibleDescription () + throw (::com::sun::star::uno::RuntimeException); +}; + +} // end of namespace accessibility + +#endif diff --git a/sd/source/ui/inc/AccessiblePresentationShape.hxx b/sd/source/ui/inc/AccessiblePresentationShape.hxx new file mode 100644 index 000000000000..7d716e657b1f --- /dev/null +++ b/sd/source/ui/inc/AccessiblePresentationShape.hxx @@ -0,0 +1,82 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SD_ACCESSIBILITY_ACCESSIBLE_PRESENTATION_SHAPE_HXX +#define _SD_ACCESSIBILITY_ACCESSIBLE_PRESENTATION_SHAPE_HXX + +#include <svx/AccessibleShape.hxx> + +namespace accessibility { + +/** This class makes Impress shapes accessible. +*/ +class AccessiblePresentationShape + : public AccessibleShape +{ +public: + //===== internal ======================================================== + AccessiblePresentationShape ( + const AccessibleShapeInfo& rShapeInfo, + const AccessibleShapeTreeInfo& rShapeTreeInfo); + virtual ~AccessiblePresentationShape (void); + + //===== XServiceInfo ==================================================== + + /** Returns an identifier for the implementation of this object. + */ + virtual ::rtl::OUString SAL_CALL + getImplementationName (void) + throw (::com::sun::star::uno::RuntimeException); + + //===== internal ======================================================== + + /// Create a name string that contains the accessible name. + virtual ::rtl::OUString + CreateAccessibleBaseName () + throw (::com::sun::star::uno::RuntimeException); + + /// Create a description string that contains the accessible description. + virtual ::rtl::OUString + CreateAccessibleDescription () + throw (::com::sun::star::uno::RuntimeException); + +private: + /** Don't use the default constructor. Use the public constructor that + takes the original shape and the parent as arguments instead. + */ + AccessiblePresentationShape (void); + + /// Don't use the constructor. Not yet implemented. + AccessiblePresentationShape (const AccessiblePresentationShape&); + + /// Don't use the assignment operator. Not yet implemented. + AccessiblePresentationShape& operator= (const AccessiblePresentationShape&); +}; + +} // end of namespace accessibility + +#endif diff --git a/sd/source/ui/inc/AccessibleScrollPanel.hxx b/sd/source/ui/inc/AccessibleScrollPanel.hxx new file mode 100644 index 000000000000..ff77be75885a --- /dev/null +++ b/sd/source/ui/inc/AccessibleScrollPanel.hxx @@ -0,0 +1,80 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_ACCESSIBILITY_ACCESSIBLE_SCROLL_PANEL_HXX +#define SD_ACCESSIBILITY_ACCESSIBLE_SCROLL_PANEL_HXX + +#include "AccessibleTreeNode.hxx" + +namespace sd { namespace toolpanel { +class ScrollPanel; +} } + + +namespace accessibility { + +/** This derived class handles the accessible children different from its + base class. It adds the scroll bars as children when they are visible. +*/ +class AccessibleScrollPanel + : public AccessibleTreeNode +{ +public: + AccessibleScrollPanel ( + ::sd::toolpanel::ScrollPanel& rScrollPanel, + const ::rtl::OUString& rsName, + const ::rtl::OUString& rsDescription); + ~AccessibleScrollPanel (void); + + //===== XAccessibleContext ============================================== + + /// Return the number of currently visible children. + virtual sal_Int32 SAL_CALL + getAccessibleChildCount (void) throw (::com::sun::star::uno::RuntimeException); + + /// Return the specified child or throw exception. + virtual ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessible> SAL_CALL + getAccessibleChild (sal_Int32 nIndex) + throw (::com::sun::star::lang::IndexOutOfBoundsException, + ::com::sun::star::uno::RuntimeException); + + //===== XServiceInfo ==================================================== + + /** Returns an identifier for the implementation of this object. + */ + virtual ::rtl::OUString SAL_CALL + getImplementationName (void) + throw (::com::sun::star::uno::RuntimeException); + +private: + ::sd::toolpanel::ScrollPanel& GetScrollPanel (void) const; +}; + +} // end of namespace accessibility + +#endif diff --git a/sd/source/ui/inc/AccessibleSlideSorterObject.hxx b/sd/source/ui/inc/AccessibleSlideSorterObject.hxx new file mode 100644 index 000000000000..7049aff02094 --- /dev/null +++ b/sd/source/ui/inc/AccessibleSlideSorterObject.hxx @@ -0,0 +1,249 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_ACCESSIBILITY_ACCESSIBLE_SLIDE_SORTER_OBJECT_HXX +#define SD_ACCESSIBILITY_ACCESSIBLE_SLIDE_SORTER_OBJECT_HXX + +#include "MutexOwner.hxx" +#include <cppuhelper/compbase5.hxx> +#include <com/sun/star/accessibility/XAccessible.hpp> +#include <com/sun/star/accessibility/XAccessibleContext.hpp> +#include <com/sun/star/accessibility/XAccessibleComponent.hpp> +#include <com/sun/star/accessibility/XAccessibleSelection.hpp> +#include <com/sun/star/accessibility/XAccessibleEventBroadcaster.hpp> +#include <com/sun/star/awt/XFocusListener.hpp> +#include <com/sun/star/lang/XServiceInfo.hpp> +#include <com/sun/star/lang/DisposedException.hpp> + +class SdPage; + +namespace sd { namespace slidesorter { +class SlideSorter; +} } + +namespace accessibility { + + +typedef ::cppu::WeakComponentImplHelper5< + ::com::sun::star::accessibility::XAccessible, + ::com::sun::star::accessibility::XAccessibleEventBroadcaster, + ::com::sun::star::accessibility::XAccessibleContext, + ::com::sun::star::accessibility::XAccessibleComponent, + ::com::sun::star::lang::XServiceInfo > AccessibleSlideSorterObjectBase; + + +/** This class makes page objects of the slide sorter accessible. +*/ +class AccessibleSlideSorterObject + : public ::sd::MutexOwner, + public AccessibleSlideSorterObjectBase +{ +public: + /** Create a new object that represents a page object in the slide + sorter. + @param rxParent + The accessible parent. + @param rSlideSorter + The slide sorter whose model manages the page. + @param nPageNumber + The number of the page in the range [0,nPageCount). + */ + AccessibleSlideSorterObject( + const ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessible >& rxParent, + ::sd::slidesorter::SlideSorter& rSlideSorter, + sal_uInt16 nPageNumber); + ~AccessibleSlideSorterObject (void); + + /** Return the page that is made accessible by the called object. + */ + SdPage* GetPage (void) const; + + /** The page number as given to the constructor. + */ + sal_uInt16 GetPageNumber (void) const; + + void FireAccessibleEvent ( + short nEventId, + const ::com::sun::star::uno::Any& rOldValue, + const ::com::sun::star::uno::Any& rNewValue); + + virtual void SAL_CALL disposing (void); + + + + //===== XAccessible ======================================================= + + virtual ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL + getAccessibleContext (void) + throw (::com::sun::star::uno::RuntimeException); + + + //===== XAccessibleEventBroadcaster ======================================= + virtual void SAL_CALL + addEventListener( + const ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessibleEventListener >& rxListener) + throw (::com::sun::star::uno::RuntimeException); + + virtual void SAL_CALL + removeEventListener( + const ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessibleEventListener >& rxListener ) + throw (::com::sun::star::uno::RuntimeException); + + using cppu::WeakComponentImplHelperBase::addEventListener; + using cppu::WeakComponentImplHelperBase::removeEventListener; + + //===== XAccessibleContext ============================================== + + virtual sal_Int32 SAL_CALL + getAccessibleChildCount (void) throw (::com::sun::star::uno::RuntimeException); + + virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible> SAL_CALL + getAccessibleChild (sal_Int32 nIndex) + throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException); + + virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible> SAL_CALL + getAccessibleParent (void) + throw (::com::sun::star::uno::RuntimeException); + + virtual sal_Int32 SAL_CALL + getAccessibleIndexInParent (void) + throw (::com::sun::star::uno::RuntimeException); + + virtual sal_Int16 SAL_CALL + getAccessibleRole (void) + throw (::com::sun::star::uno::RuntimeException); + + virtual ::rtl::OUString SAL_CALL + getAccessibleDescription (void) + throw (::com::sun::star::uno::RuntimeException); + + virtual ::rtl::OUString SAL_CALL + getAccessibleName (void) + throw (::com::sun::star::uno::RuntimeException); + + virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleRelationSet> SAL_CALL + getAccessibleRelationSet (void) + throw (::com::sun::star::uno::RuntimeException); + + virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleStateSet> SAL_CALL + getAccessibleStateSet (void) + throw (::com::sun::star::uno::RuntimeException); + + virtual ::com::sun::star::lang::Locale SAL_CALL + getLocale (void) + throw (::com::sun::star::uno::RuntimeException, + ::com::sun::star::accessibility::IllegalAccessibleComponentStateException); + + + //===== XAccessibleComponent ================================================ + + virtual sal_Bool SAL_CALL containsPoint ( + const ::com::sun::star::awt::Point& aPoint) + throw (::com::sun::star::uno::RuntimeException); + + virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL + getAccessibleAtPoint ( + const ::com::sun::star::awt::Point& aPoint) + throw (::com::sun::star::uno::RuntimeException); + + virtual ::com::sun::star::awt::Rectangle SAL_CALL getBounds (void) + throw (::com::sun::star::uno::RuntimeException); + + virtual ::com::sun::star::awt::Point SAL_CALL getLocation (void) + throw (::com::sun::star::uno::RuntimeException); + + virtual ::com::sun::star::awt::Point SAL_CALL getLocationOnScreen (void) + throw (::com::sun::star::uno::RuntimeException); + + virtual ::com::sun::star::awt::Size SAL_CALL getSize (void) + throw (::com::sun::star::uno::RuntimeException); + + virtual void SAL_CALL grabFocus (void) + throw (::com::sun::star::uno::RuntimeException); + + virtual sal_Int32 SAL_CALL getForeground (void) + throw (::com::sun::star::uno::RuntimeException); + + virtual sal_Int32 SAL_CALL getBackground (void) + throw (::com::sun::star::uno::RuntimeException); + + + + //===== XServiceInfo ==================================================== + + /** Returns an identifier for the implementation of this object. + */ + virtual ::rtl::OUString SAL_CALL + getImplementationName (void) + throw (::com::sun::star::uno::RuntimeException); + + /** Return whether the specified service is supported by this class. + */ + virtual sal_Bool SAL_CALL + supportsService (const ::rtl::OUString& sServiceName) + throw (::com::sun::star::uno::RuntimeException); + + /** Returns a list of all supported services. + */ + virtual ::com::sun::star::uno::Sequence< ::rtl::OUString> SAL_CALL + getSupportedServiceNames (void) + throw (::com::sun::star::uno::RuntimeException); + + +private: + ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessible> mxParent; + sal_uInt16 mnPageNumber; + ::sd::slidesorter::SlideSorter& mrSlideSorter; + sal_uInt32 mnClientId; + + /** Check whether or not the object has been disposed (or is in the + state of beeing disposed). If that is the case then + DisposedException is thrown to inform the (indirect) caller of the + foul deed. + */ + void ThrowIfDisposed (void) + throw (::com::sun::star::lang::DisposedException); + + /** Check whether or not the object has been disposed (or is in the + state of beeing disposed). + + @return sal_True, if the object is disposed or in the course + of being disposed. Otherwise, sal_False is returned. + */ + sal_Bool IsDisposed (void); +}; + + + +} // end of namespace ::accessibility + +#endif diff --git a/sd/source/ui/inc/AccessibleSlideSorterView.hxx b/sd/source/ui/inc/AccessibleSlideSorterView.hxx new file mode 100644 index 000000000000..16804e79cb8f --- /dev/null +++ b/sd/source/ui/inc/AccessibleSlideSorterView.hxx @@ -0,0 +1,326 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_ACCESSIBILITY_ACCESSIBLE_SLIDE_SORTER_VIEW_HXX +#define SD_ACCESSIBILITY_ACCESSIBLE_SLIDE_SORTER_VIEW_HXX + +#include "MutexOwner.hxx" +#include <cppuhelper/compbase6.hxx> +#include <com/sun/star/accessibility/XAccessible.hpp> +#include <com/sun/star/accessibility/XAccessibleContext.hpp> +#include <com/sun/star/accessibility/XAccessibleComponent.hpp> +#include <com/sun/star/accessibility/XAccessibleSelection.hpp> +#include <com/sun/star/accessibility/XAccessibleEventBroadcaster.hpp> +#include <com/sun/star/lang/XServiceInfo.hpp> +#include <com/sun/star/lang/DisposedException.hpp> +#include <com/sun/star/awt/XFocusListener.hpp> +#include <com/sun/star/document/XEventListener.hpp> + + +#include <memory> + +class Window; + +namespace sd { namespace slidesorter { +class SlideSorter; +} } + +namespace accessibility { + + +class AccessibleSlideSorterObject; + +typedef ::cppu::WeakComponentImplHelper6< + ::com::sun::star::accessibility::XAccessible, + ::com::sun::star::accessibility::XAccessibleEventBroadcaster, + ::com::sun::star::accessibility::XAccessibleContext, + ::com::sun::star::accessibility::XAccessibleComponent, + ::com::sun::star::accessibility::XAccessibleSelection, + ::com::sun::star::lang::XServiceInfo + > AccessibleSlideSorterViewBase; + +/** This class makes the SlideSorterViewShell accessible. It uses objects + of the AccessibleSlideSorterObject class to the make the page objects + accessible. +*/ +class AccessibleSlideSorterView + : public ::sd::MutexOwner, + public AccessibleSlideSorterViewBase +{ +public: + AccessibleSlideSorterView( + ::sd::slidesorter::SlideSorter& rSlideSorter, + const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible> & rxParent, + ::Window* pParentWindow); + + virtual ~AccessibleSlideSorterView (void); + + /** This method acts like a dispose call. It sends a disposing to all + of its listeners. It may be called twice. + */ + void Destroyed (void); + + void FireAccessibleEvent ( + short nEventId, + const ::com::sun::star::uno::Any& rOldValue, + const ::com::sun::star::uno::Any& rNewValue); + + virtual void SAL_CALL disposing (void); + + /** Return the implementation object of the specified child. + @param nIndex + Index of the child for which to return the implementation object. + */ + AccessibleSlideSorterObject* GetAccessibleChildImplementation (sal_Int32 nIndex); + + //===== XAccessible ======================================================= + + virtual ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL + getAccessibleContext (void) + throw (::com::sun::star::uno::RuntimeException); + + + //===== XAccessibleEventBroadcaster ======================================= + virtual void SAL_CALL + addEventListener( + const ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessibleEventListener >& rxListener) + throw (::com::sun::star::uno::RuntimeException); + + virtual void SAL_CALL + removeEventListener( + const ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessibleEventListener >& rxListener ) + throw (::com::sun::star::uno::RuntimeException); + + using cppu::WeakComponentImplHelperBase::addEventListener; + using cppu::WeakComponentImplHelperBase::removeEventListener; + + //===== XAccessibleContext ============================================== + + /// Return the number of currently visible children. + virtual sal_Int32 SAL_CALL + getAccessibleChildCount (void) throw (::com::sun::star::uno::RuntimeException); + + /// Return the specified child or throw exception. + virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible> SAL_CALL + getAccessibleChild (sal_Int32 nIndex) + throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException); + + /// Return a reference to the parent. + virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible> SAL_CALL + getAccessibleParent (void) + throw (::com::sun::star::uno::RuntimeException); + + /// Return this objects index among the parents children. + virtual sal_Int32 SAL_CALL + getAccessibleIndexInParent (void) + throw (::com::sun::star::uno::RuntimeException); + + /// Return this object's role. + virtual sal_Int16 SAL_CALL + getAccessibleRole (void) + throw (::com::sun::star::uno::RuntimeException); + + /// Return this object's description. + virtual ::rtl::OUString SAL_CALL + getAccessibleDescription (void) + throw (::com::sun::star::uno::RuntimeException); + + /// Return the object's current name. + virtual ::rtl::OUString SAL_CALL + getAccessibleName (void) + throw (::com::sun::star::uno::RuntimeException); + + /// Return NULL to indicate that an empty relation set. + virtual ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessibleRelationSet> SAL_CALL + getAccessibleRelationSet (void) + throw (::com::sun::star::uno::RuntimeException); + + /// Return the set of current states. + virtual ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessibleStateSet> SAL_CALL + getAccessibleStateSet (void) + throw (::com::sun::star::uno::RuntimeException); + + /** Return the parents locale or throw exception if this object has no + parent yet/anymore. + */ + virtual ::com::sun::star::lang::Locale SAL_CALL + getLocale (void) + throw (::com::sun::star::uno::RuntimeException, + ::com::sun::star::accessibility::IllegalAccessibleComponentStateException); + + //===== XAccessibleComponent ================================================ + + /** The default implementation uses the result of + <member>getBounds</member> to determine whether the given point lies + inside this object. + */ + virtual sal_Bool SAL_CALL containsPoint ( + const ::com::sun::star::awt::Point& aPoint) + throw (::com::sun::star::uno::RuntimeException); + + /** The default implementation returns an empty reference. + */ + virtual ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessible > SAL_CALL + getAccessibleAtPoint ( + const ::com::sun::star::awt::Point& aPoint) + throw (::com::sun::star::uno::RuntimeException); + + /** The default implementation returns an empty rectangle. + */ + virtual ::com::sun::star::awt::Rectangle SAL_CALL getBounds (void) + throw (::com::sun::star::uno::RuntimeException); + + /** The default implementation uses the result of + <member>getBounds</member> to determine the location. + */ + virtual ::com::sun::star::awt::Point SAL_CALL getLocation (void) + throw (::com::sun::star::uno::RuntimeException); + + /** The default implementation returns an empty position, i.e. the + * result of the default constructor of <type>com::sun::star::awt::Point</type>. + */ + virtual ::com::sun::star::awt::Point SAL_CALL getLocationOnScreen (void) + throw (::com::sun::star::uno::RuntimeException); + + /** The default implementation uses the result of + <member>getBounds</member> to determine the size. + */ + virtual ::com::sun::star::awt::Size SAL_CALL getSize (void) + throw (::com::sun::star::uno::RuntimeException); + + /** The default implementation does nothing. + */ + virtual void SAL_CALL grabFocus (void) + throw (::com::sun::star::uno::RuntimeException); + + /** Returns black as the default foreground color. + */ + virtual sal_Int32 SAL_CALL getForeground (void) + throw (::com::sun::star::uno::RuntimeException); + + /** Returns white as the default background color. + */ + virtual sal_Int32 SAL_CALL getBackground (void) + throw (::com::sun::star::uno::RuntimeException); + + + //===== XAccessibleSelection ============================================== + + virtual void SAL_CALL + selectAccessibleChild (sal_Int32 nChildIndex) + throw (::com::sun::star::lang::IndexOutOfBoundsException, + ::com::sun::star::uno::RuntimeException); + + virtual sal_Bool SAL_CALL + isAccessibleChildSelected( sal_Int32 nChildIndex ) + throw (::com::sun::star::lang::IndexOutOfBoundsException, + ::com::sun::star::uno::RuntimeException); + + virtual void SAL_CALL + clearAccessibleSelection( ) + throw (::com::sun::star::uno::RuntimeException); + + virtual void SAL_CALL + selectAllAccessibleChildren( ) + throw (::com::sun::star::uno::RuntimeException); + + virtual sal_Int32 SAL_CALL + getSelectedAccessibleChildCount( ) + throw (::com::sun::star::uno::RuntimeException); + + virtual ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessible > SAL_CALL + getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) + throw (::com::sun::star::lang::IndexOutOfBoundsException, + ::com::sun::star::uno::RuntimeException); + + virtual void SAL_CALL + deselectAccessibleChild( sal_Int32 nSelectedChildIndex ) + throw (::com::sun::star::lang::IndexOutOfBoundsException, + ::com::sun::star::uno::RuntimeException); + + + //===== XServiceInfo ==================================================== + + /** Returns an identifier for the implementation of this object. + */ + virtual ::rtl::OUString SAL_CALL + getImplementationName (void) + throw (::com::sun::star::uno::RuntimeException); + + /** Return whether the specified service is supported by this class. + */ + virtual sal_Bool SAL_CALL + supportsService (const ::rtl::OUString& sServiceName) + throw (::com::sun::star::uno::RuntimeException); + + /** Returns a list of all supported services. + */ + virtual ::com::sun::star::uno::Sequence< ::rtl::OUString> SAL_CALL + getSupportedServiceNames (void) + throw (::com::sun::star::uno::RuntimeException); + + +private: + class Implementation; + ::std::auto_ptr<Implementation> mpImpl; + + ::sd::slidesorter::SlideSorter& mrSlideSorter; + + ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessible> mxParent; + + sal_uInt32 mnClientId; + + ::Window* mpContentWindow; + + /** Check whether or not the object has been disposed (or is in the + state of beeing disposed). If that is the case then + DisposedException is thrown to inform the (indirect) caller of the + foul deed. + */ + void ThrowIfDisposed (void) + throw (::com::sun::star::lang::DisposedException); + + /** Check whether or not the object has been disposed (or is in the + state of beeing disposed). + + @return sal_True, if the object is disposed or in the course + of being disposed. Otherwise, sal_False is returned. + */ + sal_Bool IsDisposed (void); +}; + +} // end of namespace ::accessibility + +#endif diff --git a/sd/source/ui/inc/AccessibleSlideView.hxx b/sd/source/ui/inc/AccessibleSlideView.hxx new file mode 100755 index 000000000000..3ac193b05d20 --- /dev/null +++ b/sd/source/ui/inc/AccessibleSlideView.hxx @@ -0,0 +1,280 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_ACCESSIBILITY_ACCESSIBLE_SLIDE_VIEW_HXX +#define SD_ACCESSIBILITY_ACCESSIBLE_SLIDE_VIEW_HXX + +#include <cppuhelper/implbase6.hxx> +#include <cppuhelper/implbase7.hxx> +#include "SlideView.hxx" +#include <com/sun/star/lang/XUnoTunnel.hpp> +#include <com/sun/star/accessibility/XAccessible.hpp> +#include <com/sun/star/accessibility/XAccessibleContext.hpp> +#include <com/sun/star/accessibility/XAccessibleComponent.hpp> +#include <com/sun/star/accessibility/XAccessibleSelection.hpp> +#include <com/sun/star/accessibility/XAccessibleEventBroadcaster.hpp> +#include <com/sun/star/lang/XServiceInfo.hpp> + +#include <vector> + +class SdDrawDocument; +class AccessibleSlideView; + +namespace sd { +class SlideView; +class Window; +} + +// ----------------------------- +// - AccessibleSlideViewObject - +// ----------------------------- + +class AccessibleSlideViewObject : public ::cppu::WeakImplHelper6< + ::com::sun::star::lang::XUnoTunnel, + ::com::sun::star::accessibility::XAccessible, + ::com::sun::star::accessibility::XAccessibleEventBroadcaster, + ::com::sun::star::accessibility::XAccessibleContext, + ::com::sun::star::accessibility::XAccessibleComponent, + ::com::sun::star::lang::XServiceInfo > +{ +private: + + ::osl::Mutex maMutex; + ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > mxParent; + AccessibleSlideView* mpManager; + /// client id in the AccessibleEventNotifier queue + sal_uInt32 mnClientId; + sal_uInt16 mnPage; + sal_Bool mbVisible; + sal_Bool mbValid; + +private: + + // Misc + static const ::com::sun::star::uno::Sequence< sal_Int8 >& getUnoTunnelId(); + + // XUnoTunnel + virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& rId ) throw( ::com::sun::star::uno::RuntimeException ); + + // XAccessible + virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) throw (::com::sun::star::uno::RuntimeException); + + // XAccessibleEventBroadcaster + virtual void SAL_CALL addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); + + // XAccessibleContext + virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) throw (::com::sun::star::uno::RuntimeException); + virtual sal_Int32 SAL_CALL getAccessibleIndexInParent( ) throw (::com::sun::star::uno::RuntimeException); + virtual sal_Int16 SAL_CALL getAccessibleRole( ) throw (::com::sun::star::uno::RuntimeException); + virtual ::rtl::OUString SAL_CALL getAccessibleDescription( ) throw (::com::sun::star::uno::RuntimeException); + virtual ::rtl::OUString SAL_CALL getAccessibleName( ) throw (::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) throw (::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet( ) throw (::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::lang::Locale SAL_CALL getLocale( ) throw (::com::sun::star::accessibility::IllegalAccessibleComponentStateException, ::com::sun::star::uno::RuntimeException); + + // XAccessibleComponent + virtual sal_Bool SAL_CALL containsPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::awt::Rectangle SAL_CALL getBounds( ) throw (::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::awt::Point SAL_CALL getLocation( ) throw (::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::awt::Point SAL_CALL getLocationOnScreen( ) throw (::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::awt::Size SAL_CALL getSize( ) throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL grabFocus( ) throw (::com::sun::star::uno::RuntimeException); + + virtual sal_Int32 SAL_CALL getForeground (void) + throw (::com::sun::star::uno::RuntimeException); + + virtual sal_Int32 SAL_CALL getBackground (void) + throw (::com::sun::star::uno::RuntimeException); + + //===== XServiceInfo ==================================================== + + /** Returns an identifier for the implementation of this object. + */ + virtual ::rtl::OUString SAL_CALL + getImplementationName (void) + throw (::com::sun::star::uno::RuntimeException); + + /** Return whether the specified service is supported by this class. + */ + virtual sal_Bool SAL_CALL + supportsService (const ::rtl::OUString& sServiceName) + throw (::com::sun::star::uno::RuntimeException); + + /** Returns a list of all supported services. + */ + virtual ::com::sun::star::uno::Sequence< ::rtl::OUString> SAL_CALL + getSupportedServiceNames (void) + throw (::com::sun::star::uno::RuntimeException); + +public: + + static AccessibleSlideViewObject* getImplementation( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& rxData ) throw(); + +public: + + AccessibleSlideViewObject( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& rxParent, sal_uInt16 nPage, sal_Bool bVisible ); + ~AccessibleSlideViewObject(); + + void FireAccessibleEvent( short nEventId, const ::com::sun::star::uno::Any& rOldValue, const ::com::sun::star::uno::Any& rNewValue ); + + /** This method acts like a dispose call. It sends a disposing to all + of its listeners. It may be called twice. + */ + void Destroyed (void); + + sal_uInt16 GetPageNum() const { return mnPage; } + + void SetVisible( sal_Bool bVisible ); + sal_Bool IsVisible() const; +}; + +// ----------------------- +// - AccessibleSlideView - +// ----------------------- + +class AccessibleSlideView : public ::cppu::WeakImplHelper7< + ::com::sun::star::lang::XUnoTunnel, + ::com::sun::star::accessibility::XAccessible, + ::com::sun::star::accessibility::XAccessibleEventBroadcaster, + ::com::sun::star::accessibility::XAccessibleContext, + ::com::sun::star::accessibility::XAccessibleComponent, + ::com::sun::star::accessibility::XAccessibleSelection, + ::com::sun::star::lang::XServiceInfo > +{ +public: + + static AccessibleSlideView* getImplementation( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& rxData ) throw(); + + AccessibleSlideView( + SdDrawDocument& rDoc, + ::sd::SlideView& rView, + ::sd::Window& rParentWindow); + virtual ~AccessibleSlideView (void); + + void FireAccessibleEvent( short nEventId, const ::com::sun::star::uno::Any& rOldValue, const ::com::sun::star::uno::Any& rNewValue ); + + /** This method acts like a dispose call. It sends a disposing to all + of its listeners. It may be called twice. + */ + void Destroyed (void); + + SdDrawDocument* GetDrawDocument() const { return mpDoc; } + ::sd::SlideView* GetSlideView() const { return mpView; } + ::sd::Window* GetParentWindow() const { return mpParentWindow; } + + void SetPageVisible( sal_uInt16 nPage, sal_Bool bVisible ); + void Reset(); + void FocusHasChanged( sal_uInt16 nOldFocusPage, sal_uInt16 nNewFocusPage ); + + +private: + ::osl::Mutex maMutex; + ::std::vector< ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > > maSlidePageObjects; + SdDrawDocument* mpDoc; + ::sd::SlideView* mpView; + ::sd::Window* mpParentWindow; + /// client id in the AccessibleEventNotifier queue + sal_uInt32 mnClientId; + + // internal + static const ::com::sun::star::uno::Sequence< sal_Int8 >& getUnoTunnelId(); + sal_Int32 ImplGetVisibleChildCount() const; + ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > ImplGetVisibleChild( sal_Int32 nVisibleChild ) const; + + // XUnoTunnel + virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& rId ) throw( ::com::sun::star::uno::RuntimeException ); + + // XAccessible + virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) throw (::com::sun::star::uno::RuntimeException); + + // XAccessibleEventBroadcaster + virtual void SAL_CALL addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); + + // XAccessibleContext + virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) throw (::com::sun::star::uno::RuntimeException); + virtual sal_Int32 SAL_CALL getAccessibleIndexInParent( ) throw (::com::sun::star::uno::RuntimeException); + virtual sal_Int16 SAL_CALL getAccessibleRole( ) throw (::com::sun::star::uno::RuntimeException); + virtual ::rtl::OUString SAL_CALL getAccessibleDescription( ) throw (::com::sun::star::uno::RuntimeException); + virtual ::rtl::OUString SAL_CALL getAccessibleName( ) throw (::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) throw (::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet( ) throw (::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::lang::Locale SAL_CALL getLocale( ) throw (::com::sun::star::accessibility::IllegalAccessibleComponentStateException, ::com::sun::star::uno::RuntimeException); + + // XAccessibleComponent + virtual sal_Bool SAL_CALL containsPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::awt::Rectangle SAL_CALL getBounds( ) throw (::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::awt::Point SAL_CALL getLocation( ) throw (::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::awt::Point SAL_CALL getLocationOnScreen( ) throw (::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::awt::Size SAL_CALL getSize( ) throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL grabFocus( ) throw (::com::sun::star::uno::RuntimeException); + + virtual sal_Int32 SAL_CALL getForeground (void) + throw (::com::sun::star::uno::RuntimeException); + + virtual sal_Int32 SAL_CALL getBackground (void) + throw (::com::sun::star::uno::RuntimeException); + + // XAccessibleSelection + virtual void SAL_CALL selectAccessibleChild( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException); + virtual sal_Bool SAL_CALL isAccessibleChildSelected( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL clearAccessibleSelection( ) throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL selectAllAccessibleChildren( ) throw (::com::sun::star::uno::RuntimeException); + virtual sal_Int32 SAL_CALL getSelectedAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL deselectAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException); + + //===== XServiceInfo ==================================================== + + /** Returns an identifier for the implementation of this object. + */ + virtual ::rtl::OUString SAL_CALL + getImplementationName (void) + throw (::com::sun::star::uno::RuntimeException); + + /** Return whether the specified service is supported by this class. + */ + virtual sal_Bool SAL_CALL + supportsService (const ::rtl::OUString& sServiceName) + throw (::com::sun::star::uno::RuntimeException); + + /** Returns a list of all supported services. + */ + virtual ::com::sun::star::uno::Sequence< ::rtl::OUString> SAL_CALL + getSupportedServiceNames (void) + throw (::com::sun::star::uno::RuntimeException); + +}; + +#endif diff --git a/sd/source/ui/inc/AccessibleTreeNode.hxx b/sd/source/ui/inc/AccessibleTreeNode.hxx new file mode 100755 index 000000000000..ce9730936659 --- /dev/null +++ b/sd/source/ui/inc/AccessibleTreeNode.hxx @@ -0,0 +1,294 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_ACCESSIBILITY_ACCESSIBLE_BASE_HXX +#define SD_ACCESSIBILITY_ACCESSIBLE_BASE_HXX + +#include "MutexOwner.hxx" +#include <cppuhelper/compbase5.hxx> +#include <com/sun/star/accessibility/XAccessible.hpp> +#include <com/sun/star/accessibility/XAccessibleContext.hpp> +#include <com/sun/star/accessibility/XAccessibleComponent.hpp> +#include <com/sun/star/accessibility/XAccessibleEventBroadcaster.hpp> +#include <com/sun/star/accessibility/AccessibleRole.hpp> +#include <com/sun/star/accessibility/AccessibleStateType.hpp> +#include <com/sun/star/lang/XServiceInfo.hpp> +#include <com/sun/star/lang/DisposedException.hpp> +#include <com/sun/star/awt/XFocusListener.hpp> +#include <com/sun/star/document/XEventListener.hpp> +#include <unotools/accessiblestatesethelper.hxx> +#include <tools/link.hxx> +#include <rtl/ref.hxx> + +class VclWindowEvent; + +namespace sd { namespace toolpanel { +class TreeNode; +class TreeNodeStateChangeEvent; +} } + + +namespace utl { +class AccessibleStateSetHelper; +} + +namespace accessibility { + + +class AccessibleSlideSorterObject; + +typedef ::cppu::WeakComponentImplHelper5< + ::com::sun::star::accessibility::XAccessible, + ::com::sun::star::accessibility::XAccessibleEventBroadcaster, + ::com::sun::star::accessibility::XAccessibleContext, + ::com::sun::star::accessibility::XAccessibleComponent, + ::com::sun::star::lang::XServiceInfo + > AccessibleTreeNodeBase; + +/** This class makes objects based on the sd::toolpanel::TreeNode + accessible. +*/ +class AccessibleTreeNode + : public ::sd::MutexOwner, + public AccessibleTreeNodeBase +{ +public: + /** Create a new object for the given tree node. The accessible parent + is taken from the window returned by GetAccessibleParent() when + called at the window of the node. + @param rNode + The TreeNode to make accessible. + @param rsName + The accessible name that will be returned by getAccessibleName(). + @param rsDescription + The accessible description that will be returned by + getAccessibleDescription(). + @param eRole + The role that will be returned by getAccessibleRole(). + */ + AccessibleTreeNode( + ::sd::toolpanel::TreeNode& rNode, + const ::rtl::OUString& rsName, + const ::rtl::OUString& rsDescription, + sal_Int16 eRole); + + void FireAccessibleEvent ( + short nEventId, + const ::com::sun::star::uno::Any& rOldValue, + const ::com::sun::star::uno::Any& rNewValue); + + virtual void SAL_CALL disposing (void); + + //===== XAccessible ======================================================= + + virtual ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL + getAccessibleContext (void) + throw (::com::sun::star::uno::RuntimeException); + + + //===== XAccessibleEventBroadcaster ======================================= + + virtual void SAL_CALL + addEventListener( + const ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessibleEventListener >& rxListener) + throw (::com::sun::star::uno::RuntimeException); + + virtual void SAL_CALL + removeEventListener( + const ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessibleEventListener >& rxListener ) + throw (::com::sun::star::uno::RuntimeException); + + using cppu::WeakComponentImplHelperBase::addEventListener; + using cppu::WeakComponentImplHelperBase::removeEventListener; + + //===== XAccessibleContext ============================================== + + /// Return the number of currently visible children. + virtual sal_Int32 SAL_CALL + getAccessibleChildCount (void) throw (::com::sun::star::uno::RuntimeException); + + /// Return the specified child or throw exception. + virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible> SAL_CALL + getAccessibleChild (sal_Int32 nIndex) + throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException); + + /// Return a reference to the parent. + virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible> SAL_CALL + getAccessibleParent (void) + throw (::com::sun::star::uno::RuntimeException); + + /// Return this objects index among the parents children. + virtual sal_Int32 SAL_CALL + getAccessibleIndexInParent (void) + throw (::com::sun::star::uno::RuntimeException); + + /// Return this object's role. + virtual sal_Int16 SAL_CALL + getAccessibleRole (void) + throw (::com::sun::star::uno::RuntimeException); + + /// Return this object's description. + virtual ::rtl::OUString SAL_CALL + getAccessibleDescription (void) + throw (::com::sun::star::uno::RuntimeException); + + /// Return the object's current name. + virtual ::rtl::OUString SAL_CALL + getAccessibleName (void) + throw (::com::sun::star::uno::RuntimeException); + + /// Return NULL to indicate that an empty relation set. + virtual ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessibleRelationSet> SAL_CALL + getAccessibleRelationSet (void) + throw (::com::sun::star::uno::RuntimeException); + + /// Return the set of current states. + virtual ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessibleStateSet> SAL_CALL + getAccessibleStateSet (void) + throw (::com::sun::star::uno::RuntimeException); + + /** Return the parents locale or throw exception if this object has no + parent yet/anymore. + */ + virtual ::com::sun::star::lang::Locale SAL_CALL + getLocale (void) + throw (::com::sun::star::uno::RuntimeException, + ::com::sun::star::accessibility::IllegalAccessibleComponentStateException); + + //===== XAccessibleComponent ================================================ + + virtual sal_Bool SAL_CALL containsPoint ( + const ::com::sun::star::awt::Point& aPoint) + throw (::com::sun::star::uno::RuntimeException); + + virtual ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessible > SAL_CALL + getAccessibleAtPoint ( + const ::com::sun::star::awt::Point& aPoint) + throw (::com::sun::star::uno::RuntimeException); + + virtual ::com::sun::star::awt::Rectangle SAL_CALL getBounds (void) + throw (::com::sun::star::uno::RuntimeException); + + virtual ::com::sun::star::awt::Point SAL_CALL getLocation (void) + throw (::com::sun::star::uno::RuntimeException); + + virtual ::com::sun::star::awt::Point SAL_CALL getLocationOnScreen (void) + throw (::com::sun::star::uno::RuntimeException); + + virtual ::com::sun::star::awt::Size SAL_CALL getSize (void) + throw (::com::sun::star::uno::RuntimeException); + + virtual void SAL_CALL grabFocus (void) + throw (::com::sun::star::uno::RuntimeException); + + virtual sal_Int32 SAL_CALL getForeground (void) + throw (::com::sun::star::uno::RuntimeException); + + virtual sal_Int32 SAL_CALL getBackground (void) + throw (::com::sun::star::uno::RuntimeException); + + + //===== XServiceInfo ==================================================== + + /** Returns an identifier for the implementation of this object. + */ + virtual ::rtl::OUString SAL_CALL + getImplementationName (void) + throw (::com::sun::star::uno::RuntimeException); + + /** Return whether the specified service is supported by this class. + */ + virtual sal_Bool SAL_CALL + supportsService (const ::rtl::OUString& sServiceName) + throw (::com::sun::star::uno::RuntimeException); + + /** Returns a list of all supported services. + */ + virtual ::com::sun::star::uno::Sequence< ::rtl::OUString> SAL_CALL + getSupportedServiceNames (void) + throw (::com::sun::star::uno::RuntimeException); + + +protected: + ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessible> mxParent; + ::sd::toolpanel::TreeNode& mrTreeNode; + ::rtl::Reference< ::utl::AccessibleStateSetHelper> mrStateSet; + + const ::rtl::OUString msName; + const ::rtl::OUString msDescription; + const sal_Int16 meRole; + + virtual ~AccessibleTreeNode (void); + + /** Check whether or not the object has been disposed (or is in the + state of beeing disposed). If that is the case then + DisposedException is thrown to inform the (indirect) caller of the + foul deed. + */ + void ThrowIfDisposed (void) + throw (::com::sun::star::lang::DisposedException); + + /** Check whether or not the object has been disposed (or is in the + state of beeing disposed). + + @return sal_True, if the object is disposed or in the course + of being disposed. Otherwise, sal_False is returned. + */ + sal_Bool IsDisposed (void); + + /** Update the mpStateSet member to reflect the current state of the + TreeNode. When one of the states has changed since the last call + then an appropriate event is sent. + */ + virtual void UpdateStateSet (void); + + /** Update a single state and sent an event if its value changes. + */ + void UpdateState( + sal_Int16 aState, + bool bValue); + + DECL_LINK(StateChangeListener, ::sd::toolpanel::TreeNodeStateChangeEvent*); + DECL_LINK(WindowEventListener, VclWindowEvent*); + +private: + sal_uInt32 mnClientId; + + /// The common part of the constructor. + void CommonConstructor (void); +}; + +} // end of namespace ::accessibility + +#endif diff --git a/sd/source/ui/inc/AccessibleViewForwarder.hxx b/sd/source/ui/inc/AccessibleViewForwarder.hxx new file mode 100755 index 000000000000..7817f2d0c4d9 --- /dev/null +++ b/sd/source/ui/inc/AccessibleViewForwarder.hxx @@ -0,0 +1,136 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SD_ACCESSIBILITY_ACCESSIBLE_VIEW_FORWARDER_HXX +#define _SD_ACCESSIBILITY_ACCESSIBLE_VIEW_FORWARDER_HXX + +#include <svx/IAccessibleViewForwarder.hxx> + +class SdrPaintView; +class OutputDevice; + +namespace accessibility { + + +/** <p>This class provides the means to transform between internal coordinates + and screen coordinates without giving direct access to the underlying + view. It represents a certain window. A call to + <method>GetVisArea</method> returns the corresponding visible + rectangle.</p> + + @attention + Note, that modifications of the underlying view that lead to + different transformations between internal and screen coordinates or + change the validity of the forwarder have to be signaled seperately. +*/ +class AccessibleViewForwarder + : public IAccessibleViewForwarder +{ +public: + //===== internal ======================================================== + + AccessibleViewForwarder (SdrPaintView* pView, OutputDevice& rDevice); + + virtual ~AccessibleViewForwarder (void); + + //===== IAccessibleViewforwarder ======================================== + + /** This method informs you about the state of the forwarder. Do not + use it when the returned value is <false/>. + + @return + Return <true/> if the view forwarder is valid and <false/> else. + */ + virtual sal_Bool IsValid (void) const; + + /** Returns the area of the underlying document that is visible in the + * corresponding window. + + @return + The rectangle of the visible part of the document. + */ + virtual Rectangle GetVisibleArea() const; + + /** Transform the specified point from internal coordinates to an + absolute screen position. + + @param rPoint + Point in internal coordinates. + + @return + The same point but in screen coordinates relative to the upper + left corner of the (current) screen. + */ + virtual Point LogicToPixel (const Point& rPoint) const; + + /** Transform the specified size from internal coordinates to a screen + * position. + + @param rSize + Size in internal coordinates. + + @return + The same size but in screen coordinates. + */ + virtual Size LogicToPixel (const Size& rSize) const; + + /** Transform the specified point from absolute screen coordinates to + internal coordinates. + + @param rPoint + Point in screen coordinates relative to the upper left corner of + the (current) screen. + + @return + The same point but in internal coordinates. + */ + virtual Point PixelToLogic (const Point& rPoint) const; + + /** Transform the specified Size from screen coordinates to internal + coordinates. + + @param rSize + Size in screen coordinates. + + @return + The same size but in internal coordinates. + */ + virtual Size PixelToLogic (const Size& rSize) const; + +protected: + SdrPaintView* mpView; + sal_uInt16 mnWindowId; + OutputDevice& mrDevice; + +private: + AccessibleViewForwarder (AccessibleViewForwarder&); + AccessibleViewForwarder& operator= (AccessibleViewForwarder&); +}; + +} // end of namespace accessibility + +#endif diff --git a/sd/source/ui/inc/AnimationChildWindow.hxx b/sd/source/ui/inc/AnimationChildWindow.hxx new file mode 100755 index 000000000000..dedb54d10365 --- /dev/null +++ b/sd/source/ui/inc/AnimationChildWindow.hxx @@ -0,0 +1,55 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_ANIMATION_CHILD_WINDOW_HXX +#define SD_ANIMATION_CHILD_WINDOW_HXX + +#include <tools/solar.h> +#include <sfx2/childwin.hxx> + +class Window; +class SfxBindings; + +namespace sd { + +class AnimationChildWindow + : public SfxChildWindow +{ +public: + AnimationChildWindow( + ::Window*, + sal_uInt16, + SfxBindings*, + SfxChildWinInfo*); + + SFX_DECL_CHILDWINDOW(AnimationChildWindow); +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/BezierObjectBar.hxx b/sd/source/ui/inc/BezierObjectBar.hxx new file mode 100644 index 000000000000..ae54243a58e2 --- /dev/null +++ b/sd/source/ui/inc/BezierObjectBar.hxx @@ -0,0 +1,60 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_BEZIER_OBJECT_BAR_HXX +#define SD_BEZIER_OBJECT_BAR_HXX + +#include <sfx2/module.hxx> +#include <sfx2/shell.hxx> +#include "glob.hxx" + +namespace sd { + +class View; +class ViewShell; + +class BezierObjectBar + : public SfxShell +{ +public: + TYPEINFO(); + SFX_DECL_INTERFACE(SD_IF_SDDRAWBEZIEROBJECTBAR) + + BezierObjectBar (ViewShell* pSdViewShell, View* pSdView); + virtual ~BezierObjectBar (void); + + void GetAttrState(SfxItemSet& rSet); + void Execute(SfxRequest &rReq); + +protected: + View* mpView; + ViewShell* mpViewSh; +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/BreakDlg.hxx b/sd/source/ui/inc/BreakDlg.hxx new file mode 100755 index 000000000000..7a7ff35ac721 --- /dev/null +++ b/sd/source/ui/inc/BreakDlg.hxx @@ -0,0 +1,96 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_BREAK_DLG_HXX +#define SD_BREAK_DLG_HXX + +#include <vcl/group.hxx> +#ifndef _SV_BUTTON_HXX //autogen +#include <vcl/button.hxx> +#endif +#include <svx/dlgctrl.hxx> +#include <vcl/field.hxx> +#include <vcl/fixed.hxx> +#include <svtools/prgsbar.hxx> +#include <vcl/edit.hxx> +#include <svtools/stdctrl.hxx> +#include <sfx2/basedlgs.hxx> + +class SvdProgressInfo; +class SfxProgress; + +namespace sd { + +class DrawDocShell; +class DrawView; + +/************************************************************************* +|* +|* Dialog zum aufbrechen von Metafiles +|* +\************************************************************************/ +class BreakDlg + : public SfxModalDialog +{ +public: + BreakDlg ( + ::Window* pWindow, + DrawView* pDrView, + DrawDocShell* pShell, + sal_uLong nSumActionCount, + sal_uLong nObjCount); + virtual ~BreakDlg(); + + short Execute(); + +private: + FixedText aFtObjInfo; + FixedText aFtActInfo; + FixedText aFtInsInfo; + + FixedInfo aFiObjInfo; + FixedInfo aFiActInfo; + FixedInfo aFiInsInfo; + + CancelButton aBtnCancel; + DrawView* pDrView; + + sal_Bool bCancel; + + Timer aTimer; + SvdProgressInfo *pProgrInfo; + Link aLink; + SfxProgress *mpProgress; + + DECL_LINK( CancelButtonHdl, void* ); + DECL_LINK( UpDate, void* ); + DECL_LINK( InitialUpdate, Timer* ); +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/Client.hxx b/sd/source/ui/inc/Client.hxx new file mode 100644 index 000000000000..8370b31435c3 --- /dev/null +++ b/sd/source/ui/inc/Client.hxx @@ -0,0 +1,75 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_CLIENT_HXX +#define SD_CLIENT_HXX + + +#ifndef _SFX_CLIENTSH_HXX //autogen +#include <sfx2/ipclient.hxx> +#endif +class SdrGrafObj; +class SdrOle2Obj; +class OutlinerParaObject; + +namespace sd { + +class ViewShell; + +/************************************************************************* +|* +|* Client +|* +\************************************************************************/ + +class Client : public SfxInPlaceClient +{ + ViewShell* mpViewShell; + SdrOle2Obj* pSdrOle2Obj; + SdrGrafObj* pSdrGrafObj; + OutlinerParaObject* pOutlinerParaObj; + + virtual void ObjectAreaChanged(); + virtual void RequestNewObjectArea( Rectangle& ); + virtual void ViewChanged(); + virtual void MakeVisible(); + +public: + Client (SdrOle2Obj* pObj, ViewShell* pSdViewShell, ::Window* pWindow); + virtual ~Client (void); + + SdrOle2Obj* GetSdrOle2Obj() const { return pSdrOle2Obj; } + void SetSdrGrafObj(SdrGrafObj* pObj) { pSdrGrafObj = pObj; } + SdrGrafObj* GetSdrGrafObj() const { return pSdrGrafObj; } + void SetOutlinerParaObj (OutlinerParaObject* pObj) { pOutlinerParaObj = pObj; } + OutlinerParaObject* GetOutlinerParaObject () const { return pOutlinerParaObj; } +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/ClientView.hxx b/sd/source/ui/inc/ClientView.hxx new file mode 100644 index 000000000000..dd4b5e37f38e --- /dev/null +++ b/sd/source/ui/inc/ClientView.hxx @@ -0,0 +1,65 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_CLIENT_VIEW_HXX +#define SD_CLIENT_VIEW_HXX + +#include "drawview.hxx" + +namespace sd { + +class DrawViewShell; + +/************************************************************************ +|* +|* Die SdClientView wird fuer DrawDocShell::Draw() verwendet +|* +\************************************************************************/ + +class ClientView + : public DrawView +{ +public: + ClientView ( + DrawDocShell* pDocSh, + OutputDevice* pOutDev, + DrawViewShell* pShell); + virtual ~ClientView (void); + + virtual void CompleteRedraw(OutputDevice* pOutDev, const Region& rReg, sdr::contact::ViewObjectContactRedirector* pRedirector = 0L); + + // Wenn die View kein Invalidate() an den Fenstern durchfuehren soll, muss + // man diese beiden folgenden Methoden ueberladen und entsprechend anders + // reagieren. + virtual void InvalidateOneWin(::Window& rWin); + virtual void InvalidateOneWin(::Window& rWin, const Rectangle& rRect); +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/CustomAnimation.hxx b/sd/source/ui/inc/CustomAnimation.hxx new file mode 100644 index 000000000000..84a9f848f612 --- /dev/null +++ b/sd/source/ui/inc/CustomAnimation.hxx @@ -0,0 +1,43 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SD_CUSTOMANIMATION_HXX_ +#define _SD_CUSTOMANIMATION_HXX_ + +#ifndef _COM_SUN_STAR_FRAME_XModel_HPP_ +#include <com/sun/star/frame/XModel.hpp> +#endif + +class Window; + +namespace sd { + +// extern void showCustomAnimationPane( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawView >& xView ); + extern ::Window* createCustomAnimationPane( ::Window* pParent, const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >& xModel ); +} + +#endif // _SD_CUSTOMANIMATION_HXX_ diff --git a/sd/source/ui/inc/DialogListBox.hxx b/sd/source/ui/inc/DialogListBox.hxx new file mode 100644 index 000000000000..f04f431a4b55 --- /dev/null +++ b/sd/source/ui/inc/DialogListBox.hxx @@ -0,0 +1,75 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SD_DIALOGLISTBOX_HXX +#define SD_DIALOGLISTBOX_HXX + +#include <vcl/ctrl.hxx> +#include <vcl/scrbar.hxx> + +namespace sd +{ + +class DialogListBox : public Control +{ +private: + ScrollBar* mpHScrollBar; + ScrollBar* mpVScrollBar; + ScrollBarBox* mpScrollBarBox; + ::Window* mpChild; + bool mbVScroll; + bool mbHScroll; + bool mbAutoHScroll; + Size maMinSize, maInnerSize; + +protected: + virtual void GetFocus(); + virtual void StateChanged( StateChangedType nType ); + + long Notify( NotifyEvent& rNEvt ); + + void ImplResizeControls(); + void ImplCheckScrollBars(); + void ImplInitScrollBars(); + void ImplResizeChild(); + + DECL_LINK( ScrollBarHdl, ScrollBar* ); + +public: + DialogListBox( ::Window* pParent, WinBits nWinStyle ); + ~DialogListBox(); + + void SetChildWindow( ::Window* pChild, const Size& rMinSize ); + + ::Window* GetPreferredKeyInputWindow(); + void Resize(); + +}; + +} // namespace sd + +// SD_DIALOGLISTBOX_HXX +#endif diff --git a/sd/source/ui/inc/DocumentRenderer.hxx b/sd/source/ui/inc/DocumentRenderer.hxx new file mode 100644 index 000000000000..0bc7db676401 --- /dev/null +++ b/sd/source/ui/inc/DocumentRenderer.hxx @@ -0,0 +1,82 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_DOCUMENT_RENDERER_HXX +#define SD_DOCUMENT_RENDERER_HXX + +#include "ViewShellBase.hxx" + +#include <com/sun/star/view/XRenderable.hpp> +#include <cppuhelper/compbase1.hxx> +#include <cppuhelper/basemutex.hxx> +#include <boost/scoped_ptr.hpp> + +namespace css = ::com::sun::star; + +namespace sd { + +namespace { + typedef ::cppu::WeakComponentImplHelper1 < + ::com::sun::star::view::XRenderable + > DocumentRendererInterfaceBase; +} + + +class DocumentRenderer + : protected ::cppu::BaseMutex, + public DocumentRendererInterfaceBase +{ +public: + DocumentRenderer (ViewShellBase& rBase); + virtual ~DocumentRenderer (void); + + // XRenderable + virtual sal_Int32 SAL_CALL getRendererCount ( + const css::uno::Any& aSelection, + const css::uno::Sequence<css::beans::PropertyValue >& xOptions) + throw (css::lang::IllegalArgumentException, css::uno::RuntimeException); + + virtual css::uno::Sequence<css::beans::PropertyValue> SAL_CALL getRenderer ( + sal_Int32 nRenderer, + const css::uno::Any& rSelection, + const css::uno::Sequence<css::beans::PropertyValue>& rxOptions) + throw (css::lang::IllegalArgumentException, css::uno::RuntimeException); + + virtual void SAL_CALL render ( + sal_Int32 nRenderer, + const css::uno::Any& rSelection, + const css::uno::Sequence<css::beans::PropertyValue>& rxOptions) + throw (css::lang::IllegalArgumentException, css::uno::RuntimeException); + +private: + class Implementation; + ::boost::scoped_ptr<Implementation> mpImpl; +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/DrawController.hxx b/sd/source/ui/inc/DrawController.hxx new file mode 100755 index 000000000000..da0b6ade7327 --- /dev/null +++ b/sd/source/ui/inc/DrawController.hxx @@ -0,0 +1,339 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_DRAW_CONTROLLER_HXX +#define SD_DRAW_CONTROLLER_HXX + +#include "ViewShell.hxx" + +#include <osl/mutex.hxx> +#include <cppuhelper/propshlp.hxx> +#include <sfx2/sfxbasecontroller.hxx> +#include <com/sun/star/view/XSelectionSupplier.hpp> +#include <com/sun/star/view/XFormLayerAccess.hpp> +#include <com/sun/star/drawing/XDrawSubController.hpp> +#include <com/sun/star/drawing/XDrawView.hpp> +#include <com/sun/star/drawing/framework/XConfigurationController.hpp> +#include <com/sun/star/drawing/framework/XControllerManager.hpp> +#include <com/sun/star/drawing/framework/ModuleController.hpp> +#include <com/sun/star/lang/XServiceInfo.hpp> +#include <com/sun/star/lang/DisposedException.hpp> +#include <comphelper/uno3.hxx> +#include <cppuhelper/implbase7.hxx> +#include <tools/weakbase.hxx> +#include <memory> +#include <vector> +#include <boost/scoped_ptr.hpp> + +class SfxViewShell; +class SdXImpressDocument; + +namespace css = ::com::sun::star; + +namespace sd { + +typedef ::cppu::ImplInheritanceHelper7 < + SfxBaseController, + ::com::sun::star::view::XSelectionSupplier, + ::com::sun::star::lang::XServiceInfo, + ::com::sun::star::drawing::XDrawView, + ::com::sun::star::view::XSelectionChangeListener, + ::com::sun::star::view::XFormLayerAccess, + ::com::sun::star::drawing::framework::XControllerManager, + ::com::sun::star::lang::XUnoTunnel + > DrawControllerInterfaceBase; + +class BroadcastHelperOwner +{ +public: + BroadcastHelperOwner (::osl::Mutex& rMutex) : maBroadcastHelper(rMutex) {}; + ::cppu::OBroadcastHelper maBroadcastHelper; +}; + +class DrawSubController; +class ViewShellBase; +class ViewShell; +class View; + + +/** The DrawController is the UNO controller for Impress and Draw. It + relies objects that implement the DrawSubController interface for view + specific behaviour. The life time of the DrawController is roughly that + of ViewShellBase but note that the DrawController can (in the case of a + reload) outlive the ViewShellBase. + + The implementation of the XControllerManager interface is not yet in its + final form. +*/ +class DrawController + : public DrawControllerInterfaceBase, + private BroadcastHelperOwner, + public ::cppu::OPropertySetHelper +{ +public: + enum PropertyHandle { + PROPERTY_WORKAREA = 0, + PROPERTY_SUB_CONTROLLER = 1, + PROPERTY_CURRENTPAGE = 2, + PROPERTY_MASTERPAGEMODE = 3, + PROPERTY_LAYERMODE = 4, + PROPERTY_ACTIVE_LAYER = 5, + PROPERTY_ZOOMTYPE = 6, + PROPERTY_ZOOMVALUE = 7, + PROPERTY_VIEWOFFSET = 8, + PROPERTY_DRAWVIEWMODE = 9 + }; + + /** Create a new DrawController object for the given ViewShellBase. + */ + DrawController (ViewShellBase& rBase) throw(); + + virtual ~DrawController (void) throw(); + + /** Replace the currently used sub controller with the given one. This + new sub controller is used from now on for the view (that is the + main view shell to be precise) specific tasks. Call this method + with a suitable sub controller whenever the view shell in the center + pane is exchanged. + @param pSubController + The ViewShell specific sub controller or NULL when (temporarily + while switching to another one) there is no ViewShell displayed + in the center pane. + */ + void SetSubController ( + const css::uno::Reference<css::drawing::XDrawSubController>& rxSubController); + + /** Call this method when the VisArea has changed. + */ + void FireVisAreaChanged (const Rectangle& rVisArea) throw(); + + /** Call this method when the selection has changed. + */ + void FireSelectionChangeListener (void) throw(); + + /** Call this method when the edit mode has changed. + */ + void FireChangeEditMode (bool bMasterPageMode) throw(); + + /** Call this method when the layer mode has changed. + */ + void FireChangeLayerMode (bool bLayerMode) throw(); + + /** Call this method when there is a new current page. + */ + void FireSwitchCurrentPage (SdPage* pCurrentPage) throw(); + + /** Return a pointer to the ViewShellBase object that the DrawController + is connected to. + @return + The returned pointer is <NULL/> after a call to + ReleaseViewShellBase(). + */ + ViewShellBase* GetViewShellBase (void); + + /** This method is typically called from the destructor of ViewShellBase + to tell the DrawController that it and its members must not access + the ViewShellBase anymore. + After this call the DrawController is semi-disposed. + */ + void ReleaseViewShellBase (void); + + static const ::com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId (void); + + DECLARE_XINTERFACE() + DECLARE_XTYPEPROVIDER() + + // XComponent + virtual void SAL_CALL dispose() throw( ::com::sun::star::uno::RuntimeException ); + virtual void SAL_CALL addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& aListener ) throw (::com::sun::star::uno::RuntimeException); + + // XController + virtual ::sal_Bool SAL_CALL suspend( ::sal_Bool Suspend ) throw (::com::sun::star::uno::RuntimeException); + + // XServiceInfo + virtual ::rtl::OUString SAL_CALL getImplementationName() throw(::com::sun::star::uno::RuntimeException); + virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException); + + // XSelectionSupplier + virtual sal_Bool SAL_CALL select( const ::com::sun::star::uno::Any& aSelection ) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Any SAL_CALL getSelection( ) throw(::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL addSelectionChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::view::XSelectionChangeListener >& xListener ) throw(::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL removeSelectionChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::view::XSelectionChangeListener >& xListener ) throw(::com::sun::star::uno::RuntimeException); + + // XPropertySet + virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException); + + // XFormLayerAccess + virtual ::com::sun::star::uno::Reference< ::com::sun::star::form::runtime::XFormController > SAL_CALL getFormController( const ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm >& Form ) throw (::com::sun::star::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL isFormDesignMode( ) throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL setFormDesignMode( ::sal_Bool DesignMode ) throw (::com::sun::star::uno::RuntimeException); + + // XControlAccess + virtual ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl > SAL_CALL getControl( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlModel >& xModel ) throw (::com::sun::star::container::NoSuchElementException, ::com::sun::star::uno::RuntimeException); + + // XDrawView + virtual void SAL_CALL + setCurrentPage ( + const ::com::sun::star::uno::Reference< + ::com::sun::star::drawing::XDrawPage >& xPage) + throw(::com::sun::star::uno::RuntimeException); + + virtual ::com::sun::star::uno::Reference< + ::com::sun::star::drawing::XDrawPage > SAL_CALL + getCurrentPage (void) + throw(::com::sun::star::uno::RuntimeException); + + + // lang::XEventListener + virtual void SAL_CALL + disposing (const ::com::sun::star::lang::EventObject& rEventObject) + throw (::com::sun::star::uno::RuntimeException); + + + // view::XSelectionChangeListener + virtual void SAL_CALL + selectionChanged (const ::com::sun::star::lang::EventObject& rEvent) + throw (::com::sun::star::uno::RuntimeException); + + + // XControllerManager + + virtual css::uno::Reference<css::drawing::framework::XConfigurationController> SAL_CALL + getConfigurationController (void) + throw (::com::sun::star::uno::RuntimeException); + + virtual css::uno::Reference<css::drawing::framework::XModuleController> SAL_CALL + getModuleController (void) + throw (::com::sun::star::uno::RuntimeException); + + + // XUnoTunnel + + virtual sal_Int64 SAL_CALL getSomething (const com::sun::star::uno::Sequence<sal_Int8>& rId) + throw (com::sun::star::uno::RuntimeException); + +protected: + /** This method must return the name to index table. This table + contains all property names and types of this object. + */ + virtual ::cppu::IPropertyArrayHelper & SAL_CALL getInfoHelper(); + + virtual void FillPropertyTable ( + ::std::vector< ::com::sun::star::beans::Property>& rProperties); + + /** + * The same as getFastProperyValue, but return the value through + * rValue and nHandle is always valid. + */ + virtual void SAL_CALL getFastPropertyValue( + ::com::sun::star::uno::Any& rValue, + sal_Int32 nHandle ) const; + + /** Convert the value rValue and return the result in rConvertedValue and the + old value in rOldValue. + After this call the vetoable listeners are notified. + + @param rConvertedValue + The converted value. Only set if return is true. + @param rOldValue + The old value. Only set if return is true. + @param nHandle + The handle of the proberty. + @return + <TRUE/> if the value is converted successfully. + @throws IllegalArgumentException + */ + virtual sal_Bool SAL_CALL convertFastPropertyValue( + ::com::sun::star::uno::Any & rConvertedValue, + ::com::sun::star::uno::Any & rOldValue, + sal_Int32 nHandle, + const ::com::sun::star::uno::Any& rValue ) + throw (::com::sun::star::lang::IllegalArgumentException); + + /** The same as setFastProperyValue, but no exception is thrown and nHandle + is always valid. You must not broadcast the changes in this method. + */ + virtual void SAL_CALL setFastPropertyValue_NoBroadcast( + sal_Int32 nHandle, + const ::com::sun::star::uno::Any& rValue ) + throw (::com::sun::star::uno::Exception); + + /** When the called object has been disposed already this method throws + a Disposed exception and does not return. + */ + void ThrowIfDisposed (void) const + throw (::com::sun::star::lang::DisposedException); + + using cppu::OPropertySetHelper::disposing; + using cppu::OPropertySetHelper::getFastPropertyValue; + +private: + /** This pointer to the ViewShellBase can be NULL (after a call to + ReleaseViewShellBase()). + */ + ViewShellBase* mpBase; + + Rectangle maLastVisArea; + ::tools::WeakReference<SdrPage> mpCurrentPage; + bool mbMasterPageMode; + bool mbLayerMode; + + /** This flag indicates whether the called DrawController is being + disposed or already has been disposed. + */ + bool mbDisposing; + + ::std::auto_ptr< ::cppu::IPropertyArrayHelper> mpPropertyArrayHelper; + + /** The current sub controller. May be NULL. + */ + css::uno::Reference<css::drawing::XDrawSubController> mxSubController; + + css::uno::Reference< + css::drawing::framework::XConfigurationController> mxConfigurationController; + css::uno::Reference< + css::drawing::framework::XModuleController> mxModuleController; + + /** Send an event to all relevant property listeners that a + property has changed its value. The fire() method of the + OPropertySetHelper is wrapped by this method to handle + exceptions thrown by called listeners. + */ + void FirePropertyChange ( + sal_Int32 nHandle, + const ::com::sun::star::uno::Any& rNewValue, + const ::com::sun::star::uno::Any& rOldValue); + + void ProvideFrameworkControllers (void); + void DisposeFrameworkControllers (void); +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/DrawDocShell.hxx b/sd/source/ui/inc/DrawDocShell.hxx new file mode 100755 index 000000000000..65b4c1e89ffd --- /dev/null +++ b/sd/source/ui/inc/DrawDocShell.hxx @@ -0,0 +1,243 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_DRAW_DOC_SHELL_HXX +#define SD_DRAW_DOC_SHELL_HXX + +#include <sfx2/docfac.hxx> +#include <sfx2/objsh.hxx> + +#include <vcl/jobset.hxx> +#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); + + Bitmap GetPagePreviewBitmap(SdPage* pPage, sal_uInt16 nMaxEdgePixel); + + /** checks, if the given name is a valid new name for a slide + + <p>If the name is invalid, an <type>SvxNameDialog</type> pops up that + queries again for a new name until it is ok or the user chose + Cancel.</p> + + @param pWin is necessary to pass to the <type>SvxNameDialog</type> 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 + + <p>This method does not pop up any dialog (like CheckPageName).</p> + + @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 ); +}; + +#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 diff --git a/sd/source/ui/inc/DrawSubController.hxx b/sd/source/ui/inc/DrawSubController.hxx new file mode 100755 index 000000000000..22d3afb5dd4a --- /dev/null +++ b/sd/source/ui/inc/DrawSubController.hxx @@ -0,0 +1,57 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_DRAW_SUB_CONTROLLER_HXX +#define SD_DRAW_SUB_CONTROLLER_HXX + +#include <com/sun/star/drawing/XDrawSubController.hpp> +#include <com/sun/star/lang/XServiceInfo.hpp> +#include <cppuhelper/compbase2.hxx> + +namespace sd { + + class DrawSubControllerInterfaceBase : public ::cppu::WeakComponentImplHelper2< + ::com::sun::star::drawing::XDrawSubController, + ::com::sun::star::lang::XServiceInfo > + { + public: + DrawSubControllerInterfaceBase( ::osl::Mutex& aMutex ) + : ::cppu::WeakComponentImplHelper2< + ::com::sun::star::drawing::XDrawSubController, + ::com::sun::star::lang::XServiceInfo >( aMutex ) {} + + // XServiceInfo + virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw (::com::sun::star::uno::RuntimeException) = 0; + virtual ::sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw (::com::sun::star::uno::RuntimeException) = 0; + virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw (::com::sun::star::uno::RuntimeException) = 0; + }; + +} + + +#endif + diff --git a/sd/source/ui/inc/DrawViewShell.hxx b/sd/source/ui/inc/DrawViewShell.hxx new file mode 100755 index 000000000000..f6a94bb1f1d4 --- /dev/null +++ b/sd/source/ui/inc/DrawViewShell.hxx @@ -0,0 +1,499 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_DRAW_VIEW_SHELL_HXX +#define SD_DRAW_VIEW_SHELL_HXX + +#include "ViewShell.hxx" +#include "tools/AsynchronousCall.hxx" +#include <sfx2/viewfac.hxx> +#include <sfx2/viewsh.hxx> +#include "TabControl.hxx" +#include "pres.hxx" +#include <com/sun/star/lang/XEventListener.hpp> +#include <com/sun/star/scanner/XScannerManager.hpp> + +class SdPage; +class DrawDocShell; +class SdAnimationWin; +class SdRuler; +class TabBar; +class SdrObject; +class SdrPageView; +class TransferableDataHelper; +class TransferableClipboardListener; +class AbstractSvxNameDialog; +class SdrLayer; +class SvxClipboardFmtItem; + +namespace sd { + +class DrawView; +class LayerTabBar; +class Ruler; +class SdUnoDrawView; +class AnnotationManager; +class ViewOverlayManager; + +#define CHECK_RANGE(nMin, nValue, nMax) ((nValue >= nMin) && (nValue <= nMax)) + +/** Base class of the stacked shells that provide graphical views to + Draw and Impress documents and editing functionality. In contrast + to this other stacked shells are responsible for showing an + overview over several slides (SlideViewShell) or a textual + overview over the text in an Impress document (OutlineViewShell). +*/ +class DrawViewShell + : public ViewShell, + public SfxListener +{ +public: + static const int SLOTARRAY_COUNT = 24; + + TYPEINFO(); + + SFX_DECL_INTERFACE(SD_IF_SDDRAWVIEWSHELL) + + /** Create a new stackable shell that may take some information + (e.g. the frame view) from the given previous shell. + @param ePageKind + This parameter gives the initial page kind that the new shell + will show. + @param pFrameView + The frame view that makes it possible to pass information from + one view shell to the next. + */ + DrawViewShell ( + SfxViewFrame* pFrame, + ViewShellBase& rViewShellBase, + ::Window* pParentWindow, + PageKind ePageKind = PK_STANDARD, + FrameView* pFrameView = NULL); + + virtual ~DrawViewShell (void); + + virtual void Init (bool bIsMainViewShell); + + virtual void Shutdown (void); + + void PrePaint(); + virtual void Paint(const Rectangle& rRect, ::sd::Window* pWin); + + /** Set the position and size of the area which contains the GUI + elements like rulers, sliders, and buttons as well as the document + view. Both size and position are expected to be in pixel + coordinates. The positions and sizes of the mentioned GUI elements + are updated as well. + + <p> This method is implemented by first setting copying the given + values to internal variables and then calling the + <type>ArrangeGUIElements</type> method which performs the actual + work of sizeing and arranging the UI elements accordingly.</p> + @param rPos + The position of the enclosing window relative to the document + window. This is only interesting if a Draw/Impress document + view is embedded as OLE object into another document view. For + normal documents this position is (0,0). + @param rSize + The new size in pixel. + */ + // virtual void AdjustPosSizePixel(const Point &rPos, const Size &rSize); + + /** Arrange and resize the GUI elements like rulers, sliders, and + buttons as well as the actual document view according to the size of + the enclosing window and current sizes of buttons, rulers, and + sliders. + */ + virtual void ArrangeGUIElements (void); + + void HidePage(); + + virtual sal_Bool KeyInput(const KeyEvent& rKEvt, ::sd::Window* pWin); + virtual void MouseMove(const MouseEvent& rMEvt, ::sd::Window* pWin); + virtual void MouseButtonUp(const MouseEvent& rMEvt, ::sd::Window* pWin); + virtual void MouseButtonDown(const MouseEvent& rMEvt, ::sd::Window* pWin); + virtual void Command(const CommandEvent& rCEvt, ::sd::Window* pWin); + + virtual void Resize (void); + + void ShowMousePosInfo(const Rectangle& rRect, ::sd::Window* pWin); + + virtual void AddWindow(::sd::Window* pWin); + virtual void RemoveWindow(::sd::Window* pWin); + + virtual void ChangeEditMode (EditMode eMode, bool bIsLayerModeActive); + + virtual void SetZoom( long nZoom ); + virtual void SetZoomRect( const Rectangle& rZoomRect ); + + void InsertURLField(const String& rURL, const String& rText, const String& rTarget, + const Point* pPos); + void InsertURLButton(const String& rURL, const String& rText, const String& rTarget, + const Point* pPos); + + virtual void SetUIUnit(FieldUnit eUnit); + + void SelectionHasChanged(); + void ModelHasChanged(); + virtual void Activate(sal_Bool bIsMDIActivate); + virtual void Deactivate(sal_Bool IsMDIActivate); + virtual void UIActivating( SfxInPlaceClient* ); + virtual void UIDeactivated( SfxInPlaceClient* ); + virtual String GetSelectionText( sal_Bool bCompleteWords = sal_False ); + virtual sal_Bool HasSelection( sal_Bool bText = sal_True ) const; + + void ExecCtrl(SfxRequest& rReq); + void GetCtrlState(SfxItemSet& rSet); + void GetMenuState(SfxItemSet& rSet); + void GetTableMenuState(SfxItemSet& rSet); + /** Set the items of the given item set that are related to + switching the editing mode to the correct values. + <p>This function also sets the states of the mode buttons + (those at the upper right corner) accordingly.</p> + */ + void GetModeSwitchingMenuState (SfxItemSet &rSet); + void GetAttrState(SfxItemSet& rSet); + void GetSnapItemState(SfxItemSet& rSet); + + void GetState (SfxItemSet& rSet); + void Execute (SfxRequest& rReq); + + void ExecStatusBar(SfxRequest& rReq); + void GetStatusBarState(SfxItemSet& rSet); + + void ExecOptionsBar(SfxRequest& rReq); + void GetOptionsBarState(SfxItemSet& rSet); + + void ExecRuler(SfxRequest& rReq); + void GetRulerState(SfxItemSet& rSet); + + void ExecFormText(SfxRequest& rReq); + void GetFormTextState(SfxItemSet& rSet); + + void ExecAnimationWin(SfxRequest& rReq); + void GetAnimationWinState(SfxItemSet& rSet); + + void ExecNavigatorWin(SfxRequest& rReq); + void GetNavigatorWinState(SfxItemSet& rSet); + + void ExecEffectWin(SfxRequest& rReq); + + void Update3DWindow(); + void AssignFrom3DWindow(); + + void ExecGallery(SfxRequest& rReq); + void GetGalleryState(SfxItemSet& rSet); + + void ExecBmpMask( SfxRequest& rReq ); + void GetBmpMaskState( SfxItemSet& rSet ); + + void ExecIMap( SfxRequest& rReq ); + void GetIMapState( SfxItemSet& rSet ); + + void FuTemporary(SfxRequest& rReq); + void FuPermanent(SfxRequest& rReq); + void FuSupport(SfxRequest& rReq); + void FuTable(SfxRequest& rReq); + + void AttrExec (SfxRequest& rReq); + void AttrState (SfxItemSet& rSet); + + void ExecuteAnnotation (SfxRequest& rRequest); + void GetAnnotationState (SfxItemSet& rItemSet); + + void StartRulerDrag ( + const Ruler& rRuler, + const MouseEvent& rMEvt); + + virtual sal_uInt16 PrepareClose( sal_Bool bUI = sal_True, sal_Bool bForBrowsing = sal_False ); + + PageKind GetPageKind() { return mePageKind; } + + Point GetMousePos() { return maMousePos; } + sal_Bool IsMousePosFreezed() { return mbMousePosFreezed; } + void SetMousePosFreezed( sal_Bool bIn ) { mbMousePosFreezed = bIn; } + + EditMode GetEditMode() const { return meEditMode; } + virtual SdPage* GetActualPage() { return mpActualPage; } + + /// inherited from sd::ViewShell + virtual SdPage* getCurrentPage() const; + + void ResetActualPage(); + void ResetActualLayer(); + sal_Bool SwitchPage(sal_uInt16 nPage); + sal_Bool IsSwitchPageAllowed() const; + + sal_Bool GotoBookmark(const String& rBookmark); + void MakeVisible(const Rectangle& rRect, ::Window& rWin); + + virtual void ReadFrameViewData(FrameView* pView); + virtual void WriteFrameViewData(); + + virtual ErrCode DoVerb(long nVerb); + virtual sal_Bool ActivateObject(SdrOle2Obj* pObj, long nVerb); + + void SetZoomOnPage( sal_Bool bZoom = sal_True ) { mbZoomOnPage = bZoom; } + sal_Bool IsZoomOnPage() { return mbZoomOnPage; } + void CheckLineTo (SfxRequest& rReq); + void FuTemp01(SfxRequest& rReq); + void FuTemp02(SfxRequest& rReq); + void FuTemp03(SfxRequest& rReq); + void FuTemp04(SfxRequest& rReq); + void SetChildWindowState( SfxItemSet& rSet ); + + void UpdateIMapDlg( SdrObject* pObj ); + + void LockInput(); + void UnlockInput(); + sal_Bool IsInputLocked() const { return mnLockCount > 0UL; } + + sal_uInt16 GetCurPageId() { return( maTabControl.GetCurPageId() ); } + + /** Show controls of the UI or hide them, depending on the given flag. + Do not call this method directly. Call the method at ViewShellBase + instead. + */ + virtual void ShowUIControls (bool bVisible = true); + + void ScannerEvent( const ::com::sun::star::lang::EventObject& rEventObject ); + + bool IsLayerModeActive (void) const; + + sal_uInt16* GetSlotArray() const { return mpSlotArray; } + + virtual sal_Int8 AcceptDrop( const AcceptDropEvent& rEvt, DropTargetHelper& rTargetHelper, + ::sd::Window* pTargetWindow, sal_uInt16 nPage, sal_uInt16 nLayer ); + virtual sal_Int8 ExecuteDrop( const ExecuteDropEvent& rEvt, DropTargetHelper& rTargetHelper, + ::sd::Window* pTargetWindow, sal_uInt16 nPage, sal_uInt16 nLayer ); + + virtual void WriteUserDataSequence ( ::com::sun::star::uno::Sequence < ::com::sun::star::beans::PropertyValue >&, sal_Bool bBrowse = sal_False ); + virtual void ReadUserDataSequence ( const ::com::sun::star::uno::Sequence < ::com::sun::star::beans::PropertyValue >&, sal_Bool bBrowse = sal_False ); + + virtual void VisAreaChanged(const Rectangle& rRect); + + /** Create an accessible object representing the specified window. + @param pWindow + The returned object makes the document displayed in this window + accessible. + @return + Returns an <type>AccessibleDrawDocumentView</type> object. + */ + virtual ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessible> + CreateAccessibleDocumentView (::sd::Window* pWindow); + + /** Return the number of layers managed by the layer tab control. This + will usually differ from the number of layers managed by the layer + administrator. + @return + The number of layers managed by the layer tab control. The + returned value is independent of whether the layer modus is + currently active and the tab control is visible. + */ + virtual int GetTabLayerCount (void) const; + + /** Return the numerical id of the currently active layer as seen by the + layer tab control. + @return + The returned id is a number between zero (inclusive) and the + number of layers as returned by the + <member>GetTabLayerCount</member> method (exclusive). + */ + virtual int GetActiveTabLayerIndex (void) const; + + /** Set the active layer at the layer tab control and update the control + accordingly to reflect the change on screen. + @param nId + The id is expected to be a number between zero (inclusive) and + the number of layers as returned by the + <member>GetTabLayerCount</member> method (exclusive). Note that + Invalid values are ignored. No excpetion is thrown in that case. + */ + virtual void SetActiveTabLayerIndex (int nId); + + /** Return a pointer to the tab control for pages. + */ + TabControl* GetPageTabControl (void); + + /** Return a pointer to the tab control for layers. + */ + LayerTabBar* GetLayerTabControl (void); + + /** Renames the given slide using an SvxNameDialog + + @param nPageId the index of the page in the SdTabControl. + @param rName the new name of the slide. + + @return false, if the new name is invalid for some reason. + + <p>Implemented in <code>drviews8.cxx</code>.</p> + */ + bool RenameSlide( sal_uInt16 nPageId, const String & rName ); + + /** modifies the given layer with the given values */ + void ModifyLayer( SdrLayer* pLayer, const String& rLayerName, const String& rLayerTitle, const String& rLayerDesc, bool bIsVisible, bool bIsLocked, bool bIsPrintable ); + + virtual css::uno::Reference<css::drawing::XDrawSubController> CreateSubController (void); + + DrawView* GetDrawView() const { return mpDrawView; } + + /** Relocation to a new parent window is not supported for DrawViewShell + objects so this method always returns <FALSE/>. + */ + virtual bool RelocateToParentWindow (::Window* pParentWindow); + +protected: + DrawView* mpDrawView; + SdPage* mpActualPage; + Rectangle maMarkRect; + Point maMousePos; + sal_Bool mbMousePosFreezed; + TabControl maTabControl; + EditMode meEditMode; + PageKind mePageKind; + sal_Bool mbZoomOnPage; + sal_Bool mbIsRulerDrag; + sal_uLong mnLockCount; + Timer maCloseTimer; + sal_Bool mbReadOnly; + sal_uInt16* mpSlotArray; + + static sal_Bool mbPipette; + + DECL_LINK( ClipboardChanged, TransferableDataHelper* ); + DECL_LINK( CloseHdl, Timer* pTimer ); + DECL_LINK( TabSplitHdl, TabBar * ); + DECL_LINK( NameObjectHdl, AbstractSvxNameDialog* ); + DECL_LINK( RenameSlideHdl, AbstractSvxNameDialog* ); + + void DeleteActualPage(); + void DeleteActualLayer(); + + virtual SvxRuler* CreateHRuler(::sd::Window* pWin, sal_Bool bIsFirst); + virtual SvxRuler* CreateVRuler(::sd::Window* pWin); + virtual void UpdateHRuler(); + virtual void UpdateVRuler(); + virtual long GetHCtrlWidth(); + virtual void SetZoomFactor(const Fraction& rZoomX, const Fraction& rZoomY); + virtual Size GetOptimalSizePixel() const; + + void SetupPage( Size &rSize, long nLeft, long nRight, long nUpper, long nLower, + sal_Bool bSize, sal_Bool bMargin, sal_Bool bScaleAll ); + + sal_uInt16 GetIdBySubId( sal_uInt16 nSId ); + void MapSlot( sal_uInt16 nSId ); + void UpdateToolboxImages( SfxItemSet &rSet, sal_Bool bPermanent = sal_True ); + sal_uInt16 GetMappedSlot( sal_uInt16 nSId ); + sal_uInt16 GetArrayId( sal_uInt16 nSId ); + + void GetMenuStateSel(SfxItemSet& rSet); + +private: + /** This flag controls whether the layer mode is active, i.e. the layer + dialog is visible. + */ + bool mbIsLayerModeActive; + + /** This item contains the clipboard formats of the current clipboard + content that are supported both by that content and by the + DrawViewShell. + */ + ::std::auto_ptr<SvxClipboardFmtItem> mpCurrentClipboardFormats; + + /** On some occasions it is necessary to make SwitchPage calls + asynchronously. + */ + tools::AsynchronousCall maAsynchronousSwitchPageCall; + + /** This flag is used to prevent nested calls to SwitchPage(). + */ + bool mbIsInSwitchPage; + + void Construct (DrawDocShell* pDocSh, PageKind ePageKind); + + /** Depending on the given request create a new page or duplicate an + existing one. See ViewShell::CreateOrDuplicatePage() for more + information. + */ + virtual SdPage* CreateOrDuplicatePage ( + SfxRequest& rRequest, + PageKind ePageKind, + SdPage* pPage, + const sal_Int32 nInsertPosition = -1); + + ::com::sun::star::uno::Reference< ::com::sun::star::scanner::XScannerManager > mxScannerManager; + ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener > mxScannerListener; + TransferableClipboardListener* mpClipEvtLstnr; + sal_Bool mbPastePossible; + + virtual void Notify (SfxBroadcaster& rBC, const SfxHint& rHint); + + /** Stop a running slide show. The frame the show is running in is + destroyed if + a) it is running in its own frame, i.e. is a full screen show and + b) the given flag bCloseFrame is true. + @param bCloseFrame + Be carefull with this flag when stopping a full screen show. + When called from the destructor the flag has to be <FALSE/> or + otherwise we run into a loop of calls to destructors of the view + and the frame. + When called from other places the flag should be <TRUE/> so that + not an empty frame remains. When called with <TRUE/> it is the + responsibility of the caller to avoid an illegal reentrant + call. + */ + void StopSlideShow (bool bCloseFrame); + + /** Show the context menu for snap lines and points. Because snap lines + can not be selected the index of the snap line/point for which the + popup menu is opened has to be passed to the processing slot + handlers. This can be done only by manually showing the popup menu. + @param rPageView + The page view is used to access the help lines. + @param nSnapLineIndex + Index of the snap line or snap point for which to show the + context menu. + @param rMouseLocation + The mouse location defines the location at which to display the + context menu. + */ + void ShowSnapLineContextMenu ( + SdrPageView& rPageView, + const sal_uInt16 nSnapLineIndex, + const Point& rMouseLocation); + + using ViewShell::Notify; + + ::std::auto_ptr< AnnotationManager > mpAnnotationManager; + ::std::auto_ptr< ViewOverlayManager > mpViewOverlayManager; +}; + + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/EventMultiplexer.hxx b/sd/source/ui/inc/EventMultiplexer.hxx new file mode 100644 index 000000000000..8c177191c31f --- /dev/null +++ b/sd/source/ui/inc/EventMultiplexer.hxx @@ -0,0 +1,222 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_TOOLS_EVENT_MULTIPLEXER_HXX +#define SD_TOOLS_EVENT_MULTIPLEXER_HXX + +#include <svl/lstner.hxx> + +#include <set> +#include <memory> + +class Link; + +namespace sd { +class ViewShellBase; +} + +namespace sd { namespace tools { + +class EventMultiplexerEvent +{ +public: + typedef sal_uInt32 EventId; + /** The EventMultiplexer itself is being disposed. Called for a live + EventMultiplexer. Removing a listener as response is not necessary, + though. + */ + static const EventId EID_DISPOSING = 0x00000001; + + /** The selection in the center pane has changed. + */ + static const EventId EID_EDIT_VIEW_SELECTION = 0x00000002; + + /** The selection in the slide sorter has changed, regardless of whether + the slide sorter is displayed in the left pane or the center pane. + */ + static const EventId EID_SLIDE_SORTER_SELECTION = 0x00000004; + + /** The current page has changed. + */ + static const EventId EID_CURRENT_PAGE = 0x00000008; + + /** The current MainViewShell (the ViewShell displayed in the center + pane) has been removed. + */ + static const EventId EID_MAIN_VIEW_REMOVED = 0x00000010; + + /** A new ViewShell has been made the MainViewShell. + */ + static const EventId EID_MAIN_VIEW_ADDED = 0x00000020; + + /** A ViewShell has been removed from one of the panes. Note that for + the ViewShell in the center pane bth this event type and + EID_MAIN_VIEW_REMOVED is broadcasted. + */ + static const EventId EID_VIEW_REMOVED = 0x00000040; + + /** A new ViewShell is being displayed in one of the panes. Note that + for the ViewShell in the center pane both this event type and + EID_MAIN_VIEW_ADDED is broadcasted. + */ + static const EventId EID_VIEW_ADDED = 0x00000080; + + /** The PaneManager is being destroyed. + */ + static const EventId EID_PANE_MANAGER_DYING = 0x00000100; + + /** Edit mode was (or is being) switched to normal mode. Find + EID_EDIT_MODE_MASTER below. + */ + static const EventId EID_EDIT_MODE_NORMAL = 0x00000200; + + /** One or more pages have been inserted into or deleted from the model. + */ + static const EventId EID_PAGE_ORDER = 0x00000400; + + /** Text editing in one of the shapes in the MainViewShell has started. + */ + static const EventId EID_BEGIN_TEXT_EDIT = 0x00000800; + + /** Text editing in one of the shapes in the MainViewShell has ended. + */ + static const EventId EID_END_TEXT_EDIT = 0x00001000; + + /** A UNO controller has been attached to the UNO frame. + */ + static const EventId EID_CONTROLLER_ATTACHED = 0x00002000; + + /** A UNO controller has been detached to the UNO frame. + */ + static const EventId EID_CONTROLLER_DETACHED = 0x00004000; + + /** The state of a shape has changed. The page is available in the user data. + */ + static const EventId EID_SHAPE_CHANGED = 0x00008000; + + /** A shape has been inserted to a page. The page is available in the + user data. + */ + static const EventId EID_SHAPE_INSERTED = 0x00010000; + + /** A shape has been removed from a page. The page is available in the + user data. + */ + static const EventId EID_SHAPE_REMOVED = 0x00020000; + + /** A configuration update has been completed. + */ + static const EventId EID_CONFIGURATION_UPDATED = 0x00040000; + + /** Edit mode was (or is being) switched to master mode. + */ + static const EventId EID_EDIT_MODE_MASTER = 0x00080000; + + const ViewShellBase& mrBase; + EventId meEventId; + const void* mpUserData; + + EventMultiplexerEvent ( + const ViewShellBase& rBase, + EventId eEventId, + const void* pUserData); +}; + + +/** This convenience class makes it easy to listen to various events that + originally are broadcasted via different channels. + + There is usually one EventMultiplexer instance per ViewShellBase(). + Call the laters GetEventMultiplexer() method to get access to that + instance. + + When a listener is registered it can specify the events it + wants to be informed of. This can be done with code like the following: + + mrViewShellBase.GetEventMultiplexer().AddEventListener ( + LINK(this,MasterPagesSelector,EventMultiplexerListener), + tools::EventMultiplexerEvent::EID_MAIN_VIEW_ADDED + | tools::EventMultiplexerEvent::EID_MAIN_VIEW_REMOVED); +*/ +class EventMultiplexer +{ +public: + /** Create new EventMultiplexer for the given ViewShellBase object. + */ + EventMultiplexer (ViewShellBase& rBase); + ~EventMultiplexer (void); + + /** Some constants that make it easier to remove a listener for all + event types at once. + */ + static const EventMultiplexerEvent::EventId EID_FULL_SET = 0xffffffff; + static const EventMultiplexerEvent::EventId EID_EMPTY_SET = 0x00000000; + + /** Add an event listener that will be informed about the specified + event types. + @param rCallback + The callback to call as soon as one of the event specified by + aEventTypeSet is received by the EventMultiplexer. + @param aEventTypeSet + A, possibly empty, set of event types that the listener wants to + be informed about. + */ + void AddEventListener ( + Link& rCallback, + EventMultiplexerEvent::EventId aEventTypeSet); + + /** Remove an event listener for the specified event types. + @param aEventTypeSet + The listener will not be called anymore for any of the event + types in this set. Use EID_FULL_SET, the default value, to + remove the listener for all event types it has been registered + for. + */ + void RemoveEventListener ( + Link& rCallback, + EventMultiplexerEvent::EventId aEventTypeSet = EID_FULL_SET); + + /** This method is used for out-of-line events. An event of the + specified type will be sent to all listeners that are registered for + that type. + @param eEventId + The type of the event. + @param pUserData + Some data sent to the listeners along with the event. + */ + void MultiplexEvent( + EventMultiplexerEvent::EventId eEventId, + void* pUserData = 0); + +private: + class Implementation; + ::std::auto_ptr<Implementation> mpImpl; +}; + +} } // end of namespace ::sd::tools + +#endif diff --git a/sd/source/ui/inc/FormShellManager.hxx b/sd/source/ui/inc/FormShellManager.hxx new file mode 100644 index 000000000000..261095642a51 --- /dev/null +++ b/sd/source/ui/inc/FormShellManager.hxx @@ -0,0 +1,143 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FORM_SHELL_MANAGER_HXX +#define SD_FORM_SHELL_MANAGER_HXX + +#include <ViewShellManager.hxx> + +#include <tools/link.hxx> +#include <svl/lstner.hxx> + +class VclWindowEvent; +class FmFormShell; + +namespace sd { namespace tools { class EventMultiplexerEvent; } } + +namespace sd { + +class PaneManagerEvent; +class ViewShell; +class ViewShellBase; + +/** This simple class is responsible for putting the form shell above or + below the main view shell on the shell stack maintained by the ObjectBarManager. + + The form shell is moved above the view shell when the form shell is + activated, i.e. the FormControlActivated handler is called. + + It is moved below the view shell when the main window of the + main view shell is focused. + + The form shell is created and destroyed by the ViewShellManager by using + a factory object provided by the FormShellManager. +*/ +class FormShellManager + : public SfxListener +{ +public: + FormShellManager (ViewShellBase& rBase); + virtual ~FormShellManager (void); + + /** Typically called by a ShellFactory. It tells the + FormShellManager which form shell to manage. + @param pFormShell + This may be <NULL/> to disconnect the ViewShellManager from the + form shell. + */ + void SetFormShell (FmFormShell* pFormShell); + + /** Return the form shell last set with SetFormShell(). + @return + The result may be <NULL/> when the SetFormShell() method has not + yet been called or was last called with <NULL/>. + */ + FmFormShell* GetFormShell (void); + +private: + ViewShellBase& mrBase; + + /** Ownership of the form shell lies with the ViewShellManager. This + reference is kept so that the FormShellManager can detect when a new + form shell is passed to SetFormShell(). + */ + FmFormShell* mpFormShell; + + /** Remember whether the form shell is currently above or below the main + view shell. + */ + bool mbFormShellAboveViewShell; + + /** The factory is remembered so that it removed from the + ViewShellManager when the FormShellManager is destroyed. + */ + ViewShellManager::SharedShellFactory mpSubShellFactory; + + bool mbIsMainViewChangePending; + + ::Window* mpMainViewShellWindow; + + /** Register at window of center pane and at the form shell that + represents the form tool bar. The former informs this manager about + the deselection of the form shell. The later informs about its + selection. + */ + void RegisterAtCenterPane (void); + + /** Unregister the listeners that were registered in + RegisterAtCenterPane(). + */ + void UnregisterAtCenterPane (void); + + /** This call back is called by the application window (among others) + when the window gets the focus. In this case the form shell is + moved to the bottom of the shell stack. + */ + DECL_LINK(WindowEventHandler, VclWindowEvent*); + + /** This call back is called when view in the center pane is replaced. + When this happens then we unregister at the window of the old and + register at the window of the new shell. + */ + DECL_LINK(ConfigurationUpdateHandler, ::sd::tools::EventMultiplexerEvent*); + + /** This call back is called by the form shell when it gets the focus. + In this case the form shell is moved to the top of the shell stack. + */ + DECL_LINK(FormControlActivated, FmFormShell*); + + /** This method is called by the form shell when that is destroyed. It + acts as a last resort against referencing a dead form shell. With + the factory working properly this method should not be necessary + (and may be removed in the future.) + */ + virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint); +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/FrameView.hxx b/sd/source/ui/inc/FrameView.hxx new file mode 100755 index 000000000000..913f7532008d --- /dev/null +++ b/sd/source/ui/inc/FrameView.hxx @@ -0,0 +1,237 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FRAME_VIEW_HXX +#define SD_FRAME_VIEW_HXX + +#include "ViewShell.hxx" +#include <svx/svdview.hxx> +#include "pres.hxx" + +class SdDrawDocument; +class SdOptions; + +namespace sd { + +/************************************************************************* +|* +|* View fuer den MDIFrame +|* +\************************************************************************/ +class FrameView + : public SdrView +{ +public: + SD_DLLPUBLIC FrameView(SdDrawDocument* pDrawDoc, FrameView* pFrameView = NULL ); + FrameView(const FrameView& rFrameView); + virtual ~FrameView(); + + void Connect(); + void Disconnect(); + + void Update(SdOptions* pOptions); + + void SetStandardHelpLines(const SdrHelpLineList& rHelpLines) + { maStandardHelpLines = rHelpLines; } + const SdrHelpLineList& GetStandardHelpLines() { return maStandardHelpLines; } + void SetNotesHelpLines(const SdrHelpLineList& rHelpLines) + { maNotesHelpLines = rHelpLines; } + const SdrHelpLineList& GetNotesHelpLines() { return maNotesHelpLines; } + void SetHandoutHelpLines(const SdrHelpLineList& rHelpLines) + { maHandoutHelpLines = rHelpLines; } + const SdrHelpLineList& GetHandoutHelpLines() { return maHandoutHelpLines; } + + void SetVisibleLayers(const SetOfByte& rVisibleLayers) + { maVisibleLayers = rVisibleLayers; } + const SetOfByte& GetVisibleLayers() { return maVisibleLayers; } + + void SetLockedLayers(const SetOfByte& rLockedLayers) + { maLockedLayers = rLockedLayers; } + const SetOfByte& GetLockedLayers() { return maLockedLayers; } + + void SetPrintableLayers(const SetOfByte& rPrintableLayers) + { maPrintableLayers = rPrintableLayers; } + const SetOfByte& GetPrintableLayers() { return maPrintableLayers; } + + void SetRuler(const sal_Bool bRulerOn) + { mbRuler = bRulerOn; } + sal_Bool HasRuler() const { return mbRuler; } + + void SetNoColors(const sal_Bool bNoCol) + { mbNoColors = bNoCol; } + sal_Bool IsNoColors() const { return mbNoColors; } + + void SetNoAttribs(const sal_Bool bNoAttr) + { mbNoAttribs = bNoAttr; } + sal_Bool IsNoAttribs() const { return mbNoAttribs; } + + void SetVisArea(const Rectangle& rVisArea) + { maVisArea = rVisArea; } + const Rectangle GetVisArea() { return maVisArea; } + + void SetPageKind(PageKind eKind) { mePageKind = eKind; } + PageKind GetPageKind() const { return mePageKind; } + + /** is used in FrameView::ReadUserDataSequence() only to store the + page kind that was selected while last saving this document */ + void SetPageKindOnLoad(PageKind eKind) { mePageKindOnLoad = eKind; } + + /** can be used to get the page kind that was selected on last save of this document */ + PageKind GetPageKindOnLoad() const { return mePageKindOnLoad; } + + SD_DLLPUBLIC void SetSelectedPage (sal_uInt16 nPage); + sal_uInt16 GetSelectedPage () const; + + /** is used in FrameView::ReadUserDataSequence() only to store the + page that was selected while last saving this document */ + void SetSelectedPageOnLoad (sal_uInt16 nPage) { mnSelectedPageOnLoad = nPage; } + + /** can be used to get the page that was selected on last save of this document */ + sal_uInt16 GetSelectedPageOnLoad () const { return mnSelectedPageOnLoad; } + + SD_DLLPUBLIC void SetViewShEditMode(EditMode eMode, PageKind eKind); + EditMode GetViewShEditMode (PageKind eKind); + + /** Remember the edit mode of the main view shell at the time when the + document is loaded. + */ + void SetViewShEditModeOnLoad (const EditMode eMode); + + /** Return the value of the edit mode as it was when the document was + loaded. + */ + EditMode GetViewShEditModeOnLoad (void) const; + + void SetLayerMode(sal_Bool bMode) + { mbLayerMode = bMode; } + sal_Bool IsLayerMode() const { return mbLayerMode; } + + void SetQuickEdit(sal_Bool bQEdit) + { mbQuickEdit = bQEdit; } + sal_Bool IsQuickEdit() const { return mbQuickEdit; } + + void SetBigHandles( sal_Bool bOn = sal_True ) { mbBigHandles = bOn; } + sal_Bool IsBigHandles() const { return mbBigHandles; } + + void SetDoubleClickTextEdit( sal_Bool bOn = sal_True ) { mbDoubleClickTextEdit = bOn; } + sal_Bool IsDoubleClickTextEdit() const { return mbDoubleClickTextEdit; } + + void SetClickChangeRotation( sal_Bool bOn = sal_True ) { mbClickChangeRotation = bOn; } + sal_Bool IsClickChangeRotation() const { return mbClickChangeRotation; } + + /** Remember the type of the view shell that was (or soon will be) + previously associated with this frame view. + @param eType + The type of the previous view shell or ViewShell::ST_NONE to + indicate that there is no previous view shell. + */ + void SetPreviousViewShellType (ViewShell::ShellType eType); + + /** Return the type of the view shell previously associated with this + frame view. + */ + ViewShell::ShellType GetPreviousViewShellType (void) const; + + /** Remember the type of the view shell at the time when the document is + loaded or, rather, when the ViewShellBase is constructed. + */ + void SetViewShellTypeOnLoad (ViewShell::ShellType eType); + + ViewShell::ShellType GetViewShellTypeOnLoad (void) const; + + void SetPresentationViewShellId(sal_uInt16 nId) + { mnPresViewShellId = nId; } + sal_uInt16 GetPresentationViewShellId() const { return mnPresViewShellId; } + + void SetSlotId(sal_uInt16 nId) { mnSlotId = nId; } + sal_uInt16 GetSlotId() const { return mnSlotId; } + + void SetSlidesPerRow(sal_uInt16 nSlides) { mnSlidesPerRow = nSlides; } + sal_uInt16 GetSlidesPerRow() const { return mnSlidesPerRow; } + + void SetDrawMode(sal_uLong nNewDrawMode) { mnDrawMode = nNewDrawMode; }; + sal_uLong GetDrawMode() const { return mnDrawMode; }; + + void SetTabCtrlPercent( double nPercent ) { mnTabCtrlPercent = nPercent; } + double GetTabCtrlPercent() const { return mnTabCtrlPercent; } + + void SetIsNavigatorShowingAllShapes (const bool bIsNavigatorShowingAllShapes); + bool IsNavigatorShowingAllShapes (void) const; + + virtual void WriteUserDataSequence ( ::com::sun::star::uno::Sequence < ::com::sun::star::beans::PropertyValue >&, sal_Bool bBrowse = sal_False ); + virtual void ReadUserDataSequence ( const ::com::sun::star::uno::Sequence < ::com::sun::star::beans::PropertyValue >&, sal_Bool bBrowse = sal_False ); + +private: + sal_uInt16 mnRefCount; + VirtualDevice* mpVDev; + sal_Bool mbRuler; + SetOfByte maVisibleLayers; + SetOfByte maLockedLayers; + SetOfByte maPrintableLayers; + SdrHelpLineList maStandardHelpLines; + SdrHelpLineList maNotesHelpLines; + SdrHelpLineList maHandoutHelpLines; + sal_Bool mbNoColors; // Gliederungsmodus + sal_Bool mbNoAttribs; // Gliederungsmodus + Rectangle maVisArea; // Sichtbarer Bereich + PageKind mePageKind; // Seitentyp (Standard, Notizen, Handzettel) + sal_uInt16 mnSelectedPage; // Selektierte Seite + PageKind mePageKindOnLoad; + sal_uInt16 mnSelectedPageOnLoad; + EditMode meStandardEditMode; // Editmode im Zeichenmodus (Page/MasterPage) + EditMode meNotesEditMode; // Editmode im Notizen-Modus (Page/MasterPage) + EditMode meHandoutEditMode; // Editmode im Handzettel-Modus (Page/MasterPage) + EditMode meEditModeOnLoad; + sal_Bool mbLayerMode; // Layer an/aus + sal_Bool mbQuickEdit; // QuickEdit an/aus + sal_Bool mbBigHandles; // Grosse Handles + sal_Bool mbDoubleClickTextEdit; // Textmodus nach Doppelklick + sal_Bool mbClickChangeRotation; // Einfachklick wechselt Selektions-/Rotationsmodus + sal_uInt16 mnPresViewShellId; // ViewShell aus der die Pres. gestartet wurde + sal_uInt16 mnSlotId; // SlotId, welche initial ausgefuehrt wird + sal_uInt16 mnSlidesPerRow; // Dias pro Reihe auf dem Diatisch + sal_uLong mnDrawMode; // Drawmode fuer das normale Fenster + double mnTabCtrlPercent; + /** Remember whether the navigator shows all shapes (<TRUE/>) or only + the names ones (<FALSE/>). Not persistent. + */ + bool mbIsNavigatorShowingAllShapes; + + /** The type of the previous view shell. The (default) value + ViewShell::ST_NONE indicates that there was no previous view shell. + Note that this value is used only temporarily and is not saved or + restored. + */ + ViewShell::ShellType mePreviousViewShellType; + + ViewShell::ShellType meViewShellTypeOnLoad; +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/GraphicDocShell.hxx b/sd/source/ui/inc/GraphicDocShell.hxx new file mode 100755 index 000000000000..a95f020cd85b --- /dev/null +++ b/sd/source/ui/inc/GraphicDocShell.hxx @@ -0,0 +1,79 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_GRAPHIC_DOC_SHELL_HXX +#define SD_GRAPHIC_DOC_SHELL_HXX + +#include <sfx2/docfac.hxx> +#include <sfx2/objsh.hxx> +#include "DrawDocShell.hxx" +#include "glob.hxx" +#include "sdmod.hxx" +#include "pres.hxx" + +namespace sd { + +/************************************************************************* +|* +|* Document-Shell fuer Draw-Dokumente +|* +\************************************************************************/ + +class GraphicDocShell + : public DrawDocShell +{ +public: + TYPEINFO(); + + SFX_DECL_INTERFACE(SD_IF_SDGRAPHICDOCSHELL) + SFX_DECL_OBJECTFACTORY(); + + using SotObject::GetInterface; + + GraphicDocShell ( + SfxObjectCreateMode eMode = SFX_CREATE_MODE_EMBEDDED, + sal_Bool bSdDataObj=sal_False, + DocumentType=DOCUMENT_TYPE_DRAW); + + GraphicDocShell ( + const sal_uInt64 nModelCreationFlags, + sal_Bool bSdDataObj=sal_False, + DocumentType=DOCUMENT_TYPE_DRAW); + + virtual ~GraphicDocShell (void); +}; + +#ifndef SV_DECL_SD_GRAPHIC_DOC_SHELL_DEFINED +#define SV_DECL_SD_GRAPHIC_DOC_SHELL_DEFINED +SV_DECL_REF(GraphicDocShell) +#endif + +SV_IMPL_REF (GraphicDocShell) + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/GraphicObjectBar.hxx b/sd/source/ui/inc/GraphicObjectBar.hxx new file mode 100755 index 000000000000..14c6a45801a6 --- /dev/null +++ b/sd/source/ui/inc/GraphicObjectBar.hxx @@ -0,0 +1,66 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_GRAPHIC_OBJECT_BAR_HXX +#define SD_GRAPHIC_OBJECT_BAR_HXX + +#include <sfx2/module.hxx> +#include <sfx2/shell.hxx> +#include "glob.hxx" + +namespace sd { + +class View; +class ViewShell; + + +class GraphicObjectBar + : public SfxShell +{ +public: + TYPEINFO(); + SFX_DECL_INTERFACE( SD_IF_SDDRAWGRAFOBJECTBAR ) + + GraphicObjectBar (ViewShell* pSdViewShell, ::sd::View* pSdView); + virtual ~GraphicObjectBar (void); + + void GetAttrState( SfxItemSet& rSet ); + void Execute( SfxRequest& rReq ); + + void GetFilterState( SfxItemSet& rSet ); + void ExecuteFilter( SfxRequest& rReq ); + +protected: + ::sd::View* mpView; + ViewShell* mpViewSh; + sal_uInt16 nMappedSlotFilter; + +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/GraphicViewShell.hxx b/sd/source/ui/inc/GraphicViewShell.hxx new file mode 100755 index 000000000000..6b5d96be95c6 --- /dev/null +++ b/sd/source/ui/inc/GraphicViewShell.hxx @@ -0,0 +1,85 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_GRAPHIC_VIEW_SHELL_HXX +#define SD_GRAPHIC_VIEW_SHELL_HXX + +#include "DrawViewShell.hxx" + +class Window; + +namespace sd { + +/** View shell of the Draw application. + + <p>This class is an example of how not to do it: specialization by + inheritance. A graphic view shell is similar to a draw view shell + but lacks some of its features. Thus is should be at most a base + class of DrawViewShell. There even is special case code in + ViewShell that turns off some of the features for GraphicViewShell + instances.</p> +*/ +class GraphicViewShell + : public DrawViewShell +{ +public: + TYPEINFO(); + + SFX_DECL_VIEWFACTORY(GraphicViewShell); + SFX_DECL_INTERFACE(SD_IF_SDGRAPHICVIEWSHELL) + + /** Create a new view shell for the Draw application. + @param rViewShellBase + The new object will be stacked on this view shell base. + @param pFrameView + The frame view that makes it possible to pass information from + one view shell to the next. + */ + GraphicViewShell ( + SfxViewFrame* pFrame, + ViewShellBase& rViewShellBase, + ::Window* pParentWindow, + FrameView* pFrameView = NULL); + + virtual ~GraphicViewShell (void); + + /** This method is overloaded in order to have the layer mode allways + active. + */ + virtual void ChangeEditMode (EditMode eMode, bool bIsLayerModeActive); + +protected: + void ConstructGraphicViewShell (void); + virtual void ArrangeGUIElements (void); + +private: + DECL_LINK(TabBarSplitHandler, TabBar*); +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/GraphicViewShellBase.hxx b/sd/source/ui/inc/GraphicViewShellBase.hxx new file mode 100644 index 000000000000..294f5e1620c2 --- /dev/null +++ b/sd/source/ui/inc/GraphicViewShellBase.hxx @@ -0,0 +1,62 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_GRAPHIC_VIEW_SHELL_BASE_HXX +#define SD_GRAPHIC_VIEW_SHELL_BASE_HXX + +#include "ViewShellBase.hxx" + + +namespace sd { + +/** This class exists to be able to register another factory that + creates the view shell for the Draw application. +*/ +class GraphicViewShellBase + : public ViewShellBase +{ +public: + TYPEINFO(); + SFX_DECL_VIEWFACTORY(GraphicViewShellBase); + + /** This constructor is used by the view factory of the SFX + macros. + */ + GraphicViewShellBase (SfxViewFrame *pFrame, SfxViewShell* pOldShell); + virtual ~GraphicViewShellBase (void); + + /** Callback function for general slot calls. + */ + virtual void Execute (SfxRequest& rRequest); + +protected: + virtual void InitializeFramework (void); +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/ImpressViewShellBase.hxx b/sd/source/ui/inc/ImpressViewShellBase.hxx new file mode 100644 index 000000000000..a3b187fe45bb --- /dev/null +++ b/sd/source/ui/inc/ImpressViewShellBase.hxx @@ -0,0 +1,62 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_IMPRESS_VIEW_SHELL_BASE_HXX +#define SD_IMPRESS_VIEW_SHELL_BASE_HXX + +#include "ViewShellBase.hxx" + + +namespace sd { + +/** This class implements a few features that exist only for the Impress + application. +*/ +class ImpressViewShellBase + : public ViewShellBase +{ +public: + TYPEINFO(); + SFX_DECL_VIEWFACTORY(ImpressViewShellBase); + + /** This constructor is used by the view factory of the SFX + macros. + */ + ImpressViewShellBase (SfxViewFrame *pFrame, SfxViewShell* pOldShell); + virtual ~ImpressViewShellBase (void); + + /** Callback function for general slot calls. + */ + virtual void Execute (SfxRequest& rRequest); + +protected: + virtual void InitializeFramework (void); +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/LayerDialog.hrc b/sd/source/ui/inc/LayerDialog.hrc new file mode 100644 index 000000000000..88323539fb99 --- /dev/null +++ b/sd/source/ui/inc/LayerDialog.hrc @@ -0,0 +1,29 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#define FLT_WIN_LAYER_DIALOG 791 + +#define TB_LAYERS 1 diff --git a/sd/source/ui/inc/LayerDialogChildWindow.hxx b/sd/source/ui/inc/LayerDialogChildWindow.hxx new file mode 100755 index 000000000000..945630ee37d1 --- /dev/null +++ b/sd/source/ui/inc/LayerDialogChildWindow.hxx @@ -0,0 +1,54 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_LAYER_DIALOG_CHILD_WINDOW_HXX +#define SD_LAYER_DIALOG_CHILD_WINDOW_HXX + +#include <sfx2/childwin.hxx> + +namespace sd { + +/** Floating container for the layout dialog. + What is missing is a way to inform the layer dialog of changing views. +*/ +class LayerDialogChildWindow + : public SfxChildWindow +{ +public: + LayerDialogChildWindow ( + ::Window*, + sal_uInt16, + SfxBindings*, + SfxChildWinInfo*); + virtual ~LayerDialogChildWindow (void); + + SFX_DECL_CHILDWINDOW(LayerDialogChildWindow); +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/LayerDialogContent.hxx b/sd/source/ui/inc/LayerDialogContent.hxx new file mode 100755 index 000000000000..b1233b7249bc --- /dev/null +++ b/sd/source/ui/inc/LayerDialogContent.hxx @@ -0,0 +1,64 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_LAYER_DIALOG_CONTENT_HXX +#define SD_LAYER_DIALOG_CONTENT_HXX + +#include <sfx2/dockwin.hxx> +#include "LayerTabBar.hxx" +#ifndef _SD_SDRESID_HXX +#include "sdresid.hxx" +#endif + +namespace sd { + +class ViewShellBase; + +class LayerDialogContent + : public SfxDockingWindow +{ +public: + LayerDialogContent ( + SfxBindings* pBindings, + SfxChildWindow *pCW, + ::Window* pParent, + const SdResId& rSdResId, + ViewShellBase& rBase); + virtual ~LayerDialogContent (void); + +protected: + virtual sal_Bool Close (void); + virtual void Resize (void); + +private: + LayerTabBar maLayerTabBar; +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/LayerTabBar.hxx b/sd/source/ui/inc/LayerTabBar.hxx new file mode 100644 index 000000000000..4653fcd17bfe --- /dev/null +++ b/sd/source/ui/inc/LayerTabBar.hxx @@ -0,0 +1,93 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_LAYER_TAB_BAR_HXX +#define SD_LAYER_TAB_BAR_HXX + +#include <svtools/tabbar.hxx> +#include <svtools/transfer.hxx> + +namespace sd { + +/************************************************************************* +|* +|* TabBar fuer die Layerverwaltung +|* +\************************************************************************/ + +class DrawViewShell; + +class LayerTabBar + : public TabBar, + public DropTargetHelper +{ +public: + LayerTabBar ( + DrawViewShell* pDrViewSh, + ::Window* pParent); + LayerTabBar ( + DrawViewShell* pDrViewSh, + ::Window* pParent, + const ResId& rResId); + virtual ~LayerTabBar (void); + + /** Inform all listeners of this control that the current layer has been + activated. Call this method after switching the current layer and is + not done elsewhere (like when using ctrl + page up/down keys). + */ + void SendActivatePageEvent (void); + + /** Inform all listeners of this control that the current layer has been + deactivated. Call this method before switching the current layer + and is not done elsewhere (like when using ctrl page up/down keys). + */ + void SendDeactivatePageEvent (void); + +protected: + DrawViewShell* pDrViewSh; + + // TabBar + virtual void Select(); + virtual void DoubleClick(); + virtual void MouseButtonDown(const MouseEvent& rMEvt); + + virtual void Command(const CommandEvent& rCEvt); + + virtual long StartRenaming(); + virtual long AllowRenaming(); + virtual void EndRenaming(); + + virtual void ActivatePage(); + + // DropTargetHelper + virtual sal_Int8 AcceptDrop( const AcceptDropEvent& rEvt ); + virtual sal_Int8 ExecuteDrop( const ExecuteDropEvent& rEvt ); +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/MasterPageObserver.hxx b/sd/source/ui/inc/MasterPageObserver.hxx new file mode 100755 index 000000000000..caaa8c175f68 --- /dev/null +++ b/sd/source/ui/inc/MasterPageObserver.hxx @@ -0,0 +1,134 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_VIEW_MASTER_PAGE_OBSERVER_HXX +#define SD_VIEW_MASTER_PAGE_OBSERVER_HXX + +#include "tools/SdGlobalResourceContainer.hxx" +#include <osl/mutex.hxx> +#include <tools/link.hxx> +#include <memory> +#include <set> + +class SdDrawDocument; +class String; + +namespace sd { + +/** This singleton observes all registered documents for changes in the used + master pages and in turn informs its listeners about it. One such + listener is the master page selector control in the tool panel that + shows the recently used master pages. +*/ +class MasterPageObserver + : public SdGlobalResource +{ +public: + typedef ::std::set<String> MasterPageNameSet; + + /** Return the single instance of this class. + */ + static MasterPageObserver& Instance (void); + + /** The master page observer will listen to events of this document and + detect changes of the use of master pages. + */ + void RegisterDocument (SdDrawDocument& rDocument); + + /** The master page observer will stop to listen to events of this + document. + */ + void UnregisterDocument (SdDrawDocument& rDocument); + + /** Add a listener that is informed of master pages that are newly + assigned to slides or become unassigned. + @param rEventListener + The event listener to call for future events. Call + RemoveEventListener() before the listener is destroyed. + */ + void AddEventListener (const Link& rEventListener); + + /** Remove the given listener from the list of listeners. + @param rEventListener + After this method returns the given listener is not called back + from this object. Passing a listener that has not + been registered before is safe and is silently ignored. + */ + void RemoveEventListener (const Link& rEventListener); + +private: + static ::osl::Mutex maMutex; + + class Implementation; + ::std::auto_ptr<Implementation> mpImpl; + + MasterPageObserver (void); + virtual ~MasterPageObserver (void); + + /// The copy constructor is not implemented. Do not use! + MasterPageObserver (const MasterPageObserver&); + + /// The assignment operator is not implemented. Do not use! + MasterPageObserver& operator= (const MasterPageObserver&); +}; + + + + +/** Objects of this class are sent to listeners of the MasterPageObserver + singleton when the list of master pages of one document has changed. +*/ +class MasterPageObserverEvent +{ +public: + enum EventType { + /// Master page already exists when document is registered. + ET_MASTER_PAGE_EXISTS, + /// Master page has been added to a document. + ET_MASTER_PAGE_ADDED, + /// Master page has been removed from to a document. + ET_MASTER_PAGE_REMOVED + }; + + EventType meType; + SdDrawDocument& mrDocument; + const String& mrMasterPageName; + + MasterPageObserverEvent ( + EventType eType, + SdDrawDocument& rDocument, + const String& rMasterPageName) + : meType(eType), + mrDocument(rDocument), + mrMasterPageName(rMasterPageName) + {} + +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/MediaObjectBar.hxx b/sd/source/ui/inc/MediaObjectBar.hxx new file mode 100644 index 000000000000..2ad60e22182a --- /dev/null +++ b/sd/source/ui/inc/MediaObjectBar.hxx @@ -0,0 +1,61 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_MEDIA_OBJECT_BAR_HXX +#define SD_MEDIA_OBJECT_BAR_HXX + +#include <sfx2/module.hxx> +#include <sfx2/shell.hxx> +#include "glob.hxx" + +namespace sd { + +class View; +class ViewShell; + + +class MediaObjectBar + : public SfxShell +{ +public: + TYPEINFO(); + SFX_DECL_INTERFACE( SD_IF_SDDRAWMEDIAOBJECTBAR ) + + MediaObjectBar (ViewShell* pSdViewShell, ::sd::View* pSdView); + virtual ~MediaObjectBar (void); + + void GetState( SfxItemSet& rSet ); + void Execute( SfxRequest& rReq ); + +protected: + ::sd::View* mpView; + ViewShell* mpViewSh; +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/MutexOwner.hxx b/sd/source/ui/inc/MutexOwner.hxx new file mode 100644 index 000000000000..4ed23b31fa08 --- /dev/null +++ b/sd/source/ui/inc/MutexOwner.hxx @@ -0,0 +1,47 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_MUTEX_OWNER +#define SD_MUTEX_OWNER + +#include <osl/mutex.hxx> + +namespace sd { + +/** This class provides a mutex to derived classes. It exists to + satisfy some helper classes from cppuhelper who expect a mutex as + argument to their constructor. +*/ +class MutexOwner +{ +protected: + mutable ::osl::Mutex maMutex; +}; + +} // end of namespace ::sd + +#endif diff --git a/sd/source/ui/inc/NavigatorChildWindow.hxx b/sd/source/ui/inc/NavigatorChildWindow.hxx new file mode 100755 index 000000000000..8a8c0bd0f534 --- /dev/null +++ b/sd/source/ui/inc/NavigatorChildWindow.hxx @@ -0,0 +1,59 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_NAVIGATOR_CHILD_WINDOW_HXX +#define SD_NAVIGATOR_CHILD_WINDOW_HXX + +#include <sfx2/childwin.hxx> + +class Window; +class SfxBindings; + +namespace sd { + +/************************************************************************* +|* +|* Ableitung vom SfxChildWindowContext als "Behaelter" fuer Navigator +|* +\************************************************************************/ + +class NavigatorChildWindow + : public SfxChildWindowContext +{ +public: + NavigatorChildWindow ( + ::Window*, + sal_uInt16, + SfxBindings*, + SfxChildWinInfo*); + + SFX_DECL_CHILDWINDOWCONTEXT(NavigatorChildWindow) +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/NotesChildWindow.hrc b/sd/source/ui/inc/NotesChildWindow.hrc new file mode 100644 index 000000000000..c25109d81a22 --- /dev/null +++ b/sd/source/ui/inc/NotesChildWindow.hrc @@ -0,0 +1,30 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#define FLT_WIN_NOTES 790 + +#define NOTES 1 diff --git a/sd/source/ui/inc/NotesChildWindow.hxx b/sd/source/ui/inc/NotesChildWindow.hxx new file mode 100755 index 000000000000..b69f67eee7e1 --- /dev/null +++ b/sd/source/ui/inc/NotesChildWindow.hxx @@ -0,0 +1,55 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_NOTES_CHILD_WINDOW_HXX +#define SD_NOTES_CHILD_WINDOW_HXX + +#include <sfx2/childwin.hxx> + +#define NOTES_CHILD_WINDOW() ( \ + static_cast< ::sd::toolpanel::NotesChildWindow*>( \ + SfxViewFrame::Current()->GetChildWindow( \ + ::sd::toolpanel::NotesChildWindow::GetChildWindowId() \ + )->GetWindow())) + + +namespace sd { namespace notes { + +class NotesChildWindow + : public SfxChildWindow +{ +public: + NotesChildWindow (::Window*, sal_uInt16, SfxBindings*, SfxChildWinInfo*); + virtual ~NotesChildWindow (void); + + SFX_DECL_CHILDWINDOW (NotesChildWindow); +}; + + +} } // end of namespaces ::sd::notes + +#endif diff --git a/sd/source/ui/inc/OutlineBulletDlg.hxx b/sd/source/ui/inc/OutlineBulletDlg.hxx new file mode 100755 index 000000000000..253bd796c9ff --- /dev/null +++ b/sd/source/ui/inc/OutlineBulletDlg.hxx @@ -0,0 +1,71 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_OUTLINE_BULLET_DLG_HXX +#define SD_OUTLINE_BULLET_DLG_HXX + +#include <sfx2/tabdlg.hxx> + +#include "dlgolbul.hrc" + +namespace sd { + +class View; + +/************************************************************************* +|* +|* Bullet-Tab-Dialog +|* +\************************************************************************/ +class OutlineBulletDlg + : public SfxTabDialog +{ +public: + OutlineBulletDlg ( + ::Window* pParent, + const SfxItemSet* pAttr, + ::sd::View* pView ); + virtual ~OutlineBulletDlg (void); + + const SfxItemSet* GetOutputItemSet() const; + +protected: + virtual void PageCreated( sal_uInt16 nId, SfxTabPage &rPage ); + +private: + using SfxTabDialog::GetOutputItemSet; + + SfxItemSet aInputSet; + SfxItemSet *pOutputSet; + sal_Bool bTitle; + ::sd::View *pSdView; +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/OutlineView.hxx b/sd/source/ui/inc/OutlineView.hxx new file mode 100755 index 000000000000..704bc1d125d9 --- /dev/null +++ b/sd/source/ui/inc/OutlineView.hxx @@ -0,0 +1,264 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_OUTLINE_VIEW_HXX +#define SD_OUTLINE_VIEW_HXX + +#include <vcl/image.hxx> +#include <editeng/lrspitem.hxx> +#include "View.hxx" + +class SdPage; +class SdrPage; +class EditStatus; +class Paragraph; +class SdrTextObj; +class Outliner; +class SfxProgress; +struct PaintFirstLineInfo; +struct PasteOrDropInfos; + +namespace sd { namespace tools { +class EventMultiplexerEvent; +} } + +namespace sd { + +class DrawDocShell; +class OutlineViewShell; +class OutlineViewModelChangeGuard; +class DrawDocShell; + +static const int MAX_OUTLINERVIEWS = 4; + +/************************************************************************* +|* +|* Ableitung von ::sd::View fuer den Outline-Modus +|* +\************************************************************************/ + +class OutlineView + : public ::sd::View +{ + friend class OutlineViewModelChangeGuard; +public: + OutlineView (DrawDocShell* pDocSh, + ::Window* pWindow, + OutlineViewShell* pOutlineViewSh); + ~OutlineView (void); + + /** This method is called by the view shell that owns the view to tell + the view that it can safely connect to the application. + This method must not be called before the view shell is on the shell + stack. + */ + void ConnectToApplication (void); + void DisconnectFromApplication (void); + + TYPEINFO(); + + SdrTextObj* GetTitleTextObject(SdrPage* pPage); + SdrTextObj* GetOutlineTextObject(SdrPage* pPage); + + SdrTextObj* CreateTitleTextObject(SdPage* pPage); + SdrTextObj* CreateOutlineTextObject(SdPage* pPage); + + virtual void AddWindowToPaintView(OutputDevice* pWin); + virtual void DeleteWindowFromPaintView(OutputDevice* pWin); + + OutlinerView* GetViewByWindow (::Window* pWin) const; + SdrOutliner* GetOutliner() { return(mpOutliner) ; } + + Paragraph* GetPrevTitle(const Paragraph* pPara); + Paragraph* GetNextTitle(const Paragraph* pPara); + SdPage* GetActualPage(); + SdPage* GetPageForParagraph( Paragraph* pPara ); + Paragraph* GetParagraphForPage( ::Outliner* pOutl, SdPage* pPage ); + + /** selects the paragraph for the given page at the outliner view*/ + void SetActualPage( SdPage* pActual ); + + virtual void Paint (const Rectangle& rRect, ::sd::Window* pWin); + virtual void AdjustPosSizePixel( + const Point &rPos, + const Size &rSize, + ::sd::Window* pWindow); + + // Callbacks fuer LINKs + DECL_LINK( ParagraphInsertedHdl, Outliner * ); + DECL_LINK( ParagraphRemovingHdl, Outliner * ); + DECL_LINK( DepthChangedHdl, Outliner * ); + DECL_LINK( StatusEventHdl, EditStatus * ); + DECL_LINK( BeginMovingHdl, Outliner * ); + DECL_LINK( EndMovingHdl, Outliner * ); + DECL_LINK( RemovingPagesHdl, OutlinerView * ); + DECL_LINK( IndentingPagesHdl, OutlinerView * ); + DECL_LINK( BeginDropHdl, void * ); + DECL_LINK( EndDropHdl, void * ); + DECL_LINK( PaintingFirstLineHdl, PaintFirstLineInfo* ); + + sal_uLong GetPaperWidth() const { return 2*21000; } // DIN A4 Breite + + sal_Bool PrepareClose(sal_Bool bUI = sal_True); + + virtual sal_Bool GetAttributes( SfxItemSet& rTargetSet, sal_Bool bOnlyHardAttr=sal_False ) const; + virtual sal_Bool SetAttributes(const SfxItemSet& rSet, sal_Bool bReplaceAll = sal_False); + +// virtual sal_Bool HasMarkedObjUnused() const; + void FillOutliner(); + void SetLinks(); + void ResetLinks() const; + + SfxStyleSheet* GetStyleSheet() const; + + void SetSelectedPages(); + + virtual sal_Int8 AcceptDrop ( + const AcceptDropEvent& rEvt, + DropTargetHelper& rTargetHelper, + ::sd::Window* pTargetWindow = NULL, + sal_uInt16 nPage = SDRPAGE_NOTFOUND, + sal_uInt16 nLayer = SDRPAGE_NOTFOUND); + virtual sal_Int8 ExecuteDrop ( + const ExecuteDropEvent& rEvt, + DropTargetHelper& rTargetHelper, + ::sd::Window* pTargetWindow = NULL, + sal_uInt16 nPage = SDRPAGE_NOTFOUND, + sal_uInt16 nLayer = SDRPAGE_NOTFOUND); + + + // #97766# Re-implement GetScriptType for this view to get correct results + virtual sal_uInt16 GetScriptType() const; + + /** After this method has been called with <TRUE/> following changes of + the current page are ignored in that the corresponding text is not + selected. + This is used to supress unwanted side effects between selection and + cursor position. + */ + void IgnoreCurrentPageChanges (bool bIgnore); + +#if 0 + sal_Int32 GetPageNumberWidthPixel(); +#endif + + void InvalidateSlideNumberArea(); + + /** creates and inserts an empty slide for the given paragraph. */ + SdPage* InsertSlideForParagraph( Paragraph* pPara ); + + void UpdateParagraph( sal_uInt16 nPara ); + +protected: + virtual void OnBeginPasteOrDrop( PasteOrDropInfos* pInfos ); + virtual void OnEndPasteOrDrop( PasteOrDropInfos* pInfos ); + +private: + /** call this method before you do anything that can modify the outliner + and or the drawing document model. It will create needed undo actions */ + void BeginModelChange(); + + /** call this method after BeginModelChange(), when all possible model + changes are done. */ + void EndModelChange(); + + /** merge edit engine undo actions if possible */ + void TryToMergeUndoActions(); + + /** updates all changes in the outliner model to the draw model */ + void UpdateDocument(); + + OutlineViewShell* mpOutlineViewShell; + SdrOutliner* mpOutliner; + OutlinerView* mpOutlinerView[MAX_OUTLINERVIEWS]; + + List* mpOldParaOrder; + List* mpSelectedParas; + + sal_uInt16 mnPagesToProcess; // fuer die Fortschrittsanzeige + sal_uInt16 mnPagesProcessed; + + sal_Bool mbFirstPaint; + + SfxProgress* mpProgress; + + /** stores the last used high contrast mode. + this is changed in onUpdateStyleSettings() + */ + bool mbHighContrastMode; + + /** stores the last used document color. + this is changed in onUpdateStyleSettings() + */ + Color maDocColor; + + /** updates the high contrast settings and document color if they changed. + @param bForceUpdate forces the method to set all style settings + */ + void onUpdateStyleSettings( bool bForceUpdate = false ); + + /** this link is called from the vcl applicaten when the stylesettings + change. Its only purpose is to call onUpdateStyleSettings() then. + */ + DECL_LINK( AppEventListenerHdl, void * ); + + DECL_LINK(EventMultiplexerListener, sd::tools::EventMultiplexerEvent*); + + /** holds a model guard during drag and drop between BeginMovingHdl and EndMovingHdl */ + std::auto_ptr< OutlineViewModelChangeGuard > maDragAndDropModelGuard; + + Font maPageNumberFont; + sal_Int32 mnPageNumberWidthPixel; + Font maBulletFont; + + SvxLRSpaceItem maLRSpaceItem; + Image maSlideImage; +}; + +// calls IgnoreCurrentPageChangesLevel with true in ctor and with false in dtor +class OutlineViewPageChangesGuard +{ +public: + OutlineViewPageChangesGuard( OutlineView* pView ); + ~OutlineViewPageChangesGuard(); +private: + OutlineView* mpView; +}; + +// calls BeginModelChange() on c'tor and EndModelChange() on d'tor +class OutlineViewModelChangeGuard +{ +public: + OutlineViewModelChangeGuard( OutlineView& rView ); + ~OutlineViewModelChangeGuard(); +private: + OutlineView& mrView; +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/OutlineViewShell.hxx b/sd/source/ui/inc/OutlineViewShell.hxx new file mode 100755 index 000000000000..d411771b5e56 --- /dev/null +++ b/sd/source/ui/inc/OutlineViewShell.hxx @@ -0,0 +1,179 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_OUTLINE_VIEW_SHELL_HXX +#define SD_OUTLINE_VIEW_SHELL_HXX + +#include "DrawDocShell.hxx" +#include "ViewShell.hxx" +#include "OutlineView.hxx" + +class SdPage; +class TransferableDataHelper; +class TransferableClipboardListener; + +namespace sd { + +class SdUnoOutlineView; + +/** Show a textual overview of the text contents of all slides. +*/ +class OutlineViewShell + : public ViewShell +{ +public: + TYPEINFO(); + + SFX_DECL_VIEWFACTORY(OutlineViewShell); + SFX_DECL_INTERFACE(SD_IF_SDOUTLINEVIEWSHELL) + + // The previous macros change access mode. To be sure switch back + // to public access. +public: + /** Create a new view shell for the outline mode. + @param rViewShellBase + The new object will be stacked on this view shell base. + @param pFrameView + The frame view that makes it possible to pass information from + one view shell to the next. + */ + OutlineViewShell ( + SfxViewFrame* pFrame, + ViewShellBase& rViewShellBase, + ::Window* pParentWindow, + FrameView* pFrameView = NULL); + + virtual ~OutlineViewShell (void); + + virtual void Shutdown (void); + + virtual void Paint(const Rectangle& rRect, ::sd::Window* pWin); + + /** Arrange and resize the GUI elements like rulers, sliders, and + buttons as well as the actual document view according to the size of + the enclosing window and current sizes of buttons, rulers, and + sliders. + */ + virtual void ArrangeGUIElements (void); + + virtual sal_uInt16 PrepareClose( sal_Bool bUI = sal_True, sal_Bool bForBrowsing = sal_False ); + + virtual long VirtHScrollHdl(ScrollBar* pHScroll); + virtual long VirtVScrollHdl(ScrollBar* pVHScroll); + + virtual void AddWindow(::sd::Window* pWin); + virtual void RemoveWindow(::sd::Window* pWin); + + virtual void Activate( sal_Bool IsMDIActivate ); + virtual void Deactivate( sal_Bool IsMDIActivate ); + + virtual SdPage* GetActualPage(); + + /// inherited from sd::ViewShell + virtual SdPage* getCurrentPage() const; + + void ExecCtrl(SfxRequest &rReq); + void GetCtrlState(SfxItemSet &rSet); + void GetMenuState(SfxItemSet &rSet); + void GetAttrState(SfxItemSet &rSet); + void GetState (SfxItemSet& rSet); + + void ExecStatusBar(SfxRequest& rReq); + void GetStatusBarState(SfxItemSet& rSet); + + void FuTemporary(SfxRequest &rReq); + void FuTemporaryModify(SfxRequest &rReq); + void FuPermanent(SfxRequest &rReq); + void FuSupport(SfxRequest &rReq); + + virtual void SetZoom(long nZoom); + virtual void SetZoomRect(const Rectangle& rZoomRect); + virtual String GetSelectionText( sal_Bool bCompleteWords = sal_False ); + virtual sal_Bool HasSelection( sal_Bool bText = sal_True ) const; + + void Execute(SfxRequest& rReq); + + virtual void ReadFrameViewData(FrameView* pView); + virtual void WriteFrameViewData(); + + virtual void Command( const CommandEvent& rCEvt, ::sd::Window* pWin ); + virtual sal_Bool KeyInput(const KeyEvent& rKEvt, ::sd::Window* pWin); + virtual void MouseButtonUp(const MouseEvent& rMEvt, ::sd::Window* pWin); + + sal_uLong Read(SvStream& rInput, const String& rBaseURL, sal_uInt16 eFormat); + + virtual void WriteUserDataSequence ( ::com::sun::star::uno::Sequence < ::com::sun::star::beans::PropertyValue >&, sal_Bool bBrowse = sal_False ); + virtual void ReadUserDataSequence ( const ::com::sun::star::uno::Sequence < ::com::sun::star::beans::PropertyValue >&, sal_Bool bBrowse = sal_False ); + + /** this method is called when the visible area of the view from this viewshell is changed */ + virtual void VisAreaChanged(const Rectangle& rRect); + + /** Create an accessible object representing the specified window. + @param pWindow + The returned object makes the document displayed in this window + accessible. + @return + Returns an <type>AccessibleDrawDocumentView</type> object. + */ + virtual ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessible> + CreateAccessibleDocumentView (::sd::Window* pWindow); + + /** Update the preview to show the specified page. + */ + virtual void UpdatePreview (SdPage* pPage, sal_Bool bInit = sal_False); + + virtual css::uno::Reference<css::drawing::XDrawSubController> CreateSubController (void); + + /** Make the given page the new current page. This method + notifies the controller and adapts the selection of the + model. + @param pPage + The new current page. Pass NULL when there is no current page. + */ + void SetCurrentPage (SdPage* pPage); + + bool UpdateTitleObject( SdPage* pPage, Paragraph* pPara ); + bool UpdateOutlineObject( SdPage* pPage, Paragraph* pPara ); + +protected: + virtual Size GetOptimalSizePixel() const; + +private: + OutlineView* pOlView; + SdPage* pLastPage; // Zur performanten Aufbereitung der Preview + TransferableClipboardListener* pClipEvtLstnr; + sal_Bool bPastePossible; + bool mbInitialized; + + void Construct (DrawDocShell* pDocSh); + DECL_LINK( ClipboardChanged, TransferableDataHelper* ); +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/OutlineViewShellBase.hxx b/sd/source/ui/inc/OutlineViewShellBase.hxx new file mode 100644 index 000000000000..2486eb80254c --- /dev/null +++ b/sd/source/ui/inc/OutlineViewShellBase.hxx @@ -0,0 +1,55 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_OUTLINE_VIEW_SHELL_BASE_HXX +#define SD_OUTLINE_VIEW_SHELL_BASE_HXX + +#include "ImpressViewShellBase.hxx" + + +namespace sd { + +/** This class exists to be able to register a factory that + creates an outline view shell as default. +*/ +class OutlineViewShellBase + : public ImpressViewShellBase +{ +public: + TYPEINFO(); + SFX_DECL_VIEWFACTORY(OutlineViewShellBase); + + /** This constructor is used by the view factory of the SFX + macros. + */ + OutlineViewShellBase (SfxViewFrame *pFrame, SfxViewShell* pOldShell); + virtual ~OutlineViewShellBase (void); +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/OutlinerIteratorImpl.hxx b/sd/source/ui/inc/OutlinerIteratorImpl.hxx new file mode 100755 index 000000000000..320f5c6878d9 --- /dev/null +++ b/sd/source/ui/inc/OutlinerIteratorImpl.hxx @@ -0,0 +1,272 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_OUTLINER_ITERATOR_IMPL_HXX +#define SD_OUTLINER_ITERATOR_IMPL_HXX + +#include <svx/svdobj.hxx> +#include "OutlinerIterator.hxx" +#include <boost/weak_ptr.hpp> + +class SdDrawDocument; +class SdPage; +class SdrObjListIter; + +namespace sd { + +class ViewShell; + +namespace outliner { + +class IteratorImplBase; + +/** Base class for the polymorphic implementation class of the + <type>Iterator</type> class. The iterators based on this class are + basically uni directional iterators. Their direction can, however, be + reversed at any point of their life time. +*/ +class IteratorImplBase +{ +public: + /** The constructor stores the given arguments to be used by the derived + classes. + @param pDocument + The document provides the information to be iterated on. + @param pViewShellWeak + Some information has to be taken from the view shell. + @param bDirectionIsForward + This flag defines the iteration direction. When <TRUE/> then + the direction is forwards otherwise it is backwards. + */ + IteratorImplBase (SdDrawDocument* pDocument, + const ::boost::weak_ptr<ViewShell>& rpViewShellWeak, + bool bDirectionIsForward); + IteratorImplBase (SdDrawDocument* pDocument, + const ::boost::weak_ptr<ViewShell>& rpViewShellWeak, + bool bDirectionIsForward, PageKind ePageKind, EditMode eEditMode); + virtual ~IteratorImplBase (void); + + /** Advance to the next text of the current object or to the next object. + This takes the iteration direction into + account. The new object pointed to can be retrieved (among other + information) by calling the <member>GetPosition</member> method. + */ + virtual void GotoNextText (void) = 0; + /** Return an object that describes the current object. + @return + The returned object describes the current object pointed to by + the iterator. See the description of + <type>IteratorPosition</type> for details on the available + information. + */ + virtual const IteratorPosition& GetPosition (void); + /** Create an exact copy of this object. No argument should be + specified when called from the outside. It then creates an object + first and passes that to the inherited <member>Clone()</member> + methods to fill in class specific information. + @return + Returns a copy of this object. When this method is called with + an argument then this value will be returned. + */ + virtual IteratorImplBase* Clone (IteratorImplBase* pObject=NULL) const; + /** Test the equality of the this object and the given iterator. Two + iterators are taken to be equal when they point to the same object. + Iteration direction is not taken into account. + @param rIterator + The iterator to compare to. + @return + When both iterators ar equal <TRUE/> is returned, <FALSE/> otherwise. + */ + virtual bool operator== (const IteratorImplBase& rIterator) const; + /** This method is used by the equality operator. Additionaly to the + iterator it takes a type information which is taken into account on + comparison. It is part of a "multimethod" pattern. + @param rIterator + The iterator to compare to. + @param aType + The type of the iterator. + @return + Returns <TRUE/> when both iterators point to the same object. + */ + virtual bool IsEqual (const IteratorImplBase& rIterator, IteratorType aType) const; + /** Reverse the direction of iteration. The current object stays the same. + */ + virtual void Reverse (void); + +protected: + /// The current position as returned by <member>GetPosition()</member>. + IteratorPosition maPosition; + /// The document on whose data the iterator operates. + SdDrawDocument* mpDocument; + /// Necessary secondary source of information. + ::boost::weak_ptr<ViewShell> mpViewShellWeak; + /// Specifies the search direction. + bool mbDirectionIsForward; +}; + + + + +/** Iterator all objects that belong to the current mark list + a.k.a. selection. It is assumed that all marked objects belong to the + same page. It is further assumed that the mark list does not change + while an iterator is alive. It is therefore the responsibility of an + iterator's owner to handle the case of a changed mark list. + + <p>For documentation of the methods please refere to the base class + <type>IteratorImplBase</type>.</p> +*/ +class SelectionIteratorImpl + : public IteratorImplBase +{ +public: + SelectionIteratorImpl ( + const ::std::vector< SdrObjectWeakRef >& rObjectList, + sal_Int32 nObjectIndex, + SdDrawDocument* pDocument, + const ::boost::weak_ptr<ViewShell>& rpViewShellWeak, + bool bDirectionIsForward); + SelectionIteratorImpl (const SelectionIteratorImpl& rObject); + virtual ~SelectionIteratorImpl (void); + + virtual void GotoNextText (void); + virtual const IteratorPosition& GetPosition (void); + virtual IteratorImplBase* Clone (IteratorImplBase* pObject) const; + virtual bool operator== (const IteratorImplBase& rIterator) const; + +private: + const ::std::vector<SdrObjectWeakRef>& mrObjectList; + sal_Int32 mnObjectIndex; + + /** Compare the given iterator with this object. This method handles + only the case that the given iterator is an instance of this class. + @param rIterator + The iterator to compare to. + @param aType + The type of the iterator. + @return + Returns <TRUE/> when both iterators point to the same object. + */ + virtual bool IsEqual (const IteratorImplBase& rIterator, IteratorType aType) const; + + IteratorImplBase& operator= (const IteratorImplBase& rIterator); +}; + + +/** Iterator for iteration over all objects in a single view. On reaching + the last object on the last page (or the first object on the first page) + the view is *not* switched. Further calls to the + <member>GotoNextObject()</member> method will be ignored. + + <p>For documentation of the methods please refere to the base class + <type>IteratorImplBase</type>.</p> +*/ +class ViewIteratorImpl : public IteratorImplBase +{ +public: + ViewIteratorImpl ( + sal_Int32 nPageIndex, + SdDrawDocument* pDocument, + const ::boost::weak_ptr<ViewShell>& rpViewShellWeak, + bool bDirectionIsForward); + ViewIteratorImpl ( + sal_Int32 nPageIndex, + SdDrawDocument* pDocument, + const ::boost::weak_ptr<ViewShell>& rpViewShellWeak, + bool bDirectionIsForward, + PageKind ePageKind, + EditMode eEditMode); + virtual ~ViewIteratorImpl (void); + + virtual void GotoNextText (void); + virtual IteratorImplBase* Clone (IteratorImplBase* pObject) const; + virtual void Reverse (void); + +protected: + /// Number of pages in the view that is specified by <member>maPosition</member>. + sal_Int32 mnPageCount; + + /** Initialize this iterator with respect to the given location. After + this call the object looks like newly constructed. + */ + void Init (IteratorLocation aLocation); + + /** Set up page pointer and object list iterator for the specified + page. + @param nPageIndex + Index of the new page. It may lie outside the valid range for + page indices. + */ + void SetPage (sal_Int32 nPageIndex); + +private: + /// Indicates whether a page changed occured on switching to current page. + bool mbPageChangeOccured; + /// Pointer to the page associated with the current page index. May be NULL. + SdPage* mpPage; + /// Iterator of all objects on the current page. + SdrObjListIter* mpObjectIterator; + + // Don't use this operator. + ViewIteratorImpl& operator= (const ViewIteratorImpl&){return *this;}; +}; + + + + +/** Iterator for iteration over all objects in all views. It automatically + switches views when reaching the end/beginning of a view. + + <p>For documentation of the methods please refere to the base class + <type>IteratorImplBase</type>.</p> +*/ +class DocumentIteratorImpl : public ViewIteratorImpl +{ +public: + DocumentIteratorImpl ( + sal_Int32 nPageIndex, + PageKind ePageKind, + EditMode eEditMode, + SdDrawDocument* pDocument, + const ::boost::weak_ptr<ViewShell>& rpViewShellWeak, + bool bDirectionIsForward); + virtual ~DocumentIteratorImpl (void); + + virtual void GotoNextText (void); + virtual IteratorImplBase* Clone (IteratorImplBase* pObject) const; + +private: + sal_Int32 mnPageCount; + + // Don't use this operator. + DocumentIteratorImpl& operator= (const DocumentIteratorImpl& ){return *this;}; +}; + + +} } // end of namespace ::sd::outliner + +#endif diff --git a/sd/source/ui/inc/PaneChildWindows.hxx b/sd/source/ui/inc/PaneChildWindows.hxx new file mode 100755 index 000000000000..6324a0256e12 --- /dev/null +++ b/sd/source/ui/inc/PaneChildWindows.hxx @@ -0,0 +1,100 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_PANE_CHILD_WINDOWS_HXX +#define SD_PANE_CHILD_WINDOWS_HXX + +#include <sfx2/childwin.hxx> +#include <sfx2/taskpane.hxx> + +namespace sd { + +class PaneChildWindow + : public SfxChildWindow +{ +public: + PaneChildWindow ( + ::Window* pParentWindow, + sal_uInt16 nId, + SfxBindings* pBindings, + SfxChildWinInfo* pInfo, + const sal_uInt16 nDockWinTitleResId, + const sal_uInt16 nTitleBarResId, + SfxChildAlignment eAlignment); + virtual ~PaneChildWindow (void); +}; + + + + +class LeftPaneImpressChildWindow + : public PaneChildWindow +{ +public: + LeftPaneImpressChildWindow (::Window*, sal_uInt16, SfxBindings*, SfxChildWinInfo*); + + SFX_DECL_CHILDWINDOW(LeftPaneImpressChildWindow); +}; + + + + +class LeftPaneDrawChildWindow + : public PaneChildWindow +{ +public: + LeftPaneDrawChildWindow (::Window*, sal_uInt16, SfxBindings*, SfxChildWinInfo*); + + SFX_DECL_CHILDWINDOW(LeftPaneDrawChildWindow); +}; + + + + +//====================================================================================================================== +//= ToolPanelChildWindow +//====================================================================================================================== +class ToolPanelChildWindow :public PaneChildWindow + ,public ::sfx2::ITaskPaneToolPanelAccess +{ +public: + ToolPanelChildWindow( + ::Window* i_pParentWindow, + sal_uInt16 i_nId, + SfxBindings* i_pBindings, + SfxChildWinInfo* i_pChildWindowInfo ); + + SFX_DECL_CHILDWINDOW( ToolPanelChildWindow ); + + // ::sfx2::ITaskPaneToolPanelAccess + virtual void ActivateToolPanel( const ::rtl::OUString& i_rPanelURL ); +}; + + +} // end of namespace ::sd + +#endif diff --git a/sd/source/ui/inc/PaneDockingWindow.hrc b/sd/source/ui/inc/PaneDockingWindow.hrc new file mode 100755 index 000000000000..eb7c23c075ec --- /dev/null +++ b/sd/source/ui/inc/PaneDockingWindow.hrc @@ -0,0 +1,30 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#define FLT_LEFT_PANE_IMPRESS_DOCKING_WINDOW 792 +#define FLT_LEFT_PANE_DRAW_DOCKING_WINDOW 793 +#define FLT_TOOL_PANEL_DOCKING_WINDOW 794 diff --git a/sd/source/ui/inc/PaneDockingWindow.hxx b/sd/source/ui/inc/PaneDockingWindow.hxx new file mode 100644 index 000000000000..2f30f1554aed --- /dev/null +++ b/sd/source/ui/inc/PaneDockingWindow.hxx @@ -0,0 +1,90 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_PANE_DOCKING_WINDOW_HXX +#define SD_PANE_DOCKING_WINDOW_HXX + +#include <sfx2/titledockwin.hxx> +#include <sfx2/viewfrm.hxx> + +#include <boost/scoped_ptr.hpp> +#include <boost/shared_ptr.hpp> + +class ToolBox; +class SplitWindow; + +namespace sd { + + class PaneDockingWindow : public ::sfx2::TitledDockingWindow +{ +public: + /** Create a new docking window. + @param pBindings + Used, among others, to determine the ViewShellBase and + PaneManager that manage the new docking window. + @param pChildWindow + This child window is the logical container for the new docking + window. + @param pParent + The parent window of the new docking window. + @param rResId + The resource is used to determine initial size and attributes. + @param rsTitle + the initial title + */ + PaneDockingWindow ( + SfxBindings *pBindings, + SfxChildWindow *pChildWindow, + ::Window* pParent, + const ResId& rResId, + const ::rtl::OUString& rsTitle); + + virtual ~PaneDockingWindow (void); + virtual void StateChanged( StateChangedType nType ); + virtual void MouseButtonDown (const MouseEvent& rEvent); + /** When docked the given range is passed to the parent SplitWindow. + */ + void SetValidSizeRange (const Range aValidSizeRange); + + enum Orientation { HorizontalOrientation, VerticalOrientation, UnknownOrientation }; + /** When the PaneDockingWindow is docked and managed by a split window + it can derive its orientation from the orientation of the split + window and return either HorizontalOrientation or + VerticalOrientation. + Otherwise UnknownOrientation is returned. + */ + Orientation GetOrientation (void) const; + + /** The current height of the title bar. + */ + sal_Int32 mnTitleBarHeight; + +}; + +} // end of namespace ::sd + +#endif diff --git a/sd/source/ui/inc/PaneShells.hxx b/sd/source/ui/inc/PaneShells.hxx new file mode 100755 index 000000000000..de410c2565bf --- /dev/null +++ b/sd/source/ui/inc/PaneShells.hxx @@ -0,0 +1,90 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_PANE_SHELLS_HXX +#define SD_PANE_SHELLS_HXX + + +#include <sfx2/module.hxx> +#include <sfx2/shell.hxx> +#include "glob.hxx" + +class CommandEvent; + +namespace sd { + + +/** Shell that displays the left pane for Impress. The shell does not do + anything else and has especially no slots. +*/ +class LeftImpressPaneShell + : public SfxShell +{ +public: + TYPEINFO(); + SFX_DECL_INTERFACE(SD_IF_SDLEFTIMPRESSPANESHELL) + + LeftImpressPaneShell (void); + virtual ~LeftImpressPaneShell (void); +}; + + + + +/** Shell that displays the left pane for Draw. The shell does not do + anything else and has especially no slots. +*/ +class LeftDrawPaneShell + : public SfxShell +{ +public: + TYPEINFO(); + SFX_DECL_INTERFACE(SD_IF_SDLEFTDRAWPANESHELL) + + LeftDrawPaneShell (void); + virtual ~LeftDrawPaneShell (void); +}; + + + + +/** Shell that displays the right pane for both Impress and Draw. The shell + does not do anything else and has especially no slots. +*/ +class ToolPanelPaneShell : public SfxShell +{ +public: + TYPEINFO(); + SFX_DECL_INTERFACE( SD_IF_SDTOOLPANELPANESHELL ) + + ToolPanelPaneShell(); + virtual ~ToolPanelPaneShell(); +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/PresentationViewShell.hxx b/sd/source/ui/inc/PresentationViewShell.hxx new file mode 100755 index 000000000000..75687665593f --- /dev/null +++ b/sd/source/ui/inc/PresentationViewShell.hxx @@ -0,0 +1,75 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_PRESENTATION_VIEW_SHELL_HXX +#define SD_PRESENTATION_VIEW_SHELL_HXX + +#ifndef SD_DRAW_VIEW_SHELL +#include "DrawViewShell.hxx" +#endif + +namespace sd { + +/** This view shell is responsible for showing the presentation of an + Impress document. +*/ +class PresentationViewShell : public DrawViewShell +{ +public: + TYPEINFO(); + + SFX_DECL_VIEWFACTORY(PresViewShell); + SFX_DECL_INTERFACE( SD_IF_SDPRESVIEWSHELL ) + + PresentationViewShell( SfxViewFrame* pFrame, ViewShellBase& rViewShellBase, ::Window* pParentWindow, FrameView* pFrameView = NULL); + virtual ~PresentationViewShell (void); + + /** This method is used by a simple class that passes some + arguments from the creator of the new view shell to the new view + shell object by waiting for its asynchronous creation. + @param pFrameView + The frame view that is typically used by the creating object and + that shall be shared by the created view shell. + */ + void FinishInitialization( FrameView* pFrameView ); + + virtual void Resize (void); + +protected: + virtual SvxRuler* CreateHRuler(::sd::Window* pWin, sal_Bool bIsFirst); + virtual SvxRuler* CreateVRuler(::sd::Window* pWin); + +private: + Rectangle maOldVisArea; + + virtual void Activate (sal_Bool bIsMDIActivate); + virtual void Paint (const Rectangle& rRect, ::sd::Window* pWin); +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/PresentationViewShellBase.hxx b/sd/source/ui/inc/PresentationViewShellBase.hxx new file mode 100644 index 000000000000..26b31e2bfd65 --- /dev/null +++ b/sd/source/ui/inc/PresentationViewShellBase.hxx @@ -0,0 +1,58 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_PRESENTATION_VIEW_SHELL_BASE_HXX +#define SD_PRESENTATION_VIEW_SHELL_BASE_HXX + +#include "ViewShellBase.hxx" + + +namespace sd { + +/** This class exists to be able to register another factory that + creates the view shell for the presentation. +*/ +class PresentationViewShellBase + : public ViewShellBase +{ +public: + TYPEINFO(); + SFX_DECL_VIEWFACTORY(PresentationViewShellBase); + + /** This constructor is used by the view factory of the SFX + macros. + */ + PresentationViewShellBase (SfxViewFrame *pFrame, SfxViewShell* pOldShell); + virtual ~PresentationViewShellBase (void); + +protected: + virtual void InitializeFramework (void); +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/PreviewRenderer.hxx b/sd/source/ui/inc/PreviewRenderer.hxx new file mode 100755 index 000000000000..b157d686b044 --- /dev/null +++ b/sd/source/ui/inc/PreviewRenderer.hxx @@ -0,0 +1,178 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_PREVIEW_RENDERER_HXX +#define SD_PREVIEW_RENDERER_HXX + +#include "drawview.hxx" +#include <vcl/image.hxx> +#include <vcl/virdev.hxx> +#include <svl/listener.hxx> +#include <memory> + + +class OutputDevice; +class SdPage; +class VirtualDevice; + +namespace sd { + +class DrawDocShell; +class DrawView; + + +class PreviewRenderer + : public SfxListener +{ +public: + /** Create a new preview renderer that takes some of its inital values + from the given output device. + @param pTemplate + May be NULL. + @param bPaintFrame + When <TRUE/> (the default) then a frame is painted around the + preview. This makes the actual preview smaller. + */ + PreviewRenderer ( + OutputDevice* pTemplate = NULL, + const bool bPaintFrame = true); + + ~PreviewRenderer (void); + + /** Render a page with the given pixel size. + Use this version when only the width of the preview is known to the + caller. The height is then calculated according to the aspect + ration of the given page. + @param pPage + The page to render. + @param nWidth + The width of the preview in device coordinates. + @param sSubstitutionText + When the actual preview can not be created for some reason, then + this text is painted in an empty rectangle of the requested size + instead. + @param bObeyHighContrastMode + When <FALSE/> then the high contrast mode of the application is + ignored and the preview is rendered in normal mode. When + <TRUE/> and high contrast mode is active then the preview is + rendered in high contrast mode. + @param bDisplayPresentationObjects + When <FALSE/> then the PresObj place holders are not displayed + in the returned preview. + */ + Image RenderPage ( + const SdPage* pPage, + const sal_Int32 nWidth, + const String& sSubstitutionText, + const bool bObeyHighContrastMode = true, + const bool bDisplayPresentationObjects = true); + + /** Render a page with the given pixel size. + @param pPage + The page to render. + @param aPreviewPixelSize + The size in device coordinates of the preview. + @param sSubstitutionText + When the actual preview can not be created for some reason, then + this text is painted in an empty rectangle of the requested size + instead. + @param bObeyHighContrastMode + When <FALSE/> then the high contrast mode of the application is + ignored and the preview is rendered in normal mode. When + <TRUE/> and high contrast mode is active then the preview is + rendered in high contrast mode. + @param bDisplayPresentationObjects + When <FALSE/> then the PresObj place holders are not displayed + in the returned preview. + */ + Image RenderPage ( + const SdPage* pPage, + const Size aPreviewPixelSize, + const String& sSubstitutionText, + const bool bObeyHighContrastMode = true, + const bool bDisplayPresentationObjects = true); + + /** Render an image that contains the given substitution text instead of a + slide preview. + @param aPreviewPixelSize + The size in device coordinates of the image. + */ + Image RenderSubstitution ( + const Size& rPreviewPixelSize, + const String& sSubstitutionText); + + /** Scale the given bitmap by keeping its aspect ratio to the desired + width. Add a frame to it afterwards. + */ + Image ScaleBitmap ( + const BitmapEx& rBitmap, + int nWidth); + +protected: + virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint); + +private: + ::std::auto_ptr<VirtualDevice> mpPreviewDevice; + ::std::auto_ptr<DrawView> mpView; + DrawDocShell* mpDocShellOfView; + int mnWidthOfView; + const Color maFrameColor; + const bool mbHasFrame; + static const int snSubstitutionTextSize; + // Width of the frame that is painted arround the preview. + static const int snFrameWidth; + + bool Initialize ( + const SdPage* pPage, + const Size& rPixelSize, + const bool bObeyHighContrastMode); + void Cleanup (void); + void PaintPage ( + const SdPage* pPage, + const bool bDisplayPresentationObjects); + void PaintSubstitutionText (const String& rSubstitutionText); + void PaintFrame (void); + + /** Set up the map mode so that the given page is renderer into a bitmap + with the specified width. + @param rPage + The page for which the preview is created. + @param rPixelSize + The size of the resulting preview bitmap. Note that this size + includes the frame. The actual preview is smaller accordingly. + */ + void SetupOutputSize (const SdPage& rPage, const Size& rPixelSize); + + /** When mpView is empty then create a new view and initialize it. + Otherwise just initialize it. + */ + void ProvideView (DrawDocShell* pDocShell); +}; + +} // end of namespace ::sd + +#endif diff --git a/sd/source/ui/inc/Ruler.hxx b/sd/source/ui/inc/Ruler.hxx new file mode 100755 index 000000000000..8b319ca7f16f --- /dev/null +++ b/sd/source/ui/inc/Ruler.hxx @@ -0,0 +1,82 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_RULER_HXX +#define SD_RULER_HXX + + +#include <svx/ruler.hxx> + + +namespace sd { + +class DrawViewShell; +class RulerCtrlItem; +class View; +class Window; + +/************************************************************************* +|* +|* das Fenster der Diashow leitet Mouse- und Key-Events an die SlideViewShell +|* +\************************************************************************/ + +class Ruler + : public SvxRuler +{ +public: + Ruler ( + DrawViewShell& rViewSh, + ::Window* pParent, + ::sd::Window* pWin, + sal_uInt16 nRulerFlags, + SfxBindings& rBindings, + WinBits nWinStyle); + virtual ~Ruler (void); + + void SetNullOffset(const Point& rOffset); + + sal_Bool IsHorizontal() const { return bHorz; } + + using ::Ruler::SetNullOffset; +protected: + ::sd::View* pSdView; + ::sd::Window* pSdWin; + DrawViewShell* pDrViewShell; + RulerCtrlItem* pCtrlItem; + sal_Bool bHorz; + + virtual void MouseButtonDown(const MouseEvent& rMEvt); + virtual void MouseButtonUp(const MouseEvent& rMEvt); + virtual void MouseMove(const MouseEvent& rMEvt); + virtual void Command(const CommandEvent& rCEvt); + virtual void ExtraDown(); +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/SdUnoDrawView.hxx b/sd/source/ui/inc/SdUnoDrawView.hxx new file mode 100755 index 000000000000..d29ca3b09d32 --- /dev/null +++ b/sd/source/ui/inc/SdUnoDrawView.hxx @@ -0,0 +1,153 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_UNO_DRAW_VIEW_HXX +#define SD_UNO_DRAW_VIEW_HXX + +#include "DrawSubController.hxx" +#include "DrawController.hxx" +#include "DrawViewShell.hxx" +#include <cppuhelper/basemutex.hxx> + +class SdXImpressDocument; +class SdPage; + +namespace css = ::com::sun::star; + +namespace com { namespace sun { namespace star { namespace drawing { +class XLayer; +} } } } + +namespace sd { + +class DrawController; +class DrawViewShell; + +/** This class implements the DrawViewShell specific part of the controller. +*/ +class SdUnoDrawView + : private cppu::BaseMutex, + public DrawSubControllerInterfaceBase +{ +public: + SdUnoDrawView ( + DrawController& rController, + DrawViewShell& rViewShell, + View& rView) throw(); + virtual ~SdUnoDrawView (void) throw(); + + // XSelectionSupplier + + virtual sal_Bool SAL_CALL select ( + const css::uno::Any& aSelection) + throw(css::lang::IllegalArgumentException, + css::uno::RuntimeException); + + virtual css::uno::Any SAL_CALL getSelection (void) + throw(css::uno::RuntimeException); + + virtual void SAL_CALL addSelectionChangeListener ( + const css::uno::Reference<css::view::XSelectionChangeListener>& rxListener) + throw(css::uno::RuntimeException); + + virtual void SAL_CALL removeSelectionChangeListener ( + const css::uno::Reference<css::view::XSelectionChangeListener>& rxListener) + throw(css::uno::RuntimeException); + + + // XDrawView + + virtual void SAL_CALL setCurrentPage ( + const css::uno::Reference<css::drawing::XDrawPage >& xPage) + throw(css::uno::RuntimeException); + + virtual css::uno::Reference<css::drawing::XDrawPage> SAL_CALL getCurrentPage (void) + throw(css::uno::RuntimeException); + + + // XFastPropertySet + + virtual void SAL_CALL setFastPropertyValue ( + sal_Int32 nHandle, + const css::uno::Any& rValue) + throw(css::beans::UnknownPropertyException, + css::beans::PropertyVetoException, + css::lang::IllegalArgumentException, + css::lang::WrappedTargetException, + css::uno::RuntimeException); + + virtual css::uno::Any SAL_CALL getFastPropertyValue ( + sal_Int32 nHandle) + throw(css::beans::UnknownPropertyException, + css::lang::WrappedTargetException, + css::uno::RuntimeException); + + // XServiceInfo + virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw (::com::sun::star::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw (::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw (::com::sun::star::uno::RuntimeException); + +protected: + sal_Bool getMasterPageMode(void) const throw(); + void setMasterPageMode(sal_Bool MasterPageMode_) throw(); + sal_Bool getLayerMode(void) const throw(); + void setLayerMode(sal_Bool LayerMode_) throw(); + + /** Return a reference to the active layer object. + @return + The returned value may be empty when the internal state of this + view is not valid (like during destruction.) + */ + ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XLayer> getActiveLayer (void) throw (); + + /** Make the specified object the active layer. + @param rxLayer + The new layer object. + */ + void setActiveLayer (const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XLayer>& rxLayer) throw (); + + void SetZoom( sal_Int16 nZoom ); + sal_Int16 GetZoom(void) const; + + void SetViewOffset(const com::sun::star::awt::Point& rWinPos ); + com::sun::star::awt::Point GetViewOffset() const; + + void SetZoomType( sal_Int16 nType ); + + ::com::sun::star::uno::Any getDrawViewMode() const; + +private: + DrawController& mrController; + DrawViewShell& mrDrawViewShell; + sd::View& mrView; + + SdXImpressDocument* GetModel (void) const throw(); +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/SdUnoOutlineView.hxx b/sd/source/ui/inc/SdUnoOutlineView.hxx new file mode 100755 index 000000000000..d2a4d4bfd39d --- /dev/null +++ b/sd/source/ui/inc/SdUnoOutlineView.hxx @@ -0,0 +1,127 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_UNO_OUTLINE_VIEW_HXX +#define SD_UNO_OUTLINE_VIEW_HXX + +#include "DrawSubController.hxx" +#include <cppuhelper/basemutex.hxx> +#include <com/sun/star/lang/EventObject.hpp> + + +class SdPage; + +namespace css = ::com::sun::star; + +namespace sd { + +class DrawController; +class OutlineViewShell; +class View; + + +/** This class implements the OutlineViewShell specific part of the controller. +*/ +class SdUnoOutlineView + : private cppu::BaseMutex, + public DrawSubControllerInterfaceBase +{ +public: + SdUnoOutlineView ( + DrawController& rController, + OutlineViewShell& rViewShell, + View& rView) throw(); + virtual ~SdUnoOutlineView (void) throw(); + + virtual void SAL_CALL disposing (void); + + + // XSelectionSupplier + + virtual sal_Bool SAL_CALL select ( + const css::uno::Any& aSelection) + throw(css::lang::IllegalArgumentException, + css::uno::RuntimeException); + + virtual css::uno::Any SAL_CALL getSelection (void) + throw(css::uno::RuntimeException); + + virtual void SAL_CALL addSelectionChangeListener ( + const css::uno::Reference<css::view::XSelectionChangeListener>& rxListener) + throw(css::uno::RuntimeException); + + virtual void SAL_CALL removeSelectionChangeListener ( + const css::uno::Reference<css::view::XSelectionChangeListener>& rxListener) + throw(css::uno::RuntimeException); + + + // XDrawView + + virtual void SAL_CALL setCurrentPage ( + const css::uno::Reference<css::drawing::XDrawPage >& xPage) + throw(css::uno::RuntimeException); + + virtual css::uno::Reference<css::drawing::XDrawPage> SAL_CALL getCurrentPage (void) + throw(css::uno::RuntimeException); + + + // XFastPropertySet + + virtual void SAL_CALL setFastPropertyValue ( + sal_Int32 nHandle, + const css::uno::Any& rValue) + throw(css::beans::UnknownPropertyException, + css::beans::PropertyVetoException, + css::lang::IllegalArgumentException, + css::lang::WrappedTargetException, + css::uno::RuntimeException); + + virtual css::uno::Any SAL_CALL getFastPropertyValue ( + sal_Int32 nHandle) + throw(css::beans::UnknownPropertyException, + css::lang::WrappedTargetException, + css::uno::RuntimeException); + + // lang::XEventListener + virtual void SAL_CALL + disposing (const ::com::sun::star::lang::EventObject& rEventObject) + throw (::com::sun::star::uno::RuntimeException); + + // XServiceInfo + virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw (::com::sun::star::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw (::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw (::com::sun::star::uno::RuntimeException); + +private: + DrawController& mrController; + OutlineViewShell& mrOutlineViewShell; + sd::View& mrView; +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/SdUnoSlideView.hxx b/sd/source/ui/inc/SdUnoSlideView.hxx new file mode 100755 index 000000000000..6005704ec895 --- /dev/null +++ b/sd/source/ui/inc/SdUnoSlideView.hxx @@ -0,0 +1,142 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_UNO_SLIDE_VIEW_HXX +#define SD_UNO_SLIDE_VIEW_HXX + +#include "DrawSubController.hxx" +#include <cppuhelper/basemutex.hxx> +#include <com/sun/star/drawing/XDrawPage.hpp> + +namespace css = ::com::sun::star; + +namespace sd { namespace slidesorter { +class SlideSorter; +} } + +namespace sd { namespace slidesorter { namespace controller { +class PageSelector; +} } } + +namespace sd { + +class DrawController; +class SlideViewShell; +class View; + + +/** This class implements the SlideSorter specific part of the + controller. + */ +class SdUnoSlideView + : private cppu::BaseMutex, + public DrawSubControllerInterfaceBase +{ +public: + SdUnoSlideView ( + DrawController& rController, + slidesorter::SlideSorter& rSlideSorter, + View& rView) throw(); + virtual ~SdUnoSlideView (void) throw(); + + // XSelectionSupplier + + virtual sal_Bool SAL_CALL select (const ::com::sun::star::uno::Any& aSelection) + throw(::com::sun::star::lang::IllegalArgumentException, + ::com::sun::star::uno::RuntimeException); + + virtual ::com::sun::star::uno::Any SAL_CALL getSelection (void) + throw(::com::sun::star::uno::RuntimeException); + + virtual void SAL_CALL addSelectionChangeListener ( + const css::uno::Reference<css::view::XSelectionChangeListener>& rxListener) + throw(css::uno::RuntimeException); + + virtual void SAL_CALL removeSelectionChangeListener ( + const css::uno::Reference<css::view::XSelectionChangeListener>& rxListener) + throw(css::uno::RuntimeException); + + + // XDrawView + + virtual void SAL_CALL setCurrentPage ( + const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage >& xPage) + throw(::com::sun::star::uno::RuntimeException); + + virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage > SAL_CALL + getCurrentPage (void) + throw(::com::sun::star::uno::RuntimeException); + + + // XFastPropertySet + + virtual void SAL_CALL setFastPropertyValue ( + sal_Int32 nHandle, + const css::uno::Any& rValue) + throw(css::beans::UnknownPropertyException, + css::beans::PropertyVetoException, + css::lang::IllegalArgumentException, + css::lang::WrappedTargetException, + css::uno::RuntimeException); + + virtual css::uno::Any SAL_CALL getFastPropertyValue ( + sal_Int32 nHandle) + throw(css::beans::UnknownPropertyException, + css::lang::WrappedTargetException, + css::uno::RuntimeException); + + // XServiceInfo + virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw (::com::sun::star::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw (::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw (::com::sun::star::uno::RuntimeException); + +private: + DrawController& mrController; + slidesorter::SlideSorter& mrSlideSorter; + sd::View& mrView; + /* + virtual void FillPropertyTable ( + ::std::vector< ::com::sun::star::beans::Property>& rProperties); + virtual sal_Bool SAL_CALL convertFastPropertyValue( + ::com::sun::star::uno::Any & rConvertedValue, + ::com::sun::star::uno::Any & rOldValue, + sal_Int32 nHandle, + const ::com::sun::star::uno::Any& rValue ) + throw (::com::sun::star::lang::IllegalArgumentException); + virtual void SAL_CALL setFastPropertyValue_NoBroadcast( + sal_Int32 nHandle, + const ::com::sun::star::uno::Any& rValue ) + throw (::com::sun::star::uno::Exception); + virtual void SAL_CALL getFastPropertyValue( + ::com::sun::star::uno::Any& rValue, + sal_Int32 nHandle ) const; + */ +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/ShellFactory.hxx b/sd/source/ui/inc/ShellFactory.hxx new file mode 100644 index 000000000000..2da34539891f --- /dev/null +++ b/sd/source/ui/inc/ShellFactory.hxx @@ -0,0 +1,73 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_VIEW_SHELL_FACTORY_HXX +#define SD_VIEW_SHELL_FACTORY_HXX + +#include <sal/types.h> +#include <memory> + +class Window; + +namespace sd { + +class FrameView; +class ViewShell; + +typedef sal_Int32 ShellId; +// This shell id is a reserved value and does not specify any valid shell. +static const sal_Int32 snInvalidShellId = -1; + +template<class ShellType> +class ShellFactory +{ +public: + /** This abstract virtual class needs a destructor so that the + destructors of derived classes are called. + */ + virtual ~ShellFactory (void) {}; + + /** Create a new instance of a view shell for the given id that will + be stacked onto the given view shell base. + @return + Return the new view shell or NULL when a creation is not + possible. + */ + virtual ShellType* CreateShell ( + ShellId nId, + ::Window* pParentWindow, + FrameView* pFrameView = NULL) = 0; + + /** Tell the factory that a shell is no longer in use. It may destroy + it or put it for future use in a cache. + */ + virtual void ReleaseShell (ShellType* pShell) = 0; +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/SlideSorter.hxx b/sd/source/ui/inc/SlideSorter.hxx new file mode 100755 index 000000000000..257695e0fc91 --- /dev/null +++ b/sd/source/ui/inc/SlideSorter.hxx @@ -0,0 +1,287 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_SLIDESORTER_SLIDE_SORTER_HXX +#define SD_SLIDESORTER_SLIDE_SORTER_HXX + +#include "fupoor.hxx" +#include "Window.hxx" +#include <com/sun/star/frame/XController.hpp> +#include <cppuhelper/weakref.hxx> +#include <sfx2/viewfrm.hxx> +#include <boost/noncopyable.hpp> +#include <boost/shared_ptr.hpp> +#include <boost/scoped_ptr.hpp> +#include <boost/current_function.hpp> + + +class ScrollBar; +class ScrollBarBox; +class Window; + + +namespace sd { +class ViewShell; +class ViewShellBase; +class Window; +} + +namespace sd { namespace slidesorter { namespace model { +class SlideSorterModel; +} } } + +namespace sd { namespace slidesorter { namespace view { +class SlideSorterView; +class Theme; +} } } + +namespace sd { namespace slidesorter { namespace controller { +class Listener; +class SlideSorterController; +class SlotManager; +class Properties; +} } } + + +typedef ::boost::shared_ptr<sd::Window> SharedSdWindow; + + +namespace sd { namespace slidesorter { + +/** Show previews for all the slides in a document and allow the user to + insert or delete slides and modify the order of the slides. + + This class is a facade for the model, view, and controller classes. + It is a hub that allows access to the various parts of a slide sorter. + + Note that this class is not in its final state. +*/ +class SlideSorter + : private ::boost::noncopyable +{ + friend class controller::SlotManager; +public: + virtual ~SlideSorter (void); + + /** Return whether the called SlideSorter object is valid and calling + its Get(Model,View,Controller) methods is safe. When <FALSE/> is + called then no other methods should be called. + Calling this method should be necessary only during startup and + shutdown (when that can be detected). + */ + bool IsValid (void) const; + + /** Create a new slide sorter that is strongly coupled to the given view + shell. Use this function for a slide sorter in the left pane. + @param rViewShell + Typically a SlideSorterViewShell object. + @param rpContentWindow + Typically the content window of the ViewShell. + @param rpHorizontalScrollBar + Typically the horizontal scroll bar of the ViewShell. + @param rpVerticalScrollBar + Typically the vertical scroll bar of the ViewShell. + @param rpScrollBarBox + The little square enclosed by the two scroll bars. Typically + the one from the ViewShell. + */ + static ::boost::shared_ptr<SlideSorter> CreateSlideSorter ( + ViewShell& rViewShell, + const ::boost::shared_ptr<sd::Window>& rpContentWindow, + const ::boost::shared_ptr<ScrollBar>& rpHorizontalScrollBar, + const ::boost::shared_ptr<ScrollBar>& rpVerticalScrollBar, + const ::boost::shared_ptr<ScrollBarBox>& rpScrollBarBox); + + /** Create a new slide sorter that is losely coupled to the given view + shell. The view shell may even be missing. + @param rBase + ViewShellBase object of the enclosing application. + @param pViewShell + Supply when at hand. + @param rParentWindow + The parent window of the internally created content window and + scroll bars. + */ + static ::boost::shared_ptr<SlideSorter> CreateSlideSorter ( + ViewShellBase& rBase, + ViewShell* pViewShell, + ::Window& rParentWindow); + + /** Return the control of the vertical scroll bar. + */ + ::boost::shared_ptr<ScrollBar> GetVerticalScrollBar (void) const; + + /** Return the control of the horizontal scroll bar. + */ + ::boost::shared_ptr<ScrollBar> GetHorizontalScrollBar (void) const; + + /** Return the scroll bar filler that paints the little square that is + enclosed by the two scroll bars. + */ + ::boost::shared_ptr<ScrollBarBox> GetScrollBarFiller (void) const; + + /** Return the content window. This is a sibling and is geometrically + enclosed by the scroll bars. + */ + SharedSdWindow GetContentWindow (void) const; + + model::SlideSorterModel& GetModel (void) const; + + view::SlideSorterView& GetView (void) const; + + controller::SlideSorterController& GetController (void) const; + + /** Return the view shell that was given at construction. + @return + May be empty. + */ + ViewShell* GetViewShell (void) const; + + /** Return the XController object of the main view. + */ + ::com::sun::star::uno::Reference<com::sun::star::frame::XController> + GetXController (void) const; + + /** Return the ViewShellBase object. + @return + May be empty. + */ + ViewShellBase* GetViewShellBase (void) const; + + void Paint (const Rectangle& rRepaintArea); + + /** Place and size the controls and windows. You may want to call this + method when something has changed that for instance affects the + visibility state of the scroll bars. + */ + void ArrangeGUIElements ( + const Point& rOffset, + const Size& rSize); + SvBorder GetBorder (void); + + bool RelocateToWindow (::Window* pWindow); + + /** Set the current function at the view shell or, when it is not + present, set it at the content window. This method supports the use + of functions even when there is no SlideSorterViewShell. + */ + void SetCurrentFunction (const FunctionReference& rpFunction); + + /** Return a collection of properties that are used througout the slide + sorter. + */ + ::boost::shared_ptr<controller::Properties> GetProperties (void) const; + + /** Return the active theme wich gives access to colors and fonts. + */ + ::boost::shared_ptr<view::Theme> GetTheme (void) const; + +protected: + /** This virtual method makes it possible to create a specialization of + the slide sorter view shell that works with its own implementation + of model, view, and controller. The default implementation simply + calls the CreateModel(), CreateView(), and CreateController() + methods in this order. + */ + virtual void CreateModelViewController (void); + + /** Create the model for the view shell. When called from the default + implementation of CreateModelViewController() then neither view nor + controller do exist. Test their pointers when in doubt. + */ + virtual model::SlideSorterModel* CreateModel (void); + + /** Create the view for the view shell. When called from the default + implementation of CreateModelViewController() then the model but not + the controller does exist. Test their pointers when in doubt. + */ + virtual view::SlideSorterView* CreateView (void); + + /** Create the controller for the view shell. When called from the default + implementation of CreateModelViewController() then both the view and + the controller do exist. Test their pointers when in doubt. + */ + virtual controller::SlideSorterController* CreateController (void); + +private: + bool mbIsValid; + + ::boost::scoped_ptr<controller::SlideSorterController> mpSlideSorterController; + ::boost::scoped_ptr<model::SlideSorterModel> mpSlideSorterModel; + ::boost::scoped_ptr<view::SlideSorterView> mpSlideSorterView; + ::com::sun::star::uno::WeakReference<com::sun::star::frame::XController> mxControllerWeak; + ViewShell* mpViewShell; + ViewShellBase* mpViewShellBase; + SharedSdWindow mpContentWindow; + bool mbOwnesContentWindow; + ::boost::shared_ptr<ScrollBar> mpHorizontalScrollBar; + ::boost::shared_ptr<ScrollBar> mpVerticalScrollBar; + ::boost::shared_ptr<ScrollBarBox> mpScrollBarBox; + + /** Set this flag to <TRUE/> to force a layout before the next paint. + */ + bool mbLayoutPending; + + /** Some slide sorter wide properties that are used in different + classes. + */ + ::boost::shared_ptr<controller::Properties> mpProperties; + ::boost::shared_ptr<view::Theme> mpTheme; + + SlideSorter ( + ViewShell& rViewShell, + const ::boost::shared_ptr<sd::Window>& rpContentWindow, + const ::boost::shared_ptr<ScrollBar>& rpHorizontalScrollBar, + const ::boost::shared_ptr<ScrollBar>& rpVerticalScrollBar, + const ::boost::shared_ptr<ScrollBarBox>& rpScrollBarBox); + SlideSorter ( + ViewShellBase& rBase, + ViewShell* pViewShell, + ::Window& rParentWindow); + + void Init (void); + /** Create the controls for the slide sorter. This are the tab bar + for switching the edit mode, the scroll bar, and the actual + slide sorter view window. + This method is usually called exactly one time from the + constructor. + */ + void SetupControls (::Window* pParentWindow); + + /** This method is usually called exactly one time from the + constructor. + */ + void SetupListeners (void); + + /** Release the listeners that have been installed in SetupListeners(). + */ + void ReleaseListeners (void); +}; + +} } // end of namespace ::sd::slidesorter + +#endif diff --git a/sd/source/ui/inc/SlideSorterChildWindow.hrc b/sd/source/ui/inc/SlideSorterChildWindow.hrc new file mode 100644 index 000000000000..541b0bd3a18c --- /dev/null +++ b/sd/source/ui/inc/SlideSorterChildWindow.hrc @@ -0,0 +1,30 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#define FLT_WIN_SLIDE_BROWSER 789 + +#define TOOLPANEL 1 diff --git a/sd/source/ui/inc/SlideSorterChildWindow.hxx b/sd/source/ui/inc/SlideSorterChildWindow.hxx new file mode 100755 index 000000000000..06c06f2aab56 --- /dev/null +++ b/sd/source/ui/inc/SlideSorterChildWindow.hxx @@ -0,0 +1,58 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_SLIDESORTER_SLIDE_SORTER_CHILD_WINDOW_HXX +#define SD_SLIDESORTER_SLIDE_SORTER_CHILD_WINDOW_HXX + +#include <sfx2/childwin.hxx> + + +namespace sd { namespace slidesorter { + + +/** The slide browser child window contains a slide sorter and is by + default shown to the left of the main edit area. +*/ +class SlideSorterChildWindow + : public SfxChildWindow +{ +public: + SlideSorterChildWindow ( + ::Window*, + sal_uInt16, + SfxBindings*, + SfxChildWinInfo*); + + virtual ~SlideSorterChildWindow (void); + + SFX_DECL_CHILDWINDOW (SlideBrowserChildWindow); +}; + + +} } // end of namespaces ::sd::slidesorter + +#endif diff --git a/sd/source/ui/inc/SlideSorterViewShell.hxx b/sd/source/ui/inc/SlideSorterViewShell.hxx new file mode 100755 index 000000000000..2f0ebbcfd18e --- /dev/null +++ b/sd/source/ui/inc/SlideSorterViewShell.hxx @@ -0,0 +1,219 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_SLIDESORTER_SLIDE_SORTER_VIEW_SHELL_HXX +#define SD_SLIDESORTER_SLIDE_SORTER_VIEW_SHELL_HXX + +#include "ViewShell.hxx" +#include "glob.hxx" +#include <sfx2/shell.hxx> +#include <sfx2/viewfac.hxx> +#include <boost/shared_ptr.hpp> +#include <vector> + +namespace sd { namespace slidesorter { namespace controller { +class SlotManager; +} } } + + +namespace sd { namespace slidesorter { + +class SlideSorter; + +class SlideSorterViewShell + : public ViewShell +{ + friend class controller::SlotManager; + +public: + TYPEINFO(); + SFX_DECL_INTERFACE(SD_IF_SDSLIDESORTERVIEWSHELL) + + static ::boost::shared_ptr<SlideSorterViewShell> Create( + SfxViewFrame* pFrame, + ViewShellBase& rViewShellBase, + ::Window* pParentWindow, + FrameView* pFrameView, + const bool bIsCenterPane); + + virtual ~SlideSorterViewShell (void); + + /** Late initialization that has to be called after a new instance has + completed its construction. + */ + virtual void Init (bool bIsMainViewShell); + + /** Return a slide sorter that is currently displayed in one of the + panes that belong to the given ViewShellBase object. + When there is only one slide sorter visible then that one is + returned. When two (or more) are visible then the one in the center + pane is returned. When no slidesorter is visible then NULL is + returned. + */ + static SlideSorterViewShell* GetSlideSorter (ViewShellBase& rBase); + + virtual void GetFocus (void); + virtual void LoseFocus (void); + virtual SdPage* GetActualPage (void); + + /// inherited from sd::ViewShell + virtual SdPage* getCurrentPage() const; + + void ExecCtrl (SfxRequest& rRequest); + virtual void GetCtrlState (SfxItemSet &rSet); + virtual void FuSupport (SfxRequest& rRequest); + virtual void FuTemporary (SfxRequest& rRequest); + virtual void GetStatusBarState (SfxItemSet& rSet); + virtual void FuPermanent (SfxRequest& rRequest); + void GetAttrState (SfxItemSet& rSet); + void ExecStatusBar (SfxRequest& rRequest); + virtual void Command (const CommandEvent& rEvent, ::sd::Window* pWindow); + virtual void GetMenuState (SfxItemSet &rSet); + virtual void GetClipboardState (SfxItemSet &rSet); + + virtual void ReadFrameViewData (FrameView* pView); + virtual void WriteFrameViewData (void); + + /** Set the zoom factor. The given value is clipped against an upper + bound. + @param nZoom + An integer percent value, i.e. nZoom/100 is the actual zoom + factor. + */ + virtual void SetZoom (long int nZoom); + virtual void SetZoomRect (const Rectangle& rZoomRect); + + /** This is a callback method used by the active window to delegate its + Paint() call to. This view shell itself delegates it to the view. + */ + virtual void Paint(const Rectangle& rRect, ::sd::Window* pWin); + + /** Place and size the controls and windows. You may want to call this + method when something has changed that for instance affects the + visibility state of the scroll bars. + */ + virtual void ArrangeGUIElements (void); + + virtual void Activate (sal_Bool IsMDIActivate); + + //===== Drag and Drop ===================================================== + + virtual void StartDrag ( + const Point& rDragPt, + ::Window* pWindow ); + virtual void DragFinished ( + sal_Int8 nDropAction); + virtual sal_Int8 AcceptDrop ( + const AcceptDropEvent& rEvt, + DropTargetHelper& rTargetHelper, + ::sd::Window* pTargetWindow = NULL, + sal_uInt16 nPage = SDRPAGE_NOTFOUND, + sal_uInt16 nLayer = SDRPAGE_NOTFOUND ); + virtual sal_Int8 ExecuteDrop ( + const ExecuteDropEvent& rEvt, + DropTargetHelper& rTargetHelper, + ::sd::Window* pTargetWindow = NULL, + sal_uInt16 nPage = SDRPAGE_NOTFOUND, + sal_uInt16 nLayer = SDRPAGE_NOTFOUND); + + typedef ::std::vector<SdPage*> PageSelection; + + /** Return the set of selected pages. + */ + ::boost::shared_ptr<PageSelection> GetPageSelection (void) const; + + void SetPageSelection (const ::boost::shared_ptr<PageSelection>& rSelection); + + /** Add a listener that is called when the selection of the slide sorter + changes. + @param rListener + When this method is called multiple times for the same listener + the second and all following calls are ignored. Each listener + is added only once. + */ + void AddSelectionChangeListener (const Link& rListener); + + /** Remove a listener that was called when the selection of the slide + sorter changes. + @param rListener + It is save to pass a listener that was not added are has been + removed previously. Such calls are ignored. + */ + void RemoveSelectionChangeListener (const Link& rListener); + + virtual css::uno::Reference<css::drawing::XDrawSubController> CreateSubController (void); + + /** Create an accessible object representing the specified window. + @param pWindow + The returned object makes the document displayed in this window + accessible. + @return + Returns an <type>AccessibleSlideSorterView</type> object. + */ + virtual ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessible> + CreateAccessibleDocumentView (::sd::Window* pWindow); + + SlideSorter& GetSlideSorter (void) const; + + /** Try to relocate all toplevel window elements to the given parent + window. + */ + virtual bool RelocateToParentWindow (::Window* pParentWindow); + +protected: + + virtual SvBorder GetBorder (bool bOuterResize); + + /** This method is overloaded to handle a missing tool bar correctly. + This is the case when the slide sorter is not the main view shell. + */ + virtual ::svl::IUndoManager* ImpGetUndoManager (void) const; + +private: + ::boost::shared_ptr<SlideSorter> mpSlideSorter; + bool mbIsArrangeGUIElementsPending; + + SlideSorterViewShell ( + SfxViewFrame* pFrame, + ViewShellBase& rViewShellBase, + ::Window* pParentWindow, + FrameView* pFrameView); + void Initialize (void); + + /** This method overwrites the one from our base class: We do our own + scroll bar and the base class call is thus unnecessary. It simply + calls UpdateScrollBars(false). + */ + virtual void UpdateScrollBars (void); +}; + +typedef ::boost::shared_ptr<SlideSorterViewShell::PageSelection> SharedPageSelection; + +} } // end of namespace ::sd::slidesorter + +#endif diff --git a/sd/source/ui/inc/SlideSorterViewShellBase.hxx b/sd/source/ui/inc/SlideSorterViewShellBase.hxx new file mode 100644 index 000000000000..04774e19ab9a --- /dev/null +++ b/sd/source/ui/inc/SlideSorterViewShellBase.hxx @@ -0,0 +1,55 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_SLIDE_SORTER_VIEW_SHELL_BASE_HXX +#define SD_SLIDE_SORTER_VIEW_SHELL_BASE_HXX + +#include "ImpressViewShellBase.hxx" + + +namespace sd { + +/** This class exists to be able to register a factory that creates a + slide sorter view shell as default. +*/ +class SlideSorterViewShellBase + : public ImpressViewShellBase +{ +public: + TYPEINFO(); + SFX_DECL_VIEWFACTORY(SlideSorterViewShellBase); + + /** This constructor is used by the view factory of the SFX + macros. + */ + SlideSorterViewShellBase (SfxViewFrame *pFrame, SfxViewShell* pOldShell); + virtual ~SlideSorterViewShellBase (void); +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/SlideView.hxx b/sd/source/ui/inc/SlideView.hxx new file mode 100755 index 000000000000..70427f5b79ce --- /dev/null +++ b/sd/source/ui/inc/SlideView.hxx @@ -0,0 +1,144 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_SLIDE_VIEW_HXX +#define SD_SLIDE_VIEW_HXX + +#include "View.hxx" + +class SdDrawDocument; +class BitmapCache; +class SdPage; + +namespace sd { + +class SlideViewShell; +class Window; + +// ---------------------- +// - SlideViewFocusMove - +// ---------------------- + +enum SlideViewFocusMove +{ + SLIDEVIEWFOCUSMOVE_NONE = 0, + SLIDEVIEWFOCUSMOVE_TOGGLE = 1, + SLIDEVIEWFOCUSMOVE_SELECT = 2, + SLIDEVIEWFOCUSMOVE_LEFT = 3, + SLIDEVIEWFOCUSMOVE_TOP = 4, + SLIDEVIEWFOCUSMOVE_RIGHT = 5, + SLIDEVIEWFOCUSMOVE_BOTTOM = 6 +}; + +// --------------- +// - SdSlideView - +// --------------- + +class SlideView + : public ::sd::View +{ +public: + TYPEINFO(); + + SlideView ( + SdDrawDocument* pDoc, + ::Window* pWindow, + SlideViewShell* pSlideVShell); + virtual ~SlideView (void); + + void Select( sal_uInt16 nSdPageNum, sal_Bool bSelect ); + void SelectAllSlides( sal_Bool bSelect ); + + void MoveFocus( SlideViewFocusMove eMove ); + sal_uInt16 GetFocusPage() const; + sal_Bool HasFocus() const; + + sal_uInt16 ChangePagesPerRow( sal_uInt16 nNum ); + sal_uInt16 GetPagesPerRow() const { return nPagesPerRow; } + + virtual void InvalidateOneWin( ::Window& rWin ); + virtual void InvalidateOneWin( ::Window& rWin, const Rectangle& rRect ); + + void SetAllowInvalidate( sal_Bool bFlag ); + sal_Bool IsInvalidateAllowed() const; + + void Paint(const Rectangle& rRect, OutputDevice* pOut); + void DrawSelectionRect(sal_uInt16 nPage); + + Point CalcPagePos( sal_uInt16 nPageNo ) const; + Rectangle GetPageArea( sal_uInt16 nPageNo ) const; + sal_uLong GetPageGap() const; + Rectangle GetFadeIconArea( sal_uInt16 nPageNo ) const; + SdPage* GetHitPage( const Point& rPos ) const; + SdPage* GetFadePage( const Point& rPos ) const; + SdPage* GetNearestPage( const Point& rPos ) const; + + void DeleteMarked(); + void MoveMarked( sal_uInt16 nTargetPage ); + + void AddToCache( SdPage* pPage, const Bitmap& rBitmap, long nZoom ); + const GraphicObject* GetFromCache( SdPage* pPage, long& rZoom, long nZoomTolerance ) const; + + virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); + + virtual void DoCut( ::Window* pWindow = NULL ); + virtual void DoCopy( ::Window* pWindow = NULL ); + virtual void DoPaste( ::Window* pWindow = NULL ); + + virtual void StartDrag( const Point& rDragPt, ::Window* pWindow ); + virtual void DragFinished( sal_Int8 nDropAction ); + + virtual sal_Int8 AcceptDrop( const AcceptDropEvent& rEvt, DropTargetHelper& rTargetHelper, + ::sd::Window* pTargetWindow = NULL, + sal_uInt16 nPage = SDRPAGE_NOTFOUND, + sal_uInt16 nLayer = SDRPAGE_NOTFOUND ); + virtual sal_Int8 ExecuteDrop( const ExecuteDropEvent& rEvt, DropTargetHelper& rTargetHelper, + ::sd::Window* pTargetWindow = NULL, + sal_uInt16 nPage = SDRPAGE_NOTFOUND, + sal_uInt16 nLayer = SDRPAGE_NOTFOUND ); + + void UpdateAllPages(); + +private: + Timer aDelayedPaintTimer; + List aDelayedPaints; + SlideViewShell* pSlideViewShell; + BitmapCache* pCache; + VirtualDevice* mpVDev; + sal_uInt16 nAllowInvalidateSmph; + sal_uInt16 nPagesPerRow; + sal_uInt16 nFocusPage; + sal_Bool bInPaint; + sal_Bool bInDelayedPaint; + + DECL_LINK( PaintDelayed, Timer * ); + void CreateSlideTransferable (::Window* pWindow, sal_Bool bDrag); +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/SlideViewShell.hxx b/sd/source/ui/inc/SlideViewShell.hxx new file mode 100755 index 000000000000..8b0dbf347098 --- /dev/null +++ b/sd/source/ui/inc/SlideViewShell.hxx @@ -0,0 +1,175 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_SLIDE_VIEW_SHELL_HXX +#define SD_SLIDE_VIEW_SHELL_HXX + + +#include "ViewShell.hxx" +#include "SlideView.hxx" +#include <sfx2/viewfac.hxx> +#include <sfx2/viewsh.hxx> + + + +class SdPage; + + + +namespace sd { + +class SdUnoSlideView; +class Window; + +/** Show an overview over the slides in an Impress document and allow + some high level editing i.e. editing of the order in a show, not + the contents of the slides. +*/ +class SlideViewShell + : public ViewShell +{ +public: + + TYPEINFO(); + + SFX_DECL_VIEWFACTORY(SlideViewShell); + SFX_DECL_INTERFACE(SD_IF_SDSLIDEVIEWSHELL) + + /** Create a new view shell for the slide view. + @param rViewShellBase + The new object will be stacked on this view shell base. + @param pFrameView + The frame view that makes it possible to pass information from + one view shell to the next. + */ + SlideViewShell(SfxViewFrame* pFrame, + ViewShellBase& rViewShellBase, + ::Window* pParentWindow, + FrameView* pFrameView = NULL); + + SlideViewShell(SfxViewFrame *pFrame, + ::Window* pParentWindow, + const SlideViewShell& rShell); + + virtual ~SlideViewShell (void); + + virtual void Paint(const Rectangle& rRect, ::sd::Window* pWin); + + /** Arrange and resize the GUI elements like rulers, sliders, and + buttons as well as the actual document view according to the size of + the enclosing window and current sizes of buttons, rulers, and + sliders. + */ + virtual void ArrangeGUIElements (void); + virtual void AddWindow(::sd::Window* pWin) { pSlideView->AddWindowToPaintView((OutputDevice*) pWin); } + virtual void RemoveWindow(::sd::Window* pWin) { pSlideView->DeleteWindowFromPaintView((OutputDevice*) pWin); } + + virtual sal_Bool KeyInput(const KeyEvent& rKEvt, ::sd::Window* pWin); + virtual void MouseMove(const MouseEvent& rMEvt, ::sd::Window* pWin); + virtual void MouseButtonUp(const MouseEvent& rMEvt, ::sd::Window* pWin); + virtual void MouseButtonDown(const MouseEvent& rMEvt, ::sd::Window* pWin); + virtual void Command(const CommandEvent& rCEvt, ::sd::Window* pWin); + + virtual SdPage* GetActualPage(); + + /** @returns + current or selected page or 0. + */ + virtual SdPage* getCurrentPage() const; + + void ExecCtrl(SfxRequest &rReq); + void GetCtrlState(SfxItemSet &rSet); + void GetMenuState(SfxItemSet &rSet); + void GetAttrState(SfxItemSet &rSet); + + void SetPagesPerRow( sal_uInt16 nPagesPerRow ); + + void ExecStatusBar(SfxRequest& rReq); + void GetStatusBarState(SfxItemSet& rSet); + + void FuTemporary(SfxRequest &rReq); + void FuPermanent(SfxRequest &rReq); + void FuSupport(SfxRequest &rReq); + + virtual void ReadFrameViewData(FrameView* pView); + virtual void WriteFrameViewData(); + + virtual void SetZoom(long nZoom); + virtual void SetZoomRect(const Rectangle& rZoomRect); + + virtual sal_Bool HasSelection( sal_Bool bText = sal_True ) const; + + /** Draw the rectangle arround the specified slide that indicates whether + the slide is selected or not. When not selected the rectangle is + painted in the background color (WindowColor from the style settings) + and is therefore not visible. A selected slide is painted with the + WindowTextColor from the style settings. Painting takes place in + all associated windows. The line- and fill color of the windows are + restored to their original values after the rectangle is painted. + @param nPage + When the page number is invalid then the call is ignored. + */ + void DrawSelectionRect( sal_uInt16 nPage ); + void DrawFocusRect( sal_uInt16 nPage ); + + virtual void WriteUserDataSequence ( ::com::sun::star::uno::Sequence < ::com::sun::star::beans::PropertyValue >&, sal_Bool bBrowse = sal_False ); + virtual void ReadUserDataSequence ( const ::com::sun::star::uno::Sequence < ::com::sun::star::beans::PropertyValue >&, sal_Bool bBrowse = sal_False ); + + virtual void VisAreaChanged(const Rectangle& rRect); + + virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible> CreateAccessibleDocumentView( ::sd::Window* pWindow ); + + void SelectionHasChanged(); + void PageLayoutHasChanged(); + void FocusHasChanged( sal_uInt16 nOldFocusPage, sal_uInt16 nNewFocusPage ); + void PageVisibilityHasChanged( sal_uInt16 nPage, sal_Bool bVisible ); + + /** On activation the preview is turned off. + */ + virtual void Activate (sal_Bool IsMDIActivate); + +protected: + virtual Size GetOptimalSizePixel() const; + virtual long VirtHScrollHdl(ScrollBar* pHScroll); + virtual long VirtVScrollHdl(ScrollBar* pVHScroll); + + +private: + SlideView* pSlideView; + Point aDisplayPos; + Size aDisplaySize; + sal_uInt16 nCurFocusPage; + bool bSetInitialZoomFactor; + bool bInitializeWinPos; + + void Construct(SdDrawDocument* pDoc); + void ImplDrawFocusRect( sal_uInt16 nPage, sal_Bool bVisible ); +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/SpellDialogChildWindow.hxx b/sd/source/ui/inc/SpellDialogChildWindow.hxx new file mode 100755 index 000000000000..df9ee6aad98a --- /dev/null +++ b/sd/source/ui/inc/SpellDialogChildWindow.hxx @@ -0,0 +1,95 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_SPELL_DIALOG_CHILD_WINDOW_HXX +#define SD_SPELL_DIALOG_CHILD_WINDOW_HXX + +#include <svx/SpellDialogChildWindow.hxx> + + +namespace sd { + +class Outliner; + +/** This derivation of the ::svx::SpellDialogChildWindow base class + provides Draw and Impress specific implementations of + GetNextWrongSentence() and ApplyChangedSentence(). +*/ +class SpellDialogChildWindow + : public ::svx::SpellDialogChildWindow +{ +public: + SpellDialogChildWindow ( + ::Window* pParent, + sal_uInt16 nId, + SfxBindings* pBindings, + SfxChildWinInfo* pInfo); + virtual ~SpellDialogChildWindow (void); + + /** This method makes the one from the base class public so that + it can be called from the view shell when one is created. + */ + virtual void InvalidateSpellDialog (void); + + SFX_DECL_CHILDWINDOW(SpellDialogChildWindow); + +protected: + /** Iterate over the sentences in all text shapes and stop at the + next sentence with spelling errors. While doing so the view + mode may be changed and text shapes are set into edit mode. + */ + virtual ::svx::SpellPortions GetNextWrongSentence( bool bRecheck ); + + /** This method is responsible for merging corrections made in the + spelling dialog back into the document. + */ + virtual void ApplyChangedSentence(const ::svx::SpellPortions& rChanged, bool bRecheck); + virtual void GetFocus (void); + virtual void LoseFocus (void); + +private: + /** This outliner is used to do the main work of iterating over a + document and finding sentences with spelling errors. + */ + Outliner* mpSdOutliner; + + /** When this flag is <TRUE/> then eventually we have to destroy + the outliner in mpSdOutliner. + */ + bool mbOwnOutliner; + + /** Provide an outliner in the mpSdOutliner data member. When the + view shell has changed since the last call this include the + deletion/release of formerly created/obtained one prior to + construction/obtaining of a new one. + */ + void ProvideOutliner (void); +}; + +} // end of namespace ::sd + +#endif diff --git a/sd/source/ui/inc/TabControl.hxx b/sd/source/ui/inc/TabControl.hxx new file mode 100755 index 000000000000..7334a6e89362 --- /dev/null +++ b/sd/source/ui/inc/TabControl.hxx @@ -0,0 +1,122 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_TAB_CONTROL_HXX +#define SD_TAB_CONTROL_HXX + +#include <svtools/tabbar.hxx> +#include <svtools/transfer.hxx> + +namespace sd { + +/************************************************************************* +|* +|* TabControl-Klasse fuer Seitenumschaltung +|* +\************************************************************************/ + +class DrawViewShell; + +class TabControl + : public TabBar, + public DragSourceHelper, + public DropTargetHelper +{ +public: + TabControl (DrawViewShell* pDrViewSh, ::Window* pParent); + virtual ~TabControl (void); + + /** Inform all listeners of this control that the current page has been + activated. Call this method after switching the current page and is + not done elsewhere (like when using page up/down keys). + */ + void SendActivatePageEvent (void); + + /** Inform all listeners of this control that the current page has been + deactivated. Call this method before switching the current page and + is not done elsewhere (like when using page up/down keys). + */ + void SendDeactivatePageEvent (void); + +protected: + DrawViewShell* pDrViewSh; + sal_Bool bInternalMove; + + // TabBar + virtual void Select(); + virtual void DoubleClick(); + virtual void MouseButtonDown(const MouseEvent& rMEvt); + + virtual void Command(const CommandEvent& rCEvt); + + virtual long StartRenaming(); + virtual long AllowRenaming(); + virtual void EndRenaming(); + + virtual void ActivatePage(); + virtual long DeactivatePage(); + + // DragSourceHelper + virtual void StartDrag( sal_Int8 nAction, const Point& rPosPixel ); + + // DropTargetHelper + virtual sal_Int8 AcceptDrop( const AcceptDropEvent& rEvt ); + virtual sal_Int8 ExecuteDrop( const ExecuteDropEvent& rEvt ); + + DECL_LINK(DeactivatePageHdl, void*); + +private: + // nested class to implement the TransferableHelper + class TabControlTransferable : public TransferableHelper + { + public: + TabControlTransferable( TabControl& rParent ) : + mrParent( rParent ) {} + private: + + TabControl& mrParent; + + virtual ~TabControlTransferable(); + + virtual void AddSupportedFormats(); + virtual sal_Bool GetData( const ::com::sun::star::datatransfer::DataFlavor& rFlavor ); + virtual void DragFinished( sal_Int8 nDropAction ); + + }; + + friend class TabControl::TabControlTransferable; + + void DragFinished( sal_Int8 nDropAction ); + +private: + using TabBar::StartDrag; +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/TemplateScanner.hxx b/sd/source/ui/inc/TemplateScanner.hxx new file mode 100755 index 000000000000..1c5f0cfe6f11 --- /dev/null +++ b/sd/source/ui/inc/TemplateScanner.hxx @@ -0,0 +1,220 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _TEMPLATE_SCANNER_HXX +#define _TEMPLATE_SCANNER_HXX + +#include "tools/AsynchronousTask.hxx" +#include "sddllapi.h" +#include <ucbhelper/content.hxx> +#include <tools/string.hxx> +#include "com/sun/star/uno/Reference.hxx" + +#include <vector> +#include <boost/scoped_ptr.hpp> + +namespace com { namespace sun { namespace star { namespace ucb { +class XContent; +class XCommandEnvironment; +} } } } + +namespace com { namespace sun { namespace star { namespace sdbc { +class XResultSet; +} } } } + +namespace sd { + +/** Representation of a template or layout file. +*/ +class TemplateEntry +{ +public: + TemplateEntry (const String& rsTitle, const String& rsPath) + : msTitle(rsTitle), msPath(rsPath) {} + + String msTitle; + String msPath; +}; + + + + +/** Representation of a template or layout folder. +*/ +class TemplateDir +{ +public: + TemplateDir (const String& rsRegion, const String& rsUrl ) + : msRegion(rsRegion), msUrl(rsUrl), maEntries() {} + + String msRegion; + String msUrl; + ::std::vector<TemplateEntry*> maEntries; +}; + + + + +/** This class scans the template folders for impress templates. There are + two ways to use this class. + 1. The old and deprecated way is to call Scan() to scan all templates + and collect the supported ones in a tree structure. This structure is + returned by GetFolderList(). + 2. The new way implements the AsynchronousTask interface. Call + RunNextStep() as long HasNextStep() returns <TRUE/>. After every step + GetLastAddedEntry() returns the template that was scanned (and has a + supported format) last. When a step does not add a new template then + the value of the previous step is returned. +*/ +class SD_DLLPUBLIC TemplateScanner + : public ::sd::tools::AsynchronousTask +{ +public: + /** Create a new template scanner and prepare but do not execute the scanning. + */ + TemplateScanner (void); + + /** The destructor deletes any remaining entries of the local list of + templates. + */ + virtual ~TemplateScanner (void); + + /** Execute the actual scanning of templates. When this method + terminates the result can be obtained by calling the + <member>GetTemplateList</member> method. + */ + void Scan (void); + + /** Return the list of template folders. It lies in the responsibility + of the caller to take ownership of some or all entries and remove + them from the returned list. All entries that remain until the + destructor is called will be destroyed. + */ + std::vector<TemplateDir*>& GetFolderList (void); + + /** Implementation of the AsynchronousTask interface method. + */ + virtual void RunNextStep (void); + + /** Implementation of the AsynchronousTask interface method. + */ + virtual bool HasNextStep (void); + + /** Return the TemplateDir object that was last added to + mpTemplateDirectory. + @return + <NULL/> is returned either before the template scanning is + started or after it has ended. + */ + const TemplateEntry* GetLastAddedEntry (void) const; + +private: + /** The current state determines which step will be executed next by + RunNextStep(). + */ + enum State { + INITIALIZE_SCANNING, + INITIALIZE_FOLDER_SCANNING, + GATHER_FOLDER_LIST, + SCAN_FOLDER, + INITIALIZE_ENTRY_SCAN, + SCAN_ENTRY, + DONE, + ERROR + }; + State meState; + + ::ucbhelper::Content maFolderContent; + TemplateDir* mpTemplateDirectory; + + /** The data structure that is to be filled with information about the + template files. + */ + std::vector<TemplateDir*> maFolderList; + + /** This member points into the maFolderList to the member that was most + recently added. + */ + TemplateEntry* mpLastAddedEntry; + + /** The folders that are collected by GatherFolderList(). + */ + class FolderDescriptorList; + ::boost::scoped_ptr<FolderDescriptorList> mpFolderDescriptors; + + /** Set of state variables used by the methods + InitializeFolderScanning(), GatherFolderList(), ScanFolder(), + InitializeEntryScanning(), and ScanEntry(). + */ + com::sun::star::uno::Reference<com::sun::star::ucb::XContent> mxTemplateRoot; + com::sun::star::uno::Reference<com::sun::star::ucb::XCommandEnvironment> mxFolderEnvironment; + com::sun::star::uno::Reference<com::sun::star::ucb::XCommandEnvironment> mxEntryEnvironment; + com::sun::star::uno::Reference<com::sun::star::sdbc::XResultSet> mxFolderResultSet; + com::sun::star::uno::Reference<com::sun::star::sdbc::XResultSet> mxEntryResultSet; + + /** Obtain the root folder of the template folder hierarchy. The result + is stored in mxTemplateRoot for later use. + */ + State GetTemplateRoot (void); + + /** Initialize the scanning of folders. This is called exactly once. + @return + Returns one of the two states ERROR or GATHER_FOLDER_LIST. + */ + State InitializeFolderScanning (void); + + /** Collect all available top-level folders in an ordered list which can + then be processed by ScanFolder(). + @return + Returns one of the two states ERROR or SCAN_FOLDER. + */ + State GatherFolderList (void); + + /** From the list of top-level folders collected by GatherFolderList() + the one with highest priority is processed. + @return + Returns one of the states ERROR, DONE, or INITILIZE_ENTRY_SCAN. + */ + State ScanFolder (void); + + /** Initialize the scanning of entries of a top-level folder. + @return + Returns one of the states ERROR or SCAN_ENTRY. + */ + State InitializeEntryScanning (void); + + /** Scan one entry. When this entry matches the recognized template + types it is appended to the result set. + @return + Returns one of the states ERROR, SCAN_ENTRY, or SCAN_FOLDER. + */ + State ScanEntry (void); +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/TextLogger.hxx b/sd/source/ui/inc/TextLogger.hxx new file mode 100644 index 000000000000..0c2214935bb7 --- /dev/null +++ b/sd/source/ui/inc/TextLogger.hxx @@ -0,0 +1,62 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_TEXT_LOGGER_HXX +#define SD_TEXT_LOGGER_HXX + +#include <tools/link.hxx> + +class String; +class VclWindowEvent; + +namespace sd { namespace notes { + +class EditWindow; + +class TextLogger +{ +public: + static TextLogger& Instance (void); + + void AppendText (const char* sText); + void AppendText (const String& sText); + void AppendNumber (long int nValue); + + void ConnectToEditWindow (EditWindow* pWindow); + +private: + static TextLogger* spInstance; + EditWindow* mpEditWindow; + + TextLogger (void); + + DECL_LINK(WindowEventHandler, VclWindowEvent*); +}; + +} } // end of namespace ::sd::notes + +#endif diff --git a/sd/source/ui/inc/TextObjectBar.hxx b/sd/source/ui/inc/TextObjectBar.hxx new file mode 100644 index 000000000000..afb9e88b16a2 --- /dev/null +++ b/sd/source/ui/inc/TextObjectBar.hxx @@ -0,0 +1,69 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_TEXT_OBJECT_BAR_HXX +#define SD_TEXT_OBJECT_BAR_HXX + + +#include <sfx2/module.hxx> +#include <sfx2/shell.hxx> +#include "glob.hxx" + +class CommandEvent; + +namespace sd { + +class View; +class ViewShell; +class Window; + +class TextObjectBar + : public SfxShell +{ +public: + TYPEINFO(); + SFX_DECL_INTERFACE(SD_IF_SDDRAWTEXTOBJECTBAR) + + TextObjectBar ( + ViewShell* pSdViewShell, + SfxItemPool& rItemPool, + ::sd::View* pSdView); + virtual ~TextObjectBar (void); + + void GetAttrState( SfxItemSet& rSet ); + void Execute( SfxRequest &rReq ); + + virtual void Command( const CommandEvent& rCEvt ); + +private: + ViewShell* mpViewShell; + ::sd::View* mpView; +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/ToolBarManager.hxx b/sd/source/ui/inc/ToolBarManager.hxx new file mode 100755 index 000000000000..d8b84d1d7b61 --- /dev/null +++ b/sd/source/ui/inc/ToolBarManager.hxx @@ -0,0 +1,283 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_TOOL_BAR_MANAGER_HXX +#define SD_TOOL_BAR_MANAGER_HXX + +#include "ViewShell.hxx" +#include "ShellFactory.hxx" +#include <rtl/ustring.hxx> +#include <com/sun/star/frame/XFrame.hpp> + +#include <sal/types.h> +#include <boost/scoped_ptr.hpp> +#include <boost/shared_ptr.hpp> +#include <boost/enable_shared_from_this.hpp> + +class SdrView; + +namespace sd { namespace tools { +class EventMultiplexer; +} } + + +namespace sd { + +class ViewShellBase; +class ViewShellManager; + +/** Manage the set of visible tool bars (and object bars). Usually they + belong to the current view in the center pane. + + Tool bars are managed in groups. Each group can be set, reset, or + modified independently of the others. This allows for instance to + replace the toolbars associated with the current function independently + from those assoicated with the main view. + + The ToolBarManager has two high level methods which contain the + knowledge about which tool bars to show in a specific context. + When the view in the center pane changes then MainViewShellChanged() + sets up the tool bars for the new view. On changes of the selection the + SelectionHasChanged() method shows the tool bars for the new context. + + The update of the actually visible tool bars to the set currently + required by the main view shell and its functions is divided into two + parts, PreUpdate() and PostUpdate(). This are to be called before + respectively after the update of the view shell stack. The reason for + this is to save time by not updating tool bars that will not be visible + in a short time on a view shell switch. +*/ +class ToolBarManager + : public ::boost::enable_shared_from_this<ToolBarManager> +{ +public: + /** Use this method instead of the constructor to create new objects of + this class. + */ + static ::boost::shared_ptr<ToolBarManager> Create ( + ViewShellBase& rBase, + const ::boost::shared_ptr<tools::EventMultiplexer>& rpMultiplexer, + const ::boost::shared_ptr<ViewShellManager>& rpViewShellManager); + + ~ToolBarManager (void); + + /** Call this method prior to the destructor to prevent the + ToolBarManager from accessing the ViewShellManager or the + XLayoutManager when those are possibly not well and alive anymore + (like during the destruction of the ViewShellBase.) + */ + void Shutdown (void); + + /** When the view in the center pane changes then this method sets up + the initial set of tool bars for the new view. + The ToolBarManager listenes for view switching itself and then calls + MainViewShellChanged(). Calling this method from the outside should + not be necessary. + @param nShellType + The type of the new main view shell. + */ + void MainViewShellChanged (ViewShell::ShellType nShellType); + void MainViewShellChanged (const ViewShell& rMainViewShell); + + /** Call this method when the selection has changed to update the more + temporary tool bars (those in the TBG_FUNCTION group.) + */ + void SelectionHasChanged ( + const ViewShell& rViewShell, + const SdrView& rView); + + /** The set of tool bars that are handled by this manager class. + */ + const static ::rtl::OUString msToolBar; // RID_DRAW_TOOLBOX, 23011 + // RID_GRAPHIC_TOOLBOX, 23025 + const static ::rtl::OUString msOptionsToolBar; // RID_DRAW_OPTIONS_TOOLBOX, 23020 + // RID_GRAPHIC_OPTIONS_TOOLBOX, 23026 + const static ::rtl::OUString msCommonTaskToolBar; // RID_DRAW_COMMONTASK_TOOLBOX, 23021 + const static ::rtl::OUString msViewerToolBar; // RID_DRAW_VIEWER_TOOLBOX, 23023 + // RID_GRAPHIC_VIEWER_TOOLBOX, 23024 + const static ::rtl::OUString msSlideSorterToolBar; // RID_SLIDE_TOOLBOX, 23012 + const static ::rtl::OUString msSlideSorterObjectBar; // RID_SLIDE_OBJ_TOOLBOX, 23014 + const static ::rtl::OUString msOutlineToolBar; // RID_OUTLINE_TOOLBOX, 23017 + const static ::rtl::OUString msMasterViewToolBar; // SID_MASTERPAGE, 27053 + const static ::rtl::OUString msDrawingObjectToolBar; // RID_DRAW_OBJ_TOOLBOX, 23013 + const static ::rtl::OUString msGluePointsToolBar; // RID_GLUEPOINTS_TOOLBOX, 23019 + const static ::rtl::OUString msTextObjectBar; // RID_DRAW_TEXT_TOOLBOX, 23016 + // RID_GRAPHIC_TEXT_TOOLBOX, 23028 + const static ::rtl::OUString msBezierObjectBar; // RID_BEZIER_TOOLBOX, 23015 + const static ::rtl::OUString msGraphicObjectBar; // RID_DRAW_GRAF_TOOLBOX, 23030 + const static ::rtl::OUString msMediaObjectBar; // RID_DRAW_MEDIA_TOOLBOX, 23031 + const static ::rtl::OUString msTableObjectBar; // RID_DRAW_TABLE_TOOLBOX + + /** The set of tool bar groups. + */ + enum ToolBarGroup { + TBG__FIRST, + + TBG_PERMANENT = TBG__FIRST, + TBG_FUNCTION, + TBG_MASTER_MODE, + + TBG__LAST = TBG_MASTER_MODE + }; + + /** Reset the set of visible object bars in the specified group. Tool + bars in other groups are not affected. + @param rParentShell + When this shell is not the main view then the method returns + immediately. + @param eGroup + Only the tool bars in this group are rest. + */ + void ResetToolBars (ToolBarGroup eGroup); + + /** Reset all tool bars, regardless of the group they belong to. + @param rParentShell + When this shell is not the main view then the method returns + immediately. + */ + void ResetAllToolBars (void); + + /** Add the tool bar with the given name to the specified group of tool + bars. + @param rParentShell + When this shell is not the main view then the method returns + immediately. + @param eGroup + The new tool bar is added to this group. + @param rsToolBarName + The base name of the tool bar. A proper prefix (like + private:resource/toolbar/) is added. The name may be one of the + ones defined above. Other names are allowed as well. + */ + void AddToolBar ( + ToolBarGroup eGroup, + const ::rtl::OUString& rsToolBarName); + + /** Add the tool bar shell to the shell stack. This method basically + forwards the call to the ViewShellManager. + For some tool bar shells additional tool bars are made visible. + @param rParentShell + When this shell is not the main view then the method returns + immediately. + @param eGroup + The group is used for the actual tool bars. + @param nToolBarId + Id of the tool bar shell. + */ + void AddToolBarShell ( + ToolBarGroup eGroup, + ShellId nToolBarId); + + /** Remove the tool bar with the given name from the specified group. + If the tool bar is not visible then nothing happens. + If the tool bar is a member of another group then nothing happens + either. + */ + void RemoveToolBar ( + ToolBarGroup eGroup, + const ::rtl::OUString& rsToolBarName); + + /** This is basically a shortcut for ResetToolBars(),AddToolBar(). The + main difference is, that all sub shells of the specified parent + shell are deactivated as well. + @param rParentShell + When this shell is not the main view then the method returns + immediately. + @param eGroup + The new tool bar is added to this group. + @param rsToolBarName + The base name of the tool bar. A proper prefix (like + private:resource/toolbar/) is added. The name may be one of the + ones defined above. Other names are allowed as well. + */ + void SetToolBar ( + ToolBarGroup eGroup, + const ::rtl::OUString& rsToolBarName); + + /** This is basically a shortcut for ResetToolBars(),AddToolBar(). The + main difference is, that all sub shells of the specified parent + shell are deactivated as well. + @param rParentShell + When this shell is not the main view then the method returns + immediately. + @param rParentShell + When this shell is not the main view then the method returns + immediately. + @param eGroup + The group is currently not used. + @param nToolBarId + Id of the tool bar shell. + */ + void SetToolBarShell ( + ToolBarGroup eGroup, + ShellId nToolBarId); + + void PreUpdate (void); + + /** Request an update of the active tool bars. The update is made + asynchronously. + */ + void RequestUpdate (void); + + /** This is a hint for the ToolBarManager to improve the performance + when it updates its tool bars when its own lock is released. Taking + control of the release of the update lock of the ViewShellManager + avoids some shell stack modifications and tool bar updates. + */ + void LockViewShellManager (void); + + /** Use this class to prevent the visible tool bars from being updated + (and thus causing repaints and GUI rearrangements) when several tool + bar operations are made in a row. + */ + class UpdateLock { public: + UpdateLock(const ::boost::shared_ptr<ToolBarManager>& rpManager) + : mpManager(rpManager) { mpManager->LockUpdate(); } + ~UpdateLock(void) { mpManager->UnlockUpdate(); } + private: + ::boost::shared_ptr<ToolBarManager> mpManager; + }; + friend class UpdateLock; + + void ToolBarsDestroyed(void); + +private: + class Implementation; + ::boost::scoped_ptr<Implementation> mpImpl; + + /** The ViewShellBase is used to get the XLayoutManager and to determine + the plug in mode. + */ + ToolBarManager (void); + + void LockUpdate (void); + void UnlockUpdate (void); +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/UpdateLockManager.hxx b/sd/source/ui/inc/UpdateLockManager.hxx new file mode 100755 index 000000000000..9a0f6b65b259 --- /dev/null +++ b/sd/source/ui/inc/UpdateLockManager.hxx @@ -0,0 +1,92 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_UPDATE_LOCK_MANAGER_HXX +#define SD_UPDATE_LOCK_MANAGER_HXX + +#include <memory> + +namespace sd { + +class ViewShellBase; + +/** Manage update locks of ViewShellBase objects. + A ViewShellBase object is locked while views are switched in order to + avoid unnecessary repaints of views and object bars. + Locking a ViewShellBase locks the frame::XLayoutManager and prevents + Activate() and Deactivate() calls at ViewShell objects being processed. + + The main responsibility of this class is find the right moment to unlock + the managed ViewShellBase object: Only Lock() has to be called from the + outside (usually from PaneManager). Unlock() is called by this class + itself. When all else fails it has a timer that calls Unlock() + eventually. +*/ +class UpdateLockManager +{ +public: + /** The newly created instance supports locking for the specified + ViewShellBase object by default. Call Disable() for Lock() and + Unlock() calls being ignored. + */ + UpdateLockManager (ViewShellBase& rBase); + ~UpdateLockManager (void); + + /** For e.g. the PresentationViewShellBase locking is not necessary and + does lead to problems. This method lets Lock() and Unlock() calls + be ignored and thus turns locking essentially off. + */ + void Disable (void); + + /** Lock some UI updates. For every call to this method a call to + Unlock() is required to really unlock. + */ + void Lock (void); + + /** When called as many times as Lock() has been called before then the + ViewShellBase object is unlocked. + */ + void Unlock (void); + + /** Return whether the ViewShellBase object is locked. When locking is + disabled, i.e. Disable() has been called before, then this method + always returns <FALSE/>. + */ + bool IsLocked (void) const; + +private: + class Implementation; + Implementation* mpImpl; + + UpdateLockManager (const UpdateLockManager&); // Not supported. + UpdateLockManager& operator= (const UpdateLockManager&); // Not supported. +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/View.hxx b/sd/source/ui/inc/View.hxx new file mode 100755 index 000000000000..766f0c072b63 --- /dev/null +++ b/sd/source/ui/inc/View.hxx @@ -0,0 +1,261 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_VIEW_HXX +#define SD_VIEW_HXX + +#include "pres.hxx" +#include <tools/gen.hxx> +#include <svtools/transfer.hxx> +#include <svx/fmview.hxx> +#include <svx/svdmark.hxx> +//#ifndef _SVDVMARK_HXX //autogen +//#include <svx/svdvmark.hxx> +//#endif +#include <svx/svdpage.hxx> +#include "fupoor.hxx" + +#include "smarttag.hxx" + +class SdDrawDocument; +class SdrOle2Obj; +class SdrGrafObj; +class SdrMediaObj; +class OutputDevice; +class VirtualDevice; +class ImageMap; +class Point; +class Graphic; +class SdrOutliner; +class TransferableDataHelper; +struct StyleRequestData; +class Outliner; + +namespace sd { + +class DrawDocShell; +struct SdNavigatorDropEvent; +class ViewShell; +class Window; +class ViewClipboard; + +// ------------------- +// - SdViewRedrawRec - +// ------------------- + +struct SdViewRedrawRec +{ + OutputDevice* mpOut; + Rectangle aRect; +}; + + +class View : public FmFormView +{ +public: + TYPEINFO(); + + View ( + SdDrawDocument* pDrawDoc, + OutputDevice* pOutDev, + ViewShell* pViewSh=NULL); + virtual ~View (void); + + void CompleteRedraw( OutputDevice* pOutDev, const Region& rReg, sdr::contact::ViewObjectContactRedirector* pRedirector = 0L); + + virtual sal_Bool GetAttributes( SfxItemSet& rTargetSet, sal_Bool bOnlyHardAttr=sal_False ) const; + virtual sal_Bool SetAttributes(const SfxItemSet& rSet, sal_Bool bReplaceAll = sal_False); + virtual void MarkListHasChanged(); + virtual void ModelHasChanged(); + virtual void SelectAll(); + virtual void DoCut(::Window* pWindow=NULL); + virtual void DoCopy(::Window* pWindow=NULL); + virtual void DoPaste(::Window* pWindow=NULL); + virtual void DoConnect(SdrOle2Obj* pOleObj); + virtual sal_Bool SetStyleSheet(SfxStyleSheet* pStyleSheet, sal_Bool bDontRemoveHardAttr = sal_False); + virtual void StartDrag( const Point& rStartPos, ::Window* pWindow ); + virtual void DragFinished( sal_Int8 nDropAction ); + virtual sal_Int8 AcceptDrop ( + const AcceptDropEvent& rEvt, + DropTargetHelper& rTargetHelper, + ::sd::Window* pTargetWindow = NULL, + sal_uInt16 nPage = SDRPAGE_NOTFOUND, + sal_uInt16 nLayer = SDRPAGE_NOTFOUND); + virtual sal_Int8 ExecuteDrop ( + const ExecuteDropEvent& rEvt, + DropTargetHelper& rTargetHelper, + ::sd::Window* pTargetWindow = NULL, + sal_uInt16 nPage = SDRPAGE_NOTFOUND, + sal_uInt16 nLayer = SDRPAGE_NOTFOUND); + + ::com::sun::star::uno::Reference< + ::com::sun::star::datatransfer::XTransferable> + CreateClipboardDataObject (::sd::View*, ::Window& rWindow); + ::com::sun::star::uno::Reference< + ::com::sun::star::datatransfer::XTransferable> + CreateDragDataObject (::sd::View*, ::Window& rWindow, + const Point& rDragPos); + ::com::sun::star::uno::Reference< + ::com::sun::star::datatransfer::XTransferable> + CreateSelectionDataObject (::sd::View*, ::Window& rWindow); + + void UpdateSelectionClipboard( sal_Bool bForceDeselect ); + + inline DrawDocShell* GetDocSh (void) const; + inline SdDrawDocument* GetDoc (void) const; + inline ViewShell* GetViewShell (void) const; + + virtual sal_Bool SdrBeginTextEdit(SdrObject* pObj, SdrPageView* pPV = 0L, ::Window* pWin = 0L, sal_Bool bIsNewObj = sal_False, + SdrOutliner* pGivenOutliner = 0L, OutlinerView* pGivenOutlinerView = 0L, + sal_Bool bDontDeleteOutliner = sal_False, sal_Bool bOnlyOneView = sal_False, sal_Bool bGrabFocus = sal_True); + + virtual SdrEndTextEditKind SdrEndTextEdit(sal_Bool bDontDeleteReally = sal_False); + + bool RestoreDefaultText( SdrTextObj* pTextObj ); + + sal_Bool InsertData( const TransferableDataHelper& rDataHelper, + const Point& rPos, sal_Int8& rDnDAction, sal_Bool bDrag, + sal_uLong nFormat = 0, sal_uInt16 nPage = SDRPAGE_NOTFOUND, sal_uInt16 nLayer = SDRLAYER_NOTFOUND ); + /** gets the metafile from the given transferable helper and insert it as a graphic shape. + @param bOptimize if set to true, the metafile is analyzed and if only one bitmap action is + present, then is is inserted as a single graphic. + */ + bool InsertMetaFile( TransferableDataHelper& rDataHelper, + const Point& rInsertPos, + ImageMap* pImageMap, bool bOptimize ); + + SdrGrafObj* InsertGraphic( const Graphic& rGraphic, + sal_Int8& rAction, const Point& rPos, + SdrObject* pSelectedObj, ImageMap* pImageMap ); + SdrMediaObj* InsertMediaURL( const rtl::OUString& rMediaURL, sal_Int8& rAction, + const Point& rPos, const Size& rSize ); + + bool PasteRTFTable( SotStorageStreamRef xStm, SdrPage* pPage, sal_uLong nPasteOptions ); + + sal_Bool IsPresObjSelected(sal_Bool bOnPage=sal_True, sal_Bool bOnMasterPage=sal_True, sal_Bool bCheckPresObjListOnly=sal_False, sal_Bool bCheckLayoutOnly=sal_False) const; + + void SetMarkedOriginalSize(); + + void LockRedraw(sal_Bool bLock); + + sal_Bool IsMorphingAllowed() const; + sal_Bool IsVectorizeAllowed() const; + + virtual SfxStyleSheet* GetStyleSheet() const; + + sal_Bool GetExchangeList( List*& rpExchangeList, List* pBookmarkList, sal_uInt16 nType ); + + virtual void onAccessibilityOptionsChanged(); + + virtual SdrModel* GetMarkedObjModel() const; + virtual sal_Bool Paste(const SdrModel& rMod, const Point& rPos, SdrObjList* pLst=NULL, sal_uInt32 nOptions=0); + using SdrExchangeView::Paste; + + /** returns true if we have an undo manager and there is an open list undo action */ + bool isRecordingUndo() const; + + virtual void AddCustomHdl(); + + SmartTagSet& getSmartTags() { return maSmartTags; } + void selectSmartTag( const SmartTagReference& xTag ); + void updateHandles(); + + virtual SdrViewContext GetContext() const; + virtual sal_Bool HasMarkablePoints() const; + virtual sal_uLong GetMarkablePointCount() const; + virtual sal_Bool HasMarkedPoints() const; + virtual sal_uLong GetMarkedPointCount() const; + virtual sal_Bool IsPointMarkable(const SdrHdl& rHdl) const; + virtual sal_Bool MarkPoint(SdrHdl& rHdl, sal_Bool bUnmark=sal_False); + virtual void CheckPossibilities(); + virtual sal_Bool MarkPoints(const ::Rectangle* pRect, sal_Bool bUnmark); + using SdrMarkView::MarkPoints; + + void SetPossibilitiesDirty() { bPossibilitiesDirty = true; } + void SetMoveAllowed( bool bSet ) { bMoveAllowed = bSet; } + void SetMoveProtected( bool bSet ) { bMoveProtect = bSet; } + void SetResizeFreeAllowed( bool bSet ) { bResizeFreeAllowed = bSet; } + void SetResizePropAllowed( bool bSet ) { bResizePropAllowed = bSet; } + void SetResizeProtected( bool bSet ) { bResizeProtect = bSet; } + + void SetMarkedPointsSmoothPossible( bool bSet ) { bSetMarkedPointsSmoothPossible = bSet; } + void SetMarkedSegmentsKindPossible( bool bSet ) { bSetMarkedSegmentsKindPossible = bSet; } + + SdrObject* GetEmptyPresentationObject( PresObjKind eKind ); +protected: + DECL_LINK( OnParagraphInsertedHdl, ::Outliner * ); + DECL_LINK( OnParagraphRemovingHdl, ::Outliner * ); + + virtual void OnBeginPasteOrDrop( PasteOrDropInfos* pInfos ); + virtual void OnEndPasteOrDrop( PasteOrDropInfos* pInfos ); + + SdDrawDocument* mpDoc; + DrawDocShell* mpDocSh; + ViewShell* mpViewSh; + SdrMarkList* mpDragSrcMarkList; + SdrObject* mpDropMarkerObj; + SdrDropMarkerOverlay* mpDropMarker; + sal_uInt16 mnDragSrcPgNum; + Point maDropPos; + ::std::vector< String > maDropFileVector; + sal_Int8 mnAction; + Timer maDropErrorTimer; + Timer maDropInsertFileTimer; + sal_uInt16 mnLockRedrawSmph; + List* mpLockedRedraws; + bool mbIsDropAllowed; + + DECL_LINK( DropErrorHdl, Timer* ); + DECL_LINK( DropInsertFileHdl, Timer* ); + DECL_LINK( ExecuteNavigatorDrop, SdNavigatorDropEvent* pSdNavigatorDropEvent ); + + void ImplClearDrawDropMarker(); + + SmartTagSet maSmartTags; + +private: + ::std::auto_ptr<ViewClipboard> mpClipboard; +}; + + +DrawDocShell* View::GetDocSh (void) const +{ + return mpDocSh; +} +SdDrawDocument* View::GetDoc (void) const +{ + return mpDoc; +} + +ViewShell* View::GetViewShell (void) const +{ + return mpViewSh; +} + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/ViewClipboard.hxx b/sd/source/ui/inc/ViewClipboard.hxx new file mode 100755 index 000000000000..00f68f6a4218 --- /dev/null +++ b/sd/source/ui/inc/ViewClipboard.hxx @@ -0,0 +1,93 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_VIEW_CLIPBOARD_HXX +#define SD_VIEW_CLIPBOARD_HXX + +#include <tools/solar.h> + +class SdPage; +class SdTransferable; + +namespace sd { + +class View; + + +/** Handle clipboard related tasks for the draw view. +*/ +class ViewClipboard +{ +public: + ViewClipboard (::sd::View& rView); + virtual ~ViewClipboard (void); + + /** Handle the drop of a drag-and-drop action where the transferable + contains a set of pages. + */ + virtual void HandlePageDrop (const SdTransferable& rTransferable); + +protected: + ::sd::View& mrView; + + /** Return the first master page of the given transferable. When the + bookmark list of the transferable contains at least one non-master + page then NULL is returned. + */ + SdPage* GetFirstMasterPage (const SdTransferable& rTransferable); + + /** Assign the (first) master page of the given transferable to the + (...) slide. + */ + virtual void AssignMasterPage ( + const SdTransferable& rTransferable, + SdPage* pMasterPage); + + /** Return an index of a page after which the pages of the transferable + are to be inserted into the target document. + */ + virtual sal_uInt16 DetermineInsertPosition ( + const SdTransferable& rTransferable); + + /** Insert the slides in the given transferable behind the last selected + slide or, when the selection is empty, behind the last slide. + @param rTransferable + This transferable defines which pages to insert. + @param nInsertPosition + The pages of the transferable will be inserted behind the page + with this index. + @return + Returns the number of inserted slides. + */ + virtual sal_uInt16 InsertSlides ( + const SdTransferable& rTransferable, + sal_uInt16 nInsertPosition); +}; + +} // end of namespace ::sd + +#endif diff --git a/sd/source/ui/inc/ViewShell.hxx b/sd/source/ui/inc/ViewShell.hxx new file mode 100755 index 000000000000..fa4aed19b2ba --- /dev/null +++ b/sd/source/ui/inc/ViewShell.hxx @@ -0,0 +1,606 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_VIEW_SHELL_HXX +#define SD_VIEW_SHELL_HXX + +#include <rtl/ref.hxx> + +#include <vcl/field.hxx> +#include <sfx2/viewsh.hxx> +#include <vcl/field.hxx> +#include <vcl/prntypes.hxx> +#include <svtools/transfer.hxx> +#include <comphelper/implementationreference.hxx> +#include "glob.hxx" +#include "pres.hxx" +#include "cfgids.hxx" +#ifndef _SD_VIEW_HXX +#include "View.hxx" +#endif +#include "sddllapi.h" + +#include <com/sun/star/drawing/XDrawSubController.hpp> +#include <memory> +#include <boost/shared_ptr.hpp> + +class SdPage; +class SvxRuler; +class SdrOle2Obj; // fuer die, die Teile von SVDRAW rausdefiniert haben +class ScrollBarBox; +class SdDrawDocument; +class ScrollBar; +class FmFormShell; +class SdOptionsPrintItem; +class MultiSelection; + +extern const String aEmptyStr; + +namespace com { namespace sun { namespace star { +namespace embed { + class XEmbeddedObject; +}}}} + +namespace css = ::com::sun::star; + +namespace sd { + +class Client; +class DrawDocShell; +class DrawSubController; +class FrameView; +class FuPoor; +class FuSearch; +class SlideShow; +class LayerTabBar; +class View; +class ViewShellBase; +class ViewTabBar; +class Window; +class WindowUpdater; +class ZoomList; + +#undef OUTPUT_DRAWMODE_COLOR +#undef OUTPUT_DRAWMODE_CONTRAST + +/** Base class of the stacked shell hierarchy. + + <p>Despite its name this class is not a descendant of SfxViewShell + but of SfxShell. Its name expresses the fact that it acts like a + view shell. Beeing a stacked shell rather then being an actual view shell + there can be several instances of this class that + <ul> + <li>all are based on the same view shell and thus show the same + document and share common view functionality and</li> + <li>are all visible at the same time and live in the same + frame.</li> + <ul></p> + + <p>This class replaces the former ViewShell class.</p> +*/ +class ViewShell + : public SfxShell +{ +public: + enum ShellType { + ST_NONE, + ST_DRAW, // The Draw application. + ST_IMPRESS, // Main view of the Impress application. + ST_NOTES, + ST_HANDOUT, + ST_OUTLINE, + ST_SLIDE_SORTER, + ST_PRESENTATION, + ST_TASK_PANE + }; + static const int MAX_HSPLIT_CNT = 1; + static const int MAX_VSPLIT_CNT = 1; + static const int MIN_SCROLLBAR_SIZE = 50; + + static const sal_uLong OUTPUT_DRAWMODE_COLOR = DRAWMODE_DEFAULT; + static const sal_uLong OUTPUT_DRAWMODE_GRAYSCALE + = DRAWMODE_GRAYLINE | DRAWMODE_GRAYFILL + | DRAWMODE_BLACKTEXT | DRAWMODE_GRAYBITMAP + | DRAWMODE_GRAYGRADIENT; + static const int OUTPUT_DRAWMODE_BLACKWHITE + = DRAWMODE_BLACKLINE | DRAWMODE_BLACKTEXT + | DRAWMODE_WHITEFILL | DRAWMODE_GRAYBITMAP + | DRAWMODE_WHITEGRADIENT; + static const int OUTPUT_DRAWMODE_CONTRAST + = DRAWMODE_SETTINGSLINE | DRAWMODE_SETTINGSFILL + | DRAWMODE_SETTINGSTEXT | DRAWMODE_SETTINGSGRADIENT; + + TYPEINFO(); + + ViewShell ( + SfxViewFrame *pFrame, + ::Window* pParentWindow, + ViewShellBase& rViewShellBase, + bool bAllowCenter = true); + virtual ~ViewShell (void); + + /** The Init method has to be called from the outside directly + after a new object of this class has been created. It can be + used for that part of the initialisation that can be run only + after the creation of the new object is finished. This + includes registration as listener at event broadcasters. + + Derived classes should call this method at the head of their + Init() methods. + @param bIsMainViewShell + This flag tells the Init() method whether the new ViewShell will + be the main view shell. + */ + virtual void Init (bool bIsMainViewShell); + + /** The Exit() method has to be called before the destructor so that the + view shell is still a valid object and can safely call methods that + rely on that. + */ + virtual void Exit (void); + + void Cancel(); + + /** Return the window that is the parent of all controls of this view + shell. This may or may not be the window of the frame. + */ + inline ::Window* GetParentWindow (void) const; + + inline ::sd::View* GetView (void) const; + inline SdrView* GetDrawView (void) const; + SD_DLLPUBLIC DrawDocShell* GetDocSh (void) const; + + SdDrawDocument* GetDoc (void) const; + + SD_DLLPUBLIC SfxViewFrame* GetViewFrame (void) const; + + /** The active window is usually the mpContentWindow. When there is a + show running then the active window is a ShowWindow. + */ + ::sd::Window* GetActiveWindow (void) const; + + /** Set the active window. When the shell is displayed in the center + pane then the window of the ViewShellBase is also set to the given + window. + */ + void SetActiveWindow (::sd::Window* pWindow); + + /** Return the rectangle that encloses all windows of the view. That + excludes the controls in the frame like rulers, scroll bars, tab + bar, and buttons. + @return + The rectangle is returned in screen coordinates, i.e. pixel + values relative to the upper left corner of the screen?. + */ + const Rectangle& GetAllWindowRect (void); + + // Mouse- & Key-Events + virtual void PrePaint(); + virtual void Paint (const Rectangle& rRect, ::sd::Window* pWin); + virtual sal_Bool KeyInput(const KeyEvent& rKEvt, ::sd::Window* pWin); + virtual void MouseMove(const MouseEvent& rMEvt, ::sd::Window* pWin); + virtual void MouseButtonUp(const MouseEvent& rMEvt, ::sd::Window* pWin); + virtual void MouseButtonDown(const MouseEvent& rMEvt, ::sd::Window* pWin); + virtual void Command(const CommandEvent& rCEvt, ::sd::Window* pWin); + virtual sal_Bool RequestHelp( const HelpEvent& rEvt, ::sd::Window* pWin ); + virtual long Notify( NotifyEvent& rNEvt, ::sd::Window* pWin ); + + virtual bool HandleScrollCommand(const CommandEvent& rCEvt, ::sd::Window* pWin); + + virtual void Draw(OutputDevice &rDev, const Region &rReg); + + virtual void SetUIUnit(FieldUnit eUnit); + virtual void SetDefTabHRuler( sal_uInt16 nDefTab ); + + sal_Bool HasRuler (void); + void SetRuler(sal_Bool bRuler); + + /** Set internal values of all scroll bars that determine thumb size and + position. The external values like size and position of the scroll + bar controls are not modified. + */ + virtual void UpdateScrollBars (void); + void Scroll(long nX, long nY); + void ScrollLines(long nX, long nY); + virtual void SetZoom(long nZoom); + virtual void SetZoomRect(const Rectangle& rZoomRect); + void InitWindows(const Point& rViewOrigin, const Size& rViewSize, + const Point& rWinPos, sal_Bool bUpdate = sal_False); + void InvalidateWindows(); + /** This method is still used by the OutlineViewShell to update the + model according to the content of the outline view. This in turn + updates the previews in the slide sorter. + */ + virtual void UpdatePreview (SdPage* pPage, sal_Bool bInit = sal_False); + + void DrawMarkRect(const Rectangle& rRect) const; + + void ExecReq( SfxRequest &rReq ); + + ZoomList* GetZoomList (void); + + FrameView* GetFrameView (void); + /** Setting a frame view triggers ReadFrameViewData() for the new + frame. + @param pFrameView + The new frame view that replaces the old one. + */ + void SetFrameView (FrameView* pFrameView); + virtual void ReadFrameViewData(FrameView* pView); + virtual void WriteFrameViewData(); + virtual void WriteUserData(String& rString); + virtual void ReadUserData(const String& rString); + + virtual sal_Bool ActivateObject(SdrOle2Obj* pObj, long nVerb); + + /** @returns + current or selected page or 0. This method + will fail in master page mode. + + @deprecated, please use getCurrentPage(); + */ + virtual SdPage* GetActualPage() = 0; + + /** @returns + current or selected page or 0. + */ + virtual SdPage* getCurrentPage() const = 0; + + FunctionReference GetOldFunction() const { return mxOldFunction; } + bool HasOldFunction() const { return mxOldFunction.is(); } + FunctionReference GetCurrentFunction() const { return mxCurrentFunction; } + bool HasCurrentFunction( sal_uInt16 nSID ) { return mxCurrentFunction.is() && (mxCurrentFunction->GetSlotID() == nSID ); } + bool HasCurrentFunction() { return mxCurrentFunction.is(); } + + void SetCurrentFunction(const FunctionReference& xFunction); + void SetOldFunction(const FunctionReference& xFunction); + void DeactivateCurrentFunction( bool bPermanent = false ); + + void SetPageSizeAndBorder(PageKind ePageKind, const Size& rNewSize, + long nLeft, long nRight, long nUpper, long nLower, + sal_Bool bScaleAll, Orientation eOrient, sal_uInt16 nPaperBin, + sal_Bool bBackgroundFullSize ); + + void SetStartShowWithDialog( sal_Bool bIn = sal_True ) { mbStartShowWithDialog = bIn; } + sal_Bool IsStartShowWithDialog() const { return mbStartShowWithDialog; } + + sal_uInt16 GetPrintedHandoutPageNum (void) const { return mnPrintedHandoutPageNum; } + void SetPrintedHandoutPageNum (sal_uInt16 nPageNumber) {mnPrintedHandoutPageNum=nPageNumber; } + + sal_uInt16 GetPrintedHandoutPageCount(void) const { return mnPrintedHandoutPageCount; } + void SetPrintedHandoutPageCount (sal_uInt16 nPageCount) {mnPrintedHandoutPageCount=nPageCount; } + + virtual sal_uInt16 PrepareClose( sal_Bool bUI = sal_True, sal_Bool bForBrowsing = sal_False ); + + void GetMenuState(SfxItemSet& rSet); + + virtual sal_Int8 AcceptDrop( const AcceptDropEvent& rEvt, DropTargetHelper& rTargetHelper, + ::sd::Window* pTargetWindow, sal_uInt16 nPage, sal_uInt16 nLayer ); + virtual sal_Int8 ExecuteDrop( const ExecuteDropEvent& rEvt, DropTargetHelper& rTargetHelper, + ::sd::Window* pTargetWindow, sal_uInt16 nPage, sal_uInt16 nLayer ); + + virtual void WriteUserDataSequence ( ::com::sun::star::uno::Sequence < ::com::sun::star::beans::PropertyValue >&, sal_Bool bBrowse = sal_False ); + virtual void ReadUserDataSequence ( const ::com::sun::star::uno::Sequence < ::com::sun::star::beans::PropertyValue >&, sal_Bool bBrowse = sal_False ); + + /** this method is called when the visible area of the view from this viewshell is changed */ + virtual void VisAreaChanged(const Rectangle& rRect); + + /** Create an accessible object representing the specified window. + Overload this method to provide view mode specific objects. The + default implementation returns an empty reference. + @param pWindow + Make the document displayed in this window accessible. + @return + This default implementation returns an empty reference. + */ + virtual ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessible> + CreateAccessibleDocumentView (::sd::Window* pWindow); + + void SetWinViewPos(const Point& rWinPos, bool bUpdate); + Point GetWinViewPos() const; + Point GetViewOrigin() const; + + /** Return the window updater of this view shell. + @return + In rare circumstances the returned pointer may be <null/>, + i.e. when no memory is available anymore. + */ + ::sd::WindowUpdater* GetWindowUpdater (void) const; + + /** Return the border that is drawn arround the actual document view. + The border contains typically rulers and scroll bars. + @param bOuterResize + When this flag is <TRUE/> then the border is used for an + OuterResizePixel(), i.e. there is a given window size and the + border elements are placed inside so that the document view has + the given window size minus the border. + When the flag is <FALSE/> then the border is used for an + InnerResizePixel(), i.e. the document view has a given size and + the border is placed outside. In this scenario the parent + window has the size of the document view plus the border. + */ + SvBorder GetBorder (bool bOuterResize); + + /** Notify the view shell that its parent window has been resized. + The ViewShell places and resizes its UI elements accordingly. + The new size can be obtained from the parent window. + */ + virtual void Resize (void); + + /** Set the position and size of the area which contains the GUI + elements like rulers, sliders, and buttons as well as the document + view. Both size and position are expected to be in pixel + coordinates. The positions and sizes of the mentioned GUI elements + are updated as well. + + <p> This method is implemented by first setting copying the given + values to internal variables and then calling the + <type>ArrangeGUIElements</type> method which performs the actual + work of sizeing and arranging the UI elements accordingly.</p> + @param rPos + The position of the enclosing window relative to the document + window. This is only interesting if a Draw/Impress document + view is embedded as OLE object into another document view. For + normal documents this position is (0,0). + @param rSize + The new size in pixel. + */ + // This is to be replaced by Resize. + // virtual void AdjustPosSizePixel(const Point &rPos, const Size &rSize); + + /** Set position and size of the GUI elements that are controllerd by + the view shell like rulers and scroll bars as well as the actual + document view according to the position and size that were given + with the last Resize() call. + */ + virtual void ArrangeGUIElements (void); + + // virtual void OuterResizePixel(const Point &rPos, const Size &rSize); + // virtual void InnerResizePixel(const Point &rPos, const Size &rSize); + + ViewShellBase& GetViewShellBase (void) const; + + /** Return <TRUE/> when the called view shell is the main sub shell of + its ViewShellBase object, i.e. is display in the center pane. This + convenience function is equivalent to comparing the this pointer to + the result of ViewShellBase::GetViewShell(PT_CENTER). + */ + bool IsMainViewShell (void) const; + + /** Set or reset the flag that indicates whether the called shell is the + one displayed in the center pane. By default this flag is set to + <FALSE/>. For the main view shell it thus has to be set to <TRUE/>. + */ + void SetIsMainViewShell (bool bIsMainViewShell); + + /** Return a sub controller that implements the view shell specific + part of the DrawController. + */ + virtual css::uno::Reference<css::drawing::XDrawSubController> CreateSubController (void) = 0; + + /** Return the type of the shell. + */ + virtual ShellType GetShellType (void) const; + + /** This method is more or less an alias to Deactivate(). It is called + before an object of this class is taken from the stack of view + shells. + + <p>When this method is not called before a view shell is taken from + a stack then the Deactivate() call from the SFX as a response to + RemoveSubShell() comes to late when the view shell is not on the + stack anymore.</p> + */ + virtual void Shutdown (void); + + /** This function is called from the underlying ViewShellBase + object to handle a verb execution request. + */ + virtual ErrCode DoVerb (long nVerb); + + virtual void UIActivating( SfxInPlaceClient* ); + virtual void UIDeactivated( SfxInPlaceClient* ); + + /** Show controls of the UI or hide them, depending on the given flag. + As a result the border is adapted. + */ + virtual void ShowUIControls (bool bVisible = true); + sal_Bool IsPageFlipMode(void) const; + + /** Set the given window as new parent window. This is not possible for + all views, so the return value tells the caller if the relocation + was successfull. + */ + virtual bool RelocateToParentWindow (::Window* pParentWindow); + + void AdaptDefaultsForChart( + const ::com::sun::star::uno::Reference < ::com::sun::star::embed::XEmbeddedObject > & xEmbObj ); + + /** Depending on the given request create a new page or duplicate an + existing one. A new page is created behind the given slide. + @param rRequest + The request as passed to an Execute() method. Its arguments are + evaluated. Its slot id determines whether to create or + duplicate a slide. + @param pPage + This page is either duplicated or becomes the predecessor of the + new slide. If NULL a duplication request is ignored. A new + slide is inserted as first slide. + @param nInsertPosition + When -1 (the default) then insert after pPage. Otherwise insert + before the given index (of a standard page). + @return + The new slide is returned. If for some reason a new page can + not be created then NULL is returned. + */ + virtual SdPage* CreateOrDuplicatePage ( + SfxRequest& rRequest, + PageKind ePageKind, + SdPage* pPage, + const sal_Int32 nInsertPosition = -1); + + + class Implementation; + +protected: + /** must be called in the beginning of each subclass d'tor. + disposes and clears both current and old function. */ + void DisposeFunctions(); + + friend class ViewShellBase; + + /** Window inside the rulers and scroll bars that shows a view of the + document. + */ + + ::boost::shared_ptr<sd::Window> mpContentWindow; + + /// Horizontal scroll bar for the current slide is displayed when needed. + ::boost::shared_ptr<ScrollBar> mpHorizontalScrollBar; + /// Vertical scroll bar for whole document is always visible. + ::boost::shared_ptr<ScrollBar> mpVerticalScrollBar; + /// Horizontal ruler is not shown by default. + ::std::auto_ptr<SvxRuler> mpHorizontalRuler; + /// Vertical ruler is not shown by default. + ::std::auto_ptr<SvxRuler> mpVerticalRuler; + /// Filler of the little square enclosed by the two scroll bars. + ::boost::shared_ptr<ScrollBarBox> mpScrollBarBox; + /// Layer tab bar. + ::std::auto_ptr<LayerTabBar> mpLayerTabBar; + + /// This flag controls whether the rulers are visible. + bool mbHasRulers; + + /// The active window. + ::sd::Window* mpActiveWindow; + ::sd::View* mpView; + FrameView* mpFrameView; + + FunctionReference mxCurrentFunction; + FunctionReference mxOldFunction; + ZoomList* mpZoomList; + + Point maViewPos; + Size maViewSize; + Size maScrBarWH; + + sal_Bool mbCenterAllowed; // wird an Fenster weitergegeben + + sal_Bool mbStartShowWithDialog; // Praesentation wurde ueber Dialog gestartet + sal_uInt16 mnPrintedHandoutPageNum; // Page number of the handout page that is to be printed. + sal_uInt16 mnPrintedHandoutPageCount; // Page count of the handout pages that are to be printed. + + //af sal_Bool bPrintDirectSelected; // Print only selected objects in direct print + //afString sPageRange; // pagerange if selected objects in direct print + + /** Area covered by all windows, i.e. the area of the parent window + without the controls at the borders like rulers, scroll bars, tab + bar, buttons. + This rectangle may be set in window coordinates (i.e. pixel values + relative to the parent window). It is transformed by every call to + GetAllWindowRectangle() into screen coordinates (relative to the + upper left corner of the screen. + */ + Rectangle maAllWindowRectangle; + + /// The type of the shell. Returned by GetShellType(). + ShellType meShellType; + + ::std::auto_ptr<Implementation> mpImpl; + + // #96090# Support methods for centralized UNDO/REDO + virtual ::svl::IUndoManager* ImpGetUndoManager (void) const; + void ImpGetUndoStrings(SfxItemSet &rSet) const; + void ImpGetRedoStrings(SfxItemSet &rSet) const; + void ImpSidUndo(sal_Bool bDrawViewShell, SfxRequest& rReq); + void ImpSidRedo(sal_Bool bDrawViewShell, SfxRequest& rReq); + + DECL_LINK( HScrollHdl, ScrollBar * ); + DECL_LINK( VScrollHdl, ScrollBar * ); + + // virt. Scroll-Handler, hier koennen sich abgeleitete Klassen einklinken + virtual long VirtHScrollHdl(ScrollBar* pHScroll); + virtual long VirtVScrollHdl(ScrollBar* pVScroll); + + // virtuelle Funktionen fuer Lineal-Handling + virtual SvxRuler* CreateHRuler(::sd::Window* pWin, sal_Bool bIsFirst); + virtual SvxRuler* CreateVRuler(::sd::Window* pWin); + virtual void UpdateHRuler(); + virtual void UpdateVRuler(); + + // Zeiger auf ein zusaetzliches Control im horizontalen ScrollBar + // abgeleiteter Klassen (z.B. ein TabBar) zurueckgeben + virtual long GetHCtrlWidth(); + + virtual void Activate(sal_Bool IsMDIActivate); + virtual void Deactivate(sal_Bool IsMDIActivate); + + virtual void SetZoomFactor( const Fraction &rZoomX, + const Fraction &rZoomY ); + +private: + ::Window* mpParentWindow; + /** This window updater is used to keep all relevant windows up to date + with reference to the digit langugage used to display digits in text + shapes. + */ + ::std::auto_ptr< ::sd::WindowUpdater> mpWindowUpdater; + + /** Code common to all constructors. It generally is a bad idea + to call this function from outside a constructor. + */ + void construct (void); + + DECL_LINK(FrameWindowEventListener, VclSimpleEvent*); + + /** Create the rulers. + */ + void SetupRulers (void); +}; + + + + +::Window* ViewShell::GetParentWindow (void) const +{ + return mpParentWindow; +} + +::sd::View* ViewShell::GetView (void) const +{ + return mpView; +} + +SdrView* ViewShell::GetDrawView (void) const +{ + return static_cast<SdrView*>(mpView); +} + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/ViewShellBase.hxx b/sd/source/ui/inc/ViewShellBase.hxx new file mode 100755 index 000000000000..338dbce75beb --- /dev/null +++ b/sd/source/ui/inc/ViewShellBase.hxx @@ -0,0 +1,273 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_VIEW_SHELL_BASE_HXX +#define SD_VIEW_SHELL_BASE_HXX + +#include <com/sun/star/frame/XFrame.hpp> + +#include "ViewShell.hxx" + +#include "glob.hxx" +#include <sfx2/viewsh.hxx> +#include <sfx2/viewfac.hxx> +#include <memory> +#include <boost/shared_ptr.hpp> +#include <boost/scoped_ptr.hpp> + +#include <set> + +class SdDrawDocument; +class SfxRequest; + +namespace sd { namespace tools { +class EventMultiplexer; +} } + +namespace sd { + +class DrawController; +class DrawDocShell; +class FormShellManager; +class ToolBarManager; +class UpdateLockManager; +class ViewShell; +class ViewShellManager; + +/** SfxViewShell descendant that the stacked Draw/Impress shells are + based on. + + <p>The "base" part of the name does not mean that this is a base + class of some class hierarchy. It rather is the base of the + stacked shells.</p> + + <p>This class starts as a new and relatively small class. Over + time as much code as possible should be moved from the stacked + shells to this class.</p> +*/ +class ViewShellBase + : public SfxViewShell +{ +public: + TYPEINFO(); + SFX_DECL_VIEWFACTORY(ViewShellBase); + SFX_DECL_INTERFACE(SD_IF_SDVIEWSHELLBASE) + + /** This constructor is used by the view factory of the SFX macros. + Note that LateInit() has to be called after the constructor + terminates and before doing anything else. + */ + ViewShellBase ( + SfxViewFrame *pFrame, + SfxViewShell* pOldShell); + + virtual ~ViewShellBase (void); + + /** This method is part of the object construction. It HAS to be called + after the constructor has created a new object. + */ + virtual void LateInit (const ::rtl::OUString& rsDefaultView); + + ::boost::shared_ptr<ViewShellManager> GetViewShellManager (void) const; + + /** Return the main view shell stacked on the called ViewShellBase + object. This is usually the view shell displayed in the center + pane. + */ + ::boost::shared_ptr<ViewShell> GetMainViewShell (void) const; + + /** When given a view frame this static method returns the + corresponding sd::ViewShellBase object. + @return + When the SfxViewShell of the given frame is not a + ViewShellBase object then NULL is returned. + */ + static ViewShellBase* GetViewShellBase (SfxViewFrame* pFrame); + + DrawDocShell* GetDocShell (void) const; + SdDrawDocument* GetDocument (void) const; + + /** Callback function for general slot calls. At the moment these are + slots for switching the pane docking windows on and off. + */ + virtual void Execute (SfxRequest& rRequest); + + /** Callback function for retrieving item values related to certain + slots. This is the companion of Execute() and handles the slots + concerned with showing the pane docking windows. + */ + virtual void GetState (SfxItemSet& rSet); + + SvBorder GetBorder (bool bOuterResize); + virtual void InnerResizePixel (const Point& rOrigin, const Size& rSize); + virtual void OuterResizePixel (const Point& rOrigin, const Size& rSize); + + /** This call is forwarded to the main sub-shell. + */ + virtual ErrCode DoVerb (long nVerb); + + /** Return a new renderer that can be used for example for printing the + document. + */ + virtual com::sun::star::uno::Reference<com::sun::star::view::XRenderable> GetRenderable (void); + + /// Forwarded to the print manager. + virtual SfxPrinter* GetPrinter (sal_Bool bCreate = sal_False); + + /// Forwarded to the print manager. + virtual sal_uInt16 SetPrinter ( + SfxPrinter* pNewPrinter, + sal_uInt16 nDiffFlags = SFX_PRINTER_ALL, bool bIsApi=false); + + /// Forwarded to the print manager. + virtual SfxTabPage* CreatePrintOptionsPage ( + ::Window *pParent, + const SfxItemSet &rOptions); + + /// Forward methods to main sub shell. + virtual void WriteUserDataSequence ( + ::com::sun::star::uno::Sequence < + ::com::sun::star::beans::PropertyValue >&, + sal_Bool bBrowse = sal_False); + + /** Pass the given properties to the main view shell. After that we + ensure that the right view shell type is displayed in the center + pane. + */ + virtual void ReadUserDataSequence ( + const ::com::sun::star::uno::Sequence < + ::com::sun::star::beans::PropertyValue >&, + sal_Bool bBrowse = sal_False); + + virtual void UIActivating( SfxInPlaceClient* ); + virtual void UIDeactivated( SfxInPlaceClient* ); + virtual void Activate (sal_Bool IsMDIActivate); + virtual void Deactivate (sal_Bool IsMDIActivate); + virtual void SetZoomFactor ( + const Fraction &rZoomX, + const Fraction &rZoomY); + virtual sal_uInt16 PrepareClose (sal_Bool bUI = sal_True, sal_Bool bForBrowsing = sal_False); + virtual void WriteUserData (String&, sal_Bool bBrowse = sal_False); + virtual void ReadUserData (const String&, sal_Bool bBrowse = sal_False); + virtual SdrView* GetDrawView (void) const; + virtual void AdjustPosSizePixel (const Point &rOfs, const Size &rSize); + + /** When <TRUE/> is given, then the mouse shape is set to hour glass (or + whatever the busy shape looks like on the system.) + */ + void SetBusyState (bool bBusy); + + /** Call this method when the controls of this view shell or the + embedded sub shell need to be rearranged. This is necessary + e.g. when the border has been modified (UpdateBorder() calls this + method). + + This method is like ResizePixel() with no arguments. + */ + void Rearrange (void); + + /** Update the border that is set with SfxViewShell::SetBorderPixel(). + This is done by adding the border used by the ViewShellBase itself + with the border used by the main view shell. + + @param bForce if true the borders are also updated if old border + and new border are same. + */ + void UpdateBorder ( bool bForce = false ); + + /** With this method the UI controls can be turned on or off. It is + used by the FuSlideShow to hide the UI controls while showing a + non-full-screen or in-window presentation in the center pane. + */ + void ShowUIControls (bool bVisible); + + /** this method starts the presentation by + executing the slot SID_PRESENTATION asynchronous */ + void StartPresentation(); + + /** Return an event multiplexer. It is a single class that forwards + events from various sources. This method must not be called before + LateInit() has terminated. + */ + ::boost::shared_ptr<tools::EventMultiplexer> GetEventMultiplexer (void); + + /** returns the complete area of the current view relative to the frame + window + */ + const Rectangle& getClientRectangle() const; + + ::boost::shared_ptr<UpdateLockManager> GetUpdateLockManager (void) const; + + ::boost::shared_ptr<ToolBarManager> GetToolBarManager (void) const; + + ::boost::shared_ptr<FormShellManager> GetFormShellManager (void) const; + + DrawController& GetDrawController (void) const; + + void SetViewTabBar (const ::rtl::Reference<ViewTabBar>& rViewTabBar); + + /** Return the window that is used by the main view shell to display its + view and other UI elements, like scroll bars and rulers. Ownership + of that window remains with the called ViewShellBase object. + */ + ::Window* GetViewWindow (void); + + /** returns the ui descriptive name for the given uno slot. The result is taken from the configuration + and not cached, so do not use it excessive (f.e. in status updates) */ + ::rtl::OUString RetrieveLabelFromCommand( const ::rtl::OUString& aCmdURL ) const; + +protected: + osl::Mutex maMutex; + + virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint); + + virtual void InitializeFramework (void); + +private: + class Implementation; + ::boost::scoped_ptr<Implementation> mpImpl; + DrawDocShell* mpDocShell; + SdDrawDocument* mpDocument; + + /** Determine from the properties of the document shell the initial type + of the view shell in the center pane. We use this method to avoid + starting with the wrong type. When ReadUserDataSequence() is called + we check that the right type is active and change again if that is + not the case because something went wrong. + */ + ::rtl::OUString GetInitialViewShellType (void); +}; + +class ICustomhandleSupplier +{ +public: + virtual void addCustomHandler( SdrView& rSourceView, ViewShell::ShellType eShellType, SdrHdlList& rHandlerList ) = 0; +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/ViewShellHint.hxx b/sd/source/ui/inc/ViewShellHint.hxx new file mode 100644 index 000000000000..6124a95c29c1 --- /dev/null +++ b/sd/source/ui/inc/ViewShellHint.hxx @@ -0,0 +1,68 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_VIEW_SHELL_HINT_HXX +#define SD_VIEW_SHELL_HINT_HXX + +#include <svl/hint.hxx> + +namespace sd { + +/** Local derivation of the SfxHint class that defines some hint ids that + are used by the ViewShell class and its decendants. +*/ +class ViewShellHint + : public SfxHint +{ +public: + enum HintId { + // Indicate that a page resize is about to begin. + HINT_PAGE_RESIZE_START, + // Indicate that a page resize has been completed. + HINT_PAGE_RESIZE_END, + // Indicate that an edit mode change is about to begin. + HINT_CHANGE_EDIT_MODE_START, + // Indicate that an edit mode change has been completed. + HINT_CHANGE_EDIT_MODE_END, + + HINT_COMPLEX_MODEL_CHANGE_START, + HINT_COMPLEX_MODEL_CHANGE_END + }; + + TYPEINFO(); + + ViewShellHint (HintId nHintId); + + HintId GetHintId (void) const; + +private: + HintId meHintId; +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/ViewShellImplementation.hxx b/sd/source/ui/inc/ViewShellImplementation.hxx new file mode 100755 index 000000000000..f4f07b5549dd --- /dev/null +++ b/sd/source/ui/inc/ViewShellImplementation.hxx @@ -0,0 +1,166 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_VIEW_SHELL_IMPLEMENTATION_HXX +#define SD_VIEW_SHELL_IMPLEMENTATION_HXX + +#include "ViewShell.hxx" +#include "ViewShellManager.hxx" +#include "ToolBarManager.hxx" + +#include <boost/shared_ptr.hpp> +#include <boost/weak_ptr.hpp> +#include <memory> + + +class SvxIMapDlg; + +namespace sd { + +class DrawController; + +/** This class contains (will contain) the implementation of methods that + have not be accessible from the outside. +*/ +class ViewShell::Implementation +{ +public: + bool mbIsShowingUIControls; + bool mbIsMainViewShell; + /// Set to true when the ViewShell::Init() method has been called. + bool mbIsInitialized; + /** Set to true while ViewShell::ArrangeGUIElements() is being + executed. It is used as guard against recursive execution. + */ + bool mbArrangeActive; + + /** Remember a link to the sub shell factory, so that it can be + unregistered at the ViewShellManager when a ViewShell is deleted. + */ + ViewShellManager::SharedShellFactory mpSubShellFactory; + + /** This update lock for the ToolBarManager exists in order to avoid + problems with tool bars being displayed while the mouse button is + pressed. Whith docked tool bars this can lead to a size change of + the view. This would change the relative mouse coordinates and thus + interpret every mouse click as move command. + */ + class ToolBarManagerLock + { + public: + /** Create a new instance. This allows the mpSelf member to be set + automatically. + */ + static ::boost::shared_ptr<ToolBarManagerLock> Create ( + const ::boost::shared_ptr<ToolBarManager>& rpManager); + /** Release the lock. When the UI is captured + (Application::IsUICaptured() returns <TRUE/>) then the lock is + released later asynchronously. + @param bForce + When this flag is <TRUE/> then the lock is released even + when IsUICaptured() returns <TRUE/>. + */ + void Release (bool bForce = false); + DECL_LINK(TimeoutCallback,Timer*); + private: + ::std::auto_ptr<ToolBarManager::UpdateLock> mpLock; + /** The timer is used both as a safe guard to unlock the update lock + when Release() is not called explicitly. It is also used to + defer the release of the lock to a time when the UI is not + captured. + */ + Timer maTimer; + /** The shared_ptr to this allows the ToolBarManagerLock to control + its own lifetime. This, of course, does work only when no one + holds another shared_ptr longer than only temporary. + */ + ::boost::shared_ptr<ToolBarManagerLock> mpSelf; + ToolBarManagerLock (const ::boost::shared_ptr<sd::ToolBarManager>& rpManager); + ~ToolBarManagerLock (void); + + class Deleter; + friend class Deleter; + }; + // The member is not an auto_ptr because it takes over its own life time + // control. + ::boost::weak_ptr<ToolBarManagerLock> mpUpdateLockForMouse; + + Implementation (ViewShell& rViewShell); + ~Implementation (void); + + /** Process the SID_MODIFY slot. + */ + void ProcessModifyPageSlot ( + SfxRequest& rRequest, + SdPage* pCurrentPage, + PageKind ePageKind); + + /** Assign the given layout to the given page. This method is at the + moment merely a front end for ProcessModifyPageSlot. + @param pPage + If a NULL pointer is given then this call is ignored. + */ + void AssignLayout ( SfxRequest& rRequest, PageKind ePageKind ); + + /** Determine the view id of the view shell. This corresponds to the + view id stored in the SfxViewFrame class. + + We can not use the view of that class because with the introduction + of the multi pane GUI we do not switch the SfxViewShell anymore when + switching the view in the center pane. The view id of the + SfxViewFrame is thus not modified and we can not set it from the + outside. + + The view id is still needed for the SFX to determine on start up + (e.g. after loading a document) which ViewShellBase sub class to + use. These sub classes--like OutlineViewShellBase--exist only to be + used by the SFX as factories. They only set the initial pane + configuration, nothing more. + + So what we do here in essence is to return on of the + ViewShellFactoryIds that can be used to select the factory that + creates the ViewShellBase subclass with the initial pane + configuration that has in the center pane a view shell of the same + type as mrViewShell. + */ + sal_uInt16 GetViewId (void); + + /** Return a pointer to the image map dialog that is displayed in some + child window. + @return + Returns <NULL/> when the image map dialog is not available. + */ + static SvxIMapDlg* GetImageMapDialog (void); + +private: + ViewShell& mrViewShell; +}; + + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/ViewShellManager.hxx b/sd/source/ui/inc/ViewShellManager.hxx new file mode 100755 index 000000000000..d674e7d07eff --- /dev/null +++ b/sd/source/ui/inc/ViewShellManager.hxx @@ -0,0 +1,212 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_VIEW_SHELL_MANAGER_HXX +#define SD_VIEW_SHELL_MANAGER_HXX + +#include "ShellFactory.hxx" +#include <tools/link.hxx> +#include <memory> +#include <vector> +#include <boost/shared_ptr.hpp> + +class FmFormShell; +class SfxShell; +class SfxUndoManager; + +namespace sd { + +class ViewShell; +class ViewShellBase; + +/** The ViewShellManager has the responsibility to manage the view shells + and sub shells on the SFX shell stack. They form a two level hierarchy + (the underlying ViewShellBase, the only true SfxViewShell descendant, + forms a third level.) On the first level there are the view shells + (what formely was called view shell, anyway; nowadays they are derived + from SfxShell.) and shells for panes. On the second level there are sub + shells (also derived from SfxShell) that usually are tool bars. + + <p>On the SFX shell stack the regular sub shells are placed above their + view shells. The FormShell is a special case. With the SetFormShell() + method it can be placed directly above or below one of the view + shells.</p> + + <p>Shells managed by this class are created by factories or are given + directly to Activate... methods. For the sub shells there is one + factory for every view shell. Factories are added or removed via the + (Add|Remove)SubShellFactory() methods. The FormShell is managed with the + factory of its view shell.</p> +*/ +class ViewShellManager +{ +public: + typedef ::boost::shared_ptr<ShellFactory<SfxShell> > SharedShellFactory; + + ViewShellManager (ViewShellBase& rBase); + + /** Before the destructor is called the method Shutdown() has to have + been called. + */ + ~ViewShellManager (void); + + /** Tell a ViewShellManager object to prepare to be deleted, i.e. to + destroy all of its resources and to ignore all following calls. + Use this when the owner of the view shell manager is about being + destroyed but the view shell manager itself can not yet be deleted. + */ + void Shutdown (void); + + /** Set the factory for sub shells of the specified view shell. + */ + void AddSubShellFactory ( + ViewShell* pViewShell, + const SharedShellFactory& rpFactory); + void RemoveSubShellFactory ( + ViewShell* pViewShell, + const SharedShellFactory& rpFactory); + + /** Activate the given view shell. + */ + void ActivateViewShell (ViewShell* pViewShell); + + /** Activate the given shell which is not a view shell. For view shells + use the ActivateViewShell() method. + */ + void ActivateShell (SfxShell* pShell); + + /** Deactivate the specified shell, i.e. take it and all of its + object bars from the shell stack. + @param pShell + The shell to deactivate. + */ + void DeactivateViewShell (const ViewShell* pShell); + + /** Deactivate the specified shell. The shell is not destroyed. + */ + void DeactivateShell (const SfxShell* pShell); + + /** Associate the form shell with a view shell and their relative + position. This method does not change the shell stack, it just + stores the given values for the next shell stack update. + @param pParentShell + The view shell of the form shell. + @param pFormShell + The form shell. + @param bAbove + When <TRUE/> then the form shell will be placed directly above + pViewShell on the SFX shell stack. Otherwise the form shell is + placed directly below the view shell. + */ + void SetFormShell (const ViewShell* pParentShell, FmFormShell* pFormShell, bool bAbove); + + /** Activate the specified shell as sub shell for the given view shell. + The sub shell factory associated with the view shell is used to + create the sub shell. + @param rParentShell + The new sub shell will be placed above this view shell. + @param nId + This id is used only with the factory registered for the parent + view shell. + */ + void ActivateSubShell (const ViewShell& rParentShell, ShellId nId); + + /** Deactivate the specified sub shell. + */ + void DeactivateSubShell (const ViewShell& rParentShell, ShellId nId); + + /** Move the specified sub shells to the top position among the sub + shells of the parent view shell. The rest of the SFX shell stack + does not change (but the all shells above the sub shells have to be + taken once off the stack and are then moved back on again.) + */ + void MoveSubShellToTop (const ViewShell& rParentShell, ShellId nId); + + /** Send all sub shells of the specified view shell an Invalidate() + call. This does not modify the shell stack. + */ + void InvalidateAllSubShells ( + ViewShell* pViewShell); + + /** Move the specified view shell to the top most position on the stack + of view shells in relation to the other view shells. After this the + only shells that are higher on the stack are its object bars. + + Call this method after a focus change to bring a view mode view + shell and ist associated tool bar shells to the top of the + stack. + + The mbKeepMainViewShellOnTop flag is not obeyed. + + @param nId + The id of the shell to move to the top. + */ + void MoveToTop (const ViewShell& rShell); + + /** Return the first, i.e. top most, view shell that has been activated + under the given id. + @param nId + The id of the shell for which to return a pointer. + @return + When the specified shell is currently not active then NULL is + returned. + */ + SfxShell* GetShell (ShellId nId) const; + + /** Return the top-most shell on the SFX shell stack regardless of + whether that is a view shell or a sub shell. + */ + SfxShell* GetTopShell (void) const; + + /** Use this class to safely lock updates of the view shell stack. + */ + class UpdateLock + { + public: + UpdateLock (const ::boost::shared_ptr<ViewShellManager>& rpManager) + : mpManager(rpManager) {mpManager->LockUpdate();} + ~UpdateLock (void) {mpManager->UnlockUpdate();}; + private: + ::boost::shared_ptr<ViewShellManager> mpManager; + }; + friend class UpdateLock; + +private: + class Implementation; + ::std::auto_ptr<ViewShellManager::Implementation> mpImpl; + bool mbValid; + + void LockUpdate (void); + void UnlockUpdate (void); +}; + + + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/ViewTabBar.hxx b/sd/source/ui/inc/ViewTabBar.hxx new file mode 100644 index 000000000000..9c6077936f2c --- /dev/null +++ b/sd/source/ui/inc/ViewTabBar.hxx @@ -0,0 +1,210 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_VIEW_TAB_BAR_HXX +#define SD_VIEW_TAB_BAR_HXX + +#include <com/sun/star/frame/XController.hpp> +#include <com/sun/star/drawing/framework/XPane.hpp> +#include <com/sun/star/drawing/framework/TabBarButton.hpp> +#include <com/sun/star/drawing/framework/XTabBar.hpp> +#include <com/sun/star/drawing/framework/XToolBar.hpp> +#include <com/sun/star/drawing/framework/XConfigurationController.hpp> +#include <com/sun/star/drawing/framework/XConfigurationChangeListener.hpp> +#include <com/sun/star/lang/XUnoTunnel.hpp> +#ifndef _VCL_TABCTRL_HXX_ +#include <vcl/tabctrl.hxx> +#endif +#include <cppuhelper/compbase4.hxx> +#include "MutexOwner.hxx" + +#include <vector> +#include <boost/scoped_ptr.hpp> +#include <boost/shared_ptr.hpp> + +namespace sd { namespace tools { + class EventMultiplexerEvent; +} } + +namespace sd { + class ViewShellBase; + class PaneManagerEvent; +} + +namespace { + typedef ::cppu::WeakComponentImplHelper4 < + ::com::sun::star::drawing::framework::XToolBar, + ::com::sun::star::drawing::framework::XTabBar, + ::com::sun::star::drawing::framework::XConfigurationChangeListener, + ::com::sun::star::lang::XUnoTunnel + > ViewTabBarInterfaceBase; +} + + + + +namespace sd { + +/** Tab control for switching between views in the center pane. +*/ +class ViewTabBar + : private sd::MutexOwner, + public ViewTabBarInterfaceBase +{ +public: + ViewTabBar ( + const ::com::sun::star::uno::Reference< + com::sun::star::drawing::framework::XResourceId>& rxViewTabBarId, + const ::com::sun::star::uno::Reference< + ::com::sun::star::frame::XController>& rxController); + virtual ~ViewTabBar (void); + + virtual void SAL_CALL disposing (void); + + ::boost::shared_ptr< ::TabControl> GetTabControl (void) const; + + bool ActivatePage (void); + + //----- drawing::framework::XConfigurationChangeListener ------------------ + + virtual void SAL_CALL + notifyConfigurationChange ( + const ::com::sun::star::drawing::framework::ConfigurationChangeEvent& rEvent) + throw (::com::sun::star::uno::RuntimeException); + + + //----- XEventListener ---------------------------------------------------- + + virtual void SAL_CALL disposing( + const com::sun::star::lang::EventObject& rEvent) + throw (com::sun::star::uno::RuntimeException); + + + //----- XTabBar ----------------------------------------------------------- + + virtual void + SAL_CALL addTabBarButtonAfter ( + const ::com::sun::star::drawing::framework::TabBarButton& rButton, + const ::com::sun::star::drawing::framework::TabBarButton& rAnchor) + throw (::com::sun::star::uno::RuntimeException); + + virtual void + SAL_CALL appendTabBarButton ( + const ::com::sun::star::drawing::framework::TabBarButton& rButton) + throw (::com::sun::star::uno::RuntimeException); + + virtual void + SAL_CALL removeTabBarButton ( + const ::com::sun::star::drawing::framework::TabBarButton& rButton) + throw (::com::sun::star::uno::RuntimeException); + + virtual sal_Bool + SAL_CALL hasTabBarButton ( + const ::com::sun::star::drawing::framework::TabBarButton& rButton) + throw (::com::sun::star::uno::RuntimeException); + + virtual ::com::sun::star::uno::Sequence<com::sun::star::drawing::framework::TabBarButton> + SAL_CALL getTabBarButtons (void) + throw (::com::sun::star::uno::RuntimeException); + + + //----- XResource --------------------------------------------------------- + + virtual ::com::sun::star::uno::Reference< + ::com::sun::star::drawing::framework::XResourceId> SAL_CALL getResourceId (void) + throw (::com::sun::star::uno::RuntimeException); + + virtual sal_Bool SAL_CALL isAnchorOnly (void) + throw (com::sun::star::uno::RuntimeException); + + + //----- XUnoTunnel -------------------------------------------------------- + + virtual sal_Int64 SAL_CALL getSomething (const com::sun::star::uno::Sequence<sal_Int8>& rId) + throw (com::sun::star::uno::RuntimeException); + + // ------------------------------------------------------------------------ + + /** The returned value is calculated as the difference between the + total height of the control and the heigh of its first tab page. + This can be considered a hack. + This procedure works only when the control is visible. Calling this + method when the control is not visible results in returning a + default value. + To be on the safe side wait for this control to become visible and + the call this method again. + */ + int GetHeight (void); + + void AddTabBarButton ( + const ::com::sun::star::drawing::framework::TabBarButton& rButton, + const ::com::sun::star::drawing::framework::TabBarButton& rAnchor); + void AddTabBarButton ( + const ::com::sun::star::drawing::framework::TabBarButton& rButton); + void RemoveTabBarButton ( + const ::com::sun::star::drawing::framework::TabBarButton& rButton); + bool HasTabBarButton ( + const ::com::sun::star::drawing::framework::TabBarButton& rButton); + ::com::sun::star::uno::Sequence<com::sun::star::drawing::framework::TabBarButton> + GetTabBarButtons (void); + +private: + ::boost::shared_ptr< ::TabControl> mpTabControl; + ::com::sun::star::uno::Reference< + ::com::sun::star::frame::XController> mxController; + ::com::sun::star::uno::Reference< + ::com::sun::star::drawing::framework::XConfigurationController> mxConfigurationController; + typedef ::std::vector<com::sun::star::drawing::framework::TabBarButton> TabBarButtonList; + TabBarButtonList maTabBarButtons; + ::boost::scoped_ptr<TabPage> mpTabPage; + ::com::sun::star::uno::Reference< + ::com::sun::star::drawing::framework::XResourceId> mxViewTabBarId; + ViewShellBase* mpViewShellBase; + + void UpdateActiveButton (void); + void AddTabBarButton ( + const ::com::sun::star::drawing::framework::TabBarButton& rButton, + sal_Int32 nPosition); + void UpdateTabBarButtons (void); + + /** This method is called from the constructor to get the window for an + anchor ResourceId and pass it to our base class. It has to be + static because it must not access any of the, not yet initialized + members. + */ + static ::Window* GetAnchorWindow( + const ::com::sun::star::uno::Reference< + ::com::sun::star::drawing::framework::XResourceId>& rxViewTabBarId, + const ::com::sun::star::uno::Reference< + ::com::sun::star::frame::XController>& rxController); + const ::com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId (void); +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/ViewTabControl.hxx b/sd/source/ui/inc/ViewTabControl.hxx new file mode 100755 index 000000000000..91ae38effa35 --- /dev/null +++ b/sd/source/ui/inc/ViewTabControl.hxx @@ -0,0 +1,120 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_TAB_CONTROL_HXX +#define SD_TAB_CONTROL_HXX + +#include <svtools/tabbar.hxx> +#include <svtools/transfer.hxx> + +namespace sd { + +/************************************************************************* +|* +|* TabControl-Klasse fuer Seitenumschaltung +|* +\************************************************************************/ + +class DrawViewShell; + +class TabControl + : public TabBar, + public DragSourceHelper, + public DropTargetHelper +{ +public: + TabControl (DrawViewShell* pDrViewSh, ::Window* pParent); + virtual ~TabControl (void); + + /** Inform all listeners of this control that the current page has been + activated. Call this method after switching the current page and is + not done elsewhere (like when using page up/down keys). + */ + void SendActivatePageEvent (void); + + /** Inform all listeners of this control that the current page has been + deactivated. Call this method before switching the current page and + is not done elsewhere (like when using page up/down keys). + */ + void SendDeactivatePageEvent (void); + +protected: + DrawViewShell* pDrViewSh; + sal_Bool bInternalMove; + + // TabBar + virtual void Select(); + virtual void DoubleClick(); + virtual void MouseButtonDown(const MouseEvent& rMEvt); + + virtual void Command(const CommandEvent& rCEvt); + + virtual long StartRenaming(); + virtual long AllowRenaming(); + virtual void EndRenaming(); + + virtual void ActivatePage(); + virtual long DeactivatePage(); + + // DragSourceHelper + virtual void StartDrag( sal_Int8 nAction, const Point& rPosPixel ); + + // DropTargetHelper + virtual sal_Int8 AcceptDrop( const AcceptDropEvent& rEvt ); + virtual sal_Int8 ExecuteDrop( const ExecuteDropEvent& rEvt ); + + DECL_LINK(DeactivatePageHdl, void*); + +private: + // nested class to implement the TransferableHelper + class TabControlTransferable : public TransferableHelper + { + public: + TabControlTransferable( TabControl& rParent ) : + mrParent( rParent ) {} + private: + + TabControl& mrParent; + + virtual ~TabControlTransferable(); + + virtual void AddSupportedFormats(); + virtual sal_Bool GetData( const ::com::sun::star::datatransfer::DataFlavor& rFlavor ); + virtual void DragFinished( sal_Int8 nDropAction ); + + }; + + friend class TabControl::TabControlTransferable; + + void DragFinished( sal_Int8 nDropAction ); + +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/Window.hxx b/sd/source/ui/inc/Window.hxx new file mode 100755 index 000000000000..471f1f9dc6d5 --- /dev/null +++ b/sd/source/ui/inc/Window.hxx @@ -0,0 +1,216 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_WINDOW_HXX +#define SD_WINDOW_HXX + + +#include <tools/gen.hxx> +#include <vcl/window.hxx> +#include <svtools/transfer.hxx> + +namespace sd { + +class ViewShell; + +// Since we removed all old SV-stuff, there is no brush any more +// and so there is no BRUSH_SIZE defined in VCL. +// So I define it here +// #i2237# +// removed old stuff here which still forced zoom to be +// %BRUSH_SIZE which is outdated now +//#define BRUSH_SIZE 8 + +/** An SdWindow contains the actual working area of ViewShell. + + <p>The zoom factor used by this class controls how much the page and the + shapes on it are scaled down (<100%) or up (>100%) when displayed on the + output device represented by the <type>OutputDevice</type>base class. A + zoom factor of 100% would result (with a correctly set DPI value for an + output device) in a one to one mapping of the internal coordinates that + are stored in 100th of mm. The zoom factor is stored in the map mode + member of the <type>OutputDevice</type> base class. It is calculated to + be an integer percent value. +*/ +class Window + : public ::Window, + public ::DropTargetHelper +{ +public: + Window (::Window* pParent); + virtual ~Window (void); + + void SetViewShell (ViewShell* pViewSh); + + /** Set the zoom factor to the specified value and center the display + area arround the zoom center. + @param nZoom + The zoom factor is given as integral percent value. + */ + void SetZoomIntegral(long nZoom); + + /** This internally used method performs the actual adaption of the + window's map mode to the specified zoom factor. + @param nZoom + The zoom factor is given as integral percent value. + @return + When the given zoom factor lies outside the valid range enclosed + by the minimal zoom factor previously calculated by + <member>CalcMinZoom</member> and a constant upper value it is + forced into that interval. Therefore the returned value is a + valid zoom factor. + */ + long SetZoomFactor(long nZoom); + + /** This method is called when the whole page shall be displayed in the + window. Position and zoom factor are set so that the given + rectangle is displayed as large as possible in the window while at + the same time maintaining the rectangle's aspect ratio and adding a + small space at all its four sides (about 3% of width and height). + The map mode is adapted accordingly. + @param rZoomRect + The rectangle is expected to be given relative to the upper left + corner of the window in logical coordinates (100th of mm). + @return + The new zoom factor is returned as integral percent value. + */ + long SetZoomRect (const Rectangle& rZoomRect); + + long GetZoomForRect( const Rectangle& rZoomRect ); + + + void SetMinZoomAutoCalc (bool bAuto); + void SetCalcMinZoomByMinSide (bool bMin); + + /** Calculate the minimal zoom factor as the value at which the + application area would completely fill the window. All values set + manually or programatically are set to this value if they are + smaller. If the currently used zoom factor is smaller than the minimal zoom + factor than set the minimal zoom factor as the new current zoom + factor. + + <p>This calculation is performed only when the + <member>bMinZoomAutoCalc</member> is set (to <TRUE/>).</p> + */ + void CalcMinZoom (void); + void SetMinZoom (long int nMin); + long GetMinZoom (void) const; + void SetMaxZoom (long int nMax); + long GetMaxZoom (void) const; + + long GetZoom (void) const; + + Point GetWinViewPos (void) const; + Point GetViewOrigin (void) const; + Size GetViewSize (void) const; + void SetWinViewPos(const Point& rPnt); + void SetViewOrigin(const Point& rPnt); + void SetViewSize(const Size& rSize); + void SetCenterAllowed (bool bIsAllowed); + + /** Calculate origin of the map mode accoring to the size of the view + and window (its size in model coordinates; that takes the zoom + factor into account), and the bCenterAllowed flag. When it is not + set then nothing is changed. When in any direction the window is + larger than the view or the value of aWinPos in this direction is -1 + then the window is centered in this direction. + */ + void UpdateMapOrigin (sal_Bool bInvalidate = sal_True); + + void UpdateMapMode (void); + + double GetVisibleX(); // Interface fuer ScrollBars + double GetVisibleY(); + void SetVisibleXY(double fX, double fY); + double GetVisibleWidth(); + double GetVisibleHeight(); + double GetScrlLineWidth(); + double GetScrlLineHeight(); + double GetScrlPageWidth(); + double GetScrlPageHeight(); + virtual void GrabFocus(); + virtual void DataChanged( const DataChangedEvent& rDCEvt ); + + // DropTargetHelper + virtual sal_Int8 AcceptDrop( const AcceptDropEvent& rEvt ); + virtual sal_Int8 ExecuteDrop( const ExecuteDropEvent& rEvt ); + + /** The DropScroll() method is used by AcceptDrop() to scroll the + content of the window while dragging and dropping. With this method + you can control whether DropScroll() shall be used. + */ + void SetUseDropScroll (bool bUseDropScroll); + void DropScroll (const Point& rMousePos); +protected: + ::sd::Window* mpShareWin; + Point maWinPos; + Point maViewOrigin; + Size maViewSize; + sal_uInt16 mnMinZoom; + sal_uInt16 mnMaxZoom; + /** This flag tells whether to re-calculate the minimal zoom factor + depening on the current zoom factor. According to task #105436# its + default value is now sal_False. + */ + bool mbMinZoomAutoCalc; + bool mbCalcMinZoomByMinSide; + bool mbCenterAllowed; + long mnTicks; + bool mbDraggedFrom; + + ViewShell* mpViewShell; + bool mbUseDropScroll; + + virtual void Resize(); + virtual void PrePaint(); + virtual void Paint(const Rectangle& rRect); + virtual void KeyInput(const KeyEvent& rKEvt); + virtual void MouseMove(const MouseEvent& rMEvt); + virtual void MouseButtonUp(const MouseEvent& rMEvt); + virtual void MouseButtonDown(const MouseEvent& rMEvt); + virtual void Command(const CommandEvent& rCEvt); + virtual void RequestHelp( const HelpEvent& rEvt ); + virtual void LoseFocus(); + virtual long Notify( NotifyEvent& rNEvt ); + + /** Create an accessibility object that makes this window accessible. + + @return + The returned reference is empty if an accessible object could + not be created. + */ + virtual ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessible> + CreateAccessible (void); + + XubString GetSurroundingText() const; + Selection GetSurroundingTextSelection() const; +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/WindowUpdater.hxx b/sd/source/ui/inc/WindowUpdater.hxx new file mode 100644 index 000000000000..9f817de6a6c4 --- /dev/null +++ b/sd/source/ui/inc/WindowUpdater.hxx @@ -0,0 +1,152 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_OUTPUT_DEVICE_UPDATER_HXX +#define SD_OUTPUT_DEVICE_UPDATER_HXX + +#include <svl/lstner.hxx> +#include <svl/ctloptions.hxx> +#include "sddllapi.h" + +#ifndef INCLUDED_VECTOR +#include <vector> +#define INCLUDED_VECTOR +#endif + +class Window; +class OutputDevice; +class SdDrawDocument; + + +namespace sd { + +class ViewShell; + +/** The purpose of the <type>WindowUpdater</type> is to update output + devices to take care of modified global values. These values are + monitored for changes. At the moment this is + the digit language that defines the glyphs to use to render digits. + Other values may be added in the future. + + <p>The methods of this class have not been included into the + <type>ViewShell</type> class in order to not clutter its interface any + further. This class accesses some of <type>ViewShell</type> data + members directly and thus is declared as its friend.</p> + + <p>Windows that are to be kept up-to-date have to be registered via the + <member>RegisterWindow()</member> method. When a document is given then + this document is reformatted when the monitored option changes.</p> +*/ +class SD_DLLPUBLIC WindowUpdater + : public utl::ConfigurationListener +{ +public: + explicit WindowUpdater (void); + virtual ~WindowUpdater (void) throw(); + + /** Add the given device to the list of devices which will be updated + when one of the monitored values changes. + @param pWindow + This device is added to the device list if it is not <null/> and + when it is not already a member of that list. + */ + void RegisterWindow (::Window* pWindow); + + /** Remove the given device from the list of devices which will be updated + when one of the monitored values changes. + @param pWindow + This device is removed from the device list when it is a member + of that list. + */ + void UnregisterWindow (::Window* pWindow); + + /** Set the view shell whose output devices shall be kept up to date. + It is used to clear the master page cache so that a redraw affects + the master page content as well. + */ + void SetViewShell (ViewShell& rViewShell); + + /** Set the document so that it is reformatted when one of the monitored + values changes. + @param pDocument + When <null/> is given document reformatting will not take + place in the future. + */ + void SetDocument (SdDrawDocument* pDocument); + + /** Update the given output device and update all text objects of the + view shell if not told otherwise. + @param pWindow + The device to update. When the given pointer is NULL then + nothing is done. + @param pDocument + When given a pointer to a document then tell it to reformat all + text objects. This refromatting is necessary for the new values + to take effect. + */ + void Update (OutputDevice* pDevice, SdDrawDocument* pDocument=0) const; + + /** Callback that waits for notifications of a + <type>SvtCTLOptions</type> object. + */ + virtual void ConfigurationChanged ( utl::ConfigurationBroadcaster*, sal_uInt32 nHint); + +private: + /// Options to monitor for changes. + SvtCTLOptions maCTLOptions; + + /// Keep the output devices of this view shell up to date. + ViewShell* mpViewShell; + + /// The document rendered in the output devices. + SdDrawDocument* mpDocument; + + /// Copy constructor not supported. + WindowUpdater (const WindowUpdater& rUpdater); + + /// Assignment operator not supported. + WindowUpdater operator= (const WindowUpdater& rUpdater); + + /** Type and data member for a list of devices that have to be kept + up-to-date. + */ + typedef ::std::vector< ::Window*> tWindowList; + tWindowList maWindowList; + + /** The central method of this class. Update the given output device. + It is the task of the caller to initiate a refrormatting of the + document that is rendered on this device to reflect the changes. + @param pWindow + The output device to update. When it is <null/> then the call + is ignored. + */ + SD_DLLPRIVATE void UpdateWindow (OutputDevice* pDevice) const; +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/animobjs.hrc b/sd/source/ui/inc/animobjs.hrc new file mode 100755 index 000000000000..1a6d8291ee59 --- /dev/null +++ b/sd/source/ui/inc/animobjs.hrc @@ -0,0 +1,52 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#define FLT_WIN_ANIMATION 619 +#define CTL_DISPLAY 1 +#define BTN_FIRST 1 +#define BTN_REVERSE 2 +#define BTN_STOP 3 +#define BTN_PLAY 4 +#define BTN_LAST 5 +#define BTN_GET_ONE_OBJECT 6 +#define BTN_GET_ALL_OBJECTS 7 +#define BTN_REMOVE_BITMAP 8 +#define BTN_REMOVE_ALL 9 +#define BTN_CREATE_GROUP 10 +#define NUM_FLD_BITMAP 1 +#define TIME_FIELD 1 +#define FT_COUNT 1 +#define FI_COUNT 2 +#define GRP_BITMAP 1 +#define RBT_GROUP 1 +#define RBT_BITMAP 2 +#define FT_ADJUSTMENT 4 +#define LB_ADJUSTMENT 2 +#define LB_LOOP_COUNT 3 +#define GRP_ANIMATION_GROUP 2 +//IAccessibility2 Implementation 2009----- +#define STR_DISPLAY 1 +//-----IAccessibility2 Implementation 2009 diff --git a/sd/source/ui/inc/animobjs.hxx b/sd/source/ui/inc/animobjs.hxx new file mode 100755 index 000000000000..c03a785775e6 --- /dev/null +++ b/sd/source/ui/inc/animobjs.hxx @@ -0,0 +1,201 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_ANIMOBJS_HXX +#define SD_ANIMOBJS_HXX + +#include <sfx2/dockwin.hxx> +#include <vcl/fixed.hxx> +#include <svtools/stdctrl.hxx> +#include <vcl/group.hxx> +#include <sfx2/ctrlitem.hxx> + +#ifndef _SV_BUTTON_HXX //autogen +#include <vcl/button.hxx> +#endif +#include <vcl/field.hxx> +#include <svx/dlgctrl.hxx> +#include <sfx2/progress.hxx> + + +#include <vcl/lstbox.hxx> + +#ifndef _SD_SDRESID_HXX +#include "sdresid.hxx" +#endif +#include "misc/scopelock.hxx" + +class SdDrawDocument; +class BitmapEx; + +namespace sd { + +class AnimationControllerItem; +class View; + +//------------------------------------------------------------------------ + +enum BitmapAdjustment +{ + BA_LEFT_UP, + BA_LEFT, + BA_LEFT_DOWN, + BA_UP, + BA_CENTER, + BA_DOWN, + BA_RIGHT_UP, + BA_RIGHT, + BA_RIGHT_DOWN +}; + +//------------------------------------------------------------------------ + +class SdDisplay : public Control +{ +private: + BitmapEx aBitmapEx; + Fraction aScale; + +public: + SdDisplay( ::Window* pWin, SdResId Id ); + ~SdDisplay(); + + virtual void Paint( const Rectangle& rRect ); + + void SetBitmapEx( BitmapEx* pBmpEx ); + void SetScale( const Fraction& rFrac ); + + virtual void DataChanged( const DataChangedEvent& rDCEvt ); +}; + +//------------------------------------------------------------------------ + +class AnimationWindow : public SfxDockingWindow +{ + friend class AnimationChildWindow; + friend class AnimationControllerItem; + +public: + AnimationWindow( SfxBindings* pBindings, SfxChildWindow *pCW, + ::Window* pParent, const SdResId& rSdResId ); + virtual ~AnimationWindow(); + + void AddObj( ::sd::View& rView ); + void CreateAnimObj( ::sd::View& rView ); + + virtual void DataChanged( const DataChangedEvent& rDCEvt ); + +protected: + virtual sal_Bool Close(); + virtual void Resize(); + virtual void FillInfo( SfxChildWinInfo& ) const; + +private: + SdDisplay aCtlDisplay; + ImageButton aBtnFirst; + ImageButton aBtnReverse; + ImageButton aBtnStop; + ImageButton aBtnPlay; + ImageButton aBtnLast; + NumericField aNumFldBitmap; + TimeField aTimeField; + ListBox aLbLoopCount; + FixedLine aGrpBitmap; + ImageButton aBtnGetOneObject; + ImageButton aBtnGetAllObjects; + ImageButton aBtnRemoveBitmap; + ImageButton aBtnRemoveAll; + FixedText aFtCount; + FixedInfo aFiCount; + FixedLine aGrpAnimation; + + RadioButton aRbtGroup; + RadioButton aRbtBitmap; + FixedText aFtAdjustment; + ListBox aLbAdjustment; + PushButton aBtnCreateGroup; + + ::Window* pWin; + List aBmpExList; + List aTimeList; + SdDrawDocument* pMyDoc; + BitmapEx* pBitmapEx; + + Size aSize; + Size aFltWinSize; + Size aDisplaySize; + Size aBmpSize; + sal_Bool bMovie; + sal_Bool bAllObjects; + + SfxBindings* pBindings; + AnimationControllerItem* pControllerItem; + + ScopeLock maPlayLock; + //------------------------------------ + + DECL_LINK( ClickFirstHdl, void * ); + DECL_LINK( ClickStopHdl, void * ); + DECL_LINK( ClickPlayHdl, void * ); + DECL_LINK( ClickLastHdl, void * ); + DECL_LINK( ClickGetObjectHdl, void * ); + DECL_LINK( ClickRemoveBitmapHdl, void * ); + DECL_LINK( ClickRbtHdl, void * ); + DECL_LINK( ClickCreateGroupHdl, void * ); + DECL_LINK( ModifyBitmapHdl, void * ); + DECL_LINK( ModifyTimeHdl, void * ); + + void UpdateControl( sal_uLong nPos, sal_Bool bDisableCtrls = sal_False ); + void ResetAttrs(); + void WaitInEffect( sal_uLong nMilliSeconds, sal_uLong nTime, + SfxProgress* pStbMgr ) const; + Fraction GetScale(); +}; + +/************************************************************************* +|* +|* ControllerItem fuer Animator +|* +\************************************************************************/ + +class AnimationControllerItem : public SfxControllerItem +{ + +public: + AnimationControllerItem( sal_uInt16, AnimationWindow*, SfxBindings* ); + +protected: + virtual void StateChanged( sal_uInt16 nSId, SfxItemState eState, + const SfxPoolItem* pState ); +private: + AnimationWindow* pAnimationWin; +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/annotationmanager.hxx b/sd/source/ui/inc/annotationmanager.hxx new file mode 100755 index 000000000000..6f0fdaa11180 --- /dev/null +++ b/sd/source/ui/inc/annotationmanager.hxx @@ -0,0 +1,59 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SD_ANNOTATIONMANAGER_HXX +#define _SD_ANNOTATIONMANAGER_HXX + +#include <com/sun/star/office/XAnnotationAccess.hpp> +#include <memory> + +#include <rtl/ref.hxx> + +namespace sd +{ + +class ViewShellBase; +class AnnotationManagerImpl; + +// -------------------------------------------------------------------- + +class AnnotationManager +{ +public: + AnnotationManager( ViewShellBase& rViewShellBase ); + ~AnnotationManager(); + + void ExecuteAnnotation (SfxRequest& rRequest); + void GetAnnotationState (SfxItemSet& rItemSet); + +private: + ::rtl::Reference< AnnotationManagerImpl > mxImpl; +}; + +} + +#endif // _SD_ANNOTATIONMANAGER_HXX diff --git a/sd/source/ui/inc/assclass.hxx b/sd/source/ui/inc/assclass.hxx new file mode 100644 index 000000000000..fca386485faa --- /dev/null +++ b/sd/source/ui/inc/assclass.hxx @@ -0,0 +1,86 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef INC_ASSCLASS +#define INC_ASSCLASS + +#include <tools/solar.h> +#include "sddllapi.h" + +#define MAX_PAGES 10 + +class List; +class Control; + +class SD_DLLPUBLIC Assistent +{ + List* mpPages[MAX_PAGES]; + //enthaelt fuer jede Seite die Controls die + //korrekt geschaltet werden muessen + + int mnPages; + //gibt die Anzahl der Seiten an + + int mnCurrentPage; + //gibt die aktuelle Seite an + + bool* mpPageStatus; + +public: + + Assistent(int nNoOfPage); + + bool IsEnabled( int nPage ); + void EnablePage( int nPage ); + void DisablePage( int nPage ); + + bool InsertControl(int nDestPage,Control* pUsedControl); + //fuegt einer spezifizierten Seite ein Control hinzu + + bool NextPage(); + //springt zur naechsten Seite + + bool PreviousPage(); + //springt zur vorherigen Seite + + bool GotoPage(const int nPageToGo); + //springt zu einer angegebenen Seite + + bool IsLastPage(); + //gibt an ob die aktuelle Seite die letzte ist + + bool IsFirstPage(); + //gibt an ob die aktuelle Seite die erste ist + + int GetCurrentPage(); + //gibt die aktuelle Seite zurueck + + ~Assistent(); +}; + + +#endif diff --git a/sd/source/ui/inc/bmcache.hxx b/sd/source/ui/inc/bmcache.hxx new file mode 100755 index 000000000000..7d845694fb6e --- /dev/null +++ b/sd/source/ui/inc/bmcache.hxx @@ -0,0 +1,52 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SD_BMCACHE_HXX +#define _SD_BMCACHE_HXX + +#include <tools/list.hxx> + + +class SdPage; +class GraphicObject; + +class BitmapCache +{ + sal_uLong nMaxSize; + sal_uLong nCurSize; + List aEntries; + +public: + BitmapCache(sal_uLong nMaxSizeKB) + : nMaxSize(nMaxSizeKB), nCurSize(0) {} + virtual ~BitmapCache(); + + void Remove(const SdPage* pPage); +}; + +#endif // _SD_BMCACHE_HXX + diff --git a/sd/source/ui/inc/brkdlg.hrc b/sd/source/ui/inc/brkdlg.hrc new file mode 100644 index 000000000000..02f2311a39ff --- /dev/null +++ b/sd/source/ui/inc/brkdlg.hrc @@ -0,0 +1,34 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#define FT_OBJ_INFO 1 +#define FT_ACT_INFO 2 +#define FT_INS_INFO 3 +#define FI_OBJ_INFO 4 +#define FI_ACT_INFO 5 +#define FI_INS_INFO 6 +#define BTN_CANCEL 7 +#define DLG_BREAK 6197 diff --git a/sd/source/ui/inc/bulmaper.hxx b/sd/source/ui/inc/bulmaper.hxx new file mode 100644 index 000000000000..93f86fbcd0f9 --- /dev/null +++ b/sd/source/ui/inc/bulmaper.hxx @@ -0,0 +1,49 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef INCLUDED_SD_BULMAPER_HXX +#define INCLUDED_SD_BULMAPER_HXX + +#include "tools/solar.h" + +class SfxItemSet; +class SvxBulletItem; +class SvxNumberFormat; +class SvxNumRule; + +class SdBulletMapper +{ +public: +/* #i35937# + static void PreMapNumBulletForDialog( SfxItemSet& rSet ); + static void PostMapNumBulletForDialog( SfxItemSet& rSet ); +*/ + static void MapFontsInNumRule( SvxNumRule& aNumRule, const SfxItemSet& rSet ); + +}; + +#endif /* INCLUDED_SD_BULMAPER_HXX */ diff --git a/sd/source/ui/inc/celltempl.hrc b/sd/source/ui/inc/celltempl.hrc new file mode 100644 index 000000000000..ee3c596a494d --- /dev/null +++ b/sd/source/ui/inc/celltempl.hrc @@ -0,0 +1,29 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include <sfx2/sfx.hrc> +#define TAB_CELL_TEMPLATE 910 +#define TAB_CONTROL 1 diff --git a/sd/source/ui/inc/celltempl.hxx b/sd/source/ui/inc/celltempl.hxx new file mode 100755 index 000000000000..b194f23fec63 --- /dev/null +++ b/sd/source/ui/inc/celltempl.hxx @@ -0,0 +1,59 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_CELLTEMPL_HXX +#define SD_CELLTEMPL_HXX + +#include <sfx2/styledlg.hxx> + +class XColorTable; +class XGradientList; +class XHatchList; +class XBitmapList; +class SfxStyleSheetBase; +class SdrModel; + +class SdPresCellTemplateDlg : public SfxStyleDialog +{ +private: + XColorTable* mpColorTab; + XGradientList* mpGradientList; + XHatchList* mpHatchingList; + XBitmapList* mpBitmapList; + + virtual void PageCreated( sal_uInt16 nId, SfxTabPage &rPage ); + virtual const SfxItemSet* GetRefreshedSet(); + +public: + SdPresCellTemplateDlg( SdrModel* pModel, Window* pParent, SfxStyleSheetBase& rStyleBase ); + ~SdPresCellTemplateDlg(); + + const SfxItemSet* GetOutputItemSet() const; +}; + + +#endif // SD_CELLTEMPL_HXX diff --git a/sd/source/ui/inc/cfgids.hxx b/sd/source/ui/inc/cfgids.hxx new file mode 100644 index 000000000000..ef49c4928b48 --- /dev/null +++ b/sd/source/ui/inc/cfgids.hxx @@ -0,0 +1,75 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SD_CFGID_HXX +#define _SD_CFGID_HXX + +#include <sfx2/sfx.hrc> + +// Item-Ids fuer Config-Items +#define SDCFG_IMPRESS (SFX_ITEMTYPE_SD_BEGIN + 1) +#define SDCFG_SPELL (SFX_ITEMTYPE_SD_BEGIN + 2) +#define SDCFG_DRAW (SFX_ITEMTYPE_SD_BEGIN + 3) + +// Acceleratoren, Menus, ... +#define RID_DRAW_DEFAULTACCEL (SFX_ITEMTYPE_SD_BEGIN + 5) +#define RID_DRAW_DEFAULTMENU (SFX_ITEMTYPE_SD_BEGIN + 6) +#define RID_DRAW_PORTALMENU (SFX_ITEMTYPE_SD_BEGIN + 35) +#define RID_DRAW_STATUSBAR (SFX_ITEMTYPE_SD_BEGIN + 7) +// Acceleratoren, Menus, ... (fuers Draw (Graphic)) +#define RID_GRAPHIC_DEFAULTACCEL (SFX_ITEMTYPE_SD_BEGIN + 8) +#define RID_GRAPHIC_DEFAULTMENU (SFX_ITEMTYPE_SD_BEGIN + 9) +#define RID_GRAPHIC_PORTALMENU (SFX_ITEMTYPE_SD_BEGIN + 36) +//#define RID_GRAPHIC_STATUSBAR (SFX_ITEMTYPE_SD_BEGIN + 30) + +// Toolbars +#define RID_DRAW_DEFAULTTOOLBOX (SFX_ITEMTYPE_SD_BEGIN + 10) +#define RID_DRAW_TOOLBOX (SFX_ITEMTYPE_SD_BEGIN + 11) +#define RID_SLIDE_TOOLBOX (SFX_ITEMTYPE_SD_BEGIN + 12) +#define RID_DRAW_OBJ_TOOLBOX (SFX_ITEMTYPE_SD_BEGIN + 13) +#define RID_SLIDE_OBJ_TOOLBOX (SFX_ITEMTYPE_SD_BEGIN + 14) +#define RID_BEZIER_TOOLBOX (SFX_ITEMTYPE_SD_BEGIN + 15) +#define RID_DRAW_TEXT_TOOLBOX (SFX_ITEMTYPE_SD_BEGIN + 16) +#define RID_OUTLINE_TOOLBOX (SFX_ITEMTYPE_SD_BEGIN + 17) +#define RID_DRAW_TABLE_TOOLBOX (SFX_ITEMTYPE_SD_BEGIN + 18) +#define RID_GLUEPOINTS_TOOLBOX (SFX_ITEMTYPE_SD_BEGIN + 19) +#define RID_DRAW_OPTIONS_TOOLBOX (SFX_ITEMTYPE_SD_BEGIN + 20) +#define RID_DRAW_COMMONTASK_TOOLBOX (SFX_ITEMTYPE_SD_BEGIN + 21) +#define RID_FORMLAYER_TOOLBOX (SFX_ITEMTYPE_SD_BEGIN + 22) +#define RID_DRAW_VIEWER_TOOLBOX (SFX_ITEMTYPE_SD_BEGIN + 23) +#define RID_GRAPHIC_VIEWER_TOOLBOX (SFX_ITEMTYPE_SD_BEGIN + 24) + +#define RID_GRAPHIC_TOOLBOX (SFX_ITEMTYPE_SD_BEGIN + 25) +#define RID_GRAPHIC_OPTIONS_TOOLBOX (SFX_ITEMTYPE_SD_BEGIN + 26) +#define RID_GRAPHIC_OBJ_TOOLBOX (SFX_ITEMTYPE_SD_BEGIN + 27) +#define RID_GRAPHIC_TEXT_TOOLBOX (SFX_ITEMTYPE_SD_BEGIN + 28) + +#define RID_DRAW_GRAF_TOOLBOX (SFX_ITEMTYPE_SD_BEGIN + 30) +#define RID_DRAW_MEDIA_TOOLBOX (SFX_ITEMTYPE_SD_BEGIN + 31) + + +#endif diff --git a/sd/source/ui/inc/copydlg.hrc b/sd/source/ui/inc/copydlg.hrc new file mode 100644 index 000000000000..f0067bd47cee --- /dev/null +++ b/sd/source/ui/inc/copydlg.hrc @@ -0,0 +1,51 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#define FT_COPIES 1 +#define NUM_FLD_COPIES 1 +#define FT_ANGLE 2 +#define MTR_FLD_ANGLE 1 +#define BTN_OK 1 +#define BTN_CANCEL 1 +#define BTN_HELP 1 +#define BTN_SET_VIEWDATA 1 +#define BTN_SET_DEFAULT 2 +#define GRP_MOVEMENT 1 +#define MTR_FLD_MOVE_X 2 +#define MTR_FLD_MOVE_Y 3 +#define FT_MOVE_X 3 +#define FT_MOVE_Y 4 +#define GRP_ENLARGEMENT 2 +#define FT_WIDTH 5 +#define FT_HEIGHT 6 +#define MTR_FLD_WIDTH 4 +#define MTR_FLD_HEIGHT 5 +#define DLG_COPY 727 +#define GRP_COLOR 3 +#define LB_START_COLOR 1 +#define FT_START_COLOR 7 +#define FT_END_COLOR 8 +#define LB_END_COLOR 2 diff --git a/sd/source/ui/inc/copydlg.hxx b/sd/source/ui/inc/copydlg.hxx new file mode 100755 index 000000000000..b726a473b3c5 --- /dev/null +++ b/sd/source/ui/inc/copydlg.hxx @@ -0,0 +1,105 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_COPY_DLG_HXX +#define SD_COPY_DLG_HXX + +#include <vcl/group.hxx> +#ifndef _SV_BUTTON_HXX //autogen +#include <vcl/button.hxx> +#endif +#include <svx/dlgctrl.hxx> +#include <vcl/field.hxx> +#include <vcl/fixed.hxx> +#include <sfx2/basedlgs.hxx> + +class XColorTable; + +namespace sd { + +class View; + +/************************************************************************* +|* +|* Dialog zum Einstellen des Bildschirms +|* +\************************************************************************/ +class CopyDlg + : public SfxModalDialog +{ +public: + CopyDlg( ::Window* pWindow, const SfxItemSet& rInAttrs, + XColorTable* pColTab, ::sd::View* pView ); + ~CopyDlg(); + + void GetAttr( SfxItemSet& rOutAttrs ); + DECL_LINK( Reset, void* ); + +private: + FixedText maFtCopies; + NumericField maNumFldCopies; + ImageButton maBtnSetViewData; + + FixedLine maGrpMovement; + FixedText maFtMoveX; + MetricField maMtrFldMoveX; + FixedText maFtMoveY; + MetricField maMtrFldMoveY; + FixedText maFtAngle; + MetricField maMtrFldAngle; + FixedLine maGrpEnlargement; + + FixedText maFtWidth; + MetricField maMtrFldWidth; + FixedText maFtHeight; + MetricField maMtrFldHeight; + + FixedLine maGrpColor; + FixedText maFtStartColor; + ColorLB maLbStartColor; + FixedText maFtEndColor; + ColorLB maLbEndColor; + + OKButton maBtnOK; + CancelButton maBtnCancel; + HelpButton maBtnHelp; + PushButton maBtnSetDefault; + + const SfxItemSet& mrOutAttrs; + XColorTable* mpColorTab; + Fraction maUIScale; + ::sd::View* mpView; + + DECL_LINK( SelectColorHdl, void * ); + DECL_LINK( SetViewData, void * ); + DECL_LINK( SetDefault, void * ); +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/custsdlg.hrc b/sd/source/ui/inc/custsdlg.hrc new file mode 100644 index 000000000000..2ce79cdae877 --- /dev/null +++ b/sd/source/ui/inc/custsdlg.hrc @@ -0,0 +1,47 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include <sfx2/sfx.hrc> + +#define DLG_CUSTOMSHOW 843 +#define DLG_DEFINE_CUSTOMSHOW 890 +#define BTN_OK 1 +#define BTN_NEW 1 +#define BTN_EDIT 2 +#define BTN_REMOVE 3 +#define BTN_COPY 4 +#define BTN_STARTSHOW 5 +#define BTN_HELP 1 +#define LB_CUSTOMSHOWS 1 +#define LB_PAGES 1 +#define LB_CUSTOM_PAGES 2 +#define FT_NAME 1 +#define EDT_NAME 1 +#define FT_PAGES 2 +#define FT_CUSTOM_PAGES 3 +#define BTN_CANCEL 2 +#define BTN_ADD 1 +#define CBX_USE_CUSTOMSHOW 1 diff --git a/sd/source/ui/inc/custsdlg.hxx b/sd/source/ui/inc/custsdlg.hxx new file mode 100755 index 000000000000..764baccefd54 --- /dev/null +++ b/sd/source/ui/inc/custsdlg.hxx @@ -0,0 +1,116 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + + +#ifndef _SD_CUSTSDLG_HXX +#define _SD_CUSTSDLG_HXX + +#ifndef _BUTTON_HXX //autogen +#include <vcl/button.hxx> +#endif +#include <vcl/lstbox.hxx> +#include <vcl/fixed.hxx> +#include <vcl/edit.hxx> +#include <svtools/svtreebx.hxx> +#include <vcl/dialog.hxx> + +class SdDrawDocument; +class SdCustomShow; + +//------------------------------------------------------------------------ + +class SdCustomShowDlg : public ModalDialog +{ +private: + ListBox aLbCustomShows; + CheckBox aCbxUseCustomShow; + PushButton aBtnNew; + PushButton aBtnEdit; + PushButton aBtnRemove; + PushButton aBtnCopy; + HelpButton aBtnHelp; + PushButton aBtnStartShow; + OKButton aBtnOK; + + SdDrawDocument& rDoc; + List* pCustomShowList; + SdCustomShow* pCustomShow; + sal_Bool bModified; + + void CheckState(); + + DECL_LINK( ClickButtonHdl, void * ); + DECL_LINK( StartShowHdl, Button* ); + +public: + SdCustomShowDlg( Window* pWindow, SdDrawDocument& rDrawDoc ); + ~SdCustomShowDlg(); + + sal_Bool IsModified() const { return( bModified ); } + sal_Bool IsCustomShow() const; +}; + + +//------------------------------------------------------------------------ + +class SdDefineCustomShowDlg : public ModalDialog +{ +private: + FixedText aFtName; + Edit aEdtName; + FixedText aFtPages; + MultiListBox aLbPages; + PushButton aBtnAdd; + PushButton aBtnRemove; + FixedText aFtCustomPages; + SvTreeListBox aLbCustomPages; + OKButton aBtnOK; + CancelButton aBtnCancel; + HelpButton aBtnHelp; + + SdDrawDocument& rDoc; + SdCustomShow*& rpCustomShow; + sal_Bool bModified; + String aOldName; + + void CheckState(); + void CheckCustomShow(); + + DECL_LINK( ClickButtonHdl, void * ); + DECL_LINK( OKHdl, Button* ); + +public: + + SdDefineCustomShowDlg( Window* pWindow, + SdDrawDocument& rDrawDoc, SdCustomShow*& rpCS ); + ~SdDefineCustomShowDlg(); + + sal_Bool IsModified() const { return( bModified ); } +}; + +#endif // _SD_CUSTSDLG_HXX + diff --git a/sd/source/ui/inc/diactrl.hxx b/sd/source/ui/inc/diactrl.hxx new file mode 100755 index 000000000000..182990a89690 --- /dev/null +++ b/sd/source/ui/inc/diactrl.hxx @@ -0,0 +1,80 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SD_DIACTRL_HXX +#define _SD_DIACTRL_HXX + +#include "dlgctrls.hxx" +#include <svl/intitem.hxx> +#include <sfx2/bindings.hxx> +#include <svx/itemwin.hxx> +#include <vcl/fixed.hxx> +#include <vcl/field.hxx> +#include <vcl/toolbox.hxx> +#include <sfx2/tbxctrl.hxx> +#include <com/sun/star/frame/XFrame.hpp> + +//======================================================================== +// SdPagesField: + +class SdPagesField : public SvxMetricField +{ +private: + ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > m_xFrame; +protected: + virtual void Modify(); + +public: + SdPagesField( Window* pParent, + const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame, + WinBits nBits = WB_BORDER | WB_SPIN | WB_REPEAT ); + ~SdPagesField(); + + void UpdatePagesField( const SfxUInt16Item* pItem ); +}; + +//======================================================================== +// SdTbxCtlDiaPages: +//======================================================================== + +class SdTbxCtlDiaPages : public SfxToolBoxControl +{ +public: + virtual void StateChanged( sal_uInt16 nSID, SfxItemState eState, + const SfxPoolItem* pState ); + virtual Window* CreateItemWindow( Window *pParent ); + + SFX_DECL_TOOLBOX_CONTROL(); + + SdTbxCtlDiaPages( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx ); + ~SdTbxCtlDiaPages(); +}; + +#endif // _SD_DIACTRL_HXX + + + diff --git a/sd/source/ui/inc/dialogs.hrc b/sd/source/ui/inc/dialogs.hrc new file mode 100644 index 000000000000..af233ad3b52c --- /dev/null +++ b/sd/source/ui/inc/dialogs.hrc @@ -0,0 +1,36 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +/** module unique resource ids for dialogs */ +#define RID_SD_DLG_HEADERFOOTER (1000) +#define RID_SD_DLG_MASTER_LAYOUT (1001) + +/** module unique resource ids for tabpages */ +#define RID_SD_TABPAGE_HEADERFOOTER (1000) +#define RID_SD_TABPAGE_HEADERFOOTER_SLIDE (1001) +#define RID_SD_TABPAGE_HEADERFOOTER_NOTESHANDOUT (1002) + diff --git a/sd/source/ui/inc/dlg_char.hrc b/sd/source/ui/inc/dlg_char.hrc new file mode 100644 index 000000000000..dccf0570f1a7 --- /dev/null +++ b/sd/source/ui/inc/dlg_char.hrc @@ -0,0 +1,28 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#define TAB_CHAR 20600 + diff --git a/sd/source/ui/inc/dlg_char.hxx b/sd/source/ui/inc/dlg_char.hxx new file mode 100755 index 000000000000..3ac15dc6ef1d --- /dev/null +++ b/sd/source/ui/inc/dlg_char.hxx @@ -0,0 +1,61 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + + +#ifndef SD_DLG_CHAR_HXX +#define SD_DLG_CHAR_HXX + +#include <sfx2/tabdlg.hxx> + +#include "dlg_char.hrc" + +class SfxItemSet; +class SfxObjectShell; + + +/************************************************************************* +|* +|* Zeichen-Tab-Dialog +|* +\************************************************************************/ +class SdCharDlg : public SfxTabDialog +{ +private: + const SfxItemSet& rOutAttrs; + const SfxObjectShell& rDocShell; + + virtual void PageCreated( sal_uInt16 nId, SfxTabPage &rPage ); + +public: + + SdCharDlg( Window* pParent, const SfxItemSet* pAttr, + const SfxObjectShell* pDocShell ); + ~SdCharDlg() {}; +}; + +#endif // SD_DLG_CHAR_HXX + diff --git a/sd/source/ui/inc/dlgass.hrc b/sd/source/ui/inc/dlgass.hrc new file mode 100644 index 000000000000..5e406cfbc121 --- /dev/null +++ b/sd/source/ui/inc/dlgass.hrc @@ -0,0 +1,88 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#define BUT_FINISH 1 +#define BUT_CANCEL 2 +#define BUT_LAST 3 +#define BUT_NEXT 4 +#define BUT_HELP 5 +#define CT_PREVIEW 6 +#define CB_PREVIEW 7 +#define CB_STARTWITH 8 + +#define FB_PAGE1 9 +#define FL_PAGE1_ARTGROUP 10 +#define RB_PAGE1_EMPTY 11 +#define RB_PAGE1_TEMPLATE 12 +#define LB_PAGE1_REGION 13 +#define LB_PAGE1_TEMPLATES 14 +#define RB_PAGE1_OPEN 15 +#define LB_PAGE1_OPEN 16 +#define PB_PAGE1_OPEN 17 + +#define FB_PAGE2 30 +#define FL_PAGE2_LAYOUT 31 +#define LB_PAGE2_REGION 32 +#define LB_PAGE2_LAYOUT 33 +#define FL_PAGE2_OUTPUTTYPES 34 +#define RB_PAGE2_MEDIUM1 35 +#define RB_PAGE2_MEDIUM2 36 +#define RB_PAGE2_MEDIUM3 37 +#define RB_PAGE2_MEDIUM4 38 +#define RB_PAGE2_MEDIUM5 39 + +#define FB_PAGE3 40 +#define FL_PAGE3_EFFECT 41 +#define FT_PAGE3_EFFECT 42 +#define LB_PAGE3_EFFECT 43 +#define FT_PAGE3_SPEED 44 +#define LB_PAGE3_SPEED 45 +#define FL_PAGE3_PRESTYPE 46 +#define RB_PAGE3_LIVE 47 +#define RB_PAGE3_KIOSK 48 +#define FT_PAGE3_TIME 49 +#define TMF_PAGE3_TIME 50 +#define FT_PAGE3_BREAK 51 +#define TMF_PAGE3_BREAK 52 +#define CB_PAGE3_LOGO 53 + +#define FB_PAGE4 20 +#define FL_PAGE4_PERSONAL 21 +#define FT_PAGE4_ASKNAME 22 +#define EDT_PAGE4_ASKNAME 23 +#define FT_PAGE4_ASKTOPIC 24 +#define EDT_PAGE4_ASKTOPIC 25 +#define FT_PAGE4_ASKINFORMATION 26 +#define EDT_PAGE4_ASKINFORMATION 27 + +#define FB_PAGE5 60 +#define FT_PAGE5_PAGELIST 61 +#define CT_PAGE5_PAGELIST 62 +#define CB_PAGE5_SUMMARY 63 + +#define STR_CREATE 64 +#define STR_OPEN 65 +#define DLG_ASS 900 diff --git a/sd/source/ui/inc/dlgass.hxx b/sd/source/ui/inc/dlgass.hxx new file mode 100755 index 000000000000..c4d70ba6d127 --- /dev/null +++ b/sd/source/ui/inc/dlgass.hxx @@ -0,0 +1,77 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef INC_DLGASS +#define INC_DLGASS + +#ifndef _GROUP_HXX +#include <vcl/group.hxx> +#endif +#ifndef _EDIT_HXX +#include <vcl/edit.hxx> +#endif +#ifndef _FIXED_HXX +#include <vcl/fixed.hxx> +#endif +#ifndef _BUTTON_HXX +#include <vcl/button.hxx> +#endif +#ifndef _DIALOG_HXX +#include <vcl/dialog.hxx> +#endif +#include <svtools/svmedit.hxx> +#include "assclass.hxx" +#include <vcl/lstbox.hxx> +#include <sfx2/app.hxx> + +#include "sdenumdef.hxx" + +class AssistentDlgImpl; + +class AssistentDlg:public ModalDialog +{ +private: + AssistentDlgImpl* mpImpl; + +public: + AssistentDlg(Window* pParent, sal_Bool bAutoPilot); + ~AssistentDlg(); + + DECL_LINK( FinishHdl, OKButton * ); + + SfxObjectShellLock GetDocument(); + OutputType GetOutputMedium() const; + sal_Bool IsSummary() const; + StartType GetStartType() const; + String GetDocPath() const; + sal_Bool GetStartWithFlag() const; + + sal_Bool IsDocEmpty() const; + String GetPassword(); +}; + +#endif diff --git a/sd/source/ui/inc/dlgctrls.hxx b/sd/source/ui/inc/dlgctrls.hxx new file mode 100755 index 000000000000..72b5921d8e86 --- /dev/null +++ b/sd/source/ui/inc/dlgctrls.hxx @@ -0,0 +1,62 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + + +#ifndef SD_DLGCTRLS_HXX +#define SD_DLGCTRLS_HXX + +#include "TransitionPreset.hxx" +#include <vcl/lstbox.hxx> + +#ifndef _SD_SDRESID_HXX +#include "sdresid.hxx" +#endif +#include "fadedef.h" +#include "sddllapi.h" + +/************************************************************************* +|* +|* FadeEffectLB +|* +\************************************************************************/ + +struct FadeEffectLBImpl; + +class SD_DLLPUBLIC FadeEffectLB : public ListBox +{ +public: + FadeEffectLB( Window* pParent, SdResId Id ); + ~FadeEffectLB(); + virtual void Fill(); + +/* void selectEffectFromPage( SdPage* pPage ); */ + void applySelected( SdPage* pSlide ) const; + + FadeEffectLBImpl* mpImpl; +}; + +#endif // SD_DLGCTRLS_HXX diff --git a/sd/source/ui/inc/dlgfield.hrc b/sd/source/ui/inc/dlgfield.hrc new file mode 100644 index 000000000000..61585c8fc17f --- /dev/null +++ b/sd/source/ui/inc/dlgfield.hrc @@ -0,0 +1,37 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#define GRP_TYPE 1 +#define RBT_FIX 1 +#define RBT_VAR 2 +#define LB_FORMAT 1 +#define FT_FORMAT 1 +#define BTN_OK 1 +#define BTN_CANCEL 1 +#define BTN_HELP 1 +#define FT_LANGUAGE 2 +#define LB_LANGUAGE 3 +#define DLG_FIELD_MODIFY 448 diff --git a/sd/source/ui/inc/dlgfield.hxx b/sd/source/ui/inc/dlgfield.hxx new file mode 100755 index 000000000000..dd08fa5c2d56 --- /dev/null +++ b/sd/source/ui/inc/dlgfield.hxx @@ -0,0 +1,89 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + + +#ifndef _SD_DLGFIELD_HXX +#define _SD_DLGFIELD_HXX + + +#ifndef _LSTBOX_HXX //autogen +#include <vcl/lstbox.hxx> +#endif +#ifndef _GROUP_HXX //autogen +#include <vcl/group.hxx> +#endif +#ifndef _FIXED_HXX //autogen +#include <vcl/fixed.hxx> +#endif +#ifndef _BUTTON_HXX //autogen +#include <vcl/button.hxx> +#endif +#ifndef _DIALOG_HXX //autogen +#include <vcl/dialog.hxx> +#endif +#include <svx/langbox.hxx> +class SvxFieldData; + +/************************************************************************* +|* +|* Dialog zum Bearbeiten von Feldbefehlen +|* +\************************************************************************/ + +class SdModifyFieldDlg : public ModalDialog +{ +private: + FixedLine aGrpType; + RadioButton aRbtFix; + RadioButton aRbtVar; + FixedText maFtLanguage; + SvxLanguageBox maLbLanguage; + FixedText aFtFormat; + ListBox aLbFormat; + OKButton aBtnOK; + CancelButton aBtnCancel; + HelpButton aBtnHelp; + SfxItemSet maInputSet; + + const SvxFieldData* pField; + + void FillFormatList(); + void FillControls(); + + DECL_LINK( LanguageChangeHdl, void * ); + +public: + SdModifyFieldDlg( Window* pWindow, const SvxFieldData* pInField, const SfxItemSet& rSet ); + ~SdModifyFieldDlg() {} + + SvxFieldData* GetField(); + SfxItemSet GetItemSet(); +}; + + + +#endif // _SD_DLGFIELD_HXX diff --git a/sd/source/ui/inc/dlgolbul.hrc b/sd/source/ui/inc/dlgolbul.hrc new file mode 100644 index 000000000000..0dffa9cb2f07 --- /dev/null +++ b/sd/source/ui/inc/dlgolbul.hrc @@ -0,0 +1,27 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#define TAB_OUTLINEBULLET 20601 diff --git a/sd/source/ui/inc/dlgpage.hrc b/sd/source/ui/inc/dlgpage.hrc new file mode 100644 index 000000000000..e12333c6310e --- /dev/null +++ b/sd/source/ui/inc/dlgpage.hrc @@ -0,0 +1,27 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#define TAB_PAGE 20625 diff --git a/sd/source/ui/inc/dlgpage.hxx b/sd/source/ui/inc/dlgpage.hxx new file mode 100755 index 000000000000..3b12652b0ea2 --- /dev/null +++ b/sd/source/ui/inc/dlgpage.hxx @@ -0,0 +1,68 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + + +#ifndef _SD_DLGPAGE_HXX +#define _SD_DLGPAGE_HXX + +#include <sfx2/tabdlg.hxx> +#include "dlgpage.hrc" + +class SfxObjectShell; +class XColorTable; +class XGradientList; +class XHatchList; +class XBitmapList; + +typedef sal_uInt16 ChangeType; + +/************************************************************************* +|* +|* Seite einrichten-Tab-Dialog +|* +\************************************************************************/ +class SdPageDlg : public SfxTabDialog +{ +private: + const SfxItemSet& mrOutAttrs; + + const SfxObjectShell* mpDocShell; + + XColorTable* mpColorTab; + XGradientList* mpGradientList; + XHatchList* mpHatchingList; + XBitmapList* mpBitmapList; +public: + + SdPageDlg( SfxObjectShell* pDocSh, Window* pParent, const SfxItemSet* pAttr, sal_Bool bAreaPage = sal_True ); + ~SdPageDlg() {}; + + virtual void PageCreated(sal_uInt16 nId, SfxTabPage& rPage); +}; + +#endif // _SD_DLGPAGE_HXX + diff --git a/sd/source/ui/inc/dlgsnap.hrc b/sd/source/ui/inc/dlgsnap.hrc new file mode 100644 index 000000000000..1d7f5bf7c164 --- /dev/null +++ b/sd/source/ui/inc/dlgsnap.hrc @@ -0,0 +1,44 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#define DLG_SNAPLINE 312 +#define BTN_OK 1 +#define BTN_CANCEL 2 +#define BTN_HELP 3 +#define BTN_DELETE 4 +#define FL_POSITION 5 +#define FT_X 6 +#define MTR_FLD_X 7 +#define FT_Y 8 +#define MTR_FLD_Y 9 +#define FL_DIRECTION 10 +#define RB_HORIZONTAL 11 +#define RB_VERTICAL 12 +#define RB_POINT 13 + +#define BMP_POINT_H 1 +#define BMP_VERTICAL_H 2 +#define BMP_HORIZONTAL_H 3 diff --git a/sd/source/ui/inc/dlgsnap.hxx b/sd/source/ui/inc/dlgsnap.hxx new file mode 100755 index 000000000000..4ff9e92adcb5 --- /dev/null +++ b/sd/source/ui/inc/dlgsnap.hxx @@ -0,0 +1,101 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + + +#ifndef _SD_DLGSNAP_HXX +#define _SD_DLGSNAP_HXX + + +#ifndef _IMAGEBTN_HXX //autogen +#include <vcl/button.hxx> +#endif +#ifndef _FIXED_HXX //autogen +#include <vcl/fixed.hxx> +#endif +#ifndef _FIELD_HXX //autogen +#include <vcl/field.hxx> +#endif +#ifndef _GROUP_HXX //autogen +#include <vcl/group.hxx> +#endif +#ifndef _BUTTON_HXX //autogen +#include <vcl/button.hxx> +#endif +#include <tools/fract.hxx> +#ifndef _DIALOG_HXX //autogen +#include <vcl/dialog.hxx> +#endif +#include "sdenumdef.hxx" +/************************************************************************/ + +class SfxItemSet; +namespace sd { + class View; +} + +/************************************************************************* +|* +|* Dialog zum Einstellen von Fanglinien und -punkten +|* +\************************************************************************/ + +class SdSnapLineDlg : public ModalDialog +{ +private: + FixedLine aFlPos; + FixedText aFtX; + MetricField aMtrFldX; + FixedText aFtY; + MetricField aMtrFldY; + FixedLine aFlDir; + ImageRadioButton aRbPoint; + ImageRadioButton aRbVert; + ImageRadioButton aRbHorz; + OKButton aBtnOK; + CancelButton aBtnCancel; + HelpButton aBtnHelp; + PushButton aBtnDelete; + long nXValue; + long nYValue; + FieldUnit eUIUnit; + Fraction aUIScale; + + DECL_LINK( ClickHdl, Button * ); + +public: + SdSnapLineDlg(Window* pWindow, const SfxItemSet& rInAttrs, ::sd::View* pView); + + void GetAttr(SfxItemSet& rOutAttrs); + + void HideRadioGroup(); + void HideDeleteBtn() { aBtnDelete.Hide(); } + void SetInputFields(sal_Bool bEnableX, sal_Bool bEnableY); +}; + + + +#endif // _SD_DLGSNAP_HXX diff --git a/sd/source/ui/inc/docprev.hxx b/sd/source/ui/inc/docprev.hxx new file mode 100755 index 000000000000..de0b2e38fd78 --- /dev/null +++ b/sd/source/ui/inc/docprev.hxx @@ -0,0 +1,88 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SD_DOCPREV_HXX_ +#define _SD_DOCPREV_HXX_ + +#include <com/sun/star/presentation/FadeEffect.hpp> +#include <vcl/window.hxx> +#include <tools/gen.hxx> + +#include <rtl/ref.hxx> + +#include <svl/lstner.hxx> +#include <svtools/colorcfg.hxx> +#include "fadedef.h" +#include "sddllapi.h" + +namespace sd { + class SlideShow; +} + +class GDIMetaFile; + +class SD_DLLPUBLIC SdDocPreviewWin : public Control, public SfxListener +{ +protected: + GDIMetaFile* pMetaFile; + sal_Bool bInEffect; + Link aClickHdl; + SfxObjectShell* mpObj; + sal_uInt16 mnShowPage; + Color maDocumentColor; + rtl::Reference< sd::SlideShow > mxSlideShow; + + virtual void Paint( const Rectangle& rRect ); + static void CalcSizeAndPos( GDIMetaFile* pFile, Size& rSize, Point& rPoint ); + void ImpPaint( GDIMetaFile* pFile, OutputDevice* pVDev ); + + static const int FRAME; + + svtools::ColorConfig maColorConfig; + + virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint); + + void updateViewSettings(); + +public: + SdDocPreviewWin( Window* pParent, const ResId& rResId ); + ~SdDocPreviewWin(); + void SetObjectShell( SfxObjectShell* pObj, sal_uInt16 nShowPage = 0 ); + virtual void Resize(); + void startPreview(); + + virtual long Notify( NotifyEvent& rNEvt ); + + void SetClickHdl( const Link& rLink ) { aClickHdl = rLink; } + const Link& GetClickHdl() const { return aClickHdl; } + + virtual void DataChanged( const DataChangedEvent& rDCEvt ); + +}; + +#endif + diff --git a/sd/source/ui/inc/drawview.hxx b/sd/source/ui/inc/drawview.hxx new file mode 100755 index 000000000000..e4b5eb00cfbb --- /dev/null +++ b/sd/source/ui/inc/drawview.hxx @@ -0,0 +1,93 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_DRAW_VIEW_HXX +#define SD_DRAW_VIEW_HXX + +#include "View.hxx" + + +namespace sd { + +class DrawDocShell; +class DrawViewShell; +class FuSlideShow; +class SlideShow; + +#define SDDRAWVIEW_MAGIC 0x456789BA + +/************************************************************************* +|* +|* Ableitung von ::sd::View; enthaelt auch einen Zeiger auf das Dokument +|* +\************************************************************************/ + +class DrawView : public ::sd::View +{ +public: + TYPEINFO(); + + DrawView ( + DrawDocShell* pDocSh, + OutputDevice* pOutDev, + DrawViewShell* pShell); + virtual ~DrawView (void); + + virtual void MarkListHasChanged(); + void CompleteRedraw(OutputDevice* pOutDev, const Region& rReg, sdr::contact::ViewObjectContactRedirector* pRedirector = 0L); + + virtual sal_Bool SetAttributes(const SfxItemSet& rSet, sal_Bool bReplaceAll = sal_False); + + virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint); + + void BlockPageOrderChangedHint(sal_Bool bBlock); + + sal_Bool SetStyleSheet(SfxStyleSheet* pStyleSheet, sal_Bool bDontRemoveHardAttr = sal_False); + virtual sal_Bool IsObjMarkable(SdrObject* pObj, SdrPageView* pPV) const; + + virtual void MakeVisible(const Rectangle& rRect, ::Window& rWin); + virtual void HideSdrPage(); // SdrPageView* pPV); + + void PresPaint(const Region& rRegion); + + virtual void DeleteMarked(); // from SdrView +protected: + virtual void ModelHasChanged(); + +private: + friend class DrawViewRedirector; + + DrawDocShell* mpDocShell; + DrawViewShell* mpDrawViewShell; + VirtualDevice* mpVDev; + + sal_uInt16 mnPOCHSmph; // zum blockieren des PageOrderChangedHint +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/enumdlg.hrc b/sd/source/ui/inc/enumdlg.hrc new file mode 100644 index 000000000000..5b3b4e127b06 --- /dev/null +++ b/sd/source/ui/inc/enumdlg.hrc @@ -0,0 +1,42 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#define TP_ENUM_BULLET 943 +#define LB_STYLE 1 +#define GRP_STYLE 1 +#define FT_ENUM 1 +#define NUM_FLD_ENUM 1 +#define FT_PREVIEW_ENUM 2 +#define GRP_ENUM 3 +#define BTN_GET_BULLET 1 +#define CTL_BULLET_PREVIEW 1 +#define GRP_BULLET 2 +#define MTR_FLD_SIZE 1 +#define LB_BULLET_COLOR 2 +#define FT_BULLET_SIZE 3 +#define FT_BULLET_COLOR 4 +#define FT_SAMPLE 5 +#define TSB_USE_BULLET 1 diff --git a/sd/source/ui/inc/filedlg.hxx b/sd/source/ui/inc/filedlg.hxx new file mode 100755 index 000000000000..2aaa7be9f123 --- /dev/null +++ b/sd/source/ui/inc/filedlg.hxx @@ -0,0 +1,72 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + + +#ifndef _FILEDLG_HXX +#define _FILEDLG_HXX + +#include <tools/string.hxx> +#include <tools/errcode.hxx> + +#ifndef INCLUDED_MEMORY +#include <memory> +#define INCLUDED_MEMORY +#endif +#include "sddllapi.h" + +class SdFileDialog_Imp; + + +/******************************************************************************/ + +/** + The class SdOpenSoundFileDialog wraps the FileDialogHelper, displaying the + FILEOPEN_PLAY dialog template and performing the 'preview' functionality + (playing the selected sound file). The interface is a downstripped version + of the aforementioned class, with similar semantics. + */ +class SD_DLLPUBLIC SdOpenSoundFileDialog +{ + const std::auto_ptr< SdFileDialog_Imp > mpImpl; + + // forbidden and not implemented + SdOpenSoundFileDialog (const SdOpenSoundFileDialog &); + SdOpenSoundFileDialog & operator= (const SdOpenSoundFileDialog &); + +public: + SdOpenSoundFileDialog(); + ~SdOpenSoundFileDialog(); + + ErrCode Execute(); + String GetPath() const; + void SetPath( const String& rPath ); + + String ReqDisplayDirectory() const; +}; + +#endif // _FILEDLG_HXX + diff --git a/sd/source/ui/inc/fontwork.hrc b/sd/source/ui/inc/fontwork.hrc new file mode 100644 index 000000000000..0f7406cd8b7e --- /dev/null +++ b/sd/source/ui/inc/fontwork.hrc @@ -0,0 +1,45 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#define GRP_STYLE 1 +#define BTN_STYLE_OFF 1 +#define BTN_STYLE_ROTATE 2 +#define BTN_STYLE_UPRIGHT 3 +#define BTN_STYLE_SLANTX 4 +#define BTN_STYLE_SLANTY 5 +#define CBX_MIRROR 1 +#define MTR_FLD_DISTANCE 1 +#define MTR_FLD_TEXTSTART 2 +#define BTN_POS_LEFT 6 +#define BTN_POS_CENTER 7 +#define BTN_POS_RIGHT 8 +#define BTN_POS_FULL 9 +#define GRP_POS 2 +#define FT_DISTANCE 1 +#define FT_TEXTSTART 2 +#define BTN_OK 1 +#define BTN_CANCEL 1 +#define BTN_HELP 1 diff --git a/sd/source/ui/inc/framework/Configuration.hxx b/sd/source/ui/inc/framework/Configuration.hxx new file mode 100755 index 000000000000..57a6c838feab --- /dev/null +++ b/sd/source/ui/inc/framework/Configuration.hxx @@ -0,0 +1,207 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FRAMEWORK_CONFIGURATION_CONFIGURATION_HXX +#define SD_FRAMEWORK_CONFIGURATION_CONFIGURATION_HXX + +#include "MutexOwner.hxx" +#include <com/sun/star/drawing/framework/XConfiguration.hpp> +#include <com/sun/star/drawing/framework/XConfigurationControllerBroadcaster.hpp> +#include <com/sun/star/util/XCloneable.hpp> +#include <com/sun/star/container/XNamed.hpp> +#include <cppuhelper/compbase2.hxx> + +#include <boost/scoped_ptr.hpp> + +namespace { + +typedef ::cppu::WeakComponentImplHelper2 < + ::com::sun::star::drawing::framework::XConfiguration, + ::com::sun::star::container::XNamed + > ConfigurationInterfaceBase; + +} // end of anonymous namespace. + + + + +namespace sd { namespace framework { + +/** A configuration describes the resources of an application like panes, + views, and tool bars and their relationships that are currently active + or are requested to be activated. Resources are specified by URLs rather + than references so that not only the current configuration but also a + requested configuration can be represented. + + A resource URL describes the type of a resource, not its actual + instance. For resources, like panes, that are unique with respect to an + application frame, that does not mean much of a difference. For other + resources like views, that may have more than one instance per + application frame, this is different. To identify them unambigously a + second URL, one of a unique resource, is necessary. This second URL is + called the anchor of the first. The two types of resources are called + unique and linked respectively. + + Direct manipulation of a configuration object is not advised with the + exception of the configuration controller and objects that implement the + XConfigurationChangeOperation interface. +*/ +class Configuration + : private sd::MutexOwner, + public ConfigurationInterfaceBase +{ +public: + /** Create a new configuration with a broadcaster that is used to send + events about requested configuration changes. + @param rxBroadcaster + This broadcaster is typically the same as the one used by the + ConfigurationController. + @param bBroadcastRequestEvents + When this is <TRUE/> then modifications to the configuration + trigger the broadcasting of "ResourceActivationRequestEvent" and + "ResourceDeactivationRequestEvent". When this flag is <FALSE/> + then events with type "ResourceActivationEvent" and + "ResourceDeactivationEvent" are broadcasted. + */ + Configuration (const ::com::sun::star::uno::Reference< + ::com::sun::star::drawing::framework::XConfigurationControllerBroadcaster>& rxBroadcaster, + bool bBroadcastRequestEvents); + virtual ~Configuration (void); + + virtual void SAL_CALL disposing (void); + + + // XConfiguration + + virtual void SAL_CALL addResource ( + const ::com::sun::star::uno::Reference<com::sun::star::drawing::framework::XResourceId>& + rxResourceId) + throw (::com::sun::star::uno::RuntimeException); + + virtual void SAL_CALL removeResource( + const ::com::sun::star::uno::Reference<com::sun::star::drawing::framework::XResourceId>& + rxResourceId) + throw (::com::sun::star::uno::RuntimeException); + + virtual ::com::sun::star::uno::Sequence< com::sun::star::uno::Reference< + com::sun::star::drawing::framework::XResourceId> > SAL_CALL getResources ( + const ::com::sun::star::uno::Reference< + ::com::sun::star::drawing::framework::XResourceId>& rxAnchorId, + const ::rtl::OUString& rsResourceURLPrefix, + ::com::sun::star::drawing::framework::AnchorBindingMode eMode) + throw (::com::sun::star::uno::RuntimeException); + + virtual sal_Bool SAL_CALL hasResource ( + const ::com::sun::star::uno::Reference<com::sun::star::drawing::framework::XResourceId>& + rxResourceId) + throw (::com::sun::star::uno::RuntimeException); + + + // XCloneable + + virtual ::com::sun::star::uno::Reference<com::sun::star::util::XCloneable> + SAL_CALL createClone (void) + throw (::com::sun::star::uno::RuntimeException); + + + // XNamed + + /** Return a human readable string representation. This is used for + debugging purposes. + */ + virtual ::rtl::OUString SAL_CALL getName (void) + throw (::com::sun::star::uno::RuntimeException); + + /** This call is ignored because the XNamed interface is (mis)used to + give access to a human readable name for debugging purposes. + */ + virtual void SAL_CALL setName (const ::rtl::OUString& rName) + throw (::com::sun::star::uno::RuntimeException); + +private: + class ResourceContainer; + /** The resource container holds the URLs of unique resource and of + resource linked to unique resources. + */ + ::boost::scoped_ptr<ResourceContainer> mpResourceContainer; + + /** The broadcaster used for notifying listeners of requests for + configuration changes. + */ + ::com::sun::star::uno::Reference< + ::com::sun::star::drawing::framework::XConfigurationControllerBroadcaster> + mxBroadcaster; + + bool mbBroadcastRequestEvents; + + /** This private variant of the constructor is used for cloning a + Configuration object. + @param rResourceContainer + The new Configuration is created with a copy of the elements in + this container. + */ + Configuration (const ::com::sun::star::uno::Reference< + ::com::sun::star::drawing::framework::XConfigurationControllerBroadcaster>& rxBroadcaster, + bool bBroadcastRequestEvents, + const ResourceContainer& rResourceContainer); + + /** Send an event to all interested listeners that a resource has been + added or removed. The event is sent to the listeners via the + ConfigurationController. + @param rxResourceId + The resource that is added to or removed from the configuration. + @param bActivation + This specifies whether an activation or deactivation is + broadcasted. The mbBroadcastRequestEvents member is also taken + into account when the actual event type field is determined. + */ + void PostEvent ( + const ::com::sun::star::uno::Reference<com::sun::star::drawing::framework::XResourceId>& + rxResourceId, + const bool bActivation); + + /** When the called object has already been disposed this method throws + an exception and does not return. + */ + void ThrowIfDisposed (void) const + throw (::com::sun::star::lang::DisposedException); +}; + + +/** Return whether the two given configurations contain the same resource + ids. The order of resource ids is ignored. Empty references are + treated like empty configurations. +*/ +bool AreConfigurationsEquivalent ( + const ::com::sun::star::uno::Reference< + ::com::sun::star::drawing::framework::XConfiguration>& rxConfiguration1, + const ::com::sun::star::uno::Reference< + ::com::sun::star::drawing::framework::XConfiguration>& rxConfiguration2); + +} } // end of namespace sd::framework + +#endif diff --git a/sd/source/ui/inc/framework/ConfigurationController.hxx b/sd/source/ui/inc/framework/ConfigurationController.hxx new file mode 100644 index 000000000000..d5e8dda059d2 --- /dev/null +++ b/sd/source/ui/inc/framework/ConfigurationController.hxx @@ -0,0 +1,231 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FRAMEWORK_CONFIGURATION_CONTROLLER_HXX +#define SD_FRAMEWORK_CONFIGURATION_CONTROLLER_HXX + +#include "MutexOwner.hxx" + +#include <com/sun/star/drawing/framework/XConfigurationController.hpp> +#include <com/sun/star/drawing/framework/XConfigurationChangeRequest.hpp> +#include <com/sun/star/drawing/framework/XConfiguration.hpp> +#include <com/sun/star/drawing/framework/XControllerManager.hpp> +#include <com/sun/star/drawing/framework/XResourceFactoryManager.hpp> +#include <com/sun/star/drawing/framework/XResourceId.hpp> +#include <com/sun/star/drawing/framework/ConfigurationChangeEvent.hpp> +#include <com/sun/star/lang/XInitialization.hpp> +#include <com/sun/star/uno/XComponentContext.hpp> + +#include <cppuhelper/compbase2.hxx> +#include <tools/link.hxx> +#include <rtl/ref.hxx> + +#include <boost/scoped_ptr.hpp> +#include <boost/shared_ptr.hpp> +#include <boost/noncopyable.hpp> + +namespace css = ::com::sun::star; + +namespace { + +typedef ::cppu::WeakComponentImplHelper2 < + ::css::drawing::framework::XConfigurationController, + ::css::lang::XInitialization + > ConfigurationControllerInterfaceBase; + +} // end of anonymous namespace. + + +namespace sd { class ViewShellBase; } + + +namespace sd { namespace framework { + +class ChangeRequestQueueProcessor; +class ConfigurationControllerBroadcaster; +class ConfigurationUpdater; +class ConfigurationUpdaterLock; + +/** The configuration controller is responsible for maintaining the current + configuration. + + @see css::drawing::framework::XConfigurationController + for an extended documentation. +*/ +class ConfigurationController + : private sd::MutexOwner, + private boost::noncopyable, + public ConfigurationControllerInterfaceBase +{ +public: + ConfigurationController (void) throw(); + virtual ~ConfigurationController (void) throw(); + + virtual void SAL_CALL disposing (void); + + void ProcessEvent (void); + + /** Normally the requested changes of the configuration are executed + asynchronously. However, there is at least one situation (searching + with the Outliner) where the surrounding code does not cope with + this. So, instead of calling Reschedule until the global event loop + executes the configuration update, this method does (almost) the + same without the reschedules. + + Do not use this method until there is absolutely no other way. + */ + void RequestSynchronousUpdate (void); + + // XConfigurationController + + virtual void SAL_CALL lock (void) + throw (css::uno::RuntimeException); + + virtual void SAL_CALL unlock (void) + throw (css::uno::RuntimeException); + + virtual void SAL_CALL requestResourceActivation ( + const css::uno::Reference<css::drawing::framework::XResourceId>& rxResourceId, + css::drawing::framework::ResourceActivationMode eMode) + throw (css::uno::RuntimeException); + + virtual void SAL_CALL requestResourceDeactivation ( + const css::uno::Reference<css::drawing::framework::XResourceId>& + rxResourceId) + throw (css::uno::RuntimeException); + + virtual css::uno::Reference<css::drawing::framework::XResource> + SAL_CALL getResource ( + const css::uno::Reference<css::drawing::framework::XResourceId>& rxResourceId) + throw (css::uno::RuntimeException); + + virtual void SAL_CALL update (void) + throw (css::uno::RuntimeException); + + virtual css::uno::Reference< + css::drawing::framework::XConfiguration> + SAL_CALL getRequestedConfiguration (void) + throw (css::uno::RuntimeException); + + virtual css::uno::Reference< + css::drawing::framework::XConfiguration> + SAL_CALL getCurrentConfiguration (void) + throw (css::uno::RuntimeException); + + virtual void SAL_CALL restoreConfiguration ( + const css::uno::Reference<css::drawing::framework::XConfiguration>& + rxConfiguration) + throw (css::uno::RuntimeException); + + + // XConfigurationControllerBroadcaster + + virtual void SAL_CALL addConfigurationChangeListener ( + const css::uno::Reference< + css::drawing::framework::XConfigurationChangeListener>& rxListener, + const ::rtl::OUString& rsEventType, + const css::uno::Any& rUserData) + throw (css::uno::RuntimeException); + + virtual void SAL_CALL removeConfigurationChangeListener ( + const css::uno::Reference< + css::drawing::framework::XConfigurationChangeListener>& rxListener) + throw (css::uno::RuntimeException); + + virtual void SAL_CALL notifyEvent ( + const css::drawing::framework::ConfigurationChangeEvent& rEvent) + throw (css::uno::RuntimeException); + + + // XConfigurationRequestQueue + + virtual sal_Bool SAL_CALL hasPendingRequests (void) + throw (css::uno::RuntimeException); + + virtual void SAL_CALL postChangeRequest ( + const css::uno::Reference< + css::drawing::framework::XConfigurationChangeRequest>& rxRequest) + throw (css::uno::RuntimeException); + + + // XResourceFactoryManager + + virtual void SAL_CALL addResourceFactory( + const ::rtl::OUString& sResourceURL, + const css::uno::Reference<css::drawing::framework::XResourceFactory>& rxResourceFactory) + throw (css::uno::RuntimeException); + + virtual void SAL_CALL removeResourceFactoryForURL( + const ::rtl::OUString& sResourceURL) + throw (css::uno::RuntimeException); + + virtual void SAL_CALL removeResourceFactoryForReference( + const css::uno::Reference<css::drawing::framework::XResourceFactory>& rxResourceFactory) + throw (css::uno::RuntimeException); + + virtual css::uno::Reference<css::drawing::framework::XResourceFactory> + SAL_CALL getResourceFactory ( + const ::rtl::OUString& sResourceURL) + throw (css::uno::RuntimeException); + + + // XInitialization + + virtual void SAL_CALL initialize( + const css::uno::Sequence<css::uno::Any>& rArguments) + throw (css::uno::Exception, css::uno::RuntimeException); + + + /** Use this class instead of calling lock() and unlock() directly in + order to be exception safe. + */ + class Lock + { + public: + Lock (const css::uno::Reference< + css::drawing::framework::XConfigurationController>& rxController); + ~Lock (void); + private: + css::uno::Reference< + css::drawing::framework::XConfigurationController> mxController; + }; + +private: + class Implementation; + ::boost::scoped_ptr<Implementation> mpImplementation; + bool mbIsDisposed; + + /** When the called object has already been disposed this method throws + an exception and does not return. + */ + void ThrowIfDisposed (void) const + throw (css::lang::DisposedException); +}; + +} } // end of namespace sd::framework + +#endif diff --git a/sd/source/ui/inc/framework/DrawModule.hxx b/sd/source/ui/inc/framework/DrawModule.hxx new file mode 100644 index 000000000000..08fd339df77a --- /dev/null +++ b/sd/source/ui/inc/framework/DrawModule.hxx @@ -0,0 +1,48 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FRAMEWORK_DRAW_MODULE_HXX +#define SD_FRAMEWORK_DRAW_MODULE_HXX + +#include <com/sun/star/frame/XController.hpp> + + +namespace sd { namespace framework { + +/** The task of this module is to instantiate all modules that belong to the + Draw application. +*/ +class DrawModule +{ +public: + static void Initialize ( + ::com::sun::star::uno::Reference<com::sun::star::frame::XController>& rxController); +}; + +} } // end of namespace sd::framework + +#endif diff --git a/sd/source/ui/inc/framework/FrameworkHelper.hxx b/sd/source/ui/inc/framework/FrameworkHelper.hxx new file mode 100755 index 000000000000..723cd9f4fabf --- /dev/null +++ b/sd/source/ui/inc/framework/FrameworkHelper.hxx @@ -0,0 +1,430 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FRAMEWORK_FRAMEWORK_HELPER_HXX +#define SD_FRAMEWORK_FRAMEWORK_HELPER_HXX + +#include "ViewShell.hxx" + +#include "tools/SdGlobalResourceContainer.hxx" + +#include <com/sun/star/drawing/framework/XConfigurationController.hpp> +#include <com/sun/star/drawing/framework/XView.hpp> +#include <com/sun/star/lang/XEventListener.hpp> + +#include <boost/scoped_ptr.hpp> +#include <boost/shared_ptr.hpp> +#include <boost/enable_shared_from_this.hpp> +#include <boost/function.hpp> +#include <map> + +namespace sd { +class ViewShell; +class ViewShellBase; +} + +namespace rtl { +class OUString; +} + +namespace css = ::com::sun::star; + +namespace sd { namespace framework { + +/** The FrameworkHelper is a convenience class that simplifies the + access to the drawing framework. + It has three main tasks: + 1. Provide frequently used strings of resource URLs and event names. + 2. Provide shortcuts for accessing the sd framework. + 3. Easy the migration to the drawing framwork. + + Note that a FrameworkHelper disposes itself when one of the resource + controllers called by it throw a DisposedException. +*/ +class FrameworkHelper + : public ::boost::enable_shared_from_this<FrameworkHelper>, + public SdGlobalResource +{ +public: + // URLs of frequently used panes. + static const ::rtl::OUString msPaneURLPrefix; + static const ::rtl::OUString msCenterPaneURL; + static const ::rtl::OUString msFullScreenPaneURL; + static const ::rtl::OUString msLeftImpressPaneURL; + static const ::rtl::OUString msLeftDrawPaneURL; + static const ::rtl::OUString msRightPaneURL; + + // URLs of frequently used views. + static const ::rtl::OUString msViewURLPrefix; + static const ::rtl::OUString msImpressViewURL; + static const ::rtl::OUString msDrawViewURL; + static const ::rtl::OUString msOutlineViewURL; + static const ::rtl::OUString msNotesViewURL; + static const ::rtl::OUString msHandoutViewURL; + static const ::rtl::OUString msSlideSorterURL; + static const ::rtl::OUString msPresentationViewURL; + static const ::rtl::OUString msTaskPaneURL; + + // URLs of frequently used tool bars. + static const ::rtl::OUString msToolBarURLPrefix; + static const ::rtl::OUString msViewTabBarURL; + + // URLs of task panels. + static const ::rtl::OUString msTaskPanelURLPrefix; + static const ::rtl::OUString msMasterPagesTaskPanelURL; + static const ::rtl::OUString msLayoutTaskPanelURL; + static const ::rtl::OUString msTableDesignPanelURL; + static const ::rtl::OUString msCustomAnimationTaskPanelURL; + static const ::rtl::OUString msSlideTransitionTaskPanelURL; + + // Names of frequently used events. + static const ::rtl::OUString msResourceActivationRequestEvent; + static const ::rtl::OUString msResourceDeactivationRequestEvent; + static const ::rtl::OUString msResourceActivationEvent; + static const ::rtl::OUString msResourceDeactivationEvent; + static const ::rtl::OUString msConfigurationUpdateStartEvent; + static const ::rtl::OUString msConfigurationUpdateEndEvent; + + // Service names of the common controllers. + static const ::rtl::OUString msModuleControllerService; + static const ::rtl::OUString msConfigurationControllerService; + + /** Return the FrameworkHelper object that is associated with the given + ViewShellBase. If such an object does not yet exist, a new one is + created. + */ + static ::boost::shared_ptr<FrameworkHelper> Instance (ViewShellBase& rBase); + + static ::boost::shared_ptr<FrameworkHelper> Instance ( + const css::uno::Reference<css::frame::XController>& rxController); + + /** Mark the FrameworkHelper object for the given ViewShellBase as + disposed. A following ReleaseInstance() call will destroy the + FrameworkHelper object. + + Do not call this method. It is an internally used method that can + not be made private. + */ + static void DisposeInstance (ViewShellBase& rBase); + + /** Destroy the FrameworkHelper object for the given ViewShellBase. + + Do not call this method. It is an internally used method that can + not be made private. + */ + static void ReleaseInstance (ViewShellBase& rBase); + + /** Return an identifier for the given view URL. This identifier can be + used in a switch statement. See GetViewURL() for a mapping in the + opposite direction. + */ + static ViewShell::ShellType GetViewId (const rtl::OUString& rsViewURL); + + /** Return a view URL for the given identifier. See GetViewId() for a + mapping in the opposite direction. + */ + static ::rtl::OUString GetViewURL (ViewShell::ShellType eType); + + /** Return a ViewShell pointer for the given XView reference. This + assumes that the given reference is implemented by the + ViewShellWrapper class that supports the XTunnel interface. + @return + When the ViewShell pointer can not be inferred from the given + reference then an empty pointer is returned. + */ + static ::boost::shared_ptr<ViewShell> GetViewShell ( + const css::uno::Reference<css::drawing::framework::XView>& rxView); + + ~FrameworkHelper (void); + + typedef ::boost::function<bool(const css::drawing::framework::ConfigurationChangeEvent&)> + ConfigurationChangeEventFilter; + typedef ::boost::function<void(bool bEventSeen)> Callback; + typedef ::boost::function< + void( + const css::uno::Reference< + css::drawing::framework::XResourceId>&) + > ResourceFunctor; + + /** Test whether the called FrameworkHelper object is valid. + @return + When the object has already been disposed then <FALSE/> is returned. + */ + bool IsValid (void); + + /** Return a pointer to the view shell that is displayed in the + specified pane. See GetView() for a variant that returns a + reference to XView instead of a ViewShell pointer. + @return + An empty pointer is returned when for example the specified pane + does not exist or is not visible or does not show a view or one + of the involved objects does not support XUnoTunnel (where + necessary). + */ + ::boost::shared_ptr<ViewShell> GetViewShell (const ::rtl::OUString& rsPaneURL); + + /** Return a reference to the view that is displayed in the specified + pane. See GetViewShell () for a variant that returns a ViewShell + pointer instead of a reference to XView. + @param rxPaneOrViewId + When this ResourceId specifies a view then that view is + returned. When it belongs to a pane then one view in that pane + is returned. + @return + An empty reference is returned when for example the specified pane + does not exist or is not visible or does not show a view or one + of the involved objects does not support XTunnel (where + necessary). + */ + css::uno::Reference<css::drawing::framework::XView> + GetView ( + const css::uno::Reference< + css::drawing::framework::XResourceId>& rxPaneOrViewId); + + /** Request the specified view to be displayed in the specified pane. + When the pane is not visible its creation is also requested. The + update that creates the actual view object is done asynchronously. + @param rsResourceURL + The resource URL of the view to show. + @param rsAnchorURL + The URL of the pane in which to show the view. + @return + The resource id of the requested view is returned. With that + the caller can, for example, call RunOnResourceActivation() to + do some initialization after the requested view becomes active. + */ + css::uno::Reference<css::drawing::framework::XResourceId> RequestView ( + const ::rtl::OUString& rsResourceURL, + const ::rtl::OUString& rsAnchorURL); + + /** Request the activation of the specified task panel in the standard + task pane. + @param rsTaskPanelURL + The panel that is to be activated. + @param bEnsureTaskPaneIsVisible + When this is <TRUE/> then the task pane is activated when not + yet active. + When this flag is <FALSE/> then the requested panel + is activated only when the task pane is already active. When it + is not active then this call is silently ignored. + */ + void RequestTaskPanel ( + const ::rtl::OUString& rsTaskPanelURL, + const bool bEnsureTaskPaneIsVisible = true); + + /** Process a slot call that requests a view shell change. + */ + void HandleModeChangeSlot ( + sal_uLong nSlotId, + SfxRequest& rRequest); + + /** Run the given callback when the specified event is notified by the + ConfigurationManager. When there are no pending requests and + therefore no events would be notified (in the foreseeable future) + then the callback is called immediately. + The callback is called with a flag that tells the callback whether + the event it waits for has been sent. + */ + void RunOnConfigurationEvent( + const ::rtl::OUString& rsEventType, + const Callback& rCallback); + + /** Run the given callback when the specified resource has been + activated. When the resource is active already when this method is + called then rCallback is called before this method returns. + @param rxResourceId + Wait for the activation of this resource before calling + rCallback. + @param rCallback + The callback to be called when the resource is activated. + + */ + void RunOnResourceActivation( + const css::uno::Reference<css::drawing::framework::XResourceId>& rxResourceId, + const Callback& rCallback); + + /** Normally the requested changes of the configuration are executed + asynchronously. However, there is at least one situation (searching + with the Outliner) where the surrounding code does not cope with + this. So, instead of calling Reschedule until the global event loop + executes the configuration update, this method does (almost) the + same without the reschedules. + + Do not use this method until there is absolutely no other way. + */ + void RequestSynchronousUpdate (void); + + /** Block until the specified event is notified by the configuration + controller. When the configuration controller is not processing any + requests the method returns immediately. + */ + void WaitForEvent (const ::rtl::OUString& rsEventName) const; + + /** This is a short cut for WaitForEvent(msConfigurationUpdateEndEvent). + Call this method to execute the pending requests. + */ + void WaitForUpdate (void) const; + + /** Explicit request for an update of the current configuration. Call + this method when one of the resources managed by the sd framework + has been activated or deactivated from the outside, i.e. not by the + framework itself. An example for this is a click on the closer + button of one of the side panes. + */ + void UpdateConfiguration (void); + + /** Return a string representation of the given XResourceId object. + */ + static ::rtl::OUString ResourceIdToString ( + const css::uno::Reference< + css::drawing::framework::XResourceId>& rxResourceId); + + /** Create a new XResourceId object for the given resource URL. + */ + static css::uno::Reference< + css::drawing::framework::XResourceId> + CreateResourceId ( + const ::rtl::OUString& rsResourceURL); + + /** Create a new XResourceId object for the given resource URL and a + single anchor URL. + */ + static css::uno::Reference< + css::drawing::framework::XResourceId> + CreateResourceId ( + const ::rtl::OUString& rsResourceURL, + const ::rtl::OUString& rsAnchorURL); + + /** Create a new XResourceId object for the given resource URL and the + two given anchor URLs. + */ + static css::uno::Reference< + css::drawing::framework::XResourceId> + CreateResourceId ( + const ::rtl::OUString& rsResourceURL, + const ::rtl::OUString& rsFirstAnchorURL, + const ::rtl::OUString& rsSecondAnchorURL); + + /** Create a new XResourceId object for the given resource URL. + */ + static css::uno::Reference< + css::drawing::framework::XResourceId> + CreateResourceId ( + const ::rtl::OUString& rsResourceURL, + const css::uno::Reference< + css::drawing::framework::XResourceId>& rxAnchor); + + css::uno::Reference<css::drawing::framework::XConfigurationController> + GetConfigurationController (void) const; + + +private: + typedef ::std::map< + ViewShellBase*, + ::boost::shared_ptr<FrameworkHelper> > InstanceMap; + /** The instance map holds (at least) one FrameworkHelper instance for + every ViewShellBase object. + */ + static InstanceMap maInstanceMap; + class ViewURLMap; + static ::boost::scoped_ptr<ViewURLMap> mpViewURLMap; + + ViewShellBase& mrBase; + css::uno::Reference<css::drawing::framework::XConfigurationController> + mxConfigurationController; + + class DisposeListener; + friend class DisposeListener; + css::uno::Reference<css::lang::XComponent> + mxDisposeListener; + + FrameworkHelper (ViewShellBase& rBase); + FrameworkHelper (const FrameworkHelper& rHelper); // Not implemented. + FrameworkHelper& operator= (const FrameworkHelper& rHelper); // Not implemented. + + void Initialize (void); + + void Dispose (void); + + /** Run the given callback when an event of the specified type is + received from the ConfigurationController or when the + ConfigurationController has no pending change requests. + @param rsEventType + Run rCallback only on this event. + @param rFilter + This filter has to return <TRUE/> in order for rCallback to be + called. + @param rCallback + The callback functor to be called. + */ + void RunOnEvent( + const ::rtl::OUString& rsEventType, + const ConfigurationChangeEventFilter& rFilter, + const Callback& rCallback) const; + + /** This disposing method is forwarded from the inner DisposeListener class. + */ + void disposing (const css::lang::EventObject& rEventObject); +}; + + +} } // end of namespace sd::framework + + + +namespace sd { namespace framework { + +namespace { + + class FrameworkHelperAllPassFilter + { + public: + bool operator() (const css::drawing::framework::ConfigurationChangeEvent&) { return true; } + }; + + + class FrameworkHelperResourceIdFilter + { + public: + FrameworkHelperResourceIdFilter ( + const css::uno::Reference<css::drawing::framework::XResourceId>& rxResourceId); + bool operator() (const css::drawing::framework::ConfigurationChangeEvent& rEvent) + { return mxResourceId.is() && rEvent.ResourceId.is() + && mxResourceId->compareTo(rEvent.ResourceId) == 0; } + private: + css::uno::Reference<css::drawing::framework::XResourceId> mxResourceId; + }; + +} // end of anonymous namespace + + + + +} } // end of namespace sd::framework + + +#endif diff --git a/sd/source/ui/inc/framework/ImpressModule.hxx b/sd/source/ui/inc/framework/ImpressModule.hxx new file mode 100644 index 000000000000..f5b309760c4a --- /dev/null +++ b/sd/source/ui/inc/framework/ImpressModule.hxx @@ -0,0 +1,47 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FRAMEWORK_IMPRESS_MODULE_HXX +#define SD_FRAMEWORK_IMPRESS_MODULE_HXX + +#include <com/sun/star/frame/XController.hpp> + +namespace sd { namespace framework { + +/** The task of this module is to instantiate all modules that belong to the + Impress application. +*/ +class ImpressModule +{ +public: + static void Initialize ( + ::com::sun::star::uno::Reference<com::sun::star::frame::XController>& rxController); +}; + +} } // end of namespace sd::framework + +#endif diff --git a/sd/source/ui/inc/framework/ModuleController.hxx b/sd/source/ui/inc/framework/ModuleController.hxx new file mode 100644 index 000000000000..4e9517500abc --- /dev/null +++ b/sd/source/ui/inc/framework/ModuleController.hxx @@ -0,0 +1,148 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FRAMEWORK_MODULE_CONTROLLER_HXX +#define SD_FRAMEWORK_MODULE_CONTROLLER_HXX + +#include "MutexOwner.hxx" + +#include <osl/mutex.hxx> +#include <com/sun/star/drawing/framework/XModuleController.hpp> +#include <com/sun/star/uno/XComponentContext.hpp> +#include <com/sun/star/lang/XInitialization.hpp> +#include <com/sun/star/frame/XController.hpp> +#include <cppuhelper/compbase2.hxx> + +#include <boost/scoped_ptr.hpp> +#include <set> + +namespace css = ::com::sun::star; + +namespace { + +typedef ::cppu::WeakComponentImplHelper2 < + css::drawing::framework::XModuleController, + css::lang::XInitialization + > ModuleControllerInterfaceBase; + +} // end of anonymous namespace. + + + +namespace sd { namespace framework { + +/** The ModuleController has to tasks: + + 1. It reads the + org.openoffice.Office.Impress/MultiPaneGUI/Framework/ResourceFactories + configuration data that maps from resource URLs to service names of + factories that can create resources for the URLs. When the + configuration controller wants to create a resource for which it does + not have a factory, it asks the ModuleController to provide one. The + ModuleController looks up the service name registered for the URL of the + resource and instantiates this service. The service is expected to + register on its creation a factory for the resource in question. + + 2. The ModuleController reads on its creation + org.openoffice.Office.Impress/MultiPaneGUI/Framework/StartupServices + configuration data and instantiates all listed services. These servces + can then register as listeners at the ConfigurationController or do + whatever they like. +*/ +class ModuleController + : private sd::MutexOwner, + public ModuleControllerInterfaceBase +{ +public: + static css::uno::Reference< + css::drawing::framework::XModuleController> + CreateInstance ( + const css::uno::Reference<css::uno::XComponentContext>& + rxContext); + + virtual void SAL_CALL disposing (void); + + + // XModuleController + + virtual void SAL_CALL requestResource(const ::rtl::OUString& rsResourceURL) + throw (css::uno::RuntimeException); + + + // XInitialization + + virtual void SAL_CALL initialize( + const css::uno::Sequence<css::uno::Any>& aArguments) + throw (css::uno::Exception, css::uno::RuntimeException); + +private: + css::uno::Reference< + css::frame::XController> mxController; + + class ResourceToFactoryMap; + ::boost::scoped_ptr<ResourceToFactoryMap> mpResourceToFactoryMap; + class LoadedFactoryContainer; + ::boost::scoped_ptr<LoadedFactoryContainer> mpLoadedFactories; + + ModuleController ( + const css::uno::Reference<css::uno::XComponentContext>& rxContext) + throw(); + ModuleController (void); // Not implemented. + ModuleController (const ModuleController&); // Not implemented. + virtual ~ModuleController (void) throw(); + + /** Load a list of URL to service mappings from the + /org.openoffice.Office.Impress/MultiPaneGUI/Framework/ResourceFactories + configuration entry. The mappings are stored in the + mpResourceToFactoryMap member. + */ + void LoadFactories (const css::uno::Reference<css::uno::XComponentContext>& rxContext); + + /** Called for every entry in the ResourceFactories configuration entry. + */ + void ProcessFactory (const ::std::vector<css::uno::Any>& rValues); + + /** Instantiate all startup services that are found in the + /org.openoffice.Office.Impress/MultiPaneGUI/Framework/StartupServices + configuration entry. This method is called once when a new + ModuleController object is created. + */ + void InstantiateStartupServices (void); + + /** Called for one entry in the StartupServices configuration list this + method instantiates the service described by the entry. It does not + hold references to the new object so that the object will be + destroyed on function exit when it does not register itself + somewhere. It typically will register as + XConfigurationChangeListener at the configuration controller. + */ + void ProcessStartupService (const ::std::vector<css::uno::Any>& rValues); +}; + +} } // end of namespace sd::framework + +#endif diff --git a/sd/source/ui/inc/framework/Pane.hxx b/sd/source/ui/inc/framework/Pane.hxx new file mode 100755 index 000000000000..f12f0ca118f0 --- /dev/null +++ b/sd/source/ui/inc/framework/Pane.hxx @@ -0,0 +1,175 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FRAMEWORK_PANE_HXX +#define SD_FRAMEWORK_PANE_HXX + +#include "MutexOwner.hxx" + +#include <com/sun/star/drawing/framework/XPane.hpp> +#include <com/sun/star/drawing/framework/XPane2.hpp> +#include <com/sun/star/drawing/framework/TabBarButton.hpp> +#include <com/sun/star/lang/XUnoTunnel.hpp> +#include <cppuhelper/compbase3.hxx> +#include <tools/link.hxx> +#include <boost/shared_ptr.hpp> +#include <boost/weak_ptr.hpp> + +class Window; + +namespace css = ::com::sun::star; +namespace cssu = ::com::sun::star::uno; + +namespace { + +typedef ::cppu::WeakComponentImplHelper3 < + ::com::sun::star::drawing::framework::XPane, + ::com::sun::star::drawing::framework::XPane2, + ::com::sun::star::lang::XUnoTunnel + > PaneInterfaceBase; + +} // end of anonymous namespace. + +namespace sd { namespace framework { + +/** A pane is a wrapper for a window and possibly for a tab bar (for view + switching). Panes are unique resources. + + This class has two responsibilities: + 1. It implements the XPane interface. This is the most important + interface of this class for API based views (of which there not that + many yet) because it gives access to the XWindow. + 2. It gives access to the underlying VCL Window by implementing the + XUnoTunnel interface. This is necessary at the moment and in the + foreseeable future because many parts of the Draw and Impress views rely + on direct access on the Window class. +*/ +class Pane + : protected MutexOwner, + public PaneInterfaceBase +{ +public: + /** Create a new Pane object that wrapps the given window. + @param rsPaneURL + The URL that is used by the configuration to identify the pane. + The given URL has to be valid. + @param pWindow + The VCL Window (usually this really is an sd::Window) that is + wrapped by the new Pane object. The given pointer must not be + NULL. + */ + Pane ( + const ::com::sun::star::uno::Reference< + com::sun::star::drawing::framework::XResourceId>& rxPaneId, + ::Window* pWindow) + throw (); + virtual ~Pane (void) throw(); + + virtual void SAL_CALL disposing (void); + + static const ::com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId (void); + + /** This method is typically used together with the XUnoTunnel to obtain + a Window pointer from an XPane object. + */ + virtual ::Window* GetWindow (void); + + + //----- XPane ------------------------------------------------------------- + + /** For a UNO API based implementation of a view this may the most + important method of this class because the view is only interested + in the window of the pane. + */ + virtual cssu::Reference<css::awt::XWindow> + SAL_CALL getWindow (void) + throw (cssu::RuntimeException); + + virtual cssu::Reference<css::rendering::XCanvas> + SAL_CALL getCanvas (void) + throw (cssu::RuntimeException); + + + //----- XPane2 ------------------------------------------------------------- + + virtual sal_Bool SAL_CALL isVisible (void) + throw (cssu::RuntimeException); + + virtual void SAL_CALL setVisible (sal_Bool bIsVisible) + throw (cssu::RuntimeException); + + virtual cssu::Reference<css::accessibility::XAccessible> SAL_CALL getAccessible (void) + throw (cssu::RuntimeException); + + virtual void SAL_CALL setAccessible ( + const cssu::Reference<css::accessibility::XAccessible>& rxAccessible) + throw (cssu::RuntimeException); + + + //----- XResource --------------------------------------------------------- + + virtual ::com::sun::star::uno::Reference<com::sun::star::drawing::framework::XResourceId> + SAL_CALL getResourceId (void) + throw (::com::sun::star::uno::RuntimeException); + + /** For the typical pane it makes no sense to be dislayed without a + view. Therefore this default implementation returns always <TRUE/>. + */ + virtual sal_Bool SAL_CALL isAnchorOnly (void) + throw (com::sun::star::uno::RuntimeException); + + + //----- XUnoTunnel -------------------------------------------------------- + + virtual sal_Int64 SAL_CALL getSomething (const com::sun::star::uno::Sequence<sal_Int8>& rId) + throw (com::sun::star::uno::RuntimeException); + + +protected: + ::com::sun::star::uno::Reference<com::sun::star::drawing::framework::XResourceId> mxPaneId; + ::Window* mpWindow; + ::com::sun::star::uno::Reference<com::sun::star::awt::XWindow> mxWindow; + ::com::sun::star::uno::Reference<com::sun::star::rendering::XCanvas> mxCanvas; + + /** Overload this method, not getCanvas(), when you want to provide a + different canvas. + */ + virtual ::com::sun::star::uno::Reference<com::sun::star::rendering::XCanvas> + CreateCanvas (void) + throw (::com::sun::star::uno::RuntimeException); + + /** Throw DisposedException when the object has already been disposed or + is currently being disposed. Otherwise this method returns + normally. + */ + void ThrowIfDisposed (void) const + throw (::com::sun::star::lang::DisposedException); +}; + +} } // end of namespace sd::framework + +#endif diff --git a/sd/source/ui/inc/framework/PresentationFactory.hxx b/sd/source/ui/inc/framework/PresentationFactory.hxx new file mode 100755 index 000000000000..a607542f2df0 --- /dev/null +++ b/sd/source/ui/inc/framework/PresentationFactory.hxx @@ -0,0 +1,116 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FRAMEWORK_PRESENTATION_FACTORY_HXX +#define SD_FRAMEWORK_PRESENTATION_FACTORY_HXX + +#include "MutexOwner.hxx" + +#include <com/sun/star/drawing/framework/XResourceFactory.hpp> +#include <com/sun/star/drawing/framework/XConfigurationChangeListener.hpp> +#include <com/sun/star/drawing/framework/XConfigurationController.hpp> +#include <com/sun/star/frame/XController.hpp> +#include <com/sun/star/lang/XInitialization.hpp> +#include <com/sun/star/uno/XComponentContext.hpp> +#include <osl/mutex.hxx> +#include <cppuhelper/compbase2.hxx> + + +#include <boost/scoped_ptr.hpp> +#include <boost/shared_ptr.hpp> + +namespace css = ::com::sun::star; + +namespace { + +typedef ::cppu::WeakComponentImplHelper2 < + css::drawing::framework::XResourceFactory, + css::drawing::framework::XConfigurationChangeListener + > PresentationFactoryInterfaceBase; + +} // end of anonymous namespace. + + + +namespace sd { namespace framework { + +/** This factory creates a marker view whose existence in a configuration + indicates that a slideshow is running (in another but associated + application window). +*/ +class PresentationFactory + : private sd::MutexOwner, + public PresentationFactoryInterfaceBase +{ +public: + static const ::rtl::OUString msPresentationViewURL; + + PresentationFactory ( + const css::uno::Reference<css::frame::XController>& rxController); + virtual ~PresentationFactory (void); + + virtual void SAL_CALL disposing (void); + + + // XResourceFactory + + virtual css::uno::Reference<css::drawing::framework::XResource> + SAL_CALL createResource ( + const css::uno::Reference< + css::drawing::framework::XResourceId>& rxViewId) + throw (css::uno::RuntimeException, css::lang::IllegalArgumentException, css::lang::WrappedTargetException); + + virtual void SAL_CALL releaseResource ( + const css::uno::Reference<css::drawing::framework::XResource>& xView) + throw(css::uno::RuntimeException); + + + // XConfigurationChangeListener + + virtual void SAL_CALL notifyConfigurationChange ( + const css::drawing::framework::ConfigurationChangeEvent& rEvent) + throw (css::uno::RuntimeException); + + + // lang::XEventListener + + virtual void SAL_CALL disposing ( + const css::lang::EventObject& rEventObject) + throw (css::uno::RuntimeException); + +private: + css::uno::Reference<css::drawing::framework::XConfigurationController> + mxConfigurationController; + css::uno::Reference<css::frame::XController> mxController; + + void ThrowIfDisposed (void) const + throw (css::lang::DisposedException); +}; + +} } // end of namespace sd::framework + +#endif diff --git a/sd/source/ui/inc/framework/PresentationModule.hxx b/sd/source/ui/inc/framework/PresentationModule.hxx new file mode 100644 index 000000000000..ac96f9c44b2e --- /dev/null +++ b/sd/source/ui/inc/framework/PresentationModule.hxx @@ -0,0 +1,47 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FRAMEWORK_PRESENTATION_MODULE_HXX +#define SD_FRAMEWORK_PRESENTATION_MODULE_HXX + +#include <com/sun/star/frame/XController.hpp> + +namespace sd { namespace framework { + +/** The task of this module is to instantiate all modules that belong to the + fullscreen presentation. +*/ +class PresentationModule +{ +public: + static void Initialize ( + ::com::sun::star::uno::Reference<com::sun::star::frame::XController>& rxController); +}; + +} } // end of namespace sd::framework + +#endif diff --git a/sd/source/ui/inc/framework/ResourceId.hxx b/sd/source/ui/inc/framework/ResourceId.hxx new file mode 100755 index 000000000000..e8124e895ee6 --- /dev/null +++ b/sd/source/ui/inc/framework/ResourceId.hxx @@ -0,0 +1,244 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FRAMEWORK_RESOURCE_ID_HXX +#define SD_FRAMEWORK_RESOURCE_ID_HXX + +#include <com/sun/star/drawing/framework/XResourceId.hpp> +#include <com/sun/star/lang/XInitialization.hpp> +#include <com/sun/star/util/XURLTransformer.hpp> +#include <cppuhelper/compbase2.hxx> +#include <boost/scoped_ptr.hpp> + +namespace css = ::com::sun::star; + + +namespace { + +typedef ::cppu::WeakImplHelper2 < + css::drawing::framework::XResourceId, + css::lang::XInitialization + > ResourceIdInterfaceBase; + +} // end of anonymous namespace. + + + + +namespace sd { namespace framework { + +/** Implementation of the css::drawing::framework::ResourceId + service and the css::drawing::framework::XResourceId + interface. +*/ +class ResourceId + : public ResourceIdInterfaceBase +{ +public: + /** Create a new, empty resource id. + */ + ResourceId (void); + + /** Create a new resource id that is described by the given URLs. + @param rsResourceURLs + The first URL specifies the type of resource. The other URLs + describe its anchor. + The set of URLs may be empty. The result is then the same as + returned by ResourceId() default constructor. + */ + ResourceId (const ::std::vector<rtl::OUString>& rsResourceURLs); + + /** Create a new resource id that has an empty anchor. + @param rsResourceURL + When this resource URL is empty then the resulting ResourceId + object is identical to when the ResourceId() default constructor + had been called. + */ + ResourceId ( + const ::rtl::OUString& rsResourceURL); + + /** Create a new resource id for the given resource type and an anchor + that is specified by a single URL. This constructor can be used for + example for views that are bound to panes. + @param rsResourceURL + The URL of the actual resource. + @param rsAnchorURL + The single URL of the anchor. + */ + ResourceId ( + const ::rtl::OUString& rsResourceURL, + const ::rtl::OUString& rsAnchorURL); + + /** Create a new resource id for the specified resource type and the + given list of anchor URLs. + @param rsResourceURL + The URL of the actual resource. + @param rsAnchorURLs + The possibly empty list of anchor URLs. + */ + ResourceId ( + const ::rtl::OUString& rsResourceURL, + const ::std::vector<rtl::OUString>& rAnchorURLs); + + /** Create a new resource id with an anchor that consists of a sequence + of URLs that is extended by a further URL. + @param rsResourceURL + The URL of the actual resource. + @param rsFirstAnchorURL + This URL extends the anchor given by rAnchorURLs. + @param rAnchorURLs + An anchor as it is returned by XResourceId::getAnchorURLs(). + */ + ResourceId ( + const ::rtl::OUString& rsResourceURL, + const ::rtl::OUString& rsFirstAnchorURL, + const css::uno::Sequence<rtl::OUString>& rAnchorURLs); + + virtual ~ResourceId (void); + + /** Return the list of URLs of both the resource URL and the anchor + URLs. + */ + const ::std::vector<rtl::OUString>& GetResourceURLs (void) const; + + //===== XResourceId ======================================================= + + virtual ::rtl::OUString SAL_CALL + getResourceURL (void) + throw(css::uno::RuntimeException); + + virtual css::util::URL SAL_CALL + getFullResourceURL (void) + throw(css::uno::RuntimeException); + + virtual sal_Bool SAL_CALL + hasAnchor (void) + throw (css::uno::RuntimeException); + + virtual css::uno::Reference< + css::drawing::framework::XResourceId> SAL_CALL + getAnchor (void) + throw (css::uno::RuntimeException); + + virtual css::uno::Sequence<rtl::OUString> SAL_CALL + getAnchorURLs (void) + throw (css::uno::RuntimeException); + + virtual ::rtl::OUString SAL_CALL + getResourceTypePrefix (void) + throw (css::uno::RuntimeException); + + virtual sal_Int16 SAL_CALL + compareTo (const css::uno::Reference< + css::drawing::framework::XResourceId>& rxResourceId) + throw (css::uno::RuntimeException); + + virtual sal_Bool SAL_CALL + isBoundTo ( + const css::uno::Reference< + css::drawing::framework::XResourceId>& rxResourceId, + css::drawing::framework::AnchorBindingMode eMode) + throw(css::uno::RuntimeException); + + virtual sal_Bool SAL_CALL + isBoundToURL ( + const ::rtl::OUString& rsAnchorURL, + css::drawing::framework::AnchorBindingMode eMode) + throw (css::uno::RuntimeException); + + virtual css::uno::Reference< + css::drawing::framework::XResourceId> SAL_CALL + clone (void) + throw(css::uno::RuntimeException); + + //===== XInitialization =================================================== + + void SAL_CALL initialize ( + const css::uno::Sequence<css::uno::Any>& aArguments) + throw (css::uno::RuntimeException); + +private: + /** The set of URLs that consist of the resource URL at index 0 and the + anchor URLs and indices 1 and above. + */ + ::std::vector<rtl::OUString> maResourceURLs; + + ::boost::scoped_ptr<css::util::URL> mpURL; + + static css::uno::WeakReference<css::util::XURLTransformer> mxURLTransformerWeak; + + /** Compare the called ResourceId object to the given ResourceId object. + This uses the implementation of both objects to speed up the + comparison. + */ + sal_Int16 CompareToLocalImplementation (const ResourceId& rId) const; + + /** Compare the called ResourceId object to the given XResourceId object + reference. The comparison is done via the UNO interface. Namely, + it uses the getResourceURL() and the getAnchorURLs() methods to get + access to the URLs of the given objec. + */ + sal_Int16 CompareToExternalImplementation (const css::uno::Reference< + css::drawing::framework::XResourceId>& rxId) const; + + /** Return whether the called ResourceId object is bound to the anchor + consisting of the URLs given by psFirstAnchorURL and paAnchorURLs. + @param psFirstAnchorURL + Optional first URL of the anchor. This can be missing or present + independently of paAnchorURLs. + @param paAnchorURLs + Optional set of additional anchor URLs. This can be missing or + present independently of psFirstAnchorURL. + @param eMode + This specifies whether the called resource has to be directly + bound to the given anchor in order to return <TRUE/> or whether + it can be bound indirectly, too. + */ + bool IsBoundToAnchor ( + const rtl::OUString* psFirstAnchorURL, + const css::uno::Sequence<rtl::OUString>* paAnchorURLs, + css::drawing::framework::AnchorBindingMode eMode) const; + + /** Return whether the called ResourceId object is bound to the anchor + consisting of the URLs in rResourceURLs. + @param rResourceURLs + A possibly empty list of anchor URLs. + @param eMode + This specifies whether the called resource has to be directly + bound to the given anchor in order to return <TRUE/> or whether + it can be bound indirectly, too. + */ + bool IsBoundToAnchor ( + const ::std::vector<rtl::OUString>& rResourceURLs, + css::drawing::framework::AnchorBindingMode eMode) const; + + void ParseResourceURL (void); +}; + +} } // end of namespace sd::framework + +#endif diff --git a/sd/source/ui/inc/framework/ViewShellWrapper.hxx b/sd/source/ui/inc/framework/ViewShellWrapper.hxx new file mode 100755 index 000000000000..12483f462d5e --- /dev/null +++ b/sd/source/ui/inc/framework/ViewShellWrapper.hxx @@ -0,0 +1,148 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FRAMEWORK_VIEW_SHELL_WRAPPER_HXX +#define SD_FRAMEWORK_VIEW_SHELL_WRAPPER_HXX + +#include "MutexOwner.hxx" +#include <com/sun/star/drawing/framework/XView.hpp> +#include <com/sun/star/drawing/framework/XRelocatableResource.hpp> +#include <com/sun/star/awt/XWindow.hpp> +#include <com/sun/star/lang/XUnoTunnel.hpp> +#include <osl/mutex.hxx> +#include <cppuhelper/compbase4.hxx> +#include <cppuhelper/implbase1.hxx> + +#include <boost/shared_ptr.hpp> + +namespace { + +typedef ::cppu::WeakComponentImplHelper4 < ::com::sun::star::lang::XUnoTunnel + , ::com::sun::star::awt::XWindowListener + , ::com::sun::star::drawing::framework::XRelocatableResource + , ::com::sun::star::drawing::framework::XView + > ViewShellWrapperInterfaceBase; + +} // end of anonymous namespace. + +namespace sd { class ViewShell; } + +namespace sd { namespace framework { + +/** This class wraps ViewShell objects and makes them look like an XView. + Most importantly it provides a tunnel to the ViewShell implementation. + Then it forwards size changes of the pane window to the view shell. +*/ +class ViewShellWrapper :private sd::MutexOwner + ,public ViewShellWrapperInterfaceBase +{ +public: + /** Create a new ViewShellWrapper object that wraps the given ViewShell + object. + @param pViewShell + The ViewShell object to wrap. + @param rsViewURL + URL of the view type of the wrapped view shell. + @param rxWindow + This window reference is optional. When a valid reference is + given then size changes of the referenced window are forwarded + to the ViewShell object. + */ + ViewShellWrapper ( + ::boost::shared_ptr<ViewShell> pViewShell, + const ::com::sun::star::uno::Reference< + ::com::sun::star::drawing::framework::XResourceId>& rxViewId, + const ::com::sun::star::uno::Reference<com::sun::star::awt::XWindow>& rxWindow); + virtual ~ViewShellWrapper (void); + + virtual void SAL_CALL disposing (void); + + static const ::com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId (void); + + /** This method is typically used together with the XUnoTunnel interface + to obtain a pointer to the wrapped ViewShell object for a given + XView object. + */ + ::boost::shared_ptr<ViewShell> GetViewShell (void); + + // XUnoTunnel + + virtual sal_Int64 SAL_CALL getSomething (const com::sun::star::uno::Sequence<sal_Int8>& rId) + throw (com::sun::star::uno::RuntimeException); + + // XResource + + virtual ::com::sun::star::uno::Reference<com::sun::star::drawing::framework::XResourceId> + SAL_CALL getResourceId (void) + throw (com::sun::star::uno::RuntimeException); + + virtual sal_Bool SAL_CALL isAnchorOnly (void) + throw (com::sun::star::uno::RuntimeException); + + + // XRelocatableResource + + virtual sal_Bool SAL_CALL relocateToAnchor ( + const ::com::sun::star::uno::Reference< + com::sun::star::drawing::framework::XResource>& xResource) + throw (com::sun::star::uno::RuntimeException); + + + // XWindowListener + + virtual void SAL_CALL windowResized( + const ::com::sun::star::awt::WindowEvent& rEvent) + throw (::com::sun::star::uno::RuntimeException); + + virtual void SAL_CALL windowMoved( + const ::com::sun::star::awt::WindowEvent& rEvent) + throw (::com::sun::star::uno::RuntimeException); + + virtual void SAL_CALL windowShown( + const ::com::sun::star::lang::EventObject& rEvent) + throw (::com::sun::star::uno::RuntimeException); + + virtual void SAL_CALL windowHidden( + const ::com::sun::star::lang::EventObject& rEvent) + throw (::com::sun::star::uno::RuntimeException); + + + // XEventListener + + virtual void SAL_CALL disposing( + const com::sun::star::lang::EventObject& rEvent) + throw (com::sun::star::uno::RuntimeException); + +private: + ::boost::shared_ptr< ViewShell > mpViewShell; + const ::com::sun::star::uno::Reference< com::sun::star::drawing::framework::XResourceId > mxViewId; + ::com::sun::star::uno::Reference<com::sun::star::awt::XWindow > mxWindow; +}; + +} } // end of namespace sd::framework + +#endif diff --git a/sd/source/ui/inc/fuarea.hxx b/sd/source/ui/inc/fuarea.hxx new file mode 100644 index 000000000000..f109f4792ad2 --- /dev/null +++ b/sd/source/ui/inc/fuarea.hxx @@ -0,0 +1,59 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_AREA_HXX +#define SD_FU_AREA_HXX + +#include "fupoor.hxx" + +namespace sd { + +class FuArea : public FuPoor +{ +public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + + virtual void Activate(); + virtual void Deactivate(); + +private: + FuArea ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); + + virtual void DoExecute( SfxRequest& rReq ); +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/fubullet.hxx b/sd/source/ui/inc/fubullet.hxx new file mode 100644 index 000000000000..d01b9f7fe86e --- /dev/null +++ b/sd/source/ui/inc/fubullet.hxx @@ -0,0 +1,65 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_BULLET_HXX +#define SD_FU_BULLET_HXX + +#include "fupoor.hxx" + +class SfxItemSet; +class SfxViewFrame; + +namespace sd { + +class ViewShell; + +class FuBullet : public FuPoor +{ +public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + virtual void DoExecute( SfxRequest& rReq ); + + static void GetSlotState( SfxItemSet& rSet, ViewShell* pViewShell, SfxViewFrame* pViewFrame ); + +private: + FuBullet ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); + + void InsertSpecialCharacter( SfxRequest& rReq ); + void InsertFormattingMark( sal_Unicode cMark ); +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/fuchar.hxx b/sd/source/ui/inc/fuchar.hxx new file mode 100644 index 000000000000..a207603ec270 --- /dev/null +++ b/sd/source/ui/inc/fuchar.hxx @@ -0,0 +1,60 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_CHAR_HXX +#define SD_FU_CHAR_HXX + +#include "fupoor.hxx" + +namespace sd { + +class FuChar + : public FuPoor +{ +public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + + virtual void DoExecute( SfxRequest& rReq ); + + virtual void Activate(); + virtual void Deactivate(); + +private: + FuChar ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/fucon3d.hxx b/sd/source/ui/inc/fucon3d.hxx new file mode 100755 index 000000000000..d5b47fd2bc28 --- /dev/null +++ b/sd/source/ui/inc/fucon3d.hxx @@ -0,0 +1,77 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_CONSTRUCT_3D_OBJECT_HXX +#define SD_FU_CONSTRUCT_3D_OBJECT_HXX + +#include "fuconstr.hxx" + +class E3dCompoundObject; +class E3dScene; +class SdDrawDocument; +class SfxRequest; + +namespace sd { + +class FuConstruct3dObject + : public FuConstruct +{ +public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq, bool bPermanent ); + virtual void DoExecute( SfxRequest& rReq ); + + // Mouse- & Key-Events + virtual sal_Bool KeyInput(const KeyEvent& rKEvt); + virtual sal_Bool MouseMove(const MouseEvent& rMEvt); + virtual sal_Bool MouseButtonUp(const MouseEvent& rMEvt); + virtual sal_Bool MouseButtonDown(const MouseEvent& rMEvt); + + virtual void Activate(); // Function aktivieren + virtual void Deactivate(); // Function deaktivieren + + // #97016# + virtual SdrObject* CreateDefaultObject(const sal_uInt16 nID, const Rectangle& rRectangle); + +private: + FuConstruct3dObject ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); + + // #97016# + void ImpPrepareBasic3DShape(E3dCompoundObject* p3DObj, E3dScene *pScene); + E3dCompoundObject* ImpCreateBasic3DShape(); +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/fuconarc.hxx b/sd/source/ui/inc/fuconarc.hxx new file mode 100755 index 000000000000..6d333d96c0b3 --- /dev/null +++ b/sd/source/ui/inc/fuconarc.hxx @@ -0,0 +1,70 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_CONSTRUCT_ARC_HXX +#define SD_FU_CONSTRUCT_ARC_HXX + +#include "fuconstr.hxx" + +namespace sd { + + +class FuConstructArc + : public FuConstruct +{ +public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq, bool bPermanent ); + virtual void DoExecute( SfxRequest& rReq ); + + // Mouse- & Key-Events + virtual sal_Bool KeyInput(const KeyEvent& rKEvt); + virtual sal_Bool MouseMove(const MouseEvent& rMEvt); + virtual sal_Bool MouseButtonUp(const MouseEvent& rMEvt); + virtual sal_Bool MouseButtonDown(const MouseEvent& rMEvt); + + virtual void Activate(); // Function aktivieren + virtual void Deactivate(); // Function deaktivieren + + // #97016# + virtual SdrObject* CreateDefaultObject(const sal_uInt16 nID, const Rectangle& rRectangle); + +protected: + FuConstructArc ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); + +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/fuconbez.hxx b/sd/source/ui/inc/fuconbez.hxx new file mode 100755 index 000000000000..f5597a7d9053 --- /dev/null +++ b/sd/source/ui/inc/fuconbez.hxx @@ -0,0 +1,85 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_CONSTRUCT_BEZIER_HXX +#define SD_FU_CONSTRUCT_BEZIER_HXX + +#include <com/sun/star/uno/Any.hxx> +#include "fuconstr.hxx" + +class SdDrawDocument; + +namespace sd { + +class DrawView; +class DrawViewShell; +class Window; + + +class FuConstructBezierPolygon + : public FuConstruct +{ +public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq, bool bPermanent ); + virtual void DoExecute( SfxRequest& rReq ); + + // Mouse- & Key-Events + virtual sal_Bool KeyInput(const KeyEvent& rKEvt); + virtual sal_Bool MouseMove(const MouseEvent& rMEvt); + virtual sal_Bool MouseButtonUp(const MouseEvent& rMEvt); + virtual sal_Bool MouseButtonDown(const MouseEvent& rMEvt); + + virtual void Activate(); // Function aktivieren + virtual void Deactivate(); // Function deaktivieren + + virtual void SelectionHasChanged(); + + void SetEditMode(sal_uInt16 nMode); + sal_uInt16 GetEditMode() { return nEditMode; } + + // #97016# + virtual SdrObject* CreateDefaultObject(const sal_uInt16 nID, const Rectangle& rRectangle); + +protected: + FuConstructBezierPolygon ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); + + sal_uInt16 nEditMode; + + ::com::sun::star::uno::Any maTargets; // used for creating a path for custom animations +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/fuconcs.hxx b/sd/source/ui/inc/fuconcs.hxx new file mode 100755 index 000000000000..064461ff201a --- /dev/null +++ b/sd/source/ui/inc/fuconcs.hxx @@ -0,0 +1,87 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_CONSTRUCT_CUSTOMSHAPE_HXX +#define SD_FU_CONSTRUCT_CUSTOMSHAPE_HXX + +#include "fuconstr.hxx" + +class KeyEvent; +class SdDrawDocument; +class SdrObject; +class SdxRequest; +class SfxItemSet; + +namespace sd { + +/************************************************************************* +|* +|* Rechteck zeichnen +|* +\************************************************************************/ + +class FuConstructCustomShape + : public FuConstruct +{ +public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq, bool bPermanent ); + virtual void DoExecute( SfxRequest& rReq ); + + // Mouse- & Key-Events + virtual sal_Bool KeyInput(const KeyEvent& rKEvt); + virtual sal_Bool MouseMove(const MouseEvent& rMEvt); + virtual sal_Bool MouseButtonUp(const MouseEvent& rMEvt); + virtual sal_Bool MouseButtonDown(const MouseEvent& rMEvt); + + virtual void Activate(); // Function aktivieren + + void SetAttributes( SdrObject* pObj ); + + // #97016# + virtual SdrObject* CreateDefaultObject(const sal_uInt16 nID, const Rectangle& rRectangle); + + // #i33136# + virtual bool doConstructOrthogonal() const; + +protected: + FuConstructCustomShape ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); + +private: + rtl::OUString aCustomShape; +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/fuconnct.hxx b/sd/source/ui/inc/fuconnct.hxx new file mode 100644 index 000000000000..623c1dd9432b --- /dev/null +++ b/sd/source/ui/inc/fuconnct.hxx @@ -0,0 +1,57 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_CONNECTION_DLG_HXX +#define SD_FU_CONNECTION_DLG_HXX + +#include "fupoor.hxx" + +namespace sd { + +class FuConnectionDlg + : public FuPoor +{ +public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + + virtual void DoExecute( SfxRequest& rReq ); + +private: + FuConnectionDlg ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/fuconrec.hxx b/sd/source/ui/inc/fuconrec.hxx new file mode 100755 index 000000000000..b3b24cce37ed --- /dev/null +++ b/sd/source/ui/inc/fuconrec.hxx @@ -0,0 +1,84 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_CONSTRUCT_RECTANGLE_HXX +#define SD_FU_CONSTRUCT_RECTANGLE_HXX + +#include "fuconstr.hxx" + +class KeyEvent; +class SdDrawDocument; +class SdrObject; +class SdxRequest; +class SfxItemSet; + +namespace sd { + +/************************************************************************* +|* +|* Rechteck zeichnen +|* +\************************************************************************/ + +class FuConstructRectangle + : public FuConstruct +{ +public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq, bool bPermanent ); + virtual void DoExecute( SfxRequest& rReq ); + + // Mouse- & Key-Events + virtual sal_Bool KeyInput(const KeyEvent& rKEvt); + virtual sal_Bool MouseMove(const MouseEvent& rMEvt); + virtual sal_Bool MouseButtonUp(const MouseEvent& rMEvt); + virtual sal_Bool MouseButtonDown(const MouseEvent& rMEvt); + + virtual void Activate(); // Function aktivieren + virtual void Deactivate(); // Function deaktivieren + + void SetAttributes(SfxItemSet& rAttr, SdrObject* pObj); + void SetLineEnds(SfxItemSet& rAttr, SdrObject* pObj); + + // #97016# + virtual SdrObject* CreateDefaultObject(const sal_uInt16 nID, const Rectangle& rRectangle); + +protected: + FuConstructRectangle ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); + +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/fuconstr.hxx b/sd/source/ui/inc/fuconstr.hxx new file mode 100755 index 000000000000..e9fde8168233 --- /dev/null +++ b/sd/source/ui/inc/fuconstr.hxx @@ -0,0 +1,87 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_CONSTRUCT_HXX +#define SD_FU_CONSTRUCT_HXX + +#include "fudraw.hxx" + +class KeyEvent; +class SdrObject; +class SfxItemSet; + +namespace sd { + +/************************************************************************* +|* +|* Rechteck zeichnen +|* +\************************************************************************/ + +class FuConstruct + : public FuDraw +{ +public: + static const int MIN_FREEHAND_DISTANCE = 10; + + TYPEINFO(); + + virtual void DoExecute( SfxRequest& rReq ); + + // Mouse- & Key-Events + virtual sal_Bool KeyInput(const KeyEvent& rKEvt); + virtual sal_Bool MouseMove(const MouseEvent& rMEvt); + virtual sal_Bool MouseButtonUp(const MouseEvent& rMEvt); + virtual sal_Bool MouseButtonDown(const MouseEvent& rMEvt); + + virtual void Activate(); // Function aktivieren + virtual void Deactivate(); // Function deaktivieren + + virtual void SelectionHasChanged() { bSelectionChanged = sal_True; } + + // SJ: setting stylesheet, the use of a filled or unfilled style + // is determined by the member nSlotId : + void SetStyleSheet(SfxItemSet& rAttr, SdrObject* pObj); + + // SJ: setting stylesheet, the use of a filled or unfilled style + // is determinded by the parameters bUseFillStyle and bUseNoFillStyle : + void SetStyleSheet( SfxItemSet& rAttr, SdrObject* pObj, + const sal_Bool bUseFillStyle, const sal_Bool bUseNoFillStyle ); + +protected: + FuConstruct (ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); + + bool bSelectionChanged; +}; + +} // end of namespace sd + +#endif // _SD_FUCONSTR_HXX diff --git a/sd/source/ui/inc/fuconuno.hxx b/sd/source/ui/inc/fuconuno.hxx new file mode 100755 index 000000000000..4b55f6f150c9 --- /dev/null +++ b/sd/source/ui/inc/fuconuno.hxx @@ -0,0 +1,81 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_CONSTRUCT_UNO_CONTROL_HXX +#define SD_FU_CONSTRUCT_UNO_CONTROL_HXX + +#include <svl/itemset.hxx> +#include "fuconstr.hxx" + +namespace sd { + +/************************************************************************* +|* +|* Control zeichnen +|* +\************************************************************************/ + +class FuConstructUnoControl + : public FuConstruct +{ +public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq, bool bPermanent ); + virtual void DoExecute( SfxRequest& rReq ); + + // Mouse- & Key-Events + virtual sal_Bool KeyInput(const KeyEvent& rKEvt); + virtual sal_Bool MouseMove(const MouseEvent& rMEvt); + virtual sal_Bool MouseButtonUp(const MouseEvent& rMEvt); + virtual sal_Bool MouseButtonDown(const MouseEvent& rMEvt); + + virtual void Activate(); // Function aktivieren + virtual void Deactivate(); // Function deaktivieren + + // #97016# + virtual SdrObject* CreateDefaultObject(const sal_uInt16 nID, const Rectangle& rRectangle); + +protected: + FuConstructUnoControl( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); + + String aOldLayer; + +private: + sal_uInt32 nInventor; + sal_uInt16 nIdentifier; +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/fucopy.hxx b/sd/source/ui/inc/fucopy.hxx new file mode 100644 index 000000000000..eb9565f02ff6 --- /dev/null +++ b/sd/source/ui/inc/fucopy.hxx @@ -0,0 +1,58 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_COPY_HXX +#define SD_FU_COPY_HXX + +#include "fupoor.hxx" + +namespace sd { + +class FuCopy + : public FuPoor +{ +public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + virtual void DoExecute( SfxRequest& rReq ); + +private: + + FuCopy ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); + +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/fucushow.hxx b/sd/source/ui/inc/fucushow.hxx new file mode 100644 index 000000000000..54c7596bfbc0 --- /dev/null +++ b/sd/source/ui/inc/fucushow.hxx @@ -0,0 +1,55 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_CUSTOM_SHOW_DLG_HXX +#define SD_FU_CUSTOM_SHOW_DLG_HXX + +#include "fupoor.hxx" + +namespace sd { + +class FuCustomShowDlg + : public FuPoor +{ +public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + virtual void DoExecute( SfxRequest& rReq ); + +private: + FuCustomShowDlg ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/fudraw.hxx b/sd/source/ui/inc/fudraw.hxx new file mode 100755 index 000000000000..8a36ad16fcb4 --- /dev/null +++ b/sd/source/ui/inc/fudraw.hxx @@ -0,0 +1,102 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_DRAW_HXX +#define SD_FU_DRAW_HXX + +#ifndef _SV_POINTR_HXX //autogen +#include <vcl/pointr.hxx> +#endif +#include "fupoor.hxx" + +struct SdrViewEvent; +class SdrObject; + +namespace sd { + +/************************************************************************* +|* +|* Basisklasse fuer alle Drawmodul-spezifischen Funktionen +|* +\************************************************************************/ + +class FuDraw + : public FuPoor +{ +public: + TYPEINFO(); + + virtual sal_Bool KeyInput(const KeyEvent& rKEvt); + virtual sal_Bool MouseMove(const MouseEvent& rMEvt); + virtual sal_Bool MouseButtonUp(const MouseEvent& rMEvt); + virtual sal_Bool MouseButtonDown(const MouseEvent& rMEvt); + virtual sal_Bool RequestHelp(const HelpEvent& rHEvt); + + virtual void ScrollStart(); + virtual void ScrollEnd(); + + virtual void Activate(); + virtual void Deactivate(); + + virtual void ForcePointer(const MouseEvent* pMEvt = NULL); + + virtual void DoubleClick(const MouseEvent& rMEvt); + + sal_Bool SetPointer(SdrObject* pObj, const Point& rPos); + sal_Bool SetHelpText(SdrObject* pObj, const Point& rPos, const SdrViewEvent& rVEvt); + + void SetPermanent(sal_Bool bSet) { bPermanent = bSet; } + + /** is called when the currenct function should be aborted. <p> + This is used when a function gets a KEY_ESCAPE but can also + be called directly. + + @returns true if a active function was aborted + */ + virtual bool cancel(); + +protected: + FuDraw (ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); + + virtual ~FuDraw(); + + Pointer aNewPointer; + Pointer aOldPointer; + sal_Bool bMBDown; + sal_Bool bDragHelpLine; + sal_uInt16 nHelpLine; + sal_Bool bPermanent; + +}; + +} // end of namespace sd + +#endif // _SD_FUDRAW_HXX diff --git a/sd/source/ui/inc/fudspord.hxx b/sd/source/ui/inc/fudspord.hxx new file mode 100755 index 000000000000..31719deccaaf --- /dev/null +++ b/sd/source/ui/inc/fudspord.hxx @@ -0,0 +1,82 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_DISPLAY_ORDER_HXX +#define SD_FU_DISPLAY_ORDER_HXX + + +#include "fupoor.hxx" +#include <vcl/pointr.hxx> + +class SdrDropMarkerOverlay; +class SdrObject; + +namespace sd { + +/************************************************************************* +|* +|* Funktion DisplayOrder +|* +\************************************************************************/ + +class FuDisplayOrder + : public FuPoor +{ +public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + + // Mouse- & Key-Events + virtual sal_Bool MouseMove(const MouseEvent& rMEvt); + virtual sal_Bool MouseButtonUp(const MouseEvent& rMEvt); + virtual sal_Bool MouseButtonDown(const MouseEvent& rMEvt); + + virtual void Activate(); // Function aktivieren + virtual void Deactivate(); // Function deaktivieren + +protected: + virtual ~FuDisplayOrder (void); + void implClearOverlay(); + + Pointer maPtr; + SdrObject* mpRefObj; + SdrDropMarkerOverlay* mpOverlay; + +private: + FuDisplayOrder ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); +}; + +} // end of namespace sd + +#endif // _SD_FUDSPORD_HXX + diff --git a/sd/source/ui/inc/fuediglu.hxx b/sd/source/ui/inc/fuediglu.hxx new file mode 100755 index 000000000000..3fcf51729bce --- /dev/null +++ b/sd/source/ui/inc/fuediglu.hxx @@ -0,0 +1,74 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_EDIT_GLUE_POINTS_HXX +#define SD_FU_EDIT_GLUE_POINTS_HXX + +#include "fudraw.hxx" + +namespace sd { + +/************************************************************************* +|* +|* FuEditGluePoints +|* +\************************************************************************/ + +class FuEditGluePoints + : public FuDraw +{ +public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq, bool bPermanent ); + virtual void DoExecute( SfxRequest& rReq ); + + // Mouse- & Key-Events + virtual sal_Bool KeyInput(const KeyEvent& rKEvt); + virtual sal_Bool MouseMove(const MouseEvent& rMEvt); + virtual sal_Bool MouseButtonUp(const MouseEvent& rMEvt); + virtual sal_Bool MouseButtonDown(const MouseEvent& rMEvt); + virtual sal_Bool Command(const CommandEvent& rCEvt); + virtual void ReceiveRequest(SfxRequest& rReq); + + virtual void Activate(); // Function aktivieren + virtual void Deactivate(); // Function deaktivieren + +protected: + FuEditGluePoints ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); + virtual ~FuEditGluePoints (void); +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/fuexpand.hxx b/sd/source/ui/inc/fuexpand.hxx new file mode 100644 index 000000000000..9e732efb4c2b --- /dev/null +++ b/sd/source/ui/inc/fuexpand.hxx @@ -0,0 +1,56 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_EXPAND_PAGE_HXX +#define SD_FU_EXPAND_PAGE_HXX + +#include "fupoor.hxx" + +namespace sd { + +class FuExpandPage + : public FuPoor +{ + public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + virtual void DoExecute( SfxRequest& rReq ); + +private: + FuExpandPage ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/fuformatpaintbrush.hxx b/sd/source/ui/inc/fuformatpaintbrush.hxx new file mode 100755 index 000000000000..4d2f19f5fb65 --- /dev/null +++ b/sd/source/ui/inc/fuformatpaintbrush.hxx @@ -0,0 +1,76 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_FORMATPAINTBRUSH_HXX +#define SD_FU_FORMATPAINTBRUSH_HXX + +#include "futext.hxx" + +// header for class SfxItemSet +#include <svl/itemset.hxx> +#include <boost/scoped_ptr.hpp> + +namespace sd { + +class DrawViewShell; + +class FuFormatPaintBrush : public FuText +{ +public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + + virtual sal_Bool MouseMove(const MouseEvent& rMEvt); + virtual sal_Bool MouseButtonUp(const MouseEvent& rMEvt); + virtual sal_Bool MouseButtonDown(const MouseEvent& rMEvt); + virtual sal_Bool KeyInput(const KeyEvent& rKEvt); + + virtual void Activate(); + virtual void Deactivate(); + + static void GetMenuState( DrawViewShell& rDrawViewShell, SfxItemSet &rSet ); + static bool CanCopyThisType( sal_uInt32 nObjectInventor, sal_uInt16 nObjectIdentifier ); + +private: + FuFormatPaintBrush ( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq); + + void DoExecute( SfxRequest& rReq ); + + bool HasContentForThisType( sal_uInt32 nObjectInventor, sal_uInt16 nObjectIdentifier ) const; + void Paste( bool, bool ); + + void implcancel(); + + ::boost::shared_ptr<SfxItemSet> mpItemSet; + bool mbPermanent; + bool mbOldIsQuickTextEditMode; +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/fugrid.hxx b/sd/source/ui/inc/fugrid.hxx new file mode 100644 index 000000000000..fa3834a81281 --- /dev/null +++ b/sd/source/ui/inc/fugrid.hxx @@ -0,0 +1,59 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_GRID_HXX +#define SD_FU_GRID_HXX + +#include "fupoor.hxx" + +namespace sd { + +class FuGrid + : public FuPoor +{ +public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + + virtual void Activate(); + virtual void Deactivate(); + +private: + FuGrid ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); +}; + +} // end of namespace sd + +#endif + + diff --git a/sd/source/ui/inc/fuhhconv.hxx b/sd/source/ui/inc/fuhhconv.hxx new file mode 100755 index 000000000000..6bffd12f693c --- /dev/null +++ b/sd/source/ui/inc/fuhhconv.hxx @@ -0,0 +1,75 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SD_FUHHCONV_HXX +#define _SD_FUHHCONV_HXX + +#ifndef _SD_FUPOOR_HXX +#include "fupoor.hxx" +#endif + +namespace sd { + +class Outliner; + + +class FuHangulHanjaConversion : public FuPoor +{ + public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + + void StartConversion( sal_Int16 nSourceLanguage, sal_Int16 nTargetLanguage, + const Font *pTargetFont, sal_Int32 nOptions, sal_Bool bIsInteractive ); + + void StartChineseConversion(); + + void ConvertStyles( sal_Int16 nTargetLanguage, const Font *pTargetFont ); + + Outliner* GetOutliner() const { return pSdOutliner; } + + protected: + ~FuHangulHanjaConversion(); + + Outliner* pSdOutliner; + sal_Bool bOwnOutliner; + +private: + FuHangulHanjaConversion ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq ); + +}; + +#endif // _SD_FUHHCONV_HXX + + +} // end of namespace sd diff --git a/sd/source/ui/inc/fuinsert.hxx b/sd/source/ui/inc/fuinsert.hxx new file mode 100644 index 000000000000..e783c69b314b --- /dev/null +++ b/sd/source/ui/inc/fuinsert.hxx @@ -0,0 +1,119 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_INSERT_HXX +#define SD_FU_INSERT_HXX + +#include "fupoor.hxx" + +namespace sd { + +class FuInsertGraphic + : public FuPoor +{ +public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + virtual void DoExecute( SfxRequest& rReq ); + +private: + + FuInsertGraphic ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); +}; + + +/************************************************************************/ + +class FuInsertClipboard + : public FuPoor +{ +public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + virtual void DoExecute( SfxRequest& rReq ); + +private: + FuInsertClipboard ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); +}; + + +/************************************************************************/ + +class FuInsertOLE + : public FuPoor +{ + public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + virtual void DoExecute( SfxRequest& rReq ); + +private: + FuInsertOLE ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); +}; + +/************************************************************************/ + +class FuInsertAVMedia + : public FuPoor +{ +public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + virtual void DoExecute( SfxRequest& rReq ); + +private: + FuInsertAVMedia ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); +}; + + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/fuinsfil.hxx b/sd/source/ui/inc/fuinsfil.hxx new file mode 100755 index 000000000000..51964de71c54 --- /dev/null +++ b/sd/source/ui/inc/fuinsfil.hxx @@ -0,0 +1,70 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_INSERT_FILE_HXX +#define SD_FU_INSERT_FILE_HXX + +#include "fupoor.hxx" +#include <vector> + +class SfxMedium; +struct StyleRequestData; + +namespace sd { + +class FuInsertFile + : public FuPoor +{ +public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + virtual void DoExecute( SfxRequest& rReq ); + + static void GetSupportedFilterVector( ::std::vector< String >& rFilterVector ); + +private: + FuInsertFile ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); + + String aLayoutName; // Layoutname der aktuell eingefuegten Seite + String aFilterName; // gewaehlter Dateifilter + String aFile; // gewaehlter Dateiname + + void InsTextOrRTFinOlMode(SfxMedium* pMedium); + sal_Bool InsSDDinOlMode(SfxMedium* pMedium); + void InsTextOrRTFinDrMode(SfxMedium* pMedium); + sal_Bool InsSDDinDrMode(SfxMedium* pMedium); +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/fuline.hxx b/sd/source/ui/inc/fuline.hxx new file mode 100644 index 000000000000..32fd95a6f326 --- /dev/null +++ b/sd/source/ui/inc/fuline.hxx @@ -0,0 +1,60 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_LINE_HXX +#define SD_FU_LINE_HXX + +#include "fupoor.hxx" + +namespace sd { + +class FuLine + : public FuPoor +{ +public: + TYPEINFO(); + + virtual void Activate(); + virtual void Deactivate(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + virtual void DoExecute( SfxRequest& rReq ); + +private: + + FuLine ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/fulinend.hxx b/sd/source/ui/inc/fulinend.hxx new file mode 100644 index 000000000000..da8df27f5e0d --- /dev/null +++ b/sd/source/ui/inc/fulinend.hxx @@ -0,0 +1,60 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FULINE_END_HXX +#define SD_FULINE_END_HXX + +#include "fupoor.hxx" + +namespace sd { + +class FuLineEnd + : public FuPoor +{ +public: + TYPEINFO(); + + virtual void Activate(); + virtual void Deactivate(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + virtual void DoExecute( SfxRequest& rReq ); + +private: + + FuLineEnd ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/fulink.hxx b/sd/source/ui/inc/fulink.hxx new file mode 100644 index 000000000000..feea6e9d63c1 --- /dev/null +++ b/sd/source/ui/inc/fulink.hxx @@ -0,0 +1,58 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_LINK_HXX +#define SD_FU_LINK_HXX + +#include "fupoor.hxx" + +namespace sd { + +class FuLink + : public FuPoor +{ +public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + virtual void DoExecute( SfxRequest& rReq ); + +private: + + FuLink ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq ); +}; + +} // end of namespace sd + +#endif + + diff --git a/sd/source/ui/inc/fumeasur.hxx b/sd/source/ui/inc/fumeasur.hxx new file mode 100644 index 000000000000..e5a42d03731d --- /dev/null +++ b/sd/source/ui/inc/fumeasur.hxx @@ -0,0 +1,57 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_MEASURE_DLG_HXX +#define SD_FU_MEASURE_DLG_HXX + +#include "fupoor.hxx" + +namespace sd { + +class FuMeasureDlg + : public FuPoor +{ + public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + virtual void DoExecute( SfxRequest& rReq ); + +private: + + FuMeasureDlg ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/fumorph.hxx b/sd/source/ui/inc/fumorph.hxx new file mode 100755 index 000000000000..53c84487d266 --- /dev/null +++ b/sd/source/ui/inc/fumorph.hxx @@ -0,0 +1,80 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_MORPH_HXX +#define SD_FU_MORPH_HXX + +#include "fupoor.hxx" + +#include <math.h> + +/************************************************************************* +|* +\************************************************************************/ +class List; +namespace basegfx { + class B2DPolyPolygon; + class B2DPolygon; + class B2DPoint; +} + +namespace sd { + +class FuMorph + : public FuPoor +{ +public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + virtual void DoExecute( SfxRequest& rReq ); + +private: + FuMorph ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); + + void ImpInsertPolygons(List& rPolyPolyList3D, sal_Bool bAttributeFade, + const SdrObject* pObj1, const SdrObject* pObj2); + ::basegfx::B2DPolyPolygon* ImpCreateMorphedPolygon( + const ::basegfx::B2DPolyPolygon& rPolyPolyStart, + const ::basegfx::B2DPolyPolygon& rPolyPolyEnd, + double fMorphingFactor); + sal_Bool ImpMorphPolygons( + const ::basegfx::B2DPolyPolygon& rPolyPoly1, const ::basegfx::B2DPolyPolygon& rPolyPoly2, + const sal_uInt16 nSteps, List& rPolyPolyList3D); + void ImpAddPolys(::basegfx::B2DPolyPolygon& rSmaller, const ::basegfx::B2DPolyPolygon& rBigger); + void ImpEqualizePolyPointCount(::basegfx::B2DPolygon& rSmall, const ::basegfx::B2DPolygon& rBig); + sal_uInt32 ImpGetNearestIndex(const ::basegfx::B2DPolygon& rPoly, const ::basegfx::B2DPoint& rPos); +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/fuoaprms.hxx b/sd/source/ui/inc/fuoaprms.hxx new file mode 100644 index 000000000000..9d015727bc07 --- /dev/null +++ b/sd/source/ui/inc/fuoaprms.hxx @@ -0,0 +1,60 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_OBJECT_ANIMATION_PARAMETERS +#define SD_FU_OBJECT_ANIMATION_PARAMETERS + +#include "fupoor.hxx" + +namespace sd { + +class FuObjectAnimationParameters + : public FuPoor +{ +public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + virtual void DoExecute( SfxRequest& rReq ); + +private: + + FuObjectAnimationParameters ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); +}; + +} // end of namespace sd + +#endif + + + + diff --git a/sd/source/ui/inc/fuolbull.hxx b/sd/source/ui/inc/fuolbull.hxx new file mode 100644 index 000000000000..31ec06307ac0 --- /dev/null +++ b/sd/source/ui/inc/fuolbull.hxx @@ -0,0 +1,68 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_OUTLINE_BULLET_HXX +#define SD_FU_OUTLINE_BULLET_HXX + +#include "fupoor.hxx" + +class SdDrawDocument; +class SfxRequest; + +namespace sd { + +class View; +class ViewShell; +class Window; + +/************************************************************************* +|* +|* Bulletfunktionen im Outlinermodus +|* +\************************************************************************/ + +class FuOutlineBullet + : public FuPoor +{ +public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + virtual void DoExecute( SfxRequest& rReq ); + +private: + FuOutlineBullet ( + ViewShell* pViewShell, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/fuoltext.hxx b/sd/source/ui/inc/fuoltext.hxx new file mode 100755 index 000000000000..2ff04c77f922 --- /dev/null +++ b/sd/source/ui/inc/fuoltext.hxx @@ -0,0 +1,85 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_OUTLINE_TEXT_HXX +#define SD_FU_OUTLINE_TEXT_HXX + +#include "fuoutl.hxx" + +class SdDrawDocument; +class SfxRequest; + +namespace sd { + +class View; +class ViewShell; +class Window; + +/************************************************************************* +|* +|* Textfunktionen im Outlinermodus +|* +\************************************************************************/ +class FuOutlineText + : public FuOutline +{ +public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + + virtual sal_Bool KeyInput(const KeyEvent& rKEvt); + virtual sal_Bool MouseMove(const MouseEvent& rMEvt); + virtual sal_Bool MouseButtonUp(const MouseEvent& rMEvt); + virtual sal_Bool MouseButtonDown(const MouseEvent& rMEvt); + + virtual void DoCut(); + virtual void DoCopy(); + virtual void DoPaste(); + + virtual void Activate(); // Function aktivieren + virtual void Deactivate(); // Function deaktivieren + + /** Call this method when the text in the outliner (may) has changed. + It will invalidate some slots of the view frame and update the + preview in the slide sorter. + */ + void UpdateForKeyPress (const KeyEvent& rEvent); + +protected: + FuOutlineText ( + ViewShell* pViewShell, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); + +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/fuoutl.hxx b/sd/source/ui/inc/fuoutl.hxx new file mode 100755 index 000000000000..6b1674654ff1 --- /dev/null +++ b/sd/source/ui/inc/fuoutl.hxx @@ -0,0 +1,76 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_OUTLINE_HXX +#define SD_FU_OUTLINE_HXX + +#include "fupoor.hxx" + +class SdDrawDocument; +class SfxRequest; + + +namespace sd { + +class OutlineView; +class OutlineViewShell; +class View; +class ViewShell; +class Window; + +/************************************************************************* +|* +|* Basisklasse der Funktionen des Outlinemodus +|* +\************************************************************************/ + +class FuOutline + : public FuPoor +{ +public: + TYPEINFO(); + + virtual sal_Bool Command(const CommandEvent& rCEvt); + + virtual void ScrollStart(); + virtual void ScrollEnd(); + +protected: + FuOutline ( + ViewShell* pViewShell, + ::sd::Window* pWindow, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); + + OutlineViewShell* pOutlineViewShell; + OutlineView* pOutlineView; +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/fupage.hxx b/sd/source/ui/inc/fupage.hxx new file mode 100755 index 000000000000..a0cd7b4d2e0a --- /dev/null +++ b/sd/source/ui/inc/fupage.hxx @@ -0,0 +1,81 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_PAGE_HXX +#define SD_FU_PAGE_HXX + +#include "fupoor.hxx" + +class SfxItemSet; +class SdBackgroundObjUndoAction; +class SdPage; + +namespace sd { +class DrawViewShell; + +class FuPage + : public FuPoor +{ + public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + virtual void DoExecute( SfxRequest& rReq ); + + virtual void Activate(); // Function aktivieren + virtual void Deactivate(); // Function deaktivieren + + const SfxItemSet* ExecuteDialog( Window* pParent ); + +protected: + virtual ~FuPage (void); + +private: + FuPage ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq ); + + void ApplyItemSet( const SfxItemSet* pArgs ); + + SfxRequest& mrReq; + const SfxItemSet* mpArgs; + SdBackgroundObjUndoAction* mpBackgroundObjUndoAction; + Size maSize; + bool mbPageBckgrdDeleted; + bool mbMasterPage; + bool mbDisplayBackgroundTabPage; + SdPage* mpPage; + DrawViewShell* mpDrawViewShell; +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/fuparagr.hxx b/sd/source/ui/inc/fuparagr.hxx new file mode 100644 index 000000000000..0e61aaff28c8 --- /dev/null +++ b/sd/source/ui/inc/fuparagr.hxx @@ -0,0 +1,59 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_PARAGRAPH_HXX +#define SD_FU_PARAGRAPH_HXX + +#include "fupoor.hxx" + +namespace sd { + +class FuParagraph + : public FuPoor +{ +public: + TYPEINFO(); + + virtual void Activate(); + virtual void Deactivate(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + virtual void DoExecute( SfxRequest& rReq ); + +private: + FuParagraph ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); +}; + +} // end of namespace + +#endif + diff --git a/sd/source/ui/inc/fupoor.hxx b/sd/source/ui/inc/fupoor.hxx new file mode 100755 index 000000000000..38469208b44e --- /dev/null +++ b/sd/source/ui/inc/fupoor.hxx @@ -0,0 +1,212 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_POOR_HXX +#define SD_FU_POOR_HXX + +#include <tools/rtti.hxx> +#include <vcl/timer.hxx> +#include <tools/link.hxx> +#include <tools/gen.hxx> +#include <vcl/event.hxx> +#include <rtl/ref.hxx> + +#ifndef _SALHELPER_SIMPLEREFERENCECOMPONENT_HXX_ +#include "helper/simplereferencecomponent.hxx" +#endif + +class SdDrawDocument; +class SfxRequest; +class Dialog; +class SdrObject; + +namespace sd { + +class DrawDocShell; +class View; +class ViewShell; +class Window; + +/************************************************************************* +|* +|* Basisklasse fuer alle Funktionen +|* +\************************************************************************/ + +class FuPoor : public SimpleReferenceComponent +{ +public: + static const int HITPIX = 2; // Hit-Toleranz in Pixel + static const int DRGPIX = 2; // Drag MinMove in Pixel + + TYPEINFO(); + + virtual void DoExecute( SfxRequest& rReq ); + + // #95491# see member + void SetMouseButtonCode(sal_uInt16 nNew) { if(nNew != mnCode) mnCode = nNew; } + sal_uInt16 GetMouseButtonCode() const { return mnCode; } + + DrawDocShell* GetDocSh() { return mpDocSh; } + SdDrawDocument* GetDoc() { return mpDoc; } + + virtual void DoCut(); + virtual void DoCopy(); + virtual void DoPaste(); + + // Mouse- & Key-Events; Returnwert=sal_True: Event wurde bearbeitet + virtual sal_Bool KeyInput(const KeyEvent& rKEvt); + virtual sal_Bool MouseMove(const MouseEvent& ); + virtual sal_Bool MouseButtonUp(const MouseEvent& rMEvt); + + // #95491# moved from inline to *.cxx + virtual sal_Bool MouseButtonDown(const MouseEvent& rMEvt); + + virtual sal_Bool Command(const CommandEvent& rCEvt); + virtual sal_Bool RequestHelp(const HelpEvent& rHEvt); + virtual void Paint(const Rectangle&, ::sd::Window* ); + virtual void ReceiveRequest(SfxRequest& rReq); + + virtual void Activate(); // Function aktivieren + virtual void Deactivate(); // Function deaktivieren + + virtual void ScrollStart() {} // diese Funktionen werden von + virtual void ScrollEnd() {} // ForceScroll aufgerufen + + void SetWindow(::sd::Window* pWin) { mpWindow = pWin; } + + // #97016# II + virtual void SelectionHasChanged(); + + sal_uInt16 GetSlotID() const { return( nSlotId ); } + sal_uInt16 GetSlotValue() const { return( nSlotValue ); } + + void SetNoScrollUntilInside(sal_Bool bNoScroll = sal_True) + { bNoScrollUntilInside = bNoScroll; } + + void StartDelayToScrollTimer (); + + // #97016# + virtual SdrObject* CreateDefaultObject(const sal_uInt16 nID, const Rectangle& rRectangle); + + /** is called when the currenct function should be aborted. <p> + This is used when a function gets a KEY_ESCAPE but can also + be called directly. + + @returns true if a active function was aborted + */ + virtual bool cancel(); + + // #i33136# + /** Decide if the object to be created should be created + orthogonal. Default implementation uses nSlotID + to decide. May be overloaded to use other criterias + for this decision + + @returns true if the to be created object should be orthogonal. + */ + virtual bool doConstructOrthogonal() const; + +protected: + /** + @param pViewSh + May be NULL. + */ + FuPoor (ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); + virtual ~FuPoor (void); + + DECL_LINK( DelayHdl, Timer * ); + + void ImpForceQuadratic(Rectangle& rRect); + + /** Switch to another layer. The layer to switch to is specified by an + offset relative to the active layer. With respect to the layer bar + control at the lower left of the document window positive values + move to the right and negative values move to the left. + + <p>Switching the layer is independant of the view's layer mode. The + layers are switched even when the layer mode is turned off and the + layer control is not visible.</p> + @param nOffset + If the offset is positive skip that many layers in selecting the + next layer. If it is negative then select a previous one. An + offset or zero does not change the current layer. If the + resulting index lies outside the valid range of indices then it + is set to either the minimal or maximal valid index, whitchever + is nearer. + */ + void SwitchLayer (sal_Int32 nOffset); + + ::sd::View* mpView; + ViewShell* mpViewShell; + ::sd::Window* mpWindow; + DrawDocShell* mpDocSh; + SdDrawDocument* mpDoc; + + sal_uInt16 nSlotId; + sal_uInt16 nSlotValue; + + Dialog* pDialog; + + Timer aScrollTimer; // fuer Autoscrolling + DECL_LINK( ScrollHdl, Timer * ); + void ForceScroll(const Point& aPixPos); + + Timer aDragTimer; // fuer Drag&Drop + DECL_LINK( DragHdl, Timer * ); + sal_Bool bIsInDragMode; + Point aMDPos; // Position von MouseButtonDown + + // Flag, um AutoScrolling zu verhindern, bis von ausserhalb in das + // Fenster hinein gedragt wurde + sal_Bool bNoScrollUntilInside; + + // Timer um das scrolling zu verzoegern, wenn aus dem fenster + // herausgedraggt wird (ca. 1 sec.) + Timer aDelayToScrollTimer; // fuer Verzoegerung bis scroll + sal_Bool bScrollable; + sal_Bool bDelayActive; + sal_Bool bFirstMouseMove; + + // #95491# member to hold state of the mouse buttons for creation + // of own MouseEvents (like in ScrollHdl) + +private: + sal_uInt16 mnCode; + +}; + +typedef rtl::Reference< FuPoor > FunctionReference; + +} // end of namespace sd + +#endif // _SD_FUPOOR_HXX + diff --git a/sd/source/ui/inc/fuprlout.hxx b/sd/source/ui/inc/fuprlout.hxx new file mode 100644 index 000000000000..9eb092a5bfa3 --- /dev/null +++ b/sd/source/ui/inc/fuprlout.hxx @@ -0,0 +1,64 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_PRESENTATION_LAYOUT_HXX +#define SD_FU_PRESENTATION_LAYOUT_HXX + +#include "fupoor.hxx" + +class SdDrawDocument; +class SfxRequest; +class SfxStyleSheetBasePool; + +namespace sd { + +class View; +class ViewShell; +class Window; + +class FuPresentationLayout + : public FuPoor +{ +public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + virtual void DoExecute( SfxRequest& rReq ); + +private: + FuPresentationLayout ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/fuprobjs.hxx b/sd/source/ui/inc/fuprobjs.hxx new file mode 100644 index 000000000000..8cb706683d43 --- /dev/null +++ b/sd/source/ui/inc/fuprobjs.hxx @@ -0,0 +1,64 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_PRESENTATION_OBJECTS_HXX +#define SD_FU_PRESENTATION_OBJECTS_HXX + +#include "fupoor.hxx" + +class SdDrawDocument; +class SfxRequest; + +namespace sd { + +class View; +class ViewShell; +class Window; + + +class FuPresentationObjects + : public FuPoor +{ +public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + virtual void DoExecute( SfxRequest& rReq ); + +private: + FuPresentationObjects ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/fuscale.hxx b/sd/source/ui/inc/fuscale.hxx new file mode 100644 index 000000000000..f6355b04ebb7 --- /dev/null +++ b/sd/source/ui/inc/fuscale.hxx @@ -0,0 +1,56 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_SCALE_HXX +#define SD_FU_SCALE_HXX + +#include "fupoor.hxx" + +namespace sd { + +class FuScale + : public FuPoor +{ +public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + virtual void DoExecute( SfxRequest& rReq ); + +private: + FuScale ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/fusearch.hxx b/sd/source/ui/inc/fusearch.hxx new file mode 100755 index 000000000000..661280e4652c --- /dev/null +++ b/sd/source/ui/inc/fusearch.hxx @@ -0,0 +1,72 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_SEARCH_HXX +#define SD_FU_SEARCH_HXX + +#include "fupoor.hxx" + +class SvxSearchItem; + +namespace sd { + +class Outliner; + +class FuSearch + : public FuPoor +{ +public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + virtual void DoExecute( SfxRequest& rReq ); + + void SearchAndReplace( const SvxSearchItem* pSearchItem ); + + ::sd::Outliner* GetOutliner() const { return pSdOutliner; } + +protected: + virtual ~FuSearch (void); + + ::sd::Outliner* pSdOutliner; + sal_Bool bOwnOutliner; + +private: + FuSearch ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); + +}; + +} // end of namespace sd + +#endif + + diff --git a/sd/source/ui/inc/fusel.hxx b/sd/source/ui/inc/fusel.hxx new file mode 100755 index 000000000000..e0d4c72ef28c --- /dev/null +++ b/sd/source/ui/inc/fusel.hxx @@ -0,0 +1,112 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_SELECTION_HXX +#define SD_FU_SELECTION_HXX + +#include "fudraw.hxx" + +#include <com/sun/star/media/XPlayer.hpp> + +class SdrHdl; +class SdrObject; +class Sound; + + +namespace sd { + +class FuSelection + : public FuDraw +{ +public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + virtual void DoExecute( SfxRequest& rReq ); + + // Mouse- & Key-Events + virtual sal_Bool KeyInput(const KeyEvent& rKEvt); + virtual sal_Bool MouseMove(const MouseEvent& rMEvt); + virtual sal_Bool MouseButtonUp(const MouseEvent& rMEvt); + virtual sal_Bool MouseButtonDown(const MouseEvent& rMEvt); + + virtual void Activate(); // Function aktivieren + virtual void Deactivate(); // Function deaktivieren + + virtual void SelectionHasChanged(); + + void SetEditMode(sal_uInt16 nMode); + sal_uInt16 GetEditMode() { return nEditMode; } + + sal_Bool AnimateObj(SdrObject* pObj, const Point& rPos); + + /** is called when the currenct function should be aborted. <p> + This is used when a function gets a KEY_ESCAPE but can also + be called directly. + + @returns true if a active function was aborted + */ + virtual bool cancel(); + +protected: + FuSelection (ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); + + virtual ~FuSelection(); + + sal_Bool bTempRotation; + sal_Bool bSelectionChanged; + sal_Bool bHideAndAnimate; + SdrHdl* pHdl; + sal_Bool bSuppressChangesOfSelection; + sal_Bool bMirrorSide0; + sal_uInt16 nEditMode; + ::com::sun::star::uno::Reference< ::com::sun::star::media::XPlayer > mxPlayer; + +private: + /** This pointer stores a canidate for assigning a style in the water + can mode between mouse button down and mouse button up. + */ + SdrObject* pWaterCanCandidate; + + /** Find the object under the given test point without selecting it. + @param rTestPoint + The coordinates at which to search for a shape. + @return + The shape at the test point. When there is no shape at this + position then NULL is returned. + */ + SdrObject* pickObject (const Point& rTestPoint); +}; + +} // end of namespace sd + +#endif // _SD_FUSEL_HXX + diff --git a/sd/source/ui/inc/fusldlg.hxx b/sd/source/ui/inc/fusldlg.hxx new file mode 100644 index 000000000000..239f950c1108 --- /dev/null +++ b/sd/source/ui/inc/fusldlg.hxx @@ -0,0 +1,55 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_SLIDE_SHOW_DLG_HXX +#define SD_FU_SLIDE_SHOW_DLG_HXX + +#include "fupoor.hxx" + +namespace sd { + +class FuSlideShowDlg + : public FuPoor +{ +public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + virtual void DoExecute( SfxRequest& rReq ); + +private: + FuSlideShowDlg ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/fuslhide.hxx b/sd/source/ui/inc/fuslhide.hxx new file mode 100644 index 000000000000..4858696e41b1 --- /dev/null +++ b/sd/source/ui/inc/fuslhide.hxx @@ -0,0 +1,63 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_SLIDE_HIDE_HXX +#define SD_FU_SLIDE_HIDE_HXX + +#include "fuslid.hxx" + +namespace sd { + +/************************************************************************* +|* +|* selektierte Dias in der Show zeigen / nicht zeigen +|* +\************************************************************************/ + +class FuSlideHide + : public FuSlide +{ +public: + TYPEINFO(); + + static FunctionReference Create( SlideViewShell* pViewSh, ::sd::Window* pWin, SlideView* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + virtual void DoExecute( SfxRequest& rReq ); + +protected: + FuSlideHide ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); + virtual ~FuSlideHide (void); +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/fuslid.hxx b/sd/source/ui/inc/fuslid.hxx new file mode 100755 index 000000000000..e97ceddd548b --- /dev/null +++ b/sd/source/ui/inc/fuslid.hxx @@ -0,0 +1,77 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_SLIDE_HXX +#define SD_FU_SLIDE_HXX + +#include "fupoor.hxx" + +class SdDrawDocument; + +namespace sd { + +class SlideView; +class SlideViewShell; +class Window; + + +/************************************************************************* +|* +|* Basisklasse der Funktionen des Diamodus +|* +\************************************************************************/ + +class FuSlide + : public FuPoor +{ +public: + TYPEINFO(); + + static FunctionReference Create( SlideViewShell* pViewSh, ::sd::Window* pWin, SlideView* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + + virtual sal_Bool MouseMove(const MouseEvent& rMEvt); + virtual sal_Bool MouseButtonUp(const MouseEvent& rMEvt); + virtual sal_Bool MouseButtonDown(const MouseEvent& rMEvt); + + virtual void ScrollStart(); + virtual void ScrollEnd(); + +protected: + FuSlide ( + SlideViewShell* pViewSh, + ::sd::Window* pWin, + SlideView* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); + + SlideViewShell* pSlViewShell; + SlideView* pSlView; +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/fuslsel.hxx b/sd/source/ui/inc/fuslsel.hxx new file mode 100755 index 000000000000..16cf5257ee2c --- /dev/null +++ b/sd/source/ui/inc/fuslsel.hxx @@ -0,0 +1,120 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_SLIDE_SELECTION_HXX +#define SD_FU_SLIDE_SELECTION_HXX + +#include "fuslid.hxx" +#include <tools/list.hxx> + +class SdDrawDocument; +class Sound; + +namespace sd { + +class SlideView; +class SlideViewShell; +class Window; + +struct FSS_IsShowingEffectInfo +{ + sal_Bool bIsShowingEffect; // sal_True while we show a fade effect one the slide view + sal_Bool bDisposed; // sal_True if the FuSlideSelection was deleted during fade effect +}; + + +class FuSlideSelection + : public FuSlide +{ +public: + TYPEINFO(); + + static FunctionReference Create( SlideViewShell* pViewSh, ::sd::Window* pWin, SlideView* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + virtual void DoExecute( SfxRequest& rReq ); + + // Mouse- & Key-Events + virtual sal_Bool KeyInput(const KeyEvent& rKEvt); + virtual sal_Bool MouseMove(const MouseEvent& rMEvt); + virtual sal_Bool MouseButtonUp(const MouseEvent& rMEvt); + virtual sal_Bool MouseButtonDown(const MouseEvent& rMEvt); + virtual void Paint(const Rectangle& rRect, ::sd::Window* pWin); + + virtual void Activate(); // Function aktivieren + virtual void Deactivate(); // Function deaktivieren + + virtual void ScrollStart(); + virtual void ScrollEnd(); + + sal_Bool IsShowingEffect() const { return pIsShowingEffectInfo && pIsShowingEffectInfo->bIsShowingEffect; } + + /** is called when the currenct function should be aborted. <p> + This is used when a function gets a KEY_ESCAPE but can also + be called directly. + + @returns true if a active function was aborted + */ + virtual bool cancel(); + +protected: + FuSlideSelection ( + SlideViewShell* pViewSh, + ::sd::Window* pWin, + SlideView* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); + virtual ~FuSlideSelection (void); + +private: + sal_Bool bSubstShown; + sal_Bool bPageHit; + List aSubstList; // Liste mit Ertsatzdarstellungen + Point aDragPos; // hier wird die Seite angefasst + sal_Bool bDragSelection; + Point aDragSelRectAnchor; // fester Punkt des Selektionsrechtecks + Rectangle aDragSelRect; + Point aPosOfInsertMarker; + FSS_IsShowingEffectInfo* pIsShowingEffectInfo; + + void DrawInsertMarker(sal_Bool bShow); + Point CalcPosOfInsertMarker(const Point& rPoint); + + sal_uInt16 GetTargetPage(const Point& rPoint) const; + + void CreateSubst(); + void DeleteSubst(); + void DrawSubst() const; + void ChangeSubstPos(const Point& rVector); + void DrawDragSelectionRect() const; + void ShowEffect(sal_uInt16 nPageNo); + + DECL_LINK( DragSlideHdl, Timer* ); +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/fusnapln.hxx b/sd/source/ui/inc/fusnapln.hxx new file mode 100644 index 000000000000..cc5efaba990c --- /dev/null +++ b/sd/source/ui/inc/fusnapln.hxx @@ -0,0 +1,58 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_SNAP_LINE_HXX +#define SD_FU_SNAP_LINE_HXX + +#include "fupoor.hxx" + +namespace sd { + +class FuSnapLine + : public FuPoor +{ +public: + TYPEINFO(); + + virtual void Activate(); + virtual void Deactivate(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + virtual void DoExecute( SfxRequest& rReq ); + +private: + FuSnapLine ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/fusumry.hxx b/sd/source/ui/inc/fusumry.hxx new file mode 100644 index 000000000000..6515977026c6 --- /dev/null +++ b/sd/source/ui/inc/fusumry.hxx @@ -0,0 +1,56 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_SUMMARY_PAGE_HXX +#define SD_FU_SUMMARY_PAGE_HXX + +#include "fupoor.hxx" + +namespace sd { + +class FuSummaryPage + : public FuPoor +{ +public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + virtual void DoExecute( SfxRequest& rReq ); + +private: + FuSummaryPage ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/futempl.hxx b/sd/source/ui/inc/futempl.hxx new file mode 100644 index 000000000000..40bf5936cda3 --- /dev/null +++ b/sd/source/ui/inc/futempl.hxx @@ -0,0 +1,59 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_TEMPLATE_HXX +#define SD_FU_TEMPLATE_HXX + +#include "fupoor.hxx" + +namespace sd { + +class FuTemplate + : public FuPoor +{ +public: + TYPEINFO(); + + virtual void Activate(); + virtual void Deactivate(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + virtual void DoExecute( SfxRequest& rReq ); + +private: + FuTemplate ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/futext.hxx b/sd/source/ui/inc/futext.hxx new file mode 100755 index 000000000000..6784dbb175f7 --- /dev/null +++ b/sd/source/ui/inc/futext.hxx @@ -0,0 +1,116 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_TEXT_HXX +#define SD_FU_TEXT_HXX + +#ifndef _EDITDATA_HXX +#include <editeng/editdata.hxx> +#endif +#include "fuconstr.hxx" +#include <svx/svdotext.hxx> + +struct StyleRequestData; +class SdrTextObj; +class OutlinerParaObject; +class FontList; +class OutlinerView; + +namespace sd { + +/************************************************************************* +|* +|* Basisklasse fuer Textfunktionen +|* +\************************************************************************/ + +class FuText + : public FuConstruct +{ +public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + virtual void DoExecute( SfxRequest& rReq ); + + virtual sal_Bool KeyInput(const KeyEvent& rKEvt); + virtual sal_Bool MouseMove(const MouseEvent& rMEvt); + virtual sal_Bool MouseButtonUp(const MouseEvent& rMEvt); + virtual sal_Bool MouseButtonDown(const MouseEvent& rMEvt); + virtual sal_Bool Command(const CommandEvent& rCEvt); + virtual sal_Bool RequestHelp(const HelpEvent& rHEvt); + virtual void ReceiveRequest(SfxRequest& rReq); + virtual void DoubleClick(const MouseEvent& rMEvt); + + virtual void Activate(); // Function aktivieren + virtual void Deactivate(); // Function deaktivieren + + void SetInEditMode(const MouseEvent& rMEvt, sal_Bool bQuickDrag); + sal_Bool DeleteDefaultText(); + SdrTextObj* GetTextObj() { return static_cast< SdrTextObj* >( mxTextObj.get() ); } + + DECL_LINK(SpellError, void* ); + + // #97016# + virtual SdrObject* CreateDefaultObject(const sal_uInt16 nID, const Rectangle& rRectangle); + + /** is called when the currenct function should be aborted. <p> + This is used when a function gets a KEY_ESCAPE but can also + be called directly. + + @returns true if a active function was aborted + */ + virtual bool cancel(); + + static void ChangeFontSize( bool, OutlinerView*, const FontList*, ::sd::View* ); + +protected: + FuText (ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); + + virtual void disposing(); + + SdrObjectWeakRef mxTextObj; + Link aOldLink; + sal_Bool bFirstObjCreated; + + SfxRequest& rRequest; + +private: + // #97016# + void ImpSetAttributesForNewTextObject(SdrTextObj* pTxtObj); + void ImpSetAttributesFitToSize(SdrTextObj* pTxtObj); + void ImpSetAttributesFitToSizeVertical(SdrTextObj* pTxtObj); + void ImpSetAttributesFitCommon(SdrTextObj* pTxtObj); +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/futhes.hxx b/sd/source/ui/inc/futhes.hxx new file mode 100644 index 000000000000..07aadf386b05 --- /dev/null +++ b/sd/source/ui/inc/futhes.hxx @@ -0,0 +1,57 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_THESAURUS_HXX +#define SD_FU_THESAURUS_HXX + +#include "fupoor.hxx" + +namespace sd { + +class FuThesaurus + : public FuPoor +{ +public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + virtual void DoExecute( SfxRequest& rReq ); + +private: + FuThesaurus ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); +}; + +} // end of namespace sd + +#endif + + diff --git a/sd/source/ui/inc/futransf.hxx b/sd/source/ui/inc/futransf.hxx new file mode 100755 index 000000000000..85041334c7f0 --- /dev/null +++ b/sd/source/ui/inc/futransf.hxx @@ -0,0 +1,59 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_TRANSFORM_HXX +#define SD_FU_TRANSFORM_HXX + +#ifndef _SVX_RETENUM_HXX +#include <svx/rectenum.hxx> +#endif +#include "fupoor.hxx" + +namespace sd { + +class FuTransform + : public FuPoor +{ +public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + virtual void DoExecute( SfxRequest& rReq ); + +private: + FuTransform ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/futxtatt.hxx b/sd/source/ui/inc/futxtatt.hxx new file mode 100644 index 000000000000..f766d32d048d --- /dev/null +++ b/sd/source/ui/inc/futxtatt.hxx @@ -0,0 +1,56 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_TEXT_ATTR_DLG_HXX +#define SD_FU_TEXT_ATTR_DLG_HXX + +#include "fupoor.hxx" + +namespace sd { + +class FuTextAttrDlg + : public FuPoor +{ + public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + virtual void DoExecute( SfxRequest& rReq ); + +private: + FuTextAttrDlg ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/fuvect.hxx b/sd/source/ui/inc/fuvect.hxx new file mode 100644 index 000000000000..406bea288bea --- /dev/null +++ b/sd/source/ui/inc/fuvect.hxx @@ -0,0 +1,57 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_VECTORIZE_HXX +#define SD_FU_VECTORIZE_HXX + +#include "fupoor.hxx" + +namespace sd { + +class FuVectorize + : public FuPoor +{ +public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + virtual void DoExecute( SfxRequest& rReq ); + +private: + + FuVectorize ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/fuzoom.hxx b/sd/source/ui/inc/fuzoom.hxx new file mode 100755 index 000000000000..b2436639336b --- /dev/null +++ b/sd/source/ui/inc/fuzoom.hxx @@ -0,0 +1,79 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_FU_ZOOM_HXX +#define SD_FU_ZOOM_HXX + +#ifndef _SV_POINTR_HXX //autogen +#include <vcl/pointr.hxx> +#endif +#include "fupoor.hxx" + +namespace sd { + +extern sal_uInt16 SidArrayZoom[]; + +class FuZoom + : public FuPoor +{ +public: + TYPEINFO(); + + static FunctionReference Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); + + // Mouse- & Key-Events + virtual sal_Bool MouseMove(const MouseEvent& rMEvt); + virtual sal_Bool MouseButtonUp(const MouseEvent& rMEvt); + virtual sal_Bool MouseButtonDown(const MouseEvent& rMEvt); + + virtual void Activate(); // Function aktivieren + virtual void Deactivate(); // Function deaktivieren + +protected: + virtual ~FuZoom (void); + + Point aBeginPosPix; + Point aBeginPos; + Point aEndPos; + Rectangle aZoomRect; + sal_Bool bVisible; + sal_Bool bStartDrag; + Pointer aPtr; + +private: + FuZoom ( + ViewShell* pViewSh, + ::sd::Window* pWin, + ::sd::View* pView, + SdDrawDocument* pDoc, + SfxRequest& rReq); +}; + +} // end of namespace sd + +#endif + diff --git a/sd/source/ui/inc/gluectrl.hxx b/sd/source/ui/inc/gluectrl.hxx new file mode 100755 index 000000000000..f2fbe1ab307a --- /dev/null +++ b/sd/source/ui/inc/gluectrl.hxx @@ -0,0 +1,76 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_GLUECTRL_HXX +#define SD_GLUECTRL_HXX + +#include <vcl/lstbox.hxx> +#include <sfx2/tbxctrl.hxx> + +/************************************************************************* +|* +|* GluePointEscDirLB +|* +\************************************************************************/ +class GlueEscDirLB : public ListBox +{ +private: + ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > m_xFrame; +public: + GlueEscDirLB( Window* pParent, + const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame ); + ~GlueEscDirLB(); + + virtual void Select(); + + void Fill(); +}; + +/************************************************************************* +|* +|* Toolbox-Controller fuer Klebepunkte-Austrittsrichtung +|* +\************************************************************************/ + +class SdTbxCtlGlueEscDir: public SfxToolBoxControl +{ +private: + sal_uInt16 GetEscDirPos( sal_uInt16 nEscDir ); + +public: + virtual void StateChanged( sal_uInt16 nSId, SfxItemState eState, + const SfxPoolItem* pState ); + virtual Window* CreateItemWindow( Window *pParent ); + + SFX_DECL_TOOLBOX_CONTROL(); + + SdTbxCtlGlueEscDir( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx ); + ~SdTbxCtlGlueEscDir() {} +}; + +#endif // SD_GLUECTRL_HXX + diff --git a/sd/source/ui/inc/headerfooterdlg.hrc b/sd/source/ui/inc/headerfooterdlg.hrc new file mode 100644 index 000000000000..d79874d42faa --- /dev/null +++ b/sd/source/ui/inc/headerfooterdlg.hrc @@ -0,0 +1,55 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#define FL_INCLUDE_ON_PAGE 1 +#define CB_DATETIME 2 +#define RB_DATETIME_FIXED 3 +#define TB_DATETIME_FIXED 4 +#define RB_DATETIME_AUTOMATIC 5 +#define CB_DATETIME_FORMAT 6 +#define FT_DATETIME_LANGUAGE 7 +#define CB_DATETIME_LANGUAGE 8 +#define FL_FOOTER 9 +#define CB_FOOTER 10 +#define FT_FOOTER 11 +#define TB_FOOTER_FIXED 12 +#define FL_SLIDENUMBER 13 +#define CB_SLIDENUMBER 14 +#define FL_NOTONTITLE 15 +#define CB_NOTONTITLE 16 +#define BT_APPLYTOALL 17 +#define BT_APPLY 18 +#define BT_CANCEL 19 +#define BT_HELP 20 +#define FL_HEADER 21 +#define CB_HEADER 22 +#define FT_HEADER 23 +#define TB_HEADER_FIXED 24 +#define FL_DATETIME 25 +#define CT_PREVIEW 26 +#define STR_PAGE_NUMBER 27 +#define STR_INCLUDE_ON_PAGE 28 diff --git a/sd/source/ui/inc/headerfooterdlg.hxx b/sd/source/ui/inc/headerfooterdlg.hxx new file mode 100755 index 000000000000..fa0c4d9282c0 --- /dev/null +++ b/sd/source/ui/inc/headerfooterdlg.hxx @@ -0,0 +1,85 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef _SD_HEADERFOOTER_DIALOG_HXX +#define _SD_HEADERFOOTER_DIALOG_HXX + +#include <vcl/tabdlg.hxx> +#ifndef _SV_BUTTON_HXX //autogen +#include <vcl/button.hxx> +#endif +#include <vcl/tabctrl.hxx> +#include <vcl/tabpage.hxx> + +#include "headerfooterdlg.hrc" +#include "sdpage.hxx" + +class SfxObjectShell; +class SdUndoGroup; + +namespace sd +{ +class ViewShell; + +class HeaderFooterTabPage; + +class HeaderFooterDialog : public TabDialog +{ +private: + DECL_LINK( ActivatePageHdl, TabControl * ); + DECL_LINK( DeactivatePageHdl, TabControl * ); + + TabControl maTabCtrl; + + HeaderFooterTabPage* mpSlideTabPage; + HeaderFooterTabPage* mpNotesHandoutsTabPage; + + HeaderFooterSettings maSlideSettings; + HeaderFooterSettings maNotesHandoutSettings; + bool mbNotOnTitle; + + SdDrawDocument* mpDoc; + SdPage* mpCurrentPage; + ViewShell* mpViewShell; + + void apply( bool bToAll, bool bForceSlides ); + void change( SdUndoGroup* pUndoGroup, SdPage* pPage, const HeaderFooterSettings& rNewSettings ); + +public: + HeaderFooterDialog( ViewShell* pViewShell, ::Window* pParent, SdDrawDocument* pDoc, SdPage* pCurrentPage ); + ~HeaderFooterDialog(); + + void ApplyToAll( TabPage* pPage ); + void Apply( TabPage* pPage ); + void Cancel( TabPage* pPage ); + + virtual short Execute(); +}; + +} + +#endif + diff --git a/sd/source/ui/inc/ins_paste.hrc b/sd/source/ui/inc/ins_paste.hrc new file mode 100644 index 000000000000..500b152c08c8 --- /dev/null +++ b/sd/source/ui/inc/ins_paste.hrc @@ -0,0 +1,36 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#define DLG_INSERT_PASTE 678 + +#define BTN_OK 1 +#define BTN_CANCEL 1 +#define BTN_HELP 1 + +#define FL_POSITION 1 +#define RB_BEFORE 1 +#define RB_AFTER 2 diff --git a/sd/source/ui/inc/ins_paste.hxx b/sd/source/ui/inc/ins_paste.hxx new file mode 100755 index 000000000000..d2aacd9d992e --- /dev/null +++ b/sd/source/ui/inc/ins_paste.hxx @@ -0,0 +1,59 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SD_INS_PASTE_HXX_ +#define _SD_INS_PASTE_HXX_ + +#include <vcl/button.hxx> +#include <vcl/fixed.hxx> +#include <vcl/dialog.hxx> +#include "sdresid.hxx" + +// -------------------- +// - SdInsertPasteDlg - +// -------------------- + +class SdInsertPasteDlg : public ModalDialog +{ +private: + + FixedLine aFlPosition; + RadioButton aRbBefore; + RadioButton aRbAfter; + OKButton aBtnOK; + CancelButton aBtnCancel; + HelpButton aBtnHelp; + +public: + + SdInsertPasteDlg( Window* pWindow ); + ~SdInsertPasteDlg(); + + sal_Bool IsInsertBefore() const; +}; + +#endif // _SD_INS_PASTE_HXX_ diff --git a/sd/source/ui/inc/inspagob.hrc b/sd/source/ui/inc/inspagob.hrc new file mode 100644 index 000000000000..bba29081f721 --- /dev/null +++ b/sd/source/ui/inc/inspagob.hrc @@ -0,0 +1,33 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#define DLG_INSERT_PAGES_OBJS 938 +#define BTN_OK 1 +#define BTN_CANCEL 1 +#define BTN_HELP 1 +#define LB_TREE 1 +#define CBX_LINK 1 +#define CBX_CHECK_MASTERS 2 diff --git a/sd/source/ui/inc/inspagob.hxx b/sd/source/ui/inc/inspagob.hxx new file mode 100755 index 000000000000..3229d29a3c90 --- /dev/null +++ b/sd/source/ui/inc/inspagob.hxx @@ -0,0 +1,71 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SD_INSPAGOB_HXX +#define _SD_INSPAGOB_HXX + +#ifndef _SV_BUTTON_HXX //autogen +#include <vcl/button.hxx> +#endif +#include <vcl/dialog.hxx> +#include "sdtreelb.hxx" + +class SdDrawDocument; + +//------------------------------------------------------------------------ + +class SdInsertPagesObjsDlg : public ModalDialog +{ +private: + SdPageObjsTLB aLbTree; + CheckBox aCbxLink; + CheckBox aCbxMasters; + OKButton aBtnOk; + CancelButton aBtnCancel; + HelpButton aBtnHelp; + + SfxMedium* pMedium; + const SdDrawDocument* mpDoc; + const String& rName; + + void Reset(); + DECL_LINK( SelectObjectHdl, void * ); + +public: + SdInsertPagesObjsDlg( Window* pParent, + const SdDrawDocument* pDoc, + SfxMedium* pSfxMedium, + const String& rFileName ); + ~SdInsertPagesObjsDlg(); + + List* GetList( sal_uInt16 nType ); + sal_Bool IsLink(); + sal_Bool IsRemoveUnnessesaryMasterPages() const; +}; + + +#endif // _SD_INSPAGOB_HXX diff --git a/sd/source/ui/inc/layeroptionsdlg.hrc b/sd/source/ui/inc/layeroptionsdlg.hrc new file mode 100644 index 000000000000..63bb1b4105e0 --- /dev/null +++ b/sd/source/ui/inc/layeroptionsdlg.hrc @@ -0,0 +1,44 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include <sfx2/sfx.hrc> + +#define DLG_INSERT_LAYER 259 + +#define FT_NAME 1 +#define EDT_NAME 2 +#define FT_TITLE 3 +#define EDT_TITLE 4 +#define FT_DESCRIPTION 5 +#define EDT_DESCRIPTION 6 +#define CBX_VISIBLE 7 +#define CBX_PRINTABLE 8 +#define CBX_LOCKED 9 +#define FL_SEPARATOR_B 10 + +#define BTN_HELP 1 +#define BTN_OK 1 +#define BTN_CANCEL 1 diff --git a/sd/source/ui/inc/layeroptionsdlg.hxx b/sd/source/ui/inc/layeroptionsdlg.hxx new file mode 100644 index 000000000000..a2aefd9e6f2a --- /dev/null +++ b/sd/source/ui/inc/layeroptionsdlg.hxx @@ -0,0 +1,67 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + + +#ifndef _SD_LAYER_DLG_HXX_ +#define _SD_LAYER_DLG_HXX_ + +#include <vcl/edit.hxx> +#include <vcl/fixed.hxx> +#include <vcl/dialog.hxx> +#include <vcl/button.hxx> +#include <svtools/svmedit.hxx> +#include "sdresid.hxx" +#include "strings.hrc" + +class SfxItemSet; + +class SdInsertLayerDlg : public ModalDialog +{ +private: + FixedText maFtName; + Edit maEdtName; + FixedText maFtTitle; + Edit maEdtTitle; + FixedText maFtDesc; + MultiLineEdit maEdtDesc; + CheckBox maCbxVisible; + CheckBox maCbxPrintable; + CheckBox maCbxLocked; + FixedLine maFixedLine; + HelpButton maBtnHelp; + OKButton maBtnOK; + CancelButton maBtnCancel; + + const SfxItemSet& mrOutAttrs; + +public: + + SdInsertLayerDlg( Window* pWindow, const SfxItemSet& rInAttrs, bool bDeletable, String aStr ); + void GetAttr( SfxItemSet& rOutAttrs ); +}; + +#endif // _SD_LAYER_DLG_HXX_ diff --git a/sd/source/ui/inc/masterlayoutdlg.hrc b/sd/source/ui/inc/masterlayoutdlg.hrc new file mode 100644 index 000000000000..635b5cbdef10 --- /dev/null +++ b/sd/source/ui/inc/masterlayoutdlg.hrc @@ -0,0 +1,36 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#define FL_PLACEHOLDERS 1 +#define CB_DATE 2 +#define CB_PAGE_NUMBER 3 +#define CB_HEADER 4 +#define CB_FOOTER 5 +#define BT_OK 6 +#define BT_CANCEL 7 +#define STR_SLIDE_NUMBER 8 +#define STR_MASTER_LAYOUT_TITLE 9 diff --git a/sd/source/ui/inc/masterlayoutdlg.hxx b/sd/source/ui/inc/masterlayoutdlg.hxx new file mode 100755 index 000000000000..f75635ad2755 --- /dev/null +++ b/sd/source/ui/inc/masterlayoutdlg.hxx @@ -0,0 +1,78 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef _SD_MASTERLAYOUT_DIALOG_HXX +#define _SD_MASTERLAYOUT_DIALOG_HXX + +#include <vcl/dialog.hxx> + +#ifndef _SV_BUTTON_HXX //autogen +#include <vcl/button.hxx> +#endif +#include <vcl/fixed.hxx> + +#include "sdpage.hxx" + +class SdDrawDocument; + +namespace sd +{ + +class MasterLayoutDialog : public ModalDialog +{ +private: + SdDrawDocument* mpDoc; + SdPage* mpCurrentPage; + + FixedLine maFLPlaceholders; + CheckBox maCBDate; + CheckBox maCBPageNumber; + CheckBox maCBHeader; + CheckBox maCBFooter; + + OKButton maPBOK; + CancelButton maPBCancel; + + sal_Bool mbOldHeader; + sal_Bool mbOldFooter; + sal_Bool mbOldDate; + sal_Bool mbOldPageNumber; + + void applyChanges(); + void remove( PresObjKind eKind ); + void create( PresObjKind eKind ); + +public: + MasterLayoutDialog( Window* pParent, SdDrawDocument* pDoc, SdPage* pCurrentPage ); + ~MasterLayoutDialog(); + + virtual short Execute(); +}; + +} + +#endif // _SD_MASTERLAYOUT_DIALOG_HXX + diff --git a/sd/source/ui/inc/morphdlg.hrc b/sd/source/ui/inc/morphdlg.hrc new file mode 100644 index 000000000000..f9a23c681d7e --- /dev/null +++ b/sd/source/ui/inc/morphdlg.hrc @@ -0,0 +1,35 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#define DLG_MORPH 653 +#define BTN_OK 1 +#define BTN_CANCEL 1 +#define BTN_HELP 1 +#define GRP_PRESET 1 +#define FT_STEPS 1 +#define MTF_STEPS 1 +#define CBX_ATTRIBUTES 1 +#define CBX_ORIENTATION 2 diff --git a/sd/source/ui/inc/morphdlg.hxx b/sd/source/ui/inc/morphdlg.hxx new file mode 100755 index 000000000000..85f18f4c8787 --- /dev/null +++ b/sd/source/ui/inc/morphdlg.hxx @@ -0,0 +1,81 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_MORPH_DLG_HXX +#define SD_MORPH_DLG_HXX + +#include <vcl/button.hxx> +#include <vcl/group.hxx> +#include <vcl/fixed.hxx> +#include <vcl/field.hxx> +#include <vcl/dialog.hxx> + +class SdrObject; + +namespace sd { + +/****************************************************************************** +|* +|* +|* +\******************************************************************************/ + +class MorphDlg + : public ModalDialog +{ +public: + MorphDlg ( + ::Window* pParent, + const SdrObject* pObj1, + const SdrObject* pObj2); + virtual ~MorphDlg (void); + + void SaveSettings() const; + sal_uInt16 GetFadeSteps() const { return (sal_uInt16) aMtfSteps.GetValue(); } + sal_Bool IsAttributeFade() const { return aCbxAttributes.IsChecked(); } + sal_Bool IsOrientationFade() const { return aCbxOrientation.IsChecked(); } + +private: + FixedLine aGrpPreset; + FixedText aFtSteps; + MetricField aMtfSteps; + CheckBox aCbxAttributes; + CheckBox aCbxOrientation; + OKButton aBtnOK; + CancelButton aBtnCancel; + HelpButton aBtnHelp; + SdrObject* pSdrObj1; + SdrObject* pSdrObj2; + + void LoadSettings(); +}; + + +#endif + + +} // end of namespace sd diff --git a/sd/source/ui/inc/navigatr.hrc b/sd/source/ui/inc/navigatr.hrc new file mode 100755 index 000000000000..f12932255fe5 --- /dev/null +++ b/sd/source/ui/inc/navigatr.hrc @@ -0,0 +1,50 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#define FLT_NAVIGATOR 575 +//IAccessibility2 Implementation 2009----- +#define STR_OBJECTS_TREE (FLT_NAVIGATOR+1) +//-----IAccessibility2 Implementation 2009 +#define TLB_OBJECTS 1 +#define TBI_PEN 2 +#define TBI_FIRST 3 +#define TBI_PREVIOUS 4 +#define TBI_NEXT 5 +#define TBI_LAST 6 +#define TBI_DRAGTYPE 7 +#define TBI_EMBEDDED 8 +#define TBI_LINK 9 +#define TBI_HYPERLINK 10 +#define TBI_SHAPE_FILTER 11 + +#define LB_DOCS 1 + +#define IL_NAVIGATR 333 +#define ILH_NAVIGATR 444 +//IAccessibility2 Implementation 2009----- +#define STR_DRAGMODE 1 +//-----IAccessibility2 Implementation 2009 + diff --git a/sd/source/ui/inc/navigatr.hxx b/sd/source/ui/inc/navigatr.hxx new file mode 100755 index 000000000000..ccbbe1dfad3b --- /dev/null +++ b/sd/source/ui/inc/navigatr.hxx @@ -0,0 +1,207 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_NAVIGATOR_HXX +#define SD_NAVIGATOR_HXX + +#include <vcl/window.hxx> +#include <vcl/lstbox.hxx> +#ifndef _TOOLBOX_HXX //autogen +#include <vcl/toolbox.hxx> +#endif +#include <sfx2/ctrlitem.hxx> +#include "sdtreelb.hxx" +#include "pres.hxx" + +#define NAVSTATE_NONE 0x00000000 + +#define NAVBTN_PEN_ENABLED 0x00000010 +#define NAVBTN_PEN_DISABLED 0x00000020 +#define NAVBTN_PEN_CHECKED 0x00000040 +#define NAVBTN_PEN_UNCHECKED 0x00000080 + +#define NAVTLB_UPDATE 0x00000100 + +#define NAVBTN_FIRST_ENABLED 0x00001000 +#define NAVBTN_FIRST_DISABLED 0x00002000 +#define NAVBTN_PREV_ENABLED 0x00004000 +#define NAVBTN_PREV_DISABLED 0x00008000 + +#define NAVBTN_LAST_ENABLED 0x00010000 +#define NAVBTN_LAST_DISABLED 0x00020000 +#define NAVBTN_NEXT_ENABLED 0x00040000 +#define NAVBTN_NEXT_DISABLED 0x00080000 + +// forward +namespace sd { +class DrawDocShell; +class NavigatorChildWindow; +class View; +} +class Menu; +class SdNavigatorControllerItem; +class SdPageNameControllerItem; + +//------------------------------------------------------------------------ + +class NavDocInfo +{ +public: + NavDocInfo() { mpDocShell = NULL; } + + sal_Bool HasName() { return( (sal_Bool) bName ); } + sal_Bool IsActive() { return( (sal_Bool) bActive ); } + + void SetName( sal_Bool bOn = sal_True ) { bName = bOn; } + void SetActive( sal_Bool bOn = sal_True ) { bActive = bOn; } + +private: + friend class SdNavigatorWin; + sal_Bool bName : 1; + sal_Bool bActive : 1; + ::sd::DrawDocShell* mpDocShell; +}; + +//------------------------------------------------------------------------ + +class SdNavigatorWin + : public Window +{ +public: + SdNavigatorWin( + ::Window* pParent, + ::sd::NavigatorChildWindow* pChildWinContext, + const SdResId& rSdResId, + SfxBindings* pBindings ); + virtual ~SdNavigatorWin(); + + virtual void KeyInput( const KeyEvent& rKEvt ); + + void InitTreeLB( const SdDrawDocument* pDoc ); + void RefreshDocumentLB( const String* pDocName = NULL ); + + sal_Bool InsertFile(const String& rFileName); + + NavigatorDragType GetNavigatorDragType(); + void SetNavigatorDragType(NavigatorDragType eType) { meDragType = eType; } + +protected: + virtual void Resize(); + virtual long Notify(NotifyEvent& rNEvt); + + +private: + friend class ::sd::NavigatorChildWindow; + friend class SdNavigatorControllerItem; + friend class SdPageNameControllerItem; + + ToolBox maToolbox; + SdPageObjsTLB maTlbObjects; + ListBox maLbDocs; + + ::sd::NavigatorChildWindow* mpChildWinContext; + Size maSize; + Size maMinSize; +// Size maFltWinSize; + sal_Bool mbDocImported; + String maDropFileName; + NavigatorDragType meDragType; + List* mpDocList; + SfxBindings* mpBindings; + SdNavigatorControllerItem* mpNavigatorCtrlItem; + SdPageNameControllerItem* mpPageNameCtrlItem; + + ImageList maImageList; + ImageList maImageListH; + + /** This flag controls whether all shapes or only the named shapes are + shown. + */ + bool mbShowAllShapes; + + sal_uInt16 GetDragTypeSdResId( NavigatorDragType eDT, sal_Bool bImage = sal_False ); + NavDocInfo* GetDocInfo(); + + DECL_LINK( GetFocusObjectsHdl, void * ); + DECL_LINK( SelectToolboxHdl, void * ); + DECL_LINK( ClickToolboxHdl, ToolBox * ); + DECL_LINK( DropdownClickToolBoxHdl, ToolBox * ); + DECL_LINK( ClickPageHdl, void * ); + DECL_LINK( ClickObjectHdl, void * ); + DECL_LINK( SelectDocumentHdl, void * ); + DECL_LINK( MenuSelectHdl, Menu * ); + DECL_LINK( ShapeFilterCallback, Menu * ); + + virtual void DataChanged( const DataChangedEvent& rDCEvt ); + void SetDragImage(); + void ApplyImageList(); +}; + + + + +/************************************************************************* +|* +|* ControllerItem fuer Navigator +|* +\************************************************************************/ + +class SdNavigatorControllerItem : public SfxControllerItem +{ +public: + SdNavigatorControllerItem( sal_uInt16, SdNavigatorWin*, SfxBindings* ); + +protected: + virtual void StateChanged( sal_uInt16 nSId, SfxItemState eState, + const SfxPoolItem* pState ); + +private: + SdNavigatorWin* pNavigatorWin; +}; + + + +/************************************************************************* +|* +|* ControllerItem fuer Navigator zum Anzeigen der Seite in der TreeLB +|* +\************************************************************************/ + +class SdPageNameControllerItem : public SfxControllerItem +{ +public: + SdPageNameControllerItem( sal_uInt16, SdNavigatorWin*, SfxBindings* ); + +protected: + virtual void StateChanged( sal_uInt16 nSId, SfxItemState eState, + const SfxPoolItem* pState ); + +private: + SdNavigatorWin* pNavigatorWin; +}; + +#endif diff --git a/sd/source/ui/inc/optdlg.hrc b/sd/source/ui/inc/optdlg.hrc new file mode 100644 index 000000000000..6c50299c5ab2 --- /dev/null +++ b/sd/source/ui/inc/optdlg.hrc @@ -0,0 +1,34 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#define TAB_DLG_IMPRESS_OPTIONS 842 +#define TAB_DLG_DRAW_OPTIONS 843 + +#define TP_GENERAL 1 +#define TP_SAVE 2 +#define TP_PATH 3 +#define TP_PRINT 4 + diff --git a/sd/source/ui/inc/optdlg.hxx b/sd/source/ui/inc/optdlg.hxx new file mode 100755 index 000000000000..4cba8494261a --- /dev/null +++ b/sd/source/ui/inc/optdlg.hxx @@ -0,0 +1,57 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_OPTDLG_HXX +#define SD_OPTDLG_HXX + +#include <sfx2/tabdlg.hxx> +#include "pres.hxx" + +class SfxItemSet; + + +class SdOptionsDlg : public SfxTabDialog +{ +private: + DocumentType meDocType; + +public: + SdOptionsDlg( Window* pParent, const SfxItemSet& rInAttrs, + DocumentType eDocType ); + ~SdOptionsDlg(); + +protected: + + virtual void PageCreated( sal_uInt16 nId, SfxTabPage &rPage ); +// virtual SfxItemSet* CreateInputItemSet( sal_uInt16 nPageId ); +}; + + + +#endif // SD_OPTDLG_HXX + + diff --git a/sd/source/ui/inc/optsitem.hxx b/sd/source/ui/inc/optsitem.hxx new file mode 100755 index 000000000000..bcc225a91621 --- /dev/null +++ b/sd/source/ui/inc/optsitem.hxx @@ -0,0 +1,688 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SD_OPTSITEM_HXX +#define _SD_OPTSITEM_HXX + +#include <unotools/configitem.hxx> +#include <sfx2/module.hxx> +#include <sfx2/app.hxx> +#include <sfx2/sfxsids.hrc> +#include <svx/optgrid.hxx> +#include <svx/dlgutil.hxx> +#include "sddllapi.h" + +// ----------------- +// - Option ranges - +// ----------------- + +#define SD_OPTIONS_NONE 0x00000000 +#define SD_OPTIONS_ALL 0xffffffff + +#define SD_OPTIONS_LAYOUT 0x00000001 +#define SD_OPTIONS_CONTENTS 0x00000002 +#define SD_OPTIONS_MISC 0x00000004 +#define SD_OPTIONS_SNAP 0x00000008 +#define SD_OPTIONS_ZOOM 0x00000010 +#define SD_OPTIONS_GRID 0x00000020 +#define SD_OPTIONS_PRINT 0x00000040 + +// ------------ +// - Forwards - +// ------------ + +class SfxConfigItem; +class SdOptions; + +namespace sd { +class FrameView; +} + +// ----------------- +// - SdOptionsItem - +// ----------------- + +class SdOptionsGeneric; + +class SD_DLLPUBLIC SdOptionsItem : public ::utl::ConfigItem +{ + +private: + + const SdOptionsGeneric& mrParent; + + +public: + + SdOptionsItem( const SdOptionsGeneric& rParent, const ::rtl::OUString rSubTree ); + virtual ~SdOptionsItem(); + + virtual void Commit(); + virtual void Notify( const com::sun::star::uno::Sequence<rtl::OUString>& aPropertyNames); + + ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > GetProperties( + const ::com::sun::star::uno::Sequence< ::rtl::OUString >& rNames ); + sal_Bool PutProperties( const com::sun::star::uno::Sequence< rtl::OUString >& rNames, + const com::sun::star::uno::Sequence< com::sun::star::uno::Any>& rValues ); + void SetModified(); +}; + +// -------------------- +// - SdOptionsGeneric - +// -------------------- + +class SD_DLLPUBLIC SdOptionsGeneric +{ +friend class SdOptionsItem; + +private: + + ::rtl::OUString maSubTree; + SdOptionsItem* mpCfgItem; + sal_uInt16 mnConfigId; + sal_Bool mbInit : 1; + sal_Bool mbEnableModify : 1; + + SD_DLLPRIVATE void Commit( SdOptionsItem& rCfgItem ) const; + SD_DLLPRIVATE ::com::sun::star::uno::Sequence< ::rtl::OUString > GetPropertyNames() const; + +protected: + + void Init() const; + void OptionsChanged() { if( mpCfgItem && mbEnableModify ) mpCfgItem->SetModified(); } + +protected: + + virtual void GetPropNameArray( const char**& ppNames, sal_uLong& rCount ) const = 0; + virtual sal_Bool ReadData( const ::com::sun::star::uno::Any* pValues ) = 0; + virtual sal_Bool WriteData( ::com::sun::star::uno::Any* pValues ) const = 0; + +public: + + SdOptionsGeneric( sal_uInt16 nConfigId, const ::rtl::OUString& rSubTree ); + virtual ~SdOptionsGeneric(); + + const ::rtl::OUString& GetSubTree() const { return maSubTree; } + sal_uInt16 GetConfigId() const { return mnConfigId; } + + void EnableModify( sal_Bool bModify ) { mbEnableModify = bModify; } + + void Store(); + + + static bool isMetricSystem(); +}; + +// ------------------- +// - SdOptionsLayout - +// ------------------- + +class SD_DLLPUBLIC SdOptionsLayout : public SdOptionsGeneric +{ +private: + + sal_Bool bRuler : 1; // Layout/Display/Ruler + sal_Bool bMoveOutline : 1; // Layout/Display/Contur + sal_Bool bDragStripes : 1; // Layout/Display/Guide + sal_Bool bHandlesBezier : 1; // Layout/Display/Bezier + sal_Bool bHelplines : 1; // Layout/Display/Helpline + sal_uInt16 nMetric; // Layout/Other/MeasureUnit + sal_uInt16 nDefTab; // Layout/Other/TabStop + +protected: + + virtual void GetPropNameArray( const char**& ppNames, sal_uLong& rCount ) const; + virtual sal_Bool ReadData( const ::com::sun::star::uno::Any* pValues ); + virtual sal_Bool WriteData( ::com::sun::star::uno::Any* pValues ) const; + +public: + SdOptionsLayout( sal_uInt16 nConfigId, sal_Bool bUseConfig ); + virtual ~SdOptionsLayout() {} + + sal_Bool operator==( const SdOptionsLayout& rOpt ) const; + + sal_Bool IsRulerVisible() const { Init(); return (sal_Bool) bRuler; } + sal_Bool IsMoveOutline() const { Init(); return (sal_Bool) bMoveOutline; } + sal_Bool IsDragStripes() const { Init(); return (sal_Bool) bDragStripes; } + sal_Bool IsHandlesBezier() const { Init(); return (sal_Bool) bHandlesBezier; } + sal_Bool IsHelplines() const { Init(); return (sal_Bool) bHelplines; } + sal_uInt16 GetMetric() const { Init(); return( ( 0xffff == nMetric ) ? (sal_uInt16)SfxModule::GetCurrentFieldUnit() : nMetric ); } + sal_uInt16 GetDefTab() const { Init(); return nDefTab; } + + void SetRulerVisible( sal_Bool bOn = sal_True ) { if( bRuler != bOn ) { OptionsChanged(); bRuler = bOn; } } + void SetMoveOutline( sal_Bool bOn = sal_True ) { if( bMoveOutline != bOn ) { OptionsChanged(); bMoveOutline = bOn; } } + void SetDragStripes( sal_Bool bOn = sal_True ) { if( bDragStripes != bOn ) { OptionsChanged(); bDragStripes = bOn; } } + void SetHandlesBezier( sal_Bool bOn = sal_True ) { if( bHandlesBezier != bOn ) { OptionsChanged(); bHandlesBezier = bOn; } } + void SetHelplines( sal_Bool bOn = sal_True ) { if( bHelplines != bOn ) { OptionsChanged(); bHelplines = bOn; } } + void SetMetric( sal_uInt16 nInMetric ) { if( nMetric != nInMetric ) { OptionsChanged(); nMetric = nInMetric; } } + void SetDefTab( sal_uInt16 nTab ) { if( nDefTab != nTab ) { OptionsChanged(); nDefTab = nTab; } } +}; + +// ----------------------------------------------------------------------------- + +class SD_DLLPUBLIC SdOptionsLayoutItem : public SfxPoolItem +{ +public: + + SdOptionsLayoutItem( sal_uInt16 nWhich); + SdOptionsLayoutItem( sal_uInt16 nWhich, SdOptions* pOpts, ::sd::FrameView* pView = NULL ); + + virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const; + virtual int operator==( const SfxPoolItem& ) const; + + void SetOptions( SdOptions* pOpts ) const; + + SdOptionsLayout& GetOptionsLayout() { return maOptionsLayout; } +private: + SdOptionsLayout maOptionsLayout; +}; + +// --------------------- +// - SdOptionsContents - +// --------------------- + +class SD_DLLPUBLIC SdOptionsContents : public SdOptionsGeneric +{ +private: +protected: + + virtual void GetPropNameArray( const char**& ppNames, sal_uLong& rCount ) const; + virtual sal_Bool ReadData( const ::com::sun::star::uno::Any* pValues ); + virtual sal_Bool WriteData( ::com::sun::star::uno::Any* pValues ) const; + +public: + + SdOptionsContents( sal_uInt16 nConfigId, sal_Bool bUseConfig ); + virtual ~SdOptionsContents() {} + + sal_Bool operator==( const SdOptionsContents& rOpt ) const; +}; + +// ----------------------------------------------------------------------------- + +class SD_DLLPUBLIC SdOptionsContentsItem : public SfxPoolItem +{ +public: + + SdOptionsContentsItem( sal_uInt16 nWhich, SdOptions* pOpts, ::sd::FrameView* pView = NULL ); + + virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const; + virtual int operator==( const SfxPoolItem& ) const; + + void SetOptions( SdOptions* pOpts ) const; + + SdOptionsContents& GetOptionsContents() { return maOptionsContents; } +private: + SdOptionsContents maOptionsContents; +}; + +// ----------------- +// - SdOptionsMisc - +// ----------------- + +class SD_DLLPUBLIC SdOptionsMisc : public SdOptionsGeneric +{ +private: + + // #97016# + sal_uLong nDefaultObjectSizeWidth; + sal_uLong nDefaultObjectSizeHeight; + + sal_Bool bStartWithTemplate : 1; // Misc/NewDoc/AutoPilot + sal_Bool bMarkedHitMovesAlways : 1; // Misc/ObjectMoveable + sal_Bool bMoveOnlyDragging : 1; // Currently, not in use !!! + sal_Bool bCrookNoContortion : 1; // Misc/NoDistort + sal_Bool bQuickEdit : 1; // Misc/TextObject/QuickEditing + sal_Bool bMasterPageCache : 1; // Misc/BackgroundCache + sal_Bool bDragWithCopy : 1; // Misc/CopyWhileMoving + sal_Bool bPickThrough : 1; // Misc/TextObject/Selectable + sal_Bool bBigHandles : 1; // Misc/BigHandles + sal_Bool bDoubleClickTextEdit : 1; // Misc/DclickTextedit + sal_Bool bClickChangeRotation : 1; // Misc/RotateClick + sal_Bool bStartWithActualPage : 1; // Misc/Start/CurrentPage + sal_Bool bSolidDragging : 1; // Misc/ModifyWithAttributes + sal_Bool bSolidMarkHdl : 1; // /Misc/SimpleHandles + sal_Bool bSummationOfParagraphs : 1; // misc/SummationOfParagraphs + // #90356# + sal_Bool bShowUndoDeleteWarning : 1; // Misc/ShowUndoDeleteWarning + // #i75315# + sal_Bool bSlideshowRespectZOrder : 1; // Misc/SlideshowRespectZOrder + sal_Bool bShowComments : 1; // Misc/ShowComments + + sal_Bool bPreviewNewEffects; + sal_Bool bPreviewChangedEffects; + sal_Bool bPreviewTransitions; + + sal_Int32 mnDisplay; + + sal_Int32 mnPenColor; + double mnPenWidth; + + /** This value controls the device to use for formatting documents. + The currently supported values are 0 for the current printer or 1 + for the printer independent virtual device the can be retrieved from + the modules. + */ + sal_uInt16 mnPrinterIndependentLayout; // Misc/Compatibility/PrinterIndependentLayout +// Misc + +protected: + + virtual void GetPropNameArray( const char**& ppNames, sal_uLong& rCount ) const; + virtual sal_Bool ReadData( const ::com::sun::star::uno::Any* pValues ); + virtual sal_Bool WriteData( ::com::sun::star::uno::Any* pValues ) const; + +public: + + SdOptionsMisc( sal_uInt16 nConfigId, sal_Bool bUseConfig ); + virtual ~SdOptionsMisc() {} + + sal_Bool operator==( const SdOptionsMisc& rOpt ) const; + + sal_Bool IsStartWithTemplate() const { Init(); return (sal_Bool) bStartWithTemplate; } + sal_Bool IsMarkedHitMovesAlways() const { Init(); return (sal_Bool) bMarkedHitMovesAlways; } + sal_Bool IsMoveOnlyDragging() const { Init(); return (sal_Bool) bMoveOnlyDragging; } + sal_Bool IsCrookNoContortion() const { Init(); return (sal_Bool) bCrookNoContortion; } + sal_Bool IsQuickEdit() const { Init(); return (sal_Bool) bQuickEdit; } + sal_Bool IsMasterPagePaintCaching() const { Init(); return (sal_Bool) bMasterPageCache; } + sal_Bool IsDragWithCopy() const { Init(); return (sal_Bool) bDragWithCopy; } + sal_Bool IsPickThrough() const { Init(); return (sal_Bool) bPickThrough; } + sal_Bool IsBigHandles() const { Init(); return (sal_Bool) bBigHandles; } + sal_Bool IsDoubleClickTextEdit() const { Init(); return (sal_Bool) bDoubleClickTextEdit; } + sal_Bool IsClickChangeRotation() const { Init(); return (sal_Bool) bClickChangeRotation; } + sal_Bool IsStartWithActualPage() const { Init(); return (sal_Bool) bStartWithActualPage; } + sal_Bool IsSolidDragging() const { Init(); return (sal_Bool) bSolidDragging; } + sal_Bool IsSolidMarkHdl() const { Init(); return (sal_Bool) bSolidMarkHdl; } + sal_Bool IsSummationOfParagraphs() const { Init(); return bSummationOfParagraphs != 0; }; + + /** Return the currently selected printer independent layout mode. + @return + Returns 1 for printer independent layout enabled and 0 when it + is disabled. Other values are reserved for future use. + */ + sal_uInt16 GetPrinterIndependentLayout() const { Init(); return mnPrinterIndependentLayout; }; + // #90356# + sal_Bool IsShowUndoDeleteWarning() const { Init(); return (sal_Bool) bShowUndoDeleteWarning; } + sal_Bool IsSlideshowRespectZOrder() const { Init(); return (sal_Bool) bSlideshowRespectZOrder; } + // #97016# + sal_uLong GetDefaultObjectSizeWidth() const { Init(); return nDefaultObjectSizeWidth; } + sal_uLong GetDefaultObjectSizeHeight() const { Init(); return nDefaultObjectSizeHeight; } + + sal_Bool IsPreviewNewEffects() const { Init(); return bPreviewNewEffects; } + sal_Bool IsPreviewChangedEffects() const { Init(); return bPreviewChangedEffects; } + sal_Bool IsPreviewTransitions() const { Init(); return bPreviewTransitions; } + + sal_Int32 GetDisplay() const { Init(); return mnDisplay; } + void SetDisplay( sal_Int32 nDisplay = 0 ) { if( mnDisplay != nDisplay ) { OptionsChanged(); mnDisplay = nDisplay; } } + + sal_Int32 GetPresentationPenColor() const { Init(); return mnPenColor; } + void SetPresentationPenColor( sal_Int32 nPenColor ) { if( mnPenColor != nPenColor ) { OptionsChanged(); mnPenColor = nPenColor; } } + + double GetPresentationPenWidth() const { Init(); return mnPenWidth; } + void SetPresentationPenWidth( double nPenWidth ) { if( mnPenWidth != nPenWidth ) { OptionsChanged(); mnPenWidth = nPenWidth; } } + + void SetStartWithTemplate( sal_Bool bOn = sal_True ) { if( bStartWithTemplate != bOn ) { OptionsChanged(); bStartWithTemplate = bOn; } } + void SetMarkedHitMovesAlways( sal_Bool bOn = sal_True ) { if( bMarkedHitMovesAlways != bOn ) { OptionsChanged(); bMarkedHitMovesAlways = bOn; } } + void SetMoveOnlyDragging( sal_Bool bOn = sal_True ) { if( bMoveOnlyDragging != bOn ) { OptionsChanged(); bMoveOnlyDragging = bOn; } } + void SetCrookNoContortion( sal_Bool bOn = sal_True ) { if( bCrookNoContortion != bOn ) { OptionsChanged(); bCrookNoContortion = bOn; } } + void SetQuickEdit( sal_Bool bOn = sal_True ) { if( bQuickEdit != bOn ) { OptionsChanged(); bQuickEdit = bOn; } } + void SetMasterPagePaintCaching( sal_Bool bOn = sal_True ) { if( bMasterPageCache != bOn ) { OptionsChanged(); bMasterPageCache = bOn; } } + void SetDragWithCopy( sal_Bool bOn = sal_True ) { if( bDragWithCopy != bOn ) { OptionsChanged(); bDragWithCopy = bOn; } } + void SetPickThrough( sal_Bool bOn = sal_True ) { if( bPickThrough != bOn ) { OptionsChanged(); bPickThrough = bOn; } } + void SetBigHandles( sal_Bool bOn = sal_True ) { if( bBigHandles != bOn ) { OptionsChanged(); bBigHandles = bOn; } } + void SetDoubleClickTextEdit( sal_Bool bOn = sal_True ) { if( bDoubleClickTextEdit != bOn ) { OptionsChanged(); bDoubleClickTextEdit = bOn; } } + void SetClickChangeRotation( sal_Bool bOn = sal_True ) { if( bClickChangeRotation != bOn ) { OptionsChanged(); bClickChangeRotation = bOn; } } + void SetStartWithActualPage( sal_Bool bOn = sal_True ) { if( bStartWithActualPage != bOn ) { OptionsChanged(); bStartWithActualPage = bOn; } } + void SetSummationOfParagraphs( sal_Bool bOn = sal_True ){ if ( bOn != bSummationOfParagraphs ) { OptionsChanged(); bSummationOfParagraphs = bOn; } } + /** Set the printer independent layout mode. + @param nOn + The default value is to switch printer independent layout on, + hence the parameters name. Use 0 for turning it off. Other + values are reserved for future use. + */ + void SetPrinterIndependentLayout (sal_uInt16 nOn = 1 ){ if ( nOn != mnPrinterIndependentLayout ) { OptionsChanged(); mnPrinterIndependentLayout = nOn; } } + void SetSolidDragging( sal_Bool bOn = sal_True ) { if( bSolidDragging != bOn ) { OptionsChanged(); bSolidDragging = bOn; } } + void SetSolidMarkHdl( sal_Bool bOn = sal_True ) { if( bSolidMarkHdl != bOn ) { OptionsChanged(); bSolidMarkHdl = bOn; } } + // #90356# + void SetShowUndoDeleteWarning( sal_Bool bOn = sal_True ) { if( bShowUndoDeleteWarning != bOn ) { OptionsChanged(); bShowUndoDeleteWarning = bOn; } } + void SetSlideshowRespectZOrder( sal_Bool bOn = sal_True ) { if( bSlideshowRespectZOrder != bOn ) { OptionsChanged(); bSlideshowRespectZOrder = bOn; } } + // #97016# + void SetDefaultObjectSizeWidth( sal_uLong nWidth ) { if( nDefaultObjectSizeWidth != nWidth ) { OptionsChanged(); nDefaultObjectSizeWidth = nWidth; } } + void SetDefaultObjectSizeHeight( sal_uLong nHeight ) { if( nDefaultObjectSizeHeight != nHeight ) { OptionsChanged(); nDefaultObjectSizeHeight = nHeight; } } + + void SetPreviewNewEffects( sal_Bool bOn ) { if( bPreviewNewEffects != bOn ) { OptionsChanged(); bPreviewNewEffects = bOn; } } + void SetPreviewChangedEffects( sal_Bool bOn ) { if( bPreviewChangedEffects != bOn ) { OptionsChanged(); bPreviewChangedEffects = bOn; } } + void SetPreviewTransitions( sal_Bool bOn ) { if( bPreviewTransitions != bOn ) { OptionsChanged(); bPreviewTransitions = bOn; } } + + sal_Bool IsShowComments() const { Init(); return bShowComments; } + void SetShowComments( sal_Bool bShow ) { if( bShowComments != bShow ) { OptionsChanged(); bShowComments = bShow; } } +}; + +// ----------------------------------------------------------------------------- + +class SD_DLLPUBLIC SdOptionsMiscItem : public SfxPoolItem +{ +public: + + SdOptionsMiscItem( sal_uInt16 nWhich); + SdOptionsMiscItem( sal_uInt16 nWhich, SdOptions* pOpts, ::sd::FrameView* pView = NULL ); + + virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const; + virtual int operator==( const SfxPoolItem& ) const; + + void SetOptions( SdOptions* pOpts ) const; + + SdOptionsMisc& GetOptionsMisc() { return maOptionsMisc; } + const SdOptionsMisc& GetOptionsMisc() const { return maOptionsMisc; } +private: + SdOptionsMisc maOptionsMisc; +}; + +// ----------------- +// - SdOptionsSnap - +// ----------------- + +class SD_DLLPUBLIC SdOptionsSnap : public SdOptionsGeneric +{ +private: + + sal_Bool bSnapHelplines : 1; // Snap/Object/SnapLine + sal_Bool bSnapBorder : 1; // Snap/Object/PageMargin + sal_Bool bSnapFrame : 1; // Snap/Object/ObjectFrame + sal_Bool bSnapPoints : 1; // Snap/Object/ObjectPoint + sal_Bool bOrtho : 1; // Snap/Position/CreatingMoving + sal_Bool bBigOrtho : 1; // Snap/Position/ExtendEdges + sal_Bool bRotate : 1; // Snap/Position/Rotating + sal_Int16 nSnapArea; // Snap/Object/Range + sal_Int16 nAngle; // Snap/Position/RotatingValue + sal_Int16 nBezAngle; // Snap/Position/PointReduction + +protected: + + virtual void GetPropNameArray( const char**& ppNames, sal_uLong& rCount ) const; + virtual sal_Bool ReadData( const ::com::sun::star::uno::Any* pValues ); + virtual sal_Bool WriteData( ::com::sun::star::uno::Any* pValues ) const; + +public: + + SdOptionsSnap( sal_uInt16 nConfigId, sal_Bool bUseConfig ); + virtual ~SdOptionsSnap() {} + + sal_Bool operator==( const SdOptionsSnap& rOpt ) const; + + sal_Bool IsSnapHelplines() const { Init(); return (sal_Bool) bSnapHelplines; } + sal_Bool IsSnapBorder() const { Init(); return (sal_Bool) bSnapBorder; } + sal_Bool IsSnapFrame() const { Init(); return (sal_Bool) bSnapFrame; } + sal_Bool IsSnapPoints() const { Init(); return (sal_Bool) bSnapPoints; } + sal_Bool IsOrtho() const { Init(); return (sal_Bool) bOrtho; } + sal_Bool IsBigOrtho() const { Init(); return (sal_Bool) bBigOrtho; } + sal_Bool IsRotate() const { Init(); return (sal_Bool) bRotate; } + sal_Int16 GetSnapArea() const { Init(); return nSnapArea; } + sal_Int16 GetAngle() const { Init(); return nAngle; } + sal_Int16 GetEliminatePolyPointLimitAngle() const { Init(); return nBezAngle; } + + void SetSnapHelplines( sal_Bool bOn = sal_True ) { if( bSnapHelplines != bOn ) { OptionsChanged(); bSnapHelplines = bOn; } } + void SetSnapBorder( sal_Bool bOn = sal_True ) { if( bSnapBorder != bOn ) { OptionsChanged(); bSnapBorder = bOn; } } + void SetSnapFrame( sal_Bool bOn = sal_True ) { if( bSnapFrame != bOn ) { OptionsChanged(); bSnapFrame = bOn; } } + void SetSnapPoints( sal_Bool bOn = sal_True ) { if( bSnapPoints != bOn ) { OptionsChanged(); bSnapPoints = bOn; } } + void SetOrtho( sal_Bool bOn = sal_True ) { if( bOrtho != bOn ) { OptionsChanged(); bOrtho = bOn; } } + void SetBigOrtho( sal_Bool bOn = sal_True ) { if( bBigOrtho != bOn ) { OptionsChanged(); bBigOrtho = bOn; } } + void SetRotate( sal_Bool bOn = sal_True ) { if( bRotate != bOn ) { OptionsChanged(); bRotate = bOn; } } + void SetSnapArea( sal_Int16 nIn ) { if( nSnapArea != nIn ) { OptionsChanged(); nSnapArea = nIn; } } + void SetAngle( sal_Int16 nIn ) { if( nAngle != nIn ) { OptionsChanged(); nAngle = nIn; } } + void SetEliminatePolyPointLimitAngle( sal_Int16 nIn ) { if( nBezAngle != nIn ) { OptionsChanged(); nBezAngle = nIn; } } +}; + +// ----------------------------------------------------------------------------- + +class SD_DLLPUBLIC SdOptionsSnapItem : public SfxPoolItem +{ +public: + + SdOptionsSnapItem( sal_uInt16 nWhich); + SdOptionsSnapItem( sal_uInt16 nWhich, SdOptions* pOpts, ::sd::FrameView* pView = NULL ); + + virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const; + virtual int operator==( const SfxPoolItem& ) const; + + void SetOptions( SdOptions* pOpts ) const; + + SdOptionsSnap& GetOptionsSnap() { return maOptionsSnap; } +private: + SdOptionsSnap maOptionsSnap; +}; + +// ----------------- +// - SdOptionsZoom - +// ----------------- + +class SdOptionsZoom : public SdOptionsGeneric +{ +private: + + sal_Int32 nX; // Zoom/ScaleX + sal_Int32 nY; // Zoom/ScaleY + +protected: + + virtual void GetPropNameArray( const char**& ppNames, sal_uLong& rCount ) const; + virtual sal_Bool ReadData( const ::com::sun::star::uno::Any* pValues ); + virtual sal_Bool WriteData( ::com::sun::star::uno::Any* pValues ) const; + +public: + + SdOptionsZoom( sal_uInt16 nConfigId, sal_Bool bUseConfig ); + virtual ~SdOptionsZoom() {} + + sal_Bool operator==( const SdOptionsZoom& rOpt ) const; + + void GetScale( sal_Int32& rX, sal_Int32& rY ) const { Init(); rX = nX; rY = nY; } + void SetScale( sal_Int32 nInX, sal_Int32 nInY ) { if( nX != nInX || nY != nInY ) { OptionsChanged(); nX = nInX; nY = nInY; } } +}; + +// ----------------------------------------------------------------------------- + +// ----------------- +// - SdOptionsGrid - +// ----------------- + +class SdOptionsGrid : public SdOptionsGeneric, public SvxOptionsGrid +{ +protected: + + virtual void GetPropNameArray( const char**& ppNames, sal_uLong& rCount ) const; + virtual sal_Bool ReadData( const ::com::sun::star::uno::Any* pValues ); + virtual sal_Bool WriteData( ::com::sun::star::uno::Any* pValues ) const; + +public: + + SdOptionsGrid( sal_uInt16 nConfigId, sal_Bool bUseConfig ); + virtual ~SdOptionsGrid(); + + void SetDefaults(); + sal_Bool operator==( const SdOptionsGrid& rOpt ) const; + + sal_uInt32 GetFldDrawX() const { Init(); return SvxOptionsGrid::GetFldDrawX(); } + sal_uInt32 GetFldDivisionX() const { Init(); return SvxOptionsGrid::GetFldDivisionX(); } + sal_uInt32 GetFldDrawY() const { Init(); return SvxOptionsGrid::GetFldDrawY(); } + sal_uInt32 GetFldDivisionY() const { Init(); return SvxOptionsGrid::GetFldDivisionY(); } + sal_uInt32 GetFldSnapX() const { Init(); return SvxOptionsGrid::GetFldSnapX(); } + sal_uInt32 GetFldSnapY() const { Init(); return SvxOptionsGrid::GetFldSnapY(); } + sal_Bool IsUseGridSnap() const { Init(); return SvxOptionsGrid::GetUseGridSnap(); } + sal_Bool IsSynchronize() const { Init(); return SvxOptionsGrid::GetSynchronize(); } + sal_Bool IsGridVisible() const { Init(); return SvxOptionsGrid::GetGridVisible(); } + sal_Bool IsEqualGrid() const { Init(); return SvxOptionsGrid::GetEqualGrid(); } + + void SetFldDrawX( sal_uInt32 nSet ) { if( nSet != SvxOptionsGrid::GetFldDrawX() ) { OptionsChanged(); SvxOptionsGrid::SetFldDrawX( nSet ); } } + void SetFldDivisionX( sal_uInt32 nSet ) { if( nSet != SvxOptionsGrid::GetFldDivisionX() ) { OptionsChanged(); SvxOptionsGrid::SetFldDivisionX( nSet ); } } + void SetFldDrawY( sal_uInt32 nSet ) { if( nSet != SvxOptionsGrid::GetFldDrawY() ) { OptionsChanged(); SvxOptionsGrid::SetFldDrawY( nSet ); } } + void SetFldDivisionY( sal_uInt32 nSet ) { if( nSet != SvxOptionsGrid::GetFldDivisionY() ) { OptionsChanged(); SvxOptionsGrid::SetFldDivisionY( nSet ); } } + void SetFldSnapX( sal_uInt32 nSet ) { if( nSet != SvxOptionsGrid::GetFldSnapX() ) { OptionsChanged(); SvxOptionsGrid::SetFldSnapX( nSet ); } } + void SetFldSnapY( sal_uInt32 nSet ) { if( nSet != SvxOptionsGrid::GetFldSnapY() ) { OptionsChanged(); SvxOptionsGrid::SetFldSnapY( nSet ); } } + void SetUseGridSnap( sal_Bool bSet ) { if( bSet != SvxOptionsGrid::GetUseGridSnap() ) { OptionsChanged(); SvxOptionsGrid::SetUseGridSnap( bSet ); } } + void SetSynchronize( sal_Bool bSet ) { if( bSet != SvxOptionsGrid::GetSynchronize() ) { OptionsChanged(); SvxOptionsGrid::SetSynchronize( bSet ); } } + void SetGridVisible( sal_Bool bSet ) { if( bSet != SvxOptionsGrid::GetGridVisible() ) { OptionsChanged(); SvxOptionsGrid::SetGridVisible( bSet ); } } + void SetEqualGrid( sal_Bool bSet ) { if( bSet != SvxOptionsGrid::GetEqualGrid() ) { OptionsChanged(); SvxOptionsGrid::SetEqualGrid( bSet ); } } +}; + +// ----------------------------------------------- + +class SdOptionsGridItem : public SvxGridItem +{ + +public: + SdOptionsGridItem( sal_uInt16 nWhich, SdOptions* pOpts, ::sd::FrameView* pView = NULL ); + + void SetOptions( SdOptions* pOpts ) const; +}; + +// ------------------ +// - SdOptionsPrint - +// ------------------ + +class SD_DLLPUBLIC SdOptionsPrint : public SdOptionsGeneric +{ +private: + + sal_Bool bDraw : 1; // Print/Content/Drawing + sal_Bool bNotes : 1; // Print/Content/Note + sal_Bool bHandout : 1; // Print/Content/Handout + sal_Bool bOutline : 1; // Print/Content/Outline + sal_Bool bDate : 1; // Print/Other/Date + sal_Bool bTime : 1; // Print/Other/Time + sal_Bool bPagename : 1; // Print/Other/PageName + sal_Bool bHiddenPages : 1; // Print/Other/HiddenPage + sal_Bool bPagesize : 1; // Print/Page/PageSize + sal_Bool bPagetile : 1; // Print/Page/PageTile + sal_Bool bWarningPrinter : 1; // These flags you get + sal_Bool bWarningSize : 1; // from the common options, + sal_Bool bWarningOrientation : 1; // currently org.openoffice.Office.Common.xml (class OfaMiscCfg ; sfx2/misccfg.hxx ) + sal_Bool bBooklet : 1; // Print/Page/Booklet + sal_Bool bFront : 1; // Print/Page/BookletFront + sal_Bool bBack : 1; // Print/Page/BookletFront + sal_Bool bCutPage : 1; // NOT persistent !!! + sal_Bool bPaperbin : 1; // Print/Other/FromPrinterSetup + sal_Bool mbHandoutHorizontal : 1; // Order Page previews on Handout Pages horizontal + sal_uInt16 mnHandoutPages; // Number of page previews on handout page (only 1/2/4/6/9 are supported) + sal_uInt16 nQuality; // Print/Other/Quality + +protected: + + virtual void GetPropNameArray( const char**& ppNames, sal_uLong& rCount ) const; + virtual sal_Bool ReadData( const ::com::sun::star::uno::Any* pValues ); + virtual sal_Bool WriteData( ::com::sun::star::uno::Any* pValues ) const; + +public: + + SdOptionsPrint( sal_uInt16 nConfigId, sal_Bool bUseConfig ); + virtual ~SdOptionsPrint() {} + + sal_Bool operator==( const SdOptionsPrint& rOpt ) const; + + sal_Bool IsDraw() const { Init(); return (sal_Bool) bDraw; } + sal_Bool IsNotes() const { Init(); return (sal_Bool) bNotes; } + sal_Bool IsHandout() const { Init(); return (sal_Bool) bHandout; } + sal_Bool IsOutline() const { Init(); return (sal_Bool) bOutline; } + sal_Bool IsDate() const { Init(); return (sal_Bool) bDate; } + sal_Bool IsTime() const { Init(); return (sal_Bool) bTime; } + sal_Bool IsPagename() const { Init(); return (sal_Bool) bPagename; } + sal_Bool IsHiddenPages() const { Init(); return (sal_Bool) bHiddenPages; } + sal_Bool IsPagesize() const { Init(); return (sal_Bool) bPagesize; } + sal_Bool IsPagetile() const { Init(); return (sal_Bool) bPagetile; } + sal_Bool IsWarningPrinter() const { Init(); return (sal_Bool) bWarningPrinter; } + sal_Bool IsWarningSize() const { Init(); return (sal_Bool) bWarningSize; } + sal_Bool IsWarningOrientation() const { Init(); return (sal_Bool) bWarningOrientation; } + sal_Bool IsBooklet() const { Init(); return (sal_Bool) bBooklet; } + sal_Bool IsFrontPage() const { Init(); return (sal_Bool) bFront; } + sal_Bool IsBackPage() const { Init(); return (sal_Bool) bBack; } + sal_Bool IsCutPage() const { Init(); return (sal_Bool) bCutPage; } + sal_Bool IsPaperbin() const { Init(); return (sal_Bool) bPaperbin; } + sal_uInt16 GetOutputQuality() const { Init(); return nQuality; } + sal_Bool IsHandoutHorizontal() const { Init(); return mbHandoutHorizontal; } + sal_uInt16 GetHandoutPages() const { Init(); return mnHandoutPages; } + + void SetDraw( sal_Bool bOn = sal_True ) { if( bDraw != bOn ) { OptionsChanged(); bDraw = bOn; } } + void SetNotes( sal_Bool bOn = sal_True ) { if( bNotes != bOn ) { OptionsChanged(); bNotes = bOn; } } + void SetHandout( sal_Bool bOn = sal_True ) { if( bHandout != bOn ) { OptionsChanged(); bHandout = bOn; } } + void SetOutline( sal_Bool bOn = sal_True ) { if( bOutline != bOn ) { OptionsChanged(); bOutline = bOn; } } + void SetDate( sal_Bool bOn = sal_True ) { if( bDate != bOn ) { OptionsChanged(); bDate = bOn; } } + void SetTime( sal_Bool bOn = sal_True ) { if( bTime != bOn ) { OptionsChanged(); bTime = bOn; } } + void SetPagename( sal_Bool bOn = sal_True ) { if( bPagename != bOn ) { OptionsChanged(); bPagename = bOn; } } + void SetHiddenPages( sal_Bool bOn = sal_True ) { if( bHiddenPages != bOn ) { OptionsChanged(); bHiddenPages = bOn; } } + void SetPagesize( sal_Bool bOn = sal_True ) { if( bPagesize != bOn ) { OptionsChanged(); bPagesize = bOn; } } + void SetPagetile( sal_Bool bOn = sal_True ) { if( bPagetile != bOn ) { OptionsChanged(); bPagetile = bOn; } } + void SetWarningPrinter( sal_Bool bOn = sal_True ) { if( bWarningPrinter != bOn ) { OptionsChanged(); bWarningPrinter = bOn; } } + void SetWarningSize( sal_Bool bOn = sal_True ) { if( bWarningSize != bOn ) { OptionsChanged(); bWarningSize = bOn; } } + void SetWarningOrientation( sal_Bool bOn = sal_True ) { if( bWarningOrientation != bOn ) { OptionsChanged(); bWarningOrientation = bOn; } } + void SetBooklet( sal_Bool bOn = sal_True ) { if( bBooklet != bOn ) { OptionsChanged(); bBooklet = bOn; } } + void SetFrontPage( sal_Bool bOn = sal_True ) { if( bFront != bOn ) { OptionsChanged(); bFront = bOn; } } + void SetBackPage( sal_Bool bOn = sal_True ) { if( bBack != bOn ) { OptionsChanged(); bBack = bOn; } } + void SetCutPage( sal_Bool bOn = sal_True ) { if( bCutPage != bOn ) { OptionsChanged(); bCutPage = bOn; } } + void SetPaperbin( sal_Bool bOn = sal_True ) { if( bPaperbin != bOn ) { OptionsChanged(); bPaperbin = bOn; } } + void SetOutputQuality( sal_uInt16 nInQuality ) { if( nQuality != nInQuality ) { OptionsChanged(); nQuality = nInQuality; } } + void SetHandoutHorizontal( sal_Bool bHandoutHorizontal ) { if( mbHandoutHorizontal != bHandoutHorizontal ) { OptionsChanged(); mbHandoutHorizontal = bHandoutHorizontal; } } + void SetHandoutPages( sal_uInt16 nHandoutPages ) { if( nHandoutPages != mnHandoutPages ) { OptionsChanged(); mnHandoutPages = nHandoutPages; } } +}; + +// ----------------------------------------------------------------------------- + +class SD_DLLPUBLIC SdOptionsPrintItem : public SfxPoolItem +{ +public: + + SdOptionsPrintItem( sal_uInt16 nWhich); + SdOptionsPrintItem( sal_uInt16 nWhich, SdOptions* pOpts, ::sd::FrameView* pView = NULL ); + + virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const; + virtual int operator==( const SfxPoolItem& ) const; + + void SetOptions( SdOptions* pOpts ) const; + + SdOptionsPrint& GetOptionsPrint() { return maOptionsPrint; } + const SdOptionsPrint& GetOptionsPrint() const { return maOptionsPrint; } +private: + SdOptionsPrint maOptionsPrint; +}; + +// ------------- +// - SdOptions - +// ------------- + +class SdOptions : public SdOptionsLayout, public SdOptionsContents, + public SdOptionsMisc, public SdOptionsSnap, + public SdOptionsZoom, public SdOptionsGrid, + public SdOptionsPrint +{ +public: + + SdOptions( sal_uInt16 nConfigId ); + virtual ~SdOptions(); + + void StoreConfig( sal_uLong nOptionRange = SD_OPTIONS_ALL ); +}; + +#endif // _SD_OPTSITEM_HXX diff --git a/sd/source/ui/inc/packgdlg.hrc b/sd/source/ui/inc/packgdlg.hrc new file mode 100644 index 000000000000..fe6546a7082b --- /dev/null +++ b/sd/source/ui/inc/packgdlg.hrc @@ -0,0 +1,46 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#define DLG_PACKNGO 939 + +#define BTN_OK 1 +#define BTN_CANCEL 2 +#define BTN_HELP 3 + +#define GRP_DOKU 4 +#define CBX_UNLINK 5 +#define GRP_STORE 6 +#define GRP_SEPARATOR 7 +#define CBX_SPANNING 8 +#define LB_STOREMEDIUM 9 + +#define FT_DOKU_DESCR 10 +#define FT_STORE_DESCR 11 +#define FT_STOREMEDIUM 12 + +#define MTR_USERDEFINED 13 + diff --git a/sd/source/ui/inc/paragr.hrc b/sd/source/ui/inc/paragr.hrc new file mode 100644 index 000000000000..1510325ce2e1 --- /dev/null +++ b/sd/source/ui/inc/paragr.hrc @@ -0,0 +1,33 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#define TAB_PARAGRAPH 20620 + +#define CB_NEW_START 1 +#define CB_NUMBER_NEW_START 2 +#define NF_NEW_START 3 + + diff --git a/sd/source/ui/inc/paragr.hxx b/sd/source/ui/inc/paragr.hxx new file mode 100644 index 000000000000..254294833eaf --- /dev/null +++ b/sd/source/ui/inc/paragr.hxx @@ -0,0 +1,53 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SD_PARAGR_HXX +#define _SD_PARAGR_HXX + + +#include <sfx2/tabdlg.hxx> + +#include "paragr.hrc" + +/************************************************************************* +|* +|* Absatz-Tab-Dialog +|* +\************************************************************************/ +class SdParagraphDlg : public SfxTabDialog +{ +private: + const SfxItemSet& rOutAttrs; + +public: + SdParagraphDlg( Window* pParent, const SfxItemSet* pAttr ); + ~SdParagraphDlg() {}; +}; + +#endif // _SD_PARAGR_HXX + + diff --git a/sd/source/ui/inc/pgjump.hxx b/sd/source/ui/inc/pgjump.hxx new file mode 100644 index 000000000000..a900c89aadc0 --- /dev/null +++ b/sd/source/ui/inc/pgjump.hxx @@ -0,0 +1,43 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + + +#ifndef _SD_PGJUMP_HXX +#define _SD_PGJUMP_HXX + +enum PageJump +{ + PAGE_NONE, + PAGE_FIRST, + PAGE_PREVIOUS, + PAGE_NEXT, + PAGE_LAST +}; + + +#endif // _SD_PGJUMP_HXX + diff --git a/sd/source/ui/inc/present.hrc b/sd/source/ui/inc/present.hrc new file mode 100644 index 000000000000..fc4d3b68d9f4 --- /dev/null +++ b/sd/source/ui/inc/present.hrc @@ -0,0 +1,67 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include <sfx2/sfx.hrc> + +#define DLG_START_PRESENTATION RID_APP_START+3 +#define BTN_OK 1 +#define BTN_CANCEL 1 +#define BTN_HELP 1 + +#define GRP_RANGE 1 +#define RBT_ALL 1 +#define RBT_AT_DIA 2 +#define RBT_CUSTOMSHOW 3 +#define LB_DIAS 1 +#define LB_CUSTOMSHOW 2 + +#define GRP_KIND 2 +#define RBT_STANDARD 4 +#define RBT_WINDOW 5 +#define RBT_AUTO 6 +#define FT_PAUSE 1 +#define TMF_PAUSE 1 +#define CBX_AUTOLOGO 1 + +#define GRP_OPTIONS 3 +#define CBX_MANUEL 2 +#define CBX_MOUSEPOINTER 3 +#define CBX_PEN 4 +#define CBX_NAVIGATOR 5 +#define CBX_ANIMATION_ALLOWED 6 +#define CBX_CHANGE_PAGE 7 +#define CBX_ALWAYS_ON_TOP 8 + +#define GRP_MONITOR 9 +#define FT_MONITOR 10 +#define LB_MONITOR 11 + +#define STR_PRIMARY_MONITOR 1 +#define STR_MONITOR 2 +#define STR_ALL_MONITORS 3 + +// #define CBX_ENDLESS 1 +// #define CBX_WINDOW_PRESENTATION 9 diff --git a/sd/source/ui/inc/present.hxx b/sd/source/ui/inc/present.hxx new file mode 100644 index 000000000000..8350bc114de5 --- /dev/null +++ b/sd/source/ui/inc/present.hxx @@ -0,0 +1,114 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + + +#ifndef _SD_PRESENT_HXX_ +#define _SD_PRESENT_HXX_ + +#ifndef _LSTBOX_HXX //autogen +#include <vcl/lstbox.hxx> +#endif +#include <vcl/fixed.hxx> +#ifndef _BUTTON_HXX //autogen +#include <vcl/button.hxx> +#endif +#ifndef _BUTTON_HXX //autogen +#include <vcl/button.hxx> +#endif +#ifndef _DIALOG_HXX //autogen +#include <vcl/dialog.hxx> +#endif +#ifndef _FIELD_HXX //autogen +#include <vcl/field.hxx> +#endif + +class SfxItemSet; +class List; + +/************************************************************************* +|* Dialog zum Festlegen von Optionen und Starten der Praesentation +\************************************************************************/ +class SdStartPresentationDlg : public ModalDialog +{ +private: + + FixedLine aGrpRange; + RadioButton aRbtAll; + RadioButton aRbtAtDia; + RadioButton aRbtCustomshow; + ListBox aLbDias; + ListBox aLbCustomshow; + + FixedLine aGrpKind; + RadioButton aRbtStandard; + RadioButton aRbtWindow; + RadioButton aRbtAuto; + TimeField aTmfPause; + CheckBox aCbxAutoLogo; + + FixedLine aGrpOptions; + CheckBox aCbxManuel; + CheckBox aCbxMousepointer; + CheckBox aCbxPen; + CheckBox aCbxNavigator; + CheckBox aCbxAnimationAllowed; + CheckBox aCbxChangePage; + CheckBox aCbxAlwaysOnTop; + + FixedLine maGrpMonitor; + FixedText maFtMonitor; + ListBox maLBMonitor; + + OKButton aBtnOK; + CancelButton aBtnCancel; + HelpButton aBtnHelp; + + List* pCustomShowList; + const SfxItemSet& rOutAttrs; + sal_Int32 mnMonitors; + + String msPrimaryMonitor; + String msMonitor; + String msAllMonitors; + + DECL_LINK( ChangeRangeHdl, void * ); + DECL_LINK( ClickWindowPresentationHdl, void * ); + DECL_LINK( ChangePauseHdl, void * ); + + void InitMonitorSettings(); + +public: + SdStartPresentationDlg( Window* pWindow, + const SfxItemSet& rInAttrs, + List& rPageNames, + List* pCSList ); + + void GetAttr( SfxItemSet& rOutAttrs ); +}; + +#endif // _SD_PRESENT_HXX_ + diff --git a/sd/source/ui/inc/preview.hrc b/sd/source/ui/inc/preview.hrc new file mode 100644 index 000000000000..dd9f8756161a --- /dev/null +++ b/sd/source/ui/inc/preview.hrc @@ -0,0 +1,28 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#define FLT_WIN_PREVIEW 783 +#define CTL_PREVIEW 1 diff --git a/sd/source/ui/inc/prltempl.hrc b/sd/source/ui/inc/prltempl.hrc new file mode 100644 index 000000000000..97529b7d9068 --- /dev/null +++ b/sd/source/ui/inc/prltempl.hrc @@ -0,0 +1,31 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include <sfx2/sfx.hrc> +/* #define TAB_PRES_LAYOUT_TEMPLATE RID_APP_START+??? */ +#define TAB_PRES_LAYOUT_TEMPLATE 844 +#define TAB_PRES_LAYOUT_TEMPLATE_BACKGROUND 846 +#define TAB_CONTROL 1 diff --git a/sd/source/ui/inc/prltempl.hxx b/sd/source/ui/inc/prltempl.hxx new file mode 100755 index 000000000000..5e8479ce4562 --- /dev/null +++ b/sd/source/ui/inc/prltempl.hxx @@ -0,0 +1,101 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + + +#ifndef SD_PRLTEMPL_HXX +#define SD_PRLTEMPL_HXX + +#ifndef _SD_SDRESID_HXX +#include "sdresid.hxx" +#endif +#include <sfx2/tabdlg.hxx> +#include <svx/tabarea.hxx> + +#include "prlayout.hxx" // fuer enum PresentationObjects + + +class XColorTable; +class XGradientList; +class XHatchList; +class XBitmapList; +class XDashList; +class XLineEndList; +class SfxObjectShell; +class SfxStyleSheetBase; +class SfxStyleSheetBasePool; + +/************************************************************************* +|* +|* Vorlagen-Tab-Dialog +|* +\************************************************************************/ +class SdPresLayoutTemplateDlg : public SfxTabDialog +{ +private: + const SfxObjectShell* mpDocShell; + + XColorTable* pColorTab; + XGradientList* pGradientList; + XHatchList* pHatchingList; + XBitmapList* pBitmapList; + XDashList* pDashList; + XLineEndList* pLineEndList; + + sal_uInt16 nPageType; + sal_uInt16 nDlgType; + sal_uInt16 nPos; + + ChangeType nColorTableState; + ChangeType nBitmapListState; + ChangeType nGradientListState; + ChangeType nHatchingListState; + ChangeType nLineEndListState; + ChangeType nDashListState; + + PresentationObjects ePO; + + virtual void PageCreated( sal_uInt16 nId, SfxTabPage &rPage ); + + // fuers Maping mit dem neuen SvxNumBulletItem + SfxItemSet aInputSet; + SfxItemSet* pOutSet; + const SfxItemSet* pOrgSet; + + sal_uInt16 GetOutlineLevel() const; + + using SfxTabDialog::GetOutputItemSet; + +public: + SdPresLayoutTemplateDlg( SfxObjectShell* pDocSh, Window* pParent, SdResId DlgId, SfxStyleSheetBase& rStyleBase, PresentationObjects ePO, SfxStyleSheetBasePool* pSSPool ); + ~SdPresLayoutTemplateDlg(); + + const SfxItemSet* GetOutputItemSet() const; +}; + + +#endif // SD_PRLTEMPL_HXX + diff --git a/sd/source/ui/inc/prntopts.hrc b/sd/source/ui/inc/prntopts.hrc new file mode 100644 index 000000000000..04d155f6730d --- /dev/null +++ b/sd/source/ui/inc/prntopts.hrc @@ -0,0 +1,56 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#define TP_PRINT_OPTIONS 549 +#define LB_PRINT 1 +#define CBX_PAGENAME 2 +#define CBX_HIDDEN_PAGES 1 +#define GRP_PRINT 1 +#define GRP_PAGE 2 +#define CBX_DATE 3 +#define CBX_TIME 4 +#define CBX_DRAW 6 +#define CBX_NOTES 7 +#define CBX_HANDOUTS 8 +#define CBX_OUTLINE 9 +#define GRP_WARNINGS 4 +#define CBX_PAPERBIN 10 +#define CBX_FRONT 12 +#define CBX_BACK 13 +#define RBT_DEFAULT 1 +#define RBT_PAGESIZE 2 +#define RBT_PAGETILE 3 +#define RBT_BOOKLET 4 +#define GRP_PRINT_EXT 3 +#define GRP_PAPERBIN 4 + +#define RBT_COLOR 5 +#define RBT_GRAYSCALE 6 +#define RBT_BLACKWHITE 7 +#define GRP_OUTPUT 5 +#define FL_SEPARATOR1 6 +#define FL_SEPARATOR2 7 + diff --git a/sd/source/ui/inc/prntopts.hxx b/sd/source/ui/inc/prntopts.hxx new file mode 100755 index 000000000000..9ee90a522ac7 --- /dev/null +++ b/sd/source/ui/inc/prntopts.hxx @@ -0,0 +1,109 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SD_PRNTOPTS_HXX +#define _SD_PRNTOPTS_HXX + +#include <vcl/group.hxx> + +#ifndef _SV_BUTTON_HXX //autogen +#include <vcl/button.hxx> +#endif +#include <sfx2/tabdlg.hxx> +#include <vcl/fixed.hxx> + +/* +enum PrintType +{ + PT_DRAWING, + PT_NOTES, + PT_HANDOUT, + PT_OUTLINE +}; +*/ +class SdModule; +class SdPrintOptions : public SfxTabPage +{ + friend class SdOptionsDlg; + friend class SdModule; + +private: + FixedLine aGrpPrint; + CheckBox aCbxDraw; + CheckBox aCbxNotes; + CheckBox aCbxHandout; + CheckBox aCbxOutline; + + FixedLine aSeparator1FL; + FixedLine aGrpOutput; + RadioButton aRbtColor; + RadioButton aRbtGrayscale; + RadioButton aRbtBlackWhite; + + FixedLine aGrpPrintExt; + CheckBox aCbxPagename; + CheckBox aCbxDate; + CheckBox aCbxTime; + CheckBox aCbxHiddenPages; + + FixedLine aSeparator2FL; + FixedLine aGrpPageoptions; + RadioButton aRbtDefault; + RadioButton aRbtPagesize; + RadioButton aRbtPagetile; + RadioButton aRbtBooklet; + CheckBox aCbxFront; + CheckBox aCbxBack; + + CheckBox aCbxPaperbin; + + const SfxItemSet& rOutAttrs; + + DECL_LINK( ClickCheckboxHdl, CheckBox * ); + DECL_LINK( ClickBookletHdl, CheckBox * ); + + void updateControls(); + + using OutputDevice::SetDrawMode; +public: + SdPrintOptions( Window* pParent, const SfxItemSet& rInAttrs); + ~SdPrintOptions(); + + static SfxTabPage* Create( Window*, const SfxItemSet& ); + + virtual sal_Bool FillItemSet( SfxItemSet& ); + virtual void Reset( const SfxItemSet & ); + + void SetDrawMode(); + virtual void PageCreated (SfxAllItemSet aSet); +}; + + + +#endif // _SD_PRNTOPTS_HXX + + diff --git a/sd/source/ui/inc/pubdlg.hrc b/sd/source/ui/inc/pubdlg.hrc new file mode 100644 index 000000000000..8e3c1be2111d --- /dev/null +++ b/sd/source/ui/inc/pubdlg.hrc @@ -0,0 +1,153 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + + +#define PAGE1_BMP 1 +#define PAGE1_TITEL 2 +#define PAGE1_NEW_DESIGN 3 +#define PAGE1_OLD_DESIGN 4 +#define PAGE1_DESIGNS 5 +#define PAGE1_DEL_DESIGN 6 +#define PAGE1_DESC 7 + +////////////////////////////// + +#define PAGE2_BMP 20 +#define PAGE2_TITEL 21 +#define PAGE2_STANDARD 22 +#define PAGE2_FRAMES 23 +#define PAGE2_KIOSK 24 +#define PAGE2_WEBCAST 25 + +#define PAGE2_NOFRAMES_FB 26 +#define PAGE2_FRAMES_FB 27 +#define PAGE2_KIOSK_FB 28 +#define PAGE2_WEBCAST_FB 29 + +#define PAGE2_TITEL_HTML 30 +#define PAGE2_CONTENT 31 +#define PAGE2_NOTES 32 + +#define PAGE2_TITEL_KIOSK 33 +#define PAGE2_CHG_DEFAULT 34 +#define PAGE2_CHG_AUTO 35 +#define PAGE2_DURATION_TXT 36 +#define PAGE2_DURATION_TMF 37 +#define PAGE2_ENDLESS 38 + +#define PAGE2_TITEL_WEBCAST 40 +#define PAGE2_ASP 41 +#define PAGE2_PERL 42 +#define PAGE2_INDEX_TXT 43 +#define PAGE2_INDEX 44 +#define PAGE2_URL_TXT 45 +#define PAGE2_URL 46 +#define PAGE2_CGI_TXT 47 +#define PAGE2_CGI 48 +#define PAGE2_VERT 49 + +////////////////////////////// + +#define PAGE3_BMP 50 +#define PAGE3_TITEL_1 51 +#define PAGE3_PNG 51 +#define PAGE3_GIF 52 +#define PAGE3_JPG 53 +#define PAGE3_QUALITY_TXT 54 +#define PAGE3_QUALITY 55 +#define PAGE3_TITEL_2 56 +#define PAGE3_RESOLUTION_1 57 +#define PAGE3_RESOLUTION_2 58 +#define PAGE3_RESOLUTION_3 59 +#define PAGE3_TITEL_3 60 +#define PAGE3_SLD_SOUND 61 +#define PAGE3_VERT 62 +#define PAGE3_HIDDEN_SLIDES 63 + +////////////////////////////// + +#define PAGE4_BMP 65 +#define PAGE4_TITEL_1 66 +#define PAGE4_AUTHOR_TXT 67 +#define PAGE4_AUTHOR 68 +#define PAGE4_EMAIL_TXT 69 +#define PAGE4_EMAIL_EDIT 70 +#define PAGE4_WWW_TXT 71 +#define PAGE4_WWW_EDIT 72 +#define PAGE4_TITEL_2 73 +#define PAGE4_MISC 74 +#define PAGE4_DOWNLOAD 75 +#define PAGE4_CREATED 76 + +////////////////////////////// + +#define PAGE5_BMP 80 +#define PAGE5_TITEL 81 +#define PAGE5_TEXTONLY 82 +#define PAGE5_BUTTONS 83 +#define PAGE5_TITEL_2 84 +#define PAGE5_NOBACK 85 +#define PAGE5_BACKS 86 + +////////////////////////////// + +#define PAGE6_BMP 100 +#define PAGE6_TITEL 101 +#define PAGE6_DEFAULT 102 +#define PAGE6_USER 103 +#define PAGE6_BACK 104 +#define PAGE6_TEXT 105 +#define PAGE6_LINK 106 +#define PAGE6_VLINK 107 +#define PAGE6_ALINK 108 +#define PAGE6_DOCCOLORS 109 +#define PAGE6_USECOLOR 110 +#define PAGE6_PREVIEW 111 + +////////////////////////////// + +//#define PAGE6_PAGE_SND 128 + +////////////////////////////// + +#define BUT_LAST 200 +#define BUT_NEXT 201 +#define BUT_FINISH 202 +#define BUT_CANCEL 203 +#define BUT_HELP 204 +#define BOTTOM_LINE 205 + +////////////////////////////// + +#define DLG_PUBLISHING 739 + +////////////////////////////// + +#define BTN_SAVE 1 +#define BTN_NOSAVE 2 +#define EDT_NAME 3 +#define DLG_DESIGNNAME 740 diff --git a/sd/source/ui/inc/pubdlg.hxx b/sd/source/ui/inc/pubdlg.hxx new file mode 100755 index 000000000000..2f14066021ed --- /dev/null +++ b/sd/source/ui/inc/pubdlg.hxx @@ -0,0 +1,235 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SD_PUBDLG_HXX +#define _SD_PUBDLG_HXX + +#include <com/sun/star/beans/PropertyValue.hpp> +#include <vcl/fixed.hxx> +#ifndef _GROUP_HXX //autogen +#include <vcl/group.hxx> +#endif +#ifndef _BUTTON_HXX //autogen +#include <vcl/button.hxx> +#endif +#ifndef _BUTTON_HXX //autogen +#include <vcl/button.hxx> +#endif +#ifndef _FIELD_HXX //autogen +#include <vcl/field.hxx> +#endif +#ifndef _DIALOG_HXX //autogen +#include <vcl/dialog.hxx> +#endif +#include "resltn.hxx" // enum PublishingResolution +#include "pres.hxx" +#include "assclass.hxx" + +#include <boost/scoped_ptr.hpp> + +#define NOOFPAGES 6 + +enum HtmlPublishMode { PUBLISH_HTML, PUBLISH_FRAMES, PUBLISH_WEBCAST, PUBLISH_KIOSK }; + +class SfxItemSet; + +class FixedText; +class RadioButton; +class ListBox; +class ComboBox; +class Edit; +class MultiLineEdit; +class ValueSet; +class SdHtmlAttrPreview; +class List; +class SdPublishingDesign; +class ButtonSet; + +// ********************************************************************* +// Html-Export Autopilot +// ********************************************************************* + +class SdPublishingDlg : public ModalDialog +{ +private: + // page 1 controls + FixedBitmap* pPage1_Bmp; + FixedLine* pPage1_Titel; + RadioButton* pPage1_NewDesign; + RadioButton* pPage1_OldDesign; + ListBox* pPage1_Designs; + PushButton* pPage1_DelDesign; + FixedText* pPage1_Desc; + + // page 2 controls + FixedBitmap* pPage2_Bmp; + FixedLine* pPage2_Titel; + RadioButton* pPage2_Standard; + RadioButton* pPage2_Frames; + RadioButton* pPage2_Kiosk; + RadioButton* pPage2_WebCast; + FixedBitmap* pPage2_Standard_FB; + FixedBitmap* pPage2_Frames_FB; + FixedBitmap* pPage2_Kiosk_FB; + FixedBitmap* pPage2_WebCast_FB; + + FixedLine* pPage2_Titel_Html; + CheckBox* pPage2_Content; + CheckBox* pPage2_Notes; + + FixedLine* pPage2_Titel_WebCast; + RadioButton* pPage2_ASP; + RadioButton* pPage2_PERL; + FixedText* pPage2_URL_txt; + Edit* pPage2_URL; + FixedText* pPage2_CGI_txt; + Edit* pPage2_CGI; + FixedText* pPage2_Index_txt; + Edit* pPage2_Index; + FixedLine* pPage2_Vert; + FixedLine* pPage2_Titel_Kiosk; + RadioButton* pPage2_ChgDefault; + RadioButton* pPage2_ChgAuto; + FixedText* pPage2_Duration_txt; + TimeField* pPage2_Duration; + CheckBox* pPage2_Endless; + + // page 3 controls + FixedBitmap* pPage3_Bmp; + FixedLine* pPage3_Titel1; + RadioButton* pPage3_Png; + RadioButton* pPage3_Gif; + RadioButton* pPage3_Jpg; + FixedText* pPage3_Quality_txt; + ComboBox* pPage3_Quality; + FixedLine* pPage3_Vert; + FixedLine* pPage3_Titel2; + RadioButton* pPage3_Resolution_1; + RadioButton* pPage3_Resolution_2; + RadioButton* pPage3_Resolution_3; + FixedLine* pPage3_Titel3; + CheckBox* pPage3_SldSound; + CheckBox* pPage3_HiddenSlides; + // page 4 controls + + FixedBitmap* pPage4_Bmp; + FixedLine* pPage4_Titel1; + FixedText* pPage4_Author_txt; + Edit* pPage4_Author; + FixedText* pPage4_Email_txt; + Edit* pPage4_Email; + FixedText* pPage4_WWW_txt; + Edit* pPage4_WWW; + FixedText* pPage4_Titel2; + MultiLineEdit* pPage4_Misc; + CheckBox* pPage4_Download; +//-/ CheckBox* pPage4_Created; + + // page 5 controls + + FixedBitmap* pPage5_Bmp; + FixedLine* pPage5_Titel; + CheckBox* pPage5_TextOnly; + ValueSet* pPage5_Buttons; + + // page 6 controls + + FixedBitmap* pPage6_Bmp; + FixedLine* pPage6_Titel; + RadioButton* pPage6_Default; + RadioButton* pPage6_User; + PushButton* pPage6_Back; + PushButton* pPage6_Text; + PushButton* pPage6_Link; + PushButton* pPage6_VLink; + PushButton* pPage6_ALink; + RadioButton* pPage6_DocColors; + SdHtmlAttrPreview* pPage6_Preview; + + boost::scoped_ptr< ButtonSet > mpButtonSet; + +// CheckBox* pPage6_Sound; + + // standard controls + FixedLine aBottomLine; + HelpButton aHelpButton; + CancelButton aCancelButton; + PushButton aLastPageButton; + PushButton aNextPageButton; + OKButton aFinishButton; + + Assistent aAssistentFunc; + + sal_Bool m_bImpress; + sal_Bool m_bButtonsDirty; + + void SetDefaults(); + void CreatePages(); + void RemovePages(); + + Color m_aBackColor, m_aTextColor, m_aLinkColor; + Color m_aVLinkColor, m_aALinkColor; + + void ChangePage(); + void UpdatePage(); + + List* m_pDesignList; + sal_Bool m_bDesignListDirty; + SdPublishingDesign* m_pDesign; + sal_Bool Load(); + sal_Bool Save(); + + void GetDesign( SdPublishingDesign* pDesign ); + void SetDesign( SdPublishingDesign* pDesign ); + + void LoadPreviewButtons(); + + DECL_LINK( FinishHdl, OKButton * ); + DECL_LINK( NextPageHdl, PushButton * ); + DECL_LINK( LastPageHdl, PushButton * ); + + DECL_LINK( DesignHdl, RadioButton * ); + DECL_LINK( DesignSelectHdl, ListBox * ); + DECL_LINK( DesignDeleteHdl, PushButton * ); + DECL_LINK( BaseHdl, RadioButton * ); + DECL_LINK( ContentHdl, RadioButton * ); + DECL_LINK( GfxFormatHdl, RadioButton * ); + DECL_LINK( ResolutionHdl, RadioButton * ); + DECL_LINK( ButtonsHdl, ValueSet* ); + DECL_LINK( ColorHdl, PushButton * ); + DECL_LINK( WebServerHdl, RadioButton * ); + DECL_LINK( SlideChgHdl, RadioButton* ); + +public: + + SdPublishingDlg(Window* pWindow, DocumentType eDocType); + ~SdPublishingDlg(); + + void GetParameterSequence( ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& rParams ); +}; + +#endif // _SD_PUBDLG_HXX diff --git a/sd/source/ui/inc/res_bmp.hrc b/sd/source/ui/inc/res_bmp.hrc new file mode 100755 index 000000000000..1602dc698f3f --- /dev/null +++ b/sd/source/ui/inc/res_bmp.hrc @@ -0,0 +1,341 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include "sfx2/sfx.hrc" +#include "cfgids.hxx" + +// ----------- +// - Defines - +// ----------- + +#define IMAGE_MASK_STDCOLOR Color{ Red = 0xff00; Green = 0x0000; Blue = 0xff00; } +#define IMAGE_MASK_STDCOLOR_HC IMAGE_MASK_STDCOLOR +#define IMAGE_STDBTN_COLOR_HC COL_LIGHTMAGENTA + +#define RID_ALIGNMENT RID_APP_START+1 +#define RID_ZOOM RID_APP_START+2 +#define RID_CONTROLS RID_APP_START+3 +#define RID_IMPRESS_DOCWINDOWICON RID_APP_START+4 + +#define RID_ALIGNMENT_TBX RID_APP_START+5 +#define RID_ZOOM_TBX RID_APP_START+6 +#define RID_CHOOSE_MODE RID_APP_START+7 +#define RID_CHOOSE_MODE_TBX RID_APP_START+8 + +#define RID_TEXT RID_APP_START+10 +#define RID_TEXT_TBX RID_APP_START+11 +#define RID_RECTANGLES RID_APP_START+12 +#define RID_RECTANGLES_TBX RID_APP_START+13 +#define RID_ELLIPSES RID_APP_START+14 +#define RID_ELLIPSES_TBX RID_APP_START+15 +#define RID_LINES RID_APP_START+16 +#define RID_LINES_TBX RID_APP_START+17 +#define RID_3D_OBJECTS RID_APP_START+18 +#define RID_3D_OBJECTS_TBX RID_APP_START+19 +#define RID_INSERT RID_APP_START+20 +#define RID_INSERT_TBX RID_APP_START+21 +#define RID_POSITION RID_APP_START+22 +#define RID_POSITION_TBX RID_APP_START+23 +#define RID_CONNECTORS RID_APP_START+24 +#define RID_CONNECTORS_TBX RID_APP_START+25 +#define RID_ARROWS RID_APP_START+26 +#define RID_ARROWS_TBX RID_APP_START+27 +#define RID_DRAW_DOCWINDOWICON RID_APP_START+28 +#define RID_GRAFFILTERS RID_APP_START+29 +#define RID_GRAFFILTERS_TBX RID_APP_START+30 + +// Bitmaps fuer Tree-ListBox im Effekte-TabDialog +#define BMP_PAGE RID_APP_START+42 +#define BMP_PAGEOBJS RID_APP_START+43 +#define BMP_OBJECTS RID_APP_START+44 +#define BMP_DOC_OPEN RID_APP_START+45 +#define BMP_DOC_CLOSED RID_APP_START+46 +#define BMP_DOC_TEXT RID_APP_START+47 +#define BMP_OLE RID_APP_START+48 +#define BMP_PAGE_EXCLUDED RID_APP_START+49 +#define BMP_PAGEOBJS_EXCLUDED RID_APP_START+50 +#define BMP_EXPAND RID_APP_START+51 +#define BMP_COLLAPSE RID_APP_START+52 +#define BMP_GRAPHIC RID_APP_START+53 + +// Bimaps fuer ValueSet im EffekteWindow +#define BMP_EFFECT_NONE RID_APP_START+105 +#define BMP_TEXTEFFECT_DISCARD_FROM_T RID_APP_START+106 +#define BMP_TEXTEFFECT_FADE_FROM_CENTER RID_APP_START+107 +#define BMP_EFFECT_HIDE RID_APP_START+108 +#define BMP_EFFECT_APPEAR RID_APP_START+109 + +// ----------------------------------------------------------------------------- + +#define BMP_FOIL_NONE RID_APP_START+120 +#define BMP_GROUP RID_APP_START+121 +#define BMP_WAIT_ICON RID_APP_START+124 + +// ----------------------------------------------------------------------------- +// additional effects +#define BMP_EFFECT_DISCARD_FROM_UL RID_APP_START+130 +#define BMP_EFFECT_DISCARD_FROM_UR RID_APP_START+131 +#define BMP_EFFECT_DISCARD_FROM_LR RID_APP_START+132 +#define BMP_EFFECT_DISCARD_FROM_LL RID_APP_START+133 +#define BMP_EFFECT_DISCARD_S_FROM_L RID_APP_START+134 +#define BMP_EFFECT_DISCARD_S_FROM_UL RID_APP_START+135 +#define BMP_EFFECT_DISCARD_S_FROM_T RID_APP_START+136 +#define BMP_EFFECT_DISCARD_S_FROM_UR RID_APP_START+137 +#define BMP_EFFECT_DISCARD_S_FROM_R RID_APP_START+138 +#define BMP_EFFECT_DISCARD_S_FROM_LR RID_APP_START+139 +#define BMP_EFFECT_DISCARD_S_FROM_B RID_APP_START+140 +#define BMP_EFFECT_DISCARD_S_FROM_LL RID_APP_START+141 +#define BMP_EFFECT_VERTICAL_CHECKERBOARD RID_APP_START+142 +#define BMP_EFFECT_HORIZONTAL_CHECKERBOARD RID_APP_START+143 +#define BMP_EFFECT_STRTCH_FROM_L RID_APP_START+144 +#define BMP_EFFECT_STRTCH_FROM_UL RID_APP_START+145 +#define BMP_EFFECT_STRTCH_FROM_T RID_APP_START+146 +#define BMP_EFFECT_STRTCH_FROM_UR RID_APP_START+147 +#define BMP_EFFECT_STRTCH_FROM_R RID_APP_START+148 +#define BMP_EFFECT_STRTCH_FROM_LR RID_APP_START+149 +#define BMP_EFFECT_STRTCH_FROM_B RID_APP_START+150 +#define BMP_EFFECT_STRTCH_FROM_LL RID_APP_START+151 + +#define BMP_EFFECT_STRTCH_HORIZONTAL RID_APP_START+152 +#define BMP_EFFECT_STRTCH_VERTICAL RID_APP_START+153 +#define BMP_EFFECT_ROTATE_HORIZONTAL RID_APP_START+154 +#define BMP_EFFECT_ROTATE_VERTICAL RID_APP_START+155 + +#define BMP_FOIL_21 RID_APP_START+156 +#define BMP_FOIL_22 RID_APP_START+157 +#define BMP_FOIL_23 RID_APP_START+158 +#define BMP_FOIL_24 RID_APP_START+159 + +#define BMP_EFFECT_UNCOVER_TO_L RID_APP_START+165 +#define BMP_EFFECT_UNCOVER_TO_UL RID_APP_START+166 +#define BMP_EFFECT_UNCOVER_TO_T RID_APP_START+167 +#define BMP_EFFECT_UNCOVER_TO_UR RID_APP_START+168 +#define BMP_EFFECT_UNCOVER_TO_R RID_APP_START+169 +#define BMP_EFFECT_UNCOVER_TO_LR RID_APP_START+170 +#define BMP_EFFECT_UNCOVER_TO_B RID_APP_START+171 +#define BMP_EFFECT_UNCOVER_TO_LL RID_APP_START+172 + +#define BMP_PAGE_H RID_SD_START+213 +#define BMP_PAGEOBJS_H RID_SD_START+214 +#define BMP_OBJECTS_H RID_SD_START+215 +#define BMP_DOC_OPEN_H RID_SD_START+216 +#define BMP_DOC_CLOSED_H RID_SD_START+217 +#define BMP_DOC_TEXT_H RID_SD_START+218 +#define BMP_OLE_H RID_SD_START+219 +#define BMP_PAGE_EXCLUDED_H RID_SD_START+220 +#define BMP_PAGEOBJS_EXCLUDED_H RID_SD_START+221 +#define BMP_EXPAND_H RID_SD_START+222 +#define BMP_COLLAPSE_H RID_SD_START+223 +#define BMP_GRAPHIC_H RID_SD_START+224 + +#define BMP_FOIL_NONE_H RID_SD_START+225 +#define BMP_GROUP_H RID_SD_START+226 +#define BMP_WAIT_ICON_H RID_SD_START+229 + +#define BMP_FADE_EFFECT_INDICATOR RID_SD_START+331 +#define BMP_FADE_EFFECT_INDICATOR_H RID_SD_START+332 + +#define BMP_COMMENTS_INDICATOR RID_SD_START+338 +#define BMP_COMMENTS_INDICATOR_H RID_SD_START+339 + +#define BMP_LAYOUT_EMPTY RID_SD_START+340 +#define BMP_LAYOUT_EMPTY_H RID_SD_START+341 +#define BMP_LAYOUT_HEAD01 RID_SD_START+342 +#define BMP_LAYOUT_HEAD01_H RID_SD_START+343 +#define BMP_LAYOUT_HEAD02 RID_SD_START+344 +#define BMP_LAYOUT_HEAD02_H RID_SD_START+345 +#define BMP_LAYOUT_HEAD02A RID_SD_START+346 +#define BMP_LAYOUT_HEAD02A_H RID_SD_START+347 +#define BMP_LAYOUT_HEAD02B RID_SD_START+348 +#define BMP_LAYOUT_HEAD02B_H RID_SD_START+349 +#define BMP_LAYOUT_HEAD03 RID_SD_START+350 +#define BMP_LAYOUT_HEAD03_H RID_SD_START+351 +#define BMP_LAYOUT_HEAD03A RID_SD_START+352 +#define BMP_LAYOUT_HEAD03A_H RID_SD_START+353 +#define BMP_LAYOUT_HEAD03B RID_SD_START+354 +#define BMP_LAYOUT_HEAD03B_H RID_SD_START+355 +#define BMP_LAYOUT_HEAD03C RID_SD_START+356 +#define BMP_LAYOUT_HEAD03C_H RID_SD_START+357 +#define BMP_LAYOUT_HEAD04 RID_SD_START+358 +#define BMP_LAYOUT_HEAD04_H RID_SD_START+359 +#define BMP_LAYOUT_HEAD06 RID_SD_START+360 +#define BMP_LAYOUT_HEAD06_H RID_SD_START+361 +#define BMP_LAYOUT_TEXTONLY RID_SD_START+362 +#define BMP_LAYOUT_TEXTONLY_H RID_SD_START+363 +#define BMP_LAYOUT_VERTICAL01 RID_SD_START+364 +#define BMP_LAYOUT_VERTICAL01_H RID_SD_START+365 +#define BMP_LAYOUT_VERTICAL02 RID_SD_START+366 +#define BMP_LAYOUT_VERTICAL02_H RID_SD_START+367 + +#define BMP_FOILH_01 RID_SD_START+388 +#define BMP_FOILH_01_H RID_SD_START+389 +#define BMP_FOILH_02 RID_SD_START+390 +#define BMP_FOILH_02_H RID_SD_START+391 +#define BMP_FOILH_03 RID_SD_START+392 +#define BMP_FOILH_03_H RID_SD_START+393 +#define BMP_FOILH_04 RID_SD_START+394 +#define BMP_FOILH_04_H RID_SD_START+395 +#define BMP_FOILH_06 RID_SD_START+396 +#define BMP_FOILH_06_H RID_SD_START+397 +#define BMP_FOILH_09 RID_SD_START+398 +#define BMP_FOILH_09_H RID_SD_START+399 + +#define BMP_FOILN_01 RID_SD_START+400 +#define BMP_FOILN_01_H RID_SD_START+401 + +#define BMP_PLACEHOLDER_SMALL_START (RID_SD_START+402) // these ids must stay in order! +#define BMP_PLACEHOLDER_TABLE_SMALL (RID_SD_START+402) +#define BMP_PLACEHOLDER_CHART_SMALL (RID_SD_START+403) +#define BMP_PLACEHOLDER_IMAGE_SMALL (RID_SD_START+404) +#define BMP_PLACEHOLDER_MOVIE_SMALL (RID_SD_START+405) +#define BMP_PLACEHOLDER_TABLE_SMALL_HOVER (RID_SD_START+406) +#define BMP_PLACEHOLDER_CHART_SMALL_HOVER (RID_SD_START+407) +#define BMP_PLACEHOLDER_IMAGE_SMALL_HOVER (RID_SD_START+408) +#define BMP_PLACEHOLDER_MOVIE_SMALL_HOVER (RID_SD_START+409) +#define BMP_PLACEHOLDER_SMALL_END (RID_SD_START+410) +#define BMP_PLACEHOLDER_LARGE_START (RID_SD_START+410) +#define BMP_PLACEHOLDER_TABLE_LARGE (RID_SD_START+410) +#define BMP_PLACEHOLDER_CHART_LARGE (RID_SD_START+411) +#define BMP_PLACEHOLDER_IMAGE_LARGE (RID_SD_START+412) +#define BMP_PLACEHOLDER_MOVIE_LARGE (RID_SD_START+413) +#define BMP_PLACEHOLDER_TABLE_LARGE_HOVER (RID_SD_START+414) +#define BMP_PLACEHOLDER_CHART_LARGE_HOVER (RID_SD_START+415) +#define BMP_PLACEHOLDER_IMAGE_LARGE_HOVER (RID_SD_START+416) +#define BMP_PLACEHOLDER_MOVIE_LARGE_HOVER (RID_SD_START+417) +#define BMP_PLACEHOLDER_LARGE_END (RID_SD_START+418) // until here! + +// ----------------------------------------------------------------------------- + +#define IMG_PIPETTE_H RID_APP_START+21 +#define IMG_GET1OBJECT_H RID_APP_START+22 +#define IMG_GETALLOBJECT_H RID_APP_START+23 +#define IMG_REMOVEBMP_H RID_APP_START+24 +#define IMG_REMOVEALLBMP_H RID_APP_START+25 + +/* + * ResourceIDs fuer Popup-Menues brauchen keinen Dummy-String !!! + */ + +#define RID_DRAW_TEXTOBJ_POPUP RID_APP_START+43 +#define RID_DRAW_GEOMOBJ_POPUP RID_APP_START+44 +#define RID_DRAW_NOSEL_POPUP RID_APP_START+45 +#define RID_SLIDE_SORTER_IMPRESS_SEL_POPUP RID_APP_START+46 +#define RID_BEZIER_POPUP RID_APP_START+47 +#define RID_DRAW_LINEOBJ_POPUP RID_APP_START+48 +#define RID_DRAW_MULTISELECTION_POPUP RID_APP_START+49 +#define RID_DRAW_PAGETAB_POPUP RID_APP_START+50 +#define RID_LAYERTAB_POPUP RID_APP_START+51 +#define RID_DRAW_GRAPHIC_POPUP RID_APP_START+52 +#define RID_DRAW_OLE2_POPUP RID_APP_START+53 +#define RID_DRAW_TEXTOBJ_INSIDE_POPUP RID_APP_START+54 +#define RID_SLIDE_SORTER_IMPRESS_NOSEL_POPUP RID_APP_START+55 +#define RID_OUTLINE_POPUP RID_APP_START+56 +#define RID_MASTERPAGE_POPUP RID_APP_START+57 +#define RID_DRAW_GROUPOBJ_POPUP RID_APP_START+58 +#define RID_DRAW_3DOBJ_POPUP RID_APP_START+59 +#define RID_DRAW_MEASUREOBJ_POPUP RID_APP_START+60 +#define RID_DRAW_EDGEOBJ_POPUP RID_APP_START+61 +#define RID_DRAW_BMP_CONVERT_POPUP RID_APP_START+62 +#define RID_DRAW_POLYLINEOBJ_POPUP RID_APP_START+63 +#define RID_DRAW_3DSCENE_POPUP RID_APP_START+64 +#define RID_DRAW_3DSCENE2_POPUP RID_APP_START+65 +#define RID_DRAW_CUSTOMSHAPE_POPUP RID_APP_START+66 +#define RID_TASKPANE_MASTERPAGESSELECTOR_POPUP RID_APP_START+67 +#define RID_TASKPANE_LAYOUTMENU_POPUP RID_APP_START+68 +#define RID_DRAW_MEDIA_POPUP RID_APP_START+69 + +// Draw (Graphic) +#define RID_GRAPHIC_TEXTOBJ_POPUP RID_APP_START+70 +#define RID_GRAPHIC_GEOMOBJ_POPUP RID_APP_START+71 +#define RID_GRAPHIC_NOSEL_POPUP RID_APP_START+72 +#define RID_GRAPHIC_LINEOBJ_POPUP RID_APP_START+73 +#define RID_GRAPHIC_MULTISELECTION_POPUP RID_APP_START+74 +#define RID_GRAPHIC_PAGETAB_POPUP RID_APP_START+75 +#define RID_GRAPHIC_GRAPHIC_POPUP RID_APP_START+76 +#define RID_GRAPHIC_OLE2_POPUP RID_APP_START+77 +#define RID_GRAPHIC_GROUPOBJ_POPUP RID_APP_START+78 +#define RID_GRAPHIC_3DOBJ_POPUP RID_APP_START+79 +#define RID_GRAPHIC_MEASUREOBJ_POPUP RID_APP_START+80 +#define RID_GRAPHIC_EDGEOBJ_POPUP RID_APP_START+81 +#define RID_GRAPHIC_POLYLINEOBJ_POPUP RID_APP_START+82 +#define RID_GRAPHIC_3DSCENE_POPUP RID_APP_START+83 +#define RID_GRAPHIC_3DSCENE2_POPUP RID_APP_START+84 +#define RID_GRAPHIC_CUSTOMSHAPE_POPUP RID_APP_START+85 +#define RID_GRAPHIC_MEDIA_POPUP RID_APP_START+86 + +#define RID_SLIDE_SORTER_DRAW_SEL_POPUP RID_APP_START+87 +#define RID_SLIDE_SORTER_DRAW_NOSEL_POPUP RID_APP_START+88 +#define RID_SLIDE_SORTER_MASTER_SEL_POPUP RID_APP_START+89 +#define RID_SLIDE_SORTER_MASTER_NOSEL_POPUP RID_APP_START+90 + +#define RID_DRAW_TABLE_POPUP RID_APP_START+91 +#define RID_GRAPHIC_TABLE_POPUP RID_APP_START+92 + +#define RID_TASKPANE_CURRENT_MASTERPAGESSELECTOR_POPUP RID_APP_START+93 + +#define RID_DRAW_TABLEOBJ_INSIDE_POPUP RID_APP_START+94 + +/* + * Pointer (Mauszeiger) + */ +#define PTR_WATERCAN RID_APP_START+100 +#define PTR_PENCIL RID_APP_START+101 + + +/* + * Globale Dialog-IDs + */ +#define DLG_FONTWORK RID_APP_START+150 + +/* + * ResourceIDs fuer Toolboxen nicht aendern, ohne die Strings in + * strings.hrc auf die selben IDs zu setzen (eine Toolbox und sein + * Konfigurationsstring muessen dieselbe ResourceID haben!). + */ + +// --> Jetzt in cfgids.hxx +/* +#define _RID_DRAW_TOOLBOX RID_APP_START+200 +#define _RID_SLIDE_TOOLBOX RID_APP_START+201 +#define _RID_DRAW_OBJ_TOOLBOX RID_APP_START+202 +#define _RID_SLIDE_OBJ_TOOLBOX RID_APP_START+203 +#define _RID_BEZIER_TOOLBOX RID_APP_START+204 +#define _RID_TEXT_TOOLBOX RID_APP_START+205 +#define _RID_OUTLINE_TOOLBOX RID_APP_START+206 +#define _RID_DRAW_POLYLINEOBJ_POPUP RID_APP_START+207 +#define _RID_GLUEPOINTS_TOOLBOX RID_APP_START+208 +*/ + + +#define RID_DRAW_SNAPOBJECT_POPUP RID_APP_START+390 +#define RID_DRAW_GLUEPOINT_POPUP RID_APP_START+392 +#define RID_DRAW_CONTROL_POPUP RID_APP_START+393 +#define RID_FORM_CONTROL_POPUP RID_APP_START+394 + +#define RID_GRAPHICSTYLEFAMILY RID_APP_START+395 +#define RID_PRESENTATIONSTYLEFAMILY RID_APP_START+396 +#define RID_GRAPHICSCELLFAMILY RID_APP_START+397 + diff --git a/sd/source/ui/inc/sdpopup.hxx b/sd/source/ui/inc/sdpopup.hxx new file mode 100644 index 000000000000..407d63ac4c8c --- /dev/null +++ b/sd/source/ui/inc/sdpopup.hxx @@ -0,0 +1,61 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + + +#ifndef _SD_SDPOPUP_HXX +#define _SD_SDPOPUP_HXX + + +#include <vcl/menu.hxx> + +class SvxFieldData; + +/************************************************************************* +|* +|* PopupMenu zum Bearbeiten von Feldbefehlen +|* +\************************************************************************/ + +class SdFieldPopup : public PopupMenu +{ +private: + const SvxFieldData* pField; + + void Fill( LanguageType eLanguage ); + +public: + SdFieldPopup( const SvxFieldData* pInField, LanguageType eLanguage ); + ~SdFieldPopup(); + + //virtual void Select(); + + SvxFieldData* GetField(); +}; + + + +#endif // _SD_SDPOPUP_HXX diff --git a/sd/source/ui/inc/sdpreslt.hrc b/sd/source/ui/inc/sdpreslt.hrc new file mode 100644 index 000000000000..19c3ded484fb --- /dev/null +++ b/sd/source/ui/inc/sdpreslt.hrc @@ -0,0 +1,36 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#define DLG_PRESLT 868 +#define BTN_OK 1 +#define BTN_CANCEL 1 +#define BTN_LOAD 2 +#define BTN_HELP 1 +#define VS_LAYOUT 1 +#define FT_LAYOUT 1 +#define CBX_MASTER_PAGE 1 +#define CBX_CHECK_MASTERS 2 + diff --git a/sd/source/ui/inc/sdpreslt.hxx b/sd/source/ui/inc/sdpreslt.hxx new file mode 100644 index 000000000000..d3f2f5039526 --- /dev/null +++ b/sd/source/ui/inc/sdpreslt.hxx @@ -0,0 +1,89 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_PRES_LAYOUT_DLG_HXX +#define SD_PRES_LAYOUT_DLG_HXX + +#include <vcl/dialog.hxx> +#ifndef _SV_BUTTON_HXX //autogen +#include <vcl/button.hxx> +#endif +#include <vcl/fixed.hxx> +#include <svtools/valueset.hxx> + +class SfxItemSet; + +namespace sd { +class DrawDocShell; +class ViewShell; +} + + + +class SdPresLayoutDlg + : public ModalDialog +{ +public: + SdPresLayoutDlg( + ::sd::DrawDocShell* pDocShell, + ::sd::ViewShell* pViewShell, + ::Window* pWindow, + const SfxItemSet& rInAttrs); + + virtual ~SdPresLayoutDlg (void); + + void GetAttr(SfxItemSet& rOutAttrs); + + DECL_LINK(ClickLayoutHdl, void *); + DECL_LINK(ClickLoadHdl, void *); + +private: + ::sd::DrawDocShell* mpDocSh; + ::sd::ViewShell* mpViewSh; + FixedText maFtLayout; + ValueSet maVS; + OKButton maBtnOK; + CancelButton maBtnCancel; + HelpButton maBtnHelp; + CheckBox maCbxMasterPage; + CheckBox maCbxCheckMasters; + PushButton maBtnLoad; + + const SfxItemSet& mrOutAttrs; + + List* mpLayoutNames; + + String maName; // Layoutname oder Dateiname + long mnLayoutCount; // Anzahl, der im Dokument vorhandenen MasterPages + const String maStrNone; + + void FillValueSet(); + void Reset(); +}; + +#endif + diff --git a/sd/source/ui/inc/sdstring.hrc b/sd/source/ui/inc/sdstring.hrc new file mode 100644 index 000000000000..0646da058faf --- /dev/null +++ b/sd/source/ui/inc/sdstring.hrc @@ -0,0 +1,35 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include <sfx2/sfx.hrc> +#define SID_SD_STRING_START RID_APP_START+300 + +// Texts for search and replace info and question boxes. +#define STR_SAR_NOT_FOUND SID_SD_STRING_START+23 +#define STR_SAR_WRAP_FORWARD SID_SD_STRING_START+24 +#define STR_SAR_WRAP_BACKWARD SID_SD_STRING_START+25 +#define STR_SAR_WRAP_FORWARD_DRAW SID_SD_STRING_START+26 +#define STR_SAR_WRAP_BACKWARD_DRAW SID_SD_STRING_START+27 diff --git a/sd/source/ui/inc/sdtreelb.hxx b/sd/source/ui/inc/sdtreelb.hxx new file mode 100755 index 000000000000..9681e9ba4230 --- /dev/null +++ b/sd/source/ui/inc/sdtreelb.hxx @@ -0,0 +1,272 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SDTREELB_HXX +#define _SDTREELB_HXX + +#include <svtools/transfer.hxx> + +#ifndef _SD_SDRESID_HXX +#include "sdresid.hxx" +#endif +#include "pres.hxx" +#include "sddllapi.h" +#include <tools/string.hxx> +#include <svtools/svtreebx.hxx> +#include <svl/urlbmk.hxx> +#include <tools/ref.hxx> +#include "sdxfer.hxx" + +class SdDrawDocument; +class SfxMedium; +class SfxViewFrame; +class SdNavigatorWin; +class SdrObject; +class SdrObjList; +class SdPage; +class SvLBoxEntry; + +namespace sd { +class DrawDocShell; +#ifndef SV_DECL_DRAW_DOC_SHELL_DEFINED +#define SV_DECL_DRAW_DOC_SHELL_DEFINED +SV_DECL_REF(DrawDocShell) +#endif +} + +/************************************************************************* +|* +|* Effekte-Tab-Dialog +|* +\************************************************************************/ + +class SD_DLLPUBLIC SdPageObjsTLB : public SvTreeListBox +{ +private: + + static sal_Bool SD_DLLPRIVATE bIsInDrag; // static, falls der Navigator im ExecuteDrag geloescht wird + +public: + + // nested class to implement the TransferableHelper + class SdPageObjsTransferable : public SdTransferable + { + public: + SdPageObjsTransferable( + SdPageObjsTLB& rParent, + const INetBookmark& rBookmark, + ::sd::DrawDocShell& rDocShell, + NavigatorDragType eDragType, + const ::com::sun::star::uno::Any& rTreeListBoxData ); + ::sd::DrawDocShell& GetDocShell() const; + NavigatorDragType GetDragType() const; + + static const ::com::sun::star::uno::Sequence< sal_Int8 >& getUnoTunnelId(); + static SdPageObjsTransferable* getImplementation( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& rxData ) throw(); + /** Return a temporary transferable data flavor that is used + internally in the navigator for reordering entries. Its + lifetime ends with the office application. + */ + static sal_uInt32 GetListBoxDropFormatId (void); + + private: + /** Temporary drop flavor id that is used internally in the + navigator. + */ + static sal_uInt32 mnListBoxDropFormatId; + + SdPageObjsTLB& mrParent; + INetBookmark maBookmark; + ::sd::DrawDocShell& mrDocShell; + NavigatorDragType meDragType; + const ::com::sun::star::uno::Any maTreeListBoxData; + + SD_DLLPRIVATE virtual ~SdPageObjsTransferable(); + + SD_DLLPRIVATE virtual void AddSupportedFormats(); + SD_DLLPRIVATE virtual sal_Bool GetData( const ::com::sun::star::datatransfer::DataFlavor& rFlavor ); + SD_DLLPRIVATE virtual void DragFinished( sal_Int8 nDropAction ); + + SD_DLLPRIVATE virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& rId ) throw( ::com::sun::star::uno::RuntimeException ); + }; + + friend class SdPageObjsTLB::SdPageObjsTransferable; + + /** Determine whether the specified page belongs to the current show + which is either the standard show or a custom show. + @param pPage + Pointer to the page for which to check whether it belongs to the + show. + @return + Returns <FALSE/> if there is no custom show or if the current + show does not contain the specified page at least once. + */ + bool PageBelongsToCurrentShow (const SdPage* pPage) const; + +protected: + + Window* mpParent; + const SdDrawDocument* mpDoc; + SdDrawDocument* mpBookmarkDoc; + SfxMedium* mpMedium; + SfxMedium* mpOwnMedium; + Image maImgOle; + Image maImgGraphic; + Image maImgOleH; + Image maImgGraphicH; + sal_Bool mbLinkableSelected; + sal_Bool mbDragEnabled; + String maDocName; + ::sd::DrawDocShellRef mxBookmarkDocShRef; // Zum Laden von Bookmarks + ::sd::DrawDocShell* mpDropDocSh; + SdNavigatorWin* mpDropNavWin; + SfxViewFrame* mpFrame; + + // DragSourceHelper + virtual void StartDrag( sal_Int8 nAction, const Point& rPosPixel ); + + // DropTargetHelper + virtual sal_Int8 AcceptDrop( const AcceptDropEvent& rEvt ); + virtual sal_Int8 ExecuteDrop( const ExecuteDropEvent& rEvt ); + + virtual void RequestingChilds( SvLBoxEntry* pParent ); + + void DoDrag(); + void OnDragFinished( sal_uInt8 nDropAction ); + + /** Return the name of the object. When the object has no user supplied + name and the bCreate flag is <TRUE/> then a name is created + automatically. Additionally the mbShowAllShapes flag is taken into + account when there is no user supplied name. When this flag is + <FALSE/> then no name is created. + @param pObject + When this is NULL then an empty string is returned, regardless + of the value of bCreate. + @param bCreate + This flag controls for objects without user supplied name + whether a name is created. When a name is created then this + name is not stored in the object. + */ + String GetObjectName ( + const SdrObject* pObject, + const bool bCreate = true) const; + void CloseBookmarkDoc(); + DECL_STATIC_LINK(SdPageObjsTLB, ExecDragHdl, void*); + + /** Handle the reordering of entries in the navigator. This method + reorders both the involved shapes in their page as well as the + associated list box entries. + */ + virtual sal_Bool NotifyMoving( + SvLBoxEntry* pTarget, + SvLBoxEntry* pEntry, + SvLBoxEntry*& rpNewParent, + sal_uLong& rNewChildPos); + + using Window::GetDropTarget; + virtual SvLBoxEntry* GetDropTarget (const Point& rLocation); + +public: + + SdPageObjsTLB( Window* pParent, const SdResId& rSdResId ); + ~SdPageObjsTLB(); + + virtual void SelectHdl(); + virtual void KeyInput( const KeyEvent& rKEvt ); + + void SetViewFrame( SfxViewFrame* pViewFrame ) { mpFrame = pViewFrame; } + SfxViewFrame* GetViewFrame() const { return mpFrame; } + + void Fill( const SdDrawDocument*, sal_Bool bAllPages, const String& rDocName ); + void Fill( const SdDrawDocument*, SfxMedium* pSfxMedium, const String& rDocName ); + void SetShowAllShapes (const bool bShowAllShapes, const bool bFill); + bool GetShowAllShapes (void) const; + sal_Bool IsEqualToDoc( const SdDrawDocument* pInDoc = NULL ); + sal_Bool HasSelectedChilds( const String& rName ); + sal_Bool SelectEntry( const String& rName ); + String GetSelectEntry(); + List* GetSelectEntryList( sal_uInt16 nDepth ); + SdDrawDocument* GetBookmarkDoc(SfxMedium* pMedium = NULL); + ::sd::DrawDocShell* GetDropDocSh() { return(mpDropDocSh); } + + sal_Bool IsLinkableSelected() const { return mbLinkableSelected; } + + static sal_Bool IsInDrag(); + using SvLBox::ExecuteDrop; + + using SvTreeListBox::SelectEntry; +private: + /** This flag controls whether all shapes are shown as children of pages + and group shapes or only the named shapes. + */ + bool mbShowAllShapes; + /** This flag controls whether to show all pages. + */ + bool mbShowAllPages; + + /** Return <TRUE/> when the current transferable may be dropped at the + given list box entry. + */ + bool IsDropAllowed (SvLBoxEntry* pEntry); + + /** This inner class is defined in sdtreelb.cxx and is basically a + container for the icons used in the list box for the entries. + */ + class IconProvider; + + /** Add one list box entry for the parent of the given shapes and one child entry for + each of the given shapes. + @param rList + The container of shapes that are to be inserted. + @param pShape + The parent shape or NULL when the parent is a page. + @param rsName + The name to be displayed for the new parent node. + @param bIsExcluded + Some pages can be excluded (from the show?). + @param pParentEntry + The parent entry of the new parent entry. + @param rIconProvider + Icons used to visualize the different shape and page types. + */ + void AddShapeList ( + const SdrObjList& rList, + SdrObject* pShape, + const ::rtl::OUString& rsName, + const bool bIsExcluded, + SvLBoxEntry* pParentEntry, + const IconProvider& rIconProvider); + + /** Add the given object to a transferable object so that the object can + be dragged and dropped without having a name. + */ + void AddShapeToTransferable ( + SdTransferable& rTransferable, + SdrObject& rObject) const; +}; + +#endif // _SDTREELB_HXX diff --git a/sd/source/ui/inc/sdundogr.hxx b/sd/source/ui/inc/sdundogr.hxx new file mode 100755 index 000000000000..5bc8da7c0ec3 --- /dev/null +++ b/sd/source/ui/inc/sdundogr.hxx @@ -0,0 +1,55 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SD_SDUNDOGR_HXX +#define _SD_SDUNDOGR_HXX + +#include <tools/contnr.hxx> +#include "sdundo.hxx" +#include "sddllapi.h" + +class SD_DLLPUBLIC SdUndoGroup : public SdUndoAction +{ + Container aCtn; +public: + TYPEINFO(); + SdUndoGroup(SdDrawDocument* pSdDrawDocument) + : SdUndoAction(pSdDrawDocument), + aCtn(16, 16, 16) {} + virtual ~SdUndoGroup(); + + virtual sal_Bool Merge( SfxUndoAction* pNextAction ); + + virtual void Undo(); + virtual void Redo(); + + void AddAction(SdUndoAction* pAction); + sal_uLong Count() const { return aCtn.Count(); } + +}; + +#endif // _SD_SDUNDOGR_HXX diff --git a/sd/source/ui/inc/sdxfer.hxx b/sd/source/ui/inc/sdxfer.hxx new file mode 100755 index 000000000000..f29b1d28936a --- /dev/null +++ b/sd/source/ui/inc/sdxfer.hxx @@ -0,0 +1,138 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SD_SDXFER_HXX +#define _SD_SDXFER_HXX + +#include <svtools/transfer.hxx> +#include <vcl/graph.hxx> +#include <sfx2/objsh.hxx> +#include <svl/lstner.hxx> + +// ------------------ +// - SdTransferable - +// ------------------ + +class SdDrawDocument; +class SdrObject; +class INetBookmark; +class ImageMap; +class VirtualDevice; + +namespace sd { +class DrawDocShell; +class View; +} + +class SfxObjectShellRef; +class SdTransferable : public TransferableHelper, public SfxListener +{ +public: + + SdTransferable( SdDrawDocument* pSrcDoc, ::sd::View* pWorkView, sal_Bool bInitOnGetData ); + ~SdTransferable(); + + void SetDocShell( const SfxObjectShellRef& rRef ) { maDocShellRef = rRef; } + const SfxObjectShellRef& GetDocShell() const { return maDocShellRef; } + + void SetWorkDocument( const SdDrawDocument* pWorkDoc ) { mpSdDrawDocument = mpSdDrawDocumentIntern = (SdDrawDocument*) pWorkDoc; } + const SdDrawDocument* GetWorkDocument() const { return mpSdDrawDocument; } + + void SetView( const ::sd::View* pView ) { mpSdView = pView; } + const ::sd::View* GetView() const { return mpSdView; } + + void SetObjectDescriptor( const TransferableObjectDescriptor& rObjDesc ); + + void SetStartPos( const Point& rStartPos ) { maStartPos = rStartPos; } + const Point& GetStartPos() const { return maStartPos; } + + void SetInternalMove( sal_Bool bSet ) { mbInternalMove = bSet; } + sal_Bool IsInternalMove() const { return mbInternalMove; } + + sal_Bool HasSourceDoc( const SdDrawDocument* pDoc ) const { return( mpSourceDoc == pDoc ); } + + void SetPageBookmarks( const List& rPageBookmarks, sal_Bool bPersistent ); + sal_Bool IsPageTransferable() const { return mbPageTransferable; } + sal_Bool HasPageBookmarks() const { return( mpPageDocShell && ( maPageBookmarks.Count() > 0 ) ); } + const List& GetPageBookmarks() const { return maPageBookmarks; } + ::sd::DrawDocShell* GetPageDocShell() const { return mpPageDocShell; } + + sal_Bool SetTableRTF( SdDrawDocument*, const ::com::sun::star::datatransfer::DataFlavor& ); + + static const ::com::sun::star::uno::Sequence< sal_Int8 >& getUnoTunnelId(); + static SdTransferable* getImplementation( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& rxData ) throw(); + + // SfxListener + virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); + +protected: + + virtual void AddSupportedFormats(); + virtual sal_Bool GetData( const ::com::sun::star::datatransfer::DataFlavor& rFlavor ); + virtual sal_Bool WriteObject( SotStorageStreamRef& rxOStm, void* pUserObject, sal_uInt32 nUserObjectId, const ::com::sun::star::datatransfer::DataFlavor& rFlavor ); + virtual void DragFinished( sal_Int8 nDropAction ); + virtual void ObjectReleased(); + + virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& rId ) throw( ::com::sun::star::uno::RuntimeException ); + +private: + + SfxObjectShellRef maDocShellRef; + ::sd::DrawDocShell* mpPageDocShell; + List maPageBookmarks; + TransferableDataHelper* mpOLEDataHelper; + TransferableObjectDescriptor* mpObjDesc; + const ::sd::View* mpSdView; + ::sd::View* mpSdViewIntern; + SdDrawDocument* mpSdDrawDocument; + SdDrawDocument* mpSdDrawDocumentIntern; + SdDrawDocument* mpSourceDoc; + VirtualDevice* mpVDev; + INetBookmark* mpBookmark; + Graphic* mpGraphic; + ImageMap* mpImageMap; + Rectangle maVisArea; + Point maStartPos; + sal_Bool mbInternalMove : 1; + sal_Bool mbOwnDocument : 1; + sal_Bool mbOwnView : 1; + sal_Bool mbLateInit : 1; + sal_Bool mbPageTransferable : 1; + sal_Bool mbPageTransferablePersistent : 1; + bool mbIsUnoObj : 1; + + // not available + SdTransferable(); + SdTransferable( const SdTransferable& ); + SdTransferable& operator=( const SdTransferable& ); + + void CreateObjectReplacement( SdrObject* pObj ); + void CreateData(); + +}; + +#endif // _SD_SDXFER_HXX diff --git a/sd/source/ui/inc/slideshow.hxx b/sd/source/ui/inc/slideshow.hxx new file mode 100755 index 000000000000..eda80feeb825 --- /dev/null +++ b/sd/source/ui/inc/slideshow.hxx @@ -0,0 +1,232 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SD_SLIDESHOW_HXX +#define _SD_SLIDESHOW_HXX + +#include <com/sun/star/presentation/XPresentation2.hpp> +#include <com/sun/star/lang/XServiceInfo.hpp> + +#include <rtl/ref.hxx> + +#include <tools/link.hxx> + +#include <cppuhelper/compbase2.hxx> +#include <cppuhelper/basemutex.hxx> + +#include <editeng/unoipset.hxx> + +#include <memory> +#include <boost/shared_ptr.hpp> + +namespace com { namespace sun { namespace star { + + namespace drawing { + class XDrawPage; + } + namespace animations { + class XAnimationNode; + } +} } } + +class SdDrawDocument; +class KeyEvent; +class HelpEvent; +class MouseEvent; +class Size; +class CommandEvent; +class Rectangle; +class Window; +class SfxRequest; + +// TODO: Remove +#define PAGE_NO_END 65535 +#define PAGE_NO_SOFTEND (PAGE_NO_END - 1) +#define PAGE_NO_PAUSE (PAGE_NO_SOFTEND - 1) +#define PAGE_NO_FIRSTDEF PAGE_NO_PAUSE // immer mit anpassen + +/* Definition of SlideShow class */ + +namespace sd +{ + +class SlideshowImpl; +class ShowWindow; +class Window; +class View; +class ViewShell; +struct PresentationSettings; +class EffectSequenceHelper; +class ViewShellBase; +struct PresentationSettingsEx; +class FrameView; + +enum AnimationMode +{ + ANIMATIONMODE_SHOW, + ANIMATIONMODE_VIEW, + ANIMATIONMODE_PREVIEW +}; + +typedef ::cppu::WeakComponentImplHelper2< ::com::sun::star::presentation::XPresentation2, ::com::sun::star::lang::XServiceInfo > SlideshowBase; + +class SlideShow : private ::cppu::BaseMutex, public SlideshowBase +{ +public: + /// used by the model to create a slideshow for it + static rtl::Reference< SlideShow > Create( SdDrawDocument* pDoc ); + + // static helper api + static rtl::Reference< SlideShow > GetSlideShow( SdDrawDocument* pDocument ); + static rtl::Reference< SlideShow > GetSlideShow( ViewShellBase& rBase ); + + static ::com::sun::star::uno::Reference< ::com::sun::star::presentation::XSlideShowController > GetSlideShowController(ViewShellBase& rBase ); + + static bool StartPreview( ViewShellBase& rBase, + const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage >& xDrawPage, + const ::com::sun::star::uno::Reference< ::com::sun::star::animations::XAnimationNode >& xAnimationNode, + ::Window* pParent = 0 ); + + static void Stop( ViewShellBase& rBase ); + + /// returns true if there is a running presentation for the given ViewShellBase + static bool IsRunning( ViewShellBase& rBase ); + + /// returns true if there is a running presentation inside the given ViewShell + /// returns false even if there is a running presentation but in another ViewShell + static bool IsRunning( ViewShell& rViewShell ); + + // helper api + + bool startPreview( + const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage >& xDrawPage, + const ::com::sun::star::uno::Reference< ::com::sun::star::animations::XAnimationNode >& xAnimationNode, + ::Window* pParent = 0 ); + + // uno api + + virtual void SAL_CALL disposing (void); + + // XServiceInfo + virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw (::com::sun::star::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw (::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw (::com::sun::star::uno::RuntimeException); + + // XPropertySet + virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( const ::rtl::OUString& PropertyName ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& xListener ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& aListener ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); + + // XPresentation + virtual void SAL_CALL start( ) throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL end( ) throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL rehearseTimings( ) throw (::com::sun::star::uno::RuntimeException); + + // XPresentation2 + virtual void SAL_CALL startWithArguments( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& Arguments ) throw (::com::sun::star::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL isRunning( ) throw (::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Reference< ::com::sun::star::presentation::XSlideShowController > SAL_CALL getController( ) throw (::com::sun::star::uno::RuntimeException); + + // legacy api + + // actions + void jumpToPageNumber( sal_Int32 nPage ); // a.k.a. FuSlideShow::JumpToPage() + void jumpToPageIndex( sal_Int32 nIndex ); + void jumpToBookmark( const ::rtl::OUString& sBookmark ); // a.k.a. FuSlideShow::JumpToBookmark() + + /** sets or clears the pause state of the running slideshow. + !!!! This should only be called by the SdShowWindow !!!!*/ + bool pause( bool bPause ); + + + // settings + bool isFullScreen(); // a.k.a. FuSlideShow::IsFullScreen() + bool isAlwaysOnTop(); // a.k.a. FuSlideShow::IsAlwaysOnTop(); + ShowWindow* getShowWindow(); // a.k.a. FuSlideShow::GetShowWindow() + int getAnimationMode(); // a.k.a. FuSlideShow::GetAnimationMode() + sal_Int32 getCurrentPageNumber(); // a.k.a. FuSlideShow::GetCurrentPage() + sal_Int32 getFirstPageNumber(); + sal_Int32 getLastPageNumber(); + bool isEndless(); + bool isDrawingPossible(); + + // events + void resize( const Size &rSize ); + void activate(ViewShellBase& rBase); + void deactivate(ViewShellBase& rBase); + void paint( const Rectangle& rRect ); + + bool keyInput(const KeyEvent& rKEvt); + + void receiveRequest(SfxRequest& rReq); + + bool dependsOn( ViewShellBase* pViewShellBase ); + + static sal_Int32 GetDisplay(); + +private: + SlideShow( SdDrawDocument* pDoc ); + + DECL_LINK( StartInPlacePresentationConfigurationHdl, void * ); + void StartInPlacePresentationConfigurationCallback(); + + void StartInPlacePresentation(); + void StartFullscreenPresentation(); + + void ThrowIfDisposed() throw (::com::sun::star::uno::RuntimeException); + + void CreateController( ViewShell* pViewSh, ::sd::View* pView, ::Window* pParentWindow ); + + // default: disabled copy/assignment + SlideShow(const SlideShow&); + SlideShow& operator=( const SlideShow& ); + + SvxItemPropertySet maPropSet; + + rtl::Reference< SlideshowImpl > mxController; + /** This flag is used together with mxController.is() to prevent + multiple instances of the slide show for one document. The flag + covers the time before mxController is set. + */ + bool mbIsInStartup; + SdDrawDocument* mpDoc; + + boost::shared_ptr< PresentationSettingsEx > mxCurrentSettings; + + ViewShellBase* mpCurrentViewShellBase; + ViewShellBase* mpFullScreenViewShellBase; + FrameView* mpFullScreenFrameView; + sal_Int32 mnInPlaceConfigEvent; +}; + +} + +#endif /* _SD_SLIDESHOW_HXX */ diff --git a/sd/source/ui/inc/smarttag.hxx b/sd/source/ui/inc/smarttag.hxx new file mode 100755 index 000000000000..f24de66f144d --- /dev/null +++ b/sd/source/ui/inc/smarttag.hxx @@ -0,0 +1,188 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SD_SMARTTAG_HXX_ +#define _SD_SMARTTAG_HXX_ + +#include "helper/simplereferencecomponent.hxx" +#include <rtl/ref.hxx> +#include <set> +#include <svx/svdhdl.hxx> +#include <svx/svdview.hxx> + +class KeyEvent; +class MouseEvent; +class SdrHdlList; + +namespace sd { + +class View; +class SmartHdl; + +/** a smart tag represents a visual user interface element on the documents edit view + that is not part of the document. It uses derivations from SmartHdl for its visuals. + A SmartTag adds himself to the given view if created. It removes himself if it + is disposed before the view is disposed. + + Derive from this class to implement your own smart tag. +*/ +class SmartTag : public SimpleReferenceComponent +{ + friend class SmartTagSet; + +public: + explicit SmartTag( ::sd::View& rView ); + virtual ~SmartTag(); + + /** returns true if the SmartTag consumes this event. */ + virtual bool MouseButtonDown( const MouseEvent&, SmartHdl& ); + + /** returns true if the SmartTag consumes this event. */ + virtual bool KeyInput( const KeyEvent& rKEvt ); + + /** returns true if the SmartTag consumes this event. */ + virtual bool RequestHelp( const HelpEvent& rHEvt ); + + /** returns true if the SmartTag consumes this event. */ + virtual bool Command( const CommandEvent& rCEvt ); + + /** returns true if this smart tag is currently selected */ + bool isSelected() const; + + ::sd::View& getView() const { return mrView; } + +protected: + virtual sal_uLong GetMarkablePointCount() const; + virtual sal_uLong GetMarkedPointCount() const; + virtual sal_Bool MarkPoint(SdrHdl& rHdl, sal_Bool bUnmark=sal_False); + virtual void CheckPossibilities(); + virtual sal_Bool MarkPoints(const Rectangle* pRect, sal_Bool bUnmark); + + virtual void addCustomHandles( SdrHdlList& rHandlerList ); + virtual void select(); + virtual void deselect(); + virtual bool getContext( SdrViewContext& rContext ); + + virtual void disposing(); + + ::sd::View& mrView; + bool mbSelected; + +private: + SmartTag( const SmartTag& ); // not implemented + SmartTag& operator=( const SmartTag& ); // not implemented +}; + +typedef rtl::Reference< SmartTag > SmartTagReference; + +/** class to administrate the available smart tags for a single view. */ +class SmartTagSet +{ + friend class SmartTag; +public: + explicit SmartTagSet( ::sd::View& rView ); + ~SmartTagSet(); + + /** selects the given smart tag and updates all handles */ + void select( const SmartTagReference& xTag ); + + /** deselects the current selected smart tag and updates all handles */ + void deselect(); + + /** returns the currently selected tag or an empty reference. */ + const SmartTagReference& getSelected() const { return mxSelectedTag; } + + /** returns true if a SmartTag consumes this event. */ + bool MouseButtonDown( const MouseEvent& ); + + /** returns true if a SmartTag consumes this event. */ + bool KeyInput( const KeyEvent& rKEvt ); + + /** returns true if a SmartTag consumes this event. */ + bool RequestHelp( const HelpEvent& rHEvt ); + + /** returns true if a SmartTag consumes this event. */ + bool Command( const CommandEvent& rCEvt ); + + /** disposes all smart tags and clears the set */ + void Dispose(); + + /** addes the handles from all smart tags to the given list */ + void addCustomHandles( SdrHdlList& rHandlerList ); + + /** returns true if the currently selected smart tag has + a special context, returned in rContext. */ + bool getContext( SdrViewContext& rContext ) const; + + // support point editing + sal_Bool HasMarkablePoints() const; + sal_uLong GetMarkablePointCount() const; + sal_Bool HasMarkedPoints() const; + sal_uLong GetMarkedPointCount() const; + sal_Bool IsPointMarkable(const SdrHdl& rHdl) const; + sal_Bool MarkPoint(SdrHdl& rHdl, sal_Bool bUnmark=sal_False); + sal_Bool MarkPoints(const Rectangle* pRect, sal_Bool bUnmark); + + void CheckPossibilities(); + +private: + SmartTagSet( const SmartTagSet& ); // not implemented + SmartTagSet& operator=( const SmartTagSet& ); // not implemented + + /** adds a new smart tag to this set */ + void add( const SmartTagReference& xTag ); + + /** removes the given smart tag from this set */ + void remove( const SmartTagReference& xTag ); + + std::set< SmartTagReference > maSet; + + ::sd::View& mrView; + SmartTagReference mxSelectedTag; + SmartTagReference mxMouseOverTag; +}; + +/** a derivation from this handle is the visual representation for a smart tag. + One smart tag can have more than one handle. +*/ +class SmartHdl : public SdrHdl +{ +public: + SmartHdl( const SmartTagReference& xTag, SdrObject* pObject, const Point& rPnt, SdrHdlKind eNewKind=HDL_SMARTTAG ); + SmartHdl( const SmartTagReference& xTag, const Point& rPnt, SdrHdlKind eNewKind=HDL_SMARTTAG ); + + const SmartTagReference& getTag() const { return mxTag; } + + virtual bool isMarkable() const; +protected: + SmartTagReference mxTag; +}; + +} // end of namespace sd + +#endif // _SD_SMARTTAG_HXX_ + diff --git a/sd/source/ui/inc/sprite.hxx b/sd/source/ui/inc/sprite.hxx new file mode 100755 index 000000000000..9df19b96501e --- /dev/null +++ b/sd/source/ui/inc/sprite.hxx @@ -0,0 +1,88 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_SPRITE_HXX +#define SD_SPRITE_HXX + +#include <vcl/virdev.hxx> +#include <vcl/region.hxx> +#include <vcl/mapmod.hxx> +#include <vcl/image.hxx> +#include <vcl/bitmapex.hxx> + +// ---------- +// - Sprite - +// ---------- + + +namespace sd { + +class Marker; +class MetaFile; + +class Sprite +{ +public: + Sprite( List* pListOfBmpEx ); + ~Sprite(); + + sal_Bool StartMoving( OutputDevice* pOut, + OutputDevice* pBottomLayer = NULL, + BitmapEx* pTopLayer = NULL, + MetaFile** ppTopMtf = NULL, + Marker* pObjStartMarker = NULL, + Marker* pObjEndMarker = NULL ); + void MoveTo( OutputDevice* pOut, const Point& rPt, const Size* pSz = NULL ); + void MoveTo( OutputDevice* pOut, const Point& rPt, const double& rScaleX, const double& rScaleY ); + void EndMoving( OutputDevice* pOut ); + +protected: + MapMode aOldMap; + Region aOldClip; + Rectangle aPaintRect; + Point aPt; + Size aSz; + Point aLayerOffsetPix; + VirtualDevice* pPaintDev; + VirtualDevice* pBottomLayer; + BitmapEx* pActBmpEx; + BitmapEx* pTopLayer; + MetaFile** ppTopMtf; + Marker* pObjStartMarker; + Marker* pObjEndMarker; + List* pListOfBmpEx; + sal_uLong nLastTime; + sal_Bool bClipRegion; + + sal_Bool ImplPrepareMoveTo(); + void ImplDrawSprite( OutputDevice* pOut, const Point& rPt, const Size& rSz ); + +}; + +} + +#endif diff --git a/sd/source/ui/inc/strings.hrc b/sd/source/ui/inc/strings.hrc new file mode 100755 index 000000000000..97693308ee07 --- /dev/null +++ b/sd/source/ui/inc/strings.hrc @@ -0,0 +1,515 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include "sfx2/sfx.hrc" +#ifndef _SD_CFGID_HXX +#include "cfgids.hxx" +#endif +#define STR_NULL (RID_APP_START+3) +#define STR_INSERTPAGE (RID_APP_START+35) +#define STR_INSERTLAYER (RID_APP_START+37) +#define STR_MODIFYLAYER (RID_APP_START+38) +#define STR_UNDO_SLIDE_MOVE (RID_APP_START+41) +#define STR_UNDO_REPLACE (RID_APP_START+42) + +/* + * Dummy-Strings, diese ResourceIDs duerfen nicht an andere Strings vergeben + * werden, da sie fuer Popup-Menues benutzt werden (ein Popup-Menue und sein + * Konfigurationsstring muessen dieselbe ResourceID haben!). + * siehe auch: res_bmp.hrc, popup.src + */ + +#define STR_DRAW_TEXTOBJ_POPUP (RID_APP_START+43) +#define STR_DRAW_GEOMOBJ_POPUP (RID_APP_START+44) +#define STR_DRAW_NOSEL_POPUP (RID_APP_START+45) +#define STR_SLIDETABLE_POPUP (RID_APP_START+46) +#define STR_BEZIER_POPUP (RID_APP_START+47) +#define STR_DRAW_LINEOBJ_POPUP (RID_APP_START+48) +#define STR_DRAW_MULTISELECTION_POPUP (RID_APP_START+49) +#define STR_PAGETAB_POPUP (RID_APP_START+50) +#define STR_LAYERTAB_POPUP (RID_APP_START+51) +#define STR_DRAW_GRAPHIC_POPUP (RID_APP_START+52) +#define STR_DRAW_OLE2_POPUP (RID_APP_START+53) +#define STR_DRAW_TEXTOBJ_INSIDE_POPUP (RID_APP_START+54) +#define STR_SLIDE_NOSEL_POPUP (RID_APP_START+55) +#define STR_OUTLINE_POPUP (RID_APP_START+56) +#define STR_MASTERPAGE_POPUP (RID_APP_START+57) +#define STR_DRAW_GROUPOBJ_POPUP (RID_APP_START+58) + +#define STR_UNDO_CUT (RID_APP_START+59) +#define STR_UNDO_DRAGDROP (RID_APP_START+66) +#define STR_INSERTGRAPHIC (RID_APP_START+67) + +/* + * Ueberblendeffekte: sollten nach hinten offen bleiben, + * da FadeEffectLB mit variabler Anzahl arbeitet + * (Jetzt ueber STR_EFFECT_...) + */ +#define STR_DRAGTYPE_URL (RID_APP_START+70) +#define STR_DRAGTYPE_EMBEDDED (RID_APP_START+71) +#define STR_DRAGTYPE_LINK (RID_APP_START+72) +#define STR_GLUE_ESCDIR_SMART (RID_APP_START+73) +#define STR_GLUE_ESCDIR_LEFT (RID_APP_START+74) +#define STR_GLUE_ESCDIR_RIGHT (RID_APP_START+75) +#define STR_GLUE_ESCDIR_TOP (RID_APP_START+76) +#define STR_GLUE_ESCDIR_BOTTOM (RID_APP_START+77) +#define STR_GLUE_ESCDIR_LO (RID_APP_START+78) +#define STR_GLUE_ESCDIR_LU (RID_APP_START+79) +#define STR_GLUE_ESCDIR_RO (RID_APP_START+80) +#define STR_GLUE_ESCDIR_RU (RID_APP_START+81) +#define STR_GLUE_ESCDIR_HORZ (RID_APP_START+82) +#define STR_GLUE_ESCDIR_VERT (RID_APP_START+83) +#define STR_GLUE_ESCDIR_ALL (RID_APP_START+84) + +#define STR_CANT_PERFORM_IN_LIVEMODE (RID_APP_START+85) +#define STR_PUBLISH_BACK (RID_APP_START+86) +#define STR_PUBLISH_NEXT (RID_APP_START+87) +#define STR_PUBLISH_OUTLINE (RID_APP_START+88) +#define STR_UNDO_COLORRESOLUTION (RID_APP_START+89) + +/* Von 90 - 100 fuer Popups freihalten */ +#define STR_DRAW_3DOBJ_POPUP (RID_APP_START+90) +#define STR_DRAW_MEASUREOBJ_POPUP (RID_APP_START+91) +#define STR_ASK_DELETE_ALL_PICTURES (RID_APP_START+92) +#define STR_WARN_PAGE_EXISTS (RID_APP_START+93) + +#define STR_SLOW (RID_APP_START+112) +#define STR_MEDIUM (RID_APP_START+113) +#define STR_FAST (RID_APP_START+114) + +#define STR_SLIDE_MODE (RID_APP_START+121) +#define STR_DRAW_MODE (RID_APP_START+122) +#define STR_OUTLINE_MODE (RID_APP_START+123) + +#define STR_UNDO_BEZCLOSE (RID_APP_START+127) + +#define STR_END_SPELLING_OBJ (RID_APP_START+129) +#define STR_NOTES_MODE (RID_APP_START+135) +#define STR_HANDOUT_MODE (RID_APP_START+136) + +#define STR_LINEEND (RID_APP_START+137) +#define STR_DESC_LINEEND (RID_APP_START+138) +#define STR_WARN_NAME_DUPLICATE (RID_APP_START+139) +#define STR_UNDO_COPYOBJECTS (RID_APP_START+140) +#define STR_DESC_NAMEGROUP (RID_APP_START+141) +#define STR_TITLE_NAMEGROUP (RID_APP_START+143) + +#define STR_SNAPDLG_SETLINE (RID_APP_START+144) +#define STR_SNAPDLG_SETPOINT (RID_APP_START+145) +#define STR_POPUP_EDIT_SNAPLINE (RID_APP_START+146) +#define STR_POPUP_EDIT_SNAPPOINT (RID_APP_START+147) + +#define STR_IMPRESS (RID_APP_START+149) +#define STR_IMPRESS_DOCUMENT (RID_APP_START+154) +#define STR_LAYER (RID_APP_START+158) +// #define (RID_APP_START+159) + +#define STR_POPUP_DELETE_SNAPLINE (RID_APP_START+160) +#define STR_POPUP_DELETE_SNAPPOINT (RID_APP_START+161) + +#define STR_SCALE_OBJS_TO_PAGE (RID_APP_START+162) + +#define STR_EYEDROPPER (RID_APP_START+163) + +#define STR_UNDO_MORPHING (RID_APP_START+164) + +#define STR_IMPRESS_DOCUMENT_FULLTYPE_60 (RID_APP_START+170) + +/* + * ResourceIDs fuer Toolboxen nicht aendern, ohne die Strings in + * strings.hrc auf die selben IDs zu setzen (eine Toolbox und sein + * Konfigurationsstring muessen dieselbe ResourceID haben!). + */ + +#define STR_PLUGIN_TOOLBOX RID_PLUGINTOOLBOX +#define STR_DRAW_TOOLBOX RID_DRAW_TOOLBOX +#define STR_SLIDE_TOOLBOX RID_SLIDE_TOOLBOX +#define STR_DRAW_OBJ_TOOLBOX RID_DRAW_OBJ_TOOLBOX +#define STR_SLIDE_OBJ_TOOLBOX RID_SLIDE_OBJ_TOOLBOX +#define STR_BEZIER_TOOLBOX RID_BEZIER_TOOLBOX +#define STR_DRAW_TEXT_TOOLBOX RID_DRAW_TEXT_TOOLBOX +#define STR_DRAW_TABLE_TOOLBOX RID_DRAW_TABLE_TOOLBOX +#define STR_OUTLINE_TOOLBOX RID_OUTLINE_TOOLBOX +#define STR_DRAW_POLYLINEOBJ_POPUP RID_DRAW_POLYLINEOBJ_POPUP +#define STR_GLUEPOINTS_TOOLBOX RID_GLUEPOINTS_TOOLBOX +#define STR_DRAW_OPTIONS_TOOLBOX RID_DRAW_OPTIONS_TOOLBOX +#define STR_DRAW_COMMONTASK_TOOLBOX RID_DRAW_COMMONTASK_TOOLBOX + +#define STR_GRAPHIC_TOOLBOX RID_GRAPHIC_TOOLBOX +#define STR_GRAPHIC_OPTIONS_TOOLBOX RID_GRAPHIC_OPTIONS_TOOLBOX +#define STR_GRAPHIC_OBJ_TOOLBOX RID_GRAPHIC_OBJ_TOOLBOX +#define STR_GRAPHIC_TEXT_TOOLBOX RID_GRAPHIC_TEXT_TOOLBOX + +#define STR_DRAW_GRAF_TOOLBOX RID_DRAW_GRAF_TOOLBOX +#define STR_DRAW_MEDIA_TOOLBOX RID_DRAW_MEDIA_TOOLBOX + +// IDs fuer Praesentationsfolien +#define STR_AUTOLAYOUT_NONE (RID_APP_START+210) +#define STR_AUTOLAYOUT_ONLY_TITLE (RID_APP_START+211) +#define STR_AUTOLAYOUT_ONLY_TEXT (RID_APP_START+212) +#define STR_AUTOLAYOUT_TITLE (RID_APP_START+213) +#define STR_AUTOLAYOUT_CONTENT (RID_APP_START+214) +#define STR_AUTOLAYOUT_2CONTENT (RID_APP_START+215) +#define STR_AUTOLAYOUT_CONTENT_2CONTENT (RID_APP_START+217) +#define STR_AUTOLAYOUT_2CONTENT_CONTENT (RID_APP_START+218) +#define STR_AUTOLAYOUT_CONTENT_OVER_2CONTENT (RID_APP_START+219) +#define STR_AUTOLAYOUT_2CONTENT_OVER_CONTENT (RID_APP_START+220) +#define STR_AUTOLAYOUT_CONTENT_OVER_CONTENT (RID_APP_START+221) +#define STR_AUTOLAYOUT_4CONTENT (RID_APP_START+222) +#define STR_AUTOLAYOUT_6CONTENT (RID_APP_START+223) + +#define STR_AUTOLAYOUT_HANDOUT1 (RID_APP_START+231) +#define STR_AUTOLAYOUT_HANDOUT2 (RID_APP_START+232) +#define STR_AUTOLAYOUT_HANDOUT3 (RID_APP_START+233) +#define STR_AUTOLAYOUT_HANDOUT4 (RID_APP_START+234) +#define STR_AUTOLAYOUT_HANDOUT6 (RID_APP_START+235) +#define STR_AUTOLAYOUT_NOTES (RID_APP_START+236) +#define STR_AUTOLAYOUT_HANDOUT9 (RID_APP_START+237) + +#define STR_TRANSFORM (RID_APP_START+240) + +#define STR_EXPORT_HTML_NAME (RID_APP_START+244) +#define STR_EXPORT_HTML_FILTER (RID_APP_START+245) +#define STR_EXPORT_DIALOG_TITLE (RID_APP_START+261) +#define STR_TWAIN_NO_SOURCE_UNX (RID_APP_START+262) +#define STR_UNDO_DELETEPAGES (RID_APP_START+265) +#define STR_UNDO_INSERTPAGES (RID_APP_START+266) +//free (RID_APP_START+267) +#define STR_ASK_DELETE_LAYER (RID_APP_START+268) +#define STR_UNDO_CHANGE_TITLE_AND_LAYOUT (RID_APP_START+269) +#define STR_WAV_FILE (RID_APP_START+270) +#define STR_MIDI_FILE (RID_APP_START+271) +#define STR_SD_PAGE (RID_APP_START+272) +#define STR_ALL_FILES (RID_APP_START+274) +#define STR_UNDO_INSERT_TEXTFRAME (RID_APP_START+275) +#define STR_ACTION_NOTPOSSIBLE (RID_APP_START+278) +#define STR_DLG_INSERT_PAGES_FROM_FILE (RID_APP_START+279) +#define STR_SCALE_OBJECTS (RID_APP_START+281) +#define STR_CREATE_PAGES (RID_APP_START+282) + +#define STR_UNDO_CHANGE_PAGEFORMAT (RID_APP_START+283) +#define STR_UNDO_CHANGE_PAGEBORDER (RID_APP_START+284) + +#define STR_EDIT_OBJ (RID_APP_START+288) + +#define STR_READ_DATA_ERROR (RID_APP_START+290) + +/****************************************************************************** +* Ab (RID_APP_START+300 beginnen die Ids in sdstring.hrc! +******************************************************************************/ + +#define STR_DELETE_PAGES (RID_APP_START+332) +#define STR_WARN_PRINTFORMAT_FAILURE (RID_APP_START+333) +#define STR_REMOVE_LINK (RID_APP_START+334) + +#define STR_IMPORT_GRFILTER_OPENERROR (RID_APP_START+335) +#define STR_IMPORT_GRFILTER_IOERROR (RID_APP_START+336) +#define STR_IMPORT_GRFILTER_FORMATERROR (RID_APP_START+337) +#define STR_IMPORT_GRFILTER_VERSIONERROR (RID_APP_START+338) +#define STR_IMPORT_GRFILTER_FILTERERROR (RID_APP_START+339) +#define STR_IMPORT_GRFILTER_TOOBIG (RID_APP_START+340) + +#define STR_OBJECTS (RID_APP_START+341) +#define STR_END_SEARCHING (RID_APP_START+342) +#define STR_END_SPELLING (RID_APP_START+343) +#define STR_NOLANGUAGE (RID_APP_START+344) +#define STR_ASK_FOR_CONVERT_TO_BEZIER (RID_APP_START+347) +#define STR_UNDO_CHANGE_PRES_OBJECT (RID_APP_START+349) +#define STR_UNDO_MODIFY_PAGE (RID_APP_START+350) +#define STR_STATSTR_PRINT (RID_APP_START+351) +#define STR_UNDO_INSERT_FILE (RID_APP_START+352) +#define STR_UNDO_INSERT_SPECCHAR (RID_APP_START+353) +#define STR_UNDO_SET_PRESLAYOUT (RID_APP_START+354) +#define STR_STRING_NOTFOUND (RID_APP_START+355) +#define STR_PLAY (RID_APP_START+356) +#define STR_STOP (RID_APP_START+357) +#define STR_UNDO_ORIGINALSIZE (RID_APP_START+359) +#define STR_PRINT_DRAWING (RID_APP_START+361) +#define STR_PRINT_NOTES (RID_APP_START+362) +#define STR_PRINT_HANDOUT (RID_APP_START+363) +#define STR_PRINT_OUTLINE (RID_APP_START+364) +#define STR_WARN_SCALE_FAIL (RID_APP_START+365) + +// Strings fuer Klick-Effekte (Reihenfolge beibehalten) +#define STR_CLICK_ACTION_NONE (RID_APP_START+366) +#define STR_CLICK_ACTION_PREVPAGE (RID_APP_START+367) +#define STR_CLICK_ACTION_NEXTPAGE (RID_APP_START+368) +#define STR_CLICK_ACTION_FIRSTPAGE (RID_APP_START+369) +#define STR_CLICK_ACTION_LASTPAGE (RID_APP_START+370) +#define STR_CLICK_ACTION_BOOKMARK (RID_APP_START+371) +#define STR_CLICK_ACTION_DOCUMENT (RID_APP_START+372) +#define STR_CLICK_ACTION_VANISH (RID_APP_START+373) +#define STR_CLICK_ACTION_INVISIBLE (RID_APP_START+374) +#define STR_CLICK_ACTION_SOUND (RID_APP_START+375) +#define STR_CLICK_ACTION_VERB (RID_APP_START+376) +#define STR_CLICK_ACTION_PROGRAM (RID_APP_START+377) +#define STR_CLICK_ACTION_MACRO (RID_APP_START+378) +// Mind. bis 380 freihalten + +#define STR_EFFECTDLG_SOUND (RID_APP_START+380) +#define STR_EFFECTDLG_PAGE_OBJECT (RID_APP_START+382) +#define STR_EFFECTDLG_DOCUMENT (RID_APP_START+383) +#define STR_EFFECTDLG_PROGRAM (RID_APP_START+384) +#define STR_EFFECTDLG_MACRO (RID_APP_START+385) +#define STR_EFFECTDLG_JUMP (RID_APP_START+386) +#define STR_EFFECTDLG_ACTION (RID_APP_START+387) + +/* Fortsetzung von RID_APP_START+43 bis RID_APP_START+58: + * Dummy-Strings, diese ResourceIDs duerfen nicht an andere Strings vergeben + * werden, da sie fuer Popup-Menues benutzt werden (ein Popup-Menue und sein + * Konfigurationsstring muessen dieselbe ResourceID haben!). + * siehe auch: res_bmp.hrc, popup.src + */ + +#define STR_DRAW_SNAPOBJECT_POPUP (RID_APP_START+390) +#define STR_DRAW_GLUEPOINT_POPUP (RID_APP_START+392) +#define STR_DRAW_CONTROL_POPUP (RID_APP_START+393) + + +#define STR_EFFECT_NONE (RID_APP_START+400) + + +#define STR_INSERT_TEXT (RID_APP_START+432) +#define STR_SLIDE_SINGULAR (RID_APP_START+433) +#define STR_SLIDE_PLURAL (RID_APP_START+434) +#define STR_AU_FILE (RID_APP_START+435) +#define STR_VOC_FILE (RID_APP_START+436) +#define STR_AIFF_FILE (RID_APP_START+437) +#define STR_SVX_FILE (RID_APP_START+438) + +/* Stringdefinitionen fuer die Chartbeschriftung +*/ +#define STR_LOAD_PRESENTATION_LAYOUT (RID_APP_START+448) + +#define STR_CLICK_ACTION_STOPPRESENTATION (RID_APP_START+475) + +#define STR_UNDO_EXPAND_PAGE (RID_APP_START+493) +#define STR_UNDO_SUMMARY_PAGE (RID_APP_START+494) + +#define STR_GRAPHIC_DOCUMENT (RID_APP_START+499) +#define STR_GRAPHIC_DOCUMENT_FULLTYPE_60 (RID_APP_START+501) + +#define STR_FIX (RID_APP_START+502) +#define STR_VAR (RID_APP_START+503) +#define STR_STANDARD_NORMAL (RID_APP_START+504) +#define STR_STANDARD_SMALL (RID_APP_START+505) +#define STR_STANDARD_BIG (RID_APP_START+506) +#define STR_FILEFORMAT_NAME_EXT (RID_APP_START+507) +#define STR_FILEFORMAT_FULLPATH (RID_APP_START+508) +#define STR_FILEFORMAT_PATH (RID_APP_START+509) +#define STR_FILEFORMAT_NAME (RID_APP_START+510) + +#define STR_RELEASE_GRAPHICLINK (RID_APP_START+511) + +#define STR_NEW_CUSTOMSHOW (RID_APP_START+512) +#define STR_COPY_CUSTOMSHOW (RID_APP_START+513) + +#define STR_VIEWTYPE_DUMMY (RID_APP_START+518) + +#define STR_BREAK_METAFILE (RID_APP_START+521) +#define STR_BREAK_FAIL (RID_APP_START+522) + +#define STR_PUBDLG_SAMENAME (RID_APP_START+523) + +#define STR_HTMLATTR_TEXT (RID_APP_START+524) +#define STR_HTMLATTR_LINK (RID_APP_START+525) +#define STR_HTMLATTR_VLINK (RID_APP_START+526) +#define STR_HTMLATTR_ALINK (RID_APP_START+527) + +#define STR_HTMLEXP_NOTES (RID_APP_START+528) +#define STR_HTMLEXP_CONTENTS (RID_APP_START+529) +#define STR_HTMLEXP_CLICKSTART (RID_APP_START+530) +#define STR_HTMLEXP_AUTHOR (RID_APP_START+531) +#define STR_HTMLEXP_EMAIL (RID_APP_START+532) +#define STR_HTMLEXP_HOMEPAGE (RID_APP_START+533) +#define STR_HTMLEXP_INFO (RID_APP_START+534) +#define STR_HTMLEXP_DOWNLOAD (RID_APP_START+536) +#define STR_HTMLEXP_NOFRAMES (RID_APP_START+537) +#define STR_HTMLEXP_FIRSTPAGE (RID_APP_START+538) +#define STR_HTMLEXP_LASTPAGE (RID_APP_START+539) +#define STR_HTMLEXP_SETTEXT (RID_APP_START+540) +#define STR_HTMLEXP_SETGRAPHIC (RID_APP_START+541) +#define STR_HTMLEXP_OUTLINE (RID_APP_START+542) +#define STR_HTMLEXP_NOOUTLINE (RID_APP_START+543) + +#define STR_PRES_SOFTEND (RID_APP_START+550) +#define STR_PRES_PAUSE (RID_APP_START+551) + +#define STR_WIZARD_ORIGINAL (RID_APP_START+552) + +#define STR_ISLOADING (RID_APP_START+554) + +#define STR_WEBVIEW_SAVE (RID_APP_START+555) + +#define STR_UNDO_APPLY_3D_FAVOURITE (RID_APP_START+556) + +//free (RID_APP_START+557) + +#define RID_UNDO_DELETE_WARNING (RID_APP_START+558) +#define IMG_UNDO_DELETE_WARNING (RID_APP_START+559) +#define FT_UNDO_DELETE_WARNING (RID_APP_START+560) +#define CB_UNDO_DELETE_DISABLE (RID_APP_START+561) +#define BTN_UNDO_DELETE_YES (RID_APP_START+562) +#define BTN_UNDO_DELETE_NO (RID_APP_START+564) + +#define STR_WARNING_NOSOUNDFILE (RID_APP_START+565) + +#define STR_UNDO_GRAFFILTER (RID_APP_START+570) + +#define STR_UNDO_CONVERT_TO_METAFILE (RID_APP_START+571) +#define STR_UNDO_CONVERT_TO_BITMAP (RID_APP_START+572) + +#define STR_HTMLEXP_ERROR_CREATE_FILE (RID_APP_START+578) +#define STR_HTMLEXP_ERROR_OPEN_FILE (RID_APP_START+579) +#define STR_HTMLEXP_ERROR_COPY_FILE (RID_APP_START+580) + +#define STR_PAGE_BACKGROUND_TXT (RID_APP_START+583) +#define STR_PAGE_BACKGROUND_TITLE (RID_APP_START+584) + +// additional effects +#define STR_EFFECT_DISCARD_SHORT (RID_APP_START+598) + +#define STR_EFFECT_DISCARD_FROM_UL (RID_APP_START+600) +#define STR_EFFECT_DISCARD_FROM_UR (RID_APP_START+601) +#define STR_EFFECT_DISCARD_FROM_LR (RID_APP_START+602) +#define STR_EFFECT_DISCARD_FROM_LL (RID_APP_START+603) +#define STR_EFFECT_DISCARD_S_FROM_L (RID_APP_START+604) +#define STR_EFFECT_DISCARD_S_FROM_UL (RID_APP_START+605) +#define STR_EFFECT_DISCARD_S_FROM_T (RID_APP_START+606) +#define STR_EFFECT_DISCARD_S_FROM_UR (RID_APP_START+607) +#define STR_EFFECT_DISCARD_S_FROM_R (RID_APP_START+608) +#define STR_EFFECT_DISCARD_S_FROM_LR (RID_APP_START+609) +#define STR_EFFECT_DISCARD_S_FROM_B (RID_APP_START+610) +#define STR_EFFECT_DISCARD_S_FROM_LL (RID_APP_START+611) +#define STR_EFFECT_VERTICAL_CHECKERBOARD (RID_APP_START+612) +#define STR_EFFECT_HORIZONTAL_CHECKERBOARD (RID_APP_START+613) + +#define STR_EFFECT_MOVE_TO_UL (RID_APP_START+620) +#define STR_EFFECT_MOVE_TO_UR (RID_APP_START+621) +#define STR_EFFECT_MOVE_TO_LR (RID_APP_START+622) +#define STR_EFFECT_MOVE_TO_LL (RID_APP_START+623) +#define STR_EFFECT_MOVE_S_TO_L (RID_APP_START+625) +#define STR_EFFECT_MOVE_S_TO_UL (RID_APP_START+626) +#define STR_EFFECT_MOVE_S_TO_T (RID_APP_START+627) +#define STR_EFFECT_MOVE_S_TO_UR (RID_APP_START+628) +#define STR_EFFECT_MOVE_S_TO_R (RID_APP_START+629) +#define STR_EFFECT_MOVE_S_TO_LR (RID_APP_START+630) +#define STR_EFFECT_MOVE_S_TO_B (RID_APP_START+631) +#define STR_EFFECT_MOVE_S_TO_LL (RID_APP_START+632) + +#define STR_EFFECT_STRTCH (RID_APP_START+634) +#define STR_EFFECT_STRTCH_FROM_L (RID_APP_START+635) +#define STR_EFFECT_STRTCH_FROM_UL (RID_APP_START+636) +#define STR_EFFECT_STRTCH_FROM_T (RID_APP_START+637) +#define STR_EFFECT_STRTCH_FROM_UR (RID_APP_START+638) +#define STR_EFFECT_STRTCH_FROM_R (RID_APP_START+639) +#define STR_EFFECT_STRTCH_FROM_LR (RID_APP_START+640) +#define STR_EFFECT_STRTCH_FROM_B (RID_APP_START+641) +#define STR_EFFECT_STRTCH_FROM_LL (RID_APP_START+642) + +#define STR_EFFECT_STRTCH_ROTATE (RID_APP_START+643) +#define STR_EFFECT_STRTCH_HORIZONTAL (RID_APP_START+644) +#define STR_EFFECT_STRTCH_VERTICAL (RID_APP_START+645) +#define STR_EFFECT_ROTATE_HORIZONTAL (RID_APP_START+646) +#define STR_EFFECT_ROTATE_VERTICAL (RID_APP_START+647) + +#define STR_EFFECT_UNCOVER (RID_APP_START+650) +#define STR_EFFECT_UNCOVER_TO_L (RID_APP_START+651) +#define STR_EFFECT_UNCOVER_TO_UL (RID_APP_START+652) +#define STR_EFFECT_UNCOVER_TO_T (RID_APP_START+653) +#define STR_EFFECT_UNCOVER_TO_UR (RID_APP_START+654) +#define STR_EFFECT_UNCOVER_TO_R (RID_APP_START+655) +#define STR_EFFECT_UNCOVER_TO_LR (RID_APP_START+656) +#define STR_EFFECT_UNCOVER_TO_B (RID_APP_START+657) +#define STR_EFFECT_UNCOVER_TO_LL (RID_APP_START+658) + +#define STR_TWAIN_NO_SOURCE (RID_APP_START+670) +#define STR_UNDO_VECTORIZE (RID_APP_START+671) + +#define STR_AL_VERT_TITLE_TEXT_CHART (RID_APP_START+672) +#define STR_AL_VERT_TITLE_VERT_OUTLINE (RID_APP_START+673) +#define STR_AL_TITLE_VERT_OUTLINE (RID_APP_START+674) +#define STR_AL_TITLE_VERT_OUTLINE_CLIPART (RID_APP_START+675) + +#define STR_HTMLEXP_DEFAULT_EXTENSION (RID_APP_START+680) + +#define STR_SET_BACKGROUND_PICTURE (RID_APP_START+681) + +#define STR_DESC_RENAMESLIDE (RID_APP_START+682) +#define STR_TITLE_RENAMESLIDE (RID_APP_START+683) + +#define STR_PLACEHOLDER_DESCRIPTION_TITLE (RID_APP_START+684) +#define STR_PLACEHOLDER_DESCRIPTION_OUTLINE (RID_APP_START+685) +#define STR_PLACEHOLDER_DESCRIPTION_FOOTER (RID_APP_START+686) +#define STR_PLACEHOLDER_DESCRIPTION_HEADER (RID_APP_START+687) +#define STR_PLACEHOLDER_DESCRIPTION_DATETIME (RID_APP_START+688) +#define STR_PLACEHOLDER_DESCRIPTION_NUMBER (RID_APP_START+689) +#define STR_PLACEHOLDER_DESCRIPTION_SLIDE (RID_APP_START+690) +#define STR_PLACEHOLDER_DESCRIPTION_NOTES (RID_APP_START+691) + +#define STR_FIELD_PLACEHOLDER_HEADER (RID_APP_START+692) +#define STR_FIELD_PLACEHOLDER_FOOTER (RID_APP_START+693) +#define STR_FIELD_PLACEHOLDER_DATETIME (RID_APP_START+694) +#define STR_FIELD_PLACEHOLDER_NUMBER (RID_APP_START+695) + +#define STR_UNDO_HANGULHANJACONVERSION (RID_APP_START+696) +#define STR_FIELD_PLACEHOLDER_COUNT (RID_APP_START+697) + +#define STR_LEFT_PANE_DRAW_TITLE (RID_APP_START+700) +#define STR_LEFT_PANE_IMPRESS_TITLE (RID_APP_START+701) +#define STR_RIGHT_PANE_TITLE (RID_APP_START+702) +#define STR_TASKPANEL_MASTER_PAGE_TITLE (RID_APP_START+703) +#define STR_TASKPANEL_MASTER_PAGE_MENU_TITLE (RID_APP_START+704) +#define STR_TASKPANEL_MASTER_PAGE_MENU_LOCK (RID_APP_START+705) +#define STR_TASKPANEL_MASTER_PAGE_MENU_UNLOCK (RID_APP_START+706) +#define STR_TASKPANEL_CURRENT_MASTER_PAGES_TITLE (RID_APP_START+708) +#define STR_TASKPANEL_RECENT_MASTER_PAGES_TITLE (RID_APP_START+709) +#define STR_TASKPANEL_ALL_MASTER_PAGES_TITLE (RID_APP_START+710) +#define STR_TASKPANEL_NOT_AVAILABLE_SUBSTITUTION (RID_APP_START+711) +#define STR_TASKPANEL_PREPARING_PREVIEW_SUBSTITUTION (RID_APP_START+712) +#define STR_TASKPANEL_LAYOUT_MENU_TITLE (RID_APP_START+713) +#define STR_RESTORE_DRAW_MODE (RID_APP_START+714) +#define STR_GRAPHICS_STYLE_FAMILY (RID_APP_START+715) + +#define STR_TITLE_SAVE_AS_PICTURE (RID_APP_START+716) +#define STR_CELL_STYLE_FAMILY (RID_APP_START+717) + +#define STR_NAVIGATOR_SHOW_NAMED_SHAPES (RID_APP_START+718) +#define STR_NAVIGATOR_SHOW_ALL_SHAPES (RID_APP_START+719) +#define STR_NAVIGATOR_SHAPE_BASE_NAME (RID_APP_START+720) +//IAccessibility2 Implementation 2009----- +#define STR_ACC_DIALOG_DESC (RID_APP_START + 730) +//-----IAccessibility2 Implementation 2009 + +#define STR_RESET_LAYOUT (RID_APP_START+721) +#define STR_INSERT_TABLE (RID_APP_START+722) +#define STR_INSERT_CHART (RID_APP_START+723) +#define STR_INSERT_PICTURE (RID_APP_START+724) +#define STR_INSERT_MOVIE (RID_APP_START+725) + +/****************************************************************************** +* The ids in glob.hrc start at RID_APP_START+750! +******************************************************************************/ diff --git a/sd/source/ui/inc/tabtempl.hrc b/sd/source/ui/inc/tabtempl.hrc new file mode 100644 index 000000000000..19fd9105b318 --- /dev/null +++ b/sd/source/ui/inc/tabtempl.hrc @@ -0,0 +1,30 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include <sfx2/sfx.hrc> +/* #define TAB_TEMPLATE RID_APP_START+??? */ +#define TAB_TEMPLATE 637 +#define TAB_CONTROL 1 diff --git a/sd/source/ui/inc/tabtempl.hxx b/sd/source/ui/inc/tabtempl.hxx new file mode 100755 index 000000000000..3637ee3565fc --- /dev/null +++ b/sd/source/ui/inc/tabtempl.hxx @@ -0,0 +1,86 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + + +#ifndef SD_TABTEMPL_HXX +#define SD_TABTEMPL_HXX + +#include <svx/tabarea.hxx> +#include <sfx2/styledlg.hxx> +class SdrModel; +class SfxObjectShell; +class SdrView; +class XColorTable; +class XGradientList; +class XBitmapList; +class XDashList; +class XHatchList; +class XLineEndList; + + +/************************************************************************* +|* +|* Vorlagen-Tab-Dialog +|* +\************************************************************************/ +class SdTabTemplateDlg : public SfxStyleDialog +{ +private: + const SfxObjectShell& rDocShell; + SdrView* pSdrView; + + XColorTable* pColorTab; + XGradientList* pGradientList; + XHatchList* pHatchingList; + XBitmapList* pBitmapList; + XDashList* pDashList; + XLineEndList* pLineEndList; + + sal_uInt16 nPageType; + sal_uInt16 nDlgType; + sal_uInt16 nPos; + ChangeType nColorTableState; + ChangeType nBitmapListState; + ChangeType nGradientListState; + ChangeType nHatchingListState; + + virtual void PageCreated( sal_uInt16 nId, SfxTabPage &rPage ); + virtual const SfxItemSet* GetRefreshedSet(); + +public: + SdTabTemplateDlg( Window* pParent, + const SfxObjectShell* pDocShell, + SfxStyleSheetBase& rStyleBase, + SdrModel* pModel, + SdrView* pView ); + ~SdTabTemplateDlg(); + +}; + + +#endif // SD_TABTEMPL_HXX + diff --git a/sd/source/ui/inc/taskpane/ControlContainer.hxx b/sd/source/ui/inc/taskpane/ControlContainer.hxx new file mode 100755 index 000000000000..c4df3cfe4dc6 --- /dev/null +++ b/sd/source/ui/inc/taskpane/ControlContainer.hxx @@ -0,0 +1,197 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_TOOLPANEL_CONTROL_CONTAINER_HXX +#define SD_TOOLPANEL_CONTROL_CONTAINER_HXX + +#include <osl/mutex.hxx> + +#include <vector> +#include <memory> + +class Window; + +namespace sd { namespace toolpanel { + +class TreeNode; + +/** This container manages the children of a TreeNode. It handles the + expansion and visibility state of its child controls. The container + does not do the layouting or painting of the controls. Instead it asks + its owner to do that. + + The difference between expansion state and visibility is that when a + control is collapsed at least a title bar is shown for it. When it is + not visible then even this title bar is not shown. In that case the + user can not expand the control. A control has to be visible in order + to be expanded or collapsed. + + Whenever you expand or collapse, show or hide a child control then use + this container class. Do not call the respective methods of the child + directly. +*/ +class ControlContainer +{ +public: + enum VisibilityState { VS_SHOW, VS_HIDE, VS_TOGGLE }; + enum ExpansionState { ES_EXPAND, ES_COLLAPSE, ES_TOGGLE }; + + /** Create a new control container. + @param pParent + This node is asked to re-calculate the size of its children when + a child of this container is expanded or collapsed. + */ + ControlContainer (TreeNode* pNode); + + virtual ~ControlContainer (void); + + /** This is function makes sure that all children are deleted. Call + this function from the destructor of a sub class to have all child + windows deleted before the destructor of another base class of that + sub class is called. When that other base class is some kind of a + window it would otherwise complain that there are living children. + */ + void DeleteChildren (void); + + /** Add the given control to the set of controls managed by the + container. This control is then expanded. + @return + Return the index under which the control has been inserted in + the container. It is the same index that is returned by + GetControlIndex(). + */ + sal_uInt32 AddControl (::std::auto_ptr<TreeNode> pControl); + + /** Expand (default) or collapse the specified control. When + expanding a control in a single expansion environment then all + other controls are collapsed. The specified control is being + made the active control as returned by GetActiveControl(). + */ + virtual void SetExpansionState ( + sal_uInt32 nIndex, + ExpansionState aState); + virtual void SetExpansionState ( + TreeNode* pControl, + ExpansionState aState); + virtual void SetVisibilityState ( + sal_uInt32 nIndex, + VisibilityState aState); + + /** Return the index of the given control. + */ + sal_uInt32 GetControlIndex (TreeNode* pControl) const; + + /** Return the number of controls in the container. + */ + sal_uInt32 GetControlCount (void) const; + + /** Return the number of visible controls in the container. + */ + sal_uInt32 GetVisibleControlCount (void) const; + + /** Return the control with the specified index regardless of whether + that control is hidden or visible. + */ + TreeNode* GetControl (sal_uInt32 nIndex) const; + + /** Return the index of the control previous to that that is specified + by the given index. + @param nIndex + Index of the control for which to return the index of the + previous control. This index is guaranteed not to be returned. + @param bIncludeHidden + This flag tells the method whether to include the controls that + are not visible in the search for the previous control. When it + is <FALSE/> the hidden controls are skipped. + @param bCycle + When this flag is <TRUE/> then the search for the previous + control wraps arround when reaching the first control. + @return + Returns the index to the previous control or (sal_uInt32)-1 when + there is no previous control. This would be the case when there + is only one (visible) child. + */ + sal_uInt32 GetPreviousIndex ( + sal_uInt32 nIndex, + bool bIncludeHidden=false, + bool bCycle=false) const; + + /** Return the index of the control next to that that is specified by + the given index. + @param nIndex + Index of the control for which to return the index of the next + control. This index is guaranteed not to be returned. + @param bIncludeHidden + This flag tells the method whether to include the controls that + are not visible in the search for the next control. When it is + <FALSE/> the hidden controls are skipped. + @param bCycle + When this flag is <TRUE/> then the search for the next control + wraps arround when reaching the last control. + @return + Returns the index to the next control or (sal_uInt32)-1 when + there is no next control. This would be the case when there is + only one (visible) child. + */ + sal_uInt32 GetNextIndex ( + sal_uInt32 nIndex, + bool bIncludeHidden=false, + bool bCycle=false) const; + + void SetMultiSelection (bool bFlag); + + /** This is method is called when the list of controls has changed, + i.e. a new control has been added. The default implementation is + empty. Overwrite this method in derived classes in order to react to + such changes. + */ + virtual void ListHasChanged (void); + +private: + osl::Mutex maMutex; + + /// List of controls managed by a container. + typedef ::std::vector<TreeNode*> ControlList; + ControlList maControlList; + + /** This parent is used for resize requests when children are expanded + or collapsed. + */ + TreeNode* mpNode; + + /** The index of the currently expanded control. A value of + (sal_uInt32)-1 indicates that no control is active. This may be the + case after adding controls to the container. + */ + sal_uInt32 mnActiveControlIndex; + + bool mbMultiSelection; +}; + +} } // end of namespace ::sd::toolpanel + +#endif diff --git a/sd/source/ui/inc/taskpane/ILayoutableWindow.hxx b/sd/source/ui/inc/taskpane/ILayoutableWindow.hxx new file mode 100755 index 000000000000..5aad9fa29f78 --- /dev/null +++ b/sd/source/ui/inc/taskpane/ILayoutableWindow.hxx @@ -0,0 +1,102 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_TOOLPANEL_I_LAYOUTABLE_WINDOW_HXX +#define SD_TOOLPANEL_I_LAYOUTABLE_WINDOW_HXX + +#include <tools/gen.hxx> +#include <sal/types.h> + +class Window; + +namespace sd { namespace toolpanel { + + +class ILayouter +{ +public: + /** This method is called by layoutable controls when they have to be + resized. + */ + virtual void RequestResize (void) = 0; +}; + + + +/** This interface has to be implemented by windows that want to be + layouted by a SubToolPanel or ScrollablePanel object. +*/ +class ILayoutableWindow +{ +public: + virtual ~ILayoutableWindow (void) {}; + + /** Return the preferred size without constraints on either the + height or the width. + The size the window will later be set to may but does not have + to be equal to this size. + */ + virtual Size GetPreferredSize (void) = 0; + + /** Return the preferred width with the constraint, that the + window will be set to the given height. + The width the window will later be set to may but does not have + to be equal to this width. + */ + virtual sal_Int32 GetPreferredWidth (sal_Int32 nHeight) = 0; + + /** Return the preferred height with the constraint, that the + window will be set to the given width. + The height the window will later be set to may but does not have + to be equal to this height. + */ + virtual sal_Int32 GetPreferredHeight (sal_Int32 nWidth) = 0; + + /** Return wether the window is generally resizable. When used by + a VerticalLayouter then the width will always be resized and + the return value of this method determines whether the height + may be modified as well. + */ + virtual bool IsResizable (void) = 0; + + /** Return the window so that its size and position can be set. + @return + Returns the window which is layouted or NULL to indicate + that the object is in an invalid state. + */ + virtual ::Window* GetWindow (void) = 0; + + /** Return the minimal width of the window. + */ + virtual sal_Int32 GetMinimumWidth (void) = 0; +}; + + + +} } // end of namespace ::sd::toolpanel + +#endif diff --git a/sd/source/ui/inc/taskpane/PanelId.hxx b/sd/source/ui/inc/taskpane/PanelId.hxx new file mode 100644 index 000000000000..565745f97140 --- /dev/null +++ b/sd/source/ui/inc/taskpane/PanelId.hxx @@ -0,0 +1,62 @@ +/************************************************************************* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * +************************************************************************/ + +#ifndef SD_UI_TASKPANE_PANELID_HXX +#define SD_UI_TASKPANE_PANELID_HXX + +namespace rtl +{ + class OUString; +} + +//...................................................................................................................... +namespace sd { namespace toolpanel +{ +//...................................................................................................................... + + //================================================================================================================== + //= PanelId + //================================================================================================================== + /** List of top level panels that can be shown in the task pane. + */ + enum PanelId + { + PID_MASTER_PAGES = 0, + PID_LAYOUT = 1, + PID_TABLE_DESIGN = 2, + PID_CUSTOM_ANIMATION = 3, + PID_SLIDE_TRANSITION = 4, + + PID_UNKNOWN = 5 + }; + + PanelId GetStandardPanelId( const ::rtl::OUString& i_rTaskPanelResourceURL ); + +//...................................................................................................................... +} } // namespace sd::toolpanel +//...................................................................................................................... + +#endif // SD_UI_TASKPANE_PANELID_HXX diff --git a/sd/source/ui/inc/taskpane/ScrollPanel.hxx b/sd/source/ui/inc/taskpane/ScrollPanel.hxx new file mode 100755 index 000000000000..f8ce5dccc242 --- /dev/null +++ b/sd/source/ui/inc/taskpane/ScrollPanel.hxx @@ -0,0 +1,185 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_TOOLPANEL_SCROLL_PANEL_HXX +#define SD_TOOLPANEL_SCROLL_PANEL_HXX + +#include "taskpane/TaskPaneTreeNode.hxx" + +#include <vcl/ctrl.hxx> +#include <vcl/scrbar.hxx> +#include <memory> +#include <vector> + +namespace sd { namespace toolpanel { + +class TitledControl; + +/** The scroll panel shows its controls one above the other. When their + total height is larger than the height of the scroll area then only a + part of the controls is visible. Scroll bars control which part that + is. + + The scroll panel registers itself as window event listener at the + controls and their title bars (conceptually; it really is the + TitledControl) to track changes of the selection and focus rectangles. + On such a change it tries to move the selected or focused part into the + visible area. At the moment this moving into view only works with + valuesets and TitleBars. +*/ +class ScrollPanel + : public ::Control, + public TreeNode +{ +public: + /** Create a new scroll panel which itself is the root of a TreeNode hierarchy + parent. This will usually be a child window. + */ + ScrollPanel (::Window& i_rParentWindow); + virtual ~ScrollPanel (void); + + /** Add a control to the sub panel. An title bar is added above the + control. + @param rTitle + The title that will be shown in the two title bars that + belong to the control. + @param nHelpId + The help id is set at the title bar not the actual control. + @return + The new titled control that contains the given control and a new + title bar as children is returned. + */ + TitledControl* AddControl ( + ::std::auto_ptr<TreeNode> pControl, + const String& rTitle, + const rtl::OString& sHelpId); + + /** Add a control to the sub panel without a title bar. + */ + void AddControl (::std::auto_ptr<TreeNode> pControl); + + virtual void Paint (const Rectangle& rRect); + + /** Initiate a rearrangement of the controls and title bars. + */ + virtual void Resize (void); + + virtual void RequestResize (void); + + virtual Size GetPreferredSize (void); + virtual sal_Int32 GetPreferredWidth (sal_Int32 nHeight); + virtual sal_Int32 GetPreferredHeight (sal_Int32 nWidth); + virtual bool IsResizable (void); + virtual ::Window* GetWindow (void); + virtual sal_Int32 GetMinimumWidth (void); + + virtual void ExpandControl ( + TreeNode* pControl, + bool bExpansionState); + + bool IsVerticalScrollBarVisible (void) const; + bool IsHorizontalScrollBarVisible (void) const; + ScrollBar& GetVerticalScrollBar (void); + ScrollBar& GetHorizontalScrollBar (void); + + // ::Window + virtual long Notify( NotifyEvent& rNEvt ); + + virtual ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessible> CreateAccessibleObject ( + const ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessible>& rxParent); + + /** Scroll the given rectangle into the visible area. + @param aRectangle + The box to move into the visible area in pixel coordinates + relative to the given window. + @param pWindow + This window is used to translate the given coordinates into ones + that are relative to the scroll panel. + + */ + void MakeRectangleVisible ( + Rectangle& aRectangle, + ::Window* pWindow); + +private: + ::Control maScrollWindow; + ScrollBar maVerticalScrollBar; + ScrollBar maHorizontalScrollBar; + ::Window maScrollBarFiller; + ::Window maScrollWindowFiller; + Point maScrollOffset; + bool mbIsRearrangePending; + bool mbIsLayoutPending; + sal_uInt32 mnChildrenWidth; + /// Border above top-most and below bottom-most control. + const int mnVerticalBorder; + /// Gap between two controls. + const int mnVerticalGap; + /// Border at the left and right of the controls. + const int mnHorizontalBorder; + /** List of horizontal stripes that is created from the gaps between + children when they are layouted. The stripes are painted in Paint() + to fill the space arround the children. + */ + typedef ::std::vector< ::std::pair<int,int> > StripeList; + StripeList maStripeList; + + /** Calculate position, size, and visibility of the controls. + Call this method after the list of controls, their expansion + state, or the size of the sub panel has changed. + */ + void Rearrange (void); + + /** Determine the minimal size that is necessary to show the controls + one over the other. It may be smaller than the available area. + */ + Size GetRequiredSize (void); + + /** Place the child windows one above the other and return the size of + the bounding box. + */ + sal_Int32 LayoutChildren (void); + + /** ctor-impl + */ + void Construct(); + + Size SetupScrollBars (const Size& rRequiresSize); + sal_Int32 SetupVerticalScrollBar (bool bShow, sal_Int32 nRange); + sal_Int32 SetupHorizontalScrollBar (bool bShow, sal_Int32 nRange); + + DECL_LINK(ScrollBarHandler, ScrollBar*); + DECL_LINK(WindowEventListener, VclSimpleEvent*); + + using Window::GetWindow; +}; + +} } // end of namespace ::sd::toolpanel + +#endif diff --git a/sd/source/ui/inc/taskpane/SlideSorterCacheDisplay.hxx b/sd/source/ui/inc/taskpane/SlideSorterCacheDisplay.hxx new file mode 100755 index 000000000000..933a25f4067d --- /dev/null +++ b/sd/source/ui/inc/taskpane/SlideSorterCacheDisplay.hxx @@ -0,0 +1,201 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_TASKPANE_SLIDE_SORTER_CACHE_DISPLAY_HXX +#define SD_TASKPANE_SLIDE_SORTER_CACHE_DISPLAY_HXX + +// Uncomment the define below to activate the slide sorter cache display in +// the task pane. Visible slide previews are displayed as large rectangles, +// off-screen previews as smaller rectangles. The color shows the state: +// green for no action, different shades of yellow for a request being in +// the queue, pink for currently being rendered. A diagonal line indicates +// that the preview is not up-to-date. +#ifdef DEBUG +//#define USE_SLIDE_SORTER_CACHE_DISPLAY +#endif + + +#ifdef USE_SLIDE_SORTER_CACHE_DISPLAY +#include <taskpane/TaskPaneTreeNode.hxx> + +#include <map> +#include <vector> +#include <memory> + +class Window; + +#include "svx/svdpage.hxx" +#include "drawdoc.hxx" + + +namespace sd { namespace toolpanel { + +class TreeNode; + +/** This panel demonstrates how to create a panel for the task pane. +*/ +class SlideSorterCacheDisplay + : public TreeNode +{ +public: + SlideSorterCacheDisplay (const SdDrawDocument* pDocument); + virtual ~SlideSorterCacheDisplay (void); + + void SetParentWindow (::Window* pParentWindow); + + virtual void Paint (const Rectangle& rBoundingBox); + virtual void Resize (void); + + static SlideSorterCacheDisplay* Instance (const SdDrawDocument* pDocument); + + void SetPageCount (sal_Int32 nPageCount); + enum PageStatus { + NONE, + IN_QUEUE_PRIORITY_0, + IN_QUEUE_PRIORITY_1, + IN_QUEUE_PRIORITY_2, + RENDERING + }; + void SetPageStatus (sal_Int32 nPageIndex, PageStatus eStatus); + void SetPageVisibility (sal_Int32 nPageIndex, bool bVisible); + void SetUpToDate (sal_Int32 nPageIndex, bool bUpToDate); + + virtual Size GetPreferredSize (void); + virtual sal_Int32 GetPreferredWidth (sal_Int32 nHeigh); + virtual sal_Int32 GetPreferredHeight (sal_Int32 nWidth); + virtual ::Window* GetWindow (void); + virtual bool IsResizable (void); + virtual bool IsExpandable (void) const; + virtual bool IsExpanded (void) const; + +private: + static ::std::map<const SdDrawDocument*, SlideSorterCacheDisplay*> maDisplays; + static void AddInstance (const SdDrawDocument* pDocument, SlideSorterCacheDisplay* pControl); + static void RemoveInstance (SlideSorterCacheDisplay* pControl); + + ::Window* mpWindow; + sal_Int32 mnPageCount; + sal_Int32 mnColumnCount; + sal_Int32 mnRowCount; + Size maCellSize; + sal_Int32 mnHorizontalBorder; + sal_Int32 mnVerticalBorder; + sal_Int32 mnHorizontalGap; + sal_Int32 mnVerticalGap; + + class PageDescriptor + { + public: + PageStatus meStatus; + bool mbVisible; + bool mbUpToDate; + }; + typedef ::std::vector<PageDescriptor> PageDescriptorList; + PageDescriptorList maPageDescriptors; + + Rectangle GetPageBox (sal_Int32 nPageIndex); + + void ProvideSize (sal_Int32 nPageIndex); + + void PaintPage (sal_Int32 nPageIndex); +}; + +} } // end of namespace ::sd::toolpanel + +namespace { + +void SscdSetStatus (const SdrPage* pPage, + ::sd::toolpanel::SlideSorterCacheDisplay::PageStatus eStatus) +{ + ::sd::toolpanel::SlideSorterCacheDisplay* pDisplay + = ::sd::toolpanel::SlideSorterCacheDisplay::Instance( + dynamic_cast<SdDrawDocument*>(pPage->GetModel())); + if (pDisplay != NULL) + pDisplay->SetPageStatus((pPage->GetPageNum()-1)/2, eStatus); +} + +void SscdSetRequestClass (const SdrPage* pPage, sal_Int32 nClass) +{ + sd::toolpanel::SlideSorterCacheDisplay::PageStatus eStatus; + switch (nClass) + { + case 0: + eStatus = ::sd::toolpanel::SlideSorterCacheDisplay::IN_QUEUE_PRIORITY_0; break; + case 1: + eStatus = ::sd::toolpanel::SlideSorterCacheDisplay::IN_QUEUE_PRIORITY_1; break; + case 2: + eStatus = ::sd::toolpanel::SlideSorterCacheDisplay::IN_QUEUE_PRIORITY_2; break; + default: + eStatus = ::sd::toolpanel::SlideSorterCacheDisplay::NONE; break; + } + SscdSetStatus(pPage,eStatus); +} + +void SscdSetVisibility (const SdrModel* pModel, sal_Int32 nIndex, bool bVisible) +{ + ::sd::toolpanel::SlideSorterCacheDisplay* pDisplay + = ::sd::toolpanel::SlideSorterCacheDisplay::Instance( + dynamic_cast<const SdDrawDocument*>(pModel)); + if (pDisplay != NULL) + pDisplay->SetPageVisibility(nIndex, bVisible); +} + + + +void SscdSetUpToDate (const SdrPage* pPage, bool bUpToDate) +{ + ::sd::toolpanel::SlideSorterCacheDisplay* pDisplay + = ::sd::toolpanel::SlideSorterCacheDisplay::Instance( + dynamic_cast<const SdDrawDocument*>(pPage->GetModel())); + if (pDisplay != NULL) + pDisplay->SetUpToDate((pPage->GetPageNum()-1)/2, bUpToDate); +} + + + +#define SSCD_SET_REQUEST_CLASS(Page,RequestClass) \ + SscdSetRequestClass(Page,RequestClass) +#define SSCD_SET_STATUS(RequestData,Status) \ + SscdSetStatus(RequestData,::sd::toolpanel::SlideSorterCacheDisplay::Status) +#define SSCD_SET_VISIBILITY(Model,Index,Visible) \ + SscdSetVisibility(Model,Index,Visible) +#define SSCD_SET_UPTODATE(Page,UpToDate) \ + SscdSetUpToDate(Page,UpToDate) + + +} + +#else + +#define SSCD_SET_REQUEST_CLASS(Page,RequestClass) +#define SSCD_SET_STATUS(RequestData,Status) +#define SSCD_SET_VISIBILITY(Model,Index,Visible) +#define SSCD_SET_UPTODATE(Page,UpToDate) + +#endif + +#endif diff --git a/sd/source/ui/inc/taskpane/SubToolPanel.hxx b/sd/source/ui/inc/taskpane/SubToolPanel.hxx new file mode 100755 index 000000000000..468fd079f565 --- /dev/null +++ b/sd/source/ui/inc/taskpane/SubToolPanel.hxx @@ -0,0 +1,134 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_TASKPANE_SUB_TOOL_PANEL_HXX +#define SD_TASKPANE_SUB_TOOL_PANEL_HXX + +#include "taskpane/TaskPaneTreeNode.hxx" + +#include <vcl/ctrl.hxx> +#include <vcl/scrbar.hxx> +#include <memory> +#include <vector> + + +class Window; + +namespace sd { namespace toolpanel { + +/** The sub tool panel is in function similar to the tool panel. It + differes in two points. First, it is a control that can be used + as element in a tool panel and thus is actually a nested tool + panel. + + <p>Secondly, it formats its elements differently. The actual controls + are placed one below the other with a title bar above each control. + Clicking on the title bar expands or collapses the control. When there + is not enough space then scroll bars are shown.</p> + + <p>To avoid flickering when painting the sub tool panel the background + is made transparent and painting it is done by this class. While + layouting its children it remembers the gaps between children and stores + them in maStripeList. In Paint() those gaps as well as the border + arround all children are painted in the background color.</p> +*/ +class SubToolPanel + : public Control, + public TreeNode +{ +public: + /** Create a new sub tool panel with the given window as its + parent. This will usually be a child window. + */ + SubToolPanel (Window& i_rParentWindow); + virtual ~SubToolPanel (void); + + virtual void Paint (const Rectangle& rRect); + + /** Initiate a rearrangement of the controls and title bars. + */ + virtual void Resize (void); + + virtual void RequestResize (void); + + virtual Size GetPreferredSize (void); + virtual sal_Int32 GetPreferredWidth (sal_Int32 nHeight); + virtual sal_Int32 GetPreferredHeight (sal_Int32 nWidth); + virtual bool IsResizable (void); + virtual ::Window* GetWindow (void); + virtual sal_Int32 GetMinimumWidth (void); + + virtual void ExpandControl ( + TreeNode* pControl, + bool bExpansionState); + + virtual ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessible> CreateAccessibleObject ( + const ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessible>& rxParent); + + using Window::GetWindow; +private: + ::Window maWindowFiller; + bool mbIsRearrangePending; + bool mbIsLayoutPending; + sal_uInt32 mnChildrenWidth; + /// Border above top-most and below bottom-most control. + const int mnVerticalBorder; + /// Gap between two controls. + const int mnVerticalGap; + /// Border at the left and right of the controls. + const int mnHorizontalBorder; + /** List of horizontal stripes that is created from the gaps between + children when they are layouted. The stripes are painted in Paint() + to fill the space arround the children. + */ + typedef ::std::vector< ::std::pair<int,int> > StripeList; + StripeList maStripeList; + + /** Calculate position, size, and visibility of the controls. + Call this method after the list of controls, their expansion + state, or the size of the sub panel has changed. + */ + void Rearrange (void); + + /** Determine the minimal size that is necessary to show the controls + one over the other. It may be smaller than the available area. + */ + Size GetRequiredSize (void); + + /** Place the child windows one above the other and return the size of + the bounding box. + */ + sal_Int32 LayoutChildren (void); + + DECL_LINK(WindowEventListener, VclSimpleEvent*); +}; + +} } // end of namespace ::sd::toolpanel + +#endif diff --git a/sd/source/ui/inc/taskpane/TaskPaneControlFactory.hxx b/sd/source/ui/inc/taskpane/TaskPaneControlFactory.hxx new file mode 100755 index 000000000000..c86c496a770d --- /dev/null +++ b/sd/source/ui/inc/taskpane/TaskPaneControlFactory.hxx @@ -0,0 +1,98 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_TASKPANE_CONTROL_FACTORY_HXX +#define SD_TASKPANE_CONTROL_FACTORY_HXX + +#include "taskpane/TaskPaneTreeNode.hxx" + +#include <memory> + +namespace sd { +class ViewShellBase; +} + +namespace sd { namespace toolpanel { +class TreeNode; +} } + + + + +namespace sd { namespace toolpanel { + +/** A simple factory base class defines the interface that is used by + some of the control containers of the task pane to create controls on + demand when they are about to be displayed for the first time. + + It provides the InternalCreateControl() method as hook that can be + overloaded by derived classes to provide a new control. +*/ +class ControlFactory +{ +public: + ControlFactory (void); + virtual ~ControlFactory (void); + + /** creates a tree node which acts as root of an own tree + + Derived classes should overload InternalCreateControl. + */ + ::std::auto_ptr<TreeNode> CreateControl( ::Window& i_rParent ); + +protected: + virtual TreeNode* InternalCreateControl( ::Window& i_rParent ) = 0; +}; + + + +/** A simple helper class that realizes a ControlFactory that is able to create root controls, providing + the to-be-created control with an additional parameter. +*/ +template<class ControlType, class ArgumentType> +class RootControlFactoryWithArg + : public ControlFactory +{ +public: + RootControlFactoryWithArg (ArgumentType& rArgument) + : mrArgument(rArgument) + {} + +protected: + virtual TreeNode* InternalCreateControl( ::Window& i_rParent ) + { + return new ControlType( i_rParent, mrArgument ); + } + +private: + ArgumentType& mrArgument; +}; + + +} } // end of namespace ::sd::toolpanel + +#endif diff --git a/sd/source/ui/inc/taskpane/TaskPaneTreeNode.hxx b/sd/source/ui/inc/taskpane/TaskPaneTreeNode.hxx new file mode 100755 index 000000000000..a1a430c49328 --- /dev/null +++ b/sd/source/ui/inc/taskpane/TaskPaneTreeNode.hxx @@ -0,0 +1,214 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_TASKPANE_TREE_NODE_HXX +#define SD_TASKPANE_TREE_NODE_HXX + +#include "ILayoutableWindow.hxx" +#include <memory> +#include <vector> +#include <com/sun/star/accessibility/XAccessible.hpp> +#include <tools/link.hxx> + +namespace sd { +class ObjectBarManager; +} + +namespace sd { namespace toolpanel { + +class ControlContainer; +class TaskPaneShellManager; + +enum TreeNodeStateChangeEventId { + EID_CHILD_ADDED, + EID_ALL_CHILDREN_REMOVED, + EID_EXPANSION_STATE_CHANGED, + EID_FOCUSED_STATE_CHANGED, + EID_SHOWING_STATE_CHANGED +}; + + +/** Base class for all members of the object hierarchy that makes up the + tool panel. In the task pane, there are multiple hierarchies of such nodes, + with every panel having an own tree. The pane node is the root of the tree, below + that there are SubToolPanels and Window/Control objects. At the + lowest level there are only Window or Control objects. + + This class provides the means of communication between objects on + different levels. +*/ +class TreeNode + : public ILayoutableWindow, + public ILayouter +{ +public: + TreeNode (TreeNode* pParent); + virtual ~TreeNode (void); + + void SetParentNode (TreeNode* pNewParent); + TreeNode* GetParentNode (void); + + /** Return the Window pointer of a tree node. + */ + virtual ::Window* GetWindow (void); + + /** Return a const pointer to the window of a tree node. + */ + virtual const ::Window* GetConstWindow (void) const; + + /** Return the joined minimum width of all children, i.e. the largest of + the minimum widths. + */ + virtual sal_Int32 GetMinimumWidth (void); + + /** The default implementaion always returns <FALSE/> + */ + virtual bool IsResizable (void); + + /** Call this method whenever the size of one of the children of the + called node has to be changed, e.g. when the layout menu shows more + or less items than before. As a typical result the node will layout + and resize its children according to their size requirements. + + Please remember that the size of the children can be changed in the + first place because scroll bars can give a node the space it needs. + + The default implementation passes this call to its parent. + */ + virtual void RequestResize (void); + + /** The default implementation shows the window (when it exists) when + bExpansionState is <TRUE/>. It hides the window otherwise. + @return + Returns <TRUE/> when the expansion state changes. When an + expansion state is requested that is already in place then + <FALSE/> is returned. + */ + virtual bool Expand (bool bExpansionState); + + /** The default implementation returns whether the window is showing. + When there is no window then it returns <FALSE/>. + */ + virtual bool IsExpanded (void) const; + + /** Return whether the node can be expanded or collapsed. The default + implementation always returns <TRUE/> when there is window and + <FALSE/> otherwise. If <FALSE/> is returned + then Expand() may be called but it will not change the expansion + state. + */ + virtual bool IsExpandable (void) const; + + /** The default implementation calls GetWindow()->Show(). + */ + virtual void Show (bool bVisibilityState); + + /** The default implementation returns GetWindow()->IsVisible(). + */ + virtual bool IsShowing (void) const; + + ControlContainer& GetControlContainer (void); + + /** Give each node access to a shell manage. This usually is the shell + manager of the ToolPanelViewShell. + + At least the root node has to overwrite this method since the + default implementation simply returns the shell manager of its + parent. + */ + virtual TaskPaneShellManager* GetShellManager (void); + + /** You will rarely need to overload this method. To supply your own + accessible object you should overload CreateAccessible() instead. + */ + virtual ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessible> GetAccessibleObject (void); + + /** Overload this method in order to supply a class specific accessible + object. + The default implementation will return a new instance of + AccessibleTreeNode. + @param rxParent + The accessible parent of the accessible object to create. It is + not necessaryly the accessible object of the parent window of + GetWindow(). + + */ + virtual ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessible> CreateAccessibleObject ( + const ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessible>&rxParent); + + /** Add a listener that will be informated in the future about state + changes of the tree node. This includes adding and removing + children as well as focus, visibility, and expansion state. + Multiple calls are ignored. Each listener is added only once. + */ + void AddStateChangeListener (const Link& rListener); + + /** Call the state change listeners and pass a state change event with + the specified event id. The source field is set to this. + @param pChild + This optional parameter makes sense only with the + EID_CHILD_ADDED event. + */ + void FireStateChangeEvent ( + TreeNodeStateChangeEventId eEventId, + TreeNode* pChild = NULL) const; + +protected: + ::std::auto_ptr<ControlContainer> mpControlContainer; + +private: + TreeNode* mpParent; + typedef ::std::vector<Link> StateChangeListenerContainer; + StateChangeListenerContainer maStateChangeListeners; +}; + + + + +/** Objects of this class are sent to listeners to notify them about state + changes of a tree node. +*/ +class TreeNodeStateChangeEvent +{ +public: + + TreeNodeStateChangeEvent ( + const TreeNode& rNode, + TreeNodeStateChangeEventId eEventId, + TreeNode* pChild = NULL); + + const TreeNode& mrSource; + TreeNodeStateChangeEventId meEventId; + TreeNode* mpChild; +}; + +} } // end of namespace ::sd::toolpanel + +#endif diff --git a/sd/source/ui/inc/taskpane/TitleBar.hxx b/sd/source/ui/inc/taskpane/TitleBar.hxx new file mode 100755 index 000000000000..466330ff86cc --- /dev/null +++ b/sd/source/ui/inc/taskpane/TitleBar.hxx @@ -0,0 +1,169 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_TASKPANE_TITLE_BAR_HXX +#define SD_TASKPANE_TITLE_BAR_HXX + +#include "taskpane/TaskPaneTreeNode.hxx" +#include <vcl/image.hxx> +#include <tools/string.hxx> +#include <vcl/window.hxx> +#include <memory> + +class Rectangle; +class String; +class VirtualDevice; + +namespace sd { namespace toolpanel { + + +/** The title bar above a control in a sub tool panel. + + <p>The title bar shows two kinds of indicators: 1) Expansion is + displayed by two sets of two bitmaps, a triangle pointing to the right + resp. a minus in a square indicates that the control is collapsed, a + triangle pointing down resp. a plus in a square stands for an expanded + control. 2) Keyboard focus is indicated by a dotted rectangle. +*/ +class TitleBar + : public ::Window, + public TreeNode +{ +public: + enum TitleBarType { + TBT_SUB_CONTROL_HEADLINE + }; + + /** Create a new title bar whose content, the given title string, + will be formatted according to the given type. + */ + TitleBar ( + ::Window* pParent, + const String& rsTitle, + TitleBarType eType, + bool bIsExpandable); + virtual ~TitleBar (void); + + virtual Size GetPreferredSize (void); + virtual sal_Int32 GetPreferredWidth (sal_Int32 nHeight); + virtual sal_Int32 GetPreferredHeight (sal_Int32 nWidth); + virtual bool IsResizable (void); + virtual ::Window* GetWindow (void); + virtual sal_Int32 GetMinimumWidth (void); + + virtual void Paint (const Rectangle& rBoundingBox); + virtual bool Expand (bool bFlag = true); + virtual bool IsExpanded (void) const; + virtual void SetEnabledState(bool bFlag); + virtual void GetFocus (void); + virtual void LoseFocus (void); + + virtual void MouseMove(const MouseEvent& rEvent); + /** Empty implementation prevents forwarding to docking window. + */ + virtual void MouseButtonDown (const MouseEvent& rEvent); + /** Empty implementation prevents forwarding to docking window. + */ + virtual void MouseButtonUp (const MouseEvent& rEvent); + + virtual void DataChanged (const DataChangedEvent& rEvent); + + String GetTitle (void) const; + + ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessible > CreateAccessibleObject ( + const ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessible>& rxParent); + +private: + TitleBarType meType; + String msTitle; + bool mbExpanded; + bool mbFocused; + // Size of the bounding box that encloses the title string. + ::std::auto_ptr<VirtualDevice> mpDevice; + bool mbIsExpandable; + + /** Return whether this TitleBar object has an expansion indicator + bitmap. It is safe to call GetExpansionIndicator() when this method + returns <FALSE/> but unnecessary. + */ + bool HasExpansionIndicator (void) const; + + /** Return the image of the expansion indicator. + @return + When there is no expansion indictor for this TitleBar object, + then an empty Image is returned. You better call + HasExpansionIndicator() to prevent this. + */ + Image GetExpansionIndicator (void) const; + + /** Calculate the bounding box of the title text. This takes into + account indentation due to an expansion indicator and the given + available width. When the text can not be displayed on one line, it + is broken into multiple lines. + @param nAvailableWidth + When 0 is given then the natural text width is used, i.e. the + text is not broken into multiple lines. + */ + Rectangle CalculateTextBoundingBox ( + int nAvailableWidth, + bool bEmphasizeExpanded); + + /** Add some space to the given text box and return the bounding box of + the title bar. + */ + Rectangle CalculateTitleBarBox ( + const Rectangle& rTextBox, + int nTitleBarWidth); + + void PaintSubPanelHeadLineBar (void); + + void PaintBackground (const Rectangle& rTextBox); + + /// Paint a focus indicator that encloses the given rectangle. + void PaintFocusIndicator (const Rectangle& rIndicatorBox); + + Rectangle PaintExpansionIndicator (const Rectangle& rTextBox); + + void PaintText (const Rectangle& rTextBox); + + sal_uInt16 GetTextStyle (void); + + const static int snIndentationWidth; + + // Default constructor, copy constructor, and assignment are not supported. + TitleBar (void); + TitleBar (const TitleBar&); + TitleBar& operator= (const TitleBar&); + + using Window::GetWindow; +}; + +} } // end of namespace ::sd::toolpanel + +#endif diff --git a/sd/source/ui/inc/taskpane/TitledControl.hxx b/sd/source/ui/inc/taskpane/TitledControl.hxx new file mode 100755 index 000000000000..cb7cd3b2159c --- /dev/null +++ b/sd/source/ui/inc/taskpane/TitledControl.hxx @@ -0,0 +1,181 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_TASKPANE_TITLED_CONTROL_HXX +#define SD_TASKPANE_TITLED_CONTROL_HXX + +#include "taskpane/TaskPaneTreeNode.hxx" +#include "taskpane/ControlContainer.hxx" +#include "TitleBar.hxx" +#include <com/sun/star/drawing/framework/XResourceId.hpp> +#include <tools/string.hxx> +#include <tools/gen.hxx> +#ifndef SD_WINDOW_HXX +#include <vcl/window.hxx> +#endif +#include <memory> +#include <boost/function.hpp> + +class Window; + +namespace sd { namespace toolpanel { + +class ControlContainer; + +/** This wrapper adds a title bar to a control. Both title bar and + control are child windows. +*/ +class TitledControl + : public ::Window, + public TreeNode +{ +public: + typedef ::boost::function1<void, TitledControl&> ClickHandler; + + /** Create a new descriptor for the given control. + @param pParent + The parent window of the new descriptor. + @param pControl + The control that is shown when being in the expanded + state. + @param rTitle + String that is shown as title in the title area above the + control. + @param rClickHandler + The typical action of the click handler is to expand the control. + @param eType + Type of the title bar. This specifies how the title bar + will be formated. For more information see TitleBar. + + */ + TitledControl ( + TreeNode* pParent, + ::std::auto_ptr<TreeNode> pControl, + const String& rTitle, + const ClickHandler& rClickHandler, + TitleBar::TitleBarType eType); + + virtual ~TitledControl (void); + + + virtual Size GetPreferredSize (void); + virtual sal_Int32 GetPreferredWidth (sal_Int32 nHeight); + virtual sal_Int32 GetPreferredHeight (sal_Int32 nWidth); + virtual bool IsResizable (void); + virtual ::Window* GetWindow (void); + + virtual void Resize (void); + virtual void GetFocus (void); + virtual void KeyInput (const KeyEvent& rEvent); + + // void Select (bool bExpansionState); + + TitleBar* GetTitleBar (void); + /** Return the control child. When a control factory has been given and + the control has not yet been created and the given flag is <TRUE/> + then the control is created. + */ + TreeNode* GetControl (void); + const TreeNode* GetConstControl () const; + + const String& GetTitle (void) const; + + /** Expand the control without informing its container. This + method ususally is called by the container as a result of a + higher level expand command. You may want to use + ExpandViaContainer() instead. + @param bExpanded + When <TRUE/> then the control is expanded, otherwise it is + collapsed. + */ + virtual bool Expand (bool bExpanded = true); + + /** Return whether the control is currently expanded (<TRUE/>) or + not (<FALSE/>). + */ + virtual bool IsExpanded (void) const; + + /** Returns the value of the control. + */ + virtual bool IsExpandable (void) const; + + virtual void SetEnabledState(bool bFlag); + + virtual bool IsShowing (void) const; + virtual void Show (bool bVisible); + + virtual ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessible > CreateAccessibleObject ( + const ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessible>& rxParent); + + using Window::GetWindow; + using Window::Show; + +private: + String msTitle; + bool mbVisible; + void* mpUserData; + ::std::auto_ptr<ClickHandler> mpClickHandler; + + /// Do not use! Assignment operator is not supported. + const TitledControl& operator= ( + const TitledControl& aDescriptor); + + void UpdateStates (void); + + DECL_LINK(WindowEventListener, VclSimpleEvent*); +}; + + + + +/** This standard implementation of the ClickHandler expands, or toggles the + expansion state, of the control, whose title was clicked. +*/ +class TitledControlStandardClickHandler +{ +public: + /** Create a new instance of this class. + @param rControlContainer + The container of which the TitledControl is part of. + @param eExpansionState + This specifies whether to always expand the titled control or to + toggle its expansion state. + */ + TitledControlStandardClickHandler ( + ControlContainer& rControlContainer, + ControlContainer::ExpansionState eExpansionState); + void operator () (TitledControl& rTitledControl); +private: + ControlContainer& mrControlContainer; + ControlContainer::ExpansionState meExpansionState; +}; + +} } // end of namespace ::sd::toolpanel + +#endif diff --git a/sd/source/ui/inc/taskpane/ToolPanelViewShell.hxx b/sd/source/ui/inc/taskpane/ToolPanelViewShell.hxx new file mode 100644 index 000000000000..431932fc01f6 --- /dev/null +++ b/sd/source/ui/inc/taskpane/ToolPanelViewShell.hxx @@ -0,0 +1,172 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: ToolPanelViewShell.hxx,v $ + * $Revision: 1.12 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_TOOL_PANEL_VIEW_SHELL_HXX +#define SD_TOOL_PANEL_VIEW_SHELL_HXX + +#include "ViewShell.hxx" +#include "glob.hxx" +#include "taskpane/PanelId.hxx" +#include "framework/FrameworkHelper.hxx" +#include <vcl/button.hxx> +#include <sfx2/shell.hxx> +#include <sfx2/viewfac.hxx> +#include <sfx2/dockwin.hxx> + +#include <boost/shared_ptr.hpp> +#include <boost/scoped_ptr.hpp> + +class PopupMenu; + +namespace com { namespace sun { namespace star { namespace ui { + class XUIElement; +} } } } + +namespace sd { +class PaneDockingWindow; + +namespace toolpanel { +class TaskPaneShellManager; +class TitleToolBox; +class TitleBar; +class TitledControl; +class ToolPanelViewShell_Impl; +/** The tool panel is a view shell for some very specific reasons: + - It fits better into the concept of panes being docking windows whose + content, a view shell, can be exchanged on runtime. + - A control in the tool panel that wants to show a context menu has to + do that over the dispatcher of a shell. These shells, usually + implemented by the controls themselves, have to be managed by someone. + If interpreted as object bars this can be handled by the + ObjectBarManager of the ViewShell. +*/ +class ToolPanelViewShell + : public ViewShell +{ +public: + TYPEINFO(); + SFX_DECL_INTERFACE(SD_IF_SDTOOLPANELSHELL) + + ToolPanelViewShell ( + SfxViewFrame* pFrame, + ViewShellBase& rViewShellBase, + ::Window* pParentWindow, + FrameView* pFrameView); + virtual ~ToolPanelViewShell (void); + + /** Register the SFX interfaces so that (some of) the controls can be + pushed as SFX shells on the shell stack and process slot calls and + so on. + */ + static void RegisterControls (void); + + virtual void GetFocus (void); + virtual void LoseFocus (void); + virtual void KeyInput (const KeyEvent& rEvent); + using sd::ViewShell::KeyInput; + + virtual SdPage* GetActualPage (void); + virtual SdPage* getCurrentPage (void) const; + + virtual void ArrangeGUIElements (void); + + TaskPaneShellManager& GetSubShellManager (void) const; + + /** deactivates the given panel, bypassing the configuration controller. Only valid for tool panels which are + not under the drawing framework's control. + */ + void ActivatePanel( const ::rtl::OUString& i_rPanelResourceURL ); + + /** deactivates the given panel, bypassing the configuration controller + */ + void DeactivatePanel( const ::rtl::OUString& i_rPanelResourceURL ); + + /** Return a pointer to the docking window that is the parent or a + predecessor of the content window. + @return + When the view shell is not placed in a docking window, e.g. when + shown in the center pane, then <NULL?> is returned. + */ + DockingWindow* GetDockingWindow (void); + + virtual ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessible> + CreateAccessibleDocumentView (::sd::Window* pWindow); + + virtual css::uno::Reference<css::drawing::XDrawSubController> CreateSubController (void); + + /** Relocate all toplevel controls to the given parent window. + */ + virtual bool RelocateToParentWindow (::Window* pParentWindow); + + /// returns <TRUE/> if and only if the given window is the panel anchor window of our ToolPanelDeck + bool IsPanelAnchorWindow( const ::Window& i_rWindow ) const; + + /** creates an XUIElement for the given standard panel + */ + ::com::sun::star::uno::Reference< ::com::sun::star::ui::XUIElement > + CreatePanelUIElement( + const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& i_rDocFrame, + const ::rtl::OUString& i_rPanelResourceURL + ); + +private: + ::boost::scoped_ptr< ToolPanelViewShell_Impl > mpImpl; + + ::boost::shared_ptr<TaskPaneShellManager> mpSubShellManager; + + /** The id of the menu in the menu bar/tool box of the parent docking + window. + */ + sal_uInt16 mnMenuId; + + /** Create a popup menu. it contains two sections, one for + docking or un-docking the tool panel, one for toggling the + visibility state of the tool panel items. + @param bIsDocking + According to this flag one of the lock/unlock entries is + made disabled. + */ + ::std::auto_ptr<PopupMenu> CreatePopupMenu (bool bIsDocking); + + + /** Initialize the task pane view shell if that has not yet been done + before. If mbIsInitialized is already set to <TRUE/> then this + method returns immediately. + */ + void Initialize (void); +}; + + + + +} } // end of namespace ::sd::toolpanel + +#endif diff --git a/sd/source/ui/inc/tbx_ww.hrc b/sd/source/ui/inc/tbx_ww.hrc new file mode 100644 index 000000000000..0189eecf2739 --- /dev/null +++ b/sd/source/ui/inc/tbx_ww.hrc @@ -0,0 +1,29 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#define TBX_ALIGNMENT 1 +#define TBX_ZOOM 1 +#define TBX_CONTROLS 1 diff --git a/sd/source/ui/inc/tbx_ww.hxx b/sd/source/ui/inc/tbx_ww.hxx new file mode 100755 index 000000000000..b59290883328 --- /dev/null +++ b/sd/source/ui/inc/tbx_ww.hxx @@ -0,0 +1,89 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + + +#ifndef _SD_TBX_WW_HXX +#define _SD_TBX_WW_HXX + +#include <sdresid.hxx> +#include <sfx2/tbxctrl.hxx> + +//------------------------------------------------------------------------ + +/* +class SdPopupWindowTbx : public SfxPopupWindow +{ +private: + SfxToolBoxManager aTbx; + SdResId aSdResIdWin; + SdResId aSdResIdTbx; + WindowAlign eTbxAlign; + Link aSelectLink; + + DECL_LINK( TbxSelectHdl, ToolBox * ); + +public: + SdPopupWindowTbx( sal_uInt16 nId, WindowAlign eAlign, + SdResId aRIdWin, SdResId aRIdTbx, SfxBindings& rBindings ); + ~SdPopupWindowTbx(); + + virtual SfxPopupWindow* Clone() const; + + virtual void PopupModeEnd(); + + void StartSelection() { aTbx.GetToolBox().StartSelection(); } + void Update(); + +private: + + // Adapt the toolbox to whether CTL is active or not. If CTL is not + // active then all toolbox items that describe CTL specific shapes are + // deleted from it and its size is re-calculated. + void AdaptToCTL (void); +}; +*/ +//------------------------------------------------------------------------ + +class SdTbxControl : public SfxToolBoxControl +{ +private: + sal_Bool IsCheckable( sal_uInt16 nSId ); + +public: + SFX_DECL_TOOLBOX_CONTROL(); + + SdTbxControl(sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx ); + ~SdTbxControl() {} + + virtual SfxPopupWindowType GetPopupWindowType() const; + virtual SfxPopupWindow* CreatePopupWindow(); + virtual void StateChanged( sal_uInt16 nSId, SfxItemState eState, + const SfxPoolItem* pState ); +}; + +#endif // _SD_TBX_WW_HXX + diff --git a/sd/source/ui/inc/tmplctrl.hxx b/sd/source/ui/inc/tmplctrl.hxx new file mode 100755 index 000000000000..ab0aac07dabe --- /dev/null +++ b/sd/source/ui/inc/tmplctrl.hxx @@ -0,0 +1,53 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef _SD_TMPLCTRL_HXX +#define _SD_TMPLCTRL_HXX + +#include <sfx2/stbitem.hxx> +#include <tools/string.hxx> + +class SdTemplateControl : public SfxStatusBarControl +{ +public: + SdTemplateControl( sal_uInt16 nSlotId, sal_uInt16 nId, StatusBar& rStb ); + ~SdTemplateControl(); + + virtual void StateChanged( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState ); + virtual void Paint( const UserDrawEvent& rEvt ); + + SFX_DECL_STATUSBAR_CONTROL(); + +protected: + virtual void Command( const CommandEvent& rCEvt ); + +private: + String msTemplate; +}; + + +#endif + diff --git a/sd/source/ui/inc/tools/AsynchronousCall.hxx b/sd/source/ui/inc/tools/AsynchronousCall.hxx new file mode 100644 index 000000000000..e123afaa06fe --- /dev/null +++ b/sd/source/ui/inc/tools/AsynchronousCall.hxx @@ -0,0 +1,92 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_ASYNCHRONOUS_CALL_HXX +#define SD_ASYNCHRONOUS_CALL_HXX + +#include <vcl/timer.hxx> +#include <memory> +#include <boost/function.hpp> + +namespace sd { namespace tools { + + +/** Store a function object and execute it asynchronous. + + The features of this class are: + a) It provides a wrapper around a VCL Timer so that generic function + objects can be used. + b) When more than one function objects are posted to be executed later + then the pending ones are erased and only the last one will actually be + executed. + + Use this class like this: + aInstanceOfAsynchronousCall.Post( + ::boost::bind( + ::std::mem_fun(&DrawViewShell::SwitchPage), + pDrawViewShell, + 11)); +*/ +class AsynchronousCall +{ +public: + /** Create a new asynchronous call. Each object of this class processes + one (semantical) type of call. + */ + AsynchronousCall (void); + + ~AsynchronousCall (void); + + /** Post a function object that is to be executed asynchronously. When + this method is called while the current function object has not bee + executed then the later is destroyed and only the given function + object will be executed. + @param rFunction + The function object that may be called asynchronously in the + near future. + @param nTimeoutInMilliseconds + The timeout in milliseconds until the function object is + executed. + */ + typedef ::boost::function0<void> AsynchronousFunction; + void Post ( + const AsynchronousFunction& rFunction, + sal_uInt32 nTimeoutInMilliseconds=10); + +private: + Timer maTimer; + /** The function object that will be executed when the TimerCallback + function is called the next time. This pointer may be NULL. + */ + ::std::auto_ptr<AsynchronousFunction> mpFunction; + DECL_LINK(TimerCallback,Timer*); +}; + + +} } // end of namespace ::sd::tools + +#endif diff --git a/sd/source/ui/inc/tools/AsynchronousTask.hxx b/sd/source/ui/inc/tools/AsynchronousTask.hxx new file mode 100755 index 000000000000..f3135d3fcce7 --- /dev/null +++ b/sd/source/ui/inc/tools/AsynchronousTask.hxx @@ -0,0 +1,55 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_ASYNCHRONOUS_TASK_HXX +#define SD_ASYNCHRONOUS_TASK_HXX + +namespace sd { namespace tools { + +/** Interface for the asynchronous execution of a task. This interface + allows an controller to run the task either timer based with a fixed + amount of time between the steps or thread based one step right after + the other. +*/ +class AsynchronousTask +{ +public: + /** Run the next step of the task. After HasNextStep() returns false + this method should ignore further calls. + */ + virtual void RunNextStep (void) = 0; + + /** Return <TRUE/> when there is at least one more step to execute. + When the task has been executed completely then <FALSE/> is + returned. + */ + virtual bool HasNextStep (void) = 0; +}; + +} } // end of namespace ::sd::tools + +#endif diff --git a/sd/source/ui/inc/tools/ConfigurationAccess.hxx b/sd/source/ui/inc/tools/ConfigurationAccess.hxx new file mode 100644 index 000000000000..953012dfa668 --- /dev/null +++ b/sd/source/ui/inc/tools/ConfigurationAccess.hxx @@ -0,0 +1,152 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_TOOLS_CONFIGURATION_ACCESS_HXX +#define SD_TOOLS_CONFIGURATION_ACCESS_HXX + +#include <rtl/ustring.hxx> +#include <com/sun/star/container/XNameAccess.hpp> +#include <com/sun/star/container/XHierarchicalNameAccess.hpp> +#include <com/sun/star/uno/XComponentContext.hpp> +#include <com/sun/star/lang/XMultiServiceFactory.hpp> +#include <vector> +#include <boost/function.hpp> + +namespace css = ::com::sun::star; + +namespace sd { namespace tools { + +/** This class gives access to the configuration. Create an object of this + class for one node of the configuration. This will be the root node. + Its children are then accessible through the new ConfigurationAccess + object. +*/ +class ConfigurationAccess +{ +public: + enum WriteMode { READ_WRITE, READ_ONLY }; + + /** Create a new object to access the configuration entries below the + given root. + @param rsRootName + Name of the root. + @param eMode + This flag specifies whether to give read-write or read-only + access. + */ + ConfigurationAccess( + const ::rtl::OUString& rsRootName, + const WriteMode eMode); + + ConfigurationAccess( + const css::uno::Reference<css::uno::XComponentContext>& rxContext, + const ::rtl::OUString& rsRootName, + const WriteMode eMode); + + /** Return a configuration node below the root of the called object. + @param rsPathToNode + The relative path from the root (as given the constructor) to + the node. + @return + The type of the returned node varies with the requested node. + It is empty when the node was not found. + */ + css::uno::Any GetConfigurationNode ( + const ::rtl::OUString& rsPathToNode); + + /** Return a configuration node below the given node. + @param rxNode + The node that acts as root to the given relative path. + @param rsPathToNode + The relative path from the given node to the requested node. + @return + The type of the returned node varies with the requested node. + It is empty when the node was not found. + */ + static css::uno::Any GetConfigurationNode ( + const css::uno::Reference<css::container::XHierarchicalNameAccess>& rxNode, + const ::rtl::OUString& rsPathToNode); + + /** Write any changes that have been made back to the configuration. + This call is ignored when the called ConfigurationAccess object was + not create with read-write mode. + */ + void CommitChanges (void); + + /** This functor is typically called for every item in a set. Its two + parameters are the name of key item (often of no further interest) + and the value of the item. + */ + typedef ::boost::function<void( + const ::rtl::OUString&, + const std::vector<css::uno::Any>&) > Functor; + + /** Execute a functor for all elements of the given container. + @param rxContainer + The container is a XNameAccess to a list of the configuration. + This can be a node returned by GetConfigurationNode(). + @param rArguments + The functor is called with arguments that are children of each + element of the container. The set of children is specified this + list. + @param rFunctor + The functor to be executed for some or all of the elements in + the given container. + */ + static void ForAll ( + const css::uno::Reference<css::container::XNameAccess>& rxContainer, + const ::std::vector<rtl::OUString>& rArguments, + const Functor& rFunctor); + + /** Fill a list with the string contents of all sub-elements in the given container. + @param rxContainer + The container is a XNameAccess to a list of the configuration. + This can be a node returned by GetConfigurationNode(). + @param rsArgument + This specifies which string children of the elements in the + container are to be inserted into the list. The specified child + has to be of type string. + @param rList + The list to be filled. + */ + static void FillList( + const css::uno::Reference<css::container::XNameAccess>& rxContainer, + const ::rtl::OUString& rsArgument, + ::std::vector<rtl::OUString>& rList); + +private: + css::uno::Reference<css::uno::XInterface> mxRoot; + + void Initialize ( + const css::uno::Reference<css::lang::XMultiServiceFactory>& rxProvider, + const ::rtl::OUString& rsRootName, + const WriteMode eMode); +}; + +} } // end of namespace sd::tools + +#endif diff --git a/sd/source/ui/inc/tools/IconCache.hxx b/sd/source/ui/inc/tools/IconCache.hxx new file mode 100755 index 000000000000..b0619ea4b2d7 --- /dev/null +++ b/sd/source/ui/inc/tools/IconCache.hxx @@ -0,0 +1,79 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_ICON_CACHE_HXX +#define SD_ICON_CACHE_HXX + +#include "SdGlobalResourceContainer.hxx" +#include <vcl/image.hxx> + +namespace sd { + +/** This simple class stores frequently used icons so that the classes that + use the icons do not have to store them in every one of their + instances. + + Icons are adressed over their resource id and are loaded on demand. + + This cache acts like a singleton with a lifetime equal to that of the sd + module. +*/ +class IconCache + : public SdGlobalResource +{ +public: + /** The lifetime of the returned reference is limited to that of the sd + module. + */ + static IconCache& Instance (void); + + /** Return the icon with the given resource id. + @return + The returned Image may be empty when there is no icon for the + given id or an error occured. Should not happen under normal + circumstances. + */ + Image GetIcon (sal_uInt16 nResourceId); + +private: + class Implementation; + ::std::auto_ptr<Implementation> mpImpl; + + /** The constructor creates the one instance of the cache and registers + it at the SdGlobalResourceContainer to limit is lifetime to that of + the sd module. + */ + IconCache (void); + + /** This destructor is called by SdGlobalResourceContainer. + */ + virtual ~IconCache (void); +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/tools/IdleDetection.hxx b/sd/source/ui/inc/tools/IdleDetection.hxx new file mode 100644 index 000000000000..3369dc1dd177 --- /dev/null +++ b/sd/source/ui/inc/tools/IdleDetection.hxx @@ -0,0 +1,91 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_IDLE_DETECTION_HXX +#define SD_IDLE_DETECTION_HXX + +#include <sal/types.h> + +class Window; + +namespace sd { namespace tools { + +/** Detect whether the system is idle and some time consuming operation may + be carried out. This class ditinguishes between different states of + idle-ness. +*/ +class IdleDetection +{ +public: + /** When GetIdleState() returns this value, then the system is idle. + */ + static const sal_Int32 IDET_IDLE = 0x0000; + + /** There are system event pending. + */ + static const sal_Int32 IDET_SYSTEM_EVENT_PENDING = 0x0001; + + /** A full screen slide show is running and is active. In contrast + there may be a full screen show be running in an inactive window, + i.e. in the background. + */ + static const sal_Int32 IDET_FULL_SCREEN_SHOW_ACTIVE = 0x0002; + + /** A slide show is running in a window. + */ + static const sal_Int32 IDET_WINDOW_SHOW_ACTIVE = 0x0004; + + /** A window is being painted. + */ + static const sal_Int32 IDET_WINDOW_PAINTING = 0x0008; + + /** Determine whether the system is idle. + @param pWindow + When a valid Window pointer is given then it is checked + whether the window is currently being painting. + @return + This method either returns IDET_IDLE or a combination of + IdleStates values or-ed together that describe what the system + is currently doing so that the caller can decide what to do. + */ + static sal_Int32 GetIdleState (const ::Window* pWindow = NULL); + +private: + /** Check whether there are input events pending. + */ + static sal_Int32 CheckInputPending (void); + + /** Check whether a slide show is running full screen or in a window. + */ + static sal_Int32 CheckSlideShowRunning (void); + + static sal_Int32 CheckWindowPainting (const ::Window& rWindow); +}; + +} } // end of namespace ::sd::tools + +#endif diff --git a/sd/source/ui/inc/tools/PropertySet.hxx b/sd/source/ui/inc/tools/PropertySet.hxx new file mode 100755 index 000000000000..998b4f0e2142 --- /dev/null +++ b/sd/source/ui/inc/tools/PropertySet.hxx @@ -0,0 +1,150 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_TOOLS_PROPERTY_SET_HXX +#define SD_TOOLS_PROPERTY_SET_HXX + +#include <cppuhelper/basemutex.hxx> +#include <cppuhelper/compbase1.hxx> +#include <com/sun/star/beans/XPropertySet.hpp> +#include <boost/scoped_ptr.hpp> +#include <map> + +namespace css = ::com::sun::star; + +namespace sd { namespace tools { + +namespace { + typedef ::cppu::WeakComponentImplHelper1 < + css::beans::XPropertySet + > PropertySetInterfaceBase; +} + + +/** A very simple implementation of the XPropertySet interface. It does not + support constrained properties and thus does not support vetoable + listeners. It does not support the optional property set info. + + In order to use it you have to derive from this class and implement the + GetPropertyValue() and SetPropertyValue() methods. +*/ +class PropertySet + : protected ::cppu::BaseMutex, + public PropertySetInterfaceBase +{ +public: + explicit PropertySet (void); + virtual ~PropertySet (void); + + virtual void SAL_CALL disposing (void); + + // XPropertySet + + virtual css::uno::Reference<css::beans::XPropertySetInfo> + SAL_CALL getPropertySetInfo (void) + throw(css::uno::RuntimeException); + + virtual void SAL_CALL setPropertyValue ( + const rtl::OUString& rsPropertyName, + const css::uno::Any& rsPropertyValue) + throw(css::beans::UnknownPropertyException, + css::beans::PropertyVetoException, + css::lang::IllegalArgumentException, + css::lang::WrappedTargetException, + css::uno::RuntimeException); + + virtual css::uno::Any SAL_CALL getPropertyValue (const rtl::OUString& rsPropertyName) + throw(css::beans::UnknownPropertyException, + css::lang::WrappedTargetException, + css::uno::RuntimeException); + + virtual void SAL_CALL addPropertyChangeListener ( + const rtl::OUString& rsPropertyName, + const css::uno::Reference<css::beans::XPropertyChangeListener>& rxListener) + throw(css::beans::UnknownPropertyException, + css::lang::WrappedTargetException, + css::uno::RuntimeException); + + virtual void SAL_CALL removePropertyChangeListener ( + const rtl::OUString& rsPropertyName, + const css::uno::Reference<css::beans::XPropertyChangeListener>& rxListener) + throw(css::beans::UnknownPropertyException, + css::lang::WrappedTargetException, + css::uno::RuntimeException); + + virtual void SAL_CALL addVetoableChangeListener ( + const rtl::OUString& rsPropertyName, + const css::uno::Reference<css::beans::XVetoableChangeListener>& rxListener) + throw(css::beans::UnknownPropertyException, + css::lang::WrappedTargetException, + css::uno::RuntimeException); + + virtual void SAL_CALL removeVetoableChangeListener ( + const rtl::OUString& rsPropertyName, + const css::uno::Reference<css::beans::XVetoableChangeListener>& rxListener) + throw(css::beans::UnknownPropertyException, + css::lang::WrappedTargetException, + css::uno::RuntimeException); + +protected: + /** Return the requested property value. + @throw com::sun::star::beans::UnknownPropertyException when the + property is not supported. + */ + virtual css::uno::Any GetPropertyValue (const ::rtl::OUString& rsPropertyName) = 0; + /** Set the given property value. + @return the old value. + @throw com::sun::star::beans::UnknownPropertyException when the + property is not supported. + */ + virtual css::uno::Any SetPropertyValue ( + const ::rtl::OUString& rsPropertyName, + const css::uno::Any& rValue) = 0; + +private: + typedef ::std::multimap<rtl::OUString, + css::uno::Reference<css::beans::XPropertyChangeListener> > ChangeListenerContainer; + ::boost::scoped_ptr<ChangeListenerContainer> mpChangeListeners; + + /** Call all listeners that are registered for the given property name. + Call this method with an empty property name to call listeners that + are registered for all properties. + */ + void CallListeners ( + const rtl::OUString& rsPropertyName, + const css::beans::PropertyChangeEvent& rEvent); + + /** This method throws a DisposedException when the object has already been + disposed. + */ + void ThrowIfDisposed (void) + throw (css::lang::DisposedException); +}; + +} } // end of namespace ::sd::tools + +#endif diff --git a/sd/source/ui/inc/tools/SdGlobalResourceContainer.hxx b/sd/source/ui/inc/tools/SdGlobalResourceContainer.hxx new file mode 100755 index 000000000000..d0661a61636b --- /dev/null +++ b/sd/source/ui/inc/tools/SdGlobalResourceContainer.hxx @@ -0,0 +1,108 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_GLOBAL_RESOURCE_CONTAINER_HXX +#define SD_GLOBAL_RESOURCE_CONTAINER_HXX + +#include "sdmod.hxx" +#include <memory> +#include <boost/shared_ptr.hpp> +#include <com/sun/star/uno/XInterface.hpp> + +namespace css = ::com::sun::star; + +namespace sd { + +class SdGlobalResource +{ +public: + virtual ~SdGlobalResource (void) {}; +}; + +/** The purpose of this container is to hold references to resources that + are globally available to all interested objects and to destroy them + when the sd module is destroyed. Examples for resources can be + containers of bitmaps or the container of master pages used by the + MasterPagesSelector objects in the task panel. + + It works like a singleton in that there is one instance per sd module. + Resources can be added (by themselves or their owners) to the + container. The main task of the container is the destruction of all + resources that have been added to it. + + As you may note, there is no method to get a resource from the + container. It is the task of the resource to provide other means of + access to it. + + The reason for this design is not to have to change the SdModule + destructor every time when there is a new resource. This is done by + reversing the dependency between module and resource: the resource knows + about the module--this container class to be more precisely--and tells + it to destroy the resource when the sd module is at the end of its + lifetime. +*/ +class SdGlobalResourceContainer +{ +public: + static SdGlobalResourceContainer& Instance (void); + + /** Add a resource to the container. The ownership of the resource is + transferred to the container. The resource is destroyed when the + container is destroyed, i.e. when the sd module is destroyed. + + When in doubt, use the shared_ptr variant of this method. + */ + void AddResource (::std::auto_ptr<SdGlobalResource> pResource); + + /** Add a resource to the container. By using a shared_ptr and + releasing it only when the SgGlobalResourceContainer is destroyed + the given resource is kept alive at least that long. When at the + time of the destruction of SgGlobalResourceContainer no other + references exist the resource is destroyed as well. + */ + void AddResource (::boost::shared_ptr<SdGlobalResource> pResource); + + /** Add a resource that is implemented as UNO object. Destruction + (when the sd modules is unloaded) is done by a) calling dispose() + when the XComponent is supported and by b) releasing the reference. + */ + void AddResource (const ::css::uno::Reference<css::uno::XInterface>& rxResource); + +protected: + friend class ::SdModule; + friend class ::std::auto_ptr<SdGlobalResourceContainer>; + + class Implementation; + ::std::auto_ptr<Implementation> mpImpl; + + SdGlobalResourceContainer (void); + ~SdGlobalResourceContainer (void); +}; + +} // end of namespace sd + +#endif diff --git a/sd/source/ui/inc/tools/SlotStateListener.hxx b/sd/source/ui/inc/tools/SlotStateListener.hxx new file mode 100755 index 000000000000..1f45aef331ab --- /dev/null +++ b/sd/source/ui/inc/tools/SlotStateListener.hxx @@ -0,0 +1,160 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_TOOLS_SLOT_STATE_LISTENER_HXX +#define SD_TOOLS_SLOT_STATE_LISTENER_HXX + +#include "MutexOwner.hxx" +#include <com/sun/star/frame/XStatusListener.hpp> +#include <com/sun/star/frame/XFrame.hpp> +#include <com/sun/star/frame/FeatureStateEvent.hpp> +#include <com/sun/star/frame/XDispatchProvider.hpp> +#ifndef _COM_SUN_STAR_LANG_DISPOSEDEXCEPTIOIN_HPP_ +#include <com/sun/star/lang/DisposedException.hpp> +#endif +#include <com/sun/star/lang/XComponent.hpp> +#include <cppuhelper/compbase1.hxx> +#include <tools/link.hxx> + +namespace sd { namespace tools { + + +typedef cppu::WeakComponentImplHelper1< + ::com::sun::star::frame::XStatusListener + > SlotStateListenerInterfaceBase; + + +/** Listen for state changes of slots. This class has been created in order + to be informed when the support for vertical writing changes but it can + be used to relay state changes of other slots as well. +*/ +class SlotStateListener + : protected MutexOwner, + public SlotStateListenerInterfaceBase +{ +public: + /** This convenience version of the constructor takes all parameters + that are necessary to observe a single slot. See descriptions of + the SetCallback(), ConnectToFrame(), and ObserveSlot() methods for + explanations about the parameters. + */ + SlotStateListener ( + Link& rCallback, + const ::com::sun::star::uno::Reference< + ::com::sun::star::frame::XDispatchProvider>& rxDispatchProvider, + const ::rtl::OUString& rSlotName); + + /** The constructor de-registers all remaining listeners. Usually a prior + dispose() call should have done that already. + */ + virtual ~SlotStateListener (void); + + /** Set the callback to the given value. Whenever one of the observed + slots changes its state this callback is informed about it. + Changing the callback does not release the listeners. + @throws DisposedException + */ + void SetCallback (const Link& rCallback); + + /** Set the frame whose slots shall be observed. When an object of this + class is already observing slots of another frame then these + listeners are released first. + @throws DisposedException + */ + void ConnectToDispatchProvider ( + const ::com::sun::star::uno::Reference< + ::com::sun::star::frame::XDispatchProvider>& rxDispatchProvider); + + /** Observe the slot specified by the given name. Note that + ConnectToFrame() has to have been called earlier. + @param rSlotName + The name of the slot to observe. An example is + ".uno:VerticalTextState". + @throws DisposedException + */ + void ObserveSlot (const ::rtl::OUString& rSlotName); + + //===== frame::XStatusListener ========================================== + + /** Called by slot state change broadcasters. In turn the callback is + informed about the state chage. + @throws DisposedException + */ + virtual void SAL_CALL + statusChanged ( + const ::com::sun::star::frame::FeatureStateEvent& rState) + throw (::com::sun::star::uno::RuntimeException); + + //===== lang::XEventListener ============================================ + + virtual void SAL_CALL + disposing(const com::sun::star::lang::EventObject& rEvent) + throw(com::sun::star::uno::RuntimeException); + +protected: + /** This method is called by the WeakComponentImplHelper base class in + reaction to a XComponent::dispose() call. It releases all currently + active listeners. + */ + virtual void SAL_CALL disposing (void); + +private: + Link maCallback; + + /** Remember the URLs that describe slots whose state changes we are + listening to. + */ + typedef ::std::vector<com::sun::star::util::URL> RegisteredURLList; + RegisteredURLList maRegisteredURLList; + + ::com::sun::star::uno::WeakReference< + ::com::sun::star::frame::XDispatchProvider> mxDispatchProviderWeak; + + /** Deregister all currently active state change listeners. + */ + void ReleaseListeners (void); + + /** This method throws a DisposedException when the object has already been + disposed. + */ + void ThrowIfDisposed (void) + throw (::com::sun::star::lang::DisposedException); + + /** Transform the given string into a URL object. + */ + ::com::sun::star::util::URL MakeURL (const ::rtl::OUString& rSlotName) const; + + /** Return an XDispatch object for the given URL. + */ + ::com::sun::star::uno::Reference<com::sun::star::frame::XDispatch> + GetDispatch ( + const ::com::sun::star::util::URL& rURL) const; +}; + +} } // end of namespace ::sd::tools + +#endif diff --git a/sd/source/ui/inc/tools/TimerBasedTaskExecution.hxx b/sd/source/ui/inc/tools/TimerBasedTaskExecution.hxx new file mode 100755 index 000000000000..33ec3ccd9993 --- /dev/null +++ b/sd/source/ui/inc/tools/TimerBasedTaskExecution.hxx @@ -0,0 +1,99 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_TIMER_BASED_TASK_EXECUTION_HXX +#define SD_TIMER_BASED_TASK_EXECUTION_HXX + +#include <vcl/timer.hxx> + +#include <boost/shared_ptr.hpp> + +namespace sd { namespace tools { + +class AsynchronousTask; + +/** Execute an AsynchronousTask timer based, i.e. every + nMillisecondsBetweenSteps milliseconds as much steps are executed as fit + into a nMaxTimePerStep millisecond intervall. + + When a task is executed completely, i.e. HasNextStep() returns <FALSE/>, + the TimerBasedTaskExecution destroys itself. This, of course, works + only if the creating instance does not hold a shared_ptr to that object. +*/ +class TimerBasedTaskExecution +{ +public: + /** Create a new object of this class. + @param rpTask + The AsynchronousTask that is to be executed. + @param nMillisecondsBetweenSteps + Wait at least this long between the execution of steps. Note + that more than one step may be executed in succession. + @param nMaxTimePerStep + The maximal time for executing steps without yielding control. + */ + static ::boost::shared_ptr<TimerBasedTaskExecution> Create ( + const ::boost::shared_ptr<AsynchronousTask>& rpTask, + sal_uInt32 nMillisecondsBetweenSteps, + sal_uInt32 nMaxTimePerStep); + + /** Stop the execution of the task and release the shared pointer to + itself so that it will eventually be destroyed. + */ + void Release (void); + + /** Convenience method that calls Release() on the given task. It + checks the given weak_ptr for being expired and catches bad_weak_ptr + exceptions. + */ + static void ReleaseTask (const ::boost::weak_ptr<TimerBasedTaskExecution>& rpTask); + +private: + ::boost::shared_ptr<AsynchronousTask> mpTask; + Timer maTimer; + /** This shared_ptr to this is used to destroy a TimerBasedTaskExecution + object when its task has been executed completely. + */ + ::boost::shared_ptr<TimerBasedTaskExecution> mpSelf; + sal_uInt32 mnMaxTimePerStep; + + TimerBasedTaskExecution ( + const ::boost::shared_ptr<AsynchronousTask>& rpTask, + sal_uInt32 nMillisecondsBetweenSteps, + sal_uInt32 nMaxTimePerStep); + ~TimerBasedTaskExecution (void); + void SetSelf (const ::boost::shared_ptr<TimerBasedTaskExecution>& rpSelf); + + class Deleter; + friend class Deleter; + + DECL_LINK(TimerCallback,Timer*); +}; + +} } // end of namespace ::sd::tools + +#endif diff --git a/sd/source/ui/inc/tpaction.hrc b/sd/source/ui/inc/tpaction.hrc new file mode 100755 index 000000000000..0c4fe8a265d9 --- /dev/null +++ b/sd/source/ui/inc/tpaction.hrc @@ -0,0 +1,54 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#define LB_EFFECT 1 +#define LB_ACTION 3 +#define LB_OLE_ACTION 4 +#define LB_TREE 5 +#define LB_TREE_DOCUMENT 6 +#define BTN_SEARCH 1 +#define BTN_SEEK 2 +#define TSB_SOUND 1 +#define TSB_PLAY_FULL 2 +#define FL_EFFECT 1 +#define FL_SEPARATOR 2 +#define RBT_SLOW 1 +#define RBT_MEDIUM 2 +#define RBT_FAST 3 +#define EDT_SOUND 1 +#define EDT_BOOKMARK 2 +#define EDT_DOCUMENT 3 +#define EDT_PROGRAM 4 +#define EDT_MACRO 5 +#define FT_ACTION 2 +#define FT_ANIMATION 3 +#define FT_SPEED 4 +#define FT_TREE 5 +#define TP_ANIMATION 787 +#define TP_ANIMATION_ACTION 789 +//IAccessibility2 Implementation 2009----- +#define STR_PATHNAME 1 + //-----IAccessibility2 Implementation 2009 diff --git a/sd/source/ui/inc/tpaction.hxx b/sd/source/ui/inc/tpaction.hxx new file mode 100755 index 000000000000..d4b746762def --- /dev/null +++ b/sd/source/ui/inc/tpaction.hxx @@ -0,0 +1,141 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + + +#ifndef _SD_TPACTION_HXX +#define _SD_TPACTION_HXX + +#include <com/sun/star/presentation/ClickAction.hpp> +#include <com/sun/star/presentation/AnimationEffect.hpp> +#include <svtools/filedlg.hxx> +#include <vcl/group.hxx> +#include <vcl/fixed.hxx> +#include <svx/dlgctrl.hxx> +#include <sfx2/tabdlg.hxx> +#include <sfx2/basedlgs.hxx> +#include <sfx2/tabdlg.hxx> +#include "sdtreelb.hxx" +#include "anmdef.hxx" + +#include <vector> + +namespace sd { + class View; +} +class SdDrawDocument; + +/************************************************************************* +|* +|* Effekte-SingleTab-Dialog +|* +\************************************************************************/ +class SdActionDlg : public SfxSingleTabDialog +{ +private: + const SfxItemSet& rOutAttrs; + +public: + + SdActionDlg( Window* pParent, const SfxItemSet* pAttr, ::sd::View* pView ); + ~SdActionDlg() {}; +}; + +/************************************************************************* +|* +|* Interaktions-Tab-Page +|* +\************************************************************************/ + +class SdTPAction : public SfxTabPage +{ +private: + FixedText aFtAction; // always visible + ListBox aLbAction; + + FixedText aFtTree; // jump destination controls + SdPageObjsTLB aLbTree; + SdPageObjsTLB aLbTreeDocument; + ListBox aLbOLEAction; + + FixedLine aFlSeparator; + Edit aEdtSound; + Edit aEdtBookmark; + Edit aEdtDocument; + Edit aEdtProgram; + Edit aEdtMacro; + PushButton aBtnSearch; + PushButton aBtnSeek; + + const SfxItemSet& rOutAttrs; + const ::sd::View* mpView; + SdDrawDocument* mpDoc; + XColorTable* pColTab; + + sal_Bool bTreeUpdated; + List* pCurrentActions; + String aLastFile; + ::std::vector< long > aVerbVector; + + //------------------------------------ + + DECL_LINK( ClickSearchHdl, void * ); + DECL_LINK( ClickActionHdl, void * ); + DECL_LINK( SelectTreeHdl, void * ); + DECL_LINK( CheckFileHdl, void * ); + + void UpdateTree(); + virtual void OpenFileDialog(); + ::com::sun::star::presentation::ClickAction GetActualClickAction(); + void SetActualClickAction( ::com::sun::star::presentation::ClickAction eCA ); + void SetActualAnimationEffect( ::com::sun::star::presentation::AnimationEffect eAE ); + void SetEditText( String const & rStr ); + String GetEditText( sal_Bool bURL = sal_False ); + sal_uInt16 GetClickActionSdResId( ::com::sun::star::presentation::ClickAction eCA ); + sal_uInt16 GetAnimationEffectSdResId( ::com::sun::star::presentation::AnimationEffect eAE ); + +public: + SdTPAction( Window* pParent, const SfxItemSet& rInAttrs ); + ~SdTPAction(); + + static SfxTabPage* Create( Window*, const SfxItemSet& ); + + virtual sal_Bool FillItemSet( SfxItemSet& ); + virtual void Reset( const SfxItemSet & ); + + virtual void ActivatePage( const SfxItemSet& rSet ); + virtual int DeactivatePage( SfxItemSet* pSet ); + + void Construct(); + + void SetView( const ::sd::View* pSdView ); + + using TabPage::ActivatePage; + using TabPage::DeactivatePage; +}; + +#endif // _SD_TPACTION_HXX + diff --git a/sd/source/ui/inc/tpoption.hrc b/sd/source/ui/inc/tpoption.hrc new file mode 100644 index 000000000000..caa1ca0f3812 --- /dev/null +++ b/sd/source/ui/inc/tpoption.hrc @@ -0,0 +1,95 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#define TP_OPTIONS_LAYOUT 596 +#define TP_OPTIONS_CONTENTS 597 +#define TP_OPTIONS_SNAP 598 +#define TP_OPTIONS_MISC 599 +#define GRP_OTHER 1 +#define FT_METRIC 2 +#define GRP_PROGRAMSTART 3 +#define GRP_DISPLAY 4 +#define GRP_SETTINGS 5 +#define GRP_TEXT 6 +#define FT_TABSTOP 7 +//#i80528##define GRP_VIEW_SUBSTITUTE 8 +#define CBX_COPY 13 +#define CBX_RULER 14 +#define CBX_HELPLINES 1 +#define CBX_MOVE_OUTLINE 15 +//#i80528##define CBX_OUTLINEMODE 11 +//#i80528##define CBX_HAIRLINEMODE 12 +#define CBX_MARKED_HIT_MOVES_ALWAYS 19 +#define CBX_CROOK_NO_CONTORTION 21 +#define CBX_SLANT_BUT_SHEAR 22 +#//#i80528#define CBX_EXTERN_GRAPHIC 10 +#define CBX_HANDLES_BEZIER 2 +#define GRP_SNAP 1 +#define GRP_ORTHO 2 +#define FT_SNAP_AREA 1 +#define FI_ORTHO 2 +#define FI_SNAP 3 +#define FT_BEZ_ANGLE 4 +//#define FT_METRIC 5 +#define LB_METRIC 1 +#define MTR_FLD_SNAP_AREA 1 +#define MTR_FLD_ANGLE 2 +#define MTR_FLD_BEZ_ANGLE 3 +#define MTR_FLD_TABSTOP 4 +#define CBX_ROTATE 8 +#define CBX_ORTHO 6 +#define CBX_BIGORTHO 7 +#define CBX_SNAPGRID 1 +#define CBX_SNAP_HELPLINES 2 +#define CBX_SNAP_GRID 1 +#define CBX_SNAP_BORDER 3 +#define CBX_SNAP_FRAME 4 +#define CBX_SNAP_POINTS 5 +#define CBX_START_WITH_TEMPLATE 6 +#define CBX_START_WITH_LAYOUT 7 +#define CBX_PICKTHROUGH 9 +//#i80528##define CBX_NOTEXT 23 +#define CBX_QUICKEDIT 24 +#define CBX_MASTERPAGE_CACHE 25 + +#define CBX_START_WITH_ACTUAL_PAGE 26 +#define GRP_START_WITH_ACTUAL_PAGE 8 +#define FT_COMPATIBILITY 27 +#define CB_MERGE_PARA_DIST 28 + +#define CB_SCALE 29 +#define FT_ORIGINAL 30 +#define MTR_FLD_ORIGINAL_WIDTH 31 +#define FT_EQUIVALENT 32 +#define MTR_FLD_ORIGINAL_HEIGHT 33 +#define GRP_SCALE 34 +#define FI_INFO_1 35 +#define FI_INFO_2 36 +#define FT_PAGEWIDTH 37 +#define FT_PAGEHEIGHT 38 +#define FT_SCALE 39 + +#define CB_USE_PRINTER_METRICS 40 diff --git a/sd/source/ui/inc/tpoption.hxx b/sd/source/ui/inc/tpoption.hxx new file mode 100755 index 000000000000..83d8479b29c5 --- /dev/null +++ b/sd/source/ui/inc/tpoption.hxx @@ -0,0 +1,201 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SD_TPOPTION_HXX +#define _SD_TPOPTION_HXX + + +#ifndef _LSTBOX_HXX //autogen +#include <vcl/lstbox.hxx> +#endif +#ifndef _GROUP_HXX //autogen +#include <vcl/group.hxx> +#endif +#ifndef _FIXED_HXX //autogen +#include <vcl/fixed.hxx> +#endif +#ifndef _FIELD_HXX //autogen +#include <vcl/field.hxx> +#endif +#ifndef _BUTTON_HXX //autogen +#include <vcl/button.hxx> +#endif +#include <svtools/stdctrl.hxx> +#include <sfx2/tabdlg.hxx> +#include <svx/optgrid.hxx> + +/************************************************************************* +|* +|* Optionen-Tab-Page: Snap +|* +\************************************************************************/ +class SdTpOptionsSnap : public SvxGridTabPage +{ +public: + SdTpOptionsSnap( Window* pParent, const SfxItemSet& rInAttrs ); + ~SdTpOptionsSnap(); + + static SfxTabPage* Create( Window*, const SfxItemSet& ); + virtual sal_Bool FillItemSet( SfxItemSet& ); + virtual void Reset( const SfxItemSet & ); + +// virtual void ActivatePage( const SfxItemSet& rSet ); +// virtual int DeactivatePage( SfxItemSet* pSet ); +}; +/************************************************************************* +|* +|* Optionen-Tab-Page: Contents (Inhalte) +|* +\************************************************************************/ +class SdTpOptionsContents : public SfxTabPage +{ +private: + FixedLine aGrpDisplay; + CheckBox aCbxRuler; + CheckBox aCbxDragStripes; + CheckBox aCbxHandlesBezier; + CheckBox aCbxMoveOutline; + + +public: + SdTpOptionsContents( Window* pParent, const SfxItemSet& rInAttrs ); + ~SdTpOptionsContents(); + + static SfxTabPage* Create( Window*, const SfxItemSet& ); + virtual sal_Bool FillItemSet( SfxItemSet& ); + virtual void Reset( const SfxItemSet & ); +}; + +/************************************************************************* +|* +|* Optionen-Tab-Page: View +|* +\************************************************************************/ +class SdModule; +class SdTpOptionsMisc : public SfxTabPage +{ + friend class SdOptionsDlg; + friend class SdModule; + +private: + FixedLine aGrpText; + CheckBox aCbxQuickEdit; + CheckBox aCbxPickThrough; + + FixedLine aGrpProgramStart; + CheckBox aCbxStartWithTemplate; + + FixedLine aGrpSettings; + CheckBox aCbxMasterPageCache; + CheckBox aCbxCopy; + CheckBox aCbxMarkedHitMovesAlways; + CheckBox aCbxCrookNoContortion; + + FixedText aTxtMetric; + ListBox aLbMetric; + FixedText aTxtTabstop; + MetricField aMtrFldTabstop; + + CheckBox aCbxStartWithActualPage; + FixedLine aGrpStartWithActualPage; + FixedLine aTxtCompatibility; + CheckBox aCbxUsePrinterMetrics; + CheckBox aCbxCompatibility; + + //Scale + FixedLine aGrpScale; + FixedText aFtScale; + ComboBox aCbScale; + + FixedText aFtOriginal; + FixedText aFtEquivalent; + + FixedText aFtPageWidth; + FixedInfo aFiInfo1; + MetricField aMtrFldOriginalWidth; + + FixedText aFtPageHeight; + FixedInfo aFiInfo2; + MetricField aMtrFldOriginalHeight; + + MetricField aMtrFldInfo1; + MetricField aMtrFldInfo2; + + sal_uInt32 nWidth; + sal_uInt32 nHeight; + String aInfo1; + String aInfo2; + + SfxMapUnit ePoolUnit; + + String GetScale( sal_Int32 nX, sal_Int32 nY ); + sal_Bool SetScale( const String& aScale, sal_Int32& rX, sal_Int32& rY ); + + DECL_LINK( ModifyScaleHdl, void * ); + DECL_LINK( ModifyOriginalScaleHdl, void * ); + DECL_LINK( SelectMetricHdl_Impl, ListBox * ); + + /** Enable or disable the controls in the compatibility section of the + 'general' tab page depending on whether there is at least one + document. + */ + void UpdateCompatibilityControls (void); + +protected: + virtual void ActivatePage( const SfxItemSet& rSet ); + virtual int DeactivatePage( SfxItemSet* pSet ); + +public: + SdTpOptionsMisc( Window* pParent, const SfxItemSet& rInAttrs ); + ~SdTpOptionsMisc(); + + static SfxTabPage* Create( Window*, const SfxItemSet& ); + virtual sal_Bool FillItemSet( SfxItemSet& ); + virtual void Reset( const SfxItemSet & ); + + /** Hide Impress specific controls, make Draw specific controls visible + and arrange the visible controls. Do not call this method or the + <member>SetImpressMode()</member> method more than once. + */ + void SetDrawMode (void); + + /** Hide Draw specific controls, make Impress specific controls visible + and arrange the visible controls. Do not call this method or the + <member>SetDrawMode()</member> method more than once. + */ + void SetImpressMode (void); + virtual void PageCreated (SfxAllItemSet aSet); + + using TabPage::ActivatePage; + using TabPage::DeactivatePage; + using OutputDevice::SetDrawMode; + +}; + + +#endif // _SD_TPOPTION_HXX + diff --git a/sd/source/ui/inc/unchss.hxx b/sd/source/ui/inc/unchss.hxx new file mode 100644 index 000000000000..d607182aa20e --- /dev/null +++ b/sd/source/ui/inc/unchss.hxx @@ -0,0 +1,59 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SD_UNCHSS_HXX +#define _SD_UNCHSS_HXX + +#include "sdundo.hxx" + +class SfxItemSet; +class SfxStyleSheet; +class SdDrawDocument; + +class StyleSheetUndoAction : public SdUndoAction +{ + SfxStyleSheet* pStyleSheet; + + SfxItemSet* pNewSet; + SfxItemSet* pOldSet; + String aComment; + +public: + TYPEINFO(); + StyleSheetUndoAction(SdDrawDocument* pTheDoc, + SfxStyleSheet* pTheStyleSheet, + const SfxItemSet* pTheNewItemSet); + + virtual ~StyleSheetUndoAction(); + virtual void Undo(); + virtual void Redo(); + + virtual String GetComment() const; +}; + +#endif // _SD_UNCHSS_HXX + diff --git a/sd/source/ui/inc/undoback.hxx b/sd/source/ui/inc/undoback.hxx new file mode 100644 index 000000000000..ca62c6cae0b0 --- /dev/null +++ b/sd/source/ui/inc/undoback.hxx @@ -0,0 +1,66 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SD_UNDOBACK_HXX +#define _SD_UNDOBACK_HXX + +#include "sdundo.hxx" + +class SdDrawDocument; +class SdPage; +class SfxItemSet; + +// ----------------------------- +// - SdBackgroundObjUndoAction - +// ----------------------------- + +class SdBackgroundObjUndoAction : public SdUndoAction +{ +private: + + SdPage& mrPage; + SfxItemSet* mpItemSet; + + void ImplRestoreBackgroundObj(); + +public: + + TYPEINFO(); + + SdBackgroundObjUndoAction( + SdDrawDocument& rDoc, + SdPage& rPage, + const SfxItemSet& rItenSet); + virtual ~SdBackgroundObjUndoAction(); + + virtual void Undo(); + virtual void Redo(); + + virtual SdUndoAction* Clone() const; +}; + +#endif // _SD_UNDOBACK_HXX diff --git a/sd/source/ui/inc/undoheaderfooter.hxx b/sd/source/ui/inc/undoheaderfooter.hxx new file mode 100644 index 000000000000..a61030b753f7 --- /dev/null +++ b/sd/source/ui/inc/undoheaderfooter.hxx @@ -0,0 +1,57 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SD_UNDOHEADERFOOTER_HXX +#define _SD_UNDOHEADERFOOTER_HXX + +#include <tools/gen.hxx> +#include "sdundo.hxx" +#include "sdpage.hxx" +#include "sddllapi.h" + +class SdDrawDocument; + +/************************************************************************/ + +class SD_DLLPUBLIC SdHeaderFooterUndoAction : public SdUndoAction +{ + SdPage* mpPage; + + const sd::HeaderFooterSettings maOldSettings; + const sd::HeaderFooterSettings maNewSettings; + +public: + TYPEINFO(); + SdHeaderFooterUndoAction( SdDrawDocument* pDoc, SdPage* pPage, const sd::HeaderFooterSettings& rNewSettings ); + virtual ~SdHeaderFooterUndoAction(); + + virtual void Undo(); + virtual void Redo(); +}; + +#endif // _SD_UNDOHEADERFOOTER_HXX + diff --git a/sd/source/ui/inc/undolayer.hxx b/sd/source/ui/inc/undolayer.hxx new file mode 100644 index 000000000000..9abe2ee54c91 --- /dev/null +++ b/sd/source/ui/inc/undolayer.hxx @@ -0,0 +1,67 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SD_UNDOLAYER_HXX +#define _SD_UNDOLAYER_HXX + +#include "sdundo.hxx" + +class SdDrawDocument; +class SdrLayer; + +/************************************************************************/ + +class SdLayerModifyUndoAction : public SdUndoAction +{ + +public: + TYPEINFO(); + SdLayerModifyUndoAction( SdDrawDocument* _pDoc, SdrLayer* pLayer, + const String& rOldLayerName, const String& rOldLayerTitle, const String& rOldLayerDesc, bool bOldIsVisible, bool bOldIsLocked, bool bOldIsPrintable, + const String& rNewLayerName, const String& rNewLayerTitle, const String& rNewLayerDesc, bool bNewIsVisible, bool bNewIsLocked, bool bNewIsPrintable ); + + virtual void Undo(); + virtual void Redo(); + +private: + SdrLayer* mpLayer; + String maOldLayerName; + String maOldLayerTitle; + String maOldLayerDesc; + bool mbOldIsVisible; + bool mbOldIsLocked; + bool mbOldIsPrintable; + String maNewLayerName; + String maNewLayerTitle; + String maNewLayerDesc; + bool mbNewIsVisible; + bool mbNewIsLocked; + bool mbNewIsPrintable; +}; + +#endif // _SD_UNDOLAYER_HXX + diff --git a/sd/source/ui/inc/undopage.hxx b/sd/source/ui/inc/undopage.hxx new file mode 100755 index 000000000000..4cb695cb98f8 --- /dev/null +++ b/sd/source/ui/inc/undopage.hxx @@ -0,0 +1,180 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SD_UNDOPAGE_HXX +#define _SD_UNDOPAGE_HXX + +#include <tools/gen.hxx> +#include <vcl/prntypes.hxx> + +#include "sdundo.hxx" + +class SdDrawDocument; +class SdPage; + +/************************************************************************/ + +class SdPageFormatUndoAction : public SdUndoAction +{ + SdPage* mpPage; + + Size maOldSize; + sal_Int32 mnOldLeft; + sal_Int32 mnOldRight; + sal_Int32 mnOldUpper; + sal_Int32 mnOldLower; + sal_Bool mbOldScale; + Orientation meOldOrientation; + sal_uInt16 mnOldPaperBin; + sal_Bool mbOldFullSize; + + Size maNewSize; + sal_Int32 mnNewLeft; + sal_Int32 mnNewRight; + sal_Int32 mnNewUpper; + sal_Int32 mnNewLower; + sal_Bool mbNewScale; + Orientation meNewOrientation; + sal_uInt16 mnNewPaperBin; + sal_Bool mbNewFullSize; + +public: + TYPEINFO(); + SdPageFormatUndoAction( SdDrawDocument* pDoc, + SdPage* pThePage, + const Size& rOldSz, + sal_Int32 nOldLft, + sal_Int32 nOldRgt, + sal_Int32 nOldUpr, + sal_Int32 nOldLwr, + sal_Bool bOldScl, + Orientation eOldOrient, + sal_uInt16 nOPaperBin, + sal_Bool bOFullSize, + + const Size& rNewSz, + sal_Int32 nNewLft, + sal_Int32 nNewRgt, + sal_Int32 nNewUpr, + sal_Int32 nNewLwr, + sal_Bool bNewScl, + Orientation eNewOrient, + sal_uInt16 nNPaperBin, + sal_Bool bNFullSize + ) : + SdUndoAction(pDoc), + mpPage (pThePage), + maOldSize (rOldSz), + mnOldLeft (nOldLft), + mnOldRight (nOldRgt), + mnOldUpper (nOldUpr), + mnOldLower (nOldLwr), + mbOldScale (bOldScl), + meOldOrientation(eOldOrient), + mnOldPaperBin (nOPaperBin), + mbOldFullSize (bOFullSize), + + + maNewSize (rNewSz), + mnNewLeft (nNewLft), + mnNewRight (nNewRgt), + mnNewUpper (nNewUpr), + mnNewLower (nNewLwr), + mbNewScale (bNewScl), + meNewOrientation(eNewOrient), + mnNewPaperBin (nNPaperBin), + mbNewFullSize (bNFullSize) + + {} + virtual ~SdPageFormatUndoAction(); + + virtual void Undo(); + virtual void Redo(); +}; + +/************************************************************************/ + +class SdPageLRUndoAction : public SdUndoAction +{ + SdPage* mpPage; + + sal_Int32 mnOldLeft; + sal_Int32 mnOldRight; + sal_Int32 mnNewLeft; + sal_Int32 mnNewRight; + +public: + TYPEINFO(); + SdPageLRUndoAction( SdDrawDocument* pDoc, SdPage* pThePage, + sal_Int32 nOldLft, sal_Int32 nOldRgt, + sal_Int32 nNewLft, sal_Int32 nNewRgt ) : + SdUndoAction(pDoc), + mpPage (pThePage), + mnOldLeft (nOldLft), + mnOldRight (nOldRgt), + mnNewLeft (nNewLft), + mnNewRight (nNewRgt) + {} + virtual ~SdPageLRUndoAction(); + + virtual void Undo(); + virtual void Redo(); +}; + +/************************************************************************/ + +class SdPageULUndoAction : public SdUndoAction +{ + SdPage* mpPage; + + sal_Int32 mnOldUpper; + sal_Int32 mnOldLower; + sal_Int32 mnNewUpper; + sal_Int32 mnNewLower; + +public: + TYPEINFO(); + SdPageULUndoAction( SdDrawDocument* pDoc, SdPage* pThePage, + sal_Int32 nOldUpr, sal_Int32 nOldLwr, + sal_Int32 nNewUpr, sal_Int32 nNewLwr ) : + SdUndoAction(pDoc), + mpPage (pThePage), + mnOldUpper (nOldUpr), + mnOldLower (nOldLwr), + mnNewUpper (nNewUpr), + mnNewLower (nNewLwr) + {} + virtual ~SdPageULUndoAction(); + + virtual void Undo(); + virtual void Redo(); +}; + + + +#endif // _SD_UNDOPAGE_HXX + diff --git a/sd/source/ui/inc/unmodpg.hxx b/sd/source/ui/inc/unmodpg.hxx new file mode 100755 index 000000000000..ceafa4cd8992 --- /dev/null +++ b/sd/source/ui/inc/unmodpg.hxx @@ -0,0 +1,87 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SD_UNMODPG_HXX +#define _SD_UNMODPG_HXX + +#include "sdundo.hxx" +#include "pres.hxx" + +class SdDrawDocument; +class SdPage; + +class ModifyPageUndoAction : public SdUndoAction +{ + SdPage* mpPage; + String maOldName; + String maNewName; + AutoLayout meOldAutoLayout; + AutoLayout meNewAutoLayout; + sal_Bool mbOldBckgrndVisible; + sal_Bool mbNewBckgrndVisible; + sal_Bool mbOldBckgrndObjsVisible; + sal_Bool mbNewBckgrndObjsVisible; + + String maComment; + +public: + TYPEINFO(); + ModifyPageUndoAction( + SdDrawDocument* pTheDoc, + SdPage* pThePage, + String aTheNewName, + AutoLayout eTheNewAutoLayout, + sal_Bool bTheNewBckgrndVisible, + sal_Bool bTheNewBckgrndObjsVisible); + + virtual ~ModifyPageUndoAction(); + virtual void Undo(); + virtual void Redo(); + + virtual String GetComment() const; +}; + +// -------------------------------------------------------------------- + +class RenameLayoutTemplateUndoAction : public SdUndoAction +{ +public: + RenameLayoutTemplateUndoAction( SdDrawDocument* pDocument, const String& rOldLayoutName, const String& rNewLayoutName ); + + virtual void Undo(); + virtual void Redo(); + + virtual String GetComment() const; + +private: + String maOldName; + String maNewName; + const String maComment; +}; + +#endif // _SD_UNMODPG_HXX + diff --git a/sd/source/ui/inc/unmovss.hxx b/sd/source/ui/inc/unmovss.hxx new file mode 100644 index 000000000000..dc1d47099a53 --- /dev/null +++ b/sd/source/ui/inc/unmovss.hxx @@ -0,0 +1,54 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SD_UNMOVSS_HXX +#define _SD_UNMOVSS_HXX + +#include "sdundo.hxx" +#include <stlsheet.hxx> +#include <vector> + +class SdDrawDocument; + +class SdMoveStyleSheetsUndoAction : public SdUndoAction +{ + SdStyleSheetVector maStyles; + std::vector< SdStyleSheetVector > maListOfChildLists; + bool mbMySheets; + +public: + SdMoveStyleSheetsUndoAction(SdDrawDocument* pTheDoc, SdStyleSheetVector& rTheStyles, bool bInserted); + + virtual ~SdMoveStyleSheetsUndoAction(); + virtual void Undo(); + virtual void Redo(); + + virtual String GetComment() const; +}; + +#endif // _SD_UNMOVSS_HXX + diff --git a/sd/source/ui/inc/unoaprms.hxx b/sd/source/ui/inc/unoaprms.hxx new file mode 100755 index 000000000000..7ad39a7d37b1 --- /dev/null +++ b/sd/source/ui/inc/unoaprms.hxx @@ -0,0 +1,149 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SD_UNOAPRMS_HXX +#define _SD_UNOAPRMS_HXX + +#include <com/sun/star/presentation/AnimationEffect.hpp> +#include <com/sun/star/presentation/AnimationSpeed.hpp> +#include <com/sun/star/presentation/ClickAction.hpp> +#include "sdundo.hxx" +#include "anmdef.hxx" +#include <svx/svdopath.hxx> +#include <tools/color.hxx> + + +class SdDrawDocument; +class SdrObject; + +class SdAnimationPrmsUndoAction : public SdUndoAction +{ + SdrObject* pObject; + sal_Bool bOldActive; + sal_Bool bNewActive; + sal_Bool bOldDimPrevious; + sal_Bool bNewDimPrevious; + sal_Bool bOldDimHide; + sal_Bool bNewDimHide; + sal_Bool bOldSoundOn; + sal_Bool bNewSoundOn; + sal_Bool bOldSecondSoundOn; + sal_Bool bNewSecondSoundOn; + sal_Bool bOldPlayFull; + sal_Bool bNewPlayFull; + sal_Bool bOldSecondPlayFull; + sal_Bool bNewSecondPlayFull; + ::com::sun::star::presentation::AnimationEffect eOldEffect; + ::com::sun::star::presentation::AnimationEffect eNewEffect; + ::com::sun::star::presentation::AnimationEffect eOldTextEffect; + ::com::sun::star::presentation::AnimationEffect eNewTextEffect; + ::com::sun::star::presentation::AnimationSpeed eOldSpeed; + ::com::sun::star::presentation::AnimationSpeed eNewSpeed; + ::com::sun::star::presentation::AnimationEffect eOldSecondEffect; + ::com::sun::star::presentation::AnimationEffect eNewSecondEffect; + ::com::sun::star::presentation::AnimationSpeed eOldSecondSpeed; + ::com::sun::star::presentation::AnimationSpeed eNewSecondSpeed; + Color aOldDimColor; + Color aNewDimColor; + Color aOldBlueScreen; + Color aNewBlueScreen; + String aOldSoundFile; + String aNewSoundFile; + SdrPathObj* pOldPathObj; + SdrPathObj* pNewPathObj; + ::com::sun::star::presentation::ClickAction eOldClickAction; + ::com::sun::star::presentation::ClickAction eNewClickAction; + String aOldBookmark; + String aNewBookmark; + sal_Bool bOldInvisibleInPres; + sal_Bool bNewInvisibleInPres; + sal_uInt16 nOldVerb; + sal_uInt16 nNewVerb; + sal_uLong nOldPresOrder; + sal_uLong nNewPresOrder; + + sal_Bool bInfoCreated; + +public: + TYPEINFO(); + SdAnimationPrmsUndoAction(SdDrawDocument* pTheDoc, SdrObject* pObj, + sal_Bool bCreated): + SdUndoAction (pTheDoc), + pObject (pObj), + bInfoCreated (bCreated) + {} + + void SetActive(sal_Bool bTheOldActive, sal_Bool bTheNewActive) + { bOldActive = bTheOldActive; bNewActive = bTheNewActive; } + void SetEffect(::com::sun::star::presentation::AnimationEffect eTheOldEffect, ::com::sun::star::presentation::AnimationEffect eTheNewEffect) + { eOldEffect = eTheOldEffect; eNewEffect = eTheNewEffect; } + void SetTextEffect(::com::sun::star::presentation::AnimationEffect eTheOldEffect, ::com::sun::star::presentation::AnimationEffect eTheNewEffect) + { eOldTextEffect = eTheOldEffect; eNewTextEffect = eTheNewEffect; } + void SetSpeed(::com::sun::star::presentation::AnimationSpeed eTheOldSpeed, ::com::sun::star::presentation::AnimationSpeed eTheNewSpeed) + { eOldSpeed = eTheOldSpeed; eNewSpeed = eTheNewSpeed; } + void SetDim(sal_Bool bTheOldDim, sal_Bool bTheNewDim) + { bOldDimPrevious = bTheOldDim; bNewDimPrevious = bTheNewDim; } + void SetDimColor(Color aTheOldDimColor, Color aTheNewDimColor) + { aOldDimColor = aTheOldDimColor; aNewDimColor = aTheNewDimColor; } + void SetDimHide(sal_Bool bTheOldDimHide, sal_Bool bTheNewDimHide) + { bOldDimHide = bTheOldDimHide; bNewDimHide = bTheNewDimHide; } + void SetSoundOn(sal_Bool bTheOldSoundOn, sal_Bool bTheNewSoundOn) + { bOldSoundOn = bTheOldSoundOn; bNewSoundOn = bTheNewSoundOn; } + void SetSound(String aTheOldSound, String aTheNewSound) + { aOldSoundFile = aTheOldSound; aNewSoundFile = aTheNewSound; } + void SetBlueScreen(Color aTheOldBlueScreen, Color aTheNewBlueScreen) + { aOldBlueScreen = aTheOldBlueScreen; aNewBlueScreen = aTheNewBlueScreen; } + void SetPlayFull(sal_Bool bTheOldPlayFull, sal_Bool bTheNewPlayFull) + { bOldPlayFull = bTheOldPlayFull; bNewPlayFull = bTheNewPlayFull; } + void SetPathObj(SdrPathObj* pTheOldPath, SdrPathObj* pTheNewPath) + { pOldPathObj = pTheOldPath; pNewPathObj = pTheNewPath; } + void SetClickAction(::com::sun::star::presentation::ClickAction eTheOldAction, ::com::sun::star::presentation::ClickAction eTheNewAction) + { eOldClickAction = eTheOldAction; eNewClickAction = eTheNewAction; } + void SetBookmark(String aTheOldBookmark, String aTheNewBookmark) + { aOldBookmark = aTheOldBookmark; aNewBookmark = aTheNewBookmark; } + void SetInvisibleInPres(sal_Bool bTheOldInvisibleInPres, sal_Bool bTheNewInvisibleInPres) + { bOldInvisibleInPres = bTheOldInvisibleInPres; bNewInvisibleInPres = bTheNewInvisibleInPres; } + void SetVerb(sal_uInt16 nTheOldVerb, sal_uInt16 nTheNewVerb) + { nOldVerb = nTheOldVerb; nNewVerb = nTheNewVerb; } + void SetSecondEffect(::com::sun::star::presentation::AnimationEffect eTheOldEffect, ::com::sun::star::presentation::AnimationEffect eTheNewEffect) + { eOldSecondEffect = eTheOldEffect; eNewSecondEffect = eTheNewEffect; } + void SetSecondSpeed(::com::sun::star::presentation::AnimationSpeed eTheOldSpeed, ::com::sun::star::presentation::AnimationSpeed eTheNewSpeed) + { eOldSecondSpeed = eTheOldSpeed; eNewSecondSpeed = eTheNewSpeed; } + void SetSecondSoundOn(sal_Bool bTheOldSoundOn, sal_Bool bTheNewSoundOn) + { bOldSecondSoundOn = bTheOldSoundOn; bNewSecondSoundOn = bTheNewSoundOn; } + void SetSecondPlayFull(sal_Bool bTheOldPlayFull, sal_Bool bTheNewPlayFull) + { bOldSecondPlayFull = bTheOldPlayFull; bNewSecondPlayFull = bTheNewPlayFull; } + void SetPresOrder(sal_uLong nTheOldPresOrder, sal_uLong nTheNewPresOrder) + { nOldPresOrder = nTheOldPresOrder; nNewPresOrder = nTheNewPresOrder; } + + virtual ~SdAnimationPrmsUndoAction(); + virtual void Undo(); + virtual void Redo(); +}; + +#endif // _SD_UNOAPRMS_HXX + diff --git a/sd/source/ui/inc/unokywds.hxx b/sd/source/ui/inc/unokywds.hxx new file mode 100644 index 000000000000..161653616f60 --- /dev/null +++ b/sd/source/ui/inc/unokywds.hxx @@ -0,0 +1,215 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SD_UNOKYWDS_HXX_ +#define _SD_UNOKYWDS_HXX_ + +#include <tools/string.hxx> +#include <tools/solar.h> + +#ifndef SD_DEFINE_KEYWORDS +#define SD_CONSTASCII_ACTION( n, s ) extern sal_Char __FAR_DATA n[sizeof(s)] +#else +#define SD_CONSTASCII_ACTION( n, s ) sal_Char __FAR_DATA n[sizeof(s)] = s +#endif + +#define UNO_PREFIX "com.sun.star." + +// SdXImpressDocument +SD_CONSTASCII_ACTION( sUNO_Service_DrawingDocument, UNO_PREFIX "drawing.DrawingDocument" ); +SD_CONSTASCII_ACTION( sUNO_Service_PresentationDocument, UNO_PREFIX "drawing.PresentationDocument" ); + +// SdUnoStyleFamilies +SD_CONSTASCII_ACTION( sUNO_SdUnoStyleFamilies, "SdUnoStyleFamilies" ); +SD_CONSTASCII_ACTION( sUNO_Graphic_Style_Family_Name, "graphics" ); + +// SdUnoPseudoStyleFamily +SD_CONSTASCII_ACTION( sUNO_SdUnoPseudoStyleFamily, "SdUnoPseudoStyleFamily" ); +SD_CONSTASCII_ACTION( sUNO_PseudoSheet_Title, "title" ); +SD_CONSTASCII_ACTION( sUNO_PseudoSheet_SubTitle, "subtitle" ); +SD_CONSTASCII_ACTION( sUNO_PseudoSheet_Background, "background" ); +SD_CONSTASCII_ACTION( sUNO_PseudoSheet_Background_Objects, "backgroundobjects" ); +SD_CONSTASCII_ACTION( sUNO_PseudoSheet_Notes, "notes" ); +SD_CONSTASCII_ACTION( sUNO_PseudoSheet_Outline1, "outline1" ); +SD_CONSTASCII_ACTION( sUNO_PseudoSheet_Outline2, "outline2" ); +SD_CONSTASCII_ACTION( sUNO_PseudoSheet_Outline3, "outline3" ); +SD_CONSTASCII_ACTION( sUNO_PseudoSheet_Outline4, "outline4" ); +SD_CONSTASCII_ACTION( sUNO_PseudoSheet_Outline5, "outline5" ); +SD_CONSTASCII_ACTION( sUNO_PseudoSheet_Outline6, "outline6" ); +SD_CONSTASCII_ACTION( sUNO_PseudoSheet_Outline7, "outline7" ); +SD_CONSTASCII_ACTION( sUNO_PseudoSheet_Outline8, "outline8" ); +SD_CONSTASCII_ACTION( sUNO_PseudoSheet_Outline9, "outline9" ); + +// SdUnoPseudoStyle +SD_CONSTASCII_ACTION( sUNO_SdUnoPseudoStyle, "SdUnoPseudoStyle" ); + +// SdUnoGraphicStyleFamily +SD_CONSTASCII_ACTION( sUNO_SdUnoGraphicStyleFamily, "SdUnoGraphicStyleFamily" ); +SD_CONSTASCII_ACTION( sUNO_StyleName_standard, "standard" ); +SD_CONSTASCII_ACTION( sUNO_StyleName_objwitharrow, "objectwitharrow" ); +SD_CONSTASCII_ACTION( sUNO_StyleName_objwithshadow, "objectwithshadow" ); +SD_CONSTASCII_ACTION( sUNO_StyleName_objwithoutfill, "objectwithoutfill" ); +SD_CONSTASCII_ACTION( sUNO_StyleName_text, "text" ); +SD_CONSTASCII_ACTION( sUNO_StyleName_textbody, "textbody" ); +SD_CONSTASCII_ACTION( sUNO_StyleName_textbodyjust, "textbodyjustfied" ); +SD_CONSTASCII_ACTION( sUNO_StyleName_textbodyindent, "textbodyindent" ); +SD_CONSTASCII_ACTION( sUNO_StyleName_title, "title" ); +SD_CONSTASCII_ACTION( sUNO_StyleName_title1, "title1" ); +SD_CONSTASCII_ACTION( sUNO_StyleName_title2, "title2" ); +SD_CONSTASCII_ACTION( sUNO_StyleName_headline, "headline" ); +SD_CONSTASCII_ACTION( sUNO_StyleName_headline1, "headline1" ); +SD_CONSTASCII_ACTION( sUNO_StyleName_headline2, "headline2" ); +SD_CONSTASCII_ACTION( sUNO_StyleName_measure, "measure" ); + +// SdUnoGraphicStyle +SD_CONSTASCII_ACTION( sUNO_SdUnoGraphicStyle, "SdUnoGraphicStyle" ); + +// SdUnoPageBackground +SD_CONSTASCII_ACTION( sUNO_SdUnoPageBackground, "SdUnoPageBackground" ); + +// SdLayerManager +SD_CONSTASCII_ACTION( sUNO_SdLayerManager, "SdUnoLayerManager" ); + +// SdLayer +SD_CONSTASCII_ACTION( sUNO_SdLayer, "SdUnoLayer" ); +SD_CONSTASCII_ACTION( sUNO_LayerName_background, "background" ); +SD_CONSTASCII_ACTION( sUNO_LayerName_background_objects, "backgroundobjects" ); +SD_CONSTASCII_ACTION( sUNO_LayerName_layout, "layout" ); +SD_CONSTASCII_ACTION( sUNO_LayerName_controls, "controls" ); +SD_CONSTASCII_ACTION( sUNO_LayerName_measurelines, "measurelines" ); + +// SdXShape +SD_CONSTASCII_ACTION( sUNO_shape_style, "Style" ); +SD_CONSTASCII_ACTION( sUNO_shape_layername, "LayerName" ); +SD_CONSTASCII_ACTION( sUNO_shape_zorder, "ZOrder" ); + +// services +SD_CONSTASCII_ACTION( sUNO_Service_StyleFamily, UNO_PREFIX "style.StyleFamily" ); +SD_CONSTASCII_ACTION( sUNO_Service_StyleFamilies, UNO_PREFIX "style.StyleFamilies" ); +SD_CONSTASCII_ACTION( sUNO_Service_Style, UNO_PREFIX "style.Style" ); +SD_CONSTASCII_ACTION( sUNO_Service_FillProperties, UNO_PREFIX "drawing.FillProperties" ); +SD_CONSTASCII_ACTION( sUNO_Service_LineProperties, UNO_PREFIX "drawing.LineProperties" ); +SD_CONSTASCII_ACTION( sUNO_Service_ParagraphProperties, UNO_PREFIX "style.ParagraphProperties" ); +SD_CONSTASCII_ACTION( sUNO_Service_CharacterProperties, UNO_PREFIX "style.CharacterProperties" ); +SD_CONSTASCII_ACTION( sUNO_Service_Text, UNO_PREFIX "drawing.Text" ); +SD_CONSTASCII_ACTION( sUNO_Service_TextProperties, UNO_PREFIX "drawing.TextProperties" ); +SD_CONSTASCII_ACTION( sUNO_Service_ShadowProperties, UNO_PREFIX "drawing.ShadowProperties" ); +SD_CONSTASCII_ACTION( sUNO_Service_ConnectorProperties, UNO_PREFIX "drawing.ConnectorProperties" ); +SD_CONSTASCII_ACTION( sUNO_Service_MeasureProperties, UNO_PREFIX "drawing.MeasureProperties" ); +SD_CONSTASCII_ACTION( sUNO_Service_PageBackground, UNO_PREFIX "drawing.PageBackground" ); +SD_CONSTASCII_ACTION( sUNO_Service_DrawingLayer, UNO_PREFIX "drawing.Layer" ); +SD_CONSTASCII_ACTION( sUNO_Service_DrawingLayerManager, UNO_PREFIX "drawing.LayerManager" ); +SD_CONSTASCII_ACTION( sUNO_Service_GraphicObjectShape, UNO_PREFIX "drawing.GraphicObjectShape" ); +SD_CONSTASCII_ACTION( sUNO_Service_ImageMapRectangleObject, UNO_PREFIX "image.ImageMapRectangleObject" ); +SD_CONSTASCII_ACTION( sUNO_Service_ImageMapCircleObject, UNO_PREFIX "image.ImageMapCircleObject" ); +SD_CONSTASCII_ACTION( sUNO_Service_ImageMapPolygonObject, UNO_PREFIX "image.ImageMapPolygonObject" ); + +// properties +SD_CONSTASCII_ACTION( sUNO_Prop_Background, "Background" ); +SD_CONSTASCII_ACTION( sUNO_Prop_ForbiddenCharacters, "ForbiddenCharacters" ); +SD_CONSTASCII_ACTION( sUNO_Prop_MapUnit, "MapUnit" ); +SD_CONSTASCII_ACTION( sUNO_Prop_VisibleArea, "VisibleArea" ); +SD_CONSTASCII_ACTION( sUNO_Prop_Aspect, "Aspect" ); +SD_CONSTASCII_ACTION( sUNO_Prop_TabStop, "TabStop" ); +SD_CONSTASCII_ACTION( sUNO_Prop_CharLocale, "CharLocale" ); +SD_CONSTASCII_ACTION( sUNO_Prop_AutomContFocus, "AutomaticControlFocus" ); +SD_CONSTASCII_ACTION( sUNO_Prop_ApplyFrmDsgnMode, "ApplyFormDesignMode" ); +SD_CONSTASCII_ACTION( sUNO_Prop_IsBackgroundVisible, "IsBackgroundVisible" ); +SD_CONSTASCII_ACTION( sUNO_Prop_IsBackgroundObjectsVisible, "IsBackgroundObjectsVisible" ); +SD_CONSTASCII_ACTION( sUNO_Prop_UserDefinedAttributes, "UserDefinedAttributes" ); +SD_CONSTASCII_ACTION( sUNO_Prop_BookmarkURL, "BookmarkURL" ); +SD_CONSTASCII_ACTION( sUNO_Prop_RuntimeUID, "RuntimeUID" ); +SD_CONSTASCII_ACTION( sUNO_Prop_HasValidSignatures, "HasValidSignatures" ); + +// view settings +SD_CONSTASCII_ACTION( sUNO_View_ViewId, "ViewId" ); +SD_CONSTASCII_ACTION( sUNO_View_SnapLinesDrawing, "SnapLinesDrawing" ); +SD_CONSTASCII_ACTION( sUNO_View_SnapLinesNotes, "SnapLinesNotes" ); +SD_CONSTASCII_ACTION( sUNO_View_SnapLinesHandout, "SnapLinesHandout" ); +SD_CONSTASCII_ACTION( sUNO_View_RulerIsVisible, "RulerIsVisible" ); +SD_CONSTASCII_ACTION( sUNO_View_PageKind, "PageKind" ); +SD_CONSTASCII_ACTION( sUNO_View_SelectedPage, "SelectedPage" ); +SD_CONSTASCII_ACTION( sUNO_View_IsLayerMode, "IsLayerMode" ); +SD_CONSTASCII_ACTION( sUNO_View_IsQuickEdit, "IsQuickEdit" ); +SD_CONSTASCII_ACTION( sUNO_View_IsBigHandles, "IsBigHandles" ); +SD_CONSTASCII_ACTION( sUNO_View_IsDoubleClickTextEdit, "IsDoubleClickTextEdit" ); +SD_CONSTASCII_ACTION( sUNO_View_IsClickChangeRotation, "IsClickChangeRotation" ); +SD_CONSTASCII_ACTION( sUNO_View_IsDragWithCopy, "IsDragWithCopy" ); +SD_CONSTASCII_ACTION( sUNO_View_SlidesPerRow, "SlidesPerRow" ); +SD_CONSTASCII_ACTION( sUNO_View_DrawMode, "DrawMode" ); +SD_CONSTASCII_ACTION( sUNO_View_PreviewDrawMode, "PreviewDrawMode" ); +SD_CONSTASCII_ACTION( sUNO_View_IsShowPreviewInPageMode, "IsShowPreviewInPageMode" ); +SD_CONSTASCII_ACTION( sUNO_View_IsShowPreviewInMasterPageMode, "IsShowPreviewInMasterPageMode" ); +SD_CONSTASCII_ACTION( sUNO_View_SetShowPreviewInOutlineMode, "SetShowPreviewInOutlineMode" ); +SD_CONSTASCII_ACTION( sUNO_View_EditModeStandard, "EditModeStandard" ); +SD_CONSTASCII_ACTION( sUNO_View_EditModeNotes, "EditModeNotes" ); +SD_CONSTASCII_ACTION( sUNO_View_EditModeHandout, "EditModeHandout" ); +SD_CONSTASCII_ACTION( sUNO_View_VisArea, "VisArea" ); + +SD_CONSTASCII_ACTION( sUNO_View_GridIsVisible, "GridIsVisible" ); +SD_CONSTASCII_ACTION( sUNO_View_GridIsFront, "GridIsFront" ); +SD_CONSTASCII_ACTION( sUNO_View_IsSnapToGrid, "IsSnapToGrid" ); +SD_CONSTASCII_ACTION( sUNO_View_IsSnapToPageMargins, "IsSnapToPageMargins" ); +SD_CONSTASCII_ACTION( sUNO_View_IsSnapToSnapLines, "IsSnapToSnapLines" ); +SD_CONSTASCII_ACTION( sUNO_View_IsSnapToObjectFrame, "IsSnapToObjectFrame" ); +SD_CONSTASCII_ACTION( sUNO_View_IsSnapToObjectPoints, "IsSnapToObjectPoints" ); +SD_CONSTASCII_ACTION( sUNO_View_IsSnapLinesVisible, "IsSnapLinesVisible" ); +SD_CONSTASCII_ACTION( sUNO_View_IsDragStripes, "IsDragStripes" ); +SD_CONSTASCII_ACTION( sUNO_View_IsPlusHandlesAlwaysVisible, "IsPlusHandlesAlwaysVisible" ); +SD_CONSTASCII_ACTION( sUNO_View_IsFrameDragSingles, "IsFrameDragSingles" ); +SD_CONSTASCII_ACTION( sUNO_View_IsMarkedHitMovesAlways, "IsMarkedHitMovesAlways" ); +SD_CONSTASCII_ACTION( sUNO_View_EliminatePolyPointLimitAngle, "EliminatePolyPointLimitAngle" ); +SD_CONSTASCII_ACTION( sUNO_View_IsEliminatePolyPoints, "IsEliminatePolyPoints" ); +SD_CONSTASCII_ACTION( sUNO_View_IsLineDraft, "IsLineDraft" ); +SD_CONSTASCII_ACTION( sUNO_View_IsFillDraft, "IsFillDraft" ); +SD_CONSTASCII_ACTION( sUNO_View_IsTextDraft, "IsTextDraft" ); +SD_CONSTASCII_ACTION( sUNO_View_IsGrafDraft, "IsGrafDraft" ); +SD_CONSTASCII_ACTION( sUNO_View_ActiveLayer, "ActiveLayer" ); +SD_CONSTASCII_ACTION( sUNO_View_NoAttribs, "NoAttribs" ); +SD_CONSTASCII_ACTION( sUNO_View_NoColors, "NoColors" ); +SD_CONSTASCII_ACTION( sUNO_View_GridCoarseWidth, "GridCoarseWidth" ); +SD_CONSTASCII_ACTION( sUNO_View_GridCoarseHeight, "GridCoarseHeight" ); +SD_CONSTASCII_ACTION( sUNO_View_GridFineWidth, "GridFineWidth" ); +SD_CONSTASCII_ACTION( sUNO_View_GridFineHeight, "GridFineHeight" ); +SD_CONSTASCII_ACTION( sUNO_View_IsAngleSnapEnabled, "IsAngleSnapEnabled" ); +SD_CONSTASCII_ACTION( sUNO_View_SnapAngle, "SnapAngle" ); +SD_CONSTASCII_ACTION( sUNO_View_GridSnapWidthXNumerator, "GridSnapWidthXNumerator" ); +SD_CONSTASCII_ACTION( sUNO_View_GridSnapWidthXDenominator, "GridSnapWidthXDenominator" ); +SD_CONSTASCII_ACTION( sUNO_View_GridSnapWidthYNumerator, "GridSnapWidthYNumerator" ); +SD_CONSTASCII_ACTION( sUNO_View_GridSnapWidthYDenominator, "GridSnapWidthYDenominator" ); +SD_CONSTASCII_ACTION( sUNO_View_VisibleLayers, "VisibleLayers" ); +SD_CONSTASCII_ACTION( sUNO_View_PrintableLayers, "PrintableLayers" ); +SD_CONSTASCII_ACTION( sUNO_View_LockedLayers, "LockedLayers" ); + +SD_CONSTASCII_ACTION( sUNO_View_VisibleAreaTop, "VisibleAreaTop" ); +SD_CONSTASCII_ACTION( sUNO_View_VisibleAreaLeft, "VisibleAreaLeft" ); +SD_CONSTASCII_ACTION( sUNO_View_VisibleAreaWidth, "VisibleAreaWidth" ); +SD_CONSTASCII_ACTION( sUNO_View_VisibleAreaHeight, "VisibleAreaHeight" ); + +SD_CONSTASCII_ACTION( sUNO_View_ZoomOnPage, "ZoomOnPage" ); +#endif + diff --git a/sd/source/ui/inc/unomodel.hxx b/sd/source/ui/inc/unomodel.hxx new file mode 100644 index 000000000000..4881a053aaff --- /dev/null +++ b/sd/source/ui/inc/unomodel.hxx @@ -0,0 +1,354 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SD_UNO_MODEL_HXX +#define SD_UNO_MODEL_HXX + +#include <com/sun/star/style/XStyleFamiliesSupplier.hpp> +#include <com/sun/star/document/XLinkTargetSupplier.hpp> +#include <com/sun/star/drawing/XDrawPagesSupplier.hpp> +#include <com/sun/star/drawing/XDrawPageSummarizer.hpp> +#include <com/sun/star/drawing/XDrawPageDuplicator.hpp> +#include <com/sun/star/drawing/XLayerSupplier.hpp> +#include <com/sun/star/drawing/XMasterPagesSupplier.hpp> +#include <com/sun/star/presentation/XPresentationSupplier.hpp> +#include <com/sun/star/presentation/XCustomPresentationSupplier.hpp> +#include <com/sun/star/drawing/XLayerManager.hpp> +#include <com/sun/star/container/XNameContainer.hpp> +#include <com/sun/star/presentation/XPresentation.hpp> +#include <com/sun/star/lang/XServiceInfo.hpp> +#include <com/sun/star/drawing/XDrawPages.hpp> +#include <com/sun/star/ucb/XAnyCompareFactory.hpp> +#include <com/sun/star/i18n/XForbiddenCharacters.hpp> +#include <com/sun/star/presentation/XHandoutMasterSupplier.hpp> +#include <com/sun/star/view/XRenderable.hpp> +#include <com/sun/star/util/MeasureUnit.hpp> + +#include <rtl/ref.hxx> + +#include <svl/lstner.hxx> +#include <sfx2/sfxbasemodel.hxx> +#include <svx/fmdmod.hxx> + +#include <editeng/unoipset.hxx> + +#include <comphelper/servicehelper.hxx> + +class SdDrawDocument; +class SdPage; +class List; +class SdXCustomPresentations; + +namespace sd { +class DrawDocShell; +} + +extern ::rtl::OUString getPageApiName( SdPage* pPage ); +extern ::rtl::OUString getPageApiNameFromUiName( const String& rUIName ); + +/*********************************************************************** +* * +***********************************************************************/ +class SdXImpressDocument : public SfxBaseModel, // implements SfxListener, OWEAKOBJECT & other + public SvxFmMSFactory, + public ::com::sun::star::drawing::XDrawPageDuplicator, + public ::com::sun::star::drawing::XLayerSupplier, + public ::com::sun::star::drawing::XMasterPagesSupplier, + public ::com::sun::star::drawing::XDrawPagesSupplier, + public ::com::sun::star::presentation::XPresentationSupplier, + public ::com::sun::star::presentation::XCustomPresentationSupplier, + public ::com::sun::star::document::XLinkTargetSupplier, + public ::com::sun::star::beans::XPropertySet, + public ::com::sun::star::style::XStyleFamiliesSupplier, + public ::com::sun::star::lang::XServiceInfo, + public ::com::sun::star::ucb::XAnyCompareFactory, + public ::com::sun::star::presentation::XHandoutMasterSupplier, + public ::com::sun::star::view::XRenderable +{ + friend class SdDrawPagesAccess; + friend class SdMasterPagesAccess; + friend class SdLayerManager; + +private: + ::sd::DrawDocShell* mpDocShell; + SdDrawDocument* mpDoc; + bool mbDisposed; + + SdPage* InsertSdPage( sal_uInt16 nPage, sal_Bool bDuplicate = sal_False ) throw(); + + const sal_Bool mbImpressDoc; + bool mbClipBoard; + + ::com::sun::star::uno::WeakReference< ::com::sun::star::drawing::XDrawPages > mxDrawPagesAccess; + ::com::sun::star::uno::WeakReference< ::com::sun::star::drawing::XDrawPages > mxMasterPagesAccess; + ::com::sun::star::uno::WeakReference< ::com::sun::star::container::XNameAccess > mxLayerManager; + ::com::sun::star::uno::WeakReference< ::com::sun::star::container::XNameContainer > mxCustomPresentationAccess; + ::com::sun::star::uno::WeakReference< ::com::sun::star::container::XNameAccess > mxStyleFamilies; + ::com::sun::star::uno::WeakReference< ::com::sun::star::presentation::XPresentation > mxPresentation; + ::com::sun::star::uno::WeakReference< ::com::sun::star::i18n::XForbiddenCharacters > mxForbidenCharacters; + ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > mxLinks; + + ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > mxDashTable; + ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > mxGradientTable; + ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > mxHatchTable; + ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > mxBitmapTable; + ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > mxTransGradientTable; + ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > mxMarkerTable; + ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > mxDrawingPool; + + const SvxItemPropertySet* mpPropSet; + + ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > maTypeSequence; + + rtl::OUString maBuildId; + + void initializeDocument(); +public: + SdXImpressDocument( ::sd::DrawDocShell* pShell, bool bClipBoard = false ) throw(); + SdXImpressDocument( SdDrawDocument* pDoc, bool bClipBoard = false ) throw(); + virtual ~SdXImpressDocument() throw(); + + static rtl::Reference< SdXImpressDocument > GetModel( SdDrawDocument* pDoc ); + + // intern + virtual int operator==( const SdXImpressDocument& rModel ) const { return mpDoc == rModel.mpDoc; } + virtual int operator!=( const SdXImpressDocument& rModel ) const { return mpDoc != rModel.mpDoc; } + + ::sd::DrawDocShell* GetDocShell() const { return mpDocShell; } + SdDrawDocument* GetDoc() const { return mpDoc; } + sal_Bool IsImpressDocument() const { return mbImpressDoc; } + + void SetModified( sal_Bool bModified = sal_True ) throw(); + + ::com::sun::star::uno::Reference< ::com::sun::star::i18n::XForbiddenCharacters > getForbiddenCharsTable(); + + // SfxListener + virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); + + UNO3_GETIMPLEMENTATION_DECL(SdXImpressDocument) + + // XInterface + virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL acquire() throw(); + virtual void SAL_CALL release() throw(); + + // XModel + virtual void SAL_CALL lockControllers( ) throw(::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL unlockControllers( ) throw(::com::sun::star::uno::RuntimeException); + virtual sal_Bool SAL_CALL hasControllersLocked( ) throw(::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Reference < ::com::sun::star::container::XIndexAccess > SAL_CALL getViewData() throw(::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL setViewData( const ::com::sun::star::uno::Reference < ::com::sun::star::container::XIndexAccess >& aData ) throw(::com::sun::star::uno::RuntimeException); + + // XTypeProvider + virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId( ) throw(::com::sun::star::uno::RuntimeException); + + // XDrawPageDuplicator + virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage > SAL_CALL duplicate( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage >& xPage ) throw(::com::sun::star::uno::RuntimeException); + + // XDrawPagesSupplier + virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPages > SAL_CALL getDrawPages( ) throw(::com::sun::star::uno::RuntimeException); + + // XMasterPagesSupplier + virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPages > SAL_CALL getMasterPages( ) throw(::com::sun::star::uno::RuntimeException); + + // XLayerManagerSupplier + virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getLayerManager( ) throw(::com::sun::star::uno::RuntimeException); + + // XCustomPresentationSupplier + virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > SAL_CALL getCustomPresentations( ) throw(::com::sun::star::uno::RuntimeException); + + // XHandoutMasterSupplier + virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage > SAL_CALL getHandoutMasterPage( ) throw (::com::sun::star::uno::RuntimeException); + + // XPresentationSupplier + virtual ::com::sun::star::uno::Reference< ::com::sun::star::presentation::XPresentation > SAL_CALL getPresentation( ) throw(::com::sun::star::uno::RuntimeException); + + // XMultiServiceFactory ( SvxFmMSFactory ) + virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL createInstance( const ::rtl::OUString& aServiceSpecifier ) throw(::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getAvailableServiceNames( ) throw(::com::sun::star::uno::RuntimeException); + + // XServiceInfo + virtual ::rtl::OUString SAL_CALL getImplementationName() throw(::com::sun::star::uno::RuntimeException); + virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException); + + // XPropertySet + virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& xListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); + + // XLinkTargetSupplier + virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getLinks( ) throw(::com::sun::star::uno::RuntimeException); + + // XStyleFamiliesSupplier + virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getStyleFamilies( ) throw(::com::sun::star::uno::RuntimeException); + + // XAnyCompareFactory + virtual ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XAnyCompare > SAL_CALL createAnyCompareByName( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::uno::RuntimeException); + + // XRenderable + virtual sal_Int32 SAL_CALL getRendererCount( const ::com::sun::star::uno::Any& aSelection, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& xOptions ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL getRenderer( sal_Int32 nRenderer, const ::com::sun::star::uno::Any& aSelection, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& xOptions ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL render( sal_Int32 nRenderer, const ::com::sun::star::uno::Any& aSelection, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& xOptions ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); + + // XComponent + + /** This dispose implementation releases the resources held by the + called object and forwards the call to its base class. + When close() has not yet been called then this is done first. As a + consequence the implementation has to cope with being called twice + and still has to forward the second call to the base class. + See also comments of issue 27847. + */ + virtual void SAL_CALL dispose() throw (::com::sun::star::uno::RuntimeException); +}; + +/*********************************************************************** +* * +***********************************************************************/ + +#include <cppuhelper/implbase4.hxx> + +class SdDrawPagesAccess : public ::cppu::WeakImplHelper4< ::com::sun::star::drawing::XDrawPages, ::com::sun::star::container::XNameAccess, ::com::sun::star::lang::XServiceInfo, ::com::sun::star::lang::XComponent > +{ +private: + SdXImpressDocument* mpModel; + +public: + SdDrawPagesAccess( SdXImpressDocument& rMyModel ) throw(); + virtual ~SdDrawPagesAccess() throw(); + + // XDrawPages + virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage > SAL_CALL insertNewByIndex( sal_Int32 nIndex ) throw(::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL remove( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage >& xPage ) throw(::com::sun::star::uno::RuntimeException); + + // XNameAccess + virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName ) throw(::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames() throw(::com::sun::star::uno::RuntimeException); + virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName ) throw(::com::sun::star::uno::RuntimeException); + + // XIndexAccess + virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException) ; + virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index ) throw(::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); + + // XElementAccess + virtual ::com::sun::star::uno::Type SAL_CALL getElementType() throw(::com::sun::star::uno::RuntimeException); + virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException); + + // XServiceInfo + virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException); + virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException); + + // XComponent + virtual void SAL_CALL dispose( ) throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& aListener ) throw (::com::sun::star::uno::RuntimeException); +}; + +/*********************************************************************** +* * +***********************************************************************/ + +#include <cppuhelper/implbase3.hxx> + +class SdMasterPagesAccess : public ::cppu::WeakImplHelper3< ::com::sun::star::drawing::XDrawPages, ::com::sun::star::lang::XServiceInfo, ::com::sun::star::lang::XComponent > +{ +private: + SdXImpressDocument* mpModel; + +public: + SdMasterPagesAccess( SdXImpressDocument& rMyModel ) throw(); + virtual ~SdMasterPagesAccess() throw(); + + // XDrawPages + virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage > SAL_CALL insertNewByIndex( sal_Int32 nIndex ) throw(::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL remove( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage >& xPage ) throw(::com::sun::star::uno::RuntimeException); + + // XIndexAccess + virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException) ; + virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index ) throw(::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); + + // XElementAccess + virtual ::com::sun::star::uno::Type SAL_CALL getElementType() throw(::com::sun::star::uno::RuntimeException); + virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException); + + // XServiceInfo + virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException); + virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException); + + // XComponent + virtual void SAL_CALL dispose( ) throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& aListener ) throw (::com::sun::star::uno::RuntimeException); +}; + +/*********************************************************************** +* * +***********************************************************************/ + +class SdDocLinkTargets : public ::cppu::WeakImplHelper3< ::com::sun::star::container::XNameAccess, + ::com::sun::star::lang::XServiceInfo , ::com::sun::star::lang::XComponent > +{ +private: + SdXImpressDocument* mpModel; + +public: + SdDocLinkTargets( SdXImpressDocument& rMyModel ) throw(); + virtual ~SdDocLinkTargets() throw(); + + // XNameAccess + virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName ) throw(::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames() throw(::com::sun::star::uno::RuntimeException); + virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName ) throw(::com::sun::star::uno::RuntimeException); + + // XElementAccess + virtual ::com::sun::star::uno::Type SAL_CALL getElementType() throw(::com::sun::star::uno::RuntimeException); + virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException); + + // XServiceInfo + virtual ::rtl::OUString SAL_CALL getImplementationName() throw(::com::sun::star::uno::RuntimeException); + virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException); + + // XComponent + virtual void SAL_CALL dispose( ) throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& aListener ) throw (::com::sun::star::uno::RuntimeException); + + // intern + SdPage* FindPage( const ::rtl::OUString& rName ) const throw(); +}; + +#endif + + diff --git a/sd/source/ui/inc/unoprnms.hxx b/sd/source/ui/inc/unoprnms.hxx new file mode 100644 index 000000000000..4bf30c307ded --- /dev/null +++ b/sd/source/ui/inc/unoprnms.hxx @@ -0,0 +1,100 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef _SD_UNOPRNMS_HXX +#define _SD_UNOPRNMS_HXX + +#define UNO_NAME_MODEL_LANGUAGE "CharLocale" +#define UNO_NAME_MODEL_TABSTOP "TabStop" + +#define UNO_NAME_PAGE_BACKGROUND "Background" +#define UNO_NAME_PAGE_LEFT "BorderLeft" +#define UNO_NAME_PAGE_RIGHT "BorderRight" +#define UNO_NAME_PAGE_TOP "BorderTop" +#define UNO_NAME_PAGE_BOTTOM "BorderBottom" +#define UNO_NAME_PAGE_CHANGE "Change" +#define UNO_NAME_PAGE_DURATION "Duration" +#define UNO_NAME_PAGE_EFFECT "Effect" +#define UNO_NAME_PAGE_HEIGHT "Height" +#define UNO_NAME_PAGE_LAYOUT "Layout" +#define UNO_NAME_PAGE_NUMBER "Number" +#define UNO_NAME_PAGE_OBJECTS "Objects" +#define UNO_NAME_PAGE_ORIENTATION "Orientation" +#define UNO_NAME_PAGE_SPEED "Speed" +#define UNO_NAME_PAGE_WIDTH "Width" +#define UNO_NAME_PAGE_PREVIEW "Preview" +#define UNO_NAME_PAGE_PREVIEWBITMAP "PreviewBitmap" +#define UNO_NAME_PAGE_VISIBLE "Visible" + +#define UNO_NAME_OBJ_BOOKMARK "Bookmark" +#define UNO_NAME_OBJ_DIMCOLOR "DimColor" +#define UNO_NAME_OBJ_DIMHIDE "DimHide" +#define UNO_NAME_OBJ_DIMPREV "DimPrevious" +#define UNO_NAME_OBJ_EFFECT "Effect" +#define UNO_NAME_OBJ_ISEMPTYPRESOBJ "IsEmptyPresentationObject" +#define UNO_NAME_OBJ_ISPRESOBJ "IsPresentationObject" +#define UNO_NAME_OBJ_CLICKACTION "OnClick" +#define UNO_NAME_OBJ_PLAYFULL "PlayFull" +#define UNO_NAME_OBJ_PRESORDER "PresentationOrder" +#define UNO_NAME_OBJ_SOUNDFILE "Sound" +#define UNO_NAME_OBJ_SOUNDON "SoundOn" +#define UNO_NAME_OBJ_SPEED "Speed" +#define UNO_NAME_OBJ_TEXTEFFECT "TextEffect" +#define UNO_NAME_OBJ_BLUESCREEN "TransparentColor" +#define UNO_NAME_OBJ_VERB "Verb" +#define UNO_NAME_OBJ_STYLE "Style" +#define UNO_NAME_OBJ_MASTERDEPENDENT "IsPlaceholderDependent" +#define UNO_NAME_OBJ_ANIMATIONPATH "AnimationPath" + +#define UNO_NAME_LAYER_LOCKED "IsLocked" +#define UNO_NAME_LAYER_PRINTABLE "IsPrintable" +#define UNO_NAME_LAYER_VISIBLE "IsVisible" +#define UNO_NAME_LAYER_NAME "Name" + +#define UNO_NAME_SHOW_ALLOWANIM "AllowAnimations" +#define UNO_NAME_SHOW_CUSTOMSHOW "CustomShow" +#define UNO_NAME_SHOW_FIRSTPAGE "FirstPage" +#define UNO_NAME_SHOW_ONTOP "IsAlwaysOnTop" +#define UNO_NAME_SHOW_AUTOMATIC "IsAutomatic" +#define UNO_NAME_SHOW_ENDLESS "IsEndless" +#define UNO_NAME_SHOW_FULLSCREEN "IsFullScreen" +#define UNO_NAME_SHOW_MOUSEVISIBLE "IsMouseVisible" +#define UNO_NAME_SHOW_PAGERANGE "PageRange" +#define UNO_NAME_SHOW_PAUSE "Pause" +#define UNO_NAME_SHOW_STARTWITHNAV "StartWithNavigator" +#define UNO_NAME_SHOW_USEPEN "UsePen" + +#define UNO_NAME_SEARCH_BACKWARDS "SearchBackwards" +#define UNO_NAME_SEARCH_CASE "SearchCaseSensitive" +#define UNO_NAME_SEARCH_WORDS "SearchWords" + +#define UNO_NAME_LINKDISPLAYNAME "LinkDisplayName" +#define UNO_NAME_LINKDISPLAYBITMAP "LinkDisplayBitmap" + +#define UNO_NAME_STYLE_FAMILY "Family" +#endif + + diff --git a/sd/source/ui/inc/unosrch.hxx b/sd/source/ui/inc/unosrch.hxx new file mode 100755 index 000000000000..b19f3751e836 --- /dev/null +++ b/sd/source/ui/inc/unosrch.hxx @@ -0,0 +1,149 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#include <com/sun/star/drawing/XShape.hpp> +#include <com/sun/star/drawing/XDrawPage.hpp> +#include <com/sun/star/text/XTextRange.hpp> +#include <com/sun/star/drawing/XShapes.hpp> +#include <com/sun/star/util/XReplaceable.hpp> +#include <com/sun/star/util/XSearchable.hpp> +#include <com/sun/star/util/XSearchDescriptor.hpp> +#include <com/sun/star/util/XReplaceDescriptor.hpp> +#include <com/sun/star/lang/XUnoTunnel.hpp> + +#include <comphelper/servicehelper.hxx> +#include <editeng/editdata.hxx> +#include <editeng/unoipset.hxx> + +class SdrObject; +class SvxItemPropertySet; +class SdUnoSearchReplaceDescriptor; + +/** this class implements a search or replace operation on a given page or a given sdrobj */ +class SdUnoSearchReplaceShape : public ::com::sun::star::util::XReplaceable +{ +protected: + ::com::sun::star::drawing::XShape* mpShape; + ::com::sun::star::drawing::XDrawPage* mpPage; + + ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > Search( ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > xText, SdUnoSearchReplaceDescriptor* pDescr ) throw(); + sal_Bool Search( const ::rtl::OUString& rText, sal_Int32& nStartPos, sal_Int32& nEndPos, SdUnoSearchReplaceDescriptor* pDescr ) throw(); + ESelection GetSelection( ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > xTextRange ) throw(); + ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > GetShape( ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > xTextRange ) throw(); + ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > GetNextShape( ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > xShapes, ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > xCurrentShape ) throw(); + ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > GetCurrentShape() const throw(); + +public: + // danger, this c'tor is only usable if the given shape or page is derived + // from this class!!! + SdUnoSearchReplaceShape( ::com::sun::star::drawing::XDrawPage* xPage ) throw(); + virtual ~SdUnoSearchReplaceShape() throw(); + + // XReplaceable + virtual ::com::sun::star::uno::Reference< ::com::sun::star::util::XReplaceDescriptor > SAL_CALL createReplaceDescriptor( ) throw(::com::sun::star::uno::RuntimeException); + virtual sal_Int32 SAL_CALL replaceAll( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XSearchDescriptor >& xDesc ) throw(::com::sun::star::uno::RuntimeException); + + // XSearchable + virtual ::com::sun::star::uno::Reference< ::com::sun::star::util::XSearchDescriptor > SAL_CALL createSearchDescriptor( ) throw(::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL findAll( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XSearchDescriptor >& xDesc ) throw(::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL findFirst( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XSearchDescriptor >& xDesc ) throw(::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL findNext( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& xStartAt, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XSearchDescriptor >& xDesc ) throw(::com::sun::star::uno::RuntimeException); +}; + +/* ================================================================= */ + +/** this class holds the parameters and status of a search or replace operation performed + by class SdUnoSearchReplaceShape */ + +#include <cppuhelper/implbase2.hxx> + +class SdUnoSearchReplaceDescriptor : public ::cppu::WeakImplHelper2< ::com::sun::star::lang::XUnoTunnel, ::com::sun::star::util::XReplaceDescriptor > // public ::com::sun::star::util::XSearchDescriptor, ::com::sun::star::beans::XPropertySet +{ +protected: + SvxItemPropertySet* mpPropSet; + + sal_Bool mbBackwards; + sal_Bool mbCaseSensitive; + sal_Bool mbWords; + + sal_Bool mbReplace; + + ::rtl::OUString maSearchStr; + ::rtl::OUString maReplaceStr; + +public: + SdUnoSearchReplaceDescriptor( sal_Bool bReplace ) throw(); + virtual ~SdUnoSearchReplaceDescriptor() throw(); + + sal_Bool IsBackwards() const throw() { return mbBackwards; } + sal_Bool IsCaseSensitive() const throw() { return mbCaseSensitive; } + sal_Bool IsWords() const throw() { return mbWords; } + + UNO3_GETIMPLEMENTATION_DECL( SdUnoSearchReplaceDescriptor ) + + // XSearchDescriptor + virtual ::rtl::OUString SAL_CALL getSearchString( ) throw(::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL setSearchString( const ::rtl::OUString& aString ) throw(::com::sun::star::uno::RuntimeException); + + // XReplaceDescriptor + virtual ::rtl::OUString SAL_CALL getReplaceString( ) throw(::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL setReplaceString( const ::rtl::OUString& aReplaceString ) throw(::com::sun::star::uno::RuntimeException); + + // XPropertySet + virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& xListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); +}; + +/* ================================================================= */ + +#include <cppuhelper/implbase1.hxx> + +/** this class holds a sequence that is a result from a find all and + lets people access it through the XIndexAccess Interface. */ +class SdUnoFindAllAccess : public ::cppu::WeakImplHelper1< ::com::sun::star::container::XIndexAccess > // public ::com::sun::star::container::XElementAccess +{ +protected: + ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > > maSequence; + +public: + SdUnoFindAllAccess( ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > >& rSequence ) throw(); + virtual ~SdUnoFindAllAccess() throw(); + + // XIndexAccess + virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException) ; + virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index ) throw(::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); + + // XElementAccess + virtual ::com::sun::star::uno::Type SAL_CALL getElementType() throw(::com::sun::star::uno::RuntimeException); + virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException); +}; + diff --git a/sd/source/ui/inc/unprlout.hxx b/sd/source/ui/inc/unprlout.hxx new file mode 100755 index 000000000000..de4fce3ea988 --- /dev/null +++ b/sd/source/ui/inc/unprlout.hxx @@ -0,0 +1,65 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SD_UNPRLOUT_HXX +#define _SD_UNPRLOUT_HXX + +#include "sdundo.hxx" +#include "pres.hxx" // enum AutoLayout + +class SdDrawDocument; +class SdPage; + +class SdPresentationLayoutUndoAction : public SdUndoAction +{ + String aOldLayoutName; + String aNewLayoutName; + AutoLayout eOldAutoLayout; + AutoLayout eNewAutoLayout; + sal_Bool bSetAutoLayout; // sal_True: AutoLayout aendern + SdPage* pPage; + String aComment; + +public: + TYPEINFO(); + SdPresentationLayoutUndoAction(SdDrawDocument* pTheDoc, + String aTheOldLayoutName, + String aTheNewLayoutName, + AutoLayout eTheOldAutoLayout, + AutoLayout eTheNewAutoLayout, + sal_Bool bSet, + SdPage* pThePage); + + virtual ~SdPresentationLayoutUndoAction(); + virtual void Undo(); + virtual void Redo(); + + virtual String GetComment() const; +}; + +#endif // _SD_UNPRLOUT_HXX + diff --git a/sd/source/ui/inc/unslsel.hxx b/sd/source/ui/inc/unslsel.hxx new file mode 100644 index 000000000000..acb653677b5e --- /dev/null +++ b/sd/source/ui/inc/unslsel.hxx @@ -0,0 +1,50 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SD_UNSLSEL_HXX +#define _SD_UNSLSEL_HXX + +#include "sdundo.hxx" + +class SlideSelectionUndoAction : public SdUndoAction +{ + Container* pOldOrder; + Container* pNewOrder; + +public: + TYPEINFO(); + SlideSelectionUndoAction(SdDrawDocument* pTheDoc, + Container* pOld, Container* pNew) + : SdUndoAction(pTheDoc), + pOldOrder(pOld), + pNewOrder(pNew) {} + virtual ~SlideSelectionUndoAction() {} + virtual void Undo(); + virtual void Redo(); +}; + +#endif // _SD_UNSLSEL_HXX diff --git a/sd/source/ui/inc/vectdlg.hrc b/sd/source/ui/inc/vectdlg.hrc new file mode 100644 index 000000000000..ca84ae2746db --- /dev/null +++ b/sd/source/ui/inc/vectdlg.hrc @@ -0,0 +1,53 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#define DLG_VECTORIZE 654 + +#define BTN_OK 1 +#define BTN_CANCEL 1 +#define BTN_HELP 1 + +#define BTN_PREVIEW 1 + +#define GRP_SETTINGS 1 +#define GRP_PRGS 2 + +#define CTL_BMP 1 +#define CTL_WMF 2 +#define WND_PRGS 3 + +#define FT_LAYERS 1 +#define FT_REDUCE 3 +#define FT_FILLHOLES 4 +#define FT_ORIGINAL 5 +#define FT_VECTORIZED 6 + +#define NM_LAYERS 1 +#define MT_REDUCE 3 +#define MT_FILLHOLES 4 + +#define CB_FILLHOLES 1 diff --git a/sd/source/ui/inc/vectdlg.hxx b/sd/source/ui/inc/vectdlg.hxx new file mode 100755 index 000000000000..310926fd49b3 --- /dev/null +++ b/sd/source/ui/inc/vectdlg.hxx @@ -0,0 +1,107 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + + +#ifndef _SD_VECTDLG_HXX +#define _SD_VECTDLG_HXX + +#include <vcl/button.hxx> +#include <vcl/group.hxx> +#include <vcl/fixed.hxx> +#include <vcl/field.hxx> +#include <vcl/dialog.hxx> +#include <vcl/gdimtf.hxx> +#include <svx/graphctl.hxx> +#include <svtools/prgsbar.hxx> + +namespace sd { +class DrawDocShell; +} + +/****************************************************************************** +|* +|* SdVectorizeDlg +|* +\******************************************************************************/ + +class SdVectorizeDlg : public ModalDialog +{ + ::sd::DrawDocShell * mpDocSh; + FixedLine aGrpSettings; + FixedText aFtLayers; + NumericField aNmLayers; + FixedText aFtReduce; + MetricField aMtReduce; + FixedText aFtFillHoles; + MetricField aMtFillHoles; + CheckBox aCbFillHoles; + + FixedText aFtOriginal; + GraphCtrl aBmpWin; + + FixedText aFtVectorized; + GraphCtrl aMtfWin; + + FixedText aGrpPrgs; + ProgressBar aPrgs; + + OKButton aBtnOK; + CancelButton aBtnCancel; + HelpButton aBtnHelp; + PushButton aBtnPreview; + + Bitmap aBmp; + Bitmap aPreviewBmp; + GDIMetaFile aMtf; + + void LoadSettings(); + void SaveSettings() const; + void InitPreviewBmp(); + void UpdatePreviewMtf(); + + Rectangle GetRect( const Size& rDispSize, const Size& rBmpSize ) const; + Bitmap GetPreparedBitmap( Bitmap& rBmp, Fraction& rScale ); + void Calculate( Bitmap& rBmp, GDIMetaFile& rMtf ); + void AddTile( BitmapReadAccess* pRAcc, GDIMetaFile& rMtf, + long nPosX, long nPosY, long nWidth, long nHeight ); + + DECL_LINK( ProgressHdl, void* ); + DECL_LINK( ClickPreviewHdl, PushButton* ); + DECL_LINK( ClickOKHdl, OKButton* ); + DECL_LINK( ToggleHdl, CheckBox* ); + DECL_LINK( ModifyHdl, void* ); + +public: + + SdVectorizeDlg( Window* pParent, const Bitmap& rBmp, ::sd::DrawDocShell* pDocShell ); + ~SdVectorizeDlg(); + + const GDIMetaFile& GetGDIMetaFile() const { return aMtf; } +}; + +#endif + diff --git a/sd/source/ui/inc/view/viewoverlaymanager.hxx b/sd/source/ui/inc/view/viewoverlaymanager.hxx new file mode 100755 index 000000000000..7702dafa4d80 --- /dev/null +++ b/sd/source/ui/inc/view/viewoverlaymanager.hxx @@ -0,0 +1,71 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: $ + * $Revision: $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SD_VIEWOVERLAYMANAGER_HXX +#define _SD_VIEWOVERLAYMANAGER_HXX + +#include <vcl/image.hxx> +#include <svl/lstner.hxx> +#include "EventMultiplexer.hxx" +#include "ViewShellBase.hxx" +#include "res_bmp.hrc" + +namespace sd +{ + +typedef std::vector< rtl::Reference< SmartTag > > ViewTagVector; + +class ViewOverlayManager : public SfxListener +{ +public: + ViewOverlayManager( ViewShellBase& rViewShellBase ); + virtual ~ViewOverlayManager(); + + void onZoomChanged(); + void UpdateTags(); + + DECL_LINK(EventMultiplexerListener, tools::EventMultiplexerEvent*); + DECL_LINK(UpdateTagsHdl, void *); + + bool CreateTags(); + bool DisposeTags(); + + virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint); + +private: + ViewShellBase& mrBase; + sal_uLong mnUpdateTagsEvent; + + ViewTagVector maTagVector; +}; + +} + +#endif // _SD_VIEWOVERLAYMANAGER_HXX diff --git a/sd/source/ui/inc/zoomlist.hxx b/sd/source/ui/inc/zoomlist.hxx new file mode 100755 index 000000000000..13f3d6fe83bb --- /dev/null +++ b/sd/source/ui/inc/zoomlist.hxx @@ -0,0 +1,61 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SD_ZOOM_LIST_HXX +#define SD_ZOOM_LIST_HXX + + +#include <tools/gen.hxx> +#include <tools/list.hxx> + + +namespace sd { + +class ViewShell; + +class ZoomList : public List +{ +public: + ZoomList(ViewShell* pViewShell); + virtual ~ZoomList(); + + void InsertZoomRect(const Rectangle& rRect); + Rectangle GetNextZoomRect(); + Rectangle GetPreviousZoomRect(); + sal_Bool IsNextPossible() const; + sal_Bool IsPreviousPossible() const; + +private: + ViewShell* mpViewShell; + sal_uLong mnCurPos; +}; + +} // end of namespace sd + +#endif + + |