Add support for converting GtkComboBox items, also make sure that we
2007-07-04 Johan Dahlin <jdahlin@async.com.br> * gtk/gtk-builder-convert: Add support for converting GtkComboBox items, also make sure that we support more than one GtkAdjustment in a file svn path=/trunk/; revision=18371
This commit is contained in:

committed by
Johan Dahlin

parent
46ac4d0e56
commit
d606fb052a
@ -1,3 +1,9 @@
|
|||||||
|
2007-07-04 Johan Dahlin <jdahlin@async.com.br>
|
||||||
|
|
||||||
|
* gtk/gtk-builder-convert:
|
||||||
|
Add support for converting GtkComboBox items, also make sure
|
||||||
|
that we support more than one GtkAdjustment in a file
|
||||||
|
|
||||||
2007-07-03 Richard Hult <richard@imendio.com>
|
2007-07-03 Richard Hult <richard@imendio.com>
|
||||||
|
|
||||||
* gdk/quartz/gdkevents-quartz.c: Keep track of button state and
|
* gdk/quartz/gdkevents-quartz.c: Keep track of button state and
|
||||||
|
@ -19,7 +19,6 @@
|
|||||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
#
|
#
|
||||||
# TODO:
|
# TODO:
|
||||||
# GtkComboBox.items -> GtkListStore
|
|
||||||
# GtkTextView.text -> GtkTextBuffer
|
# GtkTextView.text -> GtkTextBuffer
|
||||||
# Toolbars
|
# Toolbars
|
||||||
|
|
||||||
@ -128,7 +127,17 @@ class GtkBuilderConverter(object):
|
|||||||
return [w for w in self._dom.getElementsByTagName("object")
|
return [w for w in self._dom.getElementsByTagName("object")
|
||||||
if w.getAttribute(attribute) == value]
|
if w.getAttribute(attribute) == value]
|
||||||
|
|
||||||
def _create_object(self, obj_class, obj_id, **properties):
|
def _create_object(self, obj_class, obj_id, template=None, **properties):
|
||||||
|
if template is not None:
|
||||||
|
count = 1
|
||||||
|
while True:
|
||||||
|
obj_id = template + str(count)
|
||||||
|
widget = self._get_widget(obj_id)
|
||||||
|
if widget is None:
|
||||||
|
break
|
||||||
|
|
||||||
|
count += 1
|
||||||
|
|
||||||
obj = self._dom.createElement('object')
|
obj = self._dom.createElement('object')
|
||||||
obj.setAttribute('class', obj_class)
|
obj.setAttribute('class', obj_class)
|
||||||
obj.setAttribute('id', obj_id)
|
obj.setAttribute('id', obj_id)
|
||||||
@ -198,7 +207,6 @@ class GtkBuilderConverter(object):
|
|||||||
self._convert_menubar(uimgr, node)
|
self._convert_menubar(uimgr, node)
|
||||||
elif klass in WINDOWS and self.skip_windows:
|
elif klass in WINDOWS and self.skip_windows:
|
||||||
self._remove_window(node)
|
self._remove_window(node)
|
||||||
|
|
||||||
self._default_widget_converter(node)
|
self._default_widget_converter(node)
|
||||||
|
|
||||||
def _default_widget_converter(self, node):
|
def _default_widget_converter(self, node):
|
||||||
@ -222,6 +230,9 @@ class GtkBuilderConverter(object):
|
|||||||
prop.parentNode.removeChild(prop)
|
prop.parentNode.removeChild(prop)
|
||||||
elif prop_name == "adjustment":
|
elif prop_name == "adjustment":
|
||||||
self._convert_adjustment(prop)
|
self._convert_adjustment(prop)
|
||||||
|
elif prop_name == "items" and klass in ['GtkComboBox',
|
||||||
|
'GtkComboBoxEntry']:
|
||||||
|
self._convert_combobox_items(node, prop)
|
||||||
|
|
||||||
def _remove_window(self, node):
|
def _remove_window(self, node):
|
||||||
object_node = get_object_node(get_child_nodes(node)[0])
|
object_node = get_object_node(get_child_nodes(node)[0])
|
||||||
@ -368,19 +379,69 @@ class GtkBuilderConverter(object):
|
|||||||
actions.appendChild(action)
|
actions.appendChild(action)
|
||||||
|
|
||||||
def _convert_adjustment(self, prop):
|
def _convert_adjustment(self, prop):
|
||||||
name = "adjustment1"
|
|
||||||
data = prop.childNodes[0].data
|
data = prop.childNodes[0].data
|
||||||
value, lower, upper, step, page, page_size = data.split(' ')
|
value, lower, upper, step, page, page_size = data.split(' ')
|
||||||
prop.childNodes[0].data = name
|
adj = self._create_object("GtkAdjustment", None,
|
||||||
adj = self._create_object("GtkAdjustment", name,
|
template='adjustment',
|
||||||
value=value,
|
value=value,
|
||||||
lower=lower,
|
lower=lower,
|
||||||
upper=upper,
|
upper=upper,
|
||||||
step_increment=step,
|
step_increment=step,
|
||||||
page_increment=page,
|
page_increment=page,
|
||||||
page_size=page_size)
|
page_size=page_size)
|
||||||
|
prop.childNodes[0].data = adj.getAttribute('id')
|
||||||
self._interface.childNodes.insert(0, adj)
|
self._interface.childNodes.insert(0, adj)
|
||||||
|
|
||||||
|
def _convert_combobox_items(self, node, prop):
|
||||||
|
if not prop.childNodes:
|
||||||
|
return
|
||||||
|
value = prop.childNodes[0].data
|
||||||
|
model = self._create_object("GtkListStore", None, template="model")
|
||||||
|
|
||||||
|
columns = self._dom.createElement('columns')
|
||||||
|
model.appendChild(columns)
|
||||||
|
|
||||||
|
column = self._dom.createElement('column')
|
||||||
|
column.setAttribute('type', 'gchararray')
|
||||||
|
columns.appendChild(column)
|
||||||
|
|
||||||
|
data = self._dom.createElement('data')
|
||||||
|
model.appendChild(data)
|
||||||
|
|
||||||
|
for item in value.split('\n'):
|
||||||
|
row = self._dom.createElement('row')
|
||||||
|
data.appendChild(row)
|
||||||
|
|
||||||
|
col = self._dom.createElement('col')
|
||||||
|
col.setAttribute('id', '0')
|
||||||
|
col.appendChild(self._dom.createTextNode(item))
|
||||||
|
row.appendChild(col)
|
||||||
|
|
||||||
|
self._interface.childNodes.insert(0, model)
|
||||||
|
|
||||||
|
parent = prop.parentNode
|
||||||
|
model_prop = self._dom.createElement('property')
|
||||||
|
model_prop.setAttribute('name', 'model')
|
||||||
|
model_prop.appendChild(
|
||||||
|
self._dom.createTextNode(model.getAttribute('id')))
|
||||||
|
parent.appendChild(model_prop)
|
||||||
|
|
||||||
|
parent.removeChild(prop)
|
||||||
|
|
||||||
|
child = self._dom.createElement('child')
|
||||||
|
node.appendChild(child)
|
||||||
|
cell_renderer = self._create_object('GtkCellRendererText', None,
|
||||||
|
template='renderer')
|
||||||
|
child.appendChild(cell_renderer)
|
||||||
|
|
||||||
|
attributes = self._dom.createElement('attributes')
|
||||||
|
child.appendChild(attributes)
|
||||||
|
|
||||||
|
attribute = self._dom.createElement('attribute')
|
||||||
|
attributes.appendChild(attribute)
|
||||||
|
attribute.setAttribute('name', 'text')
|
||||||
|
attribute.appendChild(self._dom.createTextNode('0'))
|
||||||
|
|
||||||
def _packing_prop_to_child_attr(self, node, prop_name, prop_val,
|
def _packing_prop_to_child_attr(self, node, prop_name, prop_val,
|
||||||
attr_val=None):
|
attr_val=None):
|
||||||
for child in node.getElementsByTagName("child"):
|
for child in node.getElementsByTagName("child"):
|
||||||
|
Reference in New Issue
Block a user