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