ServerInfo: Simplify code around feature creation

- Fix traceback when httpupload is not available
- Improve copy to clipboard text
This commit is contained in:
Daniel Brötzmann 2019-04-30 19:32:00 +02:00 committed by Philipp Hörist
parent 7ed770d7c8
commit 9e25930106
1 changed files with 24 additions and 22 deletions

View File

@ -159,52 +159,54 @@ class ServerInfoDialog(Gtk.Dialog):
def add_feature(self, feature): def add_feature(self, feature):
item = FeatureItem(feature) item = FeatureItem(feature)
self.feature_listbox.add(item) self.feature_listbox.add(item)
item.get_parent().set_tooltip_text(item.tooltip) item.get_parent().set_tooltip_text(item.tooltip or '')
def get_features(self): def get_features(self):
con = app.connections[self.account] con = app.connections[self.account]
Feature = namedtuple('Feature', Feature = namedtuple('Feature',
['name', 'available', 'tooltip', 'enabled']) ['name', 'available', 'tooltip', 'enabled'])
Feature.__new__.__defaults__ = (None, None) # type: ignore
# HTTP File Upload # HTTP File Upload
max_file_size = con.get_module('HTTPUpload').max_file_size http_upload_info = con.get_module('HTTPUpload').httpupload_namespace
tooltip_size = '' if con.get_module('HTTPUpload').available:
if max_file_size is not None: max_file_size = con.get_module('HTTPUpload').max_file_size
max_file_size = max_file_size / (1024 * 1024) if max_file_size is not None:
tooltip_size = ' (max. %s MiB)' % max_file_size max_file_size = max_file_size / (1024 * 1024)
http_upload_info = http_upload_info + ' (max. %s MiB)' % \
max_file_size
return [ return [
Feature('XEP-0016: Privacy Lists', Feature('XEP-0016: Privacy Lists',
con.get_module('PrivacyLists').supported, '', None), con.get_module('PrivacyLists').supported),
Feature('XEP-0045: Multi-User Chat', con.muc_jid, '', None), Feature('XEP-0045: Multi-User Chat', con.muc_jid),
Feature('XEP-0054: vcard-temp', Feature('XEP-0054: vcard-temp',
con.get_module('VCardTemp').supported, '', None), con.get_module('VCardTemp').supported),
Feature('XEP-0163: Personal Eventing Protocol', Feature('XEP-0163: Personal Eventing Protocol',
con.get_module('PEP').supported, '', None), con.get_module('PEP').supported),
Feature('XEP-0163: #publish-options', Feature('XEP-0163: #publish-options',
con.get_module('PubSub').publish_options, '', None), con.get_module('PubSub').publish_options),
Feature('XEP-0191: Blocking Command', Feature('XEP-0191: Blocking Command',
con.get_module('Blocking').supported, con.get_module('Blocking').supported,
nbxmpp.NS_BLOCKING, None), nbxmpp.NS_BLOCKING),
Feature('XEP-0198: Stream Management', Feature('XEP-0198: Stream Management',
con.connection.sm_enabled, nbxmpp.NS_STREAM_MGMT, None), con.connection.sm_enabled, nbxmpp.NS_STREAM_MGMT),
Feature('XEP-0258: Security Labels in XMPP', Feature('XEP-0258: Security Labels in XMPP',
con.get_module('SecLabels').supported, con.get_module('SecLabels').supported,
nbxmpp.NS_SECLABEL, None), nbxmpp.NS_SECLABEL),
Feature('XEP-0280: Message Carbons', Feature('XEP-0280: Message Carbons',
con.get_module('Carbons').supported, con.get_module('Carbons').supported,
nbxmpp.NS_CARBONS, None), nbxmpp.NS_CARBONS),
Feature('XEP-0313: Message Archive Management', Feature('XEP-0313: Message Archive Management',
con.get_module('MAM').archiving_namespace, con.get_module('MAM').available,
con.get_module('MAM').archiving_namespace, None), con.get_module('MAM').archiving_namespace),
Feature('XEP-0363: HTTP File Upload', Feature('XEP-0363: HTTP File Upload',
con.get_module('HTTPUpload').available, con.get_module('HTTPUpload').available,
con.get_module('HTTPUpload').httpupload_namespace + \ http_upload_info),
tooltip_size, None),
Feature('XEP-0398: Avatar Conversion', Feature('XEP-0398: Avatar Conversion',
con.avatar_conversion, '', None), con.avatar_conversion),
Feature('XEP-0411: Bookmarks Conversion', Feature('XEP-0411: Bookmarks Conversion',
con.get_module('Bookmarks').conversion, '', None) con.get_module('Bookmarks').conversion)
] ]
def add_info(self, info): def add_info(self, info):
@ -226,7 +228,7 @@ class ServerInfoDialog(Gtk.Dialog):
available = 'Yes' available = 'Yes'
else: else:
available = 'No' available = 'No'
if feature.tooltip != '': if feature.tooltip is not None:
tooltip = '(%s)' % feature.tooltip tooltip = '(%s)' % feature.tooltip
else: else:
tooltip = '' tooltip = ''