blob: eb6b8689ee2e21e476bb7aa0dfa406c705cbed25 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#ifndef _SVX_TRANSFRM_HXX
#define _SVX_TRANSFRM_HXX
// include ---------------------------------------------------------------
#include <svx/dlgctrl.hxx>
#ifndef _FIXED_HXX //autogen
#include <vcl/fixed.hxx>
#endif
// #i75273#
#include <basegfx/range/b2drange.hxx>
// predefines
class SdrView;
/*************************************************************************
|*
|* Transform-Tab-Dialog
|*
\************************************************************************/
/** put this into the nAnchorTypes parameter of the SvxTransformTabDialog c'tor
to disable the size controls */
const sal_uInt16 SVX_OBJ_NORESIZE = 0x0100;
/** put this into the nAnchorTypes parameter of the SvxTransformTabDialog c'tor
to disable the protect controls */
const sal_uInt16 SVX_OBJ_NOPROTECT = 0x0200;
class SvxTransformTabDialog : public SfxTabDialog
{
private:
const SdrView* pView;
sal_uInt16 nAnchorCtrls;
Link aValidateLink;
virtual void PageCreated( sal_uInt16 nId, SfxTabPage &rPage );
public:
SvxTransformTabDialog( Window* pParent, const SfxItemSet* pAttr,
const SdrView* pView,
sal_uInt16 nAnchorTypes = 0);
~SvxTransformTabDialog();
//link for the Writer to validate positions
void SetValidateFramePosLink( const Link& rLink );
};
/*************************************************************************
|*
|* position and size tab page
|*
\************************************************************************/
class SvxPositionSizeTabPage : public SvxTabPage
{
using TabPage::ActivatePage;
using TabPage::DeactivatePage;
private:
// position
FixedLine maFlPosition;
FixedText maFtPosX;
MetricField maMtrPosX;
FixedText maFtPosY;
MetricField maMtrPosY;
FixedText maFtPosReference;
SvxRectCtl maCtlPos;
// size
FixedLine maFlSize;
FixedText maFtWidth;
MetricField maMtrWidth;
FixedText maFtHeight;
MetricField maMtrHeight;
CheckBox maCbxScale;
FixedText maFtSizeReference;
SvxRectCtl maCtlSize;
// protect
FixedLine maFlProtect;
TriStateBox maTsbPosProtect;
TriStateBox maTsbSizeProtect;
// adjust
FixedLine maFlAdjust;
TriStateBox maTsbAutoGrowWidth;
TriStateBox maTsbAutoGrowHeight;
FixedLine maFlDivider;
private:
const SfxItemSet& mrOutAttrs;
const SdrView* mpView;
// #i75273#
basegfx::B2DRange maRange;
basegfx::B2DRange maWorkRange;
basegfx::B2DPoint maAnchor;
SfxMapUnit mePoolUnit;
FieldUnit meDlgUnit;
MapUnit meMapUnit;
TriState mnProtectSizeState;
bool mbPageDisabled;
bool mbProtectDisabled;
bool mbSizeDisabled;
bool mbAdjustDisabled;
// frome size
// #i75273#
double mfOldWidth;
double mfOldHeight;
RECT_POINT meRP;
//------------------------------------
#if _SOLAR__PRIVATE
DECL_LINK( ChangePosProtectHdl, void * );
DECL_LINK( ChangeSizeProtectHdl, void * );
DECL_LINK( ChangePosXHdl, void * );
DECL_LINK( ChangePosYHdl, void * );
// DECL_LINK( SetAnchorHdl, ListBox * );
// DECL_LINK( SetOrientHdl, ListBox * );
void SetMinMaxPosition();
void GetTopLeftPosition(double& rfX, double& rfY, const basegfx::B2DRange& rRange);
#endif
#if _SOLAR__PRIVATE
DECL_LINK( ChangeWidthHdl, void * );
DECL_LINK( ChangeHeightHdl, void * );
DECL_LINK( ClickSizeProtectHdl, void * );
DECL_LINK( ClickAutoHdl, void * );
void SetMaxSize( Rectangle aRect );
Rectangle GetRect();
#endif
public:
SvxPositionSizeTabPage( Window* pParent, const SfxItemSet& rInAttrs );
static SfxTabPage* Create( Window*, const SfxItemSet& );
static sal_uInt16* GetRanges();
virtual sal_Bool FillItemSet( SfxItemSet& );
virtual void Reset( const SfxItemSet & );
virtual void ActivatePage( const SfxItemSet& rSet );
virtual int DeactivatePage( SfxItemSet* pSet );
virtual void PointChanged( Window* pWindow, RECT_POINT eRP );
void Construct();
void SetView( const SdrView* pSdrView ) { mpView = pSdrView; }
// void ShowAnchorCtrls(sal_uInt16 nAnchorCtrls); // Writer-spezifische Controls anzeigen
virtual void FillUserData();
void DisableResize();
void DisableProtect();
void UpdateControlStates();
};
/*************************************************************************
|*
|* Drehwinkel-Tab-Page
|*
\************************************************************************/
class SvxAngleTabPage : public SvxTabPage
{
using TabPage::ActivatePage;
using TabPage::DeactivatePage;
private:
FixedLine aFlPosition;
FixedText aFtPosX;
MetricField aMtrPosX;
FixedText aFtPosY;
MetricField aMtrPosY;
FixedText aFtPosPresets;
SvxRectCtl aCtlRect;
FixedLine aFlAngle;
FixedText aFtAngle;
MetricField aMtrAngle;
FixedText aFtAnglePresets;
SvxRectCtl aCtlAngle;
const SfxItemSet& rOutAttrs;
const SdrView* pView;
// #i75273#
basegfx::B2DRange maRange;
basegfx::B2DPoint maAnchor;
SfxMapUnit ePoolUnit;
FieldUnit eDlgUnit;
MapUnit eMapUnit;
//------------------------------------
#if _SOLAR__PRIVATE
DECL_LINK( ModifiedHdl, void * );
#endif
public:
SvxAngleTabPage( Window* pParent, const SfxItemSet& rInAttrs );
static SfxTabPage* Create( Window*, const SfxItemSet& );
static sal_uInt16* GetRanges();
virtual sal_Bool FillItemSet( SfxItemSet& );
virtual void Reset( const SfxItemSet & );
virtual void ActivatePage( const SfxItemSet& rSet );
virtual int DeactivatePage( SfxItemSet* pSet );
virtual void PointChanged( Window* pWindow, RECT_POINT eRP );
void Construct();
void SetView( const SdrView* pSdrView ) { pView = pSdrView; }
};
/*************************************************************************
|*
|* Schraegstellen/Eckenradius-Tab-Page
|*
\************************************************************************/
class SvxSlantTabPage : public SvxTabPage
{
using TabPage::ActivatePage;
using TabPage::DeactivatePage;
private:
FixedLine aFlRadius;
FixedText aFtRadius;
MetricField aMtrRadius;
//TriStateBox aTsbVertical;
FixedLine aFlAngle;
FixedText aFtAngle;
MetricField aMtrAngle;
//SvxRectCtl aCtlAngle;
const SfxItemSet& rOutAttrs;
const SdrView* pView;
// #i75273#
basegfx::B2DRange maRange;
SfxMapUnit ePoolUnit;
FieldUnit eDlgUnit;
MapUnit eMapUnit;
//------------------------------------
public:
SvxSlantTabPage( Window* pParent, const SfxItemSet& rInAttrs );
static SfxTabPage* Create( Window*, const SfxItemSet& );
static sal_uInt16* GetRanges();
virtual sal_Bool FillItemSet( SfxItemSet& );
virtual void Reset( const SfxItemSet & );
virtual void ActivatePage( const SfxItemSet& rSet );
virtual int DeactivatePage( SfxItemSet* pSet );
virtual void PointChanged( Window* pWindow, RECT_POINT eRP );
void Construct();
void SetView( const SdrView* pSdrView ) { pView = pSdrView; }
};
#endif // _SVX_TRANSFRM_HXX