1
0
Fork 0
libreoffice/helpcontent2/source/text/sbasic/python/python_platform.xhp
Daniel Baumann 8e63e14cf6
Adding upstream version 4:25.2.3.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-22 16:20:04 +02:00

128 lines
11 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="UTF-8"?>
<helpdocument version="1.0">
<!--
* 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/.
*
-->
<meta>
<topic id="text/sbasic/python/Python_Platform" indexer="include" status="PUBLISH">
<title id="tit" xml-lang="en-US">Python : Platform class</title>
<filename>/text/sbasic/python/python_platform.xhp</filename>
</topic>
</meta>
<body>
<bookmark branch="index" id="N0508">
<bookmark_value>Platform;isLinux</bookmark_value>
<bookmark_value>Platform;isMacOsX</bookmark_value>
<bookmark_value>Platform;isWindows</bookmark_value>
<bookmark_value>Platform;ComputerName</bookmark_value>
<bookmark_value>Platform;OSName</bookmark_value>
<bookmark_value>API;ConfigurationAccess</bookmark_value>
<bookmark_value>Tools;GetRegistryContent</bookmark_value>
</bookmark>
<h1 id="N0509"><variable id="pythonplatform"><link href="text/sbasic/python/python_platform.xhp">Identifying the operating system</link></variable></h1>
<paragraph role="paragraph" id="N0510">Identifying the operating system can be performed with Python or Basic language.</paragraph>
<h2 id="N0512">Using a Python class:</h2>
<pycode>
<paragraph role="pycode" localize="false" id="N05130">""" the_module """</paragraph>
<paragraph role="pycode" localize="false" id="N0513">import os, platform</paragraph>
<paragraph role="pycode" localize="false" id="N0514">class Platform():</paragraph>
<paragraph role="pycode" localize="false" id="N0515"> @property</paragraph>
<paragraph role="pycode" localize="false" id="N0516"> def ComputerName(self): return platform.node()</paragraph>
<paragraph role="pycode" localize="false" id="N0517"> @property</paragraph>
<paragraph role="pycode" localize="false" id="N0518"> def DirSeparator(self): return os.sep</paragraph>
<paragraph role="pycode" localize="false" id="N0519"> @property</paragraph>
<paragraph role="pycode" localize="false" id="N0520"> def isLinux(self): return (self.OSName==&apos;Linux&apos;)</paragraph>
<paragraph role="pycode" localize="false" id="N0521"> @property</paragraph>
<paragraph role="pycode" localize="false" id="N0522"> def isMacOSX(self): return (self.OSName==&apos;Darwin&apos;)</paragraph>
<paragraph role="pycode" localize="false" id="N0523"> @property</paragraph>
<paragraph role="pycode" localize="false" id="N0524"> def isWindows(self): return (self.OSName==&apos;Windows&apos;)</paragraph>
<paragraph role="pycode" localize="false" id="N0525"> @property</paragraph>
<paragraph role="pycode" localize="false" id="N0526"> def OSName(self): return platform.system()</paragraph>
<paragraph role="pycode" localize="false" id="N0527"> @property</paragraph>
<paragraph role="pycode" localize="false" id="N0528"> def PathDelimiter(self): return os.pathsep</paragraph>
</pycode>
<h2 id="N0529">Using a Basic classmodule:</h2>
<tip id="NO529b">%PRODUCTNAME Basic lacks MacOS X native recognition. Platform identification is possible using %PRODUCTNAME Application Programming Interface (API).</tip>
<bascode>
<paragraph role="bascode" id="N0530a">''' Module name: Platform '''</paragraph>
<paragraph role="bascode" localize="false" id="N0530b">Option Compatible</paragraph>
<paragraph role="bascode" localize="false" id="N0531">Option ClassModule</paragraph>
<paragraph role="bascode" localize="false" id="N0532">Option Explicit</paragraph>
<paragraph role="bascode" localize="false" id="N0533"></paragraph>
<paragraph role="bascode" localize="false" id="N0534">Public Property Get ComputerName As String</paragraph>
<paragraph role="bascode" localize="false" id="N0535"> If isWindows Then ComputerName = Environ(&quot;ComputerName&quot;)</paragraph>
<paragraph role="bascode" localize="false" id="N0536">End Property &apos; Platform.ComputerName</paragraph>
<paragraph role="bascode" localize="false" id="N0537"></paragraph>
<paragraph role="bascode" localize="false" id="N0538">Public Property Get DirSeparator As String</paragraph>
<paragraph role="bascode" localize="false" id="N0539"> DirSeparator = GetPathSeparator()</paragraph>
<paragraph role="bascode" localize="false" id="N0540">End Property &apos; Platform.DirSeparator</paragraph>
<paragraph role="bascode" localize="false" id="N0541"></paragraph>
<paragraph role="bascode" localize="false" id="N0542">Public Property Get IsLinux As Boolean</paragraph>
<paragraph role="bascode" localize="false" id="N0543"> isLinux = ( GetGUIType()=4 ) &apos; Applies to macOS as well </paragraph>
<paragraph role="bascode" localize="false" id="N0544">End Property &apos; Platform.isLinux</paragraph>
<paragraph role="bascode" localize="false" id="N0545"></paragraph>
<paragraph role="bascode" localize="false" id="M0542">Public Property Get IsMacOSX As Boolean</paragraph>
<paragraph role="bascode" localize="false" id="M0543"> isMacOSX = ( OSName=&quot;MAC&quot; )</paragraph>
<paragraph role="bascode" localize="false" id="M0544">End Property &apos; Platform.isMacOSX</paragraph>
<paragraph role="bascode" localize="false" id="M0545"></paragraph>
<paragraph role="bascode" localize="false" id="N0546">Public Property Get IsWindows As Boolean</paragraph>
<paragraph role="bascode" localize="false" id="N0547"> isWindows = ( GetGUIType()=1 )</paragraph>
<paragraph role="bascode" localize="false" id="N0548">End Property &apos; Platform.isWindows</paragraph>
<paragraph role="bascode" localize="false" id="N0549"></paragraph>
<paragraph role="bascode" localize="false" id="N0550">Public Property Get OSName As String</paragraph>
<paragraph role="bascode" xml-lang="en-US" id="N0451"> &apos; Return platform name as &quot;MAC&quot;, &quot;UNIX&quot;, &quot;WIN&quot;</paragraph>
<paragraph role="bascode" xml-lang="en-US" id="N0551"> &apos; Inferred from &quot;Tools.UCB.ShowHelperDialog&quot; function</paragraph>
<paragraph role="bascode" localize="false" id="N0552"> With GlobalScope.Basiclibraries</paragraph>
<paragraph role="bascode" localize="false" id="M0552"> If Not .IsLibraryLoaded(&quot;Tools&quot;) Then .LoadLibrary(&quot;Tools&quot;)</paragraph>
<paragraph role="bascode" localize="false" id="O0552"> End With</paragraph>
<paragraph role="bascode" localize="false" id="N0553"> Dim keyNode As Object &apos; com.sun.star.configuration.ConfigurationAccess</paragraph>
<paragraph role="bascode" localize="false" id="M0553"> keyNode = Tools.Misc.GetRegistryKeyContent(&quot;org.openoffice.Office.Common/Help&quot;)</paragraph>
<paragraph role="bascode" localize="false" id="N0554"> OSName = keyNode.GetByName(&quot;System&quot;)</paragraph>
<paragraph role="bascode" localize="false" id="N0555">End Property &apos; Platform.OSName</paragraph>
<paragraph role="bascode" localize="false" id="N0556"></paragraph>
<paragraph role="bascode" localize="false" id="N0557">Public Property Get PathDelimiter As String</paragraph>
<paragraph role="bascode" localize="false" id="N0559"> Select Case OSName</paragraph>
<paragraph role="bascode" localize="false" id="N0560"> Case &quot;MAC&quot;, &quot;UNIX&quot; : PathDelimiter = &quot;:&quot;</paragraph>
<paragraph role="bascode" localize="false" id="N0561"> Case &quot;WIN&quot; : PathDelimiter = &quot;;&quot;</paragraph>
<paragraph role="bascode" localize="false" id="N0562"> End Select</paragraph>
<paragraph role="bascode" localize="false" id="N0563">End Property &apos; Platform.PathDelimiter</paragraph>
</bascode>
<note id="N0511">ComputerName environment variable is solely available for Windows. Basic calls to Python macros help overcome %PRODUCTNAME Basic limitations.</note>
<h2 id="N0564">Examples:</h2>
<paragraph role="paragraph" id="N0565">With Python</paragraph>
<paragraph role="paragraph" localize="false" id="N0566"><literal>&gt;&gt;&gt; from &lt; the_module &gt; import Platform</literal></paragraph>
<paragraph role="paragraph" xml-lang="en-US" id="N0567"><literal>&gt;&gt;&gt; print(Platform().isMacOSX) # object property</literal></paragraph>
<paragraph role="paragraph" localize="false" id="N0568"><literal>True</literal></paragraph>
<paragraph role="paragraph" xml-lang="en-US" id="N0569"><literal>&gt;&gt;&gt; input(Platform().OSName) # object property</literal></paragraph>
<paragraph role="paragraph" localize="false" id="N0570"><literal>Darwin</literal></paragraph>
<paragraph role="paragraph" id="N0571">
From <menuitem>Tools Macros - Run Macro...</menuitem> menu.</paragraph>
<pycode>
<paragraph role="pycode" localize="false" id="N0572">from &lt; the_module &gt; import Platform</paragraph>
<paragraph role="pycode" localize="false" id="N0573">import screen_io as ui</paragraph>
<paragraph role="pycode" localize="false" id="N0574">p = Platform()</paragraph>
<paragraph role="pycode" localize="false" id="N0575">ui.MsgBox(&apos;&apos;.join([&apos;isMacOS: &apos;,str(p.isMacOSX)]),0,p.OSName)</paragraph>
</pycode>
<paragraph role="paragraph" id="N0576">With %PRODUCTNAME Basic</paragraph>
<bascode>
<paragraph role="bascode" localize="false" id="N0577">Sub Platform_example()</paragraph>
<paragraph role="bascode" xml-lang="en-US" id="N0578"> Dim p As New Platform &apos; instance of Platform class</paragraph>
<paragraph role="bascode" xml-lang="en-US" id="N0579"> MsgBox p.isLinux &apos; object property</paragraph>
<paragraph role="bascode" xml-lang="en-US" id="N0580"> Print p.isWindows, p.OSName &apos; object properties</paragraph>
<paragraph role="bascode" localize="false" id="N0581">End Sub &apos; Platform_example</paragraph>
</bascode>
<section id="relatedtopics">
<embed href="text/sbasic/python/python_screen.xhp#ioscreen"/>
<embed href="text/sbasic/shared/03132100.xhp#getguitype2"/>
<embed href="text/sbasic/shared/GetPathSeparator.xhp#getpathseparator01"/>
<embed href="text/sbasic/guide/basic_2_python.xhp#basic2python"/>
<embed href="text/sbasic/python/python_examples.xhp#pythonexamples2"/>
<embed href="text/sbasic/python/main0000.xhp#pythonscriptshelp"/>
</section>
</body>
</helpdocument>