merge local diff
This commit is contained in:
commit
18fc83c1e8
|
@ -35,7 +35,9 @@ class AtomWindow:
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def newAtomEntry(cls, entry):
|
def newAtomEntry(cls, entry):
|
||||||
''' Queue new entry, open window if there's no one opened. '''
|
"""
|
||||||
|
Queue new entry, open window if there's no one opened
|
||||||
|
"""
|
||||||
cls.entries.append(entry)
|
cls.entries.append(entry)
|
||||||
|
|
||||||
if cls.window is None:
|
if cls.window is None:
|
||||||
|
@ -48,7 +50,9 @@ class AtomWindow:
|
||||||
cls.window = None
|
cls.window = None
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
''' Create new window... only if we have anything to show. '''
|
"""
|
||||||
|
Create new window... only if we have anything to show
|
||||||
|
"""
|
||||||
assert len(self.__class__.entries)>0
|
assert len(self.__class__.entries)>0
|
||||||
|
|
||||||
self.entry = None # the entry actually displayed
|
self.entry = None # the entry actually displayed
|
||||||
|
@ -69,7 +73,9 @@ class AtomWindow:
|
||||||
self.feed_title_eventbox.add_events(gtk.gdk.BUTTON_PRESS_MASK)
|
self.feed_title_eventbox.add_events(gtk.gdk.BUTTON_PRESS_MASK)
|
||||||
|
|
||||||
def displayNextEntry(self):
|
def displayNextEntry(self):
|
||||||
''' Get next entry from the queue and display it in the window. '''
|
"""
|
||||||
|
Get next entry from the queue and display it in the window
|
||||||
|
"""
|
||||||
assert len(self.__class__.entries)>0
|
assert len(self.__class__.entries)>0
|
||||||
|
|
||||||
newentry = self.__class__.entries.pop(0)
|
newentry = self.__class__.entries.pop(0)
|
||||||
|
@ -103,8 +109,10 @@ class AtomWindow:
|
||||||
self.entry = newentry
|
self.entry = newentry
|
||||||
|
|
||||||
def updateCounter(self):
|
def updateCounter(self):
|
||||||
''' We display number of events on the top of window, sometimes it needs to be
|
"""
|
||||||
changed...'''
|
Display number of events on the top of window, sometimes it needs to be
|
||||||
|
changed
|
||||||
|
"""
|
||||||
count = len(self.__class__.entries)
|
count = len(self.__class__.entries)
|
||||||
if count>0:
|
if count>0:
|
||||||
self.new_entry_label.set_text(i18n.ngettext(
|
self.new_entry_label.set_text(i18n.ngettext(
|
||||||
|
|
136
src/config.py
136
src/config.py
|
@ -63,17 +63,23 @@ from common.exceptions import GajimGeneralException
|
||||||
|
|
||||||
#---------- PreferencesWindow class -------------#
|
#---------- PreferencesWindow class -------------#
|
||||||
class PreferencesWindow:
|
class PreferencesWindow:
|
||||||
'''Class for Preferences window'''
|
"""
|
||||||
|
Class for Preferences window
|
||||||
|
"""
|
||||||
|
|
||||||
def on_preferences_window_destroy(self, widget):
|
def on_preferences_window_destroy(self, widget):
|
||||||
'''close window'''
|
"""
|
||||||
|
Close window
|
||||||
|
"""
|
||||||
del gajim.interface.instances['preferences']
|
del gajim.interface.instances['preferences']
|
||||||
|
|
||||||
def on_close_button_clicked(self, widget):
|
def on_close_button_clicked(self, widget):
|
||||||
self.window.destroy()
|
self.window.destroy()
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
'''Initialize Preferences window'''
|
"""
|
||||||
|
Initialize Preferences window
|
||||||
|
"""
|
||||||
self.xml = gtkgui_helpers.get_glade('preferences_window.glade')
|
self.xml = gtkgui_helpers.get_glade('preferences_window.glade')
|
||||||
self.window = self.xml.get_widget('preferences_window')
|
self.window = self.xml.get_widget('preferences_window')
|
||||||
self.window.set_transient_for(gajim.interface.roster.window)
|
self.window.set_transient_for(gajim.interface.roster.window)
|
||||||
|
@ -495,8 +501,10 @@ class PreferencesWindow:
|
||||||
self.window.hide()
|
self.window.hide()
|
||||||
|
|
||||||
def get_per_account_option(self, opt):
|
def get_per_account_option(self, opt):
|
||||||
'''Return the value of the option opt if it's the same in all accounts
|
"""
|
||||||
else returns "mixed"'''
|
Return the value of the option opt if it's the same in all accounts else
|
||||||
|
returns "mixed"
|
||||||
|
"""
|
||||||
if len(gajim.connections) == 0:
|
if len(gajim.connections) == 0:
|
||||||
# a non existant key return default value
|
# a non existant key return default value
|
||||||
return gajim.config.get_per('accounts', '__default__', opt)
|
return gajim.config.get_per('accounts', '__default__', opt)
|
||||||
|
@ -585,7 +593,9 @@ class PreferencesWindow:
|
||||||
self.toggle_emoticons()
|
self.toggle_emoticons()
|
||||||
|
|
||||||
def toggle_emoticons(self):
|
def toggle_emoticons(self):
|
||||||
'''Update emoticons state in Opened Chat Windows'''
|
"""
|
||||||
|
Update emoticons state in Opened Chat Windows
|
||||||
|
"""
|
||||||
for win in gajim.interface.msg_win_mgr.windows():
|
for win in gajim.interface.msg_win_mgr.windows():
|
||||||
win.toggle_emoticons()
|
win.toggle_emoticons()
|
||||||
|
|
||||||
|
@ -779,7 +789,9 @@ class PreferencesWindow:
|
||||||
self.sounds_preferences.window.present()
|
self.sounds_preferences.window.present()
|
||||||
|
|
||||||
def update_text_tags(self):
|
def update_text_tags(self):
|
||||||
'''Update color tags in Opened Chat Windows'''
|
"""
|
||||||
|
Update color tags in opened chat windows
|
||||||
|
"""
|
||||||
for win in gajim.interface.msg_win_mgr.windows():
|
for win in gajim.interface.msg_win_mgr.windows():
|
||||||
win.update_tags()
|
win.update_tags()
|
||||||
|
|
||||||
|
@ -800,7 +812,9 @@ class PreferencesWindow:
|
||||||
gajim.interface.save_config()
|
gajim.interface.save_config()
|
||||||
|
|
||||||
def update_text_font(self):
|
def update_text_font(self):
|
||||||
'''Update text font in Opened Chat Windows'''
|
"""
|
||||||
|
Update text font in opened chat windows
|
||||||
|
"""
|
||||||
for win in gajim.interface.msg_win_mgr.windows():
|
for win in gajim.interface.msg_win_mgr.windows():
|
||||||
win.update_font()
|
win.update_font()
|
||||||
|
|
||||||
|
@ -879,7 +893,9 @@ class PreferencesWindow:
|
||||||
gajim.interface.save_config()
|
gajim.interface.save_config()
|
||||||
|
|
||||||
def _set_color(self, state, widget_name, option):
|
def _set_color(self, state, widget_name, option):
|
||||||
''' set color value in prefs and update the UI '''
|
"""
|
||||||
|
Set color value in prefs and update the UI
|
||||||
|
"""
|
||||||
if state:
|
if state:
|
||||||
color = self.xml.get_widget(widget_name).get_color()
|
color = self.xml.get_widget(widget_name).get_color()
|
||||||
color_string = gtkgui_helpers.make_color_string(color)
|
color_string = gtkgui_helpers.make_color_string(color)
|
||||||
|
@ -1346,7 +1362,10 @@ class ManageProxiesWindow:
|
||||||
|
|
||||||
#---------- AccountsWindow class -------------#
|
#---------- AccountsWindow class -------------#
|
||||||
class AccountsWindow:
|
class AccountsWindow:
|
||||||
'''Class for accounts window: list of accounts'''
|
"""
|
||||||
|
Class for accounts window: list of accounts
|
||||||
|
"""
|
||||||
|
|
||||||
def on_accounts_window_destroy(self, widget):
|
def on_accounts_window_destroy(self, widget):
|
||||||
del gajim.interface.instances['accounts']
|
del gajim.interface.instances['accounts']
|
||||||
|
|
||||||
|
@ -1414,7 +1433,9 @@ class AccountsWindow:
|
||||||
iter_ = model.iter_next(iter_)
|
iter_ = model.iter_next(iter_)
|
||||||
|
|
||||||
def init_accounts(self):
|
def init_accounts(self):
|
||||||
'''initialize listStore with existing accounts'''
|
"""
|
||||||
|
Initialize listStore with existing accounts
|
||||||
|
"""
|
||||||
self.remove_button.set_sensitive(False)
|
self.remove_button.set_sensitive(False)
|
||||||
self.rename_button.set_sensitive(False)
|
self.rename_button.set_sensitive(False)
|
||||||
self.current_account = None
|
self.current_account = None
|
||||||
|
@ -1440,7 +1461,9 @@ class AccountsWindow:
|
||||||
elif self.need_relogin and self.current_account and \
|
elif self.need_relogin and self.current_account and \
|
||||||
gajim.connections[self.current_account].connected > 0:
|
gajim.connections[self.current_account].connected > 0:
|
||||||
def login(account, show_before, status_before):
|
def login(account, show_before, status_before):
|
||||||
''' login with previous status'''
|
"""
|
||||||
|
Login with previous status
|
||||||
|
"""
|
||||||
# first make sure connection is really closed,
|
# first make sure connection is really closed,
|
||||||
# 0.5 may not be enough
|
# 0.5 may not be enough
|
||||||
gajim.connections[account].disconnect(True)
|
gajim.connections[account].disconnect(True)
|
||||||
|
@ -1473,7 +1496,9 @@ class AccountsWindow:
|
||||||
self.resend_presence = False
|
self.resend_presence = False
|
||||||
|
|
||||||
def on_accounts_treeview_cursor_changed(self, widget):
|
def on_accounts_treeview_cursor_changed(self, widget):
|
||||||
'''Activate modify buttons when a row is selected, update accounts info'''
|
"""
|
||||||
|
Activate modify buttons when a row is selected, update accounts info
|
||||||
|
"""
|
||||||
sel = self.accounts_treeview.get_selection()
|
sel = self.accounts_treeview.get_selection()
|
||||||
(model, iter_) = sel.get_selected()
|
(model, iter_) = sel.get_selected()
|
||||||
if iter_:
|
if iter_:
|
||||||
|
@ -1739,7 +1764,9 @@ class AccountsWindow:
|
||||||
gajim.config.get_per('accounts', account, 'use_ft_proxies'))
|
gajim.config.get_per('accounts', account, 'use_ft_proxies'))
|
||||||
|
|
||||||
def on_add_button_clicked(self, widget):
|
def on_add_button_clicked(self, widget):
|
||||||
'''When add button is clicked: open an account information window'''
|
"""
|
||||||
|
When add button is clicked: open an account information window
|
||||||
|
"""
|
||||||
if 'account_creation_wizard' in gajim.interface.instances:
|
if 'account_creation_wizard' in gajim.interface.instances:
|
||||||
gajim.interface.instances['account_creation_wizard'].window.present()
|
gajim.interface.instances['account_creation_wizard'].window.present()
|
||||||
else:
|
else:
|
||||||
|
@ -1747,8 +1774,10 @@ class AccountsWindow:
|
||||||
AccountCreationWizardWindow()
|
AccountCreationWizardWindow()
|
||||||
|
|
||||||
def on_remove_button_clicked(self, widget):
|
def on_remove_button_clicked(self, widget):
|
||||||
'''When delete button is clicked:
|
"""
|
||||||
Remove an account from the listStore and from the config file'''
|
When delete button is clicked: Remove an account from the listStore and
|
||||||
|
from the config file
|
||||||
|
"""
|
||||||
if not self.current_account:
|
if not self.current_account:
|
||||||
return
|
return
|
||||||
account = self.current_account
|
account = self.current_account
|
||||||
|
@ -2409,8 +2438,11 @@ class AccountsWindow:
|
||||||
'zeroconf_email', email)
|
'zeroconf_email', email)
|
||||||
|
|
||||||
class FakeDataForm(gtk.Table, object):
|
class FakeDataForm(gtk.Table, object):
|
||||||
'''Class for forms that are in XML format <entry1>value1</entry1>
|
"""
|
||||||
infos in a table {entry1: value1, }'''
|
Class for forms that are in XML format <entry1>value1</entry1> infos in a
|
||||||
|
table {entry1: value1}
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self, infos):
|
def __init__(self, infos):
|
||||||
gtk.Table.__init__(self)
|
gtk.Table.__init__(self)
|
||||||
self.infos = infos
|
self.infos = infos
|
||||||
|
@ -2418,7 +2450,9 @@ class FakeDataForm(gtk.Table, object):
|
||||||
self._draw_table()
|
self._draw_table()
|
||||||
|
|
||||||
def _draw_table(self):
|
def _draw_table(self):
|
||||||
'''Draw the table'''
|
"""
|
||||||
|
Draw the table
|
||||||
|
"""
|
||||||
nbrow = 0
|
nbrow = 0
|
||||||
if 'instructions' in self.infos:
|
if 'instructions' in self.infos:
|
||||||
nbrow = 1
|
nbrow = 1
|
||||||
|
@ -2452,9 +2486,11 @@ class FakeDataForm(gtk.Table, object):
|
||||||
return self.infos
|
return self.infos
|
||||||
|
|
||||||
class ServiceRegistrationWindow:
|
class ServiceRegistrationWindow:
|
||||||
'''Class for Service registration window:
|
"""
|
||||||
Window that appears when we want to subscribe to a service
|
Class for Service registration window. Window that appears when we want to
|
||||||
if is_form we use dataforms_widget else we use service_registarion_window'''
|
subscribe to a service if is_form we use dataforms_widget else we use
|
||||||
|
service_registarion_window
|
||||||
|
"""
|
||||||
def __init__(self, service, infos, account, is_form):
|
def __init__(self, service, infos, account, is_form):
|
||||||
self.service = service
|
self.service = service
|
||||||
self.account = account
|
self.account = account
|
||||||
|
@ -2501,7 +2537,7 @@ class ServiceRegistrationWindow:
|
||||||
self.window.destroy()
|
self.window.destroy()
|
||||||
|
|
||||||
class GroupchatConfigWindow:
|
class GroupchatConfigWindow:
|
||||||
'''GroupchatConfigWindow class'''
|
|
||||||
def __init__(self, account, room_jid, form = None):
|
def __init__(self, account, room_jid, form = None):
|
||||||
self.account = account
|
self.account = account
|
||||||
self.room_jid = room_jid
|
self.room_jid = room_jid
|
||||||
|
@ -2654,7 +2690,9 @@ class GroupchatConfigWindow:
|
||||||
self.remove_button[affiliation].set_sensitive(True)
|
self.remove_button[affiliation].set_sensitive(True)
|
||||||
|
|
||||||
def affiliation_list_received(self, users_dict):
|
def affiliation_list_received(self, users_dict):
|
||||||
'''Fill the affiliation treeview'''
|
"""
|
||||||
|
Fill the affiliation treeview
|
||||||
|
"""
|
||||||
for jid in users_dict:
|
for jid in users_dict:
|
||||||
affiliation = users_dict[jid]['affiliation']
|
affiliation = users_dict[jid]['affiliation']
|
||||||
if affiliation not in self.affiliation_labels.keys():
|
if affiliation not in self.affiliation_labels.keys():
|
||||||
|
@ -2703,8 +2741,10 @@ class GroupchatConfigWindow:
|
||||||
|
|
||||||
#---------- RemoveAccountWindow class -------------#
|
#---------- RemoveAccountWindow class -------------#
|
||||||
class RemoveAccountWindow:
|
class RemoveAccountWindow:
|
||||||
'''ask for removing from gajim only or from gajim and server too
|
"""
|
||||||
and do removing of the account given'''
|
Ask for removing from gajim only or from gajim and server too and do
|
||||||
|
removing of the account given
|
||||||
|
"""
|
||||||
|
|
||||||
def on_remove_account_window_destroy(self, widget):
|
def on_remove_account_window_destroy(self, widget):
|
||||||
if self.account in gajim.interface.instances:
|
if self.account in gajim.interface.instances:
|
||||||
|
@ -2904,7 +2944,9 @@ class ManageBookmarksWindow:
|
||||||
del gajim.interface.instances['manage_bookmarks']
|
del gajim.interface.instances['manage_bookmarks']
|
||||||
|
|
||||||
def on_add_bookmark_button_clicked(self, widget):
|
def on_add_bookmark_button_clicked(self, widget):
|
||||||
'''Add a new bookmark.'''
|
"""
|
||||||
|
Add a new bookmark
|
||||||
|
"""
|
||||||
# Get the account that is currently used
|
# Get the account that is currently used
|
||||||
# (the parent of the currently selected item)
|
# (the parent of the currently selected item)
|
||||||
(model, iter_) = self.selection.get_selected()
|
(model, iter_) = self.selection.get_selected()
|
||||||
|
@ -2929,9 +2971,9 @@ class ManageBookmarksWindow:
|
||||||
self.view.set_cursor(model.get_path(iter_))
|
self.view.set_cursor(model.get_path(iter_))
|
||||||
|
|
||||||
def on_remove_bookmark_button_clicked(self, widget):
|
def on_remove_bookmark_button_clicked(self, widget):
|
||||||
'''
|
"""
|
||||||
Remove selected bookmark.
|
Remove selected bookmark
|
||||||
'''
|
"""
|
||||||
(model, iter_) = self.selection.get_selected()
|
(model, iter_) = self.selection.get_selected()
|
||||||
if not iter_: # Nothing selected
|
if not iter_: # Nothing selected
|
||||||
return
|
return
|
||||||
|
@ -2944,9 +2986,9 @@ class ManageBookmarksWindow:
|
||||||
self.clear_fields()
|
self.clear_fields()
|
||||||
|
|
||||||
def check_valid_bookmark(self):
|
def check_valid_bookmark(self):
|
||||||
'''
|
"""
|
||||||
Check if all neccessary fields are entered correctly.
|
Check if all neccessary fields are entered correctly
|
||||||
'''
|
"""
|
||||||
(model, iter_) = self.selection.get_selected()
|
(model, iter_) = self.selection.get_selected()
|
||||||
|
|
||||||
if not model.iter_parent(iter_):
|
if not model.iter_parent(iter_):
|
||||||
|
@ -2963,10 +3005,10 @@ class ManageBookmarksWindow:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def on_ok_button_clicked(self, widget):
|
def on_ok_button_clicked(self, widget):
|
||||||
'''
|
"""
|
||||||
Parse the treestore data into our new bookmarks array,
|
Parse the treestore data into our new bookmarks array, then send the new
|
||||||
then send the new bookmarks to the server.
|
bookmarks to the server.
|
||||||
'''
|
"""
|
||||||
(model, iter_) = self.selection.get_selected()
|
(model, iter_) = self.selection.get_selected()
|
||||||
if iter_ and model.iter_parent(iter_):
|
if iter_ and model.iter_parent(iter_):
|
||||||
#bookmark selected, check it
|
#bookmark selected, check it
|
||||||
|
@ -2997,9 +3039,9 @@ class ManageBookmarksWindow:
|
||||||
self.window.destroy()
|
self.window.destroy()
|
||||||
|
|
||||||
def bookmark_selected(self, selection):
|
def bookmark_selected(self, selection):
|
||||||
'''
|
"""
|
||||||
Fill in the bookmark's data into the fields.
|
Fill in the bookmark's data into the fields.
|
||||||
'''
|
"""
|
||||||
(model, iter_) = selection.get_selected()
|
(model, iter_) = selection.get_selected()
|
||||||
|
|
||||||
if not iter_:
|
if not iter_:
|
||||||
|
@ -3445,7 +3487,9 @@ class AccountCreationWizardWindow:
|
||||||
|
|
||||||
def new_acc_connected(self, form, is_form, ssl_msg, ssl_err, ssl_cert,
|
def new_acc_connected(self, form, is_form, ssl_msg, ssl_err, ssl_cert,
|
||||||
ssl_fingerprint):
|
ssl_fingerprint):
|
||||||
'''connection to server succeded, present the form to the user.'''
|
"""
|
||||||
|
Connection to server succeded, present the form to the user
|
||||||
|
"""
|
||||||
if self.update_progressbar_timeout_id is not None:
|
if self.update_progressbar_timeout_id is not None:
|
||||||
gobject.source_remove(self.update_progressbar_timeout_id)
|
gobject.source_remove(self.update_progressbar_timeout_id)
|
||||||
self.back_button.show()
|
self.back_button.show()
|
||||||
|
@ -3479,7 +3523,9 @@ class AccountCreationWizardWindow:
|
||||||
self.notebook.set_current_page(4) # show form page
|
self.notebook.set_current_page(4) # show form page
|
||||||
|
|
||||||
def new_acc_not_connected(self, reason):
|
def new_acc_not_connected(self, reason):
|
||||||
'''Account creation failed: connection to server failed'''
|
"""
|
||||||
|
Account creation failed: connection to server failed
|
||||||
|
"""
|
||||||
if self.account not in gajim.connections:
|
if self.account not in gajim.connections:
|
||||||
return
|
return
|
||||||
if self.update_progressbar_timeout_id is not None:
|
if self.update_progressbar_timeout_id is not None:
|
||||||
|
@ -3499,7 +3545,9 @@ class AccountCreationWizardWindow:
|
||||||
self.notebook.set_current_page(6) # show finish page
|
self.notebook.set_current_page(6) # show finish page
|
||||||
|
|
||||||
def acc_is_ok(self, config):
|
def acc_is_ok(self, config):
|
||||||
'''Account creation succeeded'''
|
"""
|
||||||
|
Account creation succeeded
|
||||||
|
"""
|
||||||
self.create_vars(config)
|
self.create_vars(config)
|
||||||
self.show_finish_page()
|
self.show_finish_page()
|
||||||
|
|
||||||
|
@ -3507,7 +3555,9 @@ class AccountCreationWizardWindow:
|
||||||
gobject.source_remove(self.update_progressbar_timeout_id)
|
gobject.source_remove(self.update_progressbar_timeout_id)
|
||||||
|
|
||||||
def acc_is_not_ok(self, reason):
|
def acc_is_not_ok(self, reason):
|
||||||
'''Account creation failed'''
|
"""
|
||||||
|
Account creation failed
|
||||||
|
"""
|
||||||
self.back_button.show()
|
self.back_button.show()
|
||||||
self.cancel_button.show()
|
self.cancel_button.show()
|
||||||
self.go_online_checkbutton.hide()
|
self.go_online_checkbutton.hide()
|
||||||
|
|
|
@ -158,8 +158,10 @@ class TextViewImage(gtk.Image):
|
||||||
|
|
||||||
|
|
||||||
class ConversationTextview(gobject.GObject):
|
class ConversationTextview(gobject.GObject):
|
||||||
'''Class for the conversation textview (where user reads already said
|
"""
|
||||||
messages) for chat/groupchat windows'''
|
Class for the conversation textview (where user reads already said messages)
|
||||||
|
for chat/groupchat windows
|
||||||
|
"""
|
||||||
__gsignals__ = dict(
|
__gsignals__ = dict(
|
||||||
quote = (gobject.SIGNAL_RUN_LAST | gobject.SIGNAL_ACTION,
|
quote = (gobject.SIGNAL_RUN_LAST | gobject.SIGNAL_ACTION,
|
||||||
None, # return value
|
None, # return value
|
||||||
|
@ -177,8 +179,10 @@ class ConversationTextview(gobject.GObject):
|
||||||
SCROLL_DELAY = 33 # milliseconds
|
SCROLL_DELAY = 33 # milliseconds
|
||||||
|
|
||||||
def __init__(self, account, used_in_history_window = False):
|
def __init__(self, account, used_in_history_window = False):
|
||||||
'''if used_in_history_window is True, then we do not show
|
"""
|
||||||
Clear menuitem in context menu'''
|
If used_in_history_window is True, then we do not show Clear menuitem in
|
||||||
|
context menu
|
||||||
|
"""
|
||||||
gobject.GObject.__init__(self)
|
gobject.GObject.__init__(self)
|
||||||
self.used_in_history_window = used_in_history_window
|
self.used_in_history_window = used_in_history_window
|
||||||
|
|
||||||
|
@ -642,8 +646,9 @@ class ConversationTextview(gobject.GObject):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def on_textview_motion_notify_event(self, widget, event):
|
def on_textview_motion_notify_event(self, widget, event):
|
||||||
'''change the cursor to a hand when we are over a mail or an
|
"""
|
||||||
url'''
|
Change the cursor to a hand when we are over a mail or an url
|
||||||
|
"""
|
||||||
pointer_x, pointer_y = self.tv.window.get_pointer()[0:2]
|
pointer_x, pointer_y = self.tv.window.get_pointer()[0:2]
|
||||||
x, y = self.tv.window_to_buffer_coords(gtk.TEXT_WINDOW_TEXT,
|
x, y = self.tv.window_to_buffer_coords(gtk.TEXT_WINDOW_TEXT,
|
||||||
pointer_x, pointer_y)
|
pointer_x, pointer_y)
|
||||||
|
@ -688,7 +693,9 @@ class ConversationTextview(gobject.GObject):
|
||||||
self.change_cursor = True
|
self.change_cursor = True
|
||||||
|
|
||||||
def clear(self, tv = None):
|
def clear(self, tv = None):
|
||||||
'''clear text in the textview'''
|
"""
|
||||||
|
Clear text in the textview
|
||||||
|
"""
|
||||||
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)
|
||||||
|
@ -698,15 +705,18 @@ class ConversationTextview(gobject.GObject):
|
||||||
self.focus_out_end_mark = None
|
self.focus_out_end_mark = None
|
||||||
|
|
||||||
def visit_url_from_menuitem(self, widget, link):
|
def visit_url_from_menuitem(self, widget, link):
|
||||||
'''basically it filters out the widget instance'''
|
"""
|
||||||
|
Basically it filters out the widget instance
|
||||||
|
"""
|
||||||
helpers.launch_browser_mailer('url', link)
|
helpers.launch_browser_mailer('url', link)
|
||||||
|
|
||||||
def on_textview_populate_popup(self, textview, menu):
|
def on_textview_populate_popup(self, textview, menu):
|
||||||
'''we override the default context menu and we prepend Clear
|
"""
|
||||||
(only if used_in_history_window is False)
|
Override the default context menu and we prepend Clear (only if
|
||||||
and if we have sth selected we show a submenu with actions on
|
used_in_history_window is False) and if we have sth selected we show a
|
||||||
the phrase (see on_conversation_textview_button_press_event)'''
|
submenu with actions on the phrase (see
|
||||||
|
on_conversation_textview_button_press_event)
|
||||||
|
"""
|
||||||
separator_menuitem_was_added = False
|
separator_menuitem_was_added = False
|
||||||
if not self.used_in_history_window:
|
if not self.used_in_history_window:
|
||||||
item = gtk.SeparatorMenuItem()
|
item = gtk.SeparatorMenuItem()
|
||||||
|
@ -971,13 +981,13 @@ class ConversationTextview(gobject.GObject):
|
||||||
|
|
||||||
|
|
||||||
def detect_and_print_special_text(self, otext, other_tags, graphics=True):
|
def detect_and_print_special_text(self, otext, other_tags, graphics=True):
|
||||||
'''detects special text (emots & links & formatting)
|
"""
|
||||||
prints normal text before any special text it founts,
|
Detect special text (emots & links & formatting), print normal text
|
||||||
then print special text (that happens many times until
|
before any special text it founds, then print special text (that happens
|
||||||
last special text is printed) and then returns the index
|
many times until last special text is printed) and then return the index
|
||||||
after *last* special text, so we can print it in
|
after *last* special text, so we can print it in
|
||||||
print_conversation_line()'''
|
print_conversation_line()
|
||||||
|
"""
|
||||||
buffer_ = self.tv.get_buffer()
|
buffer_ = self.tv.get_buffer()
|
||||||
|
|
||||||
insert_tags_func = buffer_.insert_with_tags_by_name
|
insert_tags_func = buffer_.insert_with_tags_by_name
|
||||||
|
@ -1023,8 +1033,10 @@ class ConversationTextview(gobject.GObject):
|
||||||
return buffer_.get_end_iter()
|
return buffer_.get_end_iter()
|
||||||
|
|
||||||
def print_special_text(self, special_text, other_tags, graphics=True):
|
def print_special_text(self, special_text, other_tags, graphics=True):
|
||||||
'''is called by detect_and_print_special_text and prints
|
"""
|
||||||
special text (emots, links, formatting)'''
|
Is called by detect_and_print_special_text and prints special text
|
||||||
|
(emots, links, formatting)
|
||||||
|
"""
|
||||||
tags = []
|
tags = []
|
||||||
use_other_tags = True
|
use_other_tags = True
|
||||||
text_is_valid_uri = False
|
text_is_valid_uri = False
|
||||||
|
@ -1163,9 +1175,12 @@ class ConversationTextview(gobject.GObject):
|
||||||
buffer_.insert_with_tags_by_name(end_iter, '\n', 'eol')
|
buffer_.insert_with_tags_by_name(end_iter, '\n', 'eol')
|
||||||
|
|
||||||
def print_conversation_line(self, text, jid, kind, name, tim,
|
def print_conversation_line(self, text, jid, kind, name, tim,
|
||||||
other_tags_for_name=[], other_tags_for_time=[], other_tags_for_text=[],
|
other_tags_for_name=[], other_tags_for_time=[],
|
||||||
subject=None, old_kind=None, xhtml=None, simple=False, graphics=True):
|
other_tags_for_text=[], subject=None, old_kind=None, xhtml=None,
|
||||||
'''prints 'chat' type messages'''
|
simple=False, graphics=True):
|
||||||
|
"""
|
||||||
|
Print 'chat' type messages
|
||||||
|
"""
|
||||||
buffer_ = self.tv.get_buffer()
|
buffer_ = self.tv.get_buffer()
|
||||||
buffer_.begin_user_action()
|
buffer_.begin_user_action()
|
||||||
if self.marks_queue.full():
|
if self.marks_queue.full():
|
||||||
|
@ -1263,8 +1278,10 @@ class ConversationTextview(gobject.GObject):
|
||||||
buffer_.end_user_action()
|
buffer_.end_user_action()
|
||||||
|
|
||||||
def get_time_to_show(self, tim):
|
def get_time_to_show(self, tim):
|
||||||
'''Get the time, with the day before if needed and return it.
|
"""
|
||||||
It DOESN'T format a fuzzy time'''
|
Get the time, with the day before if needed and return it. It DOESN'T
|
||||||
|
format a fuzzy time
|
||||||
|
"""
|
||||||
format = ''
|
format = ''
|
||||||
# get difference in days since epoch (86400 = 24*3600)
|
# get difference in days since epoch (86400 = 24*3600)
|
||||||
# number of days since epoch for current time (in GMT) -
|
# number of days since epoch for current time (in GMT) -
|
||||||
|
@ -1318,7 +1335,9 @@ class ConversationTextview(gobject.GObject):
|
||||||
|
|
||||||
def print_real_text(self, text, text_tags=[], name=None, xhtml=None,
|
def print_real_text(self, text, text_tags=[], name=None, xhtml=None,
|
||||||
graphics=True):
|
graphics=True):
|
||||||
'''this adds normal and special text. call this to add text'''
|
"""
|
||||||
|
Add normal and special text. call this to add text
|
||||||
|
"""
|
||||||
if xhtml:
|
if xhtml:
|
||||||
try:
|
try:
|
||||||
if name and (text.startswith('/me ') or text.startswith('/me\n')):
|
if name and (text.startswith('/me ') or text.startswith('/me\n')):
|
||||||
|
|
|
@ -38,7 +38,10 @@ import itertools
|
||||||
|
|
||||||
class DataFormWidget(gtk.Alignment, object):
|
class DataFormWidget(gtk.Alignment, object):
|
||||||
# "public" interface
|
# "public" interface
|
||||||
''' Data Form widget. Use like any other widget. '''
|
"""
|
||||||
|
Data Form widget. Use like any other widget
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self, dataformnode=None):
|
def __init__(self, dataformnode=None):
|
||||||
''' Create a widget. '''
|
''' Create a widget. '''
|
||||||
gtk.Alignment.__init__(self, xscale=1.0, yscale=1.0)
|
gtk.Alignment.__init__(self, xscale=1.0, yscale=1.0)
|
||||||
|
@ -65,7 +68,9 @@ class DataFormWidget(gtk.Alignment, object):
|
||||||
selection.set_mode(gtk.SELECTION_MULTIPLE)
|
selection.set_mode(gtk.SELECTION_MULTIPLE)
|
||||||
|
|
||||||
def set_data_form(self, dataform):
|
def set_data_form(self, dataform):
|
||||||
''' Set the data form (xmpp.DataForm) displayed in widget. '''
|
"""
|
||||||
|
Set the data form (xmpp.DataForm) displayed in widget
|
||||||
|
"""
|
||||||
assert isinstance(dataform, dataforms.DataForm)
|
assert isinstance(dataform, dataforms.DataForm)
|
||||||
|
|
||||||
self.del_data_form()
|
self.del_data_form()
|
||||||
|
@ -84,7 +89,9 @@ class DataFormWidget(gtk.Alignment, object):
|
||||||
gtkgui_helpers.label_set_autowrap(self.instructions_label)
|
gtkgui_helpers.label_set_autowrap(self.instructions_label)
|
||||||
|
|
||||||
def get_data_form(self):
|
def get_data_form(self):
|
||||||
''' Data form displayed in the widget or None if no form. '''
|
"""
|
||||||
|
Data form displayed in the widget or None if no form
|
||||||
|
"""
|
||||||
return self._data_form
|
return self._data_form
|
||||||
|
|
||||||
def del_data_form(self):
|
def del_data_form(self):
|
||||||
|
@ -95,8 +102,10 @@ class DataFormWidget(gtk.Alignment, object):
|
||||||
'Data form presented in a widget')
|
'Data form presented in a widget')
|
||||||
|
|
||||||
def get_title(self):
|
def get_title(self):
|
||||||
''' Get the title of data form, as a unicode object. If no
|
"""
|
||||||
title or no form, returns u''. Useful for setting window title. '''
|
Get the title of data form, as a unicode object. If no title or no form,
|
||||||
|
returns u''. Useful for setting window title
|
||||||
|
"""
|
||||||
if self._data_form is not None:
|
if self._data_form is not None:
|
||||||
if self._data_form.title is not None:
|
if self._data_form.title is not None:
|
||||||
return self._data_form.title
|
return self._data_form.title
|
||||||
|
@ -117,9 +126,11 @@ class DataFormWidget(gtk.Alignment, object):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def clean_data_form(self):
|
def clean_data_form(self):
|
||||||
'''Remove data about existing form. This metod is empty, because
|
"""
|
||||||
it is rewritten by build_*_data_form, according to type of form
|
Remove data about existing form. This metod is empty, because it is
|
||||||
which is actually displayed.'''
|
rewritten by build_*_data_form, according to type of form which is
|
||||||
|
actually displayed
|
||||||
|
"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def build_single_data_form(self):
|
def build_single_data_form(self):
|
||||||
|
@ -138,14 +149,18 @@ class DataFormWidget(gtk.Alignment, object):
|
||||||
self.clean_data_form = self.clean_single_data_form
|
self.clean_data_form = self.clean_single_data_form
|
||||||
|
|
||||||
def clean_single_data_form(self):
|
def clean_single_data_form(self):
|
||||||
'''(Called as clean_data_form, read the docs of clean_data_form()).
|
"""
|
||||||
Remove form from widget.'''
|
Called as clean_data_form, read the docs of clean_data_form(). Remove
|
||||||
|
form from widget
|
||||||
|
"""
|
||||||
self.singleform.destroy()
|
self.singleform.destroy()
|
||||||
self.clean_data_form = self.empty_method # we won't call it twice
|
self.clean_data_form = self.empty_method # we won't call it twice
|
||||||
del self.singleform
|
del self.singleform
|
||||||
|
|
||||||
def build_multiple_data_form(self):
|
def build_multiple_data_form(self):
|
||||||
'''Invoked when new multiple form is to be created.'''
|
"""
|
||||||
|
Invoked when new multiple form is to be created
|
||||||
|
"""
|
||||||
assert isinstance(self._data_form, dataforms.MultipleDataForm)
|
assert isinstance(self._data_form, dataforms.MultipleDataForm)
|
||||||
|
|
||||||
self.clean_data_form()
|
self.clean_data_form()
|
||||||
|
@ -196,13 +211,17 @@ class DataFormWidget(gtk.Alignment, object):
|
||||||
self.refresh_multiple_buttons()
|
self.refresh_multiple_buttons()
|
||||||
|
|
||||||
def clean_multiple_data_form(self):
|
def clean_multiple_data_form(self):
|
||||||
'''(Called as clean_data_form, read the docs of clean_data_form()).
|
"""
|
||||||
Remove form from widget.'''
|
Called as clean_data_form, read the docs of clean_data_form(). Remove
|
||||||
|
form from widget
|
||||||
|
"""
|
||||||
self.clean_data_form = self.empty_method # we won't call it twice
|
self.clean_data_form = self.empty_method # we won't call it twice
|
||||||
del self.multiplemodel
|
del self.multiplemodel
|
||||||
|
|
||||||
def refresh_multiple_buttons(self):
|
def refresh_multiple_buttons(self):
|
||||||
''' Checks for treeview state and makes control buttons sensitive.'''
|
"""
|
||||||
|
Checks for treeview state and makes control buttons sensitive
|
||||||
|
"""
|
||||||
selection = self.records_treeview.get_selection()
|
selection = self.records_treeview.get_selection()
|
||||||
model = self.records_treeview.get_model()
|
model = self.records_treeview.get_model()
|
||||||
count = selection.count_selected_rows()
|
count = selection.count_selected_rows()
|
||||||
|
@ -273,9 +292,12 @@ class DataFormWidget(gtk.Alignment, object):
|
||||||
self.refresh_multiple_buttons()
|
self.refresh_multiple_buttons()
|
||||||
|
|
||||||
class SingleForm(gtk.Table, object):
|
class SingleForm(gtk.Table, object):
|
||||||
''' Widget that represent DATAFORM_SINGLE mode form. Because this is used
|
"""
|
||||||
not only to display single forms, but to form input windows of multiple-type
|
Widget that represent DATAFORM_SINGLE mode form. Because this is used not
|
||||||
forms, it is in another class.'''
|
only to display single forms, but to form input windows of multiple-type
|
||||||
|
forms, it is in another class
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self, dataform):
|
def __init__(self, dataform):
|
||||||
assert isinstance(dataform, dataforms.SimpleDataForm)
|
assert isinstance(dataform, dataforms.SimpleDataForm)
|
||||||
|
|
||||||
|
@ -284,9 +306,11 @@ class SingleForm(gtk.Table, object):
|
||||||
self.set_row_spacings(6)
|
self.set_row_spacings(6)
|
||||||
|
|
||||||
def decorate_with_tooltip(widget, field):
|
def decorate_with_tooltip(widget, field):
|
||||||
''' Adds a tooltip containing field's description to a widget.
|
"""
|
||||||
Creates EventBox if widget doesn't have its own gdk window.
|
Adds a tooltip containing field's description to a widget. Creates
|
||||||
Returns decorated widget. '''
|
EventBox if widget doesn't have its own gdk window. Returns decorated
|
||||||
|
widget
|
||||||
|
"""
|
||||||
if field.description != '':
|
if field.description != '':
|
||||||
if widget.flags() & gtk.NO_WINDOW:
|
if widget.flags() & gtk.NO_WINDOW:
|
||||||
evbox = gtk.EventBox()
|
evbox = gtk.EventBox()
|
||||||
|
|
290
src/dialogs.py
290
src/dialogs.py
|
@ -61,9 +61,14 @@ from common import dataforms
|
||||||
from common.exceptions import GajimGeneralException
|
from common.exceptions import GajimGeneralException
|
||||||
|
|
||||||
class EditGroupsDialog:
|
class EditGroupsDialog:
|
||||||
'''Class for the edit group dialog window'''
|
"""
|
||||||
|
Class for the edit group dialog window
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self, list_):
|
def __init__(self, list_):
|
||||||
'''list_ is a list of (contact, account) tuples'''
|
"""
|
||||||
|
list_ is a list of (contact, account) tuples
|
||||||
|
"""
|
||||||
self.xml = gtkgui_helpers.get_glade('edit_groups_dialog.glade')
|
self.xml = gtkgui_helpers.get_glade('edit_groups_dialog.glade')
|
||||||
self.dialog = self.xml.get_widget('edit_groups_dialog')
|
self.dialog = self.xml.get_widget('edit_groups_dialog')
|
||||||
self.dialog.set_transient_for(gajim.interface.roster.window)
|
self.dialog.set_transient_for(gajim.interface.roster.window)
|
||||||
|
@ -96,7 +101,9 @@ class EditGroupsDialog:
|
||||||
self.dialog.destroy()
|
self.dialog.destroy()
|
||||||
|
|
||||||
def remove_group(self, group):
|
def remove_group(self, group):
|
||||||
'''remove group group from all contacts and all their brothers'''
|
"""
|
||||||
|
Remove group group from all contacts and all their brothers
|
||||||
|
"""
|
||||||
for (contact, account) in self.list_:
|
for (contact, account) in self.list_:
|
||||||
gajim.interface.roster.remove_contact_from_groups(contact.jid, account, [group])
|
gajim.interface.roster.remove_contact_from_groups(contact.jid, account, [group])
|
||||||
|
|
||||||
|
@ -104,7 +111,9 @@ class EditGroupsDialog:
|
||||||
gajim.interface.roster.draw_group(_('General'), account)
|
gajim.interface.roster.draw_group(_('General'), account)
|
||||||
|
|
||||||
def add_group(self, group):
|
def add_group(self, group):
|
||||||
'''add group group to all contacts and all their brothers'''
|
"""
|
||||||
|
Add group group to all contacts and all their brothers
|
||||||
|
"""
|
||||||
for (contact, account) in self.list_:
|
for (contact, account) in self.list_:
|
||||||
gajim.interface.roster.add_contact_to_groups(contact.jid, account, [group])
|
gajim.interface.roster.add_contact_to_groups(contact.jid, account, [group])
|
||||||
|
|
||||||
|
@ -199,7 +208,9 @@ class EditGroupsDialog:
|
||||||
column.set_attributes(renderer, active=1, inconsistent=2)
|
column.set_attributes(renderer, active=1, inconsistent=2)
|
||||||
|
|
||||||
class PassphraseDialog:
|
class PassphraseDialog:
|
||||||
'''Class for Passphrase dialog'''
|
"""
|
||||||
|
Class for Passphrase dialog
|
||||||
|
"""
|
||||||
def __init__(self, titletext, labeltext, checkbuttontext=None,
|
def __init__(self, titletext, labeltext, checkbuttontext=None,
|
||||||
ok_handler=None, cancel_handler=None):
|
ok_handler=None, cancel_handler=None):
|
||||||
self.xml = gtkgui_helpers.get_glade('passphrase_dialog.glade')
|
self.xml = gtkgui_helpers.get_glade('passphrase_dialog.glade')
|
||||||
|
@ -258,7 +269,10 @@ class PassphraseDialog:
|
||||||
self.cancel_handler()
|
self.cancel_handler()
|
||||||
|
|
||||||
class ChooseGPGKeyDialog:
|
class ChooseGPGKeyDialog:
|
||||||
'''Class for GPG key dialog'''
|
"""
|
||||||
|
Class for GPG key dialog
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self, title_text, prompt_text, secret_keys, on_response,
|
def __init__(self, title_text, prompt_text, secret_keys, on_response,
|
||||||
selected=None):
|
selected=None):
|
||||||
'''secret_keys : {keyID: userName, ...}'''
|
'''secret_keys : {keyID: userName, ...}'''
|
||||||
|
@ -428,9 +442,9 @@ class ChangeActivityDialog:
|
||||||
self.subactivity = data[1]
|
self.subactivity = data[1]
|
||||||
|
|
||||||
def on_ok_button_clicked(self, widget):
|
def on_ok_button_clicked(self, widget):
|
||||||
'''
|
"""
|
||||||
Return activity and messsage (None if no activity selected)
|
Return activity and messsage (None if no activity selected)
|
||||||
'''
|
"""
|
||||||
if self.checkbutton.get_active():
|
if self.checkbutton.get_active():
|
||||||
self.on_response(self.activity, self.subactivity,
|
self.on_response(self.activity, self.subactivity,
|
||||||
self.entry.get_text().decode('utf-8'))
|
self.entry.get_text().decode('utf-8'))
|
||||||
|
@ -524,10 +538,10 @@ class ChangeMoodDialog:
|
||||||
self.window.destroy()
|
self.window.destroy()
|
||||||
|
|
||||||
class TimeoutDialog:
|
class TimeoutDialog:
|
||||||
'''
|
"""
|
||||||
Class designed to be derivated to create timeout'd dialogs (dialogs that
|
Class designed to be derivated to create timeout'd dialogs (dialogs that
|
||||||
closes automatically after a timeout)
|
closes automatically after a timeout)
|
||||||
'''
|
"""
|
||||||
def __init__(self, timeout, on_timeout):
|
def __init__(self, timeout, on_timeout):
|
||||||
self.countdown_left = timeout
|
self.countdown_left = timeout
|
||||||
self.countdown_enabled = True
|
self.countdown_enabled = True
|
||||||
|
@ -540,7 +554,9 @@ class TimeoutDialog:
|
||||||
gobject.timeout_add_seconds(1, self.countdown)
|
gobject.timeout_add_seconds(1, self.countdown)
|
||||||
|
|
||||||
def on_timeout():
|
def on_timeout():
|
||||||
'''To be implemented in derivated classes'''
|
"""
|
||||||
|
To be implemented in derivated classes
|
||||||
|
"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def countdown(self):
|
def countdown(self):
|
||||||
|
@ -638,7 +654,9 @@ class ChangeStatusMessageDialog(TimeoutDialog):
|
||||||
self.dialog.show_all()
|
self.dialog.show_all()
|
||||||
|
|
||||||
def draw_activity(self):
|
def draw_activity(self):
|
||||||
'''Set activity button'''
|
"""
|
||||||
|
Set activity button
|
||||||
|
"""
|
||||||
img = self.xml.get_widget('activity_image')
|
img = self.xml.get_widget('activity_image')
|
||||||
label = self.xml.get_widget('activity_button_label')
|
label = self.xml.get_widget('activity_button_label')
|
||||||
if 'activity' in self.pep_dict and self.pep_dict['activity'] in \
|
if 'activity' in self.pep_dict and self.pep_dict['activity'] in \
|
||||||
|
@ -661,7 +679,9 @@ class ChangeStatusMessageDialog(TimeoutDialog):
|
||||||
label.set_text('')
|
label.set_text('')
|
||||||
|
|
||||||
def draw_mood(self):
|
def draw_mood(self):
|
||||||
'''Set mood button'''
|
"""
|
||||||
|
Set mood button
|
||||||
|
"""
|
||||||
img = self.xml.get_widget('mood_image')
|
img = self.xml.get_widget('mood_image')
|
||||||
label = self.xml.get_widget('mood_button_label')
|
label = self.xml.get_widget('mood_button_label')
|
||||||
if self.pep_dict['mood'] in pep.MOODS:
|
if self.pep_dict['mood'] in pep.MOODS:
|
||||||
|
@ -803,13 +823,17 @@ class ChangeStatusMessageDialog(TimeoutDialog):
|
||||||
self.pep_dict['mood_text'])
|
self.pep_dict['mood_text'])
|
||||||
|
|
||||||
class AddNewContactWindow:
|
class AddNewContactWindow:
|
||||||
'''Class for AddNewContactWindow'''
|
"""
|
||||||
|
Class for AddNewContactWindow
|
||||||
|
"""
|
||||||
|
|
||||||
uid_labels = {'jabber': _('Jabber ID:'),
|
uid_labels = {'jabber': _('Jabber ID:'),
|
||||||
'aim': _('AIM Address:'),
|
'aim': _('AIM Address:'),
|
||||||
'gadu-gadu': _('GG Number:'),
|
'gadu-gadu': _('GG Number:'),
|
||||||
'icq': _('ICQ Number:'),
|
'icq': _('ICQ Number:'),
|
||||||
'msn': _('MSN Address:'),
|
'msn': _('MSN Address:'),
|
||||||
'yahoo': _('Yahoo! Address:')}
|
'yahoo': _('Yahoo! Address:')}
|
||||||
|
|
||||||
def __init__(self, account=None, jid=None, user_nick=None, group=None):
|
def __init__(self, account=None, jid=None, user_nick=None, group=None):
|
||||||
self.account = account
|
self.account = account
|
||||||
if account is None:
|
if account is None:
|
||||||
|
@ -983,11 +1007,15 @@ _('Please fill in the data of the contact you want to add in account %s') %accou
|
||||||
self.window.destroy()
|
self.window.destroy()
|
||||||
|
|
||||||
def on_cancel_button_clicked(self, widget):
|
def on_cancel_button_clicked(self, widget):
|
||||||
'''When Cancel button is clicked'''
|
"""
|
||||||
|
When Cancel button is clicked
|
||||||
|
"""
|
||||||
self.window.destroy()
|
self.window.destroy()
|
||||||
|
|
||||||
def on_add_button_clicked(self, widget):
|
def on_add_button_clicked(self, widget):
|
||||||
'''When Subscribe button is clicked'''
|
"""
|
||||||
|
When Subscribe button is clicked
|
||||||
|
"""
|
||||||
jid = self.uid_entry.get_text().decode('utf-8').strip()
|
jid = self.uid_entry.get_text().decode('utf-8').strip()
|
||||||
if not jid:
|
if not jid:
|
||||||
return
|
return
|
||||||
|
@ -1111,7 +1139,10 @@ _('Please fill in the data of the contact you want to add in account %s') %accou
|
||||||
self.add_button.set_sensitive(False)
|
self.add_button.set_sensitive(False)
|
||||||
|
|
||||||
class AboutDialog:
|
class AboutDialog:
|
||||||
'''Class for about dialog'''
|
"""
|
||||||
|
Class for about dialog
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
dlg = gtk.AboutDialog()
|
dlg = gtk.AboutDialog()
|
||||||
dlg.set_transient_for(gajim.interface.roster.window)
|
dlg.set_transient_for(gajim.interface.roster.window)
|
||||||
|
@ -1184,7 +1215,9 @@ class AboutDialog:
|
||||||
return str_[0:-1] # remove latest .
|
return str_[0:-1] # remove latest .
|
||||||
|
|
||||||
def get_path(self, filename):
|
def get_path(self, filename):
|
||||||
'''where can we find this Credits file ?'''
|
"""
|
||||||
|
Where can we find this Credits file?
|
||||||
|
"""
|
||||||
if os.path.isfile(os.path.join(gajim.defs.docdir, filename)):
|
if os.path.isfile(os.path.join(gajim.defs.docdir, filename)):
|
||||||
return os.path.join(gajim.defs.docdir, filename)
|
return os.path.join(gajim.defs.docdir, filename)
|
||||||
elif os.path.isfile('../' + filename):
|
elif os.path.isfile('../' + filename):
|
||||||
|
@ -1273,14 +1306,18 @@ class HigDialog(gtk.MessageDialog):
|
||||||
self.destroy()
|
self.destroy()
|
||||||
|
|
||||||
def popup(self):
|
def popup(self):
|
||||||
'''show dialog'''
|
"""
|
||||||
|
Show dialog
|
||||||
|
"""
|
||||||
vb = self.get_children()[0].get_children()[0] # Give focus to top vbox
|
vb = self.get_children()[0].get_children()[0] # Give focus to top vbox
|
||||||
vb.set_flags(gtk.CAN_FOCUS)
|
vb.set_flags(gtk.CAN_FOCUS)
|
||||||
vb.grab_focus()
|
vb.grab_focus()
|
||||||
self.show_all()
|
self.show_all()
|
||||||
|
|
||||||
class FileChooserDialog(gtk.FileChooserDialog):
|
class FileChooserDialog(gtk.FileChooserDialog):
|
||||||
'''Non-blocking FileChooser Dialog around gtk.FileChooserDialog'''
|
"""
|
||||||
|
Non-blocking FileChooser Dialog around gtk.FileChooserDialog
|
||||||
|
"""
|
||||||
def __init__(self, title_text, action, buttons, default_response,
|
def __init__(self, title_text, action, buttons, default_response,
|
||||||
select_multiple = False, current_folder = None, on_response_ok = None,
|
select_multiple = False, current_folder = None, on_response_ok = None,
|
||||||
on_response_cancel = None):
|
on_response_cancel = None):
|
||||||
|
@ -1332,7 +1369,10 @@ class AspellDictError:
|
||||||
gajim.config.set('use_speller', False)
|
gajim.config.set('use_speller', False)
|
||||||
|
|
||||||
class ConfirmationDialog(HigDialog):
|
class ConfirmationDialog(HigDialog):
|
||||||
'''HIG compliant confirmation dialog.'''
|
"""
|
||||||
|
HIG compliant confirmation dialog
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self, pritext, sectext='', on_response_ok=None,
|
def __init__(self, pritext, sectext='', on_response_ok=None,
|
||||||
on_response_cancel=None):
|
on_response_cancel=None):
|
||||||
self.user_response_ok = on_response_ok
|
self.user_response_ok = on_response_ok
|
||||||
|
@ -1359,7 +1399,10 @@ class ConfirmationDialog(HigDialog):
|
||||||
self.destroy()
|
self.destroy()
|
||||||
|
|
||||||
class NonModalConfirmationDialog(HigDialog):
|
class NonModalConfirmationDialog(HigDialog):
|
||||||
'''HIG compliant non modal confirmation dialog.'''
|
"""
|
||||||
|
HIG compliant non modal confirmation dialog
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self, pritext, sectext='', on_response_ok=None,
|
def __init__(self, pritext, sectext='', on_response_ok=None,
|
||||||
on_response_cancel=None):
|
on_response_cancel=None):
|
||||||
self.user_response_ok = on_response_ok
|
self.user_response_ok = on_response_ok
|
||||||
|
@ -1386,8 +1429,11 @@ class NonModalConfirmationDialog(HigDialog):
|
||||||
self.destroy()
|
self.destroy()
|
||||||
|
|
||||||
class WarningDialog(HigDialog):
|
class WarningDialog(HigDialog):
|
||||||
|
"""
|
||||||
|
HIG compliant warning dialog
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self, pritext, sectext=''):
|
def __init__(self, pritext, sectext=''):
|
||||||
'''HIG compliant warning dialog.'''
|
|
||||||
HigDialog.__init__( self, None,
|
HigDialog.__init__( self, None,
|
||||||
gtk.MESSAGE_WARNING, gtk.BUTTONS_OK, pritext, sectext)
|
gtk.MESSAGE_WARNING, gtk.BUTTONS_OK, pritext, sectext)
|
||||||
self.set_modal(False)
|
self.set_modal(False)
|
||||||
|
@ -1396,8 +1442,11 @@ class WarningDialog(HigDialog):
|
||||||
self.popup()
|
self.popup()
|
||||||
|
|
||||||
class InformationDialog(HigDialog):
|
class InformationDialog(HigDialog):
|
||||||
|
"""
|
||||||
|
HIG compliant info dialog
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self, pritext, sectext=''):
|
def __init__(self, pritext, sectext=''):
|
||||||
'''HIG compliant info dialog.'''
|
|
||||||
HigDialog.__init__(self, None,
|
HigDialog.__init__(self, None,
|
||||||
gtk.MESSAGE_INFO, gtk.BUTTONS_OK, pritext, sectext)
|
gtk.MESSAGE_INFO, gtk.BUTTONS_OK, pritext, sectext)
|
||||||
self.set_modal(False)
|
self.set_modal(False)
|
||||||
|
@ -1405,16 +1454,22 @@ class InformationDialog(HigDialog):
|
||||||
self.popup()
|
self.popup()
|
||||||
|
|
||||||
class ErrorDialog(HigDialog):
|
class ErrorDialog(HigDialog):
|
||||||
|
"""
|
||||||
|
HIG compliant error dialog
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self, pritext, sectext=''):
|
def __init__(self, pritext, sectext=''):
|
||||||
'''HIG compliant error dialog.'''
|
|
||||||
HigDialog.__init__( self, None,
|
HigDialog.__init__( self, None,
|
||||||
gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, pritext, sectext)
|
gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, pritext, sectext)
|
||||||
self.popup()
|
self.popup()
|
||||||
|
|
||||||
class YesNoDialog(HigDialog):
|
class YesNoDialog(HigDialog):
|
||||||
|
"""
|
||||||
|
HIG compliant YesNo dialog
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self, pritext, sectext='', checktext='', on_response_yes=None,
|
def __init__(self, pritext, sectext='', checktext='', on_response_yes=None,
|
||||||
on_response_no=None):
|
on_response_no=None):
|
||||||
'''HIG compliant YesNo dialog.'''
|
|
||||||
self.user_response_yes = on_response_yes
|
self.user_response_yes = on_response_yes
|
||||||
self.user_response_no = on_response_no
|
self.user_response_no = on_response_no
|
||||||
HigDialog.__init__( self, None,
|
HigDialog.__init__( self, None,
|
||||||
|
@ -1448,15 +1503,20 @@ class YesNoDialog(HigDialog):
|
||||||
self.destroy()
|
self.destroy()
|
||||||
|
|
||||||
def is_checked(self):
|
def is_checked(self):
|
||||||
''' Get active state of the checkbutton '''
|
"""
|
||||||
|
Get active state of the checkbutton
|
||||||
|
"""
|
||||||
if not self.checkbutton:
|
if not self.checkbutton:
|
||||||
return False
|
return False
|
||||||
return self.checkbutton.get_active()
|
return self.checkbutton.get_active()
|
||||||
|
|
||||||
class ConfirmationDialogCheck(ConfirmationDialog):
|
class ConfirmationDialogCheck(ConfirmationDialog):
|
||||||
'''HIG compliant confirmation dialog with checkbutton.'''
|
"""
|
||||||
def __init__(self, pritext, sectext='', checktext='',
|
HIG compliant confirmation dialog with checkbutton
|
||||||
on_response_ok=None, on_response_cancel=None, is_modal=True):
|
"""
|
||||||
|
|
||||||
|
def __init__(self, pritext, sectext='', checktext='', on_response_ok=None,
|
||||||
|
on_response_cancel=None, is_modal=True):
|
||||||
self.user_response_ok = on_response_ok
|
self.user_response_ok = on_response_ok
|
||||||
self.user_response_cancel = on_response_cancel
|
self.user_response_cancel = on_response_cancel
|
||||||
|
|
||||||
|
@ -1495,11 +1555,16 @@ class ConfirmationDialogCheck(ConfirmationDialog):
|
||||||
self.destroy()
|
self.destroy()
|
||||||
|
|
||||||
def is_checked(self):
|
def is_checked(self):
|
||||||
''' Get active state of the checkbutton '''
|
"""
|
||||||
|
Get active state of the checkbutton
|
||||||
|
"""
|
||||||
return self.checkbutton.get_active()
|
return self.checkbutton.get_active()
|
||||||
|
|
||||||
class ConfirmationDialogDubbleCheck(ConfirmationDialog):
|
class ConfirmationDialogDubbleCheck(ConfirmationDialog):
|
||||||
'''HIG compliant confirmation dialog with 2 checkbuttons.'''
|
"""
|
||||||
|
HIG compliant confirmation dialog with 2 checkbuttons
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self, pritext, sectext='', checktext1='', checktext2='',
|
def __init__(self, pritext, sectext='', checktext1='', checktext2='',
|
||||||
on_response_ok=None, on_response_cancel=None, is_modal=True):
|
on_response_ok=None, on_response_cancel=None, is_modal=True):
|
||||||
self.user_response_ok = on_response_ok
|
self.user_response_ok = on_response_ok
|
||||||
|
@ -1560,7 +1625,10 @@ class ConfirmationDialogDubbleCheck(ConfirmationDialog):
|
||||||
return [is_checked_1, is_checked_2]
|
return [is_checked_1, is_checked_2]
|
||||||
|
|
||||||
class FTOverwriteConfirmationDialog(ConfirmationDialog):
|
class FTOverwriteConfirmationDialog(ConfirmationDialog):
|
||||||
'''HIG compliant confirmation dialog to overwrite or resume a file transfert'''
|
"""
|
||||||
|
HIG compliant confirmation dialog to overwrite or resume a file transfert
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self, pritext, sectext='', propose_resume=True,
|
def __init__(self, pritext, sectext='', propose_resume=True,
|
||||||
on_response=None):
|
on_response=None):
|
||||||
HigDialog.__init__(self, None, gtk.MESSAGE_QUESTION, gtk.BUTTONS_CANCEL,
|
HigDialog.__init__(self, None, gtk.MESSAGE_QUESTION, gtk.BUTTONS_CANCEL,
|
||||||
|
@ -1597,7 +1665,10 @@ class FTOverwriteConfirmationDialog(ConfirmationDialog):
|
||||||
self.destroy()
|
self.destroy()
|
||||||
|
|
||||||
class CommonInputDialog:
|
class CommonInputDialog:
|
||||||
'''Common Class for Input dialogs'''
|
"""
|
||||||
|
Common Class for Input dialogs
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self, title, label_str, is_modal, ok_handler, cancel_handler):
|
def __init__(self, title, label_str, is_modal, ok_handler, cancel_handler):
|
||||||
self.dialog = self.xml.get_widget('input_dialog')
|
self.dialog = self.xml.get_widget('input_dialog')
|
||||||
label = self.xml.get_widget('label')
|
label = self.xml.get_widget('label')
|
||||||
|
@ -1633,7 +1704,10 @@ class CommonInputDialog:
|
||||||
self.dialog.destroy()
|
self.dialog.destroy()
|
||||||
|
|
||||||
class InputDialog(CommonInputDialog):
|
class InputDialog(CommonInputDialog):
|
||||||
'''Class for Input dialog'''
|
"""
|
||||||
|
Class for Input dialog
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self, title, label_str, input_str=None, is_modal=True,
|
def __init__(self, title, label_str, input_str=None, is_modal=True,
|
||||||
ok_handler=None, cancel_handler=None):
|
ok_handler=None, cancel_handler=None):
|
||||||
self.xml = gtkgui_helpers.get_glade('input_dialog.glade')
|
self.xml = gtkgui_helpers.get_glade('input_dialog.glade')
|
||||||
|
@ -1651,7 +1725,10 @@ class InputDialog(CommonInputDialog):
|
||||||
return self.input_entry.get_text().decode('utf-8')
|
return self.input_entry.get_text().decode('utf-8')
|
||||||
|
|
||||||
class InputDialogCheck(InputDialog):
|
class InputDialogCheck(InputDialog):
|
||||||
'''Class for Input dialog'''
|
"""
|
||||||
|
Class for Input dialog
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self, title, label_str, checktext='', input_str=None,
|
def __init__(self, title, label_str, checktext='', input_str=None,
|
||||||
is_modal=True, ok_handler=None, cancel_handler=None):
|
is_modal=True, ok_handler=None, cancel_handler=None):
|
||||||
self.xml = gtkgui_helpers.get_glade('input_dialog.glade')
|
self.xml = gtkgui_helpers.get_glade('input_dialog.glade')
|
||||||
|
@ -1683,7 +1760,9 @@ class InputDialogCheck(InputDialog):
|
||||||
return self.input_entry.get_text().decode('utf-8')
|
return self.input_entry.get_text().decode('utf-8')
|
||||||
|
|
||||||
def is_checked(self):
|
def is_checked(self):
|
||||||
''' Get active state of the checkbutton '''
|
"""
|
||||||
|
Get active state of the checkbutton
|
||||||
|
"""
|
||||||
try:
|
try:
|
||||||
return self.checkbutton.get_active()
|
return self.checkbutton.get_active()
|
||||||
except Exception:
|
except Exception:
|
||||||
|
@ -1691,7 +1770,10 @@ class InputDialogCheck(InputDialog):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
class ChangeNickDialog(InputDialogCheck):
|
class ChangeNickDialog(InputDialogCheck):
|
||||||
'''Class for changing room nickname in case of conflict'''
|
"""
|
||||||
|
Class for changing room nickname in case of conflict
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self, account, room_jid, title, prompt, check_text=None):
|
def __init__(self, account, room_jid, title, prompt, check_text=None):
|
||||||
InputDialogCheck.__init__(self, title, '', checktext=check_text,
|
InputDialogCheck.__init__(self, title, '', checktext=check_text,
|
||||||
input_str='', is_modal=True, ok_handler=None, cancel_handler=None)
|
input_str='', is_modal=True, ok_handler=None, cancel_handler=None)
|
||||||
|
@ -1773,7 +1855,10 @@ class ChangeNickDialog(InputDialogCheck):
|
||||||
self.room_queue.append((account, room_jid, prompt))
|
self.room_queue.append((account, room_jid, prompt))
|
||||||
|
|
||||||
class InputTextDialog(CommonInputDialog):
|
class InputTextDialog(CommonInputDialog):
|
||||||
'''Class for multilines Input dialog (more place than InputDialog)'''
|
"""
|
||||||
|
Class for multilines Input dialog (more place than InputDialog)
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self, title, label_str, input_str=None, is_modal=True,
|
def __init__(self, title, label_str, input_str=None, is_modal=True,
|
||||||
ok_handler=None, cancel_handler=None):
|
ok_handler=None, cancel_handler=None):
|
||||||
self.xml = gtkgui_helpers.get_glade('input_text_dialog.glade')
|
self.xml = gtkgui_helpers.get_glade('input_text_dialog.glade')
|
||||||
|
@ -1790,7 +1875,10 @@ class InputTextDialog(CommonInputDialog):
|
||||||
return self.input_buffer.get_text(start_iter, end_iter).decode('utf-8')
|
return self.input_buffer.get_text(start_iter, end_iter).decode('utf-8')
|
||||||
|
|
||||||
class DubbleInputDialog:
|
class DubbleInputDialog:
|
||||||
'''Class for Dubble Input dialog'''
|
"""
|
||||||
|
Class for Dubble Input dialog
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self, title, label_str1, label_str2, input_str1=None,
|
def __init__(self, title, label_str1, label_str2, input_str1=None,
|
||||||
input_str2=None, is_modal=True, ok_handler=None, cancel_handler=None):
|
input_str2=None, is_modal=True, ok_handler=None, cancel_handler=None):
|
||||||
self.xml = gtkgui_helpers.get_glade('dubbleinput_dialog.glade')
|
self.xml = gtkgui_helpers.get_glade('dubbleinput_dialog.glade')
|
||||||
|
@ -1876,7 +1964,9 @@ class SubscriptionRequestWindow:
|
||||||
self.window.destroy()
|
self.window.destroy()
|
||||||
|
|
||||||
def on_authorize_button_clicked(self, widget):
|
def on_authorize_button_clicked(self, widget):
|
||||||
'''accept the request'''
|
"""
|
||||||
|
Accept the request
|
||||||
|
"""
|
||||||
gajim.connections[self.account].send_authorization(self.jid)
|
gajim.connections[self.account].send_authorization(self.jid)
|
||||||
self.window.destroy()
|
self.window.destroy()
|
||||||
contact = gajim.contacts.get_contact(self.account, self.jid)
|
contact = gajim.contacts.get_contact(self.account, self.jid)
|
||||||
|
@ -1884,7 +1974,9 @@ class SubscriptionRequestWindow:
|
||||||
AddNewContactWindow(self.account, self.jid, self.user_nick)
|
AddNewContactWindow(self.account, self.jid, self.user_nick)
|
||||||
|
|
||||||
def on_contact_info_activate(self, widget):
|
def on_contact_info_activate(self, widget):
|
||||||
'''ask vcard'''
|
"""
|
||||||
|
Ask vcard
|
||||||
|
"""
|
||||||
if self.jid in gajim.interface.instances[self.account]['infos']:
|
if self.jid in gajim.interface.instances[self.account]['infos']:
|
||||||
gajim.interface.instances[self.account]['infos'][self.jid].window.present()
|
gajim.interface.instances[self.account]['infos'][self.jid].window.present()
|
||||||
else:
|
else:
|
||||||
|
@ -1896,11 +1988,15 @@ class SubscriptionRequestWindow:
|
||||||
get_widget('information_notebook').remove_page(0)
|
get_widget('information_notebook').remove_page(0)
|
||||||
|
|
||||||
def on_start_chat_activate(self, widget):
|
def on_start_chat_activate(self, widget):
|
||||||
'''open chat'''
|
"""
|
||||||
|
Open chat
|
||||||
|
"""
|
||||||
gajim.interface.new_chat_from_jid(self.account, self.jid)
|
gajim.interface.new_chat_from_jid(self.account, self.jid)
|
||||||
|
|
||||||
def on_deny_button_clicked(self, widget):
|
def on_deny_button_clicked(self, widget):
|
||||||
'''refuse the request'''
|
"""
|
||||||
|
Refuse the request
|
||||||
|
"""
|
||||||
gajim.connections[self.account].refuse_authorization(self.jid)
|
gajim.connections[self.account].refuse_authorization(self.jid)
|
||||||
contact = gajim.contacts.get_contact(self.account, self.jid)
|
contact = gajim.contacts.get_contact(self.account, self.jid)
|
||||||
if contact and _('Not in Roster') in contact.get_shown_groups():
|
if contact and _('Not in Roster') in contact.get_shown_groups():
|
||||||
|
@ -1908,7 +2004,9 @@ class SubscriptionRequestWindow:
|
||||||
self.window.destroy()
|
self.window.destroy()
|
||||||
|
|
||||||
def on_actions_button_clicked(self, widget):
|
def on_actions_button_clicked(self, widget):
|
||||||
'''popup action menu'''
|
"""
|
||||||
|
Popup action menu
|
||||||
|
"""
|
||||||
menu = self.prepare_popup_menu()
|
menu = self.prepare_popup_menu()
|
||||||
menu.show_all()
|
menu.show_all()
|
||||||
gtkgui_helpers.popup_emoticons_under_button(menu, widget, self.window.window)
|
gtkgui_helpers.popup_emoticons_under_button(menu, widget, self.window.window)
|
||||||
|
@ -1917,10 +2015,11 @@ class SubscriptionRequestWindow:
|
||||||
class JoinGroupchatWindow:
|
class JoinGroupchatWindow:
|
||||||
def __init__(self, account=None, room_jid='', nick='', password='',
|
def __init__(self, account=None, room_jid='', nick='', password='',
|
||||||
automatic=False):
|
automatic=False):
|
||||||
'''automatic is a dict like {'invities': []}
|
"""
|
||||||
If automatic is not empty, this means room must be automaticaly configured
|
Automatic is a dict like {'invities': []}. If automatic is not empty,
|
||||||
and when done, invities must be automatically invited'''
|
this means room must be automaticaly configured and when done, invities
|
||||||
|
must be automatically invited
|
||||||
|
"""
|
||||||
if account:
|
if account:
|
||||||
if room_jid != '' and room_jid in gajim.gc_connected[account] and\
|
if room_jid != '' and room_jid in gajim.gc_connected[account] and\
|
||||||
gajim.gc_connected[account][room_jid]:
|
gajim.gc_connected[account][room_jid]:
|
||||||
|
@ -2007,7 +2106,9 @@ class JoinGroupchatWindow:
|
||||||
self.window.show_all()
|
self.window.show_all()
|
||||||
|
|
||||||
def on_join_groupchat_window_destroy(self, widget):
|
def on_join_groupchat_window_destroy(self, widget):
|
||||||
'''close window'''
|
"""
|
||||||
|
Close window
|
||||||
|
"""
|
||||||
if self.account and 'join_gc' in gajim.interface.instances[self.account]:
|
if self.account and 'join_gc' in gajim.interface.instances[self.account]:
|
||||||
# remove us from open windows
|
# remove us from open windows
|
||||||
del gajim.interface.instances[self.account]['join_gc']
|
del gajim.interface.instances[self.account]['join_gc']
|
||||||
|
@ -2039,7 +2140,9 @@ class JoinGroupchatWindow:
|
||||||
self._room_jid_entry.set_text(room_jid)
|
self._room_jid_entry.set_text(room_jid)
|
||||||
|
|
||||||
def on_cancel_button_clicked(self, widget):
|
def on_cancel_button_clicked(self, widget):
|
||||||
'''When Cancel button is clicked'''
|
"""
|
||||||
|
When Cancel button is clicked
|
||||||
|
"""
|
||||||
self.window.destroy()
|
self.window.destroy()
|
||||||
|
|
||||||
def on_bookmark_checkbutton_toggled(self, widget):
|
def on_bookmark_checkbutton_toggled(self, widget):
|
||||||
|
@ -2050,7 +2153,9 @@ class JoinGroupchatWindow:
|
||||||
auto_join_checkbutton.set_sensitive(False)
|
auto_join_checkbutton.set_sensitive(False)
|
||||||
|
|
||||||
def on_join_button_clicked(self, widget):
|
def on_join_button_clicked(self, widget):
|
||||||
'''When Join button is clicked'''
|
"""
|
||||||
|
When Join button is clicked
|
||||||
|
"""
|
||||||
if not self.account:
|
if not self.account:
|
||||||
ErrorDialog(_('Invalid Account'),
|
ErrorDialog(_('Invalid Account'),
|
||||||
_('You have to choose an account from which you want to join the '
|
_('You have to choose an account from which you want to join the '
|
||||||
|
@ -2138,7 +2243,9 @@ class SynchroniseSelectAccountDialog:
|
||||||
self.window.destroy()
|
self.window.destroy()
|
||||||
|
|
||||||
def init_accounts(self):
|
def init_accounts(self):
|
||||||
'''initialize listStore with existing accounts'''
|
"""
|
||||||
|
Initialize listStore with existing accounts
|
||||||
|
"""
|
||||||
model = self.accounts_treeview.get_model()
|
model = self.accounts_treeview.get_model()
|
||||||
model.clear()
|
model.clear()
|
||||||
for remote_account in gajim.connections:
|
for remote_account in gajim.connections:
|
||||||
|
@ -2204,7 +2311,9 @@ class SynchroniseSelectContactsDialog:
|
||||||
self.window.destroy()
|
self.window.destroy()
|
||||||
|
|
||||||
def init_contacts(self):
|
def init_contacts(self):
|
||||||
'''initialize listStore with existing accounts'''
|
"""
|
||||||
|
Initialize listStore with existing accounts
|
||||||
|
"""
|
||||||
model = self.contacts_treeview.get_model()
|
model = self.contacts_treeview.get_model()
|
||||||
model.clear()
|
model.clear()
|
||||||
|
|
||||||
|
@ -2267,7 +2376,9 @@ class NewChatDialog(InputDialog):
|
||||||
self.dialog.show_all()
|
self.dialog.show_all()
|
||||||
|
|
||||||
def new_chat_response(self, jid):
|
def new_chat_response(self, jid):
|
||||||
''' called when ok button is clicked '''
|
"""
|
||||||
|
Called when ok button is clicked
|
||||||
|
"""
|
||||||
if gajim.connections[self.account].connected <= 1:
|
if gajim.connections[self.account].connected <= 1:
|
||||||
#if offline or connecting
|
#if offline or connecting
|
||||||
ErrorDialog(_('Connection not available'),
|
ErrorDialog(_('Connection not available'),
|
||||||
|
@ -2433,10 +2544,10 @@ class PopupNotificationWindow:
|
||||||
self.adjust_height_and_move_popup_notification_windows()
|
self.adjust_height_and_move_popup_notification_windows()
|
||||||
|
|
||||||
class SingleMessageWindow:
|
class SingleMessageWindow:
|
||||||
'''SingleMessageWindow can send or show a received
|
"""
|
||||||
singled message depending on action argument which can be 'send'
|
SingleMessageWindow can send or show a received singled message depending on
|
||||||
or 'receive'.
|
action argument which can be 'send' or 'receive'
|
||||||
'''
|
"""
|
||||||
# Keep a reference on windows so garbage collector don't restroy them
|
# Keep a reference on windows so garbage collector don't restroy them
|
||||||
instances = []
|
instances = []
|
||||||
def __init__(self, account, to='', action='', from_whom='', subject='',
|
def __init__(self, account, to='', action='', from_whom='', subject='',
|
||||||
|
@ -2847,7 +2958,10 @@ class XMLConsoleWindow:
|
||||||
TRANSLATED_ACTION = {'add': _('add'), 'modify': _('modify'),
|
TRANSLATED_ACTION = {'add': _('add'), 'modify': _('modify'),
|
||||||
'remove': _('remove')}
|
'remove': _('remove')}
|
||||||
class RosterItemExchangeWindow:
|
class RosterItemExchangeWindow:
|
||||||
''' Windows used when someone send you a exchange contact suggestion '''
|
"""
|
||||||
|
Windows used when someone send you a exchange contact suggestion
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self, account, action, exchange_list, jid_from,
|
def __init__(self, account, action, exchange_list, jid_from,
|
||||||
message_body=None):
|
message_body=None):
|
||||||
self.account = account
|
self.account = account
|
||||||
|
@ -3067,8 +3181,10 @@ class RosterItemExchangeWindow:
|
||||||
|
|
||||||
|
|
||||||
class PrivacyListWindow:
|
class PrivacyListWindow:
|
||||||
'''Window that is used for creating NEW or EDITING already there privacy
|
"""
|
||||||
lists'''
|
Window that is used for creating NEW or EDITING already there privacy lists
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self, account, privacy_list_name, action):
|
def __init__(self, account, privacy_list_name, action):
|
||||||
'''action is 'EDIT' or 'NEW' depending on if we create a new priv list
|
'''action is 'EDIT' or 'NEW' depending on if we create a new priv list
|
||||||
or edit an already existing one'''
|
or edit an already existing one'''
|
||||||
|
@ -3406,9 +3522,10 @@ class PrivacyListWindow:
|
||||||
self.window.destroy()
|
self.window.destroy()
|
||||||
|
|
||||||
class PrivacyListsWindow:
|
class PrivacyListsWindow:
|
||||||
'''Window that is the main window for Privacy Lists;
|
"""
|
||||||
we can list there the privacy lists and ask to create a new one
|
Window that is the main window for Privacy Lists; we can list there the
|
||||||
or edit an already there one'''
|
privacy lists and ask to create a new one or edit an already there one
|
||||||
|
"""
|
||||||
def __init__(self, account):
|
def __init__(self, account):
|
||||||
self.account = account
|
self.account = account
|
||||||
self.privacy_lists_save = []
|
self.privacy_lists_save = []
|
||||||
|
@ -3565,9 +3682,10 @@ class InvitationReceivedDialog:
|
||||||
|
|
||||||
class ProgressDialog:
|
class ProgressDialog:
|
||||||
def __init__(self, title_text, during_text, messages_queue):
|
def __init__(self, title_text, during_text, messages_queue):
|
||||||
'''during text is what to show during the procedure,
|
"""
|
||||||
messages_queue has the message to show
|
During text is what to show during the procedure, messages_queue has the
|
||||||
in the textview'''
|
message to show in the textview
|
||||||
|
"""
|
||||||
self.xml = gtkgui_helpers.get_glade('progress_dialog.glade')
|
self.xml = gtkgui_helpers.get_glade('progress_dialog.glade')
|
||||||
self.dialog = self.xml.get_widget('progress_dialog')
|
self.dialog = self.xml.get_widget('progress_dialog')
|
||||||
self.label = self.xml.get_widget('label')
|
self.label = self.xml.get_widget('label')
|
||||||
|
@ -3595,9 +3713,13 @@ class ProgressDialog:
|
||||||
class SoundChooserDialog(FileChooserDialog):
|
class SoundChooserDialog(FileChooserDialog):
|
||||||
def __init__(self, path_to_snd_file='', on_response_ok=None,
|
def __init__(self, path_to_snd_file='', on_response_ok=None,
|
||||||
on_response_cancel=None):
|
on_response_cancel=None):
|
||||||
'''optionally accepts path_to_snd_file so it has that as selected'''
|
"""
|
||||||
|
Optionally accepts path_to_snd_file so it has that as selected
|
||||||
|
"""
|
||||||
def on_ok(widget, callback):
|
def on_ok(widget, callback):
|
||||||
'''check if file exists and call callback'''
|
"""
|
||||||
|
Check if file exists and call callback
|
||||||
|
"""
|
||||||
path_to_snd_file = self.get_filename()
|
path_to_snd_file = self.get_filename()
|
||||||
path_to_snd_file = gtkgui_helpers.decode_filechooser_file_paths(
|
path_to_snd_file = gtkgui_helpers.decode_filechooser_file_paths(
|
||||||
(path_to_snd_file,))[0]
|
(path_to_snd_file,))[0]
|
||||||
|
@ -3634,7 +3756,9 @@ class SoundChooserDialog(FileChooserDialog):
|
||||||
class ImageChooserDialog(FileChooserDialog):
|
class ImageChooserDialog(FileChooserDialog):
|
||||||
def __init__(self, path_to_file='', on_response_ok=None,
|
def __init__(self, path_to_file='', on_response_ok=None,
|
||||||
on_response_cancel=None):
|
on_response_cancel=None):
|
||||||
'''optionally accepts path_to_snd_file so it has that as selected'''
|
"""
|
||||||
|
Optionally accepts path_to_snd_file so it has that as selected
|
||||||
|
"""
|
||||||
def on_ok(widget, callback):
|
def on_ok(widget, callback):
|
||||||
'''check if file exists and call callback'''
|
'''check if file exists and call callback'''
|
||||||
path_to_file = self.get_filename()
|
path_to_file = self.get_filename()
|
||||||
|
@ -3725,8 +3849,10 @@ class AvatarChooserDialog(ImageChooserDialog):
|
||||||
|
|
||||||
class AddSpecialNotificationDialog:
|
class AddSpecialNotificationDialog:
|
||||||
def __init__(self, jid):
|
def __init__(self, jid):
|
||||||
'''jid is the jid for which we want to add special notification
|
"""
|
||||||
(sound and notification popups)'''
|
jid is the jid for which we want to add special notification (sound and
|
||||||
|
notification popups)
|
||||||
|
"""
|
||||||
self.xml = gtkgui_helpers.get_glade('add_special_notification_window.glade')
|
self.xml = gtkgui_helpers.get_glade('add_special_notification_window.glade')
|
||||||
self.window = self.xml.get_widget('add_special_notification_window')
|
self.window = self.xml.get_widget('add_special_notification_window')
|
||||||
self.condition_combobox = self.xml.get_widget('condition_combobox')
|
self.condition_combobox = self.xml.get_widget('condition_combobox')
|
||||||
|
@ -3846,7 +3972,9 @@ class AdvancedNotificationsWindow:
|
||||||
self.window.show_all()
|
self.window.show_all()
|
||||||
|
|
||||||
def initiate_rule_state(self):
|
def initiate_rule_state(self):
|
||||||
'''Set values for all widgets'''
|
"""
|
||||||
|
Set values for all widgets
|
||||||
|
"""
|
||||||
if self.active_num < 0:
|
if self.active_num < 0:
|
||||||
return
|
return
|
||||||
# event
|
# event
|
||||||
|
@ -4237,8 +4365,10 @@ class TransformChatToMUC:
|
||||||
# Keep a reference on windows so garbage collector don't restroy them
|
# Keep a reference on windows so garbage collector don't restroy them
|
||||||
instances = []
|
instances = []
|
||||||
def __init__(self, account, jids, preselected=None):
|
def __init__(self, account, jids, preselected=None):
|
||||||
'''This window is used to trasform a one-to-one chat to a MUC.
|
"""
|
||||||
We do 2 things: first select the server and then make a guests list.'''
|
This window is used to trasform a one-to-one chat to a MUC. We do 2
|
||||||
|
things: first select the server and then make a guests list
|
||||||
|
"""
|
||||||
|
|
||||||
self.instances.append(self)
|
self.instances.append(self)
|
||||||
self.account = account
|
self.account = account
|
||||||
|
@ -4389,7 +4519,9 @@ class DataFormWindow(Dialog):
|
||||||
self.destroy()
|
self.destroy()
|
||||||
|
|
||||||
class ESessionInfoWindow:
|
class ESessionInfoWindow:
|
||||||
'''Class for displaying information about a XEP-0116 encrypted session'''
|
"""
|
||||||
|
Class for displaying information about a XEP-0116 encrypted session
|
||||||
|
"""
|
||||||
def __init__(self, session):
|
def __init__(self, session):
|
||||||
self.session = session
|
self.session = session
|
||||||
|
|
||||||
|
@ -4468,7 +4600,9 @@ class ESessionInfoWindow:
|
||||||
YesNoDialog(pritext, sectext, on_response_yes=on_yes, on_response_no=on_no)
|
YesNoDialog(pritext, sectext, on_response_yes=on_yes, on_response_no=on_no)
|
||||||
|
|
||||||
class GPGInfoWindow:
|
class GPGInfoWindow:
|
||||||
'''Class for displaying information about a XEP-0116 encrypted session'''
|
"""
|
||||||
|
Class for displaying information about a XEP-0116 encrypted session
|
||||||
|
"""
|
||||||
def __init__(self, control):
|
def __init__(self, control):
|
||||||
xml = gtkgui_helpers.get_glade('esession_info_window.glade')
|
xml = gtkgui_helpers.get_glade('esession_info_window.glade')
|
||||||
security_image = xml.get_widget('security_image')
|
security_image = xml.get_widget('security_image')
|
||||||
|
|
Loading…
Reference in New Issue