structure: Add a .keys() method and implement __str__

We are making it behave like a dict, so we should provide the
same kind of utilities.
This commit is contained in:
Thibault Saunier 2017-07-25 13:00:08 -04:00
parent 31dfe42b37
commit dd943155a1

View file

@ -29,6 +29,8 @@ import inspect
from ..overrides import override
from ..importer import modules
from gi.repository import GLib
if sys.version_info >= (3, 0):
_basestring = str
@ -245,13 +247,27 @@ class Structure(Gst.Structure):
raise TypeError("wrong arguments when creating GstStructure object")
def __init__(self, *args, **kwargs):
pass
def __getitem__(self, key):
return self.get_value(key)
def keys(self):
keys = set()
def foreach(fid, value, unused1, udata):
keys.add(GLib.quark_to_string(fid))
return True
self.foreach(foreach, None, None)
return keys
def __setitem__(self, key, value):
return self.set_value(key, value)
def __str__(self):
return self.to_string()
Structure = override(Structure)
__all__.append('Structure')