LibreOffice Module basic (master) 1
namecont.hxx
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#pragma once
21
22#include <unordered_map>
23#include <com/sun/star/uno/XComponentContext.hpp>
24#include <com/sun/star/lang/XInitialization.hpp>
25#include <com/sun/star/script/XStorageBasedLibraryContainer.hpp>
26#include <com/sun/star/script/XLibraryContainerPassword.hpp>
27#include <com/sun/star/script/XLibraryContainerExport.hpp>
28#include <com/sun/star/script/XLibraryQueryExecutable.hpp>
29#include <com/sun/star/script/XLibraryContainer3.hpp>
30#include <com/sun/star/container/XNameContainer.hpp>
31#include <com/sun/star/container/XContainer.hpp>
32#include <com/sun/star/ucb/XSimpleFileAccess3.hpp>
33#include <com/sun/star/io/XOutputStream.hpp>
34#include <com/sun/star/io/XInputStream.hpp>
35#include <com/sun/star/util/XStringSubstitution.hpp>
36#include <com/sun/star/document/XStorageBasedDocument.hpp>
37#include <com/sun/star/lang/XServiceInfo.hpp>
38#include <com/sun/star/frame/XModel.hpp>
39#include <com/sun/star/deployment/XPackage.hpp>
40#include <com/sun/star/beans/XPropertySet.hpp>
41#include <com/sun/star/script/vba/XVBACompatibility.hpp>
42#include <com/sun/star/script/vba/XVBAScriptListener.hpp>
43#include <com/sun/star/util/XChangesNotifier.hpp>
44
45#include <osl/mutex.hxx>
52#include <rtl/ref.hxx>
55
56class BasicManager;
57
58namespace basic
59{
60typedef ::cppu::WeakImplHelper<
61 css::container::XNameContainer,
62 css::container::XContainer,
63 css::util::XChangesNotifier > NameContainer_BASE;
64
65
67{
68 typedef std::unordered_map < OUString, sal_Int32 > NameContainerNameMap;
69
71 std::vector< OUString > mNames;
72 std::vector< css::uno::Any > mValues;
73 sal_Int32 mnElementCount;
74
75 css::uno::Type mType;
76 css::uno::XInterface* mpxEventSource;
77
80
81public:
82 NameContainer( const css::uno::Type& rType )
83 : mnElementCount( 0 )
84 , mType( rType )
85 , mpxEventSource( nullptr )
88 {}
89
90 void setEventSource( css::uno::XInterface* pxEventSource )
91 { mpxEventSource = pxEventSource; }
92
97 void insertCheck(const OUString& aName, const css::uno::Any& aElement);
98
102 void insertNoCheck(const OUString& aName, const css::uno::Any& aElement);
103
104 // Methods XElementAccess
105 virtual css::uno::Type SAL_CALL getElementType( ) override;
106 virtual sal_Bool SAL_CALL hasElements( ) override;
107
108 // Methods XNameAccess
109 virtual css::uno::Any SAL_CALL getByName( const OUString& aName ) override;
110 virtual css::uno::Sequence< OUString > SAL_CALL getElementNames( ) override;
111 virtual sal_Bool SAL_CALL hasByName( const OUString& aName ) override;
112
113 // Methods XNameReplace
114 virtual void SAL_CALL replaceByName( const OUString& aName, const css::uno::Any& aElement ) override;
115
116 // Methods XNameContainer
117 virtual void SAL_CALL insertByName( const OUString& aName, const css::uno::Any& aElement ) override;
118 virtual void SAL_CALL removeByName( const OUString& Name ) override;
119
120 // Methods XContainer
121 virtual void SAL_CALL addContainerListener( const css::uno::Reference<css::container::XContainerListener >& xListener ) override;
122 virtual void SAL_CALL removeContainerListener( const css::uno::Reference<css::container::XContainerListener >& xListener ) override;
123
124 // Methods XChangesNotifier
125 virtual void SAL_CALL addChangesListener( const css::uno::Reference<css::util::XChangesListener >& xListener ) override;
126 virtual void SAL_CALL removeChangesListener( const css::uno::Reference<css::util::XChangesListener >& xListener ) override;
127};
128
129
131{
132private:
136
137public:
138 ModifiableHelper( ::cppu::OWeakObject& _rEventSource, ::osl::Mutex& _rMutex )
139 :m_aModifyListeners( _rMutex )
140 ,m_rEventSource( _rEventSource )
141 ,mbModified( false )
142 {
143 }
144
145 bool isModified() const { return mbModified; }
146 void setModified( bool _bModified );
147
148 void addModifyListener( const css::uno::Reference< css::util::XModifyListener >& _rxListener )
149 {
150 m_aModifyListeners.addInterface( _rxListener );
151 }
152
153 void removeModifyListener( const css::uno::Reference< css::util::XModifyListener >& _rxListener )
154 {
155 m_aModifyListeners.removeInterface( _rxListener );
156 }
157};
158
159
161 css::script::vba::XVBAScriptListener > VBAScriptListenerContainer;
162
163class SfxLibrary;
164
165typedef ::cppu::WeakComponentImplHelper<
166 css::lang::XInitialization,
167 css::script::XStorageBasedLibraryContainer,
168 css::script::XLibraryContainerPassword,
169 css::script::XLibraryContainerExport,
170 css::script::XLibraryContainer3,
171 css::container::XContainer,
172 css::script::XLibraryQueryExecutable,
173 css::script::vba::XVBACompatibility,
174 css::lang::XServiceInfo,
175 css::beans::XPropertySet> SfxLibraryContainer_BASE;
176
178 : public ::cppu::BaseMutex
181{
186 rtl_TextEncoding meVBATextEncoding;
187protected:
188 css::uno::Reference< css::uno::XComponentContext > mxContext;
189 css::uno::Reference< css::ucb::XSimpleFileAccess3 > mxSFI;
190 css::uno::Reference< css::util::XStringSubstitution > mxStringSubstitution;
191 css::uno::WeakReference< css::frame::XModel > mxOwnerDocument;
192
194
198
205
206 css::uno::Reference< css::embed::XStorage > mxStorage;
209
211 {
218
220 std::u16string_view rName,
221 const css::uno::Reference< css::embed::XStorage >& rStorage );
222
223 // New variant for library export
225 std::u16string_view rName,
226 const css::uno::Reference< css::embed::XStorage >& rStorage,
227 std::u16string_view rTargetURL,
228 const css::uno::Reference< css::ucb::XSimpleFileAccess3 >& rToUseSFI,
229 const css::uno::Reference< css::task::XInteractionHandler >& rHandler );
230
231 void implStoreLibraryIndexFile( SfxLibrary* pLib, const ::xmlscript::LibDescriptor& rLib,
232 const css::uno::Reference< css::embed::XStorage >& xStorage );
233
234 // New variant for library export
235 void implStoreLibraryIndexFile( SfxLibrary* pLib, const ::xmlscript::LibDescriptor& rLib,
236 const css::uno::Reference< css::embed::XStorage >& xStorage,
237 std::u16string_view aTargetURL,
238 const css::uno::Reference< css::ucb::XSimpleFileAccess3 >& rToUseSFI );
239
242 const css::uno::Reference< css::embed::XStorage >& xStorage,
243 const OUString& aIndexFileName );
244
246
247 // Methods to distinguish between different library types
248 virtual rtl::Reference<SfxLibrary> implCreateLibrary( const OUString& aName ) = 0;
250 ( const OUString& aName, const OUString& aLibInfoFileURL,
251 const OUString& StorageURL, bool ReadOnly ) = 0;
252 virtual css::uno::Any createEmptyLibraryElement() = 0;
253 virtual bool isLibraryElementValid(const css::uno::Any& rElement) const = 0;
256 (
257 const css::uno::Reference< css::container::XNameContainer>& xLibrary,
258 const OUString& aElementName,
259 const css::uno::Reference< css::io::XOutputStream >& xOutput
260 ) = 0;
261
262 virtual css::uno::Any importLibraryElement
263 (
264 const css::uno::Reference< css::container::XNameContainer>& xLibrary,
265 const OUString& aElementName,
266 const OUString& aFile,
267 const css::uno::Reference< css::io::XInputStream >& xElementStream ) = 0;
268 virtual void importFromOldStorage( const OUString& aFile ) = 0;
269
270 // Password encryption
271 virtual bool implStorePasswordLibrary( SfxLibrary* pLib, const OUString& aName,
272 const css::uno::Reference< css::embed::XStorage >& xStorage, const css::uno::Reference< css::task::XInteractionHandler >& Handler );
273
274 // New variant for library export
275 virtual bool implStorePasswordLibrary( SfxLibrary* pLib, const OUString& aName,
276 const css::uno::Reference< css::embed::XStorage >& rStorage,
277 const OUString& aTargetURL,
278 const css::uno::Reference< css::ucb::XSimpleFileAccess3 >& rToUseSFI, const css::uno::Reference< css::task::XInteractionHandler >& Handler );
279
282 virtual bool implLoadPasswordLibrary( SfxLibrary* pLib, const OUString& Name,
283 bool bVerifyPasswordOnly=false );
284
285 virtual void onNewRootStorage() = 0;
286
287
288 // #56666, Creates another library container
289 // instance of the same derived class
291
292
293 // Interface to get the BasicManager (Hack for password implementation)
295 OUString createAppLibraryFolder( SfxLibrary* pLib, std::u16string_view aName );
296
297 void init( const OUString& rInitialDocumentURL,
298 const css::uno::Reference< css::embed::XStorage >& _rxInitialStorage );
299
300 virtual OUString getInfoFileName() const = 0;
301 virtual OUString getOldInfoFileName() const = 0;
302 virtual OUString getLibElementFileExtension() const = 0;
303 virtual OUString getLibrariesDir() const = 0;
304
305 // Handle maLibInfoFileURL and maStorageURL correctly
306 void checkStorageURL
307 (
308 const OUString& aSourceURL,
309 OUString& aLibInfoFileURL,
310 OUString& aStorageURL,
311 OUString& aUnexpandedStorageURL
312 );
314 OUString expand_url( const OUString& url );
315
316 SfxLibrary* getImplLib( const OUString& rLibraryName );
317
319 const css::uno::Reference< css::embed::XStorage >& xStorage,
320 bool bComplete );
321
322 void initializeFromDocument( const css::uno::Reference< css::document::XStorageBasedDocument >& _rxDocument );
323
324 // OEventListenerAdapter
325 virtual void _disposing( const css::lang::EventObject& _rSource ) override;
326
327 // OComponentHelper
328 virtual void SAL_CALL disposing() override;
329
330private:
331 void init_Impl( const OUString& rInitialDocumentURL,
332 const css::uno::Reference< css::embed::XStorage >& _rxInitialStorage );
333 void implScanExtensions();
334 static constexpr OUStringLiteral sVBATextEncodingPropName = u"VBATextEncoding";
335
336public:
338 virtual ~SfxLibraryContainer() override;
339
340
341 // Interface to set the BasicManager (Hack for password implementation)
343 {
344 mpBasMgr = pBasMgr;
345 }
346
347 void enterMethod();
348 static void leaveMethod();
349
350 // Methods XElementAccess
351 virtual css::uno::Type SAL_CALL getElementType() override;
352 virtual sal_Bool SAL_CALL hasElements() override;
353
354 // Methods XNameAccess
355 virtual css::uno::Any SAL_CALL getByName( const OUString& aName ) override;
356 virtual css::uno::Sequence< OUString > SAL_CALL getElementNames() override;
357 virtual sal_Bool SAL_CALL hasByName( const OUString& aName ) override;
358
359 // Members XStorageBasedLibraryContainer
360 virtual css::uno::Reference< css::embed::XStorage > SAL_CALL getRootStorage() override;
361 virtual void SAL_CALL setRootStorage( const css::uno::Reference< css::embed::XStorage >& _rootstorage ) override;
362 virtual void SAL_CALL storeLibrariesToStorage( const css::uno::Reference< css::embed::XStorage >& RootStorage ) override;
363
364 // Methods XModifiable (base of XPersistentLibraryContainer)
365 virtual sal_Bool SAL_CALL isModified( ) override;
366 virtual void SAL_CALL setModified( sal_Bool bModified ) override;
367 virtual void SAL_CALL addModifyListener( const css::uno::Reference< css::util::XModifyListener >& aListener ) override;
368 virtual void SAL_CALL removeModifyListener( const css::uno::Reference< css::util::XModifyListener >& aListener ) override;
369
370 // Methods XPersistentLibraryContainer (base of XStorageBasedLibraryContainer)
371 virtual css::uno::Any SAL_CALL getRootLocation() override;
372 virtual OUString SAL_CALL getContainerLocationName() override;
373 virtual void SAL_CALL storeLibraries( ) override;
374
375 //Methods XLibraryContainer3
376 virtual OUString SAL_CALL getOriginalLibraryLinkURL( const OUString& Name ) override;
377
378 // Methods XLibraryContainer2 (base of XPersistentLibraryContainer)
379 virtual sal_Bool SAL_CALL isLibraryLink( const OUString& Name ) override;
380 virtual OUString SAL_CALL getLibraryLinkURL( const OUString& Name ) override;
381 virtual sal_Bool SAL_CALL isLibraryReadOnly( const OUString& Name ) override;
382 virtual void SAL_CALL setLibraryReadOnly( const OUString& Name, sal_Bool bReadOnly ) override;
383 virtual void SAL_CALL renameLibrary( const OUString& Name, const OUString& NewName ) override;
384
385 // Methods XLibraryContainer (base of XLibraryContainer2)
386 virtual css::uno::Reference< css::container::XNameContainer > SAL_CALL
387 createLibrary( const OUString& Name ) override;
388 virtual css::uno::Reference< css::container::XNameAccess > SAL_CALL createLibraryLink
389 ( const OUString& Name, const OUString& StorageURL, sal_Bool ReadOnly ) override;
390 virtual void SAL_CALL removeLibrary( const OUString& Name ) override;
391 virtual sal_Bool SAL_CALL isLibraryLoaded( const OUString& Name ) override;
392 virtual void SAL_CALL loadLibrary( const OUString& Name ) override;
393
394 // Methods XInitialization
395 virtual void SAL_CALL initialize( const css::uno::Sequence<
396 css::uno::Any >& aArguments ) override;
397
398 // Methods XLibraryContainerPassword
399 virtual sal_Bool SAL_CALL isLibraryPasswordProtected( const OUString& Name ) override;
400 virtual sal_Bool SAL_CALL isLibraryPasswordVerified( const OUString& Name ) override;
401 virtual sal_Bool SAL_CALL verifyLibraryPassword( const OUString& Name, const OUString& Password ) override;
402 virtual void SAL_CALL changeLibraryPassword( const OUString& Name,
403 const OUString& OldPassword, const OUString& NewPassword ) override;
404
405 // Methods XContainer
406 virtual void SAL_CALL addContainerListener( const css::uno::Reference<
407 css::container::XContainerListener >& xListener ) override;
408 virtual void SAL_CALL removeContainerListener( const css::uno::Reference<
409 css::container::XContainerListener >& xListener ) override;
410
411 // Methods XLibraryContainerExport
412 virtual void SAL_CALL exportLibrary( const OUString& Name, const OUString& URL,
413 const css::uno::Reference< css::task::XInteractionHandler >& Handler ) override;
414
415 // Methods XServiceInfo
416 virtual OUString SAL_CALL getImplementationName( ) override = 0;
417 virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override;
418 virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames( ) override = 0;
419 // Methods XVBACompatibility
420 virtual sal_Bool SAL_CALL getVBACompatibilityMode() override;
421 virtual void SAL_CALL setVBACompatibilityMode( sal_Bool _vbacompatmodeon ) override;
422 virtual OUString SAL_CALL getProjectName() override { return msProjectName; }
423 virtual void SAL_CALL setProjectName( const OUString& _projectname ) override;
424 virtual sal_Int32 SAL_CALL getRunningVBAScripts() override;
425 virtual void SAL_CALL addVBAScriptListener(
426 const css::uno::Reference< css::script::vba::XVBAScriptListener >& Listener ) override;
427 virtual void SAL_CALL removeVBAScriptListener(
428 const css::uno::Reference< css::script::vba::XVBAScriptListener >& Listener ) override;
429 virtual void SAL_CALL broadcastVBAScriptEvent( sal_Int32 nIdentifier, const OUString& rModuleName ) override;
430
431 // css::beans::XPropertySet
432 virtual css::uno::Reference<css::beans::XPropertySetInfo>
433 SAL_CALL getPropertySetInfo() override;
434 virtual void SAL_CALL setPropertyValue(const OUString& aPropertyName,
435 const css::uno::Any& aValue) override;
436 virtual css::uno::Any SAL_CALL getPropertyValue(const OUString& PropertyName) override;
437 virtual void SAL_CALL addPropertyChangeListener(
438 const OUString& aPropertyName,
439 const css::uno::Reference<css::beans::XPropertyChangeListener>& xListener) override;
440 virtual void SAL_CALL removePropertyChangeListener(
441 const OUString& aPropertyName,
442 const css::uno::Reference<css::beans::XPropertyChangeListener>& aListener) override;
443 virtual void SAL_CALL addVetoableChangeListener(
444 const OUString& PropertyName,
445 const css::uno::Reference<css::beans::XVetoableChangeListener>& aListener) override;
446 virtual void SAL_CALL removeVetoableChangeListener(
447 const OUString& PropertyName,
448 const css::uno::Reference<css::beans::XVetoableChangeListener>& aListener) override;
449
450};
451
452
454{
455public:
457 {
458 _rContainer.enterMethod();
459 }
460
462 {
464 }
465};
466
467
469 : public css::container::XNameContainer
470 , public css::container::XContainer
471 , public css::util::XChangesNotifier
473{
477
478 css::uno::Reference< css::ucb::XSimpleFileAccess3 > mxSFI;
479
482
486
487private:
488
491 OUString maStorageURL;
494
495 bool mbLink;
499
500protected:
502private:
505 OUString maPassword;
506
509
510 // Additional functionality for localisation
511 // Provide modify state including resources
512 virtual bool isModified() = 0;
513 virtual void storeResources() = 0;
514 virtual void storeResourcesAsURL( const OUString& URL, const OUString& NewName ) = 0;
515 virtual void storeResourcesToURL( const OUString& URL,
516 const css::uno::Reference< css::task::XInteractionHandler >& xHandler ) = 0;
517 virtual void storeResourcesToStorage( const css::uno::Reference< css::embed::XStorage >& xStorage ) = 0;
518
519protected:
520 bool implIsModified() const { return mbIsModified; }
521 void implSetModified( bool _bIsModified );
522
523private:
526 void impl_checkReadOnly();
530 void impl_checkLoaded();
531
532private:
533 void impl_removeWithoutChecks( const OUString& _rElementName );
534
535public:
537 ModifiableHelper& _rModifiable,
538 const css::uno::Type& aType,
539 const css::uno::Reference< css::ucb::XSimpleFileAccess3 >& xSFI
540 );
542 ModifiableHelper& _rModifiable,
543 const css::uno::Type& aType,
544 const css::uno::Reference< css::ucb::XSimpleFileAccess3 >& xSFI,
545 OUString aLibInfoFileURL,
546 OUString aStorageURL,
547 bool ReadOnly
548 );
549
550 // Methods XInterface
551 virtual css::uno::Any SAL_CALL queryInterface( const css::uno::Type& rType ) override;
552 virtual void SAL_CALL acquire() noexcept override { WeakComponentImplHelper::acquire(); }
553 virtual void SAL_CALL release() noexcept override { WeakComponentImplHelper::release(); }
554
555 // Methods XElementAccess
556 virtual css::uno::Type SAL_CALL getElementType( ) override;
557 virtual sal_Bool SAL_CALL hasElements( ) override;
558
559 // Methods XNameAccess
560 virtual css::uno::Any SAL_CALL getByName( const OUString& aName ) override;
561 virtual css::uno::Sequence< OUString > SAL_CALL getElementNames( ) override;
562 virtual sal_Bool SAL_CALL hasByName( const OUString& aName ) override;
563
564 // Methods XNameReplace
565 virtual void SAL_CALL replaceByName( const OUString& aName, const css::uno::Any& aElement ) override;
566
567 // Methods XNameContainer
568 virtual void SAL_CALL insertByName( const OUString& aName, const css::uno::Any& aElement ) override;
569 virtual void SAL_CALL removeByName( const OUString& Name ) override;
570
571 // XTypeProvider
572 css::uno::Sequence< css::uno::Type > SAL_CALL getTypes( ) override;
573 css::uno::Sequence<sal_Int8> SAL_CALL getImplementationId( ) override;
574
575 // Methods XContainer
576 virtual void SAL_CALL addContainerListener( const css::uno::Reference<
577 css::container::XContainerListener >& xListener ) override;
578 virtual void SAL_CALL removeContainerListener( const css::uno::Reference<
579 css::container::XContainerListener >& xListener ) override;
580
581 // Methods XChangesNotifier
582 virtual void SAL_CALL addChangesListener( const css::uno::Reference<
583 css::util::XChangesListener >& xListener ) override;
584 virtual void SAL_CALL removeChangesListener( const css::uno::Reference<
585 css::util::XChangesListener >& xListener ) override;
586
587public:
589 void removeElementWithoutChecks( const OUString& _rElementName, LibraryContainerAccess )
590 {
591 impl_removeWithoutChecks( _rElementName );
592 }
593
594protected:
595 virtual bool isLoadedStorable();
596
597 virtual bool isLibraryElementValid(const css::uno::Any& rElement) const = 0;
598};
599
600
602{
603 css::uno::Reference< css::deployment::XPackage > m_xMainPackage;
604
607
608 css::uno::Sequence< css::uno::Reference< css::deployment::XPackage > > m_aSubPkgSeq;
609 sal_Int32 m_nSubPkgCount;
610 sal_Int32 m_iNextSubPkg;
611
612 static css::uno::Reference< css::deployment::XPackage >
613 implDetectScriptPackage( const css::uno::Reference
614 < css::deployment::XPackage >& rPackage, bool& rbPureDialogLib );
615
616public:
617 ScriptSubPackageIterator( css::uno::Reference< css::deployment::XPackage > const & xMainPackage );
618
619 css::uno::Reference< css::deployment::XPackage > getNextScriptSubPackage( bool& rbPureDialogLib );
620};
621
622
624{
625public:
627 OUString nextBasicOrDialogLibrary( bool& rbPureDialogLib );
628
629private:
630 css::uno::Reference< css::deployment::XPackage >
631 implGetNextUserScriptPackage( bool& rbPureDialogLib );
632 css::uno::Reference< css::deployment::XPackage >
633 implGetNextSharedScriptPackage( bool& rbPureDialogLib );
634 css::uno::Reference< css::deployment::XPackage >
635 implGetNextBundledScriptPackage( bool& rbPureDialogLib );
636
637 css::uno::Reference< css::uno::XComponentContext > m_xContext;
638
640 {
646
647 css::uno::Sequence< css::uno::Reference< css::deployment::XPackage > > m_aUserPackagesSeq;
649
650 css::uno::Sequence< css::uno::Reference< css::deployment::XPackage > > m_aSharedPackagesSeq;
652
653 css::uno::Sequence< css::uno::Reference< css::deployment::XPackage > > m_aBundledPackagesSeq;
655
659
661
662}; // end class ScriptExtensionIterator
663
664
665} // namespace basic
666
667/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
LibraryContainerMethodGuard(SfxLibraryContainer &_rContainer)
Definition: namecont.hxx:456
void setModified(bool _bModified)
Definition: namecont.cxx:327
::comphelper::OInterfaceContainerHelper3< css::util::XModifyListener > m_aModifyListeners
Definition: namecont.hxx:133
void addModifyListener(const css::uno::Reference< css::util::XModifyListener > &_rxListener)
Definition: namecont.hxx:148
bool isModified() const
Definition: namecont.hxx:145
::cppu::OWeakObject & m_rEventSource
Definition: namecont.hxx:134
ModifiableHelper(::cppu::OWeakObject &_rEventSource, ::osl::Mutex &_rMutex)
Definition: namecont.hxx:138
void removeModifyListener(const css::uno::Reference< css::util::XModifyListener > &_rxListener)
Definition: namecont.hxx:153
virtual sal_Bool SAL_CALL hasByName(const OUString &aName) override
Definition: namecont.cxx:133
css::uno::XInterface * mpxEventSource
Definition: namecont.hxx:76
void insertCheck(const OUString &aName, const css::uno::Any &aElement)
Definition: namecont.cxx:183
virtual void SAL_CALL replaceByName(const OUString &aName, const css::uno::Any &aElement) override
NameContainer(const css::uno::Type &rType)
Definition: namecont.hxx:82
std::vector< css::uno::Any > mValues
Definition: namecont.hxx:72
virtual void SAL_CALL addContainerListener(const css::uno::Reference< css::container::XContainerListener > &xListener) override
Definition: namecont.cxx:287
css::uno::Type mType
Definition: namecont.hxx:75
sal_Int32 mnElementCount
Definition: namecont.hxx:73
NameContainerNameMap mHashMap
Definition: namecont.hxx:70
::comphelper::OInterfaceContainerHelper3< css::container::XContainerListener > maContainerListeners
Definition: namecont.hxx:78
virtual void SAL_CALL insertByName(const OUString &aName, const css::uno::Any &aElement) override
virtual void SAL_CALL addChangesListener(const css::uno::Reference< css::util::XChangesListener > &xListener) override
Definition: namecont.cxx:306
virtual sal_Bool SAL_CALL hasElements() override
Definition: namecont.cxx:109
virtual css::uno::Sequence< OUString > SAL_CALL getElementNames() override
Definition: namecont.cxx:128
::comphelper::OInterfaceContainerHelper3< css::util::XChangesListener > maChangesListeners
Definition: namecont.hxx:79
virtual void SAL_CALL removeChangesListener(const css::uno::Reference< css::util::XChangesListener > &xListener) override
Definition: namecont.cxx:315
std::unordered_map< OUString, sal_Int32 > NameContainerNameMap
Definition: namecont.hxx:68
virtual css::uno::Any SAL_CALL getByName(const OUString &aName) override
Definition: namecont.cxx:116
virtual void SAL_CALL removeByName(const OUString &Name) override
Definition: namecont.cxx:237
virtual void SAL_CALL removeContainerListener(const css::uno::Reference< css::container::XContainerListener > &xListener) override
Definition: namecont.cxx:296
void insertNoCheck(const OUString &aName, const css::uno::Any &aElement)
Definition: namecont.cxx:193
void setEventSource(css::uno::XInterface *pxEventSource)
Definition: namecont.hxx:90
virtual css::uno::Type SAL_CALL getElementType() override
Definition: namecont.cxx:104
std::vector< OUString > mNames
Definition: namecont.hxx:71
css::uno::Reference< css::deployment::XPackage > implGetNextBundledScriptPackage(bool &rbPureDialogLib)
Definition: namecont.cxx:3448
ScriptSubPackageIterator * m_pScriptSubPackageIterator
Definition: namecont.hxx:660
css::uno::Sequence< css::uno::Reference< css::deployment::XPackage > > m_aSharedPackagesSeq
Definition: namecont.hxx:650
OUString nextBasicOrDialogLibrary(bool &rbPureDialogLib)
Definition: namecont.cxx:3199
css::uno::Sequence< css::uno::Reference< css::deployment::XPackage > > m_aBundledPackagesSeq
Definition: namecont.hxx:653
css::uno::Reference< css::uno::XComponentContext > m_xContext
Definition: namecont.hxx:637
enum basic::ScriptExtensionIterator::IteratorState m_eState
css::uno::Reference< css::deployment::XPackage > implGetNextSharedScriptPackage(bool &rbPureDialogLib)
Definition: namecont.cxx:3397
css::uno::Sequence< css::uno::Reference< css::deployment::XPackage > > m_aUserPackagesSeq
Definition: namecont.hxx:647
css::uno::Reference< css::deployment::XPackage > implGetNextUserScriptPackage(bool &rbPureDialogLib)
Definition: namecont.cxx:3345
static css::uno::Reference< css::deployment::XPackage > implDetectScriptPackage(const css::uno::Reference< css::deployment::XPackage > &rPackage, bool &rbPureDialogLib)
Definition: namecont.cxx:3322
css::uno::Reference< css::deployment::XPackage > getNextScriptSubPackage(bool &rbPureDialogLib)
Definition: namecont.cxx:3289
css::uno::Sequence< css::uno::Reference< css::deployment::XPackage > > m_aSubPkgSeq
Definition: namecont.hxx:608
ScriptSubPackageIterator(css::uno::Reference< css::deployment::XPackage > const &xMainPackage)
Definition: namecont.cxx:3253
css::uno::Reference< css::deployment::XPackage > m_xMainPackage
Definition: namecont.hxx:603
virtual void SAL_CALL setVBACompatibilityMode(sal_Bool _vbacompatmodeon) override
Definition: namecont.cxx:2794
virtual sal_Bool SAL_CALL isLibraryPasswordProtected(const OUString &Name) override
Definition: namecont.cxx:2685
virtual void writeLibraryElement(const css::uno::Reference< css::container::XNameContainer > &xLibrary, const OUString &aElementName, const css::uno::Reference< css::io::XOutputStream > &xOutput)=0
virtual css::uno::Any createEmptyLibraryElement()=0
virtual void SAL_CALL removeVetoableChangeListener(const OUString &PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener > &aListener) override
Definition: namecont.cxx:2921
rtl_TextEncoding meVBATextEncoding
Definition: namecont.hxx:186
virtual bool implStorePasswordLibrary(SfxLibrary *pLib, const OUString &aName, const css::uno::Reference< css::embed::XStorage > &xStorage, const css::uno::Reference< css::task::XInteractionHandler > &Handler)
enum basic::SfxLibraryContainer::InitMode meInitMode
bool implLoadLibraryIndexFile(SfxLibrary *pLib, ::xmlscript::LibDescriptor &rLib, const css::uno::Reference< css::embed::XStorage > &xStorage, const OUString &aIndexFileName)
Definition: namecont.cxx:1610
virtual rtl::Reference< SfxLibraryContainer > createInstanceImpl()=0
virtual css::uno::Reference< css::container::XNameContainer > SAL_CALL createLibrary(const OUString &Name) override
Definition: namecont.cxx:2139
virtual OUString SAL_CALL getProjectName() override
Definition: namecont.hxx:422
virtual sal_Bool SAL_CALL isLibraryLink(const OUString &Name) override
Definition: namecont.cxx:2422
void implStoreLibraryIndexFile(SfxLibrary *pLib, const ::xmlscript::LibDescriptor &rLib, const css::uno::Reference< css::embed::XStorage > &xStorage, std::u16string_view aTargetURL, const css::uno::Reference< css::ucb::XSimpleFileAccess3 > &rToUseSFI)
virtual void SAL_CALL removeLibrary(const OUString &Name) override
Definition: namecont.cxx:2204
virtual sal_Bool SAL_CALL verifyLibraryPassword(const OUString &Name, const OUString &Password) override
Definition: namecont.cxx:2695
OUString maLibElementFileExtension
Definition: namecont.hxx:202
static void leaveMethod()
Definition: namecont.cxx:383
virtual void SAL_CALL initialize(const css::uno::Sequence< css::uno::Any > &aArguments) override
Definition: namecont.cxx:2610
void implImportLibDescriptor(SfxLibrary *pLib, ::xmlscript::LibDescriptor const &rLib)
Definition: namecont.cxx:1706
virtual css::uno::Type SAL_CALL getElementType() override
Definition: namecont.cxx:2105
virtual sal_Bool SAL_CALL isModified() override
Definition: namecont.cxx:451
OUString createAppLibraryFolder(SfxLibrary *pLib, std::u16string_view aName)
Definition: namecont.cxx:1323
virtual void SAL_CALL setLibraryReadOnly(const OUString &Name, sal_Bool bReadOnly) override
Definition: namecont.cxx:2451
virtual css::uno::Any SAL_CALL getRootLocation() override
Definition: namecont.cxx:512
virtual sal_Int32 SAL_CALL getRunningVBAScripts() override
Definition: namecont.cxx:2846
virtual bool implLoadPasswordLibrary(SfxLibrary *pLib, const OUString &Name, bool bVerifyPasswordOnly=false)
Definition: namecont.cxx:1315
virtual void SAL_CALL exportLibrary(const OUString &Name, const OUString &URL, const css::uno::Reference< css::task::XInteractionHandler > &Handler) override
Definition: namecont.cxx:2720
virtual void importFromOldStorage(const OUString &aFile)=0
virtual OUString getInfoFileName() const =0
OUString expand_url(const OUString &url)
Definition: namecont.cxx:2756
virtual ~SfxLibraryContainer() override
Definition: namecont.cxx:366
virtual void SAL_CALL setRootStorage(const css::uno::Reference< css::embed::XStorage > &_rootstorage) override
Definition: namecont.cxx:420
css::uno::Reference< css::uno::XComponentContext > mxContext
Definition: namecont.hxx:188
virtual void SAL_CALL addVBAScriptListener(const css::uno::Reference< css::script::vba::XVBAScriptListener > &Listener) override
Definition: namecont.cxx:2852
virtual OUString SAL_CALL getContainerLocationName() override
Definition: namecont.cxx:518
virtual void SAL_CALL changeLibraryPassword(const OUString &Name, const OUString &OldPassword, const OUString &NewPassword) override
Definition: namecont.cxx:2700
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)=0
virtual void SAL_CALL disposing() override
Definition: namecont.cxx:2675
virtual void SAL_CALL addVetoableChangeListener(const OUString &PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener > &aListener) override
Definition: namecont.cxx:2915
virtual void SAL_CALL renameLibrary(const OUString &Name, const OUString &NewName) override
Definition: namecont.cxx:2474
virtual bool implStorePasswordLibrary(SfxLibrary *pLib, const OUString &aName, const css::uno::Reference< css::embed::XStorage > &rStorage, const OUString &aTargetURL, const css::uno::Reference< css::ucb::XSimpleFileAccess3 > &rToUseSFI, const css::uno::Reference< css::task::XInteractionHandler > &Handler)
virtual void SAL_CALL removeVBAScriptListener(const css::uno::Reference< css::script::vba::XVBAScriptListener > &Listener) override
Definition: namecont.cxx:2857
virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() override
Definition: namecont.cxx:2883
virtual void SAL_CALL removeModifyListener(const css::uno::Reference< css::util::XModifyListener > &aListener) override
Definition: namecont.cxx:505
void implStoreLibrary(SfxLibrary *pLib, std::u16string_view rName, const css::uno::Reference< css::embed::XStorage > &rStorage, std::u16string_view rTargetURL, const css::uno::Reference< css::ucb::XSimpleFileAccess3 > &rToUseSFI, const css::uno::Reference< css::task::XInteractionHandler > &rHandler)
virtual sal_Bool SAL_CALL hasElements() override
Definition: namecont.cxx:2111
virtual OUString getLibrariesDir() const =0
virtual bool isLibraryElementValid(const css::uno::Any &rElement) const =0
void init_Impl(const OUString &rInitialDocumentURL, const css::uno::Reference< css::embed::XStorage > &_rxInitialStorage)
Definition: namecont.cxx:586
virtual void SAL_CALL removePropertyChangeListener(const OUString &aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener > &aListener) override
Definition: namecont.cxx:2909
virtual sal_Bool SAL_CALL supportsService(const OUString &ServiceName) override
Definition: namecont.cxx:2928
virtual void onNewRootStorage()=0
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
void implStoreLibraryIndexFile(SfxLibrary *pLib, const ::xmlscript::LibDescriptor &rLib, const css::uno::Reference< css::embed::XStorage > &xStorage)
static constexpr OUStringLiteral sVBATextEncodingPropName
Definition: namecont.hxx:334
css::uno::Reference< css::ucb::XSimpleFileAccess3 > mxSFI
Definition: namecont.hxx:189
css::uno::Reference< css::embed::XStorage > mxStorage
Definition: namecont.hxx:206
virtual sal_Bool SAL_CALL getVBACompatibilityMode() override
Definition: namecont.cxx:2789
void implStoreLibrary(SfxLibrary *pLib, std::u16string_view rName, const css::uno::Reference< css::embed::XStorage > &rStorage)
virtual void SAL_CALL setProjectName(const OUString &_projectname) override
Definition: namecont.cxx:2832
virtual OUString SAL_CALL getOriginalLibraryLinkURL(const OUString &Name) override
Definition: namecont.cxx:2774
virtual sal_Bool SAL_CALL isLibraryReadOnly(const OUString &Name) override
Definition: namecont.cxx:2443
virtual void SAL_CALL setModified(sal_Bool bModified) override
Definition: namecont.cxx:493
VBAScriptListenerContainer maVBAScriptListeners
Definition: namecont.hxx:182
ModifiableHelper maModifiable
Definition: namecont.hxx:193
virtual sal_Bool SAL_CALL hasByName(const OUString &aName) override
Definition: namecont.cxx:2132
virtual void SAL_CALL broadcastVBAScriptEvent(sal_Int32 nIdentifier, const OUString &rModuleName) override
Definition: namecont.cxx:2862
virtual rtl::Reference< SfxLibrary > implCreateLibrary(const OUString &aName)=0
virtual sal_Bool SAL_CALL isLibraryPasswordVerified(const OUString &Name) override
Definition: namecont.cxx:2690
virtual void SAL_CALL addPropertyChangeListener(const OUString &aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener > &xListener) override
Definition: namecont.cxx:2903
void initializeFromDocument(const css::uno::Reference< css::document::XStorageBasedDocument > &_rxDocument)
Definition: namecont.cxx:2634
virtual void SAL_CALL removeContainerListener(const css::uno::Reference< css::container::XContainerListener > &xListener) override
Definition: namecont.cxx:2713
BasicManager * getBasicManager()
Definition: namecont.cxx:388
void storeLibraries_Impl(const css::uno::Reference< css::embed::XStorage > &xStorage, bool bComplete)
Definition: namecont.cxx:1728
void checkStorageURL(const OUString &aSourceURL, OUString &aLibInfoFileURL, OUString &aStorageURL, OUString &aUnexpandedStorageURL)
Definition: namecont.cxx:1255
virtual void SAL_CALL storeLibrariesToStorage(const css::uno::Reference< css::embed::XStorage > &RootStorage) override
Definition: namecont.cxx:431
css::uno::Reference< css::util::XStringSubstitution > mxStringSubstitution
Definition: namecont.hxx:190
virtual OUString SAL_CALL getImplementationName() override=0
virtual OUString getOldInfoFileName() const =0
BasicManager * mpBasMgr
Definition: namecont.hxx:207
virtual void SAL_CALL addContainerListener(const css::uno::Reference< css::container::XContainerListener > &xListener) override
Definition: namecont.cxx:2706
virtual OUString getLibElementFileExtension() const =0
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override=0
SfxLibrary * getImplLib(const OUString &rLibraryName)
Definition: namecont.cxx:1283
virtual rtl::Reference< SfxLibrary > implCreateLibraryLink(const OUString &aName, const OUString &aLibInfoFileURL, const OUString &StorageURL, bool ReadOnly)=0
virtual void SAL_CALL storeLibraries() override
Definition: namecont.cxx:524
virtual css::uno::Reference< css::container::XNameAccess > SAL_CALL createLibraryLink(const OUString &Name, const OUString &StorageURL, sal_Bool ReadOnly) override
Definition: namecont.cxx:2160
virtual void SAL_CALL addModifyListener(const css::uno::Reference< css::util::XModifyListener > &aListener) override
Definition: namecont.cxx:499
virtual css::uno::Sequence< OUString > SAL_CALL getElementNames() override
Definition: namecont.cxx:2126
void setBasicManager(BasicManager *pBasMgr)
Definition: namecont.hxx:342
virtual void _disposing(const css::lang::EventObject &_rSource) override
Definition: namecont.cxx:2661
virtual void SAL_CALL setPropertyValue(const OUString &aPropertyName, const css::uno::Any &aValue) override
Definition: namecont.cxx:2888
css::uno::WeakReference< css::frame::XModel > mxOwnerDocument
Definition: namecont.hxx:191
virtual css::uno::Reference< css::embed::XStorage > SAL_CALL getRootStorage() override
Definition: namecont.cxx:414
virtual sal_Bool SAL_CALL isLibraryLoaded(const OUString &Name) override
Definition: namecont.cxx:2274
virtual css::uno::Any SAL_CALL getPropertyValue(const OUString &PropertyName) override
Definition: namecont.cxx:2896
rtl::Reference< NameContainer > maNameContainer
Definition: namecont.hxx:195
virtual OUString SAL_CALL getLibraryLinkURL(const OUString &Name) override
Definition: namecont.cxx:2430
virtual void SAL_CALL replaceByName(const OUString &aName, const css::uno::Any &aElement) override
Definition: namecont.cxx:3075
virtual void SAL_CALL removeByName(const OUString &Name) override
Definition: namecont.cxx:3132
void impl_checkReadOnly()
checks whether the lib is readonly, or a readonly link, throws an IllegalArgumentException if so
Definition: namecont.cxx:3047
virtual sal_Bool SAL_CALL hasElements() override
Definition: namecont.cxx:3021
virtual void storeResourcesToStorage(const css::uno::Reference< css::embed::XStorage > &xStorage)=0
bool implIsModified() const
Definition: namecont.hxx:520
OUString maLibInfoFileURL
Definition: namecont.hxx:490
virtual void SAL_CALL removeContainerListener(const css::uno::Reference< css::container::XContainerListener > &xListener) override
Definition: namecont.cxx:3164
virtual void SAL_CALL removeChangesListener(const css::uno::Reference< css::util::XChangesListener > &xListener) override
Definition: namecont.cxx:3176
virtual bool isLoadedStorable()
Definition: namecont.cxx:2979
void impl_checkLoaded()
checks whether the library is loaded, throws a LibraryNotLoadedException (wrapped in a WrappedTargetE...
Definition: namecont.cxx:3059
virtual bool isModified()=0
virtual void SAL_CALL acquire() noexcept override
Definition: namecont.hxx:552
virtual css::uno::Any SAL_CALL queryInterface(const css::uno::Type &rType) override
Definition: namecont.cxx:2998
virtual void storeResourcesToURL(const OUString &URL, const css::uno::Reference< css::task::XInteractionHandler > &xHandler)=0
virtual void SAL_CALL release() noexcept override
Definition: namecont.hxx:553
rtl::Reference< NameContainer > maNameContainer
Definition: namecont.hxx:481
virtual void SAL_CALL addContainerListener(const css::uno::Reference< css::container::XContainerListener > &xListener) override
Definition: namecont.cxx:3158
OUString maPassword
Definition: namecont.hxx:505
virtual css::uno::Type SAL_CALL getElementType() override
Definition: namecont.cxx:3016
OUString maOriginalStorageURL
Definition: namecont.hxx:493
bool mbPasswordProtected
Definition: namecont.hxx:501
virtual void SAL_CALL insertByName(const OUString &aName, const css::uno::Any &aElement) override
Definition: namecont.cxx:3090
OUString maStorageURL
Definition: namecont.hxx:491
virtual css::uno::Any SAL_CALL getByName(const OUString &aName) override
Definition: namecont.cxx:3028
css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() override
Definition: namecont.cxx:3140
css::uno::Reference< css::ucb::XSimpleFileAccess3 > mxSFI
Definition: namecont.hxx:478
virtual css::uno::Sequence< OUString > SAL_CALL getElementNames() override
Definition: namecont.cxx:3036
SfxLibrary(ModifiableHelper &_rModifiable, const css::uno::Type &aType, const css::uno::Reference< css::ucb::XSimpleFileAccess3 > &xSFI)
OUString maLibElementFileExtension
Definition: namecont.hxx:489
SfxLibrary(ModifiableHelper &_rModifiable, const css::uno::Type &aType, const css::uno::Reference< css::ucb::XSimpleFileAccess3 > &xSFI, OUString aLibInfoFileURL, OUString aStorageURL, bool ReadOnly)
void implSetModified(bool _bIsModified)
Definition: namecont.cxx:2984
void impl_removeWithoutChecks(const OUString &_rElementName)
Definition: namecont.cxx:3103
virtual sal_Bool SAL_CALL hasByName(const OUString &aName) override
Definition: namecont.cxx:3041
virtual void storeResources()=0
virtual void SAL_CALL addChangesListener(const css::uno::Reference< css::util::XChangesListener > &xListener) override
Definition: namecont.cxx:3170
OUString maUnexpandedStorageURL
Definition: namecont.hxx:492
virtual void storeResourcesAsURL(const OUString &URL, const OUString &NewName)=0
css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() override
Definition: namecont.cxx:3152
ModifiableHelper & mrModifiable
Definition: namecont.hxx:480
virtual bool isLibraryElementValid(const css::uno::Any &rElement) const =0
void removeElementWithoutChecks(const OUString &_rElementName, LibraryContainerAccess)
Definition: namecont.hxx:589
sal_Int32 addInterface(const css::uno::Reference< ListenerT > &rxIFace)
sal_Int32 removeInterface(const css::uno::Reference< ListenerT > &rxIFace)
mutable::osl::Mutex m_aMutex
float u
::cppu::WeakImplHelper< css::container::XNameContainer, css::container::XContainer, css::util::XChangesNotifier > NameContainer_BASE
Definition: namecont.hxx:63
::cppu::WeakComponentImplHelper< css::lang::XInitialization, css::script::XStorageBasedLibraryContainer, css::script::XLibraryContainerPassword, css::script::XLibraryContainerExport, css::script::XLibraryContainer3, css::container::XContainer, css::script::XLibraryQueryExecutable, css::script::vba::XVBACompatibility, css::lang::XServiceInfo, css::beans::XPropertySet > SfxLibraryContainer_BASE
Definition: namecont.hxx:163
::comphelper::OInterfaceContainerHelper3< css::script::vba::XVBAScriptListener > VBAScriptListenerContainer
Definition: namecont.hxx:161
unsigned char sal_Bool