LibreOffice Module cui (master)  1
textanim.cxx
Go to the documentation of this file.
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 
20 #include <textanim.hxx>
21 #include <textattr.hxx>
22 #include <svx/dlgutil.hxx>
23 #include <svx/svdmark.hxx>
24 #include <svx/svdview.hxx>
25 #include <svx/sdtaaitm.hxx>
26 #include <svx/sdtacitm.hxx>
27 #include <svx/sdtaiitm.hxx>
28 #include <svx/sdtayitm.hxx>
29 #include <svtools/unitconv.hxx>
30 
31 const sal_uInt16 SvxTextAnimationPage::pRanges[] =
32 {
35  0
36 };
37 
38 /*************************************************************************
39 |*
40 |* constructor of the tab dialog: adds pages to the dialog
41 |*
42 \************************************************************************/
43 
44 SvxTextTabDialog::SvxTextTabDialog(weld::Window* pParent, const SfxItemSet* pAttr, const SdrView* pSdrView)
45  : SfxTabDialogController(pParent, "cui/ui/textdialog.ui", "TextDialog", pAttr)
46  , pView(pSdrView)
47 {
48  AddTabPage("RID_SVXPAGE_TEXTATTR", SvxTextAttrPage::Create, nullptr);
49  AddTabPage("RID_SVXPAGE_TEXTANIMATION", SvxTextAnimationPage::Create, nullptr);
50 }
51 
52 /*************************************************************************
53 |*
54 |* PageCreated()
55 |*
56 \************************************************************************/
57 
58 void SvxTextTabDialog::PageCreated(const OString& rId, SfxTabPage &rPage)
59 {
60  if (rId == "RID_SVXPAGE_TEXTATTR")
61  {
62  const SdrMarkList& rMarkList = pView->GetMarkedObjectList();
63  bool bHasMarked = rMarkList.GetMarkCount() > 0;
64  SdrObjKind eKind = OBJ_NONE;
65  if (bHasMarked)
66  {
67  if (rMarkList.GetMarkCount() == 1)
68  {
69  const SdrObject* pObj = rMarkList.GetMark(0)->GetMarkedSdrObj();
70  eKind = static_cast<SdrObjKind>(pObj->GetObjIdentifier());
71  }
72  }
73  static_cast<SvxTextAttrPage&>(rPage).SetObjKind(eKind);
74  static_cast<SvxTextAttrPage&>(rPage).Construct();
75  }
76 }
77 
78 
79 /*************************************************************************
80 |*
81 |* Page
82 |*
83 \************************************************************************/
84 
86  : SfxTabPage(pPage, "cui/ui/textanimtabpage.ui", "TextAnimation", &rInAttrs)
87  , rOutAttrs(rInAttrs)
88  , eAniKind(SdrTextAniKind::NONE)
89  , m_aUpState(TRISTATE_INDET)
90  , m_aLeftState(TRISTATE_INDET)
91  , m_aRightState(TRISTATE_INDET)
92  , m_aDownState(TRISTATE_INDET)
93  , m_xLbEffect(m_xBuilder->weld_combo_box("LB_EFFECT"))
94  , m_xBoxDirection(m_xBuilder->weld_widget("boxDIRECTION"))
95  , m_xBtnUp(m_xBuilder->weld_toggle_button("BTN_UP"))
96  , m_xBtnLeft(m_xBuilder->weld_toggle_button("BTN_LEFT"))
97  , m_xBtnRight(m_xBuilder->weld_toggle_button("BTN_RIGHT"))
98  , m_xBtnDown(m_xBuilder->weld_toggle_button("BTN_DOWN"))
99  , m_xFlProperties(m_xBuilder->weld_frame("FL_PROPERTIES"))
100  , m_xTsbStartInside(m_xBuilder->weld_check_button("TSB_START_INSIDE"))
101  , m_xTsbStopInside(m_xBuilder->weld_check_button("TSB_STOP_INSIDE"))
102  , m_xBoxCount(m_xBuilder->weld_widget("boxCOUNT"))
103  , m_xTsbEndless(m_xBuilder->weld_check_button("TSB_ENDLESS"))
104  , m_xNumFldCount(m_xBuilder->weld_spin_button("NUM_FLD_COUNT"))
105  , m_xTsbPixel(m_xBuilder->weld_check_button("TSB_PIXEL"))
106  , m_xMtrFldAmount(m_xBuilder->weld_metric_spin_button("MTR_FLD_AMOUNT", FieldUnit::PIXEL))
107  , m_xTsbAuto(m_xBuilder->weld_check_button("TSB_AUTO"))
108  , m_xMtrFldDelay(m_xBuilder->weld_metric_spin_button("MTR_FLD_DELAY", FieldUnit::MILLISECOND))
109 {
110  eFUnit = GetModuleFieldUnit( rInAttrs );
111  SfxItemPool* pPool = rOutAttrs.GetPool();
112  DBG_ASSERT( pPool, "Where is the pool?" );
114 
115  m_xLbEffect->connect_changed( LINK( this, SvxTextAnimationPage, SelectEffectHdl_Impl ) );
116  m_xTsbEndless->connect_clicked( LINK( this, SvxTextAnimationPage, ClickEndlessHdl_Impl ) );
117  m_xTsbAuto->connect_clicked( LINK( this, SvxTextAnimationPage, ClickAutoHdl_Impl ) );
118  m_xTsbPixel->connect_clicked( LINK( this, SvxTextAnimationPage, ClickPixelHdl_Impl ) );
119 
120  Link<weld::Button&,void> aLink( LINK( this, SvxTextAnimationPage, ClickDirectionHdl_Impl ) );
121  m_xBtnUp->connect_clicked( aLink );
122  m_xBtnLeft->connect_clicked( aLink );
123  m_xBtnRight->connect_clicked( aLink );
124  m_xBtnDown->connect_clicked( aLink );
125 }
126 
128 {
129 }
130 
131 /*************************************************************************
132 |*
133 |* reads the passed item set
134 |*
135 \************************************************************************/
136 
138 {
139  const SfxItemPool* pPool = rAttrs->GetPool();
140 
141  // animation type
142  const SfxPoolItem* pItem = GetItem( *rAttrs, SDRATTR_TEXT_ANIKIND );
143 
144  if( !pItem )
145  pItem = &pPool->GetDefaultItem( SDRATTR_TEXT_ANIKIND );
146 
147  eAniKind = static_cast<const SdrTextAniKindItem*>(pItem)->GetValue();
148  m_xLbEffect->set_active(sal::static_int_cast<sal_Int32>(eAniKind));
149  m_xLbEffect->save_value();
150 
151  // animation direction
152  pItem = GetItem( *rAttrs, SDRATTR_TEXT_ANIDIRECTION );
153  if( !pItem )
154  pItem = &pPool->GetDefaultItem( SDRATTR_TEXT_ANIDIRECTION );
155 
156  SelectDirection(static_cast<const SdrTextAniDirectionItem*>(pItem)->GetValue());
157  m_aUpState = m_xBtnUp->get_state();
158  m_aLeftState = m_xBtnLeft->get_state();
159  m_aRightState = m_xBtnRight->get_state();
160  m_aDownState = m_xBtnDown->get_state();
161 
162  // Start inside
163  pItem = GetItem( *rAttrs, SDRATTR_TEXT_ANISTARTINSIDE );
164  if( !pItem )
165  pItem = &pPool->GetDefaultItem( SDRATTR_TEXT_ANISTARTINSIDE );
166 
167  if (static_cast<const SdrTextAniStartInsideItem*>(pItem)->GetValue())
168  m_xTsbStartInside->set_state(TRISTATE_TRUE);
169  else
170  m_xTsbStartInside->set_state(TRISTATE_FALSE);
171  m_xTsbStartInside->save_state();
172 
173  // Stop inside
174  pItem = GetItem( *rAttrs, SDRATTR_TEXT_ANISTOPINSIDE );
175  if( !pItem )
176  pItem = &pPool->GetDefaultItem( SDRATTR_TEXT_ANISTOPINSIDE );
177 
178  if (static_cast<const SdrTextAniStopInsideItem*>(pItem)->GetValue())
179  m_xTsbStopInside->set_state(TRISTATE_TRUE);
180  else
181  m_xTsbStopInside->set_state(TRISTATE_FALSE);
182  m_xTsbStopInside->save_state();
183 
184  // quantity
185  pItem = GetItem( *rAttrs, SDRATTR_TEXT_ANICOUNT );
186  if( !pItem )
187  pItem = &pPool->GetDefaultItem( SDRATTR_TEXT_ANICOUNT );
188 
189  long nValue = static_cast<long>(static_cast<const SdrTextAniCountItem*>(pItem)->GetValue());
190  m_xNumFldCount->set_value(nValue);
191  if (nValue == 0)
192  {
193  if (eAniKind == SdrTextAniKind::Slide)
194  {
195  m_xTsbEndless->set_state(TRISTATE_FALSE);
196  m_xTsbEndless->set_sensitive(false);
197  }
198  else
199  {
200  m_xTsbEndless->set_state(TRISTATE_TRUE);
201  m_xNumFldCount->set_text("");
202  }
203  }
204  else
205  m_xTsbEndless->set_state(TRISTATE_FALSE);
206  m_xTsbEndless->save_state();
207  m_xNumFldCount->save_value();
208 
209  // delay
210  pItem = GetItem( *rAttrs, SDRATTR_TEXT_ANIDELAY );
211  if( !pItem )
212  pItem = &pPool->GetDefaultItem( SDRATTR_TEXT_ANIDELAY );
213 
214  nValue = static_cast<long>(static_cast<const SdrTextAniDelayItem*>(pItem)->GetValue());
215  m_xMtrFldDelay->set_value(nValue, FieldUnit::NONE);
216  if (nValue == 0)
217  {
218  m_xTsbAuto->set_state(TRISTATE_TRUE);
219  m_xMtrFldDelay->set_text("");
220  }
221  else
222  m_xTsbAuto->set_state(TRISTATE_FALSE);
223  m_xTsbAuto->save_state();
224  m_xMtrFldDelay->save_value();
225 
226  // step size
227  pItem = GetItem( *rAttrs, SDRATTR_TEXT_ANIAMOUNT );
228  if( !pItem )
229  pItem = &pPool->GetDefaultItem( SDRATTR_TEXT_ANIAMOUNT );
230 
231  nValue = static_cast<long>(static_cast<const SdrTextAniAmountItem*>(pItem)->GetValue());
232  if (nValue <= 0)
233  {
234  m_xTsbPixel->set_state(TRISTATE_TRUE);
235  nValue = -nValue;
236  if (nValue == 0)
237  nValue++;
238  m_xMtrFldAmount->set_unit(FieldUnit::CUSTOM);
239  m_xMtrFldAmount->set_digits(0);
240 
241  m_xMtrFldAmount->set_increments(1, 10, FieldUnit::NONE);
242  m_xMtrFldAmount->set_range(1, 100, FieldUnit::NONE);
243  m_xMtrFldAmount->set_value(nValue, FieldUnit::NONE);
244  }
245  else
246  {
247  m_xTsbPixel->set_state(TRISTATE_FALSE);
248  m_xMtrFldAmount->set_unit(eFUnit);
249  m_xMtrFldAmount->set_digits(2);
250 
251  m_xMtrFldAmount->set_increments(10, 100, FieldUnit::NONE);
252  m_xMtrFldAmount->set_range(1, 10000, FieldUnit::NONE);
253 
255  }
256  m_xTsbPixel->save_state();
257  m_xMtrFldAmount->save_value();
258 
259  SelectEffectHdl_Impl(*m_xLbEffect);
260  ClickEndlessHdl_Impl(*m_xTsbEndless);
261  ClickAutoHdl_Impl(*m_xTsbAuto);
262 }
263 
264 /*************************************************************************
265 |*
266 |* fills the passed item set with dialog box attributes
267 |*
268 \************************************************************************/
269 
271 {
272  bool bModified = false;
273  TriState eState;
274 
275  // animation type
276  int nPos = m_xLbEffect->get_active();
277  if( nPos != -1 &&
278  m_xLbEffect->get_value_changed_from_saved() )
279  {
280  rAttrs->Put( SdrTextAniKindItem( static_cast<SdrTextAniKind>(nPos) ) );
281  bModified = true;
282  }
283 
284  // animation direction
285  if (m_aUpState != m_xBtnUp->get_state() ||
286  m_aLeftState != m_xBtnLeft->get_state() ||
287  m_aRightState != m_xBtnRight->get_state() ||
288  m_aDownState != m_xBtnDown->get_state())
289  {
291  rAttrs->Put( SdrTextAniDirectionItem( eValue ) );
292  bModified = true;
293  }
294 
295  // Start inside
296  eState = m_xTsbStartInside->get_state();
297  if (m_xTsbStartInside->get_state_changed_from_saved())
298  {
299  rAttrs->Put( SdrTextAniStartInsideItem( TRISTATE_TRUE == eState ) );
300  bModified = true;
301  }
302 
303  // Stop inside
304  eState = m_xTsbStopInside->get_state();
305  if (m_xTsbStopInside->get_state_changed_from_saved())
306  {
307  rAttrs->Put( SdrTextAniStopInsideItem( TRISTATE_TRUE == eState ) );
308  bModified = true;
309  }
310 
311  // quantity
312  eState = m_xTsbEndless->get_state();
313  if (m_xTsbEndless->get_state_changed_from_saved() ||
314  m_xNumFldCount->get_value_changed_from_saved())
315  {
316  sal_Int64 nValue = 0;
317  if( eState == TRISTATE_TRUE /*#89844#*/ && m_xTsbEndless->get_sensitive())
318  bModified = true;
319  else
320  {
321  if( m_xNumFldCount->get_value_changed_from_saved() )
322  {
323  nValue = m_xNumFldCount->get_value();
324  bModified = true;
325  }
326  }
327  if( bModified )
328  rAttrs->Put( SdrTextAniCountItem( static_cast<sal_uInt16>(nValue) ) );
329  }
330 
331  // delay
332  eState = m_xTsbAuto->get_state();
333  if (m_xTsbAuto->get_state_changed_from_saved() ||
334  m_xMtrFldDelay->get_value_changed_from_saved())
335  {
336  sal_Int64 nValue = 0;
337  if( eState == TRISTATE_TRUE )
338  bModified = true;
339  else
340  {
341  if( m_xMtrFldDelay->get_value_changed_from_saved() )
342  {
343  nValue = m_xMtrFldDelay->get_value(FieldUnit::NONE);
344  bModified = true;
345  }
346  }
347  if( bModified )
348  rAttrs->Put( SdrTextAniDelayItem( static_cast<sal_uInt16>(nValue) ) );
349  }
350 
351  // step size
352  eState = m_xTsbPixel->get_state();
353  if (m_xTsbPixel->get_state_changed_from_saved() ||
354  m_xMtrFldAmount->get_value_changed_from_saved())
355  {
356  sal_Int64 nValue = 0;
357  if( eState == TRISTATE_TRUE )
358  {
359  nValue = m_xMtrFldAmount->get_value(FieldUnit::NONE);
360  nValue = -nValue;
361  }
362  else
363  {
364  nValue = GetCoreValue( *m_xMtrFldAmount, eUnit );
365  }
366  rAttrs->Put( SdrTextAniAmountItem( static_cast<sal_Int16>(nValue) ) );
367 
368  bModified = true;
369  }
370 
371  return bModified;
372 }
373 
374 /*************************************************************************
375 |*
376 |* creates the page
377 |*
378 \************************************************************************/
379 
381 {
382  return VclPtr<SvxTextAnimationPage>::Create(pParent, *rAttrs);
383 }
384 
386 {
387  int nPos = m_xLbEffect->get_active();
388  if (nPos != -1)
389  {
390  eAniKind = static_cast<SdrTextAniKind>(nPos);
391  switch( eAniKind )
392  {
393  case SdrTextAniKind::NONE:
394  {
395  m_xBoxDirection->set_sensitive(false);
396  m_xFlProperties->set_sensitive(false);
397  }
398  break;
399 
400  case SdrTextAniKind::Blink:
401  case SdrTextAniKind::Scroll:
402  case SdrTextAniKind::Alternate:
403  case SdrTextAniKind::Slide:
404  {
405  m_xFlProperties->set_sensitive(true);
406  if( eAniKind == SdrTextAniKind::Slide )
407  {
408  m_xTsbStartInside->set_sensitive(false);
409  m_xTsbStopInside->set_sensitive(false);
410  m_xTsbEndless->set_sensitive(false);
411  m_xNumFldCount->set_sensitive(true);
412  m_xNumFldCount->set_value(m_xNumFldCount->get_value());
413  }
414  else
415  {
416  m_xTsbStartInside->set_sensitive(true);
417  m_xTsbStopInside->set_sensitive(true);
418  m_xTsbEndless->set_sensitive(true);
419  ClickEndlessHdl_Impl(*m_xTsbEndless);
420  }
421 
422  m_xTsbAuto->set_sensitive(true);
423  ClickAutoHdl_Impl(*m_xTsbAuto);
424 
425  if( eAniKind == SdrTextAniKind::Blink )
426  {
427  m_xBoxDirection->set_sensitive(false);
428  m_xBoxCount->set_sensitive(false);
429  }
430  else
431  {
432  m_xBoxDirection->set_sensitive(true);
433  m_xBoxCount->set_sensitive(true);
434  }
435  }
436  break;
437  }
438 
439  }
440 }
441 
442 IMPL_LINK_NOARG(SvxTextAnimationPage, ClickEndlessHdl_Impl, weld::Button&, void)
443 {
444  if( eAniKind != SdrTextAniKind::Slide )
445  {
446  TriState eState = m_xTsbEndless->get_state();
447  if( eState != TRISTATE_FALSE )
448  {
449  m_xNumFldCount->set_sensitive(false);
450  m_xNumFldCount->set_text("");
451  }
452  else
453  {
454  m_xNumFldCount->set_sensitive(true);
455  m_xNumFldCount->set_value(m_xNumFldCount->get_value());
456  }
457  }
458 }
459 
461 {
462  TriState eState = m_xTsbAuto->get_state();
463  if( eState != TRISTATE_FALSE )
464  {
465  m_xMtrFldDelay->set_sensitive(false);
466  m_xMtrFldDelay->set_text("");
467  }
468  else
469  {
470  m_xMtrFldDelay->set_sensitive(true);
471  m_xMtrFldDelay->set_value(m_xMtrFldDelay->get_value(FieldUnit::NONE), FieldUnit::NONE); //to-do
472  }
473 }
474 
476 {
477  TriState eState = m_xTsbPixel->get_state();
478  if (eState == TRISTATE_TRUE)
479  {
480  int nValue = m_xMtrFldAmount->get_value(FieldUnit::NONE) / 10;
481  m_xMtrFldAmount->set_sensitive(true);
482  m_xMtrFldAmount->set_unit(FieldUnit::CUSTOM);
483  m_xMtrFldAmount->set_digits(0);
484 
485  m_xMtrFldAmount->set_increments(1, 10, FieldUnit::NONE);
486  m_xMtrFldAmount->set_range(1, 100, FieldUnit::NONE);
487 
488  m_xMtrFldAmount->set_value(nValue, FieldUnit::NONE);
489  }
490  else if( eState == TRISTATE_FALSE )
491  {
492  int nValue = m_xMtrFldAmount->get_value(FieldUnit::NONE) * 10;
493  m_xMtrFldAmount->set_sensitive(true);
494  m_xMtrFldAmount->set_unit(eFUnit);
495  m_xMtrFldAmount->set_digits(2);
496 
497  m_xMtrFldAmount->set_increments(10, 100, FieldUnit::NONE);
498  m_xMtrFldAmount->set_range(1, 10000, FieldUnit::NONE);
499 
500  m_xMtrFldAmount->set_value(nValue, FieldUnit::NONE);
501  }
502 }
503 
504 IMPL_LINK(SvxTextAnimationPage, ClickDirectionHdl_Impl, weld::Button&, rBtn, void)
505 {
506  m_xBtnUp->set_active(&rBtn == m_xBtnUp.get());
507  m_xBtnLeft->set_active(&rBtn == m_xBtnLeft.get());
508  m_xBtnRight->set_active(&rBtn == m_xBtnRight.get());
509  m_xBtnDown->set_active(&rBtn == m_xBtnDown.get());
510 }
511 
513 {
514  m_xBtnUp->set_active( nValue == SdrTextAniDirection::Up );
515  m_xBtnLeft->set_active( nValue == SdrTextAniDirection::Left );
516  m_xBtnRight->set_active( nValue == SdrTextAniDirection::Right );
517  m_xBtnDown->set_active( nValue == SdrTextAniDirection::Down );
518 }
519 
521 {
522  SdrTextAniDirection nValue = SdrTextAniDirection::Left;
523 
524  if( m_xBtnUp->get_active() )
525  nValue = SdrTextAniDirection::Up;
526  else if( m_xBtnLeft->get_active() )
527  nValue = SdrTextAniDirection::Left;
528  else if( m_xBtnRight->get_active() )
529  nValue = SdrTextAniDirection::Right;
530  else if( m_xBtnDown->get_active() )
531  nValue = SdrTextAniDirection::Down;
532 
533  return static_cast<sal_uInt16>(nValue);
534 }
535 
536 
537 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
FieldUnit
size_t GetMarkCount() const
virtual ~SvxTextAnimationPage() override
Definition: textanim.cxx:127
std::unique_ptr< weld::CheckButton > m_xTsbPixel
Definition: textanim.hxx:65
std::string GetValue
std::unique_ptr< weld::ComboBox > m_xLbEffect
Definition: textanim.hxx:50
static VclPtr< SfxTabPage > Create(TabPageParent, const SfxItemSet *)
Definition: textanim.cxx:380
static const sal_uInt16 pRanges[]
Definition: textanim.hxx:38
SdrTextAniKind eAniKind
Definition: textanim.hxx:41
std::unique_ptr< weld::SpinButton > m_xNumFldCount
Definition: textanim.hxx:63
SdrMark * GetMark(size_t nNum) const
TRISTATE_TRUE
static const SfxPoolItem * GetItem(const SfxItemSet &rSet, sal_uInt16 nSlot, bool bDeep=true)
virtual void PageCreated(const OString &rId, SfxTabPage &rPage) override
Definition: textanim.cxx:58
SdrTextAniKind
FieldUnit GetModuleFieldUnit(const SfxItemSet &rSet)
virtual MapUnit GetMetric(sal_uInt16 nWhich) const
virtual bool FillItemSet(SfxItemSet *) override
Definition: textanim.cxx:270
#define SDRATTR_TEXT_ANIKIND
std::unique_ptr< weld::ToggleButton > m_xBtnRight
Definition: textanim.hxx:54
const SdrView * pView
Definition: textanim.hxx:99
TRISTATE_INDET
void SelectDirection(SdrTextAniDirection nValue)
Definition: textanim.cxx:512
SdrObject * GetMarkedSdrObj() const
#define SDRATTR_TEXT_ANICOUNT
TriState m_aLeftState
Definition: textanim.hxx:46
NONE
virtual void Reset(const SfxItemSet *) override
Definition: textanim.cxx:137
std::unique_ptr< weld::MetricSpinButton > m_xMtrFldAmount
Definition: textanim.hxx:66
#define DBG_ASSERT(sCon, aError)
virtual sal_uInt16 GetObjIdentifier() const
TriState m_aRightState
Definition: textanim.hxx:47
OBJ_NONE
TRISTATE_FALSE
const SdrMarkList & GetMarkedObjectList() const
int GetCoreValue(const weld::MetricSpinButton &rField, MapUnit eUnit)
SvxTextTabDialog(weld::Window *pParent, const SfxItemSet *pAttr, const SdrView *pView)
Definition: textanim.cxx:44
std::unique_ptr< weld::CheckButton > m_xTsbStopInside
Definition: textanim.hxx:59
#define SDRATTR_TEXT_ANIAMOUNT
std::unique_ptr< weld::MetricSpinButton > m_xMtrFldDelay
Definition: textanim.hxx:69
sal_uInt16 GetSelectedDirection() const
Definition: textanim.cxx:520
void SetMetricValue(weld::MetricSpinButton &rField, int nCoreValue, MapUnit eUnit)
const SfxPoolItem & GetDefaultItem(sal_uInt16 nWhich) const
SfxItemPool * GetPool() const
#define SDRATTR_TEXT_ANIDELAY
std::unique_ptr< weld::ToggleButton > m_xBtnUp
Definition: textanim.hxx:52
std::unique_ptr< weld::CheckButton > m_xTsbEndless
Definition: textanim.hxx:62
TriState m_aDownState
Definition: textanim.hxx:48
#define SDRATTR_TEXT_ANIDIRECTION
#define SDRATTR_TEXT_ANISTOPINSIDE
#define SDRATTR_TEXT_ANISTARTINSIDE
const SfxPoolItem * Put(const SfxPoolItem &rItem, sal_uInt16 nWhich)
SdrObjKind
static VclPtr< SfxTabPage > Create(TabPageParent, const SfxItemSet *)
Definition: textattr.cxx:477
std::unique_ptr< weld::ToggleButton > m_xBtnDown
Definition: textanim.hxx:55
SvxTextAnimationPage(TabPageParent pPage, const SfxItemSet &rInAttrs)
Definition: textanim.cxx:85
const SfxItemSet & rOutAttrs
Definition: textanim.hxx:40
IMPL_LINK(SvxTextAnimationPage, ClickDirectionHdl_Impl, weld::Button &, rBtn, void)
Definition: textanim.cxx:504
static VclPtr< reference_type > Create(Arg &&...arg)
void AddTabPage(const OString &rName, CreateTabPage pCreateFunc, GetTabPageRanges pRangesFunc)
std::unique_ptr< weld::ToggleButton > m_xBtnLeft
Definition: textanim.hxx:53
SdrTextAniDirection
std::unique_ptr< weld::CheckButton > m_xTsbStartInside
Definition: textanim.hxx:58
TriState
sal_Int32 nPos
#define SDRATTR_TEXT_LEFTDIST
IMPL_LINK_NOARG(SvxTextAnimationPage, SelectEffectHdl_Impl, weld::ComboBox &, void)
Definition: textanim.cxx:385
std::unique_ptr< weld::CheckButton > m_xTsbAuto
Definition: textanim.hxx:68