[vbox-dev] Accessing the enums from python
Nikolay Igotti
Nikolay.Igotti at Sun.COM
Mon May 25 13:39:33 GMT 2009
Hi Narf,
Yes, it is possible, and there are two approaches to that:
- platform (COM/XPCOM/webservices) specific (not recommended for
XPCOM, not available for MSCOM, OK for webservices)
- platform neutral (implemented in recent SVN tree) - (recommended)
First approach it to use component technology's specific mechanism to
access constants data available in typelib.
To do that, for XPCOM xpcom.components.interfaces can be used, such as
xpcom.components.interfaces.MachineState.Running.
For webservices, one can use g_reflectionInfo in VirtualBox_wrappers
(g_reflectionInfo.MachineState.Running).
For MS COM there's no reliable mechanism to do that
(win32com.client.constants
doesn't work entirely expected way).
Second approach, is to use pregenerated constants file, and rely on
universal wrapper vboxapi.py to access constants, like this:
virtualBoxManager = VirtualBoxManager(None, None)
g_virtualBoxManager.constants.MachineState_Running
Note underscore in constant's name.
Class VirtualBoxManager hides platform-specific implementation details,
and allow to write the same Python code for Windows, Linux and webservices.
Will work on improving of Python sections in SDK documentation .
Thanks,
Nikolay
Narf wrote:
> Hi,
>
> Is it possible to access the enums (MachineState, HardDiskType, etc)
> from python? I'm programming a python interface to virtualbox and I
> feel stupid hardcoding the numbers. And the python section in the sdk
> documentation is not... erm... very helpful :)
>
> Thanks,
> Narf
>
> _______________________________________________
> vbox-dev mailing list
> vbox-dev at virtualbox.org
> http://vbox.innotek.de/mailman/listinfo/vbox-dev
>
More information about the vbox-dev
mailing list