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>
68 static constexpr OUStringLiteral dialog =
u"dialog";
73 static constexpr OUStringLiteral dialogs =
u"dialogs";
78 static constexpr OUStringLiteral xdl =
u"xdl";
83 static constexpr OUStringLiteral
Dialogs =
u"Dialogs";
96 init( OUString(), xStorage );
106 (
const OUString& aName,
const OUString& aLibInfoFileURL,
107 const OUString& StorageURL,
bool ReadOnly )
133 xContext->getServiceManager() );
139 xWriter->setOutputStream( xOutput );
143 xSMgr->createInstanceWithArgumentsAndContext(
144 "com.sun.star.comp.Oasis2OOoTransformer",
148 xParser->setDocumentHandler( xHandler );
150 xml::sax::InputSource source;
151 source.aInputStream = xInput;
152 source.sSystemId =
"virtual file";
154 xParser->parseStream( source );
162 const OUString& aElementName,
166 Any aElement = xLib->getByName( aElementName );
174 bool bComplete =
false;
183 sal_Int32 nRead = xInput->readBytes(
bytes, xInput->available() );
187 xOutput->writeBytes(
bytes );
189 nRead = xInput->readBytes(
bytes, 1024 );
194 xInput->closeInput();
230 for (
const OUString& rName : sLibraries )
238 sal_Int32 nDialogs( sDialogs.getLength() );
239 for ( sal_Int32 j=0; j < nDialogs; ++j )
243 xLib->getByName( sDialogs[ j ] ) >>= xISP;
248 mxContext->getServiceManager()->createInstanceWithContext(
"com.sun.star.awt.UnoControlDialogModel",
mxContext),
251 std::vector<uno::Reference<graphic::XGraphic>> vxGraphicList;
253 if (!vxGraphicList.empty())
257 xGraphicStorageHandler.set(document::GraphicStorageHandler::createWithStorage(
mxContext, xStorage));
258 if (xGraphicStorageHandler.is())
262 xGraphicStorageHandler->saveGraphic(rxGraphic);
267 if (xDialogModelComp)
268 xDialogModelComp->dispose();
279 const OUString& ,
const OUString& aFile,
295 mxContext->getServiceManager()->createInstanceWithContext(
"com.sun.star.awt.UnoControlDialogModel",
mxContext),
297 if( !xDialogModel.is() )
299 OSL_FAIL(
"### couldn't create com.sun.star.awt.UnoControlDialogModel component" );
304 bool bStorage = xElementStream.is();
309 xInput = xElementStream;
315 xInput =
mxSFI->openFileRead( aFile );
328 source.aInputStream = xInput;
329 source.sSystemId = aFile;
334 xParser->parseStream( source );
338 OSL_FAIL(
"Parsing error" );
350 if (xDialogModelComp)
351 xDialogModelComp->dispose();
374 OUString aLibName = pDialogLibrary->
getName();
390 if ( !xLibrariesStor.is() )
391 throw uno::RuntimeException(
"null returned from openStorageElement",getXWeak());
395 if ( !xLibraryStor.is() )
396 throw uno::RuntimeException(
"null returned from openStorageElement",getXWeak());
398 catch(
const uno::Exception& )
403 mxContext->getServiceManager()->createInstanceWithContext(
"com.sun.star.resource.StringResourceWithStorage",
mxContext),
426 const OUString* pNames = aNames.getConstArray();
427 sal_Int32 nNameCount = aNames.getLength();
429 for( sal_Int32
i = 0 ;
i < nNameCount ;
i++ )
431 OUString
aName = pNames[
i ];
437 if( xStringResourcePersistence.is() )
443 if ( !xLibrariesStor.is() )
444 throw uno::RuntimeException(
"null returned from openStorageElement",getXWeak());
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());
452 xStringResourceWithStorage( xStringResourcePersistence, UNO_QUERY );
453 if( xStringResourceWithStorage.is() )
454 xStringResourceWithStorage->setStorage( xLibraryStor );
456 catch(
const uno::Exception& )
474 return "com.sun.star.comp.sfx2.DialogLibraryContainer";
479 return {
"com.sun.star.script.DocumentDialogLibraryContainer",
480 "com.sun.star.script.DialogLibraryContainer"};
491 , m_pParent( pParent )
499 const OUString& aLibInfoFileURL,
500 const OUString& aStorageURL,
502 SfxDialogLibraryContainer* pParent )
503 : SfxLibrary( _rModifiable,
cppu::
UnoType<XInputStreamProvider>::
get(),
504 xSFI, aLibInfoFileURL, aStorageURL,
ReadOnly)
505 , m_pParent( pParent )
532 (
const OUString& URL,
const OUString& NewName )
544 if( xStringResourceWithLocation.is() )
545 xStringResourceWithLocation->storeAsURL(
URL );
597extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
599 css::uno::Sequence<css::uno::Any>
const &)
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
virtual sal_Bool SAL_CALL HasExecutableCode(const OUString &) override
virtual OUString getOldInfoFileName() const override
virtual bool isLibraryElementValid(const css::uno::Any &rElement) const override
css::uno::Reference< css::resource::XStringResourcePersistence > implCreateStringResource(class SfxDialogLibrary *pDialog)
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
virtual OUString getLibrariesDir() const override
virtual rtl::Reference< SfxLibrary > implCreateLibrary(const OUString &aName) override
virtual OUString getLibElementFileExtension() const override
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
virtual void importFromOldStorage(const OUString &aFile) override
SfxDialogLibraryContainer()
virtual rtl::Reference< SfxLibraryContainer > createInstanceImpl() override
virtual void SAL_CALL storeLibrariesToStorage(const css::uno::Reference< css::embed::XStorage > &RootStorage) override
virtual css::uno::Any createEmptyLibraryElement() override
virtual void onNewRootStorage() override
virtual OUString SAL_CALL getImplementationName() override
virtual void writeLibraryElement(const css::uno::Reference< css::container::XNameContainer > &xLibrary, const OUString &aElementName, const css::uno::Reference< css::io::XOutputStream > &xOutput) override
virtual OUString getInfoFileName() const override
virtual bool isLibraryElementValid(const css::uno::Any &rElement) const override
virtual css::uno::Reference< css::resource::XStringResourceResolver > SAL_CALL getStringResource() override
css::uno::Reference< css::resource::XStringResourcePersistence > m_xStringResourcePersistence
SfxDialogLibraryContainer * m_pParent
const css::uno::Reference< css::resource::XStringResourcePersistence > & getStringResourcePersistence() const
virtual void storeResourcesAsURL(const OUString &URL, const OUString &NewName) override
virtual bool isModified() override
SfxDialogLibrary(ModifiableHelper &_rModifiable, OUString aName, const css::uno::Reference< css::ucb::XSimpleFileAccess3 > &xSFI, SfxDialogLibraryContainer *pParent)
virtual void storeResources() override
virtual void storeResourcesToURL(const OUString &URL, const css::uno::Reference< css::task::XInteractionHandler > &xHandler) override
const OUString & getName() const
static bool containsValidDialog(const css::uno::Any &aElement)
virtual void storeResourcesToStorage(const css::uno::Reference< css::embed::XStorage > &xStorage) override
OUString createAppLibraryFolder(SfxLibrary *pLib, std::u16string_view aName)
css::uno::Reference< css::uno::XComponentContext > mxContext
virtual css::uno::Any SAL_CALL getByName(const OUString &aName) override
void init(const OUString &rInitialDocumentURL, const css::uno::Reference< css::embed::XStorage > &_rxInitialStorage)
virtual void SAL_CALL loadLibrary(const OUString &Name) override
css::uno::Reference< css::ucb::XSimpleFileAccess3 > mxSFI
css::uno::Reference< css::embed::XStorage > mxStorage
ModifiableHelper maModifiable
virtual void SAL_CALL storeLibrariesToStorage(const css::uno::Reference< css::embed::XStorage > &RootStorage) override
SfxLibrary * getImplLib(const OUString &rLibraryName)
virtual css::uno::Sequence< OUString > SAL_CALL getElementNames() override
css::uno::WeakReference< css::frame::XModel > mxOwnerDocument
rtl::Reference< NameContainer > maNameContainer
bool implIsModified() const
#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 &)
#define ERRCODE_IO_GENERAL
Reference< XMultiServiceFactory > xSMgr
constexpr OUStringLiteral aResourceFileCommentBase
constexpr OUStringLiteral aResourceFileNameBase
static bool writeOasis2OOoLibraryElement(const Reference< XInputStream > &xInput, const Reference< XOutputStream > &xOutput)
IMPLEMENT_FORWARD_XTYPEPROVIDER2(SfxDialogLibrary, SfxLibrary, SfxDialogLibrary_BASE)
IMPLEMENT_FORWARD_XINTERFACE2(SfxDialogLibrary, SfxLibrary, SfxDialogLibrary_BASE)
Reference< XComponentContext > getProcessComponentContext()
css::uno::Reference< css::linguistic2::XProofreadingIterator > get(css::uno::Reference< css::uno::XComponentContext > const &context)
void SearchForGraphics(uno::Reference< uno::XInterface > const &xInterface, std::vector< uno::Reference< css::graphic::XGraphic > > &raGraphicList)
std::vector< sal_uInt8 > bytes
#define ERRCTX_SFX_LOADBASIC