diff --git a/src/dataforms_widget.py b/src/dataforms_widget.py index 36cb03ab46c3eca686fd15565038b78eb3810dd0..0c47832c7b396dc0c76f64841ca3a89c292ee668 100644 --- a/src/dataforms_widget.py +++ b/src/dataforms_widget.py @@ -19,9 +19,6 @@ single means these with one record of data (without <recorded/> element), multiple - these which may contain more data (with <recorded/> element).""" -# TODO: forms of type='result' should be read-only -# TODO: remove tabs from dialog - import gtk import gtkgui_helpers @@ -273,6 +270,9 @@ def __init__(self, dataform): # building widget linecounter = 0 + # is the form changeable? + readwrite = dataform.type != 'result' + # for each field... for field in self._data_form.iter_fields(): if field.type=='hidden': continue @@ -321,6 +321,7 @@ def __init__(self, dataform): field.value = value if value == field.value: radio.set_active(True) + widget.set_sensitive(readwrite) widget.pack_start(radio, expand=False) elif field.type == 'list-multi': @@ -331,6 +332,7 @@ def __init__(self, dataform): check.set_active(value in field.values) check.connect('toggled', self.on_list_multi_checkbutton_toggled, field, value) + widget.set_sensitive(readwrite) widget.pack_start(check, expand=False) elif field.type == 'jid-single': @@ -360,15 +362,25 @@ def __init__(self, dataform): treeview.append_column(gtk.TreeViewColumn(None, renderer, text=0)) - xml.get_widget('add_button').connect('clicked', + add_button=xml.get_widget('add_button') + add_button.connect('clicked', self.on_jid_multi_add_button_clicked, treeview, listmodel, field) - xml.get_widget('edit_button').connect('clicked', + edit_button=xml.get_widget('edit_button') + edit_button.connect('clicked', self.on_jid_multi_edit_button_clicked, treeview) - xml.get_widget('remove_button').connect('clicked', + remove_button=xml.get_widget('remove_button') + remove_button.connect('clicked', self.on_jid_multi_remove_button_clicked, treeview, field) - xml.get_widget('clear_button').connect('clicked', + clear_button=xml.get_widget('clear_button') + clear_button.connect('clicked', self.on_jid_multi_clean_button_clicked, listmodel, field) + if not readwrite: + add_button.set_no_show_all(True) + edit_button.set_no_show_all(True) + remove_button.set_no_show_all(True) + clear_button.set_no_show_all(True) + widget.set_sensitive(readwrite) self.attach(widget, 1, 2, linecounter, linecounter+1) del xml @@ -392,6 +404,7 @@ def __init__(self, dataform): widget = gtk.ScrolledWindow() widget.add(textwidget) + widget.set_sensitive(readwrite) self.attach(widget, 1, 2, linecounter, linecounter+1) else:# field.type == 'text-single' or field.type is nonstandard: @@ -411,6 +424,7 @@ def __init__(self, dataform): if commonwidget: assert widget is not None + widget.set_sensitive(readwrite) self.attach(widget, 1, 2, linecounter, linecounter+1, yoptions=gtk.FILL) widget.show_all()