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 #include <com/sun/star/i18n/WordType.hpp>
28*b1cdbd2cSJim Jagielski #include <com/sun/star/ui/dialogs/XExecutableDialog.hpp>
29*b1cdbd2cSJim Jagielski
30*b1cdbd2cSJim Jagielski #include <comphelper/processfactory.hxx>
31*b1cdbd2cSJim Jagielski #include <svx/dialogs.hrc>
32*b1cdbd2cSJim Jagielski #include <hintids.hxx>
33*b1cdbd2cSJim Jagielski #include <cmdid.h>
34*b1cdbd2cSJim Jagielski #include <helpid.h>
35*b1cdbd2cSJim Jagielski
36*b1cdbd2cSJim Jagielski #include <i18npool/mslangid.hxx>
37*b1cdbd2cSJim Jagielski #include <svl/languageoptions.hxx>
38*b1cdbd2cSJim Jagielski #include <editeng/langitem.hxx>
39*b1cdbd2cSJim Jagielski #include <svtools/langtab.hxx>
40*b1cdbd2cSJim Jagielski #include <svl/slstitm.hxx>
41*b1cdbd2cSJim Jagielski #include <string.h>
42*b1cdbd2cSJim Jagielski #include <svl/stritem.hxx>
43*b1cdbd2cSJim Jagielski #include <svx/htmlmode.hxx>
44*b1cdbd2cSJim Jagielski #include <svl/whiter.hxx>
45*b1cdbd2cSJim Jagielski #include <sfx2/bindings.hxx>
46*b1cdbd2cSJim Jagielski #include <sfx2/dispatch.hxx>
47*b1cdbd2cSJim Jagielski #include <sfx2/objitem.hxx>
48*b1cdbd2cSJim Jagielski #include <vcl/msgbox.hxx>
49*b1cdbd2cSJim Jagielski #include <vcl/unohelp2.hxx>
50*b1cdbd2cSJim Jagielski #include <sfx2/request.hxx>
51*b1cdbd2cSJim Jagielski #include <svl/eitem.hxx>
52*b1cdbd2cSJim Jagielski #include <svl/macitem.hxx>
53*b1cdbd2cSJim Jagielski #include <editeng/lrspitem.hxx>
54*b1cdbd2cSJim Jagielski #include <editeng/ulspitem.hxx>
55*b1cdbd2cSJim Jagielski #include <editeng/colritem.hxx>
56*b1cdbd2cSJim Jagielski #include <editeng/tstpitem.hxx>
57*b1cdbd2cSJim Jagielski #include <editeng/brshitem.hxx>
58*b1cdbd2cSJim Jagielski #include <editeng/svxacorr.hxx>
59*b1cdbd2cSJim Jagielski #include <svl/cjkoptions.hxx>
60*b1cdbd2cSJim Jagielski #include <svl/ctloptions.hxx>
61*b1cdbd2cSJim Jagielski #include <IDocumentSettingAccess.hxx>
62*b1cdbd2cSJim Jagielski #include <charfmt.hxx>
63*b1cdbd2cSJim Jagielski #include <editeng/fontitem.hxx>
64*b1cdbd2cSJim Jagielski #include <svx/SmartTagItem.hxx>
65*b1cdbd2cSJim Jagielski #include <svx/dialmgr.hxx>
66*b1cdbd2cSJim Jagielski #include <fmtinfmt.hxx>
67*b1cdbd2cSJim Jagielski #include <swwait.hxx>
68*b1cdbd2cSJim Jagielski #include <wrtsh.hxx>
69*b1cdbd2cSJim Jagielski #include <wview.hxx>
70*b1cdbd2cSJim Jagielski #include <swmodule.hxx>
71*b1cdbd2cSJim Jagielski #include <viewopt.hxx>
72*b1cdbd2cSJim Jagielski #include <uitool.hxx>
73*b1cdbd2cSJim Jagielski #include <swevent.hxx>
74*b1cdbd2cSJim Jagielski #include <fmthdft.hxx>
75*b1cdbd2cSJim Jagielski #include <pagedesc.hxx>
76*b1cdbd2cSJim Jagielski #include <textsh.hxx>
77*b1cdbd2cSJim Jagielski #include <IMark.hxx>
78*b1cdbd2cSJim Jagielski #include <swdtflvr.hxx>
79*b1cdbd2cSJim Jagielski #include <docstat.hxx>
80*b1cdbd2cSJim Jagielski #include <outline.hxx>
81*b1cdbd2cSJim Jagielski #include <tablemgr.hxx>
82*b1cdbd2cSJim Jagielski #include <swundo.hxx> // fuer Undo-IDs
83*b1cdbd2cSJim Jagielski #include <reffld.hxx>
84*b1cdbd2cSJim Jagielski #include <docsh.hxx>
85*b1cdbd2cSJim Jagielski #include <mdiexp.hxx>
86*b1cdbd2cSJim Jagielski #include <inputwin.hxx>
87*b1cdbd2cSJim Jagielski #include <pardlg.hxx>
88*b1cdbd2cSJim Jagielski #include <frmatr.hxx>
89*b1cdbd2cSJim Jagielski #include <fmtcol.hxx>
90*b1cdbd2cSJim Jagielski #include <cellatr.hxx>
91*b1cdbd2cSJim Jagielski #include <edtwin.hxx>
92*b1cdbd2cSJim Jagielski #include <redlndlg.hxx>
93*b1cdbd2cSJim Jagielski #include "fldmgr.hxx"
94*b1cdbd2cSJim Jagielski
95*b1cdbd2cSJim Jagielski #include <globals.hrc>
96*b1cdbd2cSJim Jagielski #include <shells.hrc>
97*b1cdbd2cSJim Jagielski #include <app.hrc>
98*b1cdbd2cSJim Jagielski #include <web.hrc>
99*b1cdbd2cSJim Jagielski #include "paratr.hxx"
100*b1cdbd2cSJim Jagielski #include <crsskip.hxx>
101*b1cdbd2cSJim Jagielski #include <docstat.hxx>
102*b1cdbd2cSJim Jagielski #include <vcl/svapp.hxx>
103*b1cdbd2cSJim Jagielski #include <sfx2/app.hxx>
104*b1cdbd2cSJim Jagielski #include <breakit.hxx>
105*b1cdbd2cSJim Jagielski
106*b1cdbd2cSJim Jagielski #include <SwSmartTagMgr.hxx>
107*b1cdbd2cSJim Jagielski
108*b1cdbd2cSJim Jagielski #include <editeng/acorrcfg.hxx>
109*b1cdbd2cSJim Jagielski #include "swabstdlg.hxx"
110*b1cdbd2cSJim Jagielski #include "misc.hrc"
111*b1cdbd2cSJim Jagielski #include "chrdlg.hrc"
112*b1cdbd2cSJim Jagielski #include <IDocumentStatistics.hxx>
113*b1cdbd2cSJim Jagielski
114*b1cdbd2cSJim Jagielski #include <sfx2/sfxdlg.hxx>
115*b1cdbd2cSJim Jagielski #include <svl/languageoptions.hxx>
116*b1cdbd2cSJim Jagielski #include <unotools/lingucfg.hxx>
117*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/XPropertySet.hpp>
118*b1cdbd2cSJim Jagielski #include <com/sun/star/util/XChangesBatch.hpp>
119*b1cdbd2cSJim Jagielski #include <com/sun/star/uno/Any.hxx>
120*b1cdbd2cSJim Jagielski #include <editeng/unolingu.hxx>
121*b1cdbd2cSJim Jagielski #include <unotools/syslocaleoptions.hxx>
122*b1cdbd2cSJim Jagielski #include <doc.hxx>
123*b1cdbd2cSJim Jagielski #include <view.hxx>
124*b1cdbd2cSJim Jagielski #include <ndtxt.hxx>
125*b1cdbd2cSJim Jagielski #include <pam.hxx>
126*b1cdbd2cSJim Jagielski #include <sfx2/objface.hxx>
127*b1cdbd2cSJim Jagielski #include <langhelper.hxx>
128*b1cdbd2cSJim Jagielski
129*b1cdbd2cSJim Jagielski #ifndef _NBDTMGFACT_HXX
130*b1cdbd2cSJim Jagielski #include <svx/nbdtmgfact.hxx>
131*b1cdbd2cSJim Jagielski #endif
132*b1cdbd2cSJim Jagielski #ifndef _NBDTMG_HXX
133*b1cdbd2cSJim Jagielski #include <svx/nbdtmg.hxx>
134*b1cdbd2cSJim Jagielski #endif
135*b1cdbd2cSJim Jagielski
136*b1cdbd2cSJim Jagielski
137*b1cdbd2cSJim Jagielski #include <numrule.hxx>
138*b1cdbd2cSJim Jagielski
139*b1cdbd2cSJim Jagielski
140*b1cdbd2cSJim Jagielski using namespace ::com::sun::star;
141*b1cdbd2cSJim Jagielski using namespace svx::sidebar;
142*b1cdbd2cSJim Jagielski
143*b1cdbd2cSJim Jagielski
lcl_CharDialog(SwWrtShell & rWrtSh,sal_Bool bUseDialog,sal_uInt16 nSlot,const SfxItemSet * pArgs,SfxRequest * pReq)144*b1cdbd2cSJim Jagielski void lcl_CharDialog( SwWrtShell &rWrtSh, sal_Bool bUseDialog, sal_uInt16 nSlot,const SfxItemSet *pArgs, SfxRequest *pReq )
145*b1cdbd2cSJim Jagielski {
146*b1cdbd2cSJim Jagielski FieldUnit eMetric = ::GetDfltMetric(0 != PTR_CAST(SwWebView, &rWrtSh.GetView()));
147*b1cdbd2cSJim Jagielski SW_MOD()->PutItem(SfxUInt16Item(SID_ATTR_METRIC, static_cast< sal_uInt16 >(eMetric)));
148*b1cdbd2cSJim Jagielski SfxItemSet aCoreSet( rWrtSh.GetView().GetPool(),
149*b1cdbd2cSJim Jagielski RES_CHRATR_BEGIN, RES_CHRATR_END-1,
150*b1cdbd2cSJim Jagielski RES_TXTATR_INETFMT, RES_TXTATR_INETFMT,
151*b1cdbd2cSJim Jagielski RES_BACKGROUND, RES_BACKGROUND,
152*b1cdbd2cSJim Jagielski FN_PARAM_SELECTION, FN_PARAM_SELECTION,
153*b1cdbd2cSJim Jagielski SID_HTML_MODE, SID_HTML_MODE,
154*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_WIDTH_FIT_TO_LINE, SID_ATTR_CHAR_WIDTH_FIT_TO_LINE,
155*b1cdbd2cSJim Jagielski 0 );
156*b1cdbd2cSJim Jagielski rWrtSh.GetCurAttr( aCoreSet );
157*b1cdbd2cSJim Jagielski sal_Bool bSel = rWrtSh.HasSelection();
158*b1cdbd2cSJim Jagielski sal_Bool bSelectionPut = sal_False;
159*b1cdbd2cSJim Jagielski if(bSel || rWrtSh.IsInWord())
160*b1cdbd2cSJim Jagielski {
161*b1cdbd2cSJim Jagielski if(!bSel)
162*b1cdbd2cSJim Jagielski {
163*b1cdbd2cSJim Jagielski rWrtSh.StartAction();
164*b1cdbd2cSJim Jagielski rWrtSh.Push();
165*b1cdbd2cSJim Jagielski if(!rWrtSh.SelectTxtAttr( RES_TXTATR_INETFMT ))
166*b1cdbd2cSJim Jagielski rWrtSh.SelWrd();
167*b1cdbd2cSJim Jagielski }
168*b1cdbd2cSJim Jagielski aCoreSet.Put(SfxStringItem(FN_PARAM_SELECTION, rWrtSh.GetSelTxt()));
169*b1cdbd2cSJim Jagielski bSelectionPut = sal_True;
170*b1cdbd2cSJim Jagielski if(!bSel)
171*b1cdbd2cSJim Jagielski {
172*b1cdbd2cSJim Jagielski rWrtSh.Pop(sal_False);
173*b1cdbd2cSJim Jagielski rWrtSh.EndAction();
174*b1cdbd2cSJim Jagielski }
175*b1cdbd2cSJim Jagielski }
176*b1cdbd2cSJim Jagielski aCoreSet.Put( SfxUInt16Item( SID_ATTR_CHAR_WIDTH_FIT_TO_LINE,
177*b1cdbd2cSJim Jagielski rWrtSh.GetScalingOfSelectedText() ) );
178*b1cdbd2cSJim Jagielski // Das CHRATR_BACKGROUND-Attribut wird fuer den Dialog in
179*b1cdbd2cSJim Jagielski // ein RES_BACKGROUND verwandelt und wieder zurueck ...
180*b1cdbd2cSJim Jagielski const SfxPoolItem *pTmpBrush;
181*b1cdbd2cSJim Jagielski if( SFX_ITEM_SET == aCoreSet.GetItemState( RES_CHRATR_BACKGROUND, sal_True, &pTmpBrush ) )
182*b1cdbd2cSJim Jagielski {
183*b1cdbd2cSJim Jagielski SvxBrushItem aTmpBrush( *((SvxBrushItem*)pTmpBrush) );
184*b1cdbd2cSJim Jagielski aTmpBrush.SetWhich( RES_BACKGROUND );
185*b1cdbd2cSJim Jagielski aCoreSet.Put( aTmpBrush );
186*b1cdbd2cSJim Jagielski }
187*b1cdbd2cSJim Jagielski
188*b1cdbd2cSJim Jagielski aCoreSet.Put(SfxUInt16Item(SID_HTML_MODE, ::GetHtmlMode(rWrtSh.GetView().GetDocShell())));
189*b1cdbd2cSJim Jagielski SfxAbstractTabDialog* pDlg = NULL;
190*b1cdbd2cSJim Jagielski if ( bUseDialog && GetActiveView() )
191*b1cdbd2cSJim Jagielski {
192*b1cdbd2cSJim Jagielski SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
193*b1cdbd2cSJim Jagielski DBG_ASSERT(pFact, "SwAbstractDialogFactory fail!");
194*b1cdbd2cSJim Jagielski
195*b1cdbd2cSJim Jagielski pDlg = pFact->CreateSwCharDlg( rWrtSh.GetView().GetWindow(), rWrtSh.GetView(), aCoreSet, DLG_CHAR );
196*b1cdbd2cSJim Jagielski DBG_ASSERT(pDlg, "Dialogdiet fail!");
197*b1cdbd2cSJim Jagielski if( FN_INSERT_HYPERLINK == nSlot )
198*b1cdbd2cSJim Jagielski pDlg->SetCurPageId(TP_CHAR_URL);
199*b1cdbd2cSJim Jagielski }
200*b1cdbd2cSJim Jagielski if (nSlot == SID_CHAR_DLG_EFFECT)
201*b1cdbd2cSJim Jagielski {
202*b1cdbd2cSJim Jagielski pDlg->SetCurPageId(TP_CHAR_EXT);
203*b1cdbd2cSJim Jagielski }
204*b1cdbd2cSJim Jagielski
205*b1cdbd2cSJim Jagielski const SfxItemSet* pSet = NULL;
206*b1cdbd2cSJim Jagielski if ( !bUseDialog )
207*b1cdbd2cSJim Jagielski pSet = pArgs;
208*b1cdbd2cSJim Jagielski else if ( NULL != pDlg && pDlg->Execute() == RET_OK ) /* #110771# pDlg can be NULL */
209*b1cdbd2cSJim Jagielski {
210*b1cdbd2cSJim Jagielski pSet = pDlg->GetOutputItemSet();
211*b1cdbd2cSJim Jagielski }
212*b1cdbd2cSJim Jagielski
213*b1cdbd2cSJim Jagielski if ( pSet)
214*b1cdbd2cSJim Jagielski {
215*b1cdbd2cSJim Jagielski SfxItemSet aTmpSet( *pSet );
216*b1cdbd2cSJim Jagielski if( SFX_ITEM_SET == aTmpSet.GetItemState( RES_BACKGROUND, sal_False, &pTmpBrush ) )
217*b1cdbd2cSJim Jagielski {
218*b1cdbd2cSJim Jagielski SvxBrushItem aTmpBrush( *((SvxBrushItem*)pTmpBrush) );
219*b1cdbd2cSJim Jagielski aTmpBrush.SetWhich( RES_CHRATR_BACKGROUND );
220*b1cdbd2cSJim Jagielski aTmpSet.Put( aTmpBrush );
221*b1cdbd2cSJim Jagielski }
222*b1cdbd2cSJim Jagielski
223*b1cdbd2cSJim Jagielski aTmpSet.ClearItem( RES_BACKGROUND );
224*b1cdbd2cSJim Jagielski
225*b1cdbd2cSJim Jagielski const SfxPoolItem* pSelectionItem;
226*b1cdbd2cSJim Jagielski sal_Bool bInsert = sal_False;
227*b1cdbd2cSJim Jagielski xub_StrLen nInsert = 0;
228*b1cdbd2cSJim Jagielski
229*b1cdbd2cSJim Jagielski // aus ungeklaerter Ursache ist das alte Item wieder im Set
230*b1cdbd2cSJim Jagielski if( !bSelectionPut && SFX_ITEM_SET == aTmpSet.GetItemState(FN_PARAM_SELECTION, sal_False, &pSelectionItem) )
231*b1cdbd2cSJim Jagielski {
232*b1cdbd2cSJim Jagielski String sInsert = ((const SfxStringItem*)pSelectionItem)->GetValue();
233*b1cdbd2cSJim Jagielski bInsert = sInsert.Len() != 0;
234*b1cdbd2cSJim Jagielski if(bInsert)
235*b1cdbd2cSJim Jagielski {
236*b1cdbd2cSJim Jagielski nInsert = sInsert.Len();
237*b1cdbd2cSJim Jagielski rWrtSh.StartAction();
238*b1cdbd2cSJim Jagielski rWrtSh.Insert( sInsert );
239*b1cdbd2cSJim Jagielski rWrtSh.SetMark();
240*b1cdbd2cSJim Jagielski rWrtSh.ExtendSelection(sal_False, sInsert.Len());
241*b1cdbd2cSJim Jagielski SfxRequest aReq( rWrtSh.GetView().GetViewFrame(), FN_INSERT_STRING );
242*b1cdbd2cSJim Jagielski aReq.AppendItem( SfxStringItem( FN_INSERT_STRING, sInsert ) );
243*b1cdbd2cSJim Jagielski aReq.Done();
244*b1cdbd2cSJim Jagielski SfxRequest aReq1( rWrtSh.GetView().GetViewFrame(), FN_CHAR_LEFT );
245*b1cdbd2cSJim Jagielski aReq1.AppendItem( SfxInt16Item(FN_PARAM_MOVE_COUNT, nInsert) );
246*b1cdbd2cSJim Jagielski aReq1.AppendItem( SfxBoolItem(FN_PARAM_MOVE_SELECTION, sal_True) );
247*b1cdbd2cSJim Jagielski aReq1.Done();
248*b1cdbd2cSJim Jagielski }
249*b1cdbd2cSJim Jagielski }
250*b1cdbd2cSJim Jagielski aTmpSet.ClearItem(FN_PARAM_SELECTION);
251*b1cdbd2cSJim Jagielski
252*b1cdbd2cSJim Jagielski SwTxtFmtColl* pColl = rWrtSh.GetCurTxtFmtColl();
253*b1cdbd2cSJim Jagielski if(bSel && rWrtSh.IsSelFullPara() && pColl && pColl->IsAutoUpdateFmt())
254*b1cdbd2cSJim Jagielski {
255*b1cdbd2cSJim Jagielski rWrtSh.AutoUpdatePara(pColl, aTmpSet);
256*b1cdbd2cSJim Jagielski }
257*b1cdbd2cSJim Jagielski else
258*b1cdbd2cSJim Jagielski rWrtSh.SetAttrSet( aTmpSet );
259*b1cdbd2cSJim Jagielski if (pReq)
260*b1cdbd2cSJim Jagielski pReq->Done(aTmpSet);
261*b1cdbd2cSJim Jagielski if(bInsert)
262*b1cdbd2cSJim Jagielski {
263*b1cdbd2cSJim Jagielski SfxRequest aReq1( rWrtSh.GetView().GetViewFrame(), FN_CHAR_RIGHT );
264*b1cdbd2cSJim Jagielski aReq1.AppendItem( SfxInt16Item(FN_PARAM_MOVE_COUNT, nInsert) );
265*b1cdbd2cSJim Jagielski aReq1.AppendItem( SfxBoolItem(FN_PARAM_MOVE_SELECTION, sal_False) );
266*b1cdbd2cSJim Jagielski aReq1.Done();
267*b1cdbd2cSJim Jagielski rWrtSh.SwapPam();
268*b1cdbd2cSJim Jagielski rWrtSh.ClearMark();
269*b1cdbd2cSJim Jagielski rWrtSh.DontExpandFmt();
270*b1cdbd2cSJim Jagielski rWrtSh.EndAction();
271*b1cdbd2cSJim Jagielski }
272*b1cdbd2cSJim Jagielski }
273*b1cdbd2cSJim Jagielski
274*b1cdbd2cSJim Jagielski delete pDlg;
275*b1cdbd2cSJim Jagielski }
276*b1cdbd2cSJim Jagielski
277*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
278*b1cdbd2cSJim Jagielski Beschreibung:
279*b1cdbd2cSJim Jagielski --------------------------------------------------------------------*/
280*b1cdbd2cSJim Jagielski
lcl_AskRedlineMode(Window * pWin)281*b1cdbd2cSJim Jagielski short lcl_AskRedlineMode(Window *pWin)
282*b1cdbd2cSJim Jagielski {
283*b1cdbd2cSJim Jagielski MessBox aQBox( pWin, 0,
284*b1cdbd2cSJim Jagielski String( SW_RES( STR_REDLINE_TITLE ) ),
285*b1cdbd2cSJim Jagielski String( SW_RES( STR_REDLINE_MSG ) ) );
286*b1cdbd2cSJim Jagielski aQBox.SetImage( QueryBox::GetStandardImage() );
287*b1cdbd2cSJim Jagielski sal_uInt16 nBtnFlags = BUTTONDIALOG_DEFBUTTON |
288*b1cdbd2cSJim Jagielski BUTTONDIALOG_OKBUTTON |
289*b1cdbd2cSJim Jagielski BUTTONDIALOG_FOCUSBUTTON;
290*b1cdbd2cSJim Jagielski
291*b1cdbd2cSJim Jagielski aQBox.AddButton(String(SW_RES(STR_REDLINE_ACCEPT_ALL)), RET_OK, nBtnFlags);
292*b1cdbd2cSJim Jagielski aQBox.GetPushButton( RET_OK )->SetHelpId(HID_AUTOFORMAT_ACCEPT);
293*b1cdbd2cSJim Jagielski aQBox.AddButton(String(SW_RES(STR_REDLINE_REJECT_ALL)), RET_CANCEL, BUTTONDIALOG_CANCELBUTTON);
294*b1cdbd2cSJim Jagielski aQBox.GetPushButton( RET_CANCEL )->SetHelpId(HID_AUTOFORMAT_REJECT );
295*b1cdbd2cSJim Jagielski aQBox.AddButton(String(SW_RES(STR_REDLINE_EDIT)), 2, 0);
296*b1cdbd2cSJim Jagielski aQBox.GetPushButton( 2 )->SetHelpId(HID_AUTOFORMAT_EDIT_CHG);
297*b1cdbd2cSJim Jagielski aQBox.SetButtonHelpText( RET_OK, aEmptyStr );
298*b1cdbd2cSJim Jagielski
299*b1cdbd2cSJim Jagielski return aQBox.Execute();
300*b1cdbd2cSJim Jagielski }
301*b1cdbd2cSJim Jagielski
Execute(SfxRequest & rReq)302*b1cdbd2cSJim Jagielski void SwTextShell::Execute(SfxRequest &rReq)
303*b1cdbd2cSJim Jagielski {
304*b1cdbd2cSJim Jagielski sal_Bool bUseDialog = sal_True;
305*b1cdbd2cSJim Jagielski const SfxItemSet *pArgs = rReq.GetArgs();
306*b1cdbd2cSJim Jagielski SwWrtShell& rWrtSh = GetShell();
307*b1cdbd2cSJim Jagielski const SfxPoolItem* pItem = 0;
308*b1cdbd2cSJim Jagielski sal_uInt16 nSlot = rReq.GetSlot();
309*b1cdbd2cSJim Jagielski if(pArgs)
310*b1cdbd2cSJim Jagielski pArgs->GetItemState(GetPool().GetWhich(nSlot), sal_False, &pItem);
311*b1cdbd2cSJim Jagielski switch( nSlot )
312*b1cdbd2cSJim Jagielski {
313*b1cdbd2cSJim Jagielski case SID_LANGUAGE_STATUS:
314*b1cdbd2cSJim Jagielski {
315*b1cdbd2cSJim Jagielski // get the language
316*b1cdbd2cSJim Jagielski String aNewLangTxt;
317*b1cdbd2cSJim Jagielski SFX_REQUEST_ARG( rReq, pItem2, SfxStringItem, SID_LANGUAGE_STATUS , sal_False );
318*b1cdbd2cSJim Jagielski if (pItem2)
319*b1cdbd2cSJim Jagielski aNewLangTxt = pItem2->GetValue();
320*b1cdbd2cSJim Jagielski
321*b1cdbd2cSJim Jagielski //!! Remember the view frame right now...
322*b1cdbd2cSJim Jagielski //!! (call to GetView().GetViewFrame() will break if the
323*b1cdbd2cSJim Jagielski //!! SwTextShell got destroyed meanwhile.)
324*b1cdbd2cSJim Jagielski SfxViewFrame *pViewFrame = GetView().GetViewFrame();
325*b1cdbd2cSJim Jagielski
326*b1cdbd2cSJim Jagielski if (aNewLangTxt.EqualsAscii( "*" ))
327*b1cdbd2cSJim Jagielski {
328*b1cdbd2cSJim Jagielski // open the dialog "Tools/Options/Language Settings - Language"
329*b1cdbd2cSJim Jagielski // to set the documents default language
330*b1cdbd2cSJim Jagielski SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create();
331*b1cdbd2cSJim Jagielski if (pFact)
332*b1cdbd2cSJim Jagielski {
333*b1cdbd2cSJim Jagielski VclAbstractDialog* pDlg = pFact->CreateVclDialog( GetView().GetWindow(), SID_LANGUAGE_OPTIONS );
334*b1cdbd2cSJim Jagielski pDlg->Execute();
335*b1cdbd2cSJim Jagielski delete pDlg;
336*b1cdbd2cSJim Jagielski }
337*b1cdbd2cSJim Jagielski }
338*b1cdbd2cSJim Jagielski else
339*b1cdbd2cSJim Jagielski {
340*b1cdbd2cSJim Jagielski //!! We have to use StartAction / EndAction bracketing in
341*b1cdbd2cSJim Jagielski //!! order to prevent possible destruction of the SwTextShell
342*b1cdbd2cSJim Jagielski //!! due to the selection changes coming below.
343*b1cdbd2cSJim Jagielski rWrtSh.StartAction();
344*b1cdbd2cSJim Jagielski // prevent view from jumping because of (temporary) selection changes
345*b1cdbd2cSJim Jagielski rWrtSh.LockView( sal_True );
346*b1cdbd2cSJim Jagielski
347*b1cdbd2cSJim Jagielski // save selection for later restoration
348*b1cdbd2cSJim Jagielski rWrtSh.Push();
349*b1cdbd2cSJim Jagielski
350*b1cdbd2cSJim Jagielski // setting the new language...
351*b1cdbd2cSJim Jagielski if (aNewLangTxt.Len() > 0)
352*b1cdbd2cSJim Jagielski {
353*b1cdbd2cSJim Jagielski const String aSelectionLangPrefix( String::CreateFromAscii("Current_") );
354*b1cdbd2cSJim Jagielski const String aParagraphLangPrefix( String::CreateFromAscii("Paragraph_") );
355*b1cdbd2cSJim Jagielski const String aDocumentLangPrefix( String::CreateFromAscii("Default_") );
356*b1cdbd2cSJim Jagielski const String aStrNone( String::CreateFromAscii("LANGUAGE_NONE") );
357*b1cdbd2cSJim Jagielski const String aStrResetLangs( String::CreateFromAscii("RESET_LANGUAGES") );
358*b1cdbd2cSJim Jagielski
359*b1cdbd2cSJim Jagielski SfxItemSet aCoreSet( GetPool(),
360*b1cdbd2cSJim Jagielski RES_CHRATR_LANGUAGE, RES_CHRATR_LANGUAGE,
361*b1cdbd2cSJim Jagielski RES_CHRATR_CJK_LANGUAGE, RES_CHRATR_CJK_LANGUAGE,
362*b1cdbd2cSJim Jagielski RES_CHRATR_CTL_LANGUAGE, RES_CHRATR_CTL_LANGUAGE,
363*b1cdbd2cSJim Jagielski 0 );
364*b1cdbd2cSJim Jagielski
365*b1cdbd2cSJim Jagielski xub_StrLen nPos = 0;
366*b1cdbd2cSJim Jagielski bool bForSelection = true;
367*b1cdbd2cSJim Jagielski bool bForParagraph = false;
368*b1cdbd2cSJim Jagielski if (STRING_NOTFOUND != (nPos = aNewLangTxt.Search( aSelectionLangPrefix, 0 )))
369*b1cdbd2cSJim Jagielski {
370*b1cdbd2cSJim Jagielski // ... for the current selection
371*b1cdbd2cSJim Jagielski aNewLangTxt = aNewLangTxt.Erase( nPos, aSelectionLangPrefix.Len() );
372*b1cdbd2cSJim Jagielski bForSelection = true;
373*b1cdbd2cSJim Jagielski }
374*b1cdbd2cSJim Jagielski else if (STRING_NOTFOUND != (nPos = aNewLangTxt.Search( aParagraphLangPrefix , 0 )))
375*b1cdbd2cSJim Jagielski {
376*b1cdbd2cSJim Jagielski // ... for the current paragraph language
377*b1cdbd2cSJim Jagielski aNewLangTxt = aNewLangTxt.Erase( nPos, aParagraphLangPrefix.Len() );
378*b1cdbd2cSJim Jagielski bForSelection = true;
379*b1cdbd2cSJim Jagielski bForParagraph = true;
380*b1cdbd2cSJim Jagielski }
381*b1cdbd2cSJim Jagielski else if (STRING_NOTFOUND != (nPos = aNewLangTxt.Search( aDocumentLangPrefix , 0 )))
382*b1cdbd2cSJim Jagielski {
383*b1cdbd2cSJim Jagielski // ... as default document language
384*b1cdbd2cSJim Jagielski aNewLangTxt = aNewLangTxt.Erase( nPos, aDocumentLangPrefix.Len() );
385*b1cdbd2cSJim Jagielski bForSelection = false;
386*b1cdbd2cSJim Jagielski }
387*b1cdbd2cSJim Jagielski
388*b1cdbd2cSJim Jagielski if (bForParagraph)
389*b1cdbd2cSJim Jagielski SwLangHelper::SelectCurrentPara( rWrtSh );
390*b1cdbd2cSJim Jagielski
391*b1cdbd2cSJim Jagielski if (!bForSelection) // document language to be changed...
392*b1cdbd2cSJim Jagielski {
393*b1cdbd2cSJim Jagielski rWrtSh.SelAll();
394*b1cdbd2cSJim Jagielski rWrtSh.ExtendedSelectAll();
395*b1cdbd2cSJim Jagielski }
396*b1cdbd2cSJim Jagielski
397*b1cdbd2cSJim Jagielski rWrtSh.StartUndo( ( !bForParagraph && !bForSelection ) ? UNDO_SETDEFTATTR : UNDO_EMPTY );
398*b1cdbd2cSJim Jagielski if (aNewLangTxt == aStrNone)
399*b1cdbd2cSJim Jagielski SwLangHelper::SetLanguage_None( rWrtSh, bForSelection, aCoreSet );
400*b1cdbd2cSJim Jagielski else if (aNewLangTxt == aStrResetLangs)
401*b1cdbd2cSJim Jagielski SwLangHelper::ResetLanguages( rWrtSh, bForSelection );
402*b1cdbd2cSJim Jagielski else
403*b1cdbd2cSJim Jagielski SwLangHelper::SetLanguage( rWrtSh, aNewLangTxt, bForSelection, aCoreSet );
404*b1cdbd2cSJim Jagielski rWrtSh.EndUndo();
405*b1cdbd2cSJim Jagielski
406*b1cdbd2cSJim Jagielski }
407*b1cdbd2cSJim Jagielski
408*b1cdbd2cSJim Jagielski // restore selection...
409*b1cdbd2cSJim Jagielski rWrtSh.Pop( sal_False );
410*b1cdbd2cSJim Jagielski
411*b1cdbd2cSJim Jagielski rWrtSh.LockView( sal_False );
412*b1cdbd2cSJim Jagielski rWrtSh.EndAction();
413*b1cdbd2cSJim Jagielski }
414*b1cdbd2cSJim Jagielski
415*b1cdbd2cSJim Jagielski // invalidate slot to get the new language displayed
416*b1cdbd2cSJim Jagielski pViewFrame->GetBindings().Invalidate( nSlot );
417*b1cdbd2cSJim Jagielski
418*b1cdbd2cSJim Jagielski rReq.Done();
419*b1cdbd2cSJim Jagielski break;
420*b1cdbd2cSJim Jagielski }
421*b1cdbd2cSJim Jagielski
422*b1cdbd2cSJim Jagielski case SID_THES:
423*b1cdbd2cSJim Jagielski {
424*b1cdbd2cSJim Jagielski // replace word/selection with text from selected sub menu entry
425*b1cdbd2cSJim Jagielski String aReplaceText;
426*b1cdbd2cSJim Jagielski SFX_REQUEST_ARG( rReq, pItem2, SfxStringItem, SID_THES , sal_False );
427*b1cdbd2cSJim Jagielski if (pItem2)
428*b1cdbd2cSJim Jagielski aReplaceText = pItem2->GetValue();
429*b1cdbd2cSJim Jagielski if (aReplaceText.Len() > 0)
430*b1cdbd2cSJim Jagielski {
431*b1cdbd2cSJim Jagielski SwView &rView2 = rWrtSh.GetView();
432*b1cdbd2cSJim Jagielski const bool bSelection = rWrtSh.HasSelection();
433*b1cdbd2cSJim Jagielski const String aLookUpText = rView2.GetThesaurusLookUpText( bSelection );
434*b1cdbd2cSJim Jagielski rView2.InsertThesaurusSynonym( aReplaceText, aLookUpText, bSelection );
435*b1cdbd2cSJim Jagielski }
436*b1cdbd2cSJim Jagielski }
437*b1cdbd2cSJim Jagielski break;
438*b1cdbd2cSJim Jagielski
439*b1cdbd2cSJim Jagielski case SID_CHARMAP:
440*b1cdbd2cSJim Jagielski {
441*b1cdbd2cSJim Jagielski InsertSymbol( rReq );
442*b1cdbd2cSJim Jagielski }
443*b1cdbd2cSJim Jagielski break;
444*b1cdbd2cSJim Jagielski case FN_INSERT_FOOTNOTE:
445*b1cdbd2cSJim Jagielski case FN_INSERT_ENDNOTE:
446*b1cdbd2cSJim Jagielski {
447*b1cdbd2cSJim Jagielski String aStr;
448*b1cdbd2cSJim Jagielski SFX_REQUEST_ARG( rReq, pFont, SfxStringItem, FN_PARAM_1 , sal_False );
449*b1cdbd2cSJim Jagielski // SFX_REQUEST_ARG( rReq, pCharset, SfxInt16Item, FN_PARAM_2 , sal_False );
450*b1cdbd2cSJim Jagielski SFX_REQUEST_ARG( rReq, pNameItem, SfxStringItem, nSlot , sal_False );
451*b1cdbd2cSJim Jagielski if ( pNameItem )
452*b1cdbd2cSJim Jagielski aStr = pNameItem->GetValue();
453*b1cdbd2cSJim Jagielski sal_Bool bFont = pFont && pFont->GetValue().Len();
454*b1cdbd2cSJim Jagielski rWrtSh.StartUndo( UNDO_UI_INSERT_FOOTNOTE );
455*b1cdbd2cSJim Jagielski rWrtSh.InsertFootnote( aStr, nSlot == FN_INSERT_ENDNOTE, !bFont );
456*b1cdbd2cSJim Jagielski if ( bFont )
457*b1cdbd2cSJim Jagielski {
458*b1cdbd2cSJim Jagielski rWrtSh.Left( CRSR_SKIP_CHARS, sal_True, 1, sal_False );
459*b1cdbd2cSJim Jagielski SfxItemSet aSet( rWrtSh.GetAttrPool(), RES_CHRATR_FONT, RES_CHRATR_FONT );
460*b1cdbd2cSJim Jagielski rWrtSh.GetCurAttr( aSet );
461*b1cdbd2cSJim Jagielski SvxFontItem &rFont = (SvxFontItem &) aSet.Get( RES_CHRATR_FONT );
462*b1cdbd2cSJim Jagielski SvxFontItem aFont( rFont.GetFamily(), pFont->GetValue(),
463*b1cdbd2cSJim Jagielski rFont.GetStyleName(), rFont.GetPitch(), RTL_TEXTENCODING_DONTKNOW, RES_CHRATR_FONT );
464*b1cdbd2cSJim Jagielski //pCharset ? (CharSet) pCharset->GetValue() : RTL_TEXTENCODING_DONTKNOW );
465*b1cdbd2cSJim Jagielski rWrtSh.SetAttrSet( aSet, nsSetAttrMode::SETATTR_DONTEXPAND );
466*b1cdbd2cSJim Jagielski rWrtSh.ResetSelect(0, sal_False);
467*b1cdbd2cSJim Jagielski rWrtSh.EndSelect();
468*b1cdbd2cSJim Jagielski rWrtSh.GotoFtnTxt();
469*b1cdbd2cSJim Jagielski }
470*b1cdbd2cSJim Jagielski rWrtSh.EndUndo( UNDO_UI_INSERT_FOOTNOTE );
471*b1cdbd2cSJim Jagielski rReq.Done();
472*b1cdbd2cSJim Jagielski }
473*b1cdbd2cSJim Jagielski break;
474*b1cdbd2cSJim Jagielski case FN_INSERT_FOOTNOTE_DLG:
475*b1cdbd2cSJim Jagielski {
476*b1cdbd2cSJim Jagielski SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
477*b1cdbd2cSJim Jagielski DBG_ASSERT(pFact, "Dialogdiet fail!");
478*b1cdbd2cSJim Jagielski AbstractInsFootNoteDlg* pDlg = pFact->CreateInsFootNoteDlg( DLG_INS_FOOTNOTE,
479*b1cdbd2cSJim Jagielski GetView().GetWindow(), rWrtSh, sal_False );
480*b1cdbd2cSJim Jagielski DBG_ASSERT(pDlg, "Dialogdiet fail!");
481*b1cdbd2cSJim Jagielski pDlg->SetHelpId(GetStaticInterface()->GetSlot(nSlot)->GetCommand());
482*b1cdbd2cSJim Jagielski if ( pDlg->Execute() == RET_OK )
483*b1cdbd2cSJim Jagielski {
484*b1cdbd2cSJim Jagielski sal_uInt16 nId = pDlg->IsEndNote() ? FN_INSERT_ENDNOTE : FN_INSERT_FOOTNOTE;
485*b1cdbd2cSJim Jagielski SfxRequest aReq( GetView().GetViewFrame(), nId );
486*b1cdbd2cSJim Jagielski if ( pDlg->GetStr().Len() )
487*b1cdbd2cSJim Jagielski aReq.AppendItem( SfxStringItem( nId, pDlg->GetStr() ) );
488*b1cdbd2cSJim Jagielski if ( pDlg->GetFontName().Len() )
489*b1cdbd2cSJim Jagielski aReq.AppendItem( SfxStringItem( FN_PARAM_1, pDlg->GetFontName() ) );
490*b1cdbd2cSJim Jagielski //aReq.AppendItem( SfxStringItem( FN_PARAM_2, pDlg->GetCharSet() ) );
491*b1cdbd2cSJim Jagielski ExecuteSlot( aReq );
492*b1cdbd2cSJim Jagielski }
493*b1cdbd2cSJim Jagielski
494*b1cdbd2cSJim Jagielski rReq.Ignore();
495*b1cdbd2cSJim Jagielski delete pDlg;
496*b1cdbd2cSJim Jagielski }
497*b1cdbd2cSJim Jagielski break;
498*b1cdbd2cSJim Jagielski case FN_FORMAT_FOOTNOTE_DLG:
499*b1cdbd2cSJim Jagielski {
500*b1cdbd2cSJim Jagielski SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
501*b1cdbd2cSJim Jagielski DBG_ASSERT(pFact, "SwAbstractDialogFactory fail!");
502*b1cdbd2cSJim Jagielski
503*b1cdbd2cSJim Jagielski VclAbstractDialog* pDlg = pFact->CreateSwFootNoteOptionDlg( GetView().GetWindow(), rWrtSh, DLG_DOC_FOOTNOTE );
504*b1cdbd2cSJim Jagielski DBG_ASSERT(pDlg, "Dialogdiet fail!");
505*b1cdbd2cSJim Jagielski pDlg->Execute();
506*b1cdbd2cSJim Jagielski delete pDlg;
507*b1cdbd2cSJim Jagielski break;
508*b1cdbd2cSJim Jagielski }
509*b1cdbd2cSJim Jagielski case SID_INSERTDOC:
510*b1cdbd2cSJim Jagielski {
511*b1cdbd2cSJim Jagielski GetView().ExecuteInsertDoc( rReq, pItem );
512*b1cdbd2cSJim Jagielski break;
513*b1cdbd2cSJim Jagielski }
514*b1cdbd2cSJim Jagielski case FN_FORMAT_RESET:
515*b1cdbd2cSJim Jagielski {
516*b1cdbd2cSJim Jagielski // #i78856, reset all attributes but not the language attributes
517*b1cdbd2cSJim Jagielski // (for this build an array of all relevant attributes and
518*b1cdbd2cSJim Jagielski // remove the languages from that)
519*b1cdbd2cSJim Jagielski SvUShortsSort aAttribs;
520*b1cdbd2cSJim Jagielski
521*b1cdbd2cSJim Jagielski sal_uInt16 __FAR_DATA aResetableSetRange[] = {
522*b1cdbd2cSJim Jagielski RES_FRMATR_BEGIN, RES_FRMATR_END-1,
523*b1cdbd2cSJim Jagielski RES_CHRATR_BEGIN, RES_CHRATR_LANGUAGE - 1,
524*b1cdbd2cSJim Jagielski RES_CHRATR_LANGUAGE + 1, RES_CHRATR_CJK_LANGUAGE - 1,
525*b1cdbd2cSJim Jagielski RES_CHRATR_CJK_LANGUAGE + 1, RES_CHRATR_CTL_LANGUAGE - 1,
526*b1cdbd2cSJim Jagielski RES_CHRATR_CTL_LANGUAGE + 1, RES_CHRATR_END-1,
527*b1cdbd2cSJim Jagielski RES_PARATR_BEGIN, RES_PARATR_END-1,
528*b1cdbd2cSJim Jagielski RES_TXTATR_INETFMT, RES_TXTATR_INETFMT,
529*b1cdbd2cSJim Jagielski RES_TXTATR_CHARFMT, RES_TXTATR_CHARFMT,
530*b1cdbd2cSJim Jagielski RES_TXTATR_CJK_RUBY, RES_TXTATR_CJK_RUBY,
531*b1cdbd2cSJim Jagielski RES_TXTATR_UNKNOWN_CONTAINER, RES_TXTATR_UNKNOWN_CONTAINER,
532*b1cdbd2cSJim Jagielski RES_UNKNOWNATR_BEGIN, RES_UNKNOWNATR_END-1,
533*b1cdbd2cSJim Jagielski 0
534*b1cdbd2cSJim Jagielski };
535*b1cdbd2cSJim Jagielski sal_uInt16 __FAR_DATA *pUShorts = aResetableSetRange;
536*b1cdbd2cSJim Jagielski while (*pUShorts)
537*b1cdbd2cSJim Jagielski {
538*b1cdbd2cSJim Jagielski sal_uInt16 nL = pUShorts[1] - pUShorts[0] + 1;
539*b1cdbd2cSJim Jagielski sal_uInt16 nE = pUShorts[0];
540*b1cdbd2cSJim Jagielski for (sal_uInt16 i = 0; i < nL; ++i)
541*b1cdbd2cSJim Jagielski aAttribs.Insert( nE++ );
542*b1cdbd2cSJim Jagielski pUShorts += 2;
543*b1cdbd2cSJim Jagielski }
544*b1cdbd2cSJim Jagielski
545*b1cdbd2cSJim Jagielski rWrtSh.ResetAttr( &aAttribs );
546*b1cdbd2cSJim Jagielski rReq.Done();
547*b1cdbd2cSJim Jagielski break;
548*b1cdbd2cSJim Jagielski }
549*b1cdbd2cSJim Jagielski case FN_INSERT_BREAK_DLG:
550*b1cdbd2cSJim Jagielski {
551*b1cdbd2cSJim Jagielski sal_uInt16 nKind=0, nPageNumber=0;
552*b1cdbd2cSJim Jagielski String aTemplateName;
553*b1cdbd2cSJim Jagielski if ( pItem )
554*b1cdbd2cSJim Jagielski {
555*b1cdbd2cSJim Jagielski nKind = ((SfxInt16Item*)pItem)->GetValue();
556*b1cdbd2cSJim Jagielski SFX_REQUEST_ARG( rReq, pTemplate, SfxStringItem, FN_PARAM_1 , sal_False );
557*b1cdbd2cSJim Jagielski SFX_REQUEST_ARG( rReq, pNumber, SfxUInt16Item, FN_PARAM_2 , sal_False );
558*b1cdbd2cSJim Jagielski if ( pTemplate )
559*b1cdbd2cSJim Jagielski aTemplateName = pTemplate->GetValue();
560*b1cdbd2cSJim Jagielski if ( pNumber )
561*b1cdbd2cSJim Jagielski nPageNumber = pNumber->GetValue();
562*b1cdbd2cSJim Jagielski }
563*b1cdbd2cSJim Jagielski else
564*b1cdbd2cSJim Jagielski {
565*b1cdbd2cSJim Jagielski SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
566*b1cdbd2cSJim Jagielski DBG_ASSERT(pFact, "SwAbstractDialogFactory fail!");
567*b1cdbd2cSJim Jagielski
568*b1cdbd2cSJim Jagielski AbstractSwBreakDlg* pDlg = pFact->CreateSwBreakDlg( GetView().GetWindow(), rWrtSh, DLG_BREAK );
569*b1cdbd2cSJim Jagielski DBG_ASSERT(pDlg, "Dialogdiet fail!");
570*b1cdbd2cSJim Jagielski if ( pDlg->Execute() == RET_OK )
571*b1cdbd2cSJim Jagielski {
572*b1cdbd2cSJim Jagielski nKind = pDlg->GetKind();
573*b1cdbd2cSJim Jagielski aTemplateName = pDlg->GetTemplateName();
574*b1cdbd2cSJim Jagielski nPageNumber = pDlg->GetPageNumber();
575*b1cdbd2cSJim Jagielski rReq.AppendItem( SfxInt16Item( FN_INSERT_BREAK_DLG, nKind ) );
576*b1cdbd2cSJim Jagielski rReq.AppendItem( SfxUInt16Item( FN_PARAM_2, nPageNumber ) );
577*b1cdbd2cSJim Jagielski rReq.AppendItem( SfxStringItem( FN_PARAM_1, aTemplateName ) );
578*b1cdbd2cSJim Jagielski rReq.Done();
579*b1cdbd2cSJim Jagielski }
580*b1cdbd2cSJim Jagielski else
581*b1cdbd2cSJim Jagielski rReq.Ignore();
582*b1cdbd2cSJim Jagielski delete pDlg;
583*b1cdbd2cSJim Jagielski }
584*b1cdbd2cSJim Jagielski
585*b1cdbd2cSJim Jagielski switch ( nKind )
586*b1cdbd2cSJim Jagielski {
587*b1cdbd2cSJim Jagielski case 1 :
588*b1cdbd2cSJim Jagielski rWrtSh.InsertLineBreak(); break;
589*b1cdbd2cSJim Jagielski case 2 :
590*b1cdbd2cSJim Jagielski rWrtSh.InsertColumnBreak(); break;
591*b1cdbd2cSJim Jagielski case 3 :
592*b1cdbd2cSJim Jagielski {
593*b1cdbd2cSJim Jagielski rWrtSh.StartAllAction();
594*b1cdbd2cSJim Jagielski if( aTemplateName.Len() )
595*b1cdbd2cSJim Jagielski rWrtSh.InsertPageBreak( &aTemplateName, nPageNumber );
596*b1cdbd2cSJim Jagielski else
597*b1cdbd2cSJim Jagielski rWrtSh.InsertPageBreak();
598*b1cdbd2cSJim Jagielski rWrtSh.EndAllAction();
599*b1cdbd2cSJim Jagielski }
600*b1cdbd2cSJim Jagielski }
601*b1cdbd2cSJim Jagielski
602*b1cdbd2cSJim Jagielski break;
603*b1cdbd2cSJim Jagielski }
604*b1cdbd2cSJim Jagielski case FN_INSERT_BOOKMARK:
605*b1cdbd2cSJim Jagielski {
606*b1cdbd2cSJim Jagielski if ( pItem )
607*b1cdbd2cSJim Jagielski {
608*b1cdbd2cSJim Jagielski ::rtl::OUString sName = ((SfxStringItem*)pItem)->GetValue();
609*b1cdbd2cSJim Jagielski rWrtSh.SetBookmark( KeyCode(), sName, aEmptyStr );
610*b1cdbd2cSJim Jagielski }
611*b1cdbd2cSJim Jagielski else
612*b1cdbd2cSJim Jagielski {
613*b1cdbd2cSJim Jagielski SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
614*b1cdbd2cSJim Jagielski DBG_ASSERT(pFact, "SwAbstractDialogFactory fail!");
615*b1cdbd2cSJim Jagielski
616*b1cdbd2cSJim Jagielski VclAbstractDialog* pDlg = pFact->CreateSwInsertBookmarkDlg( GetView().GetWindow(), rWrtSh, rReq, DLG_INSERT_BOOKMARK );
617*b1cdbd2cSJim Jagielski DBG_ASSERT(pDlg, "Dialogdiet fail!");
618*b1cdbd2cSJim Jagielski pDlg->Execute();
619*b1cdbd2cSJim Jagielski delete pDlg;
620*b1cdbd2cSJim Jagielski }
621*b1cdbd2cSJim Jagielski
622*b1cdbd2cSJim Jagielski break;
623*b1cdbd2cSJim Jagielski }
624*b1cdbd2cSJim Jagielski case FN_DELETE_BOOKMARK:
625*b1cdbd2cSJim Jagielski {
626*b1cdbd2cSJim Jagielski if ( pItem )
627*b1cdbd2cSJim Jagielski {
628*b1cdbd2cSJim Jagielski IDocumentMarkAccess* const pMarkAccess = rWrtSh.getIDocumentMarkAccess();
629*b1cdbd2cSJim Jagielski pMarkAccess->deleteMark( pMarkAccess->findMark(((SfxStringItem*)pItem)->GetValue()) );
630*b1cdbd2cSJim Jagielski }
631*b1cdbd2cSJim Jagielski break;
632*b1cdbd2cSJim Jagielski }
633*b1cdbd2cSJim Jagielski case FN_AUTOFORMAT_REDLINE_APPLY:
634*b1cdbd2cSJim Jagielski {
635*b1cdbd2cSJim Jagielski SvxSwAutoFmtFlags aFlags(SvxAutoCorrCfg::Get()->GetAutoCorrect()->GetSwFlags());
636*b1cdbd2cSJim Jagielski // das muss fuer die Nachbearbeitung immer sal_False sein
637*b1cdbd2cSJim Jagielski aFlags.bAFmtByInput = sal_False;
638*b1cdbd2cSJim Jagielski aFlags.bWithRedlining = sal_True;
639*b1cdbd2cSJim Jagielski rWrtSh.AutoFormat( &aFlags );
640*b1cdbd2cSJim Jagielski aFlags.bWithRedlining = sal_False;
641*b1cdbd2cSJim Jagielski
642*b1cdbd2cSJim Jagielski SfxViewFrame* pVFrame = GetView().GetViewFrame();
643*b1cdbd2cSJim Jagielski if (pVFrame->HasChildWindow(FN_REDLINE_ACCEPT))
644*b1cdbd2cSJim Jagielski pVFrame->ToggleChildWindow(FN_REDLINE_ACCEPT);
645*b1cdbd2cSJim Jagielski
646*b1cdbd2cSJim Jagielski SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
647*b1cdbd2cSJim Jagielski DBG_ASSERT(pFact, "SwAbstractDialogFactory fail!");
648*b1cdbd2cSJim Jagielski
649*b1cdbd2cSJim Jagielski AbstractSwModalRedlineAcceptDlg* pDlg = pFact->CreateSwModalRedlineAcceptDlg( &GetView().GetEditWin(), DLG_MOD_REDLINE_ACCEPT );
650*b1cdbd2cSJim Jagielski DBG_ASSERT(pDlg, "Dialogdiet fail!");
651*b1cdbd2cSJim Jagielski
652*b1cdbd2cSJim Jagielski switch (lcl_AskRedlineMode(&GetView().GetEditWin()))
653*b1cdbd2cSJim Jagielski {
654*b1cdbd2cSJim Jagielski case RET_OK:
655*b1cdbd2cSJim Jagielski {
656*b1cdbd2cSJim Jagielski pDlg->AcceptAll(sal_True);
657*b1cdbd2cSJim Jagielski SfxRequest aReq( pVFrame, FN_AUTOFORMAT_APPLY );
658*b1cdbd2cSJim Jagielski aReq.Done();
659*b1cdbd2cSJim Jagielski rReq.Ignore();
660*b1cdbd2cSJim Jagielski break;
661*b1cdbd2cSJim Jagielski }
662*b1cdbd2cSJim Jagielski
663*b1cdbd2cSJim Jagielski case RET_CANCEL:
664*b1cdbd2cSJim Jagielski pDlg->AcceptAll(sal_False);
665*b1cdbd2cSJim Jagielski rReq.Ignore();
666*b1cdbd2cSJim Jagielski break;
667*b1cdbd2cSJim Jagielski
668*b1cdbd2cSJim Jagielski case 2:
669*b1cdbd2cSJim Jagielski pDlg->Execute();
670*b1cdbd2cSJim Jagielski rReq.Done();
671*b1cdbd2cSJim Jagielski break;
672*b1cdbd2cSJim Jagielski }
673*b1cdbd2cSJim Jagielski delete pDlg;
674*b1cdbd2cSJim Jagielski }
675*b1cdbd2cSJim Jagielski break;
676*b1cdbd2cSJim Jagielski
677*b1cdbd2cSJim Jagielski case FN_AUTOFORMAT_APPLY:
678*b1cdbd2cSJim Jagielski {
679*b1cdbd2cSJim Jagielski SvxSwAutoFmtFlags aFlags(SvxAutoCorrCfg::Get()->GetAutoCorrect()->GetSwFlags());
680*b1cdbd2cSJim Jagielski // das muss fuer die Nachbearbeitung immer sal_False sein
681*b1cdbd2cSJim Jagielski aFlags.bAFmtByInput = sal_False;
682*b1cdbd2cSJim Jagielski rWrtSh.AutoFormat( &aFlags );
683*b1cdbd2cSJim Jagielski rReq.Done();
684*b1cdbd2cSJim Jagielski }
685*b1cdbd2cSJim Jagielski break;
686*b1cdbd2cSJim Jagielski case FN_AUTOFORMAT_AUTO:
687*b1cdbd2cSJim Jagielski {
688*b1cdbd2cSJim Jagielski SvxAutoCorrCfg* pACfg = SvxAutoCorrCfg::Get();
689*b1cdbd2cSJim Jagielski sal_Bool bSet = pItem ? ((const SfxBoolItem*)pItem)->GetValue() : !pACfg->IsAutoFmtByInput();
690*b1cdbd2cSJim Jagielski if( bSet != pACfg->IsAutoFmtByInput() )
691*b1cdbd2cSJim Jagielski {
692*b1cdbd2cSJim Jagielski pACfg->SetAutoFmtByInput( bSet );
693*b1cdbd2cSJim Jagielski GetView().GetViewFrame()->GetBindings().Invalidate( nSlot );
694*b1cdbd2cSJim Jagielski if ( !pItem )
695*b1cdbd2cSJim Jagielski rReq.AppendItem( SfxBoolItem( GetPool().GetWhich(nSlot), bSet ) );
696*b1cdbd2cSJim Jagielski rReq.Done();
697*b1cdbd2cSJim Jagielski }
698*b1cdbd2cSJim Jagielski }
699*b1cdbd2cSJim Jagielski break;
700*b1cdbd2cSJim Jagielski case FN_AUTO_CORRECT:
701*b1cdbd2cSJim Jagielski {
702*b1cdbd2cSJim Jagielski // erstmal auf Blank defaulten
703*b1cdbd2cSJim Jagielski sal_Unicode cChar = ' ';
704*b1cdbd2cSJim Jagielski rWrtSh.AutoCorrect( *SvxAutoCorrCfg::Get()->GetAutoCorrect(), cChar );
705*b1cdbd2cSJim Jagielski rReq.Done();
706*b1cdbd2cSJim Jagielski }
707*b1cdbd2cSJim Jagielski break;
708*b1cdbd2cSJim Jagielski case FN_TABLE_SORT_DIALOG:
709*b1cdbd2cSJim Jagielski case FN_SORTING_DLG:
710*b1cdbd2cSJim Jagielski {
711*b1cdbd2cSJim Jagielski SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
712*b1cdbd2cSJim Jagielski DBG_ASSERT(pFact, "SwAbstractDialogFactory fail!");
713*b1cdbd2cSJim Jagielski
714*b1cdbd2cSJim Jagielski VclAbstractDialog* pDlg = pFact->CreateVclAbstractDialog( GetView().GetWindow(), rWrtSh, DLG_SORTING );
715*b1cdbd2cSJim Jagielski DBG_ASSERT(pDlg, "Dialogdiet fail!");
716*b1cdbd2cSJim Jagielski pDlg->Execute();
717*b1cdbd2cSJim Jagielski delete pDlg;
718*b1cdbd2cSJim Jagielski rReq.Done();
719*b1cdbd2cSJim Jagielski }
720*b1cdbd2cSJim Jagielski break;
721*b1cdbd2cSJim Jagielski case FN_NUMBERING_OUTLINE_DLG:
722*b1cdbd2cSJim Jagielski {
723*b1cdbd2cSJim Jagielski SfxItemSet aTmp(GetPool(), FN_PARAM_1, FN_PARAM_1);
724*b1cdbd2cSJim Jagielski SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
725*b1cdbd2cSJim Jagielski DBG_ASSERT(pFact, "Dialogdiet fail!");
726*b1cdbd2cSJim Jagielski SfxAbstractTabDialog* pDlg = pFact->CreateSwTabDialog( DLG_TAB_OUTLINE,
727*b1cdbd2cSJim Jagielski GetView().GetWindow(), &aTmp, rWrtSh);
728*b1cdbd2cSJim Jagielski DBG_ASSERT(pDlg, "Dialogdiet fail!");
729*b1cdbd2cSJim Jagielski pDlg->Execute();
730*b1cdbd2cSJim Jagielski delete pDlg;
731*b1cdbd2cSJim Jagielski rReq.Done();
732*b1cdbd2cSJim Jagielski }
733*b1cdbd2cSJim Jagielski break;
734*b1cdbd2cSJim Jagielski case FN_CALCULATE:
735*b1cdbd2cSJim Jagielski {
736*b1cdbd2cSJim Jagielski SwTransferable* pTransfer = new SwTransferable( rWrtSh );
737*b1cdbd2cSJim Jagielski /*??*/ uno::Reference<
738*b1cdbd2cSJim Jagielski datatransfer::XTransferable > xRef(
739*b1cdbd2cSJim Jagielski pTransfer );
740*b1cdbd2cSJim Jagielski pTransfer->CalculateAndCopy();
741*b1cdbd2cSJim Jagielski rReq.Done();
742*b1cdbd2cSJim Jagielski }
743*b1cdbd2cSJim Jagielski break;
744*b1cdbd2cSJim Jagielski case FN_GOTO_REFERENCE:
745*b1cdbd2cSJim Jagielski {
746*b1cdbd2cSJim Jagielski SwField *pFld = rWrtSh.GetCurFld();
747*b1cdbd2cSJim Jagielski if(pFld && pFld->GetTypeId() == TYP_GETREFFLD)
748*b1cdbd2cSJim Jagielski {
749*b1cdbd2cSJim Jagielski rWrtSh.StartAllAction();
750*b1cdbd2cSJim Jagielski rWrtSh.SwCrsrShell::GotoRefMark( ((SwGetRefField*)pFld)->GetSetRefName(),
751*b1cdbd2cSJim Jagielski ((SwGetRefField*)pFld)->GetSubType(),
752*b1cdbd2cSJim Jagielski ((SwGetRefField*)pFld)->GetSeqNo() );
753*b1cdbd2cSJim Jagielski rWrtSh.EndAllAction();
754*b1cdbd2cSJim Jagielski rReq.Done();
755*b1cdbd2cSJim Jagielski }
756*b1cdbd2cSJim Jagielski }
757*b1cdbd2cSJim Jagielski break;
758*b1cdbd2cSJim Jagielski case FN_EDIT_FORMULA:
759*b1cdbd2cSJim Jagielski {
760*b1cdbd2cSJim Jagielski const sal_uInt16 nId = SwInputChild::GetChildWindowId();
761*b1cdbd2cSJim Jagielski SfxViewFrame* pVFrame = GetView().GetViewFrame();
762*b1cdbd2cSJim Jagielski if(pItem)
763*b1cdbd2cSJim Jagielski {
764*b1cdbd2cSJim Jagielski //if the ChildWindow is active it has to be removed
765*b1cdbd2cSJim Jagielski if( pVFrame->HasChildWindow( nId ) )
766*b1cdbd2cSJim Jagielski {
767*b1cdbd2cSJim Jagielski pVFrame->ToggleChildWindow( nId );
768*b1cdbd2cSJim Jagielski pVFrame->GetBindings().InvalidateAll( sal_True );
769*b1cdbd2cSJim Jagielski }
770*b1cdbd2cSJim Jagielski
771*b1cdbd2cSJim Jagielski String sFormula(((const SfxStringItem*)pItem)->GetValue());
772*b1cdbd2cSJim Jagielski SwFldMgr aFldMgr;
773*b1cdbd2cSJim Jagielski rWrtSh.StartAllAction();
774*b1cdbd2cSJim Jagielski sal_Bool bDelSel;
775*b1cdbd2cSJim Jagielski if( 0 != (bDelSel = rWrtSh.HasSelection()) )
776*b1cdbd2cSJim Jagielski {
777*b1cdbd2cSJim Jagielski rWrtSh.StartUndo( UNDO_START );
778*b1cdbd2cSJim Jagielski rWrtSh.DelRight();
779*b1cdbd2cSJim Jagielski }
780*b1cdbd2cSJim Jagielski else
781*b1cdbd2cSJim Jagielski {
782*b1cdbd2cSJim Jagielski rWrtSh.EnterStdMode();
783*b1cdbd2cSJim Jagielski }
784*b1cdbd2cSJim Jagielski
785*b1cdbd2cSJim Jagielski if( !bDelSel && aFldMgr.GetCurFld() && TYP_FORMELFLD == aFldMgr.GetCurTypeId() )
786*b1cdbd2cSJim Jagielski aFldMgr.UpdateCurFld( aFldMgr.GetCurFld()->GetFormat(), aEmptyStr, sFormula );
787*b1cdbd2cSJim Jagielski else if( sFormula.Len() )
788*b1cdbd2cSJim Jagielski {
789*b1cdbd2cSJim Jagielski if( rWrtSh.IsCrsrInTbl() )
790*b1cdbd2cSJim Jagielski {
791*b1cdbd2cSJim Jagielski SfxItemSet aSet( rWrtSh.GetAttrPool(), RES_BOXATR_FORMULA, RES_BOXATR_FORMULA );
792*b1cdbd2cSJim Jagielski aSet.Put( SwTblBoxFormula( sFormula ));
793*b1cdbd2cSJim Jagielski rWrtSh.SetTblBoxFormulaAttrs( aSet );
794*b1cdbd2cSJim Jagielski rWrtSh.UpdateTable();
795*b1cdbd2cSJim Jagielski }
796*b1cdbd2cSJim Jagielski else
797*b1cdbd2cSJim Jagielski {
798*b1cdbd2cSJim Jagielski SvNumberFormatter* pFormatter = rWrtSh.GetNumberFormatter();
799*b1cdbd2cSJim Jagielski sal_uLong nSysNumFmt = pFormatter->GetFormatIndex( NF_NUMBER_STANDARD, LANGUAGE_SYSTEM);
800*b1cdbd2cSJim Jagielski SwInsertFld_Data aData(TYP_FORMELFLD, nsSwGetSetExpType::GSE_FORMULA, aEmptyStr, sFormula, nSysNumFmt);
801*b1cdbd2cSJim Jagielski aFldMgr.InsertFld(aData);
802*b1cdbd2cSJim Jagielski }
803*b1cdbd2cSJim Jagielski }
804*b1cdbd2cSJim Jagielski
805*b1cdbd2cSJim Jagielski if( bDelSel )
806*b1cdbd2cSJim Jagielski rWrtSh.EndUndo( UNDO_END );
807*b1cdbd2cSJim Jagielski rWrtSh.EndAllAction();
808*b1cdbd2cSJim Jagielski rReq.Done();
809*b1cdbd2cSJim Jagielski }
810*b1cdbd2cSJim Jagielski else
811*b1cdbd2cSJim Jagielski {
812*b1cdbd2cSJim Jagielski rWrtSh.EndAllTblBoxEdit();
813*b1cdbd2cSJim Jagielski pVFrame->ToggleChildWindow( nId );
814*b1cdbd2cSJim Jagielski if( !pVFrame->HasChildWindow( nId ) )
815*b1cdbd2cSJim Jagielski pVFrame->GetBindings().InvalidateAll( sal_True );
816*b1cdbd2cSJim Jagielski rReq.Ignore();
817*b1cdbd2cSJim Jagielski }
818*b1cdbd2cSJim Jagielski }
819*b1cdbd2cSJim Jagielski
820*b1cdbd2cSJim Jagielski break;
821*b1cdbd2cSJim Jagielski case FN_TABLE_UNSET_READ_ONLY:
822*b1cdbd2cSJim Jagielski {
823*b1cdbd2cSJim Jagielski rWrtSh.UnProtectTbls();
824*b1cdbd2cSJim Jagielski }
825*b1cdbd2cSJim Jagielski break;
826*b1cdbd2cSJim Jagielski case FN_EDIT_HYPERLINK:
827*b1cdbd2cSJim Jagielski GetView().GetViewFrame()->ToggleChildWindow(SID_HYPERLINK_DIALOG);
828*b1cdbd2cSJim Jagielski break;
829*b1cdbd2cSJim Jagielski case FN_REMOVE_HYPERLINK:
830*b1cdbd2cSJim Jagielski {
831*b1cdbd2cSJim Jagielski sal_Bool bSel = rWrtSh.HasSelection();
832*b1cdbd2cSJim Jagielski if(!bSel)
833*b1cdbd2cSJim Jagielski {
834*b1cdbd2cSJim Jagielski rWrtSh.StartAction();
835*b1cdbd2cSJim Jagielski rWrtSh.Push();
836*b1cdbd2cSJim Jagielski if(!rWrtSh.SelectTxtAttr( RES_TXTATR_INETFMT ))
837*b1cdbd2cSJim Jagielski rWrtSh.SelWrd();
838*b1cdbd2cSJim Jagielski }
839*b1cdbd2cSJim Jagielski //now remove the attribute
840*b1cdbd2cSJim Jagielski SvUShortsSort aAttribs;
841*b1cdbd2cSJim Jagielski aAttribs.Insert( RES_TXTATR_INETFMT );
842*b1cdbd2cSJim Jagielski rWrtSh.ResetAttr( &aAttribs );
843*b1cdbd2cSJim Jagielski if(!bSel)
844*b1cdbd2cSJim Jagielski {
845*b1cdbd2cSJim Jagielski rWrtSh.Pop(sal_False);
846*b1cdbd2cSJim Jagielski rWrtSh.EndAction();
847*b1cdbd2cSJim Jagielski }
848*b1cdbd2cSJim Jagielski }
849*b1cdbd2cSJim Jagielski break;
850*b1cdbd2cSJim Jagielski case SID_ATTR_BRUSH_CHAR :
851*b1cdbd2cSJim Jagielski case SID_ATTR_CHAR_SCALEWIDTH :
852*b1cdbd2cSJim Jagielski case SID_ATTR_CHAR_ROTATED :
853*b1cdbd2cSJim Jagielski case FN_TXTATR_INET :
854*b1cdbd2cSJim Jagielski case FN_INSERT_HYPERLINK:
855*b1cdbd2cSJim Jagielski {
856*b1cdbd2cSJim Jagielski sal_uInt16 nWhich = GetPool().GetWhich( nSlot );
857*b1cdbd2cSJim Jagielski if ( pArgs && pArgs->GetItemState( nWhich ) == SFX_ITEM_SET )
858*b1cdbd2cSJim Jagielski bUseDialog = sal_False;
859*b1cdbd2cSJim Jagielski // intentionally no break
860*b1cdbd2cSJim Jagielski }
861*b1cdbd2cSJim Jagielski case SID_CHAR_DLG:
862*b1cdbd2cSJim Jagielski case SID_CHAR_DLG_EFFECT:
863*b1cdbd2cSJim Jagielski {
864*b1cdbd2cSJim Jagielski lcl_CharDialog( rWrtSh, bUseDialog, nSlot, pArgs, &rReq );
865*b1cdbd2cSJim Jagielski }
866*b1cdbd2cSJim Jagielski break;
867*b1cdbd2cSJim Jagielski case SID_CHAR_DLG_FOR_PARAGRAPH:
868*b1cdbd2cSJim Jagielski {
869*b1cdbd2cSJim Jagielski rWrtSh.Push(); //save current cursor
870*b1cdbd2cSJim Jagielski SwLangHelper::SelectCurrentPara( rWrtSh );
871*b1cdbd2cSJim Jagielski lcl_CharDialog( rWrtSh, bUseDialog, nSlot, pArgs, &rReq );
872*b1cdbd2cSJim Jagielski rWrtSh.Pop( sal_False ); //restore old cursor
873*b1cdbd2cSJim Jagielski }
874*b1cdbd2cSJim Jagielski break;
875*b1cdbd2cSJim Jagielski case SID_ATTR_LRSPACE :
876*b1cdbd2cSJim Jagielski case SID_ATTR_ULSPACE :
877*b1cdbd2cSJim Jagielski case SID_ATTR_BRUSH :
878*b1cdbd2cSJim Jagielski case SID_PARA_VERTALIGN :
879*b1cdbd2cSJim Jagielski case SID_ATTR_PARA_NUMRULE :
880*b1cdbd2cSJim Jagielski case SID_ATTR_PARA_REGISTER :
881*b1cdbd2cSJim Jagielski case SID_ATTR_PARA_PAGENUM :
882*b1cdbd2cSJim Jagielski case FN_FORMAT_LINENUMBER :
883*b1cdbd2cSJim Jagielski case FN_NUMBER_NEWSTART :
884*b1cdbd2cSJim Jagielski case FN_NUMBER_NEWSTART_AT :
885*b1cdbd2cSJim Jagielski case FN_FORMAT_DROPCAPS :
886*b1cdbd2cSJim Jagielski case FN_DROP_TEXT:
887*b1cdbd2cSJim Jagielski case SID_ATTR_PARA_LRSPACE:
888*b1cdbd2cSJim Jagielski {
889*b1cdbd2cSJim Jagielski sal_uInt16 nWhich = GetPool().GetWhich( nSlot );
890*b1cdbd2cSJim Jagielski if ( pArgs && pArgs->GetItemState( nWhich ) == SFX_ITEM_SET )
891*b1cdbd2cSJim Jagielski bUseDialog = sal_False;
892*b1cdbd2cSJim Jagielski // intentionally no break
893*b1cdbd2cSJim Jagielski
894*b1cdbd2cSJim Jagielski }
895*b1cdbd2cSJim Jagielski case SID_PARA_DLG:
896*b1cdbd2cSJim Jagielski {
897*b1cdbd2cSJim Jagielski FieldUnit eMetric = ::GetDfltMetric(0 != PTR_CAST(SwWebView, &GetView()));
898*b1cdbd2cSJim Jagielski SW_MOD()->PutItem(SfxUInt16Item(SID_ATTR_METRIC, static_cast< sal_uInt16 >(eMetric)));
899*b1cdbd2cSJim Jagielski SfxItemSet aCoreSet( GetPool(),
900*b1cdbd2cSJim Jagielski RES_PARATR_BEGIN, RES_PARATR_END - 1,
901*b1cdbd2cSJim Jagielski // --> OD 2008-02-25 #refactorlists#
902*b1cdbd2cSJim Jagielski RES_PARATR_LIST_BEGIN, RES_PARATR_LIST_END - 1,
903*b1cdbd2cSJim Jagielski // <--
904*b1cdbd2cSJim Jagielski RES_FRMATR_BEGIN, RES_FRMATR_END - 1,
905*b1cdbd2cSJim Jagielski SID_ATTR_TABSTOP_POS, SID_ATTR_TABSTOP_POS,
906*b1cdbd2cSJim Jagielski SID_ATTR_TABSTOP_DEFAULTS, SID_ATTR_TABSTOP_DEFAULTS,
907*b1cdbd2cSJim Jagielski SID_ATTR_TABSTOP_OFFSET, SID_ATTR_TABSTOP_OFFSET,
908*b1cdbd2cSJim Jagielski SID_ATTR_BORDER_INNER, SID_ATTR_BORDER_INNER,
909*b1cdbd2cSJim Jagielski SID_ATTR_PARA_MODEL, SID_ATTR_PARA_KEEP,
910*b1cdbd2cSJim Jagielski SID_ATTR_PARA_PAGENUM, SID_ATTR_PARA_PAGENUM,
911*b1cdbd2cSJim Jagielski SID_HTML_MODE, SID_HTML_MODE,
912*b1cdbd2cSJim Jagielski FN_PARAM_1, FN_PARAM_1,
913*b1cdbd2cSJim Jagielski FN_NUMBER_NEWSTART, FN_NUMBER_NEWSTART_AT,
914*b1cdbd2cSJim Jagielski FN_DROP_TEXT, FN_DROP_CHAR_STYLE_NAME,
915*b1cdbd2cSJim Jagielski 0);
916*b1cdbd2cSJim Jagielski // --> OD 2008-01-16 #newlistlevelattrs#
917*b1cdbd2cSJim Jagielski // get also the list level indent values merged as LR-SPACE item, if needed.
918*b1cdbd2cSJim Jagielski rWrtSh.GetCurAttr( aCoreSet, true );
919*b1cdbd2cSJim Jagielski // <--
920*b1cdbd2cSJim Jagielski aCoreSet.Put(SfxUInt16Item(SID_HTML_MODE,
921*b1cdbd2cSJim Jagielski ::GetHtmlMode(GetView().GetDocShell())));
922*b1cdbd2cSJim Jagielski
923*b1cdbd2cSJim Jagielski // Tabulatoren, DefaultTabs ins ItemSet Stecken
924*b1cdbd2cSJim Jagielski const SvxTabStopItem& rDefTabs = (const SvxTabStopItem&)
925*b1cdbd2cSJim Jagielski GetPool().GetDefaultItem(RES_PARATR_TABSTOP);
926*b1cdbd2cSJim Jagielski
927*b1cdbd2cSJim Jagielski sal_uInt16 nDefDist = ::GetTabDist( rDefTabs );
928*b1cdbd2cSJim Jagielski SfxUInt16Item aDefDistItem( SID_ATTR_TABSTOP_DEFAULTS, nDefDist );
929*b1cdbd2cSJim Jagielski aCoreSet.Put( aDefDistItem );
930*b1cdbd2cSJim Jagielski
931*b1cdbd2cSJim Jagielski // Aktueller Tab
932*b1cdbd2cSJim Jagielski SfxUInt16Item aTabPos( SID_ATTR_TABSTOP_POS, 0 );
933*b1cdbd2cSJim Jagielski aCoreSet.Put( aTabPos );
934*b1cdbd2cSJim Jagielski
935*b1cdbd2cSJim Jagielski // linker Rand als Offset
936*b1cdbd2cSJim Jagielski //#i24363# tab stops relative to indent
937*b1cdbd2cSJim Jagielski const long nOff = rWrtSh.getIDocumentSettingAccess()->get(IDocumentSettingAccess::TABS_RELATIVE_TO_INDENT) ?
938*b1cdbd2cSJim Jagielski ((SvxLRSpaceItem&)aCoreSet.Get( RES_LR_SPACE )).GetTxtLeft() : 0;
939*b1cdbd2cSJim Jagielski SfxInt32Item aOff( SID_ATTR_TABSTOP_OFFSET, nOff );
940*b1cdbd2cSJim Jagielski aCoreSet.Put( aOff );
941*b1cdbd2cSJim Jagielski
942*b1cdbd2cSJim Jagielski // BoxInfo setzen
943*b1cdbd2cSJim Jagielski ::PrepareBoxInfo( aCoreSet, rWrtSh );
944*b1cdbd2cSJim Jagielski
945*b1cdbd2cSJim Jagielski //aktuelles Seitenformat
946*b1cdbd2cSJim Jagielski ::SwToSfxPageDescAttr( aCoreSet );
947*b1cdbd2cSJim Jagielski
948*b1cdbd2cSJim Jagielski sal_uInt16 nDefPage = 0;
949*b1cdbd2cSJim Jagielski if( pItem )
950*b1cdbd2cSJim Jagielski nDefPage = ((SfxUInt16Item *)pItem)->GetValue();
951*b1cdbd2cSJim Jagielski
952*b1cdbd2cSJim Jagielski // Numerierungseigenschaften
953*b1cdbd2cSJim Jagielski if(rWrtSh.GetCurNumRule())
954*b1cdbd2cSJim Jagielski {
955*b1cdbd2cSJim Jagielski SfxBoolItem aStart( FN_NUMBER_NEWSTART, rWrtSh.IsNumRuleStart() );
956*b1cdbd2cSJim Jagielski aCoreSet.Put(aStart);
957*b1cdbd2cSJim Jagielski // --> OD 2008-02-29 #refactorlists#
958*b1cdbd2cSJim Jagielski // SfxUInt16Item aStartAt(FN_NUMBER_NEWSTART_AT,
959*b1cdbd2cSJim Jagielski // rWrtSh.IsNodeNumStart());
960*b1cdbd2cSJim Jagielski SfxUInt16Item aStartAt( FN_NUMBER_NEWSTART_AT,
961*b1cdbd2cSJim Jagielski rWrtSh.GetNodeNumStart() );
962*b1cdbd2cSJim Jagielski // <--
963*b1cdbd2cSJim Jagielski aCoreSet.Put(aStartAt);
964*b1cdbd2cSJim Jagielski }
965*b1cdbd2cSJim Jagielski SfxAbstractTabDialog* pDlg = NULL;
966*b1cdbd2cSJim Jagielski
967*b1cdbd2cSJim Jagielski if ( bUseDialog && GetActiveView() )
968*b1cdbd2cSJim Jagielski {
969*b1cdbd2cSJim Jagielski SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
970*b1cdbd2cSJim Jagielski DBG_ASSERT(pFact, "SwAbstractDialogFactory fail!");
971*b1cdbd2cSJim Jagielski
972*b1cdbd2cSJim Jagielski pDlg = pFact->CreateSwParaDlg( GetView().GetWindow(),GetView(), aCoreSet,DLG_STD, DLG_PARA,NULL, sal_False, nDefPage );
973*b1cdbd2cSJim Jagielski DBG_ASSERT(pDlg, "Dialogdiet fail!");
974*b1cdbd2cSJim Jagielski }
975*b1cdbd2cSJim Jagielski SfxItemSet* pSet = NULL;
976*b1cdbd2cSJim Jagielski if ( !bUseDialog )
977*b1cdbd2cSJim Jagielski {
978*b1cdbd2cSJim Jagielski if ( nSlot == SID_ATTR_PARA_LRSPACE)
979*b1cdbd2cSJim Jagielski {
980*b1cdbd2cSJim Jagielski SvxLRSpaceItem aParaMargin((const SvxLRSpaceItem&)pArgs->Get(nSlot));
981*b1cdbd2cSJim Jagielski aParaMargin.SetWhich( RES_LR_SPACE);
982*b1cdbd2cSJim Jagielski aCoreSet.Put(aParaMargin);
983*b1cdbd2cSJim Jagielski pSet = &aCoreSet;
984*b1cdbd2cSJim Jagielski
985*b1cdbd2cSJim Jagielski } else
986*b1cdbd2cSJim Jagielski pSet = (SfxItemSet*) pArgs;
987*b1cdbd2cSJim Jagielski
988*b1cdbd2cSJim Jagielski }
989*b1cdbd2cSJim Jagielski else if ( NULL != pDlg && pDlg->Execute() == RET_OK )
990*b1cdbd2cSJim Jagielski {
991*b1cdbd2cSJim Jagielski // Defaults evtl umsetzen
992*b1cdbd2cSJim Jagielski pSet = (SfxItemSet*)pDlg->GetOutputItemSet();
993*b1cdbd2cSJim Jagielski sal_uInt16 nNewDist;
994*b1cdbd2cSJim Jagielski if( SFX_ITEM_SET == pSet->GetItemState( SID_ATTR_TABSTOP_DEFAULTS, sal_False, &pItem ) &&
995*b1cdbd2cSJim Jagielski nDefDist != (nNewDist = ((SfxUInt16Item*)pItem)->GetValue()) )
996*b1cdbd2cSJim Jagielski {
997*b1cdbd2cSJim Jagielski SvxTabStopItem aDefTabs( 0, 0, SVX_TAB_ADJUST_DEFAULT, RES_PARATR_TABSTOP );
998*b1cdbd2cSJim Jagielski MakeDefTabs( nNewDist, aDefTabs );
999*b1cdbd2cSJim Jagielski rWrtSh.SetDefault( aDefTabs );
1000*b1cdbd2cSJim Jagielski pSet->ClearItem( SID_ATTR_TABSTOP_DEFAULTS );
1001*b1cdbd2cSJim Jagielski }
1002*b1cdbd2cSJim Jagielski
1003*b1cdbd2cSJim Jagielski if ( SFX_ITEM_SET == pSet->GetItemState(FN_PARAM_1,sal_False,&pItem) )
1004*b1cdbd2cSJim Jagielski {
1005*b1cdbd2cSJim Jagielski pSet->Put(SfxStringItem(FN_DROP_TEXT, ((const SfxStringItem*)pItem)->GetValue()));
1006*b1cdbd2cSJim Jagielski pSet->ClearItem(FN_PARAM_1);
1007*b1cdbd2cSJim Jagielski }
1008*b1cdbd2cSJim Jagielski
1009*b1cdbd2cSJim Jagielski if( SFX_ITEM_SET == pSet->GetItemState( RES_PARATR_DROP, sal_False, &pItem ))
1010*b1cdbd2cSJim Jagielski {
1011*b1cdbd2cSJim Jagielski String sCharStyleName;
1012*b1cdbd2cSJim Jagielski if(((const SwFmtDrop*)pItem)->GetCharFmt())
1013*b1cdbd2cSJim Jagielski sCharStyleName = ((const SwFmtDrop*)pItem)->GetCharFmt()->GetName();
1014*b1cdbd2cSJim Jagielski pSet->Put(SfxStringItem(FN_DROP_CHAR_STYLE_NAME, sCharStyleName));
1015*b1cdbd2cSJim Jagielski }
1016*b1cdbd2cSJim Jagielski }
1017*b1cdbd2cSJim Jagielski
1018*b1cdbd2cSJim Jagielski if ( pSet )
1019*b1cdbd2cSJim Jagielski {
1020*b1cdbd2cSJim Jagielski rReq.Done( *pSet );
1021*b1cdbd2cSJim Jagielski ::SfxToSwPageDescAttr( rWrtSh, *pSet );
1022*b1cdbd2cSJim Jagielski // --> OD 2006-12-06 #i56253#
1023*b1cdbd2cSJim Jagielski // enclose all undos.
1024*b1cdbd2cSJim Jagielski // Thus, check conditions, if actions will be performed.
1025*b1cdbd2cSJim Jagielski const bool bUndoNeeded( pSet->Count() ||
1026*b1cdbd2cSJim Jagielski SFX_ITEM_SET == pSet->GetItemState(FN_NUMBER_NEWSTART) ||
1027*b1cdbd2cSJim Jagielski SFX_ITEM_SET == pSet->GetItemState(FN_NUMBER_NEWSTART_AT) );
1028*b1cdbd2cSJim Jagielski if ( bUndoNeeded )
1029*b1cdbd2cSJim Jagielski {
1030*b1cdbd2cSJim Jagielski rWrtSh.StartUndo( UNDO_INSATTR );
1031*b1cdbd2cSJim Jagielski }
1032*b1cdbd2cSJim Jagielski // <--
1033*b1cdbd2cSJim Jagielski if( pSet->Count() )
1034*b1cdbd2cSJim Jagielski {
1035*b1cdbd2cSJim Jagielski rWrtSh.StartAction();
1036*b1cdbd2cSJim Jagielski // rWrtSh.StartUndo( UNDO_START );
1037*b1cdbd2cSJim Jagielski if ( SFX_ITEM_SET == pSet->GetItemState(FN_DROP_TEXT, sal_False, &pItem) )
1038*b1cdbd2cSJim Jagielski {
1039*b1cdbd2cSJim Jagielski if ( ((SfxStringItem*)pItem)->GetValue().Len() )
1040*b1cdbd2cSJim Jagielski rWrtSh.ReplaceDropTxt(((SfxStringItem*)pItem)->GetValue());
1041*b1cdbd2cSJim Jagielski }
1042*b1cdbd2cSJim Jagielski rWrtSh.SetAttrSet( *pSet );
1043*b1cdbd2cSJim Jagielski // rWrtSh.EndUndo( UNDO_END );
1044*b1cdbd2cSJim Jagielski rWrtSh.EndAction();
1045*b1cdbd2cSJim Jagielski SwTxtFmtColl* pColl = rWrtSh.GetCurTxtFmtColl();
1046*b1cdbd2cSJim Jagielski if(pColl && pColl->IsAutoUpdateFmt())
1047*b1cdbd2cSJim Jagielski {
1048*b1cdbd2cSJim Jagielski rWrtSh.AutoUpdatePara(pColl, *pSet);
1049*b1cdbd2cSJim Jagielski }
1050*b1cdbd2cSJim Jagielski }
1051*b1cdbd2cSJim Jagielski
1052*b1cdbd2cSJim Jagielski if( SFX_ITEM_SET == pSet->GetItemState(FN_NUMBER_NEWSTART) )
1053*b1cdbd2cSJim Jagielski {
1054*b1cdbd2cSJim Jagielski //SetNumRuleStart(sal_True) restarts the numbering at the value
1055*b1cdbd2cSJim Jagielski //that is defined at the starting point of the numbering level
1056*b1cdbd2cSJim Jagielski //otherwise the SetNodeNumStart() value determines the start
1057*b1cdbd2cSJim Jagielski //if it's set to something different than (sal_uInt16)0xFFFF
1058*b1cdbd2cSJim Jagielski
1059*b1cdbd2cSJim Jagielski sal_Bool bStart = ((SfxBoolItem&)pSet->Get(FN_NUMBER_NEWSTART)).GetValue();
1060*b1cdbd2cSJim Jagielski // --> OD 2007-06-11 #b6560525#
1061*b1cdbd2cSJim Jagielski // Default value for restart value has to be (sal_uInt16)0xFFFF
1062*b1cdbd2cSJim Jagielski // in order to indicate that the restart value of the list
1063*b1cdbd2cSJim Jagielski // style has to be used on restart.
1064*b1cdbd2cSJim Jagielski sal_uInt16 nNumStart = (sal_uInt16)0xFFFF;
1065*b1cdbd2cSJim Jagielski // <--
1066*b1cdbd2cSJim Jagielski if( SFX_ITEM_SET == pSet->GetItemState(FN_NUMBER_NEWSTART_AT) )
1067*b1cdbd2cSJim Jagielski {
1068*b1cdbd2cSJim Jagielski nNumStart = ((SfxUInt16Item&)pSet->Get(FN_NUMBER_NEWSTART_AT)).GetValue();
1069*b1cdbd2cSJim Jagielski }
1070*b1cdbd2cSJim Jagielski rWrtSh.SetNumRuleStart(bStart);
1071*b1cdbd2cSJim Jagielski rWrtSh.SetNodeNumStart(nNumStart);
1072*b1cdbd2cSJim Jagielski }
1073*b1cdbd2cSJim Jagielski else if( SFX_ITEM_SET == pSet->GetItemState(FN_NUMBER_NEWSTART_AT) )
1074*b1cdbd2cSJim Jagielski {
1075*b1cdbd2cSJim Jagielski sal_uInt16 nNumStart = ((SfxUInt16Item&)pSet->Get(FN_NUMBER_NEWSTART_AT)).GetValue();
1076*b1cdbd2cSJim Jagielski rWrtSh.SetNodeNumStart(nNumStart);
1077*b1cdbd2cSJim Jagielski rWrtSh.SetNumRuleStart(sal_False);
1078*b1cdbd2cSJim Jagielski }
1079*b1cdbd2cSJim Jagielski // --> OD 2006-12-06 #i56253#
1080*b1cdbd2cSJim Jagielski if ( bUndoNeeded )
1081*b1cdbd2cSJim Jagielski {
1082*b1cdbd2cSJim Jagielski rWrtSh.EndUndo( UNDO_INSATTR );
1083*b1cdbd2cSJim Jagielski }
1084*b1cdbd2cSJim Jagielski // <--
1085*b1cdbd2cSJim Jagielski }
1086*b1cdbd2cSJim Jagielski
1087*b1cdbd2cSJim Jagielski delete pDlg;
1088*b1cdbd2cSJim Jagielski }
1089*b1cdbd2cSJim Jagielski break;
1090*b1cdbd2cSJim Jagielski case FN_NUM_CONTINUE:
1091*b1cdbd2cSJim Jagielski {
1092*b1cdbd2cSJim Jagielski // --> OD 2008-03-18 #refactorlists#
1093*b1cdbd2cSJim Jagielski String sContinuedListId;
1094*b1cdbd2cSJim Jagielski const SwNumRule* pRule =
1095*b1cdbd2cSJim Jagielski rWrtSh.SearchNumRule( false, true, false, -1, sContinuedListId );
1096*b1cdbd2cSJim Jagielski // --> OD 2009-08-26 #i86492#
1097*b1cdbd2cSJim Jagielski // Search also for bullet list
1098*b1cdbd2cSJim Jagielski if ( !pRule )
1099*b1cdbd2cSJim Jagielski {
1100*b1cdbd2cSJim Jagielski pRule = rWrtSh.SearchNumRule( false, false, false, -1, sContinuedListId );
1101*b1cdbd2cSJim Jagielski }
1102*b1cdbd2cSJim Jagielski // <--
1103*b1cdbd2cSJim Jagielski if ( pRule )
1104*b1cdbd2cSJim Jagielski {
1105*b1cdbd2cSJim Jagielski rWrtSh.SetCurNumRule( *pRule, false, sContinuedListId );
1106*b1cdbd2cSJim Jagielski }
1107*b1cdbd2cSJim Jagielski // <--
1108*b1cdbd2cSJim Jagielski }
1109*b1cdbd2cSJim Jagielski break;
1110*b1cdbd2cSJim Jagielski case FN_SELECT_PARA:
1111*b1cdbd2cSJim Jagielski {
1112*b1cdbd2cSJim Jagielski if(!rWrtSh.IsSttOfPara())
1113*b1cdbd2cSJim Jagielski rWrtSh.SttPara(sal_False);
1114*b1cdbd2cSJim Jagielski else
1115*b1cdbd2cSJim Jagielski rWrtSh.EnterStdMode();
1116*b1cdbd2cSJim Jagielski rWrtSh.EndPara(sal_True);
1117*b1cdbd2cSJim Jagielski }
1118*b1cdbd2cSJim Jagielski break;
1119*b1cdbd2cSJim Jagielski
1120*b1cdbd2cSJim Jagielski case SID_DEC_INDENT:
1121*b1cdbd2cSJim Jagielski case SID_INC_INDENT:
1122*b1cdbd2cSJim Jagielski //According to the requirement, modified the behavior when user
1123*b1cdbd2cSJim Jagielski //using the indent button on the toolbar. Now if we increase/decrease indent for a
1124*b1cdbd2cSJim Jagielski //paragraph which has bullet style it will increase/decrease the bullet level.
1125*b1cdbd2cSJim Jagielski {
1126*b1cdbd2cSJim Jagielski //If the current paragraph has bullet call the function to
1127*b1cdbd2cSJim Jagielski //increase or decrease the bullet level.
1128*b1cdbd2cSJim Jagielski //Why could I know wheter a paragraph has bullet or not by checking the below conditions?
1129*b1cdbd2cSJim Jagielski //Please refer to the "case KEY_TAB:" section in SwEditWin::KeyInput(..) :
1130*b1cdbd2cSJim Jagielski // if( rSh.GetCurNumRule() && rSh.IsSttOfPara() &&
1131*b1cdbd2cSJim Jagielski // !rSh.HasReadonlySel() )
1132*b1cdbd2cSJim Jagielski // eKeyState = KS_NumDown;
1133*b1cdbd2cSJim Jagielski //Above code demonstrates that when the cursor is at the start of a paragraph which has bullet,
1134*b1cdbd2cSJim Jagielski //press TAB will increase the bullet level.
1135*b1cdbd2cSJim Jagielski //So I copied from that ^^
1136*b1cdbd2cSJim Jagielski if ( rWrtSh.GetCurNumRule() && !rWrtSh.HasReadonlySel() )
1137*b1cdbd2cSJim Jagielski {
1138*b1cdbd2cSJim Jagielski rWrtSh.NumUpDown( SID_INC_INDENT == nSlot );
1139*b1cdbd2cSJim Jagielski }
1140*b1cdbd2cSJim Jagielski else//execute the original processing functions
1141*b1cdbd2cSJim Jagielski {
1142*b1cdbd2cSJim Jagielski //below is copied of the old codes
1143*b1cdbd2cSJim Jagielski rWrtSh.MoveLeftMargin( SID_INC_INDENT == nSlot,
1144*b1cdbd2cSJim Jagielski rReq.GetModifier() != KEY_MOD1 );
1145*b1cdbd2cSJim Jagielski }
1146*b1cdbd2cSJim Jagielski }
1147*b1cdbd2cSJim Jagielski //rWrtSh.MoveLeftMargin( SID_INC_INDENT == nSlot,
1148*b1cdbd2cSJim Jagielski // rReq.GetModifier() != KEY_MOD1 );
1149*b1cdbd2cSJim Jagielski rReq.Done();
1150*b1cdbd2cSJim Jagielski break;
1151*b1cdbd2cSJim Jagielski case FN_DEC_INDENT_OFFSET:
1152*b1cdbd2cSJim Jagielski case FN_INC_INDENT_OFFSET:
1153*b1cdbd2cSJim Jagielski rWrtSh.MoveLeftMargin( FN_INC_INDENT_OFFSET == nSlot,
1154*b1cdbd2cSJim Jagielski rReq.GetModifier() == KEY_MOD1 );
1155*b1cdbd2cSJim Jagielski rReq.Done();
1156*b1cdbd2cSJim Jagielski break;
1157*b1cdbd2cSJim Jagielski
1158*b1cdbd2cSJim Jagielski case SID_ATTR_CHAR_COLOR2:
1159*b1cdbd2cSJim Jagielski {
1160*b1cdbd2cSJim Jagielski if(pItem)
1161*b1cdbd2cSJim Jagielski {
1162*b1cdbd2cSJim Jagielski Color aSet = ((const SvxColorItem*)pItem)->GetValue();
1163*b1cdbd2cSJim Jagielski SwEditWin& rEditWin = GetView().GetEditWin();
1164*b1cdbd2cSJim Jagielski rEditWin.SetTextColor(aSet);
1165*b1cdbd2cSJim Jagielski SwApplyTemplate* pApply = rEditWin.GetApplyTemplate();
1166*b1cdbd2cSJim Jagielski SvxColorItem aItem(aSet, RES_CHRATR_COLOR);
1167*b1cdbd2cSJim Jagielski
1168*b1cdbd2cSJim Jagielski // besteht eine Selektion, wird sie gleich gefaerbt
1169*b1cdbd2cSJim Jagielski if(!pApply && rWrtSh.HasSelection())
1170*b1cdbd2cSJim Jagielski {
1171*b1cdbd2cSJim Jagielski rWrtSh.SetAttrItem(SvxColorItem (aSet, RES_CHRATR_COLOR));
1172*b1cdbd2cSJim Jagielski }
1173*b1cdbd2cSJim Jagielski else if(!pApply || pApply->nColor != SID_ATTR_CHAR_COLOR_EXT)
1174*b1cdbd2cSJim Jagielski {
1175*b1cdbd2cSJim Jagielski GetView().GetViewFrame()->GetDispatcher()->Execute(SID_ATTR_CHAR_COLOR_EXT);
1176*b1cdbd2cSJim Jagielski }
1177*b1cdbd2cSJim Jagielski
1178*b1cdbd2cSJim Jagielski rReq.Done();
1179*b1cdbd2cSJim Jagielski }
1180*b1cdbd2cSJim Jagielski }
1181*b1cdbd2cSJim Jagielski break;
1182*b1cdbd2cSJim Jagielski case SID_ATTR_CHAR_COLOR_BACKGROUND:
1183*b1cdbd2cSJim Jagielski {
1184*b1cdbd2cSJim Jagielski SwEditWin& rEdtWin = GetView().GetEditWin();
1185*b1cdbd2cSJim Jagielski SwApplyTemplate* pApply = rEdtWin.GetApplyTemplate();
1186*b1cdbd2cSJim Jagielski rEdtWin.SetTextBackColorTransparent(0 == pItem);
1187*b1cdbd2cSJim Jagielski Color aSet;
1188*b1cdbd2cSJim Jagielski if(pItem)
1189*b1cdbd2cSJim Jagielski {
1190*b1cdbd2cSJim Jagielski aSet = ((const SvxColorItem*)pItem)->GetValue();
1191*b1cdbd2cSJim Jagielski rEdtWin.SetTextBackColor(aSet);
1192*b1cdbd2cSJim Jagielski }
1193*b1cdbd2cSJim Jagielski if(!pApply && (rWrtSh.HasSelection() || rReq.IsAPI()))
1194*b1cdbd2cSJim Jagielski {
1195*b1cdbd2cSJim Jagielski SvxBrushItem aBrushItem(RES_CHRATR_BACKGROUND);
1196*b1cdbd2cSJim Jagielski if(pItem)
1197*b1cdbd2cSJim Jagielski aBrushItem.SetColor(aSet);
1198*b1cdbd2cSJim Jagielski else
1199*b1cdbd2cSJim Jagielski aBrushItem.SetColor(Color(COL_TRANSPARENT));
1200*b1cdbd2cSJim Jagielski rWrtSh.SetAttrItem( aBrushItem );
1201*b1cdbd2cSJim Jagielski }
1202*b1cdbd2cSJim Jagielski else if(!pApply || pApply->nColor != SID_ATTR_CHAR_COLOR_BACKGROUND_EXT)
1203*b1cdbd2cSJim Jagielski {
1204*b1cdbd2cSJim Jagielski GetView().GetViewFrame()->GetDispatcher()->Execute(SID_ATTR_CHAR_COLOR_BACKGROUND_EXT);
1205*b1cdbd2cSJim Jagielski }
1206*b1cdbd2cSJim Jagielski
1207*b1cdbd2cSJim Jagielski rReq.Done();
1208*b1cdbd2cSJim Jagielski
1209*b1cdbd2cSJim Jagielski }
1210*b1cdbd2cSJim Jagielski break;
1211*b1cdbd2cSJim Jagielski case SID_ATTR_CHAR_COLOR_BACKGROUND_EXT:
1212*b1cdbd2cSJim Jagielski case SID_ATTR_CHAR_COLOR_EXT:
1213*b1cdbd2cSJim Jagielski {
1214*b1cdbd2cSJim Jagielski SwEditWin& rEdtWin = GetView().GetEditWin();
1215*b1cdbd2cSJim Jagielski SwApplyTemplate* pApply = rEdtWin.GetApplyTemplate();
1216*b1cdbd2cSJim Jagielski SwApplyTemplate aTempl;
1217*b1cdbd2cSJim Jagielski sal_Bool bSelection = rWrtSh.HasSelection();
1218*b1cdbd2cSJim Jagielski if(bSelection)
1219*b1cdbd2cSJim Jagielski {
1220*b1cdbd2cSJim Jagielski
1221*b1cdbd2cSJim Jagielski if(nSlot == SID_ATTR_CHAR_COLOR_BACKGROUND_EXT)
1222*b1cdbd2cSJim Jagielski {
1223*b1cdbd2cSJim Jagielski rWrtSh.SetAttrItem(
1224*b1cdbd2cSJim Jagielski SvxBrushItem( rEdtWin.GetTextBackColor(), RES_CHRATR_BACKGROUND) );
1225*b1cdbd2cSJim Jagielski }
1226*b1cdbd2cSJim Jagielski else
1227*b1cdbd2cSJim Jagielski rWrtSh.SetAttrItem(
1228*b1cdbd2cSJim Jagielski SvxColorItem( rEdtWin.GetTextColor(), RES_CHRATR_COLOR) );
1229*b1cdbd2cSJim Jagielski }
1230*b1cdbd2cSJim Jagielski else
1231*b1cdbd2cSJim Jagielski {
1232*b1cdbd2cSJim Jagielski if(!pApply || pApply->nColor != nSlot)
1233*b1cdbd2cSJim Jagielski aTempl.nColor = nSlot;
1234*b1cdbd2cSJim Jagielski rEdtWin.SetApplyTemplate(aTempl);
1235*b1cdbd2cSJim Jagielski }
1236*b1cdbd2cSJim Jagielski
1237*b1cdbd2cSJim Jagielski rReq.Done();
1238*b1cdbd2cSJim Jagielski }
1239*b1cdbd2cSJim Jagielski break;
1240*b1cdbd2cSJim Jagielski
1241*b1cdbd2cSJim Jagielski case FN_NUM_BULLET_MOVEDOWN:
1242*b1cdbd2cSJim Jagielski if (!rWrtSh.IsAddMode())
1243*b1cdbd2cSJim Jagielski rWrtSh.MoveParagraph(1);
1244*b1cdbd2cSJim Jagielski rReq.Done();
1245*b1cdbd2cSJim Jagielski break;
1246*b1cdbd2cSJim Jagielski
1247*b1cdbd2cSJim Jagielski case FN_NUM_BULLET_MOVEUP:
1248*b1cdbd2cSJim Jagielski if (!rWrtSh.IsAddMode())
1249*b1cdbd2cSJim Jagielski rWrtSh.MoveParagraph(-1);
1250*b1cdbd2cSJim Jagielski rReq.Done();
1251*b1cdbd2cSJim Jagielski break;
1252*b1cdbd2cSJim Jagielski case SID_RUBY_DIALOG:
1253*b1cdbd2cSJim Jagielski case SID_HYPERLINK_DIALOG:
1254*b1cdbd2cSJim Jagielski {
1255*b1cdbd2cSJim Jagielski SfxRequest aReq(nSlot, SFX_CALLMODE_SLOT, SFX_APP()->GetPool());
1256*b1cdbd2cSJim Jagielski GetView().GetViewFrame()->ExecuteSlot( aReq);
1257*b1cdbd2cSJim Jagielski rReq.Ignore();
1258*b1cdbd2cSJim Jagielski }
1259*b1cdbd2cSJim Jagielski break;
1260*b1cdbd2cSJim Jagielski case FN_INSERT_PAGEHEADER:
1261*b1cdbd2cSJim Jagielski case FN_INSERT_PAGEFOOTER:
1262*b1cdbd2cSJim Jagielski if(pArgs && pArgs->Count())
1263*b1cdbd2cSJim Jagielski {
1264*b1cdbd2cSJim Jagielski String sStyleName;
1265*b1cdbd2cSJim Jagielski if(pItem)
1266*b1cdbd2cSJim Jagielski sStyleName = ((const SfxStringItem*)pItem)->GetValue();
1267*b1cdbd2cSJim Jagielski sal_Bool bOn = sal_True;
1268*b1cdbd2cSJim Jagielski if( SFX_ITEM_SET == pArgs->GetItemState(FN_PARAM_1, sal_False, &pItem))
1269*b1cdbd2cSJim Jagielski bOn = ((const SfxBoolItem*)pItem)->GetValue();
1270*b1cdbd2cSJim Jagielski ChangeHeaderOrFooter(sStyleName, FN_INSERT_PAGEHEADER == nSlot, bOn, !rReq.IsAPI());
1271*b1cdbd2cSJim Jagielski rReq.Done();
1272*b1cdbd2cSJim Jagielski }
1273*b1cdbd2cSJim Jagielski break;
1274*b1cdbd2cSJim Jagielski case FN_READONLY_SELECTION_MODE :
1275*b1cdbd2cSJim Jagielski if(GetView().GetDocShell()->IsReadOnly())
1276*b1cdbd2cSJim Jagielski {
1277*b1cdbd2cSJim Jagielski rWrtSh.SetReadonlySelectionOption(
1278*b1cdbd2cSJim Jagielski !rWrtSh.GetViewOptions()->IsSelectionInReadonly());
1279*b1cdbd2cSJim Jagielski rWrtSh.ShowCrsr();
1280*b1cdbd2cSJim Jagielski }
1281*b1cdbd2cSJim Jagielski break;
1282*b1cdbd2cSJim Jagielski case FN_SELECTION_MODE_DEFAULT:
1283*b1cdbd2cSJim Jagielski case FN_SELECTION_MODE_BLOCK :
1284*b1cdbd2cSJim Jagielski {
1285*b1cdbd2cSJim Jagielski bool bSetBlockMode = !rWrtSh.IsBlockMode();
1286*b1cdbd2cSJim Jagielski if( pArgs && SFX_ITEM_SET == pArgs->GetItemState(nSlot, sal_False, &pItem))
1287*b1cdbd2cSJim Jagielski bSetBlockMode = ((const SfxBoolItem*)pItem)->GetValue();
1288*b1cdbd2cSJim Jagielski if( ( nSlot == FN_SELECTION_MODE_DEFAULT ) ^ bSetBlockMode )
1289*b1cdbd2cSJim Jagielski rWrtSh.EnterBlockMode();
1290*b1cdbd2cSJim Jagielski else
1291*b1cdbd2cSJim Jagielski rWrtSh.EnterStdMode();
1292*b1cdbd2cSJim Jagielski SfxBindings &rBnd = GetView().GetViewFrame()->GetBindings();
1293*b1cdbd2cSJim Jagielski rBnd.Invalidate(FN_STAT_SELMODE);
1294*b1cdbd2cSJim Jagielski rBnd.Update(FN_STAT_SELMODE);
1295*b1cdbd2cSJim Jagielski }
1296*b1cdbd2cSJim Jagielski break;
1297*b1cdbd2cSJim Jagielski case SID_OPEN_HYPERLINK:
1298*b1cdbd2cSJim Jagielski case FN_COPY_HYPERLINK_LOCATION:
1299*b1cdbd2cSJim Jagielski {
1300*b1cdbd2cSJim Jagielski SfxItemSet aSet(GetPool(),
1301*b1cdbd2cSJim Jagielski RES_TXTATR_INETFMT,
1302*b1cdbd2cSJim Jagielski RES_TXTATR_INETFMT);
1303*b1cdbd2cSJim Jagielski rWrtSh.GetCurAttr(aSet);
1304*b1cdbd2cSJim Jagielski if(SFX_ITEM_SET <= aSet.GetItemState( RES_TXTATR_INETFMT, sal_True ))
1305*b1cdbd2cSJim Jagielski {
1306*b1cdbd2cSJim Jagielski const SwFmtINetFmt& rINetFmt = dynamic_cast<const SwFmtINetFmt&>( aSet.Get(RES_TXTATR_INETFMT, sal_True) );
1307*b1cdbd2cSJim Jagielski if( nSlot == FN_COPY_HYPERLINK_LOCATION )
1308*b1cdbd2cSJim Jagielski {
1309*b1cdbd2cSJim Jagielski ::uno::Reference< datatransfer::clipboard::XClipboard > xClipboard = GetView().GetEditWin().GetClipboard();
1310*b1cdbd2cSJim Jagielski vcl::unohelper::TextDataObject::CopyStringTo(
1311*b1cdbd2cSJim Jagielski rINetFmt.GetValue(),
1312*b1cdbd2cSJim Jagielski xClipboard );
1313*b1cdbd2cSJim Jagielski }
1314*b1cdbd2cSJim Jagielski else
1315*b1cdbd2cSJim Jagielski rWrtSh.ClickToINetAttr(rINetFmt, URLLOAD_NOFILTER);
1316*b1cdbd2cSJim Jagielski }
1317*b1cdbd2cSJim Jagielski }
1318*b1cdbd2cSJim Jagielski break;
1319*b1cdbd2cSJim Jagielski case SID_OPEN_XML_FILTERSETTINGS:
1320*b1cdbd2cSJim Jagielski {
1321*b1cdbd2cSJim Jagielski try
1322*b1cdbd2cSJim Jagielski {
1323*b1cdbd2cSJim Jagielski uno::Reference < ui::dialogs::XExecutableDialog > xDialog(::comphelper::getProcessServiceFactory()->createInstance(rtl::OUString::createFromAscii("com.sun.star.comp.ui.XSLTFilterDialog")), uno::UNO_QUERY);
1324*b1cdbd2cSJim Jagielski if( xDialog.is() )
1325*b1cdbd2cSJim Jagielski {
1326*b1cdbd2cSJim Jagielski xDialog->execute();
1327*b1cdbd2cSJim Jagielski }
1328*b1cdbd2cSJim Jagielski }
1329*b1cdbd2cSJim Jagielski catch( uno::Exception& )
1330*b1cdbd2cSJim Jagielski {
1331*b1cdbd2cSJim Jagielski }
1332*b1cdbd2cSJim Jagielski rReq.Ignore ();
1333*b1cdbd2cSJim Jagielski }
1334*b1cdbd2cSJim Jagielski break;
1335*b1cdbd2cSJim Jagielski case FN_FORMAT_APPLY_HEAD1:
1336*b1cdbd2cSJim Jagielski {
1337*b1cdbd2cSJim Jagielski }
1338*b1cdbd2cSJim Jagielski break;
1339*b1cdbd2cSJim Jagielski case FN_FORMAT_APPLY_HEAD2:
1340*b1cdbd2cSJim Jagielski {
1341*b1cdbd2cSJim Jagielski }
1342*b1cdbd2cSJim Jagielski break;
1343*b1cdbd2cSJim Jagielski case FN_FORMAT_APPLY_HEAD3:
1344*b1cdbd2cSJim Jagielski {
1345*b1cdbd2cSJim Jagielski }
1346*b1cdbd2cSJim Jagielski break;
1347*b1cdbd2cSJim Jagielski case FN_FORMAT_APPLY_DEFAULT:
1348*b1cdbd2cSJim Jagielski {
1349*b1cdbd2cSJim Jagielski }
1350*b1cdbd2cSJim Jagielski break;
1351*b1cdbd2cSJim Jagielski case FN_FORMAT_APPLY_TEXTBODY:
1352*b1cdbd2cSJim Jagielski {
1353*b1cdbd2cSJim Jagielski }
1354*b1cdbd2cSJim Jagielski break;
1355*b1cdbd2cSJim Jagielski case FN_WORDCOUNT_DIALOG:
1356*b1cdbd2cSJim Jagielski {
1357*b1cdbd2cSJim Jagielski SwWrtShell &rSh = GetShell();
1358*b1cdbd2cSJim Jagielski SwDocStat aCurr;
1359*b1cdbd2cSJim Jagielski SwDocStat aDocStat( rSh.getIDocumentStatistics()->GetDocStat() );
1360*b1cdbd2cSJim Jagielski {
1361*b1cdbd2cSJim Jagielski SwWait aWait( *GetView().GetDocShell(), true );
1362*b1cdbd2cSJim Jagielski rSh.StartAction();
1363*b1cdbd2cSJim Jagielski rSh.CountWords( aCurr );
1364*b1cdbd2cSJim Jagielski rSh.UpdateDocStat( aDocStat );
1365*b1cdbd2cSJim Jagielski rSh.EndAction();
1366*b1cdbd2cSJim Jagielski }
1367*b1cdbd2cSJim Jagielski
1368*b1cdbd2cSJim Jagielski SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
1369*b1cdbd2cSJim Jagielski DBG_ASSERT(pFact, "Dialogdiet fail!");
1370*b1cdbd2cSJim Jagielski AbstractSwWordCountDialog* pDialog = pFact->CreateSwWordCountDialog( GetView().GetWindow() );
1371*b1cdbd2cSJim Jagielski pDialog->SetValues(aCurr, aDocStat );
1372*b1cdbd2cSJim Jagielski pDialog->Execute();
1373*b1cdbd2cSJim Jagielski delete pDialog;
1374*b1cdbd2cSJim Jagielski }
1375*b1cdbd2cSJim Jagielski break;
1376*b1cdbd2cSJim Jagielski default:
1377*b1cdbd2cSJim Jagielski ASSERT(!this, falscher Dispatcher);
1378*b1cdbd2cSJim Jagielski return;
1379*b1cdbd2cSJim Jagielski }
1380*b1cdbd2cSJim Jagielski }
1381*b1cdbd2cSJim Jagielski
1382*b1cdbd2cSJim Jagielski
1383*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
1384*b1cdbd2cSJim Jagielski Beschreibung:
1385*b1cdbd2cSJim Jagielski --------------------------------------------------------------------*/
1386*b1cdbd2cSJim Jagielski
1387*b1cdbd2cSJim Jagielski
GetState(SfxItemSet & rSet)1388*b1cdbd2cSJim Jagielski void SwTextShell::GetState( SfxItemSet &rSet )
1389*b1cdbd2cSJim Jagielski {
1390*b1cdbd2cSJim Jagielski SwWrtShell &rSh = GetShell();
1391*b1cdbd2cSJim Jagielski SfxWhichIter aIter( rSet );
1392*b1cdbd2cSJim Jagielski sal_uInt16 nWhich = aIter.FirstWhich();
1393*b1cdbd2cSJim Jagielski while ( nWhich )
1394*b1cdbd2cSJim Jagielski {
1395*b1cdbd2cSJim Jagielski switch ( nWhich )
1396*b1cdbd2cSJim Jagielski {
1397*b1cdbd2cSJim Jagielski case SID_LANGUAGE_STATUS:
1398*b1cdbd2cSJim Jagielski {
1399*b1cdbd2cSJim Jagielski // the value of used script types
1400*b1cdbd2cSJim Jagielski String aScriptTypesInUse( String::CreateFromInt32( rSh.GetScriptType() ) );
1401*b1cdbd2cSJim Jagielski
1402*b1cdbd2cSJim Jagielski SvtLanguageTable aLangTable;
1403*b1cdbd2cSJim Jagielski
1404*b1cdbd2cSJim Jagielski // get keyboard language
1405*b1cdbd2cSJim Jagielski String aKeyboardLang;
1406*b1cdbd2cSJim Jagielski LanguageType nLang = LANGUAGE_DONTKNOW;
1407*b1cdbd2cSJim Jagielski SwEditWin& rEditWin = GetView().GetEditWin();
1408*b1cdbd2cSJim Jagielski nLang = rEditWin.GetInputLanguage();
1409*b1cdbd2cSJim Jagielski if (nLang != LANGUAGE_DONTKNOW && nLang != LANGUAGE_SYSTEM)
1410*b1cdbd2cSJim Jagielski aKeyboardLang = aLangTable.GetString( nLang );
1411*b1cdbd2cSJim Jagielski
1412*b1cdbd2cSJim Jagielski // get the language that is in use
1413*b1cdbd2cSJim Jagielski const String aMultipleLanguages = String::CreateFromAscii("*");
1414*b1cdbd2cSJim Jagielski String aCurrentLang = aMultipleLanguages;
1415*b1cdbd2cSJim Jagielski nLang = SwLangHelper::GetCurrentLanguage( rSh );
1416*b1cdbd2cSJim Jagielski if (nLang != LANGUAGE_DONTKNOW)
1417*b1cdbd2cSJim Jagielski aCurrentLang = aLangTable.GetString( nLang );
1418*b1cdbd2cSJim Jagielski
1419*b1cdbd2cSJim Jagielski // build sequence for status value
1420*b1cdbd2cSJim Jagielski uno::Sequence< ::rtl::OUString > aSeq( 4 );
1421*b1cdbd2cSJim Jagielski aSeq[0] = aCurrentLang;
1422*b1cdbd2cSJim Jagielski aSeq[1] = aScriptTypesInUse;
1423*b1cdbd2cSJim Jagielski aSeq[2] = aKeyboardLang;
1424*b1cdbd2cSJim Jagielski aSeq[3] = SwLangHelper::GetTextForLanguageGuessing( rSh );
1425*b1cdbd2cSJim Jagielski
1426*b1cdbd2cSJim Jagielski // set sequence as status value
1427*b1cdbd2cSJim Jagielski SfxStringListItem aItem( SID_LANGUAGE_STATUS );
1428*b1cdbd2cSJim Jagielski aItem.SetStringList( aSeq );
1429*b1cdbd2cSJim Jagielski rSet.Put( aItem, SID_LANGUAGE_STATUS );
1430*b1cdbd2cSJim Jagielski }
1431*b1cdbd2cSJim Jagielski break;
1432*b1cdbd2cSJim Jagielski
1433*b1cdbd2cSJim Jagielski case SID_THES:
1434*b1cdbd2cSJim Jagielski {
1435*b1cdbd2cSJim Jagielski // is there a valid selection to get text from?
1436*b1cdbd2cSJim Jagielski String aText;
1437*b1cdbd2cSJim Jagielski sal_Bool bValid = !rSh.HasSelection() ||
1438*b1cdbd2cSJim Jagielski (rSh.IsSelOnePara() && !rSh.IsMultiSelection());
1439*b1cdbd2cSJim Jagielski // prevent context menu from showing when cursor is not in or at the end of a word
1440*b1cdbd2cSJim Jagielski // (GetCurWord will return the next word if there is none at the current position...)
1441*b1cdbd2cSJim Jagielski const sal_Int16 nWordType = ::i18n::WordType::DICTIONARY_WORD;
1442*b1cdbd2cSJim Jagielski bool bWord = rSh.IsInWord( nWordType ) || rSh.IsStartWord( nWordType ) || rSh.IsEndWord( nWordType );
1443*b1cdbd2cSJim Jagielski if (bValid && bWord)
1444*b1cdbd2cSJim Jagielski aText = rSh.HasSelection()? rSh.GetSelTxt() : rSh.GetCurWord();
1445*b1cdbd2cSJim Jagielski
1446*b1cdbd2cSJim Jagielski LanguageType nLang = rSh.GetCurLang();
1447*b1cdbd2cSJim Jagielski lang::Locale aLocale = SvxCreateLocale( nLang );
1448*b1cdbd2cSJim Jagielski String aLangText( MsLangId::convertLanguageToIsoString( nLang ) );
1449*b1cdbd2cSJim Jagielski
1450*b1cdbd2cSJim Jagielski // set word and locale to look up as status value
1451*b1cdbd2cSJim Jagielski String aStatusVal( aText );
1452*b1cdbd2cSJim Jagielski aStatusVal.AppendAscii( "#" );
1453*b1cdbd2cSJim Jagielski aStatusVal += aLangText;
1454*b1cdbd2cSJim Jagielski
1455*b1cdbd2cSJim Jagielski rSet.Put( SfxStringItem( SID_THES, aStatusVal ) );
1456*b1cdbd2cSJim Jagielski
1457*b1cdbd2cSJim Jagielski // disable "Thesaurus" context menu entry if there is nothing to look up
1458*b1cdbd2cSJim Jagielski uno::Reference< linguistic2::XThesaurus > xThes( ::GetThesaurus() );
1459*b1cdbd2cSJim Jagielski if (aText.Len() == 0 ||
1460*b1cdbd2cSJim Jagielski !xThes.is() || nLang == LANGUAGE_NONE || !xThes->hasLocale( aLocale ))
1461*b1cdbd2cSJim Jagielski rSet.DisableItem( SID_THES );
1462*b1cdbd2cSJim Jagielski }
1463*b1cdbd2cSJim Jagielski break;
1464*b1cdbd2cSJim Jagielski
1465*b1cdbd2cSJim Jagielski case FN_NUMBER_NEWSTART :
1466*b1cdbd2cSJim Jagielski if(!rSh.GetCurNumRule())
1467*b1cdbd2cSJim Jagielski rSet.DisableItem(nWhich);
1468*b1cdbd2cSJim Jagielski else
1469*b1cdbd2cSJim Jagielski rSet.Put(SfxBoolItem(FN_NUMBER_NEWSTART,
1470*b1cdbd2cSJim Jagielski rSh.IsNumRuleStart()));
1471*b1cdbd2cSJim Jagielski break;
1472*b1cdbd2cSJim Jagielski
1473*b1cdbd2cSJim Jagielski case FN_EDIT_FORMULA:
1474*b1cdbd2cSJim Jagielski case SID_CHARMAP:
1475*b1cdbd2cSJim Jagielski {
1476*b1cdbd2cSJim Jagielski const int nType = rSh.GetSelectionType();
1477*b1cdbd2cSJim Jagielski if (!(nType & nsSelectionType::SEL_TXT) &&
1478*b1cdbd2cSJim Jagielski !(nType & nsSelectionType::SEL_TBL) &&
1479*b1cdbd2cSJim Jagielski !(nType & nsSelectionType::SEL_NUM))
1480*b1cdbd2cSJim Jagielski {
1481*b1cdbd2cSJim Jagielski rSet.DisableItem(nWhich);
1482*b1cdbd2cSJim Jagielski }
1483*b1cdbd2cSJim Jagielski else if ( nWhich == FN_EDIT_FORMULA
1484*b1cdbd2cSJim Jagielski && rSh.CrsrInsideInputFld() )
1485*b1cdbd2cSJim Jagielski {
1486*b1cdbd2cSJim Jagielski rSet.DisableItem( nWhich );
1487*b1cdbd2cSJim Jagielski }
1488*b1cdbd2cSJim Jagielski }
1489*b1cdbd2cSJim Jagielski break;
1490*b1cdbd2cSJim Jagielski
1491*b1cdbd2cSJim Jagielski case FN_INSERT_ENDNOTE:
1492*b1cdbd2cSJim Jagielski case FN_INSERT_FOOTNOTE:
1493*b1cdbd2cSJim Jagielski case FN_INSERT_FOOTNOTE_DLG:
1494*b1cdbd2cSJim Jagielski {
1495*b1cdbd2cSJim Jagielski const sal_uInt16 nNoType =
1496*b1cdbd2cSJim Jagielski FRMTYPE_FLY_ANY | FRMTYPE_HEADER | FRMTYPE_FOOTER | FRMTYPE_FOOTNOTE;
1497*b1cdbd2cSJim Jagielski if ( (rSh.GetFrmType(0,sal_True) & nNoType) )
1498*b1cdbd2cSJim Jagielski rSet.DisableItem(nWhich);
1499*b1cdbd2cSJim Jagielski
1500*b1cdbd2cSJim Jagielski if ( rSh.CrsrInsideInputFld() )
1501*b1cdbd2cSJim Jagielski {
1502*b1cdbd2cSJim Jagielski rSet.DisableItem( nWhich );
1503*b1cdbd2cSJim Jagielski }
1504*b1cdbd2cSJim Jagielski }
1505*b1cdbd2cSJim Jagielski break;
1506*b1cdbd2cSJim Jagielski
1507*b1cdbd2cSJim Jagielski case FN_INSERT_HYPERLINK:
1508*b1cdbd2cSJim Jagielski case SID_INSERTDOC:
1509*b1cdbd2cSJim Jagielski case FN_INSERT_GLOSSARY:
1510*b1cdbd2cSJim Jagielski case FN_EXPAND_GLOSSARY:
1511*b1cdbd2cSJim Jagielski if ( rSh.CrsrInsideInputFld() )
1512*b1cdbd2cSJim Jagielski {
1513*b1cdbd2cSJim Jagielski rSet.DisableItem( nWhich );
1514*b1cdbd2cSJim Jagielski }
1515*b1cdbd2cSJim Jagielski break;
1516*b1cdbd2cSJim Jagielski
1517*b1cdbd2cSJim Jagielski case FN_INSERT_TABLE:
1518*b1cdbd2cSJim Jagielski if ( rSh.CrsrInsideInputFld()
1519*b1cdbd2cSJim Jagielski || rSh.GetTableFmt()
1520*b1cdbd2cSJim Jagielski || (rSh.GetFrmType(0,sal_True) & FRMTYPE_FOOTNOTE) )
1521*b1cdbd2cSJim Jagielski {
1522*b1cdbd2cSJim Jagielski rSet.DisableItem( nWhich );
1523*b1cdbd2cSJim Jagielski }
1524*b1cdbd2cSJim Jagielski break;
1525*b1cdbd2cSJim Jagielski
1526*b1cdbd2cSJim Jagielski case FN_CALCULATE:
1527*b1cdbd2cSJim Jagielski if ( !rSh.IsSelection() )
1528*b1cdbd2cSJim Jagielski rSet.DisableItem(nWhich);
1529*b1cdbd2cSJim Jagielski break;
1530*b1cdbd2cSJim Jagielski case FN_GOTO_REFERENCE:
1531*b1cdbd2cSJim Jagielski {
1532*b1cdbd2cSJim Jagielski SwField *pFld = rSh.GetCurFld();
1533*b1cdbd2cSJim Jagielski if ( !pFld || (pFld && pFld->GetTypeId() != TYP_GETREFFLD) )
1534*b1cdbd2cSJim Jagielski rSet.DisableItem(nWhich);
1535*b1cdbd2cSJim Jagielski }
1536*b1cdbd2cSJim Jagielski break;
1537*b1cdbd2cSJim Jagielski case FN_AUTOFORMAT_AUTO:
1538*b1cdbd2cSJim Jagielski {
1539*b1cdbd2cSJim Jagielski rSet.Put( SfxBoolItem( nWhich, SvxAutoCorrCfg::Get()->IsAutoFmtByInput() ));
1540*b1cdbd2cSJim Jagielski }
1541*b1cdbd2cSJim Jagielski break;
1542*b1cdbd2cSJim Jagielski
1543*b1cdbd2cSJim Jagielski case FN_GLOSSARY_DLG:
1544*b1cdbd2cSJim Jagielski {
1545*b1cdbd2cSJim Jagielski if ( rSh.CrsrInsideInputFld() )
1546*b1cdbd2cSJim Jagielski {
1547*b1cdbd2cSJim Jagielski rSet.DisableItem( nWhich );
1548*b1cdbd2cSJim Jagielski }
1549*b1cdbd2cSJim Jagielski else
1550*b1cdbd2cSJim Jagielski {
1551*b1cdbd2cSJim Jagielski rSet.Put(SfxBoolItem(nWhich), sal_True);
1552*b1cdbd2cSJim Jagielski }
1553*b1cdbd2cSJim Jagielski }
1554*b1cdbd2cSJim Jagielski break;
1555*b1cdbd2cSJim Jagielski
1556*b1cdbd2cSJim Jagielski case SID_DEC_INDENT:
1557*b1cdbd2cSJim Jagielski case SID_INC_INDENT:
1558*b1cdbd2cSJim Jagielski {
1559*b1cdbd2cSJim Jagielski //if the paragrah has bullet we'll do the following things:
1560*b1cdbd2cSJim Jagielski //1: if the bullet level is the first level, disable the decrease-indent button
1561*b1cdbd2cSJim Jagielski //2: if the bullet level is the last level, disable the increase-indent button
1562*b1cdbd2cSJim Jagielski if ( rSh.GetCurNumRule() && !rSh.HasReadonlySel() )
1563*b1cdbd2cSJim Jagielski {
1564*b1cdbd2cSJim Jagielski sal_uInt8 nLevel = rSh.GetNumLevel();
1565*b1cdbd2cSJim Jagielski if ( nLevel == (MAXLEVEL-1) && nWhich == SID_INC_INDENT ||
1566*b1cdbd2cSJim Jagielski nLevel == 0 && nWhich == SID_DEC_INDENT )
1567*b1cdbd2cSJim Jagielski {
1568*b1cdbd2cSJim Jagielski rSet.DisableItem( nWhich );
1569*b1cdbd2cSJim Jagielski }
1570*b1cdbd2cSJim Jagielski }
1571*b1cdbd2cSJim Jagielski else//if the paragraph has no bullet, execute the original functions
1572*b1cdbd2cSJim Jagielski {
1573*b1cdbd2cSJim Jagielski //below is copied of the old codes
1574*b1cdbd2cSJim Jagielski sal_uInt16 nHtmlMode = ::GetHtmlMode(GetView().GetDocShell());
1575*b1cdbd2cSJim Jagielski nHtmlMode &= HTMLMODE_ON|HTMLMODE_SOME_STYLES;
1576*b1cdbd2cSJim Jagielski if( (nHtmlMode == HTMLMODE_ON) || !rSh.IsMoveLeftMargin(
1577*b1cdbd2cSJim Jagielski SID_INC_INDENT == nWhich, sal_True ))
1578*b1cdbd2cSJim Jagielski rSet.DisableItem( nWhich );
1579*b1cdbd2cSJim Jagielski }
1580*b1cdbd2cSJim Jagielski //old code begins
1581*b1cdbd2cSJim Jagielski //sal_uInt16 nHtmlMode = ::GetHtmlMode(GetView().GetDocShell());
1582*b1cdbd2cSJim Jagielski //nHtmlMode &= HTMLMODE_ON|HTMLMODE_SOME_STYLES;
1583*b1cdbd2cSJim Jagielski //if( (nHtmlMode == HTMLMODE_ON) || !rSh.IsMoveLeftMargin(
1584*b1cdbd2cSJim Jagielski // SID_INC_INDENT == nWhich, TRUE ))
1585*b1cdbd2cSJim Jagielski // rSet.DisableItem( nWhich );
1586*b1cdbd2cSJim Jagielski //old code ends
1587*b1cdbd2cSJim Jagielski }
1588*b1cdbd2cSJim Jagielski break;
1589*b1cdbd2cSJim Jagielski
1590*b1cdbd2cSJim Jagielski case FN_DEC_INDENT_OFFSET:
1591*b1cdbd2cSJim Jagielski case FN_INC_INDENT_OFFSET:
1592*b1cdbd2cSJim Jagielski {
1593*b1cdbd2cSJim Jagielski sal_uInt16 nHtmlMode = ::GetHtmlMode(GetView().GetDocShell());
1594*b1cdbd2cSJim Jagielski nHtmlMode &= HTMLMODE_ON|HTMLMODE_SOME_STYLES;
1595*b1cdbd2cSJim Jagielski if( (nHtmlMode == HTMLMODE_ON) ||
1596*b1cdbd2cSJim Jagielski !rSh.IsMoveLeftMargin( FN_INC_INDENT_OFFSET == nWhich,
1597*b1cdbd2cSJim Jagielski sal_False ))
1598*b1cdbd2cSJim Jagielski rSet.DisableItem( nWhich );
1599*b1cdbd2cSJim Jagielski }
1600*b1cdbd2cSJim Jagielski break;
1601*b1cdbd2cSJim Jagielski
1602*b1cdbd2cSJim Jagielski case SID_ATTR_CHAR_COLOR2:
1603*b1cdbd2cSJim Jagielski {
1604*b1cdbd2cSJim Jagielski rSet.Put(SvxColorItem(GetView().GetEditWin().GetTextColor(), SID_ATTR_CHAR_COLOR2));
1605*b1cdbd2cSJim Jagielski }
1606*b1cdbd2cSJim Jagielski break;
1607*b1cdbd2cSJim Jagielski case SID_ATTR_CHAR_COLOR_BACKGROUND:
1608*b1cdbd2cSJim Jagielski {
1609*b1cdbd2cSJim Jagielski if(GetView().GetEditWin().IsTextBackColorTransparent())
1610*b1cdbd2cSJim Jagielski rSet.Put(SvxColorItem(Color(COL_TRANSPARENT), SID_ATTR_CHAR_COLOR_BACKGROUND));
1611*b1cdbd2cSJim Jagielski else
1612*b1cdbd2cSJim Jagielski rSet.Put(SvxColorItem(GetView().GetEditWin().GetTextBackColor(), SID_ATTR_CHAR_COLOR_BACKGROUND));
1613*b1cdbd2cSJim Jagielski }
1614*b1cdbd2cSJim Jagielski break;
1615*b1cdbd2cSJim Jagielski case SID_ATTR_CHAR_COLOR_BACKGROUND_EXT:
1616*b1cdbd2cSJim Jagielski case SID_ATTR_CHAR_COLOR_EXT:
1617*b1cdbd2cSJim Jagielski {
1618*b1cdbd2cSJim Jagielski SwEditWin& rEdtWin = GetView().GetEditWin();
1619*b1cdbd2cSJim Jagielski SwApplyTemplate* pApply = rEdtWin.GetApplyTemplate();
1620*b1cdbd2cSJim Jagielski rSet.Put(SfxBoolItem(nWhich, pApply && pApply->nColor == nWhich));
1621*b1cdbd2cSJim Jagielski }
1622*b1cdbd2cSJim Jagielski break;
1623*b1cdbd2cSJim Jagielski
1624*b1cdbd2cSJim Jagielski case FN_INSERT_BOOKMARK:
1625*b1cdbd2cSJim Jagielski if( rSh.IsTableMode()
1626*b1cdbd2cSJim Jagielski || rSh.CrsrInsideInputFld() )
1627*b1cdbd2cSJim Jagielski {
1628*b1cdbd2cSJim Jagielski rSet.DisableItem( nWhich );
1629*b1cdbd2cSJim Jagielski }
1630*b1cdbd2cSJim Jagielski break;
1631*b1cdbd2cSJim Jagielski
1632*b1cdbd2cSJim Jagielski
1633*b1cdbd2cSJim Jagielski case FN_INSERT_BREAK:
1634*b1cdbd2cSJim Jagielski if ( rSh.HasReadonlySel()
1635*b1cdbd2cSJim Jagielski && !rSh.CrsrInsideInputFld() )
1636*b1cdbd2cSJim Jagielski {
1637*b1cdbd2cSJim Jagielski rSet.DisableItem( nWhich );
1638*b1cdbd2cSJim Jagielski }
1639*b1cdbd2cSJim Jagielski break;
1640*b1cdbd2cSJim Jagielski
1641*b1cdbd2cSJim Jagielski
1642*b1cdbd2cSJim Jagielski case FN_INSERT_BREAK_DLG:
1643*b1cdbd2cSJim Jagielski case FN_INSERT_COLUMN_BREAK:
1644*b1cdbd2cSJim Jagielski case FN_INSERT_PAGEBREAK:
1645*b1cdbd2cSJim Jagielski if( rSh.CrsrInsideInputFld() )
1646*b1cdbd2cSJim Jagielski {
1647*b1cdbd2cSJim Jagielski rSet.DisableItem( nWhich );
1648*b1cdbd2cSJim Jagielski }
1649*b1cdbd2cSJim Jagielski break;
1650*b1cdbd2cSJim Jagielski
1651*b1cdbd2cSJim Jagielski case FN_INSERT_PAGEHEADER:
1652*b1cdbd2cSJim Jagielski case FN_INSERT_PAGEFOOTER:
1653*b1cdbd2cSJim Jagielski {
1654*b1cdbd2cSJim Jagielski #ifndef CHECK_MENU
1655*b1cdbd2cSJim Jagielski rSet.Put( SfxObjectShellItem( nWhich, GetView().GetDocShell() ));
1656*b1cdbd2cSJim Jagielski #else
1657*b1cdbd2cSJim Jagielski // Seitenvorlagen besorgen
1658*b1cdbd2cSJim Jagielski sal_Bool bFound = sal_False;
1659*b1cdbd2cSJim Jagielski sal_uInt16 n, nCnt = rSh.GetPageDescCnt();
1660*b1cdbd2cSJim Jagielski for( n = 0; n < nCnt; ++n )
1661*b1cdbd2cSJim Jagielski {
1662*b1cdbd2cSJim Jagielski const SwPageDesc& rDesc = rSh.GetPageDesc( n );
1663*b1cdbd2cSJim Jagielski if( FN_INSERT_PAGEHEADER == nWhich
1664*b1cdbd2cSJim Jagielski ? !rDesc.GetMaster().GetHeader().IsActive()
1665*b1cdbd2cSJim Jagielski : !rDesc.GetMaster().GetFooter().IsActive() )
1666*b1cdbd2cSJim Jagielski {
1667*b1cdbd2cSJim Jagielski bFound = sal_True;
1668*b1cdbd2cSJim Jagielski break;
1669*b1cdbd2cSJim Jagielski }
1670*b1cdbd2cSJim Jagielski }
1671*b1cdbd2cSJim Jagielski
1672*b1cdbd2cSJim Jagielski if( bFound )
1673*b1cdbd2cSJim Jagielski rSet.Put( SfxObjectShellItem( nWhich, GetView().GetDocShell() ));
1674*b1cdbd2cSJim Jagielski else
1675*b1cdbd2cSJim Jagielski rSet.DisableItem( nWhich );
1676*b1cdbd2cSJim Jagielski #endif
1677*b1cdbd2cSJim Jagielski }
1678*b1cdbd2cSJim Jagielski break;
1679*b1cdbd2cSJim Jagielski case FN_TABLE_SORT_DIALOG:
1680*b1cdbd2cSJim Jagielski case FN_SORTING_DLG:
1681*b1cdbd2cSJim Jagielski if(!rSh.HasSelection() ||
1682*b1cdbd2cSJim Jagielski (FN_TABLE_SORT_DIALOG == nWhich && !rSh.GetTableFmt()))
1683*b1cdbd2cSJim Jagielski rSet.DisableItem( nWhich );
1684*b1cdbd2cSJim Jagielski break;
1685*b1cdbd2cSJim Jagielski
1686*b1cdbd2cSJim Jagielski case SID_RUBY_DIALOG:
1687*b1cdbd2cSJim Jagielski {
1688*b1cdbd2cSJim Jagielski SvtCJKOptions aCJKOptions;
1689*b1cdbd2cSJim Jagielski if( !aCJKOptions.IsRubyEnabled()
1690*b1cdbd2cSJim Jagielski || rSh.CrsrInsideInputFld() )
1691*b1cdbd2cSJim Jagielski {
1692*b1cdbd2cSJim Jagielski GetView().GetViewFrame()->GetBindings().SetVisibleState( nWhich, sal_False );
1693*b1cdbd2cSJim Jagielski rSet.DisableItem(nWhich);
1694*b1cdbd2cSJim Jagielski }
1695*b1cdbd2cSJim Jagielski else
1696*b1cdbd2cSJim Jagielski GetView().GetViewFrame()->GetBindings().SetVisibleState( nWhich, sal_True );
1697*b1cdbd2cSJim Jagielski }
1698*b1cdbd2cSJim Jagielski break;
1699*b1cdbd2cSJim Jagielski
1700*b1cdbd2cSJim Jagielski case SID_HYPERLINK_DIALOG:
1701*b1cdbd2cSJim Jagielski if( GetView().GetDocShell()->IsReadOnly()
1702*b1cdbd2cSJim Jagielski || ( !GetView().GetViewFrame()->HasChildWindow(nWhich)
1703*b1cdbd2cSJim Jagielski && rSh.HasReadonlySel() )
1704*b1cdbd2cSJim Jagielski || rSh.CrsrInsideInputFld() )
1705*b1cdbd2cSJim Jagielski {
1706*b1cdbd2cSJim Jagielski rSet.DisableItem(nWhich);
1707*b1cdbd2cSJim Jagielski }
1708*b1cdbd2cSJim Jagielski else
1709*b1cdbd2cSJim Jagielski {
1710*b1cdbd2cSJim Jagielski rSet.Put(SfxBoolItem( nWhich, 0 != GetView().GetViewFrame()->GetChildWindow( nWhich ) ));
1711*b1cdbd2cSJim Jagielski }
1712*b1cdbd2cSJim Jagielski break;
1713*b1cdbd2cSJim Jagielski
1714*b1cdbd2cSJim Jagielski case FN_EDIT_HYPERLINK:
1715*b1cdbd2cSJim Jagielski case FN_REMOVE_HYPERLINK:
1716*b1cdbd2cSJim Jagielski case FN_COPY_HYPERLINK_LOCATION:
1717*b1cdbd2cSJim Jagielski {
1718*b1cdbd2cSJim Jagielski SfxItemSet aSet(GetPool(),
1719*b1cdbd2cSJim Jagielski RES_TXTATR_INETFMT,
1720*b1cdbd2cSJim Jagielski RES_TXTATR_INETFMT);
1721*b1cdbd2cSJim Jagielski rSh.GetCurAttr(aSet);
1722*b1cdbd2cSJim Jagielski if(SFX_ITEM_SET > aSet.GetItemState( RES_TXTATR_INETFMT, sal_True ) || rSh.HasReadonlySel())
1723*b1cdbd2cSJim Jagielski {
1724*b1cdbd2cSJim Jagielski rSet.DisableItem(nWhich);
1725*b1cdbd2cSJim Jagielski }
1726*b1cdbd2cSJim Jagielski }
1727*b1cdbd2cSJim Jagielski break;
1728*b1cdbd2cSJim Jagielski
1729*b1cdbd2cSJim Jagielski case SID_TRANSLITERATE_HALFWIDTH:
1730*b1cdbd2cSJim Jagielski case SID_TRANSLITERATE_FULLWIDTH:
1731*b1cdbd2cSJim Jagielski case SID_TRANSLITERATE_HIRAGANA:
1732*b1cdbd2cSJim Jagielski case SID_TRANSLITERATE_KATAGANA:
1733*b1cdbd2cSJim Jagielski {
1734*b1cdbd2cSJim Jagielski SvtCJKOptions aCJKOptions;
1735*b1cdbd2cSJim Jagielski if(!aCJKOptions.IsChangeCaseMapEnabled())
1736*b1cdbd2cSJim Jagielski {
1737*b1cdbd2cSJim Jagielski GetView().GetViewFrame()->GetBindings().SetVisibleState( nWhich, sal_False );
1738*b1cdbd2cSJim Jagielski rSet.DisableItem(nWhich);
1739*b1cdbd2cSJim Jagielski }
1740*b1cdbd2cSJim Jagielski else
1741*b1cdbd2cSJim Jagielski GetView().GetViewFrame()->GetBindings().SetVisibleState( nWhich, sal_True );
1742*b1cdbd2cSJim Jagielski }
1743*b1cdbd2cSJim Jagielski break;
1744*b1cdbd2cSJim Jagielski case FN_READONLY_SELECTION_MODE :
1745*b1cdbd2cSJim Jagielski if(!GetView().GetDocShell()->IsReadOnly())
1746*b1cdbd2cSJim Jagielski rSet.DisableItem( nWhich );
1747*b1cdbd2cSJim Jagielski else
1748*b1cdbd2cSJim Jagielski {
1749*b1cdbd2cSJim Jagielski rSet.Put(SfxBoolItem(nWhich, rSh.GetViewOptions()->IsSelectionInReadonly()));
1750*b1cdbd2cSJim Jagielski }
1751*b1cdbd2cSJim Jagielski break;
1752*b1cdbd2cSJim Jagielski case FN_SELECTION_MODE_DEFAULT:
1753*b1cdbd2cSJim Jagielski case FN_SELECTION_MODE_BLOCK :
1754*b1cdbd2cSJim Jagielski rSet.Put(SfxBoolItem(nWhich, (nWhich == FN_SELECTION_MODE_DEFAULT) != rSh.IsBlockMode()));
1755*b1cdbd2cSJim Jagielski break;
1756*b1cdbd2cSJim Jagielski case SID_OPEN_HYPERLINK:
1757*b1cdbd2cSJim Jagielski {
1758*b1cdbd2cSJim Jagielski SfxItemSet aSet(GetPool(),
1759*b1cdbd2cSJim Jagielski RES_TXTATR_INETFMT,
1760*b1cdbd2cSJim Jagielski RES_TXTATR_INETFMT);
1761*b1cdbd2cSJim Jagielski rSh.GetCurAttr(aSet);
1762*b1cdbd2cSJim Jagielski if(SFX_ITEM_SET > aSet.GetItemState( RES_TXTATR_INETFMT, sal_False ))
1763*b1cdbd2cSJim Jagielski rSet.DisableItem(nWhich);
1764*b1cdbd2cSJim Jagielski }
1765*b1cdbd2cSJim Jagielski break;
1766*b1cdbd2cSJim Jagielski case SID_OPEN_SMARTTAGMENU:
1767*b1cdbd2cSJim Jagielski {
1768*b1cdbd2cSJim Jagielski uno::Sequence< rtl::OUString > aSmartTagTypes;
1769*b1cdbd2cSJim Jagielski uno::Sequence< uno::Reference< container::XStringKeyMap > > aStringKeyMaps;
1770*b1cdbd2cSJim Jagielski uno::Reference<text::XTextRange> xRange;
1771*b1cdbd2cSJim Jagielski
1772*b1cdbd2cSJim Jagielski rSh.GetSmartTagTerm( aSmartTagTypes, aStringKeyMaps, xRange );
1773*b1cdbd2cSJim Jagielski
1774*b1cdbd2cSJim Jagielski if ( xRange.is() && aSmartTagTypes.getLength() )
1775*b1cdbd2cSJim Jagielski {
1776*b1cdbd2cSJim Jagielski uno::Sequence < uno::Sequence< uno::Reference< smarttags::XSmartTagAction > > > aActionComponentsSequence;
1777*b1cdbd2cSJim Jagielski uno::Sequence < uno::Sequence< sal_Int32 > > aActionIndicesSequence;
1778*b1cdbd2cSJim Jagielski
1779*b1cdbd2cSJim Jagielski const SmartTagMgr& rSmartTagMgr = SwSmartTagMgr::Get();
1780*b1cdbd2cSJim Jagielski rSmartTagMgr.GetActionSequences( aSmartTagTypes,
1781*b1cdbd2cSJim Jagielski aActionComponentsSequence,
1782*b1cdbd2cSJim Jagielski aActionIndicesSequence );
1783*b1cdbd2cSJim Jagielski
1784*b1cdbd2cSJim Jagielski uno::Reference <frame::XController> xController = GetView().GetController();
1785*b1cdbd2cSJim Jagielski const lang::Locale aLocale( SW_BREAKITER()->GetLocale( (LanguageType)GetAppLanguage() ) );
1786*b1cdbd2cSJim Jagielski const rtl::OUString aApplicationName( rSmartTagMgr.GetApplicationName() );
1787*b1cdbd2cSJim Jagielski const rtl::OUString aRangeText = xRange->getString();
1788*b1cdbd2cSJim Jagielski
1789*b1cdbd2cSJim Jagielski const SvxSmartTagItem aItem( nWhich,
1790*b1cdbd2cSJim Jagielski aActionComponentsSequence,
1791*b1cdbd2cSJim Jagielski aActionIndicesSequence,
1792*b1cdbd2cSJim Jagielski aStringKeyMaps,
1793*b1cdbd2cSJim Jagielski xRange,
1794*b1cdbd2cSJim Jagielski xController,
1795*b1cdbd2cSJim Jagielski aLocale,
1796*b1cdbd2cSJim Jagielski aApplicationName,
1797*b1cdbd2cSJim Jagielski aRangeText );
1798*b1cdbd2cSJim Jagielski
1799*b1cdbd2cSJim Jagielski rSet.Put( aItem );
1800*b1cdbd2cSJim Jagielski }
1801*b1cdbd2cSJim Jagielski else
1802*b1cdbd2cSJim Jagielski rSet.DisableItem(nWhich);
1803*b1cdbd2cSJim Jagielski }
1804*b1cdbd2cSJim Jagielski break;
1805*b1cdbd2cSJim Jagielski case FN_NUM_NUMBERING_ON:
1806*b1cdbd2cSJim Jagielski rSet.Put(SfxBoolItem(FN_NUM_NUMBERING_ON,rSh.SelectionHasNumber()));
1807*b1cdbd2cSJim Jagielski break;
1808*b1cdbd2cSJim Jagielski case FN_NUM_BULLET_ON:
1809*b1cdbd2cSJim Jagielski rSet.Put(SfxBoolItem(FN_NUM_BULLET_ON,rSh.SelectionHasBullet()));
1810*b1cdbd2cSJim Jagielski break;
1811*b1cdbd2cSJim Jagielski case FN_BUL_NUM_RULE_INDEX:
1812*b1cdbd2cSJim Jagielski case FN_NUM_NUM_RULE_INDEX:
1813*b1cdbd2cSJim Jagielski {
1814*b1cdbd2cSJim Jagielski SwNumRule* pCurRule = (SwNumRule*)(GetShell().GetCurNumRule());
1815*b1cdbd2cSJim Jagielski sal_uInt16 nActNumLvl = (sal_uInt16)0xFFFF;
1816*b1cdbd2cSJim Jagielski rSet.Put(SfxUInt16Item(FN_NUM_NUM_RULE_INDEX,DEFAULT_NONE));
1817*b1cdbd2cSJim Jagielski rSet.Put(SfxUInt16Item(FN_BUL_NUM_RULE_INDEX,DEFAULT_NONE));
1818*b1cdbd2cSJim Jagielski if( pCurRule )
1819*b1cdbd2cSJim Jagielski {
1820*b1cdbd2cSJim Jagielski nActNumLvl = GetShell().GetNumLevel();
1821*b1cdbd2cSJim Jagielski if( nActNumLvl < MAXLEVEL )
1822*b1cdbd2cSJim Jagielski {
1823*b1cdbd2cSJim Jagielski nActNumLvl = 1<<nActNumLvl;
1824*b1cdbd2cSJim Jagielski }
1825*b1cdbd2cSJim Jagielski SvxNumRule aSvxRule = pCurRule->MakeSvxNumRule();
1826*b1cdbd2cSJim Jagielski if ( GetShell().HasBullet())
1827*b1cdbd2cSJim Jagielski {
1828*b1cdbd2cSJim Jagielski rSet.Put(SfxUInt16Item(FN_BUL_NUM_RULE_INDEX,(sal_uInt16)0xFFFF));
1829*b1cdbd2cSJim Jagielski rSet.Put(SfxUInt16Item(FN_NUM_NUM_RULE_INDEX,(sal_uInt16)0xFFFF));
1830*b1cdbd2cSJim Jagielski NBOTypeMgrBase* pBullets = NBOutlineTypeMgrFact::CreateInstance(eNBOType::MIXBULLETS);
1831*b1cdbd2cSJim Jagielski if ( pBullets )
1832*b1cdbd2cSJim Jagielski {
1833*b1cdbd2cSJim Jagielski sal_uInt16 nBulIndex = pBullets->GetNBOIndexForNumRule(aSvxRule,nActNumLvl);
1834*b1cdbd2cSJim Jagielski rSet.Put(SfxUInt16Item(FN_BUL_NUM_RULE_INDEX,nBulIndex));
1835*b1cdbd2cSJim Jagielski }
1836*b1cdbd2cSJim Jagielski }else if ( GetShell().HasNumber() )
1837*b1cdbd2cSJim Jagielski {
1838*b1cdbd2cSJim Jagielski rSet.Put(SfxUInt16Item(FN_BUL_NUM_RULE_INDEX,(sal_uInt16)0xFFFF));
1839*b1cdbd2cSJim Jagielski rSet.Put(SfxUInt16Item(FN_NUM_NUM_RULE_INDEX,(sal_uInt16)0xFFFF));
1840*b1cdbd2cSJim Jagielski NBOTypeMgrBase* pNumbering = NBOutlineTypeMgrFact::CreateInstance(eNBOType::NUMBERING);
1841*b1cdbd2cSJim Jagielski if ( pNumbering )
1842*b1cdbd2cSJim Jagielski {
1843*b1cdbd2cSJim Jagielski sal_uInt16 nBulIndex = pNumbering->GetNBOIndexForNumRule(aSvxRule,nActNumLvl);
1844*b1cdbd2cSJim Jagielski rSet.Put(SfxUInt16Item(FN_NUM_NUM_RULE_INDEX,nBulIndex));
1845*b1cdbd2cSJim Jagielski }
1846*b1cdbd2cSJim Jagielski }
1847*b1cdbd2cSJim Jagielski }
1848*b1cdbd2cSJim Jagielski }
1849*b1cdbd2cSJim Jagielski break;
1850*b1cdbd2cSJim Jagielski case FN_NUM_CONTINUE:
1851*b1cdbd2cSJim Jagielski {
1852*b1cdbd2cSJim Jagielski {
1853*b1cdbd2cSJim Jagielski // --> OD 2009-08-26 #i86492#
1854*b1cdbd2cSJim Jagielski // Search also for bullet list
1855*b1cdbd2cSJim Jagielski String aDummy;
1856*b1cdbd2cSJim Jagielski const SwNumRule* pRule =
1857*b1cdbd2cSJim Jagielski rSh.SearchNumRule( false, true, false, -1, aDummy );
1858*b1cdbd2cSJim Jagielski if ( !pRule )
1859*b1cdbd2cSJim Jagielski {
1860*b1cdbd2cSJim Jagielski pRule = rSh.SearchNumRule( false, false, false, -1, aDummy );
1861*b1cdbd2cSJim Jagielski }
1862*b1cdbd2cSJim Jagielski // <--
1863*b1cdbd2cSJim Jagielski if ( !pRule )
1864*b1cdbd2cSJim Jagielski rSet.DisableItem(nWhich);
1865*b1cdbd2cSJim Jagielski }
1866*b1cdbd2cSJim Jagielski }
1867*b1cdbd2cSJim Jagielski break;
1868*b1cdbd2cSJim Jagielski case SID_INSERT_RLM :
1869*b1cdbd2cSJim Jagielski case SID_INSERT_LRM :
1870*b1cdbd2cSJim Jagielski case SID_INSERT_ZWNBSP :
1871*b1cdbd2cSJim Jagielski case SID_INSERT_ZWSP:
1872*b1cdbd2cSJim Jagielski {
1873*b1cdbd2cSJim Jagielski SvtCTLOptions aCTLOptions;
1874*b1cdbd2cSJim Jagielski sal_Bool bEnabled = aCTLOptions.IsCTLFontEnabled();
1875*b1cdbd2cSJim Jagielski GetView().GetViewFrame()->GetBindings().SetVisibleState( nWhich, bEnabled );
1876*b1cdbd2cSJim Jagielski if(!bEnabled)
1877*b1cdbd2cSJim Jagielski rSet.DisableItem(nWhich);
1878*b1cdbd2cSJim Jagielski }
1879*b1cdbd2cSJim Jagielski break;
1880*b1cdbd2cSJim Jagielski }
1881*b1cdbd2cSJim Jagielski nWhich = aIter.NextWhich();
1882*b1cdbd2cSJim Jagielski }
1883*b1cdbd2cSJim Jagielski }
1884*b1cdbd2cSJim Jagielski /* -----------------------------2002/07/05 10:31------------------------------
1885*b1cdbd2cSJim Jagielski Switch on/off header of footer of a page style - if an empty name is
1886*b1cdbd2cSJim Jagielski given all styles are changed
1887*b1cdbd2cSJim Jagielski ---------------------------------------------------------------------------*/
ChangeHeaderOrFooter(const String & rStyleName,sal_Bool bHeader,sal_Bool bOn,sal_Bool bShowWarning)1888*b1cdbd2cSJim Jagielski void SwTextShell::ChangeHeaderOrFooter(
1889*b1cdbd2cSJim Jagielski const String& rStyleName, sal_Bool bHeader, sal_Bool bOn, sal_Bool bShowWarning)
1890*b1cdbd2cSJim Jagielski {
1891*b1cdbd2cSJim Jagielski SwWrtShell& rSh = GetShell();
1892*b1cdbd2cSJim Jagielski rSh.StartAllAction();
1893*b1cdbd2cSJim Jagielski rSh.StartUndo( UNDO_HEADER_FOOTER ); // #i7983#
1894*b1cdbd2cSJim Jagielski sal_Bool bExecute = sal_True;
1895*b1cdbd2cSJim Jagielski sal_Bool bCrsrSet = sal_False;
1896*b1cdbd2cSJim Jagielski for( sal_uInt16 nFrom = 0, nTo = rSh.GetPageDescCnt();
1897*b1cdbd2cSJim Jagielski nFrom < nTo; ++nFrom )
1898*b1cdbd2cSJim Jagielski {
1899*b1cdbd2cSJim Jagielski int bChgd = sal_False;
1900*b1cdbd2cSJim Jagielski SwPageDesc aDesc( rSh.GetPageDesc( nFrom ));
1901*b1cdbd2cSJim Jagielski String sTmp(aDesc.GetName());
1902*b1cdbd2cSJim Jagielski if( !rStyleName.Len() || rStyleName == sTmp )
1903*b1cdbd2cSJim Jagielski {
1904*b1cdbd2cSJim Jagielski if( bShowWarning && !bOn && GetActiveView() && GetActiveView() == &GetView() &&
1905*b1cdbd2cSJim Jagielski ((bHeader && aDesc.GetMaster().GetHeader().IsActive()) ||
1906*b1cdbd2cSJim Jagielski (!bHeader && aDesc.GetMaster().GetFooter().IsActive())))
1907*b1cdbd2cSJim Jagielski {
1908*b1cdbd2cSJim Jagielski bShowWarning = sal_False;
1909*b1cdbd2cSJim Jagielski //Actions have to be closed while the dialog is showing
1910*b1cdbd2cSJim Jagielski rSh.EndAllAction();
1911*b1cdbd2cSJim Jagielski
1912*b1cdbd2cSJim Jagielski Window* pParent = &GetView().GetViewFrame()->GetWindow();
1913*b1cdbd2cSJim Jagielski sal_Bool bRet = RET_YES == QueryBox( pParent, ResId( RID_SVXQBX_DELETE_HEADFOOT,
1914*b1cdbd2cSJim Jagielski DIALOG_MGR() ) ).Execute();
1915*b1cdbd2cSJim Jagielski bExecute = bRet;
1916*b1cdbd2cSJim Jagielski rSh.StartAllAction();
1917*b1cdbd2cSJim Jagielski }
1918*b1cdbd2cSJim Jagielski if( bExecute )
1919*b1cdbd2cSJim Jagielski {
1920*b1cdbd2cSJim Jagielski bChgd = sal_True;
1921*b1cdbd2cSJim Jagielski SwFrmFmt &rMaster = aDesc.GetMaster();
1922*b1cdbd2cSJim Jagielski if(bHeader)
1923*b1cdbd2cSJim Jagielski rMaster.SetFmtAttr( SwFmtHeader( bOn ));
1924*b1cdbd2cSJim Jagielski else
1925*b1cdbd2cSJim Jagielski rMaster.SetFmtAttr( SwFmtFooter( bOn ));
1926*b1cdbd2cSJim Jagielski if( bOn )
1927*b1cdbd2cSJim Jagielski {
1928*b1cdbd2cSJim Jagielski SvxULSpaceItem aUL(bHeader ? 0 : MM50, bHeader ? MM50 : 0, RES_UL_SPACE );
1929*b1cdbd2cSJim Jagielski SwFrmFmt* pFmt = bHeader ?
1930*b1cdbd2cSJim Jagielski (SwFrmFmt*)rMaster.GetHeader().GetHeaderFmt() :
1931*b1cdbd2cSJim Jagielski (SwFrmFmt*)rMaster.GetFooter().GetFooterFmt();
1932*b1cdbd2cSJim Jagielski pFmt->SetFmtAttr( aUL );
1933*b1cdbd2cSJim Jagielski }
1934*b1cdbd2cSJim Jagielski }
1935*b1cdbd2cSJim Jagielski if( bChgd )
1936*b1cdbd2cSJim Jagielski {
1937*b1cdbd2cSJim Jagielski rSh.ChgPageDesc( nFrom, aDesc );
1938*b1cdbd2cSJim Jagielski
1939*b1cdbd2cSJim Jagielski if( !bCrsrSet && bOn )
1940*b1cdbd2cSJim Jagielski bCrsrSet = rSh.SetCrsrInHdFt(
1941*b1cdbd2cSJim Jagielski !rStyleName.Len() ? (sal_uInt16)0xFFFF : nFrom,
1942*b1cdbd2cSJim Jagielski bHeader );
1943*b1cdbd2cSJim Jagielski }
1944*b1cdbd2cSJim Jagielski }
1945*b1cdbd2cSJim Jagielski }
1946*b1cdbd2cSJim Jagielski rSh.EndUndo( UNDO_HEADER_FOOTER ); // #i7983#
1947*b1cdbd2cSJim Jagielski rSh.EndAllAction();
1948*b1cdbd2cSJim Jagielski }
1949*b1cdbd2cSJim Jagielski
1950