30
30
from glade import GladeWindow
32
from gettext import gettext as _
32
34
def get_widget_propvalue(property, widget):
33
35
""" returns the value of the given propertywidget """
34
type_name = gobject.type_name(property.value_type)
36
# FIXME : implement the case for flags
37
type_name = gobject.type_name(property.value_type.fundamental)
35
39
if (type_name == 'gchararray'):
36
40
return widget.get_text()
37
41
if (type_name in ['guint64', 'gint64', 'gint', 'gulong']):
40
44
return widget.get_value()
41
45
if (type_name in ['gboolean']):
42
46
return widget.get_active()
47
if type_name in ['GEnum']:
48
idx = widget.get_active()
49
model = widget.get_model()
50
name, val = model[idx]
45
def make_property_widget(element, property, value=None):
54
def make_property_widget(unused_element, property, value=None):
46
55
""" Creates a Widget for the given element property """
47
type_name = gobject.type_name(property.value_type)
56
# FIXME : implement the case for flags
57
type_name = gobject.type_name(property.value_type.fundamental)
49
value = element.get_property(property.name)
60
value = property.default_value
50
61
if (type_name == 'gchararray'):
51
62
widget = gtk.Entry()
52
63
widget.set_text(str(value))
53
elif (type_name in ['guint64', 'gint64', 'gint', 'gfloat', 'gulong']):
64
elif (type_name in ['guint64', 'gint64', 'guint', 'gint', 'gfloat', 'gulong']):
54
65
widget = gtk.SpinButton()
55
66
if type_name == 'gint':
56
67
widget.set_range(-(2**31), 2**31 - 1)
68
79
widget = gtk.CheckButton()
70
81
widget.set_active(True)
82
elif (type_name == 'GEnum'):
83
model = gtk.ListStore(gobject.TYPE_STRING, property.value_type)
84
widget = gtk.ComboBox(model)
85
cell = gtk.CellRendererText()
86
widget.pack_start(cell, True)
87
widget.add_attribute(cell, 'text', 0)
90
for key, val in property.enum_class.__enum_values__.iteritems():
91
gst.log("adding %s / %s" % (val.value_name, val))
92
model.append([val.value_name, val])
96
widget.set_active(selected)
72
98
widget = gtk.Label(type_name)
73
99
widget.set_alignment(1.0, 0.5)
141
167
def _fillWindow(self):
142
168
# set title and frame label
143
self.window.set_title("Properties for " + self.factory.get_longname())
169
self.window.set_title(_("Properties for ") + self.factory.get_longname())
144
170
self.widgets["infolabel"].set_markup("<b>" + self.factory.get_longname() + "</b>")
145
171
self.desclabel.set_text(self.factory.get_description())
146
172
self.authlabel.set_text(string.join(self.factory.get_author().split(","), "\n"))