Turinys

# 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ė

### Iš 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"])

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

Susijusios temos

„Python“ skriptų organizavimas ir vieta

Importuojant „Python“ modulius

Įvedimas ir išvedimas į ekraną

Python programavimo pavyzdžiai