DataFormWidget: Fix some UI issues
- Textview: Wrap text, set padding - ListMultiTreeView: Align checkboxes to the right - Add a adjustment element that sets default sizes on the columns - Allow two new options 'form-width' and 'left-width' to customize sizes
This commit is contained in:
		
							parent
							
								
									31417ffbc7
								
							
						
					
					
						commit
						d129f5559a
					
				
					 3 changed files with 33 additions and 2 deletions
				
			
		| 
						 | 
					@ -238,6 +238,7 @@ button.flat.link { padding: 0; border: 0; }
 | 
				
			||||||
.data-form-widget grid { margin: 18px; }
 | 
					.data-form-widget grid { margin: 18px; }
 | 
				
			||||||
.data-form-widget treeview { padding: 5px; }
 | 
					.data-form-widget treeview { padding: 5px; }
 | 
				
			||||||
.data-form-widget scrolledwindow { border: 1px solid; border-color:@unfocused_borders; }
 | 
					.data-form-widget scrolledwindow { border: 1px solid; border-color:@unfocused_borders; }
 | 
				
			||||||
 | 
					.data-form-widget textview { padding: 5px; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*Image Preview*/
 | 
					/*Image Preview*/
 | 
				
			||||||
.preview-image { box-shadow: 0px 0px 3px 0px alpha(@theme_text_color, 0.2); }
 | 
					.preview-image { box-shadow: 0px 0px 3px 0px alpha(@theme_text_color, 0.2); }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -66,6 +66,9 @@ class FormGrid(Gtk.Grid):
 | 
				
			||||||
        self.row_count = 0
 | 
					        self.row_count = 0
 | 
				
			||||||
        self.rows = []
 | 
					        self.rows = []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        form_width = options.get('form-width', 435)
 | 
				
			||||||
 | 
					        self.set_size_request(form_width, -1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self._data_form = form_node
 | 
					        self._data_form = form_node
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.title = None
 | 
					        self.title = None
 | 
				
			||||||
| 
						 | 
					@ -83,6 +86,8 @@ class FormGrid(Gtk.Grid):
 | 
				
			||||||
            'text-multi': TextMultiField
 | 
					            'text-multi': TextMultiField
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self._add_row(SizeAdjustment(options))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if form_node.title is not None:
 | 
					        if form_node.title is not None:
 | 
				
			||||||
            self.title = form_node.title
 | 
					            self.title = form_node.title
 | 
				
			||||||
            self._add_row(Title(form_node.title))
 | 
					            self._add_row(Title(form_node.title))
 | 
				
			||||||
| 
						 | 
					@ -149,6 +154,22 @@ class FormGrid(Gtk.Grid):
 | 
				
			||||||
        self.get_parent().get_parent().emit('is-valid', value)
 | 
					        self.get_parent().get_parent().emit('is-valid', value)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class SizeAdjustment:
 | 
				
			||||||
 | 
					    def __init__(self, options):
 | 
				
			||||||
 | 
					        self._left_box = Gtk.Box()
 | 
				
			||||||
 | 
					        self._right_box = Gtk.Box()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        left_width = options.get('left-width', 100)
 | 
				
			||||||
 | 
					        self._left_box.set_size_request(left_width, -1)
 | 
				
			||||||
 | 
					        self._right_box.set_hexpand(True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def add(self, form_grid, row_number):
 | 
				
			||||||
 | 
					        form_grid.attach(self._left_box, 0, row_number, 1, 1)
 | 
				
			||||||
 | 
					        form_grid.attach_next_to(self._right_box,
 | 
				
			||||||
 | 
					                                 self._left_box,
 | 
				
			||||||
 | 
					                                 Gtk.PositionType.RIGHT, 1, 1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Title:
 | 
					class Title:
 | 
				
			||||||
    def __init__(self, title):
 | 
					    def __init__(self, title):
 | 
				
			||||||
        self._label = Gtk.Label(label=title)
 | 
					        self._label = Gtk.Label(label=title)
 | 
				
			||||||
| 
						 | 
					@ -179,7 +200,6 @@ class Field:
 | 
				
			||||||
        self._label.set_line_wrap(True)
 | 
					        self._label.set_line_wrap(True)
 | 
				
			||||||
        self._label.set_line_wrap_mode(Pango.WrapMode.WORD)
 | 
					        self._label.set_line_wrap_mode(Pango.WrapMode.WORD)
 | 
				
			||||||
        self._label.set_width_chars(15)
 | 
					        self._label.set_width_chars(15)
 | 
				
			||||||
        self._label.set_size_request(100, -1)
 | 
					 | 
				
			||||||
        self._label.set_xalign(bool(options.get('right_align')))
 | 
					        self._label.set_xalign(bool(options.get('right_align')))
 | 
				
			||||||
        self._label.set_tooltip_text(field.description)
 | 
					        self._label.set_tooltip_text(field.description)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -318,6 +338,8 @@ class ListMutliTreeView(Gtk.TreeView):
 | 
				
			||||||
        col = Gtk.TreeViewColumn()
 | 
					        col = Gtk.TreeViewColumn()
 | 
				
			||||||
        cell = Gtk.CellRendererToggle()
 | 
					        cell = Gtk.CellRendererToggle()
 | 
				
			||||||
        cell.set_activatable(True)
 | 
					        cell.set_activatable(True)
 | 
				
			||||||
 | 
					        cell.set_property('xalign', 1)
 | 
				
			||||||
 | 
					        cell.set_property('xpad', 10)
 | 
				
			||||||
        cell.connect('toggled', self._toggled)
 | 
					        cell.connect('toggled', self._toggled)
 | 
				
			||||||
        col.pack_start(cell, True)
 | 
					        col.pack_start(cell, True)
 | 
				
			||||||
        col.set_attributes(cell, active=2)
 | 
					        col.set_attributes(cell, active=2)
 | 
				
			||||||
| 
						 | 
					@ -470,11 +492,14 @@ class TextMultiField(Field):
 | 
				
			||||||
        self._label.set_valign(Gtk.Align.START)
 | 
					        self._label.set_valign(Gtk.Align.START)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self._widget = Gtk.ScrolledWindow()
 | 
					        self._widget = Gtk.ScrolledWindow()
 | 
				
			||||||
 | 
					        self._widget.set_policy(Gtk.PolicyType.NEVER,
 | 
				
			||||||
 | 
					                                Gtk.PolicyType.AUTOMATIC)
 | 
				
			||||||
        self._widget.set_propagate_natural_height(True)
 | 
					        self._widget.set_propagate_natural_height(True)
 | 
				
			||||||
        self._widget.set_min_content_height(100)
 | 
					        self._widget.set_min_content_height(100)
 | 
				
			||||||
        self._widget.set_max_content_height(300)
 | 
					        self._widget.set_max_content_height(300)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self._textview = Gtk.TextView()
 | 
					        self._textview = Gtk.TextView()
 | 
				
			||||||
 | 
					        self._textview.set_wrap_mode(Gtk.WrapMode.WORD_CHAR)
 | 
				
			||||||
        self._textview.get_buffer().set_text(field.value)
 | 
					        self._textview.get_buffer().set_text(field.value)
 | 
				
			||||||
        self._textview.get_buffer().connect('changed', self._changed)
 | 
					        self._textview.get_buffer().connect('changed', self._changed)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -112,7 +112,12 @@ class DataFormWindow(Gtk.Window):
 | 
				
			||||||
    def __init__(self):
 | 
					    def __init__(self):
 | 
				
			||||||
        Gtk.Window.__init__(self, title="Data Form Test")
 | 
					        Gtk.Window.__init__(self, title="Data Form Test")
 | 
				
			||||||
        self.set_default_size(600, 600)
 | 
					        self.set_default_size(600, 600)
 | 
				
			||||||
        self._widget = DataFormWidget(extend_form(node=nbxmpp.Node(node=FORM)))
 | 
					        options = {
 | 
				
			||||||
 | 
					            'left-width': 100,
 | 
				
			||||||
 | 
					            'form-width': 435,
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        self._widget = DataFormWidget(
 | 
				
			||||||
 | 
					            extend_form(node=nbxmpp.Node(node=FORM)), options)
 | 
				
			||||||
        self.add(self._widget)
 | 
					        self.add(self._widget)
 | 
				
			||||||
        self.show()
 | 
					        self.show()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue