Gauti sesijos informaciją

Darbą su „LibreOffice“ vartotojo profiliu ir bendrinamų modulių sistemos failų keliais galima atlikti naudojant „Python“ arba „Basic“ kalbas. Iš šios informacijos galima nustatyti „BeanShell“, „Java“, „JavaScript“ ir „Python“ skriptų vietas.

Pavyzdžiai:

Naudojant „Python“ apvakalą

>>> from <the_module> import Session

>>> print(Session.SharedPythonScripts()) # static method

>>> print(Session().UserName) # objekto savybė

>>> input(Session().UserProfile) # objekto savybė

Priemonės → Makrokomandos → Vykdyti makrokomandą… meniu.


        from <the_module> import Session
            
        def demo_session():
            import screen_io as ui
            ui.MsgBox(Session.Share(),title='Installation Share')  # statinis metodas
            ui.Print(Session.SharedPythonScripts())  # statinis metodas
            s = Session()  # pavyzdžio sukūrimas
            ui.MsgBox(s.UserName,title='Hello')  # objekto savybė
            ui.Print(s.UserPythonScripts)  # objekto savybė
            
        g_exportedScripts = (demo_session,)  # viešos makrokomandos
    

Naudojant „LibreOffice Basic“.


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

Naudojant COM/OLE ir „Visual Basic“ skriptų kalbas.


        ' Įėjimo taške tvarkomos paslaugos
        ' Jei neveikia nė vienas biuras, jis įsteigiamas
        Set sm = WScript.CreateObject("com.sun.star.ServiceManager")
        ' „PathSubstitution“ tarnyba pateikia informaciją, iš kurios galima spręsti
        ' <UserProfile|Share>/Scripts/python vieta
        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“ sesijos klasė:


        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)' kintamasis
            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"])
    
note

Skirtingai nuo „Basic“, kelio pavadinimo normalizavimas atliekamas naudojant „Python“ sesijos klasę.


„LibreOffice Basic“ sesijos klasė:


        Option Explicit
        Option Compatible
        Option ClassModule
            
        Private _ps As Object ' privatus narys
            
        Private Sub Class_Initialize()
            GlobalScope.BasicLibraries.LoadLibrary("Tools")
            Set _ps = CreateUnoService("com.sun.star.util.PathSubstitution")
        End Sub ' Konstruktorius
            
        Private Sub Class_Terminate()
            _ps = Nothing
        End Sub ' Destruktorius
            
        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
            
        Viešoji savybė: Get UserName() As String ' Vartotojo abonemento vardas
            userName = _ps.getSubstituteVariableValue("$(username)")
        End Property ' Session.userName
            
        Viešoji savybė: Get UserProfile() As String ' Vartotojo profilio sisteminis kelias
            userProfile = ConvertFromURL(_ps.getSubstituteVariableValue("$(user)"))
        End Property ' Session.userProfile
            
        Viešoji savybė: Get UserProfile() As String ' Vartotojo skripto sisteminis kelias
            userScripts = userProfile() & GetPathSeparator() &"Scripts"
        End Property ' Session.userScripts
            
        Viešoji savybė: Get UserProfile() As String ' Vartotojo „Python“ skriptų sisteminis kelias
            userPythonScripts = userScripts() & GetPathSeparator() &"python"
        End Property ' Session.userPythonScripts
    

Paremkite mus!