/* -*- 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 #include #include enum class PageType; class ColorListBox; class SvxLineTabDialog final : public SfxTabDialogController { SdrModel* pDrawModel; const SdrObject* pObj; XColorListRef pColorList; XColorListRef mpNewColorList; XDashListRef pDashList; XDashListRef pNewDashList; XLineEndListRef pLineEndList; XLineEndListRef pNewLineEndList; bool bObjSelected; ChangeType nLineEndListState; ChangeType nDashListState; ChangeType mnColorListState; PageType nPageType; sal_Int32 nPosDashLb; sal_Int32 nPosLineEndLb; virtual void PageCreated(const OString& rId, SfxTabPage &rPage) override; virtual short Ok() override; DECL_LINK(CancelHdlImpl, weld::Button&, void); void SavePalettes(); public: SvxLineTabDialog(weld::Window* pParent, const SfxItemSet* pAttr, SdrModel* pModel, const SdrObject* pObj, bool bHasObj); void SetNewDashList( XDashListRef const & pInLst) { pNewDashList = pInLst; } const XDashListRef& GetNewDashList() const { return pNewDashList; } void SetNewLineEndList( XLineEndListRef const & pInLst) { pNewLineEndList = pInLst; } const XLineEndListRef& GetNewLineEndList() const { return pNewLineEndList; } void SetNewColorList( XColorListRef const & pColTab ) { mpNewColorList = pColTab; } const XColorListRef& GetNewColorList() const { return mpNewColorList; } }; /*************************************************************************/ struct SvxBmpItemInfo { std::unique_ptr pBrushItem; OUString sItemId; }; class SvxLineTabPage : public SfxTabPage { static const sal_uInt16 pLineRanges[]; private: //#58425# symbols on a line (e. g. StarChart) -> /** a list of symbols to be shown in menu. Symbol at position SID_ATTR_SYMBOLTYPE is to be shown in preview. The list position is to be used cyclic. */ SdrObjList* m_pSymbolList; bool m_bNewSize; /// a graphic to be displayed in the preview in case that an automatic symbol is chosen Graphic m_aAutoSymbolGraphic; tools::Long m_nSymbolType; /// attributes for the shown symbols; only necessary if not equal to line properties std::unique_ptr m_xSymbolAttr; std::vector m_aGrfNames; std::vector< std::unique_ptr > m_aGalleryBrushItems; std::vector< std::unique_ptr > m_aSymbolBrushItems; bool m_bLastWidthModified; Size m_aSymbolLastSize; Graphic m_aSymbolGraphic; Size m_aSymbolSize; bool m_bSymbols; const SfxItemSet& m_rOutAttrs; bool m_bObjSelected; XLineAttrSetItem m_aXLineAttr; SfxItemSet& m_rXLSet; XDashListRef m_pDashList; XLineEndListRef m_pLineEndList; ChangeType* m_pnLineEndListState; ChangeType* m_pnDashListState; ChangeType* m_pnColorListState; PageType m_nPageType; sal_uInt16 m_nDlgType; sal_Int32* m_pPosDashLb; sal_Int32* m_pPosLineEndLb; MapUnit m_ePoolUnit; sal_Int32 m_nActLineWidth; SvxXLinePreview m_aCtlPreview; std::unique_ptr m_xBoxColor; std::unique_ptr m_xLbLineStyle; std::unique_ptr m_xLbColor; std::unique_ptr m_xBoxWidth; std::unique_ptr m_xMtrLineWidth; std::unique_ptr m_xBoxTransparency; std::unique_ptr m_xMtrTransparent; std::unique_ptr m_xFlLineEnds; std::unique_ptr m_xBoxArrowStyles; std::unique_ptr m_xLbStartStyle; std::unique_ptr m_xBoxStart; std::unique_ptr m_xMtrStartWidth; std::unique_ptr m_xTsbCenterStart; std::unique_ptr m_xBoxEnd; std::unique_ptr m_xLbEndStyle; std::unique_ptr m_xMtrEndWidth; std::unique_ptr m_xTsbCenterEnd; std::unique_ptr m_xCbxSynchronize; std::unique_ptr m_xCtlPreview; std::unique_ptr m_xFLEdgeStyle; std::unique_ptr m_xGridEdgeCaps; std::unique_ptr m_xLBEdgeStyle; // LineCaps std::unique_ptr m_xLBCapStyle; std::unique_ptr m_xFlSymbol; std::unique_ptr m_xGridIconSize; std::unique_ptr m_xSymbolMB; std::unique_ptr m_xSymbolsMenu; std::unique_ptr m_xGalleryMenu; std::unique_ptr m_xSymbolWidthMF; std::unique_ptr m_xSymbolHeightMF; std::unique_ptr m_xSymbolRatioCB; // handler for gallery popup menu button + size DECL_LINK(GraphicHdl_Impl, const OString&, void); DECL_LINK(SizeHdl_Impl, weld::MetricSpinButton&, void); DECL_LINK(MenuCreateHdl_Impl, weld::Toggleable&, void); DECL_LINK(RatioHdl_Impl, weld::Toggleable&, void); DECL_LINK(ClickInvisibleHdl_Impl, weld::ComboBox&, void); void ClickInvisibleHdl_Impl(); DECL_LINK(ChangeStartClickHdl_Impl, weld::Toggleable&, void); DECL_LINK(ChangeStartListBoxHdl_Impl, weld::ComboBox&, void); DECL_LINK(ChangeStartModifyHdl_Impl, weld::MetricSpinButton&, void); DECL_LINK(ChangeEndListBoxHdl_Impl, weld::ComboBox&, void); DECL_LINK(ChangeEndModifyHdl_Impl, weld::MetricSpinButton&, void); DECL_LINK(ChangeEndClickHdl_Impl, weld::Toggleable&, void); DECL_LINK(ChangePreviewListBoxHdl_Impl, ColorListBox&, void); DECL_LINK(ChangePreviewModifyHdl_Impl, weld::MetricSpinButton&, void); void ChangePreviewHdl_Impl(const weld::MetricSpinButton*); DECL_LINK(ChangeTransparentHdl_Impl, weld::MetricSpinButton&, void); DECL_LINK(ChangeEdgeStyleHdl_Impl, weld::ComboBox&, void); // LineCaps DECL_LINK(ChangeCapStyleHdl_Impl, weld::ComboBox&, void); void FillXLSet_Impl(); void FillListboxes(); public: void ShowSymbolControls(bool bOn); SvxLineTabPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rInAttrs); virtual ~SvxLineTabPage() override; void Construct(); static std::unique_ptr Create( weld::Container* pPage, weld::DialogController* pController, const SfxItemSet* ); static const sal_uInt16* GetRanges() { return pLineRanges; } virtual bool FillItemSet( SfxItemSet* ) override; virtual void Reset( const SfxItemSet* ) override; virtual void ActivatePage( const SfxItemSet& rSet ) override; virtual DeactivateRC DeactivatePage( SfxItemSet* pSet ) override; virtual void FillUserData() override; void SetDashList( XDashListRef const & pDshLst ) { m_pDashList = pDshLst; } void SetLineEndList( XLineEndListRef const & pLneEndLst) { m_pLineEndList = pLneEndLst; } void SetObjSelected( bool bHasObj ) { m_bObjSelected = bHasObj; } void SetPageType( PageType nInType ) { m_nPageType = nInType; } void SetDlgType( sal_uInt16 nInType ) { m_nDlgType = nInType; } void SetPosDashLb( sal_Int32* pInPos ) { m_pPosDashLb = pInPos; } void SetPosLineEndLb( sal_Int32* pInPos ) { m_pPosLineEndLb = pInPos; } void SetLineEndChgd( ChangeType* pIn ) { m_pnLineEndListState = pIn; } void SetDashChgd( ChangeType* pIn ) { m_pnDashListState = pIn; } void SetColorChgd( ChangeType* pIn ) { m_pnColorListState = pIn; } virtual void PageCreated(const SfxAllItemSet& aSet) override; }; /*************************************************************************/ class SvxLineDefTabPage : public SfxTabPage { private: const SfxItemSet& rOutAttrs; XDash aDash; XLineAttrSetItem aXLineAttr; SfxItemSet& rXLSet; XDashListRef pDashList; ChangeType* pnDashListState; PageType* pPageType; sal_uInt16 nDlgType; sal_Int32* pPosDashLb; MapUnit ePoolUnit; FieldUnit eFUnit; SvxXLinePreview m_aCtlPreview; std::unique_ptr m_xLbLineStyles; std::unique_ptr m_xLbType1; std::unique_ptr m_xLbType2; std::unique_ptr m_xNumFldNumber1; std::unique_ptr m_xNumFldNumber2; std::unique_ptr m_xMtrLength1; std::unique_ptr m_xMtrLength2; std::unique_ptr m_xMtrDistance; std::unique_ptr m_xCbxSynchronize; std::unique_ptr m_xBtnAdd; std::unique_ptr m_xBtnModify; std::unique_ptr m_xBtnDelete; std::unique_ptr m_xBtnLoad; std::unique_ptr m_xBtnSave; std::unique_ptr m_xCtlPreview; void FillDash_Impl(); void FillDialog_Impl(); DECL_LINK(ClickAddHdl_Impl, weld::Button&, void); DECL_LINK(ClickModifyHdl_Impl, weld::Button&, void); DECL_LINK(ClickDeleteHdl_Impl, weld::Button&, void); DECL_LINK(SelectLinestyleListBoxHdl_Impl, weld::ComboBox&, void); void SelectLinestyleHdl_Impl(const weld::ComboBox*); DECL_LINK(ChangePreviewHdl_Impl, weld::MetricSpinButton&, void); DECL_LINK(ChangeNumber1Hdl_Impl, weld::SpinButton&, void); DECL_LINK(ChangeNumber2Hdl_Impl, weld::SpinButton&, void); DECL_LINK(ClickLoadHdl_Impl, weld::Button&, void); DECL_LINK(ClickSaveHdl_Impl, weld::Button&, void); DECL_LINK(ChangeMetricHdl_Impl, weld::Toggleable&, void); DECL_LINK(SelectTypeListBoxHdl_Impl, weld::ComboBox&, void); void SelectTypeHdl_Impl(const weld::ComboBox*); void ChangeMetricHdl_Impl(const weld::Toggleable*); void CheckChanges_Impl(); public: SvxLineDefTabPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rInAttrs); virtual ~SvxLineDefTabPage() override; void Construct(); static std::unique_ptr Create( weld::Container* pPage, weld::DialogController* pController, const SfxItemSet* ); virtual bool FillItemSet( SfxItemSet* ) override; virtual void Reset( const SfxItemSet * ) override; virtual void ActivatePage( const SfxItemSet& rSet ) override; virtual DeactivateRC DeactivatePage( SfxItemSet* pSet ) override; void SetDashList( XDashListRef const & pDshLst ) { pDashList = pDshLst; } void SetPageType( PageType* pInType ) { pPageType = pInType; } void SetDlgType( sal_uInt16 nInType ) { nDlgType = nInType; } void SetPosDashLb( sal_Int32* pInPos ) { pPosDashLb = pInPos; } void SetDashChgd( ChangeType* pIn ) { pnDashListState = pIn; } }; /*************************************************************************/ class SvxLineEndDefTabPage : public SfxTabPage { private: const SfxItemSet& rOutAttrs; const SdrObject* pPolyObj; XLineAttrSetItem aXLineAttr; SfxItemSet& rXLSet; XLineEndListRef pLineEndList; ChangeType* pnLineEndListState; PageType* pPageType; sal_uInt16 nDlgType; sal_Int32* pPosLineEndLb; SvxXLinePreview m_aCtlPreview; std::unique_ptr m_xEdtName; std::unique_ptr m_xLbLineEnds; std::unique_ptr m_xBtnAdd; std::unique_ptr m_xBtnModify; std::unique_ptr m_xBtnDelete; std::unique_ptr m_xBtnLoad; std::unique_ptr m_xBtnSave; std::unique_ptr m_xCtlPreview; DECL_LINK(ClickAddHdl_Impl, weld::Button&, void); DECL_LINK(ClickModifyHdl_Impl, weld::Button&, void); DECL_LINK(ClickDeleteHdl_Impl, weld::Button&, void); DECL_LINK(ClickLoadHdl_Impl, weld::Button&, void); DECL_LINK(ClickSaveHdl_Impl, weld::Button&, void); DECL_LINK(SelectLineEndHdl_Impl, weld::ComboBox&, void); void SelectLineEndHdl_Impl(); void CheckChanges_Impl(); public: SvxLineEndDefTabPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rInAttrs); virtual ~SvxLineEndDefTabPage() override; void Construct(); static std::unique_ptr Create( weld::Container* pPage, weld::DialogController* pController, const SfxItemSet* ); virtual bool FillItemSet( SfxItemSet* ) override; virtual void Reset( const SfxItemSet * ) override; virtual void ActivatePage( const SfxItemSet& rSet ) override; virtual DeactivateRC DeactivatePage( SfxItemSet* pSet ) override; void SetLineEndList( XLineEndListRef const & pInList ) { pLineEndList = pInList; } void SetPolyObj( const SdrObject* pObj ) { pPolyObj = pObj; } void SetPageType( PageType* pInType ) { pPageType = pInType; } void SetDlgType( sal_uInt16 nInType ) { nDlgType = nInType; } void SetPosLineEndLb( sal_Int32* pInPos ) { pPosLineEndLb = pInPos; } void SetLineEndChgd( ChangeType* pIn ) { pnLineEndListState = pIn; } }; /* vim:set shiftwidth=4 softtabstop=4 expandtab: */