2005-04-13 11:41:44 +02:00
## config.py
2004-05-15 18:50:38 +02:00
##
2006-02-05 15:03:50 +01:00
## Copyright (C) 2003-2006 Yann Le Boulanger <asterix@lagaule.org>
## Copyright (C) 2003-2005 Vincent Hanquez <tab@snarc.org>
## Copyright (C) 2005-2006 Nikos Kouremenos <nkour@jabber.org>
## Copyright (C) 2005 Dimitur Kirov <dkirov@gmail.com>
2004-05-15 18:50:38 +02: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 14:46:22 +01:00
import gtk . glade
import gobject
import os
2005-08-30 23:03:23 +02:00
import sys
2005-06-09 00:05:45 +02:00
import common . config
2004-05-28 06:20:30 +02:00
import common . sleepy
2005-04-18 16:05:30 +02:00
2005-07-25 16:38:21 +02:00
import gtkgui_helpers
2005-04-18 16:05:30 +02:00
import dialogs
2005-11-13 21:25:04 +01:00
import vcard
2005-04-18 18:40:10 +02:00
import cell_renderer_image
2006-01-06 07:59:55 +01:00
import message_control
2006-01-19 03:24:02 +01:00
import chat_control
2005-05-26 02:07:49 +02:00
try :
import gtkspell
2005-11-30 23:22:22 +01:00
HAS_GTK_SPELL = True
2005-05-26 02:07:49 +02:00
except :
2005-11-30 23:22:22 +01:00
HAS_GTK_SPELL = False
2005-05-26 02:07:49 +02:00
2005-08-09 13:34:36 +02:00
from common import helpers
2005-04-14 19:07:55 +02:00
from common import gajim
2005-04-14 09:42:26 +02:00
from common import connection
2004-05-17 01:47:14 +02:00
from common import i18n
2005-04-18 16:05:30 +02:00
2004-05-17 01:47:14 +02:00
_ = i18n . _
APP = i18n . APP
gtk . glade . bindtextdomain ( APP , i18n . DIR )
gtk . glade . textdomain ( APP )
2004-05-15 18:50:38 +02:00
2005-04-22 01:20:18 +02:00
GTKGUI_GLADE = ' gtkgui.glade '
2004-05-15 18:50:38 +02:00
2005-06-10 23:14:16 +02:00
#---------- PreferencesWindow class -------------#
class PreferencesWindow :
2005-04-18 14:17:43 +02:00
''' Class for Preferences window '''
2005-12-06 13:45:32 +01:00
2005-03-30 01:52:26 +02:00
def on_preferences_window_delete_event ( self , widget , event ) :
2005-03-26 22:09:49 +01:00
self . window . hide ( )
2005-03-30 01:52:26 +02:00
return True # do NOT destroy the window
2005-12-06 13:45:32 +01:00
2005-03-26 22:09:49 +01:00
def on_close_button_clicked ( self , widget ) :
2005-04-12 17:30:09 +02:00
self . window . hide ( )
2005-03-30 01:52:26 +02:00
2005-10-20 13:17:17 +02:00
def __init__ ( self ) :
2005-05-10 17:39:35 +02:00
''' Initialize Preferences window '''
self . xml = gtk . glade . XML ( GTKGUI_GLADE , ' preferences_window ' , APP )
self . window = self . xml . get_widget ( ' preferences_window ' )
self . iconset_combobox = self . xml . get_widget ( ' iconset_combobox ' )
2005-12-01 19:16:30 +01: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 17:39:35 +02:00
self . auto_away_checkbutton = self . xml . get_widget ( ' auto_away_checkbutton ' )
2005-12-01 19:16:30 +01: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 17:39:35 +02:00
self . auto_xa_checkbutton = self . xml . get_widget ( ' auto_xa_checkbutton ' )
2005-08-16 22:24:56 +02:00
self . auto_xa_time_spinbutton = self . xml . get_widget (
' auto_xa_time_spinbutton ' )
2005-08-06 17:17:20 +02:00
self . auto_xa_message_entry = self . xml . get_widget ( ' auto_xa_message_entry ' )
2005-05-10 17:39:35 +02:00
self . trayicon_checkbutton = self . xml . get_widget ( ' trayicon_checkbutton ' )
self . notebook = self . xml . get_widget ( ' preferences_notebook ' )
2005-12-29 02:31:47 +01:00
self . one_window_type_combobox = \
self . xml . get_widget ( ' one_window_type_combobox ' )
2005-12-06 13:45:32 +01:00
2005-05-10 17:39:35 +02:00
#trayicon
2005-10-20 13:17:17 +02:00
if gajim . interface . systray_capabilities :
2005-05-10 17:39:35 +02:00
st = gajim . config . get ( ' trayicon ' )
self . trayicon_checkbutton . set_active ( st )
2005-04-29 17:01:44 +02:00
else :
2005-08-16 22:24:56 +02:00
self . trayicon_checkbutton . set_sensitive ( False )
2005-04-12 17:30:09 +02:00
2005-05-10 17:39:35 +02:00
#Save position
st = gajim . config . get ( ' saveposition ' )
self . xml . get_widget ( ' save_position_checkbutton ' ) . set_active ( st )
2005-12-06 13:45:32 +01:00
2005-05-29 20:41:13 +02: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 13:45:32 +01:00
2005-11-08 14:04:59 +01: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 13:45:32 +01:00
2005-11-06 15:30:17 +01:00
# Display status msg under contact name in roster
st = gajim . config . get ( ' show_status_msgs_in_roster ' )
2005-12-01 19:16:30 +01:00
self . xml . get_widget ( ' show_status_msgs_in_roster_checkbutton ' ) . set_active (
st )
2005-12-06 13:45:32 +01:00
2006-02-05 14:44:40 +01:00
# useemoticons
2005-05-10 17:39:35 +02:00
st = gajim . config . get ( ' useemoticons ' )
2006-02-05 14:44:40 +01:00
if st :
self . xml . get_widget ( ' emoticons_combobox ' ) . set_active ( 1 ) # FIXME
2006-02-05 15:03:50 +01:00
else :
self . xml . get_widget ( ' emoticons_combobox ' ) . set_active ( 3 ) # FIXME
2006-02-05 14:44:40 +01:00
2005-05-10 17:39:35 +02:00
#iconset
2005-06-10 00:29:06 +02:00
iconsets_list = os . listdir ( os . path . join ( gajim . DATA_DIR , ' iconsets ' ) )
2005-06-21 17:54:18 +02: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 21:47:06 +01:00
renderer_image = cell_renderer_image . CellRendererImage ( 0 , 0 )
2005-06-21 17:54:18 +02:00
renderer_text = gtk . CellRendererText ( )
2005-06-23 18:31:35 +02:00
renderer_text . set_property ( ' xpad ' , 5 )
2005-12-01 19:16:30 +01: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 17:54:18 +02:00
self . iconset_combobox . add_attribute ( renderer_image , ' image ' , 0 )
2005-05-10 17:39:35 +02: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 14:47:54 +02:00
for i in xrange ( len ( l ) ) :
2005-06-21 17:54:18 +02: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 17:39:35 +02:00
if gajim . config . get ( ' iconset ' ) == l [ i ] :
self . iconset_combobox . set_active ( i )
2005-12-29 02:31:47 +01: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 19:13:50 +02:00
# Use transports iconsets
st = gajim . config . get ( ' use_transports_iconsets ' )
self . xml . get_widget ( ' transports_iconsets_checkbutton ' ) . set_active ( st )
2005-08-07 17:32:35 +02:00
# Themes
2005-05-10 17:39:35 +02:00
theme_combobox = self . xml . get_widget ( ' theme_combobox ' )
cell = gtk . CellRendererText ( )
theme_combobox . pack_start ( cell , True )
2005-12-06 13:45:32 +01:00
theme_combobox . add_attribute ( cell , ' text ' , 0 )
2005-06-18 15:48:43 +02:00
model = gtk . ListStore ( str )
2005-05-10 17:39:35 +02:00
theme_combobox . set_model ( model )
2005-05-26 02:07:49 +02:00
#use speller
2005-06-04 14:52:16 +02:00
if os . name == ' nt ' :
self . xml . get_widget ( ' speller_checkbutton ' ) . set_no_show_all ( True )
2005-05-26 02:07:49 +02:00
else :
2005-11-30 23:22:22 +01:00
if HAS_GTK_SPELL :
2005-06-04 14:52:16 +02: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 13:45:32 +01:00
2005-05-10 17:39:35 +02:00
#Print time
2005-07-24 22:29:32 +02: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 17:39:35 +02:00
if gajim . config . get ( ' print_time ' ) == ' never ' :
self . xml . get_widget ( ' time_never_radiobutton ' ) . set_active ( True )
elif gajim . config . get ( ' print_time ' ) == ' sometimes ' :
self . xml . get_widget ( ' time_sometimes_radiobutton ' ) . set_active ( True )
2005-04-17 11:05:58 +02:00
else :
2005-05-10 17:39:35 +02:00
self . xml . get_widget ( ' time_always_radiobutton ' ) . set_active ( True )
2005-04-17 11:05:58 +02:00
2005-05-10 17:39:35 +02:00
#before time
st = gajim . config . get ( ' before_time ' )
self . xml . get_widget ( ' before_time_entry ' ) . set_text ( st )
2005-12-06 13:45:32 +01:00
2005-05-10 17:39:35 +02:00
#after time
st = gajim . config . get ( ' after_time ' )
self . xml . get_widget ( ' after_time_entry ' ) . set_text ( st )
2005-03-06 16:14:34 +01:00
2005-05-10 17:39:35 +02:00
#before nickname
st = gajim . config . get ( ' before_nickname ' )
self . xml . get_widget ( ' before_nickname_entry ' ) . set_text ( st )
2005-03-06 16:14:34 +01:00
2005-05-10 17:39:35 +02:00
#after nickanme
st = gajim . config . get ( ' after_nickname ' )
self . xml . get_widget ( ' after_nickname_entry ' ) . set_text ( st )
2005-03-06 16:14:34 +01:00
2005-05-10 17:39:35 +02:00
#Color for incomming messages
colSt = gajim . config . get ( ' inmsgcolor ' )
2005-06-04 14:52:16 +02:00
self . xml . get_widget ( ' incoming_msg_colorbutton ' ) . set_color (
2005-05-10 17:39:35 +02:00
gtk . gdk . color_parse ( colSt ) )
2005-12-06 13:45:32 +01:00
2005-05-10 17:39:35 +02:00
#Color for outgoing messages
colSt = gajim . config . get ( ' outmsgcolor ' )
2005-06-04 14:52:16 +02:00
self . xml . get_widget ( ' outgoing_msg_colorbutton ' ) . set_color (
2005-05-10 17:39:35 +02:00
gtk . gdk . color_parse ( colSt ) )
2005-12-06 13:45:32 +01:00
2005-05-10 17:39:35 +02:00
#Color for status messages
colSt = gajim . config . get ( ' statusmsgcolor ' )
2005-06-04 14:52:16 +02:00
self . xml . get_widget ( ' status_msg_colorbutton ' ) . set_color (
2005-05-10 17:39:35 +02:00
gtk . gdk . color_parse ( colSt ) )
2005-12-26 00:48:08 +01:00
2006-01-16 12:16:06 +01:00
#Color for hyperlinks
2005-12-26 00:48:08 +01:00
colSt = gajim . config . get ( ' urlmsgcolor ' )
self . xml . get_widget ( ' url_msg_colorbutton ' ) . set_color (
gtk . gdk . color_parse ( colSt ) )
2005-04-22 03:05:31 +02:00
2005-08-07 20:58:36 +02:00
#Font for messages
font = gajim . config . get ( ' conversation_font ' )
2005-08-12 00:06:26 +02:00
# try to set default font for the current desktop env
if font == ' ' :
font = gtkgui_helpers . get_default_font ( )
if font is None :
font = ' Sans 10 '
2005-08-26 14:08:14 +02:00
gajim . config . set ( ' conversation_font ' , font )
2005-08-07 20:58:36 +02:00
self . xml . get_widget ( ' conversation_fontbutton ' ) . set_font_name ( font )
2005-05-10 17:39:35 +02:00
# on new message
only_in_roster = True
if gajim . config . get ( ' notify_on_new_message ' ) :
2005-07-21 23:03:36 +02:00
self . xml . get_widget ( ' notify_on_new_message_radiobutton ' ) . set_active (
True )
2005-05-10 17:39:35 +02: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 17:01:44 +02:00
2005-05-10 17:39:35 +02:00
#notify on online statuses
2005-05-21 15:46:23 +02:00
st = gajim . config . get ( ' notify_on_signin ' )
self . notify_on_signin_checkbutton . set_active ( st )
2005-05-10 17:39:35 +02:00
#notify on offline statuses
2005-05-21 15:46:23 +02:00
st = gajim . config . get ( ' notify_on_signout ' )
self . notify_on_signout_checkbutton . set_active ( st )
2005-05-10 17:39:35 +02: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 13:45:32 +01:00
2005-07-20 00:57:37 +02:00
# send chat state notifications
2005-08-07 22:58:44 +02:00
st = gajim . config . get ( ' chat_state_notifications ' )
combo = self . xml . get_widget ( ' chat_states_combobox ' )
2005-08-09 15:27:31 +02:00
if st == ' all ' :
2005-08-08 23:12:58 +02:00
combo . set_active ( 0 )
2005-08-09 15:27:31 +02:00
elif st == ' composing_only ' :
combo . set_active ( 1 )
2005-08-07 22:58:44 +02:00
else : # disabled
2005-08-09 15:27:31 +02:00
combo . set_active ( 2 )
2005-05-10 17:39:35 +02:00
#sounds
2005-05-17 17:04:54 +02:00
if os . name == ' nt ' : # if windows, player must not become visible on show_all
2005-05-29 00:42:08 +02:00
soundplayer_hbox = self . xml . get_widget ( ' soundplayer_hbox ' )
soundplayer_hbox . set_no_show_all ( True )
2005-05-10 17:39:35 +02: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 13:34:36 +02:00
# sound player
player = gajim . config . get ( ' soundplayer ' )
2005-08-25 22:31:49 +02:00
self . xml . get_widget ( ' soundplayer_entry ' ) . set_text ( player )
2005-08-09 13:34:36 +02:00
if player == ' ' : # only on first time Gajim starts
2005-09-06 17:55:27 +02:00
commands = ( ' aplay ' , ' play ' , ' esdplay ' , ' artsplay ' )
2005-08-09 13:34:36 +02:00
for command in commands :
if helpers . is_in_path ( command ) :
self . xml . get_widget ( ' soundplayer_entry ' ) . set_text ( command )
2005-08-21 21:09:31 +02:00
gajim . config . set ( ' soundplayer ' , command )
2005-08-09 13:34:36 +02:00
break
2005-05-10 17:39:35 +02:00
#sounds treeview
self . sound_tree = self . xml . get_widget ( ' sounds_treeview ' )
2005-06-18 16:17:26 +02:00
model = gtk . ListStore ( str , bool , str )
2005-05-10 17:39:35 +02: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 )
col . set_attributes ( renderer , active = 1 )
col = gtk . TreeViewColumn ( _ ( ' Event ' ) )
self . sound_tree . append_column ( col )
renderer = gtk . CellRendererText ( )
col . pack_start ( renderer )
col . set_attributes ( renderer , text = 0 )
col = gtk . TreeViewColumn ( _ ( ' Sound ' ) )
self . sound_tree . append_column ( col )
renderer = gtk . CellRendererText ( )
col . pack_start ( renderer )
col . set_attributes ( renderer , text = 2 )
self . fill_sound_treeview ( )
2005-12-06 13:45:32 +01:00
2005-05-10 17:39:35 +02: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 17:17:20 +02: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 17:39:35 +02: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 17:17:20 +02: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 17:39:35 +02: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 15:48:43 +02:00
model = gtk . ListStore ( str , str )
2005-05-10 17:39:35 +02: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 17:04:54 +02:00
if os . name == ' nt ' :
2006-01-20 14:55:38 +01:00
applications_frame = self . xml . get_widget ( ' applications_frame ' )
applications_frame . set_no_show_all ( True )
applications_frame . hide ( )
2005-05-17 17:04:54 +02:00
else :
2005-12-06 18:43:21 +01:00
self . applications_combobox = self . xml . get_widget (
' applications_combobox ' )
2006-01-20 14:55:38 +01:00
self . xml . get_widget ( ' custom_apps_frame ' ) . hide ( )
self . xml . get_widget ( ' custom_apps_frame ' ) . set_no_show_all ( True )
2005-07-25 16:38:21 +02:00
if gajim . config . get ( ' autodetect_browser_mailer ' ) :
2005-08-09 17:30:45 +02:00
self . applications_combobox . set_active ( 0 )
2005-08-05 01:11:55 +02:00
gtkgui_helpers . autodetect_browser_mailer ( )
2005-07-25 16:38:21 +02: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 17:30:45 +02:00
self . applications_combobox . set_active ( 1 )
2005-05-17 17:04:54 +02:00
elif gajim . config . get ( ' openwith ' ) == ' kfmclient exec ' :
2005-08-09 17:30:45 +02:00
self . applications_combobox . set_active ( 2 )
2005-07-25 16:38:21 +02:00
elif gajim . config . get ( ' openwith ' ) == ' custom ' :
2005-08-09 17:30:45 +02:00
self . applications_combobox . set_active ( 3 )
2006-01-20 14:55:38 +01:00
self . xml . get_widget ( ' custom_apps_frame ' ) . show ( )
2005-05-20 17:05:22 +02:00
self . xml . get_widget ( ' custom_browser_entry ' ) . set_text (
2005-05-17 17:04:54 +02:00
gajim . config . get ( ' custombrowser ' ) )
2005-05-20 17:05:22 +02:00
self . xml . get_widget ( ' custom_mail_client_entry ' ) . set_text (
2005-05-17 17:04:54 +02:00
gajim . config . get ( ' custommailapp ' ) )
2005-08-09 17:30:45 +02:00
self . xml . get_widget ( ' custom_file_manager_entry ' ) . set_text (
2005-08-09 17:37:11 +02:00
gajim . config . get ( ' custom_file_manager ' ) )
2005-12-06 13:45:32 +01:00
2005-11-24 00:28:26 +01: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 13:45:32 +01:00
2005-07-18 00:52:15 +02:00
# send os info
2005-05-10 17:39:35 +02: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 18:25:35 +01:00
2005-05-10 17:39:35 +02:00
self . xml . signal_autoconnect ( self )
2005-12-06 13:45:32 +01:00
2005-05-10 17:39:35 +02: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 )
def on_preferences_window_show ( self , widget ) :
2005-07-24 23:05:44 +02:00
self . update_preferences_window ( )
2005-05-10 17:39:35 +02:00
self . notebook . set_current_page ( 0 )
2005-12-06 13:45:32 +01:00
2005-07-24 23:05:44 +02:00
def update_preferences_window ( self ) :
2005-07-24 22:29:32 +02: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-08-07 17:32:35 +02:00
#Themes
theme_combobox = self . xml . get_widget ( ' theme_combobox ' )
model = theme_combobox . get_model ( )
model . clear ( )
i = 0
2005-09-01 15:47:50 +02:00
for config_theme in gajim . config . get_per ( ' themes ' ) :
theme = config_theme . replace ( ' _ ' , ' ' )
model . append ( [ theme ] )
if gajim . config . get ( ' roster_theme ' ) == config_theme :
2005-08-07 17:32:35 +02:00
theme_combobox . set_active ( i )
i + = 1
self . on_theme_combobox_changed ( theme_combobox )
2006-01-19 10:49:26 +01:00
# Notify user of new gmail e-mail messages,
# only show checkbox if user has a gtalk account
self . xml . get_widget ( ' notify_gmail_checkbutton ' ) . hide ( )
for account in gajim . config . get_per ( ' accounts ' ) :
jid = gajim . get_jid_from_account ( account )
if gajim . get_server_from_jid ( jid ) == ' gmail.com ' :
st = gajim . config . get ( ' notify_on_new_gmail_email ' )
self . xml . get_widget ( ' notify_gmail_checkbutton ' ) . set_active ( st )
self . xml . get_widget ( ' notify_gmail_checkbutton ' ) . show ( )
2005-07-24 23:05:44 +02:00
#FIXME: move code from __init__ here
2005-05-10 17:39:35 +02:00
def on_preferences_window_key_press_event ( self , widget , event ) :
2005-05-26 02:07:49 +02:00
if event . keyval == gtk . keysyms . Escape :
2005-05-10 17:39:35 +02:00
self . window . hide ( )
2005-10-29 18:56:33 +02:00
def on_checkbutton_toggled ( self , widget , config_name ,
2005-05-10 17:39:35 +02:00
change_sensitivity_widgets = None ) :
gajim . config . set ( config_name , widget . get_active ( ) )
2005-05-26 02:07:49 +02:00
if change_sensitivity_widgets :
2005-05-10 17:39:35 +02:00
for w in change_sensitivity_widgets :
w . set_sensitive ( widget . get_active ( ) )
2005-10-20 13:17:17 +02:00
gajim . interface . save_config ( )
2005-05-10 17:39:35 +02:00
def on_trayicon_checkbutton_toggled ( self , widget ) :
if widget . get_active ( ) :
gajim . config . set ( ' trayicon ' , True )
2005-10-20 13:17:17 +02:00
gajim . interface . show_systray ( )
2005-05-10 17:39:35 +02:00
else :
gajim . config . set ( ' trayicon ' , False )
2005-10-20 13:17:17 +02:00
gajim . interface . hide_systray ( )
2005-06-06 01:17:59 +02:00
gajim . config . set ( ' show_roster_on_startup ' , True ) # no tray, show roster!
2005-10-20 13:17:17 +02:00
gajim . interface . roster . draw_roster ( )
gajim . interface . save_config ( )
2005-12-06 13:45:32 +01:00
2005-05-10 17:39:35 +02:00
def on_save_position_checkbutton_toggled ( self , widget ) :
self . on_checkbutton_toggled ( widget , ' saveposition ' )
2005-12-06 13:45:32 +01:00
2005-05-29 20:41:13 +02:00
def on_sort_by_show_checkbutton_toggled ( self , widget ) :
self . on_checkbutton_toggled ( widget , ' sort_by_show ' )
2005-10-20 13:17:17 +02:00
gajim . interface . roster . draw_roster ( )
2005-12-06 13:45:32 +01:00
2005-11-06 15:30:17 +01: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 04:36:07 +01:00
for ctl in gajim . interface . msg_win_mgr . controls ( ) :
if ctl . type_id == message_control . TYPE_GC :
2006-01-10 02:47:24 +01:00
ctl . update_ui ( )
2005-12-06 13:45:32 +01:00
2005-11-08 14:04:59 +01: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 13:45:32 +01:00
2006-02-05 14:44:40 +01:00
def on_emoticons_combobox_changed ( self , widget ) :
active = widget . get_active ( )
if active == - 1 : # no active item
return
elif active == 0 : # animated
gajim . config . set ( ' useemoticons ' , True ) # FIXME
elif active == 1 : # static
gajim . config . set ( ' useemoticons ' , True ) # FIXME
else : # disabled
gajim . config . set ( ' useemoticons ' , False )
2005-11-17 18:08:56 +01:00
gajim . interface . init_emoticons ( )
gajim . interface . make_regexps ( )
self . toggle_emoticons ( )
2005-11-15 12:52:40 +01:00
2005-11-17 18:08:56 +01:00
def toggle_emoticons ( self ) :
''' Update emoticons state in Opened Chat Windows '''
2005-12-31 22:55:44 +01:00
for win in gajim . interface . msg_win_mgr . windows ( ) :
2005-12-31 05:53:14 +01:00
win . toggle_emoticons ( )
2005-12-06 13:45:32 +01:00
2006-02-05 14:44:40 +01:00
def on_manage_emoticons_button_clicked ( self , widget ) :
2005-11-13 16:08:47 +01:00
if gajim . interface . instances . has_key ( ' manage_emots ' ) :
gajim . interface . instances [ ' manage_emots ' ] . window . present ( )
2005-05-10 17:39:35 +02:00
else :
2005-11-13 16:08:47 +01:00
gajim . interface . instances [ ' manage_emots ' ] = ManageEmoticonsWindow ( )
2005-05-10 17:39:35 +02:00
def on_iconset_combobox_changed ( self , widget ) :
model = widget . get_model ( )
active = widget . get_active ( )
2005-08-26 02:52:44 +02:00
icon_string = model [ active ] [ 1 ] . decode ( ' utf-8 ' )
2005-05-10 17:39:35 +02:00
gajim . config . set ( ' iconset ' , icon_string )
2005-10-20 13:17:17 +02:00
gajim . interface . roster . reload_jabber_state_images ( )
gajim . interface . save_config ( )
2005-12-06 13:45:32 +01:00
2005-05-25 19:13:50 +02:00
def on_transports_iconsets_checkbutton_toggled ( self , widget ) :
self . on_checkbutton_toggled ( widget , ' use_transports_iconsets ' )
2006-02-03 12:24:33 +01:00
gajim . interface . roster . reload_jabber_state_images ( )
2005-06-09 01:17:40 +02:00
2005-06-10 00:29:06 +02:00
def on_manage_theme_button_clicked ( self , widget ) :
2005-10-20 13:17:17 +02:00
dialogs . GajimThemesWindow ( )
2005-12-06 13:45:32 +01:00
2005-05-10 17:39:35 +02:00
def on_theme_combobox_changed ( self , widget ) :
model = widget . get_model ( )
active = widget . get_active ( )
2005-09-01 15:47:50 +02:00
config_theme = model [ active ] [ 0 ] . decode ( ' utf-8 ' ) . replace ( ' ' , ' _ ' )
2005-12-06 13:45:32 +01:00
2005-09-01 15:47:50 +02:00
gajim . config . set ( ' roster_theme ' , config_theme )
2005-06-10 21:31:38 +02:00
2005-06-07 23:28:21 +02:00
# begin repainting themed widgets throughout
2005-10-20 13:17:17 +02:00
gajim . interface . roster . repaint_themed_widgets ( )
gajim . interface . roster . change_roster_style ( None )
gajim . interface . save_config ( )
2005-04-28 16:38:36 +02:00
2005-12-29 02:31:47 +01: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 13:17:17 +02:00
gajim . interface . save_config ( )
2006-01-15 03:39:02 +01:00
gajim . interface . msg_win_mgr . reconfig ( )
2005-05-26 02:07:49 +02:00
2006-01-19 03:24:02 +01:00
def apply_speller ( self ) :
2005-05-26 02:07:49 +02:00
for acct in gajim . connections :
2006-01-19 03:24:02 +01: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 02:07:49 +02:00
for acct in gajim . connections :
2006-01-19 03:24:02 +01: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 02:07:49 +02:00
def on_speller_checkbutton_toggled ( self , widget ) :
active = widget . get_active ( )
gajim . config . set ( ' use_speller ' , active )
2005-10-20 13:17:17 +02:00
gajim . interface . save_config ( )
2005-05-26 02:07:49 +02:00
if active :
2006-01-19 03:24:02 +01:00
self . apply_speller ( )
2005-05-26 02:07:49 +02:00
else :
2006-01-19 03:24:02 +01:00
self . remove_speller ( )
2005-05-26 02:07:49 +02:00
2005-05-10 17:39:35 +02:00
def update_print_time ( self ) :
''' Update time in Opened Chat Windows '''
2005-12-31 22:55:44 +01:00
for msg_win in gajim . interface . msg_win_mgr . windows ( ) :
msg_win . update_print_time ( )
2005-12-06 13:45:32 +01:00
2005-05-10 17:39:35 +02:00
def on_time_never_radiobutton_toggled ( self , widget ) :
if widget . get_active ( ) :
gajim . config . set ( ' print_time ' , ' never ' )
self . update_print_time ( )
2005-10-20 13:17:17 +02:00
gajim . interface . save_config ( )
2005-03-09 11:26:57 +01:00
2005-05-10 17:39:35 +02:00
def on_time_sometimes_radiobutton_toggled ( self , widget ) :
if widget . get_active ( ) :
gajim . config . set ( ' print_time ' , ' sometimes ' )
self . update_print_time ( )
2005-10-20 13:17:17 +02:00
gajim . interface . save_config ( )
2005-03-09 11:26:57 +01:00
2005-05-10 17:39:35 +02:00
def on_time_always_radiobutton_toggled ( self , widget ) :
if widget . get_active ( ) :
gajim . config . set ( ' print_time ' , ' always ' )
self . update_print_time ( )
2005-10-20 13:17:17 +02:00
gajim . interface . save_config ( )
2005-03-09 11:26:57 +01:00
2005-05-10 17:39:35 +02:00
def on_before_time_entry_focus_out_event ( self , widget , event ) :
2005-08-26 02:52:44 +02:00
gajim . config . set ( ' before_time ' , widget . get_text ( ) . decode ( ' utf-8 ' ) )
2005-10-20 13:17:17 +02:00
gajim . interface . save_config ( )
2005-12-06 13:45:32 +01:00
2005-05-10 17:39:35 +02:00
def on_after_time_entry_focus_out_event ( self , widget , event ) :
2005-08-26 02:52:44 +02:00
gajim . config . set ( ' after_time ' , widget . get_text ( ) . decode ( ' utf-8 ' ) )
2005-10-20 13:17:17 +02:00
gajim . interface . save_config ( )
2005-04-06 20:51:54 +02:00
2005-05-10 17:39:35 +02:00
def on_before_nickname_entry_focus_out_event ( self , widget , event ) :
2005-08-26 02:52:44 +02:00
gajim . config . set ( ' before_nickname ' , widget . get_text ( ) . decode ( ' utf-8 ' ) )
2005-10-20 13:17:17 +02:00
gajim . interface . save_config ( )
2005-04-06 20:51:54 +02:00
2005-05-10 17:39:35 +02:00
def on_after_nickname_entry_focus_out_event ( self , widget , event ) :
2005-08-26 02:52:44 +02:00
gajim . config . set ( ' after_nickname ' , widget . get_text ( ) . decode ( ' utf-8 ' ) )
2005-10-20 13:17:17 +02:00
gajim . interface . save_config ( )
2005-03-29 18:37:59 +02:00
2005-05-10 17:39:35 +02:00
def update_text_tags ( self ) :
''' Update color tags in Opened Chat Windows '''
2005-12-31 22:55:44 +01:00
for win in gajim . interface . msg_win_mgr . windows ( ) :
2005-12-31 07:27:22 +01:00
win . update_tags ( )
2005-12-06 13:45:32 +01:00
2005-05-10 17:39:35 +02:00
def on_preference_widget_color_set ( self , widget , text ) :
color = widget . get_color ( )
2005-12-01 19:16:30 +01:00
color_string = gtkgui_helpers . make_color_string ( color )
2005-05-10 17:39:35 +02:00
gajim . config . set ( text , color_string )
self . update_text_tags ( )
2005-10-20 13:17:17 +02:00
gajim . interface . save_config ( )
2005-08-07 20:58:36 +02:00
def on_preference_widget_font_set ( self , widget , text ) :
font = widget . get_font_name ( )
2005-08-26 14:08:14 +02:00
gajim . config . set ( text , font )
2005-08-07 20:58:36 +02:00
self . update_text_font ( )
2005-10-20 13:17:17 +02:00
gajim . interface . save_config ( )
2005-12-06 13:45:32 +01:00
2005-12-31 07:27:22 +01:00
def update_text_font ( self ) :
''' Update text font in Opened Chat Windows '''
2005-12-31 22:55:44 +01:00
for win in gajim . interface . msg_win_mgr . windows ( ) :
2005-12-31 07:27:22 +01:00
win . update_font ( )
2005-05-10 17:39:35 +02:00
def on_incoming_msg_colorbutton_color_set ( self , widget ) :
self . on_preference_widget_color_set ( widget , ' inmsgcolor ' )
2005-12-06 13:45:32 +01:00
2005-05-10 17:39:35 +02:00
def on_outgoing_msg_colorbutton_color_set ( self , widget ) :
self . on_preference_widget_color_set ( widget , ' outmsgcolor ' )
2005-12-06 13:45:32 +01:00
2005-12-26 00:48:08 +01:00
def on_url_msg_colorbutton_color_set ( self , widget ) :
self . on_preference_widget_color_set ( widget , ' urlmsgcolor ' )
2005-05-10 17:39:35 +02:00
def on_status_msg_colorbutton_color_set ( self , widget ) :
self . on_preference_widget_color_set ( widget , ' statusmsgcolor ' )
2005-12-06 13:45:32 +01:00
2005-08-07 20:58:36 +02:00
def on_conversation_fontbutton_font_set ( self , widget ) :
self . on_preference_widget_font_set ( widget , ' conversation_font ' )
2005-12-06 13:45:32 +01:00
2005-05-10 17:39:35 +02:00
def on_reset_colors_button_clicked ( self , widget ) :
2005-12-26 00:48:08 +01:00
for i in ( ' inmsgcolor ' , ' outmsgcolor ' , ' statusmsgcolor ' , ' urlmsgcolor ' ) :
2005-10-20 13:17:17 +02:00
gajim . config . set ( i , gajim . interface . default_values [ i ] )
2005-03-08 15:08:46 +01:00
2005-05-10 17:39:35 +02: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-26 00:48:08 +01:00
self . xml . get_widget ( ' url_msg_colorbutton ' ) . set_color ( \
gtk . gdk . color_parse ( gajim . config . get ( ' urlmsgcolor ' ) ) )
2005-05-10 17:39:35 +02:00
self . update_text_tags ( )
2005-10-20 13:17:17 +02:00
gajim . interface . save_config ( )
2005-04-17 11:05:58 +02:00
2005-05-10 17:39:35 +02: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 23:46:10 +02:00
2005-05-10 17:39:35 +02:00
def on_popup_new_message_radiobutton_toggled ( self , widget ) :
self . on_checkbutton_toggled ( widget , ' autopopup ' ,
[ self . auto_popup_away_checkbutton ] )
2005-04-29 15:04:06 +02:00
2005-05-10 17:39:35 +02: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 15:04:06 +02:00
2005-05-21 15:46:23 +02:00
def on_notify_on_signin_checkbutton_toggled ( self , widget ) :
self . on_checkbutton_toggled ( widget , ' notify_on_signin ' )
2005-04-02 21:52:00 +02:00
2005-05-21 15:46:23 +02:00
def on_notify_on_signout_checkbutton_toggled ( self , widget ) :
self . on_checkbutton_toggled ( widget , ' notify_on_signout ' )
2005-04-02 21:52:00 +02:00
2005-05-10 17:39:35 +02:00
def on_auto_popup_away_checkbutton_toggled ( self , widget ) :
self . on_checkbutton_toggled ( widget , ' autopopupaway ' )
2005-04-02 21:52:00 +02:00
2005-05-10 17:39:35 +02:00
def on_ignore_events_from_unknown_contacts_checkbutton_toggled ( self , widget ) :
self . on_checkbutton_toggled ( widget , ' ignore_unknown_contacts ' )
2005-02-05 18:18:49 +01:00
2005-08-07 22:58:44 +02:00
def on_chat_states_combobox_changed ( self , widget ) :
active = widget . get_active ( )
2005-08-09 15:27:31 +02:00
if active == 0 : # all
2005-08-07 22:58:44 +02:00
gajim . config . set ( ' chat_state_notifications ' , ' all ' )
2005-08-09 15:27:31 +02:00
elif active == 1 : # only composing
gajim . config . set ( ' chat_state_notifications ' , ' composing_only ' )
2005-08-07 22:58:44 +02:00
else : # disabled
gajim . config . set ( ' chat_state_notifications ' , ' disabled ' )
2005-12-06 13:45:32 +01:00
2005-07-20 00:57:37 +02:00
2005-05-10 17:39:35 +02: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 13:45:32 +01:00
2005-05-10 17:39:35 +02:00
def on_soundplayer_entry_changed ( self , widget ) :
2005-08-26 02:52:44 +02:00
gajim . config . set ( ' soundplayer ' , widget . get_text ( ) . decode ( ' utf-8 ' ) )
2005-10-20 13:17:17 +02:00
gajim . interface . save_config ( )
2005-12-06 13:45:32 +01:00
2005-05-10 17:39:35 +02:00
def on_prompt_online_status_message_checkbutton_toggled ( self , widget ) :
self . on_checkbutton_toggled ( widget , ' ask_online_status ' )
2005-12-06 13:45:32 +01:00
2005-05-10 17:39:35 +02:00
def on_prompt_offline_status_message_checkbutton_toggled ( self , widget ) :
self . on_checkbutton_toggled ( widget , ' ask_offline_status ' )
2005-12-06 13:45:32 +01:00
2005-05-10 17:39:35 +02:00
def on_sounds_treemodel_row_changed ( self , model , path , iter ) :
2005-08-26 02:52:44 +02:00
sound_event = model . get_value ( iter , 0 ) . decode ( ' utf-8 ' )
2005-05-10 17:39:35 +02:00
gajim . config . set_per ( ' soundevents ' , sound_event , ' enabled ' ,
bool ( model [ path ] [ 1 ] ) )
gajim . config . set_per ( ' soundevents ' , sound_event , ' path ' ,
2005-08-26 02:52:44 +02:00
model [ iter ] [ 2 ] . decode ( ' utf-8 ' ) )
2005-10-20 13:17:17 +02:00
gajim . interface . save_config ( )
2005-03-08 15:08:46 +01:00
2005-05-10 17:39:35 +02:00
def on_auto_away_checkbutton_toggled ( self , widget ) :
self . on_checkbutton_toggled ( widget , ' autoaway ' ,
2005-08-06 17:17:20 +02:00
[ self . auto_away_time_spinbutton , self . auto_away_message_entry ] )
2005-04-17 01:15:03 +02:00
2005-05-10 17:39:35 +02: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 13:17:17 +02:00
gajim . interface . sleeper = common . sleepy . Sleepy (
2005-05-10 17:39:35 +02:00
gajim . config . get ( ' autoawaytime ' ) * 60 ,
gajim . config . get ( ' autoxatime ' ) * 60 )
2005-10-20 13:17:17 +02:00
gajim . interface . save_config ( )
2005-04-17 01:15:03 +02:00
2005-08-06 17:17:20 +02:00
def on_auto_away_message_entry_changed ( self , widget ) :
2005-08-26 02:52:44 +02:00
gajim . config . set ( ' autoaway_message ' , widget . get_text ( ) . decode ( ' utf-8 ' ) )
2005-08-06 17:17:20 +02:00
2005-05-10 17:39:35 +02:00
def on_auto_xa_checkbutton_toggled ( self , widget ) :
self . on_checkbutton_toggled ( widget , ' autoxa ' ,
2005-08-06 17:17:20 +02:00
[ self . auto_xa_time_spinbutton , self . auto_xa_message_entry ] )
2005-03-08 15:08:46 +01:00
2005-05-10 17:39:35 +02: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 13:17:17 +02:00
gajim . interface . sleeper = common . sleepy . Sleepy (
2005-05-10 17:39:35 +02:00
gajim . config . get ( ' autoawaytime ' ) * 60 ,
gajim . config . get ( ' autoxatime ' ) * 60 )
2005-10-20 13:17:17 +02:00
gajim . interface . save_config ( )
2005-03-08 15:08:46 +01:00
2005-08-06 17:17:20 +02:00
def on_auto_xa_message_entry_changed ( self , widget ) :
2005-08-26 02:52:44 +02:00
gajim . config . set ( ' autoxa_message ' , widget . get_text ( ) . decode ( ' utf-8 ' ) )
2005-08-06 17:17:20 +02:00
2005-05-10 17:39:35 +02: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 16:14:03 +01:00
val = model [ iter ] [ 0 ] . decode ( ' utf-8 ' )
2005-05-10 17:39:35 +02:00
gajim . config . add_per ( ' statusmsg ' , val )
2005-11-10 16:14:03 +01:00
if model [ iter ] [ 1 ] is None : # here is the MESSAGE
# so when we press New this func is called by
# on_msg_treemodel_row_changed but message is None
# (hasn't been added yet) so do not TB
return
2005-12-01 21:11:48 +01:00
msg = helpers . to_one_line ( model [ iter ] [ 1 ] . decode ( ' utf-8 ' ) )
gajim . config . set_per ( ' statusmsg ' , val , ' message ' , msg )
2005-05-10 17:39:35 +02:00
iter = model . iter_next ( iter )
2005-10-20 13:17:17 +02:00
gajim . interface . save_config ( )
2005-03-21 22:01:03 +01:00
2005-05-10 17:39:35 +02:00
def on_msg_treemodel_row_changed ( self , model , path , iter ) :
self . save_status_messages ( model )
2005-06-01 22:01:11 +02:00
def on_msg_treemodel_row_deleted ( self , model , path ) :
2005-05-10 17:39:35 +02:00
self . save_status_messages ( model )
2005-08-09 17:30:45 +02:00
def on_applications_combobox_changed ( self , widget ) :
2005-07-25 16:38:21 +02:00
gajim . config . set ( ' autodetect_browser_mailer ' , False )
2005-07-27 14:22:17 +02:00
if widget . get_active ( ) == 3 :
2006-01-20 14:55:38 +01:00
self . xml . get_widget ( ' custom_apps_frame ' ) . show ( )
2005-05-10 17:39:35 +02:00
gajim . config . set ( ' openwith ' , ' custom ' )
2005-04-12 17:30:09 +02:00
else :
2005-05-10 17:39:35 +02:00
if widget . get_active ( ) == 0 :
2005-07-25 16:38:21 +02:00
gajim . config . set ( ' autodetect_browser_mailer ' , True )
elif widget . get_active ( ) == 1 :
2005-05-10 17:39:35 +02:00
gajim . config . set ( ' openwith ' , ' gnome-open ' )
2005-07-25 16:38:21 +02:00
elif widget . get_active ( ) == 2 :
2005-05-10 17:39:35 +02:00
gajim . config . set ( ' openwith ' , ' kfmclient exec ' )
2006-01-20 14:55:38 +01:00
self . xml . get_widget ( ' custom_apps_frame ' ) . hide ( )
2005-10-20 13:17:17 +02:00
gajim . interface . save_config ( )
2005-05-10 17:39:35 +02:00
def on_custom_browser_entry_changed ( self , widget ) :
2005-08-26 02:52:44 +02:00
gajim . config . set ( ' custombrowser ' , widget . get_text ( ) . decode ( ' utf-8 ' ) )
2005-10-20 13:17:17 +02:00
gajim . interface . save_config ( )
2005-05-10 17:39:35 +02:00
def on_custom_mail_client_entry_changed ( self , widget ) :
2005-08-26 02:52:44 +02:00
gajim . config . set ( ' custommailapp ' , widget . get_text ( ) . decode ( ' utf-8 ' ) )
2005-10-20 13:17:17 +02:00
gajim . interface . save_config ( )
2005-05-10 17:39:35 +02:00
2005-08-09 17:30:45 +02:00
def on_custom_file_manager_entry_changed ( self , widget ) :
2005-08-26 02:52:44 +02:00
gajim . config . set ( ' custom_file_manager ' , widget . get_text ( ) . decode ( ' utf-8 ' ) )
2005-10-20 13:17:17 +02:00
gajim . interface . save_config ( )
2005-08-09 17:30:45 +02:00
2005-11-24 00:28:26 +01:00
def on_log_show_changes_checkbutton_toggled ( self , widget ) :
self . on_checkbutton_toggled ( widget , ' log_contact_status_changes ' )
2005-12-06 13:45:32 +01:00
2005-05-10 17:39:35 +02:00
def on_send_os_info_checkbutton_toggled ( self , widget ) :
2005-11-24 00:28:26 +01: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 18:25:35 +01:00
2006-01-19 10:49:26 +01:00
def on_notify_gmail_checkbutton_toggled ( self , widget ) :
self . on_checkbutton_toggled ( widget , ' notify_on_new_gmail_email ' )
2005-05-10 17:39:35 +02:00
def fill_msg_treeview ( self ) :
self . xml . get_widget ( ' delete_msg_button ' ) . set_sensitive ( False )
model = self . msg_tree . get_model ( )
model . clear ( )
for msg in gajim . config . get_per ( ' statusmsg ' ) :
iter = model . append ( )
val = gajim . config . get_per ( ' statusmsg ' , msg , ' message ' )
2005-12-01 21:11:48 +01:00
val = helpers . from_one_line ( val )
2005-05-10 17:39:35 +02:00
model . set ( iter , 0 , msg , 1 , val )
2005-02-14 23:30:04 +01:00
2005-05-10 17:39:35 +02: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 23:30:04 +01:00
2005-05-10 17:39:35 +02: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 13:44:50 +02:00
msg = model [ iter ] [ 1 ]
2005-05-10 17:39:35 +02:00
buf . set_text ( msg )
2005-02-14 23:30:04 +01:00
2005-05-10 17:39:35 +02:00
def on_new_msg_button_clicked ( self , widget , data = None ) :
model = self . msg_tree . get_model ( )
iter = model . append ( )
2005-07-29 19:47:37 +02:00
model . set ( iter , 0 , _ ( ' status message title ' ) , 1 , _ ( ' status message text ' ) )
2004-05-15 18:50:38 +02:00
2005-05-10 17:39:35 +02: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 13:45:32 +01:00
2005-05-10 17:39:35 +02: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 13:45:32 +01:00
2005-05-10 17:39:35 +02: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 18:50:38 +02:00
2005-05-10 17:39:35 +02:00
def sound_toggled_cb ( self , cell , path ) :
model = self . sound_tree . get_model ( )
model [ path ] [ 1 ] = not model [ path ] [ 1 ]
2004-05-15 18:50:38 +02:00
2005-05-10 17:39:35 +02:00
def fill_sound_treeview ( self ) :
sounds = gajim . config . get_per ( ' soundevents ' )
model = self . sound_tree . get_model ( )
model . clear ( )
for sound in sounds :
2005-11-24 00:28:26 +01:00
val = gajim . config . get_per ( ' soundevents ' , sound , ' enabled ' )
path = gajim . config . get_per ( ' soundevents ' , sound , ' path ' )
2005-12-25 16:01:10 +01:00
model . append ( ( sound , val , path ) )
2004-05-15 18:50:38 +02:00
2005-05-10 17:39:35 +02: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
2005-08-07 13:44:50 +02:00
str = model [ iter ] [ 2 ]
2005-05-10 17:39:35 +02:00
sounds_entry . set_text ( str )
2005-03-08 15:08:46 +01:00
2005-05-10 17:39:35 +02:00
def on_button_sounds_clicked ( self , widget , data = None ) :
( model , iter ) = self . sound_tree . get_selection ( ) . get_selected ( )
if not iter :
return
2005-08-26 02:52:44 +02:00
file = model [ iter ] [ 2 ] . decode ( ' utf-8 ' )
2005-05-17 13:55:30 +02:00
dialog = gtk . FileChooserDialog ( _ ( ' Choose Sound ' ) , None ,
2005-05-10 17:39:35 +02:00
gtk . FILE_CHOOSER_ACTION_OPEN ,
( gtk . STOCK_CANCEL , gtk . RESPONSE_CANCEL ,
gtk . STOCK_OPEN , gtk . RESPONSE_OK ) )
dialog . set_default_response ( gtk . RESPONSE_OK )
2005-08-23 15:22:14 +02:00
last_sounds_dir = gajim . config . get ( ' last_sounds_dir ' )
if last_sounds_dir and os . path . isdir ( ' last_sounds_dir ' ) :
dialog . set_current_folder ( last_sounds_dir )
else :
home_dir = os . path . expanduser ( ' ~ ' )
dialog . set_current_folder ( home_dir )
2004-10-26 00:02:16 +02:00
2005-05-10 17:39:35 +02:00
filter = gtk . FileFilter ( )
filter . set_name ( _ ( ' All files ' ) )
filter . add_pattern ( ' * ' )
dialog . add_filter ( filter )
2004-11-04 02:03:17 +01:00
2005-05-10 17:39:35 +02:00
filter = gtk . FileFilter ( )
filter . set_name ( _ ( ' Wav Sounds ' ) )
filter . add_pattern ( ' *.wav ' )
dialog . add_filter ( filter )
dialog . set_filter ( filter )
file = os . path . join ( os . getcwd ( ) , file )
dialog . set_filename ( file )
file = ' '
while True :
response = dialog . run ( )
if response != gtk . RESPONSE_OK :
break
file = dialog . get_filename ( )
2005-10-21 15:21:31 +02:00
try :
file = file . decode ( sys . getfilesystemencoding ( ) )
except :
pass
2005-05-10 17:39:35 +02:00
if os . path . exists ( file ) :
break
dialog . destroy ( )
if file :
2005-08-23 15:22:14 +02:00
directory = os . path . dirname ( file )
gajim . config . set ( ' last_sounds_dir ' , directory )
2005-05-10 17:39:35 +02:00
self . xml . get_widget ( ' sounds_entry ' ) . set_text ( file )
model . set_value ( iter , 2 , file )
model . set_value ( iter , 1 , 1 )
2005-04-06 20:51:54 +02:00
2005-06-06 17:03:41 +02:00
def on_sounds_entry_changed ( self , widget ) :
path_to_file = widget . get_text ( )
model , iter = self . sound_tree . get_selection ( ) . get_selected ( )
model . set_value ( iter , 2 , path_to_file )
model . set_value ( iter , 1 , 1 )
2006-02-02 08:33:30 +01:00
def on_play_button_clicked ( self , widget ) :
model , iter = self . sound_tree . get_selection ( ) . get_selected ( )
if not iter :
return
event = model [ iter ] [ 0 ]
helpers . play_sound ( event )
2005-05-10 17:39:35 +02:00
def on_open_advanced_editor_button_clicked ( self , widget , data = None ) :
2005-11-13 16:08:47 +01:00
if gajim . interface . instances . has_key ( ' advanced_config ' ) :
gajim . interface . instances [ ' advanced_config ' ] . window . present ( )
2005-05-10 17:39:35 +02:00
else :
2005-11-13 16:08:47 +01:00
gajim . interface . instances [ ' advanced_config ' ] = \
2005-10-21 19:49:35 +02:00
dialogs . AdvancedConfigurationWindow ( )
2004-05-15 18:50:38 +02:00
2005-06-10 23:14:16 +02:00
#---------- AccountModificationWindow class -------------#
class AccountModificationWindow :
2005-04-18 14:17:43 +02:00
''' Class for account informations '''
2005-03-07 18:01:56 +01:00
def on_account_modification_window_destroy ( self , widget ) :
2005-04-18 14:17:43 +02:00
''' close window '''
2005-11-13 16:08:47 +01: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 18:35:40 +02:00
return
2005-11-13 16:08:47 +01:00
if gajim . interface . instances . has_key ( ' account_modification ' ) :
del gajim . interface . instances [ ' account_modification ' ]
2005-12-06 13:45:32 +01:00
2005-04-17 20:36:09 +02:00
def on_cancel_button_clicked ( self , widget ) :
2005-04-12 17:30:09 +02:00
self . window . destroy ( )
2004-05-15 18:50:38 +02:00
2005-11-03 11:32:26 +01:00
def __init__ ( self , account ) :
2005-05-10 17:39:35 +02:00
self . xml = gtk . glade . XML ( GTKGUI_GLADE , ' account_modification_window ' , APP )
self . window = self . xml . get_widget ( ' account_modification_window ' )
self . account = account
2005-06-09 11:32:19 +02:00
# init proxy list
self . update_proxy_list ( )
2005-05-10 17:39:35 +02:00
self . xml . signal_autoconnect ( self )
2005-11-03 11:32:26 +01:00
self . init_account ( )
self . xml . get_widget ( ' save_button ' ) . grab_focus ( )
2005-05-10 17:39:35 +02:00
self . window . show_all ( )
2005-04-06 20:51:54 +02:00
def on_checkbutton_toggled ( self , widget , widgets ) :
2005-04-18 14:17:43 +02:00
''' set or unset sensitivity of widgets when widget is toggled '''
2005-04-06 20:51:54 +02:00
for w in widgets :
w . set_sensitive ( widget . get_active ( ) )
2005-04-22 03:05:31 +02:00
def init_account_gpg ( self ) :
keyid = gajim . config . get_per ( ' accounts ' , self . account , ' keyid ' )
2005-05-09 21:52:43 +02:00
keyname = gajim . config . get_per ( ' accounts ' , self . account , ' keyname ' )
2005-04-22 03:05:31 +02:00
savegpgpass = gajim . config . get_per ( ' accounts ' , self . account ,
2005-05-09 21:52:43 +02:00
' savegpgpass ' )
2005-04-22 03:05:31 +02:00
if not keyid or not gajim . config . get ( ' usegpg ' ) :
return
2005-04-24 17:47:53 +02:00
self . xml . get_widget ( ' gpg_key_label ' ) . set_text ( keyid )
2005-04-22 03:05:31 +02: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 17:30:09 +02:00
2005-06-09 00:05:45 +02:00
def update_proxy_list ( self ) :
2005-06-09 11:32:19 +02:00
if self . account :
our_proxy = gajim . config . get_per ( ' accounts ' , self . account , ' proxy ' )
else :
our_proxy = ' '
2005-06-09 00:05:45 +02:00
if not our_proxy :
our_proxy = ' None '
self . proxy_combobox = self . xml . get_widget ( ' proxies_combobox ' )
2005-06-18 15:48:43 +02:00
model = gtk . ListStore ( str )
2005-06-09 00:05:45 +02:00
self . proxy_combobox . set_model ( model )
l = gajim . config . get_per ( ' proxies ' )
l . insert ( 0 , ' None ' )
2005-10-27 14:47:54 +02:00
for i in xrange ( len ( l ) ) :
2005-06-09 00:05:45 +02:00
model . append ( [ l [ i ] ] )
if our_proxy == l [ i ] :
self . proxy_combobox . set_active ( i )
2005-04-15 01:00:25 +02:00
def init_account ( self ) :
2005-04-18 14:17:43 +02:00
''' Initialize window with defaults values '''
2005-04-15 01:00:25 +02:00
self . xml . get_widget ( ' name_entry ' ) . set_text ( self . account )
2005-04-22 03:05:31 +02:00
jid = gajim . config . get_per ( ' accounts ' , self . account , ' name ' ) \
+ ' @ ' + gajim . config . get_per ( ' accounts ' ,
2005-10-20 10:48:19 +02:00
self . account , ' hostname ' )
2005-04-15 01:00:25 +02:00
self . xml . get_widget ( ' jid_entry ' ) . set_text ( jid )
2005-06-18 16:17:26 +02:00
self . xml . get_widget ( ' save_password_checkbutton ' ) . set_active (
2005-04-15 01:00:25 +02:00
gajim . config . get_per ( ' accounts ' , self . account , ' savepass ' ) )
if gajim . config . get_per ( ' accounts ' , self . account , ' savepass ' ) :
2005-04-22 03:05:31 +02:00
passstr = gajim . config . get_per ( ' accounts ' ,
self . account , ' password ' )
2005-04-15 01:00:25 +02:00
password_entry = self . xml . get_widget ( ' password_entry ' )
password_entry . set_sensitive ( True )
2005-04-22 03:05:31 +02:00
password_entry . set_text ( passstr )
2005-06-18 16:17:26 +02:00
self . xml . get_widget ( ' resource_entry ' ) . set_text ( gajim . config . get_per (
2005-04-15 01:00:25 +02:00
' accounts ' , self . account , ' resource ' ) )
self . xml . get_widget ( ' priority_spinbutton ' ) . set_value ( gajim . config . \
get_per ( ' accounts ' , self . account , ' priority ' ) )
2005-06-08 17:48:53 +02:00
2005-05-30 13:01:08 +02:00
usessl = gajim . config . get_per ( ' accounts ' , self . account , ' usessl ' )
self . xml . get_widget ( ' use_ssl_checkbutton ' ) . set_active ( usessl )
2005-12-06 13:45:32 +01:00
2005-07-25 02:31:20 +02:00
self . xml . get_widget ( ' send_keepalive_checkbutton ' ) . set_active (
gajim . config . get_per ( ' accounts ' , self . account ,
' keep_alives_enabled ' ) )
2005-05-09 21:52:43 +02:00
2005-06-14 12:26:01 +02: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 10:48:19 +02:00
' custom_host ' )
2005-06-14 12:26:01 +02:00
if not custom_host :
custom_host = gajim . config . get_per ( ' accounts ' ,
2005-10-20 10:48:19 +02:00
self . account , ' hostname ' )
2005-06-14 12:26:01 +02:00
self . xml . get_widget ( ' custom_host_entry ' ) . set_text ( custom_host )
custom_port = gajim . config . get_per ( ' accounts ' , self . account ,
2005-10-19 22:18:09 +02:00
' custom_port ' )
2005-06-14 12:26:01 +02:00
if not custom_port :
custom_port = 5222
2005-08-26 02:52:44 +02:00
self . xml . get_widget ( ' custom_port_entry ' ) . set_text ( unicode ( custom_port ) )
2005-06-13 23:16:41 +02:00
2005-02-28 23:09:21 +01:00
gpg_key_label = self . xml . get_widget ( ' gpg_key_label ' )
2005-04-22 03:05:31 +02:00
if gajim . config . get ( ' usegpg ' ) :
2005-04-23 19:40:43 +02:00
self . init_account_gpg ( )
2005-04-22 03:05:31 +02:00
else :
2005-05-30 16:16:41 +02:00
gpg_key_label . set_text ( _ ( ' OpenPGP is not usable in this computer ' ) )
2005-02-28 23:09:21 +01:00
self . xml . get_widget ( ' gpg_choose_button ' ) . set_sensitive ( False )
2005-04-15 01:00:25 +02:00
self . xml . get_widget ( ' autoconnect_checkbutton ' ) . set_active ( gajim . config . \
get_per ( ' accounts ' , self . account , ' autoconnect ' ) )
2005-09-05 15:28:09 +02:00
self . xml . get_widget ( ' autoreconnect_checkbutton ' ) . set_active ( gajim . config . \
get_per ( ' accounts ' , self . account , ' autoreconnect ' ) )
2005-06-18 16:17:26 +02:00
2005-11-03 11:32:26 +01: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 ' ) )
2005-06-07 03:10:24 +02:00
list_no_log_for = gajim . config . get_per ( ' accounts ' , self . account ,
2005-04-15 01:00:25 +02: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 18:50:38 +02:00
2005-02-28 23:09:21 +01:00
def on_save_button_clicked ( self , widget ) :
2005-04-18 14:17:43 +02:00
''' When save button is clicked: Save information in config file '''
2005-05-10 11:20:35 +02:00
config = { }
2005-08-26 02:52:44 +02:00
name = self . xml . get_widget ( ' name_entry ' ) . get_text ( ) . decode ( ' utf-8 ' )
2005-04-14 09:20:14 +02:00
if gajim . connections . has_key ( self . account ) :
2005-04-22 03:05:31 +02:00
if name != self . account and \
2006-01-16 12:16:06 +01:00
gajim . connections [ self . account ] . connected != 0 :
2005-07-18 18:40:12 +02:00
dialogs . ErrorDialog ( _ ( ' You are currently connected to the server ' ) ,
2005-11-03 11:32:26 +01:00
_ ( ' To change the account name, you must be disconnected. ' ) ) . get_response ( )
2005-03-31 14:17:07 +02:00
return
2005-05-10 11:20:35 +02:00
if ( name == ' ' ) :
2005-06-10 23:14:16 +02:00
dialogs . ErrorDialog ( _ ( ' Invalid account name ' ) ,
2005-07-18 18:40:12 +02:00
_ ( ' Account name cannot be empty. ' ) ) . get_response ( )
2005-05-10 11:20:35 +02:00
return
if name . find ( ' ' ) != - 1 :
2005-06-10 23:14:16 +02:00
dialogs . ErrorDialog ( _ ( ' Invalid account name ' ) ,
2005-07-18 18:40:12 +02:00
_ ( ' Account name cannot contain spaces. ' ) ) . get_response ( )
2005-05-10 11:20:35 +02:00
return
2005-08-26 02:52:44 +02:00
jid = self . xml . get_widget ( ' jid_entry ' ) . get_text ( ) . decode ( ' utf-8 ' )
2005-11-03 15:46:56 +01:00
# check if jid is conform to RFC and stringprep it
try :
jid = helpers . parse_jid ( jid )
except helpers . InvalidFormat , s :
2005-11-03 23:37:21 +01:00
pritext = _ ( ' Invalid Jabber ID ' )
dialogs . ErrorDialog ( pritext , str ( s ) ) . get_response ( )
return
n , hn = jid . split ( ' @ ' , 1 )
if not n :
pritext = _ ( ' Invalid Jabber ID ' )
sectext = _ ( ' A Jabber ID must be in the form " user@servername " . ' )
dialogs . ErrorDialog ( pritext , sectext ) . get_response ( )
2005-11-03 15:46:56 +01: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 23:37:21 +01:00
pritext = _ ( ' Invalid Jabber ID ' )
dialogs . ErrorDialog ( pritext , ( s ) ) . get_response ( )
2005-05-10 11:20:35 +02:00
return
2005-11-03 15:46:56 +01:00
2005-05-10 11:20:35 +02:00
config [ ' savepass ' ] = self . xml . get_widget (
' save_password_checkbutton ' ) . get_active ( )
2005-11-03 11:32:26 +01:00
config [ ' password ' ] = self . xml . get_widget ( ' password_entry ' ) . get_text ( ) . \
decode ( ' utf-8 ' )
2005-11-03 15:46:56 +01:00
config [ ' resource ' ] = resource
2005-05-10 11:20:35 +02: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 15:28:09 +02:00
config [ ' autoreconnect ' ] = self . xml . get_widget ( ' autoreconnect_checkbutton ' ) . \
get_active ( )
2005-03-06 20:19:21 +01:00
2005-04-15 01:00:25 +02:00
if self . account :
2005-04-22 03:05:31 +02:00
list_no_log_for = gajim . config . get_per ( ' accounts ' ,
self . account , ' no_log_for ' ) . split ( )
2005-04-15 01:00:25 +02:00
else :
list_no_log_for = [ ]
2005-03-06 20:19:21 +01: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 11:20:35 +02:00
config [ ' no_log_for ' ] = ' ' . join ( list_no_log_for )
2005-12-06 13:45:32 +01:00
2005-05-10 11:20:35 +02:00
config [ ' sync_with_global_status ' ] = self . xml . get_widget (
2005-04-21 19:43:47 +02:00
' sync_with_global_status_checkbutton ' ) . get_active ( )
2005-12-06 13:45:32 +01:00
2005-06-08 17:48:53 +02:00
active = self . proxy_combobox . get_active ( )
2005-08-26 02:52:44 +02:00
proxy = self . proxy_combobox . get_model ( ) [ active ] [ 0 ] . decode ( ' utf-8 ' )
2005-06-08 17:48:53 +02:00
if proxy == ' None ' :
proxy = ' '
config [ ' proxy ' ] = proxy
2005-12-06 13:45:32 +01:00
2005-05-30 13:01:08 +02:00
config [ ' usessl ' ] = self . xml . get_widget ( ' use_ssl_checkbutton ' ) . get_active ( )
2005-10-19 20:47:09 +02:00
config [ ' name ' ] = n
2005-10-20 10:48:19 +02:00
config [ ' hostname ' ] = hn
2005-06-14 12:26:01 +02: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 ' ) ,
_ ( ' Custom port must be a port number. ' ) ) . get_response ( )
return
config [ ' custom_port ' ] = custom_port
config [ ' custom_host ' ] = self . xml . get_widget (
2005-10-20 10:48:19 +02:00
' custom_host_entry ' ) . get_text ( ) . decode ( ' utf-8 ' )
2005-06-13 23:16:41 +02:00
2005-08-26 02:52:44 +02:00
config [ ' keyname ' ] = self . xml . get_widget ( ' gpg_name_label ' ) . get_text ( ) . decode ( ' utf-8 ' )
2005-05-10 11:20:35 +02:00
if config [ ' keyname ' ] == ' ' : #no key selected
config [ ' keyid ' ] = ' '
config [ ' savegpgpass ' ] = False
config [ ' gpgpassword ' ] = ' '
2004-10-10 20:44:38 +02:00
else :
2005-08-26 02:52:44 +02:00
config [ ' keyid ' ] = self . xml . get_widget ( ' gpg_key_label ' ) . get_text ( ) . decode ( ' utf-8 ' )
2005-05-10 11:20:35 +02:00
config [ ' savegpgpass ' ] = self . xml . get_widget (
2005-04-21 19:43:47 +02:00
' gpg_save_password_checkbutton ' ) . get_active ( )
2005-11-15 19:12:22 +01:00
config [ ' gpgpassword ' ] = self . xml . get_widget ( ' gpg_password_entry '
) . get_text ( ) . decode ( ' utf-8 ' )
2005-11-03 11:32:26 +01:00
#if we modify the name of the account
if name != self . account :
#update variables
2005-11-15 19:12:22 +01:00
gajim . interface . instances [ name ] = gajim . interface . instances [ self . account ]
2005-11-03 11:32:26 +01:00
gajim . awaiting_events [ name ] = gajim . awaiting_events [ self . account ]
gajim . nicks [ name ] = gajim . nicks [ self . account ]
gajim . allow_notifications [ name ] = \
gajim . allow_notifications [ self . account ]
gajim . groups [ name ] = gajim . groups [ self . account ]
gajim . gc_connected [ name ] = gajim . gc_connected [ self . account ]
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 21:06:26 +01:00
gajim . contacts . change_account_name ( self . account , name )
2005-11-03 11:32:26 +01:00
#upgrade account variable in opened windows
for kind in ( ' infos ' , ' disco ' , ' chats ' , ' gc ' , ' gc_config ' ) :
2005-11-13 16:08:47 +01:00
for j in gajim . interface . instances [ name ] [ kind ] :
gajim . interface . instances [ name ] [ kind ] [ j ] . account = name
2005-11-03 11:32:26 +01:00
#upgrade account in systray
if gajim . interface . systray_enabled :
for list in gajim . interface . systray . jids :
if list [ 0 ] == self . account :
list [ 0 ] = name
2005-11-13 16:08:47 +01:00
del gajim . interface . instances [ self . account ]
2005-11-03 11:32:26 +01:00
del gajim . awaiting_events [ self . account ]
del gajim . nicks [ self . account ]
del gajim . allow_notifications [ self . account ]
del gajim . groups [ self . account ]
del gajim . gc_connected [ self . account ]
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 13:45:32 +01:00
2005-05-10 11:20:35 +02: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 12:21:41 +01:00
else :
gajim . connections [ name ] . password = None
2004-05-15 18:50:38 +02:00
#refresh accounts window
2005-11-13 16:08:47 +01:00
if gajim . interface . instances . has_key ( ' accounts ' ) :
gajim . interface . instances [ ' accounts ' ] . init_accounts ( )
2004-05-15 18:50:38 +02:00
#refresh roster
2005-10-20 13:17:17 +02:00
gajim . interface . roster . draw_roster ( )
gajim . interface . save_config ( )
2005-04-12 17:30:09 +02:00
self . window . destroy ( )
2004-05-15 18:50:38 +02:00
2005-03-04 14:10:00 +01:00
def on_change_password_button_clicked ( self , widget ) :
2005-07-18 13:03:53 +02:00
try :
2005-10-20 13:17:17 +02:00
dialog = dialogs . ChangePasswordDialog ( self . account )
2005-12-06 13:45:32 +01:00
except RuntimeError :
2005-07-18 16:15:33 +02:00
#if we showed ErrorDialog, there will not be dialog instance
2005-07-18 13:03:53 +02:00
return
2005-12-06 13:45:32 +01:00
2005-03-04 14:10:00 +01:00
new_password = dialog . run ( )
if new_password != - 1 :
2005-10-30 17:50:05 +01:00
gajim . connections [ self . account ] . change_password ( new_password )
2005-03-04 14:10:00 +01:00
if self . xml . get_widget ( ' save_password_checkbutton ' ) . get_active ( ) :
self . xml . get_widget ( ' password_entry ' ) . set_text ( new_password )
2005-02-28 23:09:21 +01:00
def on_edit_details_button_clicked ( self , widget ) :
2005-11-13 16:08:47 +01:00
if not gajim . interface . instances . has_key ( self . account ) :
2005-06-10 23:14:16 +02:00
dialogs . ErrorDialog ( _ ( ' No such account available ' ) ,
2005-06-07 03:10:24 +02:00
_ ( ' You must create your account before editing your personal information. ' ) ) . get_response ( )
2005-03-07 22:03:48 +01:00
return
2005-08-26 02:52:44 +02:00
jid = self . xml . get_widget ( ' jid_entry ' ) . get_text ( ) . decode ( ' utf-8 ' )
2005-07-18 23:16:31 +02:00
2005-07-18 23:26:42 +02:00
# show error dialog if account is newly created (not in gajim.connections)
2005-07-18 23:16:31 +02:00
if not gajim . connections . has_key ( self . account ) or \
2005-07-18 23:26:42 +02:00
gajim . connections [ self . account ] . connected < 2 :
2005-06-10 23:14:16 +02:00
dialogs . ErrorDialog ( _ ( ' You are not connected to the server ' ) ,
2005-07-18 23:26:42 +02:00
_ ( ' Without a connection, you can not edit your personal information. ' )
) . get_response ( )
2005-03-07 22:03:48 +01:00
return
2005-12-06 13:45:32 +01:00
2005-11-08 18:18:22 +01:00
# in infos the key jid is OUR jid so we save the vcardwindow instance there
2005-11-13 16:08:47 +01:00
if gajim . interface . instances [ self . account ] [ ' infos ' ] . has_key ( jid ) :
gajim . interface . instances [ self . account ] [ ' infos ' ] [ jid ] . window . present ( )
2005-11-08 18:18:22 +01:00
else :
2005-11-13 16:08:47 +01:00
gajim . interface . instances [ self . account ] [ ' infos ' ] [ jid ] = \
2005-11-13 21:25:04 +01:00
vcard . VcardWindow ( jid , self . account , True )
2005-04-14 11:38:08 +02:00
gajim . connections [ self . account ] . request_vcard ( jid )
2005-06-09 00:05:45 +02:00
def on_manage_proxies_button_clicked ( self , widget ) :
2005-11-13 16:08:47 +01:00
if gajim . interface . instances . has_key ( ' manage_proxies ' ) :
gajim . interface . instances [ ' manage_proxies ' ] . window . present ( )
2005-06-09 00:05:45 +02:00
else :
2005-11-13 16:08:47 +01:00
gajim . interface . instances [ ' manage_proxies ' ] = \
2005-10-20 13:17:17 +02:00
ManageProxiesWindow ( )
2005-06-09 00:05:45 +02:00
2005-04-22 01:20:18 +02:00
def on_gpg_choose_button_clicked ( self , widget , data = None ) :
2005-07-18 16:16:55 +02: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 15:55:50 +02:00
secret_keys = GnuPG . GnuPG ( ) . get_secret_keys ( )
2005-07-18 16:16:55 +02:00
else :
secret_keys = [ ]
2005-04-12 23:09:06 +02:00
if not secret_keys :
2005-06-10 23:14:16 +02:00
dialogs . ErrorDialog ( _ ( ' Failed to get secret keys ' ) ,
2005-08-12 14:10:27 +02:00
_ ( ' There was a problem retrieving your OpenPGP secret keys. ' ) ) . get_response ( )
2005-04-12 23:09:06 +02:00
return
secret_keys [ ' None ' ] = ' None '
2006-01-31 13:43:28 +01:00
instance = dialogs . ChooseGPGKeyDialog ( _ ( ' OpenPGP Key Selection ' ) ,
2005-07-23 00:49:03 +02:00
_ ( ' Choose your OpenPGP key ' ) , secret_keys )
2005-08-02 18:27:25 +02:00
keyID = instance . run ( )
2005-07-23 00:49:03 +02:00
if keyID is None :
2004-10-10 20:44:38 +02:00
return
2005-04-22 03:05:31 +02:00
checkbutton = self . xml . get_widget ( ' gpg_save_password_checkbutton ' )
2005-02-28 23:09:21 +01:00
gpg_key_label = self . xml . get_widget ( ' gpg_key_label ' )
gpg_name_label = self . xml . get_widget ( ' gpg_name_label ' )
2004-10-10 20:44:38 +02:00
if keyID [ 0 ] == ' None ' :
2005-02-28 23:09:21 +01:00
gpg_key_label . set_text ( _ ( ' No key selected ' ) )
gpg_name_label . set_text ( ' ' )
2005-04-22 03:05:31 +02:00
checkbutton . set_sensitive ( False )
2005-02-28 23:09:21 +01:00
self . xml . get_widget ( ' gpg_password_entry ' ) . set_sensitive ( False )
2004-10-10 20:44:38 +02:00
else :
2005-02-28 23:09:21 +01:00
gpg_key_label . set_text ( keyID [ 0 ] )
gpg_name_label . set_text ( keyID [ 1 ] )
2005-04-22 03:05:31 +02:00
checkbutton . set_sensitive ( True )
checkbutton . set_active ( False )
2005-02-28 23:09:21 +01:00
self . xml . get_widget ( ' gpg_password_entry ' ) . set_text ( ' ' )
2004-11-01 14:41:00 +01:00
2005-02-28 23:09:21 +01:00
def on_checkbutton_toggled_and_clear ( self , widget , widgets ) :
self . on_checkbutton_toggled ( widget , widgets )
2004-11-01 14:41:00 +01:00
for w in widgets :
if not widget . get_active ( ) :
w . set_text ( ' ' )
2004-10-10 20:44:38 +02:00
2005-06-13 23:16:41 +02: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-26 01:25:17 +02: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 13:45:32 +01:00
2005-06-13 12:57:49 +02: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 23:09:21 +01:00
def on_gpg_save_password_checkbutton_toggled ( self , widget ) :
2005-06-08 15:45:30 +02:00
self . on_checkbutton_toggled_and_clear ( widget , [
2005-02-28 23:09:21 +01:00
self . xml . get_widget ( ' gpg_password_entry ' ) ] )
def on_save_password_checkbutton_toggled ( self , widget ) :
2005-06-08 15:45:30 +02:00
self . on_checkbutton_toggled_and_clear ( widget ,
2005-02-28 23:09:21 +01:00
[ self . xml . get_widget ( ' password_entry ' ) ] )
2005-03-11 01:32:41 +01:00
self . xml . get_widget ( ' password_entry ' ) . grab_focus ( )
2005-02-24 23:16:21 +01:00
2005-06-10 23:14:16 +02:00
#---------- ManageProxiesWindow class -------------#
class ManageProxiesWindow :
2005-10-20 13:17:17 +02:00
def __init__ ( self ) :
2005-06-09 00:05:45 +02:00
self . xml = gtk . glade . XML ( GTKGUI_GLADE , ' manage_proxies_window ' , APP )
self . window = self . xml . get_widget ( ' manage_proxies_window ' )
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 ( )
model . set ( iter , 0 , ' None ' )
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 15:48:43 +02:00
model = gtk . ListStore ( str )
2005-06-09 00:05:45 +02: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 16:08:47 +01:00
if gajim . interface . instances [ account ] . has_key ( ' account_modification ' ) :
gajim . interface . instances [ account ] [ ' account_modification ' ] . \
2005-06-09 00:05:45 +02:00
update_proxy_list ( )
2005-11-13 16:08:47 +01:00
if gajim . interface . instances . has_key ( ' account_modification ' ) :
gajim . interface . instances [ ' account_modification ' ] . update_proxy_list ( )
2005-12-06 13:45:32 +01:00
del gajim . interface . instances [ ' manage_proxies ' ]
2005-06-09 00:05:45 +02: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 02:52:44 +02:00
while ( ' proxy ' + unicode ( i ) ) in proxies :
2005-06-09 00:05:45 +02:00
i + = 1
iter = model . append ( )
2005-08-26 02:52:44 +02:00
model . set ( iter , 0 , ' proxy ' + unicode ( i ) )
gajim . config . add_per ( ' proxies ' , ' proxy ' + unicode ( i ) )
2005-06-09 00:05:45 +02: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 15:37:04 +02:00
proxy = model [ iter ] [ 0 ] . decode ( ' utf-8 ' )
2005-06-09 00:05:45 +02: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 13:45:32 +01:00
2005-06-09 00:05:45 +02: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 15:37:04 +02:00
#FIXME: check if off proxy settings are correct (see http://trac.gajim.org/changeset/1921#file2 line 1221
2005-06-09 00:05:45 +02:00
( model , iter ) = widget . get_selection ( ) . get_selected ( )
if not iter :
return
2005-10-07 15:37:04 +02:00
proxy = model [ iter ] [ 0 ]
2005-06-09 00:05:45 +02: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 )
2005-10-07 15:37:04 +02:00
if proxy == ' None ' : # special proxy None
2005-06-09 00:05:45 +02:00
self . proxyname_entry . set_editable ( False )
2005-10-07 15:37:04 +02:00
self . xml . get_widget ( ' remove_proxy_button ' ) . set_sensitive ( False )
2005-06-09 00:05:45 +02: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 15:37:04 +02:00
self . xml . get_widget ( ' remove_proxy_button ' ) . set_sensitive ( True )
2005-06-09 00:05:45 +02: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 02:52:44 +02:00
proxyport_entry . set_text ( unicode ( gajim . config . get_per ( ' proxies ' ,
proxy , ' port ' ) ) )
2005-06-09 00:05:45 +02: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 15:37:04 +02:00
#FIXME: if we have several proxy types, set the combobox
2005-06-09 00:05:45 +02: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 02:52:44 +02:00
old_name = model . get_value ( iter , 0 ) . decode ( ' utf-8 ' )
new_name = widget . get_text ( ) . decode ( ' utf-8 ' )
2005-06-09 00:05:45 +02: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 15:37:04 +02:00
#FIXME: if we have several proxy types take them into account
2005-06-09 00:05:45 +02:00
pass
def on_proxyhost_entry_changed ( self , widget ) :
2005-08-26 02:52:44 +02:00
value = widget . get_text ( ) . decode ( ' utf-8 ' )
proxy = self . proxyname_entry . get_text ( ) . decode ( ' utf-8 ' )
2005-06-09 00:05:45 +02:00
gajim . config . set_per ( ' proxies ' , proxy , ' host ' , value )
def on_proxyport_entry_changed ( self , widget ) :
2005-08-26 02:52:44 +02:00
value = widget . get_text ( ) . decode ( ' utf-8 ' )
proxy = self . proxyname_entry . get_text ( ) . decode ( ' utf-8 ' )
2005-06-09 00:05:45 +02:00
gajim . config . set_per ( ' proxies ' , proxy , ' port ' , value )
def on_proxyuser_entry_changed ( self , widget ) :
2005-08-26 02:52:44 +02:00
value = widget . get_text ( ) . decode ( ' utf-8 ' )
proxy = self . proxyname_entry . get_text ( ) . decode ( ' utf-8 ' )
2005-06-09 00:05:45 +02:00
gajim . config . set_per ( ' proxies ' , proxy , ' user ' , value )
def on_proxypass_entry_changed ( self , widget ) :
2005-08-26 02:52:44 +02:00
value = widget . get_text ( ) . decode ( ' utf-8 ' )
proxy = self . proxyname_entry . get_text ( ) . decode ( ' utf-8 ' )
2005-06-09 00:05:45 +02:00
gajim . config . set_per ( ' proxies ' , proxy , ' pass ' , value )
2005-06-10 23:14:16 +02:00
#---------- AccountsWindow class -------------#
class AccountsWindow :
2005-05-26 02:07:49 +02:00
''' Class for accounts window: list of accounts '''
2005-04-02 22:35:33 +02:00
def on_accounts_window_destroy ( self , widget ) :
2005-12-06 13:45:32 +01:00
del gajim . interface . instances [ ' accounts ' ]
2005-03-29 19:49:10 +02:00
2005-03-01 19:00:34 +01:00
def on_close_button_clicked ( self , widget ) :
2005-04-12 17:30:09 +02:00
self . window . destroy ( )
2005-04-02 22:35:33 +02:00
2005-10-20 13:17:17 +02:00
def __init__ ( self ) :
2005-05-26 02:07:49 +02:00
self . xml = gtk . glade . XML ( GTKGUI_GLADE , ' accounts_window ' , APP )
self . window = self . xml . get_widget ( ' accounts_window ' )
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 13:48:10 +01:00
model = gtk . ListStore ( str , str , bool )
2005-05-26 02:07:49 +02: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 18:13:13 +01:00
#Merge accounts
st = gajim . config . get ( ' mergeaccounts ' )
self . xml . get_widget ( ' merge_checkbutton ' ) . set_active ( st )
2005-05-26 02:07:49 +02:00
def on_accounts_window_key_press_event ( self , widget , event ) :
if event . keyval == gtk . keysyms . Escape :
2005-12-06 13:45:32 +01:00
self . window . destroy ( )
2005-05-26 02:07:49 +02:00
2004-05-15 18:50:38 +02:00
def init_accounts ( self ) :
2005-04-18 14:17:43 +02:00
''' initialize listStore with existing accounts '''
2005-03-11 02:10:30 +01:00
self . modify_button . set_sensitive ( False )
2005-04-20 00:29:38 +02:00
self . remove_button . set_sensitive ( False )
2005-02-28 18:45:06 +01:00
model = self . accounts_treeview . get_model ( )
2004-05-15 18:50:38 +02:00
model . clear ( )
2005-04-14 09:05:10 +02:00
for account in gajim . connections :
2004-05-15 18:50:38 +02:00
iter = model . append ( )
2005-09-11 02:32:58 +02:00
model . set ( iter , 0 , account , 1 , gajim . get_hostname_from_account ( account ) )
2004-05-15 18:50:38 +02:00
2005-03-01 19:27:21 +01:00
def on_accounts_treeview_cursor_changed ( self , widget ) :
2005-04-18 14:17:43 +02:00
''' Activate delete and modify buttons when a row is selected '''
2005-03-11 02:10:30 +01:00
self . modify_button . set_sensitive ( True )
2005-04-20 00:29:38 +02:00
self . remove_button . set_sensitive ( True )
2004-05-15 18:50:38 +02:00
2005-03-01 19:00:34 +01:00
def on_new_button_clicked ( self , widget ) :
2005-05-26 02:07:49 +02:00
''' When new button is clicked: open an account information window '''
2005-11-13 16:08:47 +01:00
if gajim . interface . instances . has_key ( ' account_creation_wizard ' ) :
2005-12-06 13:45:32 +01:00
gajim . interface . instances [ ' account_creation_wizard ' ] . window . present ( )
2005-04-17 22:18:50 +02:00
else :
2005-11-13 16:08:47 +01:00
gajim . interface . instances [ ' account_creation_wizard ' ] = \
2005-11-03 10:33:22 +01:00
AccountCreationWizardWindow ( )
2005-04-17 22:18:50 +02:00
2005-04-20 00:29:38 +02:00
def on_remove_button_clicked ( self , widget ) :
2005-05-26 02:07:49 +02:00
''' When delete button is clicked:
2005-04-18 14:17:43 +02:00
Remove an account from the listStore and from the config file '''
2005-02-28 18:45:06 +01:00
sel = self . accounts_treeview . get_selection ( )
2004-05-15 18:50:38 +02:00
( model , iter ) = sel . get_selected ( )
2005-04-22 03:05:31 +02:00
if not iter :
return
2005-08-26 02:52:44 +02:00
account = model . get_value ( iter , 0 ) . decode ( ' utf-8 ' )
2005-11-13 16:08:47 +01:00
if gajim . interface . instances [ account ] . has_key ( ' remove_account ' ) :
gajim . interface . instances [ account ] [ ' remove_account ' ] . window . present ( )
2005-04-20 01:43:58 +02:00
else :
2005-11-13 16:08:47 +01:00
gajim . interface . instances [ account ] [ ' remove_account ' ] = \
2005-10-20 13:17:17 +02:00
RemoveAccountWindow ( account )
2004-05-15 18:50:38 +02:00
2005-03-01 19:00:34 +01:00
def on_modify_button_clicked ( self , widget ) :
2005-04-18 14:17:43 +02:00
''' When modify button is clicked:
open / show the account modification window for this account '''
2005-04-17 22:18:50 +02:00
sel = self . accounts_treeview . get_selection ( )
( model , iter ) = sel . get_selected ( )
2005-04-22 03:05:31 +02:00
if not iter :
return
2005-10-04 09:12:30 +02: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-05 00:07:46 +01:00
account = model [ path ] [ 0 ] . decode ( ' utf-8 ' )
2005-10-04 09:12:30 +02:00
self . show_modification_window ( account )
def show_modification_window ( self , account ) :
2005-11-13 16:08:47 +01:00
if gajim . interface . instances [ account ] . has_key ( ' account_modification ' ) :
gajim . interface . instances [ account ] [ ' account_modification ' ] . window . present ( )
2005-03-11 02:10:30 +01:00
else :
2005-11-13 16:08:47 +01:00
gajim . interface . instances [ account ] [ ' account_modification ' ] = \
2005-10-20 13:17:17 +02:00
AccountModificationWindow ( account )
2004-05-15 18:50:38 +02:00
2005-11-29 18:13:13 +01:00
def on_merge_checkbutton_toggled ( self , widget ) :
gajim . config . set ( ' mergeaccounts ' , widget . get_active ( ) )
gajim . interface . save_config ( )
2006-01-18 20:31:25 +01: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 18:13:13 +01:00
gajim . interface . roster . draw_roster ( )
2005-10-05 12:13:31 +02:00
class DataFormWindow :
2005-10-20 13:17:17 +02:00
def __init__ ( self , account , config ) :
2005-10-05 12:13:31 +02:00
self . account = account
self . config = config
self . xml = gtk . glade . XML ( GTKGUI_GLADE , ' data_form_window ' , APP )
self . window = self . xml . get_widget ( ' data_form_window ' )
self . config_table = self . xml . get_widget ( ' config_table ' )
self . fill_table ( )
self . xml . signal_autoconnect ( self )
self . window . show_all ( )
2006-01-19 14:52:02 +01: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 12:13:31 +02:00
pass
2006-01-19 14:52:02 +01:00
def on_data_form_window_destroy ( self , widget ) :
''' NOTE: child class should implement this '''
pass
2005-12-06 13:45:32 +01:00
2005-10-05 12:13:31 +02:00
def on_checkbutton_toggled ( self , widget , index ) :
self . config [ index ] [ ' values ' ] [ 0 ] = widget . get_active ( )
2005-11-23 00:10:08 +01: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 12:13:31 +02: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 13:45:32 +01:00
2005-10-05 12:13:31 +02:00
def fill_table ( self ) :
2005-11-23 00:10:08 +01:00
''' see JEP0004 '''
2005-10-05 12:13:31 +02: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
nbrows = self . config_table . get_property ( ' n-rows ' )
self . config_table . resize ( nbrows + 1 , 2 )
if self . config [ i ] . has_key ( ' label ' ) :
label = gtk . Label ( self . config [ i ] [ ' label ' ] )
label . set_alignment ( 0.0 , 0.5 )
2005-12-06 13:45:32 +01:00
self . config_table . attach ( label , 0 , 1 , nbrows , nbrows + 1 ,
2005-10-05 12:13:31 +02:00
gtk . FILL | gtk . SHRINK )
desc = None
if self . config [ i ] . has_key ( ' desc ' ) :
desc = self . config [ i ] [ ' desc ' ]
max = 1
if ctype == ' boolean ' :
widget = gtk . CheckButton ( desc , False )
2006-02-05 19:55:17 +01:00
activ = False
if self . config [ i ] . has_key ( ' values ' ) :
activ = self . config [ i ] [ ' values ' ] [ 0 ]
widget . set_active ( activ )
2005-10-05 12:13:31 +02:00
widget . connect ( ' toggled ' , self . on_checkbutton_toggled , i )
max = 2
elif ctype == ' fixed ' :
widget = gtk . Label ( ' \n ' . join ( self . config [ i ] [ ' values ' ] ) )
widget . set_alignment ( 0.0 , 0.5 )
max = 4
elif ctype == ' jid-multi ' :
2006-01-19 14:52:02 +01:00
#FIXME
2005-10-05 12:13:31 +02:00
widget = gtk . Label ( ' ' )
elif ctype == ' jid-single ' :
2006-01-19 14:52:02 +01:00
#FIXME
2005-10-05 12:13:31 +02:00
widget = gtk . Label ( ' ' )
elif ctype == ' list-multi ' :
2005-11-23 00:10:08 +01: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 )
if self . config [ i ] [ ' options ' ] [ j ] [ ' values ' ] [ 0 ] in self . config [ i ] [ ' values ' ] :
child . set_active ( True )
child . connect ( ' toggled ' , self . on_checkbutton_toggled2 , i , j )
widget . attach ( child , 0 , 1 , j , j + 1 )
j + = 1
max = 4
2005-10-05 12:13:31 +02: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 )
max = 3
elif ctype == ' text-multi ' :
widget = gtk . TextView ( )
widget . get_buffer ( ) . connect ( ' changed ' , self . on_textbuffer_changed , \
i )
widget . get_buffer ( ) . set_text ( ' \n ' . join ( self . config [ i ] [ ' values ' ] ) )
max = 4
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 )
max = 3
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 13:23:17 +01:00
widget . set_text ( self . config [ i ] [ ' values ' ] [ 0 ] )
2005-10-05 12:13:31 +02:00
max = 3
i + = 1
if max < 4 :
self . config_table . attach ( widget , 1 , max ,
nbrows , nbrows + 1 ,
gtk . FILL | gtk . SHRINK )
widget = gtk . Label ( )
self . config_table . attach ( widget , max , 4 ,
nbrows , nbrows + 1 )
else :
self . config_table . attach ( widget , 1 , max ,
nbrows , nbrows + 1 )
self . config_table . show_all ( )
class ServiceRegistrationWindow ( DataFormWindow ) :
2005-04-18 14:17:43 +02:00
''' Class for Service registration window:
2006-01-19 14:52:02 +01: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 :
self . xml = gtk . glade . XML ( GTKGUI_GLADE , ' service_registration_window ' , APP )
self . window = self . xml . get_widget ( ' service_registration_window ' )
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 14:11:21 +01:00
def on_cancel_button_clicked ( self , widget ) :
2005-04-12 17:30:09 +02:00
self . window . destroy ( )
2005-10-05 12:13:31 +02:00
2004-05-15 18:50:38 +02:00
def draw_table ( self ) :
2005-04-18 14:17:43 +02:00
''' Draw the table in the window '''
2004-05-15 18:50:38 +02:00
nbrow = 0
table = self . xml . get_widget ( ' table ' )
for name in self . infos . keys ( ) :
2005-10-27 15:15:03 +02:00
if name in ( ' key ' , ' instructions ' , ' x ' , ' registered ' ) :
2005-04-20 20:04:26 +02:00
continue
2005-06-09 00:08:53 +02:00
if not name :
continue
2005-04-20 20:04:26 +02: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 03:45:06 +02:00
entry . set_activates_default ( True )
2005-06-12 23:22:54 +02:00
if self . infos [ name ] :
entry . set_text ( self . infos [ name ] )
2005-05-22 13:54:09 +02:00
if name == ' password ' :
entry . set_visibility ( False )
2005-04-20 20:04:26 +02: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 18:50:38 +02:00
table . show_all ( )
2005-10-05 12:13:31 +02:00
2005-03-02 14:11:21 +01:00
def on_ok_button_clicked ( self , widget ) :
2006-01-19 14:52:02 +01: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-26 00:15:28 +02:00
else :
2006-01-19 14:52:02 +01: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 17:30:09 +02:00
self . window . destroy ( )
2005-10-05 12:13:31 +02:00
2004-05-15 18:50:38 +02:00
2006-01-16 12:16:06 +01:00
class GroupchatConfigWindow ( DataFormWindow ) :
''' GroupchatConfigWindow class '''
def __init__ ( self , account , room_jid , config ) :
DataFormWindow . __init__ ( self , account , config )
self . room_jid = room_jid
2006-01-17 23:46:08 +01: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 12:16:06 +01:00
# Draw the edit affiliation list things
add_on_vbox = self . xml . get_widget ( ' add_on_vbox ' )
2006-01-17 23:46:08 +01: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 14:52:02 +01:00
self . remove_button [ affiliation ] . connect ( ' clicked ' ,
self . on_remove_button_clicked , affiliation )
2006-01-17 23:46:08 +01:00
bb . pack_start ( self . remove_button [ affiliation ] )
2006-01-19 00:08:34 +01:00
liststore = gtk . ListStore ( str , str , str , str ) # Jid, reason, nick, role
2006-01-17 23:46:08 +01:00
self . affiliation_treeview [ affiliation ] = gtk . TreeView ( liststore )
2006-01-19 22:36:04 +01:00
self . affiliation_treeview [ affiliation ] . get_selection ( ) . set_mode (
gtk . SELECTION_MULTIPLE )
2006-01-19 14:52:02 +01:00
self . affiliation_treeview [ affiliation ] . connect ( ' cursor-changed ' ,
self . on_affiliation_treeview_cursor_changed , affiliation )
2006-01-17 23:46:08 +01: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 23:52:27 +01: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-19 00:08:34 +01: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 23:52:27 +01:00
2006-01-17 23:46:08 +01: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 16:49:20 +01:00
add_on_vbox . show_all ( )
2006-01-16 12:16:06 +01:00
2006-01-18 23:52:27 +01: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 23:46:08 +01:00
def on_add_button_clicked ( self , widget , affiliation ) :
2006-01-16 16:49:20 +01:00
if affiliation == ' outcast ' :
2006-01-16 17:44:50 +01:00
title = _ ( ' Banning... ' )
2006-01-19 14:52:02 +01:00
#You can move '\n' before user@domain if that line is TOO BIG
2006-01-19 22:36:04 +01:00
prompt = _ ( ' <b>Whom do you want to ban?</b> \n \n ' )
2006-01-16 16:49:20 +01:00
elif affiliation == ' member ' :
2006-01-19 14:52:02 +01:00
title = _ ( ' Adding Member... ' )
2006-01-19 22:36:04 +01:00
prompt = _ ( ' <b>Whom do you want to make a member?</b> \n \n ' )
2006-01-16 16:49:20 +01:00
elif affiliation == ' owner ' :
2006-01-19 14:52:02 +01:00
title = _ ( ' Adding Owner... ' )
2006-01-19 22:36:04 +01:00
prompt = _ ( ' <b>Whom do you want to make a owner?</b> \n \n ' )
2006-01-16 16:49:20 +01:00
else :
2006-01-19 14:52:02 +01:00
title = _ ( ' Adding Administrator... ' )
2006-01-19 22:36:04 +01: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 14:52:02 +01:00
' domain/resource, or address containing a subdomain. ' )
2006-01-16 16:49:20 +01: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 23:46:08 +01:00
model = self . affiliation_treeview [ affiliation ] . get_model ( )
2006-01-19 00:08:34 +01:00
model . append ( ( jid , ' ' , ' ' , ' ' ) )
2006-01-17 23:46:08 +01:00
if jid in self . removed_jid [ affiliation ] :
self . removed_jid [ affiliation ] . remove ( jid )
2006-01-16 16:49:20 +01:00
2006-01-17 23:46:08 +01:00
def on_remove_button_clicked ( self , widget , affiliation ) :
2006-01-19 22:36:04 +01: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 23:46:08 +01:00
self . remove_button [ affiliation ] . set_sensitive ( False )
2006-01-16 16:49:20 +01:00
2006-01-17 23:46:08 +01:00
def on_affiliation_treeview_cursor_changed ( self , widget , affiliation ) :
self . remove_button [ affiliation ] . set_sensitive ( True )
2006-01-16 12:16:06 +01:00
def affiliation_list_received ( self , affiliation , list ) :
''' Fill the affiliation treeview '''
2006-01-17 23:46:08 +01:00
if not affiliation :
2006-01-16 12:16:06 +01:00
return
2006-01-17 23:46:08 +01:00
tv = self . affiliation_treeview [ affiliation ]
2006-01-16 12:16:06 +01:00
model = tv . get_model ( )
for jid in list :
2006-01-18 23:52:27 +01:00
reason = ' '
if list [ jid ] . has_key ( ' reason ' ) :
reason = list [ jid ] [ ' reason ' ]
2006-01-19 00:08:34 +01: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 12:16:06 +01:00
def on_data_form_window_destroy ( self , widget ) :
del gajim . interface . instances [ self . account ] [ ' gc_config ' ] [ self . room_jid ]
2006-01-19 14:52:02 +01:00
def on_ok_button_clicked ( self , widget ) :
# We pressed OK button of the DataFormWindow
2006-01-16 12:16:06 +01:00
gajim . connections [ self . account ] . send_gc_config ( self . room_jid , self . config )
2006-01-17 23:46:08 +01: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 23:52:27 +01: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 23:46:08 +01:00
iter = model . iter_next ( iter )
for jid in self . removed_jid [ affiliation ] :
2006-01-21 18:05:28 +01:00
list [ jid ] = { ' affiliation ' : ' none ' }
2006-01-17 23:46:08 +01:00
gajim . connections [ self . account ] . send_gc_affiliation_list ( self . room_jid ,
list )
2006-01-16 12:16:06 +01:00
self . window . destroy ( )
2004-05-15 18:50:38 +02:00
2005-06-10 23:14:16 +02:00
#---------- ManageEmoticonsWindow class -------------#
class ManageEmoticonsWindow :
2005-10-20 13:17:17 +02:00
def __init__ ( self ) :
2005-06-11 18:15:01 +02:00
self . xml = gtk . glade . XML ( GTKGUI_GLADE , ' manage_emoticons_window ' , APP )
self . window = self . xml . get_widget ( ' manage_emoticons_window ' )
2005-04-06 20:51:54 +02:00
#emoticons
self . emot_tree = self . xml . get_widget ( ' emoticons_treeview ' )
2005-06-18 15:48:43 +02:00
model = gtk . ListStore ( str , str , gtk . Image )
2005-06-18 17:18:15 +02:00
model . set_sort_column_id ( 0 , gtk . SORT_ASCENDING )
2005-04-06 20:51:54 +02:00
self . emot_tree . set_model ( model )
2005-04-06 21:46:39 +02:00
col = gtk . TreeViewColumn ( _ ( ' Text ' ) )
2005-04-06 20:51:54 +02:00
self . emot_tree . append_column ( col )
renderer = gtk . CellRendererText ( )
renderer . connect ( ' edited ' , self . on_emot_cell_edited )
renderer . set_property ( ' editable ' , True )
col . pack_start ( renderer , True )
2005-04-22 01:20:18 +02:00
col . set_attributes ( renderer , text = 0 )
2005-04-06 20:51:54 +02:00
col = gtk . TreeViewColumn ( _ ( ' Image ' ) )
self . emot_tree . append_column ( col )
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 21:47:06 +01:00
renderer = cell_renderer_image . CellRendererImage ( 1 , 2 )
2005-04-06 20:51:54 +02:00
col . pack_start ( renderer , expand = False )
col . add_attribute ( renderer , ' image ' , 2 )
2005-12-06 13:45:32 +01:00
2005-04-06 20:51:54 +02:00
self . fill_emot_treeview ( )
2005-12-06 13:45:32 +01:00
self . emot_tree . get_model ( ) . connect ( ' row-changed ' ,
2005-04-06 20:51:54 +02:00
self . on_emoticons_treemodel_row_changed )
2005-11-13 15:55:52 +01:00
self . window . show_all ( )
2005-04-06 20:51:54 +02:00
self . xml . signal_autoconnect ( self )
2005-11-13 15:55:52 +01:00
def on_manage_emoticons_window_destroy ( self , widget ) :
2005-11-15 12:52:40 +01:00
gajim . interface . init_emoticons ( ) # update emoticons
2005-11-13 15:55:52 +01:00
# remove us from open windows
2005-11-13 16:08:47 +01:00
del gajim . interface . instances [ ' manage_emots ' ]
2005-12-06 13:45:32 +01:00
2005-04-06 20:51:54 +02:00
def on_close_button_clicked ( self , widget ) :
2005-11-13 15:55:52 +01:00
self . window . destroy ( )
2005-04-06 20:51:54 +02:00
def on_emoticons_treemodel_row_changed ( self , model , path , iter ) :
2005-04-16 16:50:26 +02:00
emots = gajim . config . get_per ( ' emoticons ' )
2005-08-26 02:52:44 +02:00
emot = model . get_value ( iter , 0 ) . decode ( ' utf-8 ' ) . upper ( )
2005-04-16 16:50:26 +02:00
if not emot in emots :
gajim . config . add_per ( ' emoticons ' , emot )
2005-11-16 14:03:50 +01:00
gajim . interface . init_emoticons ( ) # update emoticons
2005-09-05 16:02:36 +02:00
image = model [ iter ] [ 1 ]
if image :
image = image . decode ( ' utf-8 ' )
gajim . config . set_per ( ' emoticons ' , emot , ' path ' , image )
2005-10-20 13:17:17 +02:00
gajim . interface . save_config ( )
2005-04-06 20:51:54 +02:00
def image_is_ok ( self , image ) :
if not os . path . exists ( image ) :
2005-06-18 16:28:35 +02:00
return False
2005-04-06 20:51:54 +02:00
img = gtk . Image ( )
try :
img . set_from_file ( image )
except :
2005-06-18 16:28:35 +02:00
return False
2005-06-18 17:57:06 +02:00
t = img . get_storage_type ( )
2005-12-25 21:30:23 +01:00
if t not in ( gtk . IMAGE_PIXBUF , gtk . IMAGE_ANIMATION ) :
2005-06-18 16:28:35 +02:00
return False
return True
2005-04-06 20:51:54 +02:00
def fill_emot_treeview ( self ) :
model = self . emot_tree . get_model ( )
model . clear ( )
2005-04-16 16:50:26 +02:00
emots = gajim . config . get_per ( ' emoticons ' )
for emot in emots :
file = gajim . config . get_per ( ' emoticons ' , emot , ' path ' )
iter = model . append ( ( emot , file , None ) )
2005-04-06 20:51:54 +02:00
if not os . path . exists ( file ) :
continue
img = gtk . Image ( )
img . show ( )
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 21:47:06 +01:00
img . set_from_file ( file )
2005-04-06 20:51:54 +02:00
model . set ( iter , 2 , img )
def on_emot_cell_edited ( self , cell , row , new_text ) :
2005-06-21 12:03:45 +02:00
emots = gajim . config . get_per ( ' emoticons ' )
2005-04-06 20:51:54 +02:00
model = self . emot_tree . get_model ( )
iter = model . get_iter_from_string ( row )
2005-08-26 02:52:44 +02:00
old_text = model . get_value ( iter , 0 ) . decode ( ' utf-8 ' )
2005-06-21 12:03:45 +02:00
if old_text in emots :
gajim . config . del_per ( ' emoticons ' , old_text )
2005-09-05 23:48:39 +02:00
emots = gajim . config . get_per ( ' emoticons ' )
2005-08-26 02:52:44 +02:00
emot = new_text . decode ( ' utf-8 ' ) . upper ( )
2005-06-21 12:03:45 +02:00
if emot in emots :
model . remove ( iter )
else :
gajim . config . add_per ( ' emoticons ' , emot )
2005-11-16 14:03:50 +01:00
gajim . interface . init_emoticons ( ) # update emoticons
2005-06-21 12:03:45 +02:00
gajim . config . set_per ( ' emoticons ' , emot , ' path ' ,
2005-08-26 02:52:44 +02:00
model [ iter ] [ 1 ] . decode ( ' utf-8 ' ) )
2005-09-05 15:59:41 +02:00
model [ iter ] [ 0 ] = emot
2005-10-20 13:17:17 +02:00
gajim . interface . save_config ( )
2005-04-06 20:51:54 +02:00
2005-06-10 21:03:32 +02:00
def update_preview ( self , widget ) :
path_to_file = widget . get_preview_filename ( )
2005-09-05 15:59:41 +02:00
if path_to_file is None or os . path . isdir ( path_to_file ) :
# nothing to preview or directory
# make sure you clean image do show nothing
widget . get_preview_widget ( ) . set_from_file ( None )
2005-09-05 15:35:45 +02:00
return
try :
pixbuf = gtk . gdk . pixbuf_new_from_file_at_size ( path_to_file , 32 , 32 )
except ( gobject . GError , TypeError ) :
return
widget . get_preview_widget ( ) . set_from_pixbuf ( pixbuf )
2005-06-10 21:03:32 +02:00
2005-06-21 10:58:45 +02:00
def on_set_image_button_clicked ( self , widget , data = None ) :
2005-04-06 20:51:54 +02:00
( model , iter ) = self . emot_tree . get_selection ( ) . get_selected ( )
if not iter :
return
2005-08-26 02:52:44 +02:00
file = model [ iter ] [ 1 ] . decode ( ' utf-8 ' )
2005-07-18 19:18:25 +02:00
dialog = gtk . FileChooserDialog ( _ ( ' Choose Image ' ) , None ,
2005-04-22 03:05:31 +02:00
gtk . FILE_CHOOSER_ACTION_OPEN ,
( gtk . STOCK_CANCEL , gtk . RESPONSE_CANCEL ,
gtk . STOCK_OPEN , gtk . RESPONSE_OK ) )
2005-04-06 20:51:54 +02:00
dialog . set_default_response ( gtk . RESPONSE_OK )
2005-08-23 15:22:14 +02:00
last_emoticons_dir = gajim . config . get ( ' last_emoticons_dir ' )
if last_emoticons_dir and os . path . isdir ( ' last_emoticons_dir ' ) :
dialog . set_current_folder ( last_emoticons_dir )
else :
home_dir = os . path . expanduser ( ' ~ ' )
dialog . set_current_folder ( home_dir )
2005-04-06 20:51:54 +02:00
filter = gtk . FileFilter ( )
2005-06-10 21:03:32 +02:00
filter . set_name ( _ ( ' All files ' ) )
2005-04-18 14:17:43 +02:00
filter . add_pattern ( ' * ' )
2005-04-06 20:51:54 +02:00
dialog . add_filter ( filter )
filter = gtk . FileFilter ( )
2005-06-10 21:03:32 +02:00
filter . set_name ( _ ( ' Images ' ) )
2005-04-18 14:17:43 +02:00
filter . add_mime_type ( ' image/png ' )
filter . add_mime_type ( ' image/jpeg ' )
filter . add_mime_type ( ' image/gif ' )
2005-11-14 16:54:13 +01:00
filter . add_mime_type ( ' image/tiff ' )
filter . add_mime_type ( ' image/x-xpixmap ' ) # xpm
2005-04-06 20:51:54 +02:00
dialog . add_filter ( filter )
dialog . set_filter ( filter )
2005-06-10 21:03:32 +02:00
dialog . set_use_preview_label ( False )
dialog . set_preview_widget ( gtk . Image ( ) )
dialog . connect ( ' selection-changed ' , self . update_preview )
2005-04-06 20:51:54 +02:00
file = os . path . join ( os . getcwd ( ) , file )
dialog . set_filename ( file )
2005-12-06 13:45:32 +01:00
file = ' '
2005-04-22 17:56:33 +02:00
ok = False
while not ok :
2005-04-06 20:51:54 +02:00
response = dialog . run ( )
if response == gtk . RESPONSE_OK :
file = dialog . get_filename ( )
2005-10-21 15:21:31 +02:00
try :
file = file . decode ( sys . getfilesystemencoding ( ) )
except :
pass
2005-04-06 20:51:54 +02:00
if self . image_is_ok ( file ) :
2005-04-22 17:56:33 +02:00
ok = True
2005-04-06 20:51:54 +02:00
else :
2005-06-18 19:33:53 +02:00
file = None
2005-04-22 17:56:33 +02:00
ok = True
2005-04-06 20:51:54 +02:00
dialog . destroy ( )
if file :
2005-08-23 15:22:14 +02:00
directory = os . path . dirname ( file )
gajim . config . set ( ' last_emoticons_dir ' , directory )
2005-04-06 20:51:54 +02:00
model . set_value ( iter , 1 , file )
img = gtk . Image ( )
img . show ( )
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 21:47:06 +01:00
img . set_from_file ( file )
2005-04-06 20:51:54 +02:00
model . set ( iter , 2 , img )
2005-06-21 12:03:45 +02:00
2005-06-21 10:58:45 +02:00
def on_button_new_emoticon_clicked ( self , widget , data = None ) :
2005-04-06 20:51:54 +02:00
model = self . emot_tree . get_model ( )
iter = model . append ( )
2005-06-21 12:03:45 +02:00
model . set ( iter , 0 , ' EMOTICON ' , 1 , ' ' )
2005-04-06 20:51:54 +02:00
col = self . emot_tree . get_column ( 0 )
self . emot_tree . set_cursor ( model . get_path ( iter ) , col , True )
2005-06-21 10:58:45 +02:00
def on_button_remove_emoticon_clicked ( self , widget , data = None ) :
2005-04-06 20:51:54 +02:00
( model , iter ) = self . emot_tree . get_selection ( ) . get_selected ( )
if not iter :
return
2005-08-26 02:52:44 +02:00
gajim . config . del_per ( ' emoticons ' , model . get_value ( iter , 0 ) . decode ( ' utf-8 ' ) )
2005-11-16 14:03:50 +01:00
gajim . interface . init_emoticons ( ) # update emoticons
2005-10-20 13:17:17 +02:00
gajim . interface . save_config ( )
2005-04-06 20:51:54 +02:00
model . remove ( iter )
def on_emoticons_treeview_key_press_event ( self , widget , event ) :
if event . keyval == gtk . keysyms . Delete :
self . on_button_remove_emoticon_clicked ( widget )
2005-06-10 23:14:16 +02:00
#---------- RemoveAccountWindow class -------------#
class RemoveAccountWindow :
2005-04-20 01:43:58 +02:00
''' ask for removing from gajim only or from gajim and server too
and do removing of the account given '''
2005-12-06 13:45:32 +01:00
2005-04-20 01:43:58 +02:00
def on_remove_account_window_destroy ( self , widget ) :
2005-11-13 16:08:47 +01:00
if gajim . interface . instances . has_key ( self . account ) :
del gajim . interface . instances [ self . account ] [ ' remove_account ' ]
2005-04-20 01:43:58 +02:00
def on_cancel_button_clicked ( self , widget ) :
self . window . destroy ( )
2005-12-06 13:45:32 +01:00
2005-10-20 13:17:17 +02:00
def __init__ ( self , account ) :
2005-04-20 01:43:58 +02:00
self . account = account
xml = gtk . glade . XML ( GTKGUI_GLADE , ' remove_account_window ' , APP )
self . window = xml . get_widget ( ' remove_account_window ' )
2005-05-20 17:05:22 +02:00
self . remove_and_unregister_radiobutton = xml . get_widget (
2005-04-20 01:43:58 +02: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 ) :
2005-05-20 17:05:22 +02:00
if gajim . connections [ self . account ] . connected :
2005-06-10 23:14:16 +02:00
dialog = dialogs . ConfirmationDialog (
2005-06-07 03:10:24 +02:00
_ ( ' Account " %s " is connected to the server ' % self . account ) ,
_ ( ' If you remove it, the connection will be lost. ' ) )
if dialog . get_response ( ) != gtk . RESPONSE_OK :
2005-05-20 17:05:22 +02:00
return
2006-02-03 13:17:34 +01:00
# change status to offline only if we will not remove this JID from server
if not self . remove_and_unregister_radiobutton . get_active ( ) :
gajim . connections [ self . account ] . change_status ( ' offline ' , ' offline ' )
2005-12-06 13:45:32 +01:00
if self . remove_and_unregister_radiobutton . get_active ( ) :
2005-12-10 17:18:37 +01:00
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
2006-02-03 13:17:34 +01:00
gajim . connections [ self . account ] . unregister_account ( self . _on_remove_success )
else :
self . _on_remove_success ( True )
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 11:49:07 +01:00
# Close all opened windows
2005-11-14 14:30:36 +01:00
gajim . interface . roster . close_all ( gajim . interface . instances [ self . account ] )
2005-04-20 01:43:58 +02:00
del gajim . connections [ self . account ]
gajim . config . del_per ( ' accounts ' , self . account )
2005-10-20 13:17:17 +02:00
gajim . interface . save_config ( )
2005-11-13 16:08:47 +01:00
del gajim . interface . instances [ self . account ]
2005-10-15 22:49:08 +02:00
del gajim . awaiting_events [ self . account ]
2005-07-18 23:08:31 +02:00
del gajim . nicks [ self . account ]
del gajim . allow_notifications [ self . account ]
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 21:06:26 +01:00
gajim . contacts . remove_account ( self . account )
2005-08-03 11:23:36 +02:00
del gajim . gc_connected [ self . account ]
2005-07-18 23:08:31 +02: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 23:27:04 +02:00
del gajim . status_before_autoaway [ self . account ]
2006-01-18 20:31:25 +01: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 13:17:17 +02:00
gajim . interface . roster . draw_roster ( )
2005-11-13 16:08:47 +01:00
if gajim . interface . instances . has_key ( ' accounts ' ) :
gajim . interface . instances [ ' accounts ' ] . init_accounts ( )
2005-04-20 01:43:58 +02:00
self . window . destroy ( )
2005-06-09 22:35:44 +02:00
#---------- ManageBookmarksWindow class -------------#
class ManageBookmarksWindow :
2005-10-20 13:17:17 +02:00
def __init__ ( self ) :
2005-06-09 22:35:44 +02:00
self . xml = gtk . glade . XML ( GTKGUI_GLADE , ' manage_bookmarks_window ' , APP )
self . window = self . xml . get_widget ( ' manage_bookmarks_window ' )
#Account-JID, RoomName, Room-JID, Autojoin, Passowrd, Nick
2005-06-11 16:14:50 +02:00
self . treestore = gtk . TreeStore ( str , str , str , bool , str , str )
2005-06-09 22:35:44 +02:00
#Store bookmarks in treeview.
for account in gajim . connections :
2005-06-11 16:14:50 +02:00
if gajim . connections [ account ] . connected < = 1 :
continue
2005-06-09 22:35:44 +02:00
iter = self . treestore . append ( None , [ None , account , None ,
None , None , None ] )
for bookmark in gajim . connections [ account ] . bookmarks :
2005-06-11 18:15:01 +02:00
if bookmark [ ' name ' ] == ' ' :
2005-08-18 21:06:24 +02:00
# No name was given for this bookmark.
# Use the first part of JID instead...
2005-06-09 22:35:44 +02:00
name = bookmark [ ' jid ' ] . split ( " @ " ) [ 0 ]
bookmark [ ' name ' ] = name
2005-06-11 16:14:50 +02:00
2005-08-18 21:06:24 +02:00
# make '1', '0', 'true', 'false' (or other) to True/False
autojoin = helpers . from_xs_boolean_to_python_boolean (
bookmark [ ' autojoin ' ] )
2005-12-06 13:45:32 +01:00
2005-06-09 22:35:44 +02:00
self . treestore . append ( iter , [
account ,
bookmark [ ' name ' ] ,
bookmark [ ' jid ' ] ,
2005-06-11 16:14:50 +02:00
autojoin ,
2005-06-09 22:35:44 +02:00
bookmark [ ' password ' ] ,
bookmark [ ' nick ' ] ] )
self . view = self . xml . get_widget ( ' bookmarks_treeview ' )
self . view . set_model ( self . treestore )
2005-06-10 18:45:54 +02:00
self . view . expand_all ( )
2005-12-06 13:45:32 +01:00
2005-06-09 22:35:44 +02:00
renderer = gtk . CellRendererText ( )
2005-06-10 15:37:56 +02:00
column = gtk . TreeViewColumn ( ' Bookmarks ' , renderer , text = 1 )
2005-06-09 22:35:44 +02:00
self . view . append_column ( column )
2005-06-12 18:39:04 +02:00
2005-06-09 22:35:44 +02:00
self . selection = self . view . get_selection ( )
2005-06-10 15:37:56 +02:00
self . selection . connect ( ' changed ' , self . bookmark_selected )
2005-06-09 22:35:44 +02:00
#Prepare input fields
self . title_entry = self . xml . get_widget ( ' title_entry ' )
2005-06-10 17:45:09 +02:00
self . title_entry . connect ( ' changed ' , self . on_title_entry_changed )
2005-06-09 22:35:44 +02:00
self . nick_entry = self . xml . get_widget ( ' nick_entry ' )
2005-06-10 17:45:09 +02:00
self . nick_entry . connect ( ' changed ' , self . on_nick_entry_changed )
2005-06-09 22:35:44 +02:00
self . server_entry = self . xml . get_widget ( ' server_entry ' )
2005-06-10 17:45:09 +02:00
self . server_entry . connect ( ' changed ' , self . on_server_entry_changed )
2005-06-09 22:35:44 +02:00
self . room_entry = self . xml . get_widget ( ' room_entry ' )
2005-06-10 17:45:09 +02:00
self . room_entry . connect ( ' changed ' , self . on_room_entry_changed )
2005-06-09 22:35:44 +02:00
self . pass_entry = self . xml . get_widget ( ' pass_entry ' )
2005-06-10 17:45:09 +02:00
self . pass_entry . connect ( ' changed ' , self . on_pass_entry_changed )
2005-06-09 22:35:44 +02:00
self . autojoin_checkbutton = self . xml . get_widget ( ' autojoin_checkbutton ' )
2005-12-06 13:45:32 +01:00
2005-06-09 22:35:44 +02:00
self . xml . signal_autoconnect ( self )
self . window . show_all ( )
2005-12-06 13:45:32 +01:00
2005-06-12 18:39:04 +02:00
def on_bookmarks_treeview_button_press_event ( self , widget , event ) :
( model , iter ) = self . selection . get_selected ( )
if not iter :
2005-08-07 13:44:50 +02:00
# Removed a bookmark before
2005-06-12 18:39:04 +02:00
return
if model . iter_parent ( iter ) :
2005-08-07 13:44:50 +02:00
# The currently selected node is a bookmark
2005-06-12 19:33:38 +02:00
return not self . check_valid_bookmark ( )
2005-06-12 18:39:04 +02:00
def on_manage_bookmarks_window_destroy ( self , widget , event ) :
2005-11-13 16:08:47 +01:00
del gajim . interface . instances [ ' manage_bookmarks ' ]
2005-06-09 22:35:44 +02: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 21:47:06 +01:00
def on_add_bookmark_button_clicked ( self , widget ) :
2005-06-10 15:37:56 +02:00
'''
2005-06-09 22:35:44 +02:00
Add a new bookmark .
2005-06-10 15:37:56 +02:00
'''
2005-12-06 13:45:32 +01:00
# Get the account that is currently used
2005-08-07 13:44:50 +02:00
# (the parent of the currently selected item)
2005-06-09 22:35:44 +02:00
( model , iter ) = self . selection . get_selected ( )
2005-08-07 13:44:50 +02:00
if not iter : # Nothing selected, do nothing
2005-06-09 23:05:58 +02:00
return
2005-06-09 22:35:44 +02:00
parent = model . iter_parent ( iter )
2005-06-10 20:40:19 +02:00
if parent :
2005-08-07 13:44:50 +02:00
# We got a bookmark selected, so we add_to the parent
2005-06-10 20:40:19 +02:00
add_to = parent
else :
2005-08-07 13:44:50 +02:00
# No parent, so we got an account -> add to this.
2005-06-09 22:35:44 +02:00
add_to = iter
2005-06-10 15:37:56 +02:00
account = model . get_value ( add_to , 1 )
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 21:47:06 +01:00
nick = gajim . nicks [ account ]
self . treestore . append ( add_to , [ account , _ ( ' New Room ' ) , ' ' , False , ' ' ,
nick ] )
2005-06-10 18:45:54 +02:00
self . view . expand_row ( model . get_path ( add_to ) , True )
2005-06-09 22:35:44 +02:00
def on_remove_bookmark_button_clicked ( self , widget ) :
2005-06-10 15:37:56 +02:00
'''
2005-06-09 22:35:44 +02:00
Remove selected bookmark .
2005-06-10 15:37:56 +02:00
'''
2005-06-09 22:35:44 +02:00
( model , iter ) = self . selection . get_selected ( )
2005-08-07 13:44:50 +02:00
if not iter : # Nothing selected
2005-06-09 22:35:44 +02:00
return
2005-06-10 20:40:19 +02:00
2005-06-09 23:05:58 +02:00
if not model . iter_parent ( iter ) :
2005-08-07 13:44:50 +02:00
# Don't remove account iters
2005-06-09 22:35:44 +02:00
return
model . remove ( iter )
self . clear_fields ( )
2005-06-12 18:39:04 +02: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 02:52:44 +02:00
if self . server_entry . get_text ( ) . decode ( ' utf-8 ' ) == ' ' or self . room_entry . get_text ( ) . decode ( ' utf-8 ' ) == ' ' :
2005-06-12 21:17:06 +02:00
dialogs . ErrorDialog ( _ ( ' This bookmark has invalid data ' ) ,
_ ( ' Please be sure to fill out server and room fields or remove this bookmark. ' ) ) . get_response ( )
2005-06-12 18:39:04 +02:00
return False
return True
2005-06-09 22:35:44 +02:00
def on_ok_button_clicked ( self , widget ) :
2005-06-10 15:37:56 +02:00
'''
2005-06-09 22:35:44 +02:00
Parse the treestore data into our new bookmarks array ,
then send the new bookmarks to the server .
2005-06-10 15:37:56 +02:00
'''
2005-06-12 18:39:04 +02: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 17:45:09 +02:00
for account in self . treestore :
2005-08-27 01:03:22 +02:00
account_unicode = account [ 1 ] . decode ( ' utf-8 ' )
gajim . connections [ account_unicode ] . bookmarks = [ ]
2005-06-10 20:40:19 +02:00
2005-06-10 17:45:09 +02:00
for bm in account . iterchildren ( ) :
2005-06-10 20:40:19 +02:00
#Convert True/False/None to '1' or '0'
2005-08-26 02:52:44 +02:00
autojoin = unicode ( int ( bm [ 3 ] ) )
2005-12-06 13:45:32 +01:00
2005-06-10 20:40:19 +02:00
#create the bookmark-dict
2005-06-11 16:14:50 +02:00
bmdict = { ' name ' : bm [ 1 ] , ' jid ' : bm [ 2 ] , ' autojoin ' : autojoin ,
2005-06-12 18:39:04 +02:00
' password ' : bm [ 4 ] , ' nick ' : bm [ 5 ] }
2005-12-06 13:45:32 +01:00
2005-08-27 01:03:22 +02:00
gajim . connections [ account_unicode ] . bookmarks . append ( bmdict )
2005-06-10 17:45:09 +02:00
2005-08-27 01:03:22 +02:00
gajim . connections [ account_unicode ] . store_bookmarks ( )
2005-10-20 13:17:17 +02:00
gajim . interface . roster . make_menu ( )
2005-06-10 17:45:09 +02:00
self . window . destroy ( )
2005-06-09 22:35:44 +02:00
def on_cancel_button_clicked ( self , widget ) :
2005-06-10 17:45:09 +02:00
self . window . destroy ( )
2005-06-09 22:35:44 +02:00
def bookmark_selected ( self , selection ) :
2005-06-10 15:37:56 +02:00
'''
2005-06-09 22:35:44 +02:00
Fill in the bookmark ' s data into the fields.
2005-06-10 15:37:56 +02:00
'''
2005-06-09 22:35:44 +02:00
( model , iter ) = selection . get_selected ( )
if not iter :
2006-01-21 23:02:00 +01:00
# After removing the last bookmark for one account
# this will be None, so we will just:
2005-06-09 22:35:44 +02:00
return
2005-06-12 18:39:04 +02:00
2005-06-10 20:40:19 +02:00
widgets = [ self . title_entry , self . nick_entry , self . room_entry ,
self . server_entry , self . pass_entry , self . autojoin_checkbutton ]
if model . iter_parent ( iter ) :
2006-01-21 23:02:00 +01:00
# make the fields sensitive
2005-06-10 20:40:19 +02:00
for field in widgets :
field . set_sensitive ( True )
else :
2006-01-21 23:02:00 +01:00
# Top-level has no data (it's the account fields)
# clear fields & make them insensitive
2005-06-09 22:35:44 +02:00
self . clear_fields ( )
2005-06-10 20:40:19 +02:00
for field in widgets :
field . set_sensitive ( False )
2005-06-09 22:35:44 +02:00
return
2005-06-12 18:39:04 +02:00
2006-01-21 23:02:00 +01:00
# Fill in the data for childs
2005-08-07 13:44:50 +02:00
self . title_entry . set_text ( model [ iter ] [ 1 ] )
2005-08-26 02:52:44 +02:00
room_jid = model [ iter ] [ 2 ] . decode ( ' utf-8 ' )
2005-06-09 22:35:44 +02:00
try :
2005-06-10 15:37:56 +02:00
( room , server ) = room_jid . split ( ' @ ' )
2005-06-09 22:35:44 +02:00
except ValueError :
2006-01-21 23:02:00 +01:00
# We just added this one
2005-06-09 22:35:44 +02:00
room = ' '
server = ' '
self . room_entry . set_text ( room )
self . server_entry . set_text ( server )
2005-12-06 13:45:32 +01:00
2005-08-07 13:44:50 +02:00
self . autojoin_checkbutton . set_active ( model [ iter ] [ 3 ] )
2006-02-04 14:52:58 +01:00
if model [ iter ] [ 4 ] is not None :
password = model [ iter ] [ 4 ] . decode ( ' utf-8 ' )
else :
password = None
2006-01-21 23:02:00 +01:00
if password :
self . pass_entry . set_text ( password )
else :
self . pass_entry . set_text ( ' ' )
nick = model [ iter ] [ 5 ] . decode ( ' utf-8 ' )
if nick :
self . nick_entry . set_text ( nick )
else :
self . nick_entry . set_text ( ' ' )
2005-06-09 22:35:44 +02:00
2005-06-10 17:45:09 +02:00
def on_title_entry_changed ( self , widget ) :
( model , iter ) = self . selection . get_selected ( )
2006-01-21 23:02:00 +01:00
if iter : # After removing a bookmark, we got nothing selected
2005-06-10 18:45:54 +02:00
if model . iter_parent ( iter ) :
2006-01-21 23:02:00 +01:00
# Don't clear the title field for account nodes
2005-08-07 13:44:50 +02:00
model [ iter ] [ 1 ] = self . title_entry . get_text ( )
2005-06-10 17:45:09 +02:00
def on_nick_entry_changed ( self , widget ) :
( model , iter ) = self . selection . get_selected ( )
if iter :
2005-08-07 13:44:50 +02:00
model [ iter ] [ 5 ] = self . nick_entry . get_text ( )
2005-12-06 13:45:32 +01:00
2005-06-10 17:45:09 +02:00
def on_server_entry_changed ( self , widget ) :
( model , iter ) = self . selection . get_selected ( )
if iter :
2005-08-26 02:52:44 +02:00
room_jid = self . room_entry . get_text ( ) . decode ( ' utf-8 ' ) + ' @ ' + \
self . server_entry . get_text ( ) . decode ( ' utf-8 ' )
2005-08-07 13:44:50 +02:00
model [ iter ] [ 2 ] = room_jid
2005-06-10 17:45:09 +02:00
def on_room_entry_changed ( self , widget ) :
( model , iter ) = self . selection . get_selected ( )
if iter :
2005-08-26 02:52:44 +02:00
room_jid = self . room_entry . get_text ( ) . decode ( ' utf-8 ' ) + ' @ ' + \
self . server_entry . get_text ( ) . decode ( ' utf-8 ' )
2005-08-07 13:44:50 +02:00
model [ iter ] [ 2 ] = room_jid
2005-06-10 17:45:09 +02:00
def on_pass_entry_changed ( self , widget ) :
( model , iter ) = self . selection . get_selected ( )
if iter :
2005-08-07 13:44:50 +02:00
model [ iter ] [ 4 ] = self . pass_entry . get_text ( )
2005-06-10 17:45:09 +02:00
def on_autojoin_checkbutton_toggled ( self , widget ) :
( model , iter ) = self . selection . get_selected ( )
if iter :
2005-08-07 13:44:50 +02:00
model [ iter ] [ 3 ] = self . autojoin_checkbutton . get_active ( )
2005-06-10 17:45:09 +02:00
2005-06-09 22:35:44 +02:00
def clear_fields ( self ) :
2005-06-10 20:40:19 +02: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 23:05:58 +02:00
self . autojoin_checkbutton . set_active ( False )
2005-08-07 01:39:53 +02:00
2005-11-03 10:27:45 +01:00
class AccountCreationWizardWindow :
2005-10-20 13:17:17 +02:00
def __init__ ( self ) :
2005-11-03 23:57:54 +01:00
self . xml = gtk . glade . XML ( GTKGUI_GLADE , ' account_creation_wizard_window ' ,
APP )
2005-11-03 23:47:26 +01:00
self . window = self . xml . get_widget ( ' account_creation_wizard_window ' )
2005-08-07 01:39:53 +02:00
2005-11-05 12:33:41 +01:00
# Connect events from comboboxentry.child
2005-11-03 22:50:23 +01:00
server_comboboxentry = self . xml . get_widget ( ' server_comboboxentry ' )
2005-09-18 17:03:04 +02:00
server_comboboxentry . child . connect ( ' key_press_event ' ,
self . on_server_comboboxentry_key_press_event )
# parse servers.xml
2005-09-18 20:30:16 +02:00
servers_xml = os . path . join ( gajim . DATA_DIR , ' other ' , ' servers.xml ' )
2005-12-06 13:45:32 +01:00
servers = gtkgui_helpers . parse_server_xml ( servers_xml )
2005-09-18 17:03:04 +02:00
servers_model = gtk . ListStore ( str , int )
for server in servers :
servers_model . append ( ( str ( server [ 0 ] ) , int ( server [ 1 ] ) ) )
2005-12-06 13:45:32 +01:00
2005-09-18 20:30:16 +02:00
# Put servers into comboboxentries
2005-09-18 17:03:04 +02:00
server_comboboxentry . set_model ( servers_model )
server_comboboxentry . set_text_column ( 0 )
2005-08-07 01:39:53 +02:00
2005-09-18 17:03:04 +02:00
# Generic widgets
self . notebook = self . xml . get_widget ( ' notebook ' )
2005-11-04 22:27:14 +01:00
self . cancel_button = self . xml . get_widget ( ' cancel_button ' )
2005-08-07 01:39:53 +02:00
self . back_button = self . xml . get_widget ( ' back_button ' )
2005-11-04 22:27:14 +01:00
self . forward_button = self . xml . get_widget ( ' forward_button ' )
2005-08-07 01:39:53 +02:00
self . finish_button = self . xml . get_widget ( ' finish_button ' )
2005-11-03 11:32:26 +01:00
self . advanced_button = self . xml . get_widget ( ' advanced_button ' )
2005-08-07 01:39:53 +02:00
self . finish_label = self . xml . get_widget ( ' finish_label ' )
2005-11-04 22:27:14 +01:00
self . go_online_checkbutton = self . xml . get_widget ( ' go_online_checkbutton ' )
2005-11-05 12:28:19 +01:00
self . progressbar = self . xml . get_widget ( ' progressbar ' )
2005-08-07 01:39:53 +02:00
2005-11-24 13:39:21 +01:00
# some vars
2005-11-05 12:28:19 +01:00
self . update_progressbar_timeout_id = None
2005-12-06 13:45:32 +01:00
2005-11-04 22:27:14 +01:00
self . notebook . set_current_page ( 0 )
2005-11-03 11:32:26 +01:00
self . advanced_button . set_no_show_all ( True )
self . xml . signal_autoconnect ( self )
self . window . show_all ( )
2005-11-03 23:12:00 +01:00
def on_wizard_window_destroy ( self , widget ) :
2005-11-13 16:08:47 +01:00
del gajim . interface . instances [ ' account_creation_wizard ' ]
2005-11-03 23:12:00 +01:00
2005-12-06 13:45:32 +01:00
def on_register_server_features_button_clicked ( self , widget ) :
2005-09-18 20:30:16 +02:00
helpers . launch_browser_mailer ( ' url ' , ' http://www.jabber.org/network/ ' )
2005-08-07 01:39:53 +02:00
def on_save_password_checkbutton_toggled ( self , widget ) :
2005-11-03 22:50:23 +01:00
self . xml . get_widget ( ' pass_entry ' ) . grab_focus ( )
2005-08-07 01:39:53 +02: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 22:27:14 +01: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-07 01:39:53 +02:00
2005-11-03 22:50:23 +01:00
def get_widgets ( self ) :
2005-12-06 13:45:32 +01:00
widgets = { }
2005-10-27 15:15:03 +02:00
for widget in (
2005-11-05 12:28:19 +01:00
' username_entry ' ,
2005-09-18 17:03:04 +02:00
' server_comboboxentry ' ,
' pass_entry ' ,
' save_password_checkbutton ' ,
' proxyhost_entry ' ,
' proxyport_entry ' ,
' proxyuser_entry ' ,
' proxypass_entry ' ,
2005-10-27 15:15:03 +02:00
' jid_label ' ) :
2005-11-03 22:50:23 +01:00
widgets [ widget ] = self . xml . get_widget ( widget )
2005-09-18 17:03:04 +02:00
return widgets
2005-08-07 01:39:53 +02:00
def on_forward_button_clicked ( self , widget ) :
cur_page = self . notebook . get_current_page ( )
2005-09-18 17:03:04 +02:00
2005-08-07 01:39:53 +02:00
if cur_page == 0 :
widget = self . xml . get_widget ( ' use_existing_account_radiobutton ' )
if widget . get_active ( ) :
2005-11-03 22:50:23 +01:00
self . modify = True
self . xml . get_widget ( ' server_features_button ' ) . hide ( )
2005-08-07 01:39:53 +02:00
else :
2005-11-03 22:50:23 +01:00
self . modify = False
self . xml . get_widget ( ' server_features_button ' ) . show ( )
self . notebook . set_current_page ( 1 )
2005-08-07 01:39:53 +02:00
self . back_button . set_sensitive ( True )
2005-09-18 17:03:04 +02:00
return
2005-12-06 13:45:32 +01:00
2005-08-07 01:39:53 +02:00
else :
2005-11-03 22:50:23 +01:00
widgets = self . get_widgets ( )
2005-11-05 12:28:19 +01:00
username = widgets [ ' username_entry ' ] . get_text ( ) . decode ( ' utf-8 ' )
2005-11-03 23:37:21 +01:00
if not username :
2005-11-05 12:28:19 +01:00
pritext = _ ( ' Invalid username ' )
sectext = _ ( ' You must provide a username to configure this account. ' )
2005-11-03 23:37:21 +01:00
dialogs . ErrorDialog ( pritext , sectext ) . get_response ( )
return
2005-09-18 17:03:04 +02:00
server = widgets [ ' server_comboboxentry ' ] . child . get_text ( )
savepass = widgets [ ' save_password_checkbutton ' ] . get_active ( )
password = widgets [ ' pass_entry ' ] . get_text ( )
2005-11-03 22:50:23 +01:00
2005-11-03 23:37:21 +01:00
if not self . modify and password == ' ' :
dialogs . ErrorDialog ( _ ( ' Invalid password ' ) ,
_ ( ' You must enter a password for the new account. ' ) ) . get_response ( )
return
2005-11-03 15:46:56 +01: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 23:37:21 +01:00
pritext = _ ( ' Invalid Jabber ID ' )
2005-11-03 23:15:40 +01:00
dialogs . ErrorDialog ( pritext , str ( s ) ) . get_response ( )
2005-11-03 15:46:56 +01:00
return
2005-11-05 12:30:42 +01:00
self . account = server
i = 1
while self . account in gajim . connections :
self . account = server + str ( i )
i + = 1
2005-11-03 15:46:56 +01:00
username , server = gajim . get_room_name_and_server_from_room_jid ( jid )
2005-11-04 22:27:14 +01:00
self . save_account ( username , server , savepass , password )
self . cancel_button . hide ( )
2005-11-03 15:46:56 +01:00
self . back_button . hide ( )
2005-11-04 22:27:14 +01:00
self . forward_button . hide ( )
if self . modify :
2005-11-09 18:08:09 +01: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 )
2005-11-04 22:27:14 +01:00
self . finish_button . set_sensitive ( True )
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
else :
self . notebook . set_current_page ( 2 ) # show creqting page
2005-11-05 12:28:19 +01: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 22:27:14 +01:00
def acc_is_ok ( self , config ) :
''' Account creation succeeded '''
self . create_vars ( config )
self . finish_button . set_sensitive ( True )
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 )
2005-12-06 13:45:32 +01:00
finish_text = ' <big><b> %s </b></big> \n \n %s ' % (
2005-11-09 18:08:09 +01:00
_ ( ' Your new account has been created successfully ' ) ,
2005-11-21 11:09:31 +01: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 18:08:09 +01:00
self . finish_label . set_markup ( finish_text )
2005-11-04 22:27:14 +01:00
self . notebook . set_current_page ( 3 ) # show finish page
2005-12-06 13:45:32 +01:00
2005-11-05 12:28:19 +01:00
if self . update_progressbar_timeout_id is not None :
gobject . source_remove ( self . update_progressbar_timeout_id )
2005-11-04 22:27:14 +01:00
def acc_is_not_ok ( self , reason ) :
''' Account creation failed '''
self . back_button . show ( )
self . cancel_button . show ( )
self . go_online_checkbutton . hide ( )
img = self . xml . get_widget ( ' finish_image ' )
img . set_from_stock ( gtk . STOCK_DIALOG_ERROR , gtk . ICON_SIZE_DIALOG )
2005-11-09 18:08:09 +01: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 22:27:14 +01:00
self . notebook . set_current_page ( 3 ) # show finish page
2005-08-07 01:39:53 +02:00
2005-11-03 11:32:26 +01:00
def on_advanced_button_clicked ( self , widget ) :
2005-11-13 16:08:47 +01:00
gajim . interface . instances [ self . account ] [ ' account_modification ' ] = \
2005-11-03 11:32:26 +01:00
AccountModificationWindow ( self . account )
self . window . destroy ( )
2005-08-07 01:39:53 +02:00
def on_finish_button_clicked ( self , widget ) :
2005-11-04 22:27:14 +01:00
go_online = self . xml . get_widget ( ' go_online_checkbutton ' ) . get_active ( )
2005-11-07 16:43:47 +01:00
show_vcard = self . xml . get_widget ( ' show_vcard_checkbutton ' ) . get_active ( )
2005-08-07 01:39:53 +02:00
self . window . destroy ( )
2005-11-07 16:43:47 +01:00
if show_vcard :
gajim . interface . show_vcard_when_connect . append ( self . account )
2005-11-03 23:12:00 +01:00
if go_online :
gajim . interface . roster . send_status ( self . account , ' online ' , ' ' )
2005-08-07 01:39:53 +02:00
2005-11-05 12:28:19 +01:00
def on_username_entry_changed ( self , widget ) :
2005-09-18 17:03:04 +02:00
self . update_jid ( widget )
2005-08-07 01:39:53 +02:00
2005-09-18 17:03:04 +02:00
def on_server_comboboxentry_changed ( self , widget ) :
self . update_jid ( widget )
2005-08-07 01:39:53 +02:00
2005-11-05 12:28:19 +01:00
def on_username_entry_key_press_event ( self , widget , event ) :
2005-09-18 20:30:16 +02:00
# Check for pressed @ and jump to combobox if found
2005-08-07 01:39:53 +02:00
if event . keyval == gtk . keysyms . at :
2005-11-03 22:50:23 +01:00
combobox = self . xml . get_widget ( ' server_comboboxentry ' )
combobox . grab_focus ( )
combobox . child . set_position ( - 1 )
2005-09-18 17:03:04 +02:00
return True
def on_server_comboboxentry_key_press_event ( self , widget , event ) :
2005-09-18 20:30:16 +02:00
# If backspace is pressed in empty field, return to the nick entry field
2005-10-21 23:50:44 +02:00
backspace = event . keyval == gtk . keysyms . BackSpace
2005-11-03 22:50:23 +01:00
combobox = self . xml . get_widget ( ' server_comboboxentry ' )
empty = len ( combobox . get_active_text ( ) ) == 0
2005-10-21 23:50:44 +02:00
if backspace and empty :
2005-11-05 12:28:19 +01:00
username_entry = self . xml . get_widget ( ' username_entry ' )
username_entry . grab_focus ( )
username_entry . set_position ( - 1 )
2005-08-07 01:39:53 +02:00
return True
2005-09-18 17:03:04 +02:00
def update_jid ( self , widget ) :
2005-11-05 12:28:19 +01:00
username_entry = self . xml . get_widget ( ' username_entry ' )
name = username_entry . get_text ( ) . decode ( ' utf-8 ' )
2005-11-03 22:50:23 +01:00
combobox = self . xml . get_widget ( ' server_comboboxentry ' )
server = combobox . get_active_text ( )
jid_label = self . xml . get_widget ( ' jid_label ' )
2005-08-07 01:39:53 +02:00
if len ( name ) == 0 or len ( server ) == 0 :
2005-11-03 22:50:23 +01:00
jid_label . set_label ( ' ' )
2005-08-07 01:39:53 +02:00
else :
2005-10-21 23:50:44 +02:00
string = ' <span background= " lightyellow " > %s @ %s </span> ' % ( name , server )
2005-11-03 22:50:23 +01:00
jid_label . set_label ( string )
2005-09-18 17:03:04 +02:00
2005-11-04 22:27:14 +01:00
def save_account ( self , login , server , savepass , password ) :
2005-09-18 20:30:16 +02:00
config = { }
2005-11-03 13:20:17 +01:00
config [ ' name ' ] = login
2005-09-18 17:03:04 +02:00
config [ ' hostname ' ] = server
config [ ' savepass ' ] = savepass
config [ ' password ' ] = password
config [ ' resource ' ] = ' Gajim '
config [ ' priority ' ] = 5
2005-11-24 13:39:21 +01:00
config [ ' autoconnect ' ] = True
2005-09-18 17:03:04 +02:00
config [ ' no_log_for ' ] = ' '
2005-11-24 13:39:21 +01:00
config [ ' sync_with_global_status ' ] = True
2005-09-18 17:03:04 +02: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-04 22:27:14 +01:00
if self . account in gajim . connections :
2005-09-18 17:03:04 +02:00
dialogs . ErrorDialog ( _ ( ' Account name is in use ' ) ,
_ ( ' You already have an account using this name. ' ) ) . get_response ( )
return
2005-11-04 22:27:14 +01:00
con = connection . Connection ( self . account )
2005-11-05 12:21:41 +01:00
if savepass :
con . password = password
2005-11-03 22:50:23 +01:00
if not self . modify :
2005-11-04 22:27:14 +01:00
con . new_account ( self . account , config )
2005-09-18 17:03:04 +02:00
return
2005-11-04 22:27:14 +01: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 17:03:04 +02:00
for opt in config :
2005-11-04 22:27:14 +01:00
gajim . config . set_per ( ' accounts ' , self . account , opt , config [ opt ] )
2005-09-18 20:30:16 +02:00
# update variables
2005-11-13 16:08:47 +01:00
gajim . interface . instances [ self . account ] = { ' infos ' : { } , ' disco ' : { } ,
2005-11-04 22:27:14 +01:00
' chats ' : { } , ' gc ' : { } , ' gc_config ' : { } }
2005-11-13 16:08:47 +01:00
gajim . interface . instances [ self . account ] [ ' xml_console ' ] = \
2005-11-04 22:27:14 +01:00
dialogs . XMLConsoleWindow ( self . account )
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 21:06:26 +01:00
gajim . contacts . add_account ( self . account )
2005-11-04 22:27:14 +01:00
gajim . gc_connected [ self . account ] = { }
gajim . newly_added [ self . account ] = [ ]
gajim . to_be_removed [ self . account ] = [ ]
gajim . nicks [ self . account ] = config [ ' name ' ]
gajim . allow_notifications [ self . account ] = False
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 20:30:16 +02:00
# refresh accounts window
2005-11-13 16:08:47 +01:00
if gajim . interface . instances . has_key ( ' accounts ' ) :
gajim . interface . instances [ ' accounts ' ] . init_accounts ( )
2005-09-18 20:30:16 +02:00
# refresh roster
2006-01-18 20:31:25 +01: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 13:17:17 +02:00
gajim . interface . roster . draw_roster ( )
gajim . interface . save_config ( )