diff options
Diffstat (limited to 'svx/inc/extrusioncontrols.hxx')
-rw-r--r-- | svx/inc/extrusioncontrols.hxx | 393 |
1 files changed, 393 insertions, 0 deletions
diff --git a/svx/inc/extrusioncontrols.hxx b/svx/inc/extrusioncontrols.hxx new file mode 100644 index 000000000000..b707cae39f98 --- /dev/null +++ b/svx/inc/extrusioncontrols.hxx @@ -0,0 +1,393 @@ +/************************************************************************* + * + * 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: extrusioncontrols.hxx,v $ + * $Revision: 1.10 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General 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 _SVX_EXTRUSION_CONTROLS_HXX +#define _SVX_EXTRUSION_CONTROLS_HXX + +#include <svtools/valueset.hxx> +#include <svl/lstner.hxx> +#include <sfx2/tbxctrl.hxx> +#include <svtools/svtreebx.hxx> +#ifndef _SV_BUTTON_HXX +#include <vcl/button.hxx> +#endif +#include <vcl/dialog.hxx> +#include <vcl/field.hxx> +#include <com/sun/star/frame/XFrame.hpp> +#include "svx/svxdllapi.h" + +class SfxBindings; +class ToolbarMenu; +class SfxStatusForwarder; + +//======================================================================== + +namespace svx +{ +class ToolboxButtonColorUpdater; + +class ExtrusionDirectionWindow : public SfxPopupWindow +{ + using FloatingWindow::StateChanged; + +private: + ToolbarMenu* mpMenu; + ValueSet* mpDirectionSet; + ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > mxFrame; + + SfxStatusForwarder* mpDirectionForewarder; + SfxStatusForwarder* mpProjectionForewarder; + + Image maImgDirection[9]; + Image maImgDirectionH[9]; + + Image maImgPerspective; + Image maImgPerspectiveH; + Image maImgParallel; + Image maImgParallelH; + + bool mbPopupMode; + + DECL_LINK( SelectHdl, void * ); + void FillValueSet(); + + void implSetDirection( sal_Int32 nSkew, bool bEnabled = true ); + void implSetProjection( sal_Int32 nProjection, bool bEnabled = true ); + void implInit(); + +protected: + virtual BOOL Close(); + virtual void PopupModeEnd(); + + /** This function is called when the window gets the focus. It grabs + the focus to the line ends value set so that it can be controlled with + the keyboard. + */ + virtual void GetFocus (void); + +public: + ExtrusionDirectionWindow( USHORT nId, + const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame ); + ExtrusionDirectionWindow( USHORT nId, + const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame, + Window* pParentWindow ); + ~ExtrusionDirectionWindow(); + + void StartSelection(); + + virtual SfxPopupWindow* Clone() const; + + virtual void StateChanged( USHORT nSID, SfxItemState eState, const SfxPoolItem* pState ); + virtual void DataChanged( const DataChangedEvent& rDCEvt ); +}; + +//======================================================================== + +class SVX_DLLPUBLIC ExtrusionDirectionControl : public SfxToolBoxControl +{ +public: + SFX_DECL_TOOLBOX_CONTROL(); + ExtrusionDirectionControl( USHORT nSlotId, USHORT nId, ToolBox& rTbx ); + ~ExtrusionDirectionControl(); + + virtual void StateChanged( USHORT nSID, SfxItemState eState, + const SfxPoolItem* pState ); + virtual SfxPopupWindowType GetPopupWindowType() const; + virtual SfxPopupWindow* CreatePopupWindow(); +}; + +//======================================================================== + +class ExtrusionDepthWindow : public SfxPopupWindow +{ + using FloatingWindow::StateChanged; + +private: + ToolbarMenu* mpMenu; + + Image maImgDepth0; + Image maImgDepth1; + Image maImgDepth2; + Image maImgDepth3; + Image maImgDepth4; + Image maImgDepthInfinity; + + Image maImgDepth0h; + Image maImgDepth1h; + Image maImgDepth2h; + Image maImgDepth3h; + Image maImgDepth4h; + Image maImgDepthInfinityh; + + SfxStatusForwarder* mpDepthForewarder; + SfxStatusForwarder* mpMetricForewarder; + ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > mxFrame; + + bool mbPopupMode; + FieldUnit meUnit; + double mfDepth; + bool mbEnabled; + + DECL_LINK( SelectHdl, void * ); + + void implFillStrings( FieldUnit eUnit ); + void implSetDepth( double fDepth, bool bEnabled ); + void implInit(); + +protected: + virtual BOOL Close(); + virtual void PopupModeEnd(); + + /** This function is called when the window gets the focus. It grabs + the focus to the line ends value set so that it can be controlled with + the keyboard. + */ + virtual void GetFocus (void); + +public: + ExtrusionDepthWindow( USHORT nId, + const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame ); + ExtrusionDepthWindow( USHORT nId, + const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame, + Window* pParentWindow ); + ~ExtrusionDepthWindow(); + + void StartSelection(); + + virtual SfxPopupWindow* Clone() const; + + virtual void StateChanged( USHORT nSID, SfxItemState eState, const SfxPoolItem* pState ); + virtual void DataChanged( const DataChangedEvent& rDCEvt ); +}; + +//======================================================================== + +class SVX_DLLPUBLIC ExtrusionDepthControl : public SfxToolBoxControl +{ +public: + SFX_DECL_TOOLBOX_CONTROL(); + ExtrusionDepthControl( USHORT nSlotId, USHORT nId, ToolBox& rTbx ); + ~ExtrusionDepthControl(); + + virtual void StateChanged( USHORT nSID, SfxItemState eState, + const SfxPoolItem* pState ); + virtual SfxPopupWindowType GetPopupWindowType() const; + virtual SfxPopupWindow* CreatePopupWindow(); +}; + +//======================================================================== + +class ExtrusionLightingWindow : public SfxPopupWindow +{ + using FloatingWindow::StateChanged; + +private: + ToolbarMenu* mpMenu; + ValueSet* mpLightingSet; + + Image maImgLightingOff[9]; + Image maImgLightingOn[9]; + Image maImgLightingPreview[9]; + + Image maImgLightingOffh[9]; + Image maImgLightingOnh[9]; + Image maImgLightingPreviewh[9]; + + Image maImgBright; + Image maImgNormal; + Image maImgDim; + Image maImgBrighth; + Image maImgNormalh; + Image maImgDimh; + + SfxStatusForwarder* mpLightingDirectionForewarder; + SfxStatusForwarder* mpLightingIntensityForewarder; + ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > mxFrame; + + bool mbPopupMode; + int mnLevel; + bool mbLevelEnabled; + int mnDirection; + bool mbDirectionEnabled; + + void implSetIntensity( int nLevel, bool bEnabled ); + void implSetDirection( int nDirection, bool bEnabled ); + void implInit(); + + DECL_LINK( SelectHdl, void * ); + +protected: + virtual BOOL Close(); + virtual void PopupModeEnd(); + + /** This function is called when the window gets the focus. It grabs + the focus to the line ends value set so that it can be controlled with + the keyboard. + */ + virtual void GetFocus (void); + +public: + ExtrusionLightingWindow( USHORT nId, + const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame ); + ExtrusionLightingWindow( USHORT nId, + const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame, + Window* pParentWindow ); + ~ExtrusionLightingWindow(); + + void StartSelection(); + + virtual SfxPopupWindow* Clone() const; + + virtual void StateChanged( USHORT nSID, SfxItemState eState, const SfxPoolItem* pState ); + virtual void DataChanged( const DataChangedEvent& rDCEvt ); +}; + +//======================================================================== + +class SVX_DLLPUBLIC ExtrusionLightingControl : public SfxToolBoxControl +{ +public: + SFX_DECL_TOOLBOX_CONTROL(); + ExtrusionLightingControl( USHORT nSlotid, USHORT nId, ToolBox& rTbx ); + ~ExtrusionLightingControl(); + + virtual void StateChanged( USHORT nSID, SfxItemState eState, + const SfxPoolItem* pState ); + virtual SfxPopupWindowType GetPopupWindowType() const; + virtual SfxPopupWindow* CreatePopupWindow(); +}; + +//======================================================================== + +class ExtrusionSurfaceWindow : public SfxPopupWindow +{ + using FloatingWindow::StateChanged; +private: + ToolbarMenu* mpMenu; + + Image maImgSurface1; + Image maImgSurface2; + Image maImgSurface3; + Image maImgSurface4; + Image maImgSurface1h; + Image maImgSurface2h; + Image maImgSurface3h; + Image maImgSurface4h; + + SfxStatusForwarder* mpSurfaceForewarder; + ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > mxFrame; + + bool mbPopupMode; + + DECL_LINK( SelectHdl, void * ); + + void implSetSurface( int nSurface, bool bEnabled ); + void implInit(); + +protected: + virtual BOOL Close(); + virtual void PopupModeEnd(); + + /** This function is called when the window gets the focus. It grabs + the focus to the line ends value set so that it can be controlled with + the keyboard. + */ + virtual void GetFocus (void); + +public: + ExtrusionSurfaceWindow( USHORT nId, + const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame ); + ExtrusionSurfaceWindow( USHORT nId, + const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame, + Window* pParentWindow ); + ~ExtrusionSurfaceWindow(); + + void StartSelection(); + + virtual SfxPopupWindow* Clone() const; + + virtual void StateChanged( USHORT nSID, SfxItemState eState, const SfxPoolItem* pState ); + virtual void DataChanged( const DataChangedEvent& rDCEvt ); +}; + +//======================================================================== + +class SVX_DLLPUBLIC ExtrusionSurfaceControl : public SfxToolBoxControl +{ +public: + SFX_DECL_TOOLBOX_CONTROL(); + ExtrusionSurfaceControl( USHORT nSlotId, USHORT nId, ToolBox& rTbx ); + ~ExtrusionSurfaceControl(); + + virtual void StateChanged( USHORT nSID, SfxItemState eState, + const SfxPoolItem* pState ); + virtual SfxPopupWindowType GetPopupWindowType() const; + virtual SfxPopupWindow* CreatePopupWindow(); +}; + +//======================================================================== + +class SVX_DLLPUBLIC ExtrusionColorControl : public SfxToolBoxControl +{ +private: + ToolboxButtonColorUpdater* mpBtnUpdater; + +public: + SFX_DECL_TOOLBOX_CONTROL(); + ExtrusionColorControl( USHORT nSlotId, USHORT nId, ToolBox& rTbx ); + ~ExtrusionColorControl(); + + virtual void StateChanged( USHORT nSID, SfxItemState eState, + const SfxPoolItem* pState ); + virtual SfxPopupWindowType GetPopupWindowType() const; + virtual SfxPopupWindow* CreatePopupWindow(); +}; + +//======================================================================== + +class ExtrusionDepthDialog : public ModalDialog +{ + FixedText maFLDepth; + MetricField maMtrDepth; + OKButton maOKButton; + CancelButton maCancelButton; + HelpButton maHelpButton; + + FieldUnit meDefaultUnit; + +public: + ExtrusionDepthDialog( Window* pParent, double fDepth, FieldUnit eDefaultUnit ); + ~ExtrusionDepthDialog(); + + double getDepth() const; +}; + +} +#endif + |