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