MUC: Update menu after preference change
- Simplify action lookup
This commit is contained in:
parent
19c45510a0
commit
7b558d692c
|
@ -437,48 +437,45 @@ class GroupchatControl(ChatControlBase):
|
||||||
con = app.connections[self.account]
|
con = app.connections[self.account]
|
||||||
|
|
||||||
# Destroy Room
|
# Destroy Room
|
||||||
win.lookup_action('destroy-' + self.control_id).set_enabled(
|
self._get_action('destroy-').set_enabled(self.is_connected and
|
||||||
self.is_connected and contact.affiliation.is_owner)
|
contact.affiliation.is_owner)
|
||||||
|
|
||||||
# Configure Room
|
# Configure Room
|
||||||
win.lookup_action('configure-' + self.control_id).set_enabled(
|
self._get_action('configure-').set_enabled(
|
||||||
self.is_connected and contact.affiliation in (Affiliation.ADMIN,
|
self.is_connected and contact.affiliation in (Affiliation.ADMIN,
|
||||||
Affiliation.OWNER))
|
Affiliation.OWNER))
|
||||||
|
|
||||||
# Bookmarks
|
# Bookmarks
|
||||||
con = app.connections[self.account]
|
con = app.connections[self.account]
|
||||||
bookmarked = self.room_jid in con.get_module('Bookmarks').bookmarks
|
bookmarked = self.room_jid in con.get_module('Bookmarks').bookmarks
|
||||||
win.lookup_action('bookmark-' + self.control_id).set_enabled(
|
self._get_action('bookmark-').set_enabled(self.is_connected and
|
||||||
self.is_connected and not bookmarked)
|
not bookmarked)
|
||||||
|
|
||||||
# Request Voice
|
# Request Voice
|
||||||
role = self.get_role(self.nick)
|
role = self.get_role(self.nick)
|
||||||
win.lookup_action('request-voice-' + self.control_id).set_enabled(
|
self._get_action('request-voice-').set_enabled(self.is_connected and
|
||||||
self.is_connected and role.is_visitor)
|
role.is_visitor)
|
||||||
|
|
||||||
# Change Subject
|
# Change Subject
|
||||||
subject = False
|
subject = False
|
||||||
if contact is not None:
|
if contact is not None:
|
||||||
subject = muc_caps_cache.is_subject_change_allowed(
|
subject = muc_caps_cache.is_subject_change_allowed(
|
||||||
self.room_jid, contact.affiliation)
|
self.room_jid, contact.affiliation)
|
||||||
win.lookup_action('change-subject-' + self.control_id).set_enabled(
|
self._get_action('change-subject-').set_enabled(self.is_connected and
|
||||||
self.is_connected and subject)
|
subject)
|
||||||
|
|
||||||
# Change Nick
|
# Change Nick
|
||||||
win.lookup_action('change-nick-' + self.control_id).set_enabled(
|
self._get_action('change-nick-').set_enabled(self.is_connected)
|
||||||
self.is_connected)
|
|
||||||
|
|
||||||
# Execute command
|
# Execute command
|
||||||
win.lookup_action('execute-command-' + self.control_id).set_enabled(
|
self._get_action('execute-command-').set_enabled(self.is_connected)
|
||||||
self.is_connected)
|
|
||||||
|
|
||||||
# Send file (HTTP File Upload)
|
# Send file (HTTP File Upload)
|
||||||
httpupload = win.lookup_action(
|
httpupload = self._get_action(
|
||||||
'send-file-httpupload-' + self.control_id)
|
'send-file-httpupload-')
|
||||||
httpupload.set_enabled(
|
httpupload.set_enabled(self.is_connected and
|
||||||
self.is_connected and con.get_module('HTTPUpload').available)
|
con.get_module('HTTPUpload').available)
|
||||||
win.lookup_action('send-file-' + self.control_id).set_enabled(
|
self._get_action('send-file-').set_enabled(httpupload.get_enabled())
|
||||||
httpupload.get_enabled())
|
|
||||||
|
|
||||||
if self.is_connected and httpupload.get_enabled():
|
if self.is_connected and httpupload.get_enabled():
|
||||||
tooltip_text = _('Send File…')
|
tooltip_text = _('Send File…')
|
||||||
|
@ -488,12 +485,32 @@ class GroupchatControl(ChatControlBase):
|
||||||
|
|
||||||
# Upload Avatar
|
# Upload Avatar
|
||||||
vcard_support = muc_caps_cache.supports(self.room_jid, nbxmpp.NS_VCARD)
|
vcard_support = muc_caps_cache.supports(self.room_jid, nbxmpp.NS_VCARD)
|
||||||
win.lookup_action('upload-avatar-' + self.control_id).set_enabled(
|
self._get_action('upload-avatar-').set_enabled(
|
||||||
self.is_connected and vcard_support and contact.affiliation.is_owner)
|
self.is_connected and
|
||||||
|
vcard_support and
|
||||||
|
contact.affiliation.is_owner)
|
||||||
|
|
||||||
# Sync Threshold
|
# Sync Threshold
|
||||||
has_mam = muc_caps_cache.has_mam(self.room_jid)
|
has_mam = muc_caps_cache.has_mam(self.room_jid)
|
||||||
win.lookup_action('choose-sync-' + self.control_id).set_enabled(has_mam)
|
self._get_action('choose-sync-').set_enabled(has_mam)
|
||||||
|
|
||||||
|
# Print join/left
|
||||||
|
join_default = app.config.get('print_join_left_default')
|
||||||
|
value = app.config.get_per('rooms', self.contact.jid,
|
||||||
|
'print_join_left', join_default)
|
||||||
|
self._get_action('print-join-left-').set_state(
|
||||||
|
GLib.Variant.new_boolean(value))
|
||||||
|
|
||||||
|
# Print join/left
|
||||||
|
status_default = app.config.get('print_status_muc_default')
|
||||||
|
value = app.config.get_per('rooms', self.contact.jid,
|
||||||
|
'print_status', status_default)
|
||||||
|
self._get_action('print-status-').set_state(
|
||||||
|
GLib.Variant.new_boolean(value))
|
||||||
|
|
||||||
|
def _get_action(self, name):
|
||||||
|
win = self.parent_win.window
|
||||||
|
return win.lookup_action(name + self.control_id)
|
||||||
|
|
||||||
def _cell_data_func(self, column, renderer, model, iter_, user_data):
|
def _cell_data_func(self, column, renderer, model, iter_, user_data):
|
||||||
# Background color has to be rendered for all cells
|
# Background color has to be rendered for all cells
|
||||||
|
|
|
@ -621,9 +621,13 @@ class Preferences(Gtk.ApplicationWindow):
|
||||||
|
|
||||||
def _on_join_leave_toggled(self, widget):
|
def _on_join_leave_toggled(self, widget):
|
||||||
self.on_checkbutton_toggled(widget, 'print_join_left_default')
|
self.on_checkbutton_toggled(widget, 'print_join_left_default')
|
||||||
|
for control in self._get_all_muc_controls():
|
||||||
|
control.update_actions()
|
||||||
|
|
||||||
def _on_status_change_toggled(self, widget):
|
def _on_status_change_toggled(self, widget):
|
||||||
self.on_checkbutton_toggled(widget, 'print_status_muc_default')
|
self.on_checkbutton_toggled(widget, 'print_status_muc_default')
|
||||||
|
for control in self._get_all_muc_controls():
|
||||||
|
control.update_actions()
|
||||||
|
|
||||||
def on_show_chatstate_in_tabs_toggled(self, widget):
|
def on_show_chatstate_in_tabs_toggled(self, widget):
|
||||||
self.on_checkbutton_toggled(widget, 'show_chatstate_in_tabs')
|
self.on_checkbutton_toggled(widget, 'show_chatstate_in_tabs')
|
||||||
|
|
Loading…
Reference in New Issue