LibreOffice Module basic (master) 1
dlgcont.cxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 */
19
20#include <com/sun/star/container/XNameContainer.hpp>
21#include <com/sun/star/xml/sax/Parser.hpp>
22#include <com/sun/star/xml/sax/InputSource.hpp>
23#include <com/sun/star/xml/sax/Writer.hpp>
24#include <com/sun/star/io/XOutputStream.hpp>
25#include <com/sun/star/io/XInputStream.hpp>
26#include <com/sun/star/io/XInputStreamProvider.hpp>
27#include <com/sun/star/embed/ElementModes.hpp>
28#include <com/sun/star/xml/sax/XDocumentHandler.hpp>
29#include <com/sun/star/resource/StringResourceWithStorage.hpp>
30#include <com/sun/star/resource/StringResourceWithLocation.hpp>
31#include <com/sun/star/document/GraphicStorageHandler.hpp>
32#include <com/sun/star/document/XGraphicStorageHandler.hpp>
33#include <dlgcont.hxx>
37#include <utility>
38#include <vcl/svapp.hxx>
39#include <vcl/settings.hxx>
41#include <sot/storage.hxx>
42#include <svtools/sfxecode.hxx>
43#include <svtools/ehdl.hxx>
44#include <vcl/GraphicObject.hxx>
46
47namespace basic
48{
49
50using namespace com::sun::star::document;
51using namespace com::sun::star::container;
52using namespace com::sun::star::io;
53using namespace com::sun::star::uno;
54using namespace com::sun::star::ucb;
55using namespace com::sun::star::lang;
56using namespace com::sun::star::script;
57using namespace com::sun::star::xml::sax;
58using namespace com::sun::star;
59using namespace cppu;
60
62
63
64// Implementation class SfxDialogLibraryContainer
65
67{
68 static constexpr OUStringLiteral dialog = u"dialog";
69 return dialog;
70}
72{
73 static constexpr OUStringLiteral dialogs = u"dialogs";
74 return dialogs;
75}
77{
78 static constexpr OUStringLiteral xdl = u"xdl";
79 return xdl;
80}
82{
83 static constexpr OUStringLiteral Dialogs = u"Dialogs";
84 return Dialogs;
85}
86
87// Ctor for service
89{
90 // all initialisation has to be done
91 // by calling XInitialization::initialize
92}
93
95{
96 init( OUString(), xStorage );
97}
98
99// Methods to get library instances of the correct type
101{
102 return new SfxDialogLibrary( maModifiable, aName, mxSFI, this );
103}
104
106 ( const OUString& aName, const OUString& aLibInfoFileURL,
107 const OUString& StorageURL, bool ReadOnly )
108{
109 return new SfxDialogLibrary
110 ( maModifiable, aName, mxSFI, aLibInfoFileURL, StorageURL, ReadOnly, this );
111}
112
114{
116 Any aRetAny;
117 aRetAny <<= xISP;
118 return aRetAny;
119}
120
122{
124}
125
127 const Reference< XInputStream >& xInput, const Reference< XOutputStream >& xOutput )
128{
131
133 xContext->getServiceManager() );
134
135 Reference< xml::sax::XParser > xParser = xml::sax::Parser::create(xContext);
136
137 Reference< xml::sax::XWriter > xWriter = xml::sax::Writer::create(xContext);
138
139 xWriter->setOutputStream( xOutput );
140
141 Sequence<Any> aArgs{ Any(xWriter) };
143 xSMgr->createInstanceWithArgumentsAndContext(
144 "com.sun.star.comp.Oasis2OOoTransformer",
145 aArgs, xContext ),
146 UNO_QUERY );
147
148 xParser->setDocumentHandler( xHandler );
149
150 xml::sax::InputSource source;
151 source.aInputStream = xInput;
152 source.sSystemId = "virtual file";
153
154 xParser->parseStream( source );
155
156 return true;
157}
158
160(
162 const OUString& aElementName,
163 const Reference< XOutputStream >& xOutput
164)
165{
166 Any aElement = xLib->getByName( aElementName );
168 aElement >>= xISP;
169 if( !xISP.is() )
170 return;
171
172 Reference< XInputStream > xInput( xISP->createInputStream() );
173
174 bool bComplete = false;
175 if ( mbOasis2OOoFormat )
176 {
177 bComplete = writeOasis2OOoLibraryElement( xInput, xOutput );
178 }
179
180 if ( !bComplete )
181 {
183 sal_Int32 nRead = xInput->readBytes( bytes, xInput->available() );
184 for (;;)
185 {
186 if( nRead )
187 xOutput->writeBytes( bytes );
188
189 nRead = xInput->readBytes( bytes, 1024 );
190 if (! nRead)
191 break;
192 }
193 }
194 xInput->closeInput();
195}
196
198{
199 LibraryContainerMethodGuard aGuard( *this );
200 mbOasis2OOoFormat = false;
201
202 if ( mxStorage.is() && xStorage.is() )
203 {
204 try
205 {
207 tools::Long nTarget = SotStorage::GetVersion( xStorage );
208
209 if ( nSource == SOFFICE_FILEFORMAT_CURRENT &&
210 nTarget != SOFFICE_FILEFORMAT_CURRENT )
211 {
212 mbOasis2OOoFormat = true;
213 }
214 }
215 catch (const Exception& )
216 {
217 TOOLS_WARN_EXCEPTION("basic", "");
218 // if we cannot get the version then the
219 // Oasis2OOoTransformer will not be used
220 assert(false);
221 }
222 }
223
225
226 // we need to export out any embedded image object(s)
227 // associated with any Dialogs. First, we need to actually gather any such urls
228 // for each dialog in this container
229 const Sequence< OUString > sLibraries = getElementNames();
230 for ( const OUString& rName : sLibraries )
231 {
232 loadLibrary( rName );
234 getByName( rName ) >>= xLib;
235 if ( xLib.is() )
236 {
237 Sequence< OUString > sDialogs = xLib->getElementNames();
238 sal_Int32 nDialogs( sDialogs.getLength() );
239 for ( sal_Int32 j=0; j < nDialogs; ++j )
240 {
241 // Each Dialog has an associated xISP
243 xLib->getByName( sDialogs[ j ] ) >>= xISP;
244 if ( xISP.is() )
245 {
246 Reference< io::XInputStream > xInput( xISP->createInputStream() );
247 Reference< XNameContainer > xDialogModel(
248 mxContext->getServiceManager()->createInstanceWithContext("com.sun.star.awt.UnoControlDialogModel", mxContext),
249 UNO_QUERY );
250 ::xmlscript::importDialogModel( xInput, xDialogModel, mxContext, mxOwnerDocument );
251 std::vector<uno::Reference<graphic::XGraphic>> vxGraphicList;
252 vcl::graphic::SearchForGraphics(Reference<XInterface>(xDialogModel, UNO_QUERY), vxGraphicList);
253 if (!vxGraphicList.empty())
254 {
255 // Export the images to the storage
256 Reference<document::XGraphicStorageHandler> xGraphicStorageHandler;
257 xGraphicStorageHandler.set(document::GraphicStorageHandler::createWithStorage(mxContext, xStorage));
258 if (xGraphicStorageHandler.is())
259 {
260 for (uno::Reference<graphic::XGraphic> const & rxGraphic : vxGraphicList)
261 {
262 xGraphicStorageHandler->saveGraphic(rxGraphic);
263 }
264 }
265 }
266 Reference< XComponent > xDialogModelComp(xDialogModel, UNO_QUERY);
267 if (xDialogModelComp)
268 xDialogModelComp->dispose();
269 }
270 }
271 }
272 }
273 mbOasis2OOoFormat = false;
274}
275
276
278 ( const Reference < XNameContainer >& /*xLib*/,
279 const OUString& /*aElementName */, const OUString& aFile,
280 const uno::Reference< io::XInputStream >& xElementStream )
281{
282 Any aRetAny;
283
284 // TODO: Member because later it will be a component
285 //Reference< XMultiServiceFactory > xMSF( comphelper::getProcessServiceFactory() );
286 //if( !xMSF.is() )
287 //{
288 // OSL_FAIL( "### couldn't get ProcessServiceFactory" );
289 // return aRetAny;
290 //}
291
292 Reference< XParser > xParser = xml::sax::Parser::create( mxContext );
293
294 Reference< XNameContainer > xDialogModel(
295 mxContext->getServiceManager()->createInstanceWithContext("com.sun.star.awt.UnoControlDialogModel", mxContext),
296 UNO_QUERY );
297 if( !xDialogModel.is() )
298 {
299 OSL_FAIL( "### couldn't create com.sun.star.awt.UnoControlDialogModel component" );
300 return aRetAny;
301 }
302
303 // Read from storage?
304 bool bStorage = xElementStream.is();
306
307 if( bStorage )
308 {
309 xInput = xElementStream;
310 }
311 else
312 {
313 try
314 {
315 xInput = mxSFI->openFileRead( aFile );
316 }
317 catch(const Exception& )
318 //catch( Exception& e )
319 {
320 // TODO:
321 //throw WrappedTargetException( e );
322 }
323 }
324 if( !xInput.is() )
325 return aRetAny;
326
327 InputSource source;
328 source.aInputStream = xInput;
329 source.sSystemId = aFile;
330
331 try {
332 // start parsing
333 xParser->setDocumentHandler( ::xmlscript::importDialogModel( xDialogModel, mxContext, mxOwnerDocument ) );
334 xParser->parseStream( source );
335 }
336 catch(const Exception& )
337 {
338 OSL_FAIL( "Parsing error" );
341 return aRetAny;
342 }
343
344 // Create InputStream, TODO: Implement own InputStreamProvider
345 // to avoid creating the DialogModel here!
346 Reference< XInputStreamProvider > xISP = ::xmlscript::exportDialogModel( xDialogModel, mxContext, mxOwnerDocument );
347 aRetAny <<= xISP;
348
349 Reference< XComponent > xDialogModelComp(xDialogModel, UNO_QUERY);
350 if (xDialogModelComp)
351 xDialogModelComp->dispose();
352
353 return aRetAny;
354}
355
357{
358 // Nothing to do here, old dialogs cannot be imported
359}
360
362{
363 return new SfxDialogLibraryContainer();
364}
365
366constexpr OUStringLiteral aResourceFileNameBase = u"DialogStrings";
367constexpr OUStringLiteral aResourceFileCommentBase = u"# Strings for Dialog Library ";
368
369// Resource handling
372{
374 OUString aLibName = pDialogLibrary->getName();
375 bool bReadOnly = pDialogLibrary->mbReadOnly;
376
377 // get ui locale
378 ::com::sun ::star::lang::Locale aLocale = Application::GetSettings().GetUILanguageTag().getLocale();
379
380 OUString aComment= aResourceFileCommentBase + aLibName;
381
382 bool bStorage = mxStorage.is();
383 if( bStorage )
384 {
387 try {
388 xLibrariesStor = mxStorage->openStorageElement( maLibrariesDir, embed::ElementModes::READ );
389 // TODO: Should be READWRITE with new storage concept using store() instead of storeTo()
390 if ( !xLibrariesStor.is() )
391 throw uno::RuntimeException("null returned from openStorageElement",getXWeak());
392
393 xLibraryStor = xLibrariesStor->openStorageElement( aLibName, embed::ElementModes::READ );
394 // TODO: Should be READWRITE with new storage concept using store() instead of storeTo()
395 if ( !xLibraryStor.is() )
396 throw uno::RuntimeException("null returned from openStorageElement",getXWeak());
397 }
398 catch(const uno::Exception& )
399 {
400 // Something went wrong while trying to get the storage library.
401 // Return an object that supports StringResourceWithStorage, give it a storage location later.
403 mxContext->getServiceManager()->createInstanceWithContext("com.sun.star.resource.StringResourceWithStorage", mxContext),
404 UNO_QUERY );
405 return xRet;
406 }
407
408 xRet = resource::StringResourceWithStorage::create(mxContext, xLibraryStor, bReadOnly, aLocale, aResourceFileNameBase, aComment);
409 }
410 else
411 {
412 OUString aLocation = createAppLibraryFolder( pDialogLibrary, aLibName );
413 // TODO: Real handler?
415
416 xRet = resource::StringResourceWithLocation::create(mxContext, aLocation, bReadOnly, aLocale, aResourceFileNameBase, aComment, xDummyHandler);
417 }
418
419 return xRet;
420}
421
423{
424 // the library container is not modified, go through the libraries and check whether they are modified
425 Sequence< OUString > aNames = maNameContainer->getElementNames();
426 const OUString* pNames = aNames.getConstArray();
427 sal_Int32 nNameCount = aNames.getLength();
428
429 for( sal_Int32 i = 0 ; i < nNameCount ; i++ )
430 {
431 OUString aName = pNames[ i ];
432 SfxDialogLibrary* pDialogLibrary = static_cast<SfxDialogLibrary*>( getImplLib( aName ) );
433
434 Reference< resource::XStringResourcePersistence > xStringResourcePersistence =
435 pDialogLibrary->getStringResourcePersistence();
436
437 if( xStringResourcePersistence.is() )
438 {
439 Reference< embed::XStorage > xLibrariesStor;
440 Reference< embed::XStorage > xLibraryStor;
441 try {
442 xLibrariesStor = mxStorage->openStorageElement( maLibrariesDir, embed::ElementModes::READWRITE );
443 if ( !xLibrariesStor.is() )
444 throw uno::RuntimeException("null returned from openStorageElement",getXWeak());
445
446 OUString aLibName = pDialogLibrary->getName();
447 xLibraryStor = xLibrariesStor->openStorageElement( aLibName, embed::ElementModes::READWRITE );
448 if ( !xLibraryStor.is() )
449 throw uno::RuntimeException("null returned from openStorageElement",getXWeak());
450
452 xStringResourceWithStorage( xStringResourcePersistence, UNO_QUERY );
453 if( xStringResourceWithStorage.is() )
454 xStringResourceWithStorage->setStorage( xLibraryStor );
455 }
456 catch(const uno::Exception& )
457 {
458 // TODO: Error handling?
459 }
460 }
461 }
462}
463
464sal_Bool SAL_CALL
466{
467 return false; // dialog library has no executable code
468}
469
470// Service
471
473{
474 return "com.sun.star.comp.sfx2.DialogLibraryContainer";
475}
476
478{
479 return {"com.sun.star.script.DocumentDialogLibraryContainer",
480 "com.sun.star.script.DialogLibraryContainer"}; // for compatibility
481}
482
483// Implementation class SfxDialogLibrary
484
485// Ctor
487 OUString aName,
490 : SfxLibrary( _rModifiable, cppu::UnoType<XInputStreamProvider>::get(), xSFI )
491 , m_pParent( pParent )
492 , m_aName(std::move( aName ))
493{
494}
495
496SfxDialogLibrary::SfxDialogLibrary( ModifiableHelper& _rModifiable,
497 OUString aName,
499 const OUString& aLibInfoFileURL,
500 const OUString& aStorageURL,
501 bool ReadOnly,
502 SfxDialogLibraryContainer* pParent )
503 : SfxLibrary( _rModifiable, cppu::UnoType<XInputStreamProvider>::get(),
504 xSFI, aLibInfoFileURL, aStorageURL, ReadOnly)
505 , m_pParent( pParent )
506 , m_aName(std::move( aName ))
507{
508}
509
512
513// Provide modify state including resources
515{
516 bool bRet = implIsModified();
517
518 if( !bRet && m_xStringResourcePersistence.is() )
519 bRet = m_xStringResourcePersistence->isModified();
520 // else: Resources not accessed so far -> not modified
521
522 return bRet;
523}
524
526{
529}
530
532 ( const OUString& URL, const OUString& NewName )
533{
534 OUString aComment(aResourceFileCommentBase);
535 m_aName = NewName;
536 aComment += m_aName;
537
539 {
540 m_xStringResourcePersistence->setComment( aComment );
541
543 xStringResourceWithLocation( m_xStringResourcePersistence, UNO_QUERY );
544 if( xStringResourceWithLocation.is() )
545 xStringResourceWithLocation->storeAsURL( URL );
546 }
547}
548
551{
552 OUString aComment = aResourceFileCommentBase + m_aName;
553
555 {
557 ( URL, aResourceFileNameBase, aComment, xHandler );
558 }
559}
560
561void SfxDialogLibrary::storeResourcesToStorage( const css::uno::Reference< css::embed::XStorage >& xStorage )
562{
563 OUString aComment = aResourceFileCommentBase + m_aName;
564
566 {
567 m_xStringResourcePersistence->storeToStorage
568 ( xStorage, aResourceFileNameBase, aComment );
569 }
570}
571
572
573// XStringResourceSupplier
576{
579
581}
582
583bool SfxDialogLibrary::containsValidDialog( const css::uno::Any& aElement )
584{
586 aElement >>= xISP;
587 return xISP.is();
588}
589
590bool SfxDialogLibrary::isLibraryElementValid(const css::uno::Any& rElement) const
591{
593}
594
595}
596
597extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
599 css::uno::Sequence<css::uno::Any> const &)
600{
601 return cppu::acquire(new basic::SfxDialogLibraryContainer());
602}
603
604
605/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
const LanguageTag & GetUILanguageTag() const
static const AllSettings & GetSettings()
static DialogMask HandleError(ErrCode nId, weld::Window *pParent=nullptr, DialogMask nMask=DialogMask::MAX)
const css::lang::Locale & getLocale(bool bResolveSystem=true) const
sal_Int32 GetVersion() const
virtual rtl::Reference< SfxLibrary > implCreateLibraryLink(const OUString &aName, const OUString &aLibInfoFileURL, const OUString &StorageURL, bool ReadOnly) override
Definition: dlgcont.cxx:106
virtual sal_Bool SAL_CALL HasExecutableCode(const OUString &) override
Definition: dlgcont.cxx:465
virtual OUString getOldInfoFileName() const override
Definition: dlgcont.cxx:71
virtual bool isLibraryElementValid(const css::uno::Any &rElement) const override
Definition: dlgcont.cxx:121
css::uno::Reference< css::resource::XStringResourcePersistence > implCreateStringResource(class SfxDialogLibrary *pDialog)
Definition: dlgcont.cxx:371
virtual css::uno::Any importLibraryElement(const css::uno::Reference< css::container::XNameContainer > &xLibrary, const OUString &aElementName, const OUString &aFile, const css::uno::Reference< css::io::XInputStream > &xElementStream) override
Definition: dlgcont.cxx:278
virtual OUString getLibrariesDir() const override
Definition: dlgcont.cxx:81
virtual rtl::Reference< SfxLibrary > implCreateLibrary(const OUString &aName) override
Definition: dlgcont.cxx:100
virtual OUString getLibElementFileExtension() const override
Definition: dlgcont.cxx:76
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
Definition: dlgcont.cxx:477
virtual void importFromOldStorage(const OUString &aFile) override
Definition: dlgcont.cxx:356
virtual rtl::Reference< SfxLibraryContainer > createInstanceImpl() override
Definition: dlgcont.cxx:361
virtual void SAL_CALL storeLibrariesToStorage(const css::uno::Reference< css::embed::XStorage > &RootStorage) override
Definition: dlgcont.cxx:197
virtual css::uno::Any createEmptyLibraryElement() override
Definition: dlgcont.cxx:113
virtual void onNewRootStorage() override
Definition: dlgcont.cxx:422
virtual OUString SAL_CALL getImplementationName() override
Definition: dlgcont.cxx:472
virtual void writeLibraryElement(const css::uno::Reference< css::container::XNameContainer > &xLibrary, const OUString &aElementName, const css::uno::Reference< css::io::XOutputStream > &xOutput) override
Definition: dlgcont.cxx:160
virtual OUString getInfoFileName() const override
Definition: dlgcont.cxx:66
virtual bool isLibraryElementValid(const css::uno::Any &rElement) const override
Definition: dlgcont.cxx:590
virtual css::uno::Reference< css::resource::XStringResourceResolver > SAL_CALL getStringResource() override
Definition: dlgcont.cxx:575
css::uno::Reference< css::resource::XStringResourcePersistence > m_xStringResourcePersistence
Definition: dlgcont.hxx:95
SfxDialogLibraryContainer * m_pParent
Definition: dlgcont.hxx:94
const css::uno::Reference< css::resource::XStringResourcePersistence > & getStringResourcePersistence() const
Definition: dlgcont.hxx:136
virtual void storeResourcesAsURL(const OUString &URL, const OUString &NewName) override
Definition: dlgcont.cxx:532
virtual bool isModified() override
Definition: dlgcont.cxx:514
SfxDialogLibrary(ModifiableHelper &_rModifiable, OUString aName, const css::uno::Reference< css::ucb::XSimpleFileAccess3 > &xSFI, SfxDialogLibraryContainer *pParent)
virtual void storeResources() override
Definition: dlgcont.cxx:525
virtual void storeResourcesToURL(const OUString &URL, const css::uno::Reference< css::task::XInteractionHandler > &xHandler) override
Definition: dlgcont.cxx:549
const OUString & getName() const
Definition: dlgcont.hxx:132
static bool containsValidDialog(const css::uno::Any &aElement)
Definition: dlgcont.cxx:583
virtual void storeResourcesToStorage(const css::uno::Reference< css::embed::XStorage > &xStorage) override
Definition: dlgcont.cxx:561
OUString createAppLibraryFolder(SfxLibrary *pLib, std::u16string_view aName)
Definition: namecont.cxx:1323
css::uno::Reference< css::uno::XComponentContext > mxContext
Definition: namecont.hxx:188
virtual css::uno::Any SAL_CALL getByName(const OUString &aName) override
Definition: namecont.cxx:2119
void init(const OUString &rInitialDocumentURL, const css::uno::Reference< css::embed::XStorage > &_rxInitialStorage)
Definition: namecont.cxx:576
virtual void SAL_CALL loadLibrary(const OUString &Name) override
Definition: namecont.cxx:2283
css::uno::Reference< css::ucb::XSimpleFileAccess3 > mxSFI
Definition: namecont.hxx:189
css::uno::Reference< css::embed::XStorage > mxStorage
Definition: namecont.hxx:206
ModifiableHelper maModifiable
Definition: namecont.hxx:193
virtual void SAL_CALL storeLibrariesToStorage(const css::uno::Reference< css::embed::XStorage > &RootStorage) override
Definition: namecont.cxx:431
SfxLibrary * getImplLib(const OUString &rLibraryName)
Definition: namecont.cxx:1283
virtual css::uno::Sequence< OUString > SAL_CALL getElementNames() override
Definition: namecont.cxx:2126
css::uno::WeakReference< css::frame::XModel > mxOwnerDocument
Definition: namecont.hxx:191
rtl::Reference< NameContainer > maNameContainer
Definition: namecont.hxx:195
bool implIsModified() const
Definition: namecont.hxx:520
#define TOOLS_WARN_EXCEPTION(area, stream)
SAL_DLLPUBLIC_EXPORT css::uno::XInterface * com_sun_star_comp_sfx2_DialogLibraryContainer_get_implementation(css::uno::XComponentContext *, css::uno::Sequence< css::uno::Any > const &)
Definition: dlgcont.cxx:598
float u
#define ERRCODE_IO_GENERAL
Reference< XMultiServiceFactory > xSMgr
#define SOFFICE_FILEFORMAT_CURRENT
bool bReadOnly
OUString aName
constexpr OUStringLiteral aResourceFileCommentBase
Definition: dlgcont.cxx:367
constexpr OUStringLiteral aResourceFileNameBase
Definition: dlgcont.cxx:366
static bool writeOasis2OOoLibraryElement(const Reference< XInputStream > &xInput, const Reference< XOutputStream > &xOutput)
Definition: dlgcont.cxx:126
IMPLEMENT_FORWARD_XTYPEPROVIDER2(SfxDialogLibrary, SfxLibrary, SfxDialogLibrary_BASE)
IMPLEMENT_FORWARD_XINTERFACE2(SfxDialogLibrary, SfxLibrary, SfxDialogLibrary_BASE)
@ Exception
Reference< XComponentContext > getProcessComponentContext()
int i
css::uno::Reference< css::linguistic2::XProofreadingIterator > get(css::uno::Reference< css::uno::XComponentContext > const &context)
long Long
void SearchForGraphics(uno::Reference< uno::XInterface > const &xInterface, std::vector< uno::Reference< css::graphic::XGraphic > > &raGraphicList)
std::vector< sal_uInt8 > bytes
OUString m_aName
#define ERRCTX_SFX_LOADBASIC
@ READ
Definition: token.hxx:80
unsigned char sal_Bool