xref: /aoo4110/main/sw/source/ui/misc/pggrid.cxx (revision b1cdbd2c)
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