Philipp Hörist pushed to branch master at gajim / gajim
Commits: 5d5d6864 by Philipp Hörist at 2018-11-03T12:44:36Z DataFormWidget: Color required fields red
- - - - - 6e416992 by Philipp Hörist at 2018-11-03T12:44:50Z GroupchatConfig: Tidy up some rough edges
- - - - -
4 changed files:
- gajim/data/gui/groupchat_config.ui - gajim/data/style/gajim.css - gajim/gtk/dataform.py - gajim/gtk/groupchat_config.py
Changes:
===================================== gajim/data/gui/groupchat_config.ui ===================================== @@ -323,6 +323,7 @@ <property name="sort_column_id">1</property> <child> <object class="GtkCellRendererText"> + <property name="placeholder_text">Name</property> <signal name="edited" handler="_on_nick_edited" swapped="no"/> </object> <attributes> @@ -442,7 +443,7 @@ <property name="sort_column_id">1</property> <child> <object class="GtkCellRendererText"> - <property name="placeholder_text">spam</property> + <property name="placeholder_text">Spam</property> <signal name="edited" handler="_on_reason_edited" swapped="no"/> </object> <attributes>
===================================== gajim/data/style/gajim.css ===================================== @@ -153,6 +153,7 @@ list.settings > row > box { background-color:@theme_base_color; border-bottom: 1px solid; border-color: @borders;} +#GroupchatConfig treeview { padding: 5px; }
/* Popover Treeview */ .popover_treeview { border-radius: 3px; background-color: @theme_bg_color; } @@ -247,5 +248,9 @@ button.flat.link { padding: 0; border: 0; } .field-fixed { font-size: 16px; font-weight: bold; padding-top:5px;} .data-form-title { font-size: 16px; font-weight: bold; } .data-form-widget grid { margin: 18px; } -.data-form-widget scrolledwindow { border: 1px solid; border-color:@unfocused_borders; } .data-form-widget treeview { padding: 5px; } +.field-required { border: 1px solid; border-color: red; } +.field-normal { border: 1px solid; border-color:@unfocused_borders; } + +.entry-field-required { border: 1px solid; border-color: red; } +.entry-field-required:focus { box-shadow: inset 0 0 0 1px red; border-color: red; } \ No newline at end of file
===================================== gajim/gtk/dataform.py ===================================== @@ -214,6 +214,7 @@ class ListMultiField(Field): self._widget.set_min_content_height(100) self._widget.set_max_content_height(300) self._widget.add(self._treeview) + self._widget.get_style_context().add_class('field-normal')
class ListMutliTreeView(Gtk.TreeView): @@ -299,6 +300,8 @@ class JidMultiField(Field): self._widget.pack_start(self._scrolled_window, True, True, 0) self._widget.pack_end(self._button_box, False, False, 0)
+ self._treeview.update_required_css() + def _add_clicked(self, _widget): self._treeview.get_model().append([''])
@@ -314,6 +317,7 @@ class JidMultiField(Field): continue jids.append(row[0]) self._field.values = jids + self._treeview.update_required_css()
class JidMutliTreeView(Gtk.TreeView): @@ -344,6 +348,7 @@ class JidMutliTreeView(Gtk.TreeView): iter_ = self._store.get_iter(path) self._store.set_value(iter_, 0, new_text) self._set_values() + self.update_required_css()
def _set_values(self): jids = [] @@ -353,6 +358,19 @@ class JidMutliTreeView(Gtk.TreeView): jids.append(row[0]) self._field.values = jids
+ def update_required_css(self): + style = self.get_parent().get_style_context() + if not self._field.required: + style.add_class('field-normal') + return + + if self._field.values: + style.remove_class('field-required') + style.add_class('field-normal') + else: + style.remove_class('field-normal') + style.add_class('field-required') +
class TextSingleField(Field): def __init__(self, field, options): @@ -361,9 +379,20 @@ class TextSingleField(Field): self._widget = Gtk.Entry() self._widget.set_text(field.value) self._widget.connect('changed', self._changed) + self._update_required_css()
def _changed(self, _widget): self._field.value = self._widget.get_text() + self._update_required_css() + + def _update_required_css(self): + if not self._field.required: + return + style = self._widget.get_style_context() + if self._field.value: + style.remove_class('entry-field-required') + else: + style.add_class('entry-field-required')
class TextPrivateField(TextSingleField): @@ -387,12 +416,23 @@ class TextMultiField(Field): self._widget.set_propagate_natural_height(True) self._widget.set_min_content_height(100) self._widget.set_max_content_height(300) - self._textview = Gtk.TextView()
+ self._textview = Gtk.TextView() self._textview.get_buffer().set_text(field.value) self._textview.get_buffer().connect('changed', self._changed)
self._widget.add(self._textview) + self._update_required_css()
def _changed(self, widget): self._field.value = widget.get_text(*widget.get_bounds(), False) + self._update_required_css() + + def _update_required_css(self): + if not self._field.required: + return + style = self._widget.get_style_context() + if self._field.value: + style.remove_class('field-required') + else: + style.add_class('field-required')
===================================== gajim/gtk/groupchat_config.py ===================================== @@ -75,6 +75,7 @@ class GroupchatConfig(Gtk.ApplicationWindow): self._ui.stack.set_visible_child_name('affiliation')
self._ui.connect_signals(self) + self.connect('delete-event', self._cancel) self.show_all() self._ui.stack.notify('visible-child-name')
@@ -94,19 +95,19 @@ class GroupchatConfig(Gtk.ApplicationWindow): affiliation = 'member'
treeview = self._get_current_treeview() - treeview.get_model().append([None, - None, - None, - affiliation, - text, - affiliation_edit, - jid_edit]) + iter_ = treeview.get_model().append([None, + None, + None, + affiliation, + text, + affiliation_edit, + jid_edit])
# Scroll to added row - row = treeview.get_model()[-1] - treeview.scroll_to_cell(row.path, None, False, 0, 0) + path = treeview.get_model().get_path(iter_) + treeview.scroll_to_cell(path, None, False, 0, 0) treeview.get_selection().unselect_all() - treeview.get_selection().select_path(row.path) + treeview.get_selection().select_path(path)
def _on_remove(self, *args): treeview = self._get_current_treeview() @@ -286,10 +287,13 @@ class GroupchatConfig(Gtk.ApplicationWindow): return add, remove, modified
def _on_cancel(self, *args): + self._cancel() + self.destroy() + + def _cancel(self, *args): if self._form and self._own_affiliation == 'owner': con = app.connections[self.account] con.get_module('MUC').cancel_config(self.jid) - self.destroy()
def _set_affiliations(self): add, remove, modified = self._get_diff()
View it on GitLab: https://dev.gajim.org/gajim/gajim/compare/21656ebfe8e48ad74b29c5601fb48f880b...