1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski *
3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file
5*b1cdbd2cSJim Jagielski * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file
7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski *
11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski *
13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the
17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski * under the License.
19*b1cdbd2cSJim Jagielski *
20*b1cdbd2cSJim Jagielski *************************************************************/
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_sw.hxx"
26*b1cdbd2cSJim Jagielski
27*b1cdbd2cSJim Jagielski #ifdef SW_DLLIMPLEMENTATION
28*b1cdbd2cSJim Jagielski #undef SW_DLLIMPLEMENTATION
29*b1cdbd2cSJim Jagielski #endif
30*b1cdbd2cSJim Jagielski
31*b1cdbd2cSJim Jagielski
32*b1cdbd2cSJim Jagielski
33*b1cdbd2cSJim Jagielski #include <sfx2/app.hxx>
34*b1cdbd2cSJim Jagielski
35*b1cdbd2cSJim Jagielski #ifndef _CMDID_H
36*b1cdbd2cSJim Jagielski #include <cmdid.h>
37*b1cdbd2cSJim Jagielski #endif
38*b1cdbd2cSJim Jagielski #include <hintids.hxx>
39*b1cdbd2cSJim Jagielski #include <swtypes.hxx>
40*b1cdbd2cSJim Jagielski #ifndef _GLOBALS_HRC
41*b1cdbd2cSJim Jagielski #include <globals.hrc>
42*b1cdbd2cSJim Jagielski #endif
43*b1cdbd2cSJim Jagielski #include <svx/xtable.hxx>
44*b1cdbd2cSJim Jagielski #include <uitool.hxx>
45*b1cdbd2cSJim Jagielski #include <editeng/sizeitem.hxx>
46*b1cdbd2cSJim Jagielski #include <editeng/lrspitem.hxx>
47*b1cdbd2cSJim Jagielski #include <editeng/ulspitem.hxx>
48*b1cdbd2cSJim Jagielski #include <editeng/boxitem.hxx>
49*b1cdbd2cSJim Jagielski #include <editeng/frmdiritem.hxx>
50*b1cdbd2cSJim Jagielski #include <pggrid.hxx>
51*b1cdbd2cSJim Jagielski #include <tgrditem.hxx>
52*b1cdbd2cSJim Jagielski #include <pggrid.hrc>
53*b1cdbd2cSJim Jagielski
54*b1cdbd2cSJim Jagielski #include "wrtsh.hxx"
55*b1cdbd2cSJim Jagielski #include "doc.hxx"
56*b1cdbd2cSJim Jagielski #include "uiitems.hxx"
57*b1cdbd2cSJim Jagielski #include "swmodule.hxx"
58*b1cdbd2cSJim Jagielski #include "view.hxx"
59*b1cdbd2cSJim Jagielski /*-- 06.02.2002 15:25:39---------------------------------------------------
60*b1cdbd2cSJim Jagielski
61*b1cdbd2cSJim Jagielski -----------------------------------------------------------------------*/
SwTextGridPage(Window * pParent,const SfxItemSet & rSet)62*b1cdbd2cSJim Jagielski SwTextGridPage::SwTextGridPage(Window *pParent, const SfxItemSet &rSet) :
63*b1cdbd2cSJim Jagielski SfxTabPage(pParent, SW_RES(TP_TEXTGRID_PAGE), rSet),
64*b1cdbd2cSJim Jagielski aGridTypeFL (this, SW_RES(FL_GRID_TYPE )),
65*b1cdbd2cSJim Jagielski aNoGridRB (this, SW_RES(RB_NOGRID )),
66*b1cdbd2cSJim Jagielski aLinesGridRB (this, SW_RES(RB_LINESGRID )),
67*b1cdbd2cSJim Jagielski aCharsGridRB (this, SW_RES(RB_CHARSGRID )),
68*b1cdbd2cSJim Jagielski aSnapToCharsCB (this, SW_RES(CB_SNAPTOCHARS )),
69*b1cdbd2cSJim Jagielski aExampleWN (this, SW_RES(WN_EXAMPLE )),
70*b1cdbd2cSJim Jagielski aLayoutFL (this, SW_RES(FL_LAYOUT )),
71*b1cdbd2cSJim Jagielski aLinesPerPageFT (this, SW_RES(FT_LINESPERPAGE )),
72*b1cdbd2cSJim Jagielski aLinesPerPageNF (this, SW_RES(NF_LINESPERPAGE )),
73*b1cdbd2cSJim Jagielski aTextSizeFT (this, SW_RES(FT_TEXTSIZE )),
74*b1cdbd2cSJim Jagielski aTextSizeMF (this, SW_RES(MF_TEXTSIZE )),
75*b1cdbd2cSJim Jagielski aCharsPerLineFT (this, SW_RES(FT_CHARSPERLINE )),
76*b1cdbd2cSJim Jagielski aCharsPerLineNF (this, SW_RES(NF_CHARSPERLINE )),
77*b1cdbd2cSJim Jagielski aCharWidthFT (this, SW_RES(FT_CHARWIDTH )),
78*b1cdbd2cSJim Jagielski aCharWidthMF (this, SW_RES(MF_CHARWIDTH )),
79*b1cdbd2cSJim Jagielski aRubySizeFT (this, SW_RES(FT_RUBYSIZE )),
80*b1cdbd2cSJim Jagielski aRubySizeMF (this, SW_RES(MF_RUBYSIZE )),
81*b1cdbd2cSJim Jagielski aRubyBelowCB (this, SW_RES(CB_RUBYBELOW )),
82*b1cdbd2cSJim Jagielski aDisplayFL (this, SW_RES(FL_DISPLAY )),
83*b1cdbd2cSJim Jagielski aDisplayCB (this, SW_RES(CB_DISPLAY )),
84*b1cdbd2cSJim Jagielski aPrintCB (this, SW_RES(CB_PRINT )),
85*b1cdbd2cSJim Jagielski aColorFT (this, SW_RES(FT_COLOR )),
86*b1cdbd2cSJim Jagielski aColorLB (this, SW_RES(LB_COLOR )),
87*b1cdbd2cSJim Jagielski m_nRubyUserValue(0),
88*b1cdbd2cSJim Jagielski m_bRubyUserValue(sal_False),
89*b1cdbd2cSJim Jagielski m_aPageSize(MM50, MM50),
90*b1cdbd2cSJim Jagielski m_bVertical(sal_False),
91*b1cdbd2cSJim Jagielski m_bSquaredMode(sal_False)
92*b1cdbd2cSJim Jagielski {
93*b1cdbd2cSJim Jagielski FreeResource();
94*b1cdbd2cSJim Jagielski
95*b1cdbd2cSJim Jagielski aControls[0] =&aLayoutFL;
96*b1cdbd2cSJim Jagielski aControls[1] =&aLinesPerPageFT;
97*b1cdbd2cSJim Jagielski aControls[2] =&aLinesPerPageNF;
98*b1cdbd2cSJim Jagielski aControls[3] =&aTextSizeFT;
99*b1cdbd2cSJim Jagielski aControls[4] =&aTextSizeMF;
100*b1cdbd2cSJim Jagielski aControls[5] =&aCharsPerLineFT;
101*b1cdbd2cSJim Jagielski aControls[6] =&aCharsPerLineNF;
102*b1cdbd2cSJim Jagielski aControls[7] =&aCharWidthFT;
103*b1cdbd2cSJim Jagielski aControls[8] =&aCharWidthMF;
104*b1cdbd2cSJim Jagielski aControls[9] =&aRubySizeFT;
105*b1cdbd2cSJim Jagielski aControls[10] =&aRubySizeMF;
106*b1cdbd2cSJim Jagielski aControls[11] =&aRubyBelowCB;
107*b1cdbd2cSJim Jagielski aControls[12] =&aDisplayFL;
108*b1cdbd2cSJim Jagielski aControls[13] =&aDisplayCB;
109*b1cdbd2cSJim Jagielski aControls[14] =&aPrintCB;
110*b1cdbd2cSJim Jagielski aControls[15] =&aColorFT;
111*b1cdbd2cSJim Jagielski aControls[16] =&aColorLB;
112*b1cdbd2cSJim Jagielski aControls[17] =0;
113*b1cdbd2cSJim Jagielski
114*b1cdbd2cSJim Jagielski Link aLink = LINK(this, SwTextGridPage, CharorLineChangedHdl);
115*b1cdbd2cSJim Jagielski aCharsPerLineNF.SetUpHdl(aLink);
116*b1cdbd2cSJim Jagielski aCharsPerLineNF.SetDownHdl(aLink);
117*b1cdbd2cSJim Jagielski aCharsPerLineNF.SetLoseFocusHdl(aLink);
118*b1cdbd2cSJim Jagielski aLinesPerPageNF.SetUpHdl(aLink);
119*b1cdbd2cSJim Jagielski aLinesPerPageNF.SetDownHdl(aLink);
120*b1cdbd2cSJim Jagielski aLinesPerPageNF.SetLoseFocusHdl(aLink);
121*b1cdbd2cSJim Jagielski
122*b1cdbd2cSJim Jagielski Link aSizeLink = LINK(this, SwTextGridPage, TextSizeChangedHdl);
123*b1cdbd2cSJim Jagielski aTextSizeMF.SetUpHdl(aSizeLink);
124*b1cdbd2cSJim Jagielski aTextSizeMF.SetDownHdl(aSizeLink);
125*b1cdbd2cSJim Jagielski aTextSizeMF.SetLoseFocusHdl(aSizeLink);
126*b1cdbd2cSJim Jagielski aRubySizeMF.SetUpHdl(aSizeLink);
127*b1cdbd2cSJim Jagielski aRubySizeMF.SetDownHdl(aSizeLink);
128*b1cdbd2cSJim Jagielski aRubySizeMF.SetLoseFocusHdl(aSizeLink);
129*b1cdbd2cSJim Jagielski aCharWidthMF.SetUpHdl(aSizeLink);
130*b1cdbd2cSJim Jagielski aCharWidthMF.SetDownHdl(aSizeLink);
131*b1cdbd2cSJim Jagielski aCharWidthMF.SetLoseFocusHdl(aSizeLink);
132*b1cdbd2cSJim Jagielski
133*b1cdbd2cSJim Jagielski Link aGridTypeHdl = LINK(this, SwTextGridPage, GridTypeHdl);
134*b1cdbd2cSJim Jagielski aNoGridRB .SetClickHdl(aGridTypeHdl);
135*b1cdbd2cSJim Jagielski aLinesGridRB.SetClickHdl(aGridTypeHdl);
136*b1cdbd2cSJim Jagielski aCharsGridRB.SetClickHdl(aGridTypeHdl);
137*b1cdbd2cSJim Jagielski
138*b1cdbd2cSJim Jagielski Link aModifyLk = LINK(this, SwTextGridPage, GridModifyHdl);
139*b1cdbd2cSJim Jagielski aColorLB.SetSelectHdl(aModifyLk);
140*b1cdbd2cSJim Jagielski aPrintCB.SetClickHdl(aModifyLk);
141*b1cdbd2cSJim Jagielski aRubyBelowCB.SetClickHdl(aModifyLk);
142*b1cdbd2cSJim Jagielski
143*b1cdbd2cSJim Jagielski
144*b1cdbd2cSJim Jagielski aDisplayCB.SetClickHdl(LINK(this, SwTextGridPage, DisplayGridHdl));
145*b1cdbd2cSJim Jagielski
146*b1cdbd2cSJim Jagielski XColorListSharedPtr aColorTbl = XColorList::GetStdColorList();
147*b1cdbd2cSJim Jagielski aColorLB.InsertAutomaticEntry();
148*b1cdbd2cSJim Jagielski for( sal_uInt16 i = 0; i < aColorTbl->Count(); ++i )
149*b1cdbd2cSJim Jagielski {
150*b1cdbd2cSJim Jagielski XColorEntry* pEntry = aColorTbl->GetColor( i );
151*b1cdbd2cSJim Jagielski Color aColor = pEntry->GetColor();
152*b1cdbd2cSJim Jagielski String sName = pEntry->GetName();
153*b1cdbd2cSJim Jagielski aColorLB.InsertEntry( aColor, sName );
154*b1cdbd2cSJim Jagielski }
155*b1cdbd2cSJim Jagielski aColorLB.SetUpdateMode( sal_True );
156*b1cdbd2cSJim Jagielski //Get the default paper mode
157*b1cdbd2cSJim Jagielski SwView *pView = ::GetActiveView();
158*b1cdbd2cSJim Jagielski if( pView )
159*b1cdbd2cSJim Jagielski {
160*b1cdbd2cSJim Jagielski SwWrtShell* pSh = pView->GetWrtShellPtr();
161*b1cdbd2cSJim Jagielski if( pSh )
162*b1cdbd2cSJim Jagielski {
163*b1cdbd2cSJim Jagielski m_bSquaredMode = pSh->GetDoc()->IsSquaredPageMode();
164*b1cdbd2cSJim Jagielski }
165*b1cdbd2cSJim Jagielski }
166*b1cdbd2cSJim Jagielski if( m_bSquaredMode )
167*b1cdbd2cSJim Jagielski {
168*b1cdbd2cSJim Jagielski aRubySizeFT.Show();
169*b1cdbd2cSJim Jagielski aRubySizeMF.Show();
170*b1cdbd2cSJim Jagielski aRubyBelowCB.Show();
171*b1cdbd2cSJim Jagielski aSnapToCharsCB.Hide();
172*b1cdbd2cSJim Jagielski aCharWidthFT.Hide();
173*b1cdbd2cSJim Jagielski aCharWidthMF.Hide();
174*b1cdbd2cSJim Jagielski }
175*b1cdbd2cSJim Jagielski else
176*b1cdbd2cSJim Jagielski {
177*b1cdbd2cSJim Jagielski aRubySizeFT.Hide();
178*b1cdbd2cSJim Jagielski aRubySizeMF.Hide();
179*b1cdbd2cSJim Jagielski aRubyBelowCB.Hide();
180*b1cdbd2cSJim Jagielski aSnapToCharsCB.Show();
181*b1cdbd2cSJim Jagielski aCharWidthFT.Show();
182*b1cdbd2cSJim Jagielski aCharWidthMF.Show();
183*b1cdbd2cSJim Jagielski }
184*b1cdbd2cSJim Jagielski }
185*b1cdbd2cSJim Jagielski /*-- 06.02.2002 15:25:40---------------------------------------------------
186*b1cdbd2cSJim Jagielski
187*b1cdbd2cSJim Jagielski -----------------------------------------------------------------------*/
~SwTextGridPage()188*b1cdbd2cSJim Jagielski SwTextGridPage::~SwTextGridPage()
189*b1cdbd2cSJim Jagielski {
190*b1cdbd2cSJim Jagielski }
191*b1cdbd2cSJim Jagielski /*-- 06.02.2002 15:25:40---------------------------------------------------
192*b1cdbd2cSJim Jagielski
193*b1cdbd2cSJim Jagielski -----------------------------------------------------------------------*/
Create(Window * pParent,const SfxItemSet & rSet)194*b1cdbd2cSJim Jagielski SfxTabPage *SwTextGridPage::Create(Window *pParent, const SfxItemSet &rSet)
195*b1cdbd2cSJim Jagielski {
196*b1cdbd2cSJim Jagielski return new SwTextGridPage(pParent, rSet);
197*b1cdbd2cSJim Jagielski }
198*b1cdbd2cSJim Jagielski /*-- 06.02.2002 15:25:40---------------------------------------------------
199*b1cdbd2cSJim Jagielski
200*b1cdbd2cSJim Jagielski -----------------------------------------------------------------------*/
FillItemSet(SfxItemSet & rSet)201*b1cdbd2cSJim Jagielski sal_Bool SwTextGridPage::FillItemSet(SfxItemSet &rSet)
202*b1cdbd2cSJim Jagielski {
203*b1cdbd2cSJim Jagielski sal_Bool bRet = sal_False;
204*b1cdbd2cSJim Jagielski if(aNoGridRB.GetSavedValue() != aNoGridRB.IsChecked()||
205*b1cdbd2cSJim Jagielski aLinesGridRB.GetSavedValue() != aLinesGridRB.IsChecked()||
206*b1cdbd2cSJim Jagielski aLinesPerPageNF.GetSavedValue().ToInt32()
207*b1cdbd2cSJim Jagielski != aLinesPerPageNF.GetValue()||
208*b1cdbd2cSJim Jagielski aTextSizeMF.GetSavedValue().ToInt32() != aTextSizeMF.GetValue()||
209*b1cdbd2cSJim Jagielski aCharsPerLineNF.GetSavedValue().ToInt32()
210*b1cdbd2cSJim Jagielski != aCharsPerLineNF.GetValue()||
211*b1cdbd2cSJim Jagielski aSnapToCharsCB.GetSavedValue() != aSnapToCharsCB.IsChecked() ||
212*b1cdbd2cSJim Jagielski aRubySizeMF.GetSavedValue().ToInt32() != aRubySizeMF.GetValue()||
213*b1cdbd2cSJim Jagielski aCharWidthMF.GetSavedValue().ToInt32() != aCharWidthMF.GetValue()||
214*b1cdbd2cSJim Jagielski aRubyBelowCB.GetSavedValue() != aRubyBelowCB.IsChecked()||
215*b1cdbd2cSJim Jagielski aDisplayCB.GetSavedValue() != aDisplayCB.IsChecked()||
216*b1cdbd2cSJim Jagielski aPrintCB.GetSavedValue() != aPrintCB.IsChecked()||
217*b1cdbd2cSJim Jagielski aColorLB.GetSavedValue() != aColorLB.GetSelectEntryPos())
218*b1cdbd2cSJim Jagielski {
219*b1cdbd2cSJim Jagielski PutGridItem(rSet);
220*b1cdbd2cSJim Jagielski bRet = sal_True;
221*b1cdbd2cSJim Jagielski }
222*b1cdbd2cSJim Jagielski
223*b1cdbd2cSJim Jagielski return bRet;
224*b1cdbd2cSJim Jagielski }
225*b1cdbd2cSJim Jagielski /*-- 06.02.2002 15:25:40---------------------------------------------------
226*b1cdbd2cSJim Jagielski
227*b1cdbd2cSJim Jagielski -----------------------------------------------------------------------*/
Reset(const SfxItemSet & rSet)228*b1cdbd2cSJim Jagielski void SwTextGridPage::Reset(const SfxItemSet &rSet)
229*b1cdbd2cSJim Jagielski {
230*b1cdbd2cSJim Jagielski if(SFX_ITEM_AVAILABLE <= rSet.GetItemState(RES_TEXTGRID, sal_True))
231*b1cdbd2cSJim Jagielski {
232*b1cdbd2cSJim Jagielski const SwTextGridItem& rGridItem = (const SwTextGridItem&)rSet.Get(RES_TEXTGRID);
233*b1cdbd2cSJim Jagielski RadioButton* pButton = 0;
234*b1cdbd2cSJim Jagielski switch(rGridItem.GetGridType())
235*b1cdbd2cSJim Jagielski {
236*b1cdbd2cSJim Jagielski case GRID_NONE : pButton = &aNoGridRB; break;
237*b1cdbd2cSJim Jagielski case GRID_LINES_ONLY : pButton = &aLinesGridRB; break;
238*b1cdbd2cSJim Jagielski default: pButton = &aCharsGridRB;
239*b1cdbd2cSJim Jagielski }
240*b1cdbd2cSJim Jagielski pButton->Check();
241*b1cdbd2cSJim Jagielski aDisplayCB.Check(rGridItem.IsDisplayGrid());
242*b1cdbd2cSJim Jagielski GridTypeHdl(pButton);
243*b1cdbd2cSJim Jagielski aSnapToCharsCB.Check(rGridItem.IsSnapToChars());
244*b1cdbd2cSJim Jagielski aLinesPerPageNF.SetValue(rGridItem.GetLines());
245*b1cdbd2cSJim Jagielski m_nRubyUserValue = rGridItem.GetBaseHeight();
246*b1cdbd2cSJim Jagielski m_bRubyUserValue = sal_True;
247*b1cdbd2cSJim Jagielski aTextSizeMF.SetValue(aTextSizeMF.Normalize(m_nRubyUserValue), FUNIT_TWIP);
248*b1cdbd2cSJim Jagielski aRubySizeMF.SetValue(aRubySizeMF.Normalize(rGridItem.GetRubyHeight()), FUNIT_TWIP);
249*b1cdbd2cSJim Jagielski aCharWidthMF.SetValue(aCharWidthMF.Normalize(rGridItem.GetBaseWidth()), FUNIT_TWIP);
250*b1cdbd2cSJim Jagielski aRubyBelowCB.Check(rGridItem.IsRubyTextBelow());
251*b1cdbd2cSJim Jagielski aPrintCB.Check(rGridItem.IsPrintGrid());
252*b1cdbd2cSJim Jagielski aColorLB.SelectEntry(rGridItem.GetColor());
253*b1cdbd2cSJim Jagielski }
254*b1cdbd2cSJim Jagielski UpdatePageSize(rSet);
255*b1cdbd2cSJim Jagielski
256*b1cdbd2cSJim Jagielski aNoGridRB.SaveValue();
257*b1cdbd2cSJim Jagielski aLinesGridRB.SaveValue();
258*b1cdbd2cSJim Jagielski aSnapToCharsCB.SaveValue();
259*b1cdbd2cSJim Jagielski aLinesPerPageNF.SaveValue();
260*b1cdbd2cSJim Jagielski aTextSizeMF.SaveValue();
261*b1cdbd2cSJim Jagielski aCharsPerLineNF.SaveValue();
262*b1cdbd2cSJim Jagielski aRubySizeMF.SaveValue();
263*b1cdbd2cSJim Jagielski aCharWidthMF.SaveValue();
264*b1cdbd2cSJim Jagielski aRubyBelowCB.SaveValue();
265*b1cdbd2cSJim Jagielski aDisplayCB.SaveValue();
266*b1cdbd2cSJim Jagielski aPrintCB.SaveValue();
267*b1cdbd2cSJim Jagielski aColorLB.SaveValue();
268*b1cdbd2cSJim Jagielski }
269*b1cdbd2cSJim Jagielski /*-- 06.02.2002 15:25:41---------------------------------------------------
270*b1cdbd2cSJim Jagielski
271*b1cdbd2cSJim Jagielski -----------------------------------------------------------------------*/
ActivatePage(const SfxItemSet & rSet)272*b1cdbd2cSJim Jagielski void SwTextGridPage::ActivatePage( const SfxItemSet& rSet )
273*b1cdbd2cSJim Jagielski {
274*b1cdbd2cSJim Jagielski aExampleWN.Hide();
275*b1cdbd2cSJim Jagielski aExampleWN.UpdateExample( rSet );
276*b1cdbd2cSJim Jagielski UpdatePageSize(rSet);
277*b1cdbd2cSJim Jagielski aExampleWN.Show();
278*b1cdbd2cSJim Jagielski aExampleWN.Invalidate();
279*b1cdbd2cSJim Jagielski }
280*b1cdbd2cSJim Jagielski /*-- 06.02.2002 15:25:41---------------------------------------------------
281*b1cdbd2cSJim Jagielski
282*b1cdbd2cSJim Jagielski -----------------------------------------------------------------------*/
DeactivatePage(SfxItemSet *)283*b1cdbd2cSJim Jagielski int SwTextGridPage::DeactivatePage( SfxItemSet* )
284*b1cdbd2cSJim Jagielski {
285*b1cdbd2cSJim Jagielski return LEAVE_PAGE;
286*b1cdbd2cSJim Jagielski }
287*b1cdbd2cSJim Jagielski /* -----------------------------08.02.2002 11:57------------------------------
288*b1cdbd2cSJim Jagielski
289*b1cdbd2cSJim Jagielski ---------------------------------------------------------------------------*/
PutGridItem(SfxItemSet & rSet)290*b1cdbd2cSJim Jagielski void SwTextGridPage::PutGridItem(SfxItemSet& rSet)
291*b1cdbd2cSJim Jagielski {
292*b1cdbd2cSJim Jagielski SwTextGridItem aGridItem;
293*b1cdbd2cSJim Jagielski aGridItem.SetGridType(aNoGridRB.IsChecked() ? GRID_NONE :
294*b1cdbd2cSJim Jagielski aLinesGridRB.IsChecked() ? GRID_LINES_ONLY : GRID_LINES_CHARS );
295*b1cdbd2cSJim Jagielski aGridItem.SetSnapToChars(aSnapToCharsCB.IsChecked());
296*b1cdbd2cSJim Jagielski aGridItem.SetLines( static_cast< sal_uInt16 >(aLinesPerPageNF.GetValue()) );
297*b1cdbd2cSJim Jagielski aGridItem.SetBaseHeight( static_cast< sal_uInt16 >(
298*b1cdbd2cSJim Jagielski m_bRubyUserValue ? m_nRubyUserValue :
299*b1cdbd2cSJim Jagielski aTextSizeMF.Denormalize(aTextSizeMF.GetValue(FUNIT_TWIP))) );
300*b1cdbd2cSJim Jagielski aGridItem.SetRubyHeight( static_cast< sal_uInt16 >(aRubySizeMF.Denormalize(aRubySizeMF.GetValue(FUNIT_TWIP))) );
301*b1cdbd2cSJim Jagielski aGridItem.SetBaseWidth( static_cast< sal_uInt16 >(aCharWidthMF.Denormalize(aCharWidthMF.GetValue(FUNIT_TWIP))) );
302*b1cdbd2cSJim Jagielski aGridItem.SetRubyTextBelow(aRubyBelowCB.IsChecked());
303*b1cdbd2cSJim Jagielski aGridItem.SetSquaredMode(m_bSquaredMode);
304*b1cdbd2cSJim Jagielski aGridItem.SetDisplayGrid(aDisplayCB.IsChecked());
305*b1cdbd2cSJim Jagielski aGridItem.SetPrintGrid(aPrintCB.IsChecked());
306*b1cdbd2cSJim Jagielski aGridItem.SetColor(aColorLB.GetSelectEntryColor());
307*b1cdbd2cSJim Jagielski rSet.Put(aGridItem);
308*b1cdbd2cSJim Jagielski }
309*b1cdbd2cSJim Jagielski /* -----------------------------08.02.2002 10:54------------------------------
310*b1cdbd2cSJim Jagielski
311*b1cdbd2cSJim Jagielski ---------------------------------------------------------------------------*/
UpdatePageSize(const SfxItemSet & rSet)312*b1cdbd2cSJim Jagielski void SwTextGridPage::UpdatePageSize(const SfxItemSet& rSet)
313*b1cdbd2cSJim Jagielski {
314*b1cdbd2cSJim Jagielski if( SFX_ITEM_UNKNOWN != rSet.GetItemState( RES_FRAMEDIR, sal_True ))
315*b1cdbd2cSJim Jagielski {
316*b1cdbd2cSJim Jagielski const SvxFrameDirectionItem& rDirItem =
317*b1cdbd2cSJim Jagielski (const SvxFrameDirectionItem&)rSet.Get(RES_FRAMEDIR);
318*b1cdbd2cSJim Jagielski m_bVertical = rDirItem.GetValue() == FRMDIR_VERT_TOP_RIGHT||
319*b1cdbd2cSJim Jagielski rDirItem.GetValue() == FRMDIR_VERT_TOP_LEFT;
320*b1cdbd2cSJim Jagielski }
321*b1cdbd2cSJim Jagielski
322*b1cdbd2cSJim Jagielski if( SFX_ITEM_SET == rSet.GetItemState( SID_ATTR_PAGE_SIZE ))
323*b1cdbd2cSJim Jagielski {
324*b1cdbd2cSJim Jagielski const SvxSizeItem& rSize = (const SvxSizeItem&)rSet.Get(
325*b1cdbd2cSJim Jagielski SID_ATTR_PAGE_SIZE);
326*b1cdbd2cSJim Jagielski const SvxLRSpaceItem& rLRSpace = (const SvxLRSpaceItem&)rSet.Get(
327*b1cdbd2cSJim Jagielski RES_LR_SPACE );
328*b1cdbd2cSJim Jagielski const SvxULSpaceItem& rULSpace = (const SvxULSpaceItem&)rSet.Get(
329*b1cdbd2cSJim Jagielski RES_UL_SPACE );
330*b1cdbd2cSJim Jagielski const SvxBoxItem& rBox = (const SvxBoxItem&) rSet.Get(RES_BOX);
331*b1cdbd2cSJim Jagielski sal_Int32 nDistanceLR = rLRSpace.GetLeft() + rLRSpace.GetRight();
332*b1cdbd2cSJim Jagielski sal_Int32 nDistanceUL = rULSpace.GetUpper() + rULSpace.GetLower();
333*b1cdbd2cSJim Jagielski
334*b1cdbd2cSJim Jagielski sal_Int32 nValue1 = rSize.GetSize().Height() - nDistanceUL -
335*b1cdbd2cSJim Jagielski rBox.GetDistance(BOX_LINE_TOP) -
336*b1cdbd2cSJim Jagielski rBox.GetDistance(BOX_LINE_BOTTOM);
337*b1cdbd2cSJim Jagielski sal_Int32 nValue2 = rSize.GetSize().Width() - nDistanceLR -
338*b1cdbd2cSJim Jagielski rBox.GetDistance(BOX_LINE_LEFT) -
339*b1cdbd2cSJim Jagielski rBox.GetDistance(BOX_LINE_RIGHT);
340*b1cdbd2cSJim Jagielski if(m_bVertical)
341*b1cdbd2cSJim Jagielski {
342*b1cdbd2cSJim Jagielski m_aPageSize.Width() = nValue1;
343*b1cdbd2cSJim Jagielski m_aPageSize.Height() = nValue2;
344*b1cdbd2cSJim Jagielski }
345*b1cdbd2cSJim Jagielski else
346*b1cdbd2cSJim Jagielski {
347*b1cdbd2cSJim Jagielski m_aPageSize.Width() = nValue2;
348*b1cdbd2cSJim Jagielski m_aPageSize.Height() = nValue1;
349*b1cdbd2cSJim Jagielski }
350*b1cdbd2cSJim Jagielski
351*b1cdbd2cSJim Jagielski sal_Int32 nTextSize = static_cast< sal_Int32 >(m_bRubyUserValue ?
352*b1cdbd2cSJim Jagielski m_nRubyUserValue :
353*b1cdbd2cSJim Jagielski aTextSizeMF.Denormalize(aTextSizeMF.GetValue(FUNIT_TWIP)));
354*b1cdbd2cSJim Jagielski
355*b1cdbd2cSJim Jagielski if ( m_bSquaredMode )
356*b1cdbd2cSJim Jagielski {
357*b1cdbd2cSJim Jagielski aCharsPerLineNF.SetValue(m_aPageSize.Width() / nTextSize);
358*b1cdbd2cSJim Jagielski }
359*b1cdbd2cSJim Jagielski else
360*b1cdbd2cSJim Jagielski {
361*b1cdbd2cSJim Jagielski sal_Int32 nTextWidth = static_cast< sal_Int32 >(aCharWidthMF.Denormalize(aCharWidthMF.GetValue(FUNIT_TWIP)));
362*b1cdbd2cSJim Jagielski aLinesPerPageNF.SetValue(m_aPageSize.Height() / nTextSize);
363*b1cdbd2cSJim Jagielski if (nTextWidth)
364*b1cdbd2cSJim Jagielski aCharsPerLineNF.SetValue(m_aPageSize.Width() / nTextWidth);
365*b1cdbd2cSJim Jagielski else
366*b1cdbd2cSJim Jagielski aCharsPerLineNF.SetValue( 45 );
367*b1cdbd2cSJim Jagielski }
368*b1cdbd2cSJim Jagielski }
369*b1cdbd2cSJim Jagielski }
370*b1cdbd2cSJim Jagielski /* -----------------------------06.02.2002 15:24------------------------------
371*b1cdbd2cSJim Jagielski
372*b1cdbd2cSJim Jagielski ---------------------------------------------------------------------------*/
GetRanges()373*b1cdbd2cSJim Jagielski sal_uInt16* SwTextGridPage::GetRanges()
374*b1cdbd2cSJim Jagielski {
375*b1cdbd2cSJim Jagielski static sal_uInt16 __FAR_DATA aPageRg[] = {
376*b1cdbd2cSJim Jagielski RES_TEXTGRID, RES_TEXTGRID,
377*b1cdbd2cSJim Jagielski 0};
378*b1cdbd2cSJim Jagielski return aPageRg;
379*b1cdbd2cSJim Jagielski }
380*b1cdbd2cSJim Jagielski /* -----------------------------08.02.2002 10:56------------------------------
381*b1cdbd2cSJim Jagielski
382*b1cdbd2cSJim Jagielski ---------------------------------------------------------------------------*/
IMPL_LINK(SwTextGridPage,CharorLineChangedHdl,SpinField *,pField)383*b1cdbd2cSJim Jagielski IMPL_LINK(SwTextGridPage, CharorLineChangedHdl, SpinField*, pField)
384*b1cdbd2cSJim Jagielski {
385*b1cdbd2cSJim Jagielski //if in squared mode
386*b1cdbd2cSJim Jagielski if ( m_bSquaredMode )
387*b1cdbd2cSJim Jagielski {
388*b1cdbd2cSJim Jagielski if(&aCharsPerLineNF == pField)
389*b1cdbd2cSJim Jagielski {
390*b1cdbd2cSJim Jagielski long nWidth = (long)(m_aPageSize.Width() / aCharsPerLineNF.GetValue());
391*b1cdbd2cSJim Jagielski aTextSizeMF.SetValue(aTextSizeMF.Normalize(nWidth), FUNIT_TWIP);
392*b1cdbd2cSJim Jagielski //prevent rounding errors in the MetricField by saving the used value
393*b1cdbd2cSJim Jagielski m_nRubyUserValue = nWidth;
394*b1cdbd2cSJim Jagielski m_bRubyUserValue = sal_True;
395*b1cdbd2cSJim Jagielski
396*b1cdbd2cSJim Jagielski }
397*b1cdbd2cSJim Jagielski //set maximum line per page
398*b1cdbd2cSJim Jagielski {
399*b1cdbd2cSJim Jagielski sal_Int32 nMaxLines = static_cast< sal_Int32 >(m_aPageSize.Height() /
400*b1cdbd2cSJim Jagielski ( aTextSizeMF.Denormalize(aTextSizeMF.GetValue(FUNIT_TWIP)) +
401*b1cdbd2cSJim Jagielski aRubySizeMF.Denormalize(aRubySizeMF.GetValue(FUNIT_TWIP))));
402*b1cdbd2cSJim Jagielski aLinesPerPageNF.SetMax(nMaxLines);
403*b1cdbd2cSJim Jagielski }
404*b1cdbd2cSJim Jagielski }
405*b1cdbd2cSJim Jagielski else//in normal mode
406*b1cdbd2cSJim Jagielski {
407*b1cdbd2cSJim Jagielski if(&aLinesPerPageNF == pField)
408*b1cdbd2cSJim Jagielski {
409*b1cdbd2cSJim Jagielski long nHeight = static_cast< sal_Int32 >(m_aPageSize.Height() / aLinesPerPageNF.GetValue());
410*b1cdbd2cSJim Jagielski aTextSizeMF.SetValue(aTextSizeMF.Normalize(nHeight), FUNIT_TWIP);
411*b1cdbd2cSJim Jagielski aRubySizeMF.SetValue(0, FUNIT_TWIP);
412*b1cdbd2cSJim Jagielski
413*b1cdbd2cSJim Jagielski m_nRubyUserValue = nHeight;
414*b1cdbd2cSJim Jagielski m_bRubyUserValue = sal_True;
415*b1cdbd2cSJim Jagielski }
416*b1cdbd2cSJim Jagielski else if (&aCharsPerLineNF == pField)
417*b1cdbd2cSJim Jagielski {
418*b1cdbd2cSJim Jagielski long nWidth = static_cast< sal_Int32 >(m_aPageSize.Width() / aCharsPerLineNF.GetValue());
419*b1cdbd2cSJim Jagielski aCharWidthMF.SetValue(aCharWidthMF.Normalize(nWidth), FUNIT_TWIP);
420*b1cdbd2cSJim Jagielski }
421*b1cdbd2cSJim Jagielski }
422*b1cdbd2cSJim Jagielski GridModifyHdl(0);
423*b1cdbd2cSJim Jagielski return 0;
424*b1cdbd2cSJim Jagielski }
425*b1cdbd2cSJim Jagielski /* -----------------------------04.09.2006 15:46------------------------------
426*b1cdbd2cSJim Jagielski ---------------------------------------------------------------------------*/
IMPL_LINK(SwTextGridPage,TextSizeChangedHdl,SpinField *,pField)427*b1cdbd2cSJim Jagielski IMPL_LINK(SwTextGridPage, TextSizeChangedHdl, SpinField*, pField)
428*b1cdbd2cSJim Jagielski {
429*b1cdbd2cSJim Jagielski //if in squared mode
430*b1cdbd2cSJim Jagielski if( m_bSquaredMode )
431*b1cdbd2cSJim Jagielski {
432*b1cdbd2cSJim Jagielski if (&aTextSizeMF == pField)
433*b1cdbd2cSJim Jagielski {
434*b1cdbd2cSJim Jagielski sal_Int32 nTextSize = static_cast< sal_Int32 >(aTextSizeMF.Denormalize(aTextSizeMF.GetValue(FUNIT_TWIP)));
435*b1cdbd2cSJim Jagielski aCharsPerLineNF.SetValue(m_aPageSize.Width() / nTextSize);
436*b1cdbd2cSJim Jagielski m_bRubyUserValue = sal_False;
437*b1cdbd2cSJim Jagielski }
438*b1cdbd2cSJim Jagielski //set maximum line per page
439*b1cdbd2cSJim Jagielski {
440*b1cdbd2cSJim Jagielski sal_Int32 nMaxLines = static_cast< sal_Int32 >(m_aPageSize.Height() /
441*b1cdbd2cSJim Jagielski ( aTextSizeMF.Denormalize(aTextSizeMF.GetValue(FUNIT_TWIP)) +
442*b1cdbd2cSJim Jagielski aRubySizeMF.Denormalize(aRubySizeMF.GetValue(FUNIT_TWIP))));
443*b1cdbd2cSJim Jagielski aLinesPerPageNF.SetMax(nMaxLines);
444*b1cdbd2cSJim Jagielski }
445*b1cdbd2cSJim Jagielski }
446*b1cdbd2cSJim Jagielski else
447*b1cdbd2cSJim Jagielski {
448*b1cdbd2cSJim Jagielski if (&aTextSizeMF == pField)
449*b1cdbd2cSJim Jagielski {
450*b1cdbd2cSJim Jagielski sal_Int32 nTextSize = static_cast< sal_Int32 >(aTextSizeMF.Denormalize(aTextSizeMF.GetValue(FUNIT_TWIP)));
451*b1cdbd2cSJim Jagielski aLinesPerPageNF.SetValue(m_aPageSize.Height() / nTextSize);
452*b1cdbd2cSJim Jagielski m_bRubyUserValue = sal_False;
453*b1cdbd2cSJim Jagielski }
454*b1cdbd2cSJim Jagielski else if (&aCharWidthMF == pField)
455*b1cdbd2cSJim Jagielski {
456*b1cdbd2cSJim Jagielski sal_Int32 nTextWidth = static_cast< sal_Int32 >(aCharWidthMF.Denormalize(aCharWidthMF.GetValue(FUNIT_TWIP)));
457*b1cdbd2cSJim Jagielski if (nTextWidth)
458*b1cdbd2cSJim Jagielski aCharsPerLineNF.SetValue(m_aPageSize.Width() / nTextWidth);
459*b1cdbd2cSJim Jagielski else
460*b1cdbd2cSJim Jagielski aCharsPerLineNF.SetValue( 45 );
461*b1cdbd2cSJim Jagielski }
462*b1cdbd2cSJim Jagielski //rubySize is disabled
463*b1cdbd2cSJim Jagielski }
464*b1cdbd2cSJim Jagielski GridModifyHdl(0);
465*b1cdbd2cSJim Jagielski return 0;
466*b1cdbd2cSJim Jagielski }
467*b1cdbd2cSJim Jagielski /* -----------------------------22.04.2002 14:53------------------------------
468*b1cdbd2cSJim Jagielski
469*b1cdbd2cSJim Jagielski ---------------------------------------------------------------------------*/
IMPL_LINK(SwTextGridPage,GridTypeHdl,RadioButton *,pButton)470*b1cdbd2cSJim Jagielski IMPL_LINK(SwTextGridPage, GridTypeHdl, RadioButton*, pButton)
471*b1cdbd2cSJim Jagielski {
472*b1cdbd2cSJim Jagielski sal_Bool bEnable = &aNoGridRB != pButton;
473*b1cdbd2cSJim Jagielski sal_Int32 nIndex = 0;
474*b1cdbd2cSJim Jagielski while(aControls[nIndex])
475*b1cdbd2cSJim Jagielski aControls[nIndex++]->Enable(bEnable);
476*b1cdbd2cSJim Jagielski //one special case
477*b1cdbd2cSJim Jagielski if(bEnable)
478*b1cdbd2cSJim Jagielski DisplayGridHdl(&aDisplayCB);
479*b1cdbd2cSJim Jagielski
480*b1cdbd2cSJim Jagielski bEnable = &aCharsGridRB == pButton;
481*b1cdbd2cSJim Jagielski aSnapToCharsCB.Enable(bEnable);
482*b1cdbd2cSJim Jagielski
483*b1cdbd2cSJim Jagielski bEnable = &aLinesGridRB == pButton;
484*b1cdbd2cSJim Jagielski if(bEnable && !m_bSquaredMode )
485*b1cdbd2cSJim Jagielski {
486*b1cdbd2cSJim Jagielski aCharsPerLineFT.Enable(sal_False);
487*b1cdbd2cSJim Jagielski aCharsPerLineNF.Enable(sal_False);
488*b1cdbd2cSJim Jagielski aCharWidthFT.Enable(sal_False);
489*b1cdbd2cSJim Jagielski aCharWidthMF.Enable(sal_False);
490*b1cdbd2cSJim Jagielski }
491*b1cdbd2cSJim Jagielski
492*b1cdbd2cSJim Jagielski GridModifyHdl(0);
493*b1cdbd2cSJim Jagielski return 0;
494*b1cdbd2cSJim Jagielski }
495*b1cdbd2cSJim Jagielski /* -----------------------------22.04.2002 15:46------------------------------
496*b1cdbd2cSJim Jagielski
497*b1cdbd2cSJim Jagielski ---------------------------------------------------------------------------*/
IMPL_LINK(SwTextGridPage,DisplayGridHdl,CheckBox *,EMPTYARG)498*b1cdbd2cSJim Jagielski IMPL_LINK(SwTextGridPage, DisplayGridHdl, CheckBox*, EMPTYARG)
499*b1cdbd2cSJim Jagielski {
500*b1cdbd2cSJim Jagielski aPrintCB.Enable(aDisplayCB.IsChecked());
501*b1cdbd2cSJim Jagielski return 0;
502*b1cdbd2cSJim Jagielski }
503*b1cdbd2cSJim Jagielski /* -----------------------------08.02.2002 11:54------------------------------
504*b1cdbd2cSJim Jagielski
505*b1cdbd2cSJim Jagielski ---------------------------------------------------------------------------*/
IMPL_LINK(SwTextGridPage,GridModifyHdl,void *,EMPTYARG)506*b1cdbd2cSJim Jagielski IMPL_LINK(SwTextGridPage, GridModifyHdl, void*, EMPTYARG)
507*b1cdbd2cSJim Jagielski {
508*b1cdbd2cSJim Jagielski const SfxItemSet& rOldSet = GetItemSet();
509*b1cdbd2cSJim Jagielski SfxItemSet aSet(rOldSet);
510*b1cdbd2cSJim Jagielski const SfxItemSet* pExSet = GetTabDialog()->GetExampleSet();
511*b1cdbd2cSJim Jagielski if(pExSet)
512*b1cdbd2cSJim Jagielski aSet.Put(*pExSet);
513*b1cdbd2cSJim Jagielski PutGridItem(aSet);
514*b1cdbd2cSJim Jagielski aExampleWN.UpdateExample(aSet);
515*b1cdbd2cSJim Jagielski return 0;
516*b1cdbd2cSJim Jagielski }
517*b1cdbd2cSJim Jagielski
518