Files
odfstudio/scripting/source/singleprov/scriptbrowser.hxx
T
Neil Roberts e5900bee28 scripting: Add script provider helpers for files with single macros
Adds a set of helpers to implement a script provider where the script
files are the entire macro. The provider only needs to make a subclass
of the abstract SingleScriptFactory class to provide the filename
extension, language name and a method to convert the contents of a file
to an XScript. The parts about handling file browsing and reading the
file contents are in the shared helper code.

This is based on the script provider from Luno.

Change-Id: Id39f3a07e887898650b0d77ec493011fb5acc858
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/203216
Tested-by: Jenkins
Reviewed-by: Neil Roberts <nroberts@libreoffice.org>
2026-04-30 10:36:31 +02:00

77 lines
3.3 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
#pragma once
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/beans/XPropertySetInfo.hpp>
#include <com/sun/star/script/browse/XBrowseNode.hpp>
#include <com/sun/star/script/XInvocation.hpp>
#include <cppuhelper/implbase.hxx>
#include <memory>
namespace singleprovider
{
class ProviderContext;
class ScriptBrowser
: public cppu::WeakImplHelper<css::script::browse::XBrowseNode, css::beans::XPropertySet,
css::beans::XPropertySetInfo, css::script::XInvocation>
{
public:
// XBrowseNode
OUString SAL_CALL getName() override;
// XPropertySet
css::uno::Reference<css::beans::XPropertySetInfo> SAL_CALL getPropertySetInfo() override;
void SAL_CALL setPropertyValue(const OUString& aPropertyName,
const css::uno::Any& aValue) override;
css::uno::Any SAL_CALL getPropertyValue(const OUString& sPropertyName) override;
void SAL_CALL addPropertyChangeListener(
const OUString& aPropertyName,
const css::uno::Reference<css::beans::XPropertyChangeListener>& xListener) override;
void SAL_CALL removePropertyChangeListener(
const OUString& aPropertyName,
const css::uno::Reference<css::beans::XPropertyChangeListener>& aListener) override;
void SAL_CALL addVetoableChangeListener(
const OUString& PropertyName,
const css::uno::Reference<css::beans::XVetoableChangeListener>& aListener) override;
void SAL_CALL removeVetoableChangeListener(
const OUString& PropertyName,
const css::uno::Reference<css::beans::XVetoableChangeListener>& aListener) override;
// XPropertySetInfo
css::uno::Sequence<css::beans::Property> SAL_CALL getProperties() override;
css::beans::Property SAL_CALL getPropertyByName(const OUString& sName) override;
sal_Bool SAL_CALL hasPropertyByName(const OUString& sName) override;
// XInvocation
css::uno::Reference<css::beans::XIntrospectionAccess> SAL_CALL getIntrospection() override;
css::uno::Any SAL_CALL invoke(const OUString& sFunctionName,
const css::uno::Sequence<css::uno::Any>& aParams,
css::uno::Sequence<sal_Int16>& aOutParamIndex,
css::uno::Sequence<css::uno::Any>& aOutParam) override;
void SAL_CALL setValue(const OUString& sPropertyName, const css::uno::Any& aValue) override;
css::uno::Any SAL_CALL getValue(const OUString& sPropertyName) override;
sal_Bool SAL_CALL hasMethod(const OUString& sName) override;
sal_Bool SAL_CALL hasProperty(const OUString& sName) override;
protected:
ScriptBrowser(const std::shared_ptr<ProviderContext>& pProviderContext, const OUString& sName,
const OUString& sBaseUri);
std::shared_ptr<ProviderContext> m_pProviderContext;
OUString m_sName;
OUString m_sBaseUri;
};
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */