Branch data Line data Source code
1 : : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : : /*************************************************************************
3 : : *
4 : : * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 : : *
6 : : * Copyright 2000, 2010 Oracle and/or its affiliates.
7 : : *
8 : : * OpenOffice.org - a multi-platform office productivity suite
9 : : *
10 : : * This file is part of OpenOffice.org.
11 : : *
12 : : * OpenOffice.org is free software: you can redistribute it and/or modify
13 : : * it under the terms of the GNU Lesser General Public License version 3
14 : : * only, as published by the Free Software Foundation.
15 : : *
16 : : * OpenOffice.org is distributed in the hope that it will be useful,
17 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 : : * GNU Lesser General Public License version 3 for more details
20 : : * (a copy is included in the LICENSE file that accompanied this code).
21 : : *
22 : : * You should have received a copy of the GNU Lesser General Public License
23 : : * version 3 along with OpenOffice.org. If not, see
24 : : * <http://www.openoffice.org/license.html>
25 : : * for a copy of the LGPLv3 License.
26 : : *
27 : : ************************************************************************/
28 : :
29 : :
30 : : #include "DrawViewShell.hxx"
31 : : #include <com/sun/star/embed/EmbedMisc.hpp>
32 : : #include <svl/aeitem.hxx>
33 : : #include <svx/svxids.hrc>
34 : : #include <svx/globl3d.hxx>
35 : : #include <editeng/eeitem.hxx>
36 : : #include <editeng/flditem.hxx>
37 : : #include <svx/svdogrp.hxx>
38 : : #include <svx/svdograf.hxx>
39 : : #include <svx/svdoole2.hxx>
40 : : #include <svx/sxelditm.hxx>
41 : : #include <sfx2/dispatch.hxx>
42 : : #include <sfx2/request.hxx>
43 : : #include <svx/svdopath.hxx>
44 : : #include <svx/polysc3d.hxx>
45 : : #include <svx/obj3d.hxx>
46 : : #include <sfx2/event.hxx>
47 : : #include <sfx2/docfile.hxx>
48 : : #include <rtl/ustrbuf.hxx>
49 : :
50 : :
51 : : #include "app.hrc"
52 : :
53 : : #include "Outliner.hxx"
54 : : #include "sdpage.hxx"
55 : : #include "fupoor.hxx"
56 : : #include "fusel.hxx"
57 : : #include "drawdoc.hxx"
58 : : #include "DrawDocShell.hxx"
59 : : #include "drawview.hxx"
60 : : #include "optsitem.hxx"
61 : :
62 : : using namespace com::sun::star;
63 : :
64 : : namespace sd {
65 : :
66 : : /*************************************************************************
67 : : |*
68 : : |* Status (Enabled/Disabled) von Menue-SfxSlots setzen
69 : : |*
70 : : \************************************************************************/
71 : :
72 : 6385 : void DrawViewShell::GetMenuStateSel( SfxItemSet &rSet )
73 : : {
74 : : // Status of menu entries (Buttons,...)
75 : :
76 : : // Single selection
77 : 6385 : const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList();
78 : 6385 : sal_uLong nMarkCount = rMarkList.GetMarkCount();
79 : :
80 [ + + ]: 6385 : if ( nMarkCount == 1 )
81 : : {
82 [ + + + - : 79 : if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_BEZIER_EDIT ) ||
+ - + - +
- + - + -
+ - + - +
- + - + -
+ - + - +
- + - + -
+ - + - +
- + - + -
+ - + - +
- + - + -
+ - + - +
- + - + -
+ - + - +
- + - + -
+ - - + ]
[ + + ]
83 : 2 : SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_UNGROUP ) ||
84 : 2 : SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_ENTER_GROUP ) ||
85 : 2 : SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_NAME_GROUP ) ||
86 : :
87 : : // #i68101#
88 : 2 : SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_OBJECT_TITLE_DESCRIPTION ) ||
89 : :
90 : 2 : SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_ATTR_FILL_STYLE ) ||
91 : 2 : SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_CHANGEBEZIER ) ||
92 : 2 : SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_CHANGEPOLYGON ) ||
93 : 2 : SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_LINEEND_POLYGON ) ||
94 : 2 : SFX_ITEM_AVAILABLE == rSet.GetItemState( OBJ_TITLETEXT ) ||
95 : 2 : SFX_ITEM_AVAILABLE == rSet.GetItemState( OBJ_OUTLINETEXT ) ||
96 : 2 : SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_MEASURE_DLG ) ||
97 : 2 : SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_CONNECTION_DLG ) ||
98 : 2 : SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_CONNECTION_NEW_ROUTING ) ||
99 : 2 : SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_OBJECT_SHEAR ) ||
100 : 2 : SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_CONVERT_TO_1BIT_THRESHOLD ) ||
101 : 2 : SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_CONVERT_TO_1BIT_MATRIX ) ||
102 : 2 : SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_CONVERT_TO_4BIT_GRAYS ) ||
103 : 2 : SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_CONVERT_TO_4BIT_COLORS ) ||
104 : 2 : SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_CONVERT_TO_8BIT_GRAYS ) ||
105 : 2 : SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_CONVERT_TO_8BIT_COLORS ) ||
106 : 2 : SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_CONVERT_TO_24BIT ) ||
107 : 2 : SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_OBJECT_ALIGN_LEFT ) ||
108 : 2 : SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_OBJECT_ALIGN_CENTER ) ||
109 : 2 : SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_OBJECT_ALIGN_RIGHT ) ||
110 : 2 : SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_OBJECT_ALIGN_UP ) ||
111 : 2 : SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_OBJECT_ALIGN_MIDDLE ) ||
112 : 2 : SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_OBJECT_ALIGN_DOWN ) ||
113 : 2 : SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_FRAME_TO_TOP ) ||
114 : 2 : SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_MOREFRONT ) ||
115 : 2 : SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_MOREBACK ) ||
116 : 2 : SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_FRAME_TO_BOTTOM ) ||
117 : 2 : SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_BEFORE_OBJ ) ||
118 : 2 : SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_BEHIND_OBJ ) ||
119 : 2 : SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_REVERSE_ORDER ) ||
120 : 2 : SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_ORIGINAL_SIZE ) ||
121 : 2 : SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_SAVE_GRAPHIC ) ||
122 : 2 : SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_COMPRESS_GRAPHIC ) ||
123 : 2 : SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_TEXTATTR_DLG ) )
124 : : {
125 [ + - ][ + - ]: 1 : const SdrObject* pObj = rMarkList.GetMark(0)->GetMarkedSdrObj();
126 [ + - ]: 1 : sal_uInt32 nInv = pObj->GetObjInventor();
127 [ + - ]: 1 : sal_uInt16 nId = pObj->GetObjIdentifier();
128 [ + - ]: 1 : SdrObjTransformInfoRec aInfoRec;
129 [ + - ]: 1 : pObj->TakeObjInfo( aInfoRec );
130 : :
131 : :
132 : : // don't show original size entry if not possible
133 [ + - ][ + - ]: 1 : if ( pObj->ISA( SdrOle2Obj ) )
[ - + ]
134 : : {
135 [ # # ][ # # ]: 0 : SdrOle2Obj* pOleObj = PTR_CAST(SdrOle2Obj, pObj);
[ # # ][ # # ]
136 [ # # ][ # # ]: 0 : if (pOleObj->GetObjRef().is() &&
[ # # ][ # # ]
[ # # # # ]
137 [ # # ][ # # ]: 0 : ((pOleObj->GetObjRef()->getStatus( pOleObj->GetAspect() ) & embed::EmbedMisc::MS_EMBED_RECOMPOSEONRESIZE) ) )
[ # # ][ # # ]
[ # # ][ # # ]
138 [ # # ]: 0 : rSet.DisableItem(SID_ORIGINAL_SIZE);
139 : : }
140 : :
141 [ + - ][ + - ]: 1 : if ( !( pObj->ISA( SdrGrafObj ) ) )
[ + - ]
142 : : {
143 [ + - ]: 1 : rSet.DisableItem(SID_SAVE_GRAPHIC);
144 [ + - ]: 1 : rSet.DisableItem(SID_COMPRESS_GRAPHIC);
145 : : }
146 : :
147 : : // Wenn es sich um kein Gruppenobjekt oder 3D-Objekt handelt
148 : : // wird "Gruppe betreten" disabled
149 [ + - ][ + - ]: 2 : if( !( ( pObj->ISA( SdrObjGroup ) && nInv == SdrInventor ) ||
[ + - ]
150 [ - + ][ # # ]: 1 : (pObj->ISA (E3dPolyScene) || pObj->ISA (E3dScene) /*|| pObj->ISA (E3dCompoundObject) */) ) )
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
151 : : {
152 [ + - ]: 1 : rSet.DisableItem( SID_ENTER_GROUP );
153 : : }
154 : :
155 : : // Wenn es sich um kein Gruppenobjekt handelt
156 : : // wird "Gruppierung aufheben" disabled
157 [ + - ][ + - ]: 1 : if (!(pObj->ISA(SdrObjGroup) && nInv == SdrInventor))
[ - + ][ # # ]
[ + - ]
158 : : {
159 [ + - ]: 1 : rSet.DisableItem(SID_UNGROUP);
160 : : }
161 [ + - ][ + - ]: 1 : if (!pObj->ISA(SdrGrafObj) ||
[ - + ][ # # ]
[ # # ][ + - ]
162 [ # # ]: 0 : ((SdrGrafObj*) pObj)->GetGraphicType() != GRAPHIC_BITMAP ||
163 [ # # ]: 0 : ((SdrGrafObj*) pObj)->IsLinkedGraphic())
164 : : {
165 [ + - ]: 1 : rSet.DisableItem(SID_CONVERT_TO_1BIT_THRESHOLD);
166 [ + - ]: 1 : rSet.DisableItem(SID_CONVERT_TO_1BIT_MATRIX);
167 [ + - ]: 1 : rSet.DisableItem(SID_CONVERT_TO_4BIT_GRAYS);
168 [ + - ]: 1 : rSet.DisableItem(SID_CONVERT_TO_4BIT_COLORS);
169 [ + - ]: 1 : rSet.DisableItem(SID_CONVERT_TO_8BIT_GRAYS);
170 [ + - ]: 1 : rSet.DisableItem(SID_CONVERT_TO_8BIT_COLORS);
171 [ + - ]: 1 : rSet.DisableItem(SID_CONVERT_TO_24BIT);
172 : : }
173 : :
174 [ + - ][ + - ]: 1 : if( nInv == SdrInventor &&
[ + - ][ + - ]
[ - + ]
175 : : (nId == OBJ_LINE ||
176 : : nId == OBJ_PLIN ||
177 : : nId == OBJ_PATHLINE ||
178 : : nId == OBJ_FREELINE ))
179 : : {
180 : : //rSet.DisableItem( SID_ATTRIBUTES_AREA ); // wieder raus!
181 [ # # ]: 0 : rSet.DisableItem( SID_ATTR_FILL_STYLE );
182 : : }
183 [ + - ][ + - ]: 1 : if( (!pObj->ISA( SdrPathObj ) && !aInfoRec.bCanConvToPath) || pObj->ISA( SdrObjGroup ) ) // Solange es JOE fehlerhaft behandelt!
[ + - ][ + - ]
[ + - ][ + - ]
[ - + ][ - + ]
184 : : { // JOE: Ein Gruppenobjekt kann eben u.U. in ein PathObj gewandelt werden
185 [ # # ]: 0 : rSet.DisableItem( SID_LINEEND_POLYGON );
186 : : }
187 [ + - ][ + - ]: 1 : if(nInv == SdrInventor &&
[ + - ][ - + ]
188 : 1 : (nId == OBJ_PATHFILL || nId == OBJ_PATHLINE || !aInfoRec.bCanConvToPath))
189 [ # # ]: 0 : rSet.DisableItem( SID_CHANGEBEZIER );
190 : :
191 [ + - ][ + - ]: 1 : if( nInv == SdrInventor &&
[ + - ][ - + ]
[ # # ][ - + ]
192 : 1 : ( nId == OBJ_POLY || nId == OBJ_PLIN || !aInfoRec.bCanConvToPoly ) &&
193 [ # # ]: 0 : !GetView()->IsVectorizeAllowed() )
194 : : {
195 [ # # ]: 0 : rSet.DisableItem( SID_CHANGEPOLYGON );
196 : : }
197 : :
198 [ + - ][ - + ]: 1 : if(nInv == SdrInventor && nId == OBJ_TABLE )
199 : : {
200 [ # # ]: 0 : rSet.DisableItem( SID_TEXTATTR_DLG );
201 : : }
202 : :
203 [ + - ][ + - ]: 1 : if( nInv != SdrInventor || nId != OBJ_MEASURE )
204 [ + - ]: 1 : rSet.DisableItem( SID_MEASURE_DLG );
205 : :
206 [ + - ][ + - ]: 1 : if( nInv != SdrInventor || nId != OBJ_EDGE )
207 [ + - ]: 1 : rSet.DisableItem( SID_CONNECTION_DLG );
208 : : else
209 : : {
210 : 0 : sal_Bool bDisable = sal_True;
211 [ # # ][ # # ]: 0 : SfxItemSet aAttrSet( GetDoc()->GetPool() );
212 [ # # ]: 0 : GetView()->GetAttributes( aAttrSet );
213 : :
214 [ # # ][ # # ]: 0 : if( aAttrSet.GetItemState( SDRATTR_EDGELINE1DELTA ) >= SFX_ITEM_AVAILABLE &&
[ # # ][ # # ]
[ # # ]
215 [ # # ]: 0 : aAttrSet.GetItemState( SDRATTR_EDGELINE2DELTA ) >= SFX_ITEM_AVAILABLE &&
216 [ # # ]: 0 : aAttrSet.GetItemState( SDRATTR_EDGELINE3DELTA ) >= SFX_ITEM_AVAILABLE )
217 : : {
218 [ # # ]: 0 : long nVal1 = ( ( const SdrEdgeLine1DeltaItem& ) aAttrSet.Get( SDRATTR_EDGELINE1DELTA ) ).GetValue();
219 [ # # ]: 0 : long nVal2 = ( ( const SdrEdgeLine2DeltaItem& ) aAttrSet.Get( SDRATTR_EDGELINE2DELTA ) ).GetValue();
220 [ # # ]: 0 : long nVal3 = ( ( const SdrEdgeLine3DeltaItem& ) aAttrSet.Get( SDRATTR_EDGELINE3DELTA ) ).GetValue();
221 : : {
222 [ # # ][ # # ]: 0 : if( nVal1 != 0 || nVal2 != 0 || nVal3 != 0 )
[ # # ]
223 : 0 : bDisable = sal_False;
224 : : }
225 : : }
226 [ # # ]: 0 : if( bDisable )
227 [ # # ][ # # ]: 0 : rSet.DisableItem( SID_CONNECTION_NEW_ROUTING );
228 : : }
229 : :
230 [ + - ][ - + ]: 2 : if ( nInv == E3dInventor ||
[ # # ][ # # ]
[ - + ]
231 [ + - ]: 1 : (!mpDrawView->IsConvertToPathObjPossible(sal_False) &&
232 [ # # ]: 0 : !mpDrawView->IsShearAllowed() &&
233 [ # # ]: 0 : !mpDrawView->IsDistortAllowed()) )
234 : : {
235 [ # # ]: 0 : rSet.DisableItem( SID_OBJECT_SHEAR );
236 : : }
237 : :
238 [ + - ][ + - ]: 1 : if(pObj->ISA(E3dCompoundObject))
[ - + ]
239 : : {
240 [ # # ]: 0 : rSet.DisableItem( SID_OBJECT_ALIGN_LEFT );
241 [ # # ]: 0 : rSet.DisableItem( SID_OBJECT_ALIGN_CENTER );
242 [ # # ]: 0 : rSet.DisableItem( SID_OBJECT_ALIGN_RIGHT );
243 [ # # ]: 0 : rSet.DisableItem( SID_OBJECT_ALIGN_UP );
244 [ # # ]: 0 : rSet.DisableItem( SID_OBJECT_ALIGN_MIDDLE );
245 [ # # ]: 0 : rSet.DisableItem( SID_OBJECT_ALIGN_DOWN );
246 [ # # ]: 0 : rSet.DisableItem( SID_FRAME_TO_TOP );
247 [ # # ]: 0 : rSet.DisableItem( SID_MOREFRONT );
248 [ # # ]: 0 : rSet.DisableItem( SID_MOREBACK );
249 [ # # ]: 0 : rSet.DisableItem( SID_FRAME_TO_BOTTOM );
250 [ # # ]: 0 : rSet.DisableItem( SID_BEFORE_OBJ );
251 [ # # ]: 0 : rSet.DisableItem( SID_BEHIND_OBJ );
252 [ # # ]: 1 : rSet.DisableItem( SID_REVERSE_ORDER );
253 : : }
254 : : }
255 : :
256 [ + - - + ]: 6 : if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_DISMANTLE ) ||
[ - + ]
257 : 3 : SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_BREAK ) )
258 : : {
259 [ # # ]: 0 : if ( !mpDrawView->IsDismantlePossible(sal_False) )
260 : : {
261 : 0 : rSet.DisableItem( SID_DISMANTLE );
262 : : }
263 : :
264 [ # # # # : 0 : if ( !mpDrawView->IsDismantlePossible(sal_True) &&
# # ][ # # ]
265 : 0 : !mpDrawView->IsImportMtfPossible() &&
266 : 0 : !mpDrawView->IsBreak3DObjPossible() )
267 : : {
268 : 0 : rSet.DisableItem( SID_BREAK );
269 : : }
270 : : }
271 [ - + ]: 3 : if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_MODIFY_FIELD ) )
272 : : {
273 : 0 : OutlinerView* pOLV = mpDrawView->GetTextEditOutlinerView();
274 : :
275 [ # # ]: 0 : if( pOLV )
276 : : {
277 : 0 : const SvxFieldItem* pFldItem = pOLV->GetFieldAtSelection();
278 : :
279 [ # # ]: 0 : if( !( pFldItem && (pFldItem->GetField()->ISA( SvxDateField ) ||
280 : 0 : pFldItem->GetField()->ISA( SvxAuthorField ) ||
281 : 0 : pFldItem->GetField()->ISA( SvxExtFileField ) ||
282 [ # # ][ # # : 0 : pFldItem->GetField()->ISA( SvxExtTimeField ) ) ) )
# # # # #
# ]
283 : : {
284 : 0 : rSet.DisableItem( SID_MODIFY_FIELD );
285 : : }
286 : : }
287 : : else
288 : 0 : rSet.DisableItem( SID_MODIFY_FIELD );
289 : : }
290 [ - + ]: 3 : if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_OUTLINE_TEXT_AUTOFIT ) )
291 : : {
292 : 0 : const SdrObject* pObj = rMarkList.GetMark(0)->GetMarkedSdrObj();
293 : 0 : const bool bSet = ((const SdrTextFitToSizeTypeItem*)pObj->GetMergedItemSet().GetItem(SDRATTR_TEXT_FITTOSIZE))->GetValue() != SDRTEXTFIT_NONE;
294 [ # # ]: 0 : rSet.Put(SfxBoolItem(SID_OUTLINE_TEXT_AUTOFIT, bSet));
295 : : }
296 : :
297 : 3 : rSet.DisableItem( SID_GROUP );
298 : 3 : rSet.DisableItem( SID_COMBINE );
299 : 3 : rSet.DisableItem(SID_DISTRIBUTE_DLG);
300 : 3 : rSet.DisableItem(SID_POLY_MERGE);
301 : 3 : rSet.DisableItem(SID_POLY_SUBSTRACT);
302 : 3 : rSet.DisableItem(SID_POLY_INTERSECT);
303 : 3 : rSet.DisableItem( SID_CONNECT );
304 : : }
305 : : // Mehrfachselektion
306 [ - + ]: 6382 : else if( nMarkCount > 1 )
307 : : {
308 : : // distribure dialog for 3+n objects
309 [ # # ]: 0 : if(nMarkCount <= 2)
310 : 0 : rSet.DisableItem(SID_DISTRIBUTE_DLG);
311 : :
312 : 0 : rSet.DisableItem( SID_LINEEND_POLYGON );
313 : 0 : rSet.DisableItem( SID_ENTER_GROUP );
314 : : // Jetzt muessen Namen fuer Objekte eindeutig sein
315 : 0 : rSet.DisableItem( SID_NAME_GROUP );
316 : : // #i68101#
317 : 0 : rSet.DisableItem( SID_OBJECT_TITLE_DESCRIPTION );
318 : 0 : rSet.DisableItem( SID_MODIFY_FIELD );
319 : :
320 : : {
321 : 0 : sal_Bool bText = sal_False;
322 : 0 : sal_Bool bLine = sal_False;
323 : 0 : sal_Bool bGroup = sal_False;
324 : 0 : sal_Bool bGraf = sal_False;
325 : 0 : sal_Bool bDrawObj = sal_False;
326 : 0 : sal_Bool b3dObj = sal_False;
327 : 0 : bool bTable = false;
328 : 0 : sal_Bool bMeasureObj = sal_False;
329 : 0 : sal_Bool bEdgeObj = sal_False; // Connector
330 : 0 : sal_Bool bE3dCompoundObject = sal_False;
331 : :
332 [ # # ][ # # ]: 0 : for( sal_uLong i = 0;
[ # # ][ # # ]
333 : : i < nMarkCount && !bText && i < 50;
334 : : i++ )
335 : : {
336 : 0 : SdrObject* pObj = rMarkList.GetMark(i)->GetMarkedSdrObj();
337 : 0 : sal_uInt32 nInv = pObj->GetObjInventor();
338 : 0 : sal_uInt16 nId = pObj->GetObjIdentifier();
339 : :
340 [ # # ]: 0 : if (nInv == SdrInventor)
341 : : {
342 [ # # # # : 0 : switch (nId)
# # # #
# ]
343 : : {
344 : 0 : case OBJ_TEXT: bText = sal_True; break;
345 : :
346 : 0 : case OBJ_LINE: bLine = sal_True; break;
347 : :
348 : 0 : case OBJ_EDGE: bEdgeObj = sal_True; break;
349 : :
350 : 0 : case OBJ_MEASURE: bMeasureObj = sal_True; break;
351 : :
352 : : case OBJ_RECT:
353 : : case OBJ_CIRC:
354 : : case OBJ_FREELINE:
355 : : case OBJ_FREEFILL:
356 : : case OBJ_PATHFILL:
357 : : case OBJ_PATHLINE:
358 : : case OBJ_SECT:
359 : : case OBJ_CARC:
360 : 0 : case OBJ_CCUT: bDrawObj = sal_True; break;
361 : :
362 : 0 : case OBJ_GRUP: bGroup = sal_True; break;
363 : :
364 : 0 : case OBJ_GRAF: bGraf = sal_True; break;
365 : :
366 : 0 : case OBJ_TABLE: bTable = true; break;
367 : : }
368 : : }
369 [ # # ]: 0 : else if (nInv == E3dInventor)
370 : : {
371 [ # # ]: 0 : if(pObj->ISA(E3dScene))
372 : 0 : b3dObj = sal_True;
373 [ # # ]: 0 : else if(pObj->ISA(E3dCompoundObject))
374 : 0 : bE3dCompoundObject = sal_True;
375 : : }
376 : : }
377 [ # # ][ # # ]: 0 : if( bLine && !bText && !bDrawObj &&!b3dObj)
[ # # ][ # # ]
378 : : {
379 : 0 : rSet.DisableItem( SID_ATTR_FILL_STYLE );
380 : : }
381 [ # # ]: 0 : if( !bEdgeObj )
382 : 0 : rSet.DisableItem( SID_CONNECTION_DLG );
383 : :
384 [ # # ]: 0 : if (b3dObj)
385 : : {
386 : 0 : rSet.DisableItem( SID_COMBINE );
387 : 0 : rSet.DisableItem(SID_POLY_MERGE);
388 : 0 : rSet.DisableItem(SID_POLY_SUBSTRACT);
389 : 0 : rSet.DisableItem(SID_POLY_INTERSECT);
390 : : }
391 : :
392 [ # # # # : 0 : if (b3dObj ||
# # # # ]
[ # # ]
393 : 0 : (!mpDrawView->IsConvertToPathObjPossible(sal_False) &&
394 : 0 : !mpDrawView->IsShearAllowed() &&
395 : 0 : !mpDrawView->IsDistortAllowed()) )
396 : : {
397 : 0 : rSet.DisableItem( SID_OBJECT_SHEAR );
398 : : }
399 : :
400 [ # # ]: 0 : if( !bGroup )
401 : : {
402 : 0 : rSet.DisableItem( SID_UNGROUP );
403 : : }
404 [ # # ]: 0 : if( bTable )
405 : 0 : rSet.DisableItem( SID_TEXTATTR_DLG );
406 : :
407 [ # # ]: 0 : if( !bMeasureObj )
408 : 0 : rSet.DisableItem( SID_MEASURE_DLG );
409 : :
410 [ # # ]: 0 : if (!bGraf)
411 : : {
412 : 0 : rSet.DisableItem(SID_CONVERT_TO_1BIT_THRESHOLD);
413 : 0 : rSet.DisableItem(SID_CONVERT_TO_1BIT_MATRIX);
414 : 0 : rSet.DisableItem(SID_CONVERT_TO_4BIT_GRAYS);
415 : 0 : rSet.DisableItem(SID_CONVERT_TO_4BIT_COLORS);
416 : 0 : rSet.DisableItem(SID_CONVERT_TO_8BIT_GRAYS);
417 : 0 : rSet.DisableItem(SID_CONVERT_TO_8BIT_COLORS);
418 : 0 : rSet.DisableItem(SID_CONVERT_TO_24BIT);
419 : : }
420 : :
421 [ # # ]: 0 : if(bE3dCompoundObject)
422 : : {
423 : 0 : rSet.DisableItem( SID_OBJECT_ALIGN_LEFT );
424 : 0 : rSet.DisableItem( SID_OBJECT_ALIGN_CENTER );
425 : 0 : rSet.DisableItem( SID_OBJECT_ALIGN_RIGHT );
426 : 0 : rSet.DisableItem( SID_OBJECT_ALIGN_UP );
427 : 0 : rSet.DisableItem( SID_OBJECT_ALIGN_MIDDLE );
428 : 0 : rSet.DisableItem( SID_OBJECT_ALIGN_DOWN );
429 : 0 : rSet.DisableItem( SID_FRAME_TO_TOP );
430 : 0 : rSet.DisableItem( SID_MOREFRONT );
431 : 0 : rSet.DisableItem( SID_MOREBACK );
432 : 0 : rSet.DisableItem( SID_FRAME_TO_BOTTOM );
433 : 0 : rSet.DisableItem( SID_BEFORE_OBJ );
434 : 0 : rSet.DisableItem( SID_BEHIND_OBJ );
435 : 0 : rSet.DisableItem( SID_REVERSE_ORDER );
436 : : }
437 : : }
438 : :
439 [ # # ]: 0 : if ( !mpDrawView->IsDismantlePossible(sal_False) )
440 : : {
441 : 0 : rSet.DisableItem( SID_DISMANTLE );
442 : : }
443 [ # # # # : 0 : if ( !mpDrawView->IsDismantlePossible(sal_True) &&
# # ][ # # ]
444 : 0 : !mpDrawView->IsImportMtfPossible() &&
445 : 0 : !mpDrawView->IsBreak3DObjPossible() )
446 : : {
447 : 0 : rSet.DisableItem( SID_BREAK );
448 : : }
449 [ # # ]: 0 : if ( !mpDrawView->IsCombinePossible(sal_False) )
450 : : {
451 : 0 : rSet.DisableItem( SID_COMBINE );
452 : 0 : rSet.DisableItem(SID_POLY_MERGE);
453 : 0 : rSet.DisableItem(SID_POLY_SUBSTRACT);
454 : 0 : rSet.DisableItem(SID_POLY_INTERSECT);
455 : : }
456 [ # # ]: 0 : if ( !mpDrawView->IsCombinePossible(sal_True) )
457 : : {
458 : 0 : rSet.DisableItem( SID_CONNECT );
459 : : }
460 [ # # ]: 0 : if ( !mpDrawView->IsGroupPossible() )
461 : : {
462 : 0 : rSet.DisableItem( SID_GROUP );
463 : : }
464 [ # # ]: 0 : if ( !mpDrawView->IsUnGroupPossible() )
465 : : {
466 : 0 : rSet.DisableItem( SID_UNGROUP );
467 : : }
468 : : }
469 : : // kein Objekt selektiert
470 : : else
471 : : {
472 : 6382 : rSet.DisableItem( SID_ENTER_GROUP );
473 : 6382 : rSet.DisableItem( SID_CUT );
474 : 6382 : rSet.DisableItem( SID_COPY );
475 : 6382 : rSet.DisableItem( SID_DELETE );
476 : 6382 : rSet.DisableItem( SID_ATTR_TRANSFORM );
477 : :
478 : 6382 : rSet.DisableItem( SID_OBJECT_ALIGN_LEFT );
479 : 6382 : rSet.DisableItem( SID_OBJECT_ALIGN_CENTER );
480 : 6382 : rSet.DisableItem( SID_OBJECT_ALIGN_RIGHT );
481 : 6382 : rSet.DisableItem( SID_OBJECT_ALIGN_UP );
482 : 6382 : rSet.DisableItem( SID_OBJECT_ALIGN_MIDDLE );
483 : 6382 : rSet.DisableItem( SID_OBJECT_ALIGN_DOWN );
484 : :
485 : 6382 : rSet.DisableItem( SID_FRAME_TO_TOP );
486 : 6382 : rSet.DisableItem( SID_MOREFRONT );
487 : 6382 : rSet.DisableItem( SID_MOREBACK );
488 : 6382 : rSet.DisableItem( SID_FRAME_TO_BOTTOM );
489 : 6382 : rSet.DisableItem( SID_BEFORE_OBJ );
490 : 6382 : rSet.DisableItem( SID_BEHIND_OBJ );
491 : 6382 : rSet.DisableItem( SID_CONVERT );
492 : :
493 : 6382 : rSet.DisableItem( SID_SIZE_OPTIMAL );
494 : 6382 : rSet.DisableItem( SID_LINEEND_POLYGON );
495 : 6382 : rSet.DisableItem( SID_COPYOBJECTS );
496 : 6382 : rSet.DisableItem( SID_HORIZONTAL );
497 : 6382 : rSet.DisableItem( SID_VERTICAL );
498 : 6382 : rSet.DisableItem( SID_GROUP );
499 : 6382 : rSet.DisableItem( SID_UNGROUP );
500 : 6382 : rSet.DisableItem( SID_NAME_GROUP );
501 : :
502 : : // #i68101#
503 : 6382 : rSet.DisableItem( SID_OBJECT_TITLE_DESCRIPTION );
504 : :
505 : 6382 : rSet.DisableItem( SID_DISMANTLE );
506 : 6382 : rSet.DisableItem( SID_BREAK );
507 : 6382 : rSet.DisableItem( SID_COMBINE );
508 : 6382 : rSet.DisableItem(SID_DISTRIBUTE_DLG);
509 : 6382 : rSet.DisableItem(SID_POLY_MERGE);
510 : 6382 : rSet.DisableItem(SID_POLY_SUBSTRACT);
511 : 6382 : rSet.DisableItem(SID_POLY_INTERSECT);
512 : 6382 : rSet.DisableItem( SID_CONNECT );
513 : 6382 : rSet.DisableItem( SID_ANIMATION_EFFECTS );
514 : 6382 : rSet.DisableItem( SID_MODIFY_FIELD );
515 : 6382 : rSet.DisableItem (SID_OBJECT_SHEAR);
516 : : }
517 : :
518 : 6385 : }
519 : :
520 : :
521 : : } // end of namespace sd
522 : :
523 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|