Rename gajim.common.gajim to avoid name conflicts

This commit is contained in:
André Apitzsch 2017-08-13 13:18:56 +02:00
parent 56d002ce34
commit 89c7eb6e6a
93 changed files with 4725 additions and 4726 deletions

View File

@ -29,7 +29,7 @@ from gi.repository import GLib
from gi.repository import Gtk from gi.repository import Gtk
import nbxmpp import nbxmpp
from gajim.common import gajim from gajim.common import app
from gajim.common import dataforms from gajim.common import dataforms
from gajim import gtkgui_helpers from gajim import gtkgui_helpers
@ -55,7 +55,7 @@ class CommandWindow:
""" """
# an account object # an account object
self.account = gajim.connections[account] self.account = app.connections[account]
self.jid = jid self.jid = jid
self.commandnode = commandnode self.commandnode = commandnode
self.data_form_widget = None self.data_form_widget = None

View File

@ -30,7 +30,7 @@ from gajim import gtkgui_helpers
from gi.repository import GLib from gi.repository import GLib
from gi.repository import Pango from gi.repository import Pango
from gajim.common import gajim from gajim.common import app
@unique @unique
class Column(IntEnum): class Column(IntEnum):
@ -73,7 +73,7 @@ class AdvancedConfigurationWindow(object):
self.xml = gtkgui_helpers.get_gtk_builder('advanced_configuration_window.ui') self.xml = gtkgui_helpers.get_gtk_builder('advanced_configuration_window.ui')
self.window = self.xml.get_object('advanced_configuration_window') self.window = self.xml.get_object('advanced_configuration_window')
self.window.set_transient_for( self.window.set_transient_for(
gajim.interface.instances['preferences'].window) app.interface.instances['preferences'].window)
self.entry = self.xml.get_object('advanced_entry') self.entry = self.xml.get_object('advanced_entry')
self.desc_label = self.xml.get_object('advanced_desc_label') self.desc_label = self.xml.get_object('advanced_desc_label')
self.restart_box = self.xml.get_object('restart_box') self.restart_box = self.xml.get_object('restart_box')
@ -130,7 +130,7 @@ class AdvancedConfigurationWindow(object):
self.xml.connect_signals(self) self.xml.connect_signals(self)
self.restart_box.set_no_show_all(True) self.restart_box.set_no_show_all(True)
self.window.show_all() self.window.show_all()
gajim.interface.instances['advanced_config'] = self app.interface.instances['advanced_config'] = self
def cb_value_column_data(self, col, cell, model, iter_, data): def cb_value_column_data(self, col, cell, model, iter_, data):
""" """
@ -166,9 +166,9 @@ class AdvancedConfigurationWindow(object):
# Get text from first column in this row # Get text from first column in this row
desc = None desc = None
if len(opt_path) == 3: if len(opt_path) == 3:
desc = gajim.config.get_desc_per(opt_path[2], opt_path[0]) desc = app.config.get_desc_per(opt_path[2], opt_path[0])
elif len(opt_path) == 1: elif len(opt_path) == 1:
desc = gajim.config.get_desc(opt_path[0]) desc = app.config.get_desc(opt_path[0])
if desc: if desc:
self.desc_label.set_text(desc) self.desc_label.set_text(desc)
else: else:
@ -205,10 +205,10 @@ class AdvancedConfigurationWindow(object):
key = keyrow[0] key = keyrow[0]
self.remember_option(option + '\n' + key + '\n' + optname, self.remember_option(option + '\n' + key + '\n' + optname,
modelrow[1], newval) modelrow[1], newval)
gajim.config.set_per(optname, key, option, newval) app.config.set_per(optname, key, option, newval)
else: else:
self.remember_option(option, modelrow[1], newval) self.remember_option(option, modelrow[1], newval)
gajim.config.set(option, newval) app.config.set(option, newval)
modelrow[1] = self.right_true_dict[newval] modelrow[1] = self.right_true_dict[newval]
self.check_for_restart() self.check_for_restart()
@ -217,10 +217,10 @@ class AdvancedConfigurationWindow(object):
for opt in self.changed_opts: for opt in self.changed_opts:
opt_path = opt.split('\n') opt_path = opt.split('\n')
if len(opt_path)==3: if len(opt_path)==3:
restart = gajim.config.get_restart_per(opt_path[2], opt_path[1], restart = app.config.get_restart_per(opt_path[2], opt_path[1],
opt_path[0]) opt_path[0])
else: else:
restart = gajim.config.get_restart(opt_path[0]) restart = app.config.get_restart(opt_path[0])
if restart: if restart:
if self.changed_opts[opt][0] != self.changed_opts[opt][1]: if self.changed_opts[opt][0] != self.changed_opts[opt][1]:
self.restart_box.set_no_show_all(False) self.restart_box.set_no_show_all(False)
@ -242,16 +242,16 @@ class AdvancedConfigurationWindow(object):
optname = optnamerow[0] optname = optnamerow[0]
self.remember_option(option + '\n' + key + '\n' + optname, modelrow[1], self.remember_option(option + '\n' + key + '\n' + optname, modelrow[1],
text) text)
gajim.config.set_per(optname, key, option, text) app.config.set_per(optname, key, option, text)
else: else:
self.remember_option(option, modelrow[1], text) self.remember_option(option, modelrow[1], text)
gajim.config.set(option, text) app.config.set(option, text)
modelrow[1] = text modelrow[1] = text
self.check_for_restart() self.check_for_restart()
@staticmethod @staticmethod
def on_advanced_configuration_window_destroy(widget): def on_advanced_configuration_window_destroy(widget):
del gajim.interface.instances['advanced_config'] del app.interface.instances['advanced_config']
def on_reset_button_clicked(self, widget): def on_reset_button_clicked(self, widget):
model, iter_ = self.treeview.get_selection().get_selected() model, iter_ = self.treeview.get_selection().get_selected()
@ -260,9 +260,9 @@ class AdvancedConfigurationWindow(object):
path = model.get_path(iter_) path = model.get_path(iter_)
opt_path = self.get_option_path(model, iter_) opt_path = self.get_option_path(model, iter_)
if len(opt_path) == 1: if len(opt_path) == 1:
default = gajim.config.get_default(opt_path[0]) default = app.config.get_default(opt_path[0])
elif len(opt_path) == 3: elif len(opt_path) == 3:
default = gajim.config.get_default_per(opt_path[2], opt_path[0]) default = app.config.get_default_per(opt_path[2], opt_path[0])
if model[iter_][Column.TYPE] == self.types['boolean']: if model[iter_][Column.TYPE] == self.types['boolean']:
if self.right_true_dict[default] == model[iter_][Column.VALUE]: if self.right_true_dict[default] == model[iter_][Column.VALUE]:
@ -277,10 +277,10 @@ class AdvancedConfigurationWindow(object):
key = keyrow[0] key = keyrow[0]
self.remember_option(option + '\n' + key + '\n' + optname, self.remember_option(option + '\n' + key + '\n' + optname,
modelrow[Column.VALUE], default) modelrow[Column.VALUE], default)
gajim.config.set_per(optname, key, option, default) app.config.set_per(optname, key, option, default)
else: else:
self.remember_option(option, modelrow[Column.VALUE], default) self.remember_option(option, modelrow[Column.VALUE], default)
gajim.config.set(option, default) app.config.set(option, default)
modelrow[Column.VALUE] = self.right_true_dict[default] modelrow[Column.VALUE] = self.right_true_dict[default]
self.check_for_restart() self.check_for_restart()
else: else:
@ -292,16 +292,16 @@ class AdvancedConfigurationWindow(object):
self.window.destroy() self.window.destroy()
def fill_model(self, node=None, parent=None): def fill_model(self, node=None, parent=None):
for item, option in gajim.config.get_children(node): for item, option in app.config.get_children(node):
name = item[-1] name = item[-1]
if option is None: # Node if option is None: # Node
newparent = self.model.append(parent, [name, '', '']) newparent = self.model.append(parent, [name, '', ''])
self.fill_model(item, newparent) self.fill_model(item, newparent)
else: # Leaf else: # Leaf
if len(item) == 1: if len(item) == 1:
type_ = self.types[gajim.config.get_type(name)] type_ = self.types[app.config.get_type(name)]
elif len(item) == 3: elif len(item) == 3:
type_ = self.types[gajim.config.get_type_per(item[0], type_ = self.types[app.config.get_type_per(item[0],
item[2])] item[2])]
if name == 'password': if name == 'password':
value = _('Hidden') value = _('Hidden')
@ -321,9 +321,9 @@ class AdvancedConfigurationWindow(object):
if model[it][Column.TYPE] != '': if model[it][Column.TYPE] != '':
opt_path = self.get_option_path(model, it) opt_path = self.get_option_path(model, it)
if len(opt_path) == 3: if len(opt_path) == 3:
desc = gajim.config.get_desc_per(opt_path[2], opt_path[0]) desc = app.config.get_desc_per(opt_path[2], opt_path[0])
elif len(opt_path) == 1: elif len(opt_path) == 1:
desc = gajim.config.get_desc(opt_path[0]) desc = app.config.get_desc(opt_path[0])
if search_string in model[it][Column.PREFERENCE_NAME] or (desc and \ if search_string in model[it][Column.PREFERENCE_NAME] or (desc and \
search_string in desc.lower()): search_string in desc.lower()):
return True return True

View File

@ -18,9 +18,9 @@
## along with Gajim. If not, see <http://www.gnu.org/licenses/>. ## along with Gajim. If not, see <http://www.gnu.org/licenses/>.
## ##
from gajim.common import gajim as c_gajim from gajim.common import app
from gajim.common import helpers from gajim.common import helpers
from gajim.common.gajim import interface from gajim.common.app import interface
from gajim.common.exceptions import GajimGeneralException from gajim.common.exceptions import GajimGeneralException
from gi.repository import Gtk from gi.repository import Gtk
import sys import sys
@ -38,8 +38,8 @@ from gajim.server_info import ServerInfoDialog
class AppActions(): class AppActions():
''' Action Callbacks ''' ''' Action Callbacks '''
def __init__(self, app: Gtk.Application): def __init__(self, application: Gtk.Application):
self.application = app self.application = application
# Application Menu Actions # Application Menu Actions
@ -89,13 +89,13 @@ class AppActions():
def on_send_server_message(self, action, param): def on_send_server_message(self, action, param):
account = param.get_string() account = param.get_string()
server = c_gajim.config.get_per('accounts', account, 'hostname') server = app.config.get_per('accounts', account, 'hostname')
server += '/announce/online' server += '/announce/online'
dialogs.SingleMessageWindow(account, server, 'send') dialogs.SingleMessageWindow(account, server, 'send')
def on_service_disco(self, action, param): def on_service_disco(self, action, param):
account = param.get_string() account = param.get_string()
server_jid = c_gajim.config.get_per('accounts', account, 'hostname') server_jid = app.config.get_per('accounts', account, 'hostname')
if server_jid in interface.instances[account]['disco']: if server_jid in interface.instances[account]['disco']:
interface.instances[account]['disco'][server_jid].\ interface.instances[account]['disco'][server_jid].\
window.present() window.present()
@ -108,8 +108,8 @@ class AppActions():
def on_join_gc(self, action, param): def on_join_gc(self, action, param):
account = param.get_string() account = param.get_string()
invisible_show = c_gajim.SHOW_LIST.index('invisible') invisible_show = app.SHOW_LIST.index('invisible')
if c_gajim.connections[account].connected == invisible_show: if app.connections[account].connected == invisible_show:
dialogs.ErrorDialog(_( dialogs.ErrorDialog(_(
'You cannot join a group chat while you are invisible')) 'You cannot join a group chat while you are invisible'))
return return
@ -178,21 +178,21 @@ class AppActions():
def on_set_motd(self, action, param): def on_set_motd(self, action, param):
account = param.get_string() account = param.get_string()
server = c_gajim.config.get_per('accounts', account, 'hostname') server = app.config.get_per('accounts', account, 'hostname')
server += '/announce/motd' server += '/announce/motd'
dialogs.SingleMessageWindow(account, server, 'send') dialogs.SingleMessageWindow(account, server, 'send')
def on_update_motd(self, action, param): def on_update_motd(self, action, param):
account = param.get_string() account = param.get_string()
server = c_gajim.config.get_per('accounts', account, 'hostname') server = app.config.get_per('accounts', account, 'hostname')
server += '/announce/motd/update' server += '/announce/motd/update'
dialogs.SingleMessageWindow(account, server, 'send') dialogs.SingleMessageWindow(account, server, 'send')
def on_delete_motd(self, action, param): def on_delete_motd(self, action, param):
account = param.get_string() account = param.get_string()
server = c_gajim.config.get_per('accounts', account, 'hostname') server = app.config.get_per('accounts', account, 'hostname')
server += '/announce/motd/delete' server += '/announce/motd/delete'
c_gajim.connections[account].send_motd(server) app.connections[account].send_motd(server)
# Help Actions # Help Actions

View File

@ -40,7 +40,7 @@ from gajim import message_control
from gajim import dialogs from gajim import dialogs
from gajim.common import logger from gajim.common import logger
from gajim.common import gajim from gajim.common import app
from gajim.common import helpers from gajim.common import helpers
from gajim.common import exceptions from gajim.common import exceptions
from gajim.common import ged from gajim.common import ged
@ -146,10 +146,10 @@ class ChatControl(ChatControlBase):
self._on_contact_information_menuitem_activate) self._on_contact_information_menuitem_activate)
self.handlers[id_] = self._contact_information_button self.handlers[id_] = self._contact_information_button
compact_view = gajim.config.get('compact_view') compact_view = app.config.get('compact_view')
self.chat_buttons_set_visible(compact_view) self.chat_buttons_set_visible(compact_view)
self.widget_set_visible(self.xml.get_object('banner_eventbox'), self.widget_set_visible(self.xml.get_object('banner_eventbox'),
gajim.config.get('hide_chat_banner')) app.config.get('hide_chat_banner'))
self.authentication_button = self.xml.get_object( self.authentication_button = self.xml.get_object(
'authentication_button') 'authentication_button')
@ -197,7 +197,7 @@ class ChatControl(ChatControlBase):
self.handlers[id_] = message_tv_buffer self.handlers[id_] = message_tv_buffer
widget = self.xml.get_object('avatar_eventbox') widget = self.xml.get_object('avatar_eventbox')
widget.set_property('height-request', gajim.config.get( widget.set_property('height-request', app.config.get(
'chat_avatar_height')) 'chat_avatar_height'))
id_ = widget.connect('enter-notify-event', id_ = widget.connect('enter-notify-event',
self.on_avatar_eventbox_enter_notify_event) self.on_avatar_eventbox_enter_notify_event)
@ -269,7 +269,7 @@ class ChatControl(ChatControlBase):
# and it's not the same # and it's not the same
if not resource: if not resource:
resource = contact.resource resource = contact.resource
session = gajim.connections[self.account].find_controlless_session( session = app.connections[self.account].find_controlless_session(
self.contact.jid, resource) self.contact.jid, resource)
self.setup_seclabel(self.xml.get_object('label_selector')) self.setup_seclabel(self.xml.get_object('label_selector'))
@ -294,37 +294,37 @@ class ChatControl(ChatControlBase):
self.restore_conversation() self.restore_conversation()
self.msg_textview.grab_focus() self.msg_textview.grab_focus()
gajim.ged.register_event_handler('pep-received', ged.GUI1, app.ged.register_event_handler('pep-received', ged.GUI1,
self._nec_pep_received) self._nec_pep_received)
gajim.ged.register_event_handler('vcard-received', ged.GUI1, app.ged.register_event_handler('vcard-received', ged.GUI1,
self._nec_vcard_received) self._nec_vcard_received)
gajim.ged.register_event_handler('failed-decrypt', ged.GUI1, app.ged.register_event_handler('failed-decrypt', ged.GUI1,
self._nec_failed_decrypt) self._nec_failed_decrypt)
gajim.ged.register_event_handler('chatstate-received', ged.GUI1, app.ged.register_event_handler('chatstate-received', ged.GUI1,
self._nec_chatstate_received) self._nec_chatstate_received)
gajim.ged.register_event_handler('caps-received', ged.GUI1, app.ged.register_event_handler('caps-received', ged.GUI1,
self._nec_caps_received) self._nec_caps_received)
# PluginSystem: adding GUI extension point for this ChatControl # PluginSystem: adding GUI extension point for this ChatControl
# instance object # instance object
gajim.plugin_manager.gui_extension_point('chat_control', self) app.plugin_manager.gui_extension_point('chat_control', self)
def subscribe_events(self): def subscribe_events(self):
""" """
Register listeners to the events class Register listeners to the events class
""" """
gajim.events.event_added_subscribe(self.on_event_added) app.events.event_added_subscribe(self.on_event_added)
gajim.events.event_removed_subscribe(self.on_event_removed) app.events.event_removed_subscribe(self.on_event_removed)
def unsubscribe_events(self): def unsubscribe_events(self):
""" """
Unregister listeners to the events class Unregister listeners to the events class
""" """
gajim.events.event_added_unsubscribe(self.on_event_added) app.events.event_added_unsubscribe(self.on_event_added)
gajim.events.event_removed_unsubscribe(self.on_event_removed) app.events.event_removed_unsubscribe(self.on_event_removed)
def _update_toolbar(self): def _update_toolbar(self):
if (gajim.connections[self.account].connected > 1 and not \ if (app.connections[self.account].connected > 1 and not \
self.TYPE_ID == 'pm') or (self.contact.show != 'offline' and \ self.TYPE_ID == 'pm') or (self.contact.show != 'offline' and \
self.TYPE_ID == 'pm'): self.TYPE_ID == 'pm'):
send_button = self.xml.get_object('send_button') send_button = self.xml.get_object('send_button')
@ -347,14 +347,14 @@ class ChatControl(ChatControlBase):
# Add to roster # Add to roster
if not isinstance(self.contact, GC_Contact) \ if not isinstance(self.contact, GC_Contact) \
and _('Not in Roster') in self.contact.groups and \ and _('Not in Roster') in self.contact.groups and \
gajim.connections[self.account].roster_supported: app.connections[self.account].roster_supported:
self._add_to_roster_button.show() self._add_to_roster_button.show()
else: else:
self._add_to_roster_button.hide() self._add_to_roster_button.hide()
# Jingle detection # Jingle detection
if self.contact.supports(NS_JINGLE_ICE_UDP) and \ if self.contact.supports(NS_JINGLE_ICE_UDP) and \
gajim.HAVE_FARSTREAM and self.contact.resource: app.HAVE_FARSTREAM and self.contact.resource:
self.audio_available = self.contact.supports(NS_JINGLE_RTP_AUDIO) self.audio_available = self.contact.supports(NS_JINGLE_RTP_AUDIO)
self.video_available = self.contact.supports(NS_JINGLE_RTP_VIDEO) self.video_available = self.contact.supports(NS_JINGLE_RTP_VIDEO)
else: else:
@ -373,7 +373,7 @@ class ChatControl(ChatControlBase):
# not installed # not installed
audio_tooltip_text = _('Toggle audio session') + '\n' audio_tooltip_text = _('Toggle audio session') + '\n'
video_tooltip_text = _('Toggle video session') + '\n' video_tooltip_text = _('Toggle video session') + '\n'
if not gajim.HAVE_FARSTREAM: if not app.HAVE_FARSTREAM:
ext_text = _('Feature not available, see Help->Features') ext_text = _('Feature not available, see Help->Features')
self._audio_button.set_tooltip_text(audio_tooltip_text + ext_text) self._audio_button.set_tooltip_text(audio_tooltip_text + ext_text)
self._video_button.set_tooltip_text(video_tooltip_text + ext_text) self._video_button.set_tooltip_text(video_tooltip_text + ext_text)
@ -404,7 +404,7 @@ class ChatControl(ChatControlBase):
"them a file.")) "them a file."))
# Convert to GC # Convert to GC
if gajim.config.get_per('accounts', self.account, 'is_zeroconf'): if app.config.get_per('accounts', self.account, 'is_zeroconf'):
self._convert_to_gc_button.set_no_show_all(True) self._convert_to_gc_button.set_no_show_all(True)
self._convert_to_gc_button.hide() self._convert_to_gc_button.hide()
else: else:
@ -414,7 +414,7 @@ class ChatControl(ChatControlBase):
self._convert_to_gc_button.set_sensitive(False) self._convert_to_gc_button.set_sensitive(False)
# Information # Information
if gajim.account_is_disconnected(self.account): if app.account_is_disconnected(self.account):
self._contact_information_button.set_sensitive(False) self._contact_information_button.set_sensitive(False)
else: else:
self._contact_information_button.set_sensitive(True) self._contact_information_button.set_sensitive(True)
@ -479,8 +479,8 @@ class ChatControl(ChatControlBase):
hbox = self.xml.get_object('audio_buttons_hbox') hbox = self.xml.get_object('audio_buttons_hbox')
if self.audio_state == self.JINGLE_STATE_CONNECTED: if self.audio_state == self.JINGLE_STATE_CONNECTED:
# Set volume from config # Set volume from config
input_vol = gajim.config.get('audio_input_volume') input_vol = app.config.get('audio_input_volume')
output_vol = gajim.config.get('audio_output_volume') output_vol = app.config.get('audio_output_volume')
input_vol = max(min(input_vol, 100), 0) input_vol = max(min(input_vol, 100), 0)
output_vol = max(min(output_vol, 100), 0) output_vol = max(min(output_vol, 100), 0)
self.xml.get_object('mic_hscale').set_value(input_vol) self.xml.get_object('mic_hscale').set_value(input_vol)
@ -499,12 +499,12 @@ class ChatControl(ChatControlBase):
old_full_jid = self.get_full_jid() old_full_jid = self.get_full_jid()
self.resource = resource self.resource = resource
new_full_jid = self.get_full_jid() new_full_jid = self.get_full_jid()
# update gajim.last_message_time # update app.last_message_time
if old_full_jid in gajim.last_message_time[self.account]: if old_full_jid in app.last_message_time[self.account]:
gajim.last_message_time[self.account][new_full_jid] = \ app.last_message_time[self.account][new_full_jid] = \
gajim.last_message_time[self.account][old_full_jid] app.last_message_time[self.account][old_full_jid]
# update events # update events
gajim.events.change_jid(self.account, old_full_jid, new_full_jid) app.events.change_jid(self.account, old_full_jid, new_full_jid)
# update MessageWindow._controls # update MessageWindow._controls
self.parent_win.change_jid(self.account, old_full_jid, new_full_jid) self.parent_win.change_jid(self.account, old_full_jid, new_full_jid)
@ -553,7 +553,7 @@ class ChatControl(ChatControlBase):
self._set_jingle_state('video', state, sid=sid, reason=reason) self._set_jingle_state('video', state, sid=sid, reason=reason)
def _get_audio_content(self): def _get_audio_content(self):
session = gajim.connections[self.account].get_jingle_session( session = app.connections[self.account].get_jingle_session(
self.contact.get_full_jid(), self.audio_sid) self.contact.get_full_jid(), self.audio_sid)
return session.get_content('audio') return session.get_content('audio')
@ -572,12 +572,12 @@ class ChatControl(ChatControlBase):
def on_mic_hscale_value_changed(self, widget, value): def on_mic_hscale_value_changed(self, widget, value):
self._get_audio_content().set_mic_volume(value / 100) self._get_audio_content().set_mic_volume(value / 100)
# Save volume to config # Save volume to config
gajim.config.set('audio_input_volume', value) app.config.set('audio_input_volume', value)
def on_sound_hscale_value_changed(self, widget, value): def on_sound_hscale_value_changed(self, widget, value):
self._get_audio_content().set_out_volume(value / 100) self._get_audio_content().set_out_volume(value / 100)
# Save volume to config # Save volume to config
gajim.config.set('audio_output_volume', value) app.config.set('audio_output_volume', value)
def on_avatar_eventbox_enter_notify_event(self, widget, event): def on_avatar_eventbox_enter_notify_event(self, widget, event):
""" """
@ -658,7 +658,7 @@ class ChatControl(ChatControlBase):
self.update_toolbar() self.update_toolbar()
def _update_banner_state_image(self): def _update_banner_state_image(self):
contact = gajim.contacts.get_contact_with_highest_priority(self.account, contact = app.contacts.get_contact_with_highest_priority(self.account,
self.contact.jid) self.contact.jid)
if not contact or self.resource: if not contact or self.resource:
# For transient contacts # For transient contacts
@ -667,9 +667,9 @@ class ChatControl(ChatControlBase):
jid = contact.jid jid = contact.jid
# Set banner image # Set banner image
img_32 = gajim.interface.roster.get_appropriate_state_images(jid, img_32 = app.interface.roster.get_appropriate_state_images(jid,
size='32', icon_name=show) size='32', icon_name=show)
img_16 = gajim.interface.roster.get_appropriate_state_images(jid, img_16 = app.interface.roster.get_appropriate_state_images(jid,
icon_name=show) icon_name=show)
if show in img_32 and img_32[show].get_pixbuf(): if show in img_32 and img_32[show].get_pixbuf():
# we have 32x32! use it! # we have 32x32! use it!
@ -715,14 +715,14 @@ class ChatControl(ChatControlBase):
# in another account we need to also display the account. # in another account we need to also display the account.
# except if we are talking to two different resources of the same contact # except if we are talking to two different resources of the same contact
acct_info = '' acct_info = ''
for account in gajim.contacts.get_accounts(): for account in app.contacts.get_accounts():
if account == self.account: if account == self.account:
continue continue
if acct_info: # We already found a contact with same nick if acct_info: # We already found a contact with same nick
break break
for jid in gajim.contacts.get_jid_list(account): for jid in app.contacts.get_jid_list(account):
other_contact_ = \ other_contact_ = \
gajim.contacts.get_first_contact_from_jid(account, jid) app.contacts.get_first_contact_from_jid(account, jid)
if other_contact_.get_shown_name() == \ if other_contact_.get_shown_name() == \
self.contact.get_shown_name(): self.contact.get_shown_name():
acct_info = i18n.direction_mark + ' (%s)' % \ acct_info = i18n.direction_mark + ' (%s)' % \
@ -739,7 +739,7 @@ class ChatControl(ChatControlBase):
status_escaped = GLib.markup_escape_text(status_reduced) status_escaped = GLib.markup_escape_text(status_reduced)
font_attrs, font_attrs_small = self.get_font_attrs() font_attrs, font_attrs_small = self.get_font_attrs()
st = gajim.config.get('displayed_chat_state_notifications') st = app.config.get('displayed_chat_state_notifications')
cs = contact.chatstate cs = contact.chatstate
if cs and st in ('composing_only', 'all'): if cs and st in ('composing_only', 'all'):
if contact.show == 'offline': if contact.show == 'offline':
@ -784,7 +784,7 @@ class ChatControl(ChatControlBase):
return return
setattr(self, jingle_type + '_sid', None) setattr(self, jingle_type + '_sid', None)
setattr(self, jingle_type + '_state', self.JINGLE_STATE_NULL) setattr(self, jingle_type + '_state', self.JINGLE_STATE_NULL)
session = gajim.connections[self.account].get_jingle_session( session = app.connections[self.account].get_jingle_session(
self.contact.get_full_jid(), sid) self.contact.get_full_jid(), sid)
if session: if session:
content = session.get_content(jingle_type) content = session.get_content(jingle_type)
@ -804,7 +804,7 @@ class ChatControl(ChatControlBase):
if jingle_type == 'video': if jingle_type == 'video':
video_hbox = self.xml.get_object('video_hbox') video_hbox = self.xml.get_object('video_hbox')
video_hbox.set_no_show_all(False) video_hbox.set_no_show_all(False)
if gajim.config.get('video_see_self'): if app.config.get('video_see_self'):
fixed = self.xml.get_object('outgoing_fixed') fixed = self.xml.get_object('outgoing_fixed')
fixed.set_no_show_all(False) fixed.set_no_show_all(False)
video_hbox.show_all() video_hbox.show_all()
@ -820,10 +820,10 @@ class ChatControl(ChatControlBase):
in_da = self.xml.get_object('incoming_drawingarea') in_da = self.xml.get_object('incoming_drawingarea')
in_da.realize() in_da.realize()
in_xid = in_da.get_window().get_xid() in_xid = in_da.get_window().get_xid()
sid = gajim.connections[self.account].start_video( sid = app.connections[self.account].start_video(
self.contact.get_full_jid(), in_xid, out_xid) self.contact.get_full_jid(), in_xid, out_xid)
else: else:
sid = getattr(gajim.connections[self.account], sid = getattr(app.connections[self.account],
'start_' + jingle_type)(self.contact.get_full_jid()) 'start_' + jingle_type)(self.contact.get_full_jid())
getattr(self, 'set_' + jingle_type + '_state')('connecting', sid) getattr(self, 'set_' + jingle_type + '_state')('connecting', sid)
else: else:
@ -851,7 +851,7 @@ class ChatControl(ChatControlBase):
'authenticated': False} 'authenticated': False}
if self.encryption: if self.encryption:
gajim.plugin_manager.extension_point( app.plugin_manager.extension_point(
'encryption_state' + self.encryption, self, encryption_state) 'encryption_state' + self.encryption, self, encryption_state)
self._show_lock_image(**encryption_state) self._show_lock_image(**encryption_state)
@ -877,7 +877,7 @@ class ChatControl(ChatControlBase):
def _on_authentication_button_clicked(self, widget): def _on_authentication_button_clicked(self, widget):
if self.encryption: if self.encryption:
gajim.plugin_manager.extension_point( app.plugin_manager.extension_point(
'encryption_dialog' + self.encryption, self) 'encryption_dialog' + self.encryption, self)
def send_message(self, message, keyID='', chatstate=None, xhtml=None, def send_message(self, message, keyID='', chatstate=None, xhtml=None,
@ -888,7 +888,7 @@ class ChatControl(ChatControlBase):
if self.encryption: if self.encryption:
self.sendmessage = True self.sendmessage = True
gajim.plugin_manager.extension_point( app.plugin_manager.extension_point(
'send_message' + self.encryption, self) 'send_message' + self.encryption, self)
if not self.sendmessage: if not self.sendmessage:
return return
@ -900,7 +900,7 @@ class ChatControl(ChatControlBase):
contact = self.contact contact = self.contact
keyID = contact.keyID keyID = contact.keyID
chatstates_on = gajim.config.get('outgoing_chat_state_notifications') != \ chatstates_on = app.config.get('outgoing_chat_state_notifications') != \
'disabled' 'disabled'
chatstate_to_send = None chatstate_to_send = None
@ -915,8 +915,8 @@ class ChatControl(ChatControlBase):
def _on_sent(obj, msg_stanza, message, encrypted, xhtml, label): def _on_sent(obj, msg_stanza, message, encrypted, xhtml, label):
id_ = msg_stanza.getID() id_ = msg_stanza.getID()
xep0184_id = None xep0184_id = None
if self.contact.jid != gajim.get_jid_from_account(self.account): if self.contact.jid != app.get_jid_from_account(self.account):
if gajim.config.get_per('accounts', self.account, 'request_receipt'): if app.config.get_per('accounts', self.account, 'request_receipt'):
xep0184_id = id_ xep0184_id = id_
if label: if label:
displaymarking = label.getTag('displaymarking') displaymarking = label.getTag('displaymarking')
@ -987,7 +987,7 @@ class ChatControl(ChatControlBase):
self.print_archiving_session_details() self.print_archiving_session_details()
def get_our_nick(self): def get_our_nick(self):
return gajim.nicks[self.account] return app.nicks[self.account]
def print_conversation(self, text, frm='', tim=None, encrypted=None, def print_conversation(self, text, frm='', tim=None, encrypted=None,
subject=None, xhtml=None, simple=False, xep0184_id=None, subject=None, xhtml=None, simple=False, xep0184_id=None,
@ -1011,7 +1011,7 @@ class ChatControl(ChatControlBase):
additional_data = {} additional_data = {}
if frm == 'status': if frm == 'status':
if not gajim.config.get('print_status_in_chats'): if not app.config.get('print_status_in_chats'):
return return
kind = 'status' kind = 'status'
name = '' name = ''
@ -1032,7 +1032,7 @@ class ChatControl(ChatControlBase):
kind = 'outgoing' kind = 'outgoing'
name = self.get_our_nick() name = self.get_our_nick()
if not xhtml and not encrypted and \ if not xhtml and not encrypted and \
gajim.config.get('rst_formatting_outgoing_messages'): app.config.get('rst_formatting_outgoing_messages'):
from gajim.common.rst_xhtml_generator import create_xhtml from gajim.common.rst_xhtml_generator import create_xhtml
xhtml = create_xhtml(text) xhtml = create_xhtml(text)
if xhtml: if xhtml:
@ -1054,9 +1054,9 @@ class ChatControl(ChatControlBase):
jid = self.contact.get_full_jid() jid = self.contact.get_full_jid()
else: else:
jid = self.contact.jid jid = self.contact.jid
num_unread = len(gajim.events.get_events(self.account, jid, num_unread = len(app.events.get_events(self.account, jid,
['printed_' + self.type_id, self.type_id])) ['printed_' + self.type_id, self.type_id]))
if num_unread == 1 and not gajim.config.get('show_unread_tab_icon'): if num_unread == 1 and not app.config.get('show_unread_tab_icon'):
unread = '*' unread = '*'
elif num_unread > 1: elif num_unread > 1:
unread = '[' + str(num_unread) + ']' unread = '[' + str(num_unread) + ']'
@ -1075,7 +1075,7 @@ class ChatControl(ChatControlBase):
else: else:
jid = self.contact.jid jid = self.contact.jid
if gajim.config.get('show_avatar_in_tabs'): if app.config.get('show_avatar_in_tabs'):
avatar_pixbuf = gtkgui_helpers.get_avatar_pixbuf_from_cache(jid) avatar_pixbuf = gtkgui_helpers.get_avatar_pixbuf_from_cache(jid)
if avatar_pixbuf not in ('ask', None): if avatar_pixbuf not in ('ask', None):
avatar_pixbuf = gtkgui_helpers.get_scaled_pixbuf_by_size( avatar_pixbuf = gtkgui_helpers.get_scaled_pixbuf_by_size(
@ -1083,24 +1083,24 @@ class ChatControl(ChatControlBase):
return avatar_pixbuf return avatar_pixbuf
if count_unread: if count_unread:
num_unread = len(gajim.events.get_events(self.account, jid, num_unread = len(app.events.get_events(self.account, jid,
['printed_' + self.type_id, self.type_id])) ['printed_' + self.type_id, self.type_id]))
else: else:
num_unread = 0 num_unread = 0
# Set tab image (always 16x16); unread messages show the 'event' image # Set tab image (always 16x16); unread messages show the 'event' image
tab_img = None tab_img = None
if num_unread and gajim.config.get('show_unread_tab_icon'): if num_unread and app.config.get('show_unread_tab_icon'):
img_16 = gajim.interface.roster.get_appropriate_state_images( img_16 = app.interface.roster.get_appropriate_state_images(
self.contact.jid, icon_name='event') self.contact.jid, icon_name='event')
tab_img = img_16['event'] tab_img = img_16['event']
else: else:
contact = gajim.contacts.get_contact_with_highest_priority( contact = app.contacts.get_contact_with_highest_priority(
self.account, self.contact.jid) self.account, self.contact.jid)
if not contact or self.resource: if not contact or self.resource:
# For transient contacts # For transient contacts
contact = self.contact contact = self.contact
img_16 = gajim.interface.roster.get_appropriate_state_images( img_16 = app.interface.roster.get_appropriate_state_images(
self.contact.jid, icon_name=contact.show) self.contact.jid, icon_name=contact.show)
tab_img = img_16[contact.show] tab_img = img_16[contact.show]
@ -1112,7 +1112,7 @@ class ChatControl(ChatControlBase):
for history_menuitem (False for tranasports) and file_transfer_menuitem for history_menuitem (False for tranasports) and file_transfer_menuitem
and hide()/show() for add_to_roster_menuitem and hide()/show() for add_to_roster_menuitem
""" """
if gajim.jid_is_transport(self.contact.jid): if app.jid_is_transport(self.contact.jid):
menu = gui_menu_builder.get_transport_menu(self.contact, menu = gui_menu_builder.get_transport_menu(self.contact,
self.account) self.account)
else: else:
@ -1139,7 +1139,7 @@ class ChatControl(ChatControlBase):
# do not send if we have chat state notifications disabled # do not send if we have chat state notifications disabled
# that means we won't reply to the <active/> from other peer # that means we won't reply to the <active/> from other peer
# so we do not broadcast jep85 capabalities # so we do not broadcast jep85 capabalities
chatstate_setting = gajim.config.get('outgoing_chat_state_notifications') chatstate_setting = app.config.get('outgoing_chat_state_notifications')
if chatstate_setting == 'disabled': if chatstate_setting == 'disabled':
return return
@ -1148,7 +1148,7 @@ class ChatControl(ChatControlBase):
if contact and contact.sub in ('to', 'none'): if contact and contact.sub in ('to', 'none'):
return return
if self.contact.jid == gajim.get_jid_from_account(self.account): if self.contact.jid == app.get_jid_from_account(self.account):
return return
elif chatstate_setting == 'composing_only' and state != 'active' and\ elif chatstate_setting == 'composing_only' and state != 'active' and\
@ -1179,13 +1179,13 @@ class ChatControl(ChatControlBase):
# if wel're inactive prevent composing (XEP violation) # if wel're inactive prevent composing (XEP violation)
if contact.our_chatstate == 'inactive' and state == 'composing': if contact.our_chatstate == 'inactive' and state == 'composing':
# go active before # go active before
gajim.nec.push_outgoing_event(MessageOutgoingEvent(None, app.nec.push_outgoing_event(MessageOutgoingEvent(None,
account=self.account, jid=self.contact.jid, chatstate='active', account=self.account, jid=self.contact.jid, chatstate='active',
control=self)) control=self))
contact.our_chatstate = 'active' contact.our_chatstate = 'active'
self.reset_kbd_mouse_timeout_vars() self.reset_kbd_mouse_timeout_vars()
gajim.nec.push_outgoing_event(MessageOutgoingEvent(None, app.nec.push_outgoing_event(MessageOutgoingEvent(None,
account=self.account, jid=self.contact.jid, chatstate=state, account=self.account, jid=self.contact.jid, chatstate=state,
control=self)) control=self))
@ -1196,17 +1196,17 @@ class ChatControl(ChatControlBase):
def shutdown(self): def shutdown(self):
# PluginSystem: removing GUI extension points connected with ChatControl # PluginSystem: removing GUI extension points connected with ChatControl
# instance object # instance object
gajim.plugin_manager.remove_gui_extension_point('chat_control', self) app.plugin_manager.remove_gui_extension_point('chat_control', self)
gajim.ged.remove_event_handler('pep-received', ged.GUI1, app.ged.remove_event_handler('pep-received', ged.GUI1,
self._nec_pep_received) self._nec_pep_received)
gajim.ged.remove_event_handler('vcard-received', ged.GUI1, app.ged.remove_event_handler('vcard-received', ged.GUI1,
self._nec_vcard_received) self._nec_vcard_received)
gajim.ged.remove_event_handler('failed-decrypt', ged.GUI1, app.ged.remove_event_handler('failed-decrypt', ged.GUI1,
self._nec_failed_decrypt) self._nec_failed_decrypt)
gajim.ged.remove_event_handler('chatstate-received', ged.GUI1, app.ged.remove_event_handler('chatstate-received', ged.GUI1,
self._nec_chatstate_received) self._nec_chatstate_received)
gajim.ged.remove_event_handler('caps-received', ged.GUI1, app.ged.remove_event_handler('caps-received', ged.GUI1,
self._nec_caps_received) self._nec_caps_received)
self.unsubscribe_events() self.unsubscribe_events()
@ -1227,11 +1227,11 @@ class ChatControl(ChatControlBase):
if self.bigger_avatar_window: if self.bigger_avatar_window:
self.bigger_avatar_window.destroy() self.bigger_avatar_window.destroy()
# Clean events # Clean events
gajim.events.remove_events(self.account, self.get_full_jid(), app.events.remove_events(self.account, self.get_full_jid(),
types=['printed_' + self.type_id, self.type_id]) types=['printed_' + self.type_id, self.type_id])
# Remove contact instance if contact has been removed # Remove contact instance if contact has been removed
key = (self.contact.jid, self.account) key = (self.contact.jid, self.account)
roster = gajim.interface.roster roster = app.interface.roster
if key in roster.contacts_to_be_removed.keys() and \ if key in roster.contacts_to_be_removed.keys() and \
not roster.contact_has_pending_roster_events(self.contact, not roster.contact_has_pending_roster_events(self.contact,
self.account): self.account):
@ -1246,7 +1246,7 @@ class ChatControl(ChatControlBase):
self.handlers[i].disconnect(i) self.handlers[i].disconnect(i)
del self.handlers[i] del self.handlers[i]
self.conv_textview.del_handlers() self.conv_textview.del_handlers()
if gajim.config.get('use_speller') and HAS_GTK_SPELL: if app.config.get('use_speller') and HAS_GTK_SPELL:
spell_obj = gtkspell.get_from_text_view(self.msg_textview) spell_obj = gtkspell.get_from_text_view(self.msg_textview)
if spell_obj: if spell_obj:
spell_obj.detach() spell_obj.detach()
@ -1262,7 +1262,7 @@ class ChatControl(ChatControlBase):
return False return False
def allow_shutdown(self, method, on_yes, on_no, on_minimize): def allow_shutdown(self, method, on_yes, on_no, on_minimize):
if time.time() - gajim.last_message_time[self.account]\ if time.time() - app.last_message_time[self.account]\
[self.get_full_jid()] < 2: [self.get_full_jid()] < 2:
# 2 seconds # 2 seconds
@ -1319,7 +1319,7 @@ class ChatControl(ChatControlBase):
self.show_avatar() self.show_avatar()
def show_avatar(self): def show_avatar(self):
if not gajim.config.get('show_avatar_in_chat'): if not app.config.get('show_avatar_in_chat'):
return return
jid_with_resource = self.contact.get_full_jid() jid_with_resource = self.contact.get_full_jid()
@ -1334,10 +1334,10 @@ class ChatControl(ChatControlBase):
real_jid += '/' + self.gc_contact.resource real_jid += '/' + self.gc_contact.resource
else: else:
real_jid = jid_with_resource real_jid = jid_with_resource
gajim.connections[self.account].request_vcard(real_jid, app.connections[self.account].request_vcard(real_jid,
jid_with_resource) jid_with_resource)
else: else:
gajim.connections[self.account].request_vcard(jid_with_resource) app.connections[self.account].request_vcard(jid_with_resource)
return return
elif pixbuf: elif pixbuf:
scaled_pixbuf = gtkgui_helpers.get_scaled_pixbuf(pixbuf, 'chat') scaled_pixbuf = gtkgui_helpers.get_scaled_pixbuf(pixbuf, 'chat')
@ -1351,7 +1351,7 @@ class ChatControl(ChatControlBase):
def _nec_vcard_received(self, obj): def _nec_vcard_received(self, obj):
if obj.conn.name != self.account: if obj.conn.name != self.account:
return return
j = gajim.get_jid_without_resource(self.contact.jid) j = app.get_jid_without_resource(self.contact.jid)
if obj.jid != j: if obj.jid != j:
return return
self.show_avatar() self.show_avatar()
@ -1372,12 +1372,12 @@ class ChatControl(ChatControlBase):
for uri in uri_splitted: for uri in uri_splitted:
path = helpers.get_file_path_from_dnd_dropped_uri(uri) path = helpers.get_file_path_from_dnd_dropped_uri(uri)
if os.path.isfile(path): # is it file? if os.path.isfile(path): # is it file?
ft = gajim.interface.instances['file_transfers'] ft = app.interface.instances['file_transfers']
ft.send_file(self.account, c, path) ft.send_file(self.account, c, path)
return return
# chat2muc # chat2muc
treeview = gajim.interface.roster.tree treeview = app.interface.roster.tree
model = treeview.get_model() model = treeview.get_model()
data = selection.get_data() data = selection.get_data()
path = treeview.get_selection().get_selected_rows()[1][0] path = treeview.get_selection().get_selected_rows()[1][0]
@ -1387,8 +1387,8 @@ class ChatControl(ChatControlBase):
return return
dropped_jid = data dropped_jid = data
dropped_transport = gajim.get_transport_name_from_jid(dropped_jid) dropped_transport = app.get_transport_name_from_jid(dropped_jid)
c_transport = gajim.get_transport_name_from_jid(c.jid) c_transport = app.get_transport_name_from_jid(c.jid)
if dropped_transport or c_transport: if dropped_transport or c_transport:
return # transport contacts cannot be invited return # transport contacts cannot be invited
@ -1397,24 +1397,24 @@ class ChatControl(ChatControlBase):
def _on_message_tv_buffer_changed(self, textbuffer): def _on_message_tv_buffer_changed(self, textbuffer):
super()._on_message_tv_buffer_changed(textbuffer) super()._on_message_tv_buffer_changed(textbuffer)
if textbuffer.get_char_count() and self.encryption: if textbuffer.get_char_count() and self.encryption:
gajim.plugin_manager.extension_point( app.plugin_manager.extension_point(
'typing' + self.encryption, self) 'typing' + self.encryption, self)
def restore_conversation(self): def restore_conversation(self):
jid = self.contact.jid jid = self.contact.jid
# don't restore lines if it's a transport # don't restore lines if it's a transport
if gajim.jid_is_transport(jid): if app.jid_is_transport(jid):
return return
# number of messages that are in queue and are already logged, we want # number of messages that are in queue and are already logged, we want
# to avoid duplication # to avoid duplication
pending = len(gajim.events.get_events(self.account, jid, pending = len(app.events.get_events(self.account, jid,
['chat', 'pm'])) ['chat', 'pm']))
if self.resource: if self.resource:
pending += len(gajim.events.get_events(self.account, pending += len(app.events.get_events(self.account,
self.contact.get_full_jid(), ['chat', 'pm'])) self.contact.get_full_jid(), ['chat', 'pm']))
rows = gajim.logger.get_last_conversation_lines( rows = app.logger.get_last_conversation_lines(
self.account, jid, pending) self.account, jid, pending)
local_old_kind = None local_old_kind = None
@ -1438,7 +1438,7 @@ class ChatControl(ChatControlBase):
tim = float(row.time) tim = float(row.time)
if gajim.config.get('restored_messages_small'): if app.config.get('restored_messages_small'):
small_attr = ['small'] small_attr = ['small']
else: else:
small_attr = [] small_attr = []
@ -1467,7 +1467,7 @@ class ChatControl(ChatControlBase):
jid_with_resource = jid jid_with_resource = jid
if self.resource: if self.resource:
jid_with_resource += '/' + self.resource jid_with_resource += '/' + self.resource
events = gajim.events.get_events(self.account, jid_with_resource) events = app.events.get_events(self.account, jid_with_resource)
# list of message ids which should be marked as read # list of message ids which should be marked as read
message_ids = [] message_ids = []
@ -1490,16 +1490,16 @@ class ChatControl(ChatControlBase):
if event.session and not self.session: if event.session and not self.session:
self.set_session(event.session) self.set_session(event.session)
if message_ids: if message_ids:
gajim.logger.set_read_messages(message_ids) app.logger.set_read_messages(message_ids)
gajim.events.remove_events(self.account, jid_with_resource, app.events.remove_events(self.account, jid_with_resource,
types=[self.type_id]) types=[self.type_id])
typ = 'chat' # Is it a normal chat or a pm ? typ = 'chat' # Is it a normal chat or a pm ?
# reset to status image in gc if it is a pm # reset to status image in gc if it is a pm
# Is it a pm ? # Is it a pm ?
room_jid, nick = gajim.get_room_and_nick_from_fjid(jid) room_jid, nick = app.get_room_and_nick_from_fjid(jid)
control = gajim.interface.msg_win_mgr.get_gc_control(room_jid, control = app.interface.msg_win_mgr.get_gc_control(room_jid,
self.account) self.account)
if control and control.type_id == message_control.TYPE_GC: if control and control.type_id == message_control.TYPE_GC:
control.update_ui() control.update_ui()
@ -1508,12 +1508,12 @@ class ChatControl(ChatControlBase):
self.redraw_after_event_removed(jid) self.redraw_after_event_removed(jid)
if (self.contact.show in ('offline', 'error')): if (self.contact.show in ('offline', 'error')):
show_offline = gajim.config.get('showoffline') show_offline = app.config.get('showoffline')
show_transports = gajim.config.get('show_transports_group') show_transports = app.config.get('show_transports_group')
if (not show_transports and gajim.jid_is_transport(jid)) or \ if (not show_transports and app.jid_is_transport(jid)) or \
(not show_offline and typ == 'chat' and \ (not show_offline and typ == 'chat' and \
len(gajim.contacts.get_contacts(self.account, jid)) < 2): len(app.contacts.get_contacts(self.account, jid)) < 2):
gajim.interface.roster.remove_to_be_removed(self.contact.jid, app.interface.roster.remove_to_be_removed(self.contact.jid,
self.account) self.account)
elif typ == 'pm': elif typ == 'pm':
control.remove_contact(nick) control.remove_contact(nick)
@ -1559,7 +1559,7 @@ class ChatControl(ChatControlBase):
# make the bigger avatar window show up centered # make the bigger avatar window show up centered
small_avatar_x, small_avatar_y = alloc.x, alloc.y small_avatar_x, small_avatar_y = alloc.x, alloc.y
translated_coordinates = small_avatar.translate_coordinates( translated_coordinates = small_avatar.translate_coordinates(
gajim.interface.roster.window, 0, 0) app.interface.roster.window, 0, 0)
if translated_coordinates: if translated_coordinates:
small_avatar_x, small_avatar_y = translated_coordinates small_avatar_x, small_avatar_y = translated_coordinates
roster_x, roster_y = self.parent_win.window.get_window().get_origin()[1:] roster_x, roster_y = self.parent_win.window.get_window().get_origin()[1:]
@ -1579,7 +1579,7 @@ class ChatControl(ChatControlBase):
dialogs.AddNewContactWindow(self.account, self.contact.jid) dialogs.AddNewContactWindow(self.account, self.contact.jid)
def _on_contact_information_menuitem_activate(self, widget): def _on_contact_information_menuitem_activate(self, widget):
gajim.interface.roster.on_info(widget, self.contact, self.account) app.interface.roster.on_info(widget, self.contact, self.account)
def _on_convert_to_gc_menuitem_activate(self, widget): def _on_convert_to_gc_menuitem_activate(self, widget):
""" """
@ -1600,7 +1600,7 @@ class ChatControl(ChatControlBase):
self.session.terminate_e2e() self.session.terminate_e2e()
gajim.connections[self.account].delete_session(jid, thread_id) app.connections[self.account].delete_session(jid, thread_id)
# presumably the user had a good reason to shut it off, so # presumably the user had a good reason to shut it off, so
# disable autonegotiation too # disable autonegotiation too
@ -1611,7 +1611,7 @@ class ChatControl(ChatControlBase):
if not self.session: if not self.session:
fjid = self.contact.get_full_jid() fjid = self.contact.get_full_jid()
new_sess = gajim.connections[self.account].make_new_session(fjid, type_=self.type_id) new_sess = app.connections[self.account].make_new_session(fjid, type_=self.type_id)
self.set_session(new_sess) self.set_session(new_sess)
def begin_e2e_negotiation(self): def begin_e2e_negotiation(self):
@ -1641,7 +1641,7 @@ class ChatControl(ChatControlBase):
def got_connected(self): def got_connected(self):
ChatControlBase.got_connected(self) ChatControlBase.got_connected(self)
# Refreshing contact # Refreshing contact
contact = gajim.contacts.get_contact_with_highest_priority( contact = app.contacts.get_contact_with_highest_priority(
self.account, self.contact.jid) self.account, self.contact.jid)
if isinstance(contact, GC_Contact): if isinstance(contact, GC_Contact):
contact = contact.as_contact() contact = contact.as_contact()
@ -1712,24 +1712,24 @@ class ChatControl(ChatControlBase):
self._info_bar_show_message() self._info_bar_show_message()
def _get_file_props_event(self, file_props, type_): def _get_file_props_event(self, file_props, type_):
evs = gajim.events.get_events(self.account, self.contact.jid, [type_]) evs = app.events.get_events(self.account, self.contact.jid, [type_])
for ev in evs: for ev in evs:
if ev.file_props == file_props: if ev.file_props == file_props:
return ev return ev
return None return None
def _on_accept_file_request(self, widget, file_props): def _on_accept_file_request(self, widget, file_props):
gajim.interface.instances['file_transfers'].on_file_request_accepted( app.interface.instances['file_transfers'].on_file_request_accepted(
self.account, self.contact, file_props) self.account, self.contact, file_props)
ev = self._get_file_props_event(file_props, 'file-request') ev = self._get_file_props_event(file_props, 'file-request')
if ev: if ev:
gajim.events.remove_events(self.account, self.contact.jid, event=ev) app.events.remove_events(self.account, self.contact.jid, event=ev)
def _on_cancel_file_request(self, widget, file_props): def _on_cancel_file_request(self, widget, file_props):
gajim.connections[self.account].send_file_rejection(file_props) app.connections[self.account].send_file_rejection(file_props)
ev = self._get_file_props_event(file_props, 'file-request') ev = self._get_file_props_event(file_props, 'file-request')
if ev: if ev:
gajim.events.remove_events(self.account, self.contact.jid, event=ev) app.events.remove_events(self.account, self.contact.jid, event=ev)
def _got_file_request(self, file_props): def _got_file_request(self, file_props):
""" """
@ -1753,12 +1753,12 @@ class ChatControl(ChatControlBase):
helpers.launch_file_manager(path) helpers.launch_file_manager(path)
ev = self._get_file_props_event(file_props, 'file-completed') ev = self._get_file_props_event(file_props, 'file-completed')
if ev: if ev:
gajim.events.remove_events(self.account, self.contact.jid, event=ev) app.events.remove_events(self.account, self.contact.jid, event=ev)
def _on_ok(self, widget, file_props, type_): def _on_ok(self, widget, file_props, type_):
ev = self._get_file_props_event(file_props, type_) ev = self._get_file_props_event(file_props, type_)
if ev: if ev:
gajim.events.remove_events(self.account, self.contact.jid, event=ev) app.events.remove_events(self.account, self.contact.jid, event=ev)
def _got_file_completed(self, file_props): def _got_file_completed(self, file_props):
markup = '<b>%s:</b> %s' % (_('File transfer completed'), markup = '<b>%s:</b> %s' % (_('File transfer completed'),
@ -1780,17 +1780,17 @@ class ChatControl(ChatControlBase):
def _on_accept_gc_invitation(self, widget, event): def _on_accept_gc_invitation(self, widget, event):
try: try:
if event.is_continued: if event.is_continued:
gajim.interface.join_gc_room(self.account, event.room_jid, app.interface.join_gc_room(self.account, event.room_jid,
gajim.nicks[self.account], event.password, app.nicks[self.account], event.password,
is_continued=True) is_continued=True)
else: else:
dialogs.JoinGroupchatWindow(self.account, event.room_jid) dialogs.JoinGroupchatWindow(self.account, event.room_jid)
except GajimGeneralException: except GajimGeneralException:
pass pass
gajim.events.remove_events(self.account, self.contact.jid, event=event) app.events.remove_events(self.account, self.contact.jid, event=event)
def _on_cancel_gc_invitation(self, widget, event): def _on_cancel_gc_invitation(self, widget, event):
gajim.events.remove_events(self.account, self.contact.jid, event=event) app.events.remove_events(self.account, self.contact.jid, event=event)
def _get_gc_invitation(self, event): def _get_gc_invitation(self, event):
markup = '<b>%s:</b> %s' % (_('Groupchat Invitation'), event.room_jid) markup = '<b>%s:</b> %s' % (_('Groupchat Invitation'), event.room_jid)

View File

@ -46,7 +46,7 @@ import re
from gajim import emoticons from gajim import emoticons
from gajim.scrolled_window import ScrolledWindow from gajim.scrolled_window import ScrolledWindow
from gajim.common import events from gajim.common import events
from gajim.common import gajim from gajim.common import app
from gajim.common import helpers from gajim.common import helpers
from gajim.common import ged from gajim.common import ged
from gajim.message_control import MessageControl from gajim.message_control import MessageControl
@ -91,7 +91,7 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
keycode_ins = None keycode_ins = None
def make_href(self, match): def make_href(self, match):
url_color = gajim.config.get('urlmsgcolor') url_color = app.config.get('urlmsgcolor')
url = match.group() url = match.group()
if not '://' in url: if not '://' in url:
url = 'http://' + url url = 'http://' + url
@ -102,9 +102,9 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
""" """
Get pango font attributes for banner from theme settings Get pango font attributes for banner from theme settings
""" """
theme = gajim.config.get('roster_theme') theme = app.config.get('roster_theme')
bannerfont = gajim.config.get_per('themes', theme, 'bannerfont') bannerfont = app.config.get_per('themes', theme, 'bannerfont')
bannerfontattrs = gajim.config.get_per('themes', theme, 'bannerfontattrs') bannerfontattrs = app.config.get_per('themes', theme, 'bannerfontattrs')
if bannerfont: if bannerfont:
font = Pango.FontDescription(bannerfont) font = Pango.FontDescription(bannerfont)
@ -131,7 +131,7 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
if self.resource: if self.resource:
jid += '/' + self.resource jid += '/' + self.resource
type_ = self.type_id type_ = self.type_id
return len(gajim.events.get_events(self.account, jid, ['printed_' + type_, return len(app.events.get_events(self.account, jid, ['printed_' + type_,
type_])) type_]))
def draw_banner(self): def draw_banner(self):
@ -142,7 +142,7 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
""" """
self.draw_banner_text() self.draw_banner_text()
self._update_banner_state_image() self._update_banner_state_image()
gajim.plugin_manager.gui_extension_point('chat_control_base_draw_banner', app.plugin_manager.gui_extension_point('chat_control_base_draw_banner',
self) self)
def update_toolbar(self): def update_toolbar(self):
@ -150,7 +150,7 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
update state of buttons in toolbar update state of buttons in toolbar
""" """
self._update_toolbar() self._update_toolbar()
gajim.plugin_manager.gui_extension_point( app.plugin_manager.gui_extension_point(
'chat_control_base_update_toolbar', self) 'chat_control_base_update_toolbar', self)
def draw_banner_text(self): def draw_banner_text(self):
@ -220,15 +220,15 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
self.seclabel_combo.pack_start(cell, True) self.seclabel_combo.pack_start(cell, True)
# text to show is in in first column of liststore # text to show is in in first column of liststore
self.seclabel_combo.add_attribute(cell, 'text', 0) self.seclabel_combo.add_attribute(cell, 'text', 0)
if gajim.connections[self.account].seclabel_supported: if app.connections[self.account].seclabel_supported:
gajim.connections[self.account].seclabel_catalogue(self.contact.jid, self.on_seclabels_ready) app.connections[self.account].seclabel_catalogue(self.contact.jid, self.on_seclabels_ready)
def on_seclabels_ready(self): def on_seclabels_ready(self):
lb = self.seclabel_combo.get_model() lb = self.seclabel_combo.get_model()
lb.clear() lb.clear()
i = 0 i = 0
sel = 0 sel = 0
catalogue = gajim.connections[self.account].seclabel_catalogues[ catalogue = app.connections[self.account].seclabel_catalogues[
self.contact.jid] self.contact.jid]
for label in catalogue[2]: for label in catalogue[2]:
lb.append([label]) lb.append([label])
@ -248,7 +248,7 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
if resource is None: if resource is None:
# We very likely got a contact with a random resource. # We very likely got a contact with a random resource.
# This is bad, we need the highest for caps etc. # This is bad, we need the highest for caps etc.
c = gajim.contacts.get_contact_with_highest_priority(acct, c = app.contacts.get_contact_with_highest_priority(acct,
contact.jid) contact.jid)
if c and not isinstance(c, GC_Contact): if c and not isinstance(c, GC_Contact):
contact = c contact = c
@ -369,7 +369,7 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
self.set_emoticon_popover() self.set_emoticon_popover()
# Attach speller # Attach speller
if gajim.config.get('use_speller') and HAS_GTK_SPELL: if app.config.get('use_speller') and HAS_GTK_SPELL:
self.set_speller() self.set_speller()
self.conv_textview.tv.show() self.conv_textview.tv.show()
@ -399,15 +399,15 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
# PluginSystem: adding GUI extension point for ChatControlBase # PluginSystem: adding GUI extension point for ChatControlBase
# instance object (also subclasses, eg. ChatControl or GroupchatControl) # instance object (also subclasses, eg. ChatControl or GroupchatControl)
gajim.plugin_manager.gui_extension_point('chat_control_base', self) app.plugin_manager.gui_extension_point('chat_control_base', self)
gajim.ged.register_event_handler('our-show', ged.GUI1, app.ged.register_event_handler('our-show', ged.GUI1,
self._nec_our_status) self._nec_our_status)
gajim.ged.register_event_handler('ping-sent', ged.GUI1, app.ged.register_event_handler('ping-sent', ged.GUI1,
self._nec_ping_sent) self._nec_ping_sent)
gajim.ged.register_event_handler('ping-reply', ged.GUI1, app.ged.register_event_handler('ping-reply', ged.GUI1,
self._nec_ping_reply) self._nec_ping_reply)
gajim.ged.register_event_handler('ping-error', ged.GUI1, app.ged.register_event_handler('ping-error', ged.GUI1,
self._nec_ping_error) self._nec_ping_error)
# This is bascially a very nasty hack to surpass the inability # This is bascially a very nasty hack to surpass the inability
@ -431,7 +431,7 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
return return
if encryption: if encryption:
plugin = gajim.plugin_manager.encryption_plugins[encryption] plugin = app.plugin_manager.encryption_plugins[encryption]
if not plugin.activate_encryption(self): if not plugin.activate_encryption(self):
return return
else: else:
@ -445,15 +445,15 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
def set_encryption_state(self, encryption): def set_encryption_state(self, encryption):
config_key = '%s-%s' % (self.account, self.contact.jid) config_key = '%s-%s' % (self.account, self.contact.jid)
self.encryption = encryption self.encryption = encryption
gajim.config.set_per('encryption', config_key, app.config.set_per('encryption', config_key,
'encryption', self.encryption or '') 'encryption', self.encryption or '')
def get_encryption_state(self): def get_encryption_state(self):
config_key = '%s-%s' % (self.account, self.contact.jid) config_key = '%s-%s' % (self.account, self.contact.jid)
state = gajim.config.get_per('encryption', config_key, 'encryption') state = app.config.get_per('encryption', config_key, 'encryption')
if not state: if not state:
return None return None
if state not in gajim.plugin_manager.encryption_plugins: if state not in app.plugin_manager.encryption_plugins:
self.set_encryption_state(None) self.set_encryption_state(None)
return None return None
return state return state
@ -476,13 +476,13 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
per_type = 'contacts' per_type = 'contacts'
if self.type_id == message_control.TYPE_GC: if self.type_id == message_control.TYPE_GC:
per_type = 'rooms' per_type = 'rooms'
lang = gajim.config.get_per(per_type, self.contact.jid, lang = app.config.get_per(per_type, self.contact.jid,
'speller_language') 'speller_language')
if not lang: if not lang:
# use the default one # use the default one
lang = gajim.config.get('speller_language') lang = app.config.get('speller_language')
if not lang: if not lang:
lang = gajim.LANG lang = app.LANG
if lang: if lang:
try: try:
self.spell = gtkspell.Spell(self.msg_textview, lang) self.spell = gtkspell.Spell(self.msg_textview, lang)
@ -495,9 +495,9 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
per_type = 'contacts' per_type = 'contacts'
if self.type_id == message_control.TYPE_GC: if self.type_id == message_control.TYPE_GC:
per_type = 'rooms' per_type = 'rooms'
if not gajim.config.get_per(per_type, self.contact.jid): if not app.config.get_per(per_type, self.contact.jid):
gajim.config.add_per(per_type, self.contact.jid) app.config.add_per(per_type, self.contact.jid)
gajim.config.set_per(per_type, self.contact.jid, 'speller_language', app.config.set_per(per_type, self.contact.jid, 'speller_language',
lang) lang)
self.msg_textview.lang = lang self.msg_textview.lang = lang
@ -526,11 +526,11 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
GLib.source_remove(self.possible_inactive_timeout_id) GLib.source_remove(self.possible_inactive_timeout_id)
# PluginSystem: removing GUI extension points connected with ChatControlBase # PluginSystem: removing GUI extension points connected with ChatControlBase
# instance object # instance object
gajim.plugin_manager.remove_gui_extension_point('chat_control_base', app.plugin_manager.remove_gui_extension_point('chat_control_base',
self) self)
gajim.plugin_manager.remove_gui_extension_point( app.plugin_manager.remove_gui_extension_point(
'chat_control_base_draw_banner', self) 'chat_control_base_draw_banner', self)
gajim.ged.remove_event_handler('our-show', ged.GUI1, app.ged.remove_event_handler('our-show', ged.GUI1,
self._nec_our_status) self._nec_our_status)
def on_msg_textview_populate_popup(self, textview, menu): def on_msg_textview_populate_popup(self, textview, menu):
@ -690,9 +690,9 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
send_message = False send_message = False
else: else:
is_ctrl_enter = bool(event_state & Gdk.ModifierType.CONTROL_MASK) is_ctrl_enter = bool(event_state & Gdk.ModifierType.CONTROL_MASK)
send_message = is_ctrl_enter == gajim.config.get('send_on_ctrl_enter') send_message = is_ctrl_enter == app.config.get('send_on_ctrl_enter')
if send_message and gajim.connections[self.account].connected < 2: if send_message and app.connections[self.account].connected < 2:
# we are not connected # we are not connected
dialogs.ErrorDialog(_('A connection is not available'), dialogs.ErrorDialog(_('A connection is not available'),
_('Your message can not be sent until you are connected.')) _('Your message can not be sent until you are connected.'))
@ -737,7 +737,7 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
if self.seclabel_combo is not None: if self.seclabel_combo is not None:
idx = self.seclabel_combo.get_active() idx = self.seclabel_combo.get_active()
if idx != -1: if idx != -1:
cat = gajim.connections[self.account].seclabel_catalogues[self.contact.jid] cat = app.connections[self.account].seclabel_catalogues[self.contact.jid]
lname = cat[2][idx] lname = cat[2][idx]
label = cat[1][lname] label = cat[1][lname]
return label return label
@ -760,8 +760,8 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
# refresh timers # refresh timers
self.reset_kbd_mouse_timeout_vars() self.reset_kbd_mouse_timeout_vars()
notifications = gajim.config.get('outgoing_chat_state_notifications') notifications = app.config.get('outgoing_chat_state_notifications')
if (self.contact.jid == gajim.get_jid_from_account(self.account) or if (self.contact.jid == app.get_jid_from_account(self.account) or
notifications == 'disabled'): notifications == 'disabled'):
chatstate = None chatstate = None
@ -777,7 +777,7 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
else: else:
correct_id = None correct_id = None
gajim.nec.push_outgoing_event(MessageOutgoingEvent(None, app.nec.push_outgoing_event(MessageOutgoingEvent(None,
account=self.account, jid=self.contact.jid, message=message, account=self.account, jid=self.contact.jid, message=message,
keyID=keyID, type_=type_, chatstate=chatstate, keyID=keyID, type_=type_, chatstate=chatstate,
resource=resource, user_nick=self.user_nick, xhtml=xhtml, resource=resource, user_nick=self.user_nick, xhtml=xhtml,
@ -897,7 +897,7 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
size = len(history) size = len(history)
scroll = False if pos == size else True # are we scrolling? scroll = False if pos == size else True # are we scrolling?
# we don't want size of the buffer to grow indefinately # we don't want size of the buffer to grow indefinately
max_size = gajim.config.get('key_up_lines') max_size = app.config.get('key_up_lines')
for i in range(size - max_size + 1): for i in range(size - max_size + 1):
if pos == 0: if pos == 0:
break break
@ -956,12 +956,12 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
self.last_received_id[name] = correct_id[0] self.last_received_id[name] = correct_id[0]
if kind == 'incoming': if kind == 'incoming':
if not self.type_id == message_control.TYPE_GC or \ if not self.type_id == message_control.TYPE_GC or \
gajim.config.get('notify_on_all_muc_messages') or \ app.config.get('notify_on_all_muc_messages') or \
'marked' in other_tags_for_text: 'marked' in other_tags_for_text:
# it's a normal message, or a muc message with want to be # it's a normal message, or a muc message with want to be
# notified about if quitting just after # notified about if quitting just after
# other_tags_for_text == ['marked'] --> highlighted gc message # other_tags_for_text == ['marked'] --> highlighted gc message
gajim.last_message_time[self.account][full_jid] = time.time() app.last_message_time[self.account][full_jid] = time.time()
if kind in ('incoming', 'incoming_queue'): if kind in ('incoming', 'incoming_queue'):
# Record the history of received messages # Record the history of received messages
@ -976,7 +976,7 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
self != self.parent_win.get_active_control() or \ self != self.parent_win.get_active_control() or \
not self.parent_win.is_active() or not end)) or \ not self.parent_win.is_active() or not end)) or \
(gc_message and \ (gc_message and \
jid in gajim.interface.minimized_controls[self.account])) and \ jid in app.interface.minimized_controls[self.account])) and \
kind in ('incoming', 'incoming_queue', 'error'): kind in ('incoming', 'incoming_queue', 'error'):
# we want to have save this message in events list # we want to have save this message in events list
# other_tags_for_text == ['marked'] --> highlighted gc message # other_tags_for_text == ['marked'] --> highlighted gc message
@ -1000,10 +1000,10 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
event = event_type(text, subject, self, msg_log_id, event = event_type(text, subject, self, msg_log_id,
show_in_roster=show_in_roster, show_in_roster=show_in_roster,
show_in_systray=show_in_systray) show_in_systray=show_in_systray)
gajim.events.add_event(self.account, full_jid, event) app.events.add_event(self.account, full_jid, event)
# We need to redraw contact if we show in roster # We need to redraw contact if we show in roster
if show_in_roster: if show_in_roster:
gajim.interface.roster.draw_contact(self.contact.jid, app.interface.roster.draw_contact(self.contact.jid,
self.account) self.account)
if not self.parent_win: if not self.parent_win:
@ -1023,7 +1023,7 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
""" """
Hide show emoticons_button Hide show emoticons_button
""" """
if gajim.config.get('emoticons_theme'): if app.config.get('emoticons_theme'):
self.emoticons_button.set_no_show_all(False) self.emoticons_button.set_no_show_all(False)
self.emoticons_button.show() self.emoticons_button.show()
else: else:
@ -1031,7 +1031,7 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
self.emoticons_button.hide() self.emoticons_button.hide()
def set_emoticon_popover(self): def set_emoticon_popover(self):
if not gajim.config.get('emoticons_theme'): if not app.config.get('emoticons_theme'):
return return
if not self.parent_win: if not self.parent_win:
@ -1086,11 +1086,11 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
if not jid: if not jid:
jid = self.contact.jid jid = self.contact.jid
if 'logs' in gajim.interface.instances: if 'logs' in app.interface.instances:
gajim.interface.instances['logs'].window.present() app.interface.instances['logs'].window.present()
gajim.interface.instances['logs'].open_history(jid, self.account) app.interface.instances['logs'].open_history(jid, self.account)
else: else:
gajim.interface.instances['logs'] = \ app.interface.instances['logs'] = \
history_window.HistoryWindow(jid, self.account) history_window.HistoryWindow(jid, self.account)
def _on_send_file(self, gc_contact=None): def _on_send_file(self, gc_contact=None):
@ -1098,19 +1098,19 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
gc_contact can be set when we are in a groupchat control gc_contact can be set when we are in a groupchat control
""" """
def _on_ok(c): def _on_ok(c):
gajim.interface.instances['file_transfers'].show_file_send_request( app.interface.instances['file_transfers'].show_file_send_request(
self.account, c) self.account, c)
if self.TYPE_ID == message_control.TYPE_PM: if self.TYPE_ID == message_control.TYPE_PM:
gc_contact = self.gc_contact gc_contact = self.gc_contact
if gc_contact: if gc_contact:
# gc or pm # gc or pm
gc_control = gajim.interface.msg_win_mgr.get_gc_control( gc_control = app.interface.msg_win_mgr.get_gc_control(
gc_contact.room_jid, self.account) gc_contact.room_jid, self.account)
self_contact = gajim.contacts.get_gc_contact(self.account, self_contact = app.contacts.get_gc_contact(self.account,
gc_control.room_jid, gc_control.nick) gc_control.room_jid, gc_control.nick)
if gc_control.is_anonymous and gc_contact.affiliation not in ['admin', if gc_control.is_anonymous and gc_contact.affiliation not in ['admin',
'owner'] and self_contact.affiliation in ['admin', 'owner']: 'owner'] and self_contact.affiliation in ['admin', 'owner']:
contact = gajim.contacts.get_contact(self.account, gc_contact.jid) contact = app.contacts.get_contact(self.account, gc_contact.jid)
if not contact or contact.sub not in ('both', 'to'): if not contact or contact.sub not in ('both', 'to'):
prim_text = _('Really send file?') prim_text = _('Really send file?')
sec_text = _('If you send a file to %s, he/she will know your ' sec_text = _('If you send a file to %s, he/she will know your '
@ -1128,7 +1128,7 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
When a grouchat is minimized, unparent the tab, put it in roster etc When a grouchat is minimized, unparent the tab, put it in roster etc
""" """
old_value = True old_value = True
non_minimized_gc = gajim.config.get_per('accounts', self.account, non_minimized_gc = app.config.get_per('accounts', self.account,
'non_minimized_gc').split() 'non_minimized_gc').split()
if self.contact.jid in non_minimized_gc: if self.contact.jid in non_minimized_gc:
old_value = False old_value = False
@ -1138,7 +1138,7 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
if minimize and self.contact.jid in non_minimized_gc: if minimize and self.contact.jid in non_minimized_gc:
non_minimized_gc.remove(self.contact.jid) non_minimized_gc.remove(self.contact.jid)
if old_value != minimize: if old_value != minimize:
gajim.config.set_per('accounts', self.account, 'non_minimized_gc', app.config.set_per('accounts', self.account, 'non_minimized_gc',
' '.join(non_minimized_gc)) ' '.join(non_minimized_gc))
def set_control_active(self, state): def set_control_active(self, state):
@ -1150,7 +1150,7 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
type_ = ['printed_' + self.type_id] type_ = ['printed_' + self.type_id]
if self.type_id == message_control.TYPE_GC: if self.type_id == message_control.TYPE_GC:
type_ = ['printed_gc_msg', 'printed_marked_gc_msg'] type_ = ['printed_gc_msg', 'printed_marked_gc_msg']
if not gajim.events.remove_events(self.account, self.get_full_jid(), if not app.events.remove_events(self.account, self.get_full_jid(),
types=type_): types=type_):
# There were events to remove # There were events to remove
self.redraw_after_event_removed(jid) self.redraw_after_event_removed(jid)
@ -1193,7 +1193,7 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
else: # Not a GC else: # Not a GC
types_list = ['printed_' + type_, type_] types_list = ['printed_' + type_, type_]
if not len(gajim.events.get_events(self.account, jid, types_list)): if not len(app.events.get_events(self.account, jid, types_list)):
return return
if not self.parent_win: if not self.parent_win:
return return
@ -1202,7 +1202,7 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
self.parent_win.window.is_active(): self.parent_win.window.is_active():
# we are at the end # we are at the end
if self.type_id == message_control.TYPE_GC: if self.type_id == message_control.TYPE_GC:
if not gajim.events.remove_events(self.account, jid, if not app.events.remove_events(self.account, jid,
types=types_list): types=types_list):
self.redraw_after_event_removed(jid) self.redraw_after_event_removed(jid)
elif self.session and self.session.remove_events(types_list): elif self.session and self.session.remove_events(types_list):
@ -1218,23 +1218,23 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
self.parent_win.show_title() self.parent_win.show_title()
# TODO : get the contact and check notify.get_show_in_roster() # TODO : get the contact and check notify.get_show_in_roster()
if self.type_id == message_control.TYPE_PM: if self.type_id == message_control.TYPE_PM:
room_jid, nick = gajim.get_room_and_nick_from_fjid(jid) room_jid, nick = app.get_room_and_nick_from_fjid(jid)
groupchat_control = gajim.interface.msg_win_mgr.get_gc_control( groupchat_control = app.interface.msg_win_mgr.get_gc_control(
room_jid, self.account) room_jid, self.account)
if room_jid in gajim.interface.minimized_controls[self.account]: if room_jid in app.interface.minimized_controls[self.account]:
groupchat_control = \ groupchat_control = \
gajim.interface.minimized_controls[self.account][room_jid] app.interface.minimized_controls[self.account][room_jid]
contact = gajim.contacts.get_contact_with_highest_priority( contact = app.contacts.get_contact_with_highest_priority(
self.account, room_jid) self.account, room_jid)
if contact: if contact:
gajim.interface.roster.draw_contact(room_jid, self.account) app.interface.roster.draw_contact(room_jid, self.account)
if groupchat_control: if groupchat_control:
groupchat_control.draw_contact(nick) groupchat_control.draw_contact(nick)
if groupchat_control.parent_win: if groupchat_control.parent_win:
groupchat_control.parent_win.redraw_tab(groupchat_control) groupchat_control.parent_win.redraw_tab(groupchat_control)
else: else:
gajim.interface.roster.draw_contact(jid, self.account) app.interface.roster.draw_contact(jid, self.account)
gajim.interface.roster.show_title() app.interface.roster.show_title()
def scroll_messages(self, direction, msg_buf, msg_type): def scroll_messages(self, direction, msg_buf, msg_type):
if msg_type == 'sent': if msg_type == 'sent':

View File

@ -34,7 +34,7 @@ don't need to dig up the code itself to write basic commands.
from traceback import print_exc from traceback import print_exc
from gi.repository import Pango from gi.repository import Pango
from gajim.common import gajim from gajim.common import app
from gajim.command_system.framework import CommandProcessor from gajim.command_system.framework import CommandProcessor
from gajim.command_system.errors import CommandError, NoCommandError from gajim.command_system.errors import CommandError, NoCommandError
@ -179,7 +179,7 @@ class CommandTools:
""" """
Get the current connection object. Get the current connection object.
""" """
return gajim.connections[self.account] return app.connections[self.account]
@property @property
def full_jid(self): def full_jid(self):

View File

@ -21,7 +21,7 @@ from time import localtime, strftime
from datetime import date from datetime import date
from gajim import dialogs from gajim import dialogs
from gajim.common import gajim from gajim.common import app
from gajim.common import helpers from gajim.common import helpers
from gajim.common.exceptions import GajimGeneralException from gajim.common.exceptions import GajimGeneralException
from gajim.common.logger import KindConstant from gajim.common.logger import KindConstant
@ -87,7 +87,7 @@ class StandardCommonCommands(CommandContainer):
@command('lastlog', overlap=True) @command('lastlog', overlap=True)
@doc(_("Show logged messages which mention given text")) @doc(_("Show logged messages which mention given text"))
def grep(self, text, limit=None): def grep(self, text, limit=None):
results = gajim.logger.search_log(self.account, self.contact.jid, text) results = app.logger.search_log(self.account, self.contact.jid, text)
if not results: if not results:
raise CommandError(_("%s: Nothing found") % text) raise CommandError(_("%s: Nothing found") % text)
@ -102,7 +102,7 @@ class StandardCommonCommands(CommandContainer):
contact = row.contact_name contact = row.contact_name
if not contact: if not contact:
if row.kind == KindConstant.CHAT_MSG_SENT: if row.kind == KindConstant.CHAT_MSG_SENT:
contact = gajim.nicks[self.account] contact = app.nicks[self.account]
else: else:
contact = self.contact.name contact = self.contact.name
@ -129,8 +129,8 @@ class StandardCommonCommands(CommandContainer):
def status(self, status, message): def status(self, status, message):
if status not in ('online', 'away', 'chat', 'xa', 'dnd'): if status not in ('online', 'away', 'chat', 'xa', 'dnd'):
raise CommandError("Invalid status given") raise CommandError("Invalid status given")
for connection in gajim.connections.values(): for connection in app.connections.values():
if not gajim.config.get_per('accounts', connection.name, if not app.config.get_per('accounts', connection.name,
'sync_with_global_status'): 'sync_with_global_status'):
continue continue
if connection.connected < 2: if connection.connected < 2:
@ -143,8 +143,8 @@ class StandardCommonCommands(CommandContainer):
if not message: if not message:
message = _("Away") message = _("Away")
for connection in gajim.connections.values(): for connection in app.connections.values():
if not gajim.config.get_per('accounts', connection.name, if not app.config.get_per('accounts', connection.name,
'sync_with_global_status'): 'sync_with_global_status'):
continue continue
if connection.connected < 2: if connection.connected < 2:
@ -157,8 +157,8 @@ class StandardCommonCommands(CommandContainer):
if not message: if not message:
message = _("Available") message = _("Available")
for connection in gajim.connections.values(): for connection in app.connections.values():
if not gajim.config.get_per('accounts', connection.name, if not app.config.get_per('accounts', connection.name,
'sync_with_global_status'): 'sync_with_global_status'):
continue continue
if connection.connected < 2: if connection.connected < 2:
@ -182,9 +182,9 @@ class StandardCommonChatCommands(CommandContainer):
@command @command
@doc(_("Send a ping to the contact")) @doc(_("Send a ping to the contact"))
def ping(self): def ping(self):
if self.account == gajim.ZEROCONF_ACC_NAME: if self.account == app.ZEROCONF_ACC_NAME:
raise CommandError(_('Command is not supported for zeroconf accounts')) raise CommandError(_('Command is not supported for zeroconf accounts'))
gajim.connections[self.account].sendPing(self.contact) app.connections[self.account].sendPing(self.contact)
@command @command
@doc(_("Send DTMF sequence through an open audio session")) @doc(_("Send DTMF sequence through an open audio session"))
@ -271,7 +271,7 @@ class StandardGroupChatCommands(CommandContainer):
@command('query', raw=True) @command('query', raw=True)
@doc(_("Open a private chat window with a specified occupant")) @doc(_("Open a private chat window with a specified occupant"))
def chat(self, nick): def chat(self, nick):
nicks = gajim.contacts.get_nick_list(self.account, self.room_jid) nicks = app.contacts.get_nick_list(self.account, self.room_jid)
if nick in nicks: if nick in nicks:
self.on_send_pm(nick=nick) self.on_send_pm(nick=nick)
else: else:
@ -280,7 +280,7 @@ class StandardGroupChatCommands(CommandContainer):
@command('msg', raw=True) @command('msg', raw=True)
@doc(_("Open a private chat window with a specified occupant and send him a message")) @doc(_("Open a private chat window with a specified occupant and send him a message"))
def message(self, nick, a_message): def message(self, nick, a_message):
nicks = gajim.contacts.get_nick_list(self.account, self.room_jid) nicks = app.contacts.get_nick_list(self.account, self.room_jid)
if nick in nicks: if nick in nicks:
self.on_send_pm(nick=nick, msg=a_message) self.on_send_pm(nick=nick, msg=a_message)
else: else:
@ -307,10 +307,10 @@ class StandardGroupChatCommands(CommandContainer):
nick = self.nick nick = self.nick
if '@' not in jid: if '@' not in jid:
jid = jid + '@' + gajim.get_server_from_jid(self.room_jid) jid = jid + '@' + app.get_server_from_jid(self.room_jid)
try: try:
gajim.interface.instances[self.account]['join_gc'].window.present() app.interface.instances[self.account]['join_gc'].window.present()
except KeyError: except KeyError:
try: try:
dialogs.JoinGroupchatWindow(account=self.account, room_jid=jid, nick=nick) dialogs.JoinGroupchatWindow(account=self.account, room_jid=jid, nick=nick)
@ -329,15 +329,15 @@ class StandardGroupChatCommands(CommandContainer):
If given nickname is not found it will be treated as a jid. If given nickname is not found it will be treated as a jid.
""")) """))
def ban(self, who, reason): def ban(self, who, reason):
if who in gajim.contacts.get_nick_list(self.account, self.room_jid): if who in app.contacts.get_nick_list(self.account, self.room_jid):
contact = gajim.contacts.get_gc_contact(self.account, self.room_jid, who) contact = app.contacts.get_gc_contact(self.account, self.room_jid, who)
who = contact.jid who = contact.jid
self.connection.gc_set_affiliation(self.room_jid, who, 'outcast', reason or str()) self.connection.gc_set_affiliation(self.room_jid, who, 'outcast', reason or str())
@command(raw=True, empty=True) @command(raw=True, empty=True)
@doc(_("Kick user by a nick from a groupchat")) @doc(_("Kick user by a nick from a groupchat"))
def kick(self, who, reason): def kick(self, who, reason):
if not who in gajim.contacts.get_nick_list(self.account, self.room_jid): if not who in app.contacts.get_nick_list(self.account, self.room_jid):
raise CommandError(_("Nickname not found")) raise CommandError(_("Nickname not found"))
self.connection.gc_set_role(self.room_jid, who, 'none', reason or str()) self.connection.gc_set_role(self.room_jid, who, 'none', reason or str())
@ -349,7 +349,7 @@ class StandardGroupChatCommands(CommandContainer):
def role(self, who, role): def role(self, who, role):
if role not in ('moderator', 'participant', 'visitor', 'none'): if role not in ('moderator', 'participant', 'visitor', 'none'):
raise CommandError(_("Invalid role given")) raise CommandError(_("Invalid role given"))
if not who in gajim.contacts.get_nick_list(self.account, self.room_jid): if not who in app.contacts.get_nick_list(self.account, self.room_jid):
raise CommandError(_("Nickname not found")) raise CommandError(_("Nickname not found"))
self.connection.gc_set_role(self.room_jid, who, role) self.connection.gc_set_role(self.room_jid, who, role)
@ -361,17 +361,17 @@ class StandardGroupChatCommands(CommandContainer):
def affiliate(self, who, affiliation): def affiliate(self, who, affiliation):
if affiliation not in ('owner', 'admin', 'member', 'outcast', 'none'): if affiliation not in ('owner', 'admin', 'member', 'outcast', 'none'):
raise CommandError(_("Invalid affiliation given")) raise CommandError(_("Invalid affiliation given"))
if not who in gajim.contacts.get_nick_list(self.account, self.room_jid): if not who in app.contacts.get_nick_list(self.account, self.room_jid):
raise CommandError(_("Nickname not found")) raise CommandError(_("Nickname not found"))
contact = gajim.contacts.get_gc_contact(self.account, self.room_jid, who) contact = app.contacts.get_gc_contact(self.account, self.room_jid, who)
self.connection.gc_set_affiliation(self.room_jid, contact.jid, self.connection.gc_set_affiliation(self.room_jid, contact.jid,
affiliation) affiliation)
@command @command
@doc(_("Display names of all group chat occupants")) @doc(_("Display names of all group chat occupants"))
def names(self, verbose=False): def names(self, verbose=False):
ggc = gajim.contacts.get_gc_contact ggc = app.contacts.get_gc_contact
gnl = gajim.contacts.get_nick_list gnl = app.contacts.get_nick_list
get_contact = lambda nick: ggc(self.account, self.room_jid, nick) get_contact = lambda nick: ggc(self.account, self.room_jid, nick)
get_role = lambda nick: get_contact(nick).role get_role = lambda nick: get_contact(nick).role
@ -402,8 +402,8 @@ class StandardGroupChatCommands(CommandContainer):
@command @command
@doc(_("Send a ping to the contact")) @doc(_("Send a ping to the contact"))
def ping(self, nick): def ping(self, nick):
if self.account == gajim.ZEROCONF_ACC_NAME: if self.account == app.ZEROCONF_ACC_NAME:
raise CommandError(_('Command is not supported for zeroconf accounts')) raise CommandError(_('Command is not supported for zeroconf accounts'))
gc_c = gajim.contacts.get_gc_contact(self.account, self.room_jid, nick) gc_c = app.contacts.get_gc_contact(self.account, self.room_jid, nick)
gajim.connections[self.account].sendPing(gc_c, self) app.connections[self.account].sendPing(gc_c, self)

View File

@ -1,5 +1,5 @@
# -*- coding:utf-8 -*- # -*- coding:utf-8 -*-
## src/common/gajim.py ## gajim/common/app.py
## ##
## Copyright (C) 2003-2014 Yann Leboulanger <asterix AT lagaule.org> ## Copyright (C) 2003-2014 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2005-2006 Dimitur Kirov <dkirov AT gmail.com> ## Copyright (C) 2005-2006 Dimitur Kirov <dkirov AT gmail.com>
@ -144,7 +144,7 @@ SHOW_LIST = ['offline', 'connecting', 'online', 'chat', 'away', 'xa', 'dnd',
# zeroconf account name # zeroconf account name
ZEROCONF_ACC_NAME = 'Local' ZEROCONF_ACC_NAME = 'Local'
# These will be set in gajim.gui_interface. # These will be set in app.gui_interface.
idlequeue = None idlequeue = None
socks5queue = None socks5queue = None

View File

@ -27,7 +27,7 @@ import os
import shutil import shutil
import sys import sys
from gajim.common import gajim from gajim.common import app
from gajim.common import logger from gajim.common import logger
# DO NOT MOVE ABOVE OF import gajim # DO NOT MOVE ABOVE OF import gajim
@ -173,12 +173,12 @@ def check_and_possibly_move_config():
LOG_DB_PATH = logger.LOG_DB_PATH LOG_DB_PATH = logger.LOG_DB_PATH
CACHE_DB_PATH = logger.CACHE_DB_PATH CACHE_DB_PATH = logger.CACHE_DB_PATH
vars = {} vars = {}
vars['VCARD_PATH'] = gajim.VCARD_PATH vars['VCARD_PATH'] = app.VCARD_PATH
vars['AVATAR_PATH'] = gajim.AVATAR_PATH vars['AVATAR_PATH'] = app.AVATAR_PATH
vars['MY_EMOTS_PATH'] = gajim.MY_EMOTS_PATH vars['MY_EMOTS_PATH'] = app.MY_EMOTS_PATH
vars['MY_ICONSETS_PATH'] = gajim.MY_ICONSETS_PATH vars['MY_ICONSETS_PATH'] = app.MY_ICONSETS_PATH
vars['MY_MOOD_ICONSETS_PATH'] = gajim.MY_MOOD_ICONSETS_PATH vars['MY_MOOD_ICONSETS_PATH'] = app.MY_MOOD_ICONSETS_PATH
vars['MY_ACTIVITY_ICONSETS_PATH'] = gajim.MY_ACTIVITY_ICONSETS_PATH vars['MY_ACTIVITY_ICONSETS_PATH'] = app.MY_ACTIVITY_ICONSETS_PATH
from gajim.common import configpaths from gajim.common import configpaths
MY_DATA = configpaths.gajimpaths['MY_DATA'] MY_DATA = configpaths.gajimpaths['MY_DATA']
MY_CONFIG = configpaths.gajimpaths['MY_CONFIG'] MY_CONFIG = configpaths.gajimpaths['MY_CONFIG']
@ -252,8 +252,8 @@ def check_and_possibly_move_config():
continue continue
print(_('moving %s to %s') % (src, dst)) print(_('moving %s to %s') % (src, dst))
shutil.move(src, dst) shutil.move(src, dst)
gajim.logger.init_vars() app.logger.init_vars()
gajim.logger.attach_cache_database() app.logger.attach_cache_database()
def check_and_possibly_create_paths(): def check_and_possibly_create_paths():
LOG_DB_PATH = logger.LOG_DB_PATH LOG_DB_PATH = logger.LOG_DB_PATH
@ -262,8 +262,8 @@ def check_and_possibly_create_paths():
CACHE_DB_PATH = logger.CACHE_DB_PATH CACHE_DB_PATH = logger.CACHE_DB_PATH
CACHE_DB_FOLDER, CACHE_DB_FILE = os.path.split(CACHE_DB_PATH) CACHE_DB_FOLDER, CACHE_DB_FILE = os.path.split(CACHE_DB_PATH)
VCARD_PATH = gajim.VCARD_PATH VCARD_PATH = app.VCARD_PATH
AVATAR_PATH = gajim.AVATAR_PATH AVATAR_PATH = app.AVATAR_PATH
from gajim.common import configpaths from gajim.common import configpaths
MY_DATA = configpaths.gajimpaths['MY_DATA'] MY_DATA = configpaths.gajimpaths['MY_DATA']
MY_CONFIG = configpaths.gajimpaths['MY_CONFIG'] MY_CONFIG = configpaths.gajimpaths['MY_CONFIG']
@ -271,7 +271,7 @@ def check_and_possibly_create_paths():
XTLS_CERTS = configpaths.gajimpaths['MY_PEER_CERTS'] XTLS_CERTS = configpaths.gajimpaths['MY_PEER_CERTS']
LOCAL_XTLS_CERTS = configpaths.gajimpaths['MY_CERT'] LOCAL_XTLS_CERTS = configpaths.gajimpaths['MY_CERT']
PLUGINS_CONFIG_PATH = gajim.PLUGINS_CONFIG_DIR PLUGINS_CONFIG_PATH = app.PLUGINS_CONFIG_DIR
if not os.path.exists(MY_DATA): if not os.path.exists(MY_DATA):
create_path(MY_DATA) create_path(MY_DATA)
@ -335,7 +335,7 @@ def check_and_possibly_create_paths():
if os.path.exists(CACHE_DB_PATH): if os.path.exists(CACHE_DB_PATH):
os.remove(CACHE_DB_PATH) os.remove(CACHE_DB_PATH)
create_log_db() create_log_db()
gajim.logger.init_vars() app.logger.init_vars()
elif os.path.isdir(LOG_DB_PATH): elif os.path.isdir(LOG_DB_PATH):
print(_('%s is a directory but should be a file') % LOG_DB_PATH) print(_('%s is a directory but should be a file') % LOG_DB_PATH)
print(_('Gajim will now exit')) print(_('Gajim will now exit'))
@ -343,7 +343,7 @@ def check_and_possibly_create_paths():
if not os.path.exists(CACHE_DB_PATH): if not os.path.exists(CACHE_DB_PATH):
create_cache_db() create_cache_db()
gajim.logger.attach_cache_database() app.logger.attach_cache_database()
elif os.path.isdir(CACHE_DB_PATH): elif os.path.isdir(CACHE_DB_PATH):
print(_('%s is a directory but should be a file') % CACHE_DB_PATH) print(_('%s is a directory but should be a file') % CACHE_DB_PATH)
print(_('Gajim will now exit')) print(_('Gajim will now exit'))

View File

@ -25,7 +25,7 @@
import nbxmpp import nbxmpp
from gajim.common import helpers from gajim.common import helpers
from gajim.common import dataforms from gajim.common import dataforms
from gajim.common import gajim from gajim.common import app
from gajim.common.connection_handlers_events import MessageOutgoingEvent from gajim.common.connection_handlers_events import MessageOutgoingEvent
import logging import logging
@ -157,7 +157,7 @@ class ChangeStatusCommand(AdHocCommand):
self.connection.connection.send(response, now = presencetype == 'offline') self.connection.connection.send(response, now = presencetype == 'offline')
# send new status # send new status
gajim.interface.roster.send_status(self.connection.name, presencetype, app.interface.roster.send_status(self.connection.name, presencetype,
presencedesc) presencedesc)
return False # finish the session return False # finish the session
@ -165,8 +165,8 @@ class ChangeStatusCommand(AdHocCommand):
def find_current_groupchats(account): def find_current_groupchats(account):
import message_control import message_control
rooms = [] rooms = []
for gc_control in gajim.interface.msg_win_mgr.get_controls( for gc_control in app.interface.msg_win_mgr.get_controls(
message_control.TYPE_GC) + gajim.interface.minimized_controls[account].\ message_control.TYPE_GC) + app.interface.minimized_controls[account].\
values(): values():
acct = gc_control.account acct = gc_control.account
# check if account is the good one # check if account is the good one
@ -174,8 +174,8 @@ def find_current_groupchats(account):
continue continue
room_jid = gc_control.room_jid room_jid = gc_control.room_jid
nick = gc_control.nick nick = gc_control.nick
if room_jid in gajim.gc_connected[acct] and \ if room_jid in app.gc_connected[acct] and \
gajim.gc_connected[acct][room_jid]: app.gc_connected[acct][room_jid]:
rooms.append((room_jid, nick,)) rooms.append((room_jid, nick,))
return rooms return rooms
@ -241,13 +241,13 @@ class LeaveGroupchatsCommand(AdHocCommand):
account = self.connection.name account = self.connection.name
try: try:
for room_jid in gc: for room_jid in gc:
gc_control = gajim.interface.msg_win_mgr.get_gc_control(room_jid, gc_control = app.interface.msg_win_mgr.get_gc_control(room_jid,
account) account)
if not gc_control: if not gc_control:
gc_control = gajim.interface.minimized_controls[account]\ gc_control = app.interface.minimized_controls[account]\
[room_jid] [room_jid]
gc_control.shutdown() gc_control.shutdown()
gajim.interface.roster.remove_groupchat(room_jid, account) app.interface.roster.remove_groupchat(room_jid, account)
continue continue
gc_control.parent_win.remove_tab(gc_control, None, force = True) gc_control.parent_win.remove_tab(gc_control, None, force = True)
except Exception: # KeyError if there's no such room opened except Exception: # KeyError if there's no such room opened
@ -278,15 +278,15 @@ class ForwardMessagesCommand(AdHocCommand):
def execute(self, request): def execute(self, request):
account = self.connection.name account = self.connection.name
# Forward messages # Forward messages
events = gajim.events.get_events(account, types=['chat', 'normal', events = app.events.get_events(account, types=['chat', 'normal',
'printed_chat']) 'printed_chat'])
j, resource = gajim.get_room_and_nick_from_fjid(self.jid) j, resource = app.get_room_and_nick_from_fjid(self.jid)
for jid in events: for jid in events:
for event in events[jid]: for event in events[jid]:
ev_typ = event.type_ ev_typ = event.type_
if ev_typ == 'printed_chat': if ev_typ == 'printed_chat':
ev_typ = 'chat' ev_typ = 'chat'
gajim.nec.push_outgoing_event(MessageOutgoingEvent(None, app.nec.push_outgoing_event(MessageOutgoingEvent(None,
account=account, jid=j, message=event.message, type_=ev_typ, account=account, jid=j, message=event.message, type_=ev_typ,
subject=event.subject, resource=resource, forward_from=jid, subject=event.subject, resource=resource, forward_from=jid,
delayed=event.time_)) delayed=event.time_))
@ -313,14 +313,14 @@ class FwdMsgThenDisconnectCommand(AdHocCommand):
def execute(self, request): def execute(self, request):
account = self.connection.name account = self.connection.name
# Forward messages # Forward messages
events = gajim.events.get_events(account, types=['chat', 'normal']) events = app.events.get_events(account, types=['chat', 'normal'])
j, resource = gajim.get_room_and_nick_from_fjid(self.jid) j, resource = app.get_room_and_nick_from_fjid(self.jid)
for jid in events: for jid in events:
for event in events[jid]: for event in events[jid]:
ev_typ = event.type_ ev_typ = event.type_
if ev_typ == 'printed_chat': if ev_typ == 'printed_chat':
ev_typ = 'chat' ev_typ = 'chat'
gajim.nec.push_outgoing_event(MessageOutgoingEvent(None, app.nec.push_outgoing_event(MessageOutgoingEvent(None,
account=account, jid=j, message=event.message, type_=ev_typ, account=account, jid=j, message=event.message, type_=ev_typ,
subject=event.subject, resource=resource, forward_from=jid, subject=event.subject, resource=resource, forward_from=jid,
delayed=event.time_, now=True)) delayed=event.time_, now=True))
@ -333,7 +333,7 @@ class FwdMsgThenDisconnectCommand(AdHocCommand):
self.connection.connection.send(response, now = True) self.connection.connection.send(response, now = True)
# send new status # send new status
gajim.interface.roster.send_status(self.connection.name, 'offline', '') app.interface.roster.send_status(self.connection.name, 'offline', '')
# finish the session # finish the session
return False return False
@ -345,7 +345,7 @@ class ConnectionCommands:
def __init__(self): def __init__(self):
# a list of all commands exposed: node -> command class # a list of all commands exposed: node -> command class
self.__commands = {} self.__commands = {}
if gajim.config.get('remote_commands'): if app.config.get('remote_commands'):
for cmdobj in (ChangeStatusCommand, ForwardMessagesCommand, for cmdobj in (ChangeStatusCommand, ForwardMessagesCommand,
LeaveGroupchatsCommand, FwdMsgThenDisconnectCommand): LeaveGroupchatsCommand, FwdMsgThenDisconnectCommand):
self.__commands[cmdobj.commandnode] = cmdobj self.__commands[cmdobj.commandnode] = cmdobj
@ -354,7 +354,7 @@ class ConnectionCommands:
self.__sessions = {} self.__sessions = {}
def getOurBareJID(self): def getOurBareJID(self):
return gajim.get_jid_from_account(self.name) return app.get_jid_from_account(self.name)
def isSameJID(self, jid): def isSameJID(self, jid):
""" """

View File

@ -795,9 +795,9 @@ class Config:
self.__options[1][opt] = self.__options[0][opt][Option.VAL] self.__options[1][opt] = self.__options[0][opt][Option.VAL]
def _really_save(self): def _really_save(self):
from gajim.common import gajim from gajim.common import app
if gajim.interface: if app.interface:
gajim.interface.save_config() app.interface.save_config()
self.save_timeout_id = None self.save_timeout_id = None
return False return False

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -35,7 +35,7 @@ from nbxmpp.protocol import NS_CHATSTATES
from gajim.common import atom from gajim.common import atom
from gajim.common import nec from gajim.common import nec
from gajim.common import helpers from gajim.common import helpers
from gajim.common import gajim from gajim.common import app
from gajim.common import i18n from gajim.common import i18n
from gajim.common import dataforms from gajim.common import dataforms
from gajim.common import exceptions from gajim.common import exceptions
@ -46,7 +46,7 @@ from gajim.common.jingle_transport import JingleTransportSocks5
from gajim.common.file_props import FilesProp from gajim.common.file_props import FilesProp
from gajim.common.nec import NetworkEvent from gajim.common.nec import NetworkEvent
if gajim.HAVE_PYOPENSSL: if app.HAVE_PYOPENSSL:
import OpenSSL.crypto import OpenSSL.crypto
log = logging.getLogger('gajim.c.connection_handlers_events') log = logging.getLogger('gajim.c.connection_handlers_events')
@ -81,20 +81,20 @@ class HelperEvent:
del self.conn.groupchat_jids[self.id_] del self.conn.groupchat_jids[self.id_]
else: else:
self.fjid = helpers.get_full_jid_from_iq(self.stanza) self.fjid = helpers.get_full_jid_from_iq(self.stanza)
self.jid, self.resource = gajim.get_room_and_nick_from_fjid(self.fjid) self.jid, self.resource = app.get_room_and_nick_from_fjid(self.fjid)
def get_id(self): def get_id(self):
self.id_ = self.stanza.getID() self.id_ = self.stanza.getID()
def get_gc_control(self): def get_gc_control(self):
self.gc_control = gajim.interface.msg_win_mgr.get_gc_control(self.jid, self.gc_control = app.interface.msg_win_mgr.get_gc_control(self.jid,
self.conn.name) self.conn.name)
# If gc_control is missing - it may be minimized. Try to get it # If gc_control is missing - it may be minimized. Try to get it
# from there. If it's not there - then it's missing anyway and # from there. If it's not there - then it's missing anyway and
# will remain set to None. # will remain set to None.
if not self.gc_control: if not self.gc_control:
minimized = gajim.interface.minimized_controls[self.conn.name] minimized = app.interface.minimized_controls[self.conn.name]
self.gc_control = minimized.get(self.jid) self.gc_control = minimized.get(self.jid)
def _generate_timestamp(self, tag): def _generate_timestamp(self, tag):
@ -130,7 +130,7 @@ class HttpAuthReceivedEvent(nec.NetworkIncomingEvent):
base_network_events = [] base_network_events = []
def generate(self): def generate(self):
self.opt = gajim.config.get_per('accounts', self.conn.name, 'http_auth') self.opt = app.config.get_per('accounts', self.conn.name, 'http_auth')
self.iq_id = self.stanza.getTagAttr('confirm', 'id') self.iq_id = self.stanza.getTagAttr('confirm', 'id')
self.method = self.stanza.getTagAttr('confirm', 'method') self.method = self.stanza.getTagAttr('confirm', 'method')
self.url = self.stanza.getTagAttr('confirm', 'url') self.url = self.stanza.getTagAttr('confirm', 'url')
@ -283,7 +283,7 @@ class GMailQueryReceivedEvent(nec.NetworkIncomingEvent):
'date': gmessage.getAttr('date')}) 'date': gmessage.getAttr('date')})
self.conn.gmail_last_time = int(mb.getAttr('result-time')) self.conn.gmail_last_time = int(mb.getAttr('result-time'))
self.jid = gajim.get_jid_from_account(self.name) self.jid = app.get_jid_from_account(self.name)
log.debug('You have %s new gmail e-mails on %s.', self.newmsgs, self.jid) log.debug('You have %s new gmail e-mails on %s.', self.newmsgs, self.jid)
return True return True
@ -309,7 +309,7 @@ class RosterItemExchangeEvent(nec.NetworkIncomingEvent, HelperEvent):
log.warning('Invalid JID: %s, ignoring it' % item.getAttr('jid')) log.warning('Invalid JID: %s, ignoring it' % item.getAttr('jid'))
continue continue
name = item.getAttr('name') name = item.getAttr('name')
contact = gajim.contacts.get_contact(self.conn.name, jid) contact = app.contacts.get_contact(self.conn.name, jid)
groups = [] groups = []
same_groups = True same_groups = True
for group in item.getTags('group'): for group in item.getTags('group'):
@ -358,7 +358,7 @@ class RosterReceivedEvent(nec.NetworkIncomingEvent):
self.received_from_server = self.xmpp_roster.received_from_server self.received_from_server = self.xmpp_roster.received_from_server
self.roster = {} self.roster = {}
raw_roster = self.xmpp_roster.getRaw() raw_roster = self.xmpp_roster.getRaw()
our_jid = gajim.get_jid_from_account(self.conn.name) our_jid = app.get_jid_from_account(self.conn.name)
for jid in raw_roster: for jid in raw_roster:
try: try:
@ -382,12 +382,12 @@ class RosterReceivedEvent(nec.NetworkIncomingEvent):
else: else:
# Roster comes from DB # Roster comes from DB
self.received_from_server = False self.received_from_server = False
self.version = gajim.config.get_per('accounts', self.conn.name, self.version = app.config.get_per('accounts', self.conn.name,
'roster_version') 'roster_version')
self.roster = gajim.logger.get_roster(gajim.get_jid_from_account( self.roster = app.logger.get_roster(app.get_jid_from_account(
self.conn.name)) self.conn.name))
if not self.roster: if not self.roster:
gajim.config.set_per( app.config.set_per(
'accounts', self.conn.name, 'roster_version', '') 'accounts', self.conn.name, 'roster_version', '')
return True return True
@ -397,8 +397,8 @@ class RosterSetReceivedEvent(nec.NetworkIncomingEvent):
def generate(self): def generate(self):
frm = helpers.get_jid_from_iq(self.stanza) frm = helpers.get_jid_from_iq(self.stanza)
our_jid = gajim.get_jid_from_account(self.conn.name) our_jid = app.get_jid_from_account(self.conn.name)
if frm and frm != our_jid and frm != gajim.get_server_from_jid(our_jid): if frm and frm != our_jid and frm != app.get_server_from_jid(our_jid):
return return
self.version = self.stanza.getTagAttr('query', 'ver') self.version = self.stanza.getTagAttr('query', 'ver')
self.items = {} self.items = {}
@ -783,7 +783,7 @@ PresenceHelperEvent):
except Exception: except Exception:
log.warning('Invalid JID: %s, ignoring it' % self.stanza.getFrom()) log.warning('Invalid JID: %s, ignoring it' % self.stanza.getFrom())
return return
jid_list = gajim.contacts.get_jid_list(self.conn.name) jid_list = app.contacts.get_jid_list(self.conn.name)
self.timestamp = None self.timestamp = None
self.get_id() self.get_id()
self.is_gc = False # is it a GC presence ? self.is_gc = False # is it a GC presence ?
@ -819,7 +819,7 @@ PresenceHelperEvent):
self._generate_timestamp(self.stanza.getTimestamp()) self._generate_timestamp(self.stanza.getTimestamp())
elif namespace == 'http://delx.cjb.net/protocol/roster-subsync': elif namespace == 'http://delx.cjb.net/protocol/roster-subsync':
# see http://trac.gajim.org/ticket/326 # see http://trac.gajim.org/ticket/326
agent = gajim.get_server_from_jid(self.jid) agent = app.get_server_from_jid(self.jid)
if self.conn.connection.getRoster().getItem(agent): if self.conn.connection.getRoster().getItem(agent):
# to be sure it's a transport contact # to be sure it's a transport contact
self.transport_auto_auth = True self.transport_auto_auth = True
@ -841,32 +841,32 @@ PresenceHelperEvent):
self.errmsg = self.stanza.getErrorMsg() self.errmsg = self.stanza.getErrorMsg()
if self.is_gc: if self.is_gc:
gajim.nec.push_incoming_event( app.nec.push_incoming_event(
GcPresenceReceivedEvent( GcPresenceReceivedEvent(
None, conn=self.conn, stanza=self.stanza, None, conn=self.conn, stanza=self.stanza,
presence_obj=self)) presence_obj=self))
return return
if self.ptype == 'subscribe': if self.ptype == 'subscribe':
gajim.nec.push_incoming_event(SubscribePresenceReceivedEvent(None, app.nec.push_incoming_event(SubscribePresenceReceivedEvent(None,
conn=self.conn, stanza=self.stanza, presence_obj=self)) conn=self.conn, stanza=self.stanza, presence_obj=self))
elif self.ptype == 'subscribed': elif self.ptype == 'subscribed':
# BE CAREFUL: no con.updateRosterItem() in a callback # BE CAREFUL: no con.updateRosterItem() in a callback
gajim.nec.push_incoming_event(SubscribedPresenceReceivedEvent(None, app.nec.push_incoming_event(SubscribedPresenceReceivedEvent(None,
conn=self.conn, stanza=self.stanza, presence_obj=self)) conn=self.conn, stanza=self.stanza, presence_obj=self))
elif self.ptype == 'unsubscribe': elif self.ptype == 'unsubscribe':
log.debug(_('unsubscribe request from %s') % self.jid) log.debug(_('unsubscribe request from %s') % self.jid)
elif self.ptype == 'unsubscribed': elif self.ptype == 'unsubscribed':
gajim.nec.push_incoming_event(UnsubscribedPresenceReceivedEvent( app.nec.push_incoming_event(UnsubscribedPresenceReceivedEvent(
None, conn=self.conn, stanza=self.stanza, presence_obj=self)) None, conn=self.conn, stanza=self.stanza, presence_obj=self))
elif self.ptype == 'error': elif self.ptype == 'error':
return return
if not self.ptype or self.ptype == 'unavailable': if not self.ptype or self.ptype == 'unavailable':
our_jid = gajim.get_jid_from_account(self.conn.name) our_jid = app.get_jid_from_account(self.conn.name)
if self.jid == our_jid and self.resource == self.conn.server_resource: if self.jid == our_jid and self.resource == self.conn.server_resource:
# We got our own presence # We got our own presence
gajim.nec.push_incoming_event(OurShowEvent(None, conn=self.conn, app.nec.push_incoming_event(OurShowEvent(None, conn=self.conn,
show=self.show)) show=self.show))
elif self.jid in jid_list or self.jid == our_jid: elif self.jid in jid_list or self.jid == our_jid:
return True return True
@ -876,7 +876,7 @@ class ZeroconfPresenceReceivedEvent(nec.NetworkIncomingEvent):
base_network_events = [] base_network_events = []
def generate(self): def generate(self):
self.jid, self.resource = gajim.get_room_and_nick_from_fjid(self.fjid) self.jid, self.resource = app.get_room_and_nick_from_fjid(self.fjid)
self.resource = 'local' self.resource = 'local'
self.prio = 0 self.prio = 0
self.keyID = None self.keyID = None
@ -914,7 +914,7 @@ class GcPresenceReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
self.errmsg = self.presence_obj.errmsg self.errmsg = self.presence_obj.errmsg
self.errcon = self.stanza.getError() self.errcon = self.stanza.getError()
self.get_gc_control() self.get_gc_control()
self.gc_contact = gajim.contacts.get_gc_contact(self.conn.name, self.gc_contact = app.contacts.get_gc_contact(self.conn.name,
self.room_jid, self.nick) self.room_jid, self.nick)
if self.ptype == 'error': if self.ptype == 'error':
@ -922,8 +922,8 @@ class GcPresenceReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
if self.ptype and self.ptype != 'unavailable': if self.ptype and self.ptype != 'unavailable':
return return
if gajim.config.get('log_contact_status_changes') and \ if app.config.get('log_contact_status_changes') and \
gajim.config.should_log(self.conn.name, self.room_jid): app.config.should_log(self.conn.name, self.room_jid):
if self.gc_contact: if self.gc_contact:
jid = self.gc_contact.jid jid = self.gc_contact.jid
else: else:
@ -932,10 +932,10 @@ class GcPresenceReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
if jid: if jid:
# we know real jid, save it in db # we know real jid, save it in db
st += ' (%s)' % jid st += ' (%s)' % jid
show = gajim.logger.convert_show_values_to_db_api_values(self.show) show = app.logger.convert_show_values_to_db_api_values(self.show)
if show is not None: if show is not None:
fjid = nbxmpp.JID(self.fjid) fjid = nbxmpp.JID(self.fjid)
gajim.logger.insert_into_logs(fjid.getStripped(), app.logger.insert_into_logs(fjid.getStripped(),
time_time(), time_time(),
KindConstant.GCSTATUS, KindConstant.GCSTATUS,
contact_name=fjid.getResource(), contact_name=fjid.getResource(),
@ -944,7 +944,7 @@ class GcPresenceReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
if self.avatar_sha == '': if self.avatar_sha == '':
# contact has no avatar # contact has no avatar
puny_nick = helpers.sanitize_filename(self.nick) puny_nick = helpers.sanitize_filename(self.nick)
gajim.interface.remove_avatar_files(self.room_jid, puny_nick) app.interface.remove_avatar_files(self.room_jid, puny_nick)
# NOTE: if it's a gc presence, don't ask vcard here. # NOTE: if it's a gc presence, don't ask vcard here.
# We may ask it to real jid in gui part. # We may ask it to real jid in gui part.
self.status_code = [] self.status_code = []
@ -1118,7 +1118,7 @@ class MamDecryptedMessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
# For example Chatstates, Receipts, Chatmarkers # For example Chatstates, Receipts, Chatmarkers
log.debug('Received MAM message without text') log.debug('Received MAM message without text')
return return
self.is_pm = gajim.logger.jid_is_room_jid(self.with_.getStripped()) self.is_pm = app.logger.jid_is_room_jid(self.with_.getStripped())
if self.is_pm is None: if self.is_pm is None:
# Check if this event is triggered after a disco, so we dont # Check if this event is triggered after a disco, so we dont
# run into an endless loop # run into an endless loop
@ -1166,13 +1166,13 @@ class MessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
# check if the message is a roster item exchange (XEP-0144) # check if the message is a roster item exchange (XEP-0144)
if self.stanza.getTag('x', namespace=nbxmpp.NS_ROSTERX): if self.stanza.getTag('x', namespace=nbxmpp.NS_ROSTERX):
gajim.nec.push_incoming_event(RosterItemExchangeEvent(None, app.nec.push_incoming_event(RosterItemExchangeEvent(None,
conn=self.conn, stanza=self.stanza)) conn=self.conn, stanza=self.stanza))
return return
# check if the message is a XEP-0070 confirmation request # check if the message is a XEP-0070 confirmation request
if self.stanza.getTag('confirm', namespace=nbxmpp.NS_HTTP_AUTH): if self.stanza.getTag('confirm', namespace=nbxmpp.NS_HTTP_AUTH):
gajim.nec.push_incoming_event(HttpAuthReceivedEvent(None, app.nec.push_incoming_event(HttpAuthReceivedEvent(None,
conn=self.conn, stanza=self.stanza)) conn=self.conn, stanza=self.stanza))
return return
@ -1186,7 +1186,7 @@ class MessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
address_tag = self.stanza.getTag('addresses', address_tag = self.stanza.getTag('addresses',
namespace=nbxmpp.NS_ADDRESS) namespace=nbxmpp.NS_ADDRESS)
# Be sure it comes from one of our resource, else ignore address element # Be sure it comes from one of our resource, else ignore address element
if address_tag and self.jid == gajim.get_jid_from_account(account): if address_tag and self.jid == app.get_jid_from_account(account):
address = address_tag.getTag('address', attrs={'type': 'ofrom'}) address = address_tag.getTag('address', attrs={'type': 'ofrom'})
if address: if address:
try: try:
@ -1195,14 +1195,14 @@ class MessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
log.warning('Invalid JID: %s, ignoring it', log.warning('Invalid JID: %s, ignoring it',
address.getAttr('jid')) address.getAttr('jid'))
return return
self.jid = gajim.get_jid_without_resource(self.fjid) self.jid = app.get_jid_without_resource(self.fjid)
carbon_marker = self.stanza.getTag('sent', namespace=nbxmpp.NS_CARBONS) carbon_marker = self.stanza.getTag('sent', namespace=nbxmpp.NS_CARBONS)
if not carbon_marker: if not carbon_marker:
carbon_marker = self.stanza.getTag('received', carbon_marker = self.stanza.getTag('received',
namespace=nbxmpp.NS_CARBONS) namespace=nbxmpp.NS_CARBONS)
# Be sure it comes from one of our resource, else ignore forward element # Be sure it comes from one of our resource, else ignore forward element
if carbon_marker and self.jid == gajim.get_jid_from_account(account): if carbon_marker and self.jid == app.get_jid_from_account(account):
forward_tag = carbon_marker.getTag('forwarded', forward_tag = carbon_marker.getTag('forwarded',
namespace=nbxmpp.NS_FORWARD) namespace=nbxmpp.NS_FORWARD)
if forward_tag: if forward_tag:
@ -1213,16 +1213,16 @@ class MessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
to = self.stanza.getTo() to = self.stanza.getTo()
frm = self.stanza.getFrom() frm = self.stanza.getFrom()
if not frm: if not frm:
frm = gajim.get_jid_from_account(account) frm = app.get_jid_from_account(account)
self.stanza.setTo(frm) self.stanza.setTo(frm)
if not to: if not to:
to = gajim.get_jid_from_account(account) to = app.get_jid_from_account(account)
self.stanza.setFrom(to) self.stanza.setFrom(to)
self.sent = True self.sent = True
elif carbon_marker.getName() == 'received': elif carbon_marker.getName() == 'received':
full_frm = str(self.stanza.getFrom()) full_frm = str(self.stanza.getFrom())
frm = gajim.get_jid_without_resource(full_frm) frm = app.get_jid_without_resource(full_frm)
if frm == gajim.get_jid_from_account(account): if frm == app.get_jid_from_account(account):
# Drop 'received' Carbons from ourself, we already # Drop 'received' Carbons from ourself, we already
# got the message with the 'sent' Carbon or via the # got the message with the 'sent' Carbon or via the
# message itself # message itself
@ -1249,7 +1249,7 @@ class MessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
log.warning('Invalid MAM Message: no forwarded child') log.warning('Invalid MAM Message: no forwarded child')
return return
gajim.nec.push_incoming_event( app.nec.push_incoming_event(
NetworkEvent('raw-mam-message-received', NetworkEvent('raw-mam-message-received',
conn=self.conn, conn=self.conn,
stanza=self.stanza, stanza=self.stanza,
@ -1261,13 +1261,13 @@ class MessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
muc_user = self.stanza.getTag('x', namespace=nbxmpp.NS_MUC_USER) muc_user = self.stanza.getTag('x', namespace=nbxmpp.NS_MUC_USER)
if muc_user: if muc_user:
if muc_user.getTag('decline'): if muc_user.getTag('decline'):
gajim.nec.push_incoming_event( app.nec.push_incoming_event(
GcDeclineReceivedEvent( GcDeclineReceivedEvent(
None, conn=self.conn, None, conn=self.conn,
room_jid=self.fjid, stanza=muc_user)) room_jid=self.fjid, stanza=muc_user))
return return
if muc_user.getTag('invite'): if muc_user.getTag('invite'):
gajim.nec.push_incoming_event( app.nec.push_incoming_event(
GcInvitationReceivedEvent( GcInvitationReceivedEvent(
None, conn=self.conn, jid_from=self.fjid, None, conn=self.conn, jid_from=self.fjid,
mediated=True, stanza=muc_user)) mediated=True, stanza=muc_user))
@ -1277,7 +1277,7 @@ class MessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
direct = self.stanza.getTag( direct = self.stanza.getTag(
'x', namespace=nbxmpp.NS_CONFERENCE) 'x', namespace=nbxmpp.NS_CONFERENCE)
if direct: if direct:
gajim.nec.push_incoming_event( app.nec.push_incoming_event(
GcInvitationReceivedEvent( GcInvitationReceivedEvent(
None, conn=self.conn, jid_from=self.fjid, None, conn=self.conn, jid_from=self.fjid,
mediated=False, stanza=direct)) mediated=False, stanza=direct))
@ -1304,7 +1304,7 @@ class MessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
self.session = None self.session = None
if self.mtype != 'groupchat': if self.mtype != 'groupchat':
if gajim.interface.is_pm_contact(self.fjid, account) and \ if app.interface.is_pm_contact(self.fjid, account) and \
self.mtype == 'error': self.mtype == 'error':
self.session = self.conn.find_session(self.fjid, self.thread_id) self.session = self.conn.find_session(self.fjid, self.thread_id)
if not self.session: if not self.session:
@ -1340,7 +1340,7 @@ class ZeroconfMessageReceivedEvent(MessageReceivedEvent):
self.fjid = key self.fjid = key
break break
self.jid, self.resource = gajim.get_room_and_nick_from_fjid(self.fjid) self.jid, self.resource = app.get_room_and_nick_from_fjid(self.fjid)
def generate(self): def generate(self):
self.base_event = nec.NetworkIncomingEvent(None, conn=self.conn, self.base_event = nec.NetworkIncomingEvent(None, conn=self.conn,
@ -1379,15 +1379,15 @@ class GcInvitationReceivedEvent(nec.NetworkIncomingEvent):
self.password = self.stanza.getTagData('password') self.password = self.stanza.getTagData('password')
self.is_continued = self.stanza.getTag('continue') is not None self.is_continued = self.stanza.getTag('continue') is not None
if self.room_jid in gajim.gc_connected[account] and \ if self.room_jid in app.gc_connected[account] and \
gajim.gc_connected[account][self.room_jid]: app.gc_connected[account][self.room_jid]:
# We are already in groupchat. Ignore invitation # We are already in groupchat. Ignore invitation
return return
jid = gajim.get_jid_without_resource(self.jid_from) jid = app.get_jid_without_resource(self.jid_from)
ignore = gajim.config.get_per( ignore = app.config.get_per(
'accounts', account, 'ignore_unknown_contacts') 'accounts', account, 'ignore_unknown_contacts')
if ignore and not gajim.contacts.get_contacts(account, jid): if ignore and not app.contacts.get_contacts(account, jid):
return return
return True return True
@ -1405,10 +1405,10 @@ class GcDeclineReceivedEvent(nec.NetworkIncomingEvent):
log.warning('Invalid JID: %s, ignoring it', log.warning('Invalid JID: %s, ignoring it',
decline.getAttr('from')) decline.getAttr('from'))
return return
jid = gajim.get_jid_without_resource(self.jid_from) jid = app.get_jid_without_resource(self.jid_from)
ignore = gajim.config.get_per( ignore = app.config.get_per(
'accounts', account, 'ignore_unknown_contacts') 'accounts', account, 'ignore_unknown_contacts')
if ignore and not gajim.contacts.get_contacts(account, jid): if ignore and not app.contacts.get_contacts(account, jid):
return return
self.reason = decline.getTagData('reason') self.reason = decline.getTagData('reason')
@ -1463,7 +1463,7 @@ class DecryptedMessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
self.form_node = self.stanza.getTag('x', namespace=nbxmpp.NS_DATA) self.form_node = self.stanza.getTag('x', namespace=nbxmpp.NS_DATA)
if gajim.config.get('ignore_incoming_xhtml'): if app.config.get('ignore_incoming_xhtml'):
self.xhtml = None self.xhtml = None
else: else:
self.xhtml = self.stanza.getXHTML() self.xhtml = self.stanza.getXHTML()
@ -1540,7 +1540,7 @@ class GcMessageReceivedEvent(nec.NetworkIncomingEvent):
self.encrypted = self.msg_obj.encrypted self.encrypted = self.msg_obj.encrypted
self.correct_id = None # XEP-0308 self.correct_id = None # XEP-0308
if gajim.config.get('ignore_incoming_xhtml'): if app.config.get('ignore_incoming_xhtml'):
self.xhtml_msgtxt = None self.xhtml_msgtxt = None
if self.msg_obj.resource: if self.msg_obj.resource:
@ -1555,7 +1555,7 @@ class GcMessageReceivedEvent(nec.NetworkIncomingEvent):
self.subject = self.stanza.getSubject() self.subject = self.stanza.getSubject()
if self.subject is not None: if self.subject is not None:
gajim.nec.push_incoming_event(GcSubjectReceivedEvent(None, app.nec.push_incoming_event(GcSubjectReceivedEvent(None,
conn=self.conn, msg_event=self)) conn=self.conn, msg_event=self))
return return
@ -1573,7 +1573,7 @@ class GcMessageReceivedEvent(nec.NetworkIncomingEvent):
# http://www.xmpp.org/extensions/xep-0045.html#roomconfig-notify # http://www.xmpp.org/extensions/xep-0045.html#roomconfig-notify
if self.stanza.getTag('x'): if self.stanza.getTag('x'):
if self.status_code != []: if self.status_code != []:
gajim.nec.push_incoming_event(GcConfigChangedReceivedEvent( app.nec.push_incoming_event(GcConfigChangedReceivedEvent(
None, conn=self.conn, msg_event=self)) None, conn=self.conn, msg_event=self))
if self.msg_obj.form_node: if self.msg_obj.form_node:
return True return True
@ -1681,7 +1681,7 @@ class JingleRequestReceivedEvent(nec.NetworkIncomingEvent):
def generate(self): def generate(self):
self.fjid = self.jingle_session.peerjid self.fjid = self.jingle_session.peerjid
self.jid, self.resource = gajim.get_room_and_nick_from_fjid(self.fjid) self.jid, self.resource = app.get_room_and_nick_from_fjid(self.fjid)
self.sid = self.jingle_session.sid self.sid = self.jingle_session.sid
return True return True
@ -1691,7 +1691,7 @@ class JingleConnectedReceivedEvent(nec.NetworkIncomingEvent):
def generate(self): def generate(self):
self.fjid = self.jingle_session.peerjid self.fjid = self.jingle_session.peerjid
self.jid, self.resource = gajim.get_room_and_nick_from_fjid(self.fjid) self.jid, self.resource = app.get_room_and_nick_from_fjid(self.fjid)
self.sid = self.jingle_session.sid self.sid = self.jingle_session.sid
return True return True
@ -1701,7 +1701,7 @@ class JingleDisconnectedReceivedEvent(nec.NetworkIncomingEvent):
def generate(self): def generate(self):
self.fjid = self.jingle_session.peerjid self.fjid = self.jingle_session.peerjid
self.jid, self.resource = gajim.get_room_and_nick_from_fjid(self.fjid) self.jid, self.resource = app.get_room_and_nick_from_fjid(self.fjid)
self.sid = self.jingle_session.sid self.sid = self.jingle_session.sid
return True return True
@ -1711,7 +1711,7 @@ class JingleTransferCancelledEvent(nec.NetworkIncomingEvent):
def generate(self): def generate(self):
self.fjid = self.jingle_session.peerjid self.fjid = self.jingle_session.peerjid
self.jid, self.resource = gajim.get_room_and_nick_from_fjid(self.fjid) self.jid, self.resource = app.get_room_and_nick_from_fjid(self.fjid)
self.sid = self.jingle_session.sid self.sid = self.jingle_session.sid
return True return True
@ -1721,7 +1721,7 @@ class JingleErrorReceivedEvent(nec.NetworkIncomingEvent):
def generate(self): def generate(self):
self.fjid = self.jingle_session.peerjid self.fjid = self.jingle_session.peerjid
self.jid, self.resource = gajim.get_room_and_nick_from_fjid(self.fjid) self.jid, self.resource = app.get_room_and_nick_from_fjid(self.fjid)
self.sid = self.jingle_session.sid self.sid = self.jingle_session.sid
return True return True
@ -1884,7 +1884,7 @@ class AgentRemovedEvent(nec.NetworkIncomingEvent):
def generate(self): def generate(self):
self.jid_list = [] self.jid_list = []
for jid in gajim.contacts.get_jid_list(self.conn.name): for jid in app.contacts.get_jid_list(self.conn.name):
if jid.endswith('@' + self.agent): if jid.endswith('@' + self.agent):
self.jid_list.append(jid) self.jid_list.append(jid)
return True return True
@ -1895,8 +1895,8 @@ class BadGPGPassphraseEvent(nec.NetworkIncomingEvent):
def generate(self): def generate(self):
self.account = self.conn.name self.account = self.conn.name
self.use_gpg_agent = gajim.config.get('use_gpg_agent') self.use_gpg_agent = app.config.get('use_gpg_agent')
self.keyID = gajim.config.get_per('accounts', self.conn.name, 'keyid') self.keyID = app.config.get_per('accounts', self.conn.name, 'keyid')
return True return True
class ConnectionLostEvent(nec.NetworkIncomingEvent): class ConnectionLostEvent(nec.NetworkIncomingEvent):
@ -1904,7 +1904,7 @@ class ConnectionLostEvent(nec.NetworkIncomingEvent):
base_network_events = [] base_network_events = []
def generate(self): def generate(self):
gajim.nec.push_incoming_event(OurShowEvent(None, conn=self.conn, app.nec.push_incoming_event(OurShowEvent(None, conn=self.conn,
show='offline')) show='offline'))
return True return True
@ -1971,7 +1971,7 @@ class GPGPasswordRequiredEvent(nec.NetworkIncomingEvent):
base_network_events = [] base_network_events = []
def generate(self): def generate(self):
self.keyid = gajim.config.get_per('accounts', self.conn.name, 'keyid') self.keyid = app.config.get_per('accounts', self.conn.name, 'keyid')
return True return True
class PEPReceivedEvent(nec.NetworkIncomingEvent, HelperEvent): class PEPReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
@ -2006,7 +2006,7 @@ class PEPReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
for item in items.getTags('item'): for item in items.getTags('item'):
entry = item.getTag('entry', namespace=nbxmpp.NS_ATOM) entry = item.getTag('entry', namespace=nbxmpp.NS_ATOM)
if entry: if entry:
gajim.nec.push_incoming_event(AtomEntryReceived(None, app.nec.push_incoming_event(AtomEntryReceived(None,
conn=self.conn, node=entry)) conn=self.conn, node=entry))
raise nbxmpp.NodeProcessed raise nbxmpp.NodeProcessed
@ -2178,7 +2178,7 @@ class AgentItemsReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
continue continue
self.items.append(attr) self.items.append(attr)
self.get_jid_resource() self.get_jid_resource()
hostname = gajim.config.get_per('accounts', self.conn.name, 'hostname') hostname = app.config.get_per('accounts', self.conn.name, 'hostname')
self.get_id() self.get_id()
if self.id_ in self.conn.disco_items_ids: if self.id_ in self.conn.disco_items_ids:
self.conn.disco_items_ids.remove(self.id_) self.conn.disco_items_ids.remove(self.id_)
@ -2266,7 +2266,7 @@ class FileRequestReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
def generate(self): def generate(self):
self.get_id() self.get_id()
self.fjid = self.conn._ft_get_from(self.stanza) self.fjid = self.conn._ft_get_from(self.stanza)
self.jid = gajim.get_jid_without_resource(self.fjid) self.jid = app.get_jid_without_resource(self.fjid)
if self.jingle_content: if self.jingle_content:
secu = self.jingle_content.getTag('security') secu = self.jingle_content.getTag('security')
self.FT_content.use_security = bool(secu) self.FT_content.use_security = bool(secu)
@ -2303,7 +2303,7 @@ class FileRequestReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
h = h.getData() if h else None h = h.getData() if h else None
n = file_tag.getTag('name') n = file_tag.getTag('name')
n = n.getData() if n else None n = n.getData() if n else None
pjid = gajim.get_jid_without_resource(self.fjid) pjid = app.get_jid_without_resource(self.fjid)
file_info = self.conn.get_file_info(pjid, hash_=h, file_info = self.conn.get_file_info(pjid, hash_=h,
name=n,account=self.conn.name) name=n,account=self.conn.name)
self.file_props.file_name = file_info['file-name'] self.file_props.file_name = file_info['file-name']
@ -2377,7 +2377,7 @@ class FileRequestErrorEvent(nec.NetworkIncomingEvent):
base_network_events = [] base_network_events = []
def generate(self): def generate(self):
self.jid = gajim.get_jid_without_resource(self.jid) self.jid = app.get_jid_without_resource(self.jid)
return True return True
class FileTransferCompletedEvent(nec.NetworkIncomingEvent): class FileTransferCompletedEvent(nec.NetworkIncomingEvent):
@ -2386,7 +2386,7 @@ class FileTransferCompletedEvent(nec.NetworkIncomingEvent):
def generate(self): def generate(self):
jid = str(self.file_props.receiver) jid = str(self.file_props.receiver)
self.jid = gajim.get_jid_without_resource(jid) self.jid = app.get_jid_without_resource(jid)
return True return True
class GatewayPromptReceivedEvent(nec.NetworkIncomingEvent, HelperEvent): class GatewayPromptReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
@ -2440,14 +2440,14 @@ class NotificationEvent(nec.NetworkIncomingEvent):
self.control = None self.control = None
self.get_focused() self.get_focused()
# This event has already been added to event list # This event has already been added to event list
if not self.control and len(gajim.events.get_events(self.conn.name, \ if not self.control and len(app.events.get_events(self.conn.name, \
self.jid, [msg_obj.mtype])) <= 1: self.jid, [msg_obj.mtype])) <= 1:
self.first_unread = True self.first_unread = True
if msg_obj.mtype == 'pm': if msg_obj.mtype == 'pm':
nick = msg_obj.resource nick = msg_obj.resource
else: else:
nick = gajim.get_name_from_jid(self.conn.name, self.jid) nick = app.get_name_from_jid(self.conn.name, self.jid)
if self.first_unread: if self.first_unread:
self.sound_event = 'first_message_received' self.sound_event = 'first_message_received'
@ -2456,7 +2456,7 @@ class NotificationEvent(nec.NetworkIncomingEvent):
else: else:
self.sound_event = 'next_message_received_unfocused' self.sound_event = 'next_message_received_unfocused'
if gajim.config.get('notification_preview_message'): if app.config.get('notification_preview_message'):
self.popup_text = msg_obj.msgtxt self.popup_text = msg_obj.msgtxt
if self.popup_text and (self.popup_text.startswith('/me ') or \ if self.popup_text and (self.popup_text.startswith('/me ') or \
self.popup_text.startswith('/me\n')): self.popup_text.startswith('/me\n')):
@ -2490,25 +2490,25 @@ class NotificationEvent(nec.NetworkIncomingEvent):
{'nickname': nick} {'nickname': nick}
if gajim.config.get('notify_on_new_message'): if app.config.get('notify_on_new_message'):
if self.first_unread or (gajim.config.get('autopopup_chat_opened') \ if self.first_unread or (app.config.get('autopopup_chat_opened') \
and not self.control_focused): and not self.control_focused):
if gajim.config.get('autopopupaway'): if app.config.get('autopopupaway'):
# always show notification # always show notification
self.do_popup = True self.do_popup = True
if gajim.connections[self.conn.name].connected in (2, 3): if app.connections[self.conn.name].connected in (2, 3):
# we're online or chat # we're online or chat
self.do_popup = True self.do_popup = True
if msg_obj.attention and not gajim.config.get( if msg_obj.attention and not app.config.get(
'ignore_incoming_attention'): 'ignore_incoming_attention'):
self.popup_timeout = 0 self.popup_timeout = 0
self.do_popup = True self.do_popup = True
else: else:
self.popup_timeout = gajim.config.get('notification_timeout') self.popup_timeout = app.config.get('notification_timeout')
if msg_obj.attention and not gajim.config.get( if msg_obj.attention and not app.config.get(
'ignore_incoming_attention') and gajim.config.get_per('soundevents', 'ignore_incoming_attention') and app.config.get_per('soundevents',
'attention_received', 'enabled'): 'attention_received', 'enabled'):
self.sound_event = 'attention_received' self.sound_event = 'attention_received'
self.do_sound = True self.do_sound = True
@ -2555,7 +2555,7 @@ class NotificationEvent(nec.NetworkIncomingEvent):
if jid: if jid:
# we want an avatar # we want an avatar
puny_jid = helpers.sanitize_filename(jid) puny_jid = helpers.sanitize_filename(jid)
path_to_file = os.path.join(gajim.AVATAR_PATH, puny_jid) + suffix path_to_file = os.path.join(app.AVATAR_PATH, puny_jid) + suffix
path_to_local_file = path_to_file + '_local' path_to_local_file = path_to_file + '_local'
for extension in ('.png', '.jpeg'): for extension in ('.png', '.jpeg'):
path_to_local_file_full = path_to_local_file + extension path_to_local_file_full = path_to_local_file + extension
@ -2568,7 +2568,7 @@ class NotificationEvent(nec.NetworkIncomingEvent):
return os.path.abspath(generic) return os.path.abspath(generic)
def handle_incoming_pres_event(self, pres_obj): def handle_incoming_pres_event(self, pres_obj):
if gajim.jid_is_transport(pres_obj.jid): if app.jid_is_transport(pres_obj.jid):
return True return True
account = pres_obj.conn.name account = pres_obj.conn.name
self.jid = pres_obj.jid self.jid = pres_obj.jid
@ -2583,11 +2583,11 @@ class NotificationEvent(nec.NetworkIncomingEvent):
# no other resource is connected, let's look in metacontacts # no other resource is connected, let's look in metacontacts
family = gajim.contacts.get_metacontacts_family(account, self.jid) family = app.contacts.get_metacontacts_family(account, self.jid)
for info in family: for info in family:
acct_ = info['account'] acct_ = info['account']
jid_ = info['jid'] jid_ = info['jid']
c_ = gajim.contacts.get_contact_with_highest_priority(acct_, jid_) c_ = app.contacts.get_contact_with_highest_priority(acct_, jid_)
if not c_: if not c_:
continue continue
if c_.jid == self.jid: if c_.jid == self.jid:
@ -2599,18 +2599,18 @@ class NotificationEvent(nec.NetworkIncomingEvent):
event = 'contact_connected' event = 'contact_connected'
show_image = 'online.png' show_image = 'online.png'
suffix = '_notif_size_colored' suffix = '_notif_size_colored'
server = gajim.get_server_from_jid(self.jid) server = app.get_server_from_jid(self.jid)
account_server = account + '/' + server account_server = account + '/' + server
block_transport = False block_transport = False
if account_server in gajim.block_signed_in_notifications and \ if account_server in app.block_signed_in_notifications and \
gajim.block_signed_in_notifications[account_server]: app.block_signed_in_notifications[account_server]:
block_transport = True block_transport = True
if helpers.allow_showing_notification(account, 'notify_on_signin') \ if helpers.allow_showing_notification(account, 'notify_on_signin') \
and not gajim.block_signed_in_notifications[account] and \ and not app.block_signed_in_notifications[account] and \
not block_transport: not block_transport:
self.do_popup = True self.do_popup = True
if gajim.config.get_per('soundevents', 'contact_connected', if app.config.get_per('soundevents', 'contact_connected',
'enabled') and not gajim.block_signed_in_notifications[account] and\ 'enabled') and not app.block_signed_in_notifications[account] and\
not block_transport and helpers.allow_sound_notification(account, not block_transport and helpers.allow_sound_notification(account,
'contact_connected'): 'contact_connected'):
self.sound_event = event self.sound_event = event
@ -2622,7 +2622,7 @@ class NotificationEvent(nec.NetworkIncomingEvent):
suffix = '_notif_size_bw' suffix = '_notif_size_bw'
if helpers.allow_showing_notification(account, 'notify_on_signout'): if helpers.allow_showing_notification(account, 'notify_on_signout'):
self.do_popup = True self.do_popup = True
if gajim.config.get_per('soundevents', 'contact_disconnected', if app.config.get_per('soundevents', 'contact_disconnected',
'enabled') and helpers.allow_sound_notification(account, event): 'enabled') and helpers.allow_sound_notification(account, event):
self.sound_event = event self.sound_event = event
self.do_sound = True self.do_sound = True
@ -2636,21 +2636,21 @@ class NotificationEvent(nec.NetworkIncomingEvent):
else: else:
return True return True
transport_name = gajim.get_transport_name_from_jid(self.jid) transport_name = app.get_transport_name_from_jid(self.jid)
img_path = None img_path = None
if transport_name: if transport_name:
img_path = os.path.join(helpers.get_transport_path( img_path = os.path.join(helpers.get_transport_path(
transport_name), '48x48', show_image) transport_name), '48x48', show_image)
if not img_path or not os.path.isfile(img_path): if not img_path or not os.path.isfile(img_path):
iconset = gajim.config.get('iconset') iconset = app.config.get('iconset')
img_path = os.path.join(helpers.get_iconset_path(iconset), img_path = os.path.join(helpers.get_iconset_path(iconset),
'48x48', show_image) '48x48', show_image)
self.popup_image_path = self.get_path_to_generic_or_avatar(img_path, self.popup_image_path = self.get_path_to_generic_or_avatar(img_path,
jid=self.jid, suffix=suffix) jid=self.jid, suffix=suffix)
self.popup_timeout = gajim.config.get('notification_timeout') self.popup_timeout = app.config.get('notification_timeout')
nick = i18n.direction_mark + gajim.get_name_from_jid(account, self.jid) nick = i18n.direction_mark + app.get_name_from_jid(account, self.jid)
if event == 'status_change': if event == 'status_change':
self.popup_title = _('%(nick)s Changed Status') % \ self.popup_title = _('%(nick)s Changed Status') % \
{'nick': nick} {'nick': nick}

View File

@ -165,8 +165,8 @@ class Contact(CommonContact):
return is_observer return is_observer
def is_groupchat(self): def is_groupchat(self):
for account in common.gajim.gc_connected: for account in common.app.gc_connected:
if self.jid in common.gajim.gc_connected[account]: if self.jid in common.app.gc_connected[account]:
return True return True
return False return False
@ -258,8 +258,8 @@ class LegacyContactsAPI:
def create_self_contact(self, jid, account, resource, show, status, priority, def create_self_contact(self, jid, account, resource, show, status, priority,
name='', keyID=''): name='', keyID=''):
conn = common.gajim.connections[account] conn = common.app.connections[account]
nick = name or common.gajim.nicks[account] nick = name or common.app.nicks[account]
account = self._accounts.get(account, account) # Use Account object if available account = self._accounts.get(account, account) # Use Account object if available
self_contact = self.create_contact(jid=jid, account=account, self_contact = self.create_contact(jid=jid, account=account,
name=nick, groups=['self_contact'], show=show, status=status, name=nick, groups=['self_contact'], show=show, status=status,
@ -357,11 +357,11 @@ class LegacyContactsAPI:
nbr_online = 0 nbr_online = 0
nbr_total = 0 nbr_total = 0
for account in accounts: for account in accounts:
our_jid = common.gajim.get_jid_from_account(account) our_jid = common.app.get_jid_from_account(account)
for jid in self.get_jid_list(account): for jid in self.get_jid_list(account):
if jid == our_jid: if jid == our_jid:
continue continue
if common.gajim.jid_is_transport(jid) and not \ if common.app.jid_is_transport(jid) and not \
_('Transports') in groups: _('Transports') in groups:
# do not count transports # do not count transports
continue continue
@ -506,7 +506,7 @@ class Contacts():
""" """
Get Contact object for specific resource of given jid Get Contact object for specific resource of given jid
""" """
barejid, resource = common.gajim.get_room_and_nick_from_fjid(fjid) barejid, resource = common.app.get_room_and_nick_from_fjid(fjid)
return self.get_contact(barejid, resource) return self.get_contact(barejid, resource)
def get_first_contact_from_jid(self, jid): def get_first_contact_from_jid(self, jid):
@ -655,7 +655,7 @@ class MetacontactManager():
self._metacontacts_tags[brother_account][tag] = [{'jid': brother_jid, self._metacontacts_tags[brother_account][tag] = [{'jid': brother_jid,
'tag': tag}] 'tag': tag}]
if brother_account != account: if brother_account != account:
common.gajim.connections[brother_account].store_metacontacts( common.app.connections[brother_account].store_metacontacts(
self._metacontacts_tags[brother_account]) self._metacontacts_tags[brother_account])
# be sure jid has no other tag # be sure jid has no other tag
old_tag = self._get_metacontacts_tag(account, jid) old_tag = self._get_metacontacts_tag(account, jid)
@ -671,7 +671,7 @@ class MetacontactManager():
else: else:
self._metacontacts_tags[account][tag].append({'jid': jid, self._metacontacts_tags[account][tag].append({'jid': jid,
'tag': tag}) 'tag': tag})
common.gajim.connections[account].store_metacontacts( common.app.connections[account].store_metacontacts(
self._metacontacts_tags[account]) self._metacontacts_tags[account])
def remove_metacontact(self, account, jid): def remove_metacontact(self, account, jid):
@ -686,7 +686,7 @@ class MetacontactManager():
break break
if found: if found:
self._metacontacts_tags[account][tag].remove(found) self._metacontacts_tags[account][tag].remove(found)
common.gajim.connections[account].store_metacontacts( common.app.connections[account].store_metacontacts(
self._metacontacts_tags[account]) self._metacontacts_tags[account])
break break
@ -789,8 +789,8 @@ class MetacontactManager():
return 1 return 1
if 'order' in data2: if 'order' in data2:
return -1 return -1
transport1 = common.gajim.get_transport_name_from_jid(jid1) transport1 = common.app.get_transport_name_from_jid(jid1)
transport2 = common.gajim.get_transport_name_from_jid(jid2) transport2 = common.app.get_transport_name_from_jid(jid2)
if transport2 and not transport1: if transport2 and not transport1:
return 1 return 1
if transport1 and not transport2: if transport1 and not transport2:
@ -803,10 +803,10 @@ class MetacontactManager():
return 1 return 1
if priority2 > priority1: if priority2 > priority1:
return -1 return -1
server1 = common.gajim.get_server_from_jid(jid1) server1 = common.app.get_server_from_jid(jid1)
server2 = common.gajim.get_server_from_jid(jid2) server2 = common.app.get_server_from_jid(jid2)
myserver1 = common.gajim.config.get_per('accounts', account1, 'hostname') myserver1 = common.app.config.get_per('accounts', account1, 'hostname')
myserver2 = common.gajim.config.get_per('accounts', account2, 'hostname') myserver2 = common.app.config.get_per('accounts', account2, 'hostname')
if server1 == myserver1: if server1 == myserver1:
if server2 != myserver2: if server2 != myserver2:
return 1 return 1
@ -833,7 +833,7 @@ class MetacontactManager():
(nearby_family, big_brother_jid, big_brother_account) (nearby_family, big_brother_jid, big_brother_account)
""" """
if common.gajim.config.get('mergeaccounts'): if common.app.config.get('mergeaccounts'):
# group all together # group all together
nearby_family = family nearby_family = family
else: else:

View File

@ -26,7 +26,7 @@
import os import os
from gajim.common import gajim from gajim.common import app
from gajim.common import exceptions from gajim.common import exceptions
_GAJIM_ERROR_IFACE = 'org.gajim.dbus.Error' _GAJIM_ERROR_IFACE = 'org.gajim.dbus.Error'
@ -155,7 +155,7 @@ def get_interface(interface, path, start_service=True):
obj = bus.get_object(interface, path) obj = bus.get_object(interface, path)
return dbus.Interface(obj, interface) return dbus.Interface(obj, interface)
except Exception as e: except Exception as e:
gajim.log.debug(str(e)) app.log.debug(str(e))
return None return None

View File

@ -24,18 +24,17 @@
import os import os
import logging import logging
from gajim.common import gajim from gajim.common import app
from gajim.common.gajim import HAVE_GPG, GPG_BINARY
if HAVE_GPG: if app.HAVE_GPG:
import gnupg import gnupg
gnupg.logger = logging.getLogger('gajim.c.gnupg') gnupg.logger = logging.getLogger('gajim.c.gnupg')
class GnuPG(gnupg.GPG): class GnuPG(gnupg.GPG):
def __init__(self): def __init__(self):
use_agent = gajim.config.get('use_gpg_agent') use_agent = app.config.get('use_gpg_agent')
gnupg.GPG.__init__(self, gpgbinary=GPG_BINARY, use_agent=use_agent) gnupg.GPG.__init__(self, gpgbinary=app.GPG_BINARY, use_agent=use_agent)
encoding = gajim.config.get('pgp_encoding') encoding = app.config.get('pgp_encoding')
if encoding: if encoding:
self.encoding = encoding self.encoding = encoding
self.decode_errors = 'replace' self.decode_errors = 'replace'

View File

@ -545,7 +545,7 @@ def exec_command(command, use_shell=False, posix=True):
else: else:
args = shlex.split(command, posix=posix) args = shlex.split(command, posix=posix)
p = subprocess.Popen(args) p = subprocess.Popen(args)
gajim.thread_interface(p.wait) app.thread_interface(p.wait)
def build_command(executable, parameter): def build_command(executable, parameter):
# we add to the parameter (can hold path with spaces) # we add to the parameter (can hold path with spaces)
@ -750,8 +750,8 @@ def parse_datetime(timestring, check_utc=False, convert='utc', epoch=False):
return date_time return date_time
return None return None
from gajim.common import gajim from gajim.common import app
if gajim.HAVE_PYCURL: if app.HAVE_PYCURL:
import pycurl import pycurl
from io import StringIO from io import StringIO
@ -759,7 +759,7 @@ def convert_bytes(string):
suffix = '' suffix = ''
# IEC standard says KiB = 1024 bytes KB = 1000 bytes # IEC standard says KiB = 1024 bytes KB = 1000 bytes
# but do we use the standard? # but do we use the standard?
use_kib_mib = gajim.config.get('use_kib_mib') use_kib_mib = app.config.get('use_kib_mib')
align = 1024. align = 1024.
bytes_ = float(string) bytes_ = float(string)
if bytes_ >= align: if bytes_ >= align:
@ -800,8 +800,8 @@ def get_contact_dict_for_account(account):
Can be used for completion lists Can be used for completion lists
""" """
contacts_dict = {} contacts_dict = {}
for jid in gajim.contacts.get_jid_list(account): for jid in app.contacts.get_jid_list(account):
contact = gajim.contacts.get_contact_with_highest_priority(account, contact = app.contacts.get_contact_with_highest_priority(account,
jid) jid)
contacts_dict[jid] = contact contacts_dict[jid] = contact
name = contact.name name = contact.name
@ -811,7 +811,7 @@ def get_contact_dict_for_account(account):
contacts_dict['%s (%s)' % (name, contact1.jid)] = contact1 contacts_dict['%s (%s)' % (name, contact1.jid)] = contact1
contacts_dict['%s (%s)' % (name, jid)] = contact contacts_dict['%s (%s)' % (name, jid)] = contact
elif contact.name: elif contact.name:
if contact.name == gajim.get_nick_from_jid(jid): if contact.name == app.get_nick_from_jid(jid):
del contacts_dict[jid] del contacts_dict[jid]
contacts_dict[name] = contact contacts_dict[name] = contact
return contacts_dict return contacts_dict
@ -827,11 +827,11 @@ def launch_browser_mailer(kind, uri):
if kind == 'url' and uri.startswith('www.'): if kind == 'url' and uri.startswith('www.'):
uri = 'http://' + uri uri = 'http://' + uri
if not gajim.config.get('autodetect_browser_mailer'): if not app.config.get('autodetect_browser_mailer'):
if kind == 'url': if kind == 'url':
command = gajim.config.get('custombrowser') command = app.config.get('custombrowser')
elif kind in ('mail', 'sth_at_sth'): elif kind in ('mail', 'sth_at_sth'):
command = gajim.config.get('custommailapp') command = app.config.get('custommailapp')
if command == '': # if no app is configured if command == '': # if no app is configured
return return
@ -854,8 +854,8 @@ def launch_file_manager(path_to_open):
except Exception: except Exception:
pass pass
else: else:
if not gajim.config.get('autodetect_browser_mailer'): if not app.config.get('autodetect_browser_mailer'):
command = gajim.config.get('custom_file_manager') command = app.config.get('custom_file_manager')
if command == '': # if no app is configured if command == '': # if no app is configured
return return
else: else:
@ -867,13 +867,13 @@ def launch_file_manager(path_to_open):
pass pass
def play_sound(event): def play_sound(event):
if not gajim.config.get('sounds_on'): if not app.config.get('sounds_on'):
return return
path_to_soundfile = gajim.config.get_per('soundevents', event, 'path') path_to_soundfile = app.config.get_per('soundevents', event, 'path')
play_sound_file(path_to_soundfile) play_sound_file(path_to_soundfile)
def check_soundfile_path(file_, dirs=(gajim.gajimpaths.data_root, def check_soundfile_path(file_, dirs=(app.gajimpaths.data_root,
gajim.DATA_DIR)): app.DATA_DIR)):
""" """
Check if the sound file exists Check if the sound file exists
@ -893,8 +893,8 @@ gajim.DATA_DIR)):
return d return d
return None return None
def strip_soundfile_path(file_, dirs=(gajim.gajimpaths.data_root, def strip_soundfile_path(file_, dirs=(app.gajimpaths.data_root,
gajim.DATA_DIR), abs=True): app.DATA_DIR), abs=True):
""" """
Remove knowns paths from a sound file Remove knowns paths from a sound file
@ -930,7 +930,7 @@ def play_sound_file(path_to_soundfile):
except Exception: except Exception:
log.exception('Sound Playback Error') log.exception('Sound Playback Error')
elif sys.platform == 'linux': elif sys.platform == 'linux':
if gajim.config.get('soundplayer') == '': if app.config.get('soundplayer') == '':
def _oss_play(): def _oss_play():
sndfile = wave.open(path_to_soundfile, 'rb') sndfile = wave.open(path_to_soundfile, 'rb')
(nc, sw, fr, nf, comptype, compname) = sndfile.getparams() (nc, sw, fr, nf, comptype, compname) = sndfile.getparams()
@ -939,9 +939,9 @@ def play_sound_file(path_to_soundfile):
dev.write(sndfile.readframes(nf)) dev.write(sndfile.readframes(nf))
sndfile.close() sndfile.close()
dev.close() dev.close()
gajim.thread_interface(_oss_play) app.thread_interface(_oss_play)
return return
player = gajim.config.get('soundplayer') player = app.config.get('soundplayer')
command = build_command(player, path_to_soundfile) command = build_command(player, path_to_soundfile)
exec_command(command) exec_command(command)
elif sys.platform == 'darwin' and HAS_SOUND: elif sys.platform == 'darwin' and HAS_SOUND:
@ -951,25 +951,25 @@ def play_sound_file(path_to_soundfile):
def get_global_show(): def get_global_show():
maxi = 0 maxi = 0
for account in gajim.connections: for account in app.connections:
if not gajim.config.get_per('accounts', account, if not app.config.get_per('accounts', account,
'sync_with_global_status'): 'sync_with_global_status'):
continue continue
connected = gajim.connections[account].connected connected = app.connections[account].connected
if connected > maxi: if connected > maxi:
maxi = connected maxi = connected
return gajim.SHOW_LIST[maxi] return app.SHOW_LIST[maxi]
def get_global_status(): def get_global_status():
maxi = 0 maxi = 0
for account in gajim.connections: for account in app.connections:
if not gajim.config.get_per('accounts', account, if not app.config.get_per('accounts', account,
'sync_with_global_status'): 'sync_with_global_status'):
continue continue
connected = gajim.connections[account].connected connected = app.connections[account].connected
if connected > maxi: if connected > maxi:
maxi = connected maxi = connected
status = gajim.connections[account].status status = app.connections[account].status
return status return status
@ -978,13 +978,13 @@ def statuses_unified():
Test if all statuses are the same Test if all statuses are the same
""" """
reference = None reference = None
for account in gajim.connections: for account in app.connections:
if not gajim.config.get_per('accounts', account, if not app.config.get_per('accounts', account,
'sync_with_global_status'): 'sync_with_global_status'):
continue continue
if reference is None: if reference is None:
reference = gajim.connections[account].connected reference = app.connections[account].connected
elif reference != gajim.connections[account].connected: elif reference != app.connections[account].connected:
return False return False
return True return True
@ -992,17 +992,17 @@ def get_icon_name_to_show(contact, account = None):
""" """
Get the icon name to show in online, away, requested, etc Get the icon name to show in online, away, requested, etc
""" """
if account and gajim.events.get_nb_roster_events(account, contact.jid): if account and app.events.get_nb_roster_events(account, contact.jid):
return 'event' return 'event'
if account and gajim.events.get_nb_roster_events(account, if account and app.events.get_nb_roster_events(account,
contact.get_full_jid()): contact.get_full_jid()):
return 'event' return 'event'
if account and account in gajim.interface.minimized_controls and \ if account and account in app.interface.minimized_controls and \
contact.jid in gajim.interface.minimized_controls[account] and gajim.interface.\ contact.jid in app.interface.minimized_controls[account] and app.interface.\
minimized_controls[account][contact.jid].get_nb_unread_pm() > 0: minimized_controls[account][contact.jid].get_nb_unread_pm() > 0:
return 'event' return 'event'
if account and contact.jid in gajim.gc_connected[account]: if account and contact.jid in app.gc_connected[account]:
if gajim.gc_connected[account][contact.jid]: if app.gc_connected[account][contact.jid]:
return 'muc_active' return 'muc_active'
else: else:
return 'muc_inactive' return 'muc_inactive'
@ -1012,10 +1012,10 @@ def get_icon_name_to_show(contact, account = None):
return contact.show return contact.show
if contact.ask == 'subscribe': if contact.ask == 'subscribe':
return 'requested' return 'requested'
transport = gajim.get_transport_name_from_jid(contact.jid) transport = app.get_transport_name_from_jid(contact.jid)
if transport: if transport:
return contact.show return contact.show
if contact.show in gajim.SHOW_LIST: if contact.show in app.SHOW_LIST:
return contact.show return contact.show
return 'not in roster' return 'not in roster'
@ -1030,7 +1030,7 @@ def get_jid_from_iq(iq_obj):
Return the jid (without resource) from an iq Return the jid (without resource) from an iq
""" """
jid = get_full_jid_from_iq(iq_obj) jid = get_full_jid_from_iq(iq_obj)
return gajim.get_jid_without_resource(jid) return app.get_jid_without_resource(jid)
def get_auth_sha(sid, initiator, target): def get_auth_sha(sid, initiator, target):
""" """
@ -1041,7 +1041,7 @@ def get_auth_sha(sid, initiator, target):
def remove_invalid_xml_chars(string): def remove_invalid_xml_chars(string):
if string: if string:
string = re.sub(gajim.interface.invalid_XML_chars_re, '', string) string = re.sub(app.interface.invalid_XML_chars_re, '', string)
return string return string
distro_info = { distro_info = {
@ -1078,8 +1078,8 @@ def get_random_string_16():
return ''.join(sample(char_sequence, 16)) return ''.join(sample(char_sequence, 16))
def get_os_info(): def get_os_info():
if gajim.os_info: if app.os_info:
return gajim.os_info return app.os_info
if os.name == 'nt': if os.name == 'nt':
# platform.release() seems to return the name of the windows # platform.release() seems to return the name of the windows
ver = sys.getwindowsversion() ver = sys.getwindowsversion()
@ -1099,7 +1099,7 @@ def get_os_info():
os_info = 'Windows' + ' ' + win_version[ver_format] os_info = 'Windows' + ' ' + win_version[ver_format]
else: else:
os_info = 'Windows' os_info = 'Windows'
gajim.os_info = os_info app.os_info = os_info
return os_info return os_info
elif os.name == 'posix': elif os.name == 'posix':
executable = 'lsb_release' executable = 'lsb_release'
@ -1113,7 +1113,7 @@ def get_os_info():
output = temp_failure_retry(p.stdout.readline).strip() output = temp_failure_retry(p.stdout.readline).strip()
# some distros put n/a in places, so remove those # some distros put n/a in places, so remove those
output = output.decode('utf-8').replace('n/a', '').replace('N/A', '') output = output.decode('utf-8').replace('n/a', '').replace('N/A', '')
gajim.os_info = output app.os_info = output
p.stdout.close() p.stdout.close()
p.stdin.close() p.stdin.close()
return output return output
@ -1145,17 +1145,17 @@ def get_os_info():
# file just has version # file just has version
text = distro_name + ' ' + text text = distro_name + ' ' + text
os_info = text.replace('\n', '') os_info = text.replace('\n', '')
gajim.os_info = os_info app.os_info = os_info
return os_info return os_info
# our last chance, ask uname and strip it # our last chance, ask uname and strip it
uname_output = get_output_of_command('uname -sr') uname_output = get_output_of_command('uname -sr')
if uname_output is not None: if uname_output is not None:
os_info = uname_output[0] # only first line os_info = uname_output[0] # only first line
gajim.os_info = os_info app.os_info = os_info
return os_info return os_info
os_info = 'N/A' os_info = 'N/A'
gajim.os_info = os_info app.os_info = os_info
return os_info return os_info
@ -1168,11 +1168,11 @@ is_first_message=True):
option that need to be True e.g.: notify_on_signing is_first_message: set it option that need to be True e.g.: notify_on_signing is_first_message: set it
to false when it's not the first message to false when it's not the first message
""" """
if type_ and (not gajim.config.get(type_) or not is_first_message): if type_ and (not app.config.get(type_) or not is_first_message):
return False return False
if gajim.config.get('autopopupaway'): # always show notification if app.config.get('autopopupaway'): # always show notification
return True return True
if gajim.connections[account].connected in (2, 3): # we're online or chat if app.connections[account].connected in (2, 3): # we're online or chat
return True return True
return False return False
@ -1180,16 +1180,16 @@ def allow_popup_window(account):
""" """
Is it allowed to popup windows? Is it allowed to popup windows?
""" """
autopopup = gajim.config.get('autopopup') autopopup = app.config.get('autopopup')
autopopupaway = gajim.config.get('autopopupaway') autopopupaway = app.config.get('autopopupaway')
if autopopup and (autopopupaway or \ if autopopup and (autopopupaway or \
gajim.connections[account].connected in (2, 3)): # we're online or chat app.connections[account].connected in (2, 3)): # we're online or chat
return True return True
return False return False
def allow_sound_notification(account, sound_event): def allow_sound_notification(account, sound_event):
if gajim.config.get('sounddnd') or gajim.connections[account].connected != \ if app.config.get('sounddnd') or app.connections[account].connected != \
gajim.SHOW_LIST.index('dnd') and gajim.config.get_per('soundevents', app.SHOW_LIST.index('dnd') and app.config.get_per('soundevents',
sound_event, 'enabled'): sound_event, 'enabled'):
return True return True
return False return False
@ -1198,12 +1198,12 @@ def get_chat_control(account, contact):
full_jid_with_resource = contact.jid full_jid_with_resource = contact.jid
if contact.resource: if contact.resource:
full_jid_with_resource += '/' + contact.resource full_jid_with_resource += '/' + contact.resource
highest_contact = gajim.contacts.get_contact_with_highest_priority( highest_contact = app.contacts.get_contact_with_highest_priority(
account, contact.jid) account, contact.jid)
# Look for a chat control that has the given resource, or default to # Look for a chat control that has the given resource, or default to
# one without resource # one without resource
ctrl = gajim.interface.msg_win_mgr.get_control(full_jid_with_resource, ctrl = app.interface.msg_win_mgr.get_control(full_jid_with_resource,
account) account)
if ctrl: if ctrl:
@ -1213,7 +1213,7 @@ def get_chat_control(account, contact):
return None return None
else: else:
# unknown contact or offline message # unknown contact or offline message
return gajim.interface.msg_win_mgr.get_control(contact.jid, account) return app.interface.msg_win_mgr.get_control(contact.jid, account)
def get_notification_icon_tooltip_dict(): def get_notification_icon_tooltip_dict():
""" """
@ -1230,7 +1230,7 @@ def get_notification_icon_tooltip_dict():
account_name = account['name'] account_name = account['name']
account['event_lines'] = [] account['event_lines'] = []
# Gather events per-account # Gather events per-account
pending_events = gajim.events.get_events(account = account_name) pending_events = app.events.get_events(account = account_name)
messages, non_messages, total_messages, total_non_messages = {}, {}, 0, 0 messages, non_messages, total_messages, total_non_messages = {}, {}, 0, 0
for jid in pending_events: for jid in pending_events:
for event in pending_events[jid]: for event in pending_events[jid]:
@ -1256,10 +1256,10 @@ def get_notification_icon_tooltip_dict():
'%d message pending', '%d message pending',
'%d messages pending', '%d messages pending',
messages[jid], messages[jid], messages[jid]) messages[jid], messages[jid], messages[jid])
contact = gajim.contacts.get_first_contact_from_jid( contact = app.contacts.get_first_contact_from_jid(
account['name'], jid) account['name'], jid)
text += ' ' text += ' '
if jid in gajim.gc_connected[account['name']]: if jid in app.gc_connected[account['name']]:
text += _('from room %s') % (jid) text += _('from room %s') % (jid)
elif contact: elif contact:
name = contact.get_shown_name() name = contact.get_shown_name()
@ -1334,13 +1334,13 @@ def get_accounts_info():
Helper for notification icon tooltip Helper for notification icon tooltip
""" """
accounts = [] accounts = []
accounts_list = sorted(gajim.contacts.get_accounts()) accounts_list = sorted(app.contacts.get_accounts())
for account in accounts_list: for account in accounts_list:
status_idx = gajim.connections[account].connected status_idx = app.connections[account].connected
# uncomment the following to hide offline accounts # uncomment the following to hide offline accounts
# if status_idx == 0: continue # if status_idx == 0: continue
status = gajim.SHOW_LIST[status_idx] status = app.SHOW_LIST[status_idx]
message = gajim.connections[account].status message = app.connections[account].status
single_line = get_uf_show(status) single_line = get_uf_show(status)
if message is None: if message is None:
message = '' message = ''
@ -1354,33 +1354,33 @@ def get_accounts_info():
def get_iconset_path(iconset): def get_iconset_path(iconset):
if os.path.isdir(os.path.join(gajim.DATA_DIR, 'iconsets', iconset)): if os.path.isdir(os.path.join(app.DATA_DIR, 'iconsets', iconset)):
return os.path.join(gajim.DATA_DIR, 'iconsets', iconset) return os.path.join(app.DATA_DIR, 'iconsets', iconset)
elif os.path.isdir(os.path.join(gajim.MY_ICONSETS_PATH, iconset)): elif os.path.isdir(os.path.join(app.MY_ICONSETS_PATH, iconset)):
return os.path.join(gajim.MY_ICONSETS_PATH, iconset) return os.path.join(app.MY_ICONSETS_PATH, iconset)
def get_mood_iconset_path(iconset): def get_mood_iconset_path(iconset):
if os.path.isdir(os.path.join(gajim.DATA_DIR, 'moods', iconset)): if os.path.isdir(os.path.join(app.DATA_DIR, 'moods', iconset)):
return os.path.join(gajim.DATA_DIR, 'moods', iconset) return os.path.join(app.DATA_DIR, 'moods', iconset)
elif os.path.isdir(os.path.join(gajim.MY_MOOD_ICONSETS_PATH, iconset)): elif os.path.isdir(os.path.join(app.MY_MOOD_ICONSETS_PATH, iconset)):
return os.path.join(gajim.MY_MOOD_ICONSETS_PATH, iconset) return os.path.join(app.MY_MOOD_ICONSETS_PATH, iconset)
def get_activity_iconset_path(iconset): def get_activity_iconset_path(iconset):
if os.path.isdir(os.path.join(gajim.DATA_DIR, 'activities', iconset)): if os.path.isdir(os.path.join(app.DATA_DIR, 'activities', iconset)):
return os.path.join(gajim.DATA_DIR, 'activities', iconset) return os.path.join(app.DATA_DIR, 'activities', iconset)
elif os.path.isdir(os.path.join(gajim.MY_ACTIVITY_ICONSETS_PATH, elif os.path.isdir(os.path.join(app.MY_ACTIVITY_ICONSETS_PATH,
iconset)): iconset)):
return os.path.join(gajim.MY_ACTIVITY_ICONSETS_PATH, iconset) return os.path.join(app.MY_ACTIVITY_ICONSETS_PATH, iconset)
def get_transport_path(transport): def get_transport_path(transport):
if os.path.isdir(os.path.join(gajim.DATA_DIR, 'iconsets', 'transports', if os.path.isdir(os.path.join(app.DATA_DIR, 'iconsets', 'transports',
transport)): transport)):
return os.path.join(gajim.DATA_DIR, 'iconsets', 'transports', transport) return os.path.join(app.DATA_DIR, 'iconsets', 'transports', transport)
elif os.path.isdir(os.path.join(gajim.MY_ICONSETS_PATH, 'transports', elif os.path.isdir(os.path.join(app.MY_ICONSETS_PATH, 'transports',
transport)): transport)):
return os.path.join(gajim.MY_ICONSETS_PATH, 'transports', transport) return os.path.join(app.MY_ICONSETS_PATH, 'transports', transport)
# No transport folder found, use default jabber one # No transport folder found, use default jabber one
return get_iconset_path(gajim.config.get('iconset')) return get_iconset_path(app.config.get('iconset'))
def prepare_and_validate_gpg_keyID(account, jid, keyID): def prepare_and_validate_gpg_keyID(account, jid, keyID):
""" """
@ -1391,11 +1391,11 @@ def prepare_and_validate_gpg_keyID(account, jid, keyID):
assigned key XXXXXXXXMISMATCH is returned. If the key is trusted and not yet assigned key XXXXXXXXMISMATCH is returned. If the key is trusted and not yet
assigned, assign it. assigned, assign it.
""" """
if gajim.connections[account].USE_GPG: if app.connections[account].USE_GPG:
if keyID and len(keyID) == 16: if keyID and len(keyID) == 16:
keyID = keyID[8:] keyID = keyID[8:]
attached_keys = gajim.config.get_per('accounts', account, attached_keys = app.config.get_per('accounts', account,
'attached_gpg_keys').split() 'attached_gpg_keys').split()
if jid in attached_keys and keyID: if jid in attached_keys and keyID:
@ -1403,7 +1403,7 @@ def prepare_and_validate_gpg_keyID(account, jid, keyID):
if attachedkeyID != keyID: if attachedkeyID != keyID:
# Get signing subkeys for the attached key # Get signing subkeys for the attached key
subkeys = [] subkeys = []
for key in gajim.connections[account].gpg.list_keys(): for key in app.connections[account].gpg.list_keys():
if key['keyid'][8:] == attachedkeyID: if key['keyid'][8:] == attachedkeyID:
subkeys = [subkey[0][8:] for subkey in key['subkeys'] \ subkeys = [subkey[0][8:] for subkey in key['subkeys'] \
if subkey[1] == 's'] if subkey[1] == 's']
@ -1416,15 +1416,15 @@ def prepare_and_validate_gpg_keyID(account, jid, keyID):
# An unsigned presence, just use the assigned key # An unsigned presence, just use the assigned key
keyID = attached_keys[attached_keys.index(jid) + 1] keyID = attached_keys[attached_keys.index(jid) + 1]
elif keyID: elif keyID:
full_key = gajim.connections[account].ask_gpg_keys(keyID=keyID) full_key = app.connections[account].ask_gpg_keys(keyID=keyID)
# Assign the corresponding key, if we have it in our keyring # Assign the corresponding key, if we have it in our keyring
if full_key: if full_key:
for u in gajim.contacts.get_contacts(account, jid): for u in app.contacts.get_contacts(account, jid):
u.keyID = keyID u.keyID = keyID
keys_str = gajim.config.get_per('accounts', account, keys_str = app.config.get_per('accounts', account,
'attached_gpg_keys') 'attached_gpg_keys')
keys_str += jid + ' ' + keyID + ' ' keys_str += jid + ' ' + keyID + ' '
gajim.config.set_per('accounts', account, 'attached_gpg_keys', app.config.set_per('accounts', account, 'attached_gpg_keys',
keys_str) keys_str)
elif keyID is None: elif keyID is None:
keyID = 'UNKNOWN' keyID = 'UNKNOWN'
@ -1434,70 +1434,70 @@ def update_optional_features(account = None):
if account: if account:
accounts = [account] accounts = [account]
else: else:
accounts = [a for a in gajim.connections] accounts = [a for a in app.connections]
for a in accounts: for a in accounts:
gajim.gajim_optional_features[a] = [] app.gajim_optional_features[a] = []
if gajim.config.get_per('accounts', a, 'subscribe_mood'): if app.config.get_per('accounts', a, 'subscribe_mood'):
gajim.gajim_optional_features[a].append(nbxmpp.NS_MOOD + '+notify') app.gajim_optional_features[a].append(nbxmpp.NS_MOOD + '+notify')
if gajim.config.get_per('accounts', a, 'subscribe_activity'): if app.config.get_per('accounts', a, 'subscribe_activity'):
gajim.gajim_optional_features[a].append(nbxmpp.NS_ACTIVITY + \ app.gajim_optional_features[a].append(nbxmpp.NS_ACTIVITY + \
'+notify') '+notify')
if gajim.config.get_per('accounts', a, 'publish_tune'): if app.config.get_per('accounts', a, 'publish_tune'):
gajim.gajim_optional_features[a].append(nbxmpp.NS_TUNE) app.gajim_optional_features[a].append(nbxmpp.NS_TUNE)
if gajim.config.get_per('accounts', a, 'publish_location'): if app.config.get_per('accounts', a, 'publish_location'):
gajim.gajim_optional_features[a].append(nbxmpp.NS_LOCATION) app.gajim_optional_features[a].append(nbxmpp.NS_LOCATION)
if gajim.config.get_per('accounts', a, 'subscribe_tune'): if app.config.get_per('accounts', a, 'subscribe_tune'):
gajim.gajim_optional_features[a].append(nbxmpp.NS_TUNE + '+notify') app.gajim_optional_features[a].append(nbxmpp.NS_TUNE + '+notify')
if gajim.config.get_per('accounts', a, 'subscribe_nick'): if app.config.get_per('accounts', a, 'subscribe_nick'):
gajim.gajim_optional_features[a].append(nbxmpp.NS_NICK + '+notify') app.gajim_optional_features[a].append(nbxmpp.NS_NICK + '+notify')
if gajim.config.get_per('accounts', a, 'subscribe_location'): if app.config.get_per('accounts', a, 'subscribe_location'):
gajim.gajim_optional_features[a].append(nbxmpp.NS_LOCATION + \ app.gajim_optional_features[a].append(nbxmpp.NS_LOCATION + \
'+notify') '+notify')
if gajim.config.get('outgoing_chat_state_notifactions') != 'disabled': if app.config.get('outgoing_chat_state_notifactions') != 'disabled':
gajim.gajim_optional_features[a].append(nbxmpp.NS_CHATSTATES) app.gajim_optional_features[a].append(nbxmpp.NS_CHATSTATES)
if not gajim.config.get('ignore_incoming_xhtml'): if not app.config.get('ignore_incoming_xhtml'):
gajim.gajim_optional_features[a].append(nbxmpp.NS_XHTML_IM) app.gajim_optional_features[a].append(nbxmpp.NS_XHTML_IM)
if gajim.HAVE_PYCRYPTO \ if app.HAVE_PYCRYPTO \
and gajim.config.get_per('accounts', a, 'enable_esessions'): and app.config.get_per('accounts', a, 'enable_esessions'):
gajim.gajim_optional_features[a].append(nbxmpp.NS_ESESSION) app.gajim_optional_features[a].append(nbxmpp.NS_ESESSION)
if gajim.config.get_per('accounts', a, 'answer_receipts'): if app.config.get_per('accounts', a, 'answer_receipts'):
gajim.gajim_optional_features[a].append(nbxmpp.NS_RECEIPTS) app.gajim_optional_features[a].append(nbxmpp.NS_RECEIPTS)
gajim.gajim_optional_features[a].append(nbxmpp.NS_JINGLE) app.gajim_optional_features[a].append(nbxmpp.NS_JINGLE)
if gajim.HAVE_FARSTREAM: if app.HAVE_FARSTREAM:
gajim.gajim_optional_features[a].append(nbxmpp.NS_JINGLE_RTP) app.gajim_optional_features[a].append(nbxmpp.NS_JINGLE_RTP)
gajim.gajim_optional_features[a].append(nbxmpp.NS_JINGLE_RTP_AUDIO) app.gajim_optional_features[a].append(nbxmpp.NS_JINGLE_RTP_AUDIO)
gajim.gajim_optional_features[a].append(nbxmpp.NS_JINGLE_RTP_VIDEO) app.gajim_optional_features[a].append(nbxmpp.NS_JINGLE_RTP_VIDEO)
gajim.gajim_optional_features[a].append(nbxmpp.NS_JINGLE_ICE_UDP) app.gajim_optional_features[a].append(nbxmpp.NS_JINGLE_ICE_UDP)
gajim.gajim_optional_features[a].append( app.gajim_optional_features[a].append(
nbxmpp.NS_JINGLE_FILE_TRANSFER_5) nbxmpp.NS_JINGLE_FILE_TRANSFER_5)
gajim.gajim_optional_features[a].append(nbxmpp.NS_JINGLE_XTLS) app.gajim_optional_features[a].append(nbxmpp.NS_JINGLE_XTLS)
gajim.gajim_optional_features[a].append(nbxmpp.NS_JINGLE_BYTESTREAM) app.gajim_optional_features[a].append(nbxmpp.NS_JINGLE_BYTESTREAM)
gajim.gajim_optional_features[a].append(nbxmpp.NS_JINGLE_IBB) app.gajim_optional_features[a].append(nbxmpp.NS_JINGLE_IBB)
gajim.caps_hash[a] = caps_cache.compute_caps_hash([gajim.gajim_identity], app.caps_hash[a] = caps_cache.compute_caps_hash([app.gajim_identity],
gajim.gajim_common_features + gajim.gajim_optional_features[a]) app.gajim_common_features + app.gajim_optional_features[a])
# re-send presence with new hash # re-send presence with new hash
connected = gajim.connections[a].connected connected = app.connections[a].connected
if connected > 1 and gajim.SHOW_LIST[connected] != 'invisible': if connected > 1 and app.SHOW_LIST[connected] != 'invisible':
gajim.connections[a].change_status(gajim.SHOW_LIST[connected], app.connections[a].change_status(app.SHOW_LIST[connected],
gajim.connections[a].status) app.connections[a].status)
def jid_is_blocked(account, jid): def jid_is_blocked(account, jid):
return ((jid in gajim.connections[account].blocked_contacts) or \ return ((jid in app.connections[account].blocked_contacts) or \
gajim.connections[account].blocked_all) app.connections[account].blocked_all)
def group_is_blocked(account, group): def group_is_blocked(account, group):
return ((group in gajim.connections[account].blocked_groups) or \ return ((group in app.connections[account].blocked_groups) or \
gajim.connections[account].blocked_all) app.connections[account].blocked_all)
def get_subscription_request_msg(account=None): def get_subscription_request_msg(account=None):
s = gajim.config.get_per('accounts', account, 'subscription_request_msg') s = app.config.get_per('accounts', account, 'subscription_request_msg')
if s: if s:
return s return s
s = _('I would like to add you to my contact list.') s = _('I would like to add you to my contact list.')
if account: if account:
s = _('Hello, I am $name.') + ' ' + s s = _('Hello, I am $name.') + ' ' + s
our_jid = gajim.get_jid_from_account(account) our_jid = app.get_jid_from_account(account)
vcard = gajim.connections[account].get_cached_vcard(our_jid) vcard = app.connections[account].get_cached_vcard(our_jid)
name = '' name = ''
if vcard: if vcard:
if 'N' in vcard: if 'N' in vcard:
@ -1505,7 +1505,7 @@ def get_subscription_request_msg(account=None):
name = vcard['N']['GIVEN'] + ' ' + vcard['N']['FAMILY'] name = vcard['N']['GIVEN'] + ' ' + vcard['N']['FAMILY']
if not name and 'FN' in vcard: if not name and 'FN' in vcard:
name = vcard['FN'] name = vcard['FN']
nick = gajim.nicks[account] nick = app.nicks[account]
if name and nick: if name and nick:
name += ' (%s)' % nick name += ' (%s)' % nick
elif nick: elif nick:
@ -1529,9 +1529,9 @@ def replace_dataform_media(form, stanza):
return found return found
def get_proxy_info(account): def get_proxy_info(account):
p = gajim.config.get_per('accounts', account, 'proxy') p = app.config.get_per('accounts', account, 'proxy')
if not p: if not p:
if gajim.config.get_per('accounts', account, 'use_env_http_proxy'): if app.config.get_per('accounts', account, 'use_env_http_proxy'):
try: try:
try: try:
env_http_proxy = os.environ['HTTP_PROXY'] env_http_proxy = os.environ['HTTP_PROXY']
@ -1565,10 +1565,10 @@ def get_proxy_info(account):
except Exception: except Exception:
proxy = None proxy = None
p = gajim.config.get('global_proxy') p = app.config.get('global_proxy')
if p and p in gajim.config.get_per('proxies'): if p and p in app.config.get_per('proxies'):
proxy = {} proxy = {}
proxyptr = gajim.config.get_per('proxies', p) proxyptr = app.config.get_per('proxies', p)
if not proxyptr: if not proxyptr:
return proxy return proxy
for key in proxyptr.keys(): for key in proxyptr.keys():
@ -1588,7 +1588,7 @@ def _get_img_direct(attrs):
socket.setdefaulttimeout(10) socket.setdefaulttimeout(10)
try: try:
req = urllib.request.Request(attrs['src']) req = urllib.request.Request(attrs['src'])
req.add_header('User-Agent', 'Gajim ' + gajim.version) req.add_header('User-Agent', 'Gajim ' + app.version)
f = urllib.request.urlopen(req) f = urllib.request.urlopen(req)
except Exception as ex: except Exception as ex:
log.debug('Error loading image %s ' % attrs['src'] + str(ex)) log.debug('Error loading image %s ' % attrs['src'] + str(ex))
@ -1638,7 +1638,7 @@ def _get_img_proxy(attrs, proxy):
Download an image through a proxy. This function should be launched in a Download an image through a proxy. This function should be launched in a
separated thread. separated thread.
""" """
if not gajim.HAVE_PYCURL: if not app.HAVE_PYCURL:
return '', _('PyCURL is not installed') return '', _('PyCURL is not installed')
mem, alt, max_size = '', '', 2*1024*1024 mem, alt, max_size = '', '', 2*1024*1024
if 'max_size' in attrs: if 'max_size' in attrs:
@ -1654,7 +1654,7 @@ def _get_img_proxy(attrs, proxy):
c.setopt(pycurl.TIMEOUT, 10 * (max_size / 1048576)) c.setopt(pycurl.TIMEOUT, 10 * (max_size / 1048576))
c.setopt(pycurl.MAXFILESIZE, max_size) c.setopt(pycurl.MAXFILESIZE, max_size)
c.setopt(pycurl.WRITEFUNCTION, b.write) c.setopt(pycurl.WRITEFUNCTION, b.write)
c.setopt(pycurl.USERAGENT, 'Gajim ' + gajim.version) c.setopt(pycurl.USERAGENT, 'Gajim ' + app.version)
# set proxy # set proxy
c.setopt(pycurl.PROXY, proxy['host'].encode('utf-8')) c.setopt(pycurl.PROXY, proxy['host'].encode('utf-8'))
c.setopt(pycurl.PROXYPORT, proxy['port']) c.setopt(pycurl.PROXYPORT, proxy['port'])

View File

@ -32,12 +32,12 @@ import logging
import nbxmpp import nbxmpp
from gajim.common import helpers from gajim.common import helpers
from gajim.common import gajim from gajim.common import app
from gajim.common.jingle_session import JingleSession, JingleStates from gajim.common.jingle_session import JingleSession, JingleStates
from gajim.common.jingle_ft import JingleFileTransfer from gajim.common.jingle_ft import JingleFileTransfer
from gajim.common.jingle_transport import JingleTransportSocks5, JingleTransportIBB from gajim.common.jingle_transport import JingleTransportSocks5, JingleTransportIBB
if gajim.HAVE_FARSTREAM: if app.HAVE_FARSTREAM:
from gajim.common.jingle_rtp import JingleAudio, JingleVideo from gajim.common.jingle_rtp import JingleAudio, JingleVideo
logger = logging.getLogger('gajim.c.jingle') logger = logging.getLogger('gajim.c.jingle')
@ -145,12 +145,12 @@ class ConnectionJingle(object):
def start_file_transfer(self, jid, file_props, request=False): def start_file_transfer(self, jid, file_props, request=False):
logger.info("start file transfer with file: %s", file_props) logger.info("start file transfer with file: %s", file_props)
contact = gajim.contacts.get_contact_with_highest_priority(self.name, contact = app.contacts.get_contact_with_highest_priority(self.name,
gajim.get_jid_without_resource(jid)) app.get_jid_without_resource(jid))
if gajim.contacts.is_gc_contact(self.name, jid): if app.contacts.is_gc_contact(self.name, jid):
gcc = jid.split('/') gcc = jid.split('/')
if len(gcc) == 2: if len(gcc) == 2:
contact = gajim.contacts.get_gc_contact(self.name, gcc[0], gcc[1]) contact = app.contacts.get_gc_contact(self.name, gcc[0], gcc[1])
if contact is None: if contact is None:
return return
use_security = contact.supports(nbxmpp.NS_JINGLE_XTLS) use_security = contact.supports(nbxmpp.NS_JINGLE_XTLS)

View File

@ -18,7 +18,7 @@ Handles Jingle contents (XEP 0166)
""" """
import os import os
from gajim.common import gajim from gajim.common import app
import nbxmpp import nbxmpp
from gajim.common.jingle_xtls import SELF_SIGNED_CERTIFICATE from gajim.common.jingle_xtls import SELF_SIGNED_CERTIFICATE
from gajim.common.jingle_xtls import load_cert_file from gajim.common.jingle_xtls import load_cert_file
@ -206,7 +206,7 @@ class JingleContent:
hash_data = self._compute_hash() hash_data = self._compute_hash()
if hash_data: if hash_data:
file_tag.addChild(node=hash_data) file_tag.addChild(node=hash_data)
pjid = gajim.get_jid_without_resource(self.session.peerjid) pjid = app.get_jid_without_resource(self.session.peerjid)
file_info = {'name' : self.file_props.name, file_info = {'name' : self.file_props.name,
'file-name' : self.file_props.file_name, 'file-name' : self.file_props.file_name,
'hash' : self.file_props.hash_, 'hash' : self.file_props.hash_,
@ -221,7 +221,7 @@ class JingleContent:
if self.use_security: if self.use_security:
security = nbxmpp.simplexml.Node( security = nbxmpp.simplexml.Node(
tag=nbxmpp.NS_JINGLE_XTLS + ' security') tag=nbxmpp.NS_JINGLE_XTLS + ' security')
certpath = os.path.join(gajim.MY_CERT_DIR, SELF_SIGNED_CERTIFICATE)\ certpath = os.path.join(app.MY_CERT_DIR, SELF_SIGNED_CERTIFICATE)\
+ '.cert' + '.cert'
cert = load_cert_file(certpath) cert = load_cert_file(certpath)
if cert: if cert:

View File

@ -25,7 +25,7 @@ import os
import threading import threading
from enum import IntEnum, unique from enum import IntEnum, unique
import nbxmpp import nbxmpp
from gajim.common import gajim from gajim.common import app
from gajim.common import configpaths from gajim.common import configpaths
from gajim.common import jingle_xtls from gajim.common import jingle_xtls
from gajim.common.jingle_content import contents, JingleContent from gajim.common.jingle_content import contents, JingleContent
@ -102,7 +102,7 @@ class JingleFileTransfer(JingleContent):
self.session = session self.session = session
self.media = 'file' self.media = 'file'
self.nominated_cand = {} self.nominated_cand = {}
if gajim.contacts.is_gc_contact(session.connection.name, if app.contacts.is_gc_contact(session.connection.name,
session.peerjid): session.peerjid):
roomjid = session.peerjid.split('/')[0] roomjid = session.peerjid.split('/')[0]
dstaddr = hashlib.sha1(('%s%s%s' % (self.file_props.sid, dstaddr = hashlib.sha1(('%s%s%s' % (self.file_props.sid,
@ -137,7 +137,7 @@ class JingleFileTransfer(JingleContent):
def __on_session_initiate(self, stanza, content, error, action): def __on_session_initiate(self, stanza, content, error, action):
log.debug("Jingle FT request received") log.debug("Jingle FT request received")
gajim.nec.push_incoming_event(FileRequestReceivedEvent(None, app.nec.push_incoming_event(FileRequestReceivedEvent(None,
conn=self.session.connection, conn=self.session.connection,
stanza=stanza, stanza=stanza,
jingle_content=content, jingle_content=content,
@ -157,7 +157,7 @@ class JingleFileTransfer(JingleContent):
payload=[self._compute_hash()])]) payload=[self._compute_hash()])])
checksum.setNamespace(nbxmpp.NS_JINGLE_FILE_TRANSFER_5) checksum.setNamespace(nbxmpp.NS_JINGLE_FILE_TRANSFER_5)
self.session.__session_info(checksum) self.session.__session_info(checksum)
pjid = gajim.get_jid_without_resource(self.session.peerjid) pjid = app.get_jid_without_resource(self.session.peerjid)
file_info = {'name' : self.file_props.name, file_info = {'name' : self.file_props.name,
'file-name' : self.file_props.file_name, 'file-name' : self.file_props.file_name,
'hash' : self.file_props.hash_, 'hash' : self.file_props.hash_,
@ -203,7 +203,7 @@ class JingleFileTransfer(JingleContent):
if fingerprint: if fingerprint:
fingerprint = fingerprint.getData() fingerprint = fingerprint.getData()
self.x509_fingerprint = fingerprint self.x509_fingerprint = fingerprint
if not jingle_xtls.check_cert(gajim.get_jid_without_resource( if not jingle_xtls.check_cert(app.get_jid_without_resource(
self.session.responder), fingerprint): self.session.responder), fingerprint):
id_ = jingle_xtls.send_cert_request(con, id_ = jingle_xtls.send_cert_request(con,
self.session.responder) self.session.responder)
@ -238,7 +238,7 @@ class JingleFileTransfer(JingleContent):
fingerprint = 'client' fingerprint = 'client'
if self.transport.type_ == TransportType.SOCKS5: if self.transport.type_ == TransportType.SOCKS5:
sid = self.file_props.transport_sid sid = self.file_props.transport_sid
gajim.socks5queue.connect_to_hosts(self.session.connection.name, app.socks5queue.connect_to_hosts(self.session.connection.name,
sid, sid,
self.on_connect, self.on_connect,
self._on_connect_error, self._on_connect_error,
@ -271,8 +271,8 @@ class JingleFileTransfer(JingleContent):
self.state >= State.CAND_SENT_AND_RECEIVED: self.state >= State.CAND_SENT_AND_RECEIVED:
raise nbxmpp.NodeProcessed raise nbxmpp.NodeProcessed
if cand_error: if cand_error:
if not gajim.socks5queue.listener.connections: if not app.socks5queue.listener.connections:
gajim.socks5queue.listener.disconnect() app.socks5queue.listener.disconnect()
self.nominated_cand['peer-cand'] = False self.nominated_cand['peer-cand'] = False
if self.state == State.CAND_SENT: if self.state == State.CAND_SENT:
if not self.nominated_cand['our-cand'] and \ if not self.nominated_cand['our-cand'] and \
@ -298,13 +298,13 @@ class JingleFileTransfer(JingleContent):
streamhost_used = cand streamhost_used = cand
break break
if streamhost_used is None or streamhost_used['type'] == 'proxy': if streamhost_used is None or streamhost_used['type'] == 'proxy':
if gajim.socks5queue.listener and \ if app.socks5queue.listener and \
not gajim.socks5queue.listener.connections: not app.socks5queue.listener.connections:
gajim.socks5queue.listener.disconnect() app.socks5queue.listener.disconnect()
if content.getTag('transport').getTag('activated'): if content.getTag('transport').getTag('activated'):
self.state = State.TRANSFERING self.state = State.TRANSFERING
jid = gajim.get_jid_without_resource(self.session.ourjid) jid = app.get_jid_without_resource(self.session.ourjid)
gajim.socks5queue.send_file(self.file_props, app.socks5queue.send_file(self.file_props,
self.session.connection.name, 'client') self.session.connection.name, 'client')
return return
args = {'content': content, args = {'content': content,
@ -374,11 +374,11 @@ class JingleFileTransfer(JingleContent):
sha_str = helpers.get_auth_sha(self.file_props.sid, sender, sha_str = helpers.get_auth_sha(self.file_props.sid, sender,
receiver) receiver)
self.file_props.sha_str = sha_str self.file_props.sha_str = sha_str
port = gajim.config.get('file_transfers_port') port = app.config.get('file_transfers_port')
fingerprint = None fingerprint = None
if self.use_security: if self.use_security:
fingerprint = 'server' fingerprint = 'server'
listener = gajim.socks5queue.start_listener(port, sha_str, listener = app.socks5queue.start_listener(port, sha_str,
self._store_socks5_sid, self._store_socks5_sid,
self.file_props, self.file_props,
fingerprint=fingerprint, fingerprint=fingerprint,

View File

@ -14,7 +14,7 @@
## along with Gajim. If not, see <http://www.gnu.org/licenses/>. ## along with Gajim. If not, see <http://www.gnu.org/licenses/>.
import nbxmpp import nbxmpp
from gajim.common import gajim from gajim.common import app
from gajim.common.jingle_transport import TransportType from gajim.common.jingle_transport import TransportType
from gajim.common.socks5 import Socks5ReceiverClient, Socks5SenderClient from gajim.common.socks5 import Socks5ReceiverClient, Socks5SenderClient
@ -52,7 +52,7 @@ class StateInitialized(JingleFileTransferStates):
if self.jft.use_security: if self.jft.use_security:
fingerprint = 'client' fingerprint = 'client'
# Connect to the candidate host, on success call on_connect method # Connect to the candidate host, on success call on_connect method
gajim.socks5queue.connect_to_hosts(self.jft.session.connection.name, app.socks5queue.connect_to_hosts(self.jft.session.connection.name,
self.jft.file_props.transport_sid, self.jft.on_connect, self.jft.file_props.transport_sid, self.jft.on_connect,
self.jft._on_connect_error, fingerprint=fingerprint) self.jft._on_connect_error, fingerprint=fingerprint)
@ -154,12 +154,12 @@ class StateTransfering(JingleFileTransferStates):
if self.jft.is_our_candidate_used(): if self.jft.is_our_candidate_used():
mode = 'client' mode = 'client'
streamhost_used = self.jft.nominated_cand['our-cand'] streamhost_used = self.jft.nominated_cand['our-cand']
gajim.socks5queue.remove_server(self.jft.file_props.transport_sid) app.socks5queue.remove_server(self.jft.file_props.transport_sid)
else: else:
mode = 'server' mode = 'server'
streamhost_used = self.jft.nominated_cand['peer-cand'] streamhost_used = self.jft.nominated_cand['peer-cand']
gajim.socks5queue.remove_client(self.jft.file_props.transport_sid) app.socks5queue.remove_client(self.jft.file_props.transport_sid)
gajim.socks5queue.remove_other_servers(streamhost_used['host']) app.socks5queue.remove_other_servers(streamhost_used['host'])
if streamhost_used['type'] == 'proxy': if streamhost_used['type'] == 'proxy':
self.jft.file_props.is_a_proxy = True self.jft.file_props.is_a_proxy = True
if self.jft.file_props.type_ == 's' and self.jft.weinitiate: if self.jft.file_props.type_ == 's' and self.jft.weinitiate:
@ -170,13 +170,13 @@ class StateTransfering(JingleFileTransferStates):
self.jft.file_props.proxy_receiver = streamhost_used[ self.jft.file_props.proxy_receiver = streamhost_used[
'initiator'] 'initiator']
if self.jft.file_props.type_ == 's': if self.jft.file_props.type_ == 's':
s = gajim.socks5queue.senders s = app.socks5queue.senders
for sender in s: for sender in s:
if s[sender].host == streamhost_used['host'] and \ if s[sender].host == streamhost_used['host'] and \
s[sender].connected: s[sender].connected:
return return
elif self.jft.file_props.type_ == 'r': elif self.jft.file_props.type_ == 'r':
r = gajim.socks5queue.readers r = app.socks5queue.readers
for reader in r: for reader in r:
if r[reader].host == streamhost_used['host'] and \ if r[reader].host == streamhost_used['host'] and \
r[reader].connected: r[reader].connected:
@ -190,32 +190,32 @@ class StateTransfering(JingleFileTransferStates):
self.jft.file_props.proxyhosts = [] self.jft.file_props.proxyhosts = []
self.jft.file_props.proxyhosts.append(streamhost_used) self.jft.file_props.proxyhosts.append(streamhost_used)
if self.jft.file_props.type_ == 's': if self.jft.file_props.type_ == 's':
gajim.socks5queue.idx += 1 app.socks5queue.idx += 1
idx = gajim.socks5queue.idx idx = app.socks5queue.idx
sockobj = Socks5SenderClient(gajim.idlequeue, idx, sockobj = Socks5SenderClient(app.idlequeue, idx,
gajim.socks5queue, _sock=None, app.socks5queue, _sock=None,
host=str(streamhost_used['host']), host=str(streamhost_used['host']),
port=int(streamhost_used['port']), port=int(streamhost_used['port']),
fingerprint=None, connected=False, fingerprint=None, connected=False,
file_props=self.jft.file_props) file_props=self.jft.file_props)
else: else:
sockobj = Socks5ReceiverClient(gajim.idlequeue, streamhost_used, sockobj = Socks5ReceiverClient(app.idlequeue, streamhost_used,
transport_sid=self.jft.file_props.transport_sid, transport_sid=self.jft.file_props.transport_sid,
file_props=self.jft.file_props, fingerprint=None) file_props=self.jft.file_props, fingerprint=None)
sockobj.proxy = True sockobj.proxy = True
sockobj.streamhost = streamhost_used sockobj.streamhost = streamhost_used
gajim.socks5queue.add_sockobj(self.jft.session.connection.name, app.socks5queue.add_sockobj(self.jft.session.connection.name,
sockobj) sockobj)
streamhost_used['idx'] = sockobj.queue_idx streamhost_used['idx'] = sockobj.queue_idx
# If we offered the nominated candidate used, we activate # If we offered the nominated candidate used, we activate
# the proxy # the proxy
if not self.jft.is_our_candidate_used(): if not self.jft.is_our_candidate_used():
gajim.socks5queue.on_success[self.jft.file_props.transport_sid]\ app.socks5queue.on_success[self.jft.file_props.transport_sid]\
= self.jft.transport._on_proxy_auth_ok = self.jft.transport._on_proxy_auth_ok
# TODO: add on failure # TODO: add on failure
else: else:
jid = gajim.get_jid_without_resource(self.jft.session.ourjid) jid = app.get_jid_without_resource(self.jft.session.ourjid)
gajim.socks5queue.send_file(self.jft.file_props, app.socks5queue.send_file(self.jft.file_props,
self.jft.session.connection.name, mode) self.jft.session.connection.name, mode)
def action(self, args=None): def action(self, args=None):

View File

@ -27,7 +27,7 @@ gi.require_version('Gst', '1.0')
from gi.repository import Gst from gi.repository import Gst
from gi.repository import GLib from gi.repository import GLib
from gajim.common import gajim from gajim.common import app
from gajim.common.jingle_transport import JingleTransportICEUDP from gajim.common.jingle_transport import JingleTransportICEUDP
from gajim.common.jingle_content import contents, JingleContent, JingleContentSetupException from gajim.common.jingle_content import contents, JingleContent, JingleContentSetupException
@ -90,8 +90,8 @@ class JingleRTPContent(JingleContent):
# due to bad controlling-mode # due to bad controlling-mode
params = {'controlling-mode': self.session.weinitiate, 'debug': False} params = {'controlling-mode': self.session.weinitiate, 'debug': False}
if gajim.config.get('use_stun_server'): if app.config.get('use_stun_server'):
stun_server = gajim.config.get('stun_server') stun_server = app.config.get('stun_server')
if not stun_server and self.session.connection._stun_servers: if not stun_server and self.session.connection._stun_servers:
stun_server = self.session.connection._stun_servers[0]['host'] stun_server = self.session.connection._stun_servers[0]['host']
if stun_server: if stun_server:
@ -112,12 +112,12 @@ class JingleRTPContent(JingleContent):
return JingleContent.is_ready(self) and self.candidates_ready return JingleContent.is_ready(self) and self.candidates_ready
def make_bin_from_config(self, config_key, pipeline, text): def make_bin_from_config(self, config_key, pipeline, text):
pipeline = pipeline % gajim.config.get(config_key) pipeline = pipeline % app.config.get(config_key)
try: try:
gst_bin = Gst.parse_bin_from_description(pipeline, True) gst_bin = Gst.parse_bin_from_description(pipeline, True)
return gst_bin return gst_bin
except GLib.GError as e: except GLib.GError as e:
gajim.nec.push_incoming_event( app.nec.push_incoming_event(
InformationEvent( InformationEvent(
None, conn=self.session.connection, level='error', None, conn=self.session.connection, level='error',
pri_txt=_('%s configuration error') % text.capitalize(), pri_txt=_('%s configuration error') % text.capitalize(),
@ -224,7 +224,7 @@ class JingleRTPContent(JingleContent):
# or raise an error, Jingle way # or raise an error, Jingle way
# or maybe one-sided stream? # or maybe one-sided stream?
if not self.stream_failed_once: if not self.stream_failed_once:
gajim.nec.push_incoming_event( app.nec.push_incoming_event(
InformationEvent( InformationEvent(
None, conn=self.session.connection, level='error', None, conn=self.session.connection, level='error',
pri_txt=_('GStreamer error'), pri_txt=_('GStreamer error'),
@ -406,23 +406,23 @@ class JingleVideo(JingleRTPContent):
bus.connect('sync-message::element', self._on_sync_message) bus.connect('sync-message::element', self._on_sync_message)
# the local parts # the local parts
if gajim.config.get('video_framerate'): if app.config.get('video_framerate'):
framerate = 'videorate ! video/x-raw,framerate=%s ! ' % \ framerate = 'videorate ! video/x-raw,framerate=%s ! ' % \
gajim.config.get('video_framerate') app.config.get('video_framerate')
else: else:
framerate = '' framerate = ''
try: try:
w, h = gajim.config.get('video_size').split('x') w, h = app.config.get('video_size').split('x')
except: except:
w = h = None w = h = None
if w and h: if w and h:
video_size = 'video/x-raw,width=%s,height=%s ! ' % (w, h) video_size = 'video/x-raw,width=%s,height=%s ! ' % (w, h)
else: else:
video_size = '' video_size = ''
if gajim.config.get('video_see_self'): if app.config.get('video_see_self'):
tee = '! tee name=t ! queue ! videoscale ! ' + \ tee = '! tee name=t ! queue ! videoscale ! ' + \
'video/x-raw,width=160,height=120 ! videoconvert ! ' + \ 'video/x-raw,width=160,height=120 ! videoconvert ! ' + \
'%s t. ! queue ' % gajim.config.get( '%s t. ! queue ' % app.config.get(
'video_output_device') 'video_output_device')
else: else:
tee = '' tee = ''
@ -453,7 +453,7 @@ class JingleVideo(JingleRTPContent):
if message.get_structure().get_name() == 'prepare-window-handle': if message.get_structure().get_name() == 'prepare-window-handle':
message.src.set_property('force-aspect-ratio', True) message.src.set_property('force-aspect-ratio', True)
imagesink = message.src imagesink = message.src
if gajim.config.get('video_see_self') and not self.out_xid_set: if app.config.get('video_see_self') and not self.out_xid_set:
imagesink.set_window_handle(self.out_xid) imagesink.set_window_handle(self.out_xid)
self.out_xid_set = True self.out_xid_set = True
else: else:

View File

@ -31,7 +31,7 @@ Handles Jingle sessions (XEP 0166)
import logging import logging
from enum import Enum, unique from enum import Enum, unique
import nbxmpp import nbxmpp
from gajim.common import gajim from gajim.common import app
from gajim.common.jingle_transport import get_jingle_transport, JingleTransportIBB from gajim.common.jingle_transport import get_jingle_transport, JingleTransportIBB
from gajim.common.jingle_content import get_jingle_content, JingleContentSetupException, JingleContent from gajim.common.jingle_content import get_jingle_content, JingleContentSetupException, JingleContent
from gajim.common.jingle_ft import State from gajim.common.jingle_ft import State
@ -40,7 +40,7 @@ from gajim.common.connection_handlers_events import (
JingleTransferCancelledEvent, JingleConnectedReceivedEvent, JingleTransferCancelledEvent, JingleConnectedReceivedEvent,
JingleErrorReceivedEvent) JingleErrorReceivedEvent)
log = logging.getLogger("gajim.c.jingle_session") log = logging.getLogger("app.c.jingle_session")
# FIXME: Move it to JingleSession.States? # FIXME: Move it to JingleSession.States?
@unique @unique
@ -86,7 +86,7 @@ class JingleSession:
self.contents = {} # negotiated contents self.contents = {} # negotiated contents
self.connection = con # connection to use self.connection = con # connection to use
# our full jid # our full jid
self.ourjid = gajim.get_jid_from_account(self.connection.name) self.ourjid = app.get_jid_from_account(self.connection.name)
if con.server_resource: if con.server_resource:
self.ourjid = self.ourjid + '/' + con.server_resource self.ourjid = self.ourjid + '/' + con.server_resource
self.peerjid = jid # jid we connect to self.peerjid = jid # jid we connect to
@ -462,7 +462,7 @@ class JingleSession:
if (creator, name) in self.contents: if (creator, name) in self.contents:
content = self.contents[(creator, name)] content = self.contents[(creator, name)]
# TODO: this will fail if content is not an RTP content # TODO: this will fail if content is not an RTP content
gajim.nec.push_incoming_event(JingleDisconnectedReceivedEvent( app.nec.push_incoming_event(JingleDisconnectedReceivedEvent(
None, conn=self.connection, jingle_session=self, None, conn=self.connection, jingle_session=self,
media=content.media, reason='removed')) media=content.media, reason='removed'))
content.destroy() content.destroy()
@ -501,7 +501,7 @@ class JingleSession:
self.add_content(name, content, creator) self.add_content(name, content, creator)
self.__content_reject(content) self.__content_reject(content)
self.contents[(content.creator, content.name)].destroy() self.contents[(content.creator, content.name)].destroy()
gajim.nec.push_incoming_event(JingleRequestReceivedEvent(None, app.nec.push_incoming_event(JingleRequestReceivedEvent(None,
conn=self.connection, conn=self.connection,
jingle_session=self, jingle_session=self,
contents=contents)) contents=contents))
@ -544,7 +544,7 @@ class JingleSession:
hash_data = hash_tag.getData() if hash_tag else None hash_data = hash_tag.getData() if hash_tag else None
n = request.getTag('file').getTag('name') n = request.getTag('file').getTag('name')
n = n.getData() if n else None n = n.getData() if n else None
pjid = gajim.get_jid_without_resource(self.peerjid) pjid = app.get_jid_without_resource(self.peerjid)
file_info = self.connection.get_file_info(pjid, hash_data, n, file_info = self.connection.get_file_info(pjid, hash_data, n,
self.connection.name) self.connection.name)
if not file_info: if not file_info:
@ -563,7 +563,7 @@ class JingleSession:
raise nbxmpp.NodeProcessed raise nbxmpp.NodeProcessed
self.state = JingleStates.PENDING self.state = JingleStates.PENDING
# Send event about starting a session # Send event about starting a session
gajim.nec.push_incoming_event(JingleRequestReceivedEvent(None, app.nec.push_incoming_event(JingleRequestReceivedEvent(None,
conn=self.connection, conn=self.connection,
jingle_session=self, jingle_session=self,
contents=contents[0])) contents=contents[0]))
@ -603,7 +603,7 @@ class JingleSession:
# TODO # TODO
text = reason text = reason
if reason == 'cancel' and self.session_type_ft: if reason == 'cancel' and self.session_type_ft:
gajim.nec.push_incoming_event(JingleTransferCancelledEvent(None, app.nec.push_incoming_event(JingleTransferCancelledEvent(None,
conn=self.connection, conn=self.connection,
jingle_session=self, jingle_session=self,
media=None, media=None,
@ -656,7 +656,7 @@ class JingleSession:
if text: if text:
text = '%s (%s)' % (error, text) text = '%s (%s)' % (error, text)
if type_ != 'modify': if type_ != 'modify':
gajim.nec.push_incoming_event(JingleErrorReceivedEvent(None, app.nec.push_incoming_event(JingleErrorReceivedEvent(None,
conn=self.connection, conn=self.connection,
jingle_session=self, jingle_session=self,
reason=text or error)) reason=text or error))
@ -774,7 +774,7 @@ class JingleSession:
else: else:
text = reason text = reason
self.connection.delete_jingle_session(self.sid) self.connection.delete_jingle_session(self.sid)
gajim.nec.push_incoming_event(JingleDisconnectedReceivedEvent(None, app.nec.push_incoming_event(JingleDisconnectedReceivedEvent(None,
conn=self.connection, conn=self.connection,
jingle_session=self, jingle_session=self,
media=None, media=None,
@ -804,7 +804,7 @@ class JingleSession:
self.__append_content(jingle, content) self.__append_content(jingle, content)
self.connection.connection.send(stanza) self.connection.connection.send(stanza)
# TODO: this will fail if content is not an RTP content # TODO: this will fail if content is not an RTP content
gajim.nec.push_incoming_event(JingleDisconnectedReceivedEvent(None, app.nec.push_incoming_event(JingleDisconnectedReceivedEvent(None,
conn=self.connection, conn=self.connection,
jingle_session=self, jingle_session=self,
media=content.media, media=content.media,
@ -820,14 +820,14 @@ class JingleSession:
self.__append_content(jingle, content) self.__append_content(jingle, content)
self.connection.connection.send(stanza) self.connection.connection.send(stanza)
# TODO: this will fail if content is not an RTP content # TODO: this will fail if content is not an RTP content
gajim.nec.push_incoming_event(JingleDisconnectedReceivedEvent(None, app.nec.push_incoming_event(JingleDisconnectedReceivedEvent(None,
conn=self.connection, conn=self.connection,
jingle_session=self, jingle_session=self,
media=content.media, media=content.media,
reason='removed')) reason='removed'))
def content_negotiated(self, media): def content_negotiated(self, media):
gajim.nec.push_incoming_event(JingleConnectedReceivedEvent(None, app.nec.push_incoming_event(JingleConnectedReceivedEvent(None,
conn=self.connection, conn=self.connection,
jingle_session=self, jingle_session=self,
media=media)) media=media))

View File

@ -21,7 +21,7 @@ import logging
import socket import socket
from enum import IntEnum, unique from enum import IntEnum, unique
import nbxmpp import nbxmpp
from gajim.common import gajim from gajim.common import app
log = logging.getLogger('gajim.c.jingle_transport') log = logging.getLogger('gajim.c.jingle_transport')
@ -180,12 +180,12 @@ class JingleTransportSocks5(JingleTransport):
self.candidates.append(cand) self.candidates.append(cand)
def _add_local_ips_as_candidates(self): def _add_local_ips_as_candidates(self):
if not gajim.config.get_per('accounts', self.connection.name, if not app.config.get_per('accounts', self.connection.name,
'ft_send_local_ips'): 'ft_send_local_ips'):
return return
if not self.connection: if not self.connection:
return return
port = int(gajim.config.get('file_transfers_port')) port = int(app.config.get('file_transfers_port'))
#type preference of connection type. XEP-0260 section 2.2 #type preference of connection type. XEP-0260 section 2.2
type_preference = 126 type_preference = 126
priority = (2**16) * type_preference priority = (2**16) * type_preference
@ -275,8 +275,8 @@ class JingleTransportSocks5(JingleTransport):
type_preference = 126 type_preference = 126
priority = (2**16) * type_preference priority = (2**16) * type_preference
additional_ip_cand = [] additional_ip_cand = []
port = int(gajim.config.get('file_transfers_port')) port = int(app.config.get('file_transfers_port'))
ft_add_hosts = gajim.config.get('ft_add_hosts_to_send') ft_add_hosts = app.config.get('ft_add_hosts_to_send')
if ft_add_hosts: if ft_add_hosts:
hosts = [e.strip() for e in ft_add_hosts.split(',')] hosts = [e.strip() for e in ft_add_hosts.split(',')]
@ -426,7 +426,7 @@ class JingleTransportICEUDP(JingleTransport):
'network': '0', 'network': '0',
'port': candidate.port, 'port': candidate.port,
'priority': int(candidate.priority), # hack 'priority': int(candidate.priority), # hack
'id': gajim.get_an_id() 'id': app.get_an_id()
} }
if candidate.type in types: if candidate.type in types:
attrs['type'] = types[candidate.type] attrs['type'] = types[candidate.type]

View File

@ -20,7 +20,7 @@ import logging
import os import os
import nbxmpp import nbxmpp
from gajim.common import gajim from gajim.common import app
log = logging.getLogger('gajim.c.jingle_xtls') log = logging.getLogger('gajim.c.jingle_xtls')
@ -111,18 +111,18 @@ def get_context(fingerprint, verify_cb=None, remote_jid=None):
elif fingerprint == 'client': elif fingerprint == 'client':
ctx.set_verify(SSL.VERIFY_PEER, verify_cb or default_callback) ctx.set_verify(SSL.VERIFY_PEER, verify_cb or default_callback)
cert_name = os.path.join(gajim.MY_CERT_DIR, SELF_SIGNED_CERTIFICATE) cert_name = os.path.join(app.MY_CERT_DIR, SELF_SIGNED_CERTIFICATE)
ctx.use_privatekey_file((cert_name + '.pkey').encode('utf-8')) ctx.use_privatekey_file((cert_name + '.pkey').encode('utf-8'))
ctx.use_certificate_file((cert_name + '.cert').encode('utf-8')) ctx.use_certificate_file((cert_name + '.cert').encode('utf-8'))
# Try to load Diffie-Hellman parameters. # Try to load Diffie-Hellman parameters.
# First try user DH parameters, if this fails load the default DH parameters # First try user DH parameters, if this fails load the default DH parameters
dh_params_name = os.path.join(gajim.MY_CERT_DIR, DH_PARAMS) dh_params_name = os.path.join(app.MY_CERT_DIR, DH_PARAMS)
try: try:
with open(dh_params_name, "r") as dh_params_file: with open(dh_params_name, "r") as dh_params_file:
ctx.load_tmp_dh(dh_params_name.encode('utf-8')) ctx.load_tmp_dh(dh_params_name.encode('utf-8'))
except FileNotFoundError as err: except FileNotFoundError as err:
default_dh_params_name = os.path.join(gajim.DATA_DIR, default_dh_params_name = os.path.join(app.DATA_DIR,
'other', DEFAULT_DH_PARAMS) 'other', DEFAULT_DH_PARAMS)
try: try:
with open(default_dh_params_name, "r") as default_dh_params_file: with open(default_dh_params_name, "r") as default_dh_params_file:
@ -134,7 +134,7 @@ def get_context(fingerprint, verify_cb=None, remote_jid=None):
if remote_jid: if remote_jid:
store = ctx.get_cert_store() store = ctx.get_cert_store()
path = os.path.join(os.path.expanduser(gajim.MY_PEER_CERTS_PATH), path = os.path.join(os.path.expanduser(app.MY_PEER_CERTS_PATH),
remote_jid) + '.cert' remote_jid) + '.cert'
if os.path.exists(path): if os.path.exists(path):
load_cert_file(path, cert_store=store) load_cert_file(path, cert_store=store)
@ -151,7 +151,7 @@ def read_cert(certpath):
return certificate return certificate
def send_cert(con, jid_from, sid): def send_cert(con, jid_from, sid):
certpath = os.path.join(gajim.MY_CERT_DIR, SELF_SIGNED_CERTIFICATE) + \ certpath = os.path.join(app.MY_CERT_DIR, SELF_SIGNED_CERTIFICATE) + \
'.cert' '.cert'
certificate = read_cert(certpath) certificate = read_cert(certpath)
iq = nbxmpp.Iq('result', to=jid_from) iq = nbxmpp.Iq('result', to=jid_from)
@ -169,8 +169,8 @@ def send_cert(con, jid_from, sid):
con.send(iq) con.send(iq)
def handle_new_cert(con, obj, jid_from): def handle_new_cert(con, obj, jid_from):
jid = gajim.get_jid_without_resource(jid_from) jid = app.get_jid_without_resource(jid_from)
certpath = os.path.join(os.path.expanduser(gajim.MY_PEER_CERTS_PATH), jid) certpath = os.path.join(os.path.expanduser(app.MY_PEER_CERTS_PATH), jid)
certpath += '.cert' certpath += '.cert'
id_ = obj.getAttr('id') id_ = obj.getAttr('id')
@ -188,7 +188,7 @@ def handle_new_cert(con, obj, jid_from):
approve_pending_content(id_) approve_pending_content(id_)
def check_cert(jid, fingerprint): def check_cert(jid, fingerprint):
certpath = os.path.join(os.path.expanduser(gajim.MY_PEER_CERTS_PATH), jid) certpath = os.path.join(os.path.expanduser(app.MY_PEER_CERTS_PATH), jid)
certpath += '.cert' certpath += '.cert'
if os.path.exists(certpath): if os.path.exists(certpath):
cert = load_cert_file(certpath) cert = load_cert_file(certpath)

View File

@ -20,7 +20,7 @@
from datetime import datetime from datetime import datetime
from gajim.common import gajim from gajim.common import app
from gajim.common import dbus_support from gajim.common import dbus_support
if dbus_support.supported: if dbus_support.supported:
import dbus import dbus
@ -121,11 +121,11 @@ class LocationListener:
self._send_location() self._send_location()
def _send_location(self): def _send_location(self):
accounts = gajim.connections.keys() accounts = app.connections.keys()
for acct in accounts: for acct in accounts:
if not gajim.account_is_connected(acct): if not app.account_is_connected(acct):
continue continue
if not gajim.config.get_per('accounts', acct, 'publish_location'): if not app.config.get_per('accounts', acct, 'publish_location'):
continue continue
if self.location_info == self._data: if self.location_info == self._data:
continue continue
@ -136,7 +136,7 @@ class LocationListener:
del new_data['timestamp'] del new_data['timestamp']
if last_data == new_data: if last_data == new_data:
continue continue
gajim.connections[acct].send_location(self._data) app.connections[acct].send_location(self._data)
self.location_info = self._data.copy() self.location_info = self._data.copy()
def _timestamp_to_utc(self, timestamp): def _timestamp_to_utc(self, timestamp):

View File

@ -41,14 +41,14 @@ from gi.repository import GLib
from enum import IntEnum, unique from enum import IntEnum, unique
from gajim.common import exceptions from gajim.common import exceptions
from gajim.common import gajim from gajim.common import app
from gajim.common import ged from gajim.common import ged
import sqlite3 as sqlite import sqlite3 as sqlite
LOG_DB_PATH = gajim.gajimpaths['LOG_DB'] LOG_DB_PATH = app.gajimpaths['LOG_DB']
LOG_DB_FOLDER, LOG_DB_FILE = os.path.split(LOG_DB_PATH) LOG_DB_FOLDER, LOG_DB_FILE = os.path.split(LOG_DB_PATH)
CACHE_DB_PATH = gajim.gajimpaths['CACHE_DB'] CACHE_DB_PATH = app.gajimpaths['CACHE_DB']
import logging import logging
log = logging.getLogger('gajim.c.logger') log = logging.getLogger('gajim.c.logger')
@ -139,7 +139,7 @@ class Logger:
return named_row return named_row
def dispatch(self, event, error): def dispatch(self, event, error):
gajim.ged.raise_event(event, None, str(error)) app.ged.raise_event(event, None, str(error))
def close_db(self): def close_db(self):
if self.con: if self.con:
@ -196,7 +196,7 @@ class Logger:
""" """
returns the timeout in epoch returns the timeout in epoch
""" """
timeout = gajim.config.get('restore_timeout') timeout = app.config.get('restore_timeout')
now = int(time.time()) now = int(time.time())
if timeout > 0: if timeout > 0:
@ -284,7 +284,7 @@ class Logger:
returns a list of JIDs' returns a list of JIDs'
""" """
family = gajim.contacts.get_metacontacts_family(account, jid) family = app.contacts.get_metacontacts_family(account, jid)
if family: if family:
return [user['jid'] for user in family] return [user['jid'] for user in family]
return [jid] return [jid]
@ -553,7 +553,7 @@ class Logger:
returns a list of namedtuples returns a list of namedtuples
""" """
restore = gajim.config.get('restore_lines') restore = app.config.get('restore_lines')
if restore <= 0: if restore <= 0:
return [] return []
@ -914,9 +914,9 @@ class Logger:
# First we must reset roster_version value to ensure that the server # First we must reset roster_version value to ensure that the server
# sends back all the roster at the next connexion if the replacement # sends back all the roster at the next connexion if the replacement
# didn't work properly. # didn't work properly.
gajim.config.set_per('accounts', account_name, 'roster_version', '') app.config.set_per('accounts', account_name, 'roster_version', '')
account_jid = gajim.get_jid_from_account(account_name) account_jid = app.get_jid_from_account(account_name)
account_jid_id = self.get_jid_id(account_jid) account_jid_id = self.get_jid_id(account_jid)
# Delete old roster # Delete old roster
@ -931,7 +931,7 @@ class Logger:
# At this point, we are sure the replacement works properly so we can # At this point, we are sure the replacement works properly so we can
# set the new roster_version value. # set the new roster_version value.
gajim.config.set_per('accounts', account_name, 'roster_version', app.config.set_per('accounts', account_name, 'roster_version',
roster_version) roster_version)
def del_contact(self, account_jid, jid): def del_contact(self, account_jid, jid):

View File

@ -23,7 +23,7 @@ from datetime import datetime, timedelta
import nbxmpp import nbxmpp
from gajim.common import gajim from gajim.common import app
from gajim.common import ged from gajim.common import ged
from gajim.common.logger import KindConstant, JIDConstant from gajim.common.logger import KindConstant, JIDConstant
import gajim.common.connection_handlers_events as ev import gajim.common.connection_handlers_events as ev
@ -38,33 +38,33 @@ class ConnectionArchive313:
self.iq_answer = [] self.iq_answer = []
self.mam_query_date = None self.mam_query_date = None
self.mam_query_id = None self.mam_query_id = None
gajim.nec.register_incoming_event(ev.MamMessageReceivedEvent) app.nec.register_incoming_event(ev.MamMessageReceivedEvent)
gajim.ged.register_event_handler('archiving-finished-legacy', ged.CORE, app.ged.register_event_handler('archiving-finished-legacy', ged.CORE,
self._nec_result_finished) self._nec_result_finished)
gajim.ged.register_event_handler('archiving-finished', ged.CORE, app.ged.register_event_handler('archiving-finished', ged.CORE,
self._nec_result_finished) self._nec_result_finished)
gajim.ged.register_event_handler('agent-info-error-received', ged.CORE, app.ged.register_event_handler('agent-info-error-received', ged.CORE,
self._nec_agent_info_error) self._nec_agent_info_error)
gajim.ged.register_event_handler('agent-info-received', ged.CORE, app.ged.register_event_handler('agent-info-received', ged.CORE,
self._nec_agent_info) self._nec_agent_info)
gajim.ged.register_event_handler('mam-decrypted-message-received', app.ged.register_event_handler('mam-decrypted-message-received',
ged.CORE, self._nec_mam_decrypted_message_received) ged.CORE, self._nec_mam_decrypted_message_received)
gajim.ged.register_event_handler( app.ged.register_event_handler(
'archiving-313-preferences-changed-received', ged.CORE, 'archiving-313-preferences-changed-received', ged.CORE,
self._nec_archiving_313_preferences_changed_received) self._nec_archiving_313_preferences_changed_received)
def cleanup(self): def cleanup(self):
gajim.ged.remove_event_handler('archiving-finished-legacy', ged.CORE, app.ged.remove_event_handler('archiving-finished-legacy', ged.CORE,
self._nec_result_finished) self._nec_result_finished)
gajim.ged.remove_event_handler('archiving-finished', ged.CORE, app.ged.remove_event_handler('archiving-finished', ged.CORE,
self._nec_result_finished) self._nec_result_finished)
gajim.ged.remove_event_handler('agent-info-error-received', ged.CORE, app.ged.remove_event_handler('agent-info-error-received', ged.CORE,
self._nec_agent_info_error) self._nec_agent_info_error)
gajim.ged.remove_event_handler('agent-info-received', ged.CORE, app.ged.remove_event_handler('agent-info-received', ged.CORE,
self._nec_agent_info) self._nec_agent_info)
gajim.ged.remove_event_handler('mam-decrypted-message-received', app.ged.remove_event_handler('mam-decrypted-message-received',
ged.CORE, self._nec_mam_decrypted_message_received) ged.CORE, self._nec_mam_decrypted_message_received)
gajim.ged.remove_event_handler( app.ged.remove_event_handler(
'archiving-313-preferences-changed-received', ged.CORE, 'archiving-313-preferences-changed-received', ged.CORE,
self._nec_archiving_313_preferences_changed_received) self._nec_archiving_313_preferences_changed_received)
@ -86,17 +86,17 @@ class ConnectionArchive313:
continue continue
# it's a groupchat # it's a groupchat
for msg_obj in self.mam_awaiting_disco_result[obj.jid]: for msg_obj in self.mam_awaiting_disco_result[obj.jid]:
gajim.logger.insert_jid(msg_obj.with_.getStripped(), app.logger.insert_jid(msg_obj.with_.getStripped(),
type_=JIDConstant.ROOM_TYPE) type_=JIDConstant.ROOM_TYPE)
gajim.nec.push_incoming_event( app.nec.push_incoming_event(
ev.MamDecryptedMessageReceivedEvent( ev.MamDecryptedMessageReceivedEvent(
None, disco=True, **vars(msg_obj))) None, disco=True, **vars(msg_obj)))
del self.mam_awaiting_disco_result[obj.jid] del self.mam_awaiting_disco_result[obj.jid]
return return
# it's not a groupchat # it's not a groupchat
for msg_obj in self.mam_awaiting_disco_result[obj.jid]: for msg_obj in self.mam_awaiting_disco_result[obj.jid]:
gajim.logger.insert_jid(msg_obj.with_.getStripped()) app.logger.insert_jid(msg_obj.with_.getStripped())
gajim.nec.push_incoming_event( app.nec.push_incoming_event(
ev.MamDecryptedMessageReceivedEvent( ev.MamDecryptedMessageReceivedEvent(
None, disco=True, **vars(msg_obj))) None, disco=True, **vars(msg_obj)))
del self.mam_awaiting_disco_result[obj.jid] del self.mam_awaiting_disco_result[obj.jid]
@ -113,13 +113,13 @@ class ConnectionArchive313:
last = set_.getTagData('last') last = set_.getTagData('last')
complete = obj.fin.getAttr('complete') complete = obj.fin.getAttr('complete')
if last: if last:
gajim.config.set_per('accounts', self.name, 'last_mam_id', last) app.config.set_per('accounts', self.name, 'last_mam_id', last)
if complete != 'true': if complete != 'true':
self.request_archive(self.get_query_id(), after=last) self.request_archive(self.get_query_id(), after=last)
if complete == 'true': if complete == 'true':
self.mam_query_id = None self.mam_query_id = None
if self.mam_query_date: if self.mam_query_date:
gajim.config.set_per( app.config.set_per(
'accounts', self.name, 'accounts', self.name,
'mam_start_date', self.mam_query_date.timestamp()) 'mam_start_date', self.mam_query_date.timestamp())
self.mam_query_date = None self.mam_query_date = None
@ -127,10 +127,10 @@ class ConnectionArchive313:
def _nec_mam_decrypted_message_received(self, obj): def _nec_mam_decrypted_message_received(self, obj):
if obj.conn.name != self.name: if obj.conn.name != self.name:
return return
duplicate = gajim.logger.search_for_duplicate( duplicate = app.logger.search_for_duplicate(
obj.with_, obj.timestamp, obj.msgtxt) obj.with_, obj.timestamp, obj.msgtxt)
if not duplicate: if not duplicate:
gajim.logger.insert_into_logs( app.logger.insert_into_logs(
obj.with_, obj.timestamp, obj.kind, obj.with_, obj.timestamp, obj.kind,
unread=False, unread=False,
message=obj.msgtxt) message=obj.msgtxt)
@ -140,7 +140,7 @@ class ConnectionArchive313:
return self.mam_query_id return self.mam_query_id
def request_archive_on_signin(self): def request_archive_on_signin(self):
mam_id = gajim.config.get_per('accounts', self.name, 'last_mam_id') mam_id = app.config.get_per('accounts', self.name, 'last_mam_id')
query_id = self.get_query_id() query_id = self.get_query_id()
if mam_id: if mam_id:
self.request_archive(query_id, after=mam_id) self.request_archive(query_id, after=mam_id)
@ -184,7 +184,7 @@ class ConnectionArchive313:
self.connection.send(iq) self.connection.send(iq)
def request_archive_preferences(self): def request_archive_preferences(self):
if not gajim.account_is_connected(self.name): if not app.account_is_connected(self.name):
return return
iq = nbxmpp.Iq(typ='get') iq = nbxmpp.Iq(typ='get')
id_ = self.connection.getAnID() id_ = self.connection.getAnID()
@ -193,7 +193,7 @@ class ConnectionArchive313:
self.connection.send(iq) self.connection.send(iq)
def set_archive_preferences(self, items, default): def set_archive_preferences(self, items, default):
if not gajim.account_is_connected(self.name): if not app.account_is_connected(self.name):
return return
iq = nbxmpp.Iq(typ='set') iq = nbxmpp.Iq(typ='set')
id_ = self.connection.getAnID() id_ = self.connection.getAnID()
@ -211,6 +211,6 @@ class ConnectionArchive313:
self.connection.send(iq) self.connection.send(iq)
def _ArchiveCB(self, con, iq_obj): def _ArchiveCB(self, con, iq_obj):
gajim.nec.push_incoming_event(ev.ArchivingReceivedEvent(None, conn=self, app.nec.push_incoming_event(ev.ArchivingReceivedEvent(None, conn=self,
stanza=iq_obj)) stanza=iq_obj))
raise nbxmpp.NodeProcessed raise nbxmpp.NodeProcessed

View File

@ -26,7 +26,7 @@ Network Events Controller.
''' '''
#from plugins.helpers import log #from plugins.helpers import log
from gajim.common import gajim from gajim.common import app
class NetworkEventsController(object): class NetworkEventsController(object):
@ -72,12 +72,12 @@ class NetworkEventsController(object):
def push_incoming_event(self, event_object): def push_incoming_event(self, event_object):
if event_object.generate(): if event_object.generate():
if not gajim.ged.raise_event(event_object.name, event_object): if not app.ged.raise_event(event_object.name, event_object):
self._generate_events_based_on_incoming_event(event_object) self._generate_events_based_on_incoming_event(event_object)
def push_outgoing_event(self, event_object): def push_outgoing_event(self, event_object):
if event_object.generate(): if event_object.generate():
if not gajim.ged.raise_event(event_object.name, event_object): if not app.ged.raise_event(event_object.name, event_object):
self._generate_events_based_on_outgoing_event(event_object) self._generate_events_based_on_outgoing_event(event_object)
def _generate_events_based_on_incoming_event(self, event_object): def _generate_events_based_on_incoming_event(self, event_object):
@ -96,7 +96,7 @@ class NetworkEventsController(object):
new_event_object = new_event_class(None, new_event_object = new_event_class(None,
base_event=event_object) base_event=event_object)
if new_event_object.generate(): if new_event_object.generate():
if not gajim.ged.raise_event(new_event_object.name, if not app.ged.raise_event(new_event_object.name,
new_event_object): new_event_object):
self._generate_events_based_on_incoming_event( self._generate_events_based_on_incoming_event(
new_event_object) new_event_object)
@ -117,7 +117,7 @@ class NetworkEventsController(object):
new_event_object = new_event_class(None, new_event_object = new_event_class(None,
base_event=event_object) base_event=event_object)
if new_event_object.generate(): if new_event_object.generate():
if not gajim.ged.raise_event(new_event_object.name, if not app.ged.raise_event(new_event_object.name,
new_event_object): new_event_object):
self._generate_events_based_on_outgoing_event( self._generate_events_based_on_outgoing_event(
new_event_object) new_event_object)

View File

@ -30,7 +30,7 @@ import os
import sys import sys
import re import re
from time import time from time import time
from gajim.common import gajim from gajim.common import app
from gajim.common import helpers from gajim.common import helpers
from gajim.common import caps_cache from gajim.common import caps_cache
@ -56,7 +56,7 @@ class OptionsParser:
file=sys.stderr) file=sys.stderr)
return False return False
new_version = gajim.config.get('version') new_version = app.config.get('version')
new_version = new_version.split('-', 1)[0] new_version = new_version.split('-', 1)[0]
seen = set() seen = set()
regex = re.compile(r"(?P<optname>[^.=]+)(?:(?:\.(?P<key>.+))?\.(?P<subname>[^.=]+))?\s=\s(?P<value>.*)") regex = re.compile(r"(?P<optname>[^.=]+)(?:(?:\.(?P<key>.+))?\.(?P<subname>[^.=]+))?\s=\s(?P<value>.*)")
@ -69,19 +69,19 @@ class OptionsParser:
optname, key, subname, value = match.groups() optname, key, subname, value = match.groups()
if key is None: if key is None:
self.old_values[optname] = value self.old_values[optname] = value
gajim.config.set(optname, value) app.config.set(optname, value)
else: else:
if (optname, key) not in seen: if (optname, key) not in seen:
if optname in self.old_values: if optname in self.old_values:
self.old_values[optname][key] = {} self.old_values[optname][key] = {}
else: else:
self.old_values[optname] = {key: {}} self.old_values[optname] = {key: {}}
gajim.config.add_per(optname, key) app.config.add_per(optname, key)
seen.add((optname, key)) seen.add((optname, key))
self.old_values[optname][key][subname] = value self.old_values[optname][key][subname] = value
gajim.config.set_per(optname, key, subname, value) app.config.set_per(optname, key, subname, value)
old_version = gajim.config.get('version') old_version = app.config.get('version')
old_version = old_version.split('-', 1)[0] old_version = old_version.split('-', 1)[0]
self.update_config(old_version, new_version) self.update_config(old_version, new_version)
@ -113,7 +113,7 @@ class OptionsParser:
except IOError as e: except IOError as e:
return str(e) return str(e)
try: try:
gajim.config.foreach(self.write_line, f) app.config.foreach(self.write_line, f)
except IOError as e: except IOError as e:
return str(e) return str(e)
f.flush() f.flush()
@ -241,9 +241,9 @@ class OptionsParser:
if old < [0, 16, 10, 5] and new >= [0, 16, 10, 5]: if old < [0, 16, 10, 5] and new >= [0, 16, 10, 5]:
self.update_config_to_016105() self.update_config_to_016105()
gajim.logger.init_vars() app.logger.init_vars()
gajim.logger.attach_cache_database() app.logger.attach_cache_database()
gajim.config.set('version', new_version) app.config.set('version', new_version)
caps_cache.capscache.initialize_from_db() caps_cache.capscache.initialize_from_db()
@ -267,7 +267,7 @@ class OptionsParser:
''' '''
) )
con.commit() con.commit()
gajim.logger.init_vars() app.logger.init_vars()
except sqlite.OperationalError: except sqlite.OperationalError:
pass pass
con.close() con.close()
@ -278,8 +278,8 @@ class OptionsParser:
to_remove = [] to_remove = []
if to_add is None: if to_add is None:
to_add = [] to_add = []
for account in gajim.config.get_per('accounts'): for account in app.config.get_per('accounts'):
proxies_str = gajim.config.get_per('accounts', account, proxies_str = app.config.get_per('accounts', account,
'file_transfer_proxies') 'file_transfer_proxies')
proxies = [p.strip() for p in proxies_str.split(',')] proxies = [p.strip() for p in proxies_str.split(',')]
for wrong_proxy in to_remove: for wrong_proxy in to_remove:
@ -289,23 +289,23 @@ class OptionsParser:
if new_proxy not in proxies: if new_proxy not in proxies:
proxies.append(new_proxy) proxies.append(new_proxy)
proxies_str = ', '.join(proxies) proxies_str = ', '.join(proxies)
gajim.config.set_per('accounts', account, 'file_transfer_proxies', app.config.set_per('accounts', account, 'file_transfer_proxies',
proxies_str) proxies_str)
def update_config_x_to_09(self): def update_config_x_to_09(self):
# Var name that changed: # Var name that changed:
# avatar_width /height -> chat_avatar_width / height # avatar_width /height -> chat_avatar_width / height
if 'avatar_width' in self.old_values: if 'avatar_width' in self.old_values:
gajim.config.set('chat_avatar_width', self.old_values['avatar_width']) app.config.set('chat_avatar_width', self.old_values['avatar_width'])
if 'avatar_height' in self.old_values: if 'avatar_height' in self.old_values:
gajim.config.set('chat_avatar_height', self.old_values['avatar_height']) app.config.set('chat_avatar_height', self.old_values['avatar_height'])
if 'use_dbus' in self.old_values: if 'use_dbus' in self.old_values:
gajim.config.set('remote_control', self.old_values['use_dbus']) app.config.set('remote_control', self.old_values['use_dbus'])
# always_compact_view -> always_compact_view_chat / _gc # always_compact_view -> always_compact_view_chat / _gc
if 'always_compact_view' in self.old_values: if 'always_compact_view' in self.old_values:
gajim.config.set('always_compact_view_chat', app.config.set('always_compact_view_chat',
self.old_values['always_compact_view']) self.old_values['always_compact_view'])
gajim.config.set('always_compact_view_gc', app.config.set('always_compact_view_gc',
self.old_values['always_compact_view']) self.old_values['always_compact_view'])
# new theme: grocery, plain # new theme: grocery, plain
d = ['accounttextcolor', 'accountbgcolor', 'accountfont', d = ['accounttextcolor', 'accountbgcolor', 'accountfont',
@ -314,64 +314,64 @@ class OptionsParser:
'contactfontattrs', 'bannertextcolor', 'bannerbgcolor', 'bannerfont', 'contactfontattrs', 'bannertextcolor', 'bannerbgcolor', 'bannerfont',
'bannerfontattrs'] 'bannerfontattrs']
for theme_name in (_('grocery'), _('default')): for theme_name in (_('grocery'), _('default')):
if theme_name not in gajim.config.get_per('themes'): if theme_name not in app.config.get_per('themes'):
gajim.config.add_per('themes', theme_name) app.config.add_per('themes', theme_name)
theme = gajim.config.themes_default[theme_name] theme = app.config.themes_default[theme_name]
for o in d: for o in d:
gajim.config.set_per('themes', theme_name, o, theme[d.index(o)]) app.config.set_per('themes', theme_name, o, theme[d.index(o)])
# Remove cyan theme if it's not the current theme # Remove cyan theme if it's not the current theme
if 'cyan' in gajim.config.get_per('themes'): if 'cyan' in app.config.get_per('themes'):
gajim.config.del_per('themes', 'cyan') app.config.del_per('themes', 'cyan')
if _('cyan') in gajim.config.get_per('themes'): if _('cyan') in app.config.get_per('themes'):
gajim.config.del_per('themes', _('cyan')) app.config.del_per('themes', _('cyan'))
# If we removed our roster_theme, choose the default green one or another # If we removed our roster_theme, choose the default green one or another
# one if doesn't exists in config # one if doesn't exists in config
if gajim.config.get('roster_theme') not in gajim.config.get_per('themes'): if app.config.get('roster_theme') not in app.config.get_per('themes'):
theme = _('green') theme = _('green')
if theme not in gajim.config.get_per('themes'): if theme not in app.config.get_per('themes'):
theme = gajim.config.get_per('themes')[0] theme = app.config.get_per('themes')[0]
gajim.config.set('roster_theme', theme) app.config.set('roster_theme', theme)
# new proxies in accounts.name.file_transfer_proxies # new proxies in accounts.name.file_transfer_proxies
self.update_ft_proxies(to_add=['proxy.netlab.cz']) self.update_ft_proxies(to_add=['proxy.netlab.cz'])
gajim.config.set('version', '0.9') app.config.set('version', '0.9')
def update_config_09_to_010(self): def update_config_09_to_010(self):
if 'usetabbedchat' in self.old_values and not \ if 'usetabbedchat' in self.old_values and not \
self.old_values['usetabbedchat']: self.old_values['usetabbedchat']:
gajim.config.set('one_message_window', 'never') app.config.set('one_message_window', 'never')
if 'autodetect_browser_mailer' in self.old_values and \ if 'autodetect_browser_mailer' in self.old_values and \
self.old_values['autodetect_browser_mailer'] is True: self.old_values['autodetect_browser_mailer'] is True:
gajim.config.set('autodetect_browser_mailer', False) app.config.set('autodetect_browser_mailer', False)
if 'useemoticons' in self.old_values and \ if 'useemoticons' in self.old_values and \
not self.old_values['useemoticons']: not self.old_values['useemoticons']:
gajim.config.set('emoticons_theme', '') app.config.set('emoticons_theme', '')
if 'always_compact_view_chat' in self.old_values and \ if 'always_compact_view_chat' in self.old_values and \
self.old_values['always_compact_view_chat'] != 'False': self.old_values['always_compact_view_chat'] != 'False':
gajim.config.set('always_hide_chat_buttons', True) app.config.set('always_hide_chat_buttons', True)
if 'always_compact_view_gc' in self.old_values and \ if 'always_compact_view_gc' in self.old_values and \
self.old_values['always_compact_view_gc'] != 'False': self.old_values['always_compact_view_gc'] != 'False':
gajim.config.set('always_hide_groupchat_buttons', True) app.config.set('always_hide_groupchat_buttons', True)
self.update_ft_proxies(to_remove=['proxy65.jabber.autocom.pl', self.update_ft_proxies(to_remove=['proxy65.jabber.autocom.pl',
'proxy65.jabber.ccc.de'], to_add=['transfer.jabber.freenet.de']) 'proxy65.jabber.ccc.de'], to_add=['transfer.jabber.freenet.de'])
# create unread_messages table if needed # create unread_messages table if needed
self.assert_unread_msgs_table_exists() self.assert_unread_msgs_table_exists()
gajim.config.set('version', '0.10') app.config.set('version', '0.10')
def update_config_to_01011(self): def update_config_to_01011(self):
if 'print_status_in_muc' in self.old_values and \ if 'print_status_in_muc' in self.old_values and \
self.old_values['print_status_in_muc'] in (True, False): self.old_values['print_status_in_muc'] in (True, False):
gajim.config.set('print_status_in_muc', 'in_and_out') app.config.set('print_status_in_muc', 'in_and_out')
gajim.config.set('version', '0.10.1.1') app.config.set('version', '0.10.1.1')
def update_config_to_01012(self): def update_config_to_01012(self):
# See [6456] # See [6456]
if 'emoticons_theme' in self.old_values and \ if 'emoticons_theme' in self.old_values and \
self.old_values['emoticons_theme'] == 'Disabled': self.old_values['emoticons_theme'] == 'Disabled':
gajim.config.set('emoticons_theme', '') app.config.set('emoticons_theme', '')
gajim.config.set('version', '0.10.1.2') app.config.set('version', '0.10.1.2')
def update_config_to_01013(self): def update_config_to_01013(self):
""" """
@ -396,7 +396,7 @@ class OptionsParser:
except sqlite.OperationalError: except sqlite.OperationalError:
pass pass
con.close() con.close()
gajim.config.set('version', '0.10.1.3') app.config.set('version', '0.10.1.3')
def update_config_to_01014(self): def update_config_to_01014(self):
""" """
@ -422,7 +422,7 @@ class OptionsParser:
except Exception: except Exception:
pass pass
con.close() con.close()
gajim.config.set('version', '0.10.1.4') app.config.set('version', '0.10.1.4')
def update_config_to_01015(self): def update_config_to_01015(self):
""" """
@ -443,7 +443,7 @@ class OptionsParser:
con.commit() con.commit()
cur.close() # remove this in 2007 [pysqlite old versions need this] cur.close() # remove this in 2007 [pysqlite old versions need this]
con.close() con.close()
gajim.config.set('version', '0.10.1.5') app.config.set('version', '0.10.1.5')
def update_config_to_01016(self): def update_config_to_01016(self):
""" """
@ -452,46 +452,46 @@ class OptionsParser:
""" """
if 'notify_on_all_muc_messages' in self.old_values and \ if 'notify_on_all_muc_messages' in self.old_values and \
self.old_values['notify_on_all_muc_messages'] == 'False' and \ self.old_values['notify_on_all_muc_messages'] == 'False' and \
gajim.config.get_per('soundevents', 'muc_message_received', 'enabled'): app.config.get_per('soundevents', 'muc_message_received', 'enabled'):
gajim.config.set_per('soundevents',\ app.config.set_per('soundevents',\
'muc_message_received', 'enabled', False) 'muc_message_received', 'enabled', False)
gajim.config.set('version', '0.10.1.6') app.config.set('version', '0.10.1.6')
def update_config_to_01017(self): def update_config_to_01017(self):
""" """
trayicon_notification_on_new_messages -> trayicon_notification_on_events trayicon_notification_on_new_messages -> trayicon_notification_on_events
""" """
if 'trayicon_notification_on_new_messages' in self.old_values: if 'trayicon_notification_on_new_messages' in self.old_values:
gajim.config.set('trayicon_notification_on_events', app.config.set('trayicon_notification_on_events',
self.old_values['trayicon_notification_on_new_messages']) self.old_values['trayicon_notification_on_new_messages'])
gajim.config.set('version', '0.10.1.7') app.config.set('version', '0.10.1.7')
def update_config_to_01018(self): def update_config_to_01018(self):
""" """
chat_state_notifications -> outgoing_chat_state_notifications chat_state_notifications -> outgoing_chat_state_notifications
""" """
if 'chat_state_notifications' in self.old_values: if 'chat_state_notifications' in self.old_values:
gajim.config.set('outgoing_chat_state_notifications', app.config.set('outgoing_chat_state_notifications',
self.old_values['chat_state_notifications']) self.old_values['chat_state_notifications'])
gajim.config.set('version', '0.10.1.8') app.config.set('version', '0.10.1.8')
def update_config_to_01101(self): def update_config_to_01101(self):
""" """
Fill time_stamp from before_time and after_time Fill time_stamp from before_time and after_time
""" """
if 'before_time' in self.old_values: if 'before_time' in self.old_values:
gajim.config.set('time_stamp', '%s%%X%s ' % ( app.config.set('time_stamp', '%s%%X%s ' % (
self.old_values['before_time'], self.old_values['after_time'])) self.old_values['before_time'], self.old_values['after_time']))
gajim.config.set('version', '0.11.0.1') app.config.set('version', '0.11.0.1')
def update_config_to_01102(self): def update_config_to_01102(self):
""" """
Fill time_stamp from before_time and after_time Fill time_stamp from before_time and after_time
""" """
if 'ft_override_host_to_send' in self.old_values: if 'ft_override_host_to_send' in self.old_values:
gajim.config.set('ft_add_hosts_to_send', app.config.set('ft_add_hosts_to_send',
self.old_values['ft_override_host_to_send']) self.old_values['ft_override_host_to_send'])
gajim.config.set('version', '0.11.0.2') app.config.set('version', '0.11.0.2')
def update_config_to_01111(self): def update_config_to_01111(self):
""" """
@ -499,9 +499,9 @@ class OptionsParser:
""" """
if 'always_hide_groupchat_buttons' in self.old_values and \ if 'always_hide_groupchat_buttons' in self.old_values and \
'always_hide_chat_buttons' in self.old_values: 'always_hide_chat_buttons' in self.old_values:
gajim.config.set('compact_view', self.old_values['always_hide_groupchat_buttons'] and \ app.config.set('compact_view', self.old_values['always_hide_groupchat_buttons'] and \
self.old_values['always_hide_chat_buttons']) self.old_values['always_hide_chat_buttons'])
gajim.config.set('version', '0.11.1.1') app.config.set('version', '0.11.1.1')
def update_config_to_01112(self): def update_config_to_01112(self):
""" """
@ -509,8 +509,8 @@ class OptionsParser:
""" """
if 'roster_theme' in self.old_values and \ if 'roster_theme' in self.old_values and \
self.old_values['roster_theme'] == 'gtk+': self.old_values['roster_theme'] == 'gtk+':
gajim.config.set('roster_theme', _('default')) app.config.set('roster_theme', _('default'))
gajim.config.set('version', '0.11.1.2') app.config.set('version', '0.11.1.2')
def update_config_to_01113(self): def update_config_to_01113(self):
# copy&pasted from update_config_to_01013, possibly 'FIXME see #2812' applies too # copy&pasted from update_config_to_01013, possibly 'FIXME see #2812' applies too
@ -534,7 +534,7 @@ class OptionsParser:
except sqlite.OperationalError: except sqlite.OperationalError:
pass pass
con.close() con.close()
gajim.config.set('version', '0.11.1.3') app.config.set('version', '0.11.1.3')
def update_config_to_01114(self): def update_config_to_01114(self):
# add default theme if it doesn't exist # add default theme if it doesn't exist
@ -544,20 +544,20 @@ class OptionsParser:
'contactfontattrs', 'bannertextcolor', 'bannerbgcolor', 'bannerfont', 'contactfontattrs', 'bannertextcolor', 'bannerbgcolor', 'bannerfont',
'bannerfontattrs'] 'bannerfontattrs']
theme_name = _('default') theme_name = _('default')
if theme_name not in gajim.config.get_per('themes'): if theme_name not in app.config.get_per('themes'):
gajim.config.add_per('themes', theme_name) app.config.add_per('themes', theme_name)
if gajim.config.get_per('themes', 'gtk+'): if app.config.get_per('themes', 'gtk+'):
# copy from old gtk+ theme # copy from old gtk+ theme
for o in d: for o in d:
val = gajim.config.get_per('themes', 'gtk+', o) val = app.config.get_per('themes', 'gtk+', o)
gajim.config.set_per('themes', theme_name, o, val) app.config.set_per('themes', theme_name, o, val)
gajim.config.del_per('themes', 'gtk+') app.config.del_per('themes', 'gtk+')
else: else:
# copy from default theme # copy from default theme
theme = gajim.config.themes_default[theme_name] theme = app.config.themes_default[theme_name]
for o in d: for o in d:
gajim.config.set_per('themes', theme_name, o, theme[d.index(o)]) app.config.set_per('themes', theme_name, o, theme[d.index(o)])
gajim.config.set('version', '0.11.1.4') app.config.set('version', '0.11.1.4')
def update_config_to_01115(self): def update_config_to_01115(self):
# copy&pasted from update_config_to_01013, possibly 'FIXME see #2812' applies too # copy&pasted from update_config_to_01013, possibly 'FIXME see #2812' applies too
@ -576,7 +576,7 @@ class OptionsParser:
except sqlite.OperationalError: except sqlite.OperationalError:
pass pass
con.close() con.close()
gajim.config.set('version', '0.11.1.5') app.config.set('version', '0.11.1.5')
def update_config_to_01121(self): def update_config_to_01121(self):
# remove old unencrypted secrets file # remove old unencrypted secrets file
@ -589,7 +589,7 @@ class OptionsParser:
if os.path.exists(old_file): if os.path.exists(old_file):
os.remove(old_file) os.remove(old_file)
gajim.config.set('version', '0.11.2.1') app.config.set('version', '0.11.2.1')
def update_config_to_01141(self): def update_config_to_01141(self):
back = os.getcwd() back = os.getcwd()
@ -612,25 +612,25 @@ class OptionsParser:
except sqlite.OperationalError: except sqlite.OperationalError:
pass pass
con.close() con.close()
gajim.config.set('version', '0.11.4.1') app.config.set('version', '0.11.4.1')
def update_config_to_01142(self): def update_config_to_01142(self):
""" """
next_message_received sound event is splittedin 2 events next_message_received sound event is splittedin 2 events
""" """
gajim.config.add_per('soundevents', 'next_message_received_focused') app.config.add_per('soundevents', 'next_message_received_focused')
gajim.config.add_per('soundevents', 'next_message_received_unfocused') app.config.add_per('soundevents', 'next_message_received_unfocused')
if gajim.config.get_per('soundevents', 'next_message_received'): if app.config.get_per('soundevents', 'next_message_received'):
enabled = gajim.config.get_per('soundevents', 'next_message_received', enabled = app.config.get_per('soundevents', 'next_message_received',
'enabled') 'enabled')
path = gajim.config.get_per('soundevents', 'next_message_received', path = app.config.get_per('soundevents', 'next_message_received',
'path') 'path')
gajim.config.del_per('soundevents', 'next_message_received') app.config.del_per('soundevents', 'next_message_received')
gajim.config.set_per('soundevents', 'next_message_received_focused', app.config.set_per('soundevents', 'next_message_received_focused',
'enabled', enabled) 'enabled', enabled)
gajim.config.set_per('soundevents', 'next_message_received_focused', app.config.set_per('soundevents', 'next_message_received_focused',
'path', path) 'path', path)
gajim.config.set('version', '0.11.1.2') app.config.set('version', '0.11.1.2')
def update_config_to_01143(self): def update_config_to_01143(self):
back = os.getcwd() back = os.getcwd()
@ -651,7 +651,7 @@ class OptionsParser:
except sqlite.OperationalError: except sqlite.OperationalError:
pass pass
con.close() con.close()
gajim.config.set('version', '0.11.4.3') app.config.set('version', '0.11.4.3')
def update_config_to_01144(self): def update_config_to_01144(self):
back = os.getcwd() back = os.getcwd()
@ -678,71 +678,71 @@ class OptionsParser:
except sqlite.OperationalError: except sqlite.OperationalError:
pass pass
con.close() con.close()
gajim.config.set('version', '0.11.4.4') app.config.set('version', '0.11.4.4')
def update_config_to_01201(self): def update_config_to_01201(self):
if 'uri_schemes' in self.old_values: if 'uri_schemes' in self.old_values:
new_values = self.old_values['uri_schemes'].replace(' mailto', '').\ new_values = self.old_values['uri_schemes'].replace(' mailto', '').\
replace(' xmpp', '') replace(' xmpp', '')
gajim.config.set('uri_schemes', new_values) app.config.set('uri_schemes', new_values)
gajim.config.set('version', '0.12.0.1') app.config.set('version', '0.12.0.1')
def update_config_to_01211(self): def update_config_to_01211(self):
if 'trayicon' in self.old_values: if 'trayicon' in self.old_values:
if self.old_values['trayicon'] == 'False': if self.old_values['trayicon'] == 'False':
gajim.config.set('trayicon', 'never') app.config.set('trayicon', 'never')
else: else:
gajim.config.set('trayicon', 'always') app.config.set('trayicon', 'always')
gajim.config.set('version', '0.12.1.1') app.config.set('version', '0.12.1.1')
def update_config_to_01212(self): def update_config_to_01212(self):
for opt in ('ignore_unknown_contacts', 'send_os_info', for opt in ('ignore_unknown_contacts', 'send_os_info',
'log_encrypted_sessions'): 'log_encrypted_sessions'):
if opt in self.old_values: if opt in self.old_values:
val = self.old_values[opt] val = self.old_values[opt]
for account in gajim.config.get_per('accounts'): for account in app.config.get_per('accounts'):
gajim.config.set_per('accounts', account, opt, val) app.config.set_per('accounts', account, opt, val)
gajim.config.set('version', '0.12.1.2') app.config.set('version', '0.12.1.2')
def update_config_to_01213(self): def update_config_to_01213(self):
msgs = gajim.config.statusmsg_default msgs = app.config.statusmsg_default
for msg_name in gajim.config.get_per('statusmsg'): for msg_name in app.config.get_per('statusmsg'):
if msg_name in msgs: if msg_name in msgs:
gajim.config.set_per('statusmsg', msg_name, 'activity', app.config.set_per('statusmsg', msg_name, 'activity',
msgs[msg_name][1]) msgs[msg_name][1])
gajim.config.set_per('statusmsg', msg_name, 'subactivity', app.config.set_per('statusmsg', msg_name, 'subactivity',
msgs[msg_name][2]) msgs[msg_name][2])
gajim.config.set_per('statusmsg', msg_name, 'activity_text', app.config.set_per('statusmsg', msg_name, 'activity_text',
msgs[msg_name][3]) msgs[msg_name][3])
gajim.config.set_per('statusmsg', msg_name, 'mood', app.config.set_per('statusmsg', msg_name, 'mood',
msgs[msg_name][4]) msgs[msg_name][4])
gajim.config.set_per('statusmsg', msg_name, 'mood_text', app.config.set_per('statusmsg', msg_name, 'mood_text',
msgs[msg_name][5]) msgs[msg_name][5])
gajim.config.set('version', '0.12.1.3') app.config.set('version', '0.12.1.3')
def update_config_to_01214(self): def update_config_to_01214(self):
for status in ['online', 'chat', 'away', 'xa', 'dnd', 'invisible', for status in ['online', 'chat', 'away', 'xa', 'dnd', 'invisible',
'offline']: 'offline']:
if 'last_status_msg_' + status in self.old_values: if 'last_status_msg_' + status in self.old_values:
gajim.config.add_per('statusmsg', '_last_' + status) app.config.add_per('statusmsg', '_last_' + status)
gajim.config.set_per('statusmsg', '_last_' + status, 'message', app.config.set_per('statusmsg', '_last_' + status, 'message',
self.old_values['last_status_msg_' + status]) self.old_values['last_status_msg_' + status])
gajim.config.set('version', '0.12.1.4') app.config.set('version', '0.12.1.4')
def update_config_to_01215(self): def update_config_to_01215(self):
""" """
Remove hardcoded ../data/sounds from config Remove hardcoded ../data/sounds from config
""" """
dirs = ['../data', gajim.gajimpaths.data_root, gajim.DATA_DIR] dirs = ['../data', app.gajimpaths.data_root, app.DATA_DIR]
if os.name != 'nt': if os.name != 'nt':
dirs.append(os.path.expanduser('~/.gajim')) dirs.append(os.path.expanduser('~/.gajim'))
for evt in gajim.config.get_per('soundevents'): for evt in app.config.get_per('soundevents'):
path = gajim.config.get_per('soundevents', evt, 'path') path = app.config.get_per('soundevents', evt, 'path')
# absolute and relative passes are necessary # absolute and relative passes are necessary
path = helpers.strip_soundfile_path(path, dirs, abs=False) path = helpers.strip_soundfile_path(path, dirs, abs=False)
path = helpers.strip_soundfile_path(path, dirs, abs=True) path = helpers.strip_soundfile_path(path, dirs, abs=True)
gajim.config.set_per('soundevents', evt, 'path', path) app.config.set_per('soundevents', evt, 'path', path)
gajim.config.set('version', '0.12.1.5') app.config.set('version', '0.12.1.5')
def update_config_to_01231(self): def update_config_to_01231(self):
back = os.getcwd() back = os.getcwd()
@ -774,7 +774,7 @@ class OptionsParser:
except sqlite.OperationalError: except sqlite.OperationalError:
pass pass
con.close() con.close()
gajim.config.set('version', '0.12.3.1') app.config.set('version', '0.12.3.1')
def update_config_from_0125(self): def update_config_from_0125(self):
# All those functions need to be called for 0.12.5 to 0.13 transition # All those functions need to be called for 0.12.5 to 0.13 transition
@ -801,24 +801,24 @@ class OptionsParser:
except sqlite.OperationalError: except sqlite.OperationalError:
pass pass
con.close() con.close()
gajim.config.set('version', '0.12.5.1') app.config.set('version', '0.12.5.1')
def update_config_to_01252(self): def update_config_to_01252(self):
if 'alwaysauth' in self.old_values: if 'alwaysauth' in self.old_values:
val = self.old_values['alwaysauth'] val = self.old_values['alwaysauth']
for account in gajim.config.get_per('accounts'): for account in app.config.get_per('accounts'):
gajim.config.set_per('accounts', account, 'autoauth', val) app.config.set_per('accounts', account, 'autoauth', val)
gajim.config.set('version', '0.12.5.2') app.config.set('version', '0.12.5.2')
def update_config_to_01253(self): def update_config_to_01253(self):
if 'enable_zeroconf' in self.old_values: if 'enable_zeroconf' in self.old_values:
val = self.old_values['enable_zeroconf'] val = self.old_values['enable_zeroconf']
for account in gajim.config.get_per('accounts'): for account in app.config.get_per('accounts'):
if gajim.config.get_per('accounts', account, 'is_zeroconf'): if app.config.get_per('accounts', account, 'is_zeroconf'):
gajim.config.set_per('accounts', account, 'active', val) app.config.set_per('accounts', account, 'active', val)
else: else:
gajim.config.set_per('accounts', account, 'active', True) app.config.set_per('accounts', account, 'active', True)
gajim.config.set('version', '0.12.5.3') app.config.set('version', '0.12.5.3')
def update_config_to_01254(self): def update_config_to_01254(self):
vals = {'inmsgcolor': ['#a34526', '#a40000'], vals = {'inmsgcolor': ['#a34526', '#a40000'],
@ -833,8 +833,8 @@ class OptionsParser:
val = self.old_values[c] val = self.old_values[c]
if val == vals[c][0]: if val == vals[c][0]:
# We didn't change default value, so update it with new default # We didn't change default value, so update it with new default
gajim.config.set(c, vals[c][1]) app.config.set(c, vals[c][1])
gajim.config.set('version', '0.12.5.4') app.config.set('version', '0.12.5.4')
def update_config_to_01255(self): def update_config_to_01255(self):
vals = {'statusmsgcolor': ['#73d216', '#4e9a06'], vals = {'statusmsgcolor': ['#73d216', '#4e9a06'],
@ -845,8 +845,8 @@ class OptionsParser:
val = self.old_values[c] val = self.old_values[c]
if val == vals[c][0]: if val == vals[c][0]:
# We didn't change default value, so update it with new default # We didn't change default value, so update it with new default
gajim.config.set(c, vals[c][1]) app.config.set(c, vals[c][1])
gajim.config.set('version', '0.12.5.5') app.config.set('version', '0.12.5.5')
def update_config_to_01256(self): def update_config_to_01256(self):
vals = {'gc_nicknames_colors': ['#4e9a06:#f57900:#ce5c00:#3465a4:#204a87:#75507b:#5c3566:#c17d11:#8f5902:#ef2929:#cc0000:#a40000', '#f57900:#ce5c00:#204a87:#75507b:#5c3566:#c17d11:#8f5902:#ef2929:#cc0000:#a40000']} vals = {'gc_nicknames_colors': ['#4e9a06:#f57900:#ce5c00:#3465a4:#204a87:#75507b:#5c3566:#c17d11:#8f5902:#ef2929:#cc0000:#a40000', '#f57900:#ce5c00:#204a87:#75507b:#5c3566:#c17d11:#8f5902:#ef2929:#cc0000:#a40000']}
@ -856,22 +856,22 @@ class OptionsParser:
val = self.old_values[c] val = self.old_values[c]
if val == vals[c][0]: if val == vals[c][0]:
# We didn't change default value, so update it with new default # We didn't change default value, so update it with new default
gajim.config.set(c, vals[c][1]) app.config.set(c, vals[c][1])
gajim.config.set('version', '0.12.5.6') app.config.set('version', '0.12.5.6')
def update_config_to_01257(self): def update_config_to_01257(self):
if 'iconset' in self.old_values: if 'iconset' in self.old_values:
if self.old_values['iconset'] in ('nuvola', 'crystal', 'gossip', if self.old_values['iconset'] in ('nuvola', 'crystal', 'gossip',
'simplebulb', 'stellar'): 'simplebulb', 'stellar'):
gajim.config.set('iconset', gajim.config.DEFAULT_ICONSET) app.config.set('iconset', app.config.DEFAULT_ICONSET)
gajim.config.set('version', '0.12.5.7') app.config.set('version', '0.12.5.7')
def update_config_to_01258(self): def update_config_to_01258(self):
self.update_ft_proxies(to_remove=['proxy65.talkonaut.com', self.update_ft_proxies(to_remove=['proxy65.talkonaut.com',
'proxy.jabber.org', 'proxy.netlab.cz', 'transfer.jabber.freenet.de', 'proxy.jabber.org', 'proxy.netlab.cz', 'transfer.jabber.freenet.de',
'proxy.jabber.cd.chalmers.se'], to_add=['proxy.eu.jabber.org', 'proxy.jabber.cd.chalmers.se'], to_add=['proxy.eu.jabber.org',
'proxy.jabber.ru', 'proxy.jabbim.cz']) 'proxy.jabber.ru', 'proxy.jabbim.cz'])
gajim.config.set('version', '0.12.5.8') app.config.set('version', '0.12.5.8')
def update_config_to_013100(self): def update_config_to_013100(self):
back = os.getcwd() back = os.getcwd()
@ -890,7 +890,7 @@ class OptionsParser:
except sqlite.OperationalError: except sqlite.OperationalError:
pass pass
con.close() con.close()
gajim.config.set('version', '0.13.10.0') app.config.set('version', '0.13.10.0')
def update_config_to_013101(self): def update_config_to_013101(self):
back = os.getcwd() back = os.getcwd()
@ -911,36 +911,36 @@ class OptionsParser:
except sqlite.OperationalError: except sqlite.OperationalError:
pass pass
con.close() con.close()
gajim.config.set('version', '0.13.10.1') app.config.set('version', '0.13.10.1')
def update_config_to_013901(self): def update_config_to_013901(self):
schemes = 'aaa:// aaas:// acap:// cap:// cid: crid:// data: dav: dict:// dns: fax: file:/ ftp:// geo: go: gopher:// h323: http:// https:// iax: icap:// im: imap:// info: ipp:// iris: iris.beep: iris.xpc: iris.xpcs: iris.lwz: ldap:// mid: modem: msrp:// msrps:// mtqp:// mupdate:// news: nfs:// nntp:// opaquelocktoken: pop:// pres: prospero:// rtsp:// service: shttp:// sip: sips: sms: snmp:// soap.beep:// soap.beeps:// tag: tel: telnet:// tftp:// thismessage:/ tip:// tv: urn:// vemmi:// xmlrpc.beep:// xmlrpc.beeps:// z39.50r:// z39.50s:// about: apt: cvs:// daap:// ed2k:// feed: fish:// git:// iax2: irc:// ircs:// ldaps:// magnet: mms:// rsync:// ssh:// svn:// sftp:// smb:// webcal://' schemes = 'aaa:// aaas:// acap:// cap:// cid: crid:// data: dav: dict:// dns: fax: file:/ ftp:// geo: go: gopher:// h323: http:// https:// iax: icap:// im: imap:// info: ipp:// iris: iris.beep: iris.xpc: iris.xpcs: iris.lwz: ldap:// mid: modem: msrp:// msrps:// mtqp:// mupdate:// news: nfs:// nntp:// opaquelocktoken: pop:// pres: prospero:// rtsp:// service: shttp:// sip: sips: sms: snmp:// soap.beep:// soap.beeps:// tag: tel: telnet:// tftp:// thismessage:/ tip:// tv: urn:// vemmi:// xmlrpc.beep:// xmlrpc.beeps:// z39.50r:// z39.50s:// about: apt: cvs:// daap:// ed2k:// feed: fish:// git:// iax2: irc:// ircs:// ldaps:// magnet: mms:// rsync:// ssh:// svn:// sftp:// smb:// webcal://'
gajim.config.set('uri_schemes', schemes) app.config.set('uri_schemes', schemes)
gajim.config.set('version', '0.13.90.1') app.config.set('version', '0.13.90.1')
def update_config_to_01401(self): def update_config_to_01401(self):
if 'autodetect_browser_mailer' not in self.old_values or 'openwith' \ if 'autodetect_browser_mailer' not in self.old_values or 'openwith' \
not in self.old_values or \ not in self.old_values or \
(self.old_values['autodetect_browser_mailer'] == False and \ (self.old_values['autodetect_browser_mailer'] == False and \
self.old_values['openwith'] != 'custom'): self.old_values['openwith'] != 'custom'):
gajim.config.set('autodetect_browser_mailer', True) app.config.set('autodetect_browser_mailer', True)
gajim.config.set('openwith', gajim.config.DEFAULT_OPENWITH) app.config.set('openwith', app.config.DEFAULT_OPENWITH)
gajim.config.set('version', '0.14.0.1') app.config.set('version', '0.14.0.1')
def update_config_to_014900(self): def update_config_to_014900(self):
if 'use_stun_server' in self.old_values and self.old_values[ if 'use_stun_server' in self.old_values and self.old_values[
'use_stun_server'] and not self.old_values['stun_server']: 'use_stun_server'] and not self.old_values['stun_server']:
gajim.config.set('use_stun_server', False) app.config.set('use_stun_server', False)
if os.name == 'nt': if os.name == 'nt':
gajim.config.set('autodetect_browser_mailer', True) app.config.set('autodetect_browser_mailer', True)
def update_config_to_01601(self): def update_config_to_01601(self):
if 'last_mam_id' in self.old_values: if 'last_mam_id' in self.old_values:
last_mam_id = self.old_values['last_mam_id'] last_mam_id = self.old_values['last_mam_id']
for account in gajim.config.get_per('accounts'): for account in app.config.get_per('accounts'):
gajim.config.set_per('accounts', account, 'last_mam_id', app.config.set_per('accounts', account, 'last_mam_id',
last_mam_id) last_mam_id)
gajim.config.set('version', '0.16.0.1') app.config.set('version', '0.16.0.1')
def update_config_to_01641(self): def update_config_to_01641(self):
for account in self.old_values['accounts'].keys(): for account in self.old_values['accounts'].keys():
@ -948,21 +948,21 @@ class OptionsParser:
'connection_types'].split() 'connection_types'].split()
if 'plain' in connection_types and len(connection_types) > 1: if 'plain' in connection_types and len(connection_types) > 1:
connection_types.remove('plain') connection_types.remove('plain')
gajim.config.set_per('accounts', account, 'connection_types', app.config.set_per('accounts', account, 'connection_types',
' '.join(connection_types)) ' '.join(connection_types))
gajim.config.set('version', '0.16.4.1') app.config.set('version', '0.16.4.1')
def update_config_to_016101(self): def update_config_to_016101(self):
if 'video_input_device' in self.old_values: if 'video_input_device' in self.old_values:
if self.old_values['video_input_device'] == 'autovideosrc ! videoscale ! ffmpegcolorspace': if self.old_values['video_input_device'] == 'autovideosrc ! videoscale ! ffmpegcolorspace':
gajim.config.set('video_input_device', 'autovideosrc') app.config.set('video_input_device', 'autovideosrc')
if self.old_values['video_input_device'] == 'videotestsrc is-live=true ! video/x-raw-yuv,framerate=10/1': if self.old_values['video_input_device'] == 'videotestsrc is-live=true ! video/x-raw-yuv,framerate=10/1':
gajim.config.set('video_input_device', 'videotestsrc is-live=true ! video/x-raw,framerate=10/1') app.config.set('video_input_device', 'videotestsrc is-live=true ! video/x-raw,framerate=10/1')
gajim.config.set('version', '0.16.10.1') app.config.set('version', '0.16.10.1')
def update_config_to_016102(self): def update_config_to_016102(self):
for account in self.old_values['accounts'].keys(): for account in self.old_values['accounts'].keys():
gajim.config.del_per('accounts', account, 'minimized_gc') app.config.del_per('accounts', account, 'minimized_gc')
back = os.getcwd() back = os.getcwd()
os.chdir(logger.LOG_DB_FOLDER) os.chdir(logger.LOG_DB_FOLDER)
@ -980,7 +980,7 @@ class OptionsParser:
pass pass
con.close() con.close()
gajim.config.set('version', '0.16.10.2') app.config.set('version', '0.16.10.2')
def update_config_to_016103(self): def update_config_to_016103(self):
back = os.getcwd() back = os.getcwd()
@ -1002,13 +1002,13 @@ class OptionsParser:
except sqlite.OperationalError: except sqlite.OperationalError:
pass pass
con.close() con.close()
gajim.config.set('version', '0.16.10.3') app.config.set('version', '0.16.10.3')
def update_config_to_016104(self): def update_config_to_016104(self):
gajim.config.set('emoticons_theme', 'noto-emoticons') app.config.set('emoticons_theme', 'noto-emoticons')
gajim.config.set('version', '0.16.10.4') app.config.set('version', '0.16.10.4')
def update_config_to_016105(self): def update_config_to_016105(self):
gajim.config.set('muc_restore_timeout', -1) app.config.set('muc_restore_timeout', -1)
gajim.config.set('restore_timeout', -1) app.config.set('restore_timeout', -1)
gajim.config.set('version', '0.16.10.5') app.config.set('version', '0.16.10.5')

View File

@ -27,7 +27,7 @@
import os import os
import logging import logging
import gi import gi
from gajim.common import gajim from gajim.common import app
__all__ = ['get_password', 'save_password'] __all__ = ['get_password', 'save_password']
@ -69,15 +69,15 @@ class LibSecretPasswordStorage(PasswordStorage):
) )
def get_password(self, account_name): def get_password(self, account_name):
server = gajim.config.get_per('accounts', account_name, 'hostname') server = app.config.get_per('accounts', account_name, 'hostname')
user = gajim.config.get_per('accounts', account_name, 'name') user = app.config.get_per('accounts', account_name, 'name')
password = self.Secret.password_lookup_sync(self.GAJIM_SCHEMA, password = self.Secret.password_lookup_sync(self.GAJIM_SCHEMA,
{'user': user, 'server': server, 'protocol': 'xmpp'}, None) {'user': user, 'server': server, 'protocol': 'xmpp'}, None)
return password return password
def save_password(self, account_name, password, update=True): def save_password(self, account_name, password, update=True):
server = gajim.config.get_per('accounts', account_name, 'hostname') server = app.config.get_per('accounts', account_name, 'hostname')
user = gajim.config.get_per('accounts', account_name, 'name') user = app.config.get_per('accounts', account_name, 'name')
display_name = _('XMPP account %s@%s') % (user, server) display_name = _('XMPP account %s@%s') % (user, server)
attributes = {'user': user, 'server': server, 'protocol': 'xmpp'} attributes = {'user': user, 'server': server, 'protocol': 'xmpp'}
return self.Secret.password_store_sync(self.GAJIM_SCHEMA, attributes, return self.Secret.password_store_sync(self.GAJIM_SCHEMA, attributes,
@ -123,7 +123,7 @@ class PasswordStorageManager(PasswordStorage):
""" """
# TODO: handle disappearing backends # TODO: handle disappearing backends
if gajim.config.get('use_keyring'): if app.config.get('use_keyring'):
if os.name == 'nt' and keyring: if os.name == 'nt' and keyring:
self.winsecret = SecretWindowsPasswordStorage() self.winsecret = SecretWindowsPasswordStorage()
else: else:
@ -133,7 +133,7 @@ class PasswordStorageManager(PasswordStorage):
log.debug("Could not connect to libsecret: %s" % e) log.debug("Could not connect to libsecret: %s" % e)
def get_password(self, account_name): def get_password(self, account_name):
pw = gajim.config.get_per('accounts', account_name, 'password') pw = app.config.get_per('accounts', account_name, 'password')
if not pw: if not pw:
return pw return pw
if pw.startswith(LibSecretPasswordStorage.identifier) and \ if pw.startswith(LibSecretPasswordStorage.identifier) and \
@ -156,15 +156,15 @@ class PasswordStorageManager(PasswordStorage):
def save_password(self, account_name, password): def save_password(self, account_name, password):
if self.preferred_backend: if self.preferred_backend:
if self.preferred_backend.save_password(account_name, password): if self.preferred_backend.save_password(account_name, password):
gajim.config.set_per('accounts', account_name, 'password', app.config.set_per('accounts', account_name, 'password',
self.preferred_backend.identifier) self.preferred_backend.identifier)
if account_name in gajim.connections: if account_name in app.connections:
gajim.connections[account_name].password = password app.connections[account_name].password = password
return True return True
gajim.config.set_per('accounts', account_name, 'password', password) app.config.set_per('accounts', account_name, 'password', password)
if account_name in gajim.connections: if account_name in app.connections:
gajim.connections[account_name].password = password app.connections[account_name].password = password
return True return True
def set_preferred_backend(self): def set_preferred_backend(self):
@ -192,6 +192,6 @@ def get_password(account_name):
return get_storage().get_password(account_name) return get_storage().get_password(account_name)
def save_password(account_name, password): def save_password(account_name, password):
if account_name in gajim.connections: if account_name in app.connections:
gajim.connections[account_name].set_password(password) app.connections[account_name].set_password(password)
return get_storage().save_password(account_name, password) return get_storage().save_password(account_name, password)

View File

@ -221,7 +221,7 @@ import logging
log = logging.getLogger('gajim.c.pep') log = logging.getLogger('gajim.c.pep')
import nbxmpp import nbxmpp
from gajim.common import gajim from gajim.common import app
class AbstractPEP(object): class AbstractPEP(object):
@ -242,7 +242,7 @@ class AbstractPEP(object):
self._pep_specific_data, self._retracted = self._extract_info(items) self._pep_specific_data, self._retracted = self._extract_info(items)
self._update_contacts(jid, account) self._update_contacts(jid, account)
if jid == gajim.get_jid_from_account(account): if jid == app.get_jid_from_account(account):
self._update_account(account) self._update_account(account)
def _extract_info(self, items): def _extract_info(self, items):
@ -250,7 +250,7 @@ class AbstractPEP(object):
raise NotImplementedError raise NotImplementedError
def _update_contacts(self, jid, account): def _update_contacts(self, jid, account):
for contact in gajim.contacts.get_contacts(account, jid): for contact in app.contacts.get_contacts(account, jid):
if self._retracted: if self._retracted:
if self.type_ in contact.pep: if self.type_ in contact.pep:
del contact.pep[self.type_] del contact.pep[self.type_]
@ -258,7 +258,7 @@ class AbstractPEP(object):
contact.pep[self.type_] = self contact.pep[self.type_] = self
def _update_account(self, account): def _update_account(self, account):
acc = gajim.connections[account] acc = app.connections[account]
if self._retracted: if self._retracted:
if self.type_ in acc.pep: if self.type_ in acc.pep:
del acc.pep[self.type_] del acc.pep[self.type_]
@ -417,14 +417,14 @@ class UserNicknamePEP(AbstractPEP):
def _update_contacts(self, jid, account): def _update_contacts(self, jid, account):
nick = '' if self._retracted else self._pep_specific_data nick = '' if self._retracted else self._pep_specific_data
for contact in gajim.contacts.get_contacts(account, jid): for contact in app.contacts.get_contacts(account, jid):
contact.contact_name = nick contact.contact_name = nick
def _update_account(self, account): def _update_account(self, account):
if self._retracted: if self._retracted:
gajim.nicks[account] = gajim.config.get_per('accounts', account, 'name') app.nicks[account] = app.config.get_per('accounts', account, 'name')
else: else:
gajim.nicks[account] = self._pep_specific_data app.nicks[account] = self._pep_specific_data
class UserLocationPEP(AbstractPEP): class UserLocationPEP(AbstractPEP):
@ -450,7 +450,7 @@ class UserLocationPEP(AbstractPEP):
def _update_account(self, account): def _update_account(self, account):
AbstractPEP._update_account(self, account) AbstractPEP._update_account(self, account)
con = gajim.connections[account].location_info = \ con = app.connections[account].location_info = \
self._pep_specific_data self._pep_specific_data
def asMarkupText(self): def asMarkupText(self):

View File

@ -34,7 +34,7 @@ from gi.repository import GLib
import time import time
import nbxmpp import nbxmpp
from gajim.common import gajim from gajim.common import app
from gajim.common import helpers from gajim.common import helpers
from gajim.common import ged from gajim.common import ged
from gajim.common import jingle_xtls from gajim.common import jingle_xtls
@ -79,15 +79,15 @@ def is_transfer_stopped(file_props):
class ConnectionBytestream: class ConnectionBytestream:
def __init__(self): def __init__(self):
gajim.ged.register_event_handler('file-request-received', ged.GUI1, app.ged.register_event_handler('file-request-received', ged.GUI1,
self._nec_file_request_received) self._nec_file_request_received)
def cleanup(self): def cleanup(self):
gajim.ged.remove_event_handler('file-request-received', ged.GUI1, app.ged.remove_event_handler('file-request-received', ged.GUI1,
self._nec_file_request_received) self._nec_file_request_received)
def _ft_get_our_jid(self): def _ft_get_our_jid(self):
our_jid = gajim.get_jid_from_account(self.name) our_jid = app.get_jid_from_account(self.name)
resource = self.server_resource resource = self.server_resource
return our_jid + '/' + resource return our_jid + '/' + resource
@ -156,7 +156,7 @@ class ConnectionBytestream:
if content.use_security: if content.use_security:
fingerprint = content.x509_fingerprint fingerprint = content.x509_fingerprint
if not jingle_xtls.check_cert( if not jingle_xtls.check_cert(
gajim.get_jid_without_resource(file_props.sender), app.get_jid_without_resource(file_props.sender),
fingerprint): fingerprint):
id_ = jingle_xtls.send_cert_request(self, id_ = jingle_xtls.send_cert_request(self,
file_props.sender) file_props.sender)
@ -257,7 +257,7 @@ class ConnectionBytestream:
def _siSetCB(self, con, iq_obj): def _siSetCB(self, con, iq_obj):
from gajim.common.connection_handlers_events import FileRequestReceivedEvent from gajim.common.connection_handlers_events import FileRequestReceivedEvent
gajim.nec.push_incoming_event(FileRequestReceivedEvent(None, conn=self, app.nec.push_incoming_event(FileRequestReceivedEvent(None, conn=self,
stanza=iq_obj)) stanza=iq_obj))
raise nbxmpp.NodeProcessed raise nbxmpp.NodeProcessed
@ -275,7 +275,7 @@ class ConnectionBytestream:
jid = self._ft_get_from(iq_obj) jid = self._ft_get_from(iq_obj)
file_props.error = -3 file_props.error = -3
from gajim.common.connection_handlers_events import FileRequestErrorEvent from gajim.common.connection_handlers_events import FileRequestErrorEvent
gajim.nec.push_incoming_event(FileRequestErrorEvent(None, conn=self, app.nec.push_incoming_event(FileRequestErrorEvent(None, conn=self,
jid=jid, file_props=file_props, error_msg='')) jid=jid, file_props=file_props, error_msg=''))
raise nbxmpp.NodeProcessed raise nbxmpp.NodeProcessed
@ -310,7 +310,7 @@ class ConnectionSocks5Bytestream(ConnectionBytestream):
self.remove_transfer(file_props) self.remove_transfer(file_props)
from gajim.common.connection_handlers_events import \ from gajim.common.connection_handlers_events import \
FileRequestErrorEvent FileRequestErrorEvent
gajim.nec.push_incoming_event(FileRequestErrorEvent(None, app.nec.push_incoming_event(FileRequestErrorEvent(None,
conn=self, jid=contact.jid, file_props=file_props, conn=self, jid=contact.jid, file_props=file_props,
error_msg='')) error_msg=''))
sender_jid = file_props.sender sender_jid = file_props.sender
@ -335,13 +335,13 @@ class ConnectionSocks5Bytestream(ConnectionBytestream):
if file_props is None: if file_props is None:
return return
if file_props.hash_: if file_props.hash_:
gajim.socks5queue.remove_sender(file_props.hash_) app.socks5queue.remove_sender(file_props.hash_)
if file_props.streamhosts: if file_props.streamhosts:
for host in file_props.streamhosts: for host in file_props.streamhosts:
if 'idx' in host and host['idx'] > 0: if 'idx' in host and host['idx'] > 0:
gajim.socks5queue.remove_receiver(host['idx']) app.socks5queue.remove_receiver(host['idx'])
gajim.socks5queue.remove_sender(host['idx']) app.socks5queue.remove_sender(host['idx'])
def _send_socks5_info(self, file_props): def _send_socks5_info(self, file_props):
""" """
@ -355,13 +355,13 @@ class ConnectionSocks5Bytestream(ConnectionBytestream):
sha_str = helpers.get_auth_sha(file_props.sid, sender, receiver) sha_str = helpers.get_auth_sha(file_props.sid, sender, receiver)
file_props.sha_str = sha_str file_props.sha_str = sha_str
port = gajim.config.get('file_transfers_port') port = app.config.get('file_transfers_port')
listener = gajim.socks5queue.start_listener(port, sha_str, listener = app.socks5queue.start_listener(port, sha_str,
self._result_socks5_sid, file_props) self._result_socks5_sid, file_props)
if not listener: if not listener:
file_props.error = -5 file_props.error = -5
from gajim.common.connection_handlers_events import FileRequestErrorEvent from gajim.common.connection_handlers_events import FileRequestErrorEvent
gajim.nec.push_incoming_event(FileRequestErrorEvent(None, conn=self, app.nec.push_incoming_event(FileRequestErrorEvent(None, conn=self,
jid=receiver, file_props=file_props, error_msg='')) jid=receiver, file_props=file_props, error_msg=''))
self._connect_error(file_props.sid, error='not-acceptable', self._connect_error(file_props.sid, error='not-acceptable',
error_type='modify') error_type='modify')
@ -387,7 +387,7 @@ class ConnectionSocks5Bytestream(ConnectionBytestream):
streamhost.setAttr('jid', sender) streamhost.setAttr('jid', sender)
def _add_local_ips_as_streamhosts_to_query(self, query, file_props): def _add_local_ips_as_streamhosts_to_query(self, query, file_props):
if not gajim.config.get_per('accounts', self.name, 'ft_send_local_ips'): if not app.config.get_per('accounts', self.name, 'ft_send_local_ips'):
return return
try: try:
my_ips = [self.peerhost[0]] # The ip we're connected to server with my_ips = [self.peerhost[0]] # The ip we're connected to server with
@ -397,18 +397,18 @@ class ConnectionSocks5Bytestream(ConnectionBytestream):
my_ips.append(addr[4][0]) my_ips.append(addr[4][0])
sender = file_props.sender sender = file_props.sender
port = gajim.config.get('file_transfers_port') port = app.config.get('file_transfers_port')
self._add_streamhosts_to_query(query, sender, port, my_ips) self._add_streamhosts_to_query(query, sender, port, my_ips)
except socket.gaierror: except socket.gaierror:
from gajim.common.connection_handlers_events import InformationEvent from gajim.common.connection_handlers_events import InformationEvent
gajim.nec.push_incoming_event(InformationEvent(None, conn=self, app.nec.push_incoming_event(InformationEvent(None, conn=self,
level='error', pri_txt=_('Wrong host'), level='error', pri_txt=_('Wrong host'),
sec_txt=_('Invalid local address? :-O'))) sec_txt=_('Invalid local address? :-O')))
def _add_addiditional_streamhosts_to_query(self, query, file_props): def _add_addiditional_streamhosts_to_query(self, query, file_props):
sender = file_props.sender sender = file_props.sender
port = gajim.config.get('file_transfers_port') port = app.config.get('file_transfers_port')
ft_add_hosts_to_send = gajim.config.get('ft_add_hosts_to_send') ft_add_hosts_to_send = app.config.get('ft_add_hosts_to_send')
additional_hosts = [] additional_hosts = []
if ft_add_hosts_to_send: if ft_add_hosts_to_send:
additional_hosts = [e.strip() for e in ft_add_hosts_to_send.split(',')] additional_hosts = [e.strip() for e in ft_add_hosts_to_send.split(',')]
@ -417,7 +417,7 @@ class ConnectionSocks5Bytestream(ConnectionBytestream):
self._add_streamhosts_to_query(query, sender, port, additional_hosts) self._add_streamhosts_to_query(query, sender, port, additional_hosts)
def _add_upnp_igd_as_streamhost_to_query(self, query, file_props, iq): def _add_upnp_igd_as_streamhost_to_query(self, query, file_props, iq):
if not gajim.HAVE_UPNP_IGD: if not app.HAVE_UPNP_IGD:
self.connection.send(iq) self.connection.send(iq)
return return
@ -458,18 +458,18 @@ class ConnectionSocks5Bytestream(ConnectionBytestream):
if self.no_gupnp_reply_id: if self.no_gupnp_reply_id:
GLib.source_remove(self.no_gupnp_reply_id) GLib.source_remove(self.no_gupnp_reply_id)
self.no_gupnp_reply_id = 0 self.no_gupnp_reply_id = 0
gajim.gupnp_igd.disconnect(self.ok_id) app.gupnp_igd.disconnect(self.ok_id)
gajim.gupnp_igd.disconnect(self.fail_id) app.gupnp_igd.disconnect(self.fail_id)
def ok(s, proto, ext_ip, re, ext_port, local_ip, local_port, desc): def ok(s, proto, ext_ip, re, ext_port, local_ip, local_port, desc):
log.debug('Got GUPnP-IGD answer: external: %s:%s, internal: %s:%s', log.debug('Got GUPnP-IGD answer: external: %s:%s, internal: %s:%s',
ext_ip, ext_port, local_ip, local_port) ext_ip, ext_port, local_ip, local_port)
if local_port != gajim.config.get('file_transfers_port'): if local_port != app.config.get('file_transfers_port'):
sender = file_props.sender sender = file_props.sender
receiver = file_props.receiver receiver = file_props.receiver
sha_str = helpers.get_auth_sha(file_props.sid, sender, sha_str = helpers.get_auth_sha(file_props.sid, sender,
receiver) receiver)
listener = gajim.socks5queue.start_listener(local_port, sha_str, listener = app.socks5queue.start_listener(local_port, sha_str,
self._result_socks5_sid, file_props.sid) self._result_socks5_sid, file_props.sid)
if listener: if listener:
self._add_streamhosts_to_query(query, sender, ext_port, self._add_streamhosts_to_query(query, sender, ext_port,
@ -488,19 +488,19 @@ class ConnectionSocks5Bytestream(ConnectionBytestream):
def no_upnp_reply(): def no_upnp_reply():
log.debug('Got not GUPnP-IGD answer') log.debug('Got not GUPnP-IGD answer')
# stop trying to use it # stop trying to use it
gajim.HAVE_UPNP_IGD = False app.HAVE_UPNP_IGD = False
self.no_gupnp_reply_id = 0 self.no_gupnp_reply_id = 0
self.connection.send(iq) self.connection.send(iq)
cleanup_gupnp() cleanup_gupnp()
return False return False
self.ok_id = gajim.gupnp_igd.connect('mapped-external-port', ok) self.ok_id = app.gupnp_igd.connect('mapped-external-port', ok)
self.fail_id = gajim.gupnp_igd.connect('error-mapping-port', fail) self.fail_id = app.gupnp_igd.connect('error-mapping-port', fail)
port = gajim.config.get('file_transfers_port') port = app.config.get('file_transfers_port')
self.no_gupnp_reply_id = GLib.timeout_add_seconds(10, no_upnp_reply) self.no_gupnp_reply_id = GLib.timeout_add_seconds(10, no_upnp_reply)
gajim.gupnp_igd.add_port('TCP', 0, my_ip, port, 3600, app.gupnp_igd.add_port('TCP', 0, my_ip, port, 3600,
'Gajim file transfer') 'Gajim file transfer')
def _add_proxy_streamhosts_to_query(self, query, file_props): def _add_proxy_streamhosts_to_query(self, query, file_props):
@ -515,16 +515,16 @@ class ConnectionSocks5Bytestream(ConnectionBytestream):
proxyhost['port'], [proxyhost['host']]) proxyhost['port'], [proxyhost['host']])
def _get_file_transfer_proxies_from_config(self, file_props): def _get_file_transfer_proxies_from_config(self, file_props):
configured_proxies = gajim.config.get_per('accounts', self.name, configured_proxies = app.config.get_per('accounts', self.name,
'file_transfer_proxies') 'file_transfer_proxies')
shall_use_proxies = gajim.config.get_per('accounts', self.name, shall_use_proxies = app.config.get_per('accounts', self.name,
'use_ft_proxies') 'use_ft_proxies')
if shall_use_proxies: if shall_use_proxies:
proxyhost_dicts = [] proxyhost_dicts = []
proxies = [] proxies = []
if configured_proxies: if configured_proxies:
proxies = [item.strip() for item in configured_proxies.split(',')] proxies = [item.strip() for item in configured_proxies.split(',')]
default_proxy = gajim.proxy65_manager.get_default_for_name(self.name) default_proxy = app.proxy65_manager.get_default_for_name(self.name)
if default_proxy: if default_proxy:
# add/move default proxy at top of the others # add/move default proxy at top of the others
if default_proxy in proxies: if default_proxy in proxies:
@ -532,7 +532,7 @@ class ConnectionSocks5Bytestream(ConnectionBytestream):
proxies.insert(0, default_proxy) proxies.insert(0, default_proxy)
for proxy in proxies: for proxy in proxies:
(host, _port, jid) = gajim.proxy65_manager.get_proxy(proxy, self.name) (host, _port, jid) = app.proxy65_manager.get_proxy(proxy, self.name)
if not host: if not host:
continue continue
host_dict = { host_dict = {
@ -584,7 +584,7 @@ class ConnectionSocks5Bytestream(ConnectionBytestream):
file_props.error = -3 file_props.error = -3
from gajim.common.connection_handlers_events import \ from gajim.common.connection_handlers_events import \
FileRequestErrorEvent FileRequestErrorEvent
gajim.nec.push_incoming_event(FileRequestErrorEvent(None, app.nec.push_incoming_event(FileRequestErrorEvent(None,
conn=self, jid=to, file_props=file_props, error_msg=msg)) conn=self, jid=to, file_props=file_props, error_msg=msg))
def _proxy_auth_ok(self, proxy): def _proxy_auth_ok(self, proxy):
@ -609,7 +609,7 @@ class ConnectionSocks5Bytestream(ConnectionBytestream):
id_ = iq_obj.getAttr('id') id_ = iq_obj.getAttr('id')
frm = helpers.get_full_jid_from_iq(iq_obj) frm = helpers.get_full_jid_from_iq(iq_obj)
query = iq_obj.getTag('query') query = iq_obj.getTag('query')
gajim.proxy65_manager.error_cb(frm, query) app.proxy65_manager.error_cb(frm, query)
jid = helpers.get_jid_from_iq(iq_obj) jid = helpers.get_jid_from_iq(iq_obj)
id_ = id_[3:] id_ = id_[3:]
file_props = FilesProp.getFilePropBySid(id_) file_props = FilesProp.getFilePropBySid(id_)
@ -617,7 +617,7 @@ class ConnectionSocks5Bytestream(ConnectionBytestream):
return return
file_props.error = -4 file_props.error = -4
from gajim.common.connection_handlers_events import FileRequestErrorEvent from gajim.common.connection_handlers_events import FileRequestErrorEvent
gajim.nec.push_incoming_event(FileRequestErrorEvent(None, conn=self, app.nec.push_incoming_event(FileRequestErrorEvent(None, conn=self,
jid=jid, file_props=file_props, error_msg='')) jid=jid, file_props=file_props, error_msg=''))
raise nbxmpp.NodeProcessed raise nbxmpp.NodeProcessed
@ -654,7 +654,7 @@ class ConnectionSocks5Bytestream(ConnectionBytestream):
file_props.streamhosts.extend(streamhosts) file_props.streamhosts.extend(streamhosts)
else: else:
file_props.streamhosts = streamhosts file_props.streamhosts = streamhosts
gajim.socks5queue.connect_to_hosts(self.name, sid, app.socks5queue.connect_to_hosts(self.name, sid,
self.send_success_connect_reply, None) self.send_success_connect_reply, None)
raise nbxmpp.NodeProcessed raise nbxmpp.NodeProcessed
else: else:
@ -666,7 +666,7 @@ class ConnectionSocks5Bytestream(ConnectionBytestream):
self._connect_error(sid, 'item-not-found', 'cancel', self._connect_error(sid, 'item-not-found', 'cancel',
msg='Could not connect to given hosts') msg='Could not connect to given hosts')
if file_props.type_ == 'r': if file_props.type_ == 'r':
gajim.socks5queue.connect_to_hosts(self.name, sid, app.socks5queue.connect_to_hosts(self.name, sid,
self.send_success_connect_reply, _connection_error) self.send_success_connect_reply, _connection_error)
raise nbxmpp.NodeProcessed raise nbxmpp.NodeProcessed
@ -682,14 +682,14 @@ class ConnectionSocks5Bytestream(ConnectionBytestream):
if file_props.streamhost_used: if file_props.streamhost_used:
for host in file_props.proxyhosts: for host in file_props.proxyhosts:
if host['initiator'] == frm and 'idx' in host: if host['initiator'] == frm and 'idx' in host:
gajim.socks5queue.activate_proxy(host['idx']) app.socks5queue.activate_proxy(host['idx'])
raise nbxmpp.NodeProcessed raise nbxmpp.NodeProcessed
def _bytestreamResultCB(self, con, iq_obj): def _bytestreamResultCB(self, con, iq_obj):
frm = self._ft_get_from(iq_obj) frm = self._ft_get_from(iq_obj)
real_id = iq_obj.getAttr('id') real_id = iq_obj.getAttr('id')
query = iq_obj.getTag('query') query = iq_obj.getTag('query')
gajim.proxy65_manager.resolve_result(frm, query) app.proxy65_manager.resolve_result(frm, query)
try: try:
streamhost = query.getTag('streamhost-used') streamhost = query.getTag('streamhost-used')
@ -709,7 +709,7 @@ class ConnectionSocks5Bytestream(ConnectionBytestream):
for host in file_props.proxyhosts: for host in file_props.proxyhosts:
if host['initiator'] == frm and \ if host['initiator'] == frm and \
query.getAttr('sid') == file_props.sid: query.getAttr('sid') == file_props.sid:
gajim.socks5queue.activate_proxy(host['idx']) app.socks5queue.activate_proxy(host['idx'])
break break
raise nbxmpp.NodeProcessed raise nbxmpp.NodeProcessed
jid = self._ft_get_streamhost_jid_attr(streamhost) jid = self._ft_get_streamhost_jid_attr(streamhost)
@ -720,7 +720,7 @@ class ConnectionSocks5Bytestream(ConnectionBytestream):
if file_props.stopped: if file_props.stopped:
self.remove_transfer(file_props) self.remove_transfer(file_props)
else: else:
gajim.socks5queue.send_file(file_props, self.name) app.socks5queue.send_file(file_props, self.name)
raise nbxmpp.NodeProcessed raise nbxmpp.NodeProcessed
proxy = None proxy = None
@ -736,22 +736,22 @@ class ConnectionSocks5Bytestream(ConnectionBytestream):
file_props.streamhost_used = True file_props.streamhost_used = True
file_props.streamhosts.append(proxy) file_props.streamhosts.append(proxy)
file_props.is_a_proxy = True file_props.is_a_proxy = True
idx = gajim.socks5queue.idx idx = app.socks5queue.idx
sender = Socks5SenderClient(gajim.idlequeue, idx, sender = Socks5SenderClient(app.idlequeue, idx,
gajim.socks5queue, _sock=None, host=str(proxy['host']), app.socks5queue, _sock=None, host=str(proxy['host']),
port=int(proxy['port']), fingerprint=None, port=int(proxy['port']), fingerprint=None,
connected=False, file_props=file_props) connected=False, file_props=file_props)
sender.streamhost = proxy sender.streamhost = proxy
gajim.socks5queue.add_sockobj(self.name, sender) app.socks5queue.add_sockobj(self.name, sender)
proxy['idx'] = sender.queue_idx proxy['idx'] = sender.queue_idx
gajim.socks5queue.on_success[file_props.sid] = self._proxy_auth_ok app.socks5queue.on_success[file_props.sid] = self._proxy_auth_ok
raise nbxmpp.NodeProcessed raise nbxmpp.NodeProcessed
else: else:
if file_props.stopped: if file_props.stopped:
self.remove_transfer(file_props) self.remove_transfer(file_props)
else: else:
gajim.socks5queue.send_file(file_props, self.name, 'server') app.socks5queue.send_file(file_props, self.name, 'server')
raise nbxmpp.NodeProcessed raise nbxmpp.NodeProcessed
@ -785,7 +785,7 @@ class ConnectionIBBytestream(ConnectionBytestream):
elif not file_props.connected: elif not file_props.connected:
log.debug('Received IQ for closed filetransfer, IQ dropped') log.debug('Received IQ for closed filetransfer, IQ dropped')
elif typ == 'error': elif typ == 'error':
gajim.socks5queue.error_cb() app.socks5queue.error_cb()
else: else:
conn.send(nbxmpp.Error(stanza, nbxmpp.ERR_BAD_REQUEST)) conn.send(nbxmpp.Error(stanza, nbxmpp.ERR_BAD_REQUEST))
raise nbxmpp.NodeProcessed raise nbxmpp.NodeProcessed
@ -841,7 +841,7 @@ class ConnectionIBBytestream(ConnectionBytestream):
payload=[nbxmpp.Node(nbxmpp.NS_IBB + ' close', payload=[nbxmpp.Node(nbxmpp.NS_IBB + ' close',
{'sid':file_props.transport_sid})])) {'sid':file_props.transport_sid})]))
if file_props.completed: if file_props.completed:
gajim.socks5queue.complete_transfer_cb(self.name, file_props) app.socks5queue.complete_transfer_cb(self.name, file_props)
elif file_props.session_type == 'jingle': elif file_props.session_type == 'jingle':
peerjid = \ peerjid = \
file_props.receiver if file_props.type_ == 's' else file_props.sender file_props.receiver if file_props.type_ == 's' else file_props.sender
@ -910,7 +910,7 @@ class ConnectionIBBytestream(ConnectionBytestream):
file_props.received_len += len(chunk) file_props.received_len += len(chunk)
if file_props.size == file_props.received_len: if file_props.size == file_props.received_len:
file_props.completed = True file_props.completed = True
gajim.socks5queue.progress_transfer_cb(self.name, app.socks5queue.progress_transfer_cb(self.name,
file_props) file_props)
else: else:
log.debug('Nothing to read, but file not completed') log.debug('Nothing to read, but file not completed')
@ -949,7 +949,7 @@ class ConnectionIBBytestream(ConnectionBytestream):
file_props.elapsed_time += current_time - file_props.last_time file_props.elapsed_time += current_time - file_props.last_time
file_props.last_time = current_time file_props.last_time = current_time
file_props.received_len += len(data) file_props.received_len += len(data)
gajim.socks5queue.progress_transfer_cb(self.name, file_props) app.socks5queue.progress_transfer_cb(self.name, file_props)
if file_props.received_len >= file_props.size: if file_props.received_len >= file_props.size:
file_props.completed = True file_props.completed = True
if err: if err:
@ -978,7 +978,7 @@ class ConnectionIBBytestream(ConnectionBytestream):
file_props.completed = file_props.received_len >= file_props.size file_props.completed = file_props.received_len >= file_props.size
if not file_props.completed: if not file_props.completed:
file_props.error = -1 file_props.error = -1
gajim.socks5queue.complete_transfer_cb(self.name, file_props) app.socks5queue.complete_transfer_cb(self.name, file_props)
else: else:
conn.send(nbxmpp.Error(stanza, nbxmpp.ERR_ITEM_NOT_FOUND)) conn.send(nbxmpp.Error(stanza, nbxmpp.ERR_ITEM_NOT_FOUND))
@ -1014,7 +1014,7 @@ class ConnectionSocks5BytestreamZeroconf(ConnectionSocks5Bytestream):
return iq_obj.getFrom() return iq_obj.getFrom()
def _ft_get_our_jid(self): def _ft_get_our_jid(self):
return gajim.get_jid_from_account(self.name) return app.get_jid_from_account(self.name)
def _ft_get_receiver_jid(self, file_props): def _ft_get_receiver_jid(self, file_props):
return file_props.receiver.jid return file_props.receiver.jid

View File

@ -25,7 +25,7 @@ Module containing the network portion of XEP-115 (Entity Capabilities)
import logging import logging
log = logging.getLogger('gajim.c.p.caps') log = logging.getLogger('gajim.c.p.caps')
from gajim.common import gajim from gajim.common import app
from gajim.common import ged from gajim.common import ged
from gajim.common.connection_handlers_events import CapsPresenceReceivedEvent, \ from gajim.common.connection_handlers_events import CapsPresenceReceivedEvent, \
CapsDiscoReceivedEvent, CapsReceivedEvent CapsDiscoReceivedEvent, CapsReceivedEvent
@ -37,17 +37,17 @@ class ConnectionCaps(object):
self._account = account self._account = account
self._capscache = capscache self._capscache = capscache
self._create_suitable_client_caps = client_caps_factory self._create_suitable_client_caps = client_caps_factory
gajim.nec.register_incoming_event(CapsPresenceReceivedEvent) app.nec.register_incoming_event(CapsPresenceReceivedEvent)
gajim.nec.register_incoming_event(CapsReceivedEvent) app.nec.register_incoming_event(CapsReceivedEvent)
gajim.ged.register_event_handler('caps-presence-received', ged.GUI1, app.ged.register_event_handler('caps-presence-received', ged.GUI1,
self._nec_caps_presence_received) self._nec_caps_presence_received)
gajim.ged.register_event_handler('agent-info-received', ged.GUI1, app.ged.register_event_handler('agent-info-received', ged.GUI1,
self._nec_agent_info_received_caps) self._nec_agent_info_received_caps)
def cleanup(self): def cleanup(self):
gajim.ged.remove_event_handler('caps-presence-received', ged.GUI1, app.ged.remove_event_handler('caps-presence-received', ged.GUI1,
self._nec_caps_presence_received) self._nec_caps_presence_received)
gajim.ged.remove_event_handler('agent-info-received', ged.GUI1, app.ged.remove_event_handler('agent-info-received', ged.GUI1,
self._nec_agent_info_received_caps) self._nec_agent_info_received_caps)
def caps_change_account_name(self, new_name): def caps_change_account_name(self, new_name):
@ -75,10 +75,10 @@ class ConnectionCaps(object):
log.info('Received Caps from unknown contact %s' % obj.fjid) log.info('Received Caps from unknown contact %s' % obj.fjid)
def _get_contact_or_gc_contact_for_jid(self, jid): def _get_contact_or_gc_contact_for_jid(self, jid):
contact = gajim.contacts.get_contact_from_full_jid(self._account, jid) contact = app.contacts.get_contact_from_full_jid(self._account, jid)
if contact is None: if contact is None:
room_jid, nick = gajim.get_room_and_nick_from_fjid(jid) room_jid, nick = app.get_room_and_nick_from_fjid(jid)
contact = gajim.contacts.get_gc_contact(self._account, room_jid, nick) contact = app.contacts.get_gc_contact(self._account, room_jid, nick)
return contact return contact
def _nec_agent_info_received_caps(self, obj): def _nec_agent_info_received_caps(self, obj):
@ -113,6 +113,6 @@ class ConnectionCaps(object):
log.info('Computed and retrieved caps hash differ.' + log.info('Computed and retrieved caps hash differ.' +
'Ignoring caps of contact %s' % contact.get_full_jid()) 'Ignoring caps of contact %s' % contact.get_full_jid())
gajim.nec.push_incoming_event(CapsDiscoReceivedEvent(None, app.nec.push_incoming_event(CapsDiscoReceivedEvent(None,
conn=self, fjid=obj.fjid, jid=obj.jid, resource=obj.resource, conn=self, fjid=obj.fjid, jid=obj.jid, resource=obj.resource,
client_caps=contact.client_caps)) client_caps=contact.client_caps))

View File

@ -27,7 +27,7 @@ import logging
log = logging.getLogger('gajim.c.proxy65_manager') log = logging.getLogger('gajim.c.proxy65_manager')
import nbxmpp import nbxmpp
from gajim.common import gajim from gajim.common import app
from gajim.common import helpers from gajim.common import helpers
from gajim.common.socks5 import Socks5 from gajim.common.socks5 import Socks5
from nbxmpp.idlequeue import IdleObject from nbxmpp.idlequeue import IdleObject
@ -260,7 +260,7 @@ class HostTester(Socks5, IdleObject):
self.file_props.is_a_proxy = True self.file_props.is_a_proxy = True
self.file_props.proxy_sender = sender_jid self.file_props.proxy_sender = sender_jid
self.file_props.proxy_receiver = 'test@gajim.org/test2' self.file_props.proxy_receiver = 'test@gajim.org/test2'
Socks5.__init__(self, gajim.idlequeue, host, port, None, None, None) Socks5.__init__(self, app.idlequeue, host, port, None, None, None)
self.sid = sid self.sid = sid
def connect(self): def connect(self):
@ -274,7 +274,7 @@ class HostTester(Socks5, IdleObject):
self._sock.setblocking(False) self._sock.setblocking(False)
self.fd = self._sock.fileno() self.fd = self._sock.fileno()
self.state = 0 # about to be connected self.state = 0 # about to be connected
gajim.idlequeue.plug_idle(self, True, False) app.idlequeue.plug_idle(self, True, False)
self.do_connect() self.do_connect()
self.idlequeue.set_read_timeout(self.fd, CONNECT_TIMEOUT) self.idlequeue.set_read_timeout(self.fd, CONNECT_TIMEOUT)
return None return None
@ -299,8 +299,8 @@ class HostTester(Socks5, IdleObject):
return return
self.state += 1 self.state += 1
# unplug and plug for reading # unplug and plug for reading
gajim.idlequeue.plug_idle(self, False, True) app.idlequeue.plug_idle(self, False, True)
gajim.idlequeue.set_read_timeout(self.fd, CONNECT_TIMEOUT) app.idlequeue.set_read_timeout(self.fd, CONNECT_TIMEOUT)
def pollin(self): def pollin(self):
self.idlequeue.remove_timeout(self.fd) self.idlequeue.remove_timeout(self.fd)
@ -380,7 +380,7 @@ class ReceiverTester(Socks5, IdleObject):
self.file_props.is_a_proxy = True self.file_props.is_a_proxy = True
self.file_props.proxy_sender = sender_jid self.file_props.proxy_sender = sender_jid
self.file_props.proxy_receiver = 'test@gajim.org/test2' self.file_props.proxy_receiver = 'test@gajim.org/test2'
Socks5.__init__(self, gajim.idlequeue, host, port, None, None, None) Socks5.__init__(self, app.idlequeue, host, port, None, None, None)
self.sid = sid self.sid = sid
def connect(self): def connect(self):
@ -394,7 +394,7 @@ class ReceiverTester(Socks5, IdleObject):
self._sock.setblocking(False) self._sock.setblocking(False)
self.fd = self._sock.fileno() self.fd = self._sock.fileno()
self.state = 0 # about to be connected self.state = 0 # about to be connected
gajim.idlequeue.plug_idle(self, True, False) app.idlequeue.plug_idle(self, True, False)
self.do_connect() self.do_connect()
self.idlequeue.set_read_timeout(self.fd, CONNECT_TIMEOUT) self.idlequeue.set_read_timeout(self.fd, CONNECT_TIMEOUT)
return None return None
@ -419,8 +419,8 @@ class ReceiverTester(Socks5, IdleObject):
return return
self.state += 1 self.state += 1
# unplug and plug for reading # unplug and plug for reading
gajim.idlequeue.plug_idle(self, False, True) app.idlequeue.plug_idle(self, False, True)
gajim.idlequeue.set_read_timeout(self.fd, CONNECT_TIMEOUT) app.idlequeue.set_read_timeout(self.fd, CONNECT_TIMEOUT)
def pollin(self): def pollin(self):
self.idlequeue.remove_timeout(self.fd) self.idlequeue.remove_timeout(self.fd)

View File

@ -22,7 +22,7 @@
## ##
import nbxmpp import nbxmpp
from gajim.common import gajim from gajim.common import app
#TODO: Doesn't work #TODO: Doesn't work
#from common.connection_handlers import PEP_CONFIG #from common.connection_handlers import PEP_CONFIG
PEP_CONFIG = 'pep_config' PEP_CONFIG = 'pep_config'
@ -35,12 +35,12 @@ log = logging.getLogger('gajim.c.pubsub')
class ConnectionPubSub: class ConnectionPubSub:
def __init__(self): def __init__(self):
self.__callbacks = {} self.__callbacks = {}
gajim.nec.register_incoming_event(PubsubBookmarksReceivedEvent) app.nec.register_incoming_event(PubsubBookmarksReceivedEvent)
gajim.ged.register_event_handler('pubsub-bookmarks-received', app.ged.register_event_handler('pubsub-bookmarks-received',
ged.CORE, self._nec_pubsub_bookmarks_received) ged.CORE, self._nec_pubsub_bookmarks_received)
def cleanup(self): def cleanup(self):
gajim.ged.remove_event_handler('pubsub-bookmarks-received', app.ged.remove_event_handler('pubsub-bookmarks-received',
ged.CORE, self._nec_pubsub_bookmarks_received) ged.CORE, self._nec_pubsub_bookmarks_received)
def send_pb_subscription_query(self, jid, cb, *args, **kwargs): def send_pb_subscription_query(self, jid, cb, *args, **kwargs):
@ -57,7 +57,7 @@ class ConnectionPubSub:
def send_pb_subscribe(self, jid, node, cb, *args, **kwargs): def send_pb_subscribe(self, jid, node, cb, *args, **kwargs):
if not self.connection or self.connected < 2: if not self.connection or self.connected < 2:
return return
our_jid = gajim.get_jid_from_account(self.name) our_jid = app.get_jid_from_account(self.name)
query = nbxmpp.Iq('set', to=jid) query = nbxmpp.Iq('set', to=jid)
pb = query.addChild('pubsub', namespace=nbxmpp.NS_PUBSUB) pb = query.addChild('pubsub', namespace=nbxmpp.NS_PUBSUB)
pb.addChild('subscribe', {'node': node, 'jid': our_jid}) pb.addChild('subscribe', {'node': node, 'jid': our_jid})
@ -69,7 +69,7 @@ class ConnectionPubSub:
def send_pb_unsubscribe(self, jid, node, cb, *args, **kwargs): def send_pb_unsubscribe(self, jid, node, cb, *args, **kwargs):
if not self.connection or self.connected < 2: if not self.connection or self.connected < 2:
return return
our_jid = gajim.get_jid_from_account(self.name) our_jid = app.get_jid_from_account(self.name)
query = nbxmpp.Iq('set', to=jid) query = nbxmpp.Iq('set', to=jid)
pb = query.addChild('pubsub', namespace=nbxmpp.NS_PUBSUB) pb = query.addChild('pubsub', namespace=nbxmpp.NS_PUBSUB)
pb.addChild('unsubscribe', {'node': node, 'jid': our_jid}) pb.addChild('unsubscribe', {'node': node, 'jid': our_jid})
@ -189,7 +189,7 @@ class ConnectionPubSub:
cb(conn, stanza, *args, **kwargs) cb(conn, stanza, *args, **kwargs)
except Exception: except Exception:
pass pass
gajim.nec.push_incoming_event(PubsubReceivedEvent(None, app.nec.push_incoming_event(PubsubReceivedEvent(None,
conn=self, stanza=stanza)) conn=self, stanza=stanza))
def _nec_pubsub_bookmarks_received(self, obj): def _nec_pubsub_bookmarks_received(self, obj):

View File

@ -21,7 +21,7 @@
## along with Gajim. If not, see <http://www.gnu.org/licenses/>. ## along with Gajim. If not, see <http://www.gnu.org/licenses/>.
## ##
from gajim.common import gajim from gajim.common import app
import os import os
@ -52,7 +52,7 @@ try:
from gajim.common import idle from gajim.common import idle
idle.xss_available idle.xss_available
except Exception: except Exception:
gajim.log.debug('Unable to load idle module') app.log.debug('Unable to load idle module')
SUPPORTED = False SUPPORTED = False
class SleepyWindows: class SleepyWindows:

View File

@ -35,7 +35,7 @@ from errno import EINPROGRESS
from errno import EAFNOSUPPORT from errno import EAFNOSUPPORT
from nbxmpp.idlequeue import IdleObject from nbxmpp.idlequeue import IdleObject
from gajim.common.file_props import FilesProp from gajim.common.file_props import FilesProp
from gajim.common import gajim from gajim.common import app
from gajim.common import jingle_xtls from gajim.common import jingle_xtls
if jingle_xtls.PYOPENSSL_PRESENT: if jingle_xtls.PYOPENSSL_PRESENT:
import OpenSSL import OpenSSL
@ -501,10 +501,10 @@ class Socks5(object):
self._sock = socket.socket(*ai[:3]) self._sock = socket.socket(*ai[:3])
if self.fingerprint is not None: if self.fingerprint is not None:
if self.file_props.type_ == 's': if self.file_props.type_ == 's':
remote_jid = gajim.get_jid_without_resource( remote_jid = app.get_jid_without_resource(
self.file_props.receiver) self.file_props.receiver)
else: else:
remote_jid = gajim.get_jid_without_resource( remote_jid = app.get_jid_without_resource(
self.file_props.sender) self.file_props.sender)
self._sock = OpenSSL.SSL.Connection( self._sock = OpenSSL.SSL.Connection(
jingle_xtls.get_context('client', jingle_xtls.get_context('client',

View File

@ -22,7 +22,7 @@
## along with Gajim. If not, see <http://www.gnu.org/licenses/>. ## along with Gajim. If not, see <http://www.gnu.org/licenses/>.
## ##
from gajim.common import gajim from gajim.common import app
import nbxmpp import nbxmpp
from gajim.common.exceptions import DecryptionError, NegotiationError from gajim.common.exceptions import DecryptionError, NegotiationError
import nbxmpp.c14n import nbxmpp.c14n
@ -40,7 +40,7 @@ from gajim.common import crypto
import logging import logging
log = logging.getLogger('gajim.c.stanza_session') log = logging.getLogger('gajim.c.stanza_session')
if gajim.HAVE_PYCRYPTO: if app.HAVE_PYCRYPTO:
from Crypto.Cipher import AES from Crypto.Cipher import AES
from Crypto.PublicKey import RSA from Crypto.PublicKey import RSA
@ -78,12 +78,12 @@ class StanzaSession(object):
self.negotiated = {} self.negotiated = {}
def is_loggable(self): def is_loggable(self):
return self.loggable and gajim.config.should_log(self.conn.name, return self.loggable and app.config.should_log(self.conn.name,
self.jid.getStripped()) self.jid.getStripped())
def get_to(self): def get_to(self):
to = str(self.jid) to = str(self.jid)
return gajim.get_jid_without_resource(to) + '/' + self.resource return app.get_jid_without_resource(to) + '/' + self.resource
def remove_events(self, types): def remove_events(self, types):
""" """
@ -94,7 +94,7 @@ class StanzaSession(object):
any_removed = False any_removed = False
for j in (self.jid, self.jid.getStripped()): for j in (self.jid, self.jid.getStripped()):
for event in gajim.events.get_events(self.conn.name, j, types=types): for event in app.events.get_events(self.conn.name, j, types=types):
# the event wasn't in this session # the event wasn't in this session
if (event.type_ == 'chat' and event.session != self) or \ if (event.type_ == 'chat' and event.session != self) or \
(event.type_ == 'printed_chat' and event.control.session != \ (event.type_ == 'printed_chat' and event.control.session != \
@ -103,7 +103,7 @@ class StanzaSession(object):
# events.remove_events returns True when there were no events # events.remove_events returns True when there were no events
# for some reason # for some reason
r = gajim.events.remove_events(self.conn.name, j, event) r = app.events.remove_events(self.conn.name, j, event)
if not r: if not r:
any_removed = True any_removed = True
@ -315,7 +315,7 @@ class EncryptedStanzaSession(ArchivingStanzaSession):
of any of the types listed in 'encryptable_stanzas' should be of any of the types listed in 'encryptable_stanzas' should be
encrypted before they're sent. encrypted before they're sent.
The transition between these states is handled in gajim.py's The transition between these states is handled in app.py's
handle_session_negotiation method. handle_session_negotiation method.
""" """
@ -337,9 +337,9 @@ class EncryptedStanzaSession(ArchivingStanzaSession):
self.verified_identity = False self.verified_identity = False
def _get_contact(self): def _get_contact(self):
c = gajim.contacts.get_contact(self.conn.name, self.jid, self.resource) c = app.contacts.get_contact(self.conn.name, self.jid, self.resource)
if not c: if not c:
c = gajim.contacts.get_contact(self.conn.name, self.jid) c = app.contacts.get_contact(self.conn.name, self.jid)
return c return c
def _is_buggy_gajim(self): def _is_buggy_gajim(self):
@ -384,7 +384,7 @@ class EncryptedStanzaSession(ArchivingStanzaSession):
def sign(self, string): def sign(self, string):
if self.negotiated['sign_algs'] == (XmlDsig + 'rsa-sha256'): if self.negotiated['sign_algs'] == (XmlDsig + 'rsa-sha256'):
hash_ = crypto.sha256(string) hash_ = crypto.sha256(string)
return crypto.encode_mpi(gajim.pubkey.sign(hash_, '')[0]) return crypto.encode_mpi(app.pubkey.sign(hash_, '')[0])
def encrypt_stanza(self, stanza): def encrypt_stanza(self, stanza):
encryptable = [x for x in stanza.getChildren() if x.getName() not in encryptable = [x for x in stanza.getChildren() if x.getName() not in
@ -503,7 +503,7 @@ class EncryptedStanzaSession(ArchivingStanzaSession):
return self.decrypter.decrypt(ciphertext) return self.decrypter.decrypt(ciphertext)
def logging_preference(self): def logging_preference(self):
if gajim.config.get_per('accounts', self.conn.name, if app.config.get_per('accounts', self.conn.name,
'log_encrypted_sessions'): 'log_encrypted_sessions'):
return ['may', 'mustnot'] return ['may', 'mustnot']
else: else:
@ -697,7 +697,7 @@ class EncryptedStanzaSession(ArchivingStanzaSession):
x.addChild(node=nbxmpp.DataField(name='my_nonce', x.addChild(node=nbxmpp.DataField(name='my_nonce',
value=base64.b64encode(self.n_s).decode('utf-8'), typ='hidden')) value=base64.b64encode(self.n_s).decode('utf-8'), typ='hidden'))
modp_options = [ int(g) for g in gajim.config.get('esession_modp').split( modp_options = [ int(g) for g in app.config.get('esession_modp').split(
',') ] ',') ]
x.addChild(node=nbxmpp.DataField(name='modp', typ='list-single', x.addChild(node=nbxmpp.DataField(name='modp', typ='list-single',

View File

@ -17,7 +17,7 @@
## You should have received a copy of the GNU General Public License ## You should have received a copy of the GNU General Public License
## along with Gajim. If not, see <http://www.gnu.org/licenses/>. ## along with Gajim. If not, see <http://www.gnu.org/licenses/>.
## ##
from gajim.common import gajim from gajim.common import app
import nbxmpp import nbxmpp
from nbxmpp.idlequeue import IdleObject from nbxmpp.idlequeue import IdleObject
from nbxmpp import dispatcher_nb, simplexml from nbxmpp import dispatcher_nb, simplexml
@ -87,7 +87,7 @@ class ZeroconfListener(IdleObject):
self._serv.listen(socket.SOMAXCONN) self._serv.listen(socket.SOMAXCONN)
self._serv.setblocking(False) self._serv.setblocking(False)
self.fd = self._serv.fileno() self.fd = self._serv.fileno()
gajim.idlequeue.plug_idle(self, False, True) app.idlequeue.plug_idle(self, False, True)
self.started = True self.started = True
def pollend(self): def pollend(self):
@ -117,8 +117,8 @@ class ZeroconfListener(IdleObject):
Free all resources, we are not listening anymore Free all resources, we are not listening anymore
""" """
log.info('Disconnecting ZeroconfListener: %s' % message) log.info('Disconnecting ZeroconfListener: %s' % message)
gajim.idlequeue.remove_timeout(self.fd) app.idlequeue.remove_timeout(self.fd)
gajim.idlequeue.unplug_idle(self.fd) app.idlequeue.unplug_idle(self.fd)
self.fd = -1 self.fd = -1
self.started = False self.started = False
try: try:
@ -400,14 +400,14 @@ class P2PConnection(IdleObject, PlugIn):
self.connect_to_next_ip() self.connect_to_next_ip()
return return
self.fd = self._sock.fileno() self.fd = self._sock.fileno()
gajim.idlequeue.plug_idle(self, True, False) app.idlequeue.plug_idle(self, True, False)
self.set_timeout(CONNECT_TIMEOUT_SECONDS) self.set_timeout(CONNECT_TIMEOUT_SECONDS)
self.do_connect() self.do_connect()
def set_timeout(self, timeout): def set_timeout(self, timeout):
gajim.idlequeue.remove_timeout(self.fd) app.idlequeue.remove_timeout(self.fd)
if self.state >= 0: if self.state >= 0:
gajim.idlequeue.set_read_timeout(self.fd, timeout) app.idlequeue.set_read_timeout(self.fd, timeout)
def plugin(self, owner): def plugin(self, owner):
self.onreceive(owner._on_receive_document_attrs) self.onreceive(owner._on_receive_document_attrs)
@ -492,7 +492,7 @@ class P2PConnection(IdleObject, PlugIn):
if self.state == 0: if self.state == 0:
self.do_connect() self.do_connect()
return return
gajim.idlequeue.remove_timeout(self.fd) app.idlequeue.remove_timeout(self.fd)
self._do_send() self._do_send()
def pollend(self): def pollend(self):
@ -550,8 +550,8 @@ class P2PConnection(IdleObject, PlugIn):
""" """
Close the socket Close the socket
""" """
gajim.idlequeue.remove_timeout(self.fd) app.idlequeue.remove_timeout(self.fd)
gajim.idlequeue.unplug_idle(self.fd) app.idlequeue.unplug_idle(self.fd)
try: try:
self._sock.shutdown(socket.SHUT_RDWR) self._sock.shutdown(socket.SHUT_RDWR)
self._sock.close() self._sock.close()
@ -575,7 +575,7 @@ class P2PConnection(IdleObject, PlugIn):
self.sendbuff = self.sendbuff[send_count:] self.sendbuff = self.sendbuff[send_count:]
if not self.sendbuff and not self.sendqueue: if not self.sendbuff and not self.sendqueue:
if self.state < 0: if self.state < 0:
gajim.idlequeue.unplug_idle(self.fd) app.idlequeue.unplug_idle(self.fd)
self._on_send() self._on_send()
self.disconnect() self.disconnect()
return return
@ -602,7 +602,7 @@ class P2PConnection(IdleObject, PlugIn):
else: else:
writable = False writable = False
if self.writable != writable or self.readable != readable: if self.writable != writable or self.readable != readable:
gajim.idlequeue.plug_idle(self, writable, readable) app.idlequeue.plug_idle(self, writable, readable)
def _on_send(self): def _on_send(self):
@ -830,7 +830,7 @@ class ClientZeroconf:
# if timeout: # if timeout:
# self._owner.set_timeout(timeout) # self._owner.set_timeout(timeout)
to = stanza.getTo() to = stanza.getTo()
to = gajim.get_jid_without_resource(to) to = app.get_jid_without_resource(to)
try: try:
item = self.roster[to] item = self.roster[to]

View File

@ -25,7 +25,7 @@
import nbxmpp import nbxmpp
from gajim.common import gajim from gajim.common import app
from gajim.common.commands import ConnectionCommands from gajim.common.commands import ConnectionCommands
from gajim.common.protocol.bytestream import ConnectionSocks5BytestreamZeroconf from gajim.common.protocol.bytestream import ConnectionSocks5BytestreamZeroconf
from gajim.common.connection_handlers_events import ZeroconfMessageReceivedEvent from gajim.common.connection_handlers_events import ZeroconfMessageReceivedEvent
@ -84,7 +84,7 @@ connection_handlers.ConnectionJingle):
Called when we receive a message Called when we receive a message
""" """
log.debug('Zeroconf MessageCB') log.debug('Zeroconf MessageCB')
gajim.nec.push_incoming_event(ZeroconfMessageReceivedEvent(None, app.nec.push_incoming_event(ZeroconfMessageReceivedEvent(None,
conn=self, stanza=msg, ip=ip)) conn=self, stanza=msg, ip=ip))
return return

View File

@ -43,7 +43,7 @@ import getpass
from gi.repository import GLib from gi.repository import GLib
from gajim.common.connection import CommonConnection from gajim.common.connection import CommonConnection
from gajim.common import gajim from gajim.common import app
from gajim.common import ged from gajim.common import ged
from gajim.common.zeroconf import client_zeroconf from gajim.common.zeroconf import client_zeroconf
from gajim.common.zeroconf import zeroconf from gajim.common.zeroconf import zeroconf
@ -64,7 +64,7 @@ class ConnectionZeroconf(CommonConnection, ConnectionHandlersZeroconf):
CommonConnection.__init__(self, name) CommonConnection.__init__(self, name)
self.is_zeroconf = True self.is_zeroconf = True
gajim.ged.register_event_handler('stanza-message-outgoing', ged.OUT_CORE, app.ged.register_event_handler('stanza-message-outgoing', ged.OUT_CORE,
self._nec_stanza_message_outgoing) self._nec_stanza_message_outgoing)
def get_config_values_or_default(self): def get_config_values_or_default(self):
@ -72,49 +72,49 @@ class ConnectionZeroconf(CommonConnection, ConnectionHandlersZeroconf):
Get name, host, port from config, or create zeroconf account with default Get name, host, port from config, or create zeroconf account with default
values values
""" """
if not gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'name'): if not app.config.get_per('accounts', app.ZEROCONF_ACC_NAME, 'name'):
gajim.log.debug('Creating zeroconf account') app.log.debug('Creating zeroconf account')
gajim.config.add_per('accounts', gajim.ZEROCONF_ACC_NAME) app.config.add_per('accounts', app.ZEROCONF_ACC_NAME)
gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, app.config.set_per('accounts', app.ZEROCONF_ACC_NAME,
'autoconnect', True) 'autoconnect', True)
gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'no_log_for', app.config.set_per('accounts', app.ZEROCONF_ACC_NAME, 'no_log_for',
'') '')
gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'password', app.config.set_per('accounts', app.ZEROCONF_ACC_NAME, 'password',
'zeroconf') 'zeroconf')
gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, app.config.set_per('accounts', app.ZEROCONF_ACC_NAME,
'sync_with_global_status', True) 'sync_with_global_status', True)
gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, app.config.set_per('accounts', app.ZEROCONF_ACC_NAME,
'custom_port', 5298) 'custom_port', 5298)
gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, app.config.set_per('accounts', app.ZEROCONF_ACC_NAME,
'is_zeroconf', True) 'is_zeroconf', True)
gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, app.config.set_per('accounts', app.ZEROCONF_ACC_NAME,
'use_ft_proxies', False) 'use_ft_proxies', False)
self.host = socket.gethostname() self.host = socket.gethostname()
gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'hostname', app.config.set_per('accounts', app.ZEROCONF_ACC_NAME, 'hostname',
self.host) self.host)
self.port = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, self.port = app.config.get_per('accounts', app.ZEROCONF_ACC_NAME,
'custom_port') 'custom_port')
self.autoconnect = gajim.config.get_per('accounts', self.autoconnect = app.config.get_per('accounts',
gajim.ZEROCONF_ACC_NAME, 'autoconnect') app.ZEROCONF_ACC_NAME, 'autoconnect')
self.sync_with_global_status = gajim.config.get_per('accounts', self.sync_with_global_status = app.config.get_per('accounts',
gajim.ZEROCONF_ACC_NAME, 'sync_with_global_status') app.ZEROCONF_ACC_NAME, 'sync_with_global_status')
self.first = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, self.first = app.config.get_per('accounts', app.ZEROCONF_ACC_NAME,
'zeroconf_first_name') 'zeroconf_first_name')
self.last = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, self.last = app.config.get_per('accounts', app.ZEROCONF_ACC_NAME,
'zeroconf_last_name') 'zeroconf_last_name')
self.jabber_id = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, self.jabber_id = app.config.get_per('accounts', app.ZEROCONF_ACC_NAME,
'zeroconf_jabber_id') 'zeroconf_jabber_id')
self.email = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, self.email = app.config.get_per('accounts', app.ZEROCONF_ACC_NAME,
'zeroconf_email') 'zeroconf_email')
if not self.username: if not self.username:
self.username = getpass.getuser() self.username = getpass.getuser()
gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'name', app.config.set_per('accounts', app.ZEROCONF_ACC_NAME, 'name',
self.username) self.username)
else: else:
self.username = gajim.config.get_per('accounts', self.username = app.config.get_per('accounts',
gajim.ZEROCONF_ACC_NAME, 'name') app.ZEROCONF_ACC_NAME, 'name')
# END __init__ # END __init__
def check_jid(self, jid): def check_jid(self, jid):
@ -123,7 +123,7 @@ class ConnectionZeroconf(CommonConnection, ConnectionHandlersZeroconf):
def reconnect(self): def reconnect(self):
# Do not try to reco while we are already trying # Do not try to reco while we are already trying
self.time_to_reconnect = None self.time_to_reconnect = None
gajim.log.debug('reconnect') app.log.debug('reconnect')
self.disconnect() self.disconnect()
self.change_status(self.old_show, self.status) self.change_status(self.old_show, self.status)
@ -137,10 +137,10 @@ class ConnectionZeroconf(CommonConnection, ConnectionHandlersZeroconf):
diffs = self.roster.getDiffs() diffs = self.roster.getDiffs()
for key in diffs: for key in diffs:
self.roster.setItem(key) self.roster.setItem(key)
gajim.nec.push_incoming_event(RosterInfoEvent(None, conn=self, app.nec.push_incoming_event(RosterInfoEvent(None, conn=self,
jid=key, nickname=self.roster.getName(key), sub='both', jid=key, nickname=self.roster.getName(key), sub='both',
ask='no', groups=self.roster.getGroups(key))) ask='no', groups=self.roster.getGroups(key)))
gajim.nec.push_incoming_event(ZeroconfPresenceReceivedEvent( app.nec.push_incoming_event(ZeroconfPresenceReceivedEvent(
None, conn=self, fjid=key, show=self.roster.getStatus(key), None, conn=self, fjid=key, show=self.roster.getStatus(key),
status=self.roster.getMessage(key))) status=self.roster.getMessage(key)))
#XXX open chat windows don't get refreshed (full name), add that #XXX open chat windows don't get refreshed (full name), add that
@ -149,10 +149,10 @@ class ConnectionZeroconf(CommonConnection, ConnectionHandlersZeroconf):
# callbacks called from zeroconf # callbacks called from zeroconf
def _on_new_service(self, jid): def _on_new_service(self, jid):
self.roster.setItem(jid) self.roster.setItem(jid)
gajim.nec.push_incoming_event(RosterInfoEvent(None, conn=self, app.nec.push_incoming_event(RosterInfoEvent(None, conn=self,
jid=jid, nickname=self.roster.getName(jid), sub='both', jid=jid, nickname=self.roster.getName(jid), sub='both',
ask='no', groups=self.roster.getGroups(jid))) ask='no', groups=self.roster.getGroups(jid)))
gajim.nec.push_incoming_event(ZeroconfPresenceReceivedEvent( app.nec.push_incoming_event(ZeroconfPresenceReceivedEvent(
None, conn=self, fjid=jid, show=self.roster.getStatus(jid), None, conn=self, fjid=jid, show=self.roster.getStatus(jid),
status=self.roster.getMessage(jid))) status=self.roster.getMessage(jid)))
@ -160,7 +160,7 @@ class ConnectionZeroconf(CommonConnection, ConnectionHandlersZeroconf):
self.roster.delItem(jid) self.roster.delItem(jid)
# 'NOTIFY' (account, (jid, status, status message, resource, priority, # 'NOTIFY' (account, (jid, status, status message, resource, priority,
# keyID, timestamp, contact_nickname)) # keyID, timestamp, contact_nickname))
gajim.nec.push_incoming_event(ZeroconfPresenceReceivedEvent( app.nec.push_incoming_event(ZeroconfPresenceReceivedEvent(
None, conn=self, fjid=jid, show='offline', status='')) None, conn=self, fjid=jid, show='offline', status=''))
def disconnectedReconnCB(self): def disconnectedReconnCB(self):
@ -168,12 +168,12 @@ class ConnectionZeroconf(CommonConnection, ConnectionHandlersZeroconf):
Called when we are disconnected. Comes from network manager for example Called when we are disconnected. Comes from network manager for example
we don't try to reconnect, network manager will tell us when we can we don't try to reconnect, network manager will tell us when we can
""" """
if gajim.account_is_connected(self.name): if app.account_is_connected(self.name):
# we cannot change our status to offline or connecting # we cannot change our status to offline or connecting
# after we auth to server # after we auth to server
self.old_show = STATUS_LIST[self.connected] self.old_show = STATUS_LIST[self.connected]
self.connected = 0 self.connected = 0
gajim.nec.push_incoming_event(OurShowEvent(None, conn=self, app.nec.push_incoming_event(OurShowEvent(None, conn=self,
show='offline')) show='offline'))
# random number to show we wait network manager to send us a reconenct # random number to show we wait network manager to send us a reconenct
self.time_to_reconnect = 5 self.time_to_reconnect = 5
@ -181,13 +181,13 @@ class ConnectionZeroconf(CommonConnection, ConnectionHandlersZeroconf):
def _on_name_conflictCB(self, alt_name): def _on_name_conflictCB(self, alt_name):
self.disconnect() self.disconnect()
gajim.nec.push_incoming_event(OurShowEvent(None, conn=self, app.nec.push_incoming_event(OurShowEvent(None, conn=self,
show='offline')) show='offline'))
gajim.nec.push_incoming_event(ZeroconfNameConflictEvent(None, conn=self, app.nec.push_incoming_event(ZeroconfNameConflictEvent(None, conn=self,
alt_name=alt_name)) alt_name=alt_name))
def _on_error(self, message): def _on_error(self, message):
gajim.nec.push_incoming_event(InformationEvent(None, conn=self, app.nec.push_incoming_event(InformationEvent(None, conn=self,
level='error', pri_txt=_('Avahi error'), sec_txt=_('%s\nLink-local ' level='error', pri_txt=_('Avahi error'), sec_txt=_('%s\nLink-local '
'messaging might not work properly.') % message)) 'messaging might not work properly.') % message))
@ -196,25 +196,25 @@ class ConnectionZeroconf(CommonConnection, ConnectionHandlersZeroconf):
if not self.connection: if not self.connection:
self.connection = client_zeroconf.ClientZeroconf(self) self.connection = client_zeroconf.ClientZeroconf(self)
if not zeroconf.test_zeroconf(): if not zeroconf.test_zeroconf():
gajim.nec.push_incoming_event(OurShowEvent(None, conn=self, app.nec.push_incoming_event(OurShowEvent(None, conn=self,
show='offline')) show='offline'))
self.status = 'offline' self.status = 'offline'
gajim.nec.push_incoming_event(ConnectionLostEvent(None, app.nec.push_incoming_event(ConnectionLostEvent(None,
conn=self, title=_('Could not connect to "%s"') % self.name, conn=self, title=_('Could not connect to "%s"') % self.name,
msg=_('Please check if Avahi or Bonjour is installed.'))) msg=_('Please check if Avahi or Bonjour is installed.')))
self.disconnect() self.disconnect()
return return
result = self.connection.connect(show, msg) result = self.connection.connect(show, msg)
if not result: if not result:
gajim.nec.push_incoming_event(OurShowEvent(None, conn=self, app.nec.push_incoming_event(OurShowEvent(None, conn=self,
show='offline')) show='offline'))
self.status = 'offline' self.status = 'offline'
if result is False: if result is False:
gajim.nec.push_incoming_event(ConnectionLostEvent(None, app.nec.push_incoming_event(ConnectionLostEvent(None,
conn=self, title=_('Could not start local service'), conn=self, title=_('Could not start local service'),
msg=_('Unable to bind to port %d.' % self.port))) msg=_('Unable to bind to port %d.' % self.port)))
else: # result is None else: # result is None
gajim.nec.push_incoming_event(ConnectionLostEvent(None, app.nec.push_incoming_event(ConnectionLostEvent(None,
conn=self, title=_('Could not start local service'), conn=self, title=_('Could not start local service'),
msg=_('Please check if avahi-daemon is running.'))) msg=_('Please check if avahi-daemon is running.')))
self.disconnect() self.disconnect()
@ -222,15 +222,15 @@ class ConnectionZeroconf(CommonConnection, ConnectionHandlersZeroconf):
else: else:
self.connection.announce() self.connection.announce()
self.roster = self.connection.getRoster() self.roster = self.connection.getRoster()
gajim.nec.push_incoming_event(RosterReceivedEvent(None, conn=self, app.nec.push_incoming_event(RosterReceivedEvent(None, conn=self,
xmpp_roster=self.roster)) xmpp_roster=self.roster))
# display contacts already detected and resolved # display contacts already detected and resolved
for jid in self.roster.keys(): for jid in self.roster.keys():
gajim.nec.push_incoming_event(RosterInfoEvent(None, conn=self, app.nec.push_incoming_event(RosterInfoEvent(None, conn=self,
jid=jid, nickname=self.roster.getName(jid), sub='both', jid=jid, nickname=self.roster.getName(jid), sub='both',
ask='no', groups=self.roster.getGroups(jid))) ask='no', groups=self.roster.getGroups(jid)))
gajim.nec.push_incoming_event(ZeroconfPresenceReceivedEvent( app.nec.push_incoming_event(ZeroconfPresenceReceivedEvent(
None, conn=self, fjid=jid, show=self.roster.getStatus(jid), None, conn=self, fjid=jid, show=self.roster.getStatus(jid),
status=self.roster.getMessage(jid))) status=self.roster.getMessage(jid)))
@ -253,19 +253,19 @@ class ConnectionZeroconf(CommonConnection, ConnectionHandlersZeroconf):
def reannounce(self): def reannounce(self):
if self.connected: if self.connected:
txt = {} txt = {}
txt['1st'] = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, txt['1st'] = app.config.get_per('accounts', app.ZEROCONF_ACC_NAME,
'zeroconf_first_name') 'zeroconf_first_name')
txt['last'] = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, txt['last'] = app.config.get_per('accounts', app.ZEROCONF_ACC_NAME,
'zeroconf_last_name') 'zeroconf_last_name')
txt['jid'] = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, txt['jid'] = app.config.get_per('accounts', app.ZEROCONF_ACC_NAME,
'zeroconf_jabber_id') 'zeroconf_jabber_id')
txt['email'] = gajim.config.get_per('accounts', txt['email'] = app.config.get_per('accounts',
gajim.ZEROCONF_ACC_NAME, 'zeroconf_email') app.ZEROCONF_ACC_NAME, 'zeroconf_email')
self.connection.reannounce(txt) self.connection.reannounce(txt)
def update_details(self): def update_details(self):
if self.connection: if self.connection:
port = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, port = app.config.get_per('accounts', app.ZEROCONF_ACC_NAME,
'custom_port') 'custom_port')
if port != self.port: if port != self.port:
self.port = port self.port = port
@ -287,32 +287,32 @@ class ConnectionZeroconf(CommonConnection, ConnectionHandlersZeroconf):
check = self.connection.announce() check = self.connection.announce()
else: else:
self.connected = STATUS_LIST.index(show) self.connected = STATUS_LIST.index(show)
gajim.nec.push_incoming_event(SignedInEvent(None, conn=self)) app.nec.push_incoming_event(SignedInEvent(None, conn=self))
# stay offline when zeroconf does something wrong # stay offline when zeroconf does something wrong
if check: if check:
gajim.nec.push_incoming_event(OurShowEvent(None, conn=self, app.nec.push_incoming_event(OurShowEvent(None, conn=self,
show=show)) show=show))
else: else:
# show notification that avahi or system bus is down # show notification that avahi or system bus is down
self.connected = 0 self.connected = 0
gajim.nec.push_incoming_event(OurShowEvent(None, conn=self, app.nec.push_incoming_event(OurShowEvent(None, conn=self,
show='offline')) show='offline'))
self.status = 'offline' self.status = 'offline'
gajim.nec.push_incoming_event(ConnectionLostEvent(None, conn=self, app.nec.push_incoming_event(ConnectionLostEvent(None, conn=self,
title=_('Could not change status of account "%s"') % self.name, title=_('Could not change status of account "%s"') % self.name,
msg=_('Please check if avahi-daemon is running.'))) msg=_('Please check if avahi-daemon is running.')))
def _change_to_invisible(self, msg): def _change_to_invisible(self, msg):
if self.connection.remove_announce(): if self.connection.remove_announce():
gajim.nec.push_incoming_event(OurShowEvent(None, conn=self, app.nec.push_incoming_event(OurShowEvent(None, conn=self,
show='invisible')) show='invisible'))
else: else:
# show notification that avahi or system bus is down # show notification that avahi or system bus is down
gajim.nec.push_incoming_event(OurShowEvent(None, conn=self, app.nec.push_incoming_event(OurShowEvent(None, conn=self,
show='offline')) show='offline'))
self.status = 'offline' self.status = 'offline'
gajim.nec.push_incoming_event(ConnectionLostEvent(None, conn=self, app.nec.push_incoming_event(ConnectionLostEvent(None, conn=self,
title=_('Could not change status of account "%s"') % self.name, title=_('Could not change status of account "%s"') % self.name,
msg=_('Please check if avahi-daemon is running.'))) msg=_('Please check if avahi-daemon is running.')))
@ -321,14 +321,14 @@ class ConnectionZeroconf(CommonConnection, ConnectionHandlersZeroconf):
def _update_status(self, show, msg): def _update_status(self, show, msg):
if self.connection.set_show_msg(show, msg): if self.connection.set_show_msg(show, msg):
gajim.nec.push_incoming_event(OurShowEvent(None, conn=self, app.nec.push_incoming_event(OurShowEvent(None, conn=self,
show=show)) show=show))
else: else:
# show notification that avahi or system bus is down # show notification that avahi or system bus is down
gajim.nec.push_incoming_event(OurShowEvent(None, conn=self, app.nec.push_incoming_event(OurShowEvent(None, conn=self,
show='offline')) show='offline'))
self.status = 'offline' self.status = 'offline'
gajim.nec.push_incoming_event(ConnectionLostEvent(None, conn=self, app.nec.push_incoming_event(ConnectionLostEvent(None, conn=self,
title=_('Could not change status of account "%s"') % self.name, title=_('Could not change status of account "%s"') % self.name,
msg=_('Please check if avahi-daemon is running.'))) msg=_('Please check if avahi-daemon is running.')))
@ -337,7 +337,7 @@ class ConnectionZeroconf(CommonConnection, ConnectionHandlersZeroconf):
return return
def on_send_ok(stanza_id): def on_send_ok(stanza_id):
gajim.nec.push_incoming_event(MessageSentEvent(None, conn=self, app.nec.push_incoming_event(MessageSentEvent(None, conn=self,
jid=obj.jid, message=obj.message, keyID=obj.keyID, jid=obj.jid, message=obj.message, keyID=obj.keyID,
automatic_message=obj.automatic_message, chatstate=None, automatic_message=obj.automatic_message, chatstate=None,
stanza_id=stanza_id)) stanza_id=stanza_id))
@ -348,7 +348,7 @@ class ConnectionZeroconf(CommonConnection, ConnectionHandlersZeroconf):
def on_send_not_ok(reason): def on_send_not_ok(reason):
reason += ' ' + _('Your message could not be sent.') reason += ' ' + _('Your message could not be sent.')
gajim.nec.push_incoming_event(MessageErrorEvent(None, conn=self, app.nec.push_incoming_event(MessageErrorEvent(None, conn=self,
fjid=obj.jid, error_code=-1, error_msg=reason, msg=None, fjid=obj.jid, error_code=-1, error_msg=reason, msg=None,
time_=None, session=obj.session)) time_=None, session=obj.session))
@ -358,7 +358,7 @@ class ConnectionZeroconf(CommonConnection, ConnectionHandlersZeroconf):
if ret == -1: if ret == -1:
# Contact Offline # Contact Offline
gajim.nec.push_incoming_event(MessageErrorEvent(None, conn=self, app.nec.push_incoming_event(MessageErrorEvent(None, conn=self,
fjid=obj.jid, error_code=-1, error_msg=_( fjid=obj.jid, error_code=-1, error_msg=_(
'Contact is offline. Your message could not be sent.'), 'Contact is offline. Your message could not be sent.'),
msg=None, time_=None, session=obj.session)) msg=None, time_=None, session=obj.session))
@ -378,7 +378,7 @@ class ConnectionZeroconf(CommonConnection, ConnectionHandlersZeroconf):
thread_id = data[1] thread_id = data[1]
frm = data[0] frm = data[0]
session = self.get_or_create_session(frm, thread_id) session = self.get_or_create_session(frm, thread_id)
gajim.nec.push_incoming_event(MessageErrorEvent( app.nec.push_incoming_event(MessageErrorEvent(
None, conn=self, fjid=frm, error_code=-1, error_msg=_( None, conn=self, fjid=frm, error_code=-1, error_msg=_(
'Connection to host could not be established: Timeout while ' 'Connection to host could not be established: Timeout while '
'sending data.'), msg=None, time_=None, session=session)) 'sending data.'), msg=None, time_=None, session=session))

View File

@ -17,7 +17,7 @@
## along with Gajim. If not, see <http://www.gnu.org/licenses/>. ## along with Gajim. If not, see <http://www.gnu.org/licenses/>.
## ##
from gajim.common import gajim from gajim.common import app
import select import select
import re import re
from gajim.common.zeroconf.zeroconf import Constant from gajim.common.zeroconf.zeroconf import Constant
@ -56,7 +56,7 @@ class Zeroconf:
def browse_callback(self, sdRef, flags, interfaceIndex, errorCode, serviceName, regtype, replyDomain): def browse_callback(self, sdRef, flags, interfaceIndex, errorCode, serviceName, regtype, replyDomain):
gajim.log.debug('Found service %s in domain %s on %i(type: %s).' % (serviceName, replyDomain, interfaceIndex, regtype)) app.log.debug('Found service %s in domain %s on %i(type: %s).' % (serviceName, replyDomain, interfaceIndex, regtype))
if not self.connected: if not self.connected:
return return
if errorCode != pybonjour.kDNSServiceErr_NoError: if errorCode != pybonjour.kDNSServiceErr_NoError:
@ -72,7 +72,7 @@ class Zeroconf:
while not self.resolved: while not self.resolved:
ready = select.select([resolve_sdRef], [], [], resolve_timeout) ready = select.select([resolve_sdRef], [], [], resolve_timeout)
if resolve_sdRef not in ready[0]: if resolve_sdRef not in ready[0]:
gajim.log.debug('Resolve timed out') app.log.debug('Resolve timed out')
break break
pybonjour.DNSServiceProcessResult(resolve_sdRef) pybonjour.DNSServiceProcessResult(resolve_sdRef)
else: else:
@ -81,7 +81,7 @@ class Zeroconf:
resolve_sdRef.close() resolve_sdRef.close()
def remove_service_callback(self, name): def remove_service_callback(self, name):
gajim.log.debug('Service %s disappeared.' % name) app.log.debug('Service %s disappeared.' % name)
if not self.connected: if not self.connected:
return return
if name != self.name: if name != self.name:
@ -121,8 +121,8 @@ class Zeroconf:
txt = pybonjour.TXTRecord.parse(txtRecord) txt = pybonjour.TXTRecord.parse(txtRecord)
gajim.log.debug('Service data for service %s on %i:' % (fullname, interfaceIndex)) app.log.debug('Service data for service %s on %i:' % (fullname, interfaceIndex))
gajim.log.debug('Host %s, port %i, TXT data: %s' % (hosttarget, port, txt._items)) app.log.debug('Host %s, port %i, TXT data: %s' % (hosttarget, port, txt._items))
if not self.connected: if not self.connected:
return return
@ -176,11 +176,11 @@ class Zeroconf:
def service_added_callback(self, sdRef, flags, errorCode, name, regtype, domain): def service_added_callback(self, sdRef, flags, errorCode, name, regtype, domain):
if errorCode == pybonjour.kDNSServiceErr_NoError: if errorCode == pybonjour.kDNSServiceErr_NoError:
gajim.log.debug('Service successfully added') app.log.debug('Service successfully added')
def service_add_fail_callback(self, err): def service_add_fail_callback(self, err):
if err[0][0] == pybonjour.kDNSServiceErr_NameConflict: if err[0][0] == pybonjour.kDNSServiceErr_NameConflict:
gajim.log.debug('Error while adding service. %s' % str(err)) app.log.debug('Error while adding service. %s' % str(err))
parts = self.username.split(' ') parts = self.username.split(' ')
#check if last part is a number and if, increment it #check if last part is a number and if, increment it
@ -230,7 +230,7 @@ class Zeroconf:
except pybonjour.BonjourError as e: except pybonjour.BonjourError as e:
self.service_add_fail_callback(e) self.service_add_fail_callback(e)
else: else:
gajim.log.debug('Publishing service %s of type %s' % (self.name, self.stype)) app.log.debug('Publishing service %s of type %s' % (self.name, self.stype))
ready = select.select([sdRef], [], [], resolve_timeout) ready = select.select([sdRef], [], [], resolve_timeout)
if sdRef in ready[0]: if sdRef in ready[0]:
@ -252,7 +252,7 @@ class Zeroconf:
self.announced = False self.announced = False
return True return True
except pybonjour.BonjourError as e: except pybonjour.BonjourError as e:
gajim.log.debug(e) app.log.debug(e)
return False return False
@ -282,7 +282,7 @@ class Zeroconf:
self.remove_announce() self.remove_announce()
def browse_domain(self, domain=None): def browse_domain(self, domain=None):
gajim.log.debug('starting to browse') app.log.debug('starting to browse')
try: try:
self.browse_sdRef = pybonjour.DNSServiceBrowse(regtype=self.stype, domain=domain, callBack=self.browse_callback) self.browse_sdRef = pybonjour.DNSServiceBrowse(regtype=self.stype, domain=domain, callBack=self.browse_callback)
except pybonjour.BonjourError as e: except pybonjour.BonjourError as e:
@ -310,7 +310,7 @@ class Zeroconf:
try: try:
ready = select.select([resolve_sdRef], [], [], resolve_timeout) ready = select.select([resolve_sdRef], [], [], resolve_timeout)
if resolve_sdRef not in ready[0]: if resolve_sdRef not in ready[0]:
gajim.log.debug('Resolve timed out (in resolve_all)') app.log.debug('Resolve timed out (in resolve_all)')
break break
pybonjour.DNSServiceProcessResult(resolve_sdRef) pybonjour.DNSServiceProcessResult(resolve_sdRef)
finally: finally:

File diff suppressed because it is too large Load Diff

View File

@ -43,7 +43,7 @@ import queue
import urllib import urllib
from gajim import gtkgui_helpers from gajim import gtkgui_helpers
from gajim.common import gajim from gajim.common import app
from gajim.common import helpers from gajim.common import helpers
from gajim.common import i18n from gajim.common import i18n
from calendar import timegm from calendar import timegm
@ -234,38 +234,38 @@ class ConversationTextview(GObject.GObject):
buffer_.create_mark('end', end_iter, False) buffer_.create_mark('end', end_iter, False)
self.tagIn = buffer_.create_tag('incoming') self.tagIn = buffer_.create_tag('incoming')
color = gajim.config.get('inmsgcolor') color = app.config.get('inmsgcolor')
font = Pango.FontDescription(gajim.config.get('inmsgfont')) font = Pango.FontDescription(app.config.get('inmsgfont'))
self.tagIn.set_property('foreground', color) self.tagIn.set_property('foreground', color)
self.tagIn.set_property('font-desc', font) self.tagIn.set_property('font-desc', font)
self.tagOut = buffer_.create_tag('outgoing') self.tagOut = buffer_.create_tag('outgoing')
color = gajim.config.get('outmsgcolor') color = app.config.get('outmsgcolor')
font = Pango.FontDescription(gajim.config.get('outmsgfont')) font = Pango.FontDescription(app.config.get('outmsgfont'))
self.tagOut.set_property('foreground', color) self.tagOut.set_property('foreground', color)
self.tagOut.set_property('font-desc', font) self.tagOut.set_property('font-desc', font)
self.tagStatus = buffer_.create_tag('status') self.tagStatus = buffer_.create_tag('status')
color = gajim.config.get('statusmsgcolor') color = app.config.get('statusmsgcolor')
font = Pango.FontDescription(gajim.config.get('satusmsgfont')) font = Pango.FontDescription(app.config.get('satusmsgfont'))
self.tagStatus.set_property('foreground', color) self.tagStatus.set_property('foreground', color)
self.tagStatus.set_property('font-desc', font) self.tagStatus.set_property('font-desc', font)
self.tagInText = buffer_.create_tag('incomingtxt') self.tagInText = buffer_.create_tag('incomingtxt')
color = gajim.config.get('inmsgtxtcolor') color = app.config.get('inmsgtxtcolor')
font = Pango.FontDescription(gajim.config.get('inmsgtxtfont')) font = Pango.FontDescription(app.config.get('inmsgtxtfont'))
if color: if color:
self.tagInText.set_property('foreground', color) self.tagInText.set_property('foreground', color)
self.tagInText.set_property('font-desc', font) self.tagInText.set_property('font-desc', font)
self.tagOutText = buffer_.create_tag('outgoingtxt') self.tagOutText = buffer_.create_tag('outgoingtxt')
color = gajim.config.get('outmsgtxtcolor') color = app.config.get('outmsgtxtcolor')
if color: if color:
font = Pango.FontDescription(gajim.config.get('outmsgtxtfont')) font = Pango.FontDescription(app.config.get('outmsgtxtfont'))
self.tagOutText.set_property('foreground', color) self.tagOutText.set_property('foreground', color)
self.tagOutText.set_property('font-desc', font) self.tagOutText.set_property('font-desc', font)
colors = gajim.config.get('gc_nicknames_colors') colors = app.config.get('gc_nicknames_colors')
colors = colors.split(':') colors = colors.split(':')
for i, color in enumerate(colors): for i, color in enumerate(colors):
tagname = 'gc_nickname_color_' + str(i) tagname = 'gc_nickname_color_' + str(i)
@ -273,7 +273,7 @@ class ConversationTextview(GObject.GObject):
tag.set_property('foreground', color) tag.set_property('foreground', color)
self.tagMarked = buffer_.create_tag('marked') self.tagMarked = buffer_.create_tag('marked')
color = gajim.config.get('markedmsgcolor') color = app.config.get('markedmsgcolor')
self.tagMarked.set_property('foreground', color) self.tagMarked.set_property('foreground', color)
self.tagMarked.set_property('weight', Pango.Weight.BOLD) self.tagMarked.set_property('weight', Pango.Weight.BOLD)
@ -288,7 +288,7 @@ class ConversationTextview(GObject.GObject):
tag.set_property('scale', 0.8333333333333) tag.set_property('scale', 0.8333333333333)
tag = buffer_.create_tag('restored_message') tag = buffer_.create_tag('restored_message')
color = gajim.config.get('restored_messages_color') color = app.config.get('restored_messages_color')
tag.set_property('foreground', color) tag.set_property('foreground', color)
self.tv.create_tags() self.tv.create_tags()
@ -309,7 +309,7 @@ class ConversationTextview(GObject.GObject):
tag.set_property('foreground', '#73d216') tag.set_property('foreground', '#73d216')
# One mark at the begining then 2 marks between each lines # One mark at the begining then 2 marks between each lines
size = gajim.config.get('max_conversation_lines') size = app.config.get('max_conversation_lines')
size = 2 * size - 1 size = 2 * size - 1
self.marks_queue = queue.Queue(size) self.marks_queue = queue.Queue(size)
@ -367,13 +367,13 @@ class ConversationTextview(GObject.GObject):
self.tv.destroy() self.tv.destroy()
def update_tags(self): def update_tags(self):
self.tagIn.set_property('foreground', gajim.config.get('inmsgcolor')) self.tagIn.set_property('foreground', app.config.get('inmsgcolor'))
self.tagOut.set_property('foreground', gajim.config.get('outmsgcolor')) self.tagOut.set_property('foreground', app.config.get('outmsgcolor'))
self.tagStatus.set_property('foreground', self.tagStatus.set_property('foreground',
gajim.config.get('statusmsgcolor')) app.config.get('statusmsgcolor'))
self.tagMarked.set_property('foreground', self.tagMarked.set_property('foreground',
gajim.config.get('markedmsgcolor')) app.config.get('markedmsgcolor'))
color = gajim.config.get('urlmsgcolor') color = app.config.get('urlmsgcolor')
self.tv.tagURL.set_property('foreground', color) self.tv.tagURL.set_property('foreground', color)
self.tv.tagMail.set_property('foreground', color) self.tv.tagMail.set_property('foreground', color)
self.tv.tagXMPP.set_property('foreground', color) self.tv.tagXMPP.set_property('foreground', color)
@ -450,7 +450,7 @@ class ConversationTextview(GObject.GObject):
buffer_ = self.tv.get_buffer() buffer_ = self.tv.get_buffer()
buffer_.begin_user_action() buffer_.begin_user_action()
if gajim.config.get('positive_184_ack'): if app.config.get('positive_184_ack'):
begin_iter = buffer_.get_iter_at_mark(self.xep0184_marks[id_]) begin_iter = buffer_.get_iter_at_mark(self.xep0184_marks[id_])
buffer_.insert_with_tags_by_name(begin_iter, '', buffer_.insert_with_tags_by_name(begin_iter, '',
'xep0184-received') 'xep0184-received')
@ -555,7 +555,7 @@ class ConversationTextview(GObject.GObject):
buffer_ = self.tv.get_buffer() buffer_ = self.tv.get_buffer()
start, end = buffer_.get_bounds() start, end = buffer_.get_bounds()
buffer_.delete(start, end) buffer_.delete(start, end)
size = gajim.config.get('max_conversation_lines') size = app.config.get('max_conversation_lines')
size = 2 * size - 1 size = 2 * size - 1
self.marks_queue = queue.Queue(size) self.marks_queue = queue.Queue(size)
self.focus_out_end_mark = None self.focus_out_end_mark = None
@ -606,29 +606,29 @@ class ConversationTextview(GObject.GObject):
phrase_for_url = urllib.parse.quote(self.selected_phrase.encode( phrase_for_url = urllib.parse.quote(self.selected_phrase.encode(
'utf-8')) 'utf-8'))
always_use_en = gajim.config.get('always_english_wikipedia') always_use_en = app.config.get('always_english_wikipedia')
if always_use_en: if always_use_en:
link = 'http://en.wikipedia.org/wiki/Special:Search?search=%s'\ link = 'http://en.wikipedia.org/wiki/Special:Search?search=%s'\
% phrase_for_url % phrase_for_url
else: else:
link = 'http://%s.wikipedia.org/wiki/Special:Search?search=%s'\ link = 'http://%s.wikipedia.org/wiki/Special:Search?search=%s'\
% (gajim.LANG, phrase_for_url) % (app.LANG, phrase_for_url)
item = Gtk.MenuItem.new_with_mnemonic(_('Read _Wikipedia Article')) item = Gtk.MenuItem.new_with_mnemonic(_('Read _Wikipedia Article'))
id_ = item.connect('activate', self.visit_url_from_menuitem, link) id_ = item.connect('activate', self.visit_url_from_menuitem, link)
self.handlers[id_] = item self.handlers[id_] = item
submenu.append(item) submenu.append(item)
item = Gtk.MenuItem.new_with_mnemonic(_('Look it up in _Dictionary')) item = Gtk.MenuItem.new_with_mnemonic(_('Look it up in _Dictionary'))
dict_link = gajim.config.get('dictionary_url') dict_link = app.config.get('dictionary_url')
if dict_link == 'WIKTIONARY': if dict_link == 'WIKTIONARY':
# special link (yeah undocumented but default) # special link (yeah undocumented but default)
always_use_en = gajim.config.get('always_english_wiktionary') always_use_en = app.config.get('always_english_wiktionary')
if always_use_en: if always_use_en:
link = 'http://en.wiktionary.org/wiki/Special:Search?search=%s'\ link = 'http://en.wiktionary.org/wiki/Special:Search?search=%s'\
% phrase_for_url % phrase_for_url
else: else:
link = 'http://%s.wiktionary.org/wiki/Special:Search?search=%s'\ link = 'http://%s.wiktionary.org/wiki/Special:Search?search=%s'\
% (gajim.LANG, phrase_for_url) % (app.LANG, phrase_for_url)
id_ = item.connect('activate', self.visit_url_from_menuitem, link) id_ = item.connect('activate', self.visit_url_from_menuitem, link)
self.handlers[id_] = item self.handlers[id_] = item
else: else:
@ -645,7 +645,7 @@ class ConversationTextview(GObject.GObject):
submenu.append(item) submenu.append(item)
search_link = gajim.config.get('search_engine') search_link = app.config.get('search_engine')
if search_link.find('%s') == -1: if search_link.find('%s') == -1:
# we must have %s in the url # we must have %s in the url
item = Gtk.MenuItem.new_with_label( item = Gtk.MenuItem.new_with_label(
@ -716,13 +716,13 @@ class ConversationTextview(GObject.GObject):
clip.set_text(text, -1) clip.set_text(text, -1)
def on_start_chat_activate(self, widget, jid): def on_start_chat_activate(self, widget, jid):
gajim.interface.new_chat_from_jid(self.account, jid) app.interface.new_chat_from_jid(self.account, jid)
def on_join_group_chat_menuitem_activate(self, widget, room_jid): def on_join_group_chat_menuitem_activate(self, widget, room_jid):
if 'join_gc' in gajim.interface.instances[self.account]: if 'join_gc' in app.interface.instances[self.account]:
instance = gajim.interface.instances[self.account]['join_gc'] instance = app.interface.instances[self.account]['join_gc']
instance.xml.get_object('room_jid_entry').set_text(room_jid) instance.xml.get_object('room_jid_entry').set_text(room_jid)
gajim.interface.instances[self.account]['join_gc'].window.present() app.interface.instances[self.account]['join_gc'].window.present()
else: else:
try: try:
dialogs.JoinGroupchatWindow(account=self.account, room_jid=room_jid) dialogs.JoinGroupchatWindow(account=self.account, room_jid=room_jid)
@ -766,7 +766,7 @@ class ConversationTextview(GObject.GObject):
self.on_join_group_chat_menuitem_activate, text) self.on_join_group_chat_menuitem_activate, text)
self.handlers[id_] = childs[6] self.handlers[id_] = childs[6]
if self.account and gajim.connections[self.account].\ if self.account and app.connections[self.account].\
roster_supported: roster_supported:
id_ = childs[7].connect('activate', id_ = childs[7].connect('activate',
self.on_add_to_roster_activate, text) self.on_add_to_roster_activate, text)
@ -813,7 +813,7 @@ class ConversationTextview(GObject.GObject):
kind = 'xmpp' kind = 'xmpp'
elif word.startswith('mailto:'): elif word.startswith('mailto:'):
kind = 'mail' kind = 'mail'
elif gajim.interface.sth_at_sth_dot_sth_re.match(word): elif app.interface.sth_at_sth_dot_sth_re.match(word):
# it's a JID or mail # it's a JID or mail
kind = 'sth_at_sth' kind = 'sth_at_sth'
else: else:
@ -823,7 +823,7 @@ class ConversationTextview(GObject.GObject):
return True return True
else: else:
self.plugin_modified = False self.plugin_modified = False
gajim.plugin_manager.extension_point( app.plugin_manager.extension_point(
'hyperlink_handler', word, kind, self, 'hyperlink_handler', word, kind, self,
self.tv.get_toplevel()) self.tv.get_toplevel())
if self.plugin_modified: if self.plugin_modified:
@ -875,11 +875,11 @@ class ConversationTextview(GObject.GObject):
specials_limit = 100 specials_limit = 100
# basic: links + mail + formatting is always checked (we like that) # basic: links + mail + formatting is always checked (we like that)
if gajim.config.get('emoticons_theme') and graphics: if app.config.get('emoticons_theme') and graphics:
# search for emoticons & urls # search for emoticons & urls
iterator = gajim.interface.emot_and_basic_re.finditer(otext) iterator = app.interface.emot_and_basic_re.finditer(otext)
else: # search for just urls + mail + formatting else: # search for just urls + mail + formatting
iterator = gajim.interface.basic_pattern_re.finditer(otext) iterator = app.interface.basic_pattern_re.finditer(otext)
if iter_: if iter_:
end_iter = iter_ end_iter = iter_
else: else:
@ -921,7 +921,7 @@ class ConversationTextview(GObject.GObject):
# PluginSystem: adding GUI extension point for ConversationTextview # PluginSystem: adding GUI extension point for ConversationTextview
self.plugin_modified = False self.plugin_modified = False
gajim.plugin_manager.extension_point('print_special_text', self, app.plugin_manager.extension_point('print_special_text', self,
special_text, other_tags, graphics, additional_data) special_text, other_tags, graphics, additional_data)
if self.plugin_modified: if self.plugin_modified:
return return
@ -931,7 +931,7 @@ class ConversationTextview(GObject.GObject):
text_is_valid_uri = False text_is_valid_uri = False
is_xhtml_link = None is_xhtml_link = None
show_ascii_formatting_chars = \ show_ascii_formatting_chars = \
gajim.config.get('show_ascii_formatting_chars') app.config.get('show_ascii_formatting_chars')
buffer_ = self.tv.get_buffer() buffer_ = self.tv.get_buffer()
# Detect XHTML-IM link # Detect XHTML-IM link
@ -943,7 +943,7 @@ class ConversationTextview(GObject.GObject):
break break
# Check if we accept this as an uri # Check if we accept this as an uri
schemes = gajim.config.get('uri_schemes').split() schemes = app.config.get('uri_schemes').split()
for scheme in schemes: for scheme in schemes:
if special_text.startswith(scheme): if special_text.startswith(scheme):
text_is_valid_uri = True text_is_valid_uri = True
@ -955,7 +955,7 @@ class ConversationTextview(GObject.GObject):
end_iter = buffer_.get_end_iter() end_iter = buffer_.get_end_iter()
pixbuf = emoticons.get_pixbuf(possible_emot_ascii_caps) pixbuf = emoticons.get_pixbuf(possible_emot_ascii_caps)
if gajim.config.get('emoticons_theme') and pixbuf and graphics: if app.config.get('emoticons_theme') and pixbuf and graphics:
# it's an emoticon # it's an emoticon
anchor = buffer_.create_child_anchor(end_iter) anchor = buffer_.create_child_anchor(end_iter)
img = TextViewImage(anchor, img = TextViewImage(anchor,
@ -972,7 +972,7 @@ class ConversationTextview(GObject.GObject):
tags.append('mail') tags.append('mail')
elif special_text.startswith('xmpp:') and not is_xhtml_link: elif special_text.startswith('xmpp:') and not is_xhtml_link:
tags.append('xmpp') tags.append('xmpp')
elif gajim.interface.sth_at_sth_dot_sth_re.match(special_text) and\ elif app.interface.sth_at_sth_dot_sth_re.match(special_text) and\
not is_xhtml_link: not is_xhtml_link:
# it's a JID or mail # it's a JID or mail
tags.append('sth_at_sth') tags.append('sth_at_sth')
@ -1191,12 +1191,12 @@ class ConversationTextview(GObject.GObject):
text_tags.append(other_text_tag) text_tags.append(other_text_tag)
else: # not status nor /me else: # not status nor /me
if gajim.config.get('chat_merge_consecutive_nickname'): if app.config.get('chat_merge_consecutive_nickname'):
if kind != old_kind or self.just_cleared: if kind != old_kind or self.just_cleared:
self.print_name(name, kind, other_tags_for_name, self.print_name(name, kind, other_tags_for_name,
direction_mark=direction_mark, iter_=iter_) direction_mark=direction_mark, iter_=iter_)
else: else:
self.print_real_text(gajim.config.get( self.print_real_text(app.config.get(
'chat_merge_consecutive_nickname_indent'), 'chat_merge_consecutive_nickname_indent'),
mark=insert_mark, additional_data=additional_data) mark=insert_mark, additional_data=additional_data)
else: else:
@ -1283,7 +1283,7 @@ class ConversationTextview(GObject.GObject):
format_ += i18n.direction_mark + day_str + direction_mark + ' ' format_ += i18n.direction_mark + day_str + direction_mark + ' '
else: else:
format_ += day_str + ' ' format_ += day_str + ' '
timestamp_str = gajim.config.get('time_stamp') timestamp_str = app.config.get('time_stamp')
timestamp_str = helpers.from_one_line(timestamp_str) timestamp_str = helpers.from_one_line(timestamp_str)
format_ += timestamp_str format_ += timestamp_str
tim_format = time.strftime(format_, tim) tim_format = time.strftime(format_, tim)
@ -1298,7 +1298,7 @@ class ConversationTextview(GObject.GObject):
def print_time(self, text, kind, tim, simple, direction_mark, other_tags_for_time, iter_): def print_time(self, text, kind, tim, simple, direction_mark, other_tags_for_time, iter_):
local_tim = time.localtime(tim) local_tim = time.localtime(tim)
buffer_ = self.tv.get_buffer() buffer_ = self.tv.get_buffer()
current_print_time = gajim.config.get('print_time') current_print_time = app.config.get('print_time')
if current_print_time == 'always' and kind != 'info' and not simple: if current_print_time == 'always' and kind != 'info' and not simple:
timestamp_str = self.get_time_to_show(local_tim, direction_mark) timestamp_str = self.get_time_to_show(local_tim, direction_mark)
@ -1310,14 +1310,14 @@ class ConversationTextview(GObject.GObject):
else: else:
buffer_.insert(iter_, timestamp) buffer_.insert(iter_, timestamp)
elif current_print_time == 'sometimes' and kind != 'info' and not simple: elif current_print_time == 'sometimes' and kind != 'info' and not simple:
every_foo_seconds = 60 * gajim.config.get( every_foo_seconds = 60 * app.config.get(
'print_ichat_every_foo_minutes') 'print_ichat_every_foo_minutes')
seconds_passed = tim - self.last_time_printout seconds_passed = tim - self.last_time_printout
if seconds_passed > every_foo_seconds: if seconds_passed > every_foo_seconds:
self.last_time_printout = tim self.last_time_printout = tim
if gajim.config.get('print_time_fuzzy') > 0: if app.config.get('print_time_fuzzy') > 0:
tim_format = self.fc.fuzzy_time( tim_format = self.fc.fuzzy_time(
gajim.config.get('print_time_fuzzy'), tim) app.config.get('print_time_fuzzy'), tim)
else: else:
tim_format = self.get_time_to_show(local_tim, direction_mark) tim_format = self.get_time_to_show(local_tim, direction_mark)
buffer_.insert_with_tags_by_name(iter_, tim_format + '\n', buffer_.insert_with_tags_by_name(iter_, tim_format + '\n',
@ -1352,9 +1352,9 @@ class ConversationTextview(GObject.GObject):
if other_tags_for_name: if other_tags_for_name:
name_tags = other_tags_for_name[:] # create a new list name_tags = other_tags_for_name[:] # create a new list
name_tags.append(kind) name_tags.append(kind)
before_str = gajim.config.get('before_nickname') before_str = app.config.get('before_nickname')
before_str = helpers.from_one_line(before_str) before_str = helpers.from_one_line(before_str)
after_str = gajim.config.get('after_nickname') after_str = app.config.get('after_nickname')
after_str = helpers.from_one_line(after_str) after_str = helpers.from_one_line(after_str)
format_ = before_str + name + direction_mark + after_str + ' ' format_ = before_str + name + direction_mark + after_str + ' '
buffer_.insert_with_tags_by_name(end_iter, format_, *name_tags) buffer_.insert_with_tags_by_name(end_iter, format_, *name_tags)
@ -1389,8 +1389,8 @@ class ConversationTextview(GObject.GObject):
self.tv.display_html(xhtml, self.tv, self, iter_=iter_) self.tv.display_html(xhtml, self.tv, self, iter_=iter_)
return return
except Exception as e: except Exception as e:
gajim.log.debug('Error processing xhtml: ' + str(e)) app.log.debug('Error processing xhtml: ' + str(e))
gajim.log.debug('with |' + xhtml + '|') app.log.debug('with |' + xhtml + '|')
# /me is replaced by name if name is given # /me is replaced by name if name is given
if name and (text.startswith('/me ') or text.startswith('/me\n')): if name and (text.startswith('/me ') or text.startswith('/me\n')):
@ -1399,7 +1399,7 @@ class ConversationTextview(GObject.GObject):
# PluginSystem: adding GUI extension point for ConversationTextview # PluginSystem: adding GUI extension point for ConversationTextview
self.plugin_modified = False self.plugin_modified = False
gajim.plugin_manager.extension_point('print_real_text', self, app.plugin_manager.extension_point('print_real_text', self,
text, text_tags, graphics, iter_, additional_data) text, text_tags, graphics, iter_, additional_data)
if self.plugin_modified: if self.plugin_modified:

File diff suppressed because it is too large Load Diff

View File

@ -59,7 +59,7 @@ from gajim import adhoc_commands
from gajim import search_window from gajim import search_window
from gajim import gui_menu_builder from gajim import gui_menu_builder
from gajim.common import gajim from gajim.common import app
import nbxmpp import nbxmpp
from gajim.common.exceptions import GajimGeneralException from gajim.common.exceptions import GajimGeneralException
from gajim.common import helpers from gajim.common import helpers
@ -264,23 +264,23 @@ class ServicesCache:
self._info = CacheDictionary(0, getrefresh = False) self._info = CacheDictionary(0, getrefresh = False)
self._subscriptions = CacheDictionary(5, getrefresh=False) self._subscriptions = CacheDictionary(5, getrefresh=False)
self._cbs = {} self._cbs = {}
gajim.ged.register_event_handler('agent-items-received', ged.GUI1, app.ged.register_event_handler('agent-items-received', ged.GUI1,
self._nec_agent_items_received) self._nec_agent_items_received)
gajim.ged.register_event_handler('agent-items-error-received', ged.GUI1, app.ged.register_event_handler('agent-items-error-received', ged.GUI1,
self._nec_agent_items_error_received) self._nec_agent_items_error_received)
gajim.ged.register_event_handler('agent-info-received', ged.GUI1, app.ged.register_event_handler('agent-info-received', ged.GUI1,
self._nec_agent_info_received) self._nec_agent_info_received)
gajim.ged.register_event_handler('agent-info-error-received', ged.GUI1, app.ged.register_event_handler('agent-info-error-received', ged.GUI1,
self._nec_agent_info_error_received) self._nec_agent_info_error_received)
def __del__(self): def __del__(self):
gajim.ged.remove_event_handler('agent-items-received', ged.GUI1, app.ged.remove_event_handler('agent-items-received', ged.GUI1,
self._nec_agent_items_received) self._nec_agent_items_received)
gajim.ged.remove_event_handler('agent-items-error-received', ged.GUI1, app.ged.remove_event_handler('agent-items-error-received', ged.GUI1,
self._nec_agent_items_error_received) self._nec_agent_items_error_received)
gajim.ged.remove_event_handler('agent-info-received', ged.GUI1, app.ged.remove_event_handler('agent-info-received', ged.GUI1,
self._nec_agent_info_received) self._nec_agent_info_received)
gajim.ged.remove_event_handler('agent-info-error-received', ged.GUI1, app.ged.remove_event_handler('agent-info-error-received', ged.GUI1,
self._nec_agent_info_error_received) self._nec_agent_info_error_received)
def cleanup(self): def cleanup(self):
@ -397,7 +397,7 @@ class ServicesCache:
self._cbs[cbkey].append(cb) self._cbs[cbkey].append(cb)
else: else:
self._cbs[cbkey] = [cb] self._cbs[cbkey] = [cb]
gajim.connections[self.account].discoverInfo(jid, node) app.connections[self.account].discoverInfo(jid, node)
def get_items(self, jid, node, cb, force=False, nofetch=False, args=()): def get_items(self, jid, node, cb, force=False, nofetch=False, args=()):
""" """
@ -421,7 +421,7 @@ class ServicesCache:
self._cbs[cbkey].append(cb) self._cbs[cbkey].append(cb)
else: else:
self._cbs[cbkey] = [cb] self._cbs[cbkey] = [cb]
gajim.connections[self.account].discoverItems(jid, node) app.connections[self.account].discoverItems(jid, node)
def _nec_agent_info_received(self, obj): def _nec_agent_info_received(self, obj):
""" """
@ -521,7 +521,7 @@ class ServiceDiscoveryWindow(object):
self._account = account self._account = account
self.parent = parent self.parent = parent
if not jid: if not jid:
jid = gajim.config.get_per('accounts', account, 'hostname') jid = app.config.get_per('accounts', account, 'hostname')
node = '' node = ''
self.jid = None self.jid = None
@ -532,17 +532,17 @@ class ServiceDiscoveryWindow(object):
self.reloading = False self.reloading = False
# Check connection # Check connection
if gajim.connections[account].connected < 2: if app.connections[account].connected < 2:
dialogs.ErrorDialog(_('You are not connected to the server'), dialogs.ErrorDialog(_('You are not connected to the server'),
_('Without a connection, you can not browse available services')) _('Without a connection, you can not browse available services'))
raise RuntimeError('You must be connected to browse services') raise RuntimeError('You must be connected to browse services')
# Get a ServicesCache object. # Get a ServicesCache object.
try: try:
self.cache = gajim.connections[account].services_cache self.cache = app.connections[account].services_cache
except AttributeError: except AttributeError:
self.cache = ServicesCache(account) self.cache = ServicesCache(account)
gajim.connections[account].services_cache = self.cache app.connections[account].services_cache = self.cache
if initial_identities: if initial_identities:
self.cache._on_agent_info(jid, node, initial_identities, [], None) self.cache._on_agent_info(jid, node, initial_identities, [], None)
@ -572,7 +572,7 @@ _('Without a connection, you can not browse available services'))
self.address_comboboxtext_entry = self.xml.get_object( self.address_comboboxtext_entry = self.xml.get_object(
'address_entry') 'address_entry')
self.latest_addresses = gajim.config.get( self.latest_addresses = app.config.get(
'latest_disco_addresses').split() 'latest_disco_addresses').split()
if jid in self.latest_addresses: if jid in self.latest_addresses:
self.latest_addresses.remove(jid) self.latest_addresses.remove(jid)
@ -630,9 +630,9 @@ _('Without a connection, you can not browse available services'))
self.banner_icon.hide() # Just clearing it doesn't work self.banner_icon.hide() # Just clearing it doesn't work
def _set_window_banner_text(self, text, text_after = None): def _set_window_banner_text(self, text, text_after = None):
theme = gajim.config.get('roster_theme') theme = app.config.get('roster_theme')
bannerfont = gajim.config.get_per('themes', theme, 'bannerfont') bannerfont = app.config.get_per('themes', theme, 'bannerfont')
bannerfontattrs = gajim.config.get_per('themes', theme, bannerfontattrs = app.config.get_per('themes', theme,
'bannerfontattrs') 'bannerfontattrs')
if bannerfont: if bannerfont:
@ -671,8 +671,8 @@ _('Without a connection, you can not browse available services'))
# self.browser._get_agent_address() would break when no browser. # self.browser._get_agent_address() would break when no browser.
addr = get_agent_address(self.jid, self.node) addr = get_agent_address(self.jid, self.node)
if addr in gajim.interface.instances[self.account]['disco']: if addr in app.interface.instances[self.account]['disco']:
del gajim.interface.instances[self.account]['disco'][addr] del app.interface.instances[self.account]['disco'][addr]
if self.browser: if self.browser:
self.window.hide() self.window.hide()
@ -710,10 +710,10 @@ _('Without a connection, you can not browse available services'))
# Update the window list # Update the window list
if self.jid: if self.jid:
old_addr = get_agent_address(self.jid, self.node) old_addr = get_agent_address(self.jid, self.node)
if old_addr in gajim.interface.instances[self.account]['disco']: if old_addr in app.interface.instances[self.account]['disco']:
del gajim.interface.instances[self.account]['disco'][old_addr] del app.interface.instances[self.account]['disco'][old_addr]
addr = get_agent_address(jid, node) addr = get_agent_address(jid, node)
gajim.interface.instances[self.account]['disco'][addr] = self app.interface.instances[self.account]['disco'][addr] = self
# We need to store these, self.browser is not always available. # We need to store these, self.browser is not always available.
self.jid = jid self.jid = jid
self.node = node self.node = node
@ -752,7 +752,7 @@ _('Without a connection, you can not browse available services'))
Open an agent. By default, this happens in a new window Open an agent. By default, this happens in a new window
""" """
try: try:
win = gajim.interface.instances[self.account]['disco']\ win = app.interface.instances[self.account]['disco']\
[get_agent_address(jid, node)] [get_agent_address(jid, node)]
win.window.present() win.window.present()
return return
@ -802,7 +802,7 @@ _('Without a connection, you can not browse available services'))
self.address_comboboxtext.get_model().clear() self.address_comboboxtext.get_model().clear()
for j in self.latest_addresses: for j in self.latest_addresses:
self.address_comboboxtext.append_text(j) self.address_comboboxtext.append_text(j)
gajim.config.set('latest_disco_addresses', app.config.set('latest_disco_addresses',
' '.join(self.latest_addresses)) ' '.join(self.latest_addresses))
self.travel(jid, '') self.travel(jid, '')
@ -1187,7 +1187,7 @@ class ToplevelAgentBrowser(AgentBrowser):
descr = "<b>%s</b>" % addr descr = "<b>%s</b>" % addr
# Guess which kind of service this is # Guess which kind of service this is
identities = [] identities = []
type_ = gajim.get_transport_name_from_jid(self.jid, type_ = app.get_transport_name_from_jid(self.jid,
use_config_setting=False) use_config_setting=False)
if type_: if type_:
identity = {'category': '_jid', 'type': type_} identity = {'category': '_jid', 'type': type_}
@ -1227,8 +1227,8 @@ class ToplevelAgentBrowser(AgentBrowser):
# Normal/succes # Normal/succes
cell.set_property('foreground_set', False) cell.set_property('foreground_set', False)
else: else:
theme = gajim.config.get('roster_theme') theme = app.config.get('roster_theme')
bgcolor = gajim.config.get_per('themes', theme, 'groupbgcolor') bgcolor = app.config.get_per('themes', theme, 'groupbgcolor')
if bgcolor: if bgcolor:
cell.set_property('cell_background_set', True) cell.set_property('cell_background_set', True)
cell.set_property('foreground_set', False) cell.set_property('foreground_set', False)
@ -1352,19 +1352,19 @@ class ToplevelAgentBrowser(AgentBrowser):
if not iter_: if not iter_:
return return
service = model[iter_][0] service = model[iter_][0]
if service in gajim.interface.instances[self.account]['search']: if service in app.interface.instances[self.account]['search']:
gajim.interface.instances[self.account]['search'][service].window.\ app.interface.instances[self.account]['search'][service].window.\
present() present()
else: else:
gajim.interface.instances[self.account]['search'][service] = \ app.interface.instances[self.account]['search'][service] = \
search_window.SearchWindow(self.account, service) search_window.SearchWindow(self.account, service)
def cleanup(self): def cleanup(self):
AgentBrowser.cleanup(self) AgentBrowser.cleanup(self)
def update_theme(self): def update_theme(self):
theme = gajim.config.get('roster_theme') theme = app.config.get('roster_theme')
bgcolor = gajim.config.get_per('themes', theme, 'groupbgcolor') bgcolor = app.config.get_per('themes', theme, 'groupbgcolor')
if bgcolor: if bgcolor:
self._renderer.set_property('cell-background', bgcolor) self._renderer.set_property('cell-background', bgcolor)
self.window.services_treeview.queue_draw() self.window.services_treeview.queue_draw()
@ -1390,7 +1390,7 @@ class ToplevelAgentBrowser(AgentBrowser):
return return
jid = model[iter_][0] jid = model[iter_][0]
if jid: if jid:
gajim.connections[self.account].request_register_agent_info(jid) app.connections[self.account].request_register_agent_info(jid)
self.window.destroy(chain = True) self.window.destroy(chain = True)
def on_join_button_clicked(self, widget): def on_join_button_clicked(self, widget):
@ -1402,13 +1402,13 @@ class ToplevelAgentBrowser(AgentBrowser):
if not iter_: if not iter_:
return return
service = model[iter_][0] service = model[iter_][0]
if 'join_gc' not in gajim.interface.instances[self.account]: if 'join_gc' not in app.interface.instances[self.account]:
try: try:
dialogs.JoinGroupchatWindow(self.account, service) dialogs.JoinGroupchatWindow(self.account, service)
except GajimGeneralException: except GajimGeneralException:
pass pass
else: else:
gajim.interface.instances[self.account]['join_gc'].window.present() app.interface.instances[self.account]['join_gc'].window.present()
def update_actions(self): def update_actions(self):
if self.execute_button: if self.execute_button:
@ -1435,7 +1435,7 @@ class ToplevelAgentBrowser(AgentBrowser):
# Guess what kind of service we're dealing with # Guess what kind of service we're dealing with
if self.browse_button: if self.browse_button:
jid = model[iter_][0] jid = model[iter_][0]
type_ = gajim.get_transport_name_from_jid(jid, type_ = app.get_transport_name_from_jid(jid,
use_config_setting = False) use_config_setting = False)
if type_: if type_:
identity = {'category': '_jid', 'type': type_} identity = {'category': '_jid', 'type': type_}
@ -1460,9 +1460,9 @@ class ToplevelAgentBrowser(AgentBrowser):
jid != self.jid: jid != self.jid:
# We can register this agent # We can register this agent
registered_transports = [] registered_transports = []
jid_list = gajim.contacts.get_jid_list(self.account) jid_list = app.contacts.get_jid_list(self.account)
for jid_ in jid_list: for jid_ in jid_list:
contact = gajim.contacts.get_first_contact_from_jid( contact = app.contacts.get_first_contact_from_jid(
self.account, jid_) self.account, jid_)
if _('Transports') in contact.groups: if _('Transports') in contact.groups:
registered_transports.append(jid_) registered_transports.append(jid_)
@ -1602,7 +1602,7 @@ class ToplevelAgentBrowser(AgentBrowser):
descr = "<b>%s</b>" % addr descr = "<b>%s</b>" % addr
# Guess which kind of service this is # Guess which kind of service this is
identities = [] identities = []
type_ = gajim.get_transport_name_from_jid(jid, type_ = app.get_transport_name_from_jid(jid,
use_config_setting = False) use_config_setting = False)
if type_: if type_:
identity = {'category': '_jid', 'type': type_} identity = {'category': '_jid', 'type': type_}
@ -1774,7 +1774,7 @@ class MucBrowser(AgentBrowser):
model, iter = self.window.services_treeview.get_selection().get_selected() model, iter = self.window.services_treeview.get_selection().get_selected()
if not iter: if not iter:
return return
name = gajim.config.get_per('accounts', self.account, 'name') name = app.config.get_per('accounts', self.account, 'name')
room_jid = model[iter][0] room_jid = model[iter][0]
bm = { bm = {
'name': room_jid.split('@')[0], 'name': room_jid.split('@')[0],
@ -1785,15 +1785,15 @@ class MucBrowser(AgentBrowser):
'nick': name 'nick': name
} }
for bookmark in gajim.connections[self.account].bookmarks: for bookmark in app.connections[self.account].bookmarks:
if bookmark['jid'] == bm['jid']: if bookmark['jid'] == bm['jid']:
dialogs.ErrorDialog( _('Bookmark already set'), dialogs.ErrorDialog( _('Bookmark already set'),
_('Group Chat "%s" is already in your bookmarks.') % bm['jid'], _('Group Chat "%s" is already in your bookmarks.') % bm['jid'],
transient_for=self.window.window) transient_for=self.window.window)
return return
gajim.connections[self.account].bookmarks.append(bm) app.connections[self.account].bookmarks.append(bm)
gajim.connections[self.account].store_bookmarks() app.connections[self.account].store_bookmarks()
gui_menu_builder.build_bookmark_menu(self.account) gui_menu_builder.build_bookmark_menu(self.account)
@ -1811,15 +1811,15 @@ class MucBrowser(AgentBrowser):
if not iter_: if not iter_:
return return
service = model[iter_][0] service = model[iter_][0]
if 'join_gc' not in gajim.interface.instances[self.account]: if 'join_gc' not in app.interface.instances[self.account]:
try: try:
dialogs.JoinGroupchatWindow(self.account, service) dialogs.JoinGroupchatWindow(self.account, service)
except GajimGeneralException: except GajimGeneralException:
pass pass
else: else:
gajim.interface.instances[self.account]['join_gc']._set_room_jid( app.interface.instances[self.account]['join_gc']._set_room_jid(
service) service)
gajim.interface.instances[self.account]['join_gc'].window.present() app.interface.instances[self.account]['join_gc'].window.present()
def update_actions(self): def update_actions(self):
sens = self.window.services_treeview.get_selection().count_selected_rows() sens = self.window.services_treeview.get_selection().count_selected_rows()
@ -1968,7 +1968,7 @@ class DiscussionGroupsBrowser(AgentBrowser):
self.subscribe_button = None self.subscribe_button = None
self.unsubscribe_button = None self.unsubscribe_button = None
gajim.connections[account].send_pb_subscription_query(jid, app.connections[account].send_pb_subscription_query(jid,
self._on_pep_subscriptions) self._on_pep_subscriptions)
def _create_treemodel(self): def _create_treemodel(self):
@ -2141,7 +2141,7 @@ class DiscussionGroupsBrowser(AgentBrowser):
groupnode = model.get_value(iter_, 1) # 1 = groupnode groupnode = model.get_value(iter_, 1) # 1 = groupnode
gajim.connections[self.account].send_pb_subscribe(self.jid, groupnode, app.connections[self.account].send_pb_subscribe(self.jid, groupnode,
self._on_pep_subscribe, groupnode) self._on_pep_subscribe, groupnode)
def on_unsubscribe_button_clicked(self, widget): def on_unsubscribe_button_clicked(self, widget):
@ -2153,7 +2153,7 @@ class DiscussionGroupsBrowser(AgentBrowser):
groupnode = model.get_value(iter_, 1) # 1 = groupnode groupnode = model.get_value(iter_, 1) # 1 = groupnode
gajim.connections[self.account].send_pb_unsubscribe(self.jid, groupnode, app.connections[self.account].send_pb_unsubscribe(self.jid, groupnode,
self._on_pep_unsubscribe, groupnode) self._on_pep_unsubscribe, groupnode)
def _on_pep_subscriptions(self, conn, request): def _on_pep_subscriptions(self, conn, request):

View File

@ -28,7 +28,7 @@ import gi
from gi.repository import Gtk, Gdk from gi.repository import Gtk, Gdk
from gajim import gtkgui_helpers from gajim import gtkgui_helpers
from gajim.common import gajim from gajim.common import app
from gajim.common.i18n import Q_ from gajim.common.i18n import Q_
class FeaturesWindow: class FeaturesWindow:
@ -39,7 +39,7 @@ class FeaturesWindow:
def __init__(self): def __init__(self):
self.xml = gtkgui_helpers.get_gtk_builder('features_window.ui') self.xml = gtkgui_helpers.get_gtk_builder('features_window.ui')
self.window = self.xml.get_object('features_window') self.window = self.xml.get_object('features_window')
self.window.set_transient_for(gajim.interface.roster.window) self.window.set_transient_for(app.interface.roster.window)
treeview = self.xml.get_object('features_treeview') treeview = self.xml.get_object('features_treeview')
self.desc_label = self.xml.get_object('feature_desc_label') self.desc_label = self.xml.get_object('feature_desc_label')
@ -169,14 +169,14 @@ class FeaturesWindow:
return True return True
def zeroconf_available(self): def zeroconf_available(self):
return gajim.HAVE_ZEROCONF return app.HAVE_ZEROCONF
def dbus_available(self): def dbus_available(self):
from gajim.common import dbus_support from gajim.common import dbus_support
return dbus_support.supported return dbus_support.supported
def gpg_available(self): def gpg_available(self):
return gajim.HAVE_GPG return app.HAVE_GPG
def network_watcher_available(self): def network_watcher_available(self):
from gajim import network_watcher from gajim import network_watcher
@ -216,7 +216,7 @@ class FeaturesWindow:
return sleepy.SUPPORTED return sleepy.SUPPORTED
def pycrypto_available(self): def pycrypto_available(self):
return gajim.HAVE_PYCRYPTO return app.HAVE_PYCRYPTO
def docutils_available(self): def docutils_available(self):
try: try:
@ -226,10 +226,10 @@ class FeaturesWindow:
return True return True
def farstream_available(self): def farstream_available(self):
return gajim.HAVE_FARSTREAM return app.HAVE_FARSTREAM
def gupnp_igd_available(self): def gupnp_igd_available(self):
return gajim.HAVE_UPNP_IGD return app.HAVE_UPNP_IGD
def upower_available(self): def upower_available(self):
if os.name == 'nt': if os.name == 'nt':

View File

@ -36,7 +36,7 @@ from gajim import gtkgui_helpers
from gajim import tooltips from gajim import tooltips
from gajim import dialogs from gajim import dialogs
from gajim.common import gajim from gajim.common import app
from gajim.common import helpers from gajim.common import helpers
from gajim.common.file_props import FilesProp from gajim.common.file_props import FilesProp
from gajim.common.protocol.bytestream import (is_transfer_active, is_transfer_paused, from gajim.common.protocol.bytestream import (is_transfer_active, is_transfer_paused,
@ -70,7 +70,7 @@ class FileTransfersWindow:
self.notify_ft_checkbox = self.xml.get_object( self.notify_ft_checkbox = self.xml.get_object(
'notify_ft_complete_checkbox') 'notify_ft_complete_checkbox')
shall_notify = gajim.config.get('notify_on_file_complete') shall_notify = app.config.get('notify_on_file_complete')
self.notify_ft_checkbox.set_active(shall_notify) self.notify_ft_checkbox.set_active(shall_notify)
self.model = Gtk.ListStore(GdkPixbuf.Pixbuf, str, str, str, str, int, self.model = Gtk.ListStore(GdkPixbuf.Pixbuf, str, str, str, str, int,
int, str) int, str)
@ -193,7 +193,7 @@ class FileTransfersWindow:
helpers.convert_bytes(file_props.size) helpers.convert_bytes(file_props.size)
if file_props.type_ == 'r': if file_props.type_ == 'r':
jid = file_props.sender.split('/')[0] jid = file_props.sender.split('/')[0]
sender_name = gajim.contacts.get_first_contact_from_jid( sender_name = app.contacts.get_first_contact_from_jid(
file_props.tt_account, jid).get_shown_name() file_props.tt_account, jid).get_shown_name()
sender = sender_name sender = sender_name
else: else:
@ -203,7 +203,7 @@ class FileTransfersWindow:
sectext += '\n\t' + _('Recipient: ') sectext += '\n\t' + _('Recipient: ')
if file_props.type_ == 's': if file_props.type_ == 's':
jid = file_props.receiver.split('/')[0] jid = file_props.receiver.split('/')[0]
receiver_name = gajim.contacts.get_first_contact_from_jid( receiver_name = app.contacts.get_first_contact_from_jid(
file_props.tt_account, jid).get_shown_name() file_props.tt_account, jid).get_shown_name()
recipient = receiver_name recipient = receiver_name
else: else:
@ -212,7 +212,7 @@ class FileTransfersWindow:
sectext += recipient sectext += recipient
if file_props.type_ == 'r': if file_props.type_ == 'r':
sectext += '\n\t' + _('Saved in: %s') % file_path sectext += '\n\t' + _('Saved in: %s') % file_path
dialog = dialogs.HigDialog(gajim.interface.roster.window, Gtk.MessageType.INFO, dialog = dialogs.HigDialog(app.interface.roster.window, Gtk.MessageType.INFO,
Gtk.ButtonsType.NONE, _('File transfer completed'), sectext) Gtk.ButtonsType.NONE, _('File transfer completed'), sectext)
if file_props.type_ == 'r': if file_props.type_ == 'r':
button = Gtk.Button.new_with_mnemonic(_('Open _Containing Folder')) button = Gtk.Button.new_with_mnemonic(_('Open _Containing Folder'))
@ -256,11 +256,11 @@ class FileTransfersWindow:
def on_yes(dummy, fjid, file_props, account): def on_yes(dummy, fjid, file_props, account):
# Delete old file # Delete old file
os.remove(file_props.file_name) os.remove(file_props.file_name)
jid, resource = gajim.get_room_and_nick_from_fjid(fjid) jid, resource = app.get_room_and_nick_from_fjid(fjid)
if resource: if resource:
contact = gajim.contacts.get_contact(account, jid, resource) contact = app.contacts.get_contact(account, jid, resource)
else: else:
contact = gajim.contacts.get_contact_with_highest_priority( contact = app.contacts.get_contact_with_highest_priority(
account, jid) account, jid)
fjid = contact.get_full_jid() fjid = contact.get_full_jid()
# Request the file to the sender # Request the file to the sender
@ -273,7 +273,7 @@ class FileTransfersWindow:
new_file_props.date = file_props.date new_file_props.date = file_props.date
new_file_props.hash_ = file_props.hash_ new_file_props.hash_ = file_props.hash_
new_file_props.type_ = 'r' new_file_props.type_ = 'r'
tsid = gajim.connections[account].start_file_transfer(fjid, tsid = app.connections[account].start_file_transfer(fjid,
new_file_props, new_file_props,
True) True)
new_file_props.transport_sid = tsid new_file_props.transport_sid = tsid
@ -309,17 +309,17 @@ class FileTransfersWindow:
and file_dir is None: and file_dir is None:
file_dir = os.path.dirname(file_path) file_dir = os.path.dirname(file_path)
if file_dir: if file_dir:
gajim.config.set('last_send_dir', file_dir) app.config.set('last_send_dir', file_dir)
dialog.destroy() dialog.destroy()
dialog = dialogs.FileChooserDialog(_('Choose File to Send…'), dialog = dialogs.FileChooserDialog(_('Choose File to Send…'),
Gtk.FileChooserAction.OPEN, (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL), Gtk.FileChooserAction.OPEN, (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL),
Gtk.ResponseType.OK, Gtk.ResponseType.OK,
True, # select multiple true as we can select many files to send True, # select multiple true as we can select many files to send
gajim.config.get('last_send_dir'), app.config.get('last_send_dir'),
on_response_ok=on_ok, on_response_ok=on_ok,
on_response_cancel=lambda e:dialog.destroy(), on_response_cancel=lambda e:dialog.destroy(),
transient_for=gajim.interface.roster.window transient_for=app.interface.roster.window
) )
btn = Gtk.Button.new_with_mnemonic(_('_Send')) btn = Gtk.Button.new_with_mnemonic(_('_Send'))
@ -351,7 +351,7 @@ class FileTransfersWindow:
if contact.find('/') == -1: if contact.find('/') == -1:
return return
(jid, resource) = contact.split('/', 1) (jid, resource) = contact.split('/', 1)
contact = gajim.contacts.create_contact(jid=jid, account=account, contact = app.contacts.create_contact(jid=jid, account=account,
resource=resource) resource=resource)
file_name = os.path.split(file_path)[1] file_name = os.path.split(file_path)[1]
file_props = self.get_send_file_props(account, contact, file_props = self.get_send_file_props(account, contact,
@ -360,24 +360,24 @@ class FileTransfersWindow:
return False return False
if contact.supports(NS_JINGLE_FILE_TRANSFER_5): if contact.supports(NS_JINGLE_FILE_TRANSFER_5):
log.info("contact %s supports jingle file transfer"%(contact.get_full_jid())) log.info("contact %s supports jingle file transfer"%(contact.get_full_jid()))
gajim.connections[account].start_file_transfer(contact.get_full_jid(), app.connections[account].start_file_transfer(contact.get_full_jid(),
file_props) file_props)
self.add_transfer(account, contact, file_props) self.add_transfer(account, contact, file_props)
else: else:
log.info("contact does not support jingle file transfer") log.info("contact does not support jingle file transfer")
file_props.transport_sid = file_props.sid file_props.transport_sid = file_props.sid
gajim.connections[account].send_file_request(file_props) app.connections[account].send_file_request(file_props)
self.add_transfer(account, contact, file_props) self.add_transfer(account, contact, file_props)
return True return True
def _start_receive(self, file_path, account, contact, file_props): def _start_receive(self, file_path, account, contact, file_props):
file_dir = os.path.dirname(file_path) file_dir = os.path.dirname(file_path)
if file_dir: if file_dir:
gajim.config.set('last_save_dir', file_dir) app.config.set('last_save_dir', file_dir)
file_props.file_name = file_path file_props.file_name = file_path
file_props.type_ = 'r' file_props.type_ = 'r'
self.add_transfer(account, contact, file_props) self.add_transfer(account, contact, file_props)
gajim.connections[account].send_file_approval(file_props) app.connections[account].send_file_approval(file_props)
def on_file_request_accepted(self, account, contact, file_props): def on_file_request_accepted(self, account, contact, file_props):
def on_ok(widget, account, contact, file_props): def on_ok(widget, account, contact, file_props):
@ -426,7 +426,7 @@ class FileTransfersWindow:
def on_cancel(widget, account, contact, file_props): def on_cancel(widget, account, contact, file_props):
dialog2.destroy() dialog2.destroy()
gajim.connections[account].send_file_rejection(file_props) app.connections[account].send_file_rejection(file_props)
dialog2 = dialogs.FileChooserDialog( dialog2 = dialogs.FileChooserDialog(
title_text=_('Save File as…'), title_text=_('Save File as…'),
@ -434,7 +434,7 @@ class FileTransfersWindow:
buttons=(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, buttons=(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
Gtk.STOCK_SAVE, Gtk.ResponseType.OK), Gtk.STOCK_SAVE, Gtk.ResponseType.OK),
default_response=Gtk.ResponseType.OK, default_response=Gtk.ResponseType.OK,
current_folder=gajim.config.get('last_save_dir'), current_folder=app.config.get('last_save_dir'),
on_response_ok=(on_ok, account, contact, file_props), on_response_ok=(on_ok, account, contact, file_props),
on_response_cancel=(on_cancel, account, contact, file_props)) on_response_cancel=(on_cancel, account, contact, file_props))
@ -465,7 +465,7 @@ class FileTransfersWindow:
self.on_file_request_accepted(account, contact, file_props) self.on_file_request_accepted(account, contact, file_props)
def on_response_cancel(account, file_props): def on_response_cancel(account, file_props):
gajim.connections[account].send_file_rejection(file_props) app.connections[account].send_file_rejection(file_props)
dialog = dialogs.NonModalConfirmationDialog(prim_text, sec_text, dialog = dialogs.NonModalConfirmationDialog(prim_text, sec_text,
on_response_ok=(on_response_ok, account, contact, file_props), on_response_ok=(on_response_ok, account, contact, file_props),
@ -579,24 +579,24 @@ class FileTransfersWindow:
if file_props.tt_account: if file_props.tt_account:
# file transfer is set # file transfer is set
account = file_props.tt_account account = file_props.tt_account
if account in gajim.connections: if account in app.connections:
# there is a connection to the account # there is a connection to the account
gajim.connections[account].remove_transfer(file_props) app.connections[account].remove_transfer(file_props)
if file_props.type_ == 'r': # we receive a file if file_props.type_ == 'r': # we receive a file
other = file_props.sender other = file_props.sender
else: # we send a file else: # we send a file
other = file_props.receiver other = file_props.receiver
if isinstance(other, str): if isinstance(other, str):
jid = gajim.get_jid_without_resource(other) jid = app.get_jid_without_resource(other)
else: # It's a Contact instance else: # It's a Contact instance
jid = other.jid jid = other.jid
for ev_type in ('file-error', 'file-completed', 'file-request-error', for ev_type in ('file-error', 'file-completed', 'file-request-error',
'file-send-error', 'file-stopped'): 'file-send-error', 'file-stopped'):
for event in gajim.events.get_events(account, jid, [ev_type]): for event in app.events.get_events(account, jid, [ev_type]):
if event.file_props.sid == file_props.sid: if event.file_props.sid == file_props.sid:
gajim.events.remove_events(account, jid, event) app.events.remove_events(account, jid, event)
gajim.interface.roster.draw_contact(jid, account) app.interface.roster.draw_contact(jid, account)
gajim.interface.roster.show_title() app.interface.roster.show_title()
FilesProp.deleteFileProp(file_props) FilesProp.deleteFileProp(file_props)
del(file_props) del(file_props)
@ -945,9 +945,9 @@ class FileTransfersWindow:
sid = self.model[s_iter][Column.SID] sid = self.model[s_iter][Column.SID]
file_props = FilesProp.getFilePropByType(sid[0], sid[1:]) file_props = FilesProp.getFilePropByType(sid[0], sid[1:])
account = file_props.tt_account account = file_props.tt_account
if account not in gajim.connections: if account not in app.connections:
return return
con = gajim.connections[account] con = app.connections[account]
# Check if we are in a IBB transfer # Check if we are in a IBB transfer
if file_props.direction: if file_props.direction:
con.CloseIBBStream(file_props) con.CloseIBBStream(file_props)
@ -980,7 +980,7 @@ class FileTransfersWindow:
self.tooltip.hide_tooltip() self.tooltip.hide_tooltip()
def on_notify_ft_complete_checkbox_toggled(self, widget): def on_notify_ft_complete_checkbox_toggled(self, widget):
gajim.config.set('notify_on_file_complete', app.config.set('notify_on_file_complete',
widget.get_active()) widget.get_active())
def on_file_transfers_dialog_delete_event(self, widget, event): def on_file_transfers_dialog_delete_event(self, widget, event):

View File

@ -134,14 +134,14 @@ class GajimApplication(Gtk.Application):
configpaths.gajimpaths.init( configpaths.gajimpaths.init(
self.config_path, self.profile, self.profile_separation) self.config_path, self.profile, self.profile_separation)
from gajim.common import gajim from gajim.common import app
from gajim.common import check_paths from gajim.common import check_paths
from gajim.common import exceptions from gajim.common import exceptions
from gajim.common import logger from gajim.common import logger
from gajim.common import caps_cache from gajim.common import caps_cache
try: try:
gajim.logger = logger.Logger() app.logger = logger.Logger()
caps_cache.initialize(gajim.logger) caps_cache.initialize(app.logger)
check_paths.check_and_possibly_create_paths() check_paths.check_and_possibly_create_paths()
except exceptions.DatabaseMalformed as error: except exceptions.DatabaseMalformed as error:
dlg = Gtk.MessageDialog( dlg = Gtk.MessageDialog(
@ -209,7 +209,7 @@ class GajimApplication(Gtk.Application):
# Seed the OpenSSL pseudo random number generator from file and initialize # Seed the OpenSSL pseudo random number generator from file and initialize
if PYOPENSSL_PRNG_PRESENT: if PYOPENSSL_PRNG_PRESENT:
self.rng_seed = gajim.gajimpaths['RNG_SEED'] self.rng_seed = app.gajimpaths['RNG_SEED']
# Seed from file # Seed from file
try: try:
OpenSSL.rand.load_file(self.rng_seed) OpenSSL.rand.load_file(self.rng_seed)
@ -232,7 +232,7 @@ class GajimApplication(Gtk.Application):
sys.getfilesystemencoding(), locale.getpreferredencoding())) sys.getfilesystemencoding(), locale.getpreferredencoding()))
# Set Application Menu # Set Application Menu
gajim.app = self app.app = self
path = os.path.join(configpaths.get('GUI'), 'application_menu.ui') path = os.path.join(configpaths.get('GUI'), 'application_menu.ui')
builder = Gtk.Builder() builder = Gtk.Builder()
builder.set_translation_domain(i18n.APP) builder.set_translation_domain(i18n.APP)
@ -264,8 +264,8 @@ class GajimApplication(Gtk.Application):
self.interface.roster.prepare_quit() self.interface.roster.prepare_quit()
# Commit any outstanding SQL transactions # Commit any outstanding SQL transactions
from gajim.common import gajim from gajim.common import app
gajim.logger.commit() app.logger.commit()
def do_handle_local_options(self, options: GLib.VariantDict) -> int: def do_handle_local_options(self, options: GLib.VariantDict) -> int:
@ -368,8 +368,8 @@ class GajimApplication(Gtk.Application):
act.connect("activate", func) act.connect("activate", func)
self.add_action(act) self.add_action(act)
from gajim.common import gajim from gajim.common import app
accounts_list = sorted(gajim.contacts.get_accounts()) accounts_list = sorted(app.contacts.get_accounts())
if not accounts_list: if not accounts_list:
return return
if len(accounts_list) > 1: if len(accounts_list) > 1:

View File

@ -28,14 +28,14 @@ from gi.repository import Pango
from gajim import dialogs from gajim import dialogs
from gajim import gtkgui_helpers from gajim import gtkgui_helpers
from gajim.common import gajim from gajim.common import app
class GajimThemesWindow: class GajimThemesWindow:
def __init__(self): def __init__(self):
self.xml = gtkgui_helpers.get_gtk_builder('gajim_themes_window.ui') self.xml = gtkgui_helpers.get_gtk_builder('gajim_themes_window.ui')
self.window = self.xml.get_object('gajim_themes_window') self.window = self.xml.get_object('gajim_themes_window')
self.window.set_transient_for(gajim.interface.instances[ self.window.set_transient_for(app.interface.instances[
'preferences'].window) 'preferences'].window)
self.options = ['account', 'group', 'contact', 'banner'] self.options = ['account', 'group', 'contact', 'banner']
@ -65,7 +65,7 @@ class GajimThemesWindow:
col.add_attribute(renderer, 'text', 0) col.add_attribute(renderer, 'text', 0)
renderer.connect('edited', self.on_theme_cell_edited) renderer.connect('edited', self.on_theme_cell_edited)
renderer.set_property('editable', True) renderer.set_property('editable', True)
self.current_theme = gajim.config.get('roster_theme') self.current_theme = app.config.get('roster_theme')
self.no_update = False self.no_update = False
self.fill_themes_treeview() self.fill_themes_treeview()
self.select_active_theme() self.select_active_theme()
@ -83,8 +83,8 @@ class GajimThemesWindow:
return True # do NOT destroy the window return True # do NOT destroy the window
def on_close_button_clicked(self, widget): def on_close_button_clicked(self, widget):
if 'preferences' in gajim.interface.instances: if 'preferences' in app.interface.instances:
gajim.interface.instances['preferences'].update_theme_list() app.interface.instances['preferences'].update_theme_list()
self.window.hide() self.window.hide()
def on_theme_cell_edited(self, cell, row, new_name): def on_theme_cell_edited(self, cell, row, new_name):
@ -99,35 +99,35 @@ class GajimThemesWindow:
_('Please create a new clean theme.')) _('Please create a new clean theme.'))
return return
new_config_name = new_name.replace(' ', '_') new_config_name = new_name.replace(' ', '_')
if new_config_name in gajim.config.get_per('themes'): if new_config_name in app.config.get_per('themes'):
return return
gajim.config.add_per('themes', new_config_name) app.config.add_per('themes', new_config_name)
# Copy old theme values # Copy old theme values
old_config_name = old_name.replace(' ', '_') old_config_name = old_name.replace(' ', '_')
properties = ['textcolor', 'bgcolor', 'font', 'fontattrs'] properties = ['textcolor', 'bgcolor', 'font', 'fontattrs']
gajim.config.add_per('themes', new_config_name) app.config.add_per('themes', new_config_name)
for option in self.options: for option in self.options:
for property_ in properties: for property_ in properties:
option_name = option + property_ option_name = option + property_
gajim.config.set_per('themes', new_config_name, option_name, app.config.set_per('themes', new_config_name, option_name,
gajim.config.get_per('themes', old_config_name, option_name)) app.config.get_per('themes', old_config_name, option_name))
gajim.config.del_per('themes', old_config_name) app.config.del_per('themes', old_config_name)
if old_config_name == gajim.config.get('roster_theme'): if old_config_name == app.config.get('roster_theme'):
gajim.config.set('roster_theme', new_config_name) app.config.set('roster_theme', new_config_name)
model.set_value(iter_, 0, new_name) model.set_value(iter_, 0, new_name)
self.current_theme = new_name self.current_theme = new_name
def fill_themes_treeview(self): def fill_themes_treeview(self):
model = self.themes_tree.get_model() model = self.themes_tree.get_model()
model.clear() model.clear()
for config_theme in gajim.config.get_per('themes'): for config_theme in app.config.get_per('themes'):
theme = config_theme.replace('_', ' ') theme = config_theme.replace('_', ' ')
model.append([theme]) model.append([theme])
def select_active_theme(self): def select_active_theme(self):
model = self.themes_tree.get_model() model = self.themes_tree.get_model()
iter_ = model.get_iter_first() iter_ = model.get_iter_first()
active_theme = gajim.config.get('roster_theme').replace('_', ' ') active_theme = app.config.get('roster_theme').replace('_', ' ')
while iter_: while iter_:
theme = model[iter_][0] theme = model[iter_][0]
if theme == active_theme: if theme == active_theme:
@ -169,10 +169,10 @@ class GajimThemesWindow:
# don't confuse translators # don't confuse translators
theme_name = _('theme name') theme_name = _('theme name')
theme_name_ns = theme_name.replace(' ', '_') theme_name_ns = theme_name.replace(' ', '_')
while theme_name_ns + str(i) in gajim.config.get_per('themes'): while theme_name_ns + str(i) in app.config.get_per('themes'):
i += 1 i += 1
model.set_value(iter_, 0, theme_name + str(i)) model.set_value(iter_, 0, theme_name + str(i))
gajim.config.add_per('themes', theme_name_ns + str(i)) app.config.add_per('themes', theme_name_ns + str(i))
self.themes_tree.get_selection().select_iter(iter_) self.themes_tree.get_selection().select_iter(iter_)
col = self.themes_tree.get_column(0) col = self.themes_tree.get_column(0)
path = model.get_path(iter_) path = model.get_path(iter_)
@ -182,7 +182,7 @@ class GajimThemesWindow:
(model, iter_) = self.themes_tree.get_selection().get_selected() (model, iter_) = self.themes_tree.get_selection().get_selected()
if not iter_: if not iter_:
return return
if self.current_theme == gajim.config.get('roster_theme'): if self.current_theme == app.config.get('roster_theme'):
dialogs.ErrorDialog( dialogs.ErrorDialog(
_('You cannot delete your current theme'), _('You cannot delete your current theme'),
_('Pick another theme to use first.')) _('Pick another theme to use first.'))
@ -190,13 +190,13 @@ class GajimThemesWindow:
self.theme_options_vbox.set_sensitive(False) self.theme_options_vbox.set_sensitive(False)
self.theme_options_table.set_sensitive(False) self.theme_options_table.set_sensitive(False)
self.xml.get_object('remove_button').set_sensitive(False) self.xml.get_object('remove_button').set_sensitive(False)
gajim.config.del_per('themes', self.current_theme) app.config.del_per('themes', self.current_theme)
model.remove(iter_) model.remove(iter_)
def set_theme_options(self, theme, option = 'account'): def set_theme_options(self, theme, option = 'account'):
self.no_update = True self.no_update = True
self.options_combobox.set_active(self.options.index(option)) self.options_combobox.set_active(self.options.index(option))
textcolor = gajim.config.get_per('themes', theme, option + 'textcolor') textcolor = app.config.get_per('themes', theme, option + 'textcolor')
if textcolor: if textcolor:
state = True state = True
rgba = Gdk.RGBA() rgba = Gdk.RGBA()
@ -206,7 +206,7 @@ class GajimThemesWindow:
state = False state = False
self.textcolor_checkbutton.set_active(state) self.textcolor_checkbutton.set_active(state)
self.text_colorbutton.set_sensitive(state) self.text_colorbutton.set_sensitive(state)
bgcolor = gajim.config.get_per('themes', theme, option + 'bgcolor') bgcolor = app.config.get_per('themes', theme, option + 'bgcolor')
if bgcolor: if bgcolor:
state = True state = True
rgba = Gdk.RGBA() rgba = Gdk.RGBA()
@ -218,8 +218,8 @@ class GajimThemesWindow:
self.background_colorbutton.set_sensitive(state) self.background_colorbutton.set_sensitive(state)
# get the font name before we set widgets and it will not be overriden # get the font name before we set widgets and it will not be overriden
font_name = gajim.config.get_per('themes', theme, option + 'font') font_name = app.config.get_per('themes', theme, option + 'font')
font_attrs = gajim.config.get_per('themes', theme, option + 'fontattrs') font_attrs = app.config.get_per('themes', theme, option + 'fontattrs')
self._set_font_widgets(font_attrs) self._set_font_widgets(font_attrs)
if font_name: if font_name:
state = True state = True
@ -229,11 +229,11 @@ class GajimThemesWindow:
self.textfont_checkbutton.set_active(state) self.textfont_checkbutton.set_active(state)
self.text_fontbutton.set_sensitive(state) self.text_fontbutton.set_sensitive(state)
self.no_update = False self.no_update = False
gajim.interface.roster.change_roster_style(None) app.interface.roster.change_roster_style(None)
for chatstate in ('inactive', 'composing', 'paused', 'gone', for chatstate in ('inactive', 'composing', 'paused', 'gone',
'muc_msg', 'muc_directed_msg'): 'muc_msg', 'muc_directed_msg'):
color = gajim.config.get_per('themes', theme, 'state_' + chatstate + \ color = app.config.get_per('themes', theme, 'state_' + chatstate + \
'_color') '_color')
rgba = Gdk.RGBA() rgba = Gdk.RGBA()
rgba.parse(color) rgba.parse(color)
@ -292,15 +292,15 @@ class GajimThemesWindow:
begin_option = '' begin_option = ''
if not option.startswith('state'): if not option.startswith('state'):
begin_option = self.current_option begin_option = self.current_option
gajim.config.set_per('themes', self.current_theme, app.config.set_per('themes', self.current_theme,
begin_option + option, color_string) begin_option + option, color_string)
# use faster functions for this # use faster functions for this
if self.current_option == 'banner': if self.current_option == 'banner':
gajim.interface.roster.repaint_themed_widgets() app.interface.roster.repaint_themed_widgets()
return return
if self.no_update: if self.no_update:
return return
gajim.interface.roster.change_roster_style(self.current_option) app.interface.roster.change_roster_style(self.current_option)
def _set_font(self): def _set_font(self):
""" """
@ -311,17 +311,17 @@ class GajimThemesWindow:
font_string = self.text_fontbutton.get_font_name() font_string = self.text_fontbutton.get_font_name()
else: else:
font_string = '' font_string = ''
gajim.config.set_per('themes', self.current_theme, app.config.set_per('themes', self.current_theme,
self.current_option + 'font', font_string) self.current_option + 'font', font_string)
font_attrs = self._get_font_attrs() font_attrs = self._get_font_attrs()
gajim.config.set_per('themes', self.current_theme, app.config.set_per('themes', self.current_theme,
self.current_option + 'fontattrs', font_attrs) self.current_option + 'fontattrs', font_attrs)
# use faster functions for this # use faster functions for this
if self.current_option == 'banner': if self.current_option == 'banner':
gajim.interface.roster.repaint_themed_widgets() app.interface.roster.repaint_themed_widgets()
if self.no_update: if self.no_update:
return return
gajim.interface.roster.change_roster_style(self.current_option) app.interface.roster.change_roster_style(self.current_option)
def _toggle_font_widgets(self, font_props): def _toggle_font_widgets(self, font_props):
""" """

File diff suppressed because it is too large Load Diff

View File

@ -21,7 +21,7 @@
'''Window to create new post for discussion groups service.''' '''Window to create new post for discussion groups service.'''
from gajim.common import gajim from gajim.common import app
from nbxmpp import Node from nbxmpp import Node
from gajim import gtkgui_helpers from gajim import gtkgui_helpers
@ -67,7 +67,7 @@ class GroupsPostWindow:
item.addChild('content', {}, [buf.get_text(buf.get_start_iter(), buf.get_end_iter(), True)]) item.addChild('content', {}, [buf.get_text(buf.get_start_iter(), buf.get_end_iter(), True)])
# publish it to node # publish it to node
gajim.connections[self.account].send_pb_publish(self.servicejid, self.groupid, item, '0') app.connections[self.account].send_pb_publish(self.servicejid, self.groupid, item, '0')
# close the window # close the window
self.window.destroy() self.window.destroy()

View File

@ -46,12 +46,12 @@ import logging
log = logging.getLogger('gajim.gtkgui_helpers') log = logging.getLogger('gajim.gtkgui_helpers')
from gajim.common import i18n from gajim.common import i18n
from gajim.common import gajim from gajim.common import app
from gajim.common import pep from gajim.common import pep
from gajim.common import configpaths from gajim.common import configpaths
gtk_icon_theme = Gtk.IconTheme.get_default() gtk_icon_theme = Gtk.IconTheme.get_default()
gtk_icon_theme.append_search_path(gajim.ICONS_DIR) gtk_icon_theme.append_search_path(app.ICONS_DIR)
class Color: class Color:
BLACK = Gdk.RGBA(red=0, green=0, blue=0, alpha=1) BLACK = Gdk.RGBA(red=0, green=0, blue=0, alpha=1)
@ -118,7 +118,7 @@ def get_image_button(icon_name, tooltip, toggle=False):
button.set_image(image) button.set_image(image)
return button return button
GUI_DIR = os.path.join(gajim.DATA_DIR, 'gui') GUI_DIR = os.path.join(app.DATA_DIR, 'gui')
def get_gtk_builder(file_name, widget=None): def get_gtk_builder(file_name, widget=None):
file_path = os.path.join(GUI_DIR, file_name) file_path = os.path.join(GUI_DIR, file_name)
builder = Gtk.Builder() builder = Gtk.Builder()
@ -161,7 +161,7 @@ def popup_emoticons_under_button(menu, button, parent_win):
alloc = button.get_allocation() alloc = button.get_allocation()
button_x, button_y = alloc.x, alloc.y button_x, button_y = alloc.x, alloc.y
translated_coordinates = button.translate_coordinates( translated_coordinates = button.translate_coordinates(
gajim.interface.roster.window, 0, 0) app.interface.roster.window, 0, 0)
if translated_coordinates: if translated_coordinates:
button_x, button_y = translated_coordinates button_x, button_y = translated_coordinates
@ -190,9 +190,9 @@ def get_theme_font_for_option(theme, option):
""" """
Return string description of the font, stored in theme preferences Return string description of the font, stored in theme preferences
""" """
font_name = gajim.config.get_per('themes', theme, option) font_name = app.config.get_per('themes', theme, option)
font_desc = Pango.FontDescription() font_desc = Pango.FontDescription()
font_prop_str = gajim.config.get_per('themes', theme, option + 'attrs') font_prop_str = app.config.get_per('themes', theme, option + 'attrs')
if font_prop_str: if font_prop_str:
if font_prop_str.find('B') != -1: if font_prop_str.find('B') != -1:
font_desc.set_weight(Pango.Weight.BOLD) font_desc.set_weight(Pango.Weight.BOLD)
@ -427,7 +427,7 @@ def set_unset_urgency_hint(window, unread_messages_no):
Sets/unset urgency hint in window argument depending if we have unread Sets/unset urgency hint in window argument depending if we have unread
messages or not messages or not
""" """
if gajim.config.get('use_urgency_hint'): if app.config.get('use_urgency_hint'):
if unread_messages_no > 0: if unread_messages_no > 0:
window.props.urgency_hint = True window.props.urgency_hint = True
else: else:
@ -645,8 +645,8 @@ def get_scaled_pixbuf(pixbuf, kind):
""" """
# resize to a width / height for the avatar not to have distortion # resize to a width / height for the avatar not to have distortion
# (keep aspect ratio) # (keep aspect ratio)
width = gajim.config.get(kind + '_avatar_width') width = app.config.get(kind + '_avatar_width')
height = gajim.config.get(kind + '_avatar_height') height = app.config.get(kind + '_avatar_height')
if width < 1 or height < 1: if width < 1 or height < 1:
return None return None
@ -661,14 +661,14 @@ def get_avatar_pixbuf_from_cache(fjid, use_local=True):
Returns 'ask' if cached vcard should not be used (user changed his vcard, so Returns 'ask' if cached vcard should not be used (user changed his vcard, so
we have new sha) or if we don't have the vcard we have new sha) or if we don't have the vcard
""" """
jid, nick = gajim.get_room_and_nick_from_fjid(fjid) jid, nick = app.get_room_and_nick_from_fjid(fjid)
if gajim.config.get('hide_avatar_of_transport') and\ if app.config.get('hide_avatar_of_transport') and\
gajim.jid_is_transport(jid): app.jid_is_transport(jid):
# don't show avatar for the transport itself # don't show avatar for the transport itself
return None return None
if any(jid in gajim.contacts.get_gc_list(acc) for acc in \ if any(jid in app.contacts.get_gc_list(acc) for acc in \
gajim.contacts.get_accounts()): app.contacts.get_accounts()):
is_groupchat_contact = True is_groupchat_contact = True
else: else:
is_groupchat_contact = False is_groupchat_contact = False
@ -676,12 +676,12 @@ def get_avatar_pixbuf_from_cache(fjid, use_local=True):
puny_jid = helpers.sanitize_filename(jid) puny_jid = helpers.sanitize_filename(jid)
if is_groupchat_contact: if is_groupchat_contact:
puny_nick = helpers.sanitize_filename(nick) puny_nick = helpers.sanitize_filename(nick)
path = os.path.join(gajim.VCARD_PATH, puny_jid, puny_nick) path = os.path.join(app.VCARD_PATH, puny_jid, puny_nick)
local_avatar_basepath = os.path.join(gajim.AVATAR_PATH, puny_jid, local_avatar_basepath = os.path.join(app.AVATAR_PATH, puny_jid,
puny_nick) + '_local' puny_nick) + '_local'
else: else:
path = os.path.join(gajim.VCARD_PATH, puny_jid) path = os.path.join(app.VCARD_PATH, puny_jid)
local_avatar_basepath = os.path.join(gajim.AVATAR_PATH, puny_jid) + \ local_avatar_basepath = os.path.join(app.AVATAR_PATH, puny_jid) + \
'_local' '_local'
if use_local: if use_local:
for extension in ('.png', '.jpeg'): for extension in ('.png', '.jpeg'):
@ -695,7 +695,7 @@ def get_avatar_pixbuf_from_cache(fjid, use_local=True):
if not os.path.isfile(path): if not os.path.isfile(path):
return 'ask' return 'ask'
vcard_dict = list(gajim.connections.values())[0].get_cached_vcard(fjid, vcard_dict = list(app.connections.values())[0].get_cached_vcard(fjid,
is_groupchat_contact) is_groupchat_contact)
if not vcard_dict: # This can happen if cached vcard is too old if not vcard_dict: # This can happen if cached vcard is too old
return 'ask' return 'ask'
@ -832,7 +832,7 @@ def on_avatar_save_as_menuitem_activate(widget, jid, default_name=''):
action=Gtk.FileChooserAction.SAVE, buttons=(Gtk.STOCK_CANCEL, action=Gtk.FileChooserAction.SAVE, buttons=(Gtk.STOCK_CANCEL,
Gtk.ResponseType.CANCEL, Gtk.STOCK_SAVE, Gtk.ResponseType.OK), Gtk.ResponseType.CANCEL, Gtk.STOCK_SAVE, Gtk.ResponseType.OK),
default_response=Gtk.ResponseType.OK, default_response=Gtk.ResponseType.OK,
current_folder=gajim.config.get('last_save_dir'), on_response_ok=on_ok, current_folder=app.config.get('last_save_dir'), on_response_ok=on_ok,
on_response_cancel=on_cancel) on_response_cancel=on_cancel)
dialog.set_current_name(default_name + '.jpeg') dialog.set_current_name(default_name + '.jpeg')
@ -903,7 +903,7 @@ def load_icon(icon_name):
""" """
Load an icon from the iconset in 16x16 Load an icon from the iconset in 16x16
""" """
iconset = gajim.config.get('iconset') iconset = app.config.get('iconset')
path = os.path.join(helpers.get_iconset_path(iconset), '16x16', '') path = os.path.join(helpers.get_iconset_path(iconset), '16x16', '')
icon_list = _load_icon_list([icon_name], path) icon_list = _load_icon_list([icon_name], path)
return icon_list[icon_name] return icon_list[icon_name]
@ -912,7 +912,7 @@ def load_mood_icon(icon_name):
""" """
Load an icon from the mood iconset in 16x16 Load an icon from the mood iconset in 16x16
""" """
iconset = gajim.config.get('mood_iconset') iconset = app.config.get('mood_iconset')
path = os.path.join(helpers.get_mood_iconset_path(iconset), '') path = os.path.join(helpers.get_mood_iconset_path(iconset), '')
icon_list = _load_icon_list([icon_name], path) icon_list = _load_icon_list([icon_name], path)
return icon_list[icon_name] return icon_list[icon_name]
@ -921,7 +921,7 @@ def load_activity_icon(category, activity = None):
""" """
Load an icon from the activity iconset in 16x16 Load an icon from the activity iconset in 16x16
""" """
iconset = gajim.config.get('activity_iconset') iconset = app.config.get('activity_iconset')
path = os.path.join(helpers.get_activity_iconset_path(iconset), path = os.path.join(helpers.get_activity_iconset_path(iconset),
category, '') category, '')
if activity is None: if activity is None:
@ -939,7 +939,7 @@ def get_pep_as_pixbuf(pep_class):
elif isinstance(pep_class, pep.UserTunePEP): elif isinstance(pep_class, pep.UserTunePEP):
icon = get_icon_pixmap('audio-x-generic', quiet=True) icon = get_icon_pixmap('audio-x-generic', quiet=True)
if not icon: if not icon:
path = os.path.join(gajim.DATA_DIR, 'emoticons', 'static', path = os.path.join(app.DATA_DIR, 'emoticons', 'static',
'music.png') 'music.png')
return GdkPixbuf.Pixbuf.new_from_file(path) return GdkPixbuf.Pixbuf.new_from_file(path)
return icon return icon
@ -972,7 +972,7 @@ def load_icons_meta():
Load and return - AND + small icons to put on top left of an icon for meta Load and return - AND + small icons to put on top left of an icon for meta
contacts contacts
""" """
iconset = gajim.config.get('iconset') iconset = app.config.get('iconset')
path = os.path.join(helpers.get_iconset_path(iconset), '16x16') path = os.path.join(helpers.get_iconset_path(iconset), '16x16')
# try to find opened_meta.png file, else opened.png else nopixbuf merge # try to find opened_meta.png file, else opened.png else nopixbuf merge
path_opened = os.path.join(path, 'opened_meta.png') path_opened = os.path.join(path, 'opened_meta.png')
@ -1025,44 +1025,44 @@ def make_jabber_state_images():
""" """
Initialize jabber_state_images dictionary Initialize jabber_state_images dictionary
""" """
iconset = gajim.config.get('iconset') iconset = app.config.get('iconset')
if iconset: if iconset:
if helpers.get_iconset_path(iconset): if helpers.get_iconset_path(iconset):
path = os.path.join(helpers.get_iconset_path(iconset), '16x16') path = os.path.join(helpers.get_iconset_path(iconset), '16x16')
if not os.path.exists(path): if not os.path.exists(path):
iconset = gajim.config.DEFAULT_ICONSET iconset = app.config.DEFAULT_ICONSET
gajim.config.set('iconset', iconset) app.config.set('iconset', iconset)
else: else:
iconset = gajim.config.DEFAULT_ICONSET iconset = app.config.DEFAULT_ICONSET
gajim.config.set('iconset', iconset) app.config.set('iconset', iconset)
else: else:
iconset = gajim.config.DEFAULT_ICONSET iconset = app.config.DEFAULT_ICONSET
gajim.config.set('iconset', iconset) app.config.set('iconset', iconset)
path = os.path.join(helpers.get_iconset_path(iconset), '16x16') path = os.path.join(helpers.get_iconset_path(iconset), '16x16')
gajim.interface.jabber_state_images['16'] = load_iconset(path) app.interface.jabber_state_images['16'] = load_iconset(path)
pixo, pixc = load_icons_meta() pixo, pixc = load_icons_meta()
gajim.interface.jabber_state_images['opened'] = load_iconset(path, pixo) app.interface.jabber_state_images['opened'] = load_iconset(path, pixo)
gajim.interface.jabber_state_images['closed'] = load_iconset(path, pixc) app.interface.jabber_state_images['closed'] = load_iconset(path, pixc)
path = os.path.join(helpers.get_iconset_path(iconset), '32x32') path = os.path.join(helpers.get_iconset_path(iconset), '32x32')
gajim.interface.jabber_state_images['32'] = load_iconset(path) app.interface.jabber_state_images['32'] = load_iconset(path)
path = os.path.join(helpers.get_iconset_path(iconset), '24x24') path = os.path.join(helpers.get_iconset_path(iconset), '24x24')
if (os.path.exists(path)): if (os.path.exists(path)):
gajim.interface.jabber_state_images['24'] = load_iconset(path) app.interface.jabber_state_images['24'] = load_iconset(path)
else: else:
# Resize 32x32 icons to 24x24 # Resize 32x32 icons to 24x24
for each in gajim.interface.jabber_state_images['32']: for each in app.interface.jabber_state_images['32']:
img = Gtk.Image() img = Gtk.Image()
pix = gajim.interface.jabber_state_images['32'][each] pix = app.interface.jabber_state_images['32'][each]
pix_type = pix.get_storage_type() pix_type = pix.get_storage_type()
if pix_type == Gtk.ImageType.ANIMATION: if pix_type == Gtk.ImageType.ANIMATION:
animation = pix.get_animation() animation = pix.get_animation()
pixbuf = animation.get_static_image() pixbuf = animation.get_static_image()
elif pix_type == Gtk.ImageType.EMPTY: elif pix_type == Gtk.ImageType.EMPTY:
pix = gajim.interface.jabber_state_images['16'][each] pix = app.interface.jabber_state_images['16'][each]
pix_16_type = pix.get_storage_type() pix_16_type = pix.get_storage_type()
if pix_16_type == Gtk.ImageType.ANIMATION: if pix_16_type == Gtk.ImageType.ANIMATION:
animation = pix.get_animation() animation = pix.get_animation()
@ -1073,11 +1073,11 @@ def make_jabber_state_images():
pixbuf = pix.get_pixbuf() pixbuf = pix.get_pixbuf()
scaled_pix = pixbuf.scale_simple(24, 24, GdkPixbuf.InterpType.BILINEAR) scaled_pix = pixbuf.scale_simple(24, 24, GdkPixbuf.InterpType.BILINEAR)
img.set_from_pixbuf(scaled_pix) img.set_from_pixbuf(scaled_pix)
gajim.interface.jabber_state_images['24'][each] = img app.interface.jabber_state_images['24'][each] = img
def reload_jabber_state_images(): def reload_jabber_state_images():
make_jabber_state_images() make_jabber_state_images()
gajim.interface.roster.update_jabber_state_images() app.interface.roster.update_jabber_state_images()
def label_set_autowrap(widget): def label_set_autowrap(widget):
""" """
@ -1112,7 +1112,7 @@ def __label_size_allocate(widget, allocation):
widget.set_size_request (-1, lh / Pango.SCALE) widget.set_size_request (-1, lh / Pango.SCALE)
def get_action(action): def get_action(action):
return gajim.app.lookup_action(action) return app.app.lookup_action(action)
def load_css(): def load_css():
path = os.path.join(configpaths.get('DATA'), 'style', 'gajim.css') path = os.path.join(configpaths.get('DATA'), 'style', 'gajim.css')
@ -1152,18 +1152,18 @@ def convert_config_to_css():
'state_muc_msg_color': ('', 'color')} 'state_muc_msg_color': ('', 'color')}
theme = gajim.config.get('roster_theme') theme = app.config.get('roster_theme')
for key, values in themed_widgets.items(): for key, values in themed_widgets.items():
config, attr = values config, attr = values
css += '#{} {{'.format(key) css += '#{} {{'.format(key)
value = gajim.config.get_per('themes', theme, config) value = app.config.get_per('themes', theme, config)
if value: if value:
css += '{attr}: {color};\n'.format(attr=attr, color=value) css += '{attr}: {color};\n'.format(attr=attr, color=value)
css += '}\n' css += '}\n'
for key, values in classes.items(): for key, values in classes.items():
node, attr = values node, attr = values
value = gajim.config.get_per('themes', theme, key) value = app.config.get_per('themes', theme, key)
if value: if value:
css += '.theme_{cls} {node} {{ {attr}: {color}; }}\n'.format( css += '.theme_{cls} {node} {{ {attr}: {color}; }}\n'.format(
cls=key, node=node, attr=attr, color=value) cls=key, node=node, attr=attr, color=value)
@ -1185,7 +1185,7 @@ def remove_css_class(widget, class_name):
style.remove_class('theme_' + class_name) style.remove_class('theme_' + class_name)
def add_css_font(): def add_css_font():
conversation_font = gajim.config.get('conversation_font') conversation_font = app.config.get('conversation_font')
if not conversation_font: if not conversation_font:
return '' return ''
font = Pango.FontDescription(conversation_font) font = Pango.FontDescription(conversation_font)

File diff suppressed because it is too large Load Diff

View File

@ -23,7 +23,7 @@ import os
from gajim import gtkgui_helpers from gajim import gtkgui_helpers
from gajim import message_control from gajim import message_control
from gajim.common import gajim from gajim.common import app
from gajim.common import helpers from gajim.common import helpers
from gajim.common import i18n from gajim.common import i18n
from nbxmpp.protocol import NS_COMMANDS, NS_FILE, NS_MUC, NS_ESESSION from nbxmpp.protocol import NS_COMMANDS, NS_FILE, NS_MUC, NS_ESESSION
@ -36,12 +36,12 @@ def build_resources_submenu(contacts, account, action, room_jid=None,
Build a submenu with contact's resources. room_jid and room_account are for Build a submenu with contact's resources. room_jid and room_account are for
action self.on_invite_to_room action self.on_invite_to_room
""" """
roster = gajim.interface.roster roster = app.interface.roster
sub_menu = Gtk.Menu() sub_menu = Gtk.Menu()
iconset = gajim.config.get('iconset') iconset = app.config.get('iconset')
if not iconset: if not iconset:
iconset = gajim.config.DEFAULT_ICONSET iconset = app.config.DEFAULT_ICONSET
path = os.path.join(helpers.get_iconset_path(iconset), '16x16') path = os.path.join(helpers.get_iconset_path(iconset), '16x16')
for c in contacts: for c in contacts:
item = Gtk.MenuItem.new_with_label( item = Gtk.MenuItem.new_with_label(
@ -70,19 +70,19 @@ show_bookmarked=False, force_resource=False):
""" """
if ignore_rooms is None: if ignore_rooms is None:
ignore_rooms = [] ignore_rooms = []
roster = gajim.interface.roster roster = app.interface.roster
# used if we invite only one contact with several resources # used if we invite only one contact with several resources
contact_list = [] contact_list = []
if len(list_) == 1: if len(list_) == 1:
contact, account = list_[0] contact, account = list_[0]
contact_list = gajim.contacts.get_contacts(account, contact.jid) contact_list = app.contacts.get_contacts(account, contact.jid)
contacts_transport = -1 contacts_transport = -1
connected_accounts = [] connected_accounts = []
# -1 is at start, False when not from the same, None when jabber # -1 is at start, False when not from the same, None when jabber
for (contact, account) in list_: for (contact, account) in list_:
if not account in connected_accounts: if not account in connected_accounts:
connected_accounts.append(account) connected_accounts.append(account)
transport = gajim.get_transport_name_from_jid(contact.jid) transport = app.get_transport_name_from_jid(contact.jid)
if transport == 'jabber': if transport == 'jabber':
transport = None transport = None
if contacts_transport == -1: if contacts_transport == -1:
@ -104,7 +104,7 @@ show_bookmarked=False, force_resource=False):
elif len(list_) == 1 and contact.supports(NS_MUC): elif len(list_) == 1 and contact.supports(NS_MUC):
invite_menuitem.set_sensitive(True) invite_menuitem.set_sensitive(True)
# use resource if it's self contact # use resource if it's self contact
if contact.jid == gajim.get_jid_from_account(account) or force_resource: if contact.jid == app.get_jid_from_account(account) or force_resource:
resource = contact.resource resource = contact.resource
else: else:
resource = None resource = None
@ -126,8 +126,8 @@ show_bookmarked=False, force_resource=False):
c_t = contacts_transport or 'jabber' c_t = contacts_transport or 'jabber'
muc_jid = {} muc_jid = {}
for account in connected_accounts: for account in connected_accounts:
for t in gajim.connections[account].muc_jid: for t in app.connections[account].muc_jid:
muc_jid[t] = gajim.connections[account].muc_jid[t] muc_jid[t] = app.connections[account].muc_jid[t]
if c_t not in muc_jid: if c_t not in muc_jid:
invite_to_new_room_menuitem.set_sensitive(False) invite_to_new_room_menuitem.set_sensitive(False)
rooms = [] # a list of (room_jid, account) tuple rooms = [] # a list of (room_jid, account) tuple
@ -135,8 +135,8 @@ show_bookmarked=False, force_resource=False):
minimized_controls = [] minimized_controls = []
for account in connected_accounts: for account in connected_accounts:
minimized_controls += \ minimized_controls += \
list(gajim.interface.minimized_controls[account].values()) list(app.interface.minimized_controls[account].values())
for gc_control in gajim.interface.msg_win_mgr.get_controls( for gc_control in app.interface.msg_win_mgr.get_controls(
message_control.TYPE_GC) + minimized_controls: message_control.TYPE_GC) + minimized_controls:
acct = gc_control.account acct = gc_control.account
if acct not in connected_accounts: if acct not in connected_accounts:
@ -144,8 +144,8 @@ show_bookmarked=False, force_resource=False):
room_jid = gc_control.room_jid room_jid = gc_control.room_jid
if room_jid in ignore_rooms: if room_jid in ignore_rooms:
continue continue
if room_jid in gajim.gc_connected[acct] and \ if room_jid in app.gc_connected[acct] and \
gajim.gc_connected[acct][room_jid] and \ app.gc_connected[acct][room_jid] and \
contacts_transport in ['jabber', None]: contacts_transport in ['jabber', None]:
rooms.append((room_jid, acct)) rooms.append((room_jid, acct))
if len(rooms): if len(rooms):
@ -159,7 +159,7 @@ show_bookmarked=False, force_resource=False):
account)) account))
else: else:
# use resource if it's self contact # use resource if it's self contact
if contact.jid == gajim.get_jid_from_account(account): if contact.jid == app.get_jid_from_account(account):
resource = contact.resource resource = contact.resource
else: else:
resource = None resource = None
@ -172,12 +172,12 @@ show_bookmarked=False, force_resource=False):
rooms2 = [] # a list of (room_jid, account) tuple rooms2 = [] # a list of (room_jid, account) tuple
r_jids = [] # list of room jids r_jids = [] # list of room jids
for account in connected_accounts: for account in connected_accounts:
for room in gajim.connections[account].bookmarks: for room in app.connections[account].bookmarks:
r_jid = room['jid'] r_jid = room['jid']
if r_jid in r_jids: if r_jid in r_jids:
continue continue
if r_jid not in gajim.gc_connected[account] or not \ if r_jid not in app.gc_connected[account] or not \
gajim.gc_connected[account][r_jid]: app.gc_connected[account][r_jid]:
rooms2.append((r_jid, account)) rooms2.append((r_jid, account))
r_jids.append(r_jid) r_jids.append(r_jid)
@ -193,7 +193,7 @@ show_bookmarked=False, force_resource=False):
account)) account))
else: else:
# use resource if it's self contact # use resource if it's self contact
if contact.jid == gajim.get_jid_from_account(account): if contact.jid == app.get_jid_from_account(account):
resource = contact.resource resource = contact.resource
else: else:
resource = None resource = None
@ -212,8 +212,8 @@ control=None, gc_contact=None, is_anonymous=True):
return return
jid = contact.jid jid = contact.jid
our_jid = jid == gajim.get_jid_from_account(account) our_jid = jid == app.get_jid_from_account(account)
roster = gajim.interface.roster roster = app.interface.roster
xml = gtkgui_helpers.get_gtk_builder('contact_context_menu.ui') xml = gtkgui_helpers.get_gtk_builder('contact_context_menu.ui')
contact_context_menu = xml.get_object('contact_context_menu') contact_context_menu = xml.get_object('contact_context_menu')
@ -249,17 +249,17 @@ control=None, gc_contact=None, is_anonymous=True):
items_to_hide = [] items_to_hide = []
contacts = gajim.contacts.get_contacts(account, jid) contacts = app.contacts.get_contacts(account, jid)
if len(contacts) > 1 and use_multiple_contacts: # several resources if len(contacts) > 1 and use_multiple_contacts: # several resources
start_chat_menuitem.set_submenu(build_resources_submenu(contacts, start_chat_menuitem.set_submenu(build_resources_submenu(contacts,
account, gajim.interface.on_open_chat_window)) account, app.interface.on_open_chat_window))
send_file_menuitem.set_submenu(build_resources_submenu(contacts, send_file_menuitem.set_submenu(build_resources_submenu(contacts,
account, roster.on_send_file_menuitem_activate, cap=NS_FILE)) account, roster.on_send_file_menuitem_activate, cap=NS_FILE))
execute_command_menuitem.set_submenu(build_resources_submenu( execute_command_menuitem.set_submenu(build_resources_submenu(
contacts, account, roster.on_execute_command, cap=NS_COMMANDS)) contacts, account, roster.on_execute_command, cap=NS_COMMANDS))
else: else:
start_chat_menuitem.connect('activate', start_chat_menuitem.connect('activate',
gajim.interface.on_open_chat_window, contact, account) app.interface.on_open_chat_window, contact, account)
if contact.supports(NS_FILE) or contact.supports(NS_JINGLE_FILE_TRANSFER_5): if contact.supports(NS_FILE) or contact.supports(NS_JINGLE_FILE_TRANSFER_5):
send_file_menuitem.set_sensitive(True) send_file_menuitem.set_sensitive(True)
send_file_menuitem.connect('activate', send_file_menuitem.connect('activate',
@ -295,7 +295,7 @@ control=None, gc_contact=None, is_anonymous=True):
edit_groups_menuitem.connect('activate', roster.on_edit_groups, [(contact, edit_groups_menuitem.connect('activate', roster.on_edit_groups, [(contact,
account)]) account)])
if gajim.connections[account].gpg: if app.connections[account].gpg:
assign_openpgp_key_menuitem.connect('activate', assign_openpgp_key_menuitem.connect('activate',
roster.on_assign_pgp_key, contact, account) roster.on_assign_pgp_key, contact, account)
else: else:
@ -310,7 +310,7 @@ control=None, gc_contact=None, is_anonymous=True):
items_to_hide += [rename_menuitem, edit_groups_menuitem] items_to_hide += [rename_menuitem, edit_groups_menuitem]
# Unsensitive many items when account is offline # Unsensitive many items when account is offline
if gajim.account_is_disconnected(account): if app.account_is_disconnected(account):
for widget in (start_chat_menuitem, rename_menuitem, for widget in (start_chat_menuitem, rename_menuitem,
edit_groups_menuitem, send_file_menuitem, convert_to_gc_menuitem, edit_groups_menuitem, send_file_menuitem, convert_to_gc_menuitem,
information_menuitem): information_menuitem):
@ -336,7 +336,7 @@ control=None, gc_contact=None, is_anonymous=True):
item.hide() item.hide()
# Zeroconf Account # Zeroconf Account
if gajim.config.get_per('accounts', account, 'is_zeroconf'): if app.config.get_per('accounts', account, 'is_zeroconf'):
for item in (send_custom_status_menuitem, send_single_message_menuitem, for item in (send_custom_status_menuitem, send_single_message_menuitem,
invite_menuitem, block_menuitem, unblock_menuitem, ignore_menuitem, invite_menuitem, block_menuitem, unblock_menuitem, ignore_menuitem,
unignore_menuitem, set_custom_avatar_menuitem, subscription_menuitem, unignore_menuitem, set_custom_avatar_menuitem, subscription_menuitem,
@ -367,7 +367,7 @@ control=None, gc_contact=None, is_anonymous=True):
if helpers.group_is_blocked(account, group): if helpers.group_is_blocked(account, group):
blocked = True blocked = True
break break
transport = gajim.get_transport_name_from_jid(jid, use_config_setting=False) transport = app.get_transport_name_from_jid(jid, use_config_setting=False)
if transport and transport != 'jabber': if transport and transport != 'jabber':
# Transport contact, send custom status unavailable # Transport contact, send custom status unavailable
send_custom_status_menuitem.set_sensitive(False) send_custom_status_menuitem.set_sensitive(False)
@ -380,7 +380,7 @@ control=None, gc_contact=None, is_anonymous=True):
invite_menuitem.set_sensitive(False) invite_menuitem.set_sensitive(False)
else: else:
bookmarked = False bookmarked = False
c_ = gajim.contacts.get_contact(account, gc_contact.jid, c_ = app.contacts.get_contact(account, gc_contact.jid,
gc_contact.resource) gc_contact.resource)
if c_ and c_.supports(NS_CONFERENCE): if c_ and c_.supports(NS_CONFERENCE):
bookmarked=True bookmarked=True
@ -394,7 +394,7 @@ control=None, gc_contact=None, is_anonymous=True):
show_bookmarked=contact.supports(NS_CONFERENCE), show_bookmarked=contact.supports(NS_CONFERENCE),
force_resource=force_resource) force_resource=force_resource)
if gajim.account_is_disconnected(account): if app.account_is_disconnected(account):
invite_menuitem.set_sensitive(False) invite_menuitem.set_sensitive(False)
# One or several resource, we do the same for send_custom_status # One or several resource, we do the same for send_custom_status
@ -431,7 +431,7 @@ control=None, gc_contact=None, is_anonymous=True):
ask_auth_menuitem.connect('activate', roster.req_sub, jid, ask_auth_menuitem.connect('activate', roster.req_sub, jid,
_('I would like to add you to my roster'), account, _('I would like to add you to my roster'), account,
contact.groups, contact.name) contact.groups, contact.name)
transport = gajim.get_transport_name_from_jid(jid, transport = app.get_transport_name_from_jid(jid,
use_config_setting=False) use_config_setting=False)
if contact.sub in ('to', 'none') or transport not in ['jabber', None]: if contact.sub in ('to', 'none') or transport not in ['jabber', None]:
revoke_auth_menuitem.set_sensitive(False) revoke_auth_menuitem.set_sensitive(False)
@ -439,7 +439,7 @@ control=None, gc_contact=None, is_anonymous=True):
revoke_auth_menuitem.connect('activate', roster.revoke_auth, jid, revoke_auth_menuitem.connect('activate', roster.revoke_auth, jid,
account) account)
elif gajim.connections[account].roster_supported: elif app.connections[account].roster_supported:
# contact is in group 'Not in Roster' # contact is in group 'Not in Roster'
add_to_roster_menuitem.set_no_show_all(False) add_to_roster_menuitem.set_no_show_all(False)
subscription_menuitem.set_sensitive(False) subscription_menuitem.set_sensitive(False)
@ -459,18 +459,18 @@ control=None, gc_contact=None, is_anonymous=True):
manage_contact_menuitem.set_sensitive(False) manage_contact_menuitem.set_sensitive(False)
# Unsensitive items when account is offline # Unsensitive items when account is offline
if gajim.account_is_disconnected(account): if app.account_is_disconnected(account):
for widget in (send_single_message_menuitem, subscription_menuitem, for widget in (send_single_message_menuitem, subscription_menuitem,
add_to_roster_menuitem, remove_from_roster_menuitem, add_to_roster_menuitem, remove_from_roster_menuitem,
execute_command_menuitem, send_custom_status_menuitem): execute_command_menuitem, send_custom_status_menuitem):
widget.set_sensitive(False) widget.set_sensitive(False)
if gajim.connections[account] and (gajim.connections[account].\ if app.connections[account] and (app.connections[account].\
privacy_rules_supported or gajim.connections[account].blocking_supported): privacy_rules_supported or app.connections[account].blocking_supported):
if helpers.jid_is_blocked(account, jid): if helpers.jid_is_blocked(account, jid):
block_menuitem.set_no_show_all(True) block_menuitem.set_no_show_all(True)
block_menuitem.hide() block_menuitem.hide()
if gajim.get_transport_name_from_jid(jid, use_config_setting=False)\ if app.get_transport_name_from_jid(jid, use_config_setting=False)\
and transport != 'jabber': and transport != 'jabber':
unblock_menuitem.set_no_show_all(True) unblock_menuitem.set_no_show_all(True)
unblock_menuitem.hide() unblock_menuitem.hide()
@ -483,7 +483,7 @@ control=None, gc_contact=None, is_anonymous=True):
else: else:
unblock_menuitem.set_no_show_all(True) unblock_menuitem.set_no_show_all(True)
unblock_menuitem.hide() unblock_menuitem.hide()
if gajim.get_transport_name_from_jid(jid, use_config_setting=False)\ if app.get_transport_name_from_jid(jid, use_config_setting=False)\
and transport != 'jabber': and transport != 'jabber':
block_menuitem.set_no_show_all(True) block_menuitem.set_no_show_all(True)
block_menuitem.hide() block_menuitem.hide()
@ -503,7 +503,7 @@ control=None, gc_contact=None, is_anonymous=True):
return contact_context_menu return contact_context_menu
def get_transport_menu(contact, account): def get_transport_menu(contact, account):
roster = gajim.interface.roster roster = app.interface.roster
jid = contact.jid jid = contact.jid
menu = Gtk.Menu() menu = Gtk.Menu()
@ -513,7 +513,7 @@ def get_transport_menu(contact, account):
item.connect('activate', roster.on_send_single_message_menuitem_activate, item.connect('activate', roster.on_send_single_message_menuitem_activate,
account, contact) account, contact)
menu.append(item) menu.append(item)
if gajim.account_is_disconnected(account): if app.account_is_disconnected(account):
item.set_sensitive(False) item.set_sensitive(False)
blocked = False blocked = False
@ -535,7 +535,7 @@ def get_transport_menu(contact, account):
[(contact, account)], s) [(contact, account)], s)
status_menuitems.append(status_menuitem) status_menuitems.append(status_menuitem)
menu.append(send_custom_status_menuitem) menu.append(send_custom_status_menuitem)
if gajim.account_is_disconnected(account): if app.account_is_disconnected(account):
send_custom_status_menuitem.set_sensitive(False) send_custom_status_menuitem.set_sensitive(False)
item = Gtk.SeparatorMenuItem.new() # separator item = Gtk.SeparatorMenuItem.new() # separator
@ -546,7 +546,7 @@ def get_transport_menu(contact, account):
menu.append(item) menu.append(item)
item.connect('activate', roster.on_execute_command, contact, account, item.connect('activate', roster.on_execute_command, contact, account,
contact.resource) contact.resource)
if gajim.account_is_disconnected(account): if app.account_is_disconnected(account):
item.set_sensitive(False) item.set_sensitive(False)
# Manage Transport submenu # Manage Transport submenu
@ -559,14 +559,14 @@ def get_transport_menu(contact, account):
item = Gtk.MenuItem.new_with_mnemonic(_('_Modify Transport')) item = Gtk.MenuItem.new_with_mnemonic(_('_Modify Transport'))
manage_transport_submenu.append(item) manage_transport_submenu.append(item)
item.connect('activate', roster.on_edit_agent, contact, account) item.connect('activate', roster.on_edit_agent, contact, account)
if gajim.account_is_disconnected(account): if app.account_is_disconnected(account):
item.set_sensitive(False) item.set_sensitive(False)
# Rename # Rename
item = Gtk.MenuItem.new_with_mnemonic(_('_Rename…')) item = Gtk.MenuItem.new_with_mnemonic(_('_Rename…'))
manage_transport_submenu.append(item) manage_transport_submenu.append(item)
item.connect('activate', roster.on_rename, 'agent', jid, account) item.connect('activate', roster.on_rename, 'agent', jid, account)
if gajim.account_is_disconnected(account): if app.account_is_disconnected(account):
item.set_sensitive(False) item.set_sensitive(False)
item = Gtk.SeparatorMenuItem.new() # separator item = Gtk.SeparatorMenuItem.new() # separator
@ -581,14 +581,14 @@ def get_transport_menu(contact, account):
item.connect('activate', roster.on_block, [(contact, account)]) item.connect('activate', roster.on_block, [(contact, account)])
manage_transport_submenu.append(item) manage_transport_submenu.append(item)
if gajim.account_is_disconnected(account): if app.account_is_disconnected(account):
item.set_sensitive(False) item.set_sensitive(False)
# Remove # Remove
item = Gtk.MenuItem.new_with_mnemonic(_('Remo_ve')) item = Gtk.MenuItem.new_with_mnemonic(_('Remo_ve'))
manage_transport_submenu.append(item) manage_transport_submenu.append(item)
item.connect('activate', roster.on_remove_agent, [(contact, account)]) item.connect('activate', roster.on_remove_agent, [(contact, account)])
if gajim.account_is_disconnected(account): if app.account_is_disconnected(account):
item.set_sensitive(False) item.set_sensitive(False)
item = Gtk.SeparatorMenuItem.new() # separator item = Gtk.SeparatorMenuItem.new() # separator
@ -598,7 +598,7 @@ def get_transport_menu(contact, account):
information_menuitem = Gtk.MenuItem.new_with_mnemonic(_('_Information')) information_menuitem = Gtk.MenuItem.new_with_mnemonic(_('_Information'))
menu.append(information_menuitem) menu.append(information_menuitem)
information_menuitem.connect('activate', roster.on_info, contact, account) information_menuitem.connect('activate', roster.on_info, contact, account)
if gajim.account_is_disconnected(account): if app.account_is_disconnected(account):
information_menuitem.set_sensitive(False) information_menuitem.set_sensitive(False)
menu.connect('selection-done', gtkgui_helpers.destroy_widget) menu.connect('selection-done', gtkgui_helpers.destroy_widget)
@ -611,7 +611,7 @@ Build dynamic Application Menus
def get_bookmarks_menu(account, rebuild=False): def get_bookmarks_menu(account, rebuild=False):
if not gajim.connections[account].bookmarks: if not app.connections[account].bookmarks:
return None return None
menu = Gio.Menu() menu = Gio.Menu()
@ -624,7 +624,7 @@ def get_bookmarks_menu(account, rebuild=False):
# Build Bookmarks # Build Bookmarks
section = Gio.Menu() section = Gio.Menu()
for bookmark in gajim.connections[account].bookmarks: for bookmark in app.connections[account].bookmarks:
name = bookmark['name'] name = bookmark['name']
if not name: if not name:
# No name was given for this bookmark. # No name was given for this bookmark.
@ -710,11 +710,11 @@ def get_account_menu(account):
def build_accounts_menu(): def build_accounts_menu():
menubar = gajim.app.get_menubar() menubar = app.app.get_menubar()
# Accounts Submenu # Accounts Submenu
acc_menu = menubar.get_item_link(0, 'submenu') acc_menu = menubar.get_item_link(0, 'submenu')
acc_menu.remove_all() acc_menu.remove_all()
accounts_list = sorted(gajim.contacts.get_accounts()) accounts_list = sorted(app.contacts.get_accounts())
if not accounts_list: if not accounts_list:
no_accounts = _('No Accounts available') no_accounts = _('No Accounts available')
acc_menu.append_item(Gio.MenuItem.new(no_accounts, None)) acc_menu.append_item(Gio.MenuItem.new(no_accounts, None))
@ -730,7 +730,7 @@ def build_accounts_menu():
def build_bookmark_menu(account): def build_bookmark_menu(account):
menubar = gajim.app.get_menubar() menubar = app.app.get_menubar()
bookmark_menu = get_bookmarks_menu(account) bookmark_menu = get_bookmarks_menu(account)
if not bookmark_menu: if not bookmark_menu:
return return
@ -756,7 +756,7 @@ def get_encryption_menu(control_id, type_id):
menu = Gio.Menu() menu = Gio.Menu()
menu.append( menu.append(
'Disabled', 'win.set-encryption-{}::{}'.format(control_id, 'disabled')) 'Disabled', 'win.set-encryption-{}::{}'.format(control_id, 'disabled'))
for name, plugin in gajim.plugin_manager.encryption_plugins.items(): for name, plugin in app.plugin_manager.encryption_plugins.items():
if type_id == 'gc': if type_id == 'gc':
if not hasattr(plugin, 'allow_groupchat'): if not hasattr(plugin, 'allow_groupchat'):
continue continue

View File

@ -71,7 +71,7 @@ del parseOpts
import gajim.common.configpaths import gajim.common.configpaths
gajim.common.configpaths.gajimpaths.init(config_path) gajim.common.configpaths.gajimpaths.init(config_path)
del config_path del config_path
from gajim.common import gajim from gajim.common import app
from gajim import gtkgui_helpers from gajim import gtkgui_helpers
from gajim.common.logger import LOG_DB_PATH, JIDConstant, KindConstant from gajim.common.logger import LOG_DB_PATH, JIDConstant, KindConstant
from gajim.common import helpers from gajim.common import helpers
@ -381,20 +381,20 @@ class HistoryManager:
if kind in (KindConstant.SINGLE_MSG_RECV, if kind in (KindConstant.SINGLE_MSG_RECV,
KindConstant.CHAT_MSG_RECV, KindConstant.GC_MSG): KindConstant.CHAT_MSG_RECV, KindConstant.GC_MSG):
# it is the other side # it is the other side
color = gajim.config.get('inmsgcolor') # so incoming color color = app.config.get('inmsgcolor') # so incoming color
elif kind in (KindConstant.SINGLE_MSG_SENT, elif kind in (KindConstant.SINGLE_MSG_SENT,
KindConstant.CHAT_MSG_SENT): # it is us KindConstant.CHAT_MSG_SENT): # it is us
color = gajim.config.get('outmsgcolor') # so outgoing color color = app.config.get('outmsgcolor') # so outgoing color
elif kind in (KindConstant.STATUS, elif kind in (KindConstant.STATUS,
KindConstant.GCSTATUS): # is is statuses KindConstant.GCSTATUS): # is is statuses
# so status color # so status color
color = gajim.config.get('statusmsgcolor') color = app.config.get('statusmsgcolor')
# include status into (status) message # include status into (status) message
if message is None: if message is None:
message = '' message = ''
else: else:
message = ' : ' + message message = ' : ' + message
message = helpers.get_uf_show(gajim.SHOW_LIST[show]) + \ message = helpers.get_uf_show(app.SHOW_LIST[show]) + \
message message
message_ = '<span' message_ = '<span'
@ -461,7 +461,7 @@ class HistoryManager:
dlg = xml.get_object('filechooserdialog') dlg = xml.get_object('filechooserdialog')
dlg.set_title(_('Exporting History Logs…')) dlg.set_title(_('Exporting History Logs…'))
dlg.set_current_folder(gajim.HOME_DIR) dlg.set_current_folder(app.HOME_DIR)
dlg.props.do_overwrite_confirmation = True dlg.props.do_overwrite_confirmation = True
response = dlg.run() response = dlg.run()

View File

@ -24,7 +24,7 @@ from datetime import datetime, timedelta, timezone
import nbxmpp import nbxmpp
from gi.repository import Gtk, GLib from gi.repository import Gtk, GLib
from gajim.common import gajim from gajim.common import app
from gajim.common import ged from gajim.common import ged
from gajim.gtkgui_helpers import get_icon_pixmap from gajim.gtkgui_helpers import get_icon_pixmap
@ -48,7 +48,7 @@ class HistorySyncAssistant(Gtk.Assistant):
self.set_name('HistorySyncAssistant') self.set_name('HistorySyncAssistant')
self.set_transient_for(parent) self.set_transient_for(parent)
self.account = account self.account = account
self.con = gajim.connections[self.account] self.con = app.connections[self.account]
self.timedelta = None self.timedelta = None
self.now = datetime.utcnow() self.now = datetime.utcnow()
self.query_id = None self.query_id = None
@ -58,7 +58,7 @@ class HistorySyncAssistant(Gtk.Assistant):
self.next = None self.next = None
self.hide_buttons() self.hide_buttons()
mam_start = gajim.config.get_per('accounts', account, 'mam_start_date') mam_start = app.config.get_per('accounts', account, 'mam_start_date')
if not mam_start or mam_start == ArchiveState.NEVER: if not mam_start or mam_start == ArchiveState.NEVER:
self.current_start = self.now self.current_start = self.now
elif mam_start == ArchiveState.ALL: elif mam_start == ArchiveState.ALL:
@ -80,10 +80,10 @@ class HistorySyncAssistant(Gtk.Assistant):
self.set_page_type(self.summary, Gtk.AssistantPageType.SUMMARY) self.set_page_type(self.summary, Gtk.AssistantPageType.SUMMARY)
self.set_page_complete(self.summary, True) self.set_page_complete(self.summary, True)
gajim.ged.register_event_handler('archiving-finished', app.ged.register_event_handler('archiving-finished',
ged.PRECORE, ged.PRECORE,
self._nec_archiving_finished) self._nec_archiving_finished)
gajim.ged.register_event_handler('raw-mam-message-received', app.ged.register_event_handler('raw-mam-message-received',
ged.PRECORE, ged.PRECORE,
self._nec_mam_message_received) self._nec_mam_message_received)
@ -164,13 +164,13 @@ class HistorySyncAssistant(Gtk.Assistant):
self.prepare_query() self.prepare_query()
def on_destroy(self, *args): def on_destroy(self, *args):
gajim.ged.remove_event_handler('archiving-finished', app.ged.remove_event_handler('archiving-finished',
ged.PRECORE, ged.PRECORE,
self._nec_archiving_finished) self._nec_archiving_finished)
gajim.ged.remove_event_handler('raw-mam-message-received', app.ged.remove_event_handler('raw-mam-message-received',
ged.PRECORE, ged.PRECORE,
self._nec_mam_message_received) self._nec_mam_message_received)
del gajim.interface.instances[self.account]['history_sync'] del app.interface.instances[self.account]['history_sync']
def on_close_clicked(self, *args): def on_close_clicked(self, *args):
self.destroy() self.destroy()
@ -223,7 +223,7 @@ class HistorySyncAssistant(Gtk.Assistant):
timestamp = self.start.timestamp() timestamp = self.start.timestamp()
else: else:
timestamp = ArchiveState.ALL timestamp = ArchiveState.ALL
gajim.config.set_per('accounts', self.account, app.config.set_per('accounts', self.account,
'mam_start_date', timestamp) 'mam_start_date', timestamp)
log.debug('config: set mam_start_date: %s', timestamp) log.debug('config: set mam_start_date: %s', timestamp)
self.set_current_page(Pages.SUMMARY) self.set_current_page(Pages.SUMMARY)

View File

@ -38,7 +38,7 @@ from gajim import gtkgui_helpers
from gajim import conversation_textview from gajim import conversation_textview
from gajim import dialogs from gajim import dialogs
from gajim.common import gajim from gajim.common import app
from gajim.common import helpers from gajim.common import helpers
from gajim.common import exceptions from gajim.common import exceptions
@ -131,11 +131,11 @@ class HistoryWindow:
self._load_history(None) self._load_history(None)
gtkgui_helpers.resize_window(self.window, gtkgui_helpers.resize_window(self.window,
gajim.config.get('history_window_width'), app.config.get('history_window_width'),
gajim.config.get('history_window_height')) app.config.get('history_window_height'))
gtkgui_helpers.move_window(self.window, gtkgui_helpers.move_window(self.window,
gajim.config.get('history_window_x-position'), app.config.get('history_window_x-position'),
gajim.config.get('history_window_y-position')) app.config.get('history_window_y-position'))
xml.connect_signals(self) xml.connect_signals(self)
self.window.show_all() self.window.show_all()
@ -154,17 +154,17 @@ class HistoryWindow:
liststore = gtkgui_helpers.get_completion_liststore(self.jid_entry) liststore = gtkgui_helpers.get_completion_liststore(self.jid_entry)
# Add all jids in logs.db: # Add all jids in logs.db:
db_jids = gajim.logger.get_jids_in_db() db_jids = app.logger.get_jids_in_db()
completion_dict = dict.fromkeys(db_jids) completion_dict = dict.fromkeys(db_jids)
self.accounts_seen_online = list(gajim.contacts.get_accounts()) self.accounts_seen_online = list(app.contacts.get_accounts())
# Enhance contacts of online accounts with contact. Needed for mapping below # Enhance contacts of online accounts with contact. Needed for mapping below
for account in self.accounts_seen_online: for account in self.accounts_seen_online:
completion_dict.update(helpers.get_contact_dict_for_account(account)) completion_dict.update(helpers.get_contact_dict_for_account(account))
muc_active_img = gtkgui_helpers.load_icon('muc_active') muc_active_img = gtkgui_helpers.load_icon('muc_active')
contact_img = gajim.interface.jabber_state_images['16']['online'] contact_img = app.interface.jabber_state_images['16']['online']
muc_active_pix = muc_active_img.get_pixbuf() muc_active_pix = muc_active_img.get_pixbuf()
contact_pix = contact_img.get_pixbuf() contact_pix = contact_img.get_pixbuf()
@ -196,12 +196,12 @@ class HistoryWindow:
info_acc = self._get_account_for_jid(info_jid) info_acc = self._get_account_for_jid(info_jid)
if gajim.logger.jid_is_room_jid(completed) or\ if app.logger.jid_is_room_jid(completed) or\
gajim.logger.jid_is_from_pm(completed): app.logger.jid_is_from_pm(completed):
pix = muc_active_pix pix = muc_active_pix
if gajim.logger.jid_is_from_pm(completed): if app.logger.jid_is_from_pm(completed):
# It's PM. Make it easier to find # It's PM. Make it easier to find
room, nick = gajim.get_room_and_nick_from_fjid(completed) room, nick = app.get_room_and_nick_from_fjid(completed)
info_completion = '%s from %s' % (nick, room) info_completion = '%s from %s' % (nick, room)
completed = info_completion completed = info_completion
info_completion2 = '%s/%s' % (room, nick) info_completion2 = '%s/%s' % (room, nick)
@ -234,11 +234,11 @@ class HistoryWindow:
Return the corresponding account of the jid. May be None if an account Return the corresponding account of the jid. May be None if an account
could not be found could not be found
""" """
accounts = gajim.contacts.get_accounts() accounts = app.contacts.get_accounts()
account = None account = None
for acc in accounts: for acc in accounts:
jid_list = gajim.contacts.get_jid_list(acc) jid_list = app.contacts.get_jid_list(acc)
gc_list = gajim.contacts.get_gc_list(acc) gc_list = app.contacts.get_gc_list(acc)
if jid in jid_list or jid in gc_list: if jid in jid_list or jid in gc_list:
account = acc account = acc
break break
@ -246,7 +246,7 @@ class HistoryWindow:
def on_history_window_destroy(self, widget): def on_history_window_destroy(self, widget):
self.history_textview.del_handlers() self.history_textview.del_handlers()
del gajim.interface.instances['logs'] del app.interface.instances['logs']
def on_history_window_key_press_event(self, widget, event): def on_history_window_key_press_event(self, widget, event):
if event.keyval == Gdk.KEY_Escape: if event.keyval == Gdk.KEY_Escape:
@ -287,14 +287,14 @@ class HistoryWindow:
self.checkbutton.set_sensitive(False) self.checkbutton.set_sensitive(False)
else: else:
# Are log disabled for account ? # Are log disabled for account ?
if self.account in gajim.config.get_per('accounts', self.account, if self.account in app.config.get_per('accounts', self.account,
'no_log_for').split(' '): 'no_log_for').split(' '):
self.checkbutton.set_active(False) self.checkbutton.set_active(False)
self.checkbutton.set_sensitive(False) self.checkbutton.set_sensitive(False)
else: else:
# Are log disabled for jid ? # Are log disabled for jid ?
log = True log = True
if self.jid in gajim.config.get_per('accounts', self.account, if self.jid in app.config.get_per('accounts', self.account,
'no_log_for').split(' '): 'no_log_for').split(' '):
log = False log = False
self.checkbutton.set_active(log) self.checkbutton.set_active(log)
@ -305,7 +305,7 @@ class HistoryWindow:
# select logs for last date we have logs with contact # select logs for last date we have logs with contact
self.calendar.set_sensitive(True) self.calendar.set_sensitive(True)
last_log = \ last_log = \
gajim.logger.get_last_date_that_has_logs(self.account, self.jid) app.logger.get_last_date_that_has_logs(self.account, self.jid)
date = time.localtime(last_log) date = time.localtime(last_log)
@ -361,7 +361,7 @@ class HistoryWindow:
month = gtkgui_helpers.make_gtk_month_python_month(month) month = gtkgui_helpers.make_gtk_month_python_month(month)
try: try:
log_days = gajim.logger.get_days_with_logs( log_days = app.logger.get_days_with_logs(
self.account, self.jid, year, month) self.account, self.jid, year, month)
except exceptions.PysqliteOperationalError as e: except exceptions.PysqliteOperationalError as e:
dialogs.ErrorDialog(_('Disk Error'), str(e)) dialogs.ErrorDialog(_('Disk Error'), str(e))
@ -398,7 +398,7 @@ class HistoryWindow:
date = datetime.datetime(year, month, day) date = datetime.datetime(year, month, day)
conversation = gajim.logger.get_conversation_for_date( conversation = app.logger.get_conversation_for_date(
self.account, self.jid, date) self.account, self.jid, date)
for message in conversation: for message in conversation:
@ -427,13 +427,13 @@ class HistoryWindow:
# Make the beginning of every message searchable by its log_line_id # Make the beginning of every message searchable by its log_line_id
buf.create_mark(str(log_line_id), end_iter, left_gravity=True) buf.create_mark(str(log_line_id), end_iter, left_gravity=True)
if gajim.config.get('print_time') == 'always': if app.config.get('print_time') == 'always':
timestamp_str = gajim.config.get('time_stamp') timestamp_str = app.config.get('time_stamp')
timestamp_str = helpers.from_one_line(timestamp_str) timestamp_str = helpers.from_one_line(timestamp_str)
tim = time.strftime(timestamp_str, time.localtime(float(tim))) tim = time.strftime(timestamp_str, time.localtime(float(tim)))
buf.insert(end_iter, tim) buf.insert(end_iter, tim)
elif gajim.config.get('print_time') == 'sometimes': elif app.config.get('print_time') == 'sometimes':
every_foo_seconds = 60 * gajim.config.get( every_foo_seconds = 60 * app.config.get(
'print_ichat_every_foo_minutes') 'print_ichat_every_foo_minutes')
seconds_passed = tim - self.last_time_printout seconds_passed = tim - self.last_time_printout
if seconds_passed > every_foo_seconds: if seconds_passed > every_foo_seconds:
@ -455,12 +455,12 @@ class HistoryWindow:
tag_msg = 'incomingtxt' tag_msg = 'incomingtxt'
elif kind in (KindConstant.SINGLE_MSG_SENT, KindConstant.CHAT_MSG_SENT): elif kind in (KindConstant.SINGLE_MSG_SENT, KindConstant.CHAT_MSG_SENT):
if self.account: if self.account:
contact_name = gajim.nicks[self.account] contact_name = app.nicks[self.account]
else: else:
# we don't have roster, we don't know our own nick, use first # we don't have roster, we don't know our own nick, use first
# account one (urk!) # account one (urk!)
account = list(gajim.contacts.get_accounts())[0] account = list(app.contacts.get_accounts())[0]
contact_name = gajim.nicks[account] contact_name = app.nicks[account]
tag_name = 'outgoing' tag_name = 'outgoing'
tag_msg = 'outgoingtxt' tag_msg = 'outgoingtxt'
elif kind == KindConstant.GCSTATUS: elif kind == KindConstant.GCSTATUS:
@ -495,9 +495,9 @@ class HistoryWindow:
# eg. nkour: nkour is now Offline # eg. nkour: nkour is now Offline
if contact_name and kind != KindConstant.GCSTATUS: if contact_name and kind != KindConstant.GCSTATUS:
# add stuff before and after contact name # add stuff before and after contact name
before_str = gajim.config.get('before_nickname') before_str = app.config.get('before_nickname')
before_str = helpers.from_one_line(before_str) before_str = helpers.from_one_line(before_str)
after_str = gajim.config.get('after_nickname') after_str = app.config.get('after_nickname')
after_str = helpers.from_one_line(after_str) after_str = helpers.from_one_line(after_str)
format = before_str + contact_name + after_str + ' ' format = before_str + contact_name + after_str + ' '
if tag_name: if tag_name:
@ -537,7 +537,7 @@ class HistoryWindow:
# or if we browse a groupchat history. The account is not needed, a dummy can # or if we browse a groupchat history. The account is not needed, a dummy can
# be set. # be set.
# This may leed to wrong self nick in the displayed history (Uggh!) # This may leed to wrong self nick in the displayed history (Uggh!)
account = list(gajim.contacts.get_accounts())[0] account = list(app.contacts.get_accounts())[0]
date = None date = None
if self.search_in_date.get_active(): if self.search_in_date.get_active():
@ -547,7 +547,7 @@ class HistoryWindow:
show_status = self.show_status_checkbutton.get_active() show_status = self.show_status_checkbutton.get_active()
results = gajim.logger.search_log(account, jid, text, date) results = app.logger.search_log(account, jid, text, date)
#FIXME: #FIXME:
# add "subject: | message: " in message column if kind is single # add "subject: | message: " in message column if kind is single
# also do we need show at all? (we do not search on subject) # also do we need show at all? (we do not search on subject)
@ -559,7 +559,7 @@ class HistoryWindow:
contact_name = row.contact_name contact_name = row.contact_name
if not contact_name: if not contact_name:
if row.kind == KindConstant.CHAT_MSG_SENT: # it's us! :) if row.kind == KindConstant.CHAT_MSG_SENT: # it's us! :)
contact_name = gajim.nicks[account] contact_name = app.nicks[account]
else: else:
contact_name = self.completion_dict[jid][InfoColumn.NAME] contact_name = self.completion_dict[jid][InfoColumn.NAME]
@ -633,7 +633,7 @@ class HistoryWindow:
def on_log_history_checkbutton_toggled(self, widget): def on_log_history_checkbutton_toggled(self, widget):
# log conversation history? # log conversation history?
oldlog = True oldlog = True
no_log_for = gajim.config.get_per('accounts', self.account, no_log_for = app.config.get_per('accounts', self.account,
'no_log_for').split() 'no_log_for').split()
if self.jid in no_log_for: if self.jid in no_log_for:
oldlog = False oldlog = False
@ -643,7 +643,7 @@ class HistoryWindow:
if log and self.jid in no_log_for: if log and self.jid in no_log_for:
no_log_for.remove(self.jid) no_log_for.remove(self.jid)
if oldlog != log: if oldlog != log:
gajim.config.set_per('accounts', self.account, 'no_log_for', app.config.set_per('accounts', self.account, 'no_log_for',
' '.join(no_log_for)) ' '.join(no_log_for))
def on_show_status_checkbutton_toggled(self, widget): def on_show_status_checkbutton_toggled(self, widget):
@ -668,7 +668,7 @@ class HistoryWindow:
x, y = self.window.get_window().get_root_origin() x, y = self.window.get_window().get_root_origin()
width, height = self.window.get_size() width, height = self.window.get_size()
gajim.config.set('history_window_x-position', x) app.config.set('history_window_x-position', x)
gajim.config.set('history_window_y-position', y) app.config.set('history_window_y-position', y)
gajim.config.set('history_window_width', width) app.config.set('history_window_width', width)
gajim.config.set('history_window_height', height) app.config.set('history_window_height', height)

View File

@ -50,8 +50,8 @@ import urllib
if __name__ == '__main__': if __name__ == '__main__':
from gajim.common import i18n from gajim.common import i18n
import gajim.common.configpaths import gajim.common.configpaths
gajim.common.configpaths.gajimpaths.init(None) app.common.configpaths.gajimpaths.init(None)
from gajim.common import gajim from gajim.common import app
from gajim import gtkgui_helpers from gajim import gtkgui_helpers
from gajim.gtkgui_helpers import get_icon_pixmap from gajim.gtkgui_helpers import get_icon_pixmap
from gajim.common import helpers from gajim.common import helpers
@ -515,7 +515,7 @@ class HtmlHandler(xml.sax.handler.ContentHandler):
tag.href = href tag.href = href
tag.type_ = type_ # to be used by the URL handler tag.type_ = type_ # to be used by the URL handler
tag.connect('event', self.textview.hyperlink_handler, 'url') tag.connect('event', self.textview.hyperlink_handler, 'url')
tag.set_property('foreground', gajim.config.get('urlmsgcolor')) tag.set_property('foreground', app.config.get('urlmsgcolor'))
tag.set_property('underline', Pango.Underline.SINGLE) tag.set_property('underline', Pango.Underline.SINGLE)
tag.is_anchor = True tag.is_anchor = True
if title: if title:
@ -550,7 +550,7 @@ class HtmlHandler(xml.sax.handler.ContentHandler):
else: else:
if self.conv_textview: if self.conv_textview:
img_mark = self.textbuf.create_mark(None, self.iter, True) img_mark = self.textbuf.create_mark(None, self.iter, True)
gajim.thread_interface(helpers.download_image, [ app.thread_interface(helpers.download_image, [
self.conv_textview.account, attrs], self._update_img, self.conv_textview.account, attrs], self._update_img,
[attrs, img_mark, self._get_style_tags()]) [attrs, img_mark, self._get_style_tags()])
alt = attrs.get('alt', '') alt = attrs.get('alt', '')
@ -849,8 +849,8 @@ class HtmlTextView(Gtk.TextView):
self.id_ = self.connect('button-release-event', self.id_ = self.connect('button-release-event',
self.on_left_mouse_button_release) self.on_left_mouse_button_release)
self.get_buffer().eol_tag = self.get_buffer().create_tag('eol') self.get_buffer().eol_tag = self.get_buffer().create_tag('eol')
self.config = gajim.config self.config = app.config
self.interface = gajim.interface self.interface = app.interface
# end big hack # end big hack
def connect_tooltip(self, func=None): def connect_tooltip(self, func=None):
@ -860,7 +860,7 @@ class HtmlTextView(Gtk.TextView):
buffer_ = self.get_buffer() buffer_ = self.get_buffer()
self.tagURL = buffer_.create_tag('url') self.tagURL = buffer_.create_tag('url')
color = gajim.config.get('urlmsgcolor') color = app.config.get('urlmsgcolor')
self.tagURL.set_property('foreground', color) self.tagURL.set_property('foreground', color)
self.tagURL.set_property('underline', Pango.Underline.SINGLE) self.tagURL.set_property('underline', Pango.Underline.SINGLE)
self.tagURL.connect('event', self.hyperlink_handler, 'url') self.tagURL.connect('event', self.hyperlink_handler, 'url')
@ -912,7 +912,7 @@ class HtmlTextView(Gtk.TextView):
clip.set_text(text, -1) clip.set_text(text, -1)
# def on_start_chat_activate(self, widget, jid): # def on_start_chat_activate(self, widget, jid):
# gajim.interface.new_chat_from_jid(self.account, jid) # app.interface.new_chat_from_jid(self.account, jid)
def on_join_group_chat_menuitem_activate(self, widget, room_jid): def on_join_group_chat_menuitem_activate(self, widget, room_jid):
try: try:
@ -952,7 +952,7 @@ class HtmlTextView(Gtk.TextView):
childs[6].connect('activate', childs[6].connect('activate',
self.on_join_group_chat_menuitem_activate, text) self.on_join_group_chat_menuitem_activate, text)
# if self.account and gajim.connections[self.account].\ # if self.account and app.connections[self.account].\
# roster_supported: # roster_supported:
# childs[7].connect('activate', # childs[7].connect('activate',
# self.on_add_to_roster_activate, text) # self.on_add_to_roster_activate, text)
@ -995,7 +995,7 @@ class HtmlTextView(Gtk.TextView):
kind = 'xmpp' kind = 'xmpp'
elif word.startswith('mailto:'): elif word.startswith('mailto:'):
kind = 'mail' kind = 'mail'
elif gajim.interface.sth_at_sth_dot_sth_re.match(word): elif app.interface.sth_at_sth_dot_sth_re.match(word):
# it's a JID or mail # it's a JID or mail
kind = 'sth_at_sth' kind = 'sth_at_sth'
else: else:
@ -1097,11 +1097,11 @@ if __name__ == '__main__':
log = logging.getLogger() log = logging.getLogger()
gaj.Interface() gaj.Interface()
# create fake gajim.plugin_manager.gui_extension_point method for tests # create fake app.plugin_manager.gui_extension_point method for tests
def gui_extension_point(*args): def gui_extension_point(*args):
pass pass
gajim.plugin_manager = gaj.Interface() app.plugin_manager = gaj.Interface()
gajim.plugin_manager.gui_extension_point = gui_extension_point app.plugin_manager.gui_extension_point = gui_extension_point
htmlview = ConversationTextview(None) htmlview = ConversationTextview(None)

View File

@ -26,7 +26,7 @@ import os
import logging import logging
from gajim.common import dbus_support from gajim.common import dbus_support
from gajim.common import gajim from gajim.common import app
log = logging.getLogger('gajim.logind_listener') log = logging.getLogger('gajim.logind_listener')
supported = False supported = False
@ -46,9 +46,9 @@ def on_suspend(active):
# we're going for suspend, let's disconnect # we're going for suspend, let's disconnect
log.debug('System suspend detected, disconnecting from network…') log.debug('System suspend detected, disconnecting from network…')
for name, conn in gajim.connections.items(): for name, conn in app.connections.items():
if gajim.account_is_connected(name): if app.account_is_connected(name):
conn.old_show = gajim.SHOW_LIST[conn.connected] conn.old_show = app.SHOW_LIST[conn.connected]
st = conn.status st = conn.status
conn.change_status('offline', _('Machine going to sleep')) conn.change_status('offline', _('Machine going to sleep'))
conn.status = st conn.status = st

View File

@ -29,7 +29,7 @@
from gajim import gtkgui_helpers from gajim import gtkgui_helpers
import uuid import uuid
from gajim.common import gajim from gajim.common import app
from gajim.common import helpers from gajim.common import helpers
from gajim.common import ged from gajim.common import ged
from gajim.common.stanza_session import EncryptedStanzaSession, ArchivingStanzaSession from gajim.common.stanza_session import EncryptedStanzaSession, ArchivingStanzaSession
@ -64,13 +64,13 @@ class MessageControl(object):
self.control_id = str(uuid.uuid4()) self.control_id = str(uuid.uuid4())
self.session = None self.session = None
gajim.last_message_time[self.account][self.get_full_jid()] = 0 app.last_message_time[self.account][self.get_full_jid()] = 0
self.xml = gtkgui_helpers.get_gtk_builder('%s.ui' % widget_name) self.xml = gtkgui_helpers.get_gtk_builder('%s.ui' % widget_name)
self.xml.connect_signals(self) self.xml.connect_signals(self)
self.widget = self.xml.get_object('%s_hbox' % widget_name) self.widget = self.xml.get_object('%s_hbox' % widget_name)
gajim.ged.register_event_handler('message-outgoing', ged.OUT_GUI1, app.ged.register_event_handler('message-outgoing', ged.OUT_GUI1,
self._nec_message_outgoing) self._nec_message_outgoing)
def get_full_jid(self): def get_full_jid(self):
@ -119,7 +119,7 @@ class MessageControl(object):
""" """
Derived classes MUST implement this Derived classes MUST implement this
""" """
gajim.ged.remove_event_handler('message-outgoing', ged.OUT_GUI1, app.ged.remove_event_handler('message-outgoing', ged.OUT_GUI1,
self._nec_message_outgoing) self._nec_message_outgoing)
def repaint_themed_widgets(self): def repaint_themed_widgets(self):
@ -188,7 +188,7 @@ class MessageControl(object):
pass pass
def get_specific_unread(self): def get_specific_unread(self):
return len(gajim.events.get_events(self.account, return len(app.events.get_events(self.account,
self.contact.jid)) self.contact.jid))
def set_session(self, session): def set_session(self, session):
@ -234,11 +234,11 @@ class MessageControl(object):
obj.message = helpers.remove_invalid_xml_chars(obj.message) obj.message = helpers.remove_invalid_xml_chars(obj.message)
conn = gajim.connections[self.account] conn = app.connections[self.account]
if not self.session: if not self.session:
if (not obj.resource and if (not obj.resource and
obj.jid != gajim.get_jid_from_account(self.account)): obj.jid != app.get_jid_from_account(self.account)):
if self.resource: if self.resource:
obj.resource = self.resource obj.resource = self.resource
else: else:

View File

@ -28,7 +28,7 @@ from gi.repository import GObject
from gi.repository import GLib from gi.repository import GLib
from gi.repository import Pango from gi.repository import Pango
from gajim.common import gajim from gajim.common import app
from gajim import gtkgui_helpers from gajim import gtkgui_helpers
class MessageTextView(Gtk.TextView): class MessageTextView(Gtk.TextView):
@ -97,7 +97,7 @@ class MessageTextView(Gtk.TextView):
index = 0 index = 0
new_text = '' new_text = ''
iterator = gajim.interface.link_pattern_re.finditer(text) iterator = app.interface.link_pattern_re.finditer(text)
for match in iterator: for match in iterator:
start, end = match.span() start, end = match.span()
url = text[start:end] url = text[start:end]

View File

@ -41,7 +41,7 @@ from gajim import dialogs
from gajim.chat_control_base import ChatControlBase from gajim.chat_control_base import ChatControlBase
from gajim.chat_control import ChatControl from gajim.chat_control import ChatControl
from gajim.common import gajim from gajim.common import app
from gajim.gtkgui_helpers import get_action from gajim.gtkgui_helpers import get_action
#################### ####################
@ -89,7 +89,7 @@ class MessageWindow(object):
self.parent_paned = parent_paned self.parent_paned = parent_paned
old_parent = self.notebook.get_parent() old_parent = self.notebook.get_parent()
old_parent.remove(self.notebook) old_parent.remove(self.notebook)
if gajim.config.get('roster_on_the_right'): if app.config.get('roster_on_the_right'):
child1 = self.parent_paned.get_child1() child1 = self.parent_paned.get_child1()
self.parent_paned.remove(child1) self.parent_paned.remove(child1)
self.parent_paned.add(self.notebook) self.parent_paned.add(self.notebook)
@ -141,7 +141,7 @@ class MessageWindow(object):
self.handlers[id_] = self.notebook self.handlers[id_] = self.notebook
# Tab customizations # Tab customizations
pref_pos = gajim.config.get('tabs_position') pref_pos = app.config.get('tabs_position')
if pref_pos == 'bottom': if pref_pos == 'bottom':
nb_pos = Gtk.PositionType.BOTTOM nb_pos = Gtk.PositionType.BOTTOM
elif pref_pos == 'left': elif pref_pos == 'left':
@ -151,13 +151,13 @@ class MessageWindow(object):
else: else:
nb_pos = Gtk.PositionType.TOP nb_pos = Gtk.PositionType.TOP
self.notebook.set_tab_pos(nb_pos) self.notebook.set_tab_pos(nb_pos)
window_mode = gajim.interface.msg_win_mgr.mode window_mode = app.interface.msg_win_mgr.mode
if gajim.config.get('tabs_always_visible') or \ if app.config.get('tabs_always_visible') or \
window_mode == MessageWindowMgr.ONE_MSG_WINDOW_ALWAYS_WITH_ROSTER: window_mode == MessageWindowMgr.ONE_MSG_WINDOW_ALWAYS_WITH_ROSTER:
self.notebook.set_show_tabs(True) self.notebook.set_show_tabs(True)
else: else:
self.notebook.set_show_tabs(False) self.notebook.set_show_tabs(False)
self.notebook.set_show_border(gajim.config.get('tabs_border')) self.notebook.set_show_border(app.config.get('tabs_border'))
self.show_icon() self.show_icon()
def change_account_name(self, old_name, new_name): def change_account_name(self, old_name, new_name):
@ -222,14 +222,14 @@ class MessageWindow(object):
if number_of_closed_control > 1: if number_of_closed_control > 1:
def on_yes1(checked): def on_yes1(checked):
if checked: if checked:
gajim.config.set('confirm_close_multiple_tabs', False) app.config.set('confirm_close_multiple_tabs', False)
self.dont_warn_on_delete = True self.dont_warn_on_delete = True
for ctrl in self.controls(): for ctrl in self.controls():
if ctrl.minimizable(): if ctrl.minimizable():
ctrl.minimize() ctrl.minimize()
win.destroy() win.destroy()
if not gajim.config.get('confirm_close_multiple_tabs'): if not app.config.get('confirm_close_multiple_tabs'):
for ctrl in self.controls(): for ctrl in self.controls():
if ctrl.minimizable(): if ctrl.minimizable():
ctrl.minimize() ctrl.minimize()
@ -360,9 +360,9 @@ class MessageWindow(object):
# theme # theme
if not Gtk.Settings.get_default().get_property( if not Gtk.Settings.get_default().get_property(
'gtk-key-theme-name') == 'Emacs': 'gtk-key-theme-name') == 'Emacs':
if gajim.interface.msg_win_mgr.mode == \ if app.interface.msg_win_mgr.mode == \
gajim.interface.msg_win_mgr.ONE_MSG_WINDOW_ALWAYS_WITH_ROSTER: app.interface.msg_win_mgr.ONE_MSG_WINDOW_ALWAYS_WITH_ROSTER:
gajim.interface.roster.tree.grab_focus() app.interface.roster.tree.grab_focus()
return False return False
control._on_send_file_menuitem_activate(None) control._on_send_file_menuitem_activate(None)
return True return True
@ -451,7 +451,7 @@ class MessageWindow(object):
return True return True
# Close tab bindings # Close tab bindings
elif keyval == Gdk.KEY_Escape and \ elif keyval == Gdk.KEY_Escape and \
gajim.config.get('escape_key_closes'): # Escape app.config.get('escape_key_closes'): # Escape
self.remove_tab(control, self.CLOSE_ESC) self.remove_tab(control, self.CLOSE_ESC)
return True return True
@ -462,7 +462,7 @@ class MessageWindow(object):
self.remove_tab(control, self.CLOSE_CLOSE_BUTTON) self.remove_tab(control, self.CLOSE_CLOSE_BUTTON)
def show_icon(self): def show_icon(self):
window_mode = gajim.interface.msg_win_mgr.mode window_mode = app.interface.msg_win_mgr.mode
icon = None icon = None
if window_mode == MessageWindowMgr.ONE_MSG_WINDOW_NEVER: if window_mode == MessageWindowMgr.ONE_MSG_WINDOW_NEVER:
ctrl = self.get_active_control() ctrl = self.get_active_control()
@ -499,7 +499,7 @@ class MessageWindow(object):
unread = 0 unread = 0
for ctrl in self.controls(): for ctrl in self.controls():
if ctrl.type_id == message_control.TYPE_GC and not \ if ctrl.type_id == message_control.TYPE_GC and not \
gajim.config.get('notify_on_all_muc_messages') and not \ app.config.get('notify_on_all_muc_messages') and not \
ctrl.attention_flag: ctrl.attention_flag:
# count only pm messages # count only pm messages
unread += ctrl.get_nb_unread_pm() unread += ctrl.get_nb_unread_pm()
@ -517,13 +517,13 @@ class MessageWindow(object):
if control.type_id == message_control.TYPE_GC: if control.type_id == message_control.TYPE_GC:
name = control.room_jid.split('@')[0] name = control.room_jid.split('@')[0]
urgent = control.attention_flag or \ urgent = control.attention_flag or \
gajim.config.get('notify_on_all_muc_messages') app.config.get('notify_on_all_muc_messages')
else: else:
name = control.contact.get_shown_name() name = control.contact.get_shown_name()
if control.resource: if control.resource:
name += '/' + control.resource name += '/' + control.resource
window_mode = gajim.interface.msg_win_mgr.mode window_mode = app.interface.msg_win_mgr.mode
if window_mode == MessageWindowMgr.ONE_MSG_WINDOW_PERTYPE: if window_mode == MessageWindowMgr.ONE_MSG_WINDOW_PERTYPE:
# Show the plural form since number of tabs > 1 # Show the plural form since number of tabs > 1
if self.type_ == 'chat': if self.type_ == 'chat':
@ -570,19 +570,19 @@ class MessageWindow(object):
else: # We are leaving gc without status message or it's a chat else: # We are leaving gc without status message or it's a chat
ctrl.shutdown() ctrl.shutdown()
# Update external state # Update external state
gajim.events.remove_events(ctrl.account, ctrl.get_full_jid, app.events.remove_events(ctrl.account, ctrl.get_full_jid,
types = ['printed_msg', 'chat', 'gc_msg']) types = ['printed_msg', 'chat', 'gc_msg'])
fjid = ctrl.get_full_jid() fjid = ctrl.get_full_jid()
jid = gajim.get_jid_without_resource(fjid) jid = app.get_jid_without_resource(fjid)
fctrl = self.get_control(fjid, ctrl.account) fctrl = self.get_control(fjid, ctrl.account)
bctrl = self.get_control(jid, ctrl.account) bctrl = self.get_control(jid, ctrl.account)
# keep last_message_time around unless this was our last control with # keep last_message_time around unless this was our last control with
# that jid # that jid
if not fctrl and not bctrl and \ if not fctrl and not bctrl and \
fjid in gajim.last_message_time[ctrl.account]: fjid in app.last_message_time[ctrl.account]:
del gajim.last_message_time[ctrl.account][fjid] del app.last_message_time[ctrl.account][fjid]
self.notebook.remove_page(self.notebook.page_num(ctrl.widget)) self.notebook.remove_page(self.notebook.page_num(ctrl.widget))
@ -619,8 +619,8 @@ class MessageWindow(object):
pass pass
elif self.get_num_controls() == 0: elif self.get_num_controls() == 0:
# These are not called when the window is destroyed like this, fake it # These are not called when the window is destroyed like this, fake it
gajim.interface.msg_win_mgr._on_window_delete(self.window, None) app.interface.msg_win_mgr._on_window_delete(self.window, None)
gajim.interface.msg_win_mgr._on_window_destroy(self.window) app.interface.msg_win_mgr._on_window_destroy(self.window)
# dnd clean up # dnd clean up
self.notebook.drag_dest_unset() self.notebook.drag_dest_unset()
if self.parent_paned: if self.parent_paned:
@ -632,8 +632,8 @@ class MessageWindow(object):
self.window.destroy() self.window.destroy()
return # don't show_title, we are dead return # don't show_title, we are dead
elif self.get_num_controls() == 1: # we are going from two tabs to one elif self.get_num_controls() == 1: # we are going from two tabs to one
window_mode = gajim.interface.msg_win_mgr.mode window_mode = app.interface.msg_win_mgr.mode
show_tabs_if_one_tab = gajim.config.get('tabs_always_visible') or \ show_tabs_if_one_tab = app.config.get('tabs_always_visible') or \
window_mode == MessageWindowMgr.ONE_MSG_WINDOW_ALWAYS_WITH_ROSTER window_mode == MessageWindowMgr.ONE_MSG_WINDOW_ALWAYS_WITH_ROSTER
self.notebook.set_show_tabs(show_tabs_if_one_tab) self.notebook.set_show_tabs(show_tabs_if_one_tab)
@ -647,7 +647,7 @@ class MessageWindow(object):
# Optionally hide close button # Optionally hide close button
close_button = hbox.get_children()[2] close_button = hbox.get_children()[2]
if gajim.config.get('tabs_close_button'): if app.config.get('tabs_close_button'):
close_button.show() close_button.show()
else: else:
close_button.hide() close_button.hide()
@ -757,10 +757,10 @@ class MessageWindow(object):
self._controls[acct][new_jid] = ctrl self._controls[acct][new_jid] = ctrl
del self._controls[acct][old_jid] del self._controls[acct][old_jid]
if old_jid in gajim.last_message_time[acct]: if old_jid in app.last_message_time[acct]:
gajim.last_message_time[acct][new_jid] = \ app.last_message_time[acct][new_jid] = \
gajim.last_message_time[acct][old_jid] app.last_message_time[acct][old_jid]
del gajim.last_message_time[acct][old_jid] del app.last_message_time[acct][old_jid]
def controls(self): def controls(self):
for jid_dict in list(self._controls.values()): for jid_dict in list(self._controls.values()):
@ -790,7 +790,7 @@ class MessageWindow(object):
if ctrl.get_nb_unread() > 0: if ctrl.get_nb_unread() > 0:
found = True found = True
break # found break # found
elif gajim.config.get('ctrl_tab_go_to_next_composing') : elif app.config.get('ctrl_tab_go_to_next_composing') :
# Search for a composing contact # Search for a composing contact
contact = ctrl.contact contact = ctrl.contact
if first_composing_ind == -1 and contact.chatstate == 'composing': if first_composing_ind == -1 and contact.chatstate == 'composing':
@ -818,7 +818,7 @@ class MessageWindow(object):
def popup_menu(self, event): def popup_menu(self, event):
menu = self.get_active_control().prepare_context_menu() menu = self.get_active_control().prepare_context_menu()
# show the menu # show the menu
menu.attach_to_widget(gajim.interface.roster.window, None) menu.attach_to_widget(app.interface.roster.window, None)
menu.show_all() menu.show_all()
menu.popup(None, None, None, None, event.button, event.time) menu.popup(None, None, None, None, event.button, event.time)
@ -956,7 +956,7 @@ class MessageWindowMgr(GObject.GObject):
self._windows = {} self._windows = {}
# Map the mode to a int constant for frequent compares # Map the mode to a int constant for frequent compares
mode = gajim.config.get('one_message_window') mode = app.config.get('one_message_window')
self.mode = common.config.opt_one_window_types.index(mode) self.mode = common.config.opt_one_window_types.index(mode)
self.parent_win = parent_window self.parent_win = parent_window
@ -1005,23 +1005,23 @@ class MessageWindowMgr(GObject.GObject):
""" """
Resizes window according to config settings Resizes window according to config settings
""" """
hpaned = gajim.config.get('roster_hpaned_position') hpaned = app.config.get('roster_hpaned_position')
if self.mode in (self.ONE_MSG_WINDOW_ALWAYS, if self.mode in (self.ONE_MSG_WINDOW_ALWAYS,
self.ONE_MSG_WINDOW_ALWAYS_WITH_ROSTER): self.ONE_MSG_WINDOW_ALWAYS_WITH_ROSTER):
size = (gajim.config.get('msgwin-width'), size = (app.config.get('msgwin-width'),
gajim.config.get('msgwin-height')) app.config.get('msgwin-height'))
if self.mode == self.ONE_MSG_WINDOW_ALWAYS_WITH_ROSTER: if self.mode == self.ONE_MSG_WINDOW_ALWAYS_WITH_ROSTER:
# Need to add the size of the now visible paned handle, otherwise # Need to add the size of the now visible paned handle, otherwise
# the saved width of the message window decreases by this amount # the saved width of the message window decreases by this amount
handle_size = win.parent_paned.style_get_property('handle-size') handle_size = win.parent_paned.style_get_property('handle-size')
size = (hpaned + size[0] + handle_size, size[1]) size = (hpaned + size[0] + handle_size, size[1])
elif self.mode == self.ONE_MSG_WINDOW_PERACCT: elif self.mode == self.ONE_MSG_WINDOW_PERACCT:
size = (gajim.config.get_per('accounts', acct, 'msgwin-width'), size = (app.config.get_per('accounts', acct, 'msgwin-width'),
gajim.config.get_per('accounts', acct, 'msgwin-height')) app.config.get_per('accounts', acct, 'msgwin-height'))
elif self.mode in (self.ONE_MSG_WINDOW_NEVER, self.ONE_MSG_WINDOW_PERTYPE): elif self.mode in (self.ONE_MSG_WINDOW_NEVER, self.ONE_MSG_WINDOW_PERTYPE):
opt_width = type_ + '-msgwin-width' opt_width = type_ + '-msgwin-width'
opt_height = type_ + '-msgwin-height' opt_height = type_ + '-msgwin-height'
size = (gajim.config.get(opt_width), gajim.config.get(opt_height)) size = (app.config.get(opt_width), app.config.get(opt_height))
else: else:
return return
win.resize(size[0], size[1]) win.resize(size[0], size[1])
@ -1037,14 +1037,14 @@ class MessageWindowMgr(GObject.GObject):
return return
if self.mode == self.ONE_MSG_WINDOW_ALWAYS: if self.mode == self.ONE_MSG_WINDOW_ALWAYS:
pos = (gajim.config.get('msgwin-x-position'), pos = (app.config.get('msgwin-x-position'),
gajim.config.get('msgwin-y-position')) app.config.get('msgwin-y-position'))
elif self.mode == self.ONE_MSG_WINDOW_PERACCT: elif self.mode == self.ONE_MSG_WINDOW_PERACCT:
pos = (gajim.config.get_per('accounts', acct, 'msgwin-x-position'), pos = (app.config.get_per('accounts', acct, 'msgwin-x-position'),
gajim.config.get_per('accounts', acct, 'msgwin-y-position')) app.config.get_per('accounts', acct, 'msgwin-y-position'))
elif self.mode == self.ONE_MSG_WINDOW_PERTYPE: elif self.mode == self.ONE_MSG_WINDOW_PERTYPE:
pos = (gajim.config.get(type_ + '-msgwin-x-position'), pos = (app.config.get(type_ + '-msgwin-x-position'),
gajim.config.get(type_ + '-msgwin-y-position')) app.config.get(type_ + '-msgwin-y-position'))
else: else:
return return
@ -1094,7 +1094,7 @@ class MessageWindowMgr(GObject.GObject):
# Position and size window based on saved state and window mode # Position and size window based on saved state and window mode
if not self.one_window_opened(contact, acct, type_): if not self.one_window_opened(contact, acct, type_):
if gajim.config.get('msgwin-max-state'): if app.config.get('msgwin-max-state'):
win.window.maximize() win.window.maximize()
else: else:
self._resize_window(win, acct, type_) self._resize_window(win, acct, type_)
@ -1116,7 +1116,7 @@ class MessageWindowMgr(GObject.GObject):
def _on_window_delete(self, win, event): def _on_window_delete(self, win, event):
self.save_state(self._gtk_win_to_msg_win(win)) self.save_state(self._gtk_win_to_msg_win(win))
gajim.interface.save_config() app.interface.save_config()
return False return False
def _on_window_destroy(self, win): def _on_window_destroy(self, win):
@ -1190,7 +1190,7 @@ class MessageWindowMgr(GObject.GObject):
w.window.hide() w.window.hide()
w.window.destroy() w.window.destroy()
gajim.interface.save_config() app.interface.save_config()
def save_state(self, msg_win, width_adjust=0): def save_state(self, msg_win, width_adjust=0):
# Save window size and position # Save window size and position
@ -1225,29 +1225,29 @@ class MessageWindowMgr(GObject.GObject):
width = msg_win.notebook.get_allocation().width width = msg_win.notebook.get_allocation().width
if acct: if acct:
gajim.config.set_per('accounts', acct, size_width_key, width) app.config.set_per('accounts', acct, size_width_key, width)
gajim.config.set_per('accounts', acct, size_height_key, height) app.config.set_per('accounts', acct, size_height_key, height)
if self.mode != self.ONE_MSG_WINDOW_NEVER: if self.mode != self.ONE_MSG_WINDOW_NEVER:
gajim.config.set_per('accounts', acct, pos_x_key, x) app.config.set_per('accounts', acct, pos_x_key, x)
gajim.config.set_per('accounts', acct, pos_y_key, y) app.config.set_per('accounts', acct, pos_y_key, y)
else: else:
win_maximized = msg_win.window.get_window().get_state() == \ win_maximized = msg_win.window.get_window().get_state() == \
Gdk.WindowState.MAXIMIZED Gdk.WindowState.MAXIMIZED
gajim.config.set(max_win_key, win_maximized) app.config.set(max_win_key, win_maximized)
width += width_adjust width += width_adjust
gajim.config.set(size_width_key, width) app.config.set(size_width_key, width)
gajim.config.set(size_height_key, height) app.config.set(size_height_key, height)
if self.mode != self.ONE_MSG_WINDOW_NEVER: if self.mode != self.ONE_MSG_WINDOW_NEVER:
gajim.config.set(pos_x_key, x) app.config.set(pos_x_key, x)
gajim.config.set(pos_y_key, y) app.config.set(pos_y_key, y)
def reconfig(self): def reconfig(self):
for w in self.windows(): for w in self.windows():
self.save_state(w) self.save_state(w)
mode = gajim.config.get('one_message_window') mode = app.config.get('one_message_window')
if self.mode == common.config.opt_one_window_types.index(mode): if self.mode == common.config.opt_one_window_types.index(mode):
# No change # No change
return return
@ -1263,7 +1263,7 @@ class MessageWindowMgr(GObject.GObject):
# Stash current size so it can be restored if the MessageWindow # Stash current size so it can be restored if the MessageWindow
# is not longer embedded # is not longer embedded
roster_width = w.parent_paned.get_position() roster_width = w.parent_paned.get_position()
gajim.config.set('roster_width', roster_width) app.config.set('roster_width', roster_width)
while w.notebook.get_n_pages(): while w.notebook.get_n_pages():
page = w.notebook.get_nth_page(0) page = w.notebook.get_nth_page(0)
@ -1282,8 +1282,8 @@ class MessageWindowMgr(GObject.GObject):
w.parent_paned.remove(child) w.parent_paned.remove(child)
self.parent_win.lookup_action('show-roster').set_enabled(False) self.parent_win.lookup_action('show-roster').set_enabled(False)
gtkgui_helpers.resize_window(w.window, gtkgui_helpers.resize_window(w.window,
gajim.config.get('roster_width'), app.config.get('roster_width'),
gajim.config.get('roster_height')) app.config.get('roster_height'))
self._windows = {} self._windows = {}
@ -1296,15 +1296,15 @@ class MessageWindowMgr(GObject.GObject):
mw.new_tab(ctrl) mw.new_tab(ctrl)
def save_opened_controls(self): def save_opened_controls(self):
if not gajim.config.get('remember_opened_chat_controls'): if not app.config.get('remember_opened_chat_controls'):
return return
chat_controls = {} chat_controls = {}
for acct in gajim.connections: for acct in app.connections:
chat_controls[acct] = [] chat_controls[acct] = []
for ctrl in self.get_controls(type_=message_control.TYPE_CHAT): for ctrl in self.get_controls(type_=message_control.TYPE_CHAT):
acct = ctrl.account acct = ctrl.account
if ctrl.contact.jid not in chat_controls[acct]: if ctrl.contact.jid not in chat_controls[acct]:
chat_controls[acct].append(ctrl.contact.jid) chat_controls[acct].append(ctrl.contact.jid)
for acct in gajim.connections: for acct in app.connections:
gajim.config.set_per('accounts', acct, 'opened_chat_controls', app.config.set_per('accounts', acct, 'opened_chat_controls',
','.join(chat_controls[acct])) ','.join(chat_controls[acct]))

View File

@ -23,7 +23,7 @@ from gajim import gtkgui_helpers
from gajim import dataforms_widget from gajim import dataforms_widget
from gajim.common import dataforms from gajim.common import dataforms
from gajim.common import gajim from gajim.common import app
import nbxmpp import nbxmpp
def describe_features(features): def describe_features(features):
@ -65,7 +65,7 @@ class FeatureNegotiationWindow:
feature.addChild(node=form) feature.addChild(node=form)
gajim.connections[self.account].send_stanza(acceptance) app.connections[self.account].send_stanza(acceptance)
self.window.destroy() self.window.destroy()
@ -81,6 +81,6 @@ class FeatureNegotiationWindow:
feature.addChild(node=x) feature.addChild(node=x)
gajim.connections[self.account].send_stanza(rejection) app.connections[self.account].send_stanza(rejection)
self.window.destroy() self.window.destroy()

View File

@ -24,7 +24,7 @@ import logging
from gi.repository import Gio, GLib from gi.repository import Gio, GLib
from gajim.common import gajim from gajim.common import app
log = logging.getLogger('gajim.network_watcher') log = logging.getLogger('gajim.network_watcher')
@ -87,11 +87,11 @@ def appeared(connection, name, name_owner, *user_data):
def update_connection_state(connected): def update_connection_state(connected):
if connected: if connected:
for connection in gajim.connections.values(): for connection in app.connections.values():
log.info('Connect %s', connection.name) log.info('Connect %s', connection.name)
connection.reconnect() connection.reconnect()
else: else:
for connection in gajim.connections.values(): for connection in app.connections.values():
if connection.connected > 1: if connection.connected > 1:
log.info('Disconnect %s', connection.name) log.info('Disconnect %s', connection.name)
connection.disconnectedReconnCB() connection.disconnectedReconnCB()

View File

@ -34,7 +34,7 @@ from gi.repository import GObject
from gi.repository import GLib from gi.repository import GLib
from gajim import gtkgui_helpers from gajim import gtkgui_helpers
from gajim.common import gajim from gajim.common import app
from gajim.common import helpers from gajim.common import helpers
from gajim.common import ged from gajim.common import ged
@ -67,11 +67,11 @@ def get_show_in_systray(event, account, contact, type_=None):
""" """
Return True if this event must be shown in systray, else False Return True if this event must be shown in systray, else False
""" """
if type_ == 'printed_gc_msg' and not gajim.config.get( if type_ == 'printed_gc_msg' and not app.config.get(
'notify_on_all_muc_messages'): 'notify_on_all_muc_messages'):
# it's not an highlighted message, don't show in systray # it's not an highlighted message, don't show in systray
return False return False
return gajim.config.get('trayicon_notification_on_events') return app.config.get('trayicon_notification_on_events')
def popup(event_type, jid, account, msg_type='', path_to_image=None, title=None, def popup(event_type, jid, account, msg_type='', path_to_image=None, title=None,
text=None, timeout=-1): text=None, timeout=-1):
@ -85,27 +85,27 @@ text=None, timeout=-1):
path_to_image = gtkgui_helpers.get_icon_path('gajim-chat_msg_recv', 48) path_to_image = gtkgui_helpers.get_icon_path('gajim-chat_msg_recv', 48)
if timeout < 0: if timeout < 0:
timeout = gajim.config.get('notification_timeout') timeout = app.config.get('notification_timeout')
# Try to show our popup via D-Bus and notification daemon # Try to show our popup via D-Bus and notification daemon
if gajim.config.get('use_notif_daemon') and dbus_support.supported: if app.config.get('use_notif_daemon') and dbus_support.supported:
try: try:
DesktopNotification(event_type, jid, account, msg_type, DesktopNotification(event_type, jid, account, msg_type,
path_to_image, title, GLib.markup_escape_text(text), timeout) path_to_image, title, GLib.markup_escape_text(text), timeout)
return # sucessfully did D-Bus Notification procedure! return # sucessfully did D-Bus Notification procedure!
except dbus.DBusException as e: except dbus.DBusException as e:
# Connection to D-Bus failed # Connection to D-Bus failed
gajim.log.debug(str(e)) app.log.debug(str(e))
except TypeError as e: except TypeError as e:
# This means that we sent the message incorrectly # This means that we sent the message incorrectly
gajim.log.debug(str(e)) app.log.debug(str(e))
# Ok, that failed. Let's try pynotify, which also uses notification daemon # Ok, that failed. Let's try pynotify, which also uses notification daemon
if gajim.config.get('use_notif_daemon') and USER_HAS_PYNOTIFY: if app.config.get('use_notif_daemon') and USER_HAS_PYNOTIFY:
if not text and event_type == 'new_message': if not text and event_type == 'new_message':
# empty text for new_message means do_preview = False # empty text for new_message means do_preview = False
# -> default value for text # -> default value for text
_text = GLib.markup_escape_text(gajim.get_name_from_jid(account, _text = GLib.markup_escape_text(app.get_name_from_jid(account,
jid)) jid))
else: else:
_text = GLib.markup_escape_text(text) _text = GLib.markup_escape_text(text)
@ -134,12 +134,12 @@ text=None, timeout=-1):
return return
except GObject.GError as e: except GObject.GError as e:
# Connection to notification-daemon failed, see #2893 # Connection to notification-daemon failed, see #2893
gajim.log.debug(str(e)) app.log.debug(str(e))
# Either nothing succeeded or the user wants old-style notifications # Either nothing succeeded or the user wants old-style notifications
instance = PopupNotificationWindow(event_type, jid, account, msg_type, instance = PopupNotificationWindow(event_type, jid, account, msg_type,
path_to_image, title, text, timeout) path_to_image, title, text, timeout)
gajim.interface.roster.popup_notification_windows.append(instance) app.interface.roster.popup_notification_windows.append(instance)
def on_pynotify_notification_clicked(notification, action): def on_pynotify_notification_clicked(notification, action):
jid = notification._data.jid jid = notification._data.jid
@ -147,14 +147,14 @@ def on_pynotify_notification_clicked(notification, action):
msg_type = notification._data.msg_type msg_type = notification._data.msg_type
notification.close() notification.close()
gajim.interface.handle_event(account, jid, msg_type) app.interface.handle_event(account, jid, msg_type)
class Notification: class Notification:
""" """
Handle notifications Handle notifications
""" """
def __init__(self): def __init__(self):
gajim.ged.register_event_handler('notification', ged.GUI2, app.ged.register_event_handler('notification', ged.GUI2,
self._nec_notification) self._nec_notification)
def _nec_notification(self, obj): def _nec_notification(self, obj):
@ -237,7 +237,7 @@ class NotificationResponseManager:
self.pending[id_] = object_ self.pending[id_] = object_
else: else:
# We've triggered an event that has a duplicate ID! # We've triggered an event that has a duplicate ID!
gajim.log.debug('Duplicate ID of notification. Can\'t handle this.') app.log.debug('Duplicate ID of notification. Can\'t handle this.')
notification_response_manager = NotificationResponseManager() notification_response_manager = NotificationResponseManager()
@ -265,7 +265,7 @@ class DesktopNotification:
# default value of text # default value of text
if not text and event_type == 'new_message': if not text and event_type == 'new_message':
# empty text for new_message means do_preview = False # empty text for new_message means do_preview = False
self.text = gajim.get_name_from_jid(account, jid) self.text = app.get_name_from_jid(account, jid)
if not title: if not title:
self.title = event_type # default value self.title = event_type # default value
@ -365,9 +365,9 @@ class DesktopNotification:
# we're actually dealing with the newer version # we're actually dealing with the newer version
version = [0, 3, 1] version = [0, 3, 1]
if version > [0, 3]: if version > [0, 3]:
if gajim.interface.systray_enabled and \ if app.interface.systray_enabled and \
gajim.config.get('attach_notifications_to_systray'): app.config.get('attach_notifications_to_systray'):
status_icon = gajim.interface.systray.status_icon status_icon = app.interface.systray.status_icon
rect = status_icon.get_geometry()[2] rect = status_icon.get_geometry()[2]
x, y, width, height = rect.x, rect.y, rect.width, rect.height x, y, width, height = rect.x, rect.y, rect.width, rect.height
pos_x = x + (width / 2) pos_x = x + (width / 2)
@ -432,12 +432,12 @@ class DesktopNotification:
notification_response_manager.add_pending(id_, self) notification_response_manager.add_pending(id_, self)
def notify_another_way(self, e): def notify_another_way(self, e):
gajim.log.debug('Error when trying to use notification daemon: %s' % \ app.log.debug('Error when trying to use notification daemon: %s' % \
str(e)) str(e))
instance = PopupNotificationWindow(self.event_type, self.jid, instance = PopupNotificationWindow(self.event_type, self.jid,
self.account, self.msg_type, self.path_to_image, self.title, self.account, self.msg_type, self.path_to_image, self.title,
self.text, self.timeout) self.text, self.timeout)
gajim.interface.roster.popup_notification_windows.append(instance) app.interface.roster.popup_notification_windows.append(instance)
def on_action_invoked(self, id_, reason): def on_action_invoked(self, id_, reason):
if self.notif is None: if self.notif is None:
@ -448,7 +448,7 @@ class DesktopNotification:
if reason == 'ignore': if reason == 'ignore':
return return
gajim.interface.handle_event(self.account, self.jid, self.msg_type) app.interface.handle_event(self.account, self.jid, self.msg_type)
def version_reply_handler(self, name, vendor, version, spec_version=None): def version_reply_handler(self, name, vendor, version, spec_version=None):
if spec_version: if spec_version:

View File

@ -27,7 +27,7 @@ Base class for implementing plugin.
import os import os
import locale import locale
from gajim.common import gajim from gajim.common import app
from gajim.plugins.helpers import log_calls, log from gajim.plugins.helpers import log_calls, log
from gajim.plugins.gui import GajimPluginConfigDialog from gajim.plugins.gui import GajimPluginConfigDialog
@ -213,7 +213,7 @@ class GajimPluginConfig():
def __init__(self, plugin): def __init__(self, plugin):
self.plugin = plugin self.plugin = plugin
self.FILE_PATH = os.path.join( self.FILE_PATH = os.path.join(
gajim.PLUGINS_CONFIG_DIR, self.plugin.short_name) app.PLUGINS_CONFIG_DIR, self.plugin.short_name)
self.data = {} self.data = {}
@log_calls('GajimPluginConfig') @log_calls('GajimPluginConfig')

View File

@ -37,7 +37,7 @@ from enum import IntEnum, unique
from gajim import gtkgui_helpers from gajim import gtkgui_helpers
from gajim.dialogs import WarningDialog, YesNoDialog, ArchiveChooserDialog from gajim.dialogs import WarningDialog, YesNoDialog, ArchiveChooserDialog
from gajim.htmltextview import HtmlTextView from gajim.htmltextview import HtmlTextView
from gajim.common import gajim from gajim.common import app
from gajim.plugins.helpers import log_calls from gajim.plugins.helpers import log_calls
from gajim.plugins.helpers import GajimPluginActivateException from gajim.plugins.helpers import GajimPluginActivateException
from gajim.plugins.plugins_i18n import _ from gajim.plugins.plugins_i18n import _
@ -60,7 +60,7 @@ class PluginsWindow(object):
'''Initialize Plugins window''' '''Initialize Plugins window'''
builder = gtkgui_helpers.get_gtk_builder('plugins_window.ui') builder = gtkgui_helpers.get_gtk_builder('plugins_window.ui')
self.window = builder.get_object('plugins_window') self.window = builder.get_object('plugins_window')
self.window.set_transient_for(gajim.interface.roster.window) self.window.set_transient_for(app.interface.roster.window)
widgets_to_extract = ('plugins_notebook', 'plugin_name_label', widgets_to_extract = ('plugins_notebook', 'plugin_name_label',
'plugin_version_label', 'plugin_authors_label', 'plugin_version_label', 'plugin_authors_label',
@ -118,7 +118,7 @@ class PluginsWindow(object):
self.close_button.grab_focus() self.close_button.grab_focus()
# Adding GUI extension point for Plugins that want to hook the Plugin Window # Adding GUI extension point for Plugins that want to hook the Plugin Window
gajim.plugin_manager.gui_extension_point('plugin_window', self) app.plugin_manager.gui_extension_point('plugin_window', self)
self.window.show_all() self.window.show_all()
gtkgui_helpers.possibly_move_window_in_current_desktop(self.window) gtkgui_helpers.possibly_move_window_in_current_desktop(self.window)
@ -166,7 +166,7 @@ class PluginsWindow(object):
self.plugin_description_textview.set_property('sensitive', True) self.plugin_description_textview.set_property('sensitive', True)
self.uninstall_plugin_button.set_property('sensitive', self.uninstall_plugin_button.set_property('sensitive',
gajim.PLUGINS_DIRS[1] in plugin.__path__) app.PLUGINS_DIRS[1] in plugin.__path__)
self.configure_plugin_button.set_property( self.configure_plugin_button.set_property(
'sensitive', plugin.config_dialog is not None) 'sensitive', plugin.config_dialog is not None)
@ -186,7 +186,7 @@ class PluginsWindow(object):
@log_calls('PluginsWindow') @log_calls('PluginsWindow')
def fill_installed_plugins_model(self): def fill_installed_plugins_model(self):
pm = gajim.plugin_manager pm = app.plugin_manager
self.installed_plugins_model.clear() self.installed_plugins_model.clear()
self.installed_plugins_model.set_sort_column_id(1, Gtk.SortType.ASCENDING) self.installed_plugins_model.set_sort_column_id(1, Gtk.SortType.ASCENDING)
@ -209,10 +209,10 @@ class PluginsWindow(object):
plugin = self.installed_plugins_model[path][Column.PLUGIN] plugin = self.installed_plugins_model[path][Column.PLUGIN]
if is_active: if is_active:
gajim.plugin_manager.deactivate_plugin(plugin) app.plugin_manager.deactivate_plugin(plugin)
else: else:
try: try:
gajim.plugin_manager.activate_plugin(plugin) app.plugin_manager.activate_plugin(plugin)
except GajimPluginActivateException as e: except GajimPluginActivateException as e:
WarningDialog(_('Plugin failed'), str(e), WarningDialog(_('Plugin failed'), str(e),
transient_for=self.window) transient_for=self.window)
@ -223,8 +223,8 @@ class PluginsWindow(object):
@log_calls('PluginsWindow') @log_calls('PluginsWindow')
def on_plugins_window_destroy(self, widget): def on_plugins_window_destroy(self, widget):
'''Close window''' '''Close window'''
gajim.plugin_manager.remove_gui_extension_point('plugin_window', self) app.plugin_manager.remove_gui_extension_point('plugin_window', self)
del gajim.interface.instances['plugins'] del app.interface.instances['plugins']
@log_calls('PluginsWindow') @log_calls('PluginsWindow')
def on_close_button_clicked(self, widget): def on_close_button_clicked(self, widget):
@ -257,7 +257,7 @@ class PluginsWindow(object):
plugin_name = model.get_value(iter, Column.NAME) plugin_name = model.get_value(iter, Column.NAME)
is_active = model.get_value(iter, Column.ACTIVE) is_active = model.get_value(iter, Column.ACTIVE)
try: try:
gajim.plugin_manager.remove_plugin(plugin) app.plugin_manager.remove_plugin(plugin)
except PluginsystemError as e: except PluginsystemError as e:
WarningDialog(_('Unable to properly remove the plugin'), WarningDialog(_('Unable to properly remove the plugin'),
str(e), self.window) str(e), self.window)
@ -274,7 +274,7 @@ class PluginsWindow(object):
def _on_plugin_exists(zip_filename): def _on_plugin_exists(zip_filename):
def on_yes(is_checked): def on_yes(is_checked):
plugin = gajim.plugin_manager.install_from_zip(zip_filename, plugin = app.plugin_manager.install_from_zip(zip_filename,
True) True)
if not plugin: if not plugin:
show_warn_dialog() show_warn_dialog()
@ -296,7 +296,7 @@ class PluginsWindow(object):
def _try_install(zip_filename): def _try_install(zip_filename):
try: try:
plugin = gajim.plugin_manager.install_from_zip(zip_filename) plugin = app.plugin_manager.install_from_zip(zip_filename)
except PluginsystemError as er_type: except PluginsystemError as er_type:
error_text = str(er_type) error_text = str(er_type)
if error_text == _('Plugin already exists'): if error_text == _('Plugin already exists'):

View File

@ -34,7 +34,7 @@ from shutil import rmtree
import configparser import configparser
from pkg_resources import parse_version from pkg_resources import parse_version
from gajim.common import gajim from gajim.common import app
from gajim.common import nec from gajim.common import nec
from gajim.common.exceptions import PluginsystemError from gajim.common.exceptions import PluginsystemError
@ -107,24 +107,24 @@ class PluginManager(metaclass=Singleton):
Registered names with instances of encryption Plugins. Registered names with instances of encryption Plugins.
''' '''
for path in [gajim.PLUGINS_DIRS[1], gajim.PLUGINS_DIRS[0]]: for path in [app.PLUGINS_DIRS[1], app.PLUGINS_DIRS[0]]:
pc = PluginManager.scan_dir_for_plugins(path) pc = PluginManager.scan_dir_for_plugins(path)
self.add_plugins(pc) self.add_plugins(pc)
self._activate_all_plugins_from_global_config() self._activate_all_plugins_from_global_config()
@log_calls('PluginManager') @log_calls('PluginManager')
def _plugin_has_entry_in_global_config(self, plugin): def _plugin_has_entry_in_global_config(self, plugin):
if gajim.config.get_per('plugins', plugin.short_name) is None: if app.config.get_per('plugins', plugin.short_name) is None:
return False return False
else: else:
return True return True
@log_calls('PluginManager') @log_calls('PluginManager')
def _create_plugin_entry_in_global_config(self, plugin): def _create_plugin_entry_in_global_config(self, plugin):
gajim.config.add_per('plugins', plugin.short_name) app.config.add_per('plugins', plugin.short_name)
def _remove_plugin_entry_in_global_config(self, plugin): def _remove_plugin_entry_in_global_config(self, plugin):
gajim.config.del_per('plugins', plugin.short_name) app.config.del_per('plugins', plugin.short_name)
@log_calls('PluginManager') @log_calls('PluginManager')
def add_plugin(self, plugin_class): def add_plugin(self, plugin_class):
@ -292,30 +292,30 @@ class PluginManager(metaclass=Singleton):
for event_name, handler in plugin.events_handlers.items(): for event_name, handler in plugin.events_handlers.items():
priority = handler[0] priority = handler[0]
handler_function = handler[1] handler_function = handler[1]
gajim.ged.register_event_handler(event_name, priority, app.ged.register_event_handler(event_name, priority,
handler_function) handler_function)
def _remove_events_handler_from_ged(self, plugin): def _remove_events_handler_from_ged(self, plugin):
for event_name, handler in plugin.events_handlers.items(): for event_name, handler in plugin.events_handlers.items():
priority = handler[0] priority = handler[0]
handler_function = handler[1] handler_function = handler[1]
gajim.ged.remove_event_handler(event_name, priority, app.ged.remove_event_handler(event_name, priority,
handler_function) handler_function)
def _register_network_events_in_nec(self, plugin): def _register_network_events_in_nec(self, plugin):
for event_class in plugin.events: for event_class in plugin.events:
setattr(event_class, 'plugin', plugin) setattr(event_class, 'plugin', plugin)
if issubclass(event_class, nec.NetworkIncomingEvent): if issubclass(event_class, nec.NetworkIncomingEvent):
gajim.nec.register_incoming_event(event_class) app.nec.register_incoming_event(event_class)
elif issubclass(event_class, nec.NetworkOutgoingEvent): elif issubclass(event_class, nec.NetworkOutgoingEvent):
gajim.nec.register_outgoing_event(event_class) app.nec.register_outgoing_event(event_class)
def _remove_network_events_from_nec(self, plugin): def _remove_network_events_from_nec(self, plugin):
for event_class in plugin.events: for event_class in plugin.events:
if issubclass(event_class, nec.NetworkIncomingEvent): if issubclass(event_class, nec.NetworkIncomingEvent):
gajim.nec.unregister_incoming_event(event_class) app.nec.unregister_incoming_event(event_class)
elif issubclass(event_class, nec.NetworkOutgoingEvent): elif issubclass(event_class, nec.NetworkOutgoingEvent):
gajim.nec.unregister_outgoing_event(event_class) app.nec.unregister_outgoing_event(event_class)
def _remove_name_from_encryption_plugins(self, plugin): def _remove_name_from_encryption_plugins(self, plugin):
if plugin.encryption_name: if plugin.encryption_name:
@ -432,10 +432,10 @@ class PluginManager(metaclass=Singleton):
pass pass
def _plugin_is_active_in_global_config(self, plugin): def _plugin_is_active_in_global_config(self, plugin):
return gajim.config.get_per('plugins', plugin.short_name, 'active') return app.config.get_per('plugins', plugin.short_name, 'active')
def _set_plugin_active_in_global_config(self, plugin, active=True): def _set_plugin_active_in_global_config(self, plugin, active=True):
gajim.config.set_per('plugins', plugin.short_name, 'active', active) app.config.set_per('plugins', plugin.short_name, 'active', active)
@staticmethod @staticmethod
@log_calls('PluginManager') @log_calls('PluginManager')
@ -506,7 +506,7 @@ class PluginManager(metaclass=Singleton):
min_v = conf.get('info', 'min_gajim_version', fallback=None) min_v = conf.get('info', 'min_gajim_version', fallback=None)
max_v = conf.get('info', 'max_gajim_version', fallback=None) max_v = conf.get('info', 'max_gajim_version', fallback=None)
gajim_v = gajim.config.get('version').split('-', 1)[0] gajim_v = app.config.get('version').split('-', 1)[0]
gajim_v_cmp = parse_version(gajim_v) gajim_v_cmp = parse_version(gajim_v)
if min_v and gajim_v_cmp < parse_version(min_v): if min_v and gajim_v_cmp < parse_version(min_v):
@ -531,7 +531,7 @@ class PluginManager(metaclass=Singleton):
try: try:
if module_name in sys.modules: if module_name in sys.modules:
if path == gajim.PLUGINS_DIRS[0]: if path == app.PLUGINS_DIRS[0]:
# Only reload plugins from Gajim base dir when they # Only reload plugins from Gajim base dir when they
# dont exist. This means plugins in the user path are # dont exist. This means plugins in the user path are
# always preferred. # always preferred.
@ -629,7 +629,7 @@ class PluginManager(metaclass=Singleton):
if len(dirs) > 1: if len(dirs) > 1:
raise PluginsystemError(_('Archive is malformed')) raise PluginsystemError(_('Archive is malformed'))
base_dir, user_dir = gajim.PLUGINS_DIRS base_dir, user_dir = app.PLUGINS_DIRS
plugin_dir = os.path.join(user_dir, dirs[0]) plugin_dir = os.path.join(user_dir, dirs[0])
if os.path.isdir(plugin_dir): if os.path.isdir(plugin_dir):

View File

@ -22,10 +22,10 @@ import locale
import gettext import gettext
from os import path as os_path from os import path as os_path
import os import os
from gajim.common import gajim from gajim.common import app
APP = 'gajim_plugins' APP = 'gajim_plugins'
plugins_locale_dir = os_path.join(gajim.PLUGINS_DIRS[1], 'locale') plugins_locale_dir = os_path.join(app.PLUGINS_DIRS[1], 'locale')
if os.name != 'nt': if os.name != 'nt':
locale.setlocale(locale.LC_ALL, '') locale.setlocale(locale.LC_ALL, '')

View File

@ -36,7 +36,7 @@ from gajim import gtkgui_helpers
from gajim import dialogs from gajim import dialogs
from gajim import vcard from gajim import vcard
from gajim.common import gajim from gajim.common import app
from gajim.common import ged from gajim.common import ged
@ -54,7 +54,7 @@ class ProfileWindow:
self.context_id = self.statusbar.get_context_id('profile') self.context_id = self.statusbar.get_context_id('profile')
self.account = account self.account = account
self.jid = gajim.get_jid_from_account(account) self.jid = app.get_jid_from_account(account)
self.dialog = None self.dialog = None
self.avatar_mime_type = None self.avatar_mime_type = None
@ -69,11 +69,11 @@ class ProfileWindow:
image = Gtk.Image() image = Gtk.Image()
self.xml.get_object('PHOTO_button').set_image(image) self.xml.get_object('PHOTO_button').set_image(image)
self.xml.connect_signals(self) self.xml.connect_signals(self)
gajim.ged.register_event_handler('vcard-published', ged.GUI1, app.ged.register_event_handler('vcard-published', ged.GUI1,
self._nec_vcard_published) self._nec_vcard_published)
gajim.ged.register_event_handler('vcard-not-published', ged.GUI1, app.ged.register_event_handler('vcard-not-published', ged.GUI1,
self._nec_vcard_not_published) self._nec_vcard_not_published)
gajim.ged.register_event_handler('vcard-received', ged.GUI1, app.ged.register_event_handler('vcard-received', ged.GUI1,
self._nec_vcard_received) self._nec_vcard_received)
self.window.show_all() self.window.show_all()
self.xml.get_object('ok_button').grab_focus() self.xml.get_object('ok_button').grab_focus()
@ -94,13 +94,13 @@ class ProfileWindow:
GLib.source_remove(self.update_progressbar_timeout_id) GLib.source_remove(self.update_progressbar_timeout_id)
if self.remove_statusbar_timeout_id is not None: if self.remove_statusbar_timeout_id is not None:
GLib.source_remove(self.remove_statusbar_timeout_id) GLib.source_remove(self.remove_statusbar_timeout_id)
gajim.ged.remove_event_handler('vcard-published', ged.GUI1, app.ged.remove_event_handler('vcard-published', ged.GUI1,
self._nec_vcard_published) self._nec_vcard_published)
gajim.ged.remove_event_handler('vcard-not-published', ged.GUI1, app.ged.remove_event_handler('vcard-not-published', ged.GUI1,
self._nec_vcard_not_published) self._nec_vcard_not_published)
gajim.ged.remove_event_handler('vcard-received', ged.GUI1, app.ged.remove_event_handler('vcard-received', ged.GUI1,
self._nec_vcard_received) self._nec_vcard_received)
del gajim.interface.instances[self.account]['profile'] del app.interface.instances[self.account]['profile']
if self.dialog: # Image chooser dialog if self.dialog: # Image chooser dialog
self.dialog.destroy() self.dialog.destroy()
@ -151,7 +151,7 @@ class ProfileWindow:
return return
if filesize > 16384: if filesize > 16384:
if scaled_pixbuf: if scaled_pixbuf:
path_to_file = os.path.join(gajim.TMP, path_to_file = os.path.join(app.TMP,
'avatar_scaled.png') 'avatar_scaled.png')
scaled_pixbuf.savev(path_to_file, 'png', [], []) scaled_pixbuf.savev(path_to_file, 'png', [], [])
must_delete = True must_delete = True
@ -181,7 +181,7 @@ class ProfileWindow:
try: try:
os.remove(path_to_file) os.remove(path_to_file)
except OSError: except OSError:
gajim.log.debug('Cannot remove %s' % path_to_file) app.log.debug('Cannot remove %s' % path_to_file)
def on_clear(widget): def on_clear(widget):
self.dialog.destroy() self.dialog.destroy()
@ -210,7 +210,7 @@ class ProfileWindow:
use_local=False) use_local=False)
if pixbuf not in (None, 'ask'): if pixbuf not in (None, 'ask'):
nick = gajim.config.get_per('accounts', self.account, 'name') nick = app.config.get_per('accounts', self.account, 'name')
menuitem = Gtk.MenuItem.new_with_mnemonic(_('Save _As')) menuitem = Gtk.MenuItem.new_with_mnemonic(_('Save _As'))
menuitem.connect('activate', menuitem.connect('activate',
gtkgui_helpers.on_avatar_save_as_menuitem_activate, gtkgui_helpers.on_avatar_save_as_menuitem_activate,
@ -371,7 +371,7 @@ class ProfileWindow:
if self.update_progressbar_timeout_id: if self.update_progressbar_timeout_id:
# Operation in progress # Operation in progress
return return
if gajim.connections[self.account].connected < 2: if app.connections[self.account].connected < 2:
dialogs.ErrorDialog(_('You are not connected to the server'), dialogs.ErrorDialog(_('You are not connected to the server'),
_('Without a connection, you can not publish your contact ' _('Without a connection, you can not publish your contact '
'information.'), transient_for=self.window) 'information.'), transient_for=self.window)
@ -380,12 +380,12 @@ class ProfileWindow:
nick = '' nick = ''
if 'NICKNAME' in vcard_: if 'NICKNAME' in vcard_:
nick = vcard_['NICKNAME'] nick = vcard_['NICKNAME']
gajim.connections[self.account].send_nickname(nick) app.connections[self.account].send_nickname(nick)
if nick == '': if nick == '':
gajim.connections[self.account].retract_nickname() app.connections[self.account].retract_nickname()
nick = gajim.config.get_per('accounts', self.account, 'name') nick = app.config.get_per('accounts', self.account, 'name')
gajim.nicks[self.account] = nick app.nicks[self.account] = nick
gajim.connections[self.account].send_vcard(vcard_) app.connections[self.account].send_vcard(vcard_)
self.message_id = self.statusbar.push(self.context_id, self.message_id = self.statusbar.push(self.context_id,
_('Sending profile…')) _('Sending profile…'))
self.progressbar.show() self.progressbar.show()

View File

@ -32,7 +32,7 @@ import os
import base64 import base64
import mimetypes import mimetypes
from gajim.common import gajim from gajim.common import app
from gajim.common import helpers from gajim.common import helpers
from time import time from time import time
from gajim.dialogs import AddNewContactWindow, NewChatDialog, JoinGroupchatWindow from gajim.dialogs import AddNewContactWindow, NewChatDialog, JoinGroupchatWindow
@ -107,33 +107,33 @@ class Remote:
bus_name = dbus.service.BusName(SERVICE, bus=session_bus) bus_name = dbus.service.BusName(SERVICE, bus=session_bus)
self.signal_object = SignalObject(bus_name) self.signal_object = SignalObject(bus_name)
gajim.ged.register_event_handler('version-result-received', ged.POSTGUI, app.ged.register_event_handler('version-result-received', ged.POSTGUI,
self.on_os_info) self.on_os_info)
gajim.ged.register_event_handler('time-result-received', ged.POSTGUI, app.ged.register_event_handler('time-result-received', ged.POSTGUI,
self.on_time) self.on_time)
gajim.ged.register_event_handler('gmail-nofify', ged.POSTGUI, app.ged.register_event_handler('gmail-nofify', ged.POSTGUI,
self.on_gmail_notify) self.on_gmail_notify)
gajim.ged.register_event_handler('roster-info', ged.POSTGUI, app.ged.register_event_handler('roster-info', ged.POSTGUI,
self.on_roster_info) self.on_roster_info)
gajim.ged.register_event_handler('presence-received', ged.POSTGUI, app.ged.register_event_handler('presence-received', ged.POSTGUI,
self.on_presence_received) self.on_presence_received)
gajim.ged.register_event_handler('subscribe-presence-received', app.ged.register_event_handler('subscribe-presence-received',
ged.POSTGUI, self.on_subscribe_presence_received) ged.POSTGUI, self.on_subscribe_presence_received)
gajim.ged.register_event_handler('subscribed-presence-received', app.ged.register_event_handler('subscribed-presence-received',
ged.POSTGUI, self.on_subscribed_presence_received) ged.POSTGUI, self.on_subscribed_presence_received)
gajim.ged.register_event_handler('unsubscribed-presence-received', app.ged.register_event_handler('unsubscribed-presence-received',
ged.POSTGUI, self.on_unsubscribed_presence_received) ged.POSTGUI, self.on_unsubscribed_presence_received)
gajim.ged.register_event_handler('gc-message-received', app.ged.register_event_handler('gc-message-received',
ged.POSTGUI, self.on_gc_message_received) ged.POSTGUI, self.on_gc_message_received)
gajim.ged.register_event_handler('our-show', ged.POSTGUI, app.ged.register_event_handler('our-show', ged.POSTGUI,
self.on_our_status) self.on_our_status)
gajim.ged.register_event_handler('account-created', ged.POSTGUI, app.ged.register_event_handler('account-created', ged.POSTGUI,
self.on_account_created) self.on_account_created)
gajim.ged.register_event_handler('vcard-received', ged.POSTGUI, app.ged.register_event_handler('vcard-received', ged.POSTGUI,
self.on_vcard_received) self.on_vcard_received)
gajim.ged.register_event_handler('chatstate-received', ged.POSTGUI, app.ged.register_event_handler('chatstate-received', ged.POSTGUI,
self.on_chatstate_received) self.on_chatstate_received)
gajim.ged.register_event_handler('message-sent', ged.POSTGUI, app.ged.register_event_handler('message-sent', ged.POSTGUI,
self.on_message_sent) self.on_message_sent)
def on_chatstate_received(self, obj): def on_chatstate_received(self, obj):
@ -321,8 +321,8 @@ class SignalObject(dbus.service.Object):
# If user did not ask for account, returns the global status # If user did not ask for account, returns the global status
return DBUS_STRING(helpers.get_global_show()) return DBUS_STRING(helpers.get_global_show())
# return show for the given account # return show for the given account
index = gajim.connections[account].connected index = app.connections[account].connected
return DBUS_STRING(gajim.SHOW_LIST[index]) return DBUS_STRING(app.SHOW_LIST[index])
@dbus.service.method(INTERFACE, in_signature='s', out_signature='s') @dbus.service.method(INTERFACE, in_signature='s', out_signature='s')
def get_status_message(self, account): def get_status_message(self, account):
@ -333,7 +333,7 @@ class SignalObject(dbus.service.Object):
# If user did not ask for account, returns the global status # If user did not ask for account, returns the global status
return DBUS_STRING(str(helpers.get_global_status())) return DBUS_STRING(str(helpers.get_global_status()))
# return show for the given account # return show for the given account
status = gajim.connections[account].status status = app.connections[account].status
return DBUS_STRING(status) return DBUS_STRING(status)
def _get_account_and_contact(self, account, jid): def _get_account_and_contact(self, account, jid):
@ -342,21 +342,21 @@ class SignalObject(dbus.service.Object):
""" """
connected_account = None connected_account = None
contact = None contact = None
accounts = gajim.contacts.get_accounts() accounts = app.contacts.get_accounts()
# if there is only one account in roster, take it as default # if there is only one account in roster, take it as default
# if user did not ask for account # if user did not ask for account
if not account and len(accounts) == 1: if not account and len(accounts) == 1:
account = accounts[0] account = accounts[0]
if account: if account:
if gajim.connections[account].connected > 1: # account is connected if app.connections[account].connected > 1: # account is connected
connected_account = account connected_account = account
contact = gajim.contacts.get_contact_with_highest_priority(account, contact = app.contacts.get_contact_with_highest_priority(account,
jid) jid)
else: else:
for account in accounts: for account in accounts:
contact = gajim.contacts.get_contact_with_highest_priority(account, contact = app.contacts.get_contact_with_highest_priority(account,
jid) jid)
if contact and gajim.connections[account].connected > 1: if contact and app.connections[account].connected > 1:
# account is connected # account is connected
connected_account = account connected_account = account
break break
@ -371,22 +371,22 @@ class SignalObject(dbus.service.Object):
or check if the given account is connected to the groupchat or check if the given account is connected to the groupchat
""" """
connected_account = None connected_account = None
accounts = gajim.contacts.get_accounts() accounts = app.contacts.get_accounts()
# if there is only one account in roster, take it as default # if there is only one account in roster, take it as default
# if user did not ask for account # if user did not ask for account
if not account and len(accounts) == 1: if not account and len(accounts) == 1:
account = accounts[0] account = accounts[0]
if account: if account:
if gajim.connections[account].connected > 1 and \ if app.connections[account].connected > 1 and \
room_jid in gajim.gc_connected[account] and \ room_jid in app.gc_connected[account] and \
gajim.gc_connected[account][room_jid]: app.gc_connected[account][room_jid]:
# account and groupchat are connected # account and groupchat are connected
connected_account = account connected_account = account
else: else:
for account in accounts: for account in accounts:
if gajim.connections[account].connected > 1 and \ if app.connections[account].connected > 1 and \
room_jid in gajim.gc_connected[account] and \ room_jid in app.gc_connected[account] and \
gajim.gc_connected[account][room_jid]: app.gc_connected[account][room_jid]:
# account and groupchat are connected # account and groupchat are connected
connected_account = account connected_account = account
break break
@ -405,7 +405,7 @@ class SignalObject(dbus.service.Object):
if file_path.startswith('file://'): if file_path.startswith('file://'):
file_path=file_path[7:] file_path=file_path[7:]
if os.path.isfile(file_path): # is it file? if os.path.isfile(file_path): # is it file?
gajim.interface.instances['file_transfers'].send_file( app.interface.instances['file_transfers'].send_file(
connected_account, contact, file_path) connected_account, contact, file_path)
return DBUS_BOOLEAN(True) return DBUS_BOOLEAN(True)
return DBUS_BOOLEAN(False) return DBUS_BOOLEAN(False)
@ -423,18 +423,18 @@ class SignalObject(dbus.service.Object):
connected_account, contact = self._get_account_and_contact(account, jid) connected_account, contact = self._get_account_and_contact(account, jid)
if connected_account: if connected_account:
connection = gajim.connections[connected_account] connection = app.connections[connected_account]
sessions = connection.get_sessions(jid) sessions = connection.get_sessions(jid)
if sessions: if sessions:
session = sessions[0] session = sessions[0]
else: else:
session = connection.make_new_session(jid) session = connection.make_new_session(jid)
ctrl = gajim.interface.msg_win_mgr.search_control(jid, ctrl = app.interface.msg_win_mgr.search_control(jid,
connected_account) connected_account)
if ctrl: if ctrl:
ctrl.send_message(message) ctrl.send_message(message)
else: else:
gajim.nec.push_outgoing_event(MessageOutgoingEvent(None, account=connected_account, jid=jid, message=message, keyID=keyID, type_=type_, control=ctrl)) app.nec.push_outgoing_event(MessageOutgoingEvent(None, account=connected_account, jid=jid, message=message, keyID=keyID, type_=type_, control=ctrl))
return DBUS_BOOLEAN(True) return DBUS_BOOLEAN(True)
return DBUS_BOOLEAN(False) return DBUS_BOOLEAN(False)
@ -466,8 +466,8 @@ class SignalObject(dbus.service.Object):
return DBUS_BOOLEAN(False) return DBUS_BOOLEAN(False)
connected_account = self._get_account_for_groupchat(account, room_jid) connected_account = self._get_account_for_groupchat(account, room_jid)
if connected_account: if connected_account:
connection = gajim.connections[connected_account] connection = app.connections[connected_account]
gajim.nec.push_outgoing_event(GcMessageOutgoingEvent(None, app.nec.push_outgoing_event(GcMessageOutgoingEvent(None,
account=connected_account, jid=room_jid, message=message)) account=connected_account, jid=room_jid, message=message))
return DBUS_BOOLEAN(True) return DBUS_BOOLEAN(True)
return DBUS_BOOLEAN(False) return DBUS_BOOLEAN(False)
@ -491,21 +491,21 @@ class SignalObject(dbus.service.Object):
if account: if account:
accounts = [account] accounts = [account]
else: else:
accounts = gajim.connections.keys() accounts = app.connections.keys()
if len(accounts) == 1: if len(accounts) == 1:
account = accounts[0] account = accounts[0]
connected_account = None connected_account = None
first_connected_acct = None first_connected_acct = None
for acct in accounts: for acct in accounts:
if gajim.connections[acct].connected > 1: # account is online if app.connections[acct].connected > 1: # account is online
contact = gajim.contacts.get_first_contact_from_jid(acct, jid) contact = app.contacts.get_first_contact_from_jid(acct, jid)
if gajim.interface.msg_win_mgr.has_window(jid, acct): if app.interface.msg_win_mgr.has_window(jid, acct):
connected_account = acct connected_account = acct
break break
# jid is in roster # jid is in roster
elif contact: elif contact:
minimized_control = \ minimized_control = \
jid in gajim.interface.minimized_controls[acct] jid in app.interface.minimized_controls[acct]
connected_account = acct connected_account = acct
break break
# we send the message to jid not in roster, because account is # we send the message to jid not in roster, because account is
@ -520,13 +520,13 @@ class SignalObject(dbus.service.Object):
connected_account = first_connected_acct connected_account = first_connected_acct
if minimized_control: if minimized_control:
gajim.interface.roster.on_groupchat_maximized(None, jid, app.interface.roster.on_groupchat_maximized(None, jid,
connected_account) connected_account)
if connected_account: if connected_account:
gajim.interface.new_chat_from_jid(connected_account, jid, message) app.interface.new_chat_from_jid(connected_account, jid, message)
# preserve the 'steal focus preservation' # preserve the 'steal focus preservation'
win = gajim.interface.msg_win_mgr.get_window(jid, win = app.interface.msg_win_mgr.get_window(jid,
connected_account).window connected_account).window
if win.get_property('visible'): if win.get_property('visible'):
win.window.focus(Gtk.get_current_event_time()) win.window.focus(Gtk.get_current_event_time())
@ -544,24 +544,24 @@ class SignalObject(dbus.service.Object):
status = '' status = ''
if account: if account:
if not status: if not status:
if account not in gajim.connections: if account not in app.connections:
return DBUS_BOOLEAN(False) return DBUS_BOOLEAN(False)
status = gajim.SHOW_LIST[gajim.connections[account].connected] status = app.SHOW_LIST[app.connections[account].connected]
GLib.idle_add(gajim.interface.roster.send_status, account, status, GLib.idle_add(app.interface.roster.send_status, account, status,
message) message)
else: else:
# account not specified, so change the status of all accounts # account not specified, so change the status of all accounts
for acc in gajim.contacts.get_accounts(): for acc in app.contacts.get_accounts():
if not gajim.config.get_per('accounts', acc, if not app.config.get_per('accounts', acc,
'sync_with_global_status'): 'sync_with_global_status'):
continue continue
if status: if status:
status_ = status status_ = status
else: else:
if acc not in gajim.connections: if acc not in app.connections:
continue continue
status_ = gajim.SHOW_LIST[gajim.connections[acc].connected] status_ = app.SHOW_LIST[app.connections[acc].connected]
GLib.idle_add(gajim.interface.roster.send_status, acc, status_, GLib.idle_add(app.interface.roster.send_status, acc, status_,
message) message)
return DBUS_BOOLEAN(False) return DBUS_BOOLEAN(False)
@ -572,23 +572,23 @@ class SignalObject(dbus.service.Object):
priority is changed for all accounts. That are synced with global status priority is changed for all accounts. That are synced with global status
""" """
if account: if account:
gajim.config.set_per('accounts', account, 'priority', prio) app.config.set_per('accounts', account, 'priority', prio)
show = gajim.SHOW_LIST[gajim.connections[account].connected] show = app.SHOW_LIST[app.connections[account].connected]
status = gajim.connections[account].status status = app.connections[account].status
GLib.idle_add(gajim.connections[account].change_status, show, GLib.idle_add(app.connections[account].change_status, show,
status) status)
else: else:
# account not specified, so change prio of all accounts # account not specified, so change prio of all accounts
for acc in gajim.contacts.get_accounts(): for acc in app.contacts.get_accounts():
if not gajim.account_is_connected(acc): if not app.account_is_connected(acc):
continue continue
if not gajim.config.get_per('accounts', acc, if not app.config.get_per('accounts', acc,
'sync_with_global_status'): 'sync_with_global_status'):
continue continue
gajim.config.set_per('accounts', acc, 'priority', prio) app.config.set_per('accounts', acc, 'priority', prio)
show = gajim.SHOW_LIST[gajim.connections[acc].connected] show = app.SHOW_LIST[app.connections[acc].connected]
status = gajim.connections[acc].status status = app.connections[acc].status
GLib.idle_add(gajim.connections[acc].change_status, show, GLib.idle_add(app.connections[acc].change_status, show,
status) status)
@dbus.service.method(INTERFACE, in_signature='', out_signature='') @dbus.service.method(INTERFACE, in_signature='', out_signature='')
@ -596,11 +596,11 @@ class SignalObject(dbus.service.Object):
""" """
Show the window(s) with next pending event in tabbed/group chats Show the window(s) with next pending event in tabbed/group chats
""" """
if gajim.events.get_nb_events(): if app.events.get_nb_events():
account, jid, event = gajim.events.get_first_systray_event() account, jid, event = app.events.get_first_systray_event()
if not event: if not event:
return return
gajim.interface.handle_event(account, jid, event.type_) app.interface.handle_event(account, jid, event.type_)
@dbus.service.method(INTERFACE, in_signature='s', out_signature='a{sv}') @dbus.service.method(INTERFACE, in_signature='s', out_signature='a{sv}')
def contact_info(self, jid): def contact_info(self, jid):
@ -613,7 +613,7 @@ class SignalObject(dbus.service.Object):
raise dbus_support.MissingArgument() raise dbus_support.MissingArgument()
jid = self._get_real_jid(jid) jid = self._get_real_jid(jid)
cached_vcard = list(gajim.connections.values())[0].get_cached_vcard(jid) cached_vcard = list(app.connections.values())[0].get_cached_vcard(jid)
if cached_vcard: if cached_vcard:
return get_dbus_struct(cached_vcard) return get_dbus_struct(cached_vcard)
@ -625,7 +625,7 @@ class SignalObject(dbus.service.Object):
""" """
List register accounts List register accounts
""" """
result = gajim.contacts.get_accounts() result = app.contacts.get_accounts()
result_array = dbus.Array([], signature='s') result_array = dbus.Array([], signature='s')
if result and len(result) > 0: if result and len(result) > 0:
for account in result: for account in result:
@ -638,16 +638,16 @@ class SignalObject(dbus.service.Object):
Show info on account: resource, jid, nick, prio, message Show info on account: resource, jid, nick, prio, message
""" """
result = DBUS_DICT_SS() result = DBUS_DICT_SS()
if account in gajim.connections: if account in app.connections:
# account is valid # account is valid
con = gajim.connections[account] con = app.connections[account]
index = con.connected index = con.connected
result['status'] = DBUS_STRING(gajim.SHOW_LIST[index]) result['status'] = DBUS_STRING(app.SHOW_LIST[index])
result['name'] = DBUS_STRING(con.name) result['name'] = DBUS_STRING(con.name)
result['jid'] = DBUS_STRING(gajim.get_jid_from_account(con.name)) result['jid'] = DBUS_STRING(app.get_jid_from_account(con.name))
result['message'] = DBUS_STRING(con.status) result['message'] = DBUS_STRING(con.status)
result['priority'] = DBUS_STRING(str(con.priority)) result['priority'] = DBUS_STRING(str(con.priority))
result['resource'] = DBUS_STRING(gajim.config.get_per('accounts', result['resource'] = DBUS_STRING(app.config.get_per('accounts',
con.name, 'resource')) con.name, 'resource'))
return result return result
@ -658,7 +658,7 @@ class SignalObject(dbus.service.Object):
return the contacts for the specified account return the contacts for the specified account
""" """
result = dbus.Array([], signature='aa{sv}') result = dbus.Array([], signature='aa{sv}')
accounts = gajim.contacts.get_accounts() accounts = app.contacts.get_accounts()
if len(accounts) == 0: if len(accounts) == 0:
return result return result
if account: if account:
@ -667,9 +667,9 @@ class SignalObject(dbus.service.Object):
accounts_to_search = accounts accounts_to_search = accounts
for acct in accounts_to_search: for acct in accounts_to_search:
if acct in accounts: if acct in accounts:
for jid in gajim.contacts.get_jid_list(acct): for jid in app.contacts.get_jid_list(acct):
item = self._contacts_as_dbus_structure( item = self._contacts_as_dbus_structure(
gajim.contacts.get_contacts(acct, jid)) app.contacts.get_contacts(acct, jid))
if item: if item:
result.append(item) result.append(item)
return result return result
@ -679,7 +679,7 @@ class SignalObject(dbus.service.Object):
""" """
Show/hide the roster window Show/hide the roster window
""" """
win = gajim.interface.roster.window win = app.interface.roster.window
if win.get_property('visible'): if win.get_property('visible'):
GLib.idle_add(win.hide) GLib.idle_add(win.hide)
else: else:
@ -695,7 +695,7 @@ class SignalObject(dbus.service.Object):
""" """
Show the roster window Show the roster window
""" """
win = gajim.interface.roster.window win = app.interface.roster.window
win.present() win.present()
# preserve the 'steal focus preservation' # preserve the 'steal focus preservation'
if self._is_first(): if self._is_first():
@ -708,7 +708,7 @@ class SignalObject(dbus.service.Object):
""" """
Show/hide the ipython window Show/hide the ipython window
""" """
win = gajim.ipython_window win = app.ipython_window
if win: if win:
if win.window.is_visible(): if win.window.is_visible():
GLib.idle_add(win.hide) GLib.idle_add(win.hide)
@ -716,7 +716,7 @@ class SignalObject(dbus.service.Object):
win.show_all() win.show_all()
win.present() win.present()
else: else:
gajim.interface.create_ipython_window() app.interface.create_ipython_window()
@dbus.service.method(INTERFACE, in_signature='', out_signature='a{ss}') @dbus.service.method(INTERFACE, in_signature='', out_signature='a{ss}')
def prefs_list(self): def prefs_list(self):
@ -730,13 +730,13 @@ class SignalObject(dbus.service.Object):
key += node + '#' key += node + '#'
key += name key += name
prefs_dict[DBUS_STRING(key)] = DBUS_STRING(value) prefs_dict[DBUS_STRING(key)] = DBUS_STRING(value)
gajim.config.foreach(get_prefs) app.config.foreach(get_prefs)
return prefs_dict return prefs_dict
@dbus.service.method(INTERFACE, in_signature='', out_signature='b') @dbus.service.method(INTERFACE, in_signature='', out_signature='b')
def prefs_store(self): def prefs_store(self):
try: try:
gajim.interface.save_config() app.interface.save_config()
except Exception: except Exception:
return DBUS_BOOLEAN(False) return DBUS_BOOLEAN(False)
return DBUS_BOOLEAN(True) return DBUS_BOOLEAN(True)
@ -749,9 +749,9 @@ class SignalObject(dbus.service.Object):
if len(key_path) != 3: if len(key_path) != 3:
return DBUS_BOOLEAN(False) return DBUS_BOOLEAN(False)
if key_path[2] == '*': if key_path[2] == '*':
gajim.config.del_per(key_path[0], key_path[1]) app.config.del_per(key_path[0], key_path[1])
else: else:
gajim.config.del_per(key_path[0], key_path[1], key_path[2]) app.config.del_per(key_path[0], key_path[1], key_path[2])
return DBUS_BOOLEAN(True) return DBUS_BOOLEAN(True)
@dbus.service.method(INTERFACE, in_signature='s', out_signature='b') @dbus.service.method(INTERFACE, in_signature='s', out_signature='b')
@ -761,17 +761,17 @@ class SignalObject(dbus.service.Object):
key_path = key.split('#', 2) key_path = key.split('#', 2)
if len(key_path) < 3: if len(key_path) < 3:
subname, value = key.split('=', 1) subname, value = key.split('=', 1)
gajim.config.set(subname, value) app.config.set(subname, value)
return DBUS_BOOLEAN(True) return DBUS_BOOLEAN(True)
subname, value = key_path[2].split('=', 1) subname, value = key_path[2].split('=', 1)
gajim.config.set_per(key_path[0], key_path[1], subname, value) app.config.set_per(key_path[0], key_path[1], subname, value)
return DBUS_BOOLEAN(True) return DBUS_BOOLEAN(True)
@dbus.service.method(INTERFACE, in_signature='ss', out_signature='b') @dbus.service.method(INTERFACE, in_signature='ss', out_signature='b')
def add_contact(self, jid, account): def add_contact(self, jid, account):
if account: if account:
if account in gajim.connections and \ if account in app.connections and \
gajim.connections[account].connected > 1: app.connections[account].connected > 1:
# if given account is active, use it # if given account is active, use it
AddNewContactWindow(account = account, jid = jid) AddNewContactWindow(account = account, jid = jid)
else: else:
@ -785,19 +785,19 @@ class SignalObject(dbus.service.Object):
@dbus.service.method(INTERFACE, in_signature='ss', out_signature='b') @dbus.service.method(INTERFACE, in_signature='ss', out_signature='b')
def remove_contact(self, jid, account): def remove_contact(self, jid, account):
jid = self._get_real_jid(jid, account) jid = self._get_real_jid(jid, account)
accounts = gajim.contacts.get_accounts() accounts = app.contacts.get_accounts()
# if there is only one account in roster, take it as default # if there is only one account in roster, take it as default
if account: if account:
accounts = [account] accounts = [account]
contact_exists = False contact_exists = False
for account in accounts: for account in accounts:
contacts = gajim.contacts.get_contacts(account, jid) contacts = app.contacts.get_contacts(account, jid)
if contacts: if contacts:
gajim.connections[account].unsubscribe(jid) app.connections[account].unsubscribe(jid)
for contact in contacts: for contact in contacts:
gajim.interface.roster.remove_contact(contact, account) app.interface.roster.remove_contact(contact, account)
gajim.contacts.remove_jid(account, jid) app.contacts.remove_jid(account, jid)
contact_exists = True contact_exists = True
return DBUS_BOOLEAN(contact_exists) return DBUS_BOOLEAN(contact_exists)
@ -815,18 +815,18 @@ class SignalObject(dbus.service.Object):
if account: if account:
accounts = [account] accounts = [account]
else: else:
accounts = gajim.connections.keys() accounts = app.connections.keys()
if jid.startswith('xmpp:'): if jid.startswith('xmpp:'):
return jid[5:] # len('xmpp:') = 5 return jid[5:] # len('xmpp:') = 5
nick_in_roster = None # Is jid a nick ? nick_in_roster = None # Is jid a nick ?
for account in accounts: for account in accounts:
# Does jid exists in roster of one account ? # Does jid exists in roster of one account ?
if gajim.contacts.get_contacts(account, jid): if app.contacts.get_contacts(account, jid):
return jid return jid
if not nick_in_roster: if not nick_in_roster:
# look in all contact if one has jid as nick # look in all contact if one has jid as nick
for jid_ in gajim.contacts.get_jid_list(account): for jid_ in app.contacts.get_jid_list(account):
c = gajim.contacts.get_contacts(account, jid_) c = app.contacts.get_contacts(account, jid_)
if c[0].name == jid: if c[0].name == jid:
nick_in_roster = jid_ nick_in_roster = jid_
break break
@ -870,7 +870,7 @@ class SignalObject(dbus.service.Object):
@dbus.service.method(INTERFACE, in_signature='', out_signature='s') @dbus.service.method(INTERFACE, in_signature='', out_signature='s')
def get_unread_msgs_number(self): def get_unread_msgs_number(self):
return DBUS_STRING(str(gajim.events.get_nb_events())) return DBUS_STRING(str(app.events.get_nb_events()))
@dbus.service.method(INTERFACE, in_signature='s', out_signature='b') @dbus.service.method(INTERFACE, in_signature='s', out_signature='b')
def start_chat(self, account): def start_chat(self, account):
@ -883,10 +883,10 @@ class SignalObject(dbus.service.Object):
@dbus.service.method(INTERFACE, in_signature='ss', out_signature='') @dbus.service.method(INTERFACE, in_signature='ss', out_signature='')
def send_xml(self, xml, account): def send_xml(self, xml, account):
if account: if account:
gajim.connections[account].send_stanza(str(xml)) app.connections[account].send_stanza(str(xml))
else: else:
for acc in gajim.contacts.get_accounts(): for acc in app.contacts.get_accounts():
gajim.connections[acc].send_stanza(str(xml)) app.connections[acc].send_stanza(str(xml))
@dbus.service.method(INTERFACE, in_signature='ss', out_signature='') @dbus.service.method(INTERFACE, in_signature='ss', out_signature='')
def change_avatar(self, picture, account): def change_avatar(self, picture, account):
@ -908,31 +908,31 @@ class SignalObject(dbus.service.Object):
if avatar_mime_type: if avatar_mime_type:
vcard['PHOTO']['TYPE'] = avatar_mime_type vcard['PHOTO']['TYPE'] = avatar_mime_type
if account: if account:
gajim.connections[account].send_vcard(vcard) app.connections[account].send_vcard(vcard)
else: else:
for acc in gajim.connections: for acc in app.connections:
gajim.connections[acc].send_vcard(vcard) app.connections[acc].send_vcard(vcard)
@dbus.service.method(INTERFACE, in_signature='ssss', out_signature='') @dbus.service.method(INTERFACE, in_signature='ssss', out_signature='')
def join_room(self, room_jid, nick, password, account): def join_room(self, room_jid, nick, password, account):
if not account: if not account:
# get the first connected account # get the first connected account
accounts = gajim.connections.keys() accounts = app.connections.keys()
for acct in accounts: for acct in accounts:
if gajim.account_is_connected(acct): if app.account_is_connected(acct):
if not gajim.connections[acct].is_zeroconf: if not app.connections[acct].is_zeroconf:
account = acct account = acct
break break
if not account: if not account:
return return
if gajim.connections[account].is_zeroconf: if app.connections[account].is_zeroconf:
# zeroconf not support groupchats # zeroconf not support groupchats
return return
if not nick: if not nick:
nick = '' nick = ''
gajim.interface.instances[account]['join_gc'] = \ app.interface.instances[account]['join_gc'] = \
JoinGroupchatWindow(account, room_jid, nick) JoinGroupchatWindow(account, room_jid, nick)
else: else:
gajim.interface.join_gc_room(account, room_jid, nick, password) app.interface.join_gc_room(account, room_jid, nick, password)

File diff suppressed because it is too large Load Diff

View File

@ -23,7 +23,7 @@ from gi.repository import GLib
from gi.repository import Gtk from gi.repository import Gtk
from gi.repository import Gdk from gi.repository import Gdk
from gajim.common import gajim from gajim.common import app
from gajim.common import dataforms from gajim.common import dataforms
from gajim.common import ged from gajim.common import ged
@ -62,13 +62,13 @@ class SearchWindow:
# Is there a jid column in results ? if -1: no, else column number # Is there a jid column in results ? if -1: no, else column number
self.jid_column = -1 self.jid_column = -1
gajim.ged.register_event_handler('search-form-received', ged.GUI1, app.ged.register_event_handler('search-form-received', ged.GUI1,
self._nec_search_form_received) self._nec_search_form_received)
gajim.ged.register_event_handler('search-result-received', ged.GUI1, app.ged.register_event_handler('search-result-received', ged.GUI1,
self._nec_search_result_received) self._nec_search_result_received)
def request_form(self): def request_form(self):
gajim.connections[self.account].request_search_fields(self.jid) app.connections[self.account].request_search_fields(self.jid)
def pulse_callback(self): def pulse_callback(self):
self.progressbar.pulse() self.progressbar.pulse()
@ -81,10 +81,10 @@ class SearchWindow:
def on_search_window_destroy(self, widget): def on_search_window_destroy(self, widget):
if self.pulse_id: if self.pulse_id:
GLib.source_remove(self.pulse_id) GLib.source_remove(self.pulse_id)
del gajim.interface.instances[self.account]['search'][self.jid] del app.interface.instances[self.account]['search'][self.jid]
gajim.ged.remove_event_handler('search-form-received', ged.GUI1, app.ged.remove_event_handler('search-form-received', ged.GUI1,
self._nec_search_form_received) self._nec_search_form_received)
gajim.ged.remove_event_handler('search-result-received', ged.GUI1, app.ged.remove_event_handler('search-result-received', ged.GUI1,
self._nec_search_result_received) self._nec_search_result_received)
def on_close_button_clicked(self, button): def on_close_button_clicked(self, button):
@ -93,13 +93,13 @@ class SearchWindow:
def on_search_button_clicked(self, button): def on_search_button_clicked(self, button):
if self.is_form: if self.is_form:
self.data_form_widget.data_form.type_ = 'submit' self.data_form_widget.data_form.type_ = 'submit'
gajim.connections[self.account].send_search_form(self.jid, app.connections[self.account].send_search_form(self.jid,
self.data_form_widget.data_form.get_purged(), True) self.data_form_widget.data_form.get_purged(), True)
else: else:
infos = self.data_form_widget.get_infos() infos = self.data_form_widget.get_infos()
if 'instructions' in infos: if 'instructions' in infos:
del infos['instructions'] del infos['instructions']
gajim.connections[self.account].send_search_form(self.jid, infos, app.connections[self.account].send_search_form(self.jid, infos,
False) False)
self.search_vbox.remove(self.data_form_widget) self.search_vbox.remove(self.data_form_widget)
@ -122,11 +122,11 @@ class SearchWindow:
if not iter_: if not iter_:
return return
jid = model[iter_][self.jid_column] jid = model[iter_][self.jid_column]
if jid in gajim.interface.instances[self.account]['infos']: if jid in app.interface.instances[self.account]['infos']:
gajim.interface.instances[self.account]['infos'][jid].window.present() app.interface.instances[self.account]['infos'][jid].window.present()
else: else:
contact = gajim.contacts.create_contact(jid=jid, account=self.account) contact = app.contacts.create_contact(jid=jid, account=self.account)
gajim.interface.instances[self.account]['infos'][jid] = \ app.interface.instances[self.account]['infos'][jid] = \
vcard.VcardWindow(contact, self.account) vcard.VcardWindow(contact, self.account)
def _nec_search_form_received(self, obj): def _nec_search_form_received(self, obj):

View File

@ -22,7 +22,7 @@ from collections import namedtuple
import nbxmpp import nbxmpp
from gi.repository import Gtk from gi.repository import Gtk
from gajim.common import gajim from gajim.common import app
from gajim.common import ged from gajim.common import ged
from gajim.gtkgui_helpers import get_icon_pixmap, Color from gajim.gtkgui_helpers import get_icon_pixmap, Color
@ -32,7 +32,7 @@ class ServerInfoDialog(Gtk.Dialog):
super().__init__(_('Server Info'), None, flags) super().__init__(_('Server Info'), None, flags)
self.account = account self.account = account
self.set_transient_for(gajim.interface.roster.window) self.set_transient_for(app.interface.roster.window)
self.set_resizable(False) self.set_resizable(False)
grid = Gtk.Grid() grid = Gtk.Grid()
@ -58,17 +58,17 @@ class ServerInfoDialog(Gtk.Dialog):
self.connect('response', self.on_response) self.connect('response', self.on_response)
self.connect('destroy', self.on_destroy) self.connect('destroy', self.on_destroy)
gajim.ged.register_event_handler('version-result-received', app.ged.register_event_handler('version-result-received',
ged.CORE, ged.CORE,
self._nec_version_result_received) self._nec_version_result_received)
gajim.ged.register_event_handler('agent-info-received', app.ged.register_event_handler('agent-info-received',
ged.GUI1, ged.GUI1,
self._nec_agent_info_received) self._nec_agent_info_received)
self.version = '' self.version = ''
self.hostname = gajim.get_hostname_from_account(account) self.hostname = app.get_hostname_from_account(account)
gajim.connections[account].request_os_info(self.hostname, None) app.connections[account].request_os_info(self.hostname, None)
for feature in self.get_features(): for feature in self.get_features():
self.add_feature(feature) self.add_feature(feature)
@ -111,7 +111,7 @@ class ServerInfoDialog(Gtk.Dialog):
item.get_parent().set_tooltip_text(feature.tooltip) item.get_parent().set_tooltip_text(feature.tooltip)
def get_features(self): def get_features(self):
con = gajim.connections[self.account] con = app.connections[self.account]
Feature = namedtuple('Feature', ['name', 'enabled', 'tooltip']) Feature = namedtuple('Feature', ['name', 'enabled', 'tooltip'])
return [ return [
@ -139,12 +139,12 @@ class ServerInfoDialog(Gtk.Dialog):
self.destroy() self.destroy()
def on_destroy(self, *args): def on_destroy(self, *args):
del gajim.interface.instances[self.account]['server_info'] del app.interface.instances[self.account]['server_info']
gajim.ged.remove_event_handler('version-result-received', app.ged.remove_event_handler('version-result-received',
ged.CORE, ged.CORE,
self._nec_version_result_received) self._nec_version_result_received)
gajim.ged.remove_event_handler('agent-info-received', app.ged.remove_event_handler('agent-info-received',
ged.GUI1, ged.GUI1,
self._nec_agent_info_received) self._nec_agent_info_received)

View File

@ -27,7 +27,7 @@ from gajim.common import helpers
from gajim.common import events from gajim.common import events
from gajim.common import exceptions from gajim.common import exceptions
from gajim.common import gajim from gajim.common import app
from gajim.common import stanza_session from gajim.common import stanza_session
from gajim.common import contacts from gajim.common import contacts
from gajim.common import ged from gajim.common import ged
@ -46,7 +46,7 @@ class ChatControlSession(stanza_session.EncryptedStanzaSession):
def __init__(self, conn, jid, thread_id, type_='chat'): def __init__(self, conn, jid, thread_id, type_='chat'):
stanza_session.EncryptedStanzaSession.__init__(self, conn, jid, thread_id, stanza_session.EncryptedStanzaSession.__init__(self, conn, jid, thread_id,
type_='chat') type_='chat')
gajim.ged.register_event_handler('decrypted-message-received', ged.GUI1, app.ged.register_event_handler('decrypted-message-received', ged.GUI1,
self._nec_decrypted_message_received) self._nec_decrypted_message_received)
self.control = None self.control = None
@ -69,10 +69,10 @@ class ChatControlSession(stanza_session.EncryptedStanzaSession):
""" """
if obj.session != self: if obj.session != self:
return return
contact = gajim.contacts.get_contact(self.conn.name, obj.jid, contact = app.contacts.get_contact(self.conn.name, obj.jid,
obj.resource) obj.resource)
if not contact: if not contact:
contact = gajim.contacts.get_gc_contact(self.conn.name, obj.jid, contact = app.contacts.get_gc_contact(self.conn.name, obj.jid,
obj.resource) obj.resource)
if self.resource != obj.resource: if self.resource != obj.resource:
self.resource = obj.resource self.resource = obj.resource
@ -97,7 +97,7 @@ class ChatControlSession(stanza_session.EncryptedStanzaSession):
if obj.forwarded and obj.sent: if obj.forwarded and obj.sent:
log_type = KindConstant.SINGLE_MSG_SENT log_type = KindConstant.SINGLE_MSG_SENT
treat_as = gajim.config.get('treat_incoming_messages') treat_as = app.config.get('treat_incoming_messages')
if treat_as: if treat_as:
obj.mtype = treat_as obj.mtype = treat_as
pm = False pm = False
@ -107,7 +107,7 @@ class ChatControlSession(stanza_session.EncryptedStanzaSession):
obj.mtype = 'pm' obj.mtype = 'pm'
if self.is_loggable() and obj.msgtxt: if self.is_loggable() and obj.msgtxt:
if obj.xhtml and gajim.config.get('log_xhtml_messages'): if obj.xhtml and app.config.get('log_xhtml_messages'):
msg_to_log = obj.xhtml msg_to_log = obj.xhtml
else: else:
msg_to_log = obj.msgtxt msg_to_log = obj.msgtxt
@ -116,7 +116,7 @@ class ChatControlSession(stanza_session.EncryptedStanzaSession):
if not pm: if not pm:
jid = obj.jid jid = obj.jid
obj.msg_log_id = gajim.logger.insert_into_logs( obj.msg_log_id = app.logger.insert_into_logs(
jid, obj.timestamp, log_type, jid, obj.timestamp, log_type,
message=msg_to_log, message=msg_to_log,
subject=obj.subject, subject=obj.subject,
@ -131,7 +131,7 @@ class ChatControlSession(stanza_session.EncryptedStanzaSession):
contact.chatstate = obj.chatstate contact.chatstate = obj.chatstate
if contact.our_chatstate == 'ask': # we were jep85 disco? if contact.our_chatstate == 'ask': # we were jep85 disco?
contact.our_chatstate = 'active' # no more contact.our_chatstate = 'active' # no more
gajim.nec.push_incoming_event(ChatstateReceivedEvent(None, app.nec.push_incoming_event(ChatstateReceivedEvent(None,
conn=obj.conn, msg_obj=obj)) conn=obj.conn, msg_obj=obj))
elif contact.chatstate != 'active': elif contact.chatstate != 'active':
# got no valid jep85 answer, peer does not support it # got no valid jep85 answer, peer does not support it
@ -146,12 +146,12 @@ class ChatControlSession(stanza_session.EncryptedStanzaSession):
if not obj.msgtxt: # empty message text if not obj.msgtxt: # empty message text
return True return True
if gajim.config.get_per('accounts', self.conn.name, if app.config.get_per('accounts', self.conn.name,
'ignore_unknown_contacts') and not gajim.contacts.get_contacts( 'ignore_unknown_contacts') and not app.contacts.get_contacts(
self.conn.name, obj.jid) and not pm: self.conn.name, obj.jid) and not pm:
return True return True
highest_contact = gajim.contacts.get_contact_with_highest_priority( highest_contact = app.contacts.get_contact_with_highest_priority(
self.conn.name, obj.jid) self.conn.name, obj.jid)
# does this resource have the highest priority of any available? # does this resource have the highest priority of any available?
@ -160,7 +160,7 @@ class ChatControlSession(stanza_session.EncryptedStanzaSession):
'offline' 'offline'
if not self.control: if not self.control:
ctrl = gajim.interface.msg_win_mgr.search_control(obj.jid, ctrl = app.interface.msg_win_mgr.search_control(obj.jid,
obj.conn.name, obj.resource) obj.conn.name, obj.resource)
if ctrl: if ctrl:
self.control = ctrl self.control = ctrl
@ -174,8 +174,8 @@ class ChatControlSession(stanza_session.EncryptedStanzaSession):
if not pm: if not pm:
self.roster_message2(obj) self.roster_message2(obj)
if gajim.interface.remote_ctrl: if app.interface.remote_ctrl:
gajim.interface.remote_ctrl.raise_signal('NewMessage', ( app.interface.remote_ctrl.raise_signal('NewMessage', (
self.conn.name, [obj.fjid, obj.msgtxt, obj.timestamp, self.conn.name, [obj.fjid, obj.msgtxt, obj.timestamp,
obj.encrypted, obj.mtype, obj.subject, obj.chatstate, obj.encrypted, obj.mtype, obj.subject, obj.chatstate,
obj.msg_log_id, obj.user_nick, obj.xhtml, obj.form_node])) obj.msg_log_id, obj.user_nick, obj.xhtml, obj.form_node]))
@ -193,22 +193,22 @@ class ChatControlSession(stanza_session.EncryptedStanzaSession):
# Try to catch the contact with correct resource # Try to catch the contact with correct resource
if resource: if resource:
fjid = jid + '/' + resource fjid = jid + '/' + resource
contact = gajim.contacts.get_contact(obj.conn.name, jid, resource) contact = app.contacts.get_contact(obj.conn.name, jid, resource)
highest_contact = gajim.contacts.get_contact_with_highest_priority( highest_contact = app.contacts.get_contact_with_highest_priority(
obj.conn.name, jid) obj.conn.name, jid)
if not contact: if not contact:
# If there is another resource, it may be a message from an # If there is another resource, it may be a message from an
# invisible resource # invisible resource
lcontact = gajim.contacts.get_contacts(obj.conn.name, jid) lcontact = app.contacts.get_contacts(obj.conn.name, jid)
if (len(lcontact) > 1 or (lcontact and lcontact[0].resource and \ if (len(lcontact) > 1 or (lcontact and lcontact[0].resource and \
lcontact[0].show != 'offline')) and jid.find('@') > 0: lcontact[0].show != 'offline')) and jid.find('@') > 0:
contact = gajim.contacts.copy_contact(highest_contact) contact = app.contacts.copy_contact(highest_contact)
contact.resource = resource contact.resource = resource
contact.priority = 0 contact.priority = 0
contact.show = 'offline' contact.show = 'offline'
contact.status = '' contact.status = ''
gajim.contacts.add_contact(obj.conn.name, contact) app.contacts.add_contact(obj.conn.name, contact)
else: else:
# Default to highest prio # Default to highest prio
@ -217,11 +217,11 @@ class ChatControlSession(stanza_session.EncryptedStanzaSession):
if not contact: if not contact:
# contact is not in roster # contact is not in roster
contact = gajim.interface.roster.add_to_not_in_the_roster( contact = app.interface.roster.add_to_not_in_the_roster(
obj.conn.name, jid, obj.user_nick) obj.conn.name, jid, obj.user_nick)
if not self.control: if not self.control:
ctrl = gajim.interface.msg_win_mgr.search_control(obj.jid, ctrl = app.interface.msg_win_mgr.search_control(obj.jid,
obj.conn.name, obj.resource) obj.conn.name, obj.resource)
if ctrl: if ctrl:
self.control = ctrl self.control = ctrl
@ -247,7 +247,7 @@ class ChatControlSession(stanza_session.EncryptedStanzaSession):
# Its a Carbon Copied Message we sent # Its a Carbon Copied Message we sent
obj.show_in_roster = False obj.show_in_roster = False
obj.show_in_systray = False obj.show_in_systray = False
gajim.events.remove_events(self.conn.name, fjid, types=['chat']) app.events.remove_events(self.conn.name, fjid, types=['chat'])
do_event = False do_event = False
else: else:
# Everything else # Everything else
@ -269,7 +269,7 @@ class ChatControlSession(stanza_session.EncryptedStanzaSession):
show_in_roster=obj.show_in_roster, show_in_roster=obj.show_in_roster,
show_in_systray=obj.show_in_systray) show_in_systray=obj.show_in_systray)
gajim.events.add_event(self.conn.name, fjid, event) app.events.add_event(self.conn.name, fjid, event)
def roster_message(self, jid, msg, tim, encrypted=False, msg_type='', def roster_message(self, jid, msg, tim, encrypted=False, msg_type='',
subject=None, resource='', msg_log_id=None, user_nick='', xhtml=None, subject=None, resource='', msg_log_id=None, user_nick='', xhtml=None,
@ -286,24 +286,24 @@ class ChatControlSession(stanza_session.EncryptedStanzaSession):
# Try to catch the contact with correct resource # Try to catch the contact with correct resource
if resource: if resource:
fjid = jid + '/' + resource fjid = jid + '/' + resource
contact = gajim.contacts.get_contact(self.conn.name, jid, resource) contact = app.contacts.get_contact(self.conn.name, jid, resource)
highest_contact = gajim.contacts.get_contact_with_highest_priority( highest_contact = app.contacts.get_contact_with_highest_priority(
self.conn.name, jid) self.conn.name, jid)
if not contact: if not contact:
# If there is another resource, it may be a message from an invisible # If there is another resource, it may be a message from an invisible
# resource # resource
lcontact = gajim.contacts.get_contacts(self.conn.name, jid) lcontact = app.contacts.get_contacts(self.conn.name, jid)
if (len(lcontact) > 1 or (lcontact and lcontact[0].resource and \ if (len(lcontact) > 1 or (lcontact and lcontact[0].resource and \
lcontact[0].show != 'offline')) and jid.find('@') > 0: lcontact[0].show != 'offline')) and jid.find('@') > 0:
contact = gajim.contacts.copy_contact(highest_contact) contact = app.contacts.copy_contact(highest_contact)
contact.resource = resource contact.resource = resource
if resource: if resource:
fjid = jid + '/' + resource fjid = jid + '/' + resource
contact.priority = 0 contact.priority = 0
contact.show = 'offline' contact.show = 'offline'
contact.status = '' contact.status = ''
gajim.contacts.add_contact(self.conn.name, contact) app.contacts.add_contact(self.conn.name, contact)
else: else:
# Default to highest prio # Default to highest prio
@ -312,11 +312,11 @@ class ChatControlSession(stanza_session.EncryptedStanzaSession):
if not contact: if not contact:
# contact is not in roster # contact is not in roster
contact = gajim.interface.roster.add_to_not_in_the_roster( contact = app.interface.roster.add_to_not_in_the_roster(
self.conn.name, jid, user_nick) self.conn.name, jid, user_nick)
if not self.control: if not self.control:
ctrl = gajim.interface.msg_win_mgr.get_control(fjid, self.conn.name) ctrl = app.interface.msg_win_mgr.get_control(fjid, self.conn.name)
if ctrl: if ctrl:
self.control = ctrl self.control = ctrl
self.control.set_session(self) self.control.set_session(self)
@ -324,7 +324,7 @@ class ChatControlSession(stanza_session.EncryptedStanzaSession):
fjid = jid fjid = jid
# Do we have a queue? # Do we have a queue?
no_queue = len(gajim.events.get_events(self.conn.name, fjid)) == 0 no_queue = len(app.events.get_events(self.conn.name, fjid)) == 0
popup = helpers.allow_popup_window(self.conn.name) popup = helpers.allow_popup_window(self.conn.name)
@ -346,7 +346,7 @@ class ChatControlSession(stanza_session.EncryptedStanzaSession):
additional_data=additional_data) additional_data=additional_data)
if msg_log_id: if msg_log_id:
gajim.logger.set_read_messages([msg_log_id]) app.logger.set_read_messages([msg_log_id])
return return
@ -369,30 +369,30 @@ class ChatControlSession(stanza_session.EncryptedStanzaSession):
show_in_roster=show_in_roster, show_in_systray=show_in_systray, show_in_roster=show_in_roster, show_in_systray=show_in_systray,
additional_data=additional_data) additional_data=additional_data)
gajim.events.add_event(self.conn.name, fjid, event) app.events.add_event(self.conn.name, fjid, event)
if popup: if popup:
if not self.control: if not self.control:
self.control = gajim.interface.new_chat(contact, self.control = app.interface.new_chat(contact,
self.conn.name, session=self) self.conn.name, session=self)
if len(gajim.events.get_events(self.conn.name, fjid)): if len(app.events.get_events(self.conn.name, fjid)):
self.control.read_queue() self.control.read_queue()
else: else:
if no_queue: # We didn't have a queue: we change icons if no_queue: # We didn't have a queue: we change icons
gajim.interface.roster.draw_contact(jid, self.conn.name) app.interface.roster.draw_contact(jid, self.conn.name)
gajim.interface.roster.show_title() # we show the * or [n] app.interface.roster.show_title() # we show the * or [n]
# Select the big brother contact in roster, it's visible because it has # Select the big brother contact in roster, it's visible because it has
# events. # events.
family = gajim.contacts.get_metacontacts_family(self.conn.name, jid) family = app.contacts.get_metacontacts_family(self.conn.name, jid)
if family: if family:
nearby_family, bb_jid, bb_account = \ nearby_family, bb_jid, bb_account = \
gajim.contacts.get_nearby_family_and_big_brother(family, app.contacts.get_nearby_family_and_big_brother(family,
self.conn.name) self.conn.name)
else: else:
bb_jid, bb_account = jid, self.conn.name bb_jid, bb_account = jid, self.conn.name
gajim.interface.roster.select_contact(bb_jid, bb_account) app.interface.roster.select_contact(bb_jid, bb_account)
# ---- ESessions stuff --- # ---- ESessions stuff ---
@ -469,13 +469,13 @@ class ChatControlSession(stanza_session.EncryptedStanzaSession):
dialog.destroy() dialog.destroy()
if is_checked: if is_checked:
allow_no_log_for = gajim.config.get_per( allow_no_log_for = app.config.get_per(
'accounts', self.conn.name, 'accounts', self.conn.name,
'allow_no_log_for').split() 'allow_no_log_for').split()
jid = str(self.jid) jid = str(self.jid)
if jid not in allow_no_log_for: if jid not in allow_no_log_for:
allow_no_log_for.append(jid) allow_no_log_for.append(jid)
gajim.config.set_per('accounts', self.conn.name, app.config.set_per('accounts', self.conn.name,
'allow_no_log_for', ' '.join(allow_no_log_for)) 'allow_no_log_for', ' '.join(allow_no_log_for))
negotiated.update(ask_user) negotiated.update(ask_user)
@ -489,7 +489,7 @@ class ChatControlSession(stanza_session.EncryptedStanzaSession):
self.reject_negotiation() self.reject_negotiation()
dialog.destroy() dialog.destroy()
allow_no_log_for = gajim.config.get_per('accounts', allow_no_log_for = app.config.get_per('accounts',
self.conn.name, 'allow_no_log_for').split() self.conn.name, 'allow_no_log_for').split()
if str(self.jid) in allow_no_log_for: if str(self.jid) in allow_no_log_for:
dialog = None dialog = None
@ -552,17 +552,17 @@ class ChatControlSession(stanza_session.EncryptedStanzaSession):
# around to test my test suite. # around to test my test suite.
if form.getType() == 'form': if form.getType() == 'form':
if not self.control: if not self.control:
jid, resource = gajim.get_room_and_nick_from_fjid(str(self.jid)) jid, resource = app.get_room_and_nick_from_fjid(str(self.jid))
account = self.conn.name account = self.conn.name
contact = gajim.contacts.get_contact(account, str(self.jid), contact = app.contacts.get_contact(account, str(self.jid),
resource) resource)
if not contact: if not contact:
contact = gajim.contacts.create_contact(jid=jid, account=account, contact = app.contacts.create_contact(jid=jid, account=account,
resource=resource, show=self.conn.get_status()) resource=resource, show=self.conn.get_status())
gajim.interface.new_chat(contact, account, resource=resource, app.interface.new_chat(contact, account, resource=resource,
session=self) session=self)
negotiation.FeatureNegotiationWindow(account, str(self.jid), self, negotiation.FeatureNegotiationWindow(account, str(self.jid), self,

View File

@ -32,7 +32,7 @@ from gajim import config
from gajim import tooltips from gajim import tooltips
from gajim import gtkgui_helpers from gajim import gtkgui_helpers
from gajim.common import gajim from gajim.common import app
from gajim.common import helpers from gajim.common import helpers
class StatusIcon: class StatusIcon:
@ -58,15 +58,15 @@ class StatusIcon:
""" """
Register listeners to the events class Register listeners to the events class
""" """
gajim.events.event_added_subscribe(self.on_event_added) app.events.event_added_subscribe(self.on_event_added)
gajim.events.event_removed_subscribe(self.on_event_removed) app.events.event_removed_subscribe(self.on_event_removed)
def unsubscribe_events(self): def unsubscribe_events(self):
""" """
Unregister listeners to the events class Unregister listeners to the events class
""" """
gajim.events.event_added_unsubscribe(self.on_event_added) app.events.event_added_unsubscribe(self.on_event_added)
gajim.events.event_removed_unsubscribe(self.on_event_removed) app.events.event_removed_unsubscribe(self.on_event_removed)
def on_event_added(self, event): def on_event_added(self, event):
""" """
@ -141,24 +141,24 @@ class StatusIcon:
image.get_animation().get_static_image()) image.get_animation().get_static_image())
# self.status_icon.set_from_animation(image.get_animation()) # self.status_icon.set_from_animation(image.get_animation())
if not gajim.interface.systray_enabled: if not app.interface.systray_enabled:
return return
if gajim.config.get('trayicon') == 'always': if app.config.get('trayicon') == 'always':
self.status_icon.set_visible(True) self.status_icon.set_visible(True)
if gajim.events.get_nb_systray_events(): if app.events.get_nb_systray_events():
self.status_icon.set_visible(True) self.status_icon.set_visible(True)
# if gajim.config.get('trayicon_blink'): # if app.config.get('trayicon_blink'):
# self.status_icon.set_blinking(True) # self.status_icon.set_blinking(True)
# else: # else:
image = gtkgui_helpers.load_icon('event') image = gtkgui_helpers.load_icon('event')
really_set_img() really_set_img()
return return
else: else:
if gajim.config.get('trayicon') == 'on_event': if app.config.get('trayicon') == 'on_event':
self.status_icon.set_visible(False) self.status_icon.set_visible(False)
# self.status_icon.set_blinking(False) # self.status_icon.set_blinking(False)
image = gajim.interface.jabber_state_images[self.statusicon_size][ image = app.interface.jabber_state_images[self.statusicon_size][
self.status] self.status]
really_set_img() really_set_img()
@ -172,13 +172,13 @@ class StatusIcon:
self.set_img() self.set_img()
def start_chat(self, widget, account, jid): def start_chat(self, widget, account, jid):
contact = gajim.contacts.get_first_contact_from_jid(account, jid) contact = app.contacts.get_first_contact_from_jid(account, jid)
if gajim.interface.msg_win_mgr.has_window(jid, account): if app.interface.msg_win_mgr.has_window(jid, account):
gajim.interface.msg_win_mgr.get_window(jid, account).set_active_tab( app.interface.msg_win_mgr.get_window(jid, account).set_active_tab(
jid, account) jid, account)
elif contact: elif contact:
gajim.interface.new_chat(contact, account) app.interface.new_chat(contact, account)
gajim.interface.msg_win_mgr.get_window(jid, account).set_active_tab( app.interface.msg_win_mgr.get_window(jid, account).set_active_tab(
jid, account) jid, account)
def on_single_message_menuitem_activate(self, widget, account): def on_single_message_menuitem_activate(self, widget, account):
@ -218,7 +218,7 @@ class StatusIcon:
join_gc_menuitem.set_submenu(gc_sub_menu) join_gc_menuitem.set_submenu(gc_sub_menu)
# We need our own set of status icons, let's make 'em! # We need our own set of status icons, let's make 'em!
iconset = gajim.config.get('iconset') iconset = app.config.get('iconset')
path = os.path.join(helpers.get_iconset_path(iconset), '16x16') path = os.path.join(helpers.get_iconset_path(iconset), '16x16')
for show in ('online', 'chat', 'away', 'xa', 'dnd', 'invisible'): for show in ('online', 'chat', 'away', 'xa', 'dnd', 'invisible'):
@ -234,7 +234,7 @@ class StatusIcon:
sub_menu.append(item) sub_menu.append(item)
item.connect('activate', self.on_change_status_message_activate) item.connect('activate', self.on_change_status_message_activate)
connected_accounts = gajim.get_number_of_connected_accounts() connected_accounts = app.get_number_of_connected_accounts()
if connected_accounts < 1: if connected_accounts < 1:
item.set_sensitive(False) item.set_sensitive(False)
@ -249,12 +249,12 @@ class StatusIcon:
item.connect('activate', self.on_show_menuitem_activate, 'offline') item.connect('activate', self.on_show_menuitem_activate, 'offline')
iskey = connected_accounts > 0 and not (connected_accounts == 1 and iskey = connected_accounts > 0 and not (connected_accounts == 1 and
gajim.zeroconf_is_connected()) app.zeroconf_is_connected())
chat_with_menuitem.set_sensitive(iskey) chat_with_menuitem.set_sensitive(iskey)
single_message_menuitem.set_sensitive(iskey) single_message_menuitem.set_sensitive(iskey)
join_gc_menuitem.set_sensitive(iskey) join_gc_menuitem.set_sensitive(iskey)
accounts_list = sorted(gajim.contacts.get_accounts()) accounts_list = sorted(app.contacts.get_accounts())
# items that get shown whether an account is zeroconf or not # items that get shown whether an account is zeroconf or not
if connected_accounts > 1: # 2 or more connections? make submenus if connected_accounts > 1: # 2 or more connections? make submenus
account_menu_for_chat_with = Gtk.Menu() account_menu_for_chat_with = Gtk.Menu()
@ -262,7 +262,7 @@ class StatusIcon:
self.popup_menus.append(account_menu_for_chat_with) self.popup_menus.append(account_menu_for_chat_with)
for account in accounts_list: for account in accounts_list:
if gajim.account_is_connected(account): if app.account_is_connected(account):
# for chat_with # for chat_with
item = Gtk.MenuItem.new_with_label( item = Gtk.MenuItem.new_with_label(
_('using account %s') % account) _('using account %s') % account)
@ -271,8 +271,8 @@ class StatusIcon:
elif connected_accounts == 1: # one account elif connected_accounts == 1: # one account
# one account connected, no need to show 'as jid' # one account connected, no need to show 'as jid'
for account in gajim.connections: for account in app.connections:
if gajim.connections[account].connected > 1: if app.connections[account].connected > 1:
# for start chat # for start chat
self.new_chat_handler_id = chat_with_menuitem.connect( self.new_chat_handler_id = chat_with_menuitem.connect(
'activate', self.on_new_chat, account) 'activate', self.on_new_chat, account)
@ -280,13 +280,13 @@ class StatusIcon:
# menu items that don't apply to zeroconf connections # menu items that don't apply to zeroconf connections
if connected_accounts == 1 or (connected_accounts == 2 and \ if connected_accounts == 1 or (connected_accounts == 2 and \
gajim.zeroconf_is_connected()): app.zeroconf_is_connected()):
# only one 'real' (non-zeroconf) account is connected, don't need # only one 'real' (non-zeroconf) account is connected, don't need
# submenus # submenus
for account in gajim.connections: for account in app.connections:
if gajim.account_is_connected(account) and \ if app.account_is_connected(account) and \
not gajim.config.get_per('accounts', account, 'is_zeroconf'): not app.config.get_per('accounts', account, 'is_zeroconf'):
if gajim.connections[account].private_storage_supported: if app.connections[account].private_storage_supported:
connected_accounts_with_private_storage += 1 connected_accounts_with_private_storage += 1
# for single message # for single message
@ -295,7 +295,7 @@ class StatusIcon:
connect('activate', connect('activate',
self.on_single_message_menuitem_activate, account) self.on_single_message_menuitem_activate, account)
# join gc # join gc
gajim.interface.roster.add_bookmarks_list(gc_sub_menu, app.interface.roster.add_bookmarks_list(gc_sub_menu,
account) account)
break # No other account connected break # No other account connected
else: else:
@ -306,10 +306,10 @@ class StatusIcon:
self.popup_menus.append(account_menu_for_single_message) self.popup_menus.append(account_menu_for_single_message)
for account in accounts_list: for account in accounts_list:
if gajim.connections[account].is_zeroconf or \ if app.connections[account].is_zeroconf or \
not gajim.account_is_connected(account): not app.account_is_connected(account):
continue continue
if gajim.connections[account].private_storage_supported: if app.connections[account].private_storage_supported:
connected_accounts_with_private_storage += 1 connected_accounts_with_private_storage += 1
# for single message # for single message
item = Gtk.MenuItem.new_with_label( item = Gtk.MenuItem.new_with_label(
@ -323,7 +323,7 @@ class StatusIcon:
_('using account %s') % account) _('using account %s') % account)
gc_sub_menu.append(gc_item) gc_sub_menu.append(gc_item)
gc_menuitem_menu = Gtk.Menu() gc_menuitem_menu = Gtk.Menu()
gajim.interface.roster.add_bookmarks_list(gc_menuitem_menu, app.interface.roster.add_bookmarks_list(gc_menuitem_menu,
account) account)
gc_item.set_submenu(gc_menuitem_menu) gc_item.set_submenu(gc_menuitem_menu)
gc_sub_menu.show_all() gc_sub_menu.show_all()
@ -332,14 +332,14 @@ class StatusIcon:
gc_sub_menu.append(newitem) gc_sub_menu.append(newitem)
newitem = Gtk.MenuItem.new_with_mnemonic(_('_Manage Bookmarks…')) newitem = Gtk.MenuItem.new_with_mnemonic(_('_Manage Bookmarks…'))
newitem.connect('activate', newitem.connect('activate',
gajim.interface.roster.on_manage_bookmarks_menuitem_activate) app.interface.roster.on_manage_bookmarks_menuitem_activate)
gc_sub_menu.append(newitem) gc_sub_menu.append(newitem)
if connected_accounts_with_private_storage == 0: if connected_accounts_with_private_storage == 0:
newitem.set_sensitive(False) newitem.set_sensitive(False)
sounds_mute_menuitem.set_active(not gajim.config.get('sounds_on')) sounds_mute_menuitem.set_active(not app.config.get('sounds_on'))
win = gajim.interface.roster.window win = app.interface.roster.window
if self.show_roster_handler_id: if self.show_roster_handler_id:
show_roster_menuitem.handler_disconnect(self.show_roster_handler_id) show_roster_menuitem.handler_disconnect(self.show_roster_handler_id)
if win.get_property('has-toplevel-focus'): if win.get_property('has-toplevel-focus'):
@ -363,35 +363,35 @@ class StatusIcon:
self.systray_context_menu.popup(None, None, None, None, 0, event_time) self.systray_context_menu.popup(None, None, None, None, 0, event_time)
def on_show_all_events_menuitem_activate(self, widget): def on_show_all_events_menuitem_activate(self, widget):
events = gajim.events.get_systray_events() events = app.events.get_systray_events()
for account in events: for account in events:
for jid in events[account]: for jid in events[account]:
for event in events[account][jid]: for event in events[account][jid]:
gajim.interface.handle_event(account, jid, event.type_) app.interface.handle_event(account, jid, event.type_)
def on_sounds_mute_menuitem_activate(self, widget): def on_sounds_mute_menuitem_activate(self, widget):
gajim.config.set('sounds_on', not widget.get_active()) app.config.set('sounds_on', not widget.get_active())
def on_show_roster_menuitem_activate(self, widget): def on_show_roster_menuitem_activate(self, widget):
win = gajim.interface.roster.window win = app.interface.roster.window
win.present() win.present()
def on_hide_roster_menuitem_activate(self, widget): def on_hide_roster_menuitem_activate(self, widget):
win = gajim.interface.roster.window win = app.interface.roster.window
win.hide() win.hide()
def on_preferences_menuitem_activate(self, widget): def on_preferences_menuitem_activate(self, widget):
if 'preferences' in gajim.interface.instances: if 'preferences' in app.interface.instances:
gajim.interface.instances['preferences'].window.present() app.interface.instances['preferences'].window.present()
else: else:
gajim.interface.instances['preferences'] = config.PreferencesWindow() app.interface.instances['preferences'] = config.PreferencesWindow()
def on_quit_menuitem_activate(self, widget): def on_quit_menuitem_activate(self, widget):
gajim.interface.roster.on_quit_request() app.interface.roster.on_quit_request()
def on_left_click(self): def on_left_click(self):
win = gajim.interface.roster.window win = app.interface.roster.window
if len(gajim.events.get_systray_events()) == 0: if len(app.events.get_systray_events()) == 0:
# No pending events, so toggle visible/hidden for roster window # No pending events, so toggle visible/hidden for roster window
if win.get_property('visible') and (win.get_property( if win.get_property('visible') and (win.get_property(
'has-toplevel-focus') or os.name == 'nt'): 'has-toplevel-focus') or os.name == 'nt'):
@ -400,42 +400,42 @@ class StatusIcon:
# we could be in another VD right now. eg vd2 # we could be in another VD right now. eg vd2
# and we want to show it in vd2 # and we want to show it in vd2
if not gtkgui_helpers.possibly_move_window_in_current_desktop( if not gtkgui_helpers.possibly_move_window_in_current_desktop(
win) and gajim.config.get('save-roster-position'): win) and app.config.get('save-roster-position'):
x, y = win.get_position() x, y = win.get_position()
gajim.config.set('roster_x-position', x) app.config.set('roster_x-position', x)
gajim.config.set('roster_y-position', y) app.config.set('roster_y-position', y)
win.hide() # else we hide it from VD that was visible in win.hide() # else we hide it from VD that was visible in
else: else:
if not win.get_property('visible'): if not win.get_property('visible'):
win.show_all() win.show_all()
if gajim.config.get('save-roster-position'): if app.config.get('save-roster-position'):
gtkgui_helpers.move_window(win, gtkgui_helpers.move_window(win,
gajim.config.get('roster_x-position'), app.config.get('roster_x-position'),
gajim.config.get('roster_y-position')) app.config.get('roster_y-position'))
if not gajim.config.get('roster_window_skip_taskbar'): if not app.config.get('roster_window_skip_taskbar'):
win.set_property('skip-taskbar-hint', False) win.set_property('skip-taskbar-hint', False)
win.present_with_time(Gtk.get_current_event_time()) win.present_with_time(Gtk.get_current_event_time())
else: else:
self.handle_first_event() self.handle_first_event()
def handle_first_event(self): def handle_first_event(self):
account, jid, event = gajim.events.get_first_systray_event() account, jid, event = app.events.get_first_systray_event()
if not event: if not event:
return return
win = gajim.interface.roster.window win = app.interface.roster.window
if not win.get_property('visible') and gajim.config.get( if not win.get_property('visible') and app.config.get(
'save-roster-position'): 'save-roster-position'):
gtkgui_helpers.move_window(win, gtkgui_helpers.move_window(win,
gajim.config.get('roster_x-position'), app.config.get('roster_x-position'),
gajim.config.get('roster_y-position')) app.config.get('roster_y-position'))
gajim.interface.handle_event(account, jid, event.type_) app.interface.handle_event(account, jid, event.type_)
def on_middle_click(self): def on_middle_click(self):
""" """
Middle click raises window to have complete focus (fe. get kbd events) Middle click raises window to have complete focus (fe. get kbd events)
but if already raised, it hides it but if already raised, it hides it
""" """
win = gajim.interface.roster.window win = app.interface.roster.window
if win.is_active(): # is it fully raised? (eg does it receive kbd events?) if win.is_active(): # is it fully raised? (eg does it receive kbd events?)
win.hide() win.hide()
else: else:
@ -459,26 +459,26 @@ class StatusIcon:
'CHANGE_STATUS_MSG_MENUITEM', 'SEPARATOR', 'offline'] 'CHANGE_STATUS_MSG_MENUITEM', 'SEPARATOR', 'offline']
index = l.index(show) index = l.index(show)
if not helpers.statuses_unified(): if not helpers.statuses_unified():
gajim.interface.roster.status_combobox.set_active(index + 2) app.interface.roster.status_combobox.set_active(index + 2)
return return
current = gajim.interface.roster.status_combobox.get_active() current = app.interface.roster.status_combobox.get_active()
if index != current: if index != current:
gajim.interface.roster.status_combobox.set_active(index) app.interface.roster.status_combobox.set_active(index)
def on_change_status_message_activate(self, widget): def on_change_status_message_activate(self, widget):
model = gajim.interface.roster.status_combobox.get_model() model = app.interface.roster.status_combobox.get_model()
active = gajim.interface.roster.status_combobox.get_active() active = app.interface.roster.status_combobox.get_active()
status = model[active][2] status = model[active][2]
def on_response(message, pep_dict): def on_response(message, pep_dict):
if message is None: # None if user press Cancel if message is None: # None if user press Cancel
return return
accounts = gajim.connections.keys() accounts = app.connections.keys()
for acct in accounts: for acct in accounts:
if not gajim.config.get_per('accounts', acct, if not app.config.get_per('accounts', acct,
'sync_with_global_status'): 'sync_with_global_status'):
continue continue
show = gajim.SHOW_LIST[gajim.connections[acct].connected] show = app.SHOW_LIST[app.connections[acct].connected]
gajim.interface.roster.send_status(acct, show, message) app.interface.roster.send_status(acct, show, message)
gajim.interface.roster.send_pep(acct, pep_dict) app.interface.roster.send_pep(acct, pep_dict)
dlg = dialogs.ChangeStatusMessageDialog(on_response, status) dlg = dialogs.ChangeStatusMessageDialog(on_response, status)
dlg.dialog.present() dlg.dialog.present()

View File

@ -39,7 +39,7 @@ from datetime import timedelta
from gajim import gtkgui_helpers from gajim import gtkgui_helpers
from gajim.common import gajim from gajim.common import app
from gajim.common import helpers from gajim.common import helpers
from gajim.common.i18n import Q_ from gajim.common.i18n import Q_
@ -273,7 +273,7 @@ class NotificationAreaTooltip(BaseTooltip, StatusTable):
StatusTable.__init__(self) StatusTable.__init__(self)
def fill_table_with_accounts(self, accounts): def fill_table_with_accounts(self, accounts):
iconset = gajim.config.get('iconset') iconset = app.config.get('iconset')
if not iconset: if not iconset:
iconset = 'dcraven' iconset = 'dcraven'
file_path = os.path.join(helpers.get_iconset_path(iconset), '16x16') file_path = os.path.join(helpers.get_iconset_path(iconset), '16x16')
@ -281,8 +281,8 @@ class NotificationAreaTooltip(BaseTooltip, StatusTable):
message = acct['message'] message = acct['message']
message = helpers.reduce_chars_newlines(message, 100, 1) message = helpers.reduce_chars_newlines(message, 100, 1)
message = GLib.markup_escape_text(message) message = GLib.markup_escape_text(message)
if acct['name'] in gajim.con_types and \ if acct['name'] in app.con_types and \
gajim.con_types[acct['name']] in ('tls', 'ssl'): app.con_types[acct['name']] in ('tls', 'ssl'):
show_lock = True show_lock = True
else: else:
show_lock = False show_lock = False
@ -381,7 +381,7 @@ class GCTooltip(Gtk.Window):
# Avatar # Avatar
puny_name = helpers.sanitize_filename(contact.name) puny_name = helpers.sanitize_filename(contact.name)
puny_room = helpers.sanitize_filename(contact.room_jid) puny_room = helpers.sanitize_filename(contact.room_jid)
file_ = helpers.get_avatar_path(os.path.join(gajim.AVATAR_PATH, file_ = helpers.get_avatar_path(os.path.join(app.AVATAR_PATH,
puny_room, puny_name)) puny_room, puny_name))
if file_: if file_:
with open(file_, 'rb') as file_data: with open(file_, 'rb') as file_data:
@ -400,13 +400,13 @@ class GCTooltip(Gtk.Window):
formatted = "<span foreground='%s'>%s</span>" formatted = "<span foreground='%s'>%s</span>"
color = None color = None
if affiliation.startswith(Q_("?Group Chat Contact Affiliation:None")): if affiliation.startswith(Q_("?Group Chat Contact Affiliation:None")):
color = gajim.config.get('tooltip_affiliation_none_color') color = app.config.get('tooltip_affiliation_none_color')
elif affiliation.startswith(_("Member")): elif affiliation.startswith(_("Member")):
color = gajim.config.get('tooltip_affiliation_member_color') color = app.config.get('tooltip_affiliation_member_color')
elif affiliation.startswith(_("Administrator")): elif affiliation.startswith(_("Administrator")):
color = gajim.config.get('tooltip_affiliation_administrator_color') color = app.config.get('tooltip_affiliation_administrator_color')
elif affiliation.startswith(_("Owner")): elif affiliation.startswith(_("Owner")):
color = gajim.config.get('tooltip_affiliation_owner_color') color = app.config.get('tooltip_affiliation_owner_color')
if color: if color:
affiliation = formatted % (color, affiliation) affiliation = formatted % (color, affiliation)
return affiliation return affiliation
@ -451,7 +451,7 @@ class RosterTooltip(Gtk.Window, StatusTable):
self.create_table() self.create_table()
def fill_table_with_accounts(self, accounts): def fill_table_with_accounts(self, accounts):
iconset = gajim.config.get('iconset') iconset = app.config.get('iconset')
if not iconset: if not iconset:
iconset = 'dcraven' iconset = 'dcraven'
file_path = os.path.join(helpers.get_iconset_path(iconset), '16x16') file_path = os.path.join(helpers.get_iconset_path(iconset), '16x16')
@ -459,8 +459,8 @@ class RosterTooltip(Gtk.Window, StatusTable):
message = acct['message'] message = acct['message']
message = helpers.reduce_chars_newlines(message, 100, 1) message = helpers.reduce_chars_newlines(message, 100, 1)
message = GLib.markup_escape_text(message) message = GLib.markup_escape_text(message)
if acct['name'] in gajim.con_types and \ if acct['name'] in app.con_types and \
gajim.con_types[acct['name']] in ('tls', 'ssl'): app.con_types[acct['name']] in ('tls', 'ssl'):
show_lock = True show_lock = True
else: else:
show_lock = False show_lock = False
@ -496,25 +496,25 @@ class RosterTooltip(Gtk.Window, StatusTable):
return return
if typ == 'account': if typ == 'account':
jid = gajim.get_jid_from_account(account) jid = app.get_jid_from_account(account)
contacts = [] contacts = []
connection = gajim.connections[account] connection = app.connections[account]
# get our current contact info # get our current contact info
nbr_on, nbr_total = gajim.\ nbr_on, nbr_total = app.\
contacts.get_nb_online_total_contacts( contacts.get_nb_online_total_contacts(
accounts=[account]) accounts=[account])
account_name = account account_name = account
if gajim.account_is_connected(account): if app.account_is_connected(account):
account_name += ' (%s/%s)' % (repr(nbr_on), account_name += ' (%s/%s)' % (repr(nbr_on),
repr(nbr_total)) repr(nbr_total))
contact = gajim.contacts.create_self_contact(jid=jid, contact = app.contacts.create_self_contact(jid=jid,
account=account, name=account_name, account=account, name=account_name,
show=connection.get_status(), status=connection.status, show=connection.get_status(), status=connection.status,
resource=connection.server_resource, resource=connection.server_resource,
priority=connection.priority) priority=connection.priority)
if gajim.connections[account].gpg: if app.connections[account].gpg:
contact.keyID = gajim.config.get_per('accounts', contact.keyID = app.config.get_per('accounts',
connection.name, 'keyid') connection.name, 'keyid')
contacts.append(contact) contacts.append(contact)
# if we're online ... # if we're online ...
@ -538,7 +538,7 @@ class RosterTooltip(Gtk.Window, StatusTable):
show = roster.getShow(jid + '/' + resource) show = roster.getShow(jid + '/' + resource)
if not show: if not show:
show = 'online' show = 'online'
contact = gajim.contacts.create_self_contact( contact = app.contacts.create_self_contact(
jid=jid, account=account, show=show, jid=jid, account=account, show=show,
status=roster.getStatus( status=roster.getStatus(
jid + '/' + resource), jid + '/' + resource),
@ -547,13 +547,13 @@ class RosterTooltip(Gtk.Window, StatusTable):
contacts.append(contact) contacts.append(contact)
# Username/Account/Groupchat # Username/Account/Groupchat
self.prim_contact = gajim.contacts.get_highest_prio_contact_from_contacts( self.prim_contact = app.contacts.get_highest_prio_contact_from_contacts(
contacts) contacts)
self.contact_jid = self.prim_contact.jid self.contact_jid = self.prim_contact.jid
name = GLib.markup_escape_text(self.prim_contact.get_shown_name()) name = GLib.markup_escape_text(self.prim_contact.get_shown_name())
name_markup = '<b>{}</b>'.format(name) name_markup = '<b>{}</b>'.format(name)
if gajim.config.get('mergeaccounts'): if app.config.get('mergeaccounts'):
color = gajim.config.get('tooltip_account_name_color') color = app.config.get('tooltip_account_name_color')
account_name = GLib.markup_escape_text(self.prim_contact.account.name) account_name = GLib.markup_escape_text(self.prim_contact.account.name)
name_markup += " <span foreground='{}'>({})</span>".format( name_markup += " <span foreground='{}'>({})</span>".format(
color, account_name) color, account_name)
@ -562,7 +562,7 @@ class RosterTooltip(Gtk.Window, StatusTable):
name_markup += _(' [blocked]') name_markup += _(' [blocked]')
try: try:
if self.prim_contact.jid in gajim.interface.minimized_controls[account]: if self.prim_contact.jid in app.interface.minimized_controls[account]:
name_markup += _(' [minimized]') name_markup += _(' [minimized]')
except KeyError: except KeyError:
pass pass
@ -583,12 +583,12 @@ class RosterTooltip(Gtk.Window, StatusTable):
contacts_dict[priority] = [contact] contacts_dict[priority] = [contact]
if self.num_resources > 1: if self.num_resources > 1:
self.status_label.show() self.status_label.show()
transport = gajim.get_transport_name_from_jid(self.prim_contact.jid) transport = app.get_transport_name_from_jid(self.prim_contact.jid)
if transport: if transport:
file_path = os.path.join(helpers.get_transport_path(transport), file_path = os.path.join(helpers.get_transport_path(transport),
'16x16') '16x16')
else: else:
iconset = gajim.config.get('iconset') iconset = app.config.get('iconset')
if not iconset: if not iconset:
iconset = 'dcraven' iconset = 'dcraven'
file_path = os.path.join(helpers.get_iconset_path(iconset), file_path = os.path.join(helpers.get_iconset_path(iconset),
@ -639,7 +639,7 @@ class RosterTooltip(Gtk.Window, StatusTable):
self.resource.show() self.resource.show()
self.resource_label.show() self.resource_label.show()
if self.prim_contact.jid not in gajim.gc_connected[account]: if self.prim_contact.jid not in app.gc_connected[account]:
if (account and if (account and
self.prim_contact.sub and self.prim_contact.sub and
self.prim_contact.sub != 'both'): self.prim_contact.sub != 'both'):
@ -663,7 +663,7 @@ class RosterTooltip(Gtk.Window, StatusTable):
# Avatar # Avatar
puny_jid = helpers.sanitize_filename(self.prim_contact.jid) puny_jid = helpers.sanitize_filename(self.prim_contact.jid)
file_ = helpers.get_avatar_path(os.path.join(gajim.AVATAR_PATH, file_ = helpers.get_avatar_path(os.path.join(app.AVATAR_PATH,
puny_jid)) puny_jid))
if file_: if file_:
with open(file_, 'rb') as file_data: with open(file_, 'rb') as file_data:
@ -713,7 +713,7 @@ class RosterTooltip(Gtk.Window, StatusTable):
def _set_idle_time(self, contact): def _set_idle_time(self, contact):
if contact.idle_time: if contact.idle_time:
idle_color = gajim.config.get('tooltip_idle_color') idle_color = app.config.get('tooltip_idle_color')
idle_time = contact.idle_time idle_time = contact.idle_time
idle_time = time.localtime(contact.idle_time) idle_time = time.localtime(contact.idle_time)
idle_time = datetime(*(idle_time[:6])) idle_time = datetime(*(idle_time[:6]))
@ -732,8 +732,8 @@ class RosterTooltip(Gtk.Window, StatusTable):
show = helpers.get_uf_show(contact.show) show = helpers.get_uf_show(contact.show)
# Contact is Groupchat # Contact is Groupchat
if (self.account and if (self.account and
self.prim_contact.jid in gajim.gc_connected[self.account]): self.prim_contact.jid in app.gc_connected[self.account]):
if gajim.gc_connected[self.account][self.prim_contact.jid]: if app.gc_connected[self.account][self.prim_contact.jid]:
show = _('Connected') show = _('Connected')
else: else:
show = _('Disconnected') show = _('Disconnected')
@ -779,7 +779,7 @@ class FileTransfersTooltip(BaseTooltip):
type_ = _('?Noun:Download') type_ = _('?Noun:Download')
actor = _('Sender: ') actor = _('Sender: ')
sender = file_props.sender.split('/')[0] sender = file_props.sender.split('/')[0]
name = gajim.contacts.get_first_contact_from_jid( name = app.contacts.get_first_contact_from_jid(
file_props.tt_account, sender).get_shown_name() file_props.tt_account, sender).get_shown_name()
else: else:
type_ = _('?Noun:Upload') type_ = _('?Noun:Upload')
@ -848,17 +848,17 @@ def colorize_status(status):
formatted = "<span foreground='%s'>%s</span>" formatted = "<span foreground='%s'>%s</span>"
color = None color = None
if status.startswith(Q_("?user status:Available")): if status.startswith(Q_("?user status:Available")):
color = gajim.config.get('tooltip_status_online_color') color = app.config.get('tooltip_status_online_color')
elif status.startswith(_("Free for Chat")): elif status.startswith(_("Free for Chat")):
color = gajim.config.get('tooltip_status_free_for_chat_color') color = app.config.get('tooltip_status_free_for_chat_color')
elif status.startswith(_("Away")): elif status.startswith(_("Away")):
color = gajim.config.get('tooltip_status_away_color') color = app.config.get('tooltip_status_away_color')
elif status.startswith(_("Busy")): elif status.startswith(_("Busy")):
color = gajim.config.get('tooltip_status_busy_color') color = app.config.get('tooltip_status_busy_color')
elif status.startswith(_("Not Available")): elif status.startswith(_("Not Available")):
color = gajim.config.get('tooltip_status_na_color') color = app.config.get('tooltip_status_na_color')
elif status.startswith(_("Offline")): elif status.startswith(_("Offline")):
color = gajim.config.get('tooltip_status_offline_color') color = app.config.get('tooltip_status_offline_color')
if color: if color:
status = formatted % (color, status) status = formatted % (color, status)
return status return status

View File

@ -21,12 +21,12 @@
supported = False supported = False
from gajim.common import dbus_support from gajim.common import dbus_support
from gajim.common import gajim from gajim.common import app
def on_suspend(*args, **kwargs): def on_suspend(*args, **kwargs):
for name, conn in gajim.connections.items(): for name, conn in app.connections.items():
if gajim.account_is_connected(name): if app.account_is_connected(name):
conn.old_show = gajim.SHOW_LIST[conn.connected] conn.old_show = app.SHOW_LIST[conn.connected]
st = conn.status st = conn.status
conn.change_status('offline', _('Machine going to sleep')) conn.change_status('offline', _('Machine going to sleep'))
conn.status = st conn.status = st

View File

@ -43,7 +43,7 @@ import os
from gajim import gtkgui_helpers from gajim import gtkgui_helpers
from gajim.common import helpers from gajim.common import helpers
from gajim.common import gajim from gajim.common import app
from gajim.common import ged from gajim.common import ged
from gajim.common.i18n import Q_ from gajim.common.i18n import Q_
@ -96,7 +96,7 @@ class VcardWindow:
# Get real jid # Get real jid
if gc_contact: if gc_contact:
# Don't use real jid if room is (semi-)anonymous # Don't use real jid if room is (semi-)anonymous
gc_control = gajim.interface.msg_win_mgr.get_gc_control( gc_control = app.interface.msg_win_mgr.get_gc_control(
gc_contact.room_jid, account) gc_contact.room_jid, account)
if gc_contact.jid and not gc_control.is_anonymous: if gc_contact.jid and not gc_control.is_anonymous:
self.real_jid = gc_contact.jid self.real_jid = gc_contact.jid
@ -112,7 +112,7 @@ class VcardWindow:
self.real_resource = contact.resource self.real_resource = contact.resource
puny_jid = helpers.sanitize_filename(contact.jid) puny_jid = helpers.sanitize_filename(contact.jid)
local_avatar_basepath = os.path.join(gajim.AVATAR_PATH, puny_jid) + \ local_avatar_basepath = os.path.join(app.AVATAR_PATH, puny_jid) + \
'_local' '_local'
for extension in ('.png', '.jpeg'): for extension in ('.png', '.jpeg'):
local_avatar_path = local_avatar_basepath + extension local_avatar_path = local_avatar_basepath + extension
@ -132,15 +132,15 @@ class VcardWindow:
self.update_progressbar_timeout_id = GLib.timeout_add(self.update_intervall, self.update_progressbar_timeout_id = GLib.timeout_add(self.update_intervall,
self.update_progressbar) self.update_progressbar)
gajim.ged.register_event_handler('version-result-received', ged.GUI1, app.ged.register_event_handler('version-result-received', ged.GUI1,
self.set_os_info) self.set_os_info)
gajim.ged.register_event_handler('time-result-received', ged.GUI1, app.ged.register_event_handler('time-result-received', ged.GUI1,
self.set_entity_time) self.set_entity_time)
gajim.ged.register_event_handler('vcard-received', ged.GUI1, app.ged.register_event_handler('vcard-received', ged.GUI1,
self._nec_vcard_received) self._nec_vcard_received)
self.fill_jabber_page() self.fill_jabber_page()
annotations = gajim.connections[self.account].annotations annotations = app.connections[self.account].annotations
if self.contact.jid in annotations: if self.contact.jid in annotations:
buffer_ = self.xml.get_object('textview_annotation').get_buffer() buffer_ = self.xml.get_object('textview_annotation').get_buffer()
buffer_.set_text(annotations[self.contact.jid]) buffer_.set_text(annotations[self.contact.jid])
@ -169,19 +169,19 @@ class VcardWindow:
def on_vcard_information_window_destroy(self, widget): def on_vcard_information_window_destroy(self, widget):
if self.update_progressbar_timeout_id is not None: if self.update_progressbar_timeout_id is not None:
GLib.source_remove(self.update_progressbar_timeout_id) GLib.source_remove(self.update_progressbar_timeout_id)
del gajim.interface.instances[self.account]['infos'][self.contact.jid] del app.interface.instances[self.account]['infos'][self.contact.jid]
buffer_ = self.xml.get_object('textview_annotation').get_buffer() buffer_ = self.xml.get_object('textview_annotation').get_buffer()
annotation = buffer_.get_text(buffer_.get_start_iter(), annotation = buffer_.get_text(buffer_.get_start_iter(),
buffer_.get_end_iter(), True) buffer_.get_end_iter(), True)
connection = gajim.connections[self.account] connection = app.connections[self.account]
if annotation != connection.annotations.get(self.contact.jid, ''): if annotation != connection.annotations.get(self.contact.jid, ''):
connection.annotations[self.contact.jid] = annotation connection.annotations[self.contact.jid] = annotation
connection.store_annotations() connection.store_annotations()
gajim.ged.remove_event_handler('version-result-received', ged.GUI1, app.ged.remove_event_handler('version-result-received', ged.GUI1,
self.set_os_info) self.set_os_info)
gajim.ged.remove_event_handler('time-result-received', ged.GUI1, app.ged.remove_event_handler('time-result-received', ged.GUI1,
self.set_entity_time) self.set_entity_time)
gajim.ged.remove_event_handler('vcard-received', ged.GUI1, app.ged.remove_event_handler('vcard-received', ged.GUI1,
self._nec_vcard_received) self._nec_vcard_received)
def on_vcard_information_window_key_press_event(self, widget, event): def on_vcard_information_window_key_press_event(self, widget, event):
@ -298,7 +298,7 @@ class VcardWindow:
if self.gc_contact: if self.gc_contact:
if obj.fjid != self.contact.jid: if obj.fjid != self.contact.jid:
return return
elif gajim.get_jid_without_resource(obj.fjid) != self.contact.jid: elif app.get_jid_without_resource(obj.fjid) != self.contact.jid:
return return
i = 0 i = 0
client = '' client = ''
@ -337,7 +337,7 @@ class VcardWindow:
if self.gc_contact: if self.gc_contact:
if obj.fjid != self.contact.jid: if obj.fjid != self.contact.jid:
return return
elif gajim.get_jid_without_resource(obj.fjid) != self.contact.jid: elif app.get_jid_without_resource(obj.fjid) != self.contact.jid:
return return
i = 0 i = 0
time_s = '' time_s = ''
@ -361,7 +361,7 @@ class VcardWindow:
def fill_status_label(self): def fill_status_label(self):
if self.xml.get_object('information_notebook').get_n_pages() < 5: if self.xml.get_object('information_notebook').get_n_pages() < 5:
return return
contact_list = gajim.contacts.get_contacts(self.account, self.contact.jid) contact_list = app.contacts.get_contacts(self.account, self.contact.jid)
connected_contact_list = [] connected_contact_list = []
for c in contact_list: for c in contact_list:
if c.show not in ('offline', 'error'): if c.show not in ('offline', 'error'):
@ -442,11 +442,11 @@ class VcardWindow:
self.os_info_arrived = True self.os_info_arrived = True
else: # Request os info if contact is connected else: # Request os info if contact is connected
if self.gc_contact: if self.gc_contact:
j, r = gajim.get_room_and_nick_from_fjid(self.real_jid) j, r = app.get_room_and_nick_from_fjid(self.real_jid)
GLib.idle_add(gajim.connections[self.account].request_os_info, GLib.idle_add(app.connections[self.account].request_os_info,
j, r, self.contact.jid) j, r, self.contact.jid)
else: else:
GLib.idle_add(gajim.connections[self.account].request_os_info, GLib.idle_add(app.connections[self.account].request_os_info,
self.contact.jid, self.contact.resource) self.contact.jid, self.contact.resource)
# do not wait for entity_time if contact is not connected or has error # do not wait for entity_time if contact is not connected or has error
@ -456,18 +456,18 @@ class VcardWindow:
self.entity_time_arrived = True self.entity_time_arrived = True
else: # Request entity time if contact is connected else: # Request entity time if contact is connected
if self.gc_contact: if self.gc_contact:
j, r = gajim.get_room_and_nick_from_fjid(self.real_jid) j, r = app.get_room_and_nick_from_fjid(self.real_jid)
GLib.idle_add(gajim.connections[self.account].\ GLib.idle_add(app.connections[self.account].\
request_entity_time, j, r, self.contact.jid) request_entity_time, j, r, self.contact.jid)
else: else:
GLib.idle_add(gajim.connections[self.account].\ GLib.idle_add(app.connections[self.account].\
request_entity_time, self.contact.jid, self.contact.resource) request_entity_time, self.contact.jid, self.contact.resource)
self.os_info = {0: {'resource': self.real_resource, 'client': '', self.os_info = {0: {'resource': self.real_resource, 'client': '',
'os': ''}} 'os': ''}}
self.time_info = {0: {'resource': self.real_resource, 'time': ''}} self.time_info = {0: {'resource': self.real_resource, 'time': ''}}
i = 1 i = 1
contact_list = gajim.contacts.get_contacts(self.account, self.contact.jid) contact_list = app.contacts.get_contacts(self.account, self.contact.jid)
if contact_list: if contact_list:
for c in contact_list: for c in contact_list:
if c.resource != self.contact.resource: if c.resource != self.contact.resource:
@ -476,9 +476,9 @@ class VcardWindow:
uf_resources += '\n' + c.resource + \ uf_resources += '\n' + c.resource + \
_(' resource with priority ') + str(c.priority) _(' resource with priority ') + str(c.priority)
if c.show not in ('offline', 'error'): if c.show not in ('offline', 'error'):
GLib.idle_add(gajim.connections[self.account].\ GLib.idle_add(app.connections[self.account].\
request_os_info, c.jid, c.resource) request_os_info, c.jid, c.resource)
GLib.idle_add(gajim.connections[self.account].\ GLib.idle_add(app.connections[self.account].\
request_entity_time, c.jid, c.resource) request_entity_time, c.jid, c.resource)
self.os_info[i] = {'resource': c.resource, 'client': '', self.os_info[i] = {'resource': c.resource, 'client': '',
'os': ''} 'os': ''}
@ -494,10 +494,10 @@ class VcardWindow:
if self.gc_contact: if self.gc_contact:
# If we know the real jid, remove the resource from vcard request # If we know the real jid, remove the resource from vcard request
gajim.connections[self.account].request_vcard(self.real_jid_for_vcard, app.connections[self.account].request_vcard(self.real_jid_for_vcard,
self.gc_contact.get_full_jid()) self.gc_contact.get_full_jid())
else: else:
gajim.connections[self.account].request_vcard(self.contact.jid) app.connections[self.account].request_vcard(self.contact.jid)
def on_close_button_clicked(self, widget): def on_close_button_clicked(self, widget):
self.window.destroy() self.window.destroy()
@ -523,7 +523,7 @@ class ZeroconfVcardWindow:
self.window.show_all() self.window.show_all()
def on_zeroconf_information_window_destroy(self, widget): def on_zeroconf_information_window_destroy(self, widget):
del gajim.interface.instances[self.account]['infos'][self.contact.jid] del app.interface.instances[self.account]['infos'][self.contact.jid]
def on_zeroconf_information_window_key_press_event(self, widget, event): def on_zeroconf_information_window_key_press_event(self, widget, event):
if event.keyval == Gdk.KEY_Escape: if event.keyval == Gdk.KEY_Escape:
@ -561,7 +561,7 @@ class ZeroconfVcardWindow:
def fill_status_label(self): def fill_status_label(self):
if self.xml.get_object('information_notebook').get_n_pages() < 2: if self.xml.get_object('information_notebook').get_n_pages() < 2:
return return
contact_list = gajim.contacts.get_contacts(self.account, self.contact.jid) contact_list = app.contacts.get_contacts(self.account, self.contact.jid)
# stats holds show and status message # stats holds show and status message
stats = '' stats = ''
one = True # Are we adding the first line ? one = True # Are we adding the first line ?
@ -603,7 +603,7 @@ class ZeroconfVcardWindow:
self.fill_status_label() self.fill_status_label()
def fill_personal_page(self): def fill_personal_page(self):
contact = gajim.connections[gajim.ZEROCONF_ACC_NAME].roster.getItem(self.contact.jid) contact = app.connections[app.ZEROCONF_ACC_NAME].roster.getItem(self.contact.jid)
for key in ('1st', 'last', 'jid', 'email'): for key in ('1st', 'last', 'jid', 'email'):
if key not in contact['txt_dict']: if key not in contact['txt_dict']:
contact['txt_dict'][key] = '' contact['txt_dict'][key] = ''

View File

@ -675,7 +675,7 @@ if dbus_support.supported:
else: else:
gajim.interface.join_gc_room(account, room_jid, nick, password) gajim.interface.join_gc_room(account, room_jid, nick, password)
from gajim.common import gajim from gajim.common import app
from gajim.common import helpers from gajim.common import helpers
from time import time from time import time
from gajim.dialogs import AddNewContactWindow, NewChatDialog, JoinGroupchatWindow from gajim.dialogs import AddNewContactWindow, NewChatDialog, JoinGroupchatWindow

View File

@ -30,7 +30,7 @@ based on existing one.
from pprint import pformat from pprint import pformat
from gajim.common import helpers from gajim.common import helpers
from gajim.common import gajim from gajim.common import app
from gajim.plugins import GajimPlugin from gajim.plugins import GajimPlugin
from gajim.plugins.helpers import log_calls, log from gajim.plugins.helpers import log_calls, log
@ -128,10 +128,10 @@ class EnrichedChatMessageReceivedEvent(nec.NetworkIncomingEvent):
self.stanza = self.base_event.stanza self.stanza = self.base_event.stanza
self.conn = self.base_event.conn self.conn = self.base_event.conn
self.from_jid = helpers.get_full_jid_from_iq(self.stanza) self.from_jid = helpers.get_full_jid_from_iq(self.stanza)
self.from_jid_without_resource = gajim.get_jid_without_resource( self.from_jid_without_resource = app.get_jid_without_resource(
self.from_jid) self.from_jid)
self.account = self.conn.name self.account = self.conn.name
self.from_nickname = gajim.get_contact_name_from_jid( self.account, self.from_nickname = app.get_contact_name_from_jid( self.account,
self.from_jid_without_resource) self.from_jid_without_resource)
self.msg_text = ''.join(self.stanza.kids[0].data) self.msg_text = ''.join(self.stanza.kids[0].data)

View File

@ -27,7 +27,7 @@ Roster buttons plug-in.
import sys import sys
import gtk import gtk
from gajim.common import gajim from gajim.common import app
from gajim.plugins import GajimPlugin from gajim.plugins import GajimPlugin
from gajim.plugins.helpers import log, log_calls from gajim.plugins.helpers import log, log_calls
@ -38,8 +38,8 @@ class RosterButtonsPlugin(GajimPlugin):
def init(self): def init(self):
self.description = _('Adds quick action buttons to roster window.') self.description = _('Adds quick action buttons to roster window.')
self.GTK_BUILDER_FILE_PATH = self.local_file_path('roster_buttons.ui') self.GTK_BUILDER_FILE_PATH = self.local_file_path('roster_buttons.ui')
self.roster_vbox = gajim.interface.roster.xml.get_object('roster_vbox2') self.roster_vbox = app.interface.roster.xml.get_object('roster_vbox2')
self.show_offline_contacts_menuitem = gajim.interface.roster.xml.get_object('show_offline_contacts_menuitem') self.show_offline_contacts_menuitem = app.interface.roster.xml.get_object('show_offline_contacts_menuitem')
self.config_dialog = None self.config_dialog = None

View File

@ -8,17 +8,17 @@ from data import *
from mock import Mock, expectParams from mock import Mock, expectParams
from gajim_mocks import * from gajim_mocks import *
from gajim.common import gajim from gajim.common import app
from gajim.common import contacts as contacts_module from gajim.common import contacts as contacts_module
from gajim import roster_window from gajim import roster_window
gajim.get_jid_from_account = lambda acc: 'myjid@' + acc app.get_jid_from_account = lambda acc: 'myjid@' + acc
class TestRosterWindow(unittest.TestCase): class TestRosterWindow(unittest.TestCase):
def setUp(self): def setUp(self):
gajim.interface = MockInterface() app.interface = MockInterface()
self.C_NAME = roster_window.Column.NAME self.C_NAME = roster_window.Column.NAME
self.C_TYPE = roster_window.Column.TYPE self.C_TYPE = roster_window.Column.TYPE
@ -27,13 +27,13 @@ class TestRosterWindow(unittest.TestCase):
# Add after creating RosterWindow # Add after creating RosterWindow
# We want to test the filling explicitly # We want to test the filling explicitly
gajim.contacts = contacts_module.LegacyContactsAPI() app.contacts = contacts_module.LegacyContactsAPI()
gajim.connections = {} app.connections = {}
self.roster = roster_window.RosterWindow(gajim.app) self.roster = roster_window.RosterWindow(app.app)
for acc in contacts: for acc in contacts:
gajim.connections[acc] = MockConnection(acc) app.connections[acc] = MockConnection(acc)
gajim.contacts.add_account(acc) app.contacts.add_account(acc)
### Custom assertions ### Custom assertions
def assert_all_contacts_are_in_roster(self, acc): def assert_all_contacts_are_in_roster(self, acc):
@ -41,13 +41,13 @@ class TestRosterWindow(unittest.TestCase):
self.assert_contact_is_in_roster(jid, acc) self.assert_contact_is_in_roster(jid, acc)
def assert_contact_is_in_roster(self, jid, account): def assert_contact_is_in_roster(self, jid, account):
contacts = gajim.contacts.get_contacts(account, jid) contacts = app.contacts.get_contacts(account, jid)
# check for all resources # check for all resources
for contact in contacts: for contact in contacts:
iters = self.roster._get_contact_iter(jid, account, iters = self.roster._get_contact_iter(jid, account,
model=self.roster.model) model=self.roster.model)
if jid != gajim.get_jid_from_account(account): if jid != app.get_jid_from_account(account):
# We don't care for groups of SelfContact # We don't care for groups of SelfContact
self.assertTrue(len(iters) == len(contact.get_shown_groups()), self.assertTrue(len(iters) == len(contact.get_shown_groups()),
msg='Contact is not in all his groups') msg='Contact is not in all his groups')
@ -55,7 +55,7 @@ class TestRosterWindow(unittest.TestCase):
# Are we big brother? # Are we big brother?
bb_jid = None bb_jid = None
bb_account = None bb_account = None
family = gajim.contacts.get_metacontacts_family(account, jid) family = app.contacts.get_metacontacts_family(account, jid)
if family: if family:
nearby_family, bb_jid, bb_account = \ nearby_family, bb_jid, bb_account = \
self.roster._get_nearby_family_and_big_brother(family, account) self.roster._get_nearby_family_and_big_brother(family, account)
@ -94,7 +94,7 @@ class TestRosterWindow(unittest.TestCase):
self.assertTrue(p_model[self.C_TYPE] == 'contact', self.assertTrue(p_model[self.C_TYPE] == 'contact',
msg='Little Brother brother has no BigB') msg='Little Brother brother has no BigB')
else: else:
if jid == gajim.get_jid_from_account(account): if jid == app.get_jid_from_account(account):
self.assertTrue(p_model[self.C_TYPE] == 'account', self.assertTrue(p_model[self.C_TYPE] == 'account',
msg='SelfContact is not on top') msg='SelfContact is not on top')
else: else:
@ -118,7 +118,7 @@ class TestRosterWindow(unittest.TestCase):
self.assertEquals(acc_model[self.C_ACCOUNT], acc, self.assertEquals(acc_model[self.C_ACCOUNT], acc,
msg='Account not found') msg='Account not found')
self_jid = gajim.get_jid_from_account(acc) self_jid = app.get_jid_from_account(acc)
self.assertEquals(acc_model[self.C_JID], self_jid, self.assertEquals(acc_model[self.C_JID], self_jid,
msg='Account JID not found in account row') msg='Account JID not found in account row')
@ -132,7 +132,7 @@ class TestRosterWindow(unittest.TestCase):
self.roster.fill_contacts_and_groups_dicts(contacts[acc], acc) self.roster.fill_contacts_and_groups_dicts(contacts[acc], acc)
for jid in contacts[acc]: for jid in contacts[acc]:
instances = gajim.contacts.get_contacts(acc, jid) instances = app.contacts.get_contacts(acc, jid)
# Created a contact for each single jid? # Created a contact for each single jid?
self.assertTrue(len(instances) == 1) self.assertTrue(len(instances) == 1)
@ -160,7 +160,7 @@ class TestRosterWindow(unittest.TestCase):
class TestRosterWindowRegrouped(TestRosterWindow): class TestRosterWindowRegrouped(TestRosterWindow):
def setUp(self): def setUp(self):
gajim.config.set('mergeaccounts', True) app.config.set('mergeaccounts', True)
TestRosterWindow.setUp(self) TestRosterWindow.setUp(self)
def test_toggle_regroup(self): def test_toggle_regroup(self):
@ -180,19 +180,19 @@ class TestRosterWindowMetaContacts(TestRosterWindowRegrouped):
for brother in data: for brother in data:
acc = brother['account'] acc = brother['account']
jid = brother['jid'] jid = brother['jid']
gajim.contacts.add_metacontact(t_acc, t_jid, acc, jid) app.contacts.add_metacontact(t_acc, t_jid, acc, jid)
self.roster.setup_and_draw_roster() self.roster.setup_and_draw_roster()
def test_connect_new_metacontact(self): def test_connect_new_metacontact(self):
self.test_fill_roster_model() self.test_fill_roster_model()
jid = 'coolstuff@gajim.org' jid = 'coolstuff@gajim.org'
contact = gajim.contacts.create_contact(jid, account1) contact = app.contacts.create_contact(jid, account1)
gajim.contacts.add_contact(account1, contact) app.contacts.add_contact(account1, contact)
self.roster.add_contact(jid, account1) self.roster.add_contact(jid, account1)
self.roster.chg_contact_status(contact, 'offline', '', account1) self.roster.chg_contact_status(contact, 'offline', '', account1)
gajim.contacts.add_metacontact(account1, 'samejid@gajim.org', app.contacts.add_metacontact(account1, 'samejid@gajim.org',
account1, jid) account1, jid)
self.roster.chg_contact_status(contact, 'online', '', account1) self.roster.chg_contact_status(contact, 'online', '', account1)

View File

@ -38,17 +38,17 @@ def setup_env():
import gajim.common.configpaths import gajim.common.configpaths
gajim.common.configpaths.gajimpaths.init(configdir) gajim.common.configpaths.gajimpaths.init(configdir)
# for some reason gajim.common.gajim needs to be imported before xmpppy? # for some reason gajim.common.app needs to be imported before xmpppy?
from gajim.common import gajim from gajim.common import app
import logging import logging
logging.basicConfig() logging.basicConfig()
gajim.DATA_DIR = gajim_root + '/data' app.DATA_DIR = gajim_root + '/data'
gajim.use_x = use_x app.use_x = use_x
if use_x: if use_x:
from gajim import gtkgui_helpers from gajim import gtkgui_helpers
gtkgui_helpers.GUI_DIR = gajim_root + '/data/gui' gtkgui_helpers.GUI_DIR = gajim_root + '/data/gui'
from gajim.gajim import GajimApplication from gajim.gajim import GajimApplication
gajim.app = GajimApplication() app.app = GajimApplication()

View File

@ -3,7 +3,7 @@ Module with dummy classes for Gajim specific unit testing
''' '''
from mock import Mock from mock import Mock
from gajim.common import gajim from gajim.common import app
from gajim.common import ged from gajim.common import ged
from gajim.common.connection_handlers import ConnectionHandlers from gajim.common.connection_handlers import ConnectionHandlers
@ -26,26 +26,26 @@ class MockConnection(Mock, ConnectionHandlers):
self.nested_group_delimiter = '::' self.nested_group_delimiter = '::'
self.server_resource = 'Gajim' self.server_resource = 'Gajim'
gajim.interface.instances[account] = {'infos': {}, 'disco': {}, app.interface.instances[account] = {'infos': {}, 'disco': {},
'gc_config': {}, 'search': {}, 'sub_request': {}} 'gc_config': {}, 'search': {}, 'sub_request': {}}
gajim.interface.minimized_controls[account] = {} app.interface.minimized_controls[account] = {}
gajim.contacts.add_account(account) app.contacts.add_account(account)
gajim.groups[account] = {} app.groups[account] = {}
gajim.gc_connected[account] = {} app.gc_connected[account] = {}
gajim.automatic_rooms[account] = {} app.automatic_rooms[account] = {}
gajim.newly_added[account] = [] app.newly_added[account] = []
gajim.to_be_removed[account] = [] app.to_be_removed[account] = []
gajim.nicks[account] = gajim.config.get_per('accounts', account, 'name') app.nicks[account] = app.config.get_per('accounts', account, 'name')
gajim.block_signed_in_notifications[account] = True app.block_signed_in_notifications[account] = True
gajim.sleeper_state[account] = 0 app.sleeper_state[account] = 0
gajim.encrypted_chats[account] = [] app.encrypted_chats[account] = []
gajim.last_message_time[account] = {} app.last_message_time[account] = {}
gajim.status_before_autoaway[account] = '' app.status_before_autoaway[account] = ''
gajim.transport_avatar[account] = {} app.transport_avatar[account] = {}
gajim.gajim_optional_features[account] = [] app.gajim_optional_features[account] = []
gajim.caps_hash[account] = '' app.caps_hash[account] = ''
gajim.connections[account] = self app.connections[account] = self
def request_vcard(self, jid): def request_vcard(self, jid):
pass pass
@ -103,19 +103,19 @@ class MockChatControl(Mock):
class MockInterface(Mock): class MockInterface(Mock):
def __init__(self, *args): def __init__(self, *args):
Mock.__init__(self, *args) Mock.__init__(self, *args)
gajim.interface = self app.interface = self
self.msg_win_mgr = Mock() self.msg_win_mgr = Mock()
self.roster = Mock() self.roster = Mock()
gajim.ged = ged.GlobalEventsDispatcher() app.ged = ged.GlobalEventsDispatcher()
import plugins import plugins
gajim.plugin_manager = plugins.PluginManager() app.plugin_manager = plugins.PluginManager()
self.remote_ctrl = None self.remote_ctrl = None
self.instances = {} self.instances = {}
self.minimized_controls = {} self.minimized_controls = {}
self.status_sent_to_users = Mock() self.status_sent_to_users = Mock()
if gajim.use_x: if app.use_x:
self.jabber_state_images = {'16': {}, '24': {}, '32': {}, self.jabber_state_images = {'16': {}, '24': {}, '32': {},
'opened': {}, 'closed': {}} 'opened': {}, 'closed': {}}

View File

@ -1,6 +1,6 @@
# mock notify module # mock notify module
from gajim.common import gajim from gajim.common import app
from gajim.common import ged from gajim.common import ged
notifications = [] notifications = []
@ -13,11 +13,11 @@ class Notification:
def clean(self): def clean(self):
global notifications global notifications
notifications = [] notifications = []
gajim.ged.remove_event_handler('notification', ged.GUI2, app.ged.remove_event_handler('notification', ged.GUI2,
self._nec_notification) self._nec_notification)
def __init__(self): def __init__(self):
gajim.ged.register_event_handler('notification', ged.GUI2, app.ged.register_event_handler('notification', ged.GUI2,
self._nec_notification) self._nec_notification)

View File

@ -52,11 +52,11 @@ os.mkdir(configdir)
import gajim.common.configpaths import gajim.common.configpaths
gajim.common.configpaths.gajimpaths.init(configdir) gajim.common.configpaths.gajimpaths.init(configdir)
# for some reason common.gajim needs to be imported before xmpppy? # for some reason common.app needs to be imported before xmpppy?
from gajim.common import gajim from gajim.common import app
from gajim.common import xmpp from gajim.common import xmpp
gajim.DATA_DIR = gajim_root + '/data' app.DATA_DIR = gajim_root + '/data'
from common.stanza_session import StanzaSession from common.stanza_session import StanzaSession

View File

@ -9,10 +9,10 @@ lib.setup_env()
from gajim.common import logging_helpers from gajim.common import logging_helpers
logging_helpers.set_quiet() logging_helpers.set_quiet()
from gajim.common import gajim from gajim.common import app
from gajim_mocks import MockLogger from gajim_mocks import MockLogger
gajim.logger = MockLogger() app.logger = MockLogger()
from gajim.gui_interface import Interface from gajim.gui_interface import Interface
@ -20,7 +20,7 @@ class TestInterface(unittest.TestCase):
def test_instantiation(self): def test_instantiation(self):
''' Test that we can proper initialize and do not fail on globals ''' ''' Test that we can proper initialize and do not fail on globals '''
gajim.app.run() app.app.run()
def test_links_regexp_entire(self): def test_links_regexp_entire(self):
sut = Interface() sut = Interface()

View File

@ -6,7 +6,7 @@ import unittest
import lib import lib
lib.setup_env() lib.setup_env()
from gajim.common import gajim from gajim.common import app
from gajim.common import nec from gajim.common import nec
from gajim.common import ged from gajim.common import ged
from gajim.common import caps_cache from gajim.common import caps_cache
@ -45,8 +45,8 @@ class TestableConnectionCaps(ConnectionHandlers, caps.ConnectionCaps):
class TestConnectionCaps(unittest.TestCase): class TestConnectionCaps(unittest.TestCase):
def setUp(self): def setUp(self):
gajim.nec = nec.NetworkEventsController() app.nec = nec.NetworkEventsController()
gajim.ged.register_event_handler('caps-presence-received', ged.GUI2, app.ged.register_event_handler('caps-presence-received', ged.GUI2,
self._nec_caps_presence_received) self._nec_caps_presence_received)
def _nec_caps_presence_received(self, obj): def _nec_caps_presence_received(self, obj):

View File

@ -8,7 +8,7 @@ lib.setup_env()
import notify import notify
from gajim.common import gajim from gajim.common import app
from gajim.common import nec from gajim.common import nec
from gajim.common import ged from gajim.common import ged
from gajim.common.nec import NetworkEvent from gajim.common.nec import NetworkEvent
@ -23,7 +23,7 @@ from gajim.roster_window import RosterWindow
from mock import Mock, expectParams from mock import Mock, expectParams
from gajim_mocks import * from gajim_mocks import *
gajim.interface = MockInterface() app.interface = MockInterface()
# name to use for the test account # name to use for the test account
@ -88,19 +88,19 @@ class TestChatControlSession(unittest.TestCase):
@classmethod @classmethod
def setUpClass(cls): def setUpClass(cls):
gajim.nec = nec.NetworkEventsController() app.nec = nec.NetworkEventsController()
cls.conn = MockConnection(account_name, {'send_stanza': None}) cls.conn = MockConnection(account_name, {'send_stanza': None})
gajim.logger = MockLogger() app.logger = MockLogger()
gajim.default_session_type = ChatControlSession app.default_session_type = ChatControlSession
def setUp(self): def setUp(self):
gajim.notification = notify.Notification() app.notification = notify.Notification()
# no notifications have been sent # no notifications have been sent
self.assertEqual(0, len(notify.notifications)) self.assertEqual(0, len(notify.notifications))
def tearDown(self): def tearDown(self):
gajim.notification.clean() app.notification.clean()
def receive_chat_msg(self, jid, msgtxt): def receive_chat_msg(self, jid, msgtxt):
'''simulate receiving a chat message from jid''' '''simulate receiving a chat message from jid'''
@ -153,12 +153,12 @@ class TestChatControlSession(unittest.TestCase):
sess = self.conn.sessions[jid]['123'] sess = self.conn.sessions[jid]['123']
# message was logged # message was logged
calls = gajim.logger.mockGetNamedCalls('insert_into_logs') calls = app.logger.mockGetNamedCalls('insert_into_logs')
self.assertEqual(1, len(calls)) self.assertEqual(1, len(calls))
# no ChatControl was open and autopopup was off # no ChatControl was open and autopopup was off
# so the message goes into the event queue # so the message goes into the event queue
self.assertEqual(1, len(gajim.events.get_events(account_name))) self.assertEqual(1, len(app.events.get_events(account_name)))
self.assert_first_message_notification() self.assert_first_message_notification()
@ -171,7 +171,7 @@ class TestChatControlSession(unittest.TestCase):
jid = 'bct@necronomicorp.com' jid = 'bct@necronomicorp.com'
fjid = 'bct@necronomicorp.com/Gajim' fjid = 'bct@necronomicorp.com/Gajim'
msgtxt = 'testing two' msgtxt = 'testing two'
roster = RosterWindow(gajim.app) roster = RosterWindow(app.app)
sess = self.conn.sessions[jid]['123'] sess = self.conn.sessions[jid]['123']
sess.control = MockChatControl(fjid, account_name) sess.control = MockChatControl(fjid, account_name)
@ -179,11 +179,11 @@ class TestChatControlSession(unittest.TestCase):
self.receive_chat_msg(fjid, msgtxt) self.receive_chat_msg(fjid, msgtxt)
# message was logged # message was logged
calls = gajim.logger.mockGetNamedCalls('insert_into_logs') calls = app.logger.mockGetNamedCalls('insert_into_logs')
self.assertEqual(2, len(calls)) self.assertEqual(2, len(calls))
# the message does not go into the event queue # the message does not go into the event queue
self.assertEqual(1, len(gajim.events.get_events(account_name))) self.assertEqual(1, len(app.events.get_events(account_name)))
self.assert_not_first_message_notification() self.assert_not_first_message_notification()