From ed5640d8b587fbcfed7dd7967f3de04b37a76f26 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 11:06:44 +0200 Subject: Adding upstream version 4:7.4.7. Signed-off-by: Daniel Baumann --- .../source/text/sbasic/python/python_session.xhp | 158 +++++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100644 helpcontent2/source/text/sbasic/python/python_session.xhp (limited to 'helpcontent2/source/text/sbasic/python/python_session.xhp') diff --git a/helpcontent2/source/text/sbasic/python/python_session.xhp b/helpcontent2/source/text/sbasic/python/python_session.xhp new file mode 100644 index 000000000..f8c378dee --- /dev/null +++ b/helpcontent2/source/text/sbasic/python/python_session.xhp @@ -0,0 +1,158 @@ + + + + + + Python_Session : Session class + /text/sbasic/python/python_session.xhp + + + + + Session;UserName + Session;SharedScripts + Session;SharedPythonScripts + Session;UserProfile + Session;UserScripts + Session;UserPythonScripts + API;PathSubstitution + +

Getting Session Information

+ Computing %PRODUCTNAME user profile and shared modules system file paths can be performed with Python or with Basic languages. BeanShell, Java, JavaScript and Python scripts locations can be derived from this information. +

Examples:

+ With Python shell. + >>> from <the_module> import Session + >>> print(Session.SharedPythonScripts()) # static method + >>> print(Session().UserName) # object property + >>> input(Session().UserProfile) # object property +

From Tools – Macros - Run Macro... menu.

+ + from <the_module> import Session + + def demo_session(): + import screen_io as ui + ui.MsgBox(Session.Share(),title='Installation Share') # static method + ui.Print(Session.SharedPythonScripts()) # static method + s = Session() # instance creation + ui.MsgBox(s.UserName,title='Hello') # object property + ui.Print(s.UserPythonScripts) # object property + + g_exportedScripts = (demo_session,) # public macros + +

With %PRODUCTNAME Basic.

+ + Sub Session_example() + Dim s As New Session ' instance of Session class + Print "Shared scripts location:", s.SharedScripts + MsgBox s.UserName,,"Hello" + Print s.UserScripts, Chr(13), s.UserPythonScripts + End Sub ' Session_example + +

Using COM/OLE and Visual Basic Scripting language.

+ + ' The service manager is always the entry point + ' If there is no office running then an office is started up + Set sm = WScript.CreateObject("com.sun.star.ServiceManager") + ' PathSubstitution service exhibits information to infer + ' <UserProfile|Share>/Scripts/python locations from + Set obj = sm.createInstance("com.sun.star.util.PathSubstitution") + + MsgBox CreateObject("WScript.Network").UserName,, "Hello" + user = obj.getSubstituteVariableValue("$(user)") + MsgBox user & "/Scripts",, "User scripts location" + libO = Replace(obj.getSubstituteVariableValue("$(inst)"), "program/..", "Share") + MsgBox libO & "/Scripts",, "Shared scripts location" + +

Python Session class:

+ + import getpass, os, os.path, uno + + class Session(): + @staticmethod + def substitute(var_name): + ctx = uno.getComponentContext() + ps = ctx.getServiceManager().createInstanceWithContext( + 'com.sun.star.util.PathSubstitution', ctx) + return ps.getSubstituteVariableValue(var_name) + @staticmethod + def Share(): + inst = uno.fileUrlToSystemPath(Session.substitute("$(prog)")) + return os.path.normpath(inst.replace('program', "Share")) + @staticmethod + def SharedScripts(): + return ''.join([Session.Share(), os.sep, "Scripts"]) + @staticmethod + def SharedPythonScripts(): + return ''.join([Session.SharedScripts(), os.sep, 'python']) + @property # alternative to '$(username)' variable + def UserName(self): return getpass.getuser() + @property + def UserProfile(self): + return uno.fileUrlToSystemPath(Session.substitute("$(user)")) + @property + def UserScripts(self): + return ''.join([self.UserProfile, os.sep, 'Scripts']) + @property + def UserPythonScripts(self): + return ''.join([self.UserScripts, os.sep, "python"]) + + Unlike Basic, pathname normalization is performed with Python inside Session class. +

%PRODUCTNAME Basic Session class:

+ + Option Explicit + Option Compatible + Option ClassModule + + Private _ps As Object ' Private member + + Private Sub Class_Initialize() + GlobalScope.BasicLibraries.LoadLibrary("Tools") + Set _ps = CreateUnoService("com.sun.star.util.PathSubstitution") + End Sub ' Constructor + + Private Sub Class_Terminate() + _ps = Nothing + End Sub ' Destructor + + Public Property Get SharedScripts() As String + Dim inst As String, shr As String + inst = ConvertFromURL(_ps.getSubstituteVariableValue("$(prog)")) + shr = Tools.Strings.ReplaceString(inst,"Share","program") + SharedScripts = shr & GetPathSeparator() &"Scripts" + End Property ' Session.sharedScripts + + Public Property Get SharedPythonScripts() As String + sharedPythonScripts = sharedScripts() & GetPathSeparator() &"python" + End Property ' Session.sharedPythonScripts + + Public Property Get UserName() As String ' User account name + userName = _ps.getSubstituteVariableValue("$(username)") + End Property ' Session.userName + + Public Property Get UserProfile() As String ' User profile system path + userProfile = ConvertFromURL(_ps.getSubstituteVariableValue("$(user)")) + End Property ' Session.userProfile + + Public Property Get UserScripts() As String ' User scripts system path + userScripts = userProfile() & GetPathSeparator() &"Scripts" + End Property ' Session.userScripts + + Public Property Get UserPythonScripts() As String ' User Python scripts system path + userPythonScripts = userScripts() & GetPathSeparator() &"python" + End Property ' Session.userPythonScripts + +
+ + + + +
+ +
-- cgit v1.2.3