summaryrefslogtreecommitdiffstats
path: root/cui/source/inc/cuitabline.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'cui/source/inc/cuitabline.hxx')
-rw-r--r--cui/source/inc/cuitabline.hxx376
1 files changed, 376 insertions, 0 deletions
diff --git a/cui/source/inc/cuitabline.hxx b/cui/source/inc/cuitabline.hxx
new file mode 100644
index 000000000..7e4d7798f
--- /dev/null
+++ b/cui/source/inc/cuitabline.hxx
@@ -0,0 +1,376 @@
+/* -*- 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 <memory>
+#include <vector>
+#include <editeng/brushitem.hxx>
+#include <sfx2/tabdlg.hxx>
+#include <svx/svdpage.hxx>
+#include <svx/tabarea.hxx>
+#include <svx/xlnasit.hxx>
+#include <svx/xtable.hxx>
+#include <svx/dlgctrl.hxx>
+#include <vcl/customweld.hxx>
+
+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<SvxBrushItem> pBrushItem;
+ OUString sItemId;
+};
+
+class SvxLineTabPage : public SfxTabPage
+{
+ static const WhichRangesContainer 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;
+ sal_Int32 m_nSymbolType;
+ /// attributes for the shown symbols; only necessary if not equal to line properties
+ std::unique_ptr<SfxItemSet> m_xSymbolAttr;
+
+ std::vector<OUString> m_aGrfNames;
+ std::vector< std::unique_ptr<SvxBmpItemInfo> >
+ m_aGalleryBrushItems;
+ std::vector< std::unique_ptr<SvxBmpItemInfo> >
+ 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<weld::Widget> m_xBoxColor;
+ std::unique_ptr<SvxLineLB> m_xLbLineStyle;
+ std::unique_ptr<ColorListBox> m_xLbColor;
+ std::unique_ptr<weld::Widget> m_xBoxWidth;
+ std::unique_ptr<weld::MetricSpinButton> m_xMtrLineWidth;
+ std::unique_ptr<weld::Widget> m_xBoxTransparency;
+ std::unique_ptr<weld::MetricSpinButton> m_xMtrTransparent;
+ std::unique_ptr<weld::Widget> m_xFlLineEnds;
+ std::unique_ptr<weld::Widget> m_xBoxArrowStyles;
+ std::unique_ptr<SvxLineEndLB> m_xLbStartStyle;
+ std::unique_ptr<weld::Widget> m_xBoxStart;
+ std::unique_ptr<weld::MetricSpinButton> m_xMtrStartWidth;
+ std::unique_ptr<weld::CheckButton> m_xTsbCenterStart;
+ std::unique_ptr<weld::Widget> m_xBoxEnd;
+ std::unique_ptr<SvxLineEndLB> m_xLbEndStyle;
+ std::unique_ptr<weld::MetricSpinButton> m_xMtrEndWidth;
+ std::unique_ptr<weld::CheckButton> m_xTsbCenterEnd;
+ std::unique_ptr<weld::CheckButton> m_xCbxSynchronize;
+ std::unique_ptr<weld::CustomWeld> m_xCtlPreview;
+
+ std::unique_ptr<weld::Widget> m_xFLEdgeStyle;
+ std::unique_ptr<weld::Widget> m_xGridEdgeCaps;
+ std::unique_ptr<weld::ComboBox> m_xLBEdgeStyle;
+
+ // LineCaps
+ std::unique_ptr<weld::ComboBox> m_xLBCapStyle;
+
+ std::unique_ptr<weld::Widget> m_xFlSymbol;
+ std::unique_ptr<weld::Widget> m_xGridIconSize;
+ std::unique_ptr<weld::MenuButton> m_xSymbolMB;
+ std::unique_ptr<weld::Menu> m_xSymbolsMenu;
+ std::unique_ptr<weld::Menu> m_xGalleryMenu;
+ std::unique_ptr<weld::MetricSpinButton> m_xSymbolWidthMF;
+ std::unique_ptr<weld::MetricSpinButton> m_xSymbolHeightMF;
+ std::unique_ptr<weld::CheckButton> 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<SfxTabPage> Create( weld::Container* pPage, weld::DialogController* pController, const SfxItemSet* );
+ static WhichRangesContainer 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<SvxLineLB> m_xLbLineStyles;
+ std::unique_ptr<weld::ComboBox> m_xLbType1;
+ std::unique_ptr<weld::ComboBox> m_xLbType2;
+ std::unique_ptr<weld::SpinButton> m_xNumFldNumber1;
+ std::unique_ptr<weld::SpinButton> m_xNumFldNumber2;
+ std::unique_ptr<weld::MetricSpinButton> m_xMtrLength1;
+ std::unique_ptr<weld::MetricSpinButton> m_xMtrLength2;
+ std::unique_ptr<weld::MetricSpinButton> m_xMtrDistance;
+ std::unique_ptr<weld::CheckButton> m_xCbxSynchronize;
+ std::unique_ptr<weld::Button> m_xBtnAdd;
+ std::unique_ptr<weld::Button> m_xBtnModify;
+ std::unique_ptr<weld::Button> m_xBtnDelete;
+ std::unique_ptr<weld::Button> m_xBtnLoad;
+ std::unique_ptr<weld::Button> m_xBtnSave;
+ std::unique_ptr<weld::CustomWeld> 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<SfxTabPage> 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<weld::Entry> m_xEdtName;
+ std::unique_ptr<SvxLineEndLB> m_xLbLineEnds;
+ std::unique_ptr<weld::Button> m_xBtnAdd;
+ std::unique_ptr<weld::Button> m_xBtnModify;
+ std::unique_ptr<weld::Button> m_xBtnDelete;
+ std::unique_ptr<weld::Button> m_xBtnLoad;
+ std::unique_ptr<weld::Button> m_xBtnSave;
+ std::unique_ptr<weld::CustomWeld> 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<SfxTabPage> 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: */