xref: /AOO41X/main/sw/inc/unotxdoc.hxx (revision 41163fb6bc5f228f840590e3b299c791cded5b6e)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 #ifndef _UNOTXDOC_HXX
24 #define _UNOTXDOC_HXX
25 
26 #include "swdllapi.h"
27 #include <svl/svarray.hxx>
28 #include <sfx2/sfxbasemodel.hxx>
29 
30 #include <com/sun/star/beans/PropertyValues.hpp>
31 #include <com/sun/star/style/XStyleFamiliesSupplier.hpp>
32 #include <com/sun/star/style/XAutoStylesSupplier.hpp>
33 #include <com/sun/star/document/XLinkTargetSupplier.hpp>
34 #include <com/sun/star/document/XRedlinesSupplier.hpp>
35 #include <com/sun/star/text/XNumberingRulesSupplier.hpp>
36 #include <com/sun/star/text/XFootnotesSupplier.hpp>
37 #include <com/sun/star/text/XEndnotesSupplier.hpp>
38 #include <com/sun/star/text/XEndnotesSettingsSupplier.hpp>
39 #include <com/sun/star/text/XTextSectionsSupplier.hpp>
40 #include <com/sun/star/text/XLineNumberingProperties.hpp>
41 #include <com/sun/star/text/XChapterNumberingSupplier.hpp>
42 #include <com/sun/star/text/XPagePrintable.hpp>
43 #include <com/sun/star/text/XTextFieldsSupplier.hpp>
44 #include <com/sun/star/text/XTextGraphicObjectsSupplier.hpp>
45 #include <com/sun/star/text/XTextTablesSupplier.hpp>
46 #include <com/sun/star/text/XDocumentIndexesSupplier.hpp>
47 #include <com/sun/star/text/XBookmarksSupplier.hpp>
48 #include <com/sun/star/text/XTextDocument.hpp>
49 #include <com/sun/star/text/XTextEmbeddedObjectsSupplier.hpp>
50 #include <com/sun/star/text/XReferenceMarksSupplier.hpp>
51 #include <com/sun/star/text/XTextFramesSupplier.hpp>
52 #include <com/sun/star/drawing/XDrawPageSupplier.hpp>
53 #include <com/sun/star/util/XReplaceable.hpp>
54 #include <com/sun/star/util/XReplaceDescriptor.hpp>
55 #include <com/sun/star/util/XRefreshable.hpp>
56 #include <com/sun/star/util/XLinkUpdate.hpp>
57 #include <com/sun/star/view/XRenderable.hpp>
58 #include <com/sun/star/lang/XServiceInfo.hpp>
59 #include <com/sun/star/frame/XController.hpp>
60 #include <com/sun/star/beans/XPropertySet.hpp>
61 #include <com/sun/star/beans/XPropertyState.hpp>
62 #include <com/sun/star/i18n/XForbiddenCharacters.hpp>
63 #include <com/sun/star/lang/Locale.hpp>
64 #include <com/sun/star/xforms/XFormsSupplier.hpp>
65 #include <com/sun/star/container/XNameContainer.hpp>
66 #include <com/sun/star/text/XFlatParagraphIteratorProvider.hpp>
67 #include <com/sun/star/document/XDocumentLanguages.hpp>
68 #include <com/sun/star/util/XCloneable.hpp>
69 #include <svl/itemprop.hxx>
70 #include <svx/fmdmod.hxx>
71 #include <editeng/UnoForbiddenCharsTable.hxx>
72 #include <cppuhelper/weak.hxx>
73 #include <cppuhelper/implbase2.hxx> // helper for implementations
74 #include <cppuhelper/implbase4.hxx> // helper for implementations
75 #include <RefreshListenerContainer.hxx>
76 
77 #include <viewopt.hxx>
78 
79 #define __IFC32 Ifc1, Ifc2, Ifc3, Ifc4, Ifc5, Ifc6, Ifc7, Ifc8, Ifc9, Ifc10, Ifc11, Ifc12, Ifc13, Ifc14, Ifc15, Ifc16, \
80 Ifc17, Ifc18, Ifc19, Ifc20, Ifc21, Ifc22, Ifc23, Ifc24, Ifc25, Ifc26, Ifc27, Ifc28, Ifc29, Ifc30, Ifc31, Ifc32
81 
82 #define __CLASS_IFC32 class Ifc1, class Ifc2, class Ifc3, class Ifc4, class Ifc5, class Ifc6, class Ifc7, \
83 class Ifc8, class Ifc9, class Ifc10, class Ifc11, class Ifc12, class Ifc13, class Ifc14, class Ifc15, class Ifc16, \
84 class Ifc17, class Ifc18, class Ifc19, class Ifc20, class Ifc21, class Ifc22, class Ifc23, class Ifc24,\
85 class Ifc25, class Ifc26, class Ifc27, class Ifc28, class Ifc29, class Ifc30, class Ifc31 , class Ifc32
86 
87 #define __PUBLIC_IFC32 public Ifc1, public Ifc2, public Ifc3, public Ifc4, public Ifc5, public Ifc6, public Ifc7, public Ifc8, public Ifc9, public Ifc10, public Ifc11, public Ifc12, \
88 public Ifc13, public Ifc14, public Ifc15, public Ifc16, public Ifc17, public Ifc18, \
89 public Ifc19, public Ifc20, public Ifc21, public Ifc22, public Ifc23, public Ifc24, \
90 public Ifc25, public Ifc26, public Ifc27, public Ifc28, public Ifc29, public Ifc30, \
91 public Ifc31, public Ifc32
92 #include <cppuhelper/implbase_ex.hxx>
93 #include <cppuhelper/implbase_ex_pre.hxx>
94 #define __IFC_EX_TYPE_INIT32( class_cast ) \
95     __IFC_EX_TYPE_INIT( class_cast, 1 ), __IFC_EX_TYPE_INIT( class_cast, 2 ), \
96     __IFC_EX_TYPE_INIT( class_cast, 3 ), __IFC_EX_TYPE_INIT( class_cast, 4 ), \
97     __IFC_EX_TYPE_INIT( class_cast, 5 ), __IFC_EX_TYPE_INIT( class_cast, 6 ), \
98     __IFC_EX_TYPE_INIT( class_cast, 7 ), __IFC_EX_TYPE_INIT( class_cast, 8 ), \
99     __IFC_EX_TYPE_INIT( class_cast, 9 ), __IFC_EX_TYPE_INIT( class_cast, 10 ), \
100     __IFC_EX_TYPE_INIT( class_cast, 11 ), __IFC_EX_TYPE_INIT( class_cast, 12 ), \
101     __IFC_EX_TYPE_INIT( class_cast, 13 ), __IFC_EX_TYPE_INIT( class_cast, 14 ), \
102     __IFC_EX_TYPE_INIT( class_cast, 15 ), __IFC_EX_TYPE_INIT( class_cast, 16 ), \
103     __IFC_EX_TYPE_INIT( class_cast, 17 ), __IFC_EX_TYPE_INIT( class_cast, 18 ), \
104     __IFC_EX_TYPE_INIT( class_cast, 19 ), __IFC_EX_TYPE_INIT( class_cast, 20 ), \
105     __IFC_EX_TYPE_INIT( class_cast, 21 ), __IFC_EX_TYPE_INIT( class_cast, 22 ), \
106     __IFC_EX_TYPE_INIT( class_cast, 23 ), __IFC_EX_TYPE_INIT( class_cast, 24 ), \
107     __IFC_EX_TYPE_INIT( class_cast, 25 ), __IFC_EX_TYPE_INIT( class_cast, 26 ), \
108     __IFC_EX_TYPE_INIT( class_cast, 27 ), __IFC_EX_TYPE_INIT( class_cast, 28 ), \
109     __IFC_EX_TYPE_INIT( class_cast, 29 ), __IFC_EX_TYPE_INIT( class_cast, 30 ), \
110     __IFC_EX_TYPE_INIT( class_cast, 31 ), __IFC_EX_TYPE_INIT( class_cast, 32)
111 #include <cppuhelper/implbase_ex_post.hxx>
112 
113 __DEF_IMPLHELPER_EX( 32 )
114 
115 namespace css = ::com::sun::star;
116 
117 class SwDoc;
118 class SwDocShell;
119 class UnoActionContext;
120 class SwXBodyText;
121 class SwXDrawPage;
122 class SwUnoCrsr;
123 class SwXDocumentPropertyHelper;
124 class SfxViewFrame;
125 class SwPrintUIOptions;
126 class SwPrintData;
127 class SwRenderData;
128 class ViewShell;
129 
130 typedef UnoActionContext* UnoActionContextPtr;
131 SV_DECL_PTRARR(ActionContextArr, UnoActionContextPtr, 4, 4)
132 
133 
134 /******************************************************************************
135  *
136  ******************************************************************************/
137 
138 
139 typedef cppu::WeakImplHelper32
140 <
141     css::text::XTextDocument,
142     css::text::XLineNumberingProperties,
143     css::text::XChapterNumberingSupplier,
144     css::text::XNumberingRulesSupplier,
145     css::text::XFootnotesSupplier,
146     css::text::XEndnotesSupplier,
147     css::util::XReplaceable,
148     css::text::XPagePrintable,
149     css::text::XReferenceMarksSupplier,
150     css::text::XTextTablesSupplier,
151     css::text::XTextFramesSupplier,
152     css::text::XBookmarksSupplier,
153     css::text::XTextSectionsSupplier,
154     css::text::XTextGraphicObjectsSupplier,
155     css::text::XTextEmbeddedObjectsSupplier,
156     css::text::XTextFieldsSupplier,
157     css::style::XStyleFamiliesSupplier,
158     css::style::XAutoStylesSupplier,
159     css::lang::XServiceInfo,
160     css::drawing::XDrawPageSupplier,
161     css::text::XDocumentIndexesSupplier,
162     css::beans::XPropertySet,
163     css::beans::XPropertyState,
164     css::document::XLinkTargetSupplier,
165     css::document::XRedlinesSupplier,
166     css::util::XRefreshable,
167     css::util::XLinkUpdate,
168     css::view::XRenderable,
169     css::xforms::XFormsSupplier,
170     css::text::XFlatParagraphIteratorProvider,
171     css::document::XDocumentLanguages,
172     css::util::XCloneable
173 >
174 SwXTextDocumentBaseClass;
175 
176 class SW_DLLPUBLIC SwXTextDocument : public SwXTextDocumentBaseClass,
177     public SvxFmMSFactory,
178     public SfxBaseModel
179 {
180     ActionContextArr        aActionArr;
181     SwRefreshListenerContainer  aRefreshCont;
182 
183     const SfxItemPropertySet* pPropSet;
184 
185     SwDocShell*             pDocShell;
186     sal_Bool                    bObjectValid;
187 
188     SwXDrawPage*            pDrawPage;
189     css::uno::Reference< css::drawing::XDrawPage > *            pxXDrawPage;
190 
191     css::uno::Reference< css::text::XText >                 xBodyText;
192     SwXBodyText*            pBodyText;
193     css::uno::Reference< css::uno::XAggregation >           xNumFmtAgg;
194 
195     css::uno::Reference< css::container::XIndexAccess > *     pxXNumberingRules;
196     css::uno::Reference< css::container::XIndexAccess > *     pxXFootnotes;
197     css::uno::Reference< css::beans::XPropertySet > *        pxXFootnoteSettings;
198     css::uno::Reference< css::container::XIndexAccess > *       pxXEndnotes;
199     css::uno::Reference< css::beans::XPropertySet > *        pxXEndnoteSettings;
200     css::uno::Reference< css::container::XNameAccess > *            pxXReferenceMarks;
201     css::uno::Reference< css::container::XEnumerationAccess > * pxXTextFieldTypes;
202     css::uno::Reference< css::container::XNameAccess > *            pxXTextFieldMasters;
203     css::uno::Reference< css::container::XNameAccess > *            pxXTextSections;
204     css::uno::Reference< css::container::XNameAccess > *            pxXBookmarks;
205     css::uno::Reference< css::container::XNameAccess > *            pxXTextTables;
206     css::uno::Reference< css::container::XNameAccess > *            pxXTextFrames;
207     css::uno::Reference< css::container::XNameAccess > *            pxXGraphicObjects;
208     css::uno::Reference< css::container::XNameAccess > *            pxXEmbeddedObjects;
209     css::uno::Reference< css::container::XNameAccess > *            pxXStyleFamilies;
210     mutable css::uno::Reference< css::style::XAutoStyles > *  pxXAutoStyles;
211     css::uno::Reference< css::container::XIndexReplace > *        pxXChapterNumbering;
212     css::uno::Reference< css::container::XIndexAccess > *       pxXDocumentIndexes;
213 
214     css::uno::Reference< css::beans::XPropertySet > *       pxXLineNumberingProperties;
215     css::uno::Reference< css::container::XNameAccess > *            pxLinkTargetSupplier;
216     css::uno::Reference< css::container::XEnumerationAccess >*  pxXRedlines;
217     css::uno::Reference< css::container::XNameContainer>        xXFormsContainer;
218 
219     //temporary frame to enable PDF export if no valid view is available
220     SfxViewFrame*                                   m_pHiddenViewFrame;
221     css::uno::Reference< css::uno::XInterface>      xPropertyHelper;
222     SwXDocumentPropertyHelper*                      pPropertyHelper;
223 
224     SwPrintUIOptions *                              m_pPrintUIOptions;
225     SwRenderData *                               m_pRenderData;
226 
227     void                    GetBodyText();
228     void                    GetNumberFormatter();
229 
230     // used for XRenderable implementation
231     SfxViewShell *  GuessViewShell( /* out */ bool &rbIsSwSrcView, const css::uno::Reference< css::frame::XController > xController = css::uno::Reference< css::frame::XController >() );
232     SwDoc *         GetRenderDoc( SfxViewShell *&rpView, const css::uno::Any& rSelection, bool bIsPDFExport );
233     SfxViewShell *  GetRenderView( bool &rbIsSwSrcView, const css::uno::Sequence< css::beans::PropertyValue >& rxOptions, bool bIsPDFExport );
234 
235     rtl::OUString           maBuildId;
236 
237     // --> OD #i117783#
238     // boolean for XPagePrintable
239     // set in XPagePrintable::printPages(..) to indicate that the PagePrintSettings
240     // has to be applied in XRenderable::getRenderer(..) through which the printing
241     // is implemented.
242     sal_Bool bApplyPagePrintSettingsFromXPagePrintable;
243     // <--
244 
245     using SfxBaseModel::addEventListener;
246     using SfxBaseModel::removeEventListener;
247 
248 protected:
249     virtual ~SwXTextDocument();
250 public:
251     SwXTextDocument(SwDocShell* pShell);
252 
253     inline void notifyRefreshListeners() { aRefreshCont.Refreshed(); }
254     virtual     css::uno::Any SAL_CALL queryInterface( const css::uno::Type& aType ) throw(css::uno::RuntimeException);
255     virtual void SAL_CALL acquire(  ) throw();
256     virtual void SAL_CALL release(  ) throw();
257 
258     //XWeak
259     virtual css::uno::Reference< css::uno::XAdapter > SAL_CALL queryAdapter(  ) throw(css::uno::RuntimeException);
260 
261     virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes(  ) throw(css::uno::RuntimeException);
262 
263     static const css::uno::Sequence< sal_Int8 > & getUnoTunnelId();
264 
265     //XUnoTunnel
266     virtual sal_Int64 SAL_CALL getSomething( const css::uno::Sequence< sal_Int8 >& aIdentifier ) throw(css::uno::RuntimeException);
267 
268     //XTextDocument
269     virtual css::uno::Reference< css::text::XText >  SAL_CALL getText(void) throw( css::uno::RuntimeException );
270     virtual void SAL_CALL reformat(void) throw( css::uno::RuntimeException );
271 
272     //XModel
273     virtual sal_Bool SAL_CALL attachResource( const ::rtl::OUString& aURL, const css::uno::Sequence< css::beans::PropertyValue >& aArgs ) throw(css::uno::RuntimeException);
274     virtual ::rtl::OUString SAL_CALL getURL(  ) throw(css::uno::RuntimeException);
275     virtual css::uno::Sequence< css::beans::PropertyValue > SAL_CALL getArgs(  ) throw(css::uno::RuntimeException);
276     virtual void SAL_CALL connectController( const css::uno::Reference< css::frame::XController >& xController ) throw(css::uno::RuntimeException);
277     virtual void SAL_CALL disconnectController( const css::uno::Reference< css::frame::XController >& xController ) throw(css::uno::RuntimeException);
278     virtual void SAL_CALL lockControllers(  ) throw(css::uno::RuntimeException);
279     virtual void SAL_CALL unlockControllers(  ) throw(css::uno::RuntimeException);
280     virtual sal_Bool SAL_CALL hasControllersLocked(  ) throw(css::uno::RuntimeException);
281     virtual css::uno::Reference< css::frame::XController > SAL_CALL getCurrentController(  ) throw(css::uno::RuntimeException);
282     virtual void SAL_CALL setCurrentController( const css::uno::Reference< css::frame::XController >& xController ) throw(css::container::NoSuchElementException, css::uno::RuntimeException);
283     virtual css::uno::Reference< css::uno::XInterface > SAL_CALL getCurrentSelection(  ) throw(css::uno::RuntimeException);
284 
285     //XComponent
286     virtual void SAL_CALL dispose(void) throw( css::uno::RuntimeException );
287     virtual void SAL_CALL addEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) throw( css::uno::RuntimeException );
288     virtual void SAL_CALL removeEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) throw( css::uno::RuntimeException );
289 
290     //XCloseable
291     virtual void SAL_CALL close( sal_Bool bDeliverOwnership ) throw (css::util::CloseVetoException, css::uno::RuntimeException);
292 
293     //XLineNumberingProperties
294     virtual css::uno::Reference< css::beans::XPropertySet > SAL_CALL getLineNumberingProperties(void) throw( css::uno::RuntimeException );
295 
296     //XChapterNumberingSupplier
297     virtual css::uno::Reference< css::container::XIndexReplace >  SAL_CALL getChapterNumberingRules(void) throw( css::uno::RuntimeException );
298 
299     //XNumberingRulesSupplier
300     virtual css::uno::Reference< css::container::XIndexAccess > SAL_CALL getNumberingRules() throw (css::uno::RuntimeException);
301 
302     //XFootnotesSupplier
303     virtual css::uno::Reference< css::container::XIndexAccess >  SAL_CALL getFootnotes(void) throw( css::uno::RuntimeException );
304     virtual css::uno::Reference< css::beans::XPropertySet >  SAL_CALL getFootnoteSettings(void) throw( css::uno::RuntimeException );
305 
306     //XEndnotesSupplier
307     virtual css::uno::Reference< css::container::XIndexAccess >  SAL_CALL getEndnotes(void) throw( css::uno::RuntimeException );
308     virtual css::uno::Reference< css::beans::XPropertySet >  SAL_CALL getEndnoteSettings(void) throw( css::uno::RuntimeException );
309 
310     //XReplaceable
311     virtual css::uno::Reference< css::util::XReplaceDescriptor >  SAL_CALL createReplaceDescriptor(void) throw( css::uno::RuntimeException );
312     virtual sal_Int32 SAL_CALL replaceAll(const css::uno::Reference< css::util::XSearchDescriptor > & xDesc) throw( css::uno::RuntimeException );
313 
314     //XSearchable
315     virtual css::uno::Reference< css::util::XSearchDescriptor >  SAL_CALL createSearchDescriptor(void) throw( css::uno::RuntimeException );
316     virtual css::uno::Reference< css::container::XIndexAccess >  SAL_CALL findAll(const css::uno::Reference< css::util::XSearchDescriptor > & xDesc) throw( css::uno::RuntimeException );
317     virtual css::uno::Reference< css::uno::XInterface >  SAL_CALL findFirst(const css::uno::Reference< css::util::XSearchDescriptor > & xDesc) throw( css::uno::RuntimeException );
318     virtual css::uno::Reference< css::uno::XInterface >  SAL_CALL findNext(const css::uno::Reference< css::uno::XInterface > & xStartAt, const css::uno::Reference< css::util::XSearchDescriptor > & xDesc) throw( css::uno::RuntimeException );
319 
320     //XPagePrintable
321     virtual css::uno::Sequence< css::beans::PropertyValue > SAL_CALL getPagePrintSettings(void) throw( css::uno::RuntimeException );
322     virtual void SAL_CALL setPagePrintSettings(const css::uno::Sequence< css::beans::PropertyValue >& aSettings) throw( css::uno::RuntimeException );
323     virtual void SAL_CALL printPages(const css::uno::Sequence< css::beans::PropertyValue >& xOptions) throw( css::lang::IllegalArgumentException, css::uno::RuntimeException );
324 
325     //XReferenceMarksSupplier
326     virtual css::uno::Reference< css::container::XNameAccess >  SAL_CALL getReferenceMarks(void) throw( css::uno::RuntimeException );
327 
328     // css::text::XTextFieldsSupplier
329     virtual css::uno::Reference< css::container::XEnumerationAccess >  SAL_CALL getTextFields(void) throw( css::uno::RuntimeException );
330     virtual css::uno::Reference< css::container::XNameAccess >  SAL_CALL getTextFieldMasters(void) throw( css::uno::RuntimeException );
331 
332     // css::text::XTextEmbeddedObjectsSupplier
333     virtual css::uno::Reference< css::container::XNameAccess >  SAL_CALL getEmbeddedObjects(void) throw( css::uno::RuntimeException );
334 
335 //  // css::text::XTextShapesSupplier
336 //    virtual css::uno::Reference< css::container::XIndexAccess >  getShapes(void) throw( css::uno::RuntimeException );
337 
338     // css::text::XBookmarksSupplier
339     virtual css::uno::Reference< css::container::XNameAccess >  SAL_CALL getBookmarks(void) throw( css::uno::RuntimeException );
340 
341     // css::text::XTextSectionsSupplier
342     virtual css::uno::Reference< css::container::XNameAccess >  SAL_CALL getTextSections(void) throw( css::uno::RuntimeException );
343 
344     // css::text::XTextTablesSupplier
345     virtual css::uno::Reference< css::container::XNameAccess >  SAL_CALL getTextTables(void) throw( css::uno::RuntimeException );
346 
347     // css::text::XTextGraphicObjectsSupplier
348     virtual css::uno::Reference< css::container::XNameAccess >  SAL_CALL getGraphicObjects(void) throw( css::uno::RuntimeException );
349 
350     // css::text::XTextFramesSupplier
351     virtual css::uno::Reference< css::container::XNameAccess >  SAL_CALL getTextFrames(void) throw( css::uno::RuntimeException );
352 
353     //XStyleFamiliesSupplier
354     virtual css::uno::Reference< css::container::XNameAccess >  SAL_CALL getStyleFamilies(void) throw( css::uno::RuntimeException );
355 
356     //XAutoStylesSupplier
357     virtual css::uno::Reference< css::style::XAutoStyles > SAL_CALL getAutoStyles(  ) throw (css::uno::RuntimeException);
358 
359     //XMultiServiceFactory
360     virtual css::uno::Reference< css::uno::XInterface >  SAL_CALL createInstance(const rtl::OUString& ServiceSpecifier)
361                 throw( css::uno::Exception, css::uno::RuntimeException );
362     virtual css::uno::Reference< css::uno::XInterface >  SAL_CALL createInstanceWithArguments(const rtl::OUString& ServiceSpecifier,
363                 const css::uno::Sequence< css::uno::Any >& Arguments)
364                 throw( css::uno::Exception, css::uno::RuntimeException );
365     virtual css::uno::Sequence< rtl::OUString > SAL_CALL getAvailableServiceNames(void)
366                 throw( css::uno::RuntimeException );
367 
368     //XServiceInfo
369     virtual rtl::OUString SAL_CALL getImplementationName(void) throw( css::uno::RuntimeException );
370     virtual sal_Bool SAL_CALL supportsService(const rtl::OUString& ServiceName) throw( css::uno::RuntimeException );
371     virtual css::uno::Sequence< rtl::OUString > SAL_CALL getSupportedServiceNames(void) throw( css::uno::RuntimeException );
372 
373     // css::drawing::XDrawPageSupplier
374     virtual css::uno::Reference< css::drawing::XDrawPage >  SAL_CALL getDrawPage(void) throw( css::uno::RuntimeException );
375 
376     // css::text::XDocumentIndexesSupplier
377     virtual css::uno::Reference< css::container::XIndexAccess >  SAL_CALL getDocumentIndexes(void) throw( css::uno::RuntimeException );
378 
379     //XPropertySet
380     virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo(  ) throw(css::uno::RuntimeException);
381     virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, const css::uno::Any& aValue ) throw(css::beans::UnknownPropertyException, css::beans::PropertyVetoException, css::lang::IllegalArgumentException, css::lang::WrappedTargetException, css::uno::RuntimeException);
382     virtual css::uno::Any SAL_CALL getPropertyValue( const ::rtl::OUString& PropertyName ) throw(css::beans::UnknownPropertyException, css::lang::WrappedTargetException, css::uno::RuntimeException);
383     virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& xListener ) throw(css::beans::UnknownPropertyException, css::lang::WrappedTargetException, css::uno::RuntimeException);
384     virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& aListener ) throw(css::beans::UnknownPropertyException, css::lang::WrappedTargetException, css::uno::RuntimeException);
385     virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) throw(css::beans::UnknownPropertyException, css::lang::WrappedTargetException, css::uno::RuntimeException);
386     virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) throw(css::beans::UnknownPropertyException, css::lang::WrappedTargetException, css::uno::RuntimeException);
387 
388     //XPropertyState
389     virtual css::beans::PropertyState SAL_CALL getPropertyState( const ::rtl::OUString& rPropertyName ) throw (css::beans::UnknownPropertyException, css::uno::RuntimeException);
390     virtual css::uno::Sequence< css::beans::PropertyState > SAL_CALL getPropertyStates( const css::uno::Sequence< ::rtl::OUString >& rPropertyNames ) throw (css::beans::UnknownPropertyException, css::uno::RuntimeException);
391     virtual void SAL_CALL setPropertyToDefault( const ::rtl::OUString& rPropertyName ) throw (css::beans::UnknownPropertyException, css::uno::RuntimeException);
392     virtual css::uno::Any SAL_CALL getPropertyDefault( const ::rtl::OUString& rPropertyName ) throw (css::beans::UnknownPropertyException, css::lang::WrappedTargetException, css::uno::RuntimeException);
393 
394     //XLinkTargetSupplier
395     virtual css::uno::Reference< css::container::XNameAccess >  SAL_CALL getLinks(void) throw( css::uno::RuntimeException );
396 
397     //XRedlinesSupplier
398     virtual css::uno::Reference< css::container::XEnumerationAccess > SAL_CALL getRedlines(  ) throw(css::uno::RuntimeException);
399 
400     // css::util::XRefreshable
401     virtual void SAL_CALL refresh(void) throw( css::uno::RuntimeException );
402     virtual void SAL_CALL addRefreshListener(const css::uno::Reference< css::util::XRefreshListener > & l) throw( css::uno::RuntimeException );
403     virtual void SAL_CALL removeRefreshListener(const css::uno::Reference< css::util::XRefreshListener > & l) throw( css::uno::RuntimeException );
404 
405     // css::util::XLinkUpdate,
406     virtual void SAL_CALL updateLinks(  ) throw(css::uno::RuntimeException);
407 
408     // css::view::XRenderable
409     virtual sal_Int32 SAL_CALL getRendererCount( const css::uno::Any& aSelection, const css::uno::Sequence< css::beans::PropertyValue >& xOptions ) throw (css::lang::IllegalArgumentException, css::uno::RuntimeException);
410     virtual css::uno::Sequence< css::beans::PropertyValue > SAL_CALL getRenderer( sal_Int32 nRenderer, const css::uno::Any& aSelection, const css::uno::Sequence< css::beans::PropertyValue >& xOptions ) throw (css::lang::IllegalArgumentException, css::uno::RuntimeException);
411     virtual void SAL_CALL render( sal_Int32 nRenderer, const css::uno::Any& aSelection, const css::uno::Sequence< css::beans::PropertyValue >& xOptions ) throw (css::lang::IllegalArgumentException, css::uno::RuntimeException);
412 
413     // css::xforms::XFormsSupplier
414     virtual css::uno::Reference< css::container::XNameContainer > SAL_CALL getXForms(  ) throw (css::uno::RuntimeException);
415 
416     // css::document::XDocumentLanguages
417     virtual css::uno::Sequence< css::lang::Locale > SAL_CALL getDocumentLanguages( ::sal_Int16 nScriptTypes, ::sal_Int16 nCount ) throw (css::lang::IllegalArgumentException, css::uno::RuntimeException);
418 
419     // css::text::XFlatParagraphIteratorProvider:
420     virtual css::uno::Reference< css::text::XFlatParagraphIterator > SAL_CALL getFlatParagraphIterator(::sal_Int32 nTextMarkupType, sal_Bool bAutomatic ) throw (css::uno::RuntimeException);
421 
422     // ::com::sun::star::util::XCloneable
423     virtual ::com::sun::star::uno::Reference< ::com::sun::star::util::XCloneable > SAL_CALL createClone(  ) throw (::com::sun::star::uno::RuntimeException);
424 
425 
426     //
427     void                        Invalidate();
428     void                        Reactivate(SwDocShell* pNewDocShell);
429     SwXDocumentPropertyHelper * GetPropertyHelper ();
430     sal_Bool                    IsValid() const {return bObjectValid;}
431 
432     void                        InitNewDoc();
433 
434     SwUnoCrsr*                  CreateCursorForSearch(css::uno::Reference< css::text::XTextCursor > & xCrsr);
435     SwUnoCrsr*                  FindAny(const css::uno::Reference< css::util::XSearchDescriptor > & xDesc,
436                                             css::uno::Reference< css::text::XTextCursor > & xCrsr, sal_Bool bAll,
437                                             sal_Int32& nResult,
438                                             css::uno::Reference< css::uno::XInterface >  xLastResult);
439 
440     SwXDrawPage*                GetDrawPage();
441     SwDocShell*                 GetDocShell() {return pDocShell;}
442 
443     // #121125#, #122868# - clean up rendering data
444     void CleanUpRenderingData();
445 
446     void * SAL_CALL operator new( size_t ) throw();
447     void SAL_CALL operator delete( void * ) throw();
448 
449 };
450 /* -----------------25.10.99 11:02-------------------
451 
452  --------------------------------------------------*/
453 class SwXLinkTargetSupplier : public cppu::WeakImplHelper2
454 <
455     css::container::XNameAccess,
456     css::lang::XServiceInfo
457 >
458 {
459     SwXTextDocument* pxDoc;
460     String sTables;
461     String sFrames;
462     String sGraphics;
463     String sOLEs;
464     String sSections;
465     String sOutlines;
466     String sBookmarks;
467 
468 public:
469     SwXLinkTargetSupplier(SwXTextDocument& rxDoc);
470     ~SwXLinkTargetSupplier();
471 
472     //XNameAccess
473     virtual css::uno::Any SAL_CALL getByName(const rtl::OUString& Name)  throw( css::container::NoSuchElementException, css::lang::WrappedTargetException, css::uno::RuntimeException );
474     virtual css::uno::Sequence< rtl::OUString > SAL_CALL getElementNames(void) throw( css::uno::RuntimeException );
475     virtual sal_Bool SAL_CALL hasByName(const rtl::OUString& Name) throw( css::uno::RuntimeException );
476 
477     //XElementAccess
478     virtual css::uno::Type SAL_CALL getElementType(  ) throw(css::uno::RuntimeException);
479     virtual sal_Bool SAL_CALL hasElements(  ) throw(css::uno::RuntimeException);
480 
481     //XServiceInfo
482     virtual rtl::OUString SAL_CALL getImplementationName(void) throw( css::uno::RuntimeException );
483     virtual sal_Bool SAL_CALL supportsService(const rtl::OUString& ServiceName) throw( css::uno::RuntimeException );
484     virtual css::uno::Sequence< rtl::OUString > SAL_CALL getSupportedServiceNames(void) throw( css::uno::RuntimeException );
485 
486     //
487     void    Invalidate() {pxDoc = 0;}
488 };
489 /* -----------------26.10.99 09:05-------------------
490 
491  --------------------------------------------------*/
492 class SwXLinkNameAccessWrapper : public cppu::WeakImplHelper4
493 <
494     css::beans::XPropertySet,
495     css::container::XNameAccess,
496     css::lang::XServiceInfo,
497     css::document::XLinkTargetSupplier
498 >
499 {
500     css::uno::Reference< css::container::XNameAccess >    xRealAccess;
501     const SfxItemPropertySet*                                                       pPropSet;
502     const String                                                                    sLinkSuffix;
503     const String                                                                    sLinkDisplayName;
504     css::uno::Reference< css::text::XTextDocument >         xDoc;
505     SwXTextDocument*                                                                pxDoc;
506 
507 
508 public:
509     SwXLinkNameAccessWrapper(css::uno::Reference< css::container::XNameAccess >  xAccess,
510             const String& rLinkDisplayName, String sSuffix);
511     SwXLinkNameAccessWrapper(SwXTextDocument& rxDoc,
512             const String& rLinkDisplayName, String sSuffix);
513     ~SwXLinkNameAccessWrapper();
514 
515     //XNameAccess
516     virtual css::uno::Any SAL_CALL getByName(const rtl::OUString& Name)  throw( css::container::NoSuchElementException, css::lang::WrappedTargetException, css::uno::RuntimeException );
517     virtual css::uno::Sequence< rtl::OUString > SAL_CALL getElementNames(void) throw( css::uno::RuntimeException );
518     virtual sal_Bool SAL_CALL hasByName(const rtl::OUString& Name) throw( css::uno::RuntimeException );
519 
520     //XElementAccess
521     virtual css::uno::Type SAL_CALL getElementType(  ) throw(css::uno::RuntimeException);
522     virtual sal_Bool SAL_CALL hasElements(  ) throw(css::uno::RuntimeException);
523 
524     //XPropertySet
525     virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo(  ) throw(css::uno::RuntimeException);
526     virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, const css::uno::Any& aValue ) throw(css::beans::UnknownPropertyException, css::beans::PropertyVetoException, css::lang::IllegalArgumentException, css::lang::WrappedTargetException, css::uno::RuntimeException);
527     virtual css::uno::Any SAL_CALL getPropertyValue( const ::rtl::OUString& PropertyName ) throw(css::beans::UnknownPropertyException, css::lang::WrappedTargetException, css::uno::RuntimeException);
528     virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& xListener ) throw(css::beans::UnknownPropertyException, css::lang::WrappedTargetException, css::uno::RuntimeException);
529     virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& aListener ) throw(css::beans::UnknownPropertyException, css::lang::WrappedTargetException, css::uno::RuntimeException);
530     virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) throw(css::beans::UnknownPropertyException, css::lang::WrappedTargetException, css::uno::RuntimeException);
531     virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) throw(css::beans::UnknownPropertyException, css::lang::WrappedTargetException, css::uno::RuntimeException);
532 
533     //XLinkTargetSupplier
534     virtual css::uno::Reference< css::container::XNameAccess >  SAL_CALL getLinks(void) throw( css::uno::RuntimeException );
535 
536     //XServiceInfo
537     virtual rtl::OUString SAL_CALL getImplementationName(void) throw( css::uno::RuntimeException );
538     virtual sal_Bool SAL_CALL supportsService(const rtl::OUString& ServiceName) throw( css::uno::RuntimeException );
539     virtual css::uno::Sequence< rtl::OUString > SAL_CALL getSupportedServiceNames(void) throw( css::uno::RuntimeException );
540 
541 };
542 /* -----------------26.10.99 15:46-------------------
543 
544  --------------------------------------------------*/
545 class SwXOutlineTarget : public cppu::WeakImplHelper2
546 <
547     css::beans::XPropertySet,
548     css::lang::XServiceInfo
549 >
550 {
551     const SfxItemPropertySet*   pPropSet;
552     String                      sOutlineText;
553 
554 public:
555     SwXOutlineTarget(const String& rOutlineText);
556     ~SwXOutlineTarget();
557 
558     //XPropertySet
559     virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo(  ) throw(css::uno::RuntimeException);
560     virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, const css::uno::Any& aValue ) throw(css::beans::UnknownPropertyException, css::beans::PropertyVetoException, css::lang::IllegalArgumentException, css::lang::WrappedTargetException, css::uno::RuntimeException);
561     virtual css::uno::Any SAL_CALL getPropertyValue( const ::rtl::OUString& PropertyName ) throw(css::beans::UnknownPropertyException, css::lang::WrappedTargetException, css::uno::RuntimeException);
562     virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& xListener ) throw(css::beans::UnknownPropertyException, css::lang::WrappedTargetException, css::uno::RuntimeException);
563     virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& aListener ) throw(css::beans::UnknownPropertyException, css::lang::WrappedTargetException, css::uno::RuntimeException);
564     virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) throw(css::beans::UnknownPropertyException, css::lang::WrappedTargetException, css::uno::RuntimeException);
565     virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) throw(css::beans::UnknownPropertyException, css::lang::WrappedTargetException, css::uno::RuntimeException);
566 
567     //XServiceInfo
568     virtual rtl::OUString SAL_CALL getImplementationName(void) throw( css::uno::RuntimeException );
569     virtual sal_Bool SAL_CALL supportsService(const rtl::OUString& ServiceName) throw( css::uno::RuntimeException );
570     virtual css::uno::Sequence< rtl::OUString > SAL_CALL getSupportedServiceNames(void) throw( css::uno::RuntimeException );
571 };
572 #endif
573 
574 class SwXDocumentPropertyHelper : public SvxUnoForbiddenCharsTable
575 {
576     css::uno::Reference < css::uno::XInterface > xDashTable;
577     css::uno::Reference < css::uno::XInterface > xGradientTable;
578     css::uno::Reference < css::uno::XInterface > xHatchTable;
579     css::uno::Reference < css::uno::XInterface > xBitmapTable;
580     css::uno::Reference < css::uno::XInterface > xTransGradientTable;
581     css::uno::Reference < css::uno::XInterface > xMarkerTable;
582     css::uno::Reference < css::uno::XInterface > xDrawDefaults;
583 
584     SwDoc*  m_pDoc;
585 public:
586     SwXDocumentPropertyHelper(SwDoc& rDoc);
587     ~SwXDocumentPropertyHelper();
588     css::uno::Reference<css::uno::XInterface> GetDrawTable(short nWhich);
589     void Invalidate();
590 
591     virtual void onChange();
592 };
593 
594 
595 /*-- 06.01.2004 15:08:34---------------------------------------------------
596     The class SwViewOptionAdjust_Impl is used to adjust the SwViewOption of
597     the current ViewShell so that fields are not printed as commands and
598     hidden characters are always invisible. Hidden text and place holders
599     should be printed according to the current print options.
600     After printing the view options are restored
601   -----------------------------------------------------------------------*/
602 class SwViewOptionAdjust_Impl
603 {
604     ViewShell &    m_rShell;
605     SwViewOption    m_aOldViewOptions;
606 //    SwViewOption    m_aRenderViewOptions;   // view options to use when rendering for PDF export or printing
607 //    bool            m_bRestoreViewOptions;
608 
609 public:
610     SwViewOptionAdjust_Impl( ViewShell& rSh, const SwViewOption &rViewOptions );
611     ~SwViewOptionAdjust_Impl();
612     void AdjustViewOptions( SwPrintData const* const pPrtOptions );
613     bool checkShell( const ViewShell& rCompare ) const
614     { return &rCompare == &m_rShell; }
615 };
616 
617 
618