56 std::vector<sal_uInt16> lcl_convertRangesToList(
const sal_uInt16 aRanges[]) {
57 std::vector<sal_uInt16> aVec;
61 for (sal_uInt16 n = aRanges[i];
n <= aRanges[i+1]; ++
n)
79 sal_uInt16* lcl_convertListToRanges(std::vector<sal_uInt16> &rElements) {
80 std::sort(rElements.begin(), rElements.end());
81 std::vector<sal_uInt16> aRanges;
83 for (i = 0; i < rElements.size(); ++i)
86 aRanges.push_back(rElements[i]);
88 while (i + 1 < rElements.size() && rElements[i+1] - rElements[i] <= 1)
93 aRanges.push_back( rElements[i] );
97 sal_uInt16 *pNewRanges =
new sal_uInt16[aRanges.size() + 1];
98 for (i = 0; i < aRanges.size(); ++i)
100 pNewRanges[i] = aRanges[i];
112 :
SfxTabPage(pPage, pController,
"modules/swriter/ui/envformatpage.ui",
"EnvFormatPage", &rSet)
114 , m_xAddrLeftField(m_xBuilder->weld_metric_spin_button(
"leftaddr",
FieldUnit::
CM))
115 , m_xAddrTopField(m_xBuilder->weld_metric_spin_button(
"topaddr",
FieldUnit::
CM))
116 , m_xAddrEditButton(m_xBuilder->weld_menu_button(
"addredit"))
117 , m_xSendLeftField(m_xBuilder->weld_metric_spin_button(
"leftsender",
FieldUnit::
CM))
118 , m_xSendTopField(m_xBuilder->weld_metric_spin_button(
"topsender",
FieldUnit::
CM))
119 , m_xSendEditButton(m_xBuilder->weld_menu_button(
"senderedit"))
120 , m_xSizeFormatBox(m_xBuilder->weld_combo_box(
"format"))
121 , m_xSizeWidthField(m_xBuilder->weld_metric_spin_button(
"width",
FieldUnit::
CM))
122 , m_xSizeHeightField(m_xBuilder->weld_metric_spin_button(
"height",
FieldUnit::
CM))
123 , m_xPreview(new
weld::CustomWeld(*m_xBuilder,
"preview", m_aPreview))
157 if (aPaperName.isEmpty())
161 while (nPos < m_xSizeFormatBox->get_count() &&
189 int lWidth = std::max(lWVal, lHVal);
190 int lHeight = std::min(lWVal, lHVal);
192 if (&
rEdit == m_xSizeWidthField.get() || &
rEdit == m_xSizeHeightField.get())
194 int nRotatedWidth = lHeight;
195 int nRotatedHeight = lWidth;
197 Size(nRotatedWidth, nRotatedHeight), MapUnit::MapTwip);
198 for (
size_t i = 0; i < m_aIDs.size(); ++i)
199 if (m_aIDs[i] == static_cast<sal_uInt16>(ePaper))
200 m_xSizeFormatBox->set_active(i);
203 if (m_aIDs[m_xSizeFormatBox->get_active()] == sal_uInt16(
PAPER_USER))
209 FormatHdl(*m_xSizeFormatBox);
213 FillItem(GetParentSwEnvDlg()->aEnvItem);
215 m_xPreview->queue_draw();
232 OSL_ENSURE(pSh,
"Shell missing");
236 OSL_ENSURE(pColl,
"Text collection missing");
238 if (rIdent.startsWith(
"character"))
248 const OUString sFormatStr = pColl->
GetName();
250 if (pDlg->Execute() ==
RET_OK)
254 pCollSet->
Put(aOutputSet);
257 else if (rIdent.startsWith(
"paragraph"))
268 const sal_uInt16 nDefDist =
static_cast<sal_uInt16
>(
::GetTabDist( rDefTabs ));
269 SfxUInt16Item aDefDistItem( SID_ATTR_TABSTOP_DEFAULTS, nDefDist );
270 aTmpSet.
Put( aDefDistItem );
274 aTmpSet.
Put( aTabPos );
284 const OUString sFormatStr = pColl->
GetName();
294 if( SfxItemState::SET == pOutputSet->
GetItemState( SID_ATTR_TABSTOP_DEFAULTS,
301 pOutputSet->
ClearItem( SID_ATTR_TABSTOP_DEFAULTS );
303 if( pOutputSet->
Count() )
305 pCollSet->
Put(*pOutputSet);
320 static sal_uInt16
const aRanges[] =
326 SID_ATTR_TABSTOP_POS, SID_ATTR_TABSTOP_POS,
327 SID_ATTR_TABSTOP_DEFAULTS, SID_ATTR_TABSTOP_DEFAULTS,
328 SID_ATTR_TABSTOP_OFFSET, SID_ATTR_TABSTOP_OFFSET,
329 SID_ATTR_BORDER_INNER, SID_ATTR_BORDER_INNER,
334 std::vector<sal_uInt16> aVec2 = ::lcl_convertRangesToList(pRanges);
335 std::vector<sal_uInt16> aVec = ::lcl_convertRangesToList(aRanges);
336 aVec2.insert(aVec2.end(), aVec.begin(), aVec.end());
337 std::unique_ptr<sal_uInt16[]> pNewRanges(::lcl_convertListToRanges(aVec2));
344 return pAddrSet.get();
356 const sal_uInt16 nPaper = m_aIDs[m_xSizeFormatBox->get_active()];
371 lAddrFromLeft = lWidth / 2;
372 lAddrFromTop = lHeight / 2;
384 FillItem(GetParentSwEnvDlg()->aEnvItem);
385 m_xPreview->queue_draw();
394 lHeight = std::min(lWVal, lHVal);
398 100 * (lWidth - 2 * 566), FieldUnit::TWIP);
400 100 * (lHeight - 2 * 566), FieldUnit::TWIP);
409 return std::make_unique<SwEnvFormatPage>(pPage, pController, *rSet);
423 return DeactivateRC::LeavePage;
438 rItem.
m_nWidth = std::max(lWVal, lHVal);
439 rItem.
m_nHeight = std::min(lWVal, lHVal);
445 rItem.
m_nWidth = std::max(lWVal, lHVal);
446 rItem.
m_nHeight = std::min(lWVal, lHVal);
464 for (
size_t i = 0; i <
m_aIDs.size(); ++i)
465 if (
m_aIDs[i] == static_cast<sal_uInt16>(ePaper))
void SetDefault(const SfxPoolItem &)
Set attribute as new default attribute in document.
#define LINK(Instance, Class, Member)
Represents the style of a paragraph.
virtual bool FillItemSet(SfxItemSet *rSet) override
constexpr TypedWhichId< SvxTabStopItem > RES_PARATR_TABSTOP(68)
SwTextFormatColl * GetTextCollFromPool(sal_uInt16 nId)
IMPL_LINK_NOARG(SwEnvFormatPage, FormatHdl, weld::ComboBox &, void)
std::unique_ptr< weld::ComboBox > m_xSizeFormatBox
virtual const SfxItemSet * GetOutputItemSet() const =0
std::unique_ptr< weld::MetricSpinButton > m_xSizeWidthField
SfxItemSet * GetCollItemSet(SwTextFormatColl const *pColl, bool bSender)
sal_Int32 m_nAddrFromLeft
std::unique_ptr< weld::MetricSpinButton > m_xAddrLeftField
std::unique_ptr< weld::MetricSpinButton > m_xSendTopField
sal_Int32 m_nSendFromLeft
virtual void Reset(const SfxItemSet *rSet) override
void Edit(const OString &rIdent, bool bSender)
void Init(SwEnvDlg *pDialog)
Used by the UI to modify the document model.
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rSet)
const SwView & GetView() const
std::unique_ptr< weld::MenuButton > m_xAddrEditButton
constexpr sal_uInt16 RES_PARATR_BEGIN(RES_TXTATR_END)
std::unique_ptr< SfxItemSet > pAddresseeSet
void SetExchangeSupport()
void FillItem(SwEnvItem &rItem)
static tools::Long lUserH
SfxItemPool & GetPool() const
sal_uInt16 ClearItem(sal_uInt16 nWhich=0)
std::unique_ptr< weld::MetricSpinButton > m_xSendLeftField
SfxItemState GetItemState(sal_uInt16 nWhich, bool bSrchInParent=true, const SfxPoolItem **ppItem=nullptr) const
std::vector< sal_uInt16 > m_aIDs
SwAbstractDialogFactory & GetFactory()
std::unique_ptr< SfxItemSet > pSenderSet
IMPL_LINK(SwEnvFormatPage, ModifyHdl, weld::MetricSpinButton &, rEdit, void)
void SetDialog(SwEnvDlg *pDialog)
tools::Long Width() const
static OUString GetName(Paper ePaper)
static Size GetPaperSize(Paper ePaper, MapUnit eUnit=MapUnit::MapTwip)
SwEnvFormatPage(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet &rSet)
const SfxPoolItem & GetDefaultItem(sal_uInt16 nWhich) const
const SfxPoolItem * Put(const SfxPoolItem &rItem, sal_uInt16 nWhich)
weld::Window * GetFrameWeld() const
constexpr TypedWhichId< SvxBrushItem > RES_BACKGROUND(105)
std::unique_ptr< weld::MenuButton > m_xSendEditButton
const SfxPoolItem & Get(sal_uInt16 nWhich, bool bSrchInParent=true) const
virtual ~SwEnvFormatPage() override
constexpr sal_uInt16 RES_PARATR_END(82)
tools::Long Height() const
virtual void ActivatePage(const SfxItemSet &rSet) override
constexpr TypedWhichId< SvxLRSpaceItem > RES_LR_SPACE(91)
const sal_uInt16 * GetRanges() const
std::unique_ptr< weld::MetricSpinButton > m_xSizeHeightField
static tools::Long lUserW
int getfieldval(const weld::MetricSpinButton &rField)
virtual VclPtr< SfxAbstractTabDialog > CreateSwCharDlg(weld::Window *pParent, SwView &pVw, const SfxItemSet &rCoreSet, SwCharDlgMode nDialogMode, const OUString *pFormatStr=nullptr)=0
constexpr TypedWhichId< SvxULSpaceItem > RES_UL_SPACE(92)
constexpr TypedWhichId< SvxAdjustItem > RES_PARATR_ADJUST(64)
constexpr TypedWhichId< SvxShadowItem > RES_SHADOW(107)
std::unique_ptr< weld::MetricSpinButton > m_xAddrTopField
virtual DeactivateRC DeactivatePage(SfxItemSet *pSet) override
SwEnvDlg * GetParentSwEnvDlg()
static Paper GetSvxPaper(const Size &rSize, MapUnit eUnit)
void setfieldval(weld::MetricSpinButton &rField, int lValue)