2006-05-18 18:07:53 +00:00
## config.py
2004-05-15 16:50:38 +00:00
##
2006-02-05 14:03:50 +00:00
## Copyright (C) 2003-2006 Yann Le Boulanger <asterix@lagaule.org>
## Copyright (C) 2005-2006 Nikos Kouremenos <nkour@jabber.org>
## Copyright (C) 2005 Dimitur Kirov <dkirov@gmail.com>
2006-02-27 16:14:14 +00:00
## Copyright (C) 2003-2005 Vincent Hanquez <tab@snarc.org>
2004-05-15 16:50:38 +00:00
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published
## by the Free Software Foundation; version 2 only.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
import gtk
2005-03-01 13:46:22 +00:00
import gobject
import os
2005-06-08 22:05:45 +00:00
import common . config
2004-05-28 04:20:30 +00:00
import common . sleepy
2005-04-18 14:05:30 +00:00
2005-07-25 14:38:21 +00:00
import gtkgui_helpers
2005-04-18 14:05:30 +00:00
import dialogs
2005-11-13 20:25:04 +00:00
import vcard
2005-04-18 16:40:10 +00:00
import cell_renderer_image
2006-01-06 06:59:55 +00:00
import message_control
2006-01-19 02:24:02 +00:00
import chat_control
2005-05-26 00:07:49 +00:00
try :
import gtkspell
2005-11-30 22:22:22 +00:00
HAS_GTK_SPELL = True
2005-05-26 00:07:49 +00:00
except :
2005-11-30 22:22:22 +00:00
HAS_GTK_SPELL = False
2005-05-26 00:07:49 +00:00
2005-08-09 11:34:36 +00:00
from common import helpers
2005-04-14 17:07:55 +00:00
from common import gajim
2005-04-14 07:42:26 +00:00
from common import connection
2004-05-15 16:50:38 +00:00
2005-06-10 21:14:16 +00:00
#---------- PreferencesWindow class -------------#
class PreferencesWindow :
2005-04-18 12:17:43 +00:00
''' Class for Preferences window '''
2005-12-06 12:45:32 +00:00
2006-03-05 12:18:47 +00:00
def on_preferences_window_destroy ( self , widget ) :
''' close window '''
del gajim . interface . instances [ ' preferences ' ]
2005-12-06 12:45:32 +00:00
2005-03-26 21:09:49 +00:00
def on_close_button_clicked ( self , widget ) :
2006-03-05 12:18:47 +00:00
self . window . destroy ( )
2005-03-29 23:52:26 +00:00
2005-10-20 11:17:17 +00:00
def __init__ ( self ) :
2005-05-10 15:39:35 +00:00
''' Initialize Preferences window '''
2006-05-02 15:53:25 +00:00
self . xml = gtkgui_helpers . get_glade ( ' preferences_window.glade ' )
2005-05-10 15:39:35 +00:00
self . window = self . xml . get_widget ( ' preferences_window ' )
2006-07-17 20:27:30 +00:00
self . window . set_transient_for ( gajim . interface . roster . window )
2005-05-10 15:39:35 +00:00
self . iconset_combobox = self . xml . get_widget ( ' iconset_combobox ' )
2005-12-01 18:16:30 +00:00
self . notify_on_new_message_radiobutton = self . xml . get_widget (
' notify_on_new_message_radiobutton ' )
self . popup_new_message_radiobutton = self . xml . get_widget (
' popup_new_message_radiobutton ' )
self . notify_on_signin_checkbutton = self . xml . get_widget (
' notify_on_signin_checkbutton ' )
self . notify_on_signout_checkbutton = self . xml . get_widget (
' notify_on_signout_checkbutton ' )
self . auto_popup_away_checkbutton = self . xml . get_widget (
' auto_popup_away_checkbutton ' )
2005-05-10 15:39:35 +00:00
self . auto_away_checkbutton = self . xml . get_widget ( ' auto_away_checkbutton ' )
2005-12-01 18:16:30 +00:00
self . auto_away_time_spinbutton = self . xml . get_widget (
' auto_away_time_spinbutton ' )
self . auto_away_message_entry = self . xml . get_widget (
' auto_away_message_entry ' )
2005-05-10 15:39:35 +00:00
self . auto_xa_checkbutton = self . xml . get_widget ( ' auto_xa_checkbutton ' )
2005-08-16 20:24:56 +00:00
self . auto_xa_time_spinbutton = self . xml . get_widget (
' auto_xa_time_spinbutton ' )
2005-08-06 15:17:20 +00:00
self . auto_xa_message_entry = self . xml . get_widget ( ' auto_xa_message_entry ' )
2005-05-10 15:39:35 +00:00
self . trayicon_checkbutton = self . xml . get_widget ( ' trayicon_checkbutton ' )
self . notebook = self . xml . get_widget ( ' preferences_notebook ' )
2005-12-29 01:31:47 +00:00
self . one_window_type_combobox = \
self . xml . get_widget ( ' one_window_type_combobox ' )
2005-12-06 12:45:32 +00:00
2005-05-10 15:39:35 +00:00
#trayicon
2005-10-20 11:17:17 +00:00
if gajim . interface . systray_capabilities :
2005-05-10 15:39:35 +00:00
st = gajim . config . get ( ' trayicon ' )
self . trayicon_checkbutton . set_active ( st )
2005-04-29 15:01:44 +00:00
else :
2005-08-16 20:24:56 +00:00
self . trayicon_checkbutton . set_sensitive ( False )
2005-04-12 15:30:09 +00:00
2005-05-10 15:39:35 +00:00
#Save position
st = gajim . config . get ( ' saveposition ' )
self . xml . get_widget ( ' save_position_checkbutton ' ) . set_active ( st )
2005-12-06 12:45:32 +00:00
2005-05-29 18:41:13 +00:00
# Sort contacts by show
st = gajim . config . get ( ' sort_by_show ' )
self . xml . get_widget ( ' sort_by_show_checkbutton ' ) . set_active ( st )
2005-12-06 12:45:32 +00:00
2005-11-08 13:04:59 +00:00
# Display avatars in roster
st = gajim . config . get ( ' show_avatars_in_roster ' )
self . xml . get_widget ( ' show_avatars_in_roster_checkbutton ' ) . set_active ( st )
2005-12-06 12:45:32 +00:00
2005-11-06 14:30:17 +00:00
# Display status msg under contact name in roster
st = gajim . config . get ( ' show_status_msgs_in_roster ' )
2005-12-01 18:16:30 +00:00
self . xml . get_widget ( ' show_status_msgs_in_roster_checkbutton ' ) . set_active (
st )
2005-12-06 12:45:32 +00:00
2006-03-16 23:37:06 +00:00
# emoticons
emoticons_combobox = self . xml . get_widget ( ' emoticons_combobox ' )
emoticons_list = os . listdir ( os . path . join ( gajim . DATA_DIR , ' emoticons ' ) )
2006-03-17 14:24:58 +00:00
# user themes
if os . path . isdir ( gajim . MY_EMOTS_PATH ) :
emoticons_list + = os . listdir ( gajim . MY_EMOTS_PATH )
2006-03-16 23:37:06 +00:00
renderer_text = gtk . CellRendererText ( )
emoticons_combobox . pack_start ( renderer_text , True )
emoticons_combobox . add_attribute ( renderer_text , ' text ' , 0 )
model = gtk . ListStore ( str )
emoticons_combobox . set_model ( model )
2006-03-17 16:11:25 +00:00
l = [ ]
2006-03-16 23:37:06 +00:00
for dir in emoticons_list :
if dir != ' .svn ' :
l . append ( dir )
2006-06-10 18:18:46 +00:00
l . append ( _ ( ' Disabled ' ) )
2006-03-16 23:37:06 +00:00
for i in xrange ( len ( l ) ) :
model . append ( [ l [ i ] ] )
if gajim . config . get ( ' emoticons_theme ' ) == l [ i ] :
emoticons_combobox . set_active ( i )
if not gajim . config . get ( ' emoticons_theme ' ) :
2006-03-17 19:45:08 +00:00
emoticons_combobox . set_active ( len ( l ) - 1 )
2006-03-16 23:37:06 +00:00
2005-05-10 15:39:35 +00:00
#iconset
2005-06-09 22:29:06 +00:00
iconsets_list = os . listdir ( os . path . join ( gajim . DATA_DIR , ' iconsets ' ) )
2005-06-21 15:54:18 +00:00
# new model, image in 0, string in 1
model = gtk . ListStore ( gtk . Image , str )
Merged revisions 5030-5031,5033-5038 via svnmerge from
svn://svn.gajim.org/gajim/trunk
........
r5030 | asterix | 2006-01-07 10:04:18 -0700 (Sat, 07 Jan 2006) | 2 lines
when we add a bookmark, we add our nick by default
........
r5031 | nicfit | 2006-01-07 10:24:50 -0700 (Sat, 07 Jan 2006) | 2 lines
Grammatical fix
........
r5033 | asterix | 2006-01-07 11:36:56 -0700 (Sat, 07 Jan 2006) | 2 lines
cell_renderer_image now take in argument the index of the column and the index in the model
........
r5034 | asterix | 2006-01-07 11:37:28 -0700 (Sat, 07 Jan 2006) | 2 lines
typo
........
r5035 | asterix | 2006-01-07 11:38:18 -0700 (Sat, 07 Jan 2006) | 2 lines
don't show header in emoticonManager so that cellrenderer correctly compute the area to redraw
........
r5036 | asterix | 2006-01-07 11:39:41 -0700 (Sat, 07 Jan 2006) | 2 lines
prevent a TB
........
r5037 | nicfit | 2006-01-07 13:26:08 -0700 (Sat, 07 Jan 2006) | 2 lines
Increment later
........
r5038 | nicfit | 2006-01-07 13:29:05 -0700 (Sat, 07 Jan 2006) | 2 lines
Fixed syntax error
........
2006-01-07 20:47:06 +00:00
renderer_image = cell_renderer_image . CellRendererImage ( 0 , 0 )
2005-06-21 15:54:18 +00:00
renderer_text = gtk . CellRendererText ( )
2005-06-23 16:31:35 +00:00
renderer_text . set_property ( ' xpad ' , 5 )
2005-12-01 18:16:30 +00:00
self . iconset_combobox . pack_start ( renderer_image , expand = False )
self . iconset_combobox . pack_start ( renderer_text , expand = True )
self . iconset_combobox . set_attributes ( renderer_text , text = 1 )
2005-06-21 15:54:18 +00:00
self . iconset_combobox . add_attribute ( renderer_image , ' image ' , 0 )
2005-05-10 15:39:35 +00:00
self . iconset_combobox . set_model ( model )
l = [ ]
for dir in iconsets_list :
if dir != ' .svn ' and dir != ' transports ' :
l . append ( dir )
if l . count == 0 :
l . append ( ' ' )
2005-10-27 12:47:54 +00:00
for i in xrange ( len ( l ) ) :
2005-06-21 15:54:18 +00:00
preview = gtk . Image ( )
files = [ ]
files . append ( os . path . join ( gajim . DATA_DIR , ' iconsets ' , l [ i ] , ' 16x16 ' , ' online.png ' ) )
files . append ( os . path . join ( gajim . DATA_DIR , ' iconsets ' , l [ i ] , ' 16x16 ' , ' online.gif ' ) )
for file in files :
if os . path . exists ( file ) :
preview . set_from_file ( file )
model . append ( [ preview , l [ i ] ] )
2005-05-10 15:39:35 +00:00
if gajim . config . get ( ' iconset ' ) == l [ i ] :
self . iconset_combobox . set_active ( i )
2005-12-29 01:31:47 +00:00
# Set default for single window type
choices = common . config . opt_one_window_types
type = gajim . config . get ( ' one_message_window ' )
if type in choices :
self . one_window_type_combobox . set_active ( choices . index ( type ) )
else :
self . one_window_type_combobox . set_active ( 0 )
2005-05-25 17:13:50 +00:00
# Use transports iconsets
st = gajim . config . get ( ' use_transports_iconsets ' )
self . xml . get_widget ( ' transports_iconsets_checkbutton ' ) . set_active ( st )
2005-08-07 15:32:35 +00:00
# Themes
2005-05-10 15:39:35 +00:00
theme_combobox = self . xml . get_widget ( ' theme_combobox ' )
cell = gtk . CellRendererText ( )
theme_combobox . pack_start ( cell , True )
2005-12-06 12:45:32 +00:00
theme_combobox . add_attribute ( cell , ' text ' , 0 )
2005-06-18 13:48:43 +00:00
model = gtk . ListStore ( str )
2005-05-10 15:39:35 +00:00
theme_combobox . set_model ( model )
2006-05-07 21:44:57 +00:00
2006-03-05 12:18:47 +00:00
i = 0
for config_theme in gajim . config . get_per ( ' themes ' ) :
theme = config_theme . replace ( ' _ ' , ' ' )
model . append ( [ theme ] )
if gajim . config . get ( ' roster_theme ' ) == config_theme :
theme_combobox . set_active ( i )
i + = 1
self . on_theme_combobox_changed ( theme_combobox )
2005-05-10 15:39:35 +00:00
2005-05-26 00:07:49 +00:00
#use speller
2005-06-04 12:52:16 +00:00
if os . name == ' nt ' :
self . xml . get_widget ( ' speller_checkbutton ' ) . set_no_show_all ( True )
2005-05-26 00:07:49 +00:00
else :
2005-11-30 22:22:22 +00:00
if HAS_GTK_SPELL :
2005-06-04 12:52:16 +00:00
st = gajim . config . get ( ' use_speller ' )
self . xml . get_widget ( ' speller_checkbutton ' ) . set_active ( st )
else :
self . xml . get_widget ( ' speller_checkbutton ' ) . set_sensitive ( False )
2005-12-06 12:45:32 +00:00
2005-05-10 15:39:35 +00:00
#Print time
2005-07-24 20:29:32 +00:00
st = gajim . config . get ( ' print_ichat_every_foo_minutes ' )
text = _ ( ' Every %s _minutes ' ) % st
self . xml . get_widget ( ' time_sometimes_radiobutton ' ) . set_label ( text )
2005-05-10 15:39:35 +00:00
if gajim . config . get ( ' print_time ' ) == ' never ' :
self . xml . get_widget ( ' time_never_radiobutton ' ) . set_active ( True )
2006-03-31 11:25:29 +00:00
self . _set_sensitivity_for_before_after_time_widgets ( False )
2005-05-10 15:39:35 +00:00
elif gajim . config . get ( ' print_time ' ) == ' sometimes ' :
self . xml . get_widget ( ' time_sometimes_radiobutton ' ) . set_active ( True )
2006-03-31 11:25:29 +00:00
self . _set_sensitivity_for_before_after_time_widgets ( False )
2005-04-17 09:05:58 +00:00
else :
2005-05-10 15:39:35 +00:00
self . xml . get_widget ( ' time_always_radiobutton ' ) . set_active ( True )
2005-04-17 09:05:58 +00:00
2005-05-10 15:39:35 +00:00
#before time
st = gajim . config . get ( ' before_time ' )
self . xml . get_widget ( ' before_time_entry ' ) . set_text ( st )
2005-12-06 12:45:32 +00:00
2005-05-10 15:39:35 +00:00
#after time
st = gajim . config . get ( ' after_time ' )
self . xml . get_widget ( ' after_time_entry ' ) . set_text ( st )
2005-03-06 15:14:34 +00:00
2005-05-10 15:39:35 +00:00
#before nickname
st = gajim . config . get ( ' before_nickname ' )
self . xml . get_widget ( ' before_nickname_entry ' ) . set_text ( st )
2005-03-06 15:14:34 +00:00
2005-05-10 15:39:35 +00:00
#after nickanme
st = gajim . config . get ( ' after_nickname ' )
self . xml . get_widget ( ' after_nickname_entry ' ) . set_text ( st )
2005-03-06 15:14:34 +00:00
2005-05-10 15:39:35 +00:00
#Color for incomming messages
colSt = gajim . config . get ( ' inmsgcolor ' )
2005-06-04 12:52:16 +00:00
self . xml . get_widget ( ' incoming_msg_colorbutton ' ) . set_color (
2005-05-10 15:39:35 +00:00
gtk . gdk . color_parse ( colSt ) )
2005-12-06 12:45:32 +00:00
2005-05-10 15:39:35 +00:00
#Color for outgoing messages
colSt = gajim . config . get ( ' outmsgcolor ' )
2005-06-04 12:52:16 +00:00
self . xml . get_widget ( ' outgoing_msg_colorbutton ' ) . set_color (
2005-05-10 15:39:35 +00:00
gtk . gdk . color_parse ( colSt ) )
2005-12-06 12:45:32 +00:00
2005-05-10 15:39:35 +00:00
#Color for status messages
colSt = gajim . config . get ( ' statusmsgcolor ' )
2005-06-04 12:52:16 +00:00
self . xml . get_widget ( ' status_msg_colorbutton ' ) . set_color (
2005-05-10 15:39:35 +00:00
gtk . gdk . color_parse ( colSt ) )
2005-12-25 23:48:08 +00:00
2006-01-16 11:16:06 +00:00
#Color for hyperlinks
2005-12-25 23:48:08 +00:00
colSt = gajim . config . get ( ' urlmsgcolor ' )
self . xml . get_widget ( ' url_msg_colorbutton ' ) . set_color (
gtk . gdk . color_parse ( colSt ) )
2005-04-22 01:05:31 +00:00
2005-08-07 18:58:36 +00:00
#Font for messages
font = gajim . config . get ( ' conversation_font ' )
2005-08-11 22:06:26 +00:00
# try to set default font for the current desktop env
2006-05-11 18:28:05 +00:00
fontbutton = self . xml . get_widget ( ' conversation_fontbutton ' )
2005-08-11 22:06:26 +00:00
if font == ' ' :
2006-05-11 18:28:05 +00:00
fontbutton . set_sensitive ( False )
self . xml . get_widget ( ' default_chat_font ' ) . set_active ( True )
else :
fontbutton . set_font_name ( font )
2005-08-07 18:58:36 +00:00
2005-05-10 15:39:35 +00:00
# on new message
only_in_roster = True
if gajim . config . get ( ' notify_on_new_message ' ) :
2005-07-21 21:03:36 +00:00
self . xml . get_widget ( ' notify_on_new_message_radiobutton ' ) . set_active (
True )
2005-05-10 15:39:35 +00:00
only_in_roster = False
if gajim . config . get ( ' autopopup ' ) :
self . xml . get_widget ( ' popup_new_message_radiobutton ' ) . set_active ( True )
only_in_roster = False
if only_in_roster :
self . xml . get_widget ( ' only_in_roster_radiobutton ' ) . set_active ( True )
2005-04-29 15:01:44 +00:00
2005-05-10 15:39:35 +00:00
#notify on online statuses
2005-05-21 13:46:23 +00:00
st = gajim . config . get ( ' notify_on_signin ' )
self . notify_on_signin_checkbutton . set_active ( st )
2005-05-10 15:39:35 +00:00
#notify on offline statuses
2005-05-21 13:46:23 +00:00
st = gajim . config . get ( ' notify_on_signout ' )
self . notify_on_signout_checkbutton . set_active ( st )
2005-05-10 15:39:35 +00:00
#autopopupaway
st = gajim . config . get ( ' autopopupaway ' )
self . auto_popup_away_checkbutton . set_active ( st )
#Ignore messages from unknown contacts
self . xml . get_widget ( ' ignore_events_from_unknown_contacts_checkbutton ' ) . \
set_active ( gajim . config . get ( ' ignore_unknown_contacts ' ) )
2005-12-06 12:45:32 +00:00
2005-07-19 22:57:37 +00:00
# send chat state notifications
2005-08-07 20:58:44 +00:00
st = gajim . config . get ( ' chat_state_notifications ' )
combo = self . xml . get_widget ( ' chat_states_combobox ' )
2005-08-09 13:27:31 +00:00
if st == ' all ' :
2005-08-08 21:12:58 +00:00
combo . set_active ( 0 )
2005-08-09 13:27:31 +00:00
elif st == ' composing_only ' :
combo . set_active ( 1 )
2005-08-07 20:58:44 +00:00
else : # disabled
2005-08-09 13:27:31 +00:00
combo . set_active ( 2 )
2005-05-10 15:39:35 +00:00
#sounds
2005-05-17 15:04:54 +00:00
if os . name == ' nt ' : # if windows, player must not become visible on show_all
2005-05-28 22:42:08 +00:00
soundplayer_hbox = self . xml . get_widget ( ' soundplayer_hbox ' )
soundplayer_hbox . set_no_show_all ( True )
2005-05-10 15:39:35 +00:00
if gajim . config . get ( ' sounds_on ' ) :
self . xml . get_widget ( ' play_sounds_checkbutton ' ) . set_active ( True )
else :
self . xml . get_widget ( ' soundplayer_hbox ' ) . set_sensitive ( False )
self . xml . get_widget ( ' sounds_scrolledwindow ' ) . set_sensitive ( False )
self . xml . get_widget ( ' browse_sounds_hbox ' ) . set_sensitive ( False )
2005-08-09 11:34:36 +00:00
# sound player
player = gajim . config . get ( ' soundplayer ' )
2005-08-25 20:31:49 +00:00
self . xml . get_widget ( ' soundplayer_entry ' ) . set_text ( player )
2005-08-09 11:34:36 +00:00
if player == ' ' : # only on first time Gajim starts
2005-09-06 15:55:27 +00:00
commands = ( ' aplay ' , ' play ' , ' esdplay ' , ' artsplay ' )
2005-08-09 11:34:36 +00:00
for command in commands :
if helpers . is_in_path ( command ) :
2006-06-28 07:28:59 +00:00
if command == ' aplay ' :
command + = ' -q '
2005-08-09 11:34:36 +00:00
self . xml . get_widget ( ' soundplayer_entry ' ) . set_text ( command )
2005-08-21 19:09:31 +00:00
gajim . config . set ( ' soundplayer ' , command )
2005-08-09 11:34:36 +00:00
break
2005-05-10 15:39:35 +00:00
#sounds treeview
self . sound_tree = self . xml . get_widget ( ' sounds_treeview ' )
2006-02-16 15:21:34 +00:00
# active, event ui name, path to sound file, event_config_name
model = gtk . ListStore ( bool , str , str , str )
2005-05-10 15:39:35 +00:00
self . sound_tree . set_model ( model )
col = gtk . TreeViewColumn ( _ ( ' Active ' ) )
self . sound_tree . append_column ( col )
renderer = gtk . CellRendererToggle ( )
renderer . set_property ( ' activatable ' , True )
renderer . connect ( ' toggled ' , self . sound_toggled_cb )
col . pack_start ( renderer )
2006-02-16 15:21:34 +00:00
col . set_attributes ( renderer , active = 0 )
2005-05-10 15:39:35 +00:00
col = gtk . TreeViewColumn ( _ ( ' Event ' ) )
self . sound_tree . append_column ( col )
renderer = gtk . CellRendererText ( )
col . pack_start ( renderer )
2006-02-16 15:21:34 +00:00
col . set_attributes ( renderer , text = 1 )
2005-05-10 15:39:35 +00:00
self . fill_sound_treeview ( )
2005-12-06 12:45:32 +00:00
2005-05-10 15:39:35 +00:00
#Autoaway
st = gajim . config . get ( ' autoaway ' )
self . auto_away_checkbutton . set_active ( st )
#Autoawaytime
st = gajim . config . get ( ' autoawaytime ' )
self . auto_away_time_spinbutton . set_value ( st )
self . auto_away_time_spinbutton . set_sensitive ( gajim . config . get ( ' autoaway ' ) )
2005-08-06 15:17:20 +00:00
#autoaway message
st = gajim . config . get ( ' autoaway_message ' )
self . auto_away_message_entry . set_text ( st )
self . auto_away_message_entry . set_sensitive ( gajim . config . get ( ' autoaway ' ) )
2005-05-10 15:39:35 +00:00
#Autoxa
st = gajim . config . get ( ' autoxa ' )
self . auto_xa_checkbutton . set_active ( st )
#Autoxatime
st = gajim . config . get ( ' autoxatime ' )
self . auto_xa_time_spinbutton . set_value ( st )
self . auto_xa_time_spinbutton . set_sensitive ( gajim . config . get ( ' autoxa ' ) )
2005-08-06 15:17:20 +00:00
#autoxa message
st = gajim . config . get ( ' autoxa_message ' )
self . auto_xa_message_entry . set_text ( st )
self . auto_xa_message_entry . set_sensitive ( gajim . config . get ( ' autoxa ' ) )
2005-05-10 15:39:35 +00:00
#ask_status when online / offline
st = gajim . config . get ( ' ask_online_status ' )
self . xml . get_widget ( ' prompt_online_status_message_checkbutton ' ) . \
set_active ( st )
st = gajim . config . get ( ' ask_offline_status ' )
self . xml . get_widget ( ' prompt_offline_status_message_checkbutton ' ) . \
set_active ( st )
#Status messages
self . msg_tree = self . xml . get_widget ( ' msg_treeview ' )
2005-06-18 13:48:43 +00:00
model = gtk . ListStore ( str , str )
2005-05-10 15:39:35 +00:00
self . msg_tree . set_model ( model )
col = gtk . TreeViewColumn ( ' name ' )
self . msg_tree . append_column ( col )
renderer = gtk . CellRendererText ( )
col . pack_start ( renderer , True )
col . set_attributes ( renderer , text = 0 )
renderer . connect ( ' edited ' , self . on_msg_cell_edited )
renderer . set_property ( ' editable ' , True )
self . fill_msg_treeview ( )
buf = self . xml . get_widget ( ' msg_textview ' ) . get_buffer ( )
buf . connect ( ' changed ' , self . on_msg_textview_changed )
#open links with
2005-05-17 15:04:54 +00:00
if os . name == ' nt ' :
2006-01-20 13:55:38 +00:00
applications_frame = self . xml . get_widget ( ' applications_frame ' )
applications_frame . set_no_show_all ( True )
applications_frame . hide ( )
2005-05-17 15:04:54 +00:00
else :
2005-12-06 17:43:21 +00:00
self . applications_combobox = self . xml . get_widget (
' applications_combobox ' )
2006-01-20 13:55:38 +00:00
self . xml . get_widget ( ' custom_apps_frame ' ) . hide ( )
self . xml . get_widget ( ' custom_apps_frame ' ) . set_no_show_all ( True )
2005-07-25 14:38:21 +00:00
if gajim . config . get ( ' autodetect_browser_mailer ' ) :
2005-08-09 15:30:45 +00:00
self . applications_combobox . set_active ( 0 )
2005-08-04 23:11:55 +00:00
gtkgui_helpers . autodetect_browser_mailer ( )
2005-07-25 14:38:21 +00:00
# autodetect_browser_mailer is now False.
# so user has 'Always Use GNOME/KDE' or Custom
elif gajim . config . get ( ' openwith ' ) == ' gnome-open ' :
2005-08-09 15:30:45 +00:00
self . applications_combobox . set_active ( 1 )
2005-05-17 15:04:54 +00:00
elif gajim . config . get ( ' openwith ' ) == ' kfmclient exec ' :
2005-08-09 15:30:45 +00:00
self . applications_combobox . set_active ( 2 )
2005-07-25 14:38:21 +00:00
elif gajim . config . get ( ' openwith ' ) == ' custom ' :
2005-08-09 15:30:45 +00:00
self . applications_combobox . set_active ( 3 )
2006-01-20 13:55:38 +00:00
self . xml . get_widget ( ' custom_apps_frame ' ) . show ( )
2005-05-20 15:05:22 +00:00
self . xml . get_widget ( ' custom_browser_entry ' ) . set_text (
2005-05-17 15:04:54 +00:00
gajim . config . get ( ' custombrowser ' ) )
2005-05-20 15:05:22 +00:00
self . xml . get_widget ( ' custom_mail_client_entry ' ) . set_text (
2005-05-17 15:04:54 +00:00
gajim . config . get ( ' custommailapp ' ) )
2005-08-09 15:30:45 +00:00
self . xml . get_widget ( ' custom_file_manager_entry ' ) . set_text (
2005-08-09 15:37:11 +00:00
gajim . config . get ( ' custom_file_manager ' ) )
2005-12-06 12:45:32 +00:00
2005-11-23 23:28:26 +00:00
# log status changes of contacts
st = gajim . config . get ( ' log_contact_status_changes ' )
self . xml . get_widget ( ' log_show_changes_checkbutton ' ) . set_active ( st )
2005-12-06 12:45:32 +00:00
2005-07-17 22:52:15 +00:00
# send os info
2005-05-10 15:39:35 +00:00
st = gajim . config . get ( ' send_os_info ' )
self . xml . get_widget ( ' send_os_info_checkbutton ' ) . set_active ( st )
Merged revisions 5017-5020,5022-5029 via svnmerge from
svn://svn.gajim.org/gajim/trunk
........
r5017 | asterix | 2006-01-06 01:55:51 -0700 (Fri, 06 Jan 2006) | 2 lines
use escape for pango markup
........
r5018 | asterix | 2006-01-06 02:21:39 -0700 (Fri, 06 Jan 2006) | 2 lines
missing new contacts function
........
r5019 | asterix | 2006-01-06 11:03:07 -0700 (Fri, 06 Jan 2006) | 2 lines
handle the click on toggle_gpg_encryption menuitem
........
r5020 | asterix | 2006-01-06 11:14:14 -0700 (Fri, 06 Jan 2006) | 2 lines
use the saved size even if a chat window is already opened
........
r5022 | asterix | 2006-01-07 03:43:47 -0700 (Sat, 07 Jan 2006) | 2 lines
we can now resume filetransfert
........
r5023 | asterix | 2006-01-07 03:56:31 -0700 (Sat, 07 Jan 2006) | 2 lines
[Knuckles] Google E-Mail Notification
........
r5024 | asterix | 2006-01-07 04:02:16 -0700 (Sat, 07 Jan 2006) | 2 lines
better string
........
r5025 | asterix | 2006-01-07 04:14:32 -0700 (Sat, 07 Jan 2006) | 2 lines
fix a TB
........
r5026 | asterix | 2006-01-07 05:36:55 -0700 (Sat, 07 Jan 2006) | 2 lines
we can now drag a file on a contact in the roster to send him a file
........
r5027 | asterix | 2006-01-07 06:26:28 -0700 (Sat, 07 Jan 2006) | 2 lines
contact.groups is always a list, even if emtpy
........
r5028 | asterix | 2006-01-07 06:54:30 -0700 (Sat, 07 Jan 2006) | 2 lines
make all buttons insensitive on a category row in disco
........
r5029 | asterix | 2006-01-07 07:19:25 -0700 (Sat, 07 Jan 2006) | 2 lines
auto open groupchat configuration window when we create a new room
........
2006-01-07 17:25:35 +00:00
2006-03-05 12:18:47 +00:00
# Notify user of new gmail e-mail messages,
# only show checkbox if user has a gtalk account
2006-07-03 07:44:35 +00:00
frame_gmail = self . xml . get_widget ( ' frame_gmail ' )
2006-03-05 12:18:47 +00:00
notify_gmail_checkbutton = self . xml . get_widget ( ' notify_gmail_checkbutton ' )
2006-07-02 18:39:43 +00:00
notify_gmail_extra_checkbutton = self . xml . get_widget ( ' notify_gmail_extra_checkbutton ' )
2006-07-03 07:44:35 +00:00
frame_gmail . set_no_show_all ( True )
2006-07-02 18:39:43 +00:00
2006-03-05 12:18:47 +00:00
for account in gajim . config . get_per ( ' accounts ' ) :
jid = gajim . get_jid_from_account ( account )
2006-07-02 18:39:43 +00:00
if gajim . get_server_from_jid ( jid ) in gajim . gmail_domains :
2006-07-03 07:44:35 +00:00
frame_gmail . show_all ( )
2006-03-05 12:18:47 +00:00
st = gajim . config . get ( ' notify_on_new_gmail_email ' )
notify_gmail_checkbutton . set_active ( st )
2006-07-02 18:39:43 +00:00
st = gajim . config . get ( ' notify_on_new_gmail_email_extra ' )
notify_gmail_extra_checkbutton . set_active ( st )
2006-03-05 12:18:47 +00:00
break
else :
2006-07-03 07:44:35 +00:00
frame_gmail . hide ( )
2006-03-05 12:18:47 +00:00
2005-05-10 15:39:35 +00:00
self . xml . signal_autoconnect ( self )
2005-12-06 12:45:32 +00:00
2005-05-10 15:39:35 +00:00
self . sound_tree . get_model ( ) . connect ( ' row-changed ' ,
self . on_sounds_treemodel_row_changed )
self . msg_tree . get_model ( ) . connect ( ' row-changed ' ,
self . on_msg_treemodel_row_changed )
self . msg_tree . get_model ( ) . connect ( ' row-deleted ' ,
self . on_msg_treemodel_row_deleted )
2006-03-01 11:03:56 +00:00
self . theme_preferences = None
2006-01-19 09:49:26 +00:00
2006-03-05 12:18:47 +00:00
self . notebook . set_current_page ( 0 )
self . window . show_all ( )
2005-05-10 15:39:35 +00:00
def on_preferences_window_key_press_event ( self , widget , event ) :
2005-05-26 00:07:49 +00:00
if event . keyval == gtk . keysyms . Escape :
2005-05-10 15:39:35 +00:00
self . window . hide ( )
2005-10-29 16:56:33 +00:00
def on_checkbutton_toggled ( self , widget , config_name ,
2005-05-10 15:39:35 +00:00
change_sensitivity_widgets = None ) :
gajim . config . set ( config_name , widget . get_active ( ) )
2005-05-26 00:07:49 +00:00
if change_sensitivity_widgets :
2005-05-10 15:39:35 +00:00
for w in change_sensitivity_widgets :
w . set_sensitive ( widget . get_active ( ) )
2005-10-20 11:17:17 +00:00
gajim . interface . save_config ( )
2005-05-10 15:39:35 +00:00
def on_trayicon_checkbutton_toggled ( self , widget ) :
if widget . get_active ( ) :
gajim . config . set ( ' trayicon ' , True )
2005-10-20 11:17:17 +00:00
gajim . interface . show_systray ( )
2006-04-22 14:02:00 +00:00
show = helpers . get_global_show ( )
gajim . interface . systray . change_status ( show )
2005-05-10 15:39:35 +00:00
else :
gajim . config . set ( ' trayicon ' , False )
2005-10-20 11:17:17 +00:00
gajim . interface . hide_systray ( )
2005-06-05 23:17:59 +00:00
gajim . config . set ( ' show_roster_on_startup ' , True ) # no tray, show roster!
2005-10-20 11:17:17 +00:00
gajim . interface . roster . draw_roster ( )
gajim . interface . save_config ( )
2005-12-06 12:45:32 +00:00
2005-05-10 15:39:35 +00:00
def on_save_position_checkbutton_toggled ( self , widget ) :
self . on_checkbutton_toggled ( widget , ' saveposition ' )
2005-12-06 12:45:32 +00:00
2005-05-29 18:41:13 +00:00
def on_sort_by_show_checkbutton_toggled ( self , widget ) :
self . on_checkbutton_toggled ( widget , ' sort_by_show ' )
2005-10-20 11:17:17 +00:00
gajim . interface . roster . draw_roster ( )
2005-12-06 12:45:32 +00:00
2005-11-06 14:30:17 +00:00
def on_show_status_msgs_in_roster_checkbutton_toggled ( self , widget ) :
self . on_checkbutton_toggled ( widget , ' show_status_msgs_in_roster ' )
gajim . interface . roster . draw_roster ( )
2006-01-06 03:36:07 +00:00
for ctl in gajim . interface . msg_win_mgr . controls ( ) :
if ctl . type_id == message_control . TYPE_GC :
2006-01-10 01:47:24 +00:00
ctl . update_ui ( )
2005-12-06 12:45:32 +00:00
2005-11-08 13:04:59 +00:00
def on_show_avatars_in_roster_checkbutton_toggled ( self , widget ) :
self . on_checkbutton_toggled ( widget , ' show_avatars_in_roster ' )
gajim . interface . roster . draw_roster ( )
2005-12-06 12:45:32 +00:00
2006-02-05 13:44:40 +00:00
def on_emoticons_combobox_changed ( self , widget ) :
active = widget . get_active ( )
2006-03-16 23:37:06 +00:00
model = widget . get_model ( )
emot_theme = model [ active ] [ 0 ] . decode ( ' utf-8 ' )
if emot_theme == _ ( ' Disabled ' ) :
gajim . config . set ( ' emoticons_theme ' , ' ' )
else :
gajim . config . set ( ' emoticons_theme ' , emot_theme )
2005-11-17 17:08:56 +00:00
gajim . interface . init_emoticons ( )
gajim . interface . make_regexps ( )
self . toggle_emoticons ( )
2005-11-15 11:52:40 +00:00
2005-11-17 17:08:56 +00:00
def toggle_emoticons ( self ) :
''' Update emoticons state in Opened Chat Windows '''
2005-12-31 21:55:44 +00:00
for win in gajim . interface . msg_win_mgr . windows ( ) :
2005-12-31 04:53:14 +00:00
win . toggle_emoticons ( )
2005-12-06 12:45:32 +00:00
2005-05-10 15:39:35 +00:00
def on_iconset_combobox_changed ( self , widget ) :
model = widget . get_model ( )
active = widget . get_active ( )
2005-08-26 00:52:44 +00:00
icon_string = model [ active ] [ 1 ] . decode ( ' utf-8 ' )
2005-05-10 15:39:35 +00:00
gajim . config . set ( ' iconset ' , icon_string )
2005-10-20 11:17:17 +00:00
gajim . interface . roster . reload_jabber_state_images ( )
gajim . interface . save_config ( )
2005-12-06 12:45:32 +00:00
2005-05-25 17:13:50 +00:00
def on_transports_iconsets_checkbutton_toggled ( self , widget ) :
self . on_checkbutton_toggled ( widget , ' use_transports_iconsets ' )
2006-02-03 11:24:33 +00:00
gajim . interface . roster . reload_jabber_state_images ( )
2005-06-08 23:17:40 +00:00
2005-06-09 22:29:06 +00:00
def on_manage_theme_button_clicked ( self , widget ) :
2006-03-01 11:03:56 +00:00
if self . theme_preferences is None :
self . theme_preferences = dialogs . GajimThemesWindow ( )
else :
self . theme_preferences . window . present ( )
2005-12-06 12:45:32 +00:00
2005-05-10 15:39:35 +00:00
def on_theme_combobox_changed ( self , widget ) :
model = widget . get_model ( )
active = widget . get_active ( )
2005-09-01 13:47:50 +00:00
config_theme = model [ active ] [ 0 ] . decode ( ' utf-8 ' ) . replace ( ' ' , ' _ ' )
2005-12-06 12:45:32 +00:00
2005-09-01 13:47:50 +00:00
gajim . config . set ( ' roster_theme ' , config_theme )
2005-06-10 19:31:38 +00:00
2005-06-07 21:28:21 +00:00
# begin repainting themed widgets throughout
2005-10-20 11:17:17 +00:00
gajim . interface . roster . repaint_themed_widgets ( )
gajim . interface . roster . change_roster_style ( None )
gajim . interface . save_config ( )
2005-04-28 14:38:36 +00:00
2006-05-09 00:05:15 +00:00
def on_open_advanced_notifications_button_clicked ( self , widget ) :
dialogs . AdvancedNotificationsWindow ( )
2005-12-29 01:31:47 +00:00
def on_one_window_type_combo_changed ( self , widget ) :
active = widget . get_active ( )
config_type = common . config . opt_one_window_types [ active ]
gajim . config . set ( ' one_message_window ' , config_type )
2005-10-20 11:17:17 +00:00
gajim . interface . save_config ( )
2006-01-15 02:39:02 +00:00
gajim . interface . msg_win_mgr . reconfig ( )
2005-05-26 00:07:49 +00:00
2006-01-19 02:24:02 +00:00
def apply_speller ( self ) :
2005-05-26 00:07:49 +00:00
for acct in gajim . connections :
2006-01-19 02:24:02 +00:00
for ctrl in gajim . interface . msg_win_mgr . controls ( ) :
if isinstance ( ctrl , chat_control . ChatControlBase ) :
try :
spell_obj = gtkspell . get_from_text_view ( ctrl . msg_textview )
except :
spell_obj = None
if not spell_obj :
gtkspell . Spell ( ctrl . msg_textview )
def remove_speller ( self ) :
2005-05-26 00:07:49 +00:00
for acct in gajim . connections :
2006-01-19 02:24:02 +00:00
for ctrl in gajim . interface . msg_win_mgr . controls ( ) :
if isinstance ( ctrl , chat_control . ChatControlBase ) :
try :
spell_obj = gtkspell . get_from_text_view ( ctrl . msg_textview )
except :
spell_obj = None
if spell_obj :
spell_obj . detach ( )
2005-05-26 00:07:49 +00:00
def on_speller_checkbutton_toggled ( self , widget ) :
active = widget . get_active ( )
gajim . config . set ( ' use_speller ' , active )
2005-10-20 11:17:17 +00:00
gajim . interface . save_config ( )
2005-05-26 00:07:49 +00:00
if active :
2006-01-19 02:24:02 +00:00
self . apply_speller ( )
2005-05-26 00:07:49 +00:00
else :
2006-01-19 02:24:02 +00:00
self . remove_speller ( )
2005-05-26 00:07:49 +00:00
2006-03-31 11:25:29 +00:00
def _set_sensitivity_for_before_after_time_widgets ( self , sensitive ) :
self . xml . get_widget ( ' before_time_label ' ) . set_sensitive ( sensitive )
self . xml . get_widget ( ' before_time_entry ' ) . set_sensitive ( sensitive )
self . xml . get_widget ( ' after_time_label ' ) . set_sensitive ( sensitive )
self . xml . get_widget ( ' after_time_entry ' ) . set_sensitive ( sensitive )
2005-05-10 15:39:35 +00:00
def on_time_never_radiobutton_toggled ( self , widget ) :
if widget . get_active ( ) :
gajim . config . set ( ' print_time ' , ' never ' )
2006-03-31 11:25:29 +00:00
self . _set_sensitivity_for_before_after_time_widgets ( False )
2005-10-20 11:17:17 +00:00
gajim . interface . save_config ( )
2005-03-09 10:26:57 +00:00
2005-05-10 15:39:35 +00:00
def on_time_sometimes_radiobutton_toggled ( self , widget ) :
if widget . get_active ( ) :
gajim . config . set ( ' print_time ' , ' sometimes ' )
2006-03-31 11:25:29 +00:00
self . _set_sensitivity_for_before_after_time_widgets ( False )
2005-10-20 11:17:17 +00:00
gajim . interface . save_config ( )
2005-03-09 10:26:57 +00:00
2005-05-10 15:39:35 +00:00
def on_time_always_radiobutton_toggled ( self , widget ) :
if widget . get_active ( ) :
gajim . config . set ( ' print_time ' , ' always ' )
2006-03-31 11:25:29 +00:00
self . _set_sensitivity_for_before_after_time_widgets ( True )
2005-10-20 11:17:17 +00:00
gajim . interface . save_config ( )
2005-03-09 10:26:57 +00:00
2005-05-10 15:39:35 +00:00
def on_before_time_entry_focus_out_event ( self , widget , event ) :
2005-08-26 00:52:44 +00:00
gajim . config . set ( ' before_time ' , widget . get_text ( ) . decode ( ' utf-8 ' ) )
2005-10-20 11:17:17 +00:00
gajim . interface . save_config ( )
2005-12-06 12:45:32 +00:00
2005-05-10 15:39:35 +00:00
def on_after_time_entry_focus_out_event ( self , widget , event ) :
2005-08-26 00:52:44 +00:00
gajim . config . set ( ' after_time ' , widget . get_text ( ) . decode ( ' utf-8 ' ) )
2005-10-20 11:17:17 +00:00
gajim . interface . save_config ( )
2005-04-06 18:51:54 +00:00
2005-05-10 15:39:35 +00:00
def on_before_nickname_entry_focus_out_event ( self , widget , event ) :
2005-08-26 00:52:44 +00:00
gajim . config . set ( ' before_nickname ' , widget . get_text ( ) . decode ( ' utf-8 ' ) )
2005-10-20 11:17:17 +00:00
gajim . interface . save_config ( )
2005-04-06 18:51:54 +00:00
2005-05-10 15:39:35 +00:00
def on_after_nickname_entry_focus_out_event ( self , widget , event ) :
2005-08-26 00:52:44 +00:00
gajim . config . set ( ' after_nickname ' , widget . get_text ( ) . decode ( ' utf-8 ' ) )
2005-10-20 11:17:17 +00:00
gajim . interface . save_config ( )
2005-03-29 16:37:59 +00:00
2005-05-10 15:39:35 +00:00
def update_text_tags ( self ) :
''' Update color tags in Opened Chat Windows '''
2005-12-31 21:55:44 +00:00
for win in gajim . interface . msg_win_mgr . windows ( ) :
2005-12-31 06:27:22 +00:00
win . update_tags ( )
2005-12-06 12:45:32 +00:00
2005-05-10 15:39:35 +00:00
def on_preference_widget_color_set ( self , widget , text ) :
color = widget . get_color ( )
2005-12-01 18:16:30 +00:00
color_string = gtkgui_helpers . make_color_string ( color )
2005-05-10 15:39:35 +00:00
gajim . config . set ( text , color_string )
self . update_text_tags ( )
2005-10-20 11:17:17 +00:00
gajim . interface . save_config ( )
2005-08-07 18:58:36 +00:00
def on_preference_widget_font_set ( self , widget , text ) :
2006-05-11 18:28:05 +00:00
if widget :
font = widget . get_font_name ( )
else :
font = ' '
2005-08-26 12:08:14 +00:00
gajim . config . set ( text , font )
2005-08-07 18:58:36 +00:00
self . update_text_font ( )
2005-10-20 11:17:17 +00:00
gajim . interface . save_config ( )
2005-12-06 12:45:32 +00:00
2005-12-31 06:27:22 +00:00
def update_text_font ( self ) :
''' Update text font in Opened Chat Windows '''
2005-12-31 21:55:44 +00:00
for win in gajim . interface . msg_win_mgr . windows ( ) :
2005-12-31 06:27:22 +00:00
win . update_font ( )
2005-05-10 15:39:35 +00:00
def on_incoming_msg_colorbutton_color_set ( self , widget ) :
self . on_preference_widget_color_set ( widget , ' inmsgcolor ' )
2005-12-06 12:45:32 +00:00
2005-05-10 15:39:35 +00:00
def on_outgoing_msg_colorbutton_color_set ( self , widget ) :
self . on_preference_widget_color_set ( widget , ' outmsgcolor ' )
2005-12-06 12:45:32 +00:00
2005-12-25 23:48:08 +00:00
def on_url_msg_colorbutton_color_set ( self , widget ) :
self . on_preference_widget_color_set ( widget , ' urlmsgcolor ' )
2005-05-10 15:39:35 +00:00
def on_status_msg_colorbutton_color_set ( self , widget ) :
self . on_preference_widget_color_set ( widget , ' statusmsgcolor ' )
2005-12-06 12:45:32 +00:00
2005-08-07 18:58:36 +00:00
def on_conversation_fontbutton_font_set ( self , widget ) :
self . on_preference_widget_font_set ( widget , ' conversation_font ' )
2006-05-11 18:28:05 +00:00
def on_default_chat_font_toggled ( self , widget ) :
font_widget = self . xml . get_widget ( ' conversation_fontbutton ' )
if widget . get_active ( ) :
font_widget . set_sensitive ( False )
font_widget = None
else :
font_widget . set_sensitive ( True )
self . on_preference_widget_font_set ( font_widget , ' conversation_font ' )
2005-12-06 12:45:32 +00:00
2005-05-10 15:39:35 +00:00
def on_reset_colors_button_clicked ( self , widget ) :
2005-12-25 23:48:08 +00:00
for i in ( ' inmsgcolor ' , ' outmsgcolor ' , ' statusmsgcolor ' , ' urlmsgcolor ' ) :
2005-10-20 11:17:17 +00:00
gajim . config . set ( i , gajim . interface . default_values [ i ] )
2005-03-08 14:08:46 +00:00
2005-05-10 15:39:35 +00:00
self . xml . get_widget ( ' incoming_msg_colorbutton ' ) . set_color ( \
gtk . gdk . color_parse ( gajim . config . get ( ' inmsgcolor ' ) ) )
self . xml . get_widget ( ' outgoing_msg_colorbutton ' ) . set_color ( \
gtk . gdk . color_parse ( gajim . config . get ( ' outmsgcolor ' ) ) )
self . xml . get_widget ( ' status_msg_colorbutton ' ) . set_color ( \
gtk . gdk . color_parse ( gajim . config . get ( ' statusmsgcolor ' ) ) )
2005-12-25 23:48:08 +00:00
self . xml . get_widget ( ' url_msg_colorbutton ' ) . set_color ( \
gtk . gdk . color_parse ( gajim . config . get ( ' urlmsgcolor ' ) ) )
2005-05-10 15:39:35 +00:00
self . update_text_tags ( )
2005-10-20 11:17:17 +00:00
gajim . interface . save_config ( )
2005-04-17 09:05:58 +00:00
2005-05-10 15:39:35 +00:00
def on_notify_on_new_message_radiobutton_toggled ( self , widget ) :
self . on_checkbutton_toggled ( widget , ' notify_on_new_message ' ,
[ self . auto_popup_away_checkbutton ] )
2004-10-13 21:46:10 +00:00
2005-05-10 15:39:35 +00:00
def on_popup_new_message_radiobutton_toggled ( self , widget ) :
self . on_checkbutton_toggled ( widget , ' autopopup ' ,
[ self . auto_popup_away_checkbutton ] )
2005-04-29 13:04:06 +00:00
2005-05-10 15:39:35 +00:00
def on_only_in_roster_radiobutton_toggled ( self , widget ) :
if widget . get_active ( ) :
self . auto_popup_away_checkbutton . set_sensitive ( False )
2005-04-29 13:04:06 +00:00
2005-05-21 13:46:23 +00:00
def on_notify_on_signin_checkbutton_toggled ( self , widget ) :
self . on_checkbutton_toggled ( widget , ' notify_on_signin ' )
2005-04-02 19:52:00 +00:00
2005-05-21 13:46:23 +00:00
def on_notify_on_signout_checkbutton_toggled ( self , widget ) :
self . on_checkbutton_toggled ( widget , ' notify_on_signout ' )
2005-04-02 19:52:00 +00:00
2005-05-10 15:39:35 +00:00
def on_auto_popup_away_checkbutton_toggled ( self , widget ) :
self . on_checkbutton_toggled ( widget , ' autopopupaway ' )
2005-04-02 19:52:00 +00:00
2005-05-10 15:39:35 +00:00
def on_ignore_events_from_unknown_contacts_checkbutton_toggled ( self , widget ) :
self . on_checkbutton_toggled ( widget , ' ignore_unknown_contacts ' )
2005-02-05 17:18:49 +00:00
2005-08-07 20:58:44 +00:00
def on_chat_states_combobox_changed ( self , widget ) :
active = widget . get_active ( )
2005-08-09 13:27:31 +00:00
if active == 0 : # all
2005-08-07 20:58:44 +00:00
gajim . config . set ( ' chat_state_notifications ' , ' all ' )
2005-08-09 13:27:31 +00:00
elif active == 1 : # only composing
gajim . config . set ( ' chat_state_notifications ' , ' composing_only ' )
2005-08-07 20:58:44 +00:00
else : # disabled
gajim . config . set ( ' chat_state_notifications ' , ' disabled ' )
2005-12-06 12:45:32 +00:00
2005-07-19 22:57:37 +00:00
2005-05-10 15:39:35 +00:00
def on_play_sounds_checkbutton_toggled ( self , widget ) :
self . on_checkbutton_toggled ( widget , ' sounds_on ' ,
[ self . xml . get_widget ( ' soundplayer_hbox ' ) ,
self . xml . get_widget ( ' sounds_scrolledwindow ' ) ,
self . xml . get_widget ( ' browse_sounds_hbox ' ) ] )
2005-12-06 12:45:32 +00:00
2005-05-10 15:39:35 +00:00
def on_soundplayer_entry_changed ( self , widget ) :
2005-08-26 00:52:44 +00:00
gajim . config . set ( ' soundplayer ' , widget . get_text ( ) . decode ( ' utf-8 ' ) )
2005-10-20 11:17:17 +00:00
gajim . interface . save_config ( )
2005-12-06 12:45:32 +00:00
2005-05-10 15:39:35 +00:00
def on_prompt_online_status_message_checkbutton_toggled ( self , widget ) :
self . on_checkbutton_toggled ( widget , ' ask_online_status ' )
2005-12-06 12:45:32 +00:00
2005-05-10 15:39:35 +00:00
def on_prompt_offline_status_message_checkbutton_toggled ( self , widget ) :
self . on_checkbutton_toggled ( widget , ' ask_offline_status ' )
2005-12-06 12:45:32 +00:00
2005-05-10 15:39:35 +00:00
def on_sounds_treemodel_row_changed ( self , model , path , iter ) :
2006-02-16 15:21:34 +00:00
sound_event = model [ iter ] [ 3 ] . decode ( ' utf-8 ' )
2005-05-10 15:39:35 +00:00
gajim . config . set_per ( ' soundevents ' , sound_event , ' enabled ' ,
2006-02-16 15:21:34 +00:00
bool ( model [ path ] [ 0 ] ) )
2005-05-10 15:39:35 +00:00
gajim . config . set_per ( ' soundevents ' , sound_event , ' path ' ,
2005-08-26 00:52:44 +00:00
model [ iter ] [ 2 ] . decode ( ' utf-8 ' ) )
2005-10-20 11:17:17 +00:00
gajim . interface . save_config ( )
2005-03-08 14:08:46 +00:00
2005-05-10 15:39:35 +00:00
def on_auto_away_checkbutton_toggled ( self , widget ) :
self . on_checkbutton_toggled ( widget , ' autoaway ' ,
2005-08-06 15:17:20 +00:00
[ self . auto_away_time_spinbutton , self . auto_away_message_entry ] )
2005-04-16 23:15:03 +00:00
2005-05-10 15:39:35 +00:00
def on_auto_away_time_spinbutton_value_changed ( self , widget ) :
aat = widget . get_value_as_int ( )
gajim . config . set ( ' autoawaytime ' , aat )
2005-10-20 11:17:17 +00:00
gajim . interface . sleeper = common . sleepy . Sleepy (
2005-05-10 15:39:35 +00:00
gajim . config . get ( ' autoawaytime ' ) * 60 ,
gajim . config . get ( ' autoxatime ' ) * 60 )
2005-10-20 11:17:17 +00:00
gajim . interface . save_config ( )
2005-04-16 23:15:03 +00:00
2005-08-06 15:17:20 +00:00
def on_auto_away_message_entry_changed ( self , widget ) :
2005-08-26 00:52:44 +00:00
gajim . config . set ( ' autoaway_message ' , widget . get_text ( ) . decode ( ' utf-8 ' ) )
2005-08-06 15:17:20 +00:00
2005-05-10 15:39:35 +00:00
def on_auto_xa_checkbutton_toggled ( self , widget ) :
self . on_checkbutton_toggled ( widget , ' autoxa ' ,
2005-08-06 15:17:20 +00:00
[ self . auto_xa_time_spinbutton , self . auto_xa_message_entry ] )
2005-03-08 14:08:46 +00:00
2005-05-10 15:39:35 +00:00
def on_auto_xa_time_spinbutton_value_changed ( self , widget ) :
axt = widget . get_value_as_int ( )
gajim . config . set ( ' autoxatime ' , axt )
2005-10-20 11:17:17 +00:00
gajim . interface . sleeper = common . sleepy . Sleepy (
2005-05-10 15:39:35 +00:00
gajim . config . get ( ' autoawaytime ' ) * 60 ,
gajim . config . get ( ' autoxatime ' ) * 60 )
2005-10-20 11:17:17 +00:00
gajim . interface . save_config ( )
2005-03-08 14:08:46 +00:00
2005-08-06 15:17:20 +00:00
def on_auto_xa_message_entry_changed ( self , widget ) :
2005-08-26 00:52:44 +00:00
gajim . config . set ( ' autoxa_message ' , widget . get_text ( ) . decode ( ' utf-8 ' ) )
2005-08-06 15:17:20 +00:00
2005-05-10 15:39:35 +00:00
def save_status_messages ( self , model ) :
for msg in gajim . config . get_per ( ' statusmsg ' ) :
gajim . config . del_per ( ' statusmsg ' , msg )
iter = model . get_iter_first ( )
while iter :
2005-11-10 15:14:03 +00:00
val = model [ iter ] [ 0 ] . decode ( ' utf-8 ' )
2006-03-28 12:57:35 +00:00
if model [ iter ] [ 1 ] : # we have a preset message
if not val : # no title, use message text for title
val = model [ iter ] [ 1 ]
2006-03-28 06:06:04 +00:00
gajim . config . add_per ( ' statusmsg ' , val )
msg = helpers . to_one_line ( model [ iter ] [ 1 ] . decode ( ' utf-8 ' ) )
gajim . config . set_per ( ' statusmsg ' , val , ' message ' , msg )
2005-05-10 15:39:35 +00:00
iter = model . iter_next ( iter )
2005-10-20 11:17:17 +00:00
gajim . interface . save_config ( )
2005-03-21 21:01:03 +00:00
2005-05-10 15:39:35 +00:00
def on_msg_treemodel_row_changed ( self , model , path , iter ) :
self . save_status_messages ( model )
2005-06-01 20:01:11 +00:00
def on_msg_treemodel_row_deleted ( self , model , path ) :
2005-05-10 15:39:35 +00:00
self . save_status_messages ( model )
2005-08-09 15:30:45 +00:00
def on_applications_combobox_changed ( self , widget ) :
2005-07-25 14:38:21 +00:00
gajim . config . set ( ' autodetect_browser_mailer ' , False )
2005-07-27 12:22:17 +00:00
if widget . get_active ( ) == 3 :
2006-01-20 13:55:38 +00:00
self . xml . get_widget ( ' custom_apps_frame ' ) . show ( )
2005-05-10 15:39:35 +00:00
gajim . config . set ( ' openwith ' , ' custom ' )
2005-04-12 15:30:09 +00:00
else :
2005-05-10 15:39:35 +00:00
if widget . get_active ( ) == 0 :
2005-07-25 14:38:21 +00:00
gajim . config . set ( ' autodetect_browser_mailer ' , True )
elif widget . get_active ( ) == 1 :
2005-05-10 15:39:35 +00:00
gajim . config . set ( ' openwith ' , ' gnome-open ' )
2005-07-25 14:38:21 +00:00
elif widget . get_active ( ) == 2 :
2005-05-10 15:39:35 +00:00
gajim . config . set ( ' openwith ' , ' kfmclient exec ' )
2006-01-20 13:55:38 +00:00
self . xml . get_widget ( ' custom_apps_frame ' ) . hide ( )
2005-10-20 11:17:17 +00:00
gajim . interface . save_config ( )
2005-05-10 15:39:35 +00:00
def on_custom_browser_entry_changed ( self , widget ) :
2005-08-26 00:52:44 +00:00
gajim . config . set ( ' custombrowser ' , widget . get_text ( ) . decode ( ' utf-8 ' ) )
2005-10-20 11:17:17 +00:00
gajim . interface . save_config ( )
2005-05-10 15:39:35 +00:00
def on_custom_mail_client_entry_changed ( self , widget ) :
2005-08-26 00:52:44 +00:00
gajim . config . set ( ' custommailapp ' , widget . get_text ( ) . decode ( ' utf-8 ' ) )
2005-10-20 11:17:17 +00:00
gajim . interface . save_config ( )
2005-05-10 15:39:35 +00:00
2005-08-09 15:30:45 +00:00
def on_custom_file_manager_entry_changed ( self , widget ) :
2005-08-26 00:52:44 +00:00
gajim . config . set ( ' custom_file_manager ' , widget . get_text ( ) . decode ( ' utf-8 ' ) )
2005-10-20 11:17:17 +00:00
gajim . interface . save_config ( )
2005-08-09 15:30:45 +00:00
2005-11-23 23:28:26 +00:00
def on_log_show_changes_checkbutton_toggled ( self , widget ) :
self . on_checkbutton_toggled ( widget , ' log_contact_status_changes ' )
2005-12-06 12:45:32 +00:00
2005-05-10 15:39:35 +00:00
def on_send_os_info_checkbutton_toggled ( self , widget ) :
2005-11-23 23:28:26 +00:00
self . on_checkbutton_toggled ( widget , ' send_os_info ' )
Merged revisions 5017-5020,5022-5029 via svnmerge from
svn://svn.gajim.org/gajim/trunk
........
r5017 | asterix | 2006-01-06 01:55:51 -0700 (Fri, 06 Jan 2006) | 2 lines
use escape for pango markup
........
r5018 | asterix | 2006-01-06 02:21:39 -0700 (Fri, 06 Jan 2006) | 2 lines
missing new contacts function
........
r5019 | asterix | 2006-01-06 11:03:07 -0700 (Fri, 06 Jan 2006) | 2 lines
handle the click on toggle_gpg_encryption menuitem
........
r5020 | asterix | 2006-01-06 11:14:14 -0700 (Fri, 06 Jan 2006) | 2 lines
use the saved size even if a chat window is already opened
........
r5022 | asterix | 2006-01-07 03:43:47 -0700 (Sat, 07 Jan 2006) | 2 lines
we can now resume filetransfert
........
r5023 | asterix | 2006-01-07 03:56:31 -0700 (Sat, 07 Jan 2006) | 2 lines
[Knuckles] Google E-Mail Notification
........
r5024 | asterix | 2006-01-07 04:02:16 -0700 (Sat, 07 Jan 2006) | 2 lines
better string
........
r5025 | asterix | 2006-01-07 04:14:32 -0700 (Sat, 07 Jan 2006) | 2 lines
fix a TB
........
r5026 | asterix | 2006-01-07 05:36:55 -0700 (Sat, 07 Jan 2006) | 2 lines
we can now drag a file on a contact in the roster to send him a file
........
r5027 | asterix | 2006-01-07 06:26:28 -0700 (Sat, 07 Jan 2006) | 2 lines
contact.groups is always a list, even if emtpy
........
r5028 | asterix | 2006-01-07 06:54:30 -0700 (Sat, 07 Jan 2006) | 2 lines
make all buttons insensitive on a category row in disco
........
r5029 | asterix | 2006-01-07 07:19:25 -0700 (Sat, 07 Jan 2006) | 2 lines
auto open groupchat configuration window when we create a new room
........
2006-01-07 17:25:35 +00:00
2006-07-02 18:39:43 +00:00
def on_notify_gmail_checkbutton_toggled ( self , widget ) :
2006-01-19 09:49:26 +00:00
self . on_checkbutton_toggled ( widget , ' notify_on_new_gmail_email ' )
2006-07-02 18:39:43 +00:00
def on_notify_gmail_extra_checkbutton_toggled ( self , widget ) :
self . on_checkbutton_toggled ( widget , ' notify_on_new_gmail_email_extra ' )
2006-01-19 09:49:26 +00:00
2005-05-10 15:39:35 +00:00
def fill_msg_treeview ( self ) :
self . xml . get_widget ( ' delete_msg_button ' ) . set_sensitive ( False )
model = self . msg_tree . get_model ( )
model . clear ( )
2006-06-10 20:35:57 +00:00
preset_status = [ ]
for msg_name in gajim . config . get_per ( ' statusmsg ' ) :
preset_status . append ( msg_name )
preset_status . sort ( )
for msg_name in preset_status :
msg_text = gajim . config . get_per ( ' statusmsg ' , msg_name , ' message ' )
msg_text = helpers . from_one_line ( msg_text )
2005-05-10 15:39:35 +00:00
iter = model . append ( )
2006-06-10 20:35:57 +00:00
model . set ( iter , 0 , msg_name , 1 , msg_text )
2005-02-14 22:30:04 +00:00
2005-05-10 15:39:35 +00:00
def on_msg_cell_edited ( self , cell , row , new_text ) :
model = self . msg_tree . get_model ( )
iter = model . get_iter_from_string ( row )
model . set_value ( iter , 0 , new_text )
2005-02-14 22:30:04 +00:00
2005-05-10 15:39:35 +00:00
def on_msg_treeview_cursor_changed ( self , widget , data = None ) :
( model , iter ) = self . msg_tree . get_selection ( ) . get_selected ( )
if not iter :
return
self . xml . get_widget ( ' delete_msg_button ' ) . set_sensitive ( True )
buf = self . xml . get_widget ( ' msg_textview ' ) . get_buffer ( )
2005-08-07 11:44:50 +00:00
msg = model [ iter ] [ 1 ]
2005-05-10 15:39:35 +00:00
buf . set_text ( msg )
2005-02-14 22:30:04 +00:00
2005-05-10 15:39:35 +00:00
def on_new_msg_button_clicked ( self , widget , data = None ) :
model = self . msg_tree . get_model ( )
iter = model . append ( )
2005-07-29 17:47:37 +00:00
model . set ( iter , 0 , _ ( ' status message title ' ) , 1 , _ ( ' status message text ' ) )
2004-05-15 16:50:38 +00:00
2005-05-10 15:39:35 +00:00
def on_delete_msg_button_clicked ( self , widget , data = None ) :
( model , iter ) = self . msg_tree . get_selection ( ) . get_selected ( )
if not iter :
return
buf = self . xml . get_widget ( ' msg_textview ' ) . get_buffer ( )
model . remove ( iter )
buf . set_text ( ' ' )
self . xml . get_widget ( ' delete_msg_button ' ) . set_sensitive ( False )
2005-12-06 12:45:32 +00:00
2005-05-10 15:39:35 +00:00
def on_msg_textview_changed ( self , widget , data = None ) :
( model , iter ) = self . msg_tree . get_selection ( ) . get_selected ( )
if not iter :
return
buf = self . xml . get_widget ( ' msg_textview ' ) . get_buffer ( )
first_iter , end_iter = buf . get_bounds ( )
name = model . get_value ( iter , 0 )
model . set_value ( iter , 1 , buf . get_text ( first_iter , end_iter ) )
2005-12-06 12:45:32 +00:00
2005-05-10 15:39:35 +00:00
def on_msg_treeview_key_press_event ( self , widget , event ) :
if event . keyval == gtk . keysyms . Delete :
self . on_delete_msg_button_clicked ( widget )
2004-05-15 16:50:38 +00:00
2005-05-10 15:39:35 +00:00
def sound_toggled_cb ( self , cell , path ) :
model = self . sound_tree . get_model ( )
2006-02-17 19:43:31 +00:00
model [ path ] [ 0 ] = not model [ path ] [ 0 ]
2004-05-15 16:50:38 +00:00
2005-05-10 15:39:35 +00:00
def fill_sound_treeview ( self ) :
model = self . sound_tree . get_model ( )
model . clear ( )
2006-02-16 15:21:34 +00:00
# NOTE: sounds_ui_names MUST have all items of
# sounds = gajim.config.get_per('soundevents') as keys
sounds_dict = {
' first_message_received ' : _ ( ' First Message Received ' ) ,
' next_message_received ' : _ ( ' Next Message Received ' ) ,
' contact_connected ' : _ ( ' Contact Connected ' ) ,
' contact_disconnected ' : _ ( ' Contact Disconnected ' ) ,
' message_sent ' : _ ( ' Message Sent ' ) ,
' muc_message_highlight ' : _ ( ' Group Chat Message Highlight ' ) ,
' muc_message_received ' : _ ( ' Group Chat Message Received ' )
}
for sound_event_config_name , sound_ui_name in sounds_dict . items ( ) :
enabled = gajim . config . get_per ( ' soundevents ' ,
sound_event_config_name , ' enabled ' )
path = gajim . config . get_per ( ' soundevents ' ,
sound_event_config_name , ' path ' )
model . append ( ( enabled , sound_ui_name , path , sound_event_config_name ) )
2004-05-15 16:50:38 +00:00
2005-05-10 15:39:35 +00:00
def on_treeview_sounds_cursor_changed ( self , widget , data = None ) :
( model , iter ) = self . sound_tree . get_selection ( ) . get_selected ( )
sounds_entry = self . xml . get_widget ( ' sounds_entry ' )
if not iter :
sounds_entry . set_text ( ' ' )
return
2006-02-16 15:21:34 +00:00
path_to_snd_file = model [ iter ] [ 2 ]
sounds_entry . set_text ( path_to_snd_file )
2005-03-08 14:08:46 +00:00
2006-02-16 15:21:34 +00:00
def on_browse_for_sounds_button_clicked ( self , widget , data = None ) :
2005-05-10 15:39:35 +00:00
( model , iter ) = self . sound_tree . get_selection ( ) . get_selected ( )
if not iter :
return
2006-04-10 17:21:28 +00:00
def on_ok ( widget , path_to_snd_file ) :
self . dialog . destroy ( )
model , iter = self . sound_tree . get_selection ( ) . get_selected ( )
if not path_to_snd_file :
model [ iter ] [ 2 ] = ' '
self . xml . get_widget ( ' sounds_entry ' ) . set_text ( ' ' )
model [ iter ] [ 0 ] = False
return
2006-02-16 15:21:34 +00:00
directory = os . path . dirname ( path_to_snd_file )
2005-08-23 13:22:14 +00:00
gajim . config . set ( ' last_sounds_dir ' , directory )
2006-02-16 15:21:34 +00:00
self . xml . get_widget ( ' sounds_entry ' ) . set_text ( path_to_snd_file )
2006-04-10 17:21:28 +00:00
2006-02-16 15:21:34 +00:00
model [ iter ] [ 2 ] = path_to_snd_file # set new path to sounds_model
model [ iter ] [ 0 ] = True # set the sound to enabled
2005-04-06 18:51:54 +00:00
2006-04-10 17:21:28 +00:00
def on_cancel ( widget ) :
self . dialog . destroy ( )
model , iter = self . sound_tree . get_selection ( ) . get_selected ( )
model [ iter ] [ 2 ] = ' '
model [ iter ] [ 0 ] = False
path_to_snd_file = model [ iter ] [ 2 ] . decode ( ' utf-8 ' )
path_to_snd_file = os . path . join ( os . getcwd ( ) , path_to_snd_file )
self . dialog = dialogs . SoundChooserDialog ( path_to_snd_file , on_ok ,
on_cancel )
2005-06-06 15:03:41 +00:00
def on_sounds_entry_changed ( self , widget ) :
2006-02-16 15:21:34 +00:00
path_to_snd_file = widget . get_text ( )
2005-06-06 15:03:41 +00:00
model , iter = self . sound_tree . get_selection ( ) . get_selected ( )
2006-02-16 15:21:34 +00:00
model [ iter ] [ 2 ] = path_to_snd_file # set new path to sounds_model
2005-06-06 15:03:41 +00:00
2006-02-02 07:33:30 +00:00
def on_play_button_clicked ( self , widget ) :
model , iter = self . sound_tree . get_selection ( ) . get_selected ( )
if not iter :
return
2006-02-16 15:21:34 +00:00
snd_event_config_name = model [ iter ] [ 3 ]
helpers . play_sound ( snd_event_config_name )
2006-02-02 07:33:30 +00:00
2005-05-10 15:39:35 +00:00
def on_open_advanced_editor_button_clicked ( self , widget , data = None ) :
2005-11-13 15:08:47 +00:00
if gajim . interface . instances . has_key ( ' advanced_config ' ) :
gajim . interface . instances [ ' advanced_config ' ] . window . present ( )
2005-05-10 15:39:35 +00:00
else :
2005-11-13 15:08:47 +00:00
gajim . interface . instances [ ' advanced_config ' ] = \
2005-10-21 17:49:35 +00:00
dialogs . AdvancedConfigurationWindow ( )
2004-05-15 16:50:38 +00:00
2005-06-10 21:14:16 +00:00
#---------- AccountModificationWindow class -------------#
class AccountModificationWindow :
2005-04-18 12:17:43 +00:00
''' Class for account informations '''
2005-03-07 17:01:56 +00:00
def on_account_modification_window_destroy ( self , widget ) :
2005-04-18 12:17:43 +00:00
''' close window '''
2005-11-13 15:08:47 +00:00
if gajim . interface . instances . has_key ( self . account ) :
if gajim . interface . instances [ self . account ] . has_key ( ' account_modification ' ) :
del gajim . interface . instances [ self . account ] [ ' account_modification ' ]
2005-04-20 16:35:40 +00:00
return
2005-11-13 15:08:47 +00:00
if gajim . interface . instances . has_key ( ' account_modification ' ) :
del gajim . interface . instances [ ' account_modification ' ]
2005-12-06 12:45:32 +00:00
2005-04-17 18:36:09 +00:00
def on_cancel_button_clicked ( self , widget ) :
2005-04-12 15:30:09 +00:00
self . window . destroy ( )
2004-05-15 16:50:38 +00:00
2005-11-03 10:32:26 +00:00
def __init__ ( self , account ) :
2006-05-02 15:53:25 +00:00
self . xml = gtkgui_helpers . get_glade ( ' account_modification_window.glade ' )
2005-05-10 15:39:35 +00:00
self . window = self . xml . get_widget ( ' account_modification_window ' )
2006-07-17 20:27:30 +00:00
self . window . set_transient_for ( gajim . interface . roster . window )
2005-05-10 15:39:35 +00:00
self . account = account
2005-06-09 09:32:19 +00:00
# init proxy list
self . update_proxy_list ( )
2005-05-10 15:39:35 +00:00
self . xml . signal_autoconnect ( self )
2005-11-03 10:32:26 +00:00
self . init_account ( )
self . xml . get_widget ( ' save_button ' ) . grab_focus ( )
2005-05-10 15:39:35 +00:00
self . window . show_all ( )
2005-04-06 18:51:54 +00:00
def on_checkbutton_toggled ( self , widget , widgets ) :
2005-04-18 12:17:43 +00:00
''' set or unset sensitivity of widgets when widget is toggled '''
2005-04-06 18:51:54 +00:00
for w in widgets :
w . set_sensitive ( widget . get_active ( ) )
2005-04-22 01:05:31 +00:00
def init_account_gpg ( self ) :
keyid = gajim . config . get_per ( ' accounts ' , self . account , ' keyid ' )
2005-05-09 19:52:43 +00:00
keyname = gajim . config . get_per ( ' accounts ' , self . account , ' keyname ' )
2005-04-22 01:05:31 +00:00
savegpgpass = gajim . config . get_per ( ' accounts ' , self . account ,
2005-05-09 19:52:43 +00:00
' savegpgpass ' )
2005-04-22 01:05:31 +00:00
if not keyid or not gajim . config . get ( ' usegpg ' ) :
return
2005-04-24 15:47:53 +00:00
self . xml . get_widget ( ' gpg_key_label ' ) . set_text ( keyid )
2005-04-22 01:05:31 +00:00
self . xml . get_widget ( ' gpg_name_label ' ) . set_text ( keyname )
gpg_save_password_checkbutton = \
self . xml . get_widget ( ' gpg_save_password_checkbutton ' )
gpg_save_password_checkbutton . set_sensitive ( True )
gpg_save_password_checkbutton . set_active ( savegpgpass )
if savegpgpass :
entry = self . xml . get_widget ( ' gpg_password_entry ' )
entry . set_sensitive ( True )
gpgpassword = gajim . config . get_per ( ' accounts ' ,
self . account , ' gpgpassword ' )
entry . set_text ( gpgpassword )
2005-04-12 15:30:09 +00:00
2005-06-08 22:05:45 +00:00
def update_proxy_list ( self ) :
2005-06-09 09:32:19 +00:00
if self . account :
our_proxy = gajim . config . get_per ( ' accounts ' , self . account , ' proxy ' )
else :
our_proxy = ' '
2005-06-08 22:05:45 +00:00
if not our_proxy :
2006-05-08 21:25:41 +00:00
our_proxy = _ ( ' None ' )
2005-06-08 22:05:45 +00:00
self . proxy_combobox = self . xml . get_widget ( ' proxies_combobox ' )
2005-06-18 13:48:43 +00:00
model = gtk . ListStore ( str )
2005-06-08 22:05:45 +00:00
self . proxy_combobox . set_model ( model )
l = gajim . config . get_per ( ' proxies ' )
2006-05-08 21:25:41 +00:00
l . insert ( 0 , _ ( ' None ' ) )
2005-10-27 12:47:54 +00:00
for i in xrange ( len ( l ) ) :
2005-06-08 22:05:45 +00:00
model . append ( [ l [ i ] ] )
if our_proxy == l [ i ] :
self . proxy_combobox . set_active ( i )
2005-04-14 23:00:25 +00:00
def init_account ( self ) :
2005-04-18 12:17:43 +00:00
''' Initialize window with defaults values '''
2005-04-14 23:00:25 +00:00
self . xml . get_widget ( ' name_entry ' ) . set_text ( self . account )
2005-04-22 01:05:31 +00:00
jid = gajim . config . get_per ( ' accounts ' , self . account , ' name ' ) \
+ ' @ ' + gajim . config . get_per ( ' accounts ' ,
2005-10-20 08:48:19 +00:00
self . account , ' hostname ' )
2005-04-14 23:00:25 +00:00
self . xml . get_widget ( ' jid_entry ' ) . set_text ( jid )
2005-06-18 14:17:26 +00:00
self . xml . get_widget ( ' save_password_checkbutton ' ) . set_active (
2005-04-14 23:00:25 +00:00
gajim . config . get_per ( ' accounts ' , self . account , ' savepass ' ) )
if gajim . config . get_per ( ' accounts ' , self . account , ' savepass ' ) :
2005-04-22 01:05:31 +00:00
passstr = gajim . config . get_per ( ' accounts ' ,
self . account , ' password ' )
2005-04-14 23:00:25 +00:00
password_entry = self . xml . get_widget ( ' password_entry ' )
password_entry . set_sensitive ( True )
2005-04-22 01:05:31 +00:00
password_entry . set_text ( passstr )
2005-06-18 14:17:26 +00:00
self . xml . get_widget ( ' resource_entry ' ) . set_text ( gajim . config . get_per (
2005-04-14 23:00:25 +00:00
' accounts ' , self . account , ' resource ' ) )
self . xml . get_widget ( ' priority_spinbutton ' ) . set_value ( gajim . config . \
get_per ( ' accounts ' , self . account , ' priority ' ) )
2005-06-08 15:48:53 +00:00
2005-05-30 11:01:08 +00:00
usessl = gajim . config . get_per ( ' accounts ' , self . account , ' usessl ' )
self . xml . get_widget ( ' use_ssl_checkbutton ' ) . set_active ( usessl )
2005-12-06 12:45:32 +00:00
2005-07-25 00:31:20 +00:00
self . xml . get_widget ( ' send_keepalive_checkbutton ' ) . set_active (
gajim . config . get_per ( ' accounts ' , self . account ,
' keep_alives_enabled ' ) )
2005-05-09 19:52:43 +00:00
2005-06-14 10:26:01 +00:00
use_custom_host = gajim . config . get_per ( ' accounts ' , self . account ,
' use_custom_host ' )
self . xml . get_widget ( ' custom_host_port_checkbutton ' ) . set_active (
use_custom_host )
custom_host = gajim . config . get_per ( ' accounts ' , self . account ,
2005-10-20 08:48:19 +00:00
' custom_host ' )
2005-06-14 10:26:01 +00:00
if not custom_host :
custom_host = gajim . config . get_per ( ' accounts ' ,
2005-10-20 08:48:19 +00:00
self . account , ' hostname ' )
2005-06-14 10:26:01 +00:00
self . xml . get_widget ( ' custom_host_entry ' ) . set_text ( custom_host )
custom_port = gajim . config . get_per ( ' accounts ' , self . account ,
2005-10-19 20:18:09 +00:00
' custom_port ' )
2005-06-14 10:26:01 +00:00
if not custom_port :
custom_port = 5222
2005-08-26 00:52:44 +00:00
self . xml . get_widget ( ' custom_port_entry ' ) . set_text ( unicode ( custom_port ) )
2005-06-13 21:16:41 +00:00
2005-02-28 22:09:21 +00:00
gpg_key_label = self . xml . get_widget ( ' gpg_key_label ' )
2005-04-22 01:05:31 +00:00
if gajim . config . get ( ' usegpg ' ) :
2005-04-23 17:40:43 +00:00
self . init_account_gpg ( )
2005-04-22 01:05:31 +00:00
else :
2005-05-30 14:16:41 +00:00
gpg_key_label . set_text ( _ ( ' OpenPGP is not usable in this computer ' ) )
2005-02-28 22:09:21 +00:00
self . xml . get_widget ( ' gpg_choose_button ' ) . set_sensitive ( False )
2005-04-14 23:00:25 +00:00
self . xml . get_widget ( ' autoconnect_checkbutton ' ) . set_active ( gajim . config . \
get_per ( ' accounts ' , self . account , ' autoconnect ' ) )
2005-09-05 13:28:09 +00:00
self . xml . get_widget ( ' autoreconnect_checkbutton ' ) . set_active ( gajim . config . \
get_per ( ' accounts ' , self . account , ' autoreconnect ' ) )
2005-06-18 14:17:26 +00:00
2005-11-03 10:32:26 +00:00
self . xml . get_widget ( ' sync_with_global_status_checkbutton ' ) . set_active (
gajim . config . get_per ( ' accounts ' , self . account ,
' sync_with_global_status ' ) )
self . xml . get_widget ( ' autoconnect_checkbutton ' ) . set_active (
gajim . config . get_per ( ' accounts ' , self . account , ' autoconnect ' ) )
2006-03-27 08:28:05 +00:00
self . xml . get_widget ( ' use_ft_proxies_checkbutton ' ) . set_active (
gajim . config . get_per ( ' accounts ' , self . account , ' use_ft_proxies ' ) )
2005-06-07 01:10:24 +00:00
list_no_log_for = gajim . config . get_per ( ' accounts ' , self . account ,
2005-04-14 23:00:25 +00:00
' no_log_for ' ) . split ( )
if self . account in list_no_log_for :
self . xml . get_widget ( ' log_history_checkbutton ' ) . set_active ( 0 )
2004-05-15 16:50:38 +00:00
2006-02-27 16:14:14 +00:00
def option_changed ( self , config , opt ) :
2006-02-26 23:52:00 +00:00
if gajim . config . get_per ( ' accounts ' , self . account , opt ) != config [ opt ] :
return True
return False
2006-02-27 16:14:14 +00:00
def options_changed_need_relogin ( self , config , options ) :
''' accepts configuration and options
( tupple of strings of the name of options changed )
and returns True or False depending on if at least one of the options
need relogin to server to apply '''
for option in options :
if self . option_changed ( config , option ) :
return True
return False
2005-02-28 22:09:21 +00:00
def on_save_button_clicked ( self , widget ) :
2005-04-18 12:17:43 +00:00
''' When save button is clicked: Save information in config file '''
2005-05-10 09:20:35 +00:00
config = { }
2005-08-26 00:52:44 +00:00
name = self . xml . get_widget ( ' name_entry ' ) . get_text ( ) . decode ( ' utf-8 ' )
2005-04-14 07:20:14 +00:00
if gajim . connections . has_key ( self . account ) :
2006-03-30 17:23:06 +00:00
if name != self . account :
if gajim . connections [ self . account ] . connected != 0 :
dialogs . ErrorDialog (
_ ( ' You are currently connected to the server ' ) ,
2006-04-02 16:11:21 +00:00
_ ( ' To change the account name, you must be disconnected. ' ) )
2006-03-30 17:23:06 +00:00
return
if len ( gajim . awaiting_events [ self . account ] ) :
dialogs . ErrorDialog ( _ ( ' Unread events ' ) ,
_ ( ' To change the account name, you must read all pending '
2006-04-02 16:11:21 +00:00
' events. ' ) )
2006-03-30 17:23:06 +00:00
return
2006-04-10 10:16:34 +00:00
if name in gajim . connections :
dialogs . ErrorDialog ( _ ( ' Account Name Already Used ' ) ,
_ ( ' This name is already used by another of your accounts. Please choose '
' another name. ' ) )
return
2005-05-10 09:20:35 +00:00
if ( name == ' ' ) :
2005-06-10 21:14:16 +00:00
dialogs . ErrorDialog ( _ ( ' Invalid account name ' ) ,
2006-04-02 16:11:21 +00:00
_ ( ' Account name cannot be empty. ' ) )
2005-05-10 09:20:35 +00:00
return
if name . find ( ' ' ) != - 1 :
2005-06-10 21:14:16 +00:00
dialogs . ErrorDialog ( _ ( ' Invalid account name ' ) ,
2006-04-02 16:11:21 +00:00
_ ( ' Account name cannot contain spaces. ' ) )
2005-05-10 09:20:35 +00:00
return
2005-08-26 00:52:44 +00:00
jid = self . xml . get_widget ( ' jid_entry ' ) . get_text ( ) . decode ( ' utf-8 ' )
2005-11-03 14:46:56 +00:00
# check if jid is conform to RFC and stringprep it
try :
jid = helpers . parse_jid ( jid )
except helpers . InvalidFormat , s :
2005-11-03 22:37:21 +00:00
pritext = _ ( ' Invalid Jabber ID ' )
2006-04-02 16:11:21 +00:00
dialogs . ErrorDialog ( pritext , str ( s ) )
2005-11-03 22:37:21 +00:00
return
n , hn = jid . split ( ' @ ' , 1 )
if not n :
pritext = _ ( ' Invalid Jabber ID ' )
sectext = _ ( ' A Jabber ID must be in the form " user@servername " . ' )
2006-04-02 16:11:21 +00:00
dialogs . ErrorDialog ( pritext , sectext )
2005-11-03 14:46:56 +00:00
return
resource = self . xml . get_widget ( ' resource_entry ' ) . get_text ( ) . decode ( ' utf-8 ' )
try :
resource = helpers . parse_resource ( resource )
except helpers . InvalidFormat , s :
2005-11-03 22:37:21 +00:00
pritext = _ ( ' Invalid Jabber ID ' )
2006-04-02 16:11:21 +00:00
dialogs . ErrorDialog ( pritext , ( s ) )
2005-05-10 09:20:35 +00:00
return
2005-11-03 14:46:56 +00:00
2005-05-10 09:20:35 +00:00
config [ ' savepass ' ] = self . xml . get_widget (
' save_password_checkbutton ' ) . get_active ( )
2005-11-03 10:32:26 +00:00
config [ ' password ' ] = self . xml . get_widget ( ' password_entry ' ) . get_text ( ) . \
decode ( ' utf-8 ' )
2005-11-03 14:46:56 +00:00
config [ ' resource ' ] = resource
2005-05-10 09:20:35 +00:00
config [ ' priority ' ] = self . xml . get_widget ( ' priority_spinbutton ' ) . \
get_value_as_int ( )
config [ ' autoconnect ' ] = self . xml . get_widget ( ' autoconnect_checkbutton ' ) . \
get_active ( )
2005-09-05 13:28:09 +00:00
config [ ' autoreconnect ' ] = self . xml . get_widget ( ' autoreconnect_checkbutton ' ) . \
get_active ( )
2005-03-06 19:19:21 +00:00
2005-04-14 23:00:25 +00:00
if self . account :
2005-04-22 01:05:31 +00:00
list_no_log_for = gajim . config . get_per ( ' accounts ' ,
self . account , ' no_log_for ' ) . split ( )
2005-04-14 23:00:25 +00:00
else :
list_no_log_for = [ ]
2005-03-06 19:19:21 +00:00
if self . account in list_no_log_for :
list_no_log_for . remove ( self . account )
if not self . xml . get_widget ( ' log_history_checkbutton ' ) . get_active ( ) :
list_no_log_for . append ( name )
2005-05-10 09:20:35 +00:00
config [ ' no_log_for ' ] = ' ' . join ( list_no_log_for )
2005-12-06 12:45:32 +00:00
2005-05-10 09:20:35 +00:00
config [ ' sync_with_global_status ' ] = self . xml . get_widget (
2005-04-21 17:43:47 +00:00
' sync_with_global_status_checkbutton ' ) . get_active ( )
2006-03-27 08:28:05 +00:00
config [ ' use_ft_proxies ' ] = self . xml . get_widget (
' use_ft_proxies_checkbutton ' ) . get_active ( )
2005-12-06 12:45:32 +00:00
2005-06-08 15:48:53 +00:00
active = self . proxy_combobox . get_active ( )
2005-08-26 00:52:44 +00:00
proxy = self . proxy_combobox . get_model ( ) [ active ] [ 0 ] . decode ( ' utf-8 ' )
2006-05-08 21:25:41 +00:00
if proxy == _ ( ' None ' ) :
2005-06-08 15:48:53 +00:00
proxy = ' '
config [ ' proxy ' ] = proxy
2005-12-06 12:45:32 +00:00
2005-05-30 11:01:08 +00:00
config [ ' usessl ' ] = self . xml . get_widget ( ' use_ssl_checkbutton ' ) . get_active ( )
2005-10-19 18:47:09 +00:00
config [ ' name ' ] = n
2005-10-20 08:48:19 +00:00
config [ ' hostname ' ] = hn
2005-06-14 10:26:01 +00:00
config [ ' use_custom_host ' ] = self . xml . get_widget (
' custom_host_port_checkbutton ' ) . get_active ( )
custom_port = self . xml . get_widget ( ' custom_port_entry ' ) . get_text ( )
try :
custom_port = int ( custom_port )
except :
dialogs . ErrorDialog ( _ ( ' Invalid entry ' ) ,
2006-04-02 16:11:21 +00:00
_ ( ' Custom port must be a port number. ' ) )
2005-06-14 10:26:01 +00:00
return
config [ ' custom_port ' ] = custom_port
config [ ' custom_host ' ] = self . xml . get_widget (
2005-10-20 08:48:19 +00:00
' custom_host_entry ' ) . get_text ( ) . decode ( ' utf-8 ' )
2005-06-13 21:16:41 +00:00
2005-08-26 00:52:44 +00:00
config [ ' keyname ' ] = self . xml . get_widget ( ' gpg_name_label ' ) . get_text ( ) . decode ( ' utf-8 ' )
2005-05-10 09:20:35 +00:00
if config [ ' keyname ' ] == ' ' : #no key selected
config [ ' keyid ' ] = ' '
config [ ' savegpgpass ' ] = False
config [ ' gpgpassword ' ] = ' '
2004-10-10 18:44:38 +00:00
else :
2005-08-26 00:52:44 +00:00
config [ ' keyid ' ] = self . xml . get_widget ( ' gpg_key_label ' ) . get_text ( ) . decode ( ' utf-8 ' )
2005-05-10 09:20:35 +00:00
config [ ' savegpgpass ' ] = self . xml . get_widget (
2005-04-21 17:43:47 +00:00
' gpg_save_password_checkbutton ' ) . get_active ( )
2005-11-15 18:12:22 +00:00
config [ ' gpgpassword ' ] = self . xml . get_widget ( ' gpg_password_entry '
) . get_text ( ) . decode ( ' utf-8 ' )
2005-11-03 10:32:26 +00:00
#if we modify the name of the account
if name != self . account :
#update variables
2005-11-15 18:12:22 +00:00
gajim . interface . instances [ name ] = gajim . interface . instances [ self . account ]
2005-11-03 10:32:26 +00:00
gajim . awaiting_events [ name ] = gajim . awaiting_events [ self . account ]
gajim . nicks [ name ] = gajim . nicks [ self . account ]
2006-03-28 13:28:51 +00:00
gajim . block_signed_in_notifications [ name ] = \
gajim . block_signed_in_notifications [ self . account ]
2005-11-03 10:32:26 +00:00
gajim . groups [ name ] = gajim . groups [ self . account ]
gajim . gc_connected [ name ] = gajim . gc_connected [ self . account ]
2006-07-25 23:47:26 +00:00
gajim . automatic_rooms [ name ] = gajim . automatic_rooms [ self . account ]
2005-11-03 10:32:26 +00:00
gajim . newly_added [ name ] = gajim . newly_added [ self . account ]
gajim . to_be_removed [ name ] = gajim . to_be_removed [ self . account ]
gajim . sleeper_state [ name ] = gajim . sleeper_state [ self . account ]
gajim . encrypted_chats [ name ] = gajim . encrypted_chats [ self . account ]
gajim . last_message_time [ name ] = \
gajim . last_message_time [ self . account ]
gajim . status_before_autoaway [ name ] = \
gajim . status_before_autoaway [ self . account ]
Merged in trunk updates, including meta_contacts
Merged revisions 4951,4962-4969 via svnmerge from
svn://svn.gajim.org/gajim/trunk
........
r4951 | nk | 2005-12-30 16:50:36 -0700 (Fri, 30 Dec 2005) | 1 line
fixes in greek transl
........
r4962 | asterix | 2006-01-01 11:41:04 -0700 (Sun, 01 Jan 2006) | 2 lines
merge meta_contacts branch with trunk. Meta contacts are not in gajim yet, but framework is here. We now use gajim.contacts.many_functions() to handle contacts and groupchat_contacts.
........
r4963 | asterix | 2006-01-01 11:43:24 -0700 (Sun, 01 Jan 2006) | 2 lines
correct contacts file
........
r4964 | asterix | 2006-01-01 11:47:26 -0700 (Sun, 01 Jan 2006) | 2 lines
dict.remove() doesn't exists, it's del dict[]
........
r4965 | asterix | 2006-01-01 11:50:15 -0700 (Sun, 01 Jan 2006) | 2 lines
some missing commits from branch
........
r4966 | asterix | 2006-01-01 11:53:30 -0700 (Sun, 01 Jan 2006) | 2 lines
end of gc_contact.nick -> gc_contact.name
........
r4967 | asterix | 2006-01-01 12:05:59 -0700 (Sun, 01 Jan 2006) | 2 lines
new ACE option: send_sha_in_gc_presence that allow to send sha info in groupchat presences
........
r4968 | asterix | 2006-01-01 12:12:36 -0700 (Sun, 01 Jan 2006) | 2 lines
0.9.1-2 in debian that solve the group bug (commit [4924])
........
r4969 | asterix | 2006-01-01 12:31:13 -0700 (Sun, 01 Jan 2006) | 2 lines
typo
........
2006-01-01 20:06:26 +00:00
gajim . contacts . change_account_name ( self . account , name )
2005-11-03 10:32:26 +00:00
#upgrade account variable in opened windows
for kind in ( ' infos ' , ' disco ' , ' chats ' , ' gc ' , ' gc_config ' ) :
2005-11-13 15:08:47 +00:00
for j in gajim . interface . instances [ name ] [ kind ] :
gajim . interface . instances [ name ] [ kind ] [ j ] . account = name
2005-11-03 10:32:26 +00:00
#upgrade account in systray
2006-07-17 21:41:11 +00:00
if gajim . interface . systray_capabilities :
2005-11-03 10:32:26 +00:00
for list in gajim . interface . systray . jids :
if list [ 0 ] == self . account :
list [ 0 ] = name
2006-04-25 08:08:45 +00:00
# ServiceCache object keep old property account
if hasattr ( gajim . connections [ self . account ] , ' services_cache ' ) :
gajim . connections [ self . account ] . services_cache . account = name
2005-11-13 15:08:47 +00:00
del gajim . interface . instances [ self . account ]
2005-11-03 10:32:26 +00:00
del gajim . awaiting_events [ self . account ]
del gajim . nicks [ self . account ]
2006-03-28 13:28:51 +00:00
del gajim . block_signed_in_notifications [ self . account ]
2005-11-03 10:32:26 +00:00
del gajim . groups [ self . account ]
del gajim . gc_connected [ self . account ]
2006-07-25 23:47:26 +00:00
del gajim . automatic_rooms [ self . account ]
2005-11-03 10:32:26 +00:00
del gajim . newly_added [ self . account ]
del gajim . to_be_removed [ self . account ]
del gajim . sleeper_state [ self . account ]
del gajim . encrypted_chats [ self . account ]
del gajim . last_message_time [ self . account ]
del gajim . status_before_autoaway [ self . account ]
gajim . connections [ self . account ] . name = name
gajim . connections [ name ] = gajim . connections [ self . account ]
del gajim . connections [ self . account ]
gajim . config . del_per ( ' accounts ' , self . account )
gajim . config . add_per ( ' accounts ' , name )
self . account = name
2005-12-06 12:45:32 +00:00
2006-04-23 19:29:02 +00:00
resend_presence = False
2006-02-27 16:14:14 +00:00
if gajim . connections [ self . account ] . connected == 0 : # we're disconnected
relogin_needed = False
else : # we're connected to the account we want to apply changes
# check if relogin is needed
2006-07-17 10:36:28 +00:00
relogin_needed = False
2006-06-21 18:13:20 +00:00
if self . options_changed_need_relogin ( config ,
2006-04-23 19:29:02 +00:00
( ' resource ' , ' proxy ' , ' usessl ' , ' keyname ' ,
2006-06-21 17:03:14 +00:00
' use_custom_host ' , ' custom_host ' ) ) :
relogin_needed = True
2006-02-27 16:14:14 +00:00
2006-06-21 17:03:14 +00:00
elif config [ ' use_custom_host ' ] and ( self . option_changed ( config ,
2006-02-27 17:11:36 +00:00
' custom_host ' ) or self . option_changed ( config , ' custom_port ' ) ) :
2006-02-27 17:12:02 +00:00
relogin_needed = True
2006-02-27 16:14:14 +00:00
2006-03-27 08:28:05 +00:00
if self . option_changed ( config , ' use_ft_proxies ' ) and \
config [ ' use_ft_proxies ' ] :
gajim . connections [ self . account ] . discover_ft_proxies ( )
2006-04-23 19:29:02 +00:00
if self . option_changed ( config , ' priority ' ) :
resend_presence = True
2005-05-10 09:20:35 +00:00
for opt in config :
gajim . config . set_per ( ' accounts ' , name , opt , config [ opt ] )
if config [ ' savepass ' ] :
gajim . connections [ name ] . password = config [ ' password ' ]
2005-11-05 11:21:41 +00:00
else :
gajim . connections [ name ] . password = None
2006-02-26 23:52:00 +00:00
# refresh accounts window
2005-11-13 15:08:47 +00:00
if gajim . interface . instances . has_key ( ' accounts ' ) :
gajim . interface . instances [ ' accounts ' ] . init_accounts ( )
2006-02-26 23:52:00 +00:00
# refresh roster
2005-10-20 11:17:17 +00:00
gajim . interface . roster . draw_roster ( )
gajim . interface . save_config ( )
2005-04-12 15:30:09 +00:00
self . window . destroy ( )
2006-02-27 16:14:14 +00:00
2006-04-02 16:11:21 +00:00
if relogin_needed :
2006-04-10 16:01:12 +00:00
def login ( account , show_before , status_before ) :
''' login with previous status '''
# first make sure connection is really closed,
# 0.5 may not be enough
gajim . connections [ account ] . disconnect ( True )
gajim . interface . roster . send_status ( account , show_before ,
status_before )
2006-04-23 19:29:02 +00:00
2006-04-02 16:11:21 +00:00
def relog ( widget ) :
self . dialog . destroy ( )
show_before = gajim . SHOW_LIST [ gajim . connections [ self . account ] . \
connected ]
status_before = gajim . connections [ self . account ] . status
gajim . interface . roster . send_status ( self . account , ' offline ' ,
_ ( ' Be right back. ' ) )
2006-04-10 16:01:12 +00:00
gobject . timeout_add ( 500 , login , self . account , show_before ,
status_before )
2006-04-23 19:29:02 +00:00
def resend ( widget ) :
self . resend_presence ( )
on_no = None
if resend_presence :
on_no = resend
2006-04-02 16:11:21 +00:00
self . dialog = dialogs . YesNoDialog ( _ ( ' Relogin now? ' ) ,
_ ( ' If you want all the changes to apply instantly, '
2006-04-23 19:29:02 +00:00
' you must relogin. ' ) , on_response_yes = relog ,
on_response_no = on_no )
elif resend_presence :
self . resend_presence ( )
def resend_presence ( self ) :
show = gajim . SHOW_LIST [ gajim . connections [ self . account ] . connected ]
status = gajim . connections [ self . account ] . status
gajim . connections [ self . account ] . change_status ( show , status )
2004-05-15 16:50:38 +00:00
2005-03-04 13:10:00 +00:00
def on_change_password_button_clicked ( self , widget ) :
2005-07-18 11:03:53 +00:00
try :
2005-10-20 11:17:17 +00:00
dialog = dialogs . ChangePasswordDialog ( self . account )
2005-12-06 12:45:32 +00:00
except RuntimeError :
2005-07-18 14:15:33 +00:00
#if we showed ErrorDialog, there will not be dialog instance
2005-07-18 11:03:53 +00:00
return
2005-12-06 12:45:32 +00:00
2005-03-04 13:10:00 +00:00
new_password = dialog . run ( )
if new_password != - 1 :
2005-10-30 16:50:05 +00:00
gajim . connections [ self . account ] . change_password ( new_password )
2005-03-04 13:10:00 +00:00
if self . xml . get_widget ( ' save_password_checkbutton ' ) . get_active ( ) :
self . xml . get_widget ( ' password_entry ' ) . set_text ( new_password )
2005-02-28 22:09:21 +00:00
def on_edit_details_button_clicked ( self , widget ) :
2005-11-13 15:08:47 +00:00
if not gajim . interface . instances . has_key ( self . account ) :
2005-06-10 21:14:16 +00:00
dialogs . ErrorDialog ( _ ( ' No such account available ' ) ,
2006-04-02 16:11:21 +00:00
_ ( ' You must create your account before editing your personal information. ' ) )
2005-03-07 21:03:48 +00:00
return
2005-07-18 21:16:31 +00:00
2005-07-18 21:26:42 +00:00
# show error dialog if account is newly created (not in gajim.connections)
2005-07-18 21:16:31 +00:00
if not gajim . connections . has_key ( self . account ) or \
2005-07-18 21:26:42 +00:00
gajim . connections [ self . account ] . connected < 2 :
2005-06-10 21:14:16 +00:00
dialogs . ErrorDialog ( _ ( ' You are not connected to the server ' ) ,
2006-04-02 16:11:21 +00:00
_ ( ' Without a connection, you can not edit your personal information. ' ) )
2005-03-07 21:03:48 +00:00
return
2005-12-06 12:45:32 +00:00
2006-07-26 12:01:14 +00:00
if not gajim . connections [ self . account ] . vcard_supported :
dialogs . ErrorDialog ( _ ( " Your server doesn ' t support Vcard " ) ,
_ ( " Your server can ' t save your personal information. " ) )
return
2006-06-05 12:01:17 +00:00
gajim . interface . edit_own_details ( self . account )
2005-06-08 22:05:45 +00:00
def on_manage_proxies_button_clicked ( self , widget ) :
2005-11-13 15:08:47 +00:00
if gajim . interface . instances . has_key ( ' manage_proxies ' ) :
gajim . interface . instances [ ' manage_proxies ' ] . window . present ( )
2005-06-08 22:05:45 +00:00
else :
2005-11-13 15:08:47 +00:00
gajim . interface . instances [ ' manage_proxies ' ] = \
2005-10-20 11:17:17 +00:00
ManageProxiesWindow ( )
2005-06-08 22:05:45 +00:00
2005-04-21 23:20:18 +00:00
def on_gpg_choose_button_clicked ( self , widget , data = None ) :
2005-07-18 14:16:55 +00:00
if gajim . connections . has_key ( self . account ) :
secret_keys = gajim . connections [ self . account ] . ask_gpg_secrete_keys ( )
# self.account is None and/or gajim.connections is {}
else :
from common import GnuPG
if GnuPG . USE_GPG :
2005-07-20 13:55:50 +00:00
secret_keys = GnuPG . GnuPG ( ) . get_secret_keys ( )
2005-07-18 14:16:55 +00:00
else :
secret_keys = [ ]
2005-04-12 21:09:06 +00:00
if not secret_keys :
2005-06-10 21:14:16 +00:00
dialogs . ErrorDialog ( _ ( ' Failed to get secret keys ' ) ,
2006-04-02 16:11:21 +00:00
_ ( ' There was a problem retrieving your OpenPGP secret keys. ' ) )
2005-04-12 21:09:06 +00:00
return
secret_keys [ ' None ' ] = ' None '
2006-01-31 12:43:28 +00:00
instance = dialogs . ChooseGPGKeyDialog ( _ ( ' OpenPGP Key Selection ' ) ,
2005-07-22 22:49:03 +00:00
_ ( ' Choose your OpenPGP key ' ) , secret_keys )
2005-08-02 16:27:25 +00:00
keyID = instance . run ( )
2005-07-22 22:49:03 +00:00
if keyID is None :
2004-10-10 18:44:38 +00:00
return
2005-04-22 01:05:31 +00:00
checkbutton = self . xml . get_widget ( ' gpg_save_password_checkbutton ' )
2005-02-28 22:09:21 +00:00
gpg_key_label = self . xml . get_widget ( ' gpg_key_label ' )
gpg_name_label = self . xml . get_widget ( ' gpg_name_label ' )
2004-10-10 18:44:38 +00:00
if keyID [ 0 ] == ' None ' :
2005-02-28 22:09:21 +00:00
gpg_key_label . set_text ( _ ( ' No key selected ' ) )
gpg_name_label . set_text ( ' ' )
2005-04-22 01:05:31 +00:00
checkbutton . set_sensitive ( False )
2005-02-28 22:09:21 +00:00
self . xml . get_widget ( ' gpg_password_entry ' ) . set_sensitive ( False )
2004-10-10 18:44:38 +00:00
else :
2005-02-28 22:09:21 +00:00
gpg_key_label . set_text ( keyID [ 0 ] )
gpg_name_label . set_text ( keyID [ 1 ] )
2005-04-22 01:05:31 +00:00
checkbutton . set_sensitive ( True )
checkbutton . set_active ( False )
2005-02-28 22:09:21 +00:00
self . xml . get_widget ( ' gpg_password_entry ' ) . set_text ( ' ' )
2004-11-01 13:41:00 +00:00
2005-02-28 22:09:21 +00:00
def on_checkbutton_toggled_and_clear ( self , widget , widgets ) :
self . on_checkbutton_toggled ( widget , widgets )
2004-11-01 13:41:00 +00:00
for w in widgets :
if not widget . get_active ( ) :
w . set_text ( ' ' )
2004-10-10 18:44:38 +00:00
2005-06-13 21:16:41 +00:00
def on_use_ssl_checkbutton_toggled ( self , widget ) :
isactive = widget . get_active ( )
if isactive :
self . xml . get_widget ( ' custom_port_entry ' ) . set_text ( ' 5223 ' )
else :
self . xml . get_widget ( ' custom_port_entry ' ) . set_text ( ' 5222 ' )
2005-06-25 23:25:17 +00:00
def on_send_keepalive_checkbutton_toggled ( self , widget ) :
isactive = widget . get_active ( )
gajim . config . set_per ( ' accounts ' , self . account ,
' keep_alives_enabled ' , isactive )
2005-12-06 12:45:32 +00:00
2005-06-13 10:57:49 +00:00
def on_custom_host_port_checkbutton_toggled ( self , widget ) :
isactive = widget . get_active ( )
self . xml . get_widget ( ' custom_host_port_hbox ' ) . set_sensitive ( isactive )
2005-02-28 22:09:21 +00:00
def on_gpg_save_password_checkbutton_toggled ( self , widget ) :
2005-06-08 13:45:30 +00:00
self . on_checkbutton_toggled_and_clear ( widget , [
2005-02-28 22:09:21 +00:00
self . xml . get_widget ( ' gpg_password_entry ' ) ] )
def on_save_password_checkbutton_toggled ( self , widget ) :
2005-06-08 13:45:30 +00:00
self . on_checkbutton_toggled_and_clear ( widget ,
2005-02-28 22:09:21 +00:00
[ self . xml . get_widget ( ' password_entry ' ) ] )
2005-03-11 00:32:41 +00:00
self . xml . get_widget ( ' password_entry ' ) . grab_focus ( )
2005-02-24 22:16:21 +00:00
2005-06-10 21:14:16 +00:00
#---------- ManageProxiesWindow class -------------#
class ManageProxiesWindow :
2005-10-20 11:17:17 +00:00
def __init__ ( self ) :
2006-05-02 15:53:25 +00:00
self . xml = gtkgui_helpers . get_glade ( ' manage_proxies_window.glade ' )
2005-06-08 22:05:45 +00:00
self . window = self . xml . get_widget ( ' manage_proxies_window ' )
2006-07-17 20:27:30 +00:00
self . window . set_transient_for ( gajim . interface . roster . window )
2005-06-08 22:05:45 +00:00
self . proxies_treeview = self . xml . get_widget ( ' proxies_treeview ' )
self . proxyname_entry = self . xml . get_widget ( ' proxyname_entry ' )
self . init_list ( )
self . xml . signal_autoconnect ( self )
self . window . show_all ( )
def fill_proxies_treeview ( self ) :
model = self . proxies_treeview . get_model ( )
model . clear ( )
iter = model . append ( )
2006-05-08 21:25:41 +00:00
model . set ( iter , 0 , _ ( ' None ' ) )
2005-06-08 22:05:45 +00:00
for p in gajim . config . get_per ( ' proxies ' ) :
iter = model . append ( )
model . set ( iter , 0 , p )
def init_list ( self ) :
self . xml . get_widget ( ' remove_proxy_button ' ) . set_sensitive ( False )
self . xml . get_widget ( ' proxytype_combobox ' ) . set_sensitive ( False )
self . xml . get_widget ( ' proxy_table ' ) . set_sensitive ( False )
2005-06-18 13:48:43 +00:00
model = gtk . ListStore ( str )
2005-06-08 22:05:45 +00:00
self . proxies_treeview . set_model ( model )
col = gtk . TreeViewColumn ( ' Proxies ' )
self . proxies_treeview . append_column ( col )
renderer = gtk . CellRendererText ( )
col . pack_start ( renderer , True )
col . set_attributes ( renderer , text = 0 )
self . fill_proxies_treeview ( )
self . xml . get_widget ( ' proxytype_combobox ' ) . set_active ( 0 )
def on_manage_proxies_window_destroy ( self , widget ) :
for account in gajim . connections :
2005-11-13 15:08:47 +00:00
if gajim . interface . instances [ account ] . has_key ( ' account_modification ' ) :
gajim . interface . instances [ account ] [ ' account_modification ' ] . \
2005-06-08 22:05:45 +00:00
update_proxy_list ( )
2005-11-13 15:08:47 +00:00
if gajim . interface . instances . has_key ( ' account_modification ' ) :
gajim . interface . instances [ ' account_modification ' ] . update_proxy_list ( )
2005-12-06 12:45:32 +00:00
del gajim . interface . instances [ ' manage_proxies ' ]
2005-06-08 22:05:45 +00:00
def on_add_proxy_button_clicked ( self , widget ) :
model = self . proxies_treeview . get_model ( )
proxies = gajim . config . get_per ( ' proxies ' )
i = 1
2005-08-26 00:52:44 +00:00
while ( ' proxy ' + unicode ( i ) ) in proxies :
2005-06-08 22:05:45 +00:00
i + = 1
iter = model . append ( )
2005-08-26 00:52:44 +00:00
model . set ( iter , 0 , ' proxy ' + unicode ( i ) )
gajim . config . add_per ( ' proxies ' , ' proxy ' + unicode ( i ) )
2005-06-08 22:05:45 +00:00
def on_remove_proxy_button_clicked ( self , widget ) :
( model , iter ) = self . proxies_treeview . get_selection ( ) . get_selected ( )
if not iter :
return
2005-10-07 13:37:04 +00:00
proxy = model [ iter ] [ 0 ] . decode ( ' utf-8 ' )
2005-06-08 22:05:45 +00:00
model . remove ( iter )
gajim . config . del_per ( ' proxies ' , proxy )
self . xml . get_widget ( ' remove_proxy_button ' ) . set_sensitive ( False )
def on_close_button_clicked ( self , widget ) :
self . window . destroy ( )
2005-12-06 12:45:32 +00:00
2005-06-08 22:05:45 +00:00
def on_useauth_checkbutton_toggled ( self , widget ) :
act = widget . get_active ( )
self . xml . get_widget ( ' proxyuser_entry ' ) . set_sensitive ( act )
self . xml . get_widget ( ' proxypass_entry ' ) . set_sensitive ( act )
def on_proxies_treeview_cursor_changed ( self , widget ) :
2005-10-07 13:37:04 +00:00
#FIXME: check if off proxy settings are correct (see http://trac.gajim.org/changeset/1921#file2 line 1221
2005-06-08 22:05:45 +00:00
( model , iter ) = widget . get_selection ( ) . get_selected ( )
if not iter :
return
2005-10-07 13:37:04 +00:00
proxy = model [ iter ] [ 0 ]
2005-06-08 22:05:45 +00:00
self . xml . get_widget ( ' proxyname_entry ' ) . set_text ( proxy )
proxyhost_entry = self . xml . get_widget ( ' proxyhost_entry ' )
proxyport_entry = self . xml . get_widget ( ' proxyport_entry ' )
proxyuser_entry = self . xml . get_widget ( ' proxyuser_entry ' )
proxypass_entry = self . xml . get_widget ( ' proxypass_entry ' )
useauth_checkbutton = self . xml . get_widget ( ' useauth_checkbutton ' )
proxyhost_entry . set_text ( ' ' )
proxyport_entry . set_text ( ' ' )
proxyuser_entry . set_text ( ' ' )
proxypass_entry . set_text ( ' ' )
useauth_checkbutton . set_active ( False )
self . on_useauth_checkbutton_toggled ( useauth_checkbutton )
2006-05-08 21:25:41 +00:00
if proxy == _ ( ' None ' ) : # special proxy None
2005-06-08 22:05:45 +00:00
self . proxyname_entry . set_editable ( False )
2005-10-07 13:37:04 +00:00
self . xml . get_widget ( ' remove_proxy_button ' ) . set_sensitive ( False )
2005-06-08 22:05:45 +00:00
self . xml . get_widget ( ' proxytype_combobox ' ) . set_sensitive ( False )
self . xml . get_widget ( ' proxy_table ' ) . set_sensitive ( False )
else :
self . proxyname_entry . set_editable ( True )
2005-10-07 13:37:04 +00:00
self . xml . get_widget ( ' remove_proxy_button ' ) . set_sensitive ( True )
2005-06-08 22:05:45 +00:00
self . xml . get_widget ( ' proxytype_combobox ' ) . set_sensitive ( True )
self . xml . get_widget ( ' proxy_table ' ) . set_sensitive ( True )
proxyhost_entry . set_text ( gajim . config . get_per ( ' proxies ' , proxy ,
' host ' ) )
2005-08-26 00:52:44 +00:00
proxyport_entry . set_text ( unicode ( gajim . config . get_per ( ' proxies ' ,
proxy , ' port ' ) ) )
2005-06-08 22:05:45 +00:00
proxyuser_entry . set_text ( gajim . config . get_per ( ' proxies ' , proxy ,
' user ' ) )
proxypass_entry . set_text ( gajim . config . get_per ( ' proxies ' , proxy ,
' pass ' ) )
2005-10-07 13:37:04 +00:00
#FIXME: if we have several proxy types, set the combobox
2005-06-08 22:05:45 +00:00
if gajim . config . get_per ( ' proxies ' , proxy , ' user ' ) :
useauth_checkbutton . set_active ( True )
def on_proxies_treeview_key_press_event ( self , widget , event ) :
if event . keyval == gtk . keysyms . Delete :
self . on_remove_proxy_button_clicked ( widget )
def on_proxyname_entry_changed ( self , widget ) :
( model , iter ) = self . proxies_treeview . get_selection ( ) . get_selected ( )
if not iter :
return
2005-08-26 00:52:44 +00:00
old_name = model . get_value ( iter , 0 ) . decode ( ' utf-8 ' )
new_name = widget . get_text ( ) . decode ( ' utf-8 ' )
2005-06-08 22:05:45 +00:00
if new_name == ' ' :
return
if new_name == old_name :
return
config = gajim . config . get_per ( ' proxies ' , old_name )
gajim . config . del_per ( ' proxies ' , old_name )
gajim . config . add_per ( ' proxies ' , new_name )
for option in config :
gajim . config . set_per ( ' proxies ' , new_name , option ,
config [ option ] [ common . config . OPT_VAL ] )
model . set_value ( iter , 0 , new_name )
def on_proxytype_combobox_changed ( self , widget ) :
2005-10-07 13:37:04 +00:00
#FIXME: if we have several proxy types take them into account
2005-06-08 22:05:45 +00:00
pass
def on_proxyhost_entry_changed ( self , widget ) :
2005-08-26 00:52:44 +00:00
value = widget . get_text ( ) . decode ( ' utf-8 ' )
proxy = self . proxyname_entry . get_text ( ) . decode ( ' utf-8 ' )
2005-06-08 22:05:45 +00:00
gajim . config . set_per ( ' proxies ' , proxy , ' host ' , value )
def on_proxyport_entry_changed ( self , widget ) :
2005-08-26 00:52:44 +00:00
value = widget . get_text ( ) . decode ( ' utf-8 ' )
proxy = self . proxyname_entry . get_text ( ) . decode ( ' utf-8 ' )
2005-06-08 22:05:45 +00:00
gajim . config . set_per ( ' proxies ' , proxy , ' port ' , value )
def on_proxyuser_entry_changed ( self , widget ) :
2005-08-26 00:52:44 +00:00
value = widget . get_text ( ) . decode ( ' utf-8 ' )
proxy = self . proxyname_entry . get_text ( ) . decode ( ' utf-8 ' )
2005-06-08 22:05:45 +00:00
gajim . config . set_per ( ' proxies ' , proxy , ' user ' , value )
def on_proxypass_entry_changed ( self , widget ) :
2005-08-26 00:52:44 +00:00
value = widget . get_text ( ) . decode ( ' utf-8 ' )
proxy = self . proxyname_entry . get_text ( ) . decode ( ' utf-8 ' )
2005-06-08 22:05:45 +00:00
gajim . config . set_per ( ' proxies ' , proxy , ' pass ' , value )
2005-06-10 21:14:16 +00:00
#---------- AccountsWindow class -------------#
class AccountsWindow :
2005-05-26 00:07:49 +00:00
''' Class for accounts window: list of accounts '''
2005-04-02 20:35:33 +00:00
def on_accounts_window_destroy ( self , widget ) :
2005-12-06 12:45:32 +00:00
del gajim . interface . instances [ ' accounts ' ]
2005-03-29 17:49:10 +00:00
2005-03-01 18:00:34 +00:00
def on_close_button_clicked ( self , widget ) :
2005-04-12 15:30:09 +00:00
self . window . destroy ( )
2005-04-02 20:35:33 +00:00
2005-10-20 11:17:17 +00:00
def __init__ ( self ) :
2006-05-02 15:53:25 +00:00
self . xml = gtkgui_helpers . get_glade ( ' accounts_window.glade ' )
2005-05-26 00:07:49 +00:00
self . window = self . xml . get_widget ( ' accounts_window ' )
2006-07-17 20:27:30 +00:00
self . window . set_transient_for ( gajim . interface . roster . window )
2005-05-26 00:07:49 +00:00
self . accounts_treeview = self . xml . get_widget ( ' accounts_treeview ' )
self . modify_button = self . xml . get_widget ( ' modify_button ' )
self . remove_button = self . xml . get_widget ( ' remove_button ' )
2005-11-20 12:48:10 +00:00
model = gtk . ListStore ( str , str , bool )
2005-05-26 00:07:49 +00:00
self . accounts_treeview . set_model ( model )
#columns
renderer = gtk . CellRendererText ( )
self . accounts_treeview . insert_column_with_attributes ( - 1 ,
_ ( ' Name ' ) , renderer , text = 0 )
renderer = gtk . CellRendererText ( )
self . accounts_treeview . insert_column_with_attributes ( - 1 ,
_ ( ' Server ' ) , renderer , text = 1 )
self . xml . signal_autoconnect ( self )
self . init_accounts ( )
self . window . show_all ( )
2005-11-29 17:13:13 +00:00
#Merge accounts
st = gajim . config . get ( ' mergeaccounts ' )
self . xml . get_widget ( ' merge_checkbutton ' ) . set_active ( st )
2005-05-26 00:07:49 +00:00
def on_accounts_window_key_press_event ( self , widget , event ) :
if event . keyval == gtk . keysyms . Escape :
2005-12-06 12:45:32 +00:00
self . window . destroy ( )
2005-05-26 00:07:49 +00:00
2004-05-15 16:50:38 +00:00
def init_accounts ( self ) :
2005-04-18 12:17:43 +00:00
''' initialize listStore with existing accounts '''
2005-03-11 01:10:30 +00:00
self . modify_button . set_sensitive ( False )
2005-04-19 22:29:38 +00:00
self . remove_button . set_sensitive ( False )
2005-02-28 17:45:06 +00:00
model = self . accounts_treeview . get_model ( )
2004-05-15 16:50:38 +00:00
model . clear ( )
2005-04-14 07:05:10 +00:00
for account in gajim . connections :
2004-05-15 16:50:38 +00:00
iter = model . append ( )
2005-09-11 00:32:58 +00:00
model . set ( iter , 0 , account , 1 , gajim . get_hostname_from_account ( account ) )
2004-05-15 16:50:38 +00:00
2005-03-01 18:27:21 +00:00
def on_accounts_treeview_cursor_changed ( self , widget ) :
2005-04-18 12:17:43 +00:00
''' Activate delete and modify buttons when a row is selected '''
2005-03-11 01:10:30 +00:00
self . modify_button . set_sensitive ( True )
2005-04-19 22:29:38 +00:00
self . remove_button . set_sensitive ( True )
2004-05-15 16:50:38 +00:00
2005-03-01 18:00:34 +00:00
def on_new_button_clicked ( self , widget ) :
2005-05-26 00:07:49 +00:00
''' When new button is clicked: open an account information window '''
2005-11-13 15:08:47 +00:00
if gajim . interface . instances . has_key ( ' account_creation_wizard ' ) :
2005-12-06 12:45:32 +00:00
gajim . interface . instances [ ' account_creation_wizard ' ] . window . present ( )
2005-04-17 20:18:50 +00:00
else :
2005-11-13 15:08:47 +00:00
gajim . interface . instances [ ' account_creation_wizard ' ] = \
2005-11-03 09:33:22 +00:00
AccountCreationWizardWindow ( )
2005-04-17 20:18:50 +00:00
2005-04-19 22:29:38 +00:00
def on_remove_button_clicked ( self , widget ) :
2005-05-26 00:07:49 +00:00
''' When delete button is clicked:
2005-04-18 12:17:43 +00:00
Remove an account from the listStore and from the config file '''
2005-02-28 17:45:06 +00:00
sel = self . accounts_treeview . get_selection ( )
2004-05-15 16:50:38 +00:00
( model , iter ) = sel . get_selected ( )
2005-04-22 01:05:31 +00:00
if not iter :
return
2005-08-26 00:52:44 +00:00
account = model . get_value ( iter , 0 ) . decode ( ' utf-8 ' )
2006-03-30 17:23:06 +00:00
if len ( gajim . awaiting_events [ account ] ) :
dialogs . ErrorDialog ( _ ( ' Unread events ' ) ,
2006-04-02 16:11:21 +00:00
_ ( ' Read all pending events before removing this account. ' ) )
2006-03-30 17:23:06 +00:00
return
2005-11-13 15:08:47 +00:00
if gajim . interface . instances [ account ] . has_key ( ' remove_account ' ) :
gajim . interface . instances [ account ] [ ' remove_account ' ] . window . present ( )
2005-04-19 23:43:58 +00:00
else :
2005-11-13 15:08:47 +00:00
gajim . interface . instances [ account ] [ ' remove_account ' ] = \
2005-10-20 11:17:17 +00:00
RemoveAccountWindow ( account )
2004-05-15 16:50:38 +00:00
2005-03-01 18:00:34 +00:00
def on_modify_button_clicked ( self , widget ) :
2005-04-18 12:17:43 +00:00
''' When modify button is clicked:
open / show the account modification window for this account '''
2005-04-17 20:18:50 +00:00
sel = self . accounts_treeview . get_selection ( )
( model , iter ) = sel . get_selected ( )
2005-04-22 01:05:31 +00:00
if not iter :
return
2005-10-04 07:12:30 +00:00
account = model [ iter ] [ 0 ] . decode ( ' utf-8 ' )
self . show_modification_window ( account )
def on_accounts_treeview_row_activated ( self , widget , path , column ) :
model = widget . get_model ( )
2006-02-04 23:07:46 +00:00
account = model [ path ] [ 0 ] . decode ( ' utf-8 ' )
2005-10-04 07:12:30 +00:00
self . show_modification_window ( account )
def show_modification_window ( self , account ) :
2005-11-13 15:08:47 +00:00
if gajim . interface . instances [ account ] . has_key ( ' account_modification ' ) :
gajim . interface . instances [ account ] [ ' account_modification ' ] . window . present ( )
2005-03-11 01:10:30 +00:00
else :
2005-11-13 15:08:47 +00:00
gajim . interface . instances [ account ] [ ' account_modification ' ] = \
2005-10-20 11:17:17 +00:00
AccountModificationWindow ( account )
2004-05-15 16:50:38 +00:00
2005-11-29 17:13:13 +00:00
def on_merge_checkbutton_toggled ( self , widget ) :
gajim . config . set ( ' mergeaccounts ' , widget . get_active ( ) )
gajim . interface . save_config ( )
2006-01-18 19:31:25 +00:00
if len ( gajim . connections ) > = 2 : # Do not merge accounts if only one exists
gajim . interface . roster . regroup = gajim . config . get ( ' mergeaccounts ' )
else :
gajim . interface . roster . regroup = False
2005-11-29 17:13:13 +00:00
gajim . interface . roster . draw_roster ( )
2005-10-05 10:13:31 +00:00
class DataFormWindow :
2005-10-20 11:17:17 +00:00
def __init__ ( self , account , config ) :
2005-10-05 10:13:31 +00:00
self . account = account
self . config = config
2006-05-02 15:53:25 +00:00
self . xml = gtkgui_helpers . get_glade ( ' data_form_window.glade ' )
2005-10-05 10:13:31 +00:00
self . window = self . xml . get_widget ( ' data_form_window ' )
2006-07-17 20:27:30 +00:00
self . window . set_transient_for ( gajim . interface . roster . window )
2006-03-03 08:15:53 +00:00
self . config_vbox = self . xml . get_widget ( ' config_vbox ' )
2006-02-07 12:56:20 +00:00
if config :
2006-03-03 08:15:53 +00:00
self . fill_vbox ( )
2006-02-07 12:56:20 +00:00
else :
2006-03-03 08:15:53 +00:00
self . config_vbox . set_no_show_all ( True )
self . config_vbox . hide ( )
2005-10-05 10:13:31 +00:00
self . xml . signal_autoconnect ( self )
self . window . show_all ( )
2006-01-19 13:52:02 +00:00
def on_cancel_button_clicked ( self , widget ) :
self . window . destroy ( )
def on_ok_button_clicked ( self , widget ) :
''' NOTE: child class should implement this '''
2005-10-05 10:13:31 +00:00
pass
2006-01-19 13:52:02 +00:00
def on_data_form_window_destroy ( self , widget ) :
''' NOTE: child class should implement this '''
pass
2005-12-06 12:45:32 +00:00
2005-10-05 10:13:31 +00:00
def on_checkbutton_toggled ( self , widget , index ) :
self . config [ index ] [ ' values ' ] [ 0 ] = widget . get_active ( )
2005-11-22 23:10:08 +00:00
def on_checkbutton_toggled2 ( self , widget , index1 , index2 ) :
val = self . config [ index1 ] [ ' options ' ] [ index2 ] [ ' values ' ] [ 0 ]
if widget . get_active ( ) and val not in self . config [ index1 ] [ ' values ' ] :
self . config [ index1 ] [ ' values ' ] . append ( val )
elif not widget . get_active ( ) and val in self . config [ index1 ] [ ' values ' ] :
self . config [ index1 ] [ ' values ' ] . remove ( val )
2005-10-05 10:13:31 +00:00
def on_combobox_changed ( self , widget , index ) :
self . config [ index ] [ ' values ' ] [ 0 ] = self . config [ index ] [ ' options ' ] [ \
widget . get_active ( ) ] [ ' values ' ] [ 0 ]
def on_entry_changed ( self , widget , index ) :
self . config [ index ] [ ' values ' ] [ 0 ] = widget . get_text ( ) . decode ( ' utf-8 ' )
def on_textbuffer_changed ( self , widget , index ) :
begin , end = widget . get_bounds ( )
self . config [ index ] [ ' values ' ] [ 0 ] = widget . get_text ( begin , end )
2005-12-06 12:45:32 +00:00
2006-03-03 08:15:53 +00:00
def fill_vbox ( self ) :
2005-11-22 23:10:08 +00:00
''' see JEP0004 '''
2005-10-05 10:13:31 +00:00
if self . config . has_key ( ' title ' ) :
self . window . set_title ( self . config [ ' title ' ] )
if self . config . has_key ( ' instructions ' ) :
self . xml . get_widget ( ' instructions_label ' ) . set_text (
self . config [ ' instructions ' ] )
i = 0
while self . config . has_key ( i ) :
if not self . config [ i ] . has_key ( ' type ' ) :
i + = 1
continue
ctype = self . config [ i ] [ ' type ' ]
if ctype == ' hidden ' :
i + = 1
continue
2006-03-03 08:15:53 +00:00
hbox = gtk . HBox ( spacing = 5 )
label = gtk . Label ( ' ' )
label . set_line_wrap ( True )
label . set_alignment ( 0.0 , 0.5 )
label . set_property ( ' width_request ' , 150 )
hbox . pack_start ( label , False )
2005-10-05 10:13:31 +00:00
if self . config [ i ] . has_key ( ' label ' ) :
2006-03-03 08:15:53 +00:00
label . set_text ( self . config [ i ] [ ' label ' ] )
2005-10-05 10:13:31 +00:00
if ctype == ' boolean ' :
2006-03-03 08:15:53 +00:00
desc = None
if self . config [ i ] . has_key ( ' desc ' ) :
desc = self . config [ i ] [ ' desc ' ]
2005-10-05 10:13:31 +00:00
widget = gtk . CheckButton ( desc , False )
2006-02-05 18:55:17 +00:00
activ = False
if self . config [ i ] . has_key ( ' values ' ) :
activ = self . config [ i ] [ ' values ' ] [ 0 ]
widget . set_active ( activ )
2005-10-05 10:13:31 +00:00
widget . connect ( ' toggled ' , self . on_checkbutton_toggled , i )
elif ctype == ' fixed ' :
widget = gtk . Label ( ' \n ' . join ( self . config [ i ] [ ' values ' ] ) )
2006-03-03 08:15:53 +00:00
widget . set_line_wrap ( True )
2005-10-05 10:13:31 +00:00
widget . set_alignment ( 0.0 , 0.5 )
elif ctype == ' jid-multi ' :
2006-01-19 13:52:02 +00:00
#FIXME
2005-10-05 10:13:31 +00:00
widget = gtk . Label ( ' ' )
elif ctype == ' jid-single ' :
2006-01-19 13:52:02 +00:00
#FIXME
2005-10-05 10:13:31 +00:00
widget = gtk . Label ( ' ' )
elif ctype == ' list-multi ' :
2005-11-22 23:10:08 +00:00
j = 0
widget = gtk . Table ( 1 , 1 )
while self . config [ i ] [ ' options ' ] . has_key ( j ) :
widget . resize ( j + 1 , 1 )
child = gtk . CheckButton ( self . config [ i ] [ ' options ' ] [ j ] [ ' label ' ] ,
False )
2006-03-03 08:15:53 +00:00
if self . config [ i ] [ ' options ' ] [ j ] [ ' values ' ] [ 0 ] in \
self . config [ i ] [ ' values ' ] :
2005-11-22 23:10:08 +00:00
child . set_active ( True )
child . connect ( ' toggled ' , self . on_checkbutton_toggled2 , i , j )
widget . attach ( child , 0 , 1 , j , j + 1 )
j + = 1
2005-10-05 10:13:31 +00:00
elif ctype == ' list-single ' :
widget = gtk . combo_box_new_text ( )
widget . connect ( ' changed ' , self . on_combobox_changed , i )
index = 0
j = 0
while self . config [ i ] [ ' options ' ] . has_key ( j ) :
if self . config [ i ] [ ' options ' ] [ j ] [ ' values ' ] [ 0 ] == \
self . config [ i ] [ ' values ' ] [ 0 ] :
index = j
widget . append_text ( self . config [ i ] [ ' options ' ] [ j ] [ ' label ' ] )
j + = 1
widget . set_active ( index )
elif ctype == ' text-multi ' :
widget = gtk . TextView ( )
2006-03-03 08:15:53 +00:00
widget . set_size_request ( 100 , - 1 )
2005-10-05 10:13:31 +00:00
widget . get_buffer ( ) . connect ( ' changed ' , self . on_textbuffer_changed , \
i )
widget . get_buffer ( ) . set_text ( ' \n ' . join ( self . config [ i ] [ ' values ' ] ) )
elif ctype == ' text-private ' :
widget = gtk . Entry ( )
widget . connect ( ' changed ' , self . on_entry_changed , i )
if not self . config [ i ] . has_key ( ' values ' ) :
self . config [ i ] [ ' values ' ] = [ ' ' ]
widget . set_text ( self . config [ i ] [ ' values ' ] [ 0 ] )
widget . set_visibility ( False )
elif ctype == ' text-single ' :
widget = gtk . Entry ( )
widget . connect ( ' changed ' , self . on_entry_changed , i )
if not self . config [ i ] . has_key ( ' values ' ) :
self . config [ i ] [ ' values ' ] = [ ' ' ]
2005-11-20 12:23:17 +00:00
widget . set_text ( self . config [ i ] [ ' values ' ] [ 0 ] )
2005-10-05 10:13:31 +00:00
i + = 1
2006-03-03 08:15:53 +00:00
hbox . pack_start ( widget , False )
hbox . pack_start ( gtk . Label ( ' ' ) ) # So that widhet doesn't take all space
self . config_vbox . pack_start ( hbox , False )
self . config_vbox . show_all ( )
2005-10-05 10:13:31 +00:00
class ServiceRegistrationWindow ( DataFormWindow ) :
2005-04-18 12:17:43 +00:00
''' Class for Service registration window:
2006-01-19 13:52:02 +00:00
Window that appears when we want to subscribe to a service
if is_form we use DataFormWindow else we use service_registarion_window '''
def __init__ ( self , service , infos , account , is_form ) :
self . service = service
self . infos = infos
self . account = account
self . is_form = is_form
if self . is_form :
DataFormWindow . __init__ ( self , account , infos )
else :
2006-05-02 15:53:25 +00:00
self . xml = gtkgui_helpers . get_glade ( ' service_registration_window.glade ' )
2006-01-19 13:52:02 +00:00
self . window = self . xml . get_widget ( ' service_registration_window ' )
2006-07-17 20:27:30 +00:00
self . window . set_transient_for ( gajim . interface . roster . window )
2006-01-19 13:52:02 +00:00
if infos . has_key ( ' registered ' ) :
self . window . set_title ( _ ( ' Edit %s ' % service ) )
else :
self . window . set_title ( _ ( ' Register to %s ' % service ) )
self . xml . get_widget ( ' label ' ) . set_text ( infos [ ' instructions ' ] )
self . entries = { }
self . draw_table ( )
self . xml . signal_autoconnect ( self )
self . window . show_all ( )
2005-03-02 13:11:21 +00:00
def on_cancel_button_clicked ( self , widget ) :
2005-04-12 15:30:09 +00:00
self . window . destroy ( )
2005-10-05 10:13:31 +00:00
2004-05-15 16:50:38 +00:00
def draw_table ( self ) :
2005-04-18 12:17:43 +00:00
''' Draw the table in the window '''
2004-05-15 16:50:38 +00:00
nbrow = 0
table = self . xml . get_widget ( ' table ' )
for name in self . infos . keys ( ) :
2005-10-27 13:15:03 +00:00
if name in ( ' key ' , ' instructions ' , ' x ' , ' registered ' ) :
2005-04-20 18:04:26 +00:00
continue
2005-06-08 22:08:53 +00:00
if not name :
continue
2005-04-20 18:04:26 +00:00
nbrow = nbrow + 1
table . resize ( rows = nbrow , columns = 2 )
label = gtk . Label ( name . capitalize ( ) + ' : ' )
table . attach ( label , 0 , 1 , nbrow - 1 , nbrow , 0 , 0 , 0 , 0 )
entry = gtk . Entry ( )
2005-05-22 01:45:06 +00:00
entry . set_activates_default ( True )
2005-06-12 21:22:54 +00:00
if self . infos [ name ] :
entry . set_text ( self . infos [ name ] )
2005-05-22 11:54:09 +00:00
if name == ' password ' :
entry . set_visibility ( False )
2005-04-20 18:04:26 +00:00
table . attach ( entry , 1 , 2 , nbrow - 1 , nbrow , 0 , 0 , 0 , 0 )
self . entries [ name ] = entry
if nbrow == 1 :
entry . grab_focus ( )
2004-05-15 16:50:38 +00:00
table . show_all ( )
2005-10-05 10:13:31 +00:00
2005-03-02 13:11:21 +00:00
def on_ok_button_clicked ( self , widget ) :
2006-01-19 13:52:02 +00:00
if self . is_form :
# We pressed OK button of the DataFormWindow
if self . infos . has_key ( ' registered ' ) :
del self . infos [ ' registered ' ]
else :
gajim . interface . roster . add_transport_to_roster ( self . account ,
self . service )
gajim . connections [ self . account ] . register_agent ( self . service , self . infos ,
True ) # True is for is_form
2005-05-25 22:15:28 +00:00
else :
2006-01-19 13:52:02 +00:00
# we pressed OK of service_registration_window
# send registration info to the core
for name in self . entries . keys ( ) :
self . infos [ name ] = self . entries [ name ] . get_text ( ) . decode ( ' utf-8 ' )
if self . infos . has_key ( ' instructions ' ) :
del self . infos [ ' instructions ' ]
if self . infos . has_key ( ' registered ' ) :
del self . infos [ ' registered ' ]
else :
gajim . interface . roster . add_transport_to_roster ( self . account ,
self . service )
gajim . connections [ self . account ] . register_agent ( self . service , self . infos )
2005-04-12 15:30:09 +00:00
self . window . destroy ( )
2005-10-05 10:13:31 +00:00
2004-05-15 16:50:38 +00:00
2006-01-16 11:16:06 +00:00
class GroupchatConfigWindow ( DataFormWindow ) :
''' GroupchatConfigWindow class '''
2006-02-07 12:56:20 +00:00
def __init__ ( self , account , room_jid , config = None ) :
2006-02-07 23:31:02 +00:00
DataFormWindow . __init__ ( self , account , config )
2006-01-16 11:16:06 +00:00
self . room_jid = room_jid
2006-01-17 22:46:08 +00:00
self . remove_button = { }
self . affiliation_treeview = { }
self . removed_jid = { }
ui_list = { ' outcast ' : _ ( ' Ban List ' ) ,
' member ' : _ ( ' Member List ' ) ,
' owner ' : _ ( ' Owner List ' ) ,
' admin ' : _ ( ' Administrator List ' ) }
2006-01-16 11:16:06 +00:00
# Draw the edit affiliation list things
add_on_vbox = self . xml . get_widget ( ' add_on_vbox ' )
2006-01-17 22:46:08 +00:00
for affiliation in ( ' outcast ' , ' member ' , ' owner ' , ' admin ' ) :
self . removed_jid [ affiliation ] = [ ]
hbox = gtk . HBox ( spacing = 5 )
add_on_vbox . pack_start ( hbox , False )
label = gtk . Label ( ui_list [ affiliation ] )
hbox . pack_start ( label , False )
bb = gtk . HButtonBox ( )
bb . set_layout ( gtk . BUTTONBOX_END )
bb . set_spacing ( 5 )
hbox . pack_start ( bb )
add_button = gtk . Button ( stock = gtk . STOCK_ADD )
add_button . connect ( ' clicked ' , self . on_add_button_clicked , affiliation )
bb . pack_start ( add_button )
self . remove_button [ affiliation ] = gtk . Button ( stock = gtk . STOCK_REMOVE )
self . remove_button [ affiliation ] . set_sensitive ( False )
2006-01-19 13:52:02 +00:00
self . remove_button [ affiliation ] . connect ( ' clicked ' ,
self . on_remove_button_clicked , affiliation )
2006-01-17 22:46:08 +00:00
bb . pack_start ( self . remove_button [ affiliation ] )
2006-01-18 23:08:34 +00:00
liststore = gtk . ListStore ( str , str , str , str ) # Jid, reason, nick, role
2006-01-17 22:46:08 +00:00
self . affiliation_treeview [ affiliation ] = gtk . TreeView ( liststore )
2006-01-19 21:36:04 +00:00
self . affiliation_treeview [ affiliation ] . get_selection ( ) . set_mode (
gtk . SELECTION_MULTIPLE )
2006-01-19 13:52:02 +00:00
self . affiliation_treeview [ affiliation ] . connect ( ' cursor-changed ' ,
self . on_affiliation_treeview_cursor_changed , affiliation )
2006-01-17 22:46:08 +00:00
renderer = gtk . CellRendererText ( )
col = gtk . TreeViewColumn ( _ ( ' JID ' ) , renderer )
col . add_attribute ( renderer , ' text ' , 0 )
self . affiliation_treeview [ affiliation ] . append_column ( col )
2006-01-18 22:52:27 +00:00
if affiliation == ' outcast ' :
renderer = gtk . CellRendererText ( )
renderer . set_property ( ' editable ' , True )
renderer . connect ( ' edited ' , self . on_cell_edited )
col = gtk . TreeViewColumn ( _ ( ' Reason ' ) , renderer )
col . add_attribute ( renderer , ' text ' , 1 )
self . affiliation_treeview [ affiliation ] . append_column ( col )
2006-01-18 23:08:34 +00:00
elif affiliation == ' member ' :
renderer = gtk . CellRendererText ( )
col = gtk . TreeViewColumn ( _ ( ' Nick ' ) , renderer )
col . add_attribute ( renderer , ' text ' , 2 )
self . affiliation_treeview [ affiliation ] . append_column ( col )
renderer = gtk . CellRendererText ( )
col = gtk . TreeViewColumn ( _ ( ' Role ' ) , renderer )
col . add_attribute ( renderer , ' text ' , 3 )
self . affiliation_treeview [ affiliation ] . append_column ( col )
2006-01-18 22:52:27 +00:00
2006-01-17 22:46:08 +00:00
sw = gtk . ScrolledWindow ( )
sw . set_policy ( gtk . POLICY_AUTOMATIC , gtk . POLICY_NEVER )
sw . add ( self . affiliation_treeview [ affiliation ] )
add_on_vbox . pack_start ( sw )
gajim . connections [ self . account ] . get_affiliation_list ( self . room_jid ,
affiliation )
2006-01-16 15:49:20 +00:00
add_on_vbox . show_all ( )
2006-01-16 11:16:06 +00:00
2006-01-18 22:52:27 +00:00
def on_cell_edited ( self , cell , path , new_text ) :
model = self . affiliation_treeview [ ' outcast ' ] . get_model ( )
new_text = new_text . decode ( ' utf-8 ' )
iter = model . get_iter ( path )
model [ iter ] [ 1 ] = new_text
2006-01-17 22:46:08 +00:00
def on_add_button_clicked ( self , widget , affiliation ) :
2006-01-16 15:49:20 +00:00
if affiliation == ' outcast ' :
2006-01-16 16:44:50 +00:00
title = _ ( ' Banning... ' )
2006-01-19 13:52:02 +00:00
#You can move '\n' before user@domain if that line is TOO BIG
2006-01-19 21:36:04 +00:00
prompt = _ ( ' <b>Whom do you want to ban?</b> \n \n ' )
2006-01-16 15:49:20 +00:00
elif affiliation == ' member ' :
2006-01-19 13:52:02 +00:00
title = _ ( ' Adding Member... ' )
2006-01-19 21:36:04 +00:00
prompt = _ ( ' <b>Whom do you want to make a member?</b> \n \n ' )
2006-01-16 15:49:20 +00:00
elif affiliation == ' owner ' :
2006-01-19 13:52:02 +00:00
title = _ ( ' Adding Owner... ' )
2006-01-19 21:36:04 +00:00
prompt = _ ( ' <b>Whom do you want to make a owner?</b> \n \n ' )
2006-01-16 15:49:20 +00:00
else :
2006-01-19 13:52:02 +00:00
title = _ ( ' Adding Administrator... ' )
2006-01-19 21:36:04 +00:00
prompt = _ ( ' <b>Whom do you want to make an administrator?</b> \n \n ' )
prompt + = _ ( ' Can be one of the following: \n '
' 1. user@domain/resource (only that resource matches). \n '
' 2. user@domain (any resource matches). \n '
' 3. domain/resource (only that resource matches). \n '
' 4. domain (the domain itself matches, as does any user@domain, \n '
2006-01-19 13:52:02 +00:00
' domain/resource, or address containing a subdomain. ' )
2006-01-16 15:49:20 +00:00
instance = dialogs . InputDialog ( title , prompt )
response = instance . get_response ( )
if response != gtk . RESPONSE_OK :
return
jid = instance . input_entry . get_text ( ) . decode ( ' utf-8 ' )
if not jid :
return
2006-01-17 22:46:08 +00:00
model = self . affiliation_treeview [ affiliation ] . get_model ( )
2006-01-18 23:08:34 +00:00
model . append ( ( jid , ' ' , ' ' , ' ' ) )
2006-01-17 22:46:08 +00:00
if jid in self . removed_jid [ affiliation ] :
self . removed_jid [ affiliation ] . remove ( jid )
2006-01-16 15:49:20 +00:00
2006-01-17 22:46:08 +00:00
def on_remove_button_clicked ( self , widget , affiliation ) :
2006-01-19 21:36:04 +00:00
selection = self . affiliation_treeview [ affiliation ] . get_selection ( )
model , paths = selection . get_selected_rows ( )
row_refs = [ ]
for path in paths :
row_refs . append ( gtk . TreeRowReference ( model , path ) )
for row_ref in row_refs :
path = row_ref . get_path ( )
iter = model . get_iter ( path )
jid = model [ iter ] [ 0 ]
model . remove ( iter )
self . removed_jid [ affiliation ] . append ( jid )
2006-01-17 22:46:08 +00:00
self . remove_button [ affiliation ] . set_sensitive ( False )
2006-01-16 15:49:20 +00:00
2006-01-17 22:46:08 +00:00
def on_affiliation_treeview_cursor_changed ( self , widget , affiliation ) :
self . remove_button [ affiliation ] . set_sensitive ( True )
2006-01-16 11:16:06 +00:00
def affiliation_list_received ( self , affiliation , list ) :
''' Fill the affiliation treeview '''
2006-01-17 22:46:08 +00:00
if not affiliation :
2006-01-16 11:16:06 +00:00
return
2006-01-17 22:46:08 +00:00
tv = self . affiliation_treeview [ affiliation ]
2006-01-16 11:16:06 +00:00
model = tv . get_model ( )
for jid in list :
2006-01-18 22:52:27 +00:00
reason = ' '
if list [ jid ] . has_key ( ' reason ' ) :
reason = list [ jid ] [ ' reason ' ]
2006-01-18 23:08:34 +00:00
nick = ' '
if list [ jid ] . has_key ( ' nick ' ) :
nick = list [ jid ] [ ' nick ' ]
role = ' '
if list [ jid ] . has_key ( ' role ' ) :
role = list [ jid ] [ ' role ' ]
model . append ( ( jid , reason , nick , role ) )
2006-01-16 11:16:06 +00:00
def on_data_form_window_destroy ( self , widget ) :
del gajim . interface . instances [ self . account ] [ ' gc_config ' ] [ self . room_jid ]
2006-01-19 13:52:02 +00:00
def on_ok_button_clicked ( self , widget ) :
# We pressed OK button of the DataFormWindow
2006-02-07 23:28:37 +00:00
if self . config :
gajim . connections [ self . account ] . send_gc_config ( self . room_jid ,
self . config )
2006-01-17 22:46:08 +00:00
for affiliation in ( ' outcast ' , ' member ' , ' owner ' , ' admin ' ) :
list = { }
model = self . affiliation_treeview [ affiliation ] . get_model ( )
iter = model . get_iter_first ( )
while iter :
2006-01-18 22:52:27 +00:00
jid = model [ iter ] [ 0 ] . decode ( ' utf-8 ' )
list [ jid ] = { ' affiliation ' : affiliation }
if affiliation == ' outcast ' :
list [ jid ] [ ' reason ' ] = model [ iter ] [ 1 ] . decode ( ' utf-8 ' )
2006-01-17 22:46:08 +00:00
iter = model . iter_next ( iter )
for jid in self . removed_jid [ affiliation ] :
2006-01-21 17:05:28 +00:00
list [ jid ] = { ' affiliation ' : ' none ' }
2006-01-17 22:46:08 +00:00
gajim . connections [ self . account ] . send_gc_affiliation_list ( self . room_jid ,
list )
2006-01-16 11:16:06 +00:00
self . window . destroy ( )
2004-05-15 16:50:38 +00:00
2005-06-10 21:14:16 +00:00
#---------- RemoveAccountWindow class -------------#
class RemoveAccountWindow :
2005-04-19 23:43:58 +00:00
''' ask for removing from gajim only or from gajim and server too
and do removing of the account given '''
2005-12-06 12:45:32 +00:00
2005-04-19 23:43:58 +00:00
def on_remove_account_window_destroy ( self , widget ) :
2005-11-13 15:08:47 +00:00
if gajim . interface . instances . has_key ( self . account ) :
del gajim . interface . instances [ self . account ] [ ' remove_account ' ]
2005-04-19 23:43:58 +00:00
def on_cancel_button_clicked ( self , widget ) :
self . window . destroy ( )
2005-12-06 12:45:32 +00:00
2005-10-20 11:17:17 +00:00
def __init__ ( self , account ) :
2005-04-19 23:43:58 +00:00
self . account = account
2006-05-02 15:53:25 +00:00
xml = gtkgui_helpers . get_glade ( ' remove_account_window.glade ' )
2005-04-19 23:43:58 +00:00
self . window = xml . get_widget ( ' remove_account_window ' )
2006-07-17 20:27:30 +00:00
self . window . set_transient_for ( gajim . interface . roster . window )
2005-05-20 15:05:22 +00:00
self . remove_and_unregister_radiobutton = xml . get_widget (
2005-04-19 23:43:58 +00:00
' remove_and_unregister_radiobutton ' )
self . window . set_title ( _ ( ' Removing %s account ' ) % self . account )
xml . signal_autoconnect ( self )
self . window . show_all ( )
def on_remove_button_clicked ( self , widget ) :
2006-04-02 16:11:21 +00:00
def remove ( widget ) :
2006-04-02 20:10:32 +00:00
if self . dialog :
self . dialog . destroy ( )
2006-04-02 16:11:21 +00:00
if gajim . connections [ self . account ] . connected and \
not self . remove_and_unregister_radiobutton . get_active ( ) :
# change status to offline only if we will not remove this JID from
# server
gajim . connections [ self . account ] . change_status ( ' offline ' , ' offline ' )
if self . remove_and_unregister_radiobutton . get_active ( ) :
if not gajim . connections [ self . account ] . password :
passphrase = ' '
w = dialogs . PassphraseDialog (
_ ( ' Password Required ' ) ,
_ ( ' Enter your password for account %s ' ) % self . account ,
_ ( ' Save password ' ) )
passphrase , save = w . run ( )
if passphrase == - 1 :
# We don't remove account cause we canceled pw window
return
gajim . connections [ self . account ] . password = passphrase
gajim . connections [ self . account ] . unregister_account ( self . _on_remove_success )
else :
self . _on_remove_success ( True )
2006-04-02 20:10:32 +00:00
self . dialog = None
2005-05-20 15:05:22 +00:00
if gajim . connections [ self . account ] . connected :
2006-04-02 16:11:21 +00:00
self . dialog = dialogs . ConfirmationDialog (
2005-06-07 01:10:24 +00:00
_ ( ' Account " %s " is connected to the server ' % self . account ) ,
2006-04-02 16:11:21 +00:00
_ ( ' If you remove it, the connection will be lost. ' ) ,
on_response_ok = remove )
2006-04-02 20:10:32 +00:00
else :
remove ( None )
2006-02-03 12:17:34 +00:00
def _on_remove_success ( self , res ) :
# action of unregistration has failed, we don't remove the account
# Error message is send by connect_and_auth()
if not res :
return
2005-11-14 10:49:07 +00:00
# Close all opened windows
2005-11-14 13:30:36 +00:00
gajim . interface . roster . close_all ( gajim . interface . instances [ self . account ] )
2006-04-10 15:47:31 +00:00
gajim . connections [ self . account ] . disconnect ( on_purpose = True )
2005-04-19 23:43:58 +00:00
del gajim . connections [ self . account ]
gajim . config . del_per ( ' accounts ' , self . account )
2005-10-20 11:17:17 +00:00
gajim . interface . save_config ( )
2005-11-13 15:08:47 +00:00
del gajim . interface . instances [ self . account ]
2005-10-15 20:49:08 +00:00
del gajim . awaiting_events [ self . account ]
2005-07-18 21:08:31 +00:00
del gajim . nicks [ self . account ]
2006-03-28 13:28:51 +00:00
del gajim . block_signed_in_notifications [ self . account ]
2005-07-18 21:08:31 +00:00
del gajim . groups [ self . account ]
Merged in trunk updates, including meta_contacts
Merged revisions 4951,4962-4969 via svnmerge from
svn://svn.gajim.org/gajim/trunk
........
r4951 | nk | 2005-12-30 16:50:36 -0700 (Fri, 30 Dec 2005) | 1 line
fixes in greek transl
........
r4962 | asterix | 2006-01-01 11:41:04 -0700 (Sun, 01 Jan 2006) | 2 lines
merge meta_contacts branch with trunk. Meta contacts are not in gajim yet, but framework is here. We now use gajim.contacts.many_functions() to handle contacts and groupchat_contacts.
........
r4963 | asterix | 2006-01-01 11:43:24 -0700 (Sun, 01 Jan 2006) | 2 lines
correct contacts file
........
r4964 | asterix | 2006-01-01 11:47:26 -0700 (Sun, 01 Jan 2006) | 2 lines
dict.remove() doesn't exists, it's del dict[]
........
r4965 | asterix | 2006-01-01 11:50:15 -0700 (Sun, 01 Jan 2006) | 2 lines
some missing commits from branch
........
r4966 | asterix | 2006-01-01 11:53:30 -0700 (Sun, 01 Jan 2006) | 2 lines
end of gc_contact.nick -> gc_contact.name
........
r4967 | asterix | 2006-01-01 12:05:59 -0700 (Sun, 01 Jan 2006) | 2 lines
new ACE option: send_sha_in_gc_presence that allow to send sha info in groupchat presences
........
r4968 | asterix | 2006-01-01 12:12:36 -0700 (Sun, 01 Jan 2006) | 2 lines
0.9.1-2 in debian that solve the group bug (commit [4924])
........
r4969 | asterix | 2006-01-01 12:31:13 -0700 (Sun, 01 Jan 2006) | 2 lines
typo
........
2006-01-01 20:06:26 +00:00
gajim . contacts . remove_account ( self . account )
2005-08-03 09:23:36 +00:00
del gajim . gc_connected [ self . account ]
2006-07-25 23:47:26 +00:00
del gajim . automatic_rooms [ self . account ]
2005-07-18 21:08:31 +00:00
del gajim . to_be_removed [ self . account ]
del gajim . newly_added [ self . account ]
del gajim . sleeper_state [ self . account ]
del gajim . encrypted_chats [ self . account ]
del gajim . last_message_time [ self . account ]
2005-07-22 21:27:04 +00:00
del gajim . status_before_autoaway [ self . account ]
2006-01-18 19:31:25 +00:00
if len ( gajim . connections ) > = 2 : # Do not merge accounts if only one exists
gajim . interface . roster . regroup = gajim . config . get ( ' mergeaccounts ' )
else :
gajim . interface . roster . regroup = False
2005-10-20 11:17:17 +00:00
gajim . interface . roster . draw_roster ( )
2006-04-10 11:53:21 +00:00
gajim . interface . roster . actions_menu_needs_rebuild = True
2005-11-13 15:08:47 +00:00
if gajim . interface . instances . has_key ( ' accounts ' ) :
gajim . interface . instances [ ' accounts ' ] . init_accounts ( )
2005-04-19 23:43:58 +00:00
self . window . destroy ( )
2005-06-09 20:35:44 +00:00
#---------- ManageBookmarksWindow class -------------#
class ManageBookmarksWindow :
2005-10-20 11:17:17 +00:00
def __init__ ( self ) :
2006-05-02 15:53:25 +00:00
self . xml = gtkgui_helpers . get_glade ( ' manage_bookmarks_window.glade ' )
2005-06-09 20:35:44 +00:00
self . window = self . xml . get_widget ( ' manage_bookmarks_window ' )
2006-07-17 20:27:30 +00:00
self . window . set_transient_for ( gajim . interface . roster . window )
2005-06-09 20:35:44 +00:00
2006-05-07 21:44:57 +00:00
#Account-JID, RoomName, Room-JID, Autojoin, Passowrd, Nick, Show_Status
self . treestore = gtk . TreeStore ( str , str , str , bool , str , str , str )
2005-06-09 20:35:44 +00:00
#Store bookmarks in treeview.
for account in gajim . connections :
2005-06-11 14:14:50 +00:00
if gajim . connections [ account ] . connected < = 1 :
continue
2005-06-09 20:35:44 +00:00
iter = self . treestore . append ( None , [ None , account , None ,
2006-05-07 21:44:57 +00:00
None , None , None , None ] )
2005-06-09 20:35:44 +00:00
for bookmark in gajim . connections [ account ] . bookmarks :
2005-06-11 16:15:01 +00:00
if bookmark [ ' name ' ] == ' ' :
2005-08-18 19:06:24 +00:00
# No name was given for this bookmark.
# Use the first part of JID instead...
2005-06-09 20:35:44 +00:00
name = bookmark [ ' jid ' ] . split ( " @ " ) [ 0 ]
bookmark [ ' name ' ] = name
2005-06-11 14:14:50 +00:00
2005-08-18 19:06:24 +00:00
# make '1', '0', 'true', 'false' (or other) to True/False
autojoin = helpers . from_xs_boolean_to_python_boolean (
bookmark [ ' autojoin ' ] )
2005-12-06 12:45:32 +00:00
2006-05-14 21:34:25 +00:00
if bookmark . has_key ( ' print_status ' ) :
print_status = bookmark [ ' print_status ' ]
2006-05-10 16:25:57 +00:00
if not print_status :
print_status = gajim . config . get ( ' print_status_in_muc ' )
2005-06-09 20:35:44 +00:00
self . treestore . append ( iter , [
account ,
bookmark [ ' name ' ] ,
bookmark [ ' jid ' ] ,
2005-06-11 14:14:50 +00:00
autojoin ,
2005-06-09 20:35:44 +00:00
bookmark [ ' password ' ] ,
2006-05-07 21:44:57 +00:00
bookmark [ ' nick ' ] ,
2006-05-10 16:25:57 +00:00
print_status ] )
2006-05-07 21:44:57 +00:00
2006-05-10 16:25:57 +00:00
self . print_status_combobox = self . xml . get_widget ( ' print_status_combobox ' )
2006-05-07 21:44:57 +00:00
model = gtk . ListStore ( str , str )
2006-05-10 16:25:57 +00:00
self . option_list = { ' all ' : _ ( ' All ' ) ,
2006-05-07 21:44:57 +00:00
' in_and_out ' : _ ( ' Enter and leave only ' ) , ' none ' : _ ( ' None ' ) }
opts = self . option_list . keys ( )
opts . sort ( )
for opt in opts :
model . append ( [ self . option_list [ opt ] , opt ] )
2006-05-10 16:25:57 +00:00
self . print_status_combobox . set_model ( model )
self . print_status_combobox . set_active ( 1 )
2005-06-09 20:35:44 +00:00
self . view = self . xml . get_widget ( ' bookmarks_treeview ' )
self . view . set_model ( self . treestore )
2005-06-10 16:45:54 +00:00
self . view . expand_all ( )
2005-12-06 12:45:32 +00:00
2005-06-09 20:35:44 +00:00
renderer = gtk . CellRendererText ( )
2005-06-10 13:37:56 +00:00
column = gtk . TreeViewColumn ( ' Bookmarks ' , renderer , text = 1 )
2005-06-09 20:35:44 +00:00
self . view . append_column ( column )
2005-06-12 16:39:04 +00:00
2005-06-09 20:35:44 +00:00
self . selection = self . view . get_selection ( )
2005-06-10 13:37:56 +00:00
self . selection . connect ( ' changed ' , self . bookmark_selected )
2005-06-09 20:35:44 +00:00
#Prepare input fields
self . title_entry = self . xml . get_widget ( ' title_entry ' )
2005-06-10 15:45:09 +00:00
self . title_entry . connect ( ' changed ' , self . on_title_entry_changed )
2005-06-09 20:35:44 +00:00
self . nick_entry = self . xml . get_widget ( ' nick_entry ' )
2005-06-10 15:45:09 +00:00
self . nick_entry . connect ( ' changed ' , self . on_nick_entry_changed )
2005-06-09 20:35:44 +00:00
self . server_entry = self . xml . get_widget ( ' server_entry ' )
2005-06-10 15:45:09 +00:00
self . server_entry . connect ( ' changed ' , self . on_server_entry_changed )
2005-06-09 20:35:44 +00:00
self . room_entry = self . xml . get_widget ( ' room_entry ' )
2005-06-10 15:45:09 +00:00
self . room_entry . connect ( ' changed ' , self . on_room_entry_changed )
2005-06-09 20:35:44 +00:00
self . pass_entry = self . xml . get_widget ( ' pass_entry ' )
2005-06-10 15:45:09 +00:00
self . pass_entry . connect ( ' changed ' , self . on_pass_entry_changed )
2005-06-09 20:35:44 +00:00
self . autojoin_checkbutton = self . xml . get_widget ( ' autojoin_checkbutton ' )
2005-12-06 12:45:32 +00:00
2005-06-09 20:35:44 +00:00
self . xml . signal_autoconnect ( self )
self . window . show_all ( )
2005-12-06 12:45:32 +00:00
2005-06-12 16:39:04 +00:00
def on_bookmarks_treeview_button_press_event ( self , widget , event ) :
( model , iter ) = self . selection . get_selected ( )
if not iter :
2005-08-07 11:44:50 +00:00
# Removed a bookmark before
2005-06-12 16:39:04 +00:00
return
if model . iter_parent ( iter ) :
2005-08-07 11:44:50 +00:00
# The currently selected node is a bookmark
2005-06-12 17:33:38 +00:00
return not self . check_valid_bookmark ( )
2005-06-12 16:39:04 +00:00
def on_manage_bookmarks_window_destroy ( self , widget , event ) :
2005-11-13 15:08:47 +00:00
del gajim . interface . instances [ ' manage_bookmarks ' ]
2005-06-09 20:35:44 +00:00
Merged revisions 5030-5031,5033-5038 via svnmerge from
svn://svn.gajim.org/gajim/trunk
........
r5030 | asterix | 2006-01-07 10:04:18 -0700 (Sat, 07 Jan 2006) | 2 lines
when we add a bookmark, we add our nick by default
........
r5031 | nicfit | 2006-01-07 10:24:50 -0700 (Sat, 07 Jan 2006) | 2 lines
Grammatical fix
........
r5033 | asterix | 2006-01-07 11:36:56 -0700 (Sat, 07 Jan 2006) | 2 lines
cell_renderer_image now take in argument the index of the column and the index in the model
........
r5034 | asterix | 2006-01-07 11:37:28 -0700 (Sat, 07 Jan 2006) | 2 lines
typo
........
r5035 | asterix | 2006-01-07 11:38:18 -0700 (Sat, 07 Jan 2006) | 2 lines
don't show header in emoticonManager so that cellrenderer correctly compute the area to redraw
........
r5036 | asterix | 2006-01-07 11:39:41 -0700 (Sat, 07 Jan 2006) | 2 lines
prevent a TB
........
r5037 | nicfit | 2006-01-07 13:26:08 -0700 (Sat, 07 Jan 2006) | 2 lines
Increment later
........
r5038 | nicfit | 2006-01-07 13:29:05 -0700 (Sat, 07 Jan 2006) | 2 lines
Fixed syntax error
........
2006-01-07 20:47:06 +00:00
def on_add_bookmark_button_clicked ( self , widget ) :
2005-06-10 13:37:56 +00:00
'''
2005-06-09 20:35:44 +00:00
Add a new bookmark .
2005-06-10 13:37:56 +00:00
'''
2005-12-06 12:45:32 +00:00
# Get the account that is currently used
2005-08-07 11:44:50 +00:00
# (the parent of the currently selected item)
2005-06-09 20:35:44 +00:00
( model , iter ) = self . selection . get_selected ( )
2005-08-07 11:44:50 +00:00
if not iter : # Nothing selected, do nothing
2005-06-09 21:05:58 +00:00
return
2005-06-09 20:35:44 +00:00
parent = model . iter_parent ( iter )
2005-06-10 18:40:19 +00:00
if parent :
2005-08-07 11:44:50 +00:00
# We got a bookmark selected, so we add_to the parent
2005-06-10 18:40:19 +00:00
add_to = parent
else :
2005-08-07 11:44:50 +00:00
# No parent, so we got an account -> add to this.
2005-06-09 20:35:44 +00:00
add_to = iter
2006-04-07 15:44:33 +00:00
account = model [ add_to ] [ 1 ] . decode ( ' utf-8 ' )
Merged revisions 5030-5031,5033-5038 via svnmerge from
svn://svn.gajim.org/gajim/trunk
........
r5030 | asterix | 2006-01-07 10:04:18 -0700 (Sat, 07 Jan 2006) | 2 lines
when we add a bookmark, we add our nick by default
........
r5031 | nicfit | 2006-01-07 10:24:50 -0700 (Sat, 07 Jan 2006) | 2 lines
Grammatical fix
........
r5033 | asterix | 2006-01-07 11:36:56 -0700 (Sat, 07 Jan 2006) | 2 lines
cell_renderer_image now take in argument the index of the column and the index in the model
........
r5034 | asterix | 2006-01-07 11:37:28 -0700 (Sat, 07 Jan 2006) | 2 lines
typo
........
r5035 | asterix | 2006-01-07 11:38:18 -0700 (Sat, 07 Jan 2006) | 2 lines
don't show header in emoticonManager so that cellrenderer correctly compute the area to redraw
........
r5036 | asterix | 2006-01-07 11:39:41 -0700 (Sat, 07 Jan 2006) | 2 lines
prevent a TB
........
r5037 | nicfit | 2006-01-07 13:26:08 -0700 (Sat, 07 Jan 2006) | 2 lines
Increment later
........
r5038 | nicfit | 2006-01-07 13:29:05 -0700 (Sat, 07 Jan 2006) | 2 lines
Fixed syntax error
........
2006-01-07 20:47:06 +00:00
nick = gajim . nicks [ account ]
self . treestore . append ( add_to , [ account , _ ( ' New Room ' ) , ' ' , False , ' ' ,
2006-05-10 16:25:57 +00:00
nick , ' in_and_out ' ] )
2005-06-10 16:45:54 +00:00
self . view . expand_row ( model . get_path ( add_to ) , True )
2005-06-09 20:35:44 +00:00
def on_remove_bookmark_button_clicked ( self , widget ) :
2005-06-10 13:37:56 +00:00
'''
2005-06-09 20:35:44 +00:00
Remove selected bookmark .
2005-06-10 13:37:56 +00:00
'''
2005-06-09 20:35:44 +00:00
( model , iter ) = self . selection . get_selected ( )
2005-08-07 11:44:50 +00:00
if not iter : # Nothing selected
2005-06-09 20:35:44 +00:00
return
2005-06-10 18:40:19 +00:00
2005-06-09 21:05:58 +00:00
if not model . iter_parent ( iter ) :
2005-08-07 11:44:50 +00:00
# Don't remove account iters
2005-06-09 20:35:44 +00:00
return
model . remove ( iter )
self . clear_fields ( )
2005-06-12 16:39:04 +00:00
def check_valid_bookmark ( self ) :
'''
Check if all neccessary fields are entered correctly .
'''
( model , iter ) = self . selection . get_selected ( )
if not model . iter_parent ( iter ) :
#Account data can't be changed
return
2005-08-26 00:52:44 +00:00
if self . server_entry . get_text ( ) . decode ( ' utf-8 ' ) == ' ' or self . room_entry . get_text ( ) . decode ( ' utf-8 ' ) == ' ' :
2005-06-12 19:17:06 +00:00
dialogs . ErrorDialog ( _ ( ' This bookmark has invalid data ' ) ,
2006-04-02 16:11:21 +00:00
_ ( ' Please be sure to fill out server and room fields or remove this bookmark. ' ) )
2005-06-12 16:39:04 +00:00
return False
return True
2005-06-09 20:35:44 +00:00
def on_ok_button_clicked ( self , widget ) :
2005-06-10 13:37:56 +00:00
'''
2005-06-09 20:35:44 +00:00
Parse the treestore data into our new bookmarks array ,
then send the new bookmarks to the server .
2005-06-10 13:37:56 +00:00
'''
2005-06-12 16:39:04 +00:00
( model , iter ) = self . selection . get_selected ( )
if iter and model . iter_parent ( iter ) :
#bookmark selected, check it
if not self . check_valid_bookmark ( ) :
return
2005-06-10 15:45:09 +00:00
for account in self . treestore :
2005-08-26 23:03:22 +00:00
account_unicode = account [ 1 ] . decode ( ' utf-8 ' )
gajim . connections [ account_unicode ] . bookmarks = [ ]
2005-06-10 18:40:19 +00:00
2005-06-10 15:45:09 +00:00
for bm in account . iterchildren ( ) :
2005-06-10 18:40:19 +00:00
#Convert True/False/None to '1' or '0'
2005-08-26 00:52:44 +00:00
autojoin = unicode ( int ( bm [ 3 ] ) )
2005-12-06 12:45:32 +00:00
2005-06-10 18:40:19 +00:00
#create the bookmark-dict
2005-06-11 14:14:50 +00:00
bmdict = { ' name ' : bm [ 1 ] , ' jid ' : bm [ 2 ] , ' autojoin ' : autojoin ,
2006-05-10 16:25:57 +00:00
' password ' : bm [ 4 ] , ' nick ' : bm [ 5 ] , ' print_status ' : bm [ 6 ] }
2005-12-06 12:45:32 +00:00
2005-08-26 23:03:22 +00:00
gajim . connections [ account_unicode ] . bookmarks . append ( bmdict )
2005-06-10 15:45:09 +00:00
2005-08-26 23:03:22 +00:00
gajim . connections [ account_unicode ] . store_bookmarks ( )
2006-03-18 09:05:46 +00:00
gajim . interface . roster . actions_menu_needs_rebuild = True
2005-06-10 15:45:09 +00:00
self . window . destroy ( )
2005-06-09 20:35:44 +00:00
def on_cancel_button_clicked ( self , widget ) :
2005-06-10 15:45:09 +00:00
self . window . destroy ( )
2005-06-09 20:35:44 +00:00
def bookmark_selected ( self , selection ) :
2005-06-10 13:37:56 +00:00
'''
2005-06-09 20:35:44 +00:00
Fill in the bookmark ' s data into the fields.
2005-06-10 13:37:56 +00:00
'''
2005-06-09 20:35:44 +00:00
( model , iter ) = selection . get_selected ( )
if not iter :
2006-01-21 22:02:00 +00:00
# After removing the last bookmark for one account
# this will be None, so we will just:
2005-06-09 20:35:44 +00:00
return
2005-06-12 16:39:04 +00:00
2005-06-10 18:40:19 +00:00
widgets = [ self . title_entry , self . nick_entry , self . room_entry ,
2006-05-07 21:44:57 +00:00
self . server_entry , self . pass_entry , self . autojoin_checkbutton ,
2006-05-10 16:25:57 +00:00
self . print_status_combobox ]
2005-06-10 18:40:19 +00:00
if model . iter_parent ( iter ) :
2006-01-21 22:02:00 +00:00
# make the fields sensitive
2005-06-10 18:40:19 +00:00
for field in widgets :
field . set_sensitive ( True )
else :
2006-01-21 22:02:00 +00:00
# Top-level has no data (it's the account fields)
# clear fields & make them insensitive
2005-06-09 20:35:44 +00:00
self . clear_fields ( )
2005-06-10 18:40:19 +00:00
for field in widgets :
field . set_sensitive ( False )
2005-06-09 20:35:44 +00:00
return
2005-06-12 16:39:04 +00:00
2006-01-21 22:02:00 +00:00
# Fill in the data for childs
2005-08-07 11:44:50 +00:00
self . title_entry . set_text ( model [ iter ] [ 1 ] )
2005-08-26 00:52:44 +00:00
room_jid = model [ iter ] [ 2 ] . decode ( ' utf-8 ' )
2005-06-09 20:35:44 +00:00
try :
2005-06-10 13:37:56 +00:00
( room , server ) = room_jid . split ( ' @ ' )
2005-06-09 20:35:44 +00:00
except ValueError :
2006-01-21 22:02:00 +00:00
# We just added this one
2005-06-09 20:35:44 +00:00
room = ' '
server = ' '
self . room_entry . set_text ( room )
self . server_entry . set_text ( server )
2005-12-06 12:45:32 +00:00
2005-08-07 11:44:50 +00:00
self . autojoin_checkbutton . set_active ( model [ iter ] [ 3 ] )
2006-02-04 13:52:58 +00:00
if model [ iter ] [ 4 ] is not None :
password = model [ iter ] [ 4 ] . decode ( ' utf-8 ' )
else :
password = None
2006-01-21 22:02:00 +00:00
if password :
self . pass_entry . set_text ( password )
else :
self . pass_entry . set_text ( ' ' )
2006-05-08 22:00:02 +00:00
nick = model [ iter ] [ 5 ]
2006-01-21 22:02:00 +00:00
if nick :
2006-05-08 22:00:02 +00:00
nick = nick . decode ( ' utf-8 ' )
2006-01-21 22:02:00 +00:00
self . nick_entry . set_text ( nick )
else :
self . nick_entry . set_text ( ' ' )
2005-06-09 20:35:44 +00:00
2006-05-10 16:25:57 +00:00
print_status = model [ iter ] [ 6 ]
2006-05-07 21:44:57 +00:00
opts = self . option_list . keys ( )
opts . sort ( )
2006-05-10 16:25:57 +00:00
self . print_status_combobox . set_active ( opts . index ( print_status ) )
2006-05-07 21:44:57 +00:00
2005-06-10 15:45:09 +00:00
def on_title_entry_changed ( self , widget ) :
( model , iter ) = self . selection . get_selected ( )
2006-01-21 22:02:00 +00:00
if iter : # After removing a bookmark, we got nothing selected
2005-06-10 16:45:54 +00:00
if model . iter_parent ( iter ) :
2006-01-21 22:02:00 +00:00
# Don't clear the title field for account nodes
2005-08-07 11:44:50 +00:00
model [ iter ] [ 1 ] = self . title_entry . get_text ( )
2005-06-10 15:45:09 +00:00
def on_nick_entry_changed ( self , widget ) :
( model , iter ) = self . selection . get_selected ( )
if iter :
2005-08-07 11:44:50 +00:00
model [ iter ] [ 5 ] = self . nick_entry . get_text ( )
2005-12-06 12:45:32 +00:00
2005-06-10 15:45:09 +00:00
def on_server_entry_changed ( self , widget ) :
( model , iter ) = self . selection . get_selected ( )
if iter :
2005-08-26 00:52:44 +00:00
room_jid = self . room_entry . get_text ( ) . decode ( ' utf-8 ' ) + ' @ ' + \
self . server_entry . get_text ( ) . decode ( ' utf-8 ' )
2005-08-07 11:44:50 +00:00
model [ iter ] [ 2 ] = room_jid
2005-06-10 15:45:09 +00:00
def on_room_entry_changed ( self , widget ) :
( model , iter ) = self . selection . get_selected ( )
if iter :
2005-08-26 00:52:44 +00:00
room_jid = self . room_entry . get_text ( ) . decode ( ' utf-8 ' ) + ' @ ' + \
self . server_entry . get_text ( ) . decode ( ' utf-8 ' )
2005-08-07 11:44:50 +00:00
model [ iter ] [ 2 ] = room_jid
2005-06-10 15:45:09 +00:00
def on_pass_entry_changed ( self , widget ) :
( model , iter ) = self . selection . get_selected ( )
if iter :
2005-08-07 11:44:50 +00:00
model [ iter ] [ 4 ] = self . pass_entry . get_text ( )
2005-06-10 15:45:09 +00:00
def on_autojoin_checkbutton_toggled ( self , widget ) :
( model , iter ) = self . selection . get_selected ( )
if iter :
2005-08-07 11:44:50 +00:00
model [ iter ] [ 3 ] = self . autojoin_checkbutton . get_active ( )
2005-06-10 15:45:09 +00:00
2006-05-10 16:25:57 +00:00
def on_print_status_combobox_changed ( self , widget ) :
2006-05-07 21:44:57 +00:00
active = widget . get_active ( )
model = widget . get_model ( )
2006-05-10 16:25:57 +00:00
print_status = model [ active ] [ 1 ]
2006-05-07 21:44:57 +00:00
( model2 , iter ) = self . selection . get_selected ( )
if iter :
2006-05-10 16:25:57 +00:00
model2 [ iter ] [ 6 ] = print_status
2006-05-07 21:44:57 +00:00
2005-06-09 20:35:44 +00:00
def clear_fields ( self ) :
2005-06-10 18:40:19 +00:00
widgets = [ self . title_entry , self . nick_entry , self . room_entry ,
self . server_entry , self . pass_entry ]
for field in widgets :
field . set_text ( ' ' )
2005-06-09 21:05:58 +00:00
self . autojoin_checkbutton . set_active ( False )
2006-05-10 16:25:57 +00:00
self . print_status_combobox . set_active ( 1 )
2005-08-06 23:39:53 +00:00
2005-11-03 09:27:45 +00:00
class AccountCreationWizardWindow :
2005-10-20 11:17:17 +00:00
def __init__ ( self ) :
2006-05-02 15:53:25 +00:00
self . xml = gtkgui_helpers . get_glade ( ' account_creation_wizard_window.glade ' )
2005-11-03 22:47:26 +00:00
self . window = self . xml . get_widget ( ' account_creation_wizard_window ' )
2005-08-06 23:39:53 +00:00
2005-11-05 11:33:41 +00:00
# Connect events from comboboxentry.child
2005-11-03 21:50:23 +00:00
server_comboboxentry = self . xml . get_widget ( ' server_comboboxentry ' )
2005-09-18 15:03:04 +00:00
server_comboboxentry . child . connect ( ' key_press_event ' ,
2006-06-16 13:18:04 +00:00
self . on_server_comboboxentry_key_press_event )
2005-09-18 15:03:04 +00:00
# parse servers.xml
2005-09-18 18:30:16 +00:00
servers_xml = os . path . join ( gajim . DATA_DIR , ' other ' , ' servers.xml ' )
2005-12-06 12:45:32 +00:00
servers = gtkgui_helpers . parse_server_xml ( servers_xml )
2005-09-18 15:03:04 +00:00
servers_model = gtk . ListStore ( str , int )
for server in servers :
servers_model . append ( ( str ( server [ 0 ] ) , int ( server [ 1 ] ) ) )
2005-12-06 12:45:32 +00:00
2005-09-18 18:30:16 +00:00
# Put servers into comboboxentries
2005-09-18 15:03:04 +00:00
server_comboboxentry . set_model ( servers_model )
server_comboboxentry . set_text_column ( 0 )
2005-08-06 23:39:53 +00:00
2005-09-18 15:03:04 +00:00
# Generic widgets
self . notebook = self . xml . get_widget ( ' notebook ' )
2005-11-04 21:27:14 +00:00
self . cancel_button = self . xml . get_widget ( ' cancel_button ' )
2005-08-06 23:39:53 +00:00
self . back_button = self . xml . get_widget ( ' back_button ' )
2005-11-04 21:27:14 +00:00
self . forward_button = self . xml . get_widget ( ' forward_button ' )
2005-08-06 23:39:53 +00:00
self . finish_button = self . xml . get_widget ( ' finish_button ' )
2005-11-03 10:32:26 +00:00
self . advanced_button = self . xml . get_widget ( ' advanced_button ' )
2005-08-06 23:39:53 +00:00
self . finish_label = self . xml . get_widget ( ' finish_label ' )
2006-06-16 13:18:04 +00:00
self . go_online_checkbutton = self . xml . get_widget (
' go_online_checkbutton ' )
2006-03-26 12:31:02 +00:00
self . show_vcard_checkbutton = self . xml . get_widget (
' show_vcard_checkbutton ' )
2005-11-05 11:28:19 +00:00
self . progressbar = self . xml . get_widget ( ' progressbar ' )
2005-08-06 23:39:53 +00:00
2005-11-24 12:39:21 +00:00
# some vars
2005-11-05 11:28:19 +00:00
self . update_progressbar_timeout_id = None
2005-12-06 12:45:32 +00:00
2005-11-04 21:27:14 +00:00
self . notebook . set_current_page ( 0 )
2005-11-03 10:32:26 +00:00
self . advanced_button . set_no_show_all ( True )
2006-04-02 20:10:32 +00:00
self . finish_button . set_no_show_all ( True )
2005-11-03 10:32:26 +00:00
self . xml . signal_autoconnect ( self )
self . window . show_all ( )
2005-11-03 22:12:00 +00:00
def on_wizard_window_destroy ( self , widget ) :
2005-11-13 15:08:47 +00:00
del gajim . interface . instances [ ' account_creation_wizard ' ]
2005-11-03 22:12:00 +00:00
2005-12-06 12:45:32 +00:00
def on_register_server_features_button_clicked ( self , widget ) :
2006-06-16 13:18:04 +00:00
helpers . launch_browser_mailer ( ' url ' ,
' http://www.jabber.org/network/oldnetwork.shtml ' )
2005-08-06 23:39:53 +00:00
def on_save_password_checkbutton_toggled ( self , widget ) :
2006-02-20 12:32:59 +00:00
self . xml . get_widget ( ' pass1_entry ' ) . grab_focus ( )
2005-08-06 23:39:53 +00:00
def on_cancel_button_clicked ( self , widget ) :
self . window . destroy ( )
def on_back_button_clicked ( self , widget ) :
if self . notebook . get_current_page ( ) == 1 :
self . notebook . set_current_page ( 0 )
2005-11-04 21:27:14 +00:00
self . back_button . set_sensitive ( False )
elif self . notebook . get_current_page ( ) == 3 : # finish page
self . forward_button . show ( )
self . notebook . set_current_page ( 1 ) # Goto parameters page
2005-08-06 23:39:53 +00:00
2005-11-03 21:50:23 +00:00
def get_widgets ( self ) :
2005-12-06 12:45:32 +00:00
widgets = { }
2005-10-27 13:15:03 +00:00
for widget in (
2005-11-05 11:28:19 +00:00
' username_entry ' ,
2005-09-18 15:03:04 +00:00
' server_comboboxentry ' ,
2006-02-20 12:32:59 +00:00
' pass1_entry ' ,
' pass2_entry ' ,
2005-09-18 15:03:04 +00:00
' save_password_checkbutton ' ,
' proxyhost_entry ' ,
' proxyport_entry ' ,
' proxyuser_entry ' ,
' proxypass_entry ' ,
2005-10-27 13:15:03 +00:00
' jid_label ' ) :
2005-11-03 21:50:23 +00:00
widgets [ widget ] = self . xml . get_widget ( widget )
2005-09-18 15:03:04 +00:00
return widgets
2005-08-06 23:39:53 +00:00
def on_forward_button_clicked ( self , widget ) :
cur_page = self . notebook . get_current_page ( )
2005-09-18 15:03:04 +00:00
2005-08-06 23:39:53 +00:00
if cur_page == 0 :
widget = self . xml . get_widget ( ' use_existing_account_radiobutton ' )
if widget . get_active ( ) :
2005-11-03 21:50:23 +00:00
self . modify = True
self . xml . get_widget ( ' server_features_button ' ) . hide ( )
2006-02-20 12:32:59 +00:00
self . xml . get_widget ( ' pass2_entry ' ) . hide ( )
self . xml . get_widget ( ' pass2_label ' ) . hide ( )
2005-08-06 23:39:53 +00:00
else :
2005-11-03 21:50:23 +00:00
self . modify = False
self . xml . get_widget ( ' server_features_button ' ) . show ( )
2006-02-20 12:32:59 +00:00
self . xml . get_widget ( ' pass2_entry ' ) . show ( )
self . xml . get_widget ( ' pass2_label ' ) . show ( )
2005-11-03 21:50:23 +00:00
self . notebook . set_current_page ( 1 )
2005-08-06 23:39:53 +00:00
self . back_button . set_sensitive ( True )
2005-09-18 15:03:04 +00:00
return
2005-12-06 12:45:32 +00:00
2005-08-06 23:39:53 +00:00
else :
2005-11-03 21:50:23 +00:00
widgets = self . get_widgets ( )
2005-11-05 11:28:19 +00:00
username = widgets [ ' username_entry ' ] . get_text ( ) . decode ( ' utf-8 ' )
2005-11-03 22:37:21 +00:00
if not username :
2005-11-05 11:28:19 +00:00
pritext = _ ( ' Invalid username ' )
sectext = _ ( ' You must provide a username to configure this account. ' )
2006-04-02 16:11:21 +00:00
dialogs . ErrorDialog ( pritext , sectext )
2005-11-03 22:37:21 +00:00
return
2005-09-18 15:03:04 +00:00
server = widgets [ ' server_comboboxentry ' ] . child . get_text ( )
savepass = widgets [ ' save_password_checkbutton ' ] . get_active ( )
2006-02-20 12:32:59 +00:00
password = widgets [ ' pass1_entry ' ] . get_text ( )
2005-11-03 21:50:23 +00:00
2006-02-20 12:32:59 +00:00
if not self . modify :
if password == ' ' :
dialogs . ErrorDialog ( _ ( ' Invalid password ' ) ,
2006-04-02 16:11:21 +00:00
_ ( ' You must enter a password for the new account. ' ) )
2006-02-20 12:32:59 +00:00
return
2005-11-03 22:37:21 +00:00
2006-02-20 12:32:59 +00:00
if widgets [ ' pass2_entry ' ] . get_text ( ) != password :
dialogs . ErrorDialog ( _ ( ' Passwords do not match ' ) ,
2006-04-02 16:11:21 +00:00
_ ( ' The passwords typed in both fields must be identical. ' ) )
2006-02-20 12:32:59 +00:00
return
2006-03-26 23:55:59 +00:00
2005-11-03 14:46:56 +00:00
jid = username + ' @ ' + server
# check if jid is conform to RFC and stringprep it
try :
jid = helpers . parse_jid ( jid )
except helpers . InvalidFormat , s :
2005-11-03 22:37:21 +00:00
pritext = _ ( ' Invalid Jabber ID ' )
2006-04-02 16:11:21 +00:00
dialogs . ErrorDialog ( pritext , str ( s ) )
2005-11-03 14:46:56 +00:00
return
2006-03-26 23:55:59 +00:00
already_in_jids = [ ]
for account in gajim . connections :
j = gajim . config . get_per ( ' accounts ' , account , ' name ' )
j + = ' @ ' + gajim . config . get_per ( ' accounts ' , account , ' hostname ' )
already_in_jids . append ( j )
if jid in already_in_jids :
pritext = _ ( ' Duplicate Jabber ID ' )
sectext = _ ( ' This account is already configured in Gajim. ' )
2006-04-02 16:11:21 +00:00
dialogs . ErrorDialog ( pritext , sectext )
2006-03-26 23:55:59 +00:00
return
2005-11-05 11:30:42 +00:00
self . account = server
i = 1
while self . account in gajim . connections :
self . account = server + str ( i )
i + = 1
2005-11-03 14:46:56 +00:00
username , server = gajim . get_room_name_and_server_from_room_jid ( jid )
2005-11-04 21:27:14 +00:00
self . save_account ( username , server , savepass , password )
self . cancel_button . hide ( )
2005-11-03 14:46:56 +00:00
self . back_button . hide ( )
2005-11-04 21:27:14 +00:00
self . forward_button . hide ( )
if self . modify :
2005-11-09 17:08:09 +00:00
finish_text = ' <big><b> %s </b></big> \n \n %s ' % (
_ ( ' Account has been added successfully ' ) ,
_ ( ' You can set advanced account options by pressing Advanced button, or later by clicking in Accounts menuitem under Edit menu from the main window. ' ) )
self . finish_label . set_markup ( finish_text )
2006-04-02 20:10:32 +00:00
self . finish_button . show ( )
2005-11-04 21:27:14 +00:00
self . finish_button . set_property ( ' has-default ' , True )
self . advanced_button . show ( )
self . go_online_checkbutton . show ( )
img = self . xml . get_widget ( ' finish_image ' )
img . set_from_stock ( gtk . STOCK_APPLY , gtk . ICON_SIZE_DIALOG )
self . notebook . set_current_page ( 3 ) # show finish page
2006-03-26 12:31:02 +00:00
self . show_vcard_checkbutton . set_active ( False )
2005-11-04 21:27:14 +00:00
else :
2006-02-20 12:32:59 +00:00
self . notebook . set_current_page ( 2 ) # show creating page
2005-11-05 11:28:19 +00:00
self . update_progressbar_timeout_id = gobject . timeout_add ( 100 ,
self . update_progressbar )
def update_progressbar ( self ) :
self . progressbar . pulse ( )
return True # loop forever
2005-11-04 21:27:14 +00:00
def acc_is_ok ( self , config ) :
''' Account creation succeeded '''
self . create_vars ( config )
2006-04-02 20:10:32 +00:00
self . finish_button . show ( )
2005-11-04 21:27:14 +00:00
self . finish_button . set_property ( ' has-default ' , True )
self . advanced_button . show ( )
self . go_online_checkbutton . show ( )
2006-03-26 12:31:02 +00:00
self . show_vcard_checkbutton . show ( )
2005-11-04 21:27:14 +00:00
img = self . xml . get_widget ( ' finish_image ' )
2006-03-27 10:36:45 +00:00
path_to_file = os . path . join ( gajim . DATA_DIR , ' pixmaps ' , ' gajim.png ' )
img . set_from_file ( path_to_file )
2005-12-06 12:45:32 +00:00
finish_text = ' <big><b> %s </b></big> \n \n %s ' % (
2005-11-09 17:08:09 +00:00
_ ( ' Your new account has been created successfully ' ) ,
2005-11-21 10:09:31 +00:00
_ ( ' You can set advanced account options by pressing Advanced button, or later by clicking in Accounts menuitem under Edit menu from the main window. ' ) )
2005-11-09 17:08:09 +00:00
self . finish_label . set_markup ( finish_text )
2005-11-04 21:27:14 +00:00
self . notebook . set_current_page ( 3 ) # show finish page
2005-12-06 12:45:32 +00:00
2005-11-05 11:28:19 +00:00
if self . update_progressbar_timeout_id is not None :
gobject . source_remove ( self . update_progressbar_timeout_id )
2005-11-04 21:27:14 +00:00
def acc_is_not_ok ( self , reason ) :
''' Account creation failed '''
self . back_button . show ( )
self . cancel_button . show ( )
self . go_online_checkbutton . hide ( )
2006-03-26 12:31:02 +00:00
self . show_vcard_checkbutton . hide ( )
2005-11-04 21:27:14 +00:00
img = self . xml . get_widget ( ' finish_image ' )
img . set_from_stock ( gtk . STOCK_DIALOG_ERROR , gtk . ICON_SIZE_DIALOG )
2005-11-09 17:08:09 +00:00
finish_text = ' <big><b> %s </b></big> \n \n %s ' % ( _ ( ' An error occured during account creation ' ) , reason )
self . finish_label . set_markup ( finish_text )
2005-11-04 21:27:14 +00:00
self . notebook . set_current_page ( 3 ) # show finish page
2005-08-06 23:39:53 +00:00
2005-11-03 10:32:26 +00:00
def on_advanced_button_clicked ( self , widget ) :
2005-11-13 15:08:47 +00:00
gajim . interface . instances [ self . account ] [ ' account_modification ' ] = \
2005-11-03 10:32:26 +00:00
AccountModificationWindow ( self . account )
self . window . destroy ( )
2005-08-06 23:39:53 +00:00
def on_finish_button_clicked ( self , widget ) :
2005-11-04 21:27:14 +00:00
go_online = self . xml . get_widget ( ' go_online_checkbutton ' ) . get_active ( )
2005-11-07 15:43:47 +00:00
show_vcard = self . xml . get_widget ( ' show_vcard_checkbutton ' ) . get_active ( )
2005-08-06 23:39:53 +00:00
self . window . destroy ( )
2005-11-07 15:43:47 +00:00
if show_vcard :
gajim . interface . show_vcard_when_connect . append ( self . account )
2005-11-03 22:12:00 +00:00
if go_online :
gajim . interface . roster . send_status ( self . account , ' online ' , ' ' )
2005-08-06 23:39:53 +00:00
2005-11-05 11:28:19 +00:00
def on_username_entry_changed ( self , widget ) :
2005-09-18 15:03:04 +00:00
self . update_jid ( widget )
2005-08-06 23:39:53 +00:00
2005-09-18 15:03:04 +00:00
def on_server_comboboxentry_changed ( self , widget ) :
self . update_jid ( widget )
2005-08-06 23:39:53 +00:00
2005-11-05 11:28:19 +00:00
def on_username_entry_key_press_event ( self , widget , event ) :
2005-09-18 18:30:16 +00:00
# Check for pressed @ and jump to combobox if found
2005-08-06 23:39:53 +00:00
if event . keyval == gtk . keysyms . at :
2005-11-03 21:50:23 +00:00
combobox = self . xml . get_widget ( ' server_comboboxentry ' )
combobox . grab_focus ( )
combobox . child . set_position ( - 1 )
2005-09-18 15:03:04 +00:00
return True
def on_server_comboboxentry_key_press_event ( self , widget , event ) :
2005-09-18 18:30:16 +00:00
# If backspace is pressed in empty field, return to the nick entry field
2005-10-21 21:50:44 +00:00
backspace = event . keyval == gtk . keysyms . BackSpace
2005-11-03 21:50:23 +00:00
combobox = self . xml . get_widget ( ' server_comboboxentry ' )
empty = len ( combobox . get_active_text ( ) ) == 0
2005-10-21 21:50:44 +00:00
if backspace and empty :
2005-11-05 11:28:19 +00:00
username_entry = self . xml . get_widget ( ' username_entry ' )
username_entry . grab_focus ( )
username_entry . set_position ( - 1 )
2005-08-06 23:39:53 +00:00
return True
2005-09-18 15:03:04 +00:00
def update_jid ( self , widget ) :
2005-11-05 11:28:19 +00:00
username_entry = self . xml . get_widget ( ' username_entry ' )
name = username_entry . get_text ( ) . decode ( ' utf-8 ' )
2005-11-03 21:50:23 +00:00
combobox = self . xml . get_widget ( ' server_comboboxentry ' )
server = combobox . get_active_text ( )
jid_label = self . xml . get_widget ( ' jid_label ' )
2005-08-06 23:39:53 +00:00
if len ( name ) == 0 or len ( server ) == 0 :
2005-11-03 21:50:23 +00:00
jid_label . set_label ( ' ' )
2005-08-06 23:39:53 +00:00
else :
2006-03-27 10:06:38 +00:00
string = ' <b> %s @ %s </b> ' % ( name , server )
2005-11-03 21:50:23 +00:00
jid_label . set_label ( string )
2005-09-18 15:03:04 +00:00
2005-11-04 21:27:14 +00:00
def save_account ( self , login , server , savepass , password ) :
2006-03-02 21:34:23 +00:00
if self . account in gajim . connections :
dialogs . ErrorDialog ( _ ( ' Account name is in use ' ) ,
2006-04-02 16:11:21 +00:00
_ ( ' You already have an account using this name. ' ) )
2006-03-02 21:34:23 +00:00
return
con = connection . Connection ( self . account )
con . password = password
if not savepass :
password = " "
2005-09-18 18:30:16 +00:00
config = { }
2005-11-03 12:20:17 +00:00
config [ ' name ' ] = login
2005-09-18 15:03:04 +00:00
config [ ' hostname ' ] = server
config [ ' savepass ' ] = savepass
config [ ' password ' ] = password
config [ ' resource ' ] = ' Gajim '
config [ ' priority ' ] = 5
2005-11-24 12:39:21 +00:00
config [ ' autoconnect ' ] = True
2005-09-18 15:03:04 +00:00
config [ ' no_log_for ' ] = ' '
2005-11-24 12:39:21 +00:00
config [ ' sync_with_global_status ' ] = True
2005-09-18 15:03:04 +00:00
config [ ' proxy ' ] = ' '
config [ ' usessl ' ] = False
config [ ' use_custom_host ' ] = False
config [ ' custom_port ' ] = 0
config [ ' custom_host ' ] = ' '
config [ ' keyname ' ] = ' '
config [ ' keyid ' ] = ' '
config [ ' savegpgpass ' ] = False
config [ ' gpgpassword ' ] = ' '
2005-11-03 21:50:23 +00:00
if not self . modify :
2005-11-04 21:27:14 +00:00
con . new_account ( self . account , config )
2005-09-18 15:03:04 +00:00
return
2005-11-04 21:27:14 +00:00
gajim . connections [ self . account ] = con
self . create_vars ( config )
def create_vars ( self , config ) :
gajim . config . add_per ( ' accounts ' , self . account )
2005-09-18 15:03:04 +00:00
for opt in config :
2005-11-04 21:27:14 +00:00
gajim . config . set_per ( ' accounts ' , self . account , opt , config [ opt ] )
2005-09-18 18:30:16 +00:00
# update variables
2005-11-13 15:08:47 +00:00
gajim . interface . instances [ self . account ] = { ' infos ' : { } , ' disco ' : { } ,
2005-11-04 21:27:14 +00:00
' chats ' : { } , ' gc ' : { } , ' gc_config ' : { } }
gajim . awaiting_events [ self . account ] = { }
gajim . connections [ self . account ] . connected = 0
gajim . groups [ self . account ] = { }
Merged in trunk updates, including meta_contacts
Merged revisions 4951,4962-4969 via svnmerge from
svn://svn.gajim.org/gajim/trunk
........
r4951 | nk | 2005-12-30 16:50:36 -0700 (Fri, 30 Dec 2005) | 1 line
fixes in greek transl
........
r4962 | asterix | 2006-01-01 11:41:04 -0700 (Sun, 01 Jan 2006) | 2 lines
merge meta_contacts branch with trunk. Meta contacts are not in gajim yet, but framework is here. We now use gajim.contacts.many_functions() to handle contacts and groupchat_contacts.
........
r4963 | asterix | 2006-01-01 11:43:24 -0700 (Sun, 01 Jan 2006) | 2 lines
correct contacts file
........
r4964 | asterix | 2006-01-01 11:47:26 -0700 (Sun, 01 Jan 2006) | 2 lines
dict.remove() doesn't exists, it's del dict[]
........
r4965 | asterix | 2006-01-01 11:50:15 -0700 (Sun, 01 Jan 2006) | 2 lines
some missing commits from branch
........
r4966 | asterix | 2006-01-01 11:53:30 -0700 (Sun, 01 Jan 2006) | 2 lines
end of gc_contact.nick -> gc_contact.name
........
r4967 | asterix | 2006-01-01 12:05:59 -0700 (Sun, 01 Jan 2006) | 2 lines
new ACE option: send_sha_in_gc_presence that allow to send sha info in groupchat presences
........
r4968 | asterix | 2006-01-01 12:12:36 -0700 (Sun, 01 Jan 2006) | 2 lines
0.9.1-2 in debian that solve the group bug (commit [4924])
........
r4969 | asterix | 2006-01-01 12:31:13 -0700 (Sun, 01 Jan 2006) | 2 lines
typo
........
2006-01-01 20:06:26 +00:00
gajim . contacts . add_account ( self . account )
2005-11-04 21:27:14 +00:00
gajim . gc_connected [ self . account ] = { }
2006-07-25 23:47:26 +00:00
gajim . automatic_rooms [ self . account ] = { }
2005-11-04 21:27:14 +00:00
gajim . newly_added [ self . account ] = [ ]
gajim . to_be_removed [ self . account ] = [ ]
gajim . nicks [ self . account ] = config [ ' name ' ]
2006-03-28 13:28:51 +00:00
gajim . block_signed_in_notifications [ self . account ] = True
2005-11-04 21:27:14 +00:00
gajim . sleeper_state [ self . account ] = ' off '
gajim . encrypted_chats [ self . account ] = [ ]
gajim . last_message_time [ self . account ] = { }
gajim . status_before_autoaway [ self . account ] = ' '
2005-09-18 18:30:16 +00:00
# refresh accounts window
2005-11-13 15:08:47 +00:00
if gajim . interface . instances . has_key ( ' accounts ' ) :
gajim . interface . instances [ ' accounts ' ] . init_accounts ( )
2005-09-18 18:30:16 +00:00
# refresh roster
2006-01-18 19:31:25 +00:00
if len ( gajim . connections ) > = 2 : # Do not merge accounts if only one exists
gajim . interface . roster . regroup = gajim . config . get ( ' mergeaccounts ' )
else :
gajim . interface . roster . regroup = False
2005-10-20 11:17:17 +00:00
gajim . interface . roster . draw_roster ( )
2006-04-10 11:54:34 +00:00
gajim . interface . roster . actions_menu_needs_rebuild = True
2005-10-20 11:17:17 +00:00
gajim . interface . save_config ( )