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 : : #ifndef SC_DOCSHELL_HXX
30 : : #define SC_DOCSHELL_HXX
31 : :
32 : :
33 : : #include <sfx2/objsh.hxx>
34 : :
35 : : #include <sfx2/docfac.hxx>
36 : : #include <sfx2/sfxmodelfactory.hxx>
37 : : #include <sfx2/viewsh.hxx>
38 : :
39 : : #include "scdllapi.h"
40 : : #include "scdll.hxx"
41 : : #include "document.hxx"
42 : : #include "appoptio.hxx"
43 : : #include "formulaopt.hxx"
44 : : #include "shellids.hxx"
45 : : #include "refreshtimer.hxx"
46 : : #include "optutil.hxx"
47 : :
48 : : #include <boost/unordered_map.hpp>
49 : : #include <cppuhelper/implbase1.hxx>
50 : :
51 : : #include <sot/sotref.hxx>
52 : :
53 : : class ScEditEngineDefaulter;
54 : : class SfxStyleSheetBasePool;
55 : : class SfxStyleSheetHint;
56 : : class INetURLObject;
57 : :
58 : : class ScViewData;
59 : : class ScDocFunc;
60 : : class ScDrawLayer;
61 : : class ScTabViewShell;
62 : : class ScSbxDocHelper;
63 : : class ScAutoStyleList;
64 : : class ScRange;
65 : : class ScMarkData;
66 : : class ScPaintLockData;
67 : : class ScChangeAction;
68 : : class VirtualDevice;
69 : : class ScImportOptions;
70 : : class ScDocShellModificator;
71 : : class ScOptSolverSave;
72 : : class ScSheetSaveData;
73 : : class ScFlatBoolRowSegments;
74 : : struct ScColWidthParam;
75 : : #ifdef ENABLE_TELEPATHY
76 : : class ScCollaboration;
77 : : #endif
78 : :
79 : : namespace sfx2 { class FileDialogHelper; }
80 : : struct DocShell_Impl;
81 : :
82 : : typedef ::boost::unordered_map< sal_uLong, sal_uLong > ScChangeActionMergeMap;
83 : :
84 : : //==================================================================
85 : :
86 : : //enum ScDBFormat { SC_FORMAT_SDF, SC_FORMAT_DBF };
87 : :
88 : : // Extra flags for Repaint
89 : : #define SC_PF_LINES 1
90 : : #define SC_PF_TESTMERGE 2
91 : : #define SC_PF_WHOLEROWS 4
92 : :
93 : : class SC_DLLPUBLIC ScDocShell: public SfxObjectShell, public SfxListener
94 : : {
95 : : static const sal_Char pStarCalcDoc[];
96 : : static const sal_Char pStyleName[];
97 : :
98 : : ScDocument aDocument;
99 : :
100 : : String aDdeTextFmt;
101 : :
102 : : double nPrtToScreenFactor;
103 : : DocShell_Impl* pImpl;
104 : : ScDocFunc* pDocFunc;
105 : :
106 : : bool bHeaderOn;
107 : : bool bFooterOn;
108 : : bool bIsInplace:1; // Is set by the View
109 : : bool bIsEmpty:1;
110 : : bool bIsInUndo:1;
111 : : bool bDocumentModifiedPending:1;
112 : : bool bUpdateEnabled:1;
113 : : sal_uInt16 nDocumentLock;
114 : : sal_Int16 nCanUpdate; // stores the UpdateDocMode from loading a document till update links
115 : :
116 : : ScDBData* pOldAutoDBRange;
117 : :
118 : : ScSbxDocHelper* pDocHelper;
119 : :
120 : : ScAutoStyleList* pAutoStyleList;
121 : : ScPaintLockData* pPaintLockData;
122 : : ScOptSolverSave* pSolverSaveData;
123 : : ScSheetSaveData* pSheetSaveData;
124 : :
125 : : ScDocShellModificator* pModificator; // #109979#; is used to load XML (created in BeforeXMLLoading and destroyed in AfterXMLLoading)
126 : : #ifdef ENABLE_TELEPATHY
127 : : ScCollaboration* mpCollaboration;
128 : : #endif
129 : :
130 : : SC_DLLPRIVATE void InitItems();
131 : : SC_DLLPRIVATE void DoEnterHandler();
132 : : SC_DLLPRIVATE void InitOptions(bool bForLoading);
133 : : SC_DLLPRIVATE void ResetDrawObjectShell();
134 : :
135 : : // SUNWS needs a forward declared friend, otherwise types and members
136 : : // of the outer class are not accessible.
137 : : class PrepareSaveGuard;
138 : : friend class ScDocShell::PrepareSaveGuard;
139 : : /** Do things that need to be done before saving to our own format and
140 : : necessary clean ups in dtor. */
141 : : class PrepareSaveGuard
142 : : {
143 : : public:
144 : : explicit PrepareSaveGuard( ScDocShell & rDocShell );
145 : : ~PrepareSaveGuard();
146 : : private:
147 : : ScDocShell & mrDocShell;
148 : : };
149 : :
150 : : SC_DLLPRIVATE sal_Bool LoadXML( SfxMedium* pMedium, const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& );
151 : : SC_DLLPRIVATE sal_Bool SaveXML( SfxMedium* pMedium, const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& );
152 : : SC_DLLPRIVATE SCTAB GetSaveTab();
153 : :
154 : : SC_DLLPRIVATE sal_uLong DBaseImport( const String& rFullFileName, CharSet eCharSet,
155 : : ScColWidthParam aColWidthParam[MAXCOLCOUNT], ScFlatBoolRowSegments& rRowHeightsRecalc );
156 : : SC_DLLPRIVATE sal_uLong DBaseExport(
157 : : const rtl::OUString& rFullFileName, CharSet eCharSet, bool& bHasMemo );
158 : :
159 : : SC_DLLPRIVATE static bool MoveFile( const INetURLObject& rSource, const INetURLObject& rDest );
160 : : SC_DLLPRIVATE static bool KillFile( const INetURLObject& rURL );
161 : : SC_DLLPRIVATE static bool IsDocument( const INetURLObject& rURL );
162 : :
163 : : SC_DLLPRIVATE void LockPaint_Impl(sal_Bool bDoc);
164 : : SC_DLLPRIVATE void UnlockPaint_Impl(sal_Bool bDoc);
165 : : SC_DLLPRIVATE void LockDocument_Impl(sal_uInt16 nNew);
166 : : SC_DLLPRIVATE void UnlockDocument_Impl(sal_uInt16 nNew);
167 : :
168 : : SC_DLLPRIVATE void EnableSharedSettings( bool bEnable );
169 : : SC_DLLPRIVATE ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > LoadSharedDocument();
170 : :
171 : : SC_DLLPRIVATE void UseSheetSaveEntries();
172 : :
173 : : SC_DLLPRIVATE ScDocFunc *CreateDocFunc();
174 : :
175 : : protected:
176 : :
177 : : virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
178 : :
179 : : public:
180 : : TYPEINFO();
181 : :
182 : 51 : SFX_DECL_INTERFACE(SCID_DOC_SHELL)
183 : 108110 : SFX_DECL_OBJECTFACTORY();
184 : :
185 : : ScDocShell( const ScDocShell& rDocShell );
186 : : ScDocShell( const sal_uInt64 i_nSfxCreationFlags = SFXMODEL_EMBEDDED_OBJECT );
187 : : ~ScDocShell();
188 : :
189 : : using SotObject::GetInterface;
190 : : using SfxShell::Activate; // with sal_Bool bMDI
191 : : using SfxShell::Deactivate; // with sal_Bool bMDI
192 : : using SfxObjectShell::Print; // print styles
193 : :
194 : : #ifdef ENABLE_TELEPATHY
195 : : SC_DLLPRIVATE ScCollaboration* GetCollaboration();
196 : : #endif
197 : : virtual void Activate();
198 : : virtual void Deactivate();
199 : :
200 : : virtual ::svl::IUndoManager*
201 : : GetUndoManager();
202 : :
203 : : virtual void FillClass( SvGlobalName * pClassName,
204 : : sal_uInt32 * pFormat,
205 : : String * pAppName,
206 : : String * pFullTypeName,
207 : : String * pShortTypeName,
208 : : sal_Int32 nFileFormat,
209 : : sal_Bool bTemplate = false ) const;
210 : :
211 : : virtual sal_Bool InitNew( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& );
212 : : virtual sal_Bool Load( SfxMedium& rMedium );
213 : : virtual sal_Bool LoadFrom( SfxMedium& rMedium );
214 : : virtual sal_Bool ConvertFrom( SfxMedium &rMedium );
215 : : virtual sal_Bool Save();
216 : : virtual sal_Bool SaveAs( SfxMedium& rMedium );
217 : : virtual sal_Bool ConvertTo( SfxMedium &rMedium );
218 : : virtual sal_uInt16 PrepareClose( sal_Bool bUI = sal_True, sal_Bool bForBrowsing = false );
219 : : virtual void PrepareReload();
220 : : virtual sal_Bool IsInformationLost();
221 : : virtual void LoadStyles( SfxObjectShell &rSource );
222 : : virtual sal_Bool Insert( SfxObjectShell &rSource,
223 : : sal_uInt16 nSourceIdx1, sal_uInt16 nSourceIdx2, sal_uInt16 nSourceIdx3,
224 : : sal_uInt16 &nIdx1, sal_uInt16 &nIdx2, sal_uInt16 &nIdx3, sal_uInt16 &rIdxDeleted );
225 : :
226 : : virtual sal_Bool SaveCompleted( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& ); // SfxInPlaceObject
227 : : virtual sal_Bool DoSaveCompleted( SfxMedium * pNewStor); // SfxObjectShell
228 : : virtual sal_Bool QuerySlotExecutable( sal_uInt16 nSlotId );
229 : :
230 : : virtual void Draw( OutputDevice *, const JobSetup & rSetup,
231 : : sal_uInt16 nAspect = ASPECT_CONTENT );
232 : :
233 : : virtual void SetVisArea( const Rectangle & rVisArea );
234 : :
235 : : using SfxObjectShell::GetVisArea;
236 : : virtual Rectangle GetVisArea( sal_uInt16 nAspect ) const;
237 : :
238 : : virtual Printer* GetDocumentPrinter();
239 : :
240 : : virtual void SetModified( sal_Bool = sal_True );
241 : :
242 : : void SetVisAreaOrSize( const Rectangle& rVisArea, sal_Bool bModifyStart );
243 : :
244 : : virtual SfxDocumentInfoDialog* CreateDocumentInfoDialog( Window *pParent,
245 : : const SfxItemSet &rSet );
246 : :
247 : : void GetDocStat( ScDocStat& rDocStat );
248 : :
249 : 209624 : ScDocument* GetDocument() { return &aDocument; }
250 : 11617 : ScDocFunc& GetDocFunc() { return *pDocFunc; }
251 : : void SetDocFunc( ScDocFunc *pDF ) { pDocFunc = pDF; }
252 : :
253 : : SfxPrinter* GetPrinter( sal_Bool bCreateIfNotExist = sal_True );
254 : : sal_uInt16 SetPrinter( SfxPrinter* pNewPrinter, sal_uInt16 nDiffFlags = SFX_PRINTER_ALL );
255 : :
256 : : void UpdateFontList();
257 : :
258 : : String CreateObjectName( const String& rPrefix );
259 : :
260 : : ScDrawLayer* MakeDrawLayer();
261 : :
262 : : void AsciiSave( SvStream& rStream, const ScImportOptions& rOpt );
263 : :
264 : : void GetSbxState( SfxItemSet &rSet );
265 : : void GetDrawObjState( SfxItemSet &rSet );
266 : :
267 : : void Execute( SfxRequest& rReq );
268 : : void GetState( SfxItemSet &rSet );
269 : : void ExecutePageStyle ( SfxViewShell& rCaller, SfxRequest& rReq, SCTAB nCurTab );
270 : : void GetStatePageStyle( SfxViewShell& rCaller, SfxItemSet& rSet, SCTAB nCurTab );
271 : :
272 : : void CompareDocument( ScDocument& rOtherDoc );
273 : : void MergeDocument( ScDocument& rOtherDoc, bool bShared = false, bool bCheckDuplicates = false, sal_uLong nOffset = 0, ScChangeActionMergeMap* pMergeMap = NULL, bool bInverseMap = false );
274 : : bool MergeSharedDocument( ScDocShell* pSharedDocShell );
275 : :
276 : : ScChangeAction* GetChangeAction( const ScAddress& rPos );
277 : : void SetChangeComment( ScChangeAction* pAction, const String& rComment );
278 : : void ExecuteChangeCommentDialog( ScChangeAction* pAction, Window* pParent,sal_Bool bPrevNext=sal_True );
279 : : /// Protect/unprotect ChangeTrack and return <TRUE/> if
280 : : /// protection was successfully changed.
281 : : /// If bJustQueryIfProtected==sal_True protection is not
282 : : /// changed and <TRUE/> is returned if not protected or
283 : : /// password was entered correctly.
284 : : bool ExecuteChangeProtectionDialog( Window* _pParent, sal_Bool bJustQueryIfProtected = false );
285 : :
286 : : void SetPrintZoom( SCTAB nTab, sal_uInt16 nScale, sal_uInt16 nPages );
287 : : bool AdjustPrintZoom( const ScRange& rRange );
288 : :
289 : : void LoadStylesArgs( ScDocShell& rSource, bool bReplace, bool bCellStyles, bool bPageStyles );
290 : :
291 : : void PageStyleModified( const rtl::OUString& rStyleName, sal_Bool bApi );
292 : :
293 : : void NotifyStyle( const SfxStyleSheetHint& rHint );
294 : : void DoAutoStyle( const ScRange& rRange, const String& rStyle );
295 : :
296 : : Window* GetActiveDialogParent();
297 : : void ErrorMessage( sal_uInt16 nGlobStrId );
298 : : sal_Bool IsEditable() const;
299 : :
300 : : sal_Bool AdjustRowHeight( SCROW nStartRow, SCROW nEndRow, SCTAB nTab );
301 : : void UpdateAllRowHeights( const ScMarkData* pTabMark = NULL );
302 : : void UpdatePendingRowHeights( SCTAB nUpdateTab, bool bBefore = false );
303 : :
304 : : void RefreshPivotTables( const ScRange& rSource );
305 : : void DoConsolidate( const ScConsolidateParam& rParam, sal_Bool bRecord = sal_True );
306 : : void UseScenario( SCTAB nTab, const String& rName, sal_Bool bRecord = sal_True );
307 : : SCTAB MakeScenario( SCTAB nTab, const String& rName, const String& rComment,
308 : : const Color& rColor, sal_uInt16 nFlags,
309 : : ScMarkData& rMark, sal_Bool bRecord = sal_True );
310 : : void ModifyScenario( SCTAB nTab, const String& rName, const String& rComment,
311 : : const Color& rColor, sal_uInt16 nFlags );
312 : : sal_uLong TransferTab( ScDocShell& rSrcDocShell, SCTAB nSrcPos,
313 : : SCTAB nDestPos, sal_Bool bInsertNew,
314 : : sal_Bool bNotifyAndPaint );
315 : :
316 : : sal_Bool MoveTable( SCTAB nSrcTab, SCTAB nDestTab, sal_Bool bCopy, sal_Bool bRecord );
317 : :
318 : : void DoRecalc( bool bApi );
319 : : void DoHardRecalc( bool bApi );
320 : :
321 : : void UpdateOle( const ScViewData* pViewData, sal_Bool bSnapSize = false);
322 : : sal_Bool IsOle();
323 : :
324 : : void DBAreaDeleted( SCTAB nTab, SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2 );
325 : : ScDBData* GetDBData( const ScRange& rMarked, ScGetDBMode eMode, ScGetDBSelection eSel );
326 : : ScDBData* GetAnonymousDBData(const ScRange& rRange);
327 : : ScDBData* GetOldAutoDBRange(); // has to be deleted by caller!
328 : : void CancelAutoDBRange(); // called when dialog is cancelled
329 : :
330 : : virtual void ReconnectDdeLink(SfxObjectShell& rServer);
331 : : void UpdateLinks();
332 : : sal_Bool ReloadTabLinks();
333 : :
334 : : void SetFormulaOptions(const ScFormulaOptions& rOpt );
335 : : virtual void CheckConfigOptions();
336 : :
337 : : void PostEditView( ScEditEngineDefaulter* pEditEngine, const ScAddress& rCursorPos );
338 : :
339 : : void PostPaint( SCCOL nStartCol, SCROW nStartRow, SCTAB nStartTab,
340 : : SCCOL nEndCol, SCROW nEndRow, SCTAB nEndTab, sal_uInt16 nPart,
341 : : sal_uInt16 nExtFlags = 0 );
342 : : void PostPaint( const ScRangeList& rRanges, sal_uInt16 nPart, sal_uInt16 nExtFlags = 0 );
343 : :
344 : : void PostPaintCell( SCCOL nCol, SCROW nRow, SCTAB nTab );
345 : : void PostPaintCell( const ScAddress& rPos );
346 : : void PostPaintGridAll();
347 : : void PostPaintExtras();
348 : :
349 : 6 : bool IsPaintLocked() const { return pPaintLockData != NULL; }
350 : :
351 : : void PostDataChanged();
352 : :
353 : : void UpdatePaintExt( sal_uInt16& rExtFlags, SCCOL nStartCol, SCROW nStartRow, SCTAB nStartTab,
354 : : SCCOL nEndCol, SCROW nEndRow, SCTAB nEndTab );
355 : : void UpdatePaintExt( sal_uInt16& rExtFlags, const ScRange& rRange );
356 : :
357 : : void SetDocumentModified( sal_Bool bIsModified = sal_True );
358 : : void SetDrawModified( sal_Bool bIsModified = sal_True );
359 : :
360 : : void LockPaint();
361 : : void UnlockPaint();
362 : : sal_uInt16 GetLockCount() const;
363 : : void SetLockCount(sal_uInt16 nNew);
364 : :
365 : : void LockDocument();
366 : : void UnlockDocument();
367 : :
368 : : DECL_LINK( DialogClosedHdl, sfx2::FileDialogHelper* );
369 : :
370 : : virtual SfxStyleSheetBasePool* GetStyleSheetPool();
371 : :
372 : : void SetInplace( bool bInplace );
373 : : bool IsEmpty() const;
374 : : void SetEmpty(bool bSet);
375 : :
376 : 3 : bool IsInUndo() const { return bIsInUndo; }
377 : : void SetInUndo(bool bSet);
378 : :
379 : : void CalcOutputFactor();
380 : : double GetOutputFactor() const;
381 : : void GetPageOnFromPageStyleSet( const SfxItemSet* pStyleSet,
382 : : SCTAB nCurTab,
383 : : bool& rbHeader,
384 : : bool& rbFooter );
385 : :
386 : : virtual long DdeGetData( const String& rItem, const String& rMimeType,
387 : : ::com::sun::star::uno::Any & rValue );
388 : : virtual long DdeSetData( const String& rItem, const String& rMimeType,
389 : : const ::com::sun::star::uno::Any & rValue );
390 : : virtual ::sfx2::SvLinkSource* DdeCreateLinkSource( const String& rItem );
391 : :
392 : 5 : const String& GetDdeTextFmt() const { return aDdeTextFmt; }
393 : :
394 : : SfxBindings* GetViewBindings();
395 : :
396 : : ScTabViewShell* GetBestViewShell( sal_Bool bOnlyVisible = sal_True );
397 : : ScSbxDocHelper* GetDocHelperObject() { return pDocHelper; }
398 : :
399 : 4098 : void SetDocumentModifiedPending( bool bVal )
400 : 4098 : { bDocumentModifiedPending = bVal; }
401 : 5714 : bool IsDocumentModifiedPending() const
402 : 5714 : { return bDocumentModifiedPending; }
403 : :
404 : 227 : bool IsUpdateEnabled() const
405 : 227 : { return bUpdateEnabled; }
406 : 229 : void SetUpdateEnabled(bool bValue)
407 : 229 : { bUpdateEnabled = bValue; }
408 : :
409 : : OutputDevice* GetRefDevice(); // WYSIWYG: Printer, otherwise VirtualDevice...
410 : :
411 : : static ScViewData* GetViewData();
412 : : static SCTAB GetCurTab();
413 : :
414 : : static ScDocShell* GetShellByNum( sal_uInt16 nDocNo );
415 : : static String GetOwnFilterName();
416 : : static String GetHtmlFilterName();
417 : : static String GetWebQueryFilterName();
418 : : static String GetAsciiFilterName();
419 : : static String GetLotusFilterName();
420 : : static String GetDBaseFilterName();
421 : : static String GetDifFilterName();
422 : : static sal_Bool HasAutomaticTableName( const String& rFilter );
423 : :
424 : : DECL_LINK( RefreshDBDataHdl, ScRefreshTimer* );
425 : :
426 : : void BeforeXMLLoading();
427 : : void AfterXMLLoading(sal_Bool bRet);
428 : :
429 : : virtual sal_uInt16 GetHiddenInformationState( sal_uInt16 nStates );
430 : :
431 : 0 : const ScOptSolverSave* GetSolverSaveData() const { return pSolverSaveData; } // may be null
432 : : void SetSolverSaveData( const ScOptSolverSave& rData );
433 : : ScSheetSaveData* GetSheetSaveData();
434 : :
435 : : void ResetKeyBindings( ScOptionsUtil::KeyBindingType eType );
436 : :
437 : : // password protection for Calc (derived from SfxObjectShell)
438 : : // see also: FID_CHG_RECORD, SID_CHG_PROTECT
439 : : virtual bool IsChangeRecording() const;
440 : : virtual bool HasChangeRecordProtection() const;
441 : : virtual void SetChangeRecording( bool bActivate );
442 : : virtual bool SetProtectionPassword( const String &rPassword );
443 : : virtual bool GetProtectionHash( /*out*/ ::com::sun::star::uno::Sequence< sal_Int8 > &rPasswordHash );
444 : : };
445 : :
446 : :
447 : : void UpdateAcceptChangesDialog();
448 : :
449 : :
450 : 1057 : SO2_DECL_REF(ScDocShell)
451 [ + + - ]: 1189 : SO2_IMPL_REF(ScDocShell)
[ + - ][ + - ]
[ + - - + ]
[ + + ][ + - ]
[ + - ]
452 : :
453 : :
454 : : /** Create before modifications of the document and then destroy.
455 : : If noted in the ctor AutoCalcShellDisabled and IdleDisabled,
456 : : switches them off and restores the dtor AutoCalcShellDisabled
457 : : also before a ScDocShell SetDocumentModified.
458 : : Call SetDocumentModified after instead of the ScDocShell.
459 : : In the dtor, if ScDocShell bDocumentModifiedPending is set and
460 : : bAutoCalcShellDisabled is not set, then SetDocumentModified is called. */
461 : : class SC_DLLPUBLIC ScDocShellModificator
462 : : {
463 : : ScDocShell& rDocShell;
464 : : ScRefreshTimerProtector aProtector;
465 : : sal_Bool bAutoCalcShellDisabled;
466 : : sal_Bool bIdleDisabled;
467 : :
468 : : // not implemented
469 : : ScDocShellModificator( const ScDocShellModificator& );
470 : : ScDocShellModificator& operator=( const ScDocShellModificator& );
471 : :
472 : : public:
473 : : ScDocShellModificator( ScDocShell& );
474 : : ~ScDocShellModificator();
475 : : void SetDocumentModified();
476 : : };
477 : :
478 : :
479 : :
480 : : #endif
481 : :
482 : :
483 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|