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  return;
62 
63  SdrObjKind eKind = OBJ_NONE;
64  if (pView)
65  {
66  const SdrMarkList& rMarkList = pView->GetMarkedObjectList();
67  bool bHasMarked = rMarkList.GetMarkCount() > 0;
68  if (bHasMarked)
69  {
70  if (rMarkList.GetMarkCount() == 1)
71  {
72  const SdrObject* pObj = rMarkList.GetMark(0)->GetMarkedSdrObj();
73  eKind = static_cast<SdrObjKind>(pObj->GetObjIdentifier());
74  }
75  }
76  }
77  static_cast<SvxTextAttrPage&>(rPage).SetObjKind(eKind);
78  static_cast<SvxTextAttrPage&>(rPage).Construct();
79 }
80 
81 /*************************************************************************
82 |*
83 |* Page
84 |*
85 \************************************************************************/
87  : SfxTabPage(pPage, pController, "cui/ui/textanimtabpage.ui", "TextAnimation", &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 = rInAttrs.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 
380 std::unique_ptr<SfxTabPage> SvxTextAnimationPage::Create(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet* rAttrs)
381 {
382  return std::make_unique<SvxTextAnimationPage>(pPage, pController, *rAttrs);
383 }
384 
386 {
387  int nPos = m_xLbEffect->get_active();
388  if (nPos == -1)
389  return;
390 
391  eAniKind = static_cast<SdrTextAniKind>(nPos);
392  switch( eAniKind )
393  {
394  case SdrTextAniKind::NONE:
395  {
396  m_xBoxDirection->set_sensitive(false);
397  m_xFlProperties->set_sensitive(false);
398  }
399  break;
400 
401  case SdrTextAniKind::Blink:
402  case SdrTextAniKind::Scroll:
403  case SdrTextAniKind::Alternate:
404  case SdrTextAniKind::Slide:
405  {
406  m_xFlProperties->set_sensitive(true);
407  if( eAniKind == SdrTextAniKind::Slide )
408  {
409  m_xTsbStartInside->set_sensitive(false);
410  m_xTsbStopInside->set_sensitive(false);
411  m_xTsbEndless->set_sensitive(false);
412  m_xNumFldCount->set_sensitive(true);
413  m_xNumFldCount->set_value(m_xNumFldCount->get_value());
414  }
415  else
416  {
417  m_xTsbStartInside->set_sensitive(true);
418  m_xTsbStopInside->set_sensitive(true);
419  m_xTsbEndless->set_sensitive(true);
420  ClickEndlessHdl_Impl(*m_xTsbEndless);
421  }
422 
423  m_xTsbAuto->set_sensitive(true);
424  ClickAutoHdl_Impl(*m_xTsbAuto);
425 
426  if( eAniKind == SdrTextAniKind::Blink )
427  {
428  m_xBoxDirection->set_sensitive(false);
429  m_xBoxCount->set_sensitive(false);
430  }
431  else
432  {
433  m_xBoxDirection->set_sensitive(true);
434  m_xBoxCount->set_sensitive(true);
435  }
436  }
437  break;
438  }
439 }
440 
441 IMPL_LINK_NOARG(SvxTextAnimationPage, ClickEndlessHdl_Impl, weld::Button&, void)
442 {
443  if( eAniKind == SdrTextAniKind::Slide )
444  return;
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 
460 {
461  TriState eState = m_xTsbAuto->get_state();
462  if( eState != TRISTATE_FALSE )
463  {
464  m_xMtrFldDelay->set_sensitive(false);
465  m_xMtrFldDelay->set_text("");
466  }
467  else
468  {
469  m_xMtrFldDelay->set_sensitive(true);
470  m_xMtrFldDelay->set_value(m_xMtrFldDelay->get_value(FieldUnit::NONE), FieldUnit::NONE); //to-do
471  }
472 }
473 
475 {
476  TriState eState = m_xTsbPixel->get_state();
477  if (eState == TRISTATE_TRUE)
478  {
479  int nValue = m_xMtrFldAmount->get_value(FieldUnit::NONE) / 10;
480  m_xMtrFldAmount->set_sensitive(true);
481  m_xMtrFldAmount->set_unit(FieldUnit::CUSTOM);
482  m_xMtrFldAmount->set_digits(0);
483 
484  m_xMtrFldAmount->set_increments(1, 10, FieldUnit::NONE);
485  m_xMtrFldAmount->set_range(1, 100, FieldUnit::NONE);
486 
487  m_xMtrFldAmount->set_value(nValue, FieldUnit::NONE);
488  }
489  else if( eState == TRISTATE_FALSE )
490  {
491  int nValue = m_xMtrFldAmount->get_value(FieldUnit::NONE) * 10;
492  m_xMtrFldAmount->set_sensitive(true);
493  m_xMtrFldAmount->set_unit(eFUnit);
494  m_xMtrFldAmount->set_digits(2);
495 
496  m_xMtrFldAmount->set_increments(10, 100, FieldUnit::NONE);
497  m_xMtrFldAmount->set_range(1, 10000, FieldUnit::NONE);
498 
499  m_xMtrFldAmount->set_value(nValue, FieldUnit::NONE);
500  }
501 }
502 
503 IMPL_LINK(SvxTextAnimationPage, ClickDirectionHdl_Impl, weld::Button&, rBtn, void)
504 {
505  m_xBtnUp->set_active(&rBtn == m_xBtnUp.get());
506  m_xBtnLeft->set_active(&rBtn == m_xBtnLeft.get());
507  m_xBtnRight->set_active(&rBtn == m_xBtnRight.get());
508  m_xBtnDown->set_active(&rBtn == m_xBtnDown.get());
509 }
510 
512 {
513  m_xBtnUp->set_active( nValue == SdrTextAniDirection::Up );
514  m_xBtnLeft->set_active( nValue == SdrTextAniDirection::Left );
515  m_xBtnRight->set_active( nValue == SdrTextAniDirection::Right );
516  m_xBtnDown->set_active( nValue == SdrTextAniDirection::Down );
517 }
518 
520 {
521  SdrTextAniDirection nValue = SdrTextAniDirection::Left;
522 
523  if( m_xBtnUp->get_active() )
524  nValue = SdrTextAniDirection::Up;
525  else if( m_xBtnLeft->get_active() )
526  nValue = SdrTextAniDirection::Left;
527  else if( m_xBtnRight->get_active() )
528  nValue = SdrTextAniDirection::Right;
529  else if( m_xBtnDown->get_active() )
530  nValue = SdrTextAniDirection::Down;
531 
532  return static_cast<sal_uInt16>(nValue);
533 }
534 
535 
536 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
FieldUnit
constexpr TypedWhichId< SdrTextAniStartInsideItem > SDRATTR_TEXT_ANISTARTINSIDE(SDRATTR_MISC_FIRST+16)
size_t GetMarkCount() const
virtual ~SvxTextAnimationPage() override
Definition: textanim.cxx:127
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *)
Definition: textanim.cxx:380
std::unique_ptr< weld::CheckButton > m_xTsbPixel
Definition: textanim.hxx:64
std::string GetValue
std::unique_ptr< weld::ComboBox > m_xLbEffect
Definition: textanim.hxx:49
static const sal_uInt16 pRanges[]
Definition: textanim.hxx:38
SdrTextAniKind eAniKind
Definition: textanim.hxx:40
std::unique_ptr< weld::SpinButton > m_xNumFldCount
Definition: textanim.hxx:62
SdrMark * GetMark(size_t nNum) const
constexpr TypedWhichId< SdrTextAniCountItem > SDRATTR_TEXT_ANICOUNT(SDRATTR_MISC_FIRST+18)
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)
NONE
virtual MapUnit GetMetric(sal_uInt16 nWhich) const
virtual bool FillItemSet(SfxItemSet *) override
Definition: textanim.cxx:270
std::unique_ptr< weld::ToggleButton > m_xBtnRight
Definition: textanim.hxx:53
const SdrView * pView
Definition: textanim.hxx:98
constexpr TypedWhichId< SdrTextAniDirectionItem > SDRATTR_TEXT_ANIDIRECTION(SDRATTR_MISC_FIRST+15)
TRISTATE_INDET
void SelectDirection(SdrTextAniDirection nValue)
Definition: textanim.cxx:511
SdrObject * GetMarkedSdrObj() const
TriState m_aLeftState
Definition: textanim.hxx:45
virtual void Reset(const SfxItemSet *) override
Definition: textanim.cxx:137
std::unique_ptr< weld::MetricSpinButton > m_xMtrFldAmount
Definition: textanim.hxx:65
SvxTextAnimationPage(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet &rInAttrs)
Definition: textanim.cxx:86
#define DBG_ASSERT(sCon, aError)
virtual sal_uInt16 GetObjIdentifier() const
TriState m_aRightState
Definition: textanim.hxx:46
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
constexpr TypedWhichId< SdrMetricItem > SDRATTR_TEXT_LEFTDIST(SDRATTR_MISC_FIRST+4)
std::unique_ptr< weld::CheckButton > m_xTsbStopInside
Definition: textanim.hxx:58
std::unique_ptr< weld::MetricSpinButton > m_xMtrFldDelay
Definition: textanim.hxx:68
sal_uInt16 GetSelectedDirection() const
Definition: textanim.cxx:519
void SetMetricValue(weld::MetricSpinButton &rField, int nCoreValue, MapUnit eUnit)
const SfxPoolItem & GetDefaultItem(sal_uInt16 nWhich) const
SfxItemPool * GetPool() const
std::unique_ptr< weld::ToggleButton > m_xBtnUp
Definition: textanim.hxx:51
std::unique_ptr< weld::CheckButton > m_xTsbEndless
Definition: textanim.hxx:61
TriState m_aDownState
Definition: textanim.hxx:47
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *)
Definition: textattr.cxx:477
const SfxPoolItem * Put(const SfxPoolItem &rItem, sal_uInt16 nWhich)
SdrObjKind
std::unique_ptr< weld::ToggleButton > m_xBtnDown
Definition: textanim.hxx:54
IMPL_LINK(SvxTextAnimationPage, ClickDirectionHdl_Impl, weld::Button &, rBtn, void)
Definition: textanim.cxx:503
constexpr TypedWhichId< SdrTextAniStopInsideItem > SDRATTR_TEXT_ANISTOPINSIDE(SDRATTR_MISC_FIRST+17)
constexpr TypedWhichId< SdrTextAniKindItem > SDRATTR_TEXT_ANIKIND(SDRATTR_MISC_FIRST+14)
void AddTabPage(const OString &rName, CreateTabPage pCreateFunc, GetTabPageRanges pRangesFunc)
std::unique_ptr< weld::ToggleButton > m_xBtnLeft
Definition: textanim.hxx:52
SdrTextAniDirection
std::unique_ptr< weld::CheckButton > m_xTsbStartInside
Definition: textanim.hxx:57
constexpr TypedWhichId< SdrTextAniDelayItem > SDRATTR_TEXT_ANIDELAY(SDRATTR_MISC_FIRST+19)
TriState
sal_uInt16 nPos
constexpr TypedWhichId< SdrTextAniAmountItem > SDRATTR_TEXT_ANIAMOUNT(SDRATTR_MISC_FIRST+20)
sal_Int16 nValue
IMPL_LINK_NOARG(SvxTextAnimationPage, SelectEffectHdl_Impl, weld::ComboBox &, void)
Definition: textanim.cxx:385
std::unique_ptr< weld::CheckButton > m_xTsbAuto
Definition: textanim.hxx:67