Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 : #ifndef INCLUDED_CUI_SOURCE_INC_TRANSFRM_HXX
20 : #define INCLUDED_CUI_SOURCE_INC_TRANSFRM_HXX
21 :
22 : #include <svx/dlgctrl.hxx>
23 : #include <svx/dialcontrol.hxx>
24 :
25 : #include <vcl/fixed.hxx>
26 :
27 : #include <basegfx/range/b2drange.hxx>
28 :
29 : // predefines
30 : class SdrView;
31 :
32 : /*************************************************************************
33 : |*
34 : |* Transform-Tab-Dialog
35 : |*
36 : \************************************************************************/
37 :
38 : /** put this into the nAnchorTypes parameter of the SvxTransformTabDialog c'tor
39 : to disable the size controls */
40 : const sal_uInt16 SVX_OBJ_NORESIZE = 0x0100;
41 :
42 : /** put this into the nAnchorTypes parameter of the SvxTransformTabDialog c'tor
43 : to disable the protect controls */
44 : const sal_uInt16 SVX_OBJ_NOPROTECT = 0x0200;
45 :
46 : class SvxTransformTabDialog : public SfxTabDialog
47 : {
48 : sal_uInt16 nPosSize;
49 : sal_uInt16 nSWPosSize;
50 : sal_uInt16 nRotation;
51 : sal_uInt16 nSlant;
52 : private:
53 : const SdrView* pView;
54 :
55 : sal_uInt16 nAnchorCtrls;
56 : Link aValidateLink;
57 :
58 : virtual void PageCreated( sal_uInt16 nId, SfxTabPage &rPage ) SAL_OVERRIDE;
59 :
60 : public:
61 :
62 : SvxTransformTabDialog( vcl::Window* pParent, const SfxItemSet* pAttr,
63 : const SdrView* pView,
64 : sal_uInt16 nAnchorTypes = 0);
65 : virtual ~SvxTransformTabDialog();
66 :
67 : //link for the Writer to validate positions
68 : void SetValidateFramePosLink( const Link& rLink );
69 : };
70 :
71 : /*************************************************************************
72 : |*
73 : |* position and size tab page
74 : |*
75 : \************************************************************************/
76 :
77 0 : class SvxPositionSizeTabPage : public SvxTabPage
78 : {
79 : using TabPage::ActivatePage;
80 : using TabPage::DeactivatePage;
81 :
82 : private:
83 : // position
84 : VclFrame* m_pFlPosition;
85 : MetricField* m_pMtrPosX;
86 : MetricField* m_pMtrPosY;
87 : SvxRectCtl* m_pCtlPos;
88 :
89 : // size
90 : VclFrame* m_pFlSize;
91 : FixedText* m_pFtWidth;
92 : MetricField* m_pMtrWidth;
93 : FixedText* m_pFtHeight;
94 : MetricField* m_pMtrHeight;
95 : CheckBox* m_pCbxScale;
96 : SvxRectCtl* m_pCtlSize;
97 :
98 : // protect
99 : VclFrame* m_pFlProtect;
100 : TriStateBox* m_pTsbPosProtect;
101 : TriStateBox* m_pTsbSizeProtect;
102 :
103 : // adjust
104 : VclFrame* m_pFlAdjust;
105 : TriStateBox* m_pTsbAutoGrowWidth;
106 : TriStateBox* m_pTsbAutoGrowHeight;
107 :
108 : private:
109 : const SfxItemSet& mrOutAttrs;
110 :
111 : const SdrView* mpView;
112 :
113 : // #i75273#
114 : basegfx::B2DRange maRange;
115 : basegfx::B2DRange maWorkRange;
116 : basegfx::B2DPoint maAnchor;
117 :
118 : SfxMapUnit mePoolUnit;
119 : FieldUnit meDlgUnit;
120 : MapUnit meMapUnit;
121 : TriState mnProtectSizeState;
122 : bool mbPageDisabled;
123 : bool mbProtectDisabled;
124 : bool mbSizeDisabled;
125 : bool mbAdjustDisabled;
126 :
127 : // from size
128 : // #i75273#
129 : double mfOldWidth;
130 : double mfOldHeight;
131 : RECT_POINT meRP;
132 :
133 :
134 : DECL_LINK( ChangePosProtectHdl, void * );
135 : DECL_LINK( ChangeSizeProtectHdl, void * );
136 :
137 : void SetMinMaxPosition();
138 : void GetTopLeftPosition(double& rfX, double& rfY, const basegfx::B2DRange& rRange);
139 :
140 : DECL_LINK( ChangeWidthHdl, void * );
141 : DECL_LINK( ChangeHeightHdl, void * );
142 : DECL_LINK( ClickSizeProtectHdl, void * );
143 : DECL_LINK( ClickAutoHdl, void * );
144 :
145 : void SetMaxSize( Rectangle aRect );
146 :
147 : public:
148 : SvxPositionSizeTabPage( vcl::Window* pParent, const SfxItemSet& rInAttrs );
149 :
150 : static SfxTabPage* Create( vcl::Window*, const SfxItemSet* );
151 : static const sal_uInt16* GetRanges();
152 :
153 : virtual bool FillItemSet( SfxItemSet* ) SAL_OVERRIDE;
154 : virtual void Reset( const SfxItemSet * ) SAL_OVERRIDE;
155 :
156 : virtual void ActivatePage( const SfxItemSet& rSet ) SAL_OVERRIDE;
157 : virtual int DeactivatePage( SfxItemSet* pSet ) SAL_OVERRIDE;
158 :
159 : virtual void PointChanged( vcl::Window* pWindow, RECT_POINT eRP ) SAL_OVERRIDE;
160 :
161 : void Construct();
162 0 : void SetView( const SdrView* pSdrView ) { mpView = pSdrView; }
163 :
164 : virtual void FillUserData() SAL_OVERRIDE;
165 :
166 : void DisableResize();
167 : void DisableProtect();
168 :
169 : void UpdateControlStates();
170 : };
171 :
172 : /*************************************************************************
173 : |*
174 : |* rotation angle tab page
175 : |*
176 : \************************************************************************/
177 0 : class SvxAngleTabPage : public SvxTabPage
178 : {
179 : using TabPage::ActivatePage;
180 : using TabPage::DeactivatePage;
181 :
182 : private:
183 : VclFrame* m_pFlPosition;
184 : MetricField* m_pMtrPosX;
185 : MetricField* m_pMtrPosY;
186 : SvxRectCtl* m_pCtlRect;
187 :
188 : VclFrame* m_pFlAngle;
189 : NumericField* m_pNfAngle;
190 : svx::DialControl* m_pCtlAngle;
191 :
192 : const SfxItemSet& rOutAttrs;
193 : const SdrView* pView;
194 :
195 : // #i75273#
196 : basegfx::B2DRange maRange;
197 : basegfx::B2DPoint maAnchor;
198 :
199 : SfxMapUnit ePoolUnit;
200 : FieldUnit eDlgUnit;
201 :
202 : public:
203 : SvxAngleTabPage( vcl::Window* pParent, const SfxItemSet& rInAttrs );
204 :
205 : static SfxTabPage* Create( vcl::Window*, const SfxItemSet* );
206 : static const sal_uInt16* GetRanges();
207 :
208 : virtual bool FillItemSet( SfxItemSet* ) SAL_OVERRIDE;
209 : virtual void Reset( const SfxItemSet * ) SAL_OVERRIDE;
210 :
211 : virtual void ActivatePage( const SfxItemSet& rSet ) SAL_OVERRIDE;
212 : virtual int DeactivatePage( SfxItemSet* pSet ) SAL_OVERRIDE;
213 :
214 : virtual void PointChanged( vcl::Window* pWindow, RECT_POINT eRP ) SAL_OVERRIDE;
215 :
216 : void Construct();
217 0 : void SetView( const SdrView* pSdrView ) { pView = pSdrView; }
218 : };
219 :
220 : /*************************************************************************
221 : |*
222 : |* slant/corner radius tab page
223 : |*
224 : \************************************************************************/
225 0 : class SvxSlantTabPage : public SvxTabPage
226 : {
227 : using TabPage::ActivatePage;
228 : using TabPage::DeactivatePage;
229 :
230 : private:
231 : VclFrame* m_pFlRadius;
232 : MetricField* m_pMtrRadius;
233 : VclFrame* m_pFlAngle;
234 : MetricField* m_pMtrAngle;
235 :
236 : const SfxItemSet& rOutAttrs;
237 :
238 : const SdrView* pView;
239 :
240 : // #i75273#
241 : basegfx::B2DRange maRange;
242 :
243 : SfxMapUnit ePoolUnit;
244 : FieldUnit eDlgUnit;
245 :
246 : public:
247 : SvxSlantTabPage( vcl::Window* pParent, const SfxItemSet& rInAttrs );
248 :
249 : static SfxTabPage* Create( vcl::Window*, const SfxItemSet* );
250 : static const sal_uInt16* GetRanges();
251 :
252 : virtual bool FillItemSet( SfxItemSet* ) SAL_OVERRIDE;
253 : virtual void Reset( const SfxItemSet * ) SAL_OVERRIDE;
254 :
255 : virtual void ActivatePage( const SfxItemSet& rSet ) SAL_OVERRIDE;
256 : virtual int DeactivatePage( SfxItemSet* pSet ) SAL_OVERRIDE;
257 :
258 : virtual void PointChanged( vcl::Window* pWindow, RECT_POINT eRP ) SAL_OVERRIDE;
259 :
260 : void Construct();
261 0 : void SetView( const SdrView* pSdrView ) { pView = pSdrView; }
262 : };
263 :
264 :
265 :
266 : #endif // INCLUDED_CUI_SOURCE_INC_TRANSFRM_HXX
267 :
268 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|