1efeef26fSAndrew Rist /**************************************************************
2cdf0e10cSrcweir *
3efeef26fSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
4efeef26fSAndrew Rist * or more contributor license agreements. See the NOTICE file
5efeef26fSAndrew Rist * distributed with this work for additional information
6efeef26fSAndrew Rist * regarding copyright ownership. The ASF licenses this file
7efeef26fSAndrew Rist * to you under the Apache License, Version 2.0 (the
8efeef26fSAndrew Rist * "License"); you may not use this file except in compliance
9efeef26fSAndrew Rist * with the License. You may obtain a copy of the License at
10efeef26fSAndrew Rist *
11efeef26fSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
12efeef26fSAndrew Rist *
13efeef26fSAndrew Rist * Unless required by applicable law or agreed to in writing,
14efeef26fSAndrew Rist * software distributed under the License is distributed on an
15efeef26fSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16efeef26fSAndrew Rist * KIND, either express or implied. See the License for the
17efeef26fSAndrew Rist * specific language governing permissions and limitations
18efeef26fSAndrew Rist * under the License.
19efeef26fSAndrew Rist *
20efeef26fSAndrew Rist *************************************************************/
21efeef26fSAndrew Rist
22cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
23cdf0e10cSrcweir #include "precompiled_sw.hxx"
24cdf0e10cSrcweir
25cdf0e10cSrcweir #include <hintids.hxx>
26cdf0e10cSrcweir #include <com/sun/star/linguistic2/XThesaurus.hpp>
27cdf0e10cSrcweir #include <com/sun/star/uno/Sequence.hxx>
28cdf0e10cSrcweir #include <svl/aeitem.hxx>
29cdf0e10cSrcweir #include <svl/whiter.hxx>
30cdf0e10cSrcweir #include <svl/cjkoptions.hxx>
31cdf0e10cSrcweir #include <sfx2/viewfrm.hxx>
32cdf0e10cSrcweir #include <sfx2/objitem.hxx>
33cdf0e10cSrcweir #include <svl/imageitm.hxx>
34cdf0e10cSrcweir #include <svl/languageoptions.hxx>
35cdf0e10cSrcweir #include <editeng/protitem.hxx>
36cdf0e10cSrcweir #include <sfx2/linkmgr.hxx>
37cdf0e10cSrcweir #include <editeng/langitem.hxx>
38cdf0e10cSrcweir #include <editeng/brshitem.hxx>
39cdf0e10cSrcweir #include <svx/htmlmode.hxx>
40cdf0e10cSrcweir #include <editeng/unolingu.hxx>
41cdf0e10cSrcweir #include <sfx2/msgpool.hxx>
42cdf0e10cSrcweir #include <swmodule.hxx>
43cdf0e10cSrcweir #include <tox.hxx>
44cdf0e10cSrcweir #include <sfx2/dispatch.hxx>
45cdf0e10cSrcweir #include <sfx2/app.hxx>
46cdf0e10cSrcweir #include <view.hxx>
47cdf0e10cSrcweir #include <wrtsh.hxx>
48cdf0e10cSrcweir #include <basesh.hxx>
49cdf0e10cSrcweir #include <uitool.hxx>
50cdf0e10cSrcweir #include <viewopt.hxx>
51cdf0e10cSrcweir #include <tablemgr.hxx>
52cdf0e10cSrcweir #include <pagedesc.hxx>
53cdf0e10cSrcweir #include <wview.hxx>
54cdf0e10cSrcweir #include <globdoc.hxx>
55cdf0e10cSrcweir #include <svl/stritem.hxx>
56cdf0e10cSrcweir #include <unotools/moduleoptions.hxx>
57cdf0e10cSrcweir #include <svl/visitem.hxx>
58cdf0e10cSrcweir #include <cmdid.h>
59cdf0e10cSrcweir #include <IDocumentRedlineAccess.hxx>
60cdf0e10cSrcweir
61*56b35d86SArmin Le Grand //UUUU
62*56b35d86SArmin Le Grand #include <doc.hxx>
63*56b35d86SArmin Le Grand
64cdf0e10cSrcweir using namespace ::com::sun::star;
65cdf0e10cSrcweir
66cdf0e10cSrcweir /*--------------------------------------------------------------------
67cdf0e10cSrcweir Beschreibung:
68cdf0e10cSrcweir --------------------------------------------------------------------*/
69cdf0e10cSrcweir
GetState(SfxItemSet & rSet)70cdf0e10cSrcweir void SwView::GetState(SfxItemSet &rSet)
71cdf0e10cSrcweir {
72cdf0e10cSrcweir SfxWhichIter aIter(rSet);
73cdf0e10cSrcweir sal_uInt16 nWhich = aIter.FirstWhich();
74cdf0e10cSrcweir sal_uInt16 eFrmType = FRMTYPE_NONE;
75cdf0e10cSrcweir int bGetFrmType = sal_False;
76cdf0e10cSrcweir sal_Bool bWeb = 0 != PTR_CAST(SwWebView, this);
77cdf0e10cSrcweir
7869a74367SOliver-Rainer Wittmann while(nWhich)
7969a74367SOliver-Rainer Wittmann {
8069a74367SOliver-Rainer Wittmann switch(nWhich)
8169a74367SOliver-Rainer Wittmann {
8269a74367SOliver-Rainer Wittmann case FN_EDIT_LINK_DLG:
8369a74367SOliver-Rainer Wittmann if( !pWrtShell->GetLinkManager().GetLinks().Count() )
8469a74367SOliver-Rainer Wittmann rSet.DisableItem(nWhich);
8569a74367SOliver-Rainer Wittmann else if( pWrtShell->IsSelFrmMode() &&
8669a74367SOliver-Rainer Wittmann pWrtShell->IsSelObjProtected(FLYPROTECT_CONTENT))
8769a74367SOliver-Rainer Wittmann rSet.DisableItem(nWhich);
8869a74367SOliver-Rainer Wittmann break;
89cdf0e10cSrcweir
9069a74367SOliver-Rainer Wittmann case SID_INSERT_GRAPHIC:
9169a74367SOliver-Rainer Wittmann if( pWrtShell->CrsrInsideInputFld() )
9269a74367SOliver-Rainer Wittmann {
9369a74367SOliver-Rainer Wittmann rSet.DisableItem(nWhich);
9469a74367SOliver-Rainer Wittmann }
9569a74367SOliver-Rainer Wittmann break;
9669a74367SOliver-Rainer Wittmann
9769a74367SOliver-Rainer Wittmann case FN_INSERT_CAPTION:
9869a74367SOliver-Rainer Wittmann {
9969a74367SOliver-Rainer Wittmann // Captions gibt's fuer Grafiken, OLE-Objekte, Rahmen und Tabellen
10069a74367SOliver-Rainer Wittmann if( !bGetFrmType )
10169a74367SOliver-Rainer Wittmann eFrmType = pWrtShell->GetFrmType(0,sal_True), bGetFrmType = sal_True;
10269a74367SOliver-Rainer Wittmann if (! ( ((eFrmType & FRMTYPE_FLY_ANY) && nSelectionType != nsSelectionType::SEL_DRW_TXT)||
10369a74367SOliver-Rainer Wittmann nSelectionType & nsSelectionType::SEL_TBL ||
10469a74367SOliver-Rainer Wittmann nSelectionType & nsSelectionType::SEL_DRW) )
10569a74367SOliver-Rainer Wittmann rSet.DisableItem(nWhich);
10669a74367SOliver-Rainer Wittmann else if((pWrtShell->IsObjSelected()||pWrtShell->IsFrmSelected()) &&
107cdf0e10cSrcweir (pWrtShell->IsSelObjProtected( FLYPROTECT_PARENT)||
10869a74367SOliver-Rainer Wittmann pWrtShell->IsSelObjProtected( FLYPROTECT_CONTENT )))
10969a74367SOliver-Rainer Wittmann rSet.DisableItem(nWhich);
11069a74367SOliver-Rainer Wittmann else if( pWrtShell->IsTableMode()
11169a74367SOliver-Rainer Wittmann || pWrtShell->CrsrInsideInputFld() )
11269a74367SOliver-Rainer Wittmann rSet.DisableItem(nWhich);
11369a74367SOliver-Rainer Wittmann }
11469a74367SOliver-Rainer Wittmann break;
115cdf0e10cSrcweir
116cdf0e10cSrcweir case FN_EDIT_FOOTNOTE:
117cdf0e10cSrcweir {
118cdf0e10cSrcweir if( !pWrtShell->GetCurFtn() )
119cdf0e10cSrcweir rSet.DisableItem(nWhich);
120cdf0e10cSrcweir }
121cdf0e10cSrcweir break;
122cdf0e10cSrcweir
123cdf0e10cSrcweir case FN_CHANGE_PAGENUM:
124cdf0e10cSrcweir {
125cdf0e10cSrcweir sal_uInt16 nType = pWrtShell->GetFrmType(0,sal_True);
126cdf0e10cSrcweir if( ( FRMTYPE_FLY_ANY | FRMTYPE_HEADER | FRMTYPE_FOOTER |
127cdf0e10cSrcweir FRMTYPE_FOOTNOTE | FRMTYPE_DRAWOBJ ) & nType )
128cdf0e10cSrcweir rSet.DisableItem(nWhich);
129cdf0e10cSrcweir else
130cdf0e10cSrcweir rSet.Put(SfxUInt16Item(nWhich, pWrtShell->GetPageOffset()));
131cdf0e10cSrcweir }
132cdf0e10cSrcweir break;
133cdf0e10cSrcweir case SID_PRINTDOC:
134cdf0e10cSrcweir case SID_PRINTDOCDIRECT:
135cdf0e10cSrcweir GetSlotState( nWhich, SfxViewShell::GetInterface(), &rSet );
136cdf0e10cSrcweir break;
137cdf0e10cSrcweir case SID_ATTR_PAGE:
138cdf0e10cSrcweir case SID_ATTR_PAGE_SIZE:
139cdf0e10cSrcweir case SID_ATTR_PAGE_PAPERBIN:
140cdf0e10cSrcweir case RES_PAPER_BIN:
141cdf0e10cSrcweir case FN_PARAM_FTN_INFO:
142cdf0e10cSrcweir {
143*56b35d86SArmin Le Grand const sal_uInt16 nCurIdx = pWrtShell->GetCurPageDesc();
144*56b35d86SArmin Le Grand const SwPageDesc& rDesc = pWrtShell->GetPageDesc( nCurIdx );
145*56b35d86SArmin Le Grand
146*56b35d86SArmin Le Grand //UUUU set correct parent to get the XFILL_NONE FillStyle as needed
147*56b35d86SArmin Le Grand if(!rSet.GetParent())
148*56b35d86SArmin Le Grand {
149*56b35d86SArmin Le Grand const SwFrmFmt& rMaster = rDesc.GetMaster();
150*56b35d86SArmin Le Grand
151*56b35d86SArmin Le Grand rSet.SetParent(&rMaster.GetDoc()->GetDfltFrmFmt()->GetAttrSet());
152*56b35d86SArmin Le Grand }
153*56b35d86SArmin Le Grand
154*56b35d86SArmin Le Grand ::PageDescToItemSet( rDesc, rSet);
155cdf0e10cSrcweir }
156cdf0e10cSrcweir break;
157cdf0e10cSrcweir case RES_BACKGROUND:
158cdf0e10cSrcweir case SID_ATTR_BRUSH:
159cdf0e10cSrcweir {
160cdf0e10cSrcweir const sal_uInt16 nCurIdx = pWrtShell->GetCurPageDesc();
161cdf0e10cSrcweir const SwPageDesc& rDesc = pWrtShell->GetPageDesc( nCurIdx );
162cdf0e10cSrcweir const SwFrmFmt& rMaster = rDesc.GetMaster();
163cdf0e10cSrcweir const SvxBrushItem& rBrush = (const SvxBrushItem&)
164cdf0e10cSrcweir rMaster.GetFmtAttr(RES_BACKGROUND, sal_True);
165cdf0e10cSrcweir rSet.Put(rBrush);
166cdf0e10cSrcweir }
167cdf0e10cSrcweir break;
168cdf0e10cSrcweir case SID_CLEARHISTORY:
169cdf0e10cSrcweir {
170cdf0e10cSrcweir rSet.Put(SfxBoolItem(nWhich, pWrtShell->GetLastUndoInfo(0, 0)));
171cdf0e10cSrcweir }
172cdf0e10cSrcweir break;
173cdf0e10cSrcweir case SID_UNDO:
174cdf0e10cSrcweir {
175cdf0e10cSrcweir //JP 21.07.98: Bug 53429 - die muss noch nicht vorhanden sein
176cdf0e10cSrcweir // also lasse sie mal anlegen:
177cdf0e10cSrcweir if( !pShell )
178cdf0e10cSrcweir SelectShell();
179cdf0e10cSrcweir
180cdf0e10cSrcweir const SfxPoolItem* pState = pShell->GetSlotState(SID_UNDO);
181cdf0e10cSrcweir if(pState)
182cdf0e10cSrcweir rSet.Put(*pState);
183cdf0e10cSrcweir else
184cdf0e10cSrcweir rSet.DisableItem(nWhich);
185cdf0e10cSrcweir }
186cdf0e10cSrcweir break;
187cdf0e10cSrcweir case FN_INSERT_CTRL:
188cdf0e10cSrcweir {
189cdf0e10cSrcweir SfxImageItem aImgItem(nWhich, bWeb ? SwView::nWebInsertCtrlState : SwView::nInsertCtrlState);
190cdf0e10cSrcweir SfxSlotPool& rPool = SfxSlotPool::GetSlotPool( GetViewFrame() );
191cdf0e10cSrcweir const SfxSlot* pSlot = rPool.GetSlot( aImgItem.GetValue() );
192cdf0e10cSrcweir if(pSlot && pSlot->IsMode( SFX_SLOT_IMAGEROTATION ))
193cdf0e10cSrcweir {
194cdf0e10cSrcweir if(pWrtShell->IsInVerticalText())
195cdf0e10cSrcweir aImgItem.SetRotation(2700);
196cdf0e10cSrcweir if(pWrtShell->IsInRightToLeftText())
197cdf0e10cSrcweir aImgItem.SetMirrored(sal_True);
198cdf0e10cSrcweir }
199cdf0e10cSrcweir rSet.Put(aImgItem);
200cdf0e10cSrcweir }
201cdf0e10cSrcweir break;
20269a74367SOliver-Rainer Wittmann
20369a74367SOliver-Rainer Wittmann case FN_INSERT_OBJ_CTRL:
20469a74367SOliver-Rainer Wittmann if( bWeb
20569a74367SOliver-Rainer Wittmann || pWrtShell->CrsrInsideInputFld() )
206cdf0e10cSrcweir {
20769a74367SOliver-Rainer Wittmann rSet.DisableItem(nWhich);
208cdf0e10cSrcweir }
20969a74367SOliver-Rainer Wittmann else
21069a74367SOliver-Rainer Wittmann {
21169a74367SOliver-Rainer Wittmann SfxImageItem aImgItem(nWhich, SwView::nInsertObjectCtrlState);
21269a74367SOliver-Rainer Wittmann SfxSlotPool& rPool = SfxSlotPool::GetSlotPool( GetViewFrame() );
21369a74367SOliver-Rainer Wittmann const SfxSlot* pSlot = rPool.GetSlot( aImgItem.GetValue() );
21469a74367SOliver-Rainer Wittmann if(pSlot && pSlot->IsMode( SFX_SLOT_IMAGEROTATION ))
21569a74367SOliver-Rainer Wittmann {
21669a74367SOliver-Rainer Wittmann if(pWrtShell->IsInVerticalText())
21769a74367SOliver-Rainer Wittmann aImgItem.SetRotation(2700);
21869a74367SOliver-Rainer Wittmann if(pWrtShell->IsInRightToLeftText())
21969a74367SOliver-Rainer Wittmann aImgItem.SetMirrored(sal_True);
22069a74367SOliver-Rainer Wittmann }
22169a74367SOliver-Rainer Wittmann rSet.Put(aImgItem);
22269a74367SOliver-Rainer Wittmann }
22369a74367SOliver-Rainer Wittmann break;
22469a74367SOliver-Rainer Wittmann
225cdf0e10cSrcweir case FN_UPDATE_TOX:
226cdf0e10cSrcweir if(!pWrtShell->GetTOXCount())
227cdf0e10cSrcweir rSet.DisableItem(nWhich);
228cdf0e10cSrcweir break;
229cdf0e10cSrcweir case FN_EDIT_CURRENT_TOX:
230cdf0e10cSrcweir case FN_UPDATE_CUR_TOX:
231cdf0e10cSrcweir {
232cdf0e10cSrcweir const SwTOXBase* pBase = 0;
233cdf0e10cSrcweir if(0 == (pBase = pWrtShell->GetCurTOX()) ||
234cdf0e10cSrcweir (FN_EDIT_CURRENT_TOX == nWhich && pBase->IsTOXBaseInReadonly()))
235cdf0e10cSrcweir rSet.DisableItem(nWhich);
236cdf0e10cSrcweir }
237cdf0e10cSrcweir break;
238cdf0e10cSrcweir case SID_TWAIN_SELECT:
239cdf0e10cSrcweir case SID_TWAIN_TRANSFER:
240cdf0e10cSrcweir #if defined WNT || defined UNX
241cdf0e10cSrcweir {
242cdf0e10cSrcweir if(!SW_MOD()->GetScannerManager().is())
243cdf0e10cSrcweir rSet.DisableItem(nWhich);
244cdf0e10cSrcweir }
245cdf0e10cSrcweir #endif
246cdf0e10cSrcweir break;
247cdf0e10cSrcweir case RES_PARATR_TABSTOP:
248cdf0e10cSrcweir case SID_ATTR_DEFTABSTOP:
249cdf0e10cSrcweir {
250cdf0e10cSrcweir const SvxTabStopItem& rDefTabs =
251cdf0e10cSrcweir (const SvxTabStopItem&)pWrtShell->
252cdf0e10cSrcweir GetDefault(RES_PARATR_TABSTOP);
253cdf0e10cSrcweir rSet.Put( SfxUInt16Item( nWhich,
254cdf0e10cSrcweir (sal_uInt16)::GetTabDist(rDefTabs)));
255cdf0e10cSrcweir }
256cdf0e10cSrcweir break;
257cdf0e10cSrcweir case SID_ATTR_LANGUAGE:
258cdf0e10cSrcweir {
259cdf0e10cSrcweir rSet.Put((const SvxLanguageItem&)
260cdf0e10cSrcweir pWrtShell->GetDefault(RES_CHRATR_LANGUAGE), SID_ATTR_LANGUAGE);
261cdf0e10cSrcweir }
262cdf0e10cSrcweir break;
263cdf0e10cSrcweir case RES_CHRATR_CJK_LANGUAGE:
264cdf0e10cSrcweir rSet.Put((const SvxLanguageItem&)
265cdf0e10cSrcweir pWrtShell->GetDefault(RES_CHRATR_CJK_LANGUAGE), RES_CHRATR_CJK_LANGUAGE);
266cdf0e10cSrcweir break;
267cdf0e10cSrcweir case RES_CHRATR_CTL_LANGUAGE:
268cdf0e10cSrcweir rSet.Put((const SvxLanguageItem&)
269cdf0e10cSrcweir pWrtShell->GetDefault(RES_CHRATR_CTL_LANGUAGE), RES_CHRATR_CTL_LANGUAGE);
270cdf0e10cSrcweir break;
271cdf0e10cSrcweir case FN_HYPHENATE_OPT_DLG:
272cdf0e10cSrcweir {
273cdf0e10cSrcweir sal_Bool bCheck = sal_False;
274cdf0e10cSrcweir
275cdf0e10cSrcweir if (pWrtShell->GetSelectionType() & (nsSelectionType::SEL_DRW_TXT|nsSelectionType::SEL_DRW))
276cdf0e10cSrcweir bCheck = IsDrawTextHyphenate();
277cdf0e10cSrcweir rSet.Put(SfxBoolItem(nWhich, bCheck));
278cdf0e10cSrcweir }
279cdf0e10cSrcweir break;
280cdf0e10cSrcweir case FN_REDLINE_ON:
281cdf0e10cSrcweir rSet.Put( SfxBoolItem( nWhich, GetDocShell()->IsChangeRecording() ) );
282cdf0e10cSrcweir break;
283cdf0e10cSrcweir case FN_REDLINE_PROTECT :
284cdf0e10cSrcweir rSet.Put( SfxBoolItem( nWhich, GetDocShell()->HasChangeRecordProtection() ) );
285cdf0e10cSrcweir break;
286cdf0e10cSrcweir case FN_REDLINE_SHOW:
287cdf0e10cSrcweir {
288cdf0e10cSrcweir sal_uInt16 nMask = nsRedlineMode_t::REDLINE_SHOW_INSERT | nsRedlineMode_t::REDLINE_SHOW_DELETE;
289cdf0e10cSrcweir rSet.Put( SfxBoolItem( nWhich,
290cdf0e10cSrcweir (pWrtShell->GetRedlineMode() & nMask) == nMask ));
291cdf0e10cSrcweir }
292cdf0e10cSrcweir break;
293cdf0e10cSrcweir case SID_GALLERY :
294cdf0e10cSrcweir case SID_AVMEDIA_PLAYER :
295cdf0e10cSrcweir case FN_REDLINE_ACCEPT :
296cdf0e10cSrcweir {
297cdf0e10cSrcweir SfxViewFrame* pVFrame = GetViewFrame();
298cdf0e10cSrcweir if (pVFrame->KnowsChildWindow(nWhich))
299cdf0e10cSrcweir rSet.Put(SfxBoolItem( nWhich, pVFrame->HasChildWindow(nWhich)));
300cdf0e10cSrcweir else
301cdf0e10cSrcweir rSet.DisableItem(nWhich);
302cdf0e10cSrcweir }
303cdf0e10cSrcweir break;
304cdf0e10cSrcweir case FN_REDLINE_ACCEPT_DIRECT:
305cdf0e10cSrcweir case FN_REDLINE_REJECT_DIRECT:
306cdf0e10cSrcweir {
307cdf0e10cSrcweir SwContentAtPos aCntntAtPos( SwContentAtPos::SW_REDLINE );
308cdf0e10cSrcweir Point aCrsrPos = pWrtShell->GetCrsrDocPos( sal_True );
309cdf0e10cSrcweir if( !pWrtShell->GetContentAtPos( aCrsrPos, aCntntAtPos ) )
310cdf0e10cSrcweir rSet.DisableItem( nWhich );
311cdf0e10cSrcweir }
312cdf0e10cSrcweir break;
313cdf0e10cSrcweir case SID_THESAURUS:
314cdf0e10cSrcweir {
315cdf0e10cSrcweir SwWrtShell &rSh = GetWrtShell();
316cdf0e10cSrcweir if (2 <= rSh.GetCrsrCnt()) // multi selection?
317cdf0e10cSrcweir rSet.DisableItem(nWhich);
318cdf0e10cSrcweir else
319cdf0e10cSrcweir {
320cdf0e10cSrcweir LanguageType nLang = rSh.GetCurLang();
321cdf0e10cSrcweir
322cdf0e10cSrcweir // disable "Thesaurus" (menu entry and key shortcut) if the
323cdf0e10cSrcweir // language is not supported (by default it is enabled)
324cdf0e10cSrcweir uno::Reference< linguistic2::XThesaurus > xThes( ::GetThesaurus() );
325cdf0e10cSrcweir if (!xThes.is() || nLang == LANGUAGE_NONE ||
326cdf0e10cSrcweir !xThes->hasLocale( SvxCreateLocale( nLang ) ))
327cdf0e10cSrcweir rSet.DisableItem(nWhich);
328cdf0e10cSrcweir }
329cdf0e10cSrcweir }
330cdf0e10cSrcweir break;
331cdf0e10cSrcweir case SID_HANGUL_HANJA_CONVERSION:
332cdf0e10cSrcweir case SID_CHINESE_CONVERSION:
333cdf0e10cSrcweir {
334cdf0e10cSrcweir if (!SvtCJKOptions().IsAnyEnabled())
335cdf0e10cSrcweir {
336cdf0e10cSrcweir GetViewFrame()->GetBindings().SetVisibleState( nWhich, sal_False );
337cdf0e10cSrcweir rSet.DisableItem(nWhich);
338cdf0e10cSrcweir }
339cdf0e10cSrcweir else
340cdf0e10cSrcweir GetViewFrame()->GetBindings().SetVisibleState( nWhich, sal_True );
341cdf0e10cSrcweir }
342cdf0e10cSrcweir break;
343cdf0e10cSrcweir case SID_MAIL_SCROLLBODY_PAGEDOWN:
344cdf0e10cSrcweir {
345cdf0e10cSrcweir const long nBottom = pWrtShell->GetDocSize().Height() + DOCUMENTBORDER;
346cdf0e10cSrcweir const long nAct = GetVisArea().Bottom();
347cdf0e10cSrcweir rSet.Put(SfxBoolItem(SID_MAIL_SCROLLBODY_PAGEDOWN, nAct < nBottom ));
348cdf0e10cSrcweir }
349cdf0e10cSrcweir break;
350cdf0e10cSrcweir
351cdf0e10cSrcweir case SID_DOCUMENT_COMPARE:
352cdf0e10cSrcweir case SID_DOCUMENT_MERGE:
353cdf0e10cSrcweir if( GetDocShell()->IsA( SwGlobalDocShell::StaticType() ) ||
354cdf0e10cSrcweir // pWrtShell->IsAnySectionInDoc( sal_True, sal_True, sal_True )||
355cdf0e10cSrcweir (SID_DOCUMENT_MERGE == nWhich && pWrtShell->getIDocumentRedlineAccess()->GetRedlinePassword().getLength()))
356cdf0e10cSrcweir rSet.DisableItem(nWhich);
357cdf0e10cSrcweir break;
358cdf0e10cSrcweir case SID_VIEW_DATA_SOURCE_BROWSER:
359cdf0e10cSrcweir if ( !SvtModuleOptions().IsModuleInstalled( SvtModuleOptions::E_SDATABASE ) )
360cdf0e10cSrcweir rSet.Put( SfxVisibilityItem( nWhich, sal_False ) );
361cdf0e10cSrcweir else
362cdf0e10cSrcweir rSet.Put( SfxBoolItem( nWhich, GetViewFrame()->HasChildWindow( SID_BROWSER ) ) );
363cdf0e10cSrcweir break;
364cdf0e10cSrcweir case SID_READONLY_MODE:
365cdf0e10cSrcweir rSet.Put(SfxBoolItem(nWhich,
366cdf0e10cSrcweir pWrtShell->HasReadonlySel()||GetDocShell()->IsReadOnly()));
367cdf0e10cSrcweir break;
368cdf0e10cSrcweir case SID_IMAGE_ORIENTATION:
369cdf0e10cSrcweir {
370cdf0e10cSrcweir SfxImageItem aImageItem(nWhich);
371cdf0e10cSrcweir if(pWrtShell->IsInVerticalText())
372cdf0e10cSrcweir aImageItem.SetRotation( 2700 );
373cdf0e10cSrcweir if(pWrtShell->IsInRightToLeftText())
374cdf0e10cSrcweir aImageItem.SetMirrored( sal_True );
375cdf0e10cSrcweir rSet.Put(aImageItem);
376cdf0e10cSrcweir }
377cdf0e10cSrcweir break;
378cdf0e10cSrcweir case FN_INSERT_FIELD_DATA_ONLY :
379cdf0e10cSrcweir if(!bInMailMerge && !GetViewFrame()->HasChildWindow(nWhich))
380cdf0e10cSrcweir rSet.DisableItem(nWhich);
381cdf0e10cSrcweir break;
382cdf0e10cSrcweir case FN_MAILMERGE_SENDMAIL_CHILDWINDOW:
383cdf0e10cSrcweir break;
384cdf0e10cSrcweir case FN_MAILMERGE_CHILDWINDOW:
385cdf0e10cSrcweir {
386cdf0e10cSrcweir if(!GetMailMergeConfigItem())
387cdf0e10cSrcweir rSet.DisableItem(nWhich);
388cdf0e10cSrcweir }
389cdf0e10cSrcweir break;
390cdf0e10cSrcweir case SID_ALIGN_ANY_LEFT :
391cdf0e10cSrcweir case SID_ALIGN_ANY_HCENTER :
392cdf0e10cSrcweir case SID_ALIGN_ANY_RIGHT :
393cdf0e10cSrcweir case SID_ALIGN_ANY_JUSTIFIED:
394cdf0e10cSrcweir case SID_ALIGN_ANY_TOP :
395cdf0e10cSrcweir case SID_ALIGN_ANY_VCENTER :
396cdf0e10cSrcweir case SID_ALIGN_ANY_BOTTOM :
397cdf0e10cSrcweir case SID_ALIGN_ANY_HDEFAULT :
398cdf0e10cSrcweir case SID_ALIGN_ANY_VDEFAULT :
399cdf0e10cSrcweir {
400cdf0e10cSrcweir if( !pShell )
401cdf0e10cSrcweir SelectShell();
402cdf0e10cSrcweir sal_uInt16 nAlias = 0;
403cdf0e10cSrcweir bool bDraw = false;
404cdf0e10cSrcweir if( nSelectionType & (nsSelectionType::SEL_DRW_TXT|nsSelectionType::SEL_TXT) )
405cdf0e10cSrcweir {
406cdf0e10cSrcweir switch( nWhich )
407cdf0e10cSrcweir {
408cdf0e10cSrcweir case SID_ALIGN_ANY_LEFT : nAlias = SID_ATTR_PARA_ADJUST_LEFT; break;
409cdf0e10cSrcweir case SID_ALIGN_ANY_HCENTER : nAlias = SID_ATTR_PARA_ADJUST_CENTER; break;
410cdf0e10cSrcweir case SID_ALIGN_ANY_RIGHT : nAlias = SID_ATTR_PARA_ADJUST_RIGHT; break;
411cdf0e10cSrcweir case SID_ALIGN_ANY_JUSTIFIED: nAlias = SID_ATTR_PARA_ADJUST_BLOCK; break;
41223257455SOliver-Rainer Wittmann case SID_ALIGN_ANY_TOP : nAlias = SID_TABLE_VERT_NONE; break;
41323257455SOliver-Rainer Wittmann case SID_ALIGN_ANY_VCENTER : nAlias = SID_TABLE_VERT_CENTER; break;
41423257455SOliver-Rainer Wittmann case SID_ALIGN_ANY_BOTTOM : nAlias = SID_TABLE_VERT_BOTTOM; break;
415cdf0e10cSrcweir }
416cdf0e10cSrcweir }
417cdf0e10cSrcweir else if(nSelectionType & (nsSelectionType::SEL_DRW))
418cdf0e10cSrcweir {
419cdf0e10cSrcweir //the draw shell cannot provide a status per item - only one for SID_OBJECT_ALIGN
420cdf0e10cSrcweir if(nWhich != SID_ALIGN_ANY_JUSTIFIED)
421cdf0e10cSrcweir {
422cdf0e10cSrcweir const SfxPoolItem* pItem = 0;
423cdf0e10cSrcweir GetViewFrame()->GetDispatcher()->QueryState( SID_OBJECT_ALIGN, pItem );
424cdf0e10cSrcweir if(pItem)
425cdf0e10cSrcweir bDraw = true;
426cdf0e10cSrcweir }
427cdf0e10cSrcweir }
428cdf0e10cSrcweir else
429cdf0e10cSrcweir {
430cdf0e10cSrcweir switch( nWhich )
431cdf0e10cSrcweir {
432cdf0e10cSrcweir case SID_ALIGN_ANY_LEFT : nAlias = SID_OBJECT_ALIGN_LEFT ; break;
433cdf0e10cSrcweir case SID_ALIGN_ANY_HCENTER : nAlias = SID_OBJECT_ALIGN_CENTER ; break;
434cdf0e10cSrcweir case SID_ALIGN_ANY_RIGHT : nAlias = SID_OBJECT_ALIGN_RIGHT ; break;
435cdf0e10cSrcweir case SID_ALIGN_ANY_TOP : nAlias = SID_OBJECT_ALIGN_UP ; break;
436cdf0e10cSrcweir case SID_ALIGN_ANY_VCENTER : nAlias = SID_OBJECT_ALIGN_MIDDLE ; break;
437cdf0e10cSrcweir case SID_ALIGN_ANY_BOTTOM : nAlias = SID_OBJECT_ALIGN_DOWN ; break;
438cdf0e10cSrcweir }
439cdf0e10cSrcweir }
440cdf0e10cSrcweir //these slots are either re-mapped to text or object alignment
441cdf0e10cSrcweir const SfxPoolItem* pState = 0;
442cdf0e10cSrcweir if(nAlias)
443cdf0e10cSrcweir GetViewFrame()->GetDispatcher()->QueryState( nAlias, pState );
444cdf0e10cSrcweir if(pState)
445cdf0e10cSrcweir rSet.Put(*pState, nWhich);
446cdf0e10cSrcweir else if(!bDraw)
447cdf0e10cSrcweir rSet.DisableItem(nWhich);
448cdf0e10cSrcweir }
449cdf0e10cSrcweir break;
450cdf0e10cSrcweir }
451cdf0e10cSrcweir nWhich = aIter.NextWhich();
452cdf0e10cSrcweir }
453cdf0e10cSrcweir }
454cdf0e10cSrcweir
455cdf0e10cSrcweir
456cdf0e10cSrcweir /*--------------------------------------------------------------------
457cdf0e10cSrcweir Beschreibung:
458cdf0e10cSrcweir --------------------------------------------------------------------*/
459cdf0e10cSrcweir
GetDrawState(SfxItemSet & rSet)460cdf0e10cSrcweir void SwView::GetDrawState(SfxItemSet &rSet)
461cdf0e10cSrcweir {
462cdf0e10cSrcweir SfxWhichIter aIter(rSet);
463cdf0e10cSrcweir sal_Bool bWeb = 0 != PTR_CAST(SwWebView, this);
464cdf0e10cSrcweir
465cdf0e10cSrcweir for( sal_uInt16 nWhich = aIter.FirstWhich(); nWhich;
466cdf0e10cSrcweir nWhich = aIter.NextWhich() )
467cdf0e10cSrcweir switch(nWhich)
468cdf0e10cSrcweir {
469cdf0e10cSrcweir case SID_INSERT_DRAW:
470cdf0e10cSrcweir if ( bWeb )
471cdf0e10cSrcweir rSet.DisableItem( nWhich );
472cdf0e10cSrcweir else
473cdf0e10cSrcweir {
474cdf0e10cSrcweir SfxAllEnumItem aEnum(SID_INSERT_DRAW, nDrawSfxId);
475cdf0e10cSrcweir if ( !SvtLanguageOptions().IsVerticalTextEnabled() )
476cdf0e10cSrcweir {
477cdf0e10cSrcweir aEnum.DisableValue( SID_DRAW_CAPTION_VERTICAL );
478cdf0e10cSrcweir aEnum.DisableValue( SID_DRAW_TEXT_VERTICAL );
479cdf0e10cSrcweir }
480cdf0e10cSrcweir rSet.Put(aEnum);
481cdf0e10cSrcweir }
482cdf0e10cSrcweir break;
483cdf0e10cSrcweir
484cdf0e10cSrcweir case SID_SHOW_HIDDEN:
485cdf0e10cSrcweir case SID_SHOW_FORMS:
486cdf0e10cSrcweir rSet.DisableItem( nWhich );
487cdf0e10cSrcweir // rSet.Put( SfxBoolItem(nWhich,sal_True ));
488cdf0e10cSrcweir break;
489cdf0e10cSrcweir
490cdf0e10cSrcweir case SID_DRAW_TEXT_MARQUEE:
491cdf0e10cSrcweir if (::GetHtmlMode(GetDocShell()) & HTMLMODE_SOME_STYLES)
492cdf0e10cSrcweir rSet.Put( SfxBoolItem(nWhich, nDrawSfxId == nWhich));
493cdf0e10cSrcweir else
494cdf0e10cSrcweir rSet.DisableItem(nWhich);
495cdf0e10cSrcweir break;
496cdf0e10cSrcweir case SID_OBJECT_SELECT:
497cdf0e10cSrcweir rSet.Put( SfxBoolItem(nWhich, nDrawSfxId == nWhich ||
498cdf0e10cSrcweir nFormSfxId == nWhich));
499cdf0e10cSrcweir break;
500cdf0e10cSrcweir
501cdf0e10cSrcweir case SID_FONTWORK_GALLERY_FLOATER :
502cdf0e10cSrcweir {
503cdf0e10cSrcweir if ( bWeb )
504cdf0e10cSrcweir rSet.DisableItem( nWhich );
505cdf0e10cSrcweir }
506cdf0e10cSrcweir break;
507cdf0e10cSrcweir
508cdf0e10cSrcweir case SID_DRAWTBX_CS_BASIC :
509cdf0e10cSrcweir case SID_DRAWTBX_CS_SYMBOL :
510cdf0e10cSrcweir case SID_DRAWTBX_CS_ARROW :
511cdf0e10cSrcweir case SID_DRAWTBX_CS_FLOWCHART :
512cdf0e10cSrcweir case SID_DRAWTBX_CS_CALLOUT :
513cdf0e10cSrcweir case SID_DRAWTBX_CS_STAR :
514cdf0e10cSrcweir {
515cdf0e10cSrcweir if ( bWeb )
516cdf0e10cSrcweir rSet.DisableItem( nWhich );
517cdf0e10cSrcweir else
518cdf0e10cSrcweir rSet.Put(SfxStringItem(nWhich, aCurrShapeEnumCommand[ nWhich - SID_DRAWTBX_CS_BASIC ] ));
519cdf0e10cSrcweir }
520cdf0e10cSrcweir break;
521cdf0e10cSrcweir
522cdf0e10cSrcweir }
523cdf0e10cSrcweir }
524cdf0e10cSrcweir
525cdf0e10cSrcweir /*--------------------------------------------------------------------
526cdf0e10cSrcweir Beschreibung:
527cdf0e10cSrcweir --------------------------------------------------------------------*/
528cdf0e10cSrcweir
HasUIFeature(sal_uInt32 nFeature)529cdf0e10cSrcweir sal_Bool SwView::HasUIFeature( sal_uInt32 nFeature )
530cdf0e10cSrcweir {
531cdf0e10cSrcweir sal_Bool bRet = sal_False;
532cdf0e10cSrcweir switch(nFeature)
533cdf0e10cSrcweir {
534cdf0e10cSrcweir case CHILDWIN_LABEL : bRet = pWrtShell->IsLabelDoc(); break;
535cdf0e10cSrcweir case CHILDWIN_MAILMERGE : bRet = 0 != GetMailMergeConfigItem(); break;
536cdf0e10cSrcweir }
537cdf0e10cSrcweir return bRet;
538cdf0e10cSrcweir }
539cdf0e10cSrcweir
540