LibreOffice Module sw (master)  1
column.hxx
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 #ifndef INCLUDED_SW_SOURCE_UIBASE_INC_COLUMN_HXX
21 #define INCLUDED_SW_SOURCE_UIBASE_INC_COLUMN_HXX
22 
23 #include <svtools/ctrlbox.hxx>
24 #include <svtools/valueset.hxx>
25 #include <sfx2/basedlgs.hxx>
26 #include <sfx2/tabdlg.hxx>
27 #include <svx/colorbox.hxx>
28 #include <svx/frmdirlbox.hxx>
29 #include "colex.hxx"
30 #include "prcntfld.hxx"
31 
32 const int nMaxCols = 99;
33 class SwColMgr;
34 class SwWrtShell;
35 class SwColumnPage;
36 
38 {
40  std::unique_ptr<SwColumnPage> m_xTabPage;
41  std::unique_ptr<SfxItemSet> m_pPageSet;
42  std::unique_ptr<SfxItemSet> m_pSectionSet;
43  std::unique_ptr<SfxItemSet> m_pSelectionSet;
45 
49 
50  bool m_bPageChanged : 1;
53  bool m_bFrameChanged : 1;
54 
55  std::unique_ptr<weld::Container> m_xContentArea;
56  std::unique_ptr<weld::Button> m_xOkButton;
57 
58  DECL_LINK(ObjectListBoxHdl, weld::ComboBox&, void);
59  DECL_LINK(OkHdl, weld::Button&, void);
60  void ObjectHdl(const weld::ComboBox*);
62 
63 public:
64  SwColumnDlg(weld::Window* pParent, SwWrtShell& rSh);
65  virtual ~SwColumnDlg() override;
66 };
67 
69 {
70 public:
72  : SvtValueSet(nullptr)
73  {
74  }
75  virtual void SetDrawingArea(weld::DrawingArea* pDrawingArea) override
76  {
77  SvtValueSet::SetDrawingArea(pDrawingArea);
79  }
80  virtual void UserDraw(const UserDrawEvent& rUDEvt) override;
81  virtual void StyleUpdated() override;
82 };
83 
84 // column dialog now as TabPage
85 class SwColumnPage : public SfxTabPage
86 {
87  std::unique_ptr<SwColMgr> m_xColMgr;
88 
89  sal_uInt16 m_nFirstVis;
90  sal_uInt16 m_nCols;
94 
95  std::map<weld::MetricSpinButton*, SwPercentField*> m_aPercentFieldsMap;
96 
97  bool m_bFormat;
98  bool m_bFrame;
101 
105 
106  std::unique_ptr<weld::SpinButton> m_xCLNrEdt;
107  std::unique_ptr<weld::CheckButton> m_xBalanceColsCB;
108  std::unique_ptr<weld::Button> m_xBtnBack;
109  std::unique_ptr<weld::Label> m_xLbl1;
110  std::unique_ptr<weld::Label> m_xLbl2;
111  std::unique_ptr<weld::Label> m_xLbl3;
112  std::unique_ptr<weld::Button> m_xBtnNext;
113  std::unique_ptr<weld::CheckButton> m_xAutoWidthBox;
114  std::unique_ptr<weld::Label> m_xLineTypeLbl;
115  std::unique_ptr<weld::Label> m_xLineWidthLbl;
116  std::unique_ptr<weld::MetricSpinButton> m_xLineWidthEdit;
117  std::unique_ptr<weld::Label> m_xLineColorLbl;
118  std::unique_ptr<weld::Label> m_xLineHeightLbl;
119  std::unique_ptr<weld::MetricSpinButton> m_xLineHeightEdit;
120  std::unique_ptr<weld::Label> m_xLinePosLbl;
121  std::unique_ptr<weld::ComboBox> m_xLinePosDLB;
122  std::unique_ptr<weld::Label> m_xTextDirectionFT;
123  std::unique_ptr<svx::FrameDirectionListBox> m_xTextDirectionLB;
124  std::unique_ptr<ColorListBox> m_xLineColorDLB;
125  std::unique_ptr<SvtLineListBox> m_xLineTypeDLB;
126  std::unique_ptr<SwPercentField> m_xEd1;
127  std::unique_ptr<SwPercentField> m_xEd2;
128  std::unique_ptr<SwPercentField> m_xEd3;
129  std::unique_ptr<SwPercentField> m_xDistEd1;
130  std::unique_ptr<SwPercentField> m_xDistEd2;
131  std::unique_ptr<weld::CustomWeld> m_xDefaultVS;
132  // Example
133  std::unique_ptr<weld::CustomWeld> m_xPgeExampleWN;
134  std::unique_ptr<weld::CustomWeld> m_xFrameExampleWN;
135 
136  std::unique_ptr<weld::Label> m_xApplyToFT;
137  std::unique_ptr<weld::ComboBox> m_xApplyToLB;
138 
139  // Handler
141  void ColModify(const weld::SpinButton*);
142  DECL_LINK(GapModify, weld::MetricSpinButton&, void);
143  DECL_LINK(EdModify, weld::MetricSpinButton&, void);
144  DECL_LINK(AutoWidthHdl, weld::ToggleButton&, void );
145  DECL_LINK(SetDefaultsHdl, SvtValueSet *, void);
146 
147  DECL_LINK(Up, weld::Button&, void);
148  DECL_LINK(Down, weld::Button&, void);
149  DECL_LINK(UpdateColMgr, weld::MetricSpinButton&, void);
150  DECL_LINK(UpdateColMgrListBox, weld::ComboBox&, void);
151  DECL_LINK(UpdateColMgrLineBox, SvtLineListBox&, void);
152  DECL_LINK(UpdateColMgrColorBox, ColorListBox&, void);
153  void Timeout();
154 
155  void Update(const weld::MetricSpinButton* pInteractiveField);
156  void UpdateCols();
157  void Init();
158  void ResetColWidth();
159  void SetLabels( sal_uInt16 nVis );
160 
161  virtual void ActivatePage(const SfxItemSet& rSet) override;
162  virtual DeactivateRC DeactivatePage(SfxItemSet *pSet) override;
163 
164  void connectPercentField(SwPercentField &rWrap);
165 
166  bool isLineNotNone() const;
167 
168  static const sal_uInt16 aPageRg[];
169 
170 public:
171  SwColumnPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet &rSet);
172  virtual ~SwColumnPage() override;
173 
174  static std::unique_ptr<SfxTabPage> Create(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet *rSet);
175  static const sal_uInt16* GetRanges() { return aPageRg; }
176 
177  virtual bool FillItemSet(SfxItemSet *rSet) override;
178  virtual void Reset(const SfxItemSet *rSet) override;
179 
180  void SetFrameMode(bool bMod);
181  void SetPageWidth(long nPageWidth);
182 
183  void SetFormatUsed(bool bFormatUsed)
184  {
185  m_bFormat = bFormatUsed;
186  }
187 
188  void ShowBalance(bool bShow)
189  {
190  m_xBalanceColsCB->set_visible(bShow);
191  }
192 
193  void SetInSection(bool bSet);
194 
196  {
197  m_xCLNrEdt->grab_focus();
198  }
199 
200  weld::Label* GetApplyLabel() { return m_xApplyToFT.get(); }
201  weld::ComboBox* GetApplyComboBox() { return m_xApplyToLB.get(); }
202 };
203 
204 #endif
205 
206 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
std::unique_ptr< SwPercentField > m_xEd2
Definition: column.hxx:127
std::unique_ptr< weld::Container > m_xContentArea
Definition: column.hxx:55
std::unique_ptr< weld::MetricSpinButton > m_xLineWidthEdit
Definition: column.hxx:116
void ActivateColumnControl()
Definition: column.hxx:195
SwColumnDlg(weld::Window *pParent, SwWrtShell &rSh)
Definition: column.cxx:92
void ObjectHdl(const weld::ComboBox *)
Definition: column.cxx:226
const SfxItemSet * pSet
std::unique_ptr< weld::CheckButton > m_xAutoWidthBox
Definition: column.hxx:113
bool m_bFormat
Definition: column.hxx:97
void SetFormatUsed(bool bFormatUsed)
Definition: column.hxx:183
virtual bool FillItemSet(SfxItemSet *rSet) override
Definition: column.cxx:607
virtual void Reset(const SfxItemSet *rSet) override
Definition: column.cxx:544
std::unique_ptr< SwPercentField > m_xEd3
Definition: column.hxx:128
void SetFrameMode(bool bMod)
Definition: column.cxx:1310
void UpdateCols()
Definition: column.cxx:825
void SetPageWidth(long nPageWidth)
Definition: column.cxx:526
std::unique_ptr< weld::CustomWeld > m_xFrameExampleWN
Definition: column.hxx:134
SwColumnOnlyExample m_aFrameExampleWN
Definition: column.hxx:104
std::unique_ptr< weld::Label > m_xLineTypeLbl
Definition: column.hxx:114
void ShowBalance(bool bShow)
Definition: column.hxx:188
std::unique_ptr< weld::Label > m_xLbl1
Definition: column.hxx:109
std::unique_ptr< SvtLineListBox > m_xLineTypeDLB
Definition: column.hxx:125
Used by the UI to modify the document model.
Definition: wrtsh.hxx:90
SwWrtShell & m_rWrtShell
Definition: column.hxx:39
void SetInSection(bool bSet)
Definition: column.cxx:1315
virtual void StyleUpdated() override
Definition: column.cxx:1390
static const sal_uInt16 * GetRanges()
Definition: column.hxx:175
std::unique_ptr< SwPercentField > m_xEd1
Definition: column.hxx:126
std::unique_ptr< ColorListBox > m_xLineColorDLB
Definition: column.hxx:124
std::unique_ptr< weld::Label > m_xTextDirectionFT
Definition: column.hxx:122
#define WB_ITEMBORDER
std::map< weld::MetricSpinButton *, SwPercentField * > m_aPercentFieldsMap
Definition: column.hxx:95
long m_nColWidth[nMaxCols]
Definition: column.hxx:91
std::unique_ptr< SwPercentField > m_xDistEd1
Definition: column.hxx:129
void Update(const weld::MetricSpinButton *pInteractiveField)
Definition: column.cxx:1111
std::unique_ptr< weld::ComboBox > m_xLinePosDLB
Definition: column.hxx:121
std::unique_ptr< weld::Label > m_xLinePosLbl
Definition: column.hxx:120
std::unique_ptr< weld::Button > m_xOkButton
Definition: column.hxx:56
weld::Label * GetApplyLabel()
Definition: column.hxx:200
ColumnValueSet m_aDefaultVS
Definition: column.hxx:102
void SetStyle(WinBits nStyle)
static const sal_uInt16 aPageRg[]
Definition: column.hxx:168
sal_uInt16 m_nCols
Definition: column.hxx:90
long m_nSelectionWidth
Definition: column.hxx:47
std::unique_ptr< weld::MetricSpinButton > m_xLineHeightEdit
Definition: column.hxx:119
void Timeout()
Definition: column.cxx:1067
long m_nColDist[nMaxCols]
Definition: column.hxx:92
std::unique_ptr< SfxItemSet > m_pSectionSet
Definition: column.hxx:42
virtual void ActivatePage(const SfxItemSet &rSet) override
Definition: column.cxx:1166
weld::ComboBox * GetApplyComboBox()
Definition: column.hxx:201
std::unique_ptr< weld::Label > m_xLineColorLbl
Definition: column.hxx:117
std::unique_ptr< svx::FrameDirectionListBox > m_xTextDirectionLB
Definition: column.hxx:123
std::unique_ptr< weld::Label > m_xApplyToFT
Definition: column.hxx:136
void ColModify(const weld::SpinButton *)
Definition: column.cxx:921
virtual void SetDrawingArea(weld::DrawingArea *pDrawingArea) override
std::unique_ptr< weld::CheckButton > m_xBalanceColsCB
Definition: column.hxx:107
std::unique_ptr< weld::SpinButton > m_xCLNrEdt
Definition: column.hxx:106
SwColExample m_aPgeExampleWN
Definition: column.hxx:103
long m_nPageWidth
Definition: column.hxx:48
std::unique_ptr< weld::Button > m_xBtnNext
Definition: column.hxx:112
bool m_bPageChanged
Definition: column.hxx:50
bool m_bHtmlMode
Definition: column.hxx:99
SwPercentField * m_pModifiedField
Definition: column.hxx:93
virtual void UserDraw(const UserDrawEvent &rUDEvt) override
Definition: column.cxx:1324
std::unique_ptr< SfxItemSet > m_pSelectionSet
Definition: column.hxx:43
std::unique_ptr< SfxItemSet > m_pPageSet
Definition: column.hxx:41
void SetLabels(sal_uInt16 nVis)
Definition: column.cxx:884
virtual ~SwColumnDlg() override
Definition: column.cxx:216
std::unique_ptr< SwColMgr > m_xColMgr
Definition: column.hxx:87
virtual DeactivateRC DeactivatePage(SfxItemSet *pSet) override
Definition: column.cxx:1267
virtual void SetDrawingArea(weld::DrawingArea *pDrawingArea) override
Definition: column.hxx:75
bool m_bSectionChanged
Definition: column.hxx:51
const int nMaxCols
Definition: column.hxx:32
bool m_bFrame
Definition: column.hxx:98
DECL_LINK(ColModify, weld::SpinButton &, void)
std::unique_ptr< weld::Label > m_xLineWidthLbl
Definition: column.hxx:115
bool m_bLockUpdate
Definition: column.hxx:100
DECL_LINK(ObjectListBoxHdl, weld::ComboBox &, void)
bool isLineNotNone() const
Definition: column.cxx:812
void connectPercentField(SwPercentField &rWrap)
Definition: column.cxx:537
virtual ~SwColumnPage() override
Definition: column.cxx:511
void Init()
Definition: column.cxx:750
SwColumnPage(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet &rSet)
Definition: column.cxx:385
sal_uInt16 m_nFirstVis
Definition: column.hxx:89
std::unique_ptr< weld::CustomWeld > m_xDefaultVS
Definition: column.hxx:131
std::unique_ptr< SwColumnPage > m_xTabPage
Definition: column.hxx:40
WinBits const WB_TABSTOP
std::unique_ptr< SwPercentField > m_xDistEd2
Definition: column.hxx:130
DeactivateRC
bool m_bSelSectionChanged
Definition: column.hxx:52
#define WB_DOUBLEBORDER
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rSet)
Definition: column.cxx:601
std::unique_ptr< weld::Label > m_xLbl3
Definition: column.hxx:111
std::unique_ptr< weld::ComboBox > m_xApplyToLB
Definition: column.hxx:137
std::unique_ptr< weld::Label > m_xLbl2
Definition: column.hxx:110
long m_nOldSelection
Definition: column.hxx:46
SfxItemSet * m_pFrameSet
Definition: column.hxx:44
void ResetColWidth()
Definition: column.cxx:370
std::unique_ptr< weld::Label > m_xLineHeightLbl
Definition: column.hxx:118
std::unique_ptr< weld::CustomWeld > m_xPgeExampleWN
Definition: column.hxx:133
SfxItemSet * EvalCurrentSelection(void)
Definition: column.cxx:326
bool m_bFrameChanged
Definition: column.hxx:53
std::unique_ptr< weld::Button > m_xBtnBack
Definition: column.hxx:108