/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * 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 . */ #pragma once #include #include #include #include #include #include #include #include // class SvxPageDescPage ------------------------------------------------- /* [Description] TabPage for page settings (size, margins, ...) [Items] : : : : : : : : : : : : : : : : : : : : : : */ typedef sal_uInt16 MarginPosition; class SvxPageDescPage : public SfxTabPage { static const WhichRangesContainer pRanges; private: OUString sStandardRegister; tools::Long nFirstLeftMargin; tools::Long nFirstRightMargin; tools::Long nFirstTopMargin; tools::Long nFirstBottomMargin; tools::Long nLastLeftMargin; tools::Long nLastRightMargin; tools::Long nLastTopMargin; tools::Long nLastBottomMargin; bool bLandscape; bool bBorderModified; SvxModeType eMode; Paper ePaperStart; MarginPosition m_nPos; VclPtr mpDefPrinter; bool mbDelPrinter : 1; bool mbEnableDrawingLayerFillStyles : 1; SvxPageWindow m_aBspWin; // paper format std::unique_ptr m_xPaperSizeBox; std::unique_ptr m_xPaperWidthEdit; std::unique_ptr m_xPaperHeightEdit; std::unique_ptr m_xPortraitBtn; std::unique_ptr m_xLandscapeBtn; std::unique_ptr m_xTextFlowLbl; std::unique_ptr m_xTextFlowBox; std::unique_ptr m_xPaperTrayBox; // Margins std::unique_ptr m_xLeftMarginLbl; std::unique_ptr m_xLeftMarginEdit; std::unique_ptr m_xRightMarginLbl; std::unique_ptr m_xRightMarginEdit; std::unique_ptr m_xTopMarginEdit; std::unique_ptr m_xBottomMarginEdit; std::unique_ptr m_xGutterMarginLbl; std::unique_ptr m_xGutterMarginEdit; // layout settings std::unique_ptr m_xPageText; std::unique_ptr m_xLayoutBox; std::unique_ptr m_xNumberFormatText; std::unique_ptr m_xNumberFormatBox; //Extras Calc std::unique_ptr m_xTblAlignFT; std::unique_ptr m_xHorzBox; std::unique_ptr m_xVertBox; // Impress and Draw std::unique_ptr m_xAdaptBox; //Register Writer std::unique_ptr m_xRegisterCB; std::unique_ptr m_xRegisterFT; std::unique_ptr m_xRegisterLB; std::unique_ptr m_xGutterPositionFT; std::unique_ptr m_xGutterPositionLB; std::unique_ptr m_xRtlGutterCB; std::unique_ptr m_xBackgroundFullSizeCB; std::unique_ptr m_xInsideLbl; std::unique_ptr m_xOutsideLbl; std::unique_ptr m_xPrintRangeQueryText; std::unique_ptr m_xBspWin; void Init_Impl(); DECL_LINK(LayoutHdl_Impl, weld::ComboBox&, void); DECL_LINK(GutterPositionHdl_Impl, weld::ComboBox&, void); DECL_LINK(PaperBinHdl_Impl, weld::Widget&, void); DECL_LINK(SwapOrientation_Impl, weld::Toggleable&, void); void SwapFirstValues_Impl( bool bSet ); DECL_LINK(BorderModify_Impl, weld::MetricSpinButton&, void); void InitHeadFoot_Impl( const SfxItemSet& rSet ); DECL_LINK(CenterHdl_Impl, weld::Toggleable&, void); void UpdateExample_Impl( bool bResetbackground = false ); DECL_LINK(PaperSizeSelect_Impl, weld::ComboBox&, void ); DECL_LINK(PaperSizeModify_Impl, weld::MetricSpinButton&, void); DECL_LINK(FrameDirectionModify_Impl, weld::ComboBox&, void ); void ResetBackground_Impl( const SfxItemSet& rSet ); void RangeHdl_Impl(); void CalcMargin_Impl(); DECL_LINK(RegisterModify, weld::Toggleable&, void); // page direction /** Disables vertical page direction entries in the text flow listbox. */ void DisableVerticalPageDir(); bool IsPrinterRangeOverflow(weld::MetricSpinButton& rField, tools::Long nFirstMargin, tools::Long nLastMargin, MarginPosition nPos); void CheckMarginEdits( bool _bClear ); bool IsMarginOutOfRange() const; protected: virtual void ActivatePage( const SfxItemSet& rSet ) override; virtual DeactivateRC DeactivatePage( SfxItemSet* pSet ) override; public: SvxPageDescPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rSet); static std::unique_ptr Create( weld::Container* pPage, weld::DialogController* pController, const SfxItemSet* rSet ); virtual ~SvxPageDescPage() override; // returns the range of the Which values static const WhichRangesContainer & GetRanges() { return pRanges; } virtual bool FillItemSet( SfxItemSet* rOutSet ) override; virtual void Reset( const SfxItemSet* rSet ) override; virtual void FillUserData() override; void SetPaperFormatRanges( Paper eStart ) { ePaperStart = eStart; } void SetCollectionList(const std::vector &aList); virtual void PageCreated(const SfxAllItemSet& aSet) override; }; /* vim:set shiftwidth=4 softtabstop=4 expandtab: */