merge local diff
This commit is contained in:
commit
18fc83c1e8
|
@ -35,7 +35,9 @@ class AtomWindow:
|
|||
|
||||
@classmethod
|
||||
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)
|
||||
|
||||
if cls.window is None:
|
||||
|
@ -48,7 +50,9 @@ class AtomWindow:
|
|||
cls.window = None
|
||||
|
||||
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
|
||||
|
||||
self.entry = None # the entry actually displayed
|
||||
|
@ -69,7 +73,9 @@ class AtomWindow:
|
|||
self.feed_title_eventbox.add_events(gtk.gdk.BUTTON_PRESS_MASK)
|
||||
|
||||
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
|
||||
|
||||
newentry = self.__class__.entries.pop(0)
|
||||
|
@ -103,8 +109,10 @@ class AtomWindow:
|
|||
self.entry = newentry
|
||||
|
||||
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)
|
||||
if count>0:
|
||||
self.new_entry_label.set_text(i18n.ngettext(
|
||||
|
|
138
src/config.py
138
src/config.py
|
@ -63,17 +63,23 @@ from common.exceptions import GajimGeneralException
|
|||
|
||||
#---------- PreferencesWindow class -------------#
|
||||
class PreferencesWindow:
|
||||
'''Class for Preferences window'''
|
||||
"""
|
||||
Class for Preferences window
|
||||
"""
|
||||
|
||||
def on_preferences_window_destroy(self, widget):
|
||||
'''close window'''
|
||||
"""
|
||||
Close window
|
||||
"""
|
||||
del gajim.interface.instances['preferences']
|
||||
|
||||
def on_close_button_clicked(self, widget):
|
||||
self.window.destroy()
|
||||
|
||||
def __init__(self):
|
||||
'''Initialize Preferences window'''
|
||||
"""
|
||||
Initialize Preferences window
|
||||
"""
|
||||
self.xml = gtkgui_helpers.get_glade('preferences_window.glade')
|
||||
self.window = self.xml.get_widget('preferences_window')
|
||||
self.window.set_transient_for(gajim.interface.roster.window)
|
||||
|
@ -495,8 +501,10 @@ class PreferencesWindow:
|
|||
self.window.hide()
|
||||
|
||||
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:
|
||||
# a non existant key return default value
|
||||
return gajim.config.get_per('accounts', '__default__', opt)
|
||||
|
@ -585,7 +593,9 @@ class PreferencesWindow:
|
|||
self.toggle_emoticons()
|
||||
|
||||
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():
|
||||
win.toggle_emoticons()
|
||||
|
||||
|
@ -779,7 +789,9 @@ class PreferencesWindow:
|
|||
self.sounds_preferences.window.present()
|
||||
|
||||
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():
|
||||
win.update_tags()
|
||||
|
||||
|
@ -800,7 +812,9 @@ class PreferencesWindow:
|
|||
gajim.interface.save_config()
|
||||
|
||||
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():
|
||||
win.update_font()
|
||||
|
||||
|
@ -879,7 +893,9 @@ class PreferencesWindow:
|
|||
gajim.interface.save_config()
|
||||
|
||||
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:
|
||||
color = self.xml.get_widget(widget_name).get_color()
|
||||
color_string = gtkgui_helpers.make_color_string(color)
|
||||
|
@ -1346,7 +1362,10 @@ class ManageProxiesWindow:
|
|||
|
||||
#---------- AccountsWindow class -------------#
|
||||
class AccountsWindow:
|
||||
'''Class for accounts window: list of accounts'''
|
||||
"""
|
||||
Class for accounts window: list of accounts
|
||||
"""
|
||||
|
||||
def on_accounts_window_destroy(self, widget):
|
||||
del gajim.interface.instances['accounts']
|
||||
|
||||
|
@ -1414,7 +1433,9 @@ class AccountsWindow:
|
|||
iter_ = model.iter_next(iter_)
|
||||
|
||||
def init_accounts(self):
|
||||
'''initialize listStore with existing accounts'''
|
||||
"""
|
||||
Initialize listStore with existing accounts
|
||||
"""
|
||||
self.remove_button.set_sensitive(False)
|
||||
self.rename_button.set_sensitive(False)
|
||||
self.current_account = None
|
||||
|
@ -1440,7 +1461,9 @@ class AccountsWindow:
|
|||
elif self.need_relogin and self.current_account and \
|
||||
gajim.connections[self.current_account].connected > 0:
|
||||
def login(account, show_before, status_before):
|
||||
''' login with previous status'''
|
||||
"""
|
||||
Login with previous status
|
||||
"""
|
||||
# first make sure connection is really closed,
|
||||
# 0.5 may not be enough
|
||||
gajim.connections[account].disconnect(True)
|
||||
|
@ -1473,7 +1496,9 @@ class AccountsWindow:
|
|||
self.resend_presence = False
|
||||
|
||||
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()
|
||||
(model, iter_) = sel.get_selected()
|
||||
if iter_:
|
||||
|
@ -1739,7 +1764,9 @@ class AccountsWindow:
|
|||
gajim.config.get_per('accounts', account, 'use_ft_proxies'))
|
||||
|
||||
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:
|
||||
gajim.interface.instances['account_creation_wizard'].window.present()
|
||||
else:
|
||||
|
@ -1747,8 +1774,10 @@ class AccountsWindow:
|
|||
AccountCreationWizardWindow()
|
||||
|
||||
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:
|
||||
return
|
||||
account = self.current_account
|
||||
|
@ -2409,8 +2438,11 @@ class AccountsWindow:
|
|||
'zeroconf_email', email)
|
||||
|
||||
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):
|
||||
gtk.Table.__init__(self)
|
||||
self.infos = infos
|
||||
|
@ -2418,7 +2450,9 @@ class FakeDataForm(gtk.Table, object):
|
|||
self._draw_table()
|
||||
|
||||
def _draw_table(self):
|
||||
'''Draw the table'''
|
||||
"""
|
||||
Draw the table
|
||||
"""
|
||||
nbrow = 0
|
||||
if 'instructions' in self.infos:
|
||||
nbrow = 1
|
||||
|
@ -2452,9 +2486,11 @@ class FakeDataForm(gtk.Table, object):
|
|||
return self.infos
|
||||
|
||||
class ServiceRegistrationWindow:
|
||||
'''Class for Service registration window:
|
||||
Window that appears when we want to subscribe to a service
|
||||
if is_form we use dataforms_widget else we use service_registarion_window'''
|
||||
"""
|
||||
Class for Service registration window. Window that appears when we want to
|
||||
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):
|
||||
self.service = service
|
||||
self.account = account
|
||||
|
@ -2501,7 +2537,7 @@ class ServiceRegistrationWindow:
|
|||
self.window.destroy()
|
||||
|
||||
class GroupchatConfigWindow:
|
||||
'''GroupchatConfigWindow class'''
|
||||
|
||||
def __init__(self, account, room_jid, form = None):
|
||||
self.account = account
|
||||
self.room_jid = room_jid
|
||||
|
@ -2654,7 +2690,9 @@ class GroupchatConfigWindow:
|
|||
self.remove_button[affiliation].set_sensitive(True)
|
||||
|
||||
def affiliation_list_received(self, users_dict):
|
||||
'''Fill the affiliation treeview'''
|
||||
"""
|
||||
Fill the affiliation treeview
|
||||
"""
|
||||
for jid in users_dict:
|
||||
affiliation = users_dict[jid]['affiliation']
|
||||
if affiliation not in self.affiliation_labels.keys():
|
||||
|
@ -2703,8 +2741,10 @@ class GroupchatConfigWindow:
|
|||
|
||||
#---------- RemoveAccountWindow class -------------#
|
||||
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):
|
||||
if self.account in gajim.interface.instances:
|
||||
|
@ -2904,7 +2944,9 @@ class ManageBookmarksWindow:
|
|||
del gajim.interface.instances['manage_bookmarks']
|
||||
|
||||
def on_add_bookmark_button_clicked(self, widget):
|
||||
'''Add a new bookmark.'''
|
||||
"""
|
||||
Add a new bookmark
|
||||
"""
|
||||
# Get the account that is currently used
|
||||
# (the parent of the currently selected item)
|
||||
(model, iter_) = self.selection.get_selected()
|
||||
|
@ -2929,9 +2971,9 @@ class ManageBookmarksWindow:
|
|||
self.view.set_cursor(model.get_path(iter_))
|
||||
|
||||
def on_remove_bookmark_button_clicked(self, widget):
|
||||
'''
|
||||
Remove selected bookmark.
|
||||
'''
|
||||
"""
|
||||
Remove selected bookmark
|
||||
"""
|
||||
(model, iter_) = self.selection.get_selected()
|
||||
if not iter_: # Nothing selected
|
||||
return
|
||||
|
@ -2944,9 +2986,9 @@ class ManageBookmarksWindow:
|
|||
self.clear_fields()
|
||||
|
||||
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()
|
||||
|
||||
if not model.iter_parent(iter_):
|
||||
|
@ -2963,10 +3005,10 @@ class ManageBookmarksWindow:
|
|||
return True
|
||||
|
||||
def on_ok_button_clicked(self, widget):
|
||||
'''
|
||||
Parse the treestore data into our new bookmarks array,
|
||||
then send the new bookmarks to the server.
|
||||
'''
|
||||
"""
|
||||
Parse the treestore data into our new bookmarks array, then send the new
|
||||
bookmarks to the server.
|
||||
"""
|
||||
(model, iter_) = self.selection.get_selected()
|
||||
if iter_ and model.iter_parent(iter_):
|
||||
#bookmark selected, check it
|
||||
|
@ -2997,9 +3039,9 @@ class ManageBookmarksWindow:
|
|||
self.window.destroy()
|
||||
|
||||
def bookmark_selected(self, selection):
|
||||
'''
|
||||
"""
|
||||
Fill in the bookmark's data into the fields.
|
||||
'''
|
||||
"""
|
||||
(model, iter_) = selection.get_selected()
|
||||
|
||||
if not iter_:
|
||||
|
@ -3444,8 +3486,10 @@ class AccountCreationWizardWindow:
|
|||
return True # loop forever
|
||||
|
||||
def new_acc_connected(self, form, is_form, ssl_msg, ssl_err, ssl_cert,
|
||||
ssl_fingerprint):
|
||||
'''connection to server succeded, present the form to the user.'''
|
||||
ssl_fingerprint):
|
||||
"""
|
||||
Connection to server succeded, present the form to the user
|
||||
"""
|
||||
if self.update_progressbar_timeout_id is not None:
|
||||
gobject.source_remove(self.update_progressbar_timeout_id)
|
||||
self.back_button.show()
|
||||
|
@ -3479,7 +3523,9 @@ class AccountCreationWizardWindow:
|
|||
self.notebook.set_current_page(4) # show form page
|
||||
|
||||
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:
|
||||
return
|
||||
if self.update_progressbar_timeout_id is not None:
|
||||
|
@ -3499,7 +3545,9 @@ class AccountCreationWizardWindow:
|
|||
self.notebook.set_current_page(6) # show finish page
|
||||
|
||||
def acc_is_ok(self, config):
|
||||
'''Account creation succeeded'''
|
||||
"""
|
||||
Account creation succeeded
|
||||
"""
|
||||
self.create_vars(config)
|
||||
self.show_finish_page()
|
||||
|
||||
|
@ -3507,7 +3555,9 @@ class AccountCreationWizardWindow:
|
|||
gobject.source_remove(self.update_progressbar_timeout_id)
|
||||
|
||||
def acc_is_not_ok(self, reason):
|
||||
'''Account creation failed'''
|
||||
"""
|
||||
Account creation failed
|
||||
"""
|
||||
self.back_button.show()
|
||||
self.cancel_button.show()
|
||||
self.go_online_checkbutton.hide()
|
||||
|
|
|
@ -158,8 +158,10 @@ class TextViewImage(gtk.Image):
|
|||
|
||||
|
||||
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(
|
||||
quote = (gobject.SIGNAL_RUN_LAST | gobject.SIGNAL_ACTION,
|
||||
None, # return value
|
||||
|
@ -177,8 +179,10 @@ class ConversationTextview(gobject.GObject):
|
|||
SCROLL_DELAY = 33 # milliseconds
|
||||
|
||||
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)
|
||||
self.used_in_history_window = used_in_history_window
|
||||
|
||||
|
@ -642,8 +646,9 @@ class ConversationTextview(gobject.GObject):
|
|||
return False
|
||||
|
||||
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]
|
||||
x, y = self.tv.window_to_buffer_coords(gtk.TEXT_WINDOW_TEXT,
|
||||
pointer_x, pointer_y)
|
||||
|
@ -688,7 +693,9 @@ class ConversationTextview(gobject.GObject):
|
|||
self.change_cursor = True
|
||||
|
||||
def clear(self, tv = None):
|
||||
'''clear text in the textview'''
|
||||
"""
|
||||
Clear text in the textview
|
||||
"""
|
||||
buffer_ = self.tv.get_buffer()
|
||||
start, end = buffer_.get_bounds()
|
||||
buffer_.delete(start, end)
|
||||
|
@ -698,15 +705,18 @@ class ConversationTextview(gobject.GObject):
|
|||
self.focus_out_end_mark = None
|
||||
|
||||
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)
|
||||
|
||||
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)
|
||||
and if we have sth selected we show a submenu with actions on
|
||||
the phrase (see on_conversation_textview_button_press_event)'''
|
||||
|
||||
"""
|
||||
Override the default context menu and we prepend Clear (only if
|
||||
used_in_history_window is False) and if we have sth selected we show a
|
||||
submenu with actions on the phrase (see
|
||||
on_conversation_textview_button_press_event)
|
||||
"""
|
||||
separator_menuitem_was_added = False
|
||||
if not self.used_in_history_window:
|
||||
item = gtk.SeparatorMenuItem()
|
||||
|
@ -971,13 +981,13 @@ class ConversationTextview(gobject.GObject):
|
|||
|
||||
|
||||
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,
|
||||
then print special text (that happens many times until
|
||||
last special text is printed) and then returns the index
|
||||
"""
|
||||
Detect special text (emots & links & formatting), print normal text
|
||||
before any special text it founds, then print special text (that happens
|
||||
many times until last special text is printed) and then return the index
|
||||
after *last* special text, so we can print it in
|
||||
print_conversation_line()'''
|
||||
|
||||
print_conversation_line()
|
||||
"""
|
||||
buffer_ = self.tv.get_buffer()
|
||||
|
||||
insert_tags_func = buffer_.insert_with_tags_by_name
|
||||
|
@ -1023,8 +1033,10 @@ class ConversationTextview(gobject.GObject):
|
|||
return buffer_.get_end_iter()
|
||||
|
||||
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 = []
|
||||
use_other_tags = True
|
||||
text_is_valid_uri = False
|
||||
|
@ -1163,9 +1175,12 @@ class ConversationTextview(gobject.GObject):
|
|||
buffer_.insert_with_tags_by_name(end_iter, '\n', 'eol')
|
||||
|
||||
def print_conversation_line(self, text, jid, kind, name, tim,
|
||||
other_tags_for_name=[], other_tags_for_time=[], other_tags_for_text=[],
|
||||
subject=None, old_kind=None, xhtml=None, simple=False, graphics=True):
|
||||
'''prints 'chat' type messages'''
|
||||
other_tags_for_name=[], other_tags_for_time=[],
|
||||
other_tags_for_text=[], subject=None, old_kind=None, xhtml=None,
|
||||
simple=False, graphics=True):
|
||||
"""
|
||||
Print 'chat' type messages
|
||||
"""
|
||||
buffer_ = self.tv.get_buffer()
|
||||
buffer_.begin_user_action()
|
||||
if self.marks_queue.full():
|
||||
|
@ -1263,8 +1278,10 @@ class ConversationTextview(gobject.GObject):
|
|||
buffer_.end_user_action()
|
||||
|
||||
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 = ''
|
||||
# get difference in days since epoch (86400 = 24*3600)
|
||||
# number of days since epoch for current time (in GMT) -
|
||||
|
@ -1317,8 +1334,10 @@ class ConversationTextview(gobject.GObject):
|
|||
self.print_empty_line()
|
||||
|
||||
def print_real_text(self, text, text_tags=[], name=None, xhtml=None,
|
||||
graphics=True):
|
||||
'''this adds normal and special text. call this to add text'''
|
||||
graphics=True):
|
||||
"""
|
||||
Add normal and special text. call this to add text
|
||||
"""
|
||||
if xhtml:
|
||||
try:
|
||||
if name and (text.startswith('/me ') or text.startswith('/me\n')):
|
||||
|
|
|
@ -38,7 +38,10 @@ import itertools
|
|||
|
||||
class DataFormWidget(gtk.Alignment, object):
|
||||
# "public" interface
|
||||
''' Data Form widget. Use like any other widget. '''
|
||||
"""
|
||||
Data Form widget. Use like any other widget
|
||||
"""
|
||||
|
||||
def __init__(self, dataformnode=None):
|
||||
''' Create a widget. '''
|
||||
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)
|
||||
|
||||
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)
|
||||
|
||||
self.del_data_form()
|
||||
|
@ -84,7 +89,9 @@ class DataFormWidget(gtk.Alignment, object):
|
|||
gtkgui_helpers.label_set_autowrap(self.instructions_label)
|
||||
|
||||
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
|
||||
|
||||
def del_data_form(self):
|
||||
|
@ -95,8 +102,10 @@ class DataFormWidget(gtk.Alignment, object):
|
|||
'Data form presented in a widget')
|
||||
|
||||
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.title is not None:
|
||||
return self._data_form.title
|
||||
|
@ -117,9 +126,11 @@ class DataFormWidget(gtk.Alignment, object):
|
|||
pass
|
||||
|
||||
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
|
||||
which is actually displayed.'''
|
||||
"""
|
||||
Remove data about existing form. This metod is empty, because it is
|
||||
rewritten by build_*_data_form, according to type of form which is
|
||||
actually displayed
|
||||
"""
|
||||
pass
|
||||
|
||||
def build_single_data_form(self):
|
||||
|
@ -138,14 +149,18 @@ class DataFormWidget(gtk.Alignment, object):
|
|||
self.clean_data_form = self.clean_single_data_form
|
||||
|
||||
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.clean_data_form = self.empty_method # we won't call it twice
|
||||
del self.singleform
|
||||
|
||||
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)
|
||||
|
||||
self.clean_data_form()
|
||||
|
@ -196,13 +211,17 @@ class DataFormWidget(gtk.Alignment, object):
|
|||
self.refresh_multiple_buttons()
|
||||
|
||||
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
|
||||
del self.multiplemodel
|
||||
|
||||
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()
|
||||
model = self.records_treeview.get_model()
|
||||
count = selection.count_selected_rows()
|
||||
|
@ -273,9 +292,12 @@ class DataFormWidget(gtk.Alignment, object):
|
|||
self.refresh_multiple_buttons()
|
||||
|
||||
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
|
||||
forms, it is in another class.'''
|
||||
"""
|
||||
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
|
||||
forms, it is in another class
|
||||
"""
|
||||
|
||||
def __init__(self, dataform):
|
||||
assert isinstance(dataform, dataforms.SimpleDataForm)
|
||||
|
||||
|
@ -284,9 +306,11 @@ class SingleForm(gtk.Table, object):
|
|||
self.set_row_spacings(6)
|
||||
|
||||
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.
|
||||
Returns decorated widget. '''
|
||||
"""
|
||||
Adds a tooltip containing field's description to a widget. Creates
|
||||
EventBox if widget doesn't have its own gdk window. Returns decorated
|
||||
widget
|
||||
"""
|
||||
if field.description != '':
|
||||
if widget.flags() & gtk.NO_WINDOW:
|
||||
evbox = gtk.EventBox()
|
||||
|
|
304
src/dialogs.py
304
src/dialogs.py
|
@ -61,9 +61,14 @@ from common import dataforms
|
|||
from common.exceptions import GajimGeneralException
|
||||
|
||||
class EditGroupsDialog:
|
||||
'''Class for the edit group dialog window'''
|
||||
"""
|
||||
Class for the edit group dialog window
|
||||
"""
|
||||
|
||||
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.dialog = self.xml.get_widget('edit_groups_dialog')
|
||||
self.dialog.set_transient_for(gajim.interface.roster.window)
|
||||
|
@ -96,7 +101,9 @@ class EditGroupsDialog:
|
|||
self.dialog.destroy()
|
||||
|
||||
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_:
|
||||
gajim.interface.roster.remove_contact_from_groups(contact.jid, account, [group])
|
||||
|
||||
|
@ -104,7 +111,9 @@ class EditGroupsDialog:
|
|||
gajim.interface.roster.draw_group(_('General'), account)
|
||||
|
||||
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_:
|
||||
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)
|
||||
|
||||
class PassphraseDialog:
|
||||
'''Class for Passphrase dialog'''
|
||||
"""
|
||||
Class for Passphrase dialog
|
||||
"""
|
||||
def __init__(self, titletext, labeltext, checkbuttontext=None,
|
||||
ok_handler=None, cancel_handler=None):
|
||||
self.xml = gtkgui_helpers.get_glade('passphrase_dialog.glade')
|
||||
|
@ -258,7 +269,10 @@ class PassphraseDialog:
|
|||
self.cancel_handler()
|
||||
|
||||
class ChooseGPGKeyDialog:
|
||||
'''Class for GPG key dialog'''
|
||||
"""
|
||||
Class for GPG key dialog
|
||||
"""
|
||||
|
||||
def __init__(self, title_text, prompt_text, secret_keys, on_response,
|
||||
selected=None):
|
||||
'''secret_keys : {keyID: userName, ...}'''
|
||||
|
@ -428,9 +442,9 @@ class ChangeActivityDialog:
|
|||
self.subactivity = data[1]
|
||||
|
||||
def on_ok_button_clicked(self, widget):
|
||||
'''
|
||||
"""
|
||||
Return activity and messsage (None if no activity selected)
|
||||
'''
|
||||
"""
|
||||
if self.checkbutton.get_active():
|
||||
self.on_response(self.activity, self.subactivity,
|
||||
self.entry.get_text().decode('utf-8'))
|
||||
|
@ -524,10 +538,10 @@ class ChangeMoodDialog:
|
|||
self.window.destroy()
|
||||
|
||||
class TimeoutDialog:
|
||||
'''
|
||||
"""
|
||||
Class designed to be derivated to create timeout'd dialogs (dialogs that
|
||||
closes automatically after a timeout)
|
||||
'''
|
||||
"""
|
||||
def __init__(self, timeout, on_timeout):
|
||||
self.countdown_left = timeout
|
||||
self.countdown_enabled = True
|
||||
|
@ -540,7 +554,9 @@ class TimeoutDialog:
|
|||
gobject.timeout_add_seconds(1, self.countdown)
|
||||
|
||||
def on_timeout():
|
||||
'''To be implemented in derivated classes'''
|
||||
"""
|
||||
To be implemented in derivated classes
|
||||
"""
|
||||
pass
|
||||
|
||||
def countdown(self):
|
||||
|
@ -638,7 +654,9 @@ class ChangeStatusMessageDialog(TimeoutDialog):
|
|||
self.dialog.show_all()
|
||||
|
||||
def draw_activity(self):
|
||||
'''Set activity button'''
|
||||
"""
|
||||
Set activity button
|
||||
"""
|
||||
img = self.xml.get_widget('activity_image')
|
||||
label = self.xml.get_widget('activity_button_label')
|
||||
if 'activity' in self.pep_dict and self.pep_dict['activity'] in \
|
||||
|
@ -661,7 +679,9 @@ class ChangeStatusMessageDialog(TimeoutDialog):
|
|||
label.set_text('')
|
||||
|
||||
def draw_mood(self):
|
||||
'''Set mood button'''
|
||||
"""
|
||||
Set mood button
|
||||
"""
|
||||
img = self.xml.get_widget('mood_image')
|
||||
label = self.xml.get_widget('mood_button_label')
|
||||
if self.pep_dict['mood'] in pep.MOODS:
|
||||
|
@ -803,13 +823,17 @@ class ChangeStatusMessageDialog(TimeoutDialog):
|
|||
self.pep_dict['mood_text'])
|
||||
|
||||
class AddNewContactWindow:
|
||||
'''Class for AddNewContactWindow'''
|
||||
"""
|
||||
Class for AddNewContactWindow
|
||||
"""
|
||||
|
||||
uid_labels = {'jabber': _('Jabber ID:'),
|
||||
'aim': _('AIM Address:'),
|
||||
'gadu-gadu': _('GG Number:'),
|
||||
'icq': _('ICQ Number:'),
|
||||
'msn': _('MSN Address:'),
|
||||
'yahoo': _('Yahoo! Address:')}
|
||||
|
||||
def __init__(self, account=None, jid=None, user_nick=None, group=None):
|
||||
self.account = account
|
||||
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()
|
||||
|
||||
def on_cancel_button_clicked(self, widget):
|
||||
'''When Cancel button is clicked'''
|
||||
"""
|
||||
When Cancel button is clicked
|
||||
"""
|
||||
self.window.destroy()
|
||||
|
||||
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()
|
||||
if not jid:
|
||||
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)
|
||||
|
||||
class AboutDialog:
|
||||
'''Class for about dialog'''
|
||||
"""
|
||||
Class for about dialog
|
||||
"""
|
||||
|
||||
def __init__(self):
|
||||
dlg = gtk.AboutDialog()
|
||||
dlg.set_transient_for(gajim.interface.roster.window)
|
||||
|
@ -1184,7 +1215,9 @@ class AboutDialog:
|
|||
return str_[0:-1] # remove latest .
|
||||
|
||||
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)):
|
||||
return os.path.join(gajim.defs.docdir, filename)
|
||||
elif os.path.isfile('../' + filename):
|
||||
|
@ -1273,14 +1306,18 @@ class HigDialog(gtk.MessageDialog):
|
|||
self.destroy()
|
||||
|
||||
def popup(self):
|
||||
'''show dialog'''
|
||||
"""
|
||||
Show dialog
|
||||
"""
|
||||
vb = self.get_children()[0].get_children()[0] # Give focus to top vbox
|
||||
vb.set_flags(gtk.CAN_FOCUS)
|
||||
vb.grab_focus()
|
||||
self.show_all()
|
||||
|
||||
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,
|
||||
select_multiple = False, current_folder = None, on_response_ok = None,
|
||||
on_response_cancel = None):
|
||||
|
@ -1332,7 +1369,10 @@ class AspellDictError:
|
|||
gajim.config.set('use_speller', False)
|
||||
|
||||
class ConfirmationDialog(HigDialog):
|
||||
'''HIG compliant confirmation dialog.'''
|
||||
"""
|
||||
HIG compliant confirmation dialog
|
||||
"""
|
||||
|
||||
def __init__(self, pritext, sectext='', on_response_ok=None,
|
||||
on_response_cancel=None):
|
||||
self.user_response_ok = on_response_ok
|
||||
|
@ -1359,7 +1399,10 @@ class ConfirmationDialog(HigDialog):
|
|||
self.destroy()
|
||||
|
||||
class NonModalConfirmationDialog(HigDialog):
|
||||
'''HIG compliant non modal confirmation dialog.'''
|
||||
"""
|
||||
HIG compliant non modal confirmation dialog
|
||||
"""
|
||||
|
||||
def __init__(self, pritext, sectext='', on_response_ok=None,
|
||||
on_response_cancel=None):
|
||||
self.user_response_ok = on_response_ok
|
||||
|
@ -1386,8 +1429,11 @@ class NonModalConfirmationDialog(HigDialog):
|
|||
self.destroy()
|
||||
|
||||
class WarningDialog(HigDialog):
|
||||
"""
|
||||
HIG compliant warning dialog
|
||||
"""
|
||||
|
||||
def __init__(self, pritext, sectext=''):
|
||||
'''HIG compliant warning dialog.'''
|
||||
HigDialog.__init__( self, None,
|
||||
gtk.MESSAGE_WARNING, gtk.BUTTONS_OK, pritext, sectext)
|
||||
self.set_modal(False)
|
||||
|
@ -1396,8 +1442,11 @@ class WarningDialog(HigDialog):
|
|||
self.popup()
|
||||
|
||||
class InformationDialog(HigDialog):
|
||||
"""
|
||||
HIG compliant info dialog
|
||||
"""
|
||||
|
||||
def __init__(self, pritext, sectext=''):
|
||||
'''HIG compliant info dialog.'''
|
||||
HigDialog.__init__(self, None,
|
||||
gtk.MESSAGE_INFO, gtk.BUTTONS_OK, pritext, sectext)
|
||||
self.set_modal(False)
|
||||
|
@ -1405,16 +1454,22 @@ class InformationDialog(HigDialog):
|
|||
self.popup()
|
||||
|
||||
class ErrorDialog(HigDialog):
|
||||
"""
|
||||
HIG compliant error dialog
|
||||
"""
|
||||
|
||||
def __init__(self, pritext, sectext=''):
|
||||
'''HIG compliant error dialog.'''
|
||||
HigDialog.__init__( self, None,
|
||||
gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, pritext, sectext)
|
||||
self.popup()
|
||||
|
||||
class YesNoDialog(HigDialog):
|
||||
"""
|
||||
HIG compliant YesNo dialog
|
||||
"""
|
||||
|
||||
def __init__(self, pritext, sectext='', checktext='', on_response_yes=None,
|
||||
on_response_no=None):
|
||||
'''HIG compliant YesNo dialog.'''
|
||||
on_response_no=None):
|
||||
self.user_response_yes = on_response_yes
|
||||
self.user_response_no = on_response_no
|
||||
HigDialog.__init__( self, None,
|
||||
|
@ -1448,15 +1503,20 @@ class YesNoDialog(HigDialog):
|
|||
self.destroy()
|
||||
|
||||
def is_checked(self):
|
||||
''' Get active state of the checkbutton '''
|
||||
"""
|
||||
Get active state of the checkbutton
|
||||
"""
|
||||
if not self.checkbutton:
|
||||
return False
|
||||
return self.checkbutton.get_active()
|
||||
|
||||
class ConfirmationDialogCheck(ConfirmationDialog):
|
||||
'''HIG compliant confirmation dialog with checkbutton.'''
|
||||
def __init__(self, pritext, sectext='', checktext='',
|
||||
on_response_ok=None, on_response_cancel=None, is_modal=True):
|
||||
"""
|
||||
HIG compliant confirmation dialog with checkbutton
|
||||
"""
|
||||
|
||||
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_cancel = on_response_cancel
|
||||
|
||||
|
@ -1495,11 +1555,16 @@ class ConfirmationDialogCheck(ConfirmationDialog):
|
|||
self.destroy()
|
||||
|
||||
def is_checked(self):
|
||||
''' Get active state of the checkbutton '''
|
||||
"""
|
||||
Get active state of the checkbutton
|
||||
"""
|
||||
return self.checkbutton.get_active()
|
||||
|
||||
class ConfirmationDialogDubbleCheck(ConfirmationDialog):
|
||||
'''HIG compliant confirmation dialog with 2 checkbuttons.'''
|
||||
"""
|
||||
HIG compliant confirmation dialog with 2 checkbuttons
|
||||
"""
|
||||
|
||||
def __init__(self, pritext, sectext='', checktext1='', checktext2='',
|
||||
on_response_ok=None, on_response_cancel=None, is_modal=True):
|
||||
self.user_response_ok = on_response_ok
|
||||
|
@ -1560,7 +1625,10 @@ class ConfirmationDialogDubbleCheck(ConfirmationDialog):
|
|||
return [is_checked_1, is_checked_2]
|
||||
|
||||
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,
|
||||
on_response=None):
|
||||
HigDialog.__init__(self, None, gtk.MESSAGE_QUESTION, gtk.BUTTONS_CANCEL,
|
||||
|
@ -1597,7 +1665,10 @@ class FTOverwriteConfirmationDialog(ConfirmationDialog):
|
|||
self.destroy()
|
||||
|
||||
class CommonInputDialog:
|
||||
'''Common Class for Input dialogs'''
|
||||
"""
|
||||
Common Class for Input dialogs
|
||||
"""
|
||||
|
||||
def __init__(self, title, label_str, is_modal, ok_handler, cancel_handler):
|
||||
self.dialog = self.xml.get_widget('input_dialog')
|
||||
label = self.xml.get_widget('label')
|
||||
|
@ -1633,9 +1704,12 @@ class CommonInputDialog:
|
|||
self.dialog.destroy()
|
||||
|
||||
class InputDialog(CommonInputDialog):
|
||||
'''Class for Input dialog'''
|
||||
"""
|
||||
Class for Input dialog
|
||||
"""
|
||||
|
||||
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')
|
||||
CommonInputDialog.__init__(self, title, label_str, is_modal, ok_handler,
|
||||
cancel_handler)
|
||||
|
@ -1651,9 +1725,12 @@ class InputDialog(CommonInputDialog):
|
|||
return self.input_entry.get_text().decode('utf-8')
|
||||
|
||||
class InputDialogCheck(InputDialog):
|
||||
'''Class for Input dialog'''
|
||||
"""
|
||||
Class for Input dialog
|
||||
"""
|
||||
|
||||
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')
|
||||
InputDialog.__init__(self, title, label_str, input_str=input_str,
|
||||
is_modal=is_modal, ok_handler=ok_handler,
|
||||
|
@ -1683,7 +1760,9 @@ class InputDialogCheck(InputDialog):
|
|||
return self.input_entry.get_text().decode('utf-8')
|
||||
|
||||
def is_checked(self):
|
||||
''' Get active state of the checkbutton '''
|
||||
"""
|
||||
Get active state of the checkbutton
|
||||
"""
|
||||
try:
|
||||
return self.checkbutton.get_active()
|
||||
except Exception:
|
||||
|
@ -1691,7 +1770,10 @@ class InputDialogCheck(InputDialog):
|
|||
return False
|
||||
|
||||
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):
|
||||
InputDialogCheck.__init__(self, title, '', checktext=check_text,
|
||||
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))
|
||||
|
||||
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,
|
||||
ok_handler=None, cancel_handler=None):
|
||||
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')
|
||||
|
||||
class DubbleInputDialog:
|
||||
'''Class for Dubble Input dialog'''
|
||||
"""
|
||||
Class for Dubble Input dialog
|
||||
"""
|
||||
|
||||
def __init__(self, title, label_str1, label_str2, input_str1=None,
|
||||
input_str2=None, is_modal=True, ok_handler=None, cancel_handler=None):
|
||||
self.xml = gtkgui_helpers.get_glade('dubbleinput_dialog.glade')
|
||||
|
@ -1876,7 +1964,9 @@ class SubscriptionRequestWindow:
|
|||
self.window.destroy()
|
||||
|
||||
def on_authorize_button_clicked(self, widget):
|
||||
'''accept the request'''
|
||||
"""
|
||||
Accept the request
|
||||
"""
|
||||
gajim.connections[self.account].send_authorization(self.jid)
|
||||
self.window.destroy()
|
||||
contact = gajim.contacts.get_contact(self.account, self.jid)
|
||||
|
@ -1884,7 +1974,9 @@ class SubscriptionRequestWindow:
|
|||
AddNewContactWindow(self.account, self.jid, self.user_nick)
|
||||
|
||||
def on_contact_info_activate(self, widget):
|
||||
'''ask vcard'''
|
||||
"""
|
||||
Ask vcard
|
||||
"""
|
||||
if self.jid in gajim.interface.instances[self.account]['infos']:
|
||||
gajim.interface.instances[self.account]['infos'][self.jid].window.present()
|
||||
else:
|
||||
|
@ -1896,11 +1988,15 @@ class SubscriptionRequestWindow:
|
|||
get_widget('information_notebook').remove_page(0)
|
||||
|
||||
def on_start_chat_activate(self, widget):
|
||||
'''open chat'''
|
||||
"""
|
||||
Open chat
|
||||
"""
|
||||
gajim.interface.new_chat_from_jid(self.account, self.jid)
|
||||
|
||||
def on_deny_button_clicked(self, widget):
|
||||
'''refuse the request'''
|
||||
"""
|
||||
Refuse the request
|
||||
"""
|
||||
gajim.connections[self.account].refuse_authorization(self.jid)
|
||||
contact = gajim.contacts.get_contact(self.account, self.jid)
|
||||
if contact and _('Not in Roster') in contact.get_shown_groups():
|
||||
|
@ -1908,7 +2004,9 @@ class SubscriptionRequestWindow:
|
|||
self.window.destroy()
|
||||
|
||||
def on_actions_button_clicked(self, widget):
|
||||
'''popup action menu'''
|
||||
"""
|
||||
Popup action menu
|
||||
"""
|
||||
menu = self.prepare_popup_menu()
|
||||
menu.show_all()
|
||||
gtkgui_helpers.popup_emoticons_under_button(menu, widget, self.window.window)
|
||||
|
@ -1916,11 +2014,12 @@ class SubscriptionRequestWindow:
|
|||
|
||||
class JoinGroupchatWindow:
|
||||
def __init__(self, account=None, room_jid='', nick='', password='',
|
||||
automatic=False):
|
||||
'''automatic is a dict like {'invities': []}
|
||||
If automatic is not empty, this means room must be automaticaly configured
|
||||
and when done, invities must be automatically invited'''
|
||||
|
||||
automatic=False):
|
||||
"""
|
||||
Automatic is a dict like {'invities': []}. If automatic is not empty,
|
||||
this means room must be automaticaly configured and when done, invities
|
||||
must be automatically invited
|
||||
"""
|
||||
if account:
|
||||
if room_jid != '' and room_jid in gajim.gc_connected[account] and\
|
||||
gajim.gc_connected[account][room_jid]:
|
||||
|
@ -2007,7 +2106,9 @@ class JoinGroupchatWindow:
|
|||
self.window.show_all()
|
||||
|
||||
def on_join_groupchat_window_destroy(self, widget):
|
||||
'''close window'''
|
||||
"""
|
||||
Close window
|
||||
"""
|
||||
if self.account and 'join_gc' in gajim.interface.instances[self.account]:
|
||||
# remove us from open windows
|
||||
del gajim.interface.instances[self.account]['join_gc']
|
||||
|
@ -2039,7 +2140,9 @@ class JoinGroupchatWindow:
|
|||
self._room_jid_entry.set_text(room_jid)
|
||||
|
||||
def on_cancel_button_clicked(self, widget):
|
||||
'''When Cancel button is clicked'''
|
||||
"""
|
||||
When Cancel button is clicked
|
||||
"""
|
||||
self.window.destroy()
|
||||
|
||||
def on_bookmark_checkbutton_toggled(self, widget):
|
||||
|
@ -2050,7 +2153,9 @@ class JoinGroupchatWindow:
|
|||
auto_join_checkbutton.set_sensitive(False)
|
||||
|
||||
def on_join_button_clicked(self, widget):
|
||||
'''When Join button is clicked'''
|
||||
"""
|
||||
When Join button is clicked
|
||||
"""
|
||||
if not self.account:
|
||||
ErrorDialog(_('Invalid Account'),
|
||||
_('You have to choose an account from which you want to join the '
|
||||
|
@ -2138,7 +2243,9 @@ class SynchroniseSelectAccountDialog:
|
|||
self.window.destroy()
|
||||
|
||||
def init_accounts(self):
|
||||
'''initialize listStore with existing accounts'''
|
||||
"""
|
||||
Initialize listStore with existing accounts
|
||||
"""
|
||||
model = self.accounts_treeview.get_model()
|
||||
model.clear()
|
||||
for remote_account in gajim.connections:
|
||||
|
@ -2204,7 +2311,9 @@ class SynchroniseSelectContactsDialog:
|
|||
self.window.destroy()
|
||||
|
||||
def init_contacts(self):
|
||||
'''initialize listStore with existing accounts'''
|
||||
"""
|
||||
Initialize listStore with existing accounts
|
||||
"""
|
||||
model = self.contacts_treeview.get_model()
|
||||
model.clear()
|
||||
|
||||
|
@ -2267,7 +2376,9 @@ class NewChatDialog(InputDialog):
|
|||
self.dialog.show_all()
|
||||
|
||||
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 offline or connecting
|
||||
ErrorDialog(_('Connection not available'),
|
||||
|
@ -2433,10 +2544,10 @@ class PopupNotificationWindow:
|
|||
self.adjust_height_and_move_popup_notification_windows()
|
||||
|
||||
class SingleMessageWindow:
|
||||
'''SingleMessageWindow can send or show a received
|
||||
singled message depending on action argument which can be 'send'
|
||||
or 'receive'.
|
||||
'''
|
||||
"""
|
||||
SingleMessageWindow can send or show a received singled message depending on
|
||||
action argument which can be 'send' or 'receive'
|
||||
"""
|
||||
# Keep a reference on windows so garbage collector don't restroy them
|
||||
instances = []
|
||||
def __init__(self, account, to='', action='', from_whom='', subject='',
|
||||
|
@ -2847,9 +2958,12 @@ class XMLConsoleWindow:
|
|||
TRANSLATED_ACTION = {'add': _('add'), 'modify': _('modify'),
|
||||
'remove': _('remove')}
|
||||
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,
|
||||
message_body=None):
|
||||
message_body=None):
|
||||
self.account = account
|
||||
self.action = action
|
||||
self.exchange_list = exchange_list
|
||||
|
@ -3067,8 +3181,10 @@ class RosterItemExchangeWindow:
|
|||
|
||||
|
||||
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):
|
||||
'''action is 'EDIT' or 'NEW' depending on if we create a new priv list
|
||||
or edit an already existing one'''
|
||||
|
@ -3406,9 +3522,10 @@ class PrivacyListWindow:
|
|||
self.window.destroy()
|
||||
|
||||
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
|
||||
or edit an already there one'''
|
||||
"""
|
||||
Window that is the main window for Privacy Lists; we can list there the
|
||||
privacy lists and ask to create a new one or edit an already there one
|
||||
"""
|
||||
def __init__(self, account):
|
||||
self.account = account
|
||||
self.privacy_lists_save = []
|
||||
|
@ -3565,9 +3682,10 @@ class InvitationReceivedDialog:
|
|||
|
||||
class ProgressDialog:
|
||||
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
|
||||
in the textview'''
|
||||
"""
|
||||
During text is what to show during the procedure, messages_queue has the
|
||||
message to show in the textview
|
||||
"""
|
||||
self.xml = gtkgui_helpers.get_glade('progress_dialog.glade')
|
||||
self.dialog = self.xml.get_widget('progress_dialog')
|
||||
self.label = self.xml.get_widget('label')
|
||||
|
@ -3594,10 +3712,14 @@ class ProgressDialog:
|
|||
|
||||
class SoundChooserDialog(FileChooserDialog):
|
||||
def __init__(self, path_to_snd_file='', on_response_ok=None,
|
||||
on_response_cancel=None):
|
||||
'''optionally accepts path_to_snd_file so it has that as selected'''
|
||||
on_response_cancel=None):
|
||||
"""
|
||||
Optionally accepts path_to_snd_file so it has that as selected
|
||||
"""
|
||||
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 = gtkgui_helpers.decode_filechooser_file_paths(
|
||||
(path_to_snd_file,))[0]
|
||||
|
@ -3633,8 +3755,10 @@ class SoundChooserDialog(FileChooserDialog):
|
|||
|
||||
class ImageChooserDialog(FileChooserDialog):
|
||||
def __init__(self, path_to_file='', on_response_ok=None,
|
||||
on_response_cancel=None):
|
||||
'''optionally accepts path_to_snd_file so it has that as selected'''
|
||||
on_response_cancel=None):
|
||||
"""
|
||||
Optionally accepts path_to_snd_file so it has that as selected
|
||||
"""
|
||||
def on_ok(widget, callback):
|
||||
'''check if file exists and call callback'''
|
||||
path_to_file = self.get_filename()
|
||||
|
@ -3725,8 +3849,10 @@ class AvatarChooserDialog(ImageChooserDialog):
|
|||
|
||||
class AddSpecialNotificationDialog:
|
||||
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.window = self.xml.get_widget('add_special_notification_window')
|
||||
self.condition_combobox = self.xml.get_widget('condition_combobox')
|
||||
|
@ -3846,7 +3972,9 @@ class AdvancedNotificationsWindow:
|
|||
self.window.show_all()
|
||||
|
||||
def initiate_rule_state(self):
|
||||
'''Set values for all widgets'''
|
||||
"""
|
||||
Set values for all widgets
|
||||
"""
|
||||
if self.active_num < 0:
|
||||
return
|
||||
# event
|
||||
|
@ -4237,8 +4365,10 @@ class TransformChatToMUC:
|
|||
# Keep a reference on windows so garbage collector don't restroy them
|
||||
instances = []
|
||||
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.account = account
|
||||
|
@ -4389,7 +4519,9 @@ class DataFormWindow(Dialog):
|
|||
self.destroy()
|
||||
|
||||
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):
|
||||
self.session = session
|
||||
|
||||
|
@ -4468,7 +4600,9 @@ class ESessionInfoWindow:
|
|||
YesNoDialog(pritext, sectext, on_response_yes=on_yes, on_response_no=on_no)
|
||||
|
||||
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):
|
||||
xml = gtkgui_helpers.get_glade('esession_info_window.glade')
|
||||
security_image = xml.get_widget('security_image')
|
||||
|
|
Loading…
Reference in New Issue