[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