we can now manage proxies

This commit is contained in:
Yann Leboulanger 2005-06-08 22:05:45 +00:00
parent 2fd11adc18
commit ff11a7433c
3 changed files with 193 additions and 19 deletions

View File

@ -140,7 +140,7 @@ class Config:
'host': [ opt_str, '' ],
'port': [ opt_int, 3128 ],
'user': [ opt_str, '' ],
'password': [ opt_str, '' ],
'pass': [ opt_str, '' ],
}, {}),
}

View File

@ -21,6 +21,7 @@ import gtk
import gtk.glade
import gobject
import os
import common.config
import common.sleepy
import dialogs
@ -1095,6 +1096,20 @@ class Account_modification_window:
self.account, 'gpgpassword')
entry.set_text(gpgpassword)
def update_proxy_list(self):
our_proxy = gajim.config.get_per('accounts', self.account, 'proxy')
if not our_proxy:
our_proxy = 'None'
self.proxy_combobox = self.xml.get_widget('proxies_combobox')
model = gtk.ListStore(gobject.TYPE_STRING)
self.proxy_combobox.set_model(model)
l = gajim.config.get_per('proxies')
l.insert(0, 'None')
for i in range(len(l)):
model.append([l[i]])
if our_proxy == l[i]:
self.proxy_combobox.set_active(i)
def init_account(self):
'''Initialize window with defaults values'''
self.xml.get_widget('name_entry').set_text(self.account)
@ -1117,18 +1132,7 @@ class Account_modification_window:
get_per('accounts', self.account, 'priority'))
# init proxy list
our_proxy = gajim.config.get_per('accounts', self.account, 'proxy')
if not our_proxy:
our_proxy = 'None'
self.proxy_combobox = self.xml.get_widget('proxies_combobox')
model = gtk.ListStore(gobject.TYPE_STRING)
self.proxy_combobox.set_model(model)
l = gajim.config.get_per('proxies')
l.insert(0, 'None')
for i in range(len(l)):
model.append([l[i]])
if our_proxy == l[i]:
self.proxy_combobox.set_active(i)
self.update_proxy_list()
usessl = gajim.config.get_per('accounts', self.account, 'usessl')
self.xml.get_widget('use_ssl_checkbutton').set_active(usessl)
@ -1340,7 +1344,14 @@ _('To change the account name, it must be disconnected.')).get_response()
self.plugin.windows[self.account]['infos'][jid] = \
dialogs.Vcard_window(jid, self.plugin, self.account, True)
gajim.connections[self.account].request_vcard(jid)
def on_manage_proxies_button_clicked(self, widget):
if self.plugin.windows.has_key('manage_proxies'):
self.plugin.windows['manage_proxies'].window.present()
else:
self.plugin.windows['manage_proxies'] = \
Manage_proxies_window(self.plugin)
def on_gpg_choose_button_clicked(self, widget, data = None):
secret_keys = gajim.connections[self.account].ask_gpg_secrete_keys()
if not secret_keys:
@ -1392,6 +1403,163 @@ _('There was a problem retrieving your GPG secret keys.')).get_response()
password_entry.set_sensitive(False)
password_entry.set_text('')
#---------- Manage_proxies_window class -------------#
class Manage_proxies_window:
def __init__(self, plugin):
self.plugin = plugin
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)
model = gtk.ListStore(gobject.TYPE_STRING)
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:
if self.plugin.windows[account].has_key('account_modification'):
self.plugin.windows[account]['account_modification'].\
update_proxy_list()
if self.plugin.windows.has_key('account_modification'):
self.plugin.windows['account_modification'].update_proxy_list()
del self.plugin.windows['manage_proxies']
def on_add_proxy_button_clicked(self, widget):
model = self.proxies_treeview.get_model()
proxies = gajim.config.get_per('proxies')
i = 1
while ('proxy' + str(i)) in proxies:
i += 1
iter = model.append()
model.set(iter, 0, 'proxy' + str(i))
gajim.config.add_per('proxies', 'proxy' + str(i))
def on_remove_proxy_button_clicked(self, widget):
(model, iter) = self.proxies_treeview.get_selection().get_selected()
if not iter:
return
proxy = model.get_value(iter, 0)
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()
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):
#TODO: check if off proxy settings are correct (see http://trac.gajim.org/changeset/1921#file2 line 1221
(model, iter) = widget.get_selection().get_selected()
if not iter:
return
self.xml.get_widget('remove_proxy_button').set_sensitive(True)
proxy = model.get_value(iter, 0)
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)
if proxy == 'None':
self.proxyname_entry.set_editable(False)
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)
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'))
proxyport_entry.set_text(str(gajim.config.get_per('proxies', proxy,
'port')))
proxyuser_entry.set_text(gajim.config.get_per('proxies', proxy,
'user'))
proxypass_entry.set_text(gajim.config.get_per('proxies', proxy,
'pass'))
#TODO: if we have several proxy type, set the combobox
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
old_name = model.get_value(iter, 0)
new_name = widget.get_text()
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):
#TODO: if we have several proxy type
pass
def on_proxyhost_entry_changed(self, widget):
value = widget.get_text()
proxy = self.proxyname_entry.get_text()
gajim.config.set_per('proxies', proxy, 'host', value)
def on_proxyport_entry_changed(self, widget):
value = widget.get_text()
proxy = self.proxyname_entry.get_text()
gajim.config.set_per('proxies', proxy, 'port', value)
def on_proxyuser_entry_changed(self, widget):
value = widget.get_text()
proxy = self.proxyname_entry.get_text()
gajim.config.set_per('proxies', proxy, 'user', value)
def on_proxypass_entry_changed(self, widget):
value = widget.get_text()
proxy = self.proxyname_entry.get_text()
gajim.config.set_per('proxies', proxy, 'pass', value)
#---------- Accounts_window class -------------#
class Accounts_window:
'''Class for accounts window: list of accounts'''

View File

@ -11037,7 +11037,6 @@ send a chat message to</property>
<widget class="GtkWindow" id="groupchat_config_window">
<property name="border_width">6</property>
<property name="visible">True</property>
<property name="title" translatable="yes">Room Configuration</property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_NONE</property>
@ -13149,7 +13148,6 @@ the Jabber network.</property>
<widget class="GtkWindow" id="manage_bookmarks_window">
<property name="border_width">6</property>
<property name="visible">True</property>
<property name="title" translatable="yes">Manage Bookmarks</property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_NONE</property>
@ -13524,7 +13522,6 @@ the Jabber network.</property>
<widget class="GtkWindow" id="manage_proxies_window">
<property name="border_width">6</property>
<property name="visible">True</property>
<property name="title" translatable="yes">Manage Proxy Profiles</property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_NONE</property>
@ -13536,6 +13533,7 @@ the Jabber network.</property>
<property name="skip_pager_hint">False</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
<property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
<signal name="destroy" handler="on_manage_proxies_window_destroy" last_modification_time="Wed, 08 Jun 2005 17:33:08 GMT"/>
<child>
<widget class="GtkVBox" id="vbox87">
@ -13565,13 +13563,15 @@ the Jabber network.</property>
<property name="window_placement">GTK_CORNER_TOP_LEFT</property>
<child>
<widget class="GtkTreeView" id="treeview1">
<widget class="GtkTreeView" id="proxies_treeview">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="headers_visible">False</property>
<property name="rules_hint">False</property>
<property name="reorderable">False</property>
<property name="enable_search">True</property>
<signal name="cursor_changed" handler="on_proxies_treeview_cursor_changed" last_modification_time="Wed, 08 Jun 2005 17:53:49 GMT"/>
<signal name="key_press_event" handler="on_proxies_treeview_key_press_event" last_modification_time="Wed, 08 Jun 2005 17:53:56 GMT"/>
</widget>
</child>
</widget>
@ -13715,6 +13715,7 @@ the Jabber network.</property>
<widget class="GtkComboBox" id="proxytype_combobox">
<property name="visible">True</property>
<property name="items" translatable="yes">HTTP Connect</property>
<signal name="changed" handler="on_proxytype_combobox_changed" last_modification_time="Wed, 08 Jun 2005 17:45:26 GMT"/>
</widget>
<packing>
<property name="left_attach">1</property>
@ -13736,6 +13737,7 @@ the Jabber network.</property>
<property name="has_frame">True</property>
<property name="invisible_char">*</property>
<property name="activates_default">False</property>
<signal name="changed" handler="on_proxyname_entry_changed" last_modification_time="Wed, 08 Jun 2005 17:43:44 GMT"/>
</widget>
<packing>
<property name="left_attach">1</property>
@ -13842,6 +13844,7 @@ the Jabber network.</property>
<property name="has_frame">True</property>
<property name="invisible_char">*</property>
<property name="activates_default">False</property>
<signal name="changed" handler="on_proxyhost_entry_changed" last_modification_time="Wed, 08 Jun 2005 20:56:20 GMT"/>
</widget>
<packing>
<property name="left_attach">1</property>
@ -13859,10 +13862,11 @@ the Jabber network.</property>
<property name="editable">True</property>
<property name="visibility">True</property>
<property name="max_length">0</property>
<property name="text">3128</property>
<property name="text"></property>
<property name="has_frame">True</property>
<property name="invisible_char">*</property>
<property name="activates_default">False</property>
<signal name="changed" handler="on_proxyport_entry_changed" last_modification_time="Wed, 08 Jun 2005 20:57:45 GMT"/>
</widget>
<packing>
<property name="left_attach">1</property>
@ -13959,6 +13963,7 @@ the Jabber network.</property>
<property name="has_frame">True</property>
<property name="invisible_char">*</property>
<property name="activates_default">False</property>
<signal name="changed" handler="on_proxypass_entry_changed" last_modification_time="Wed, 08 Jun 2005 20:58:01 GMT"/>
</widget>
<packing>
<property name="left_attach">1</property>
@ -13980,6 +13985,7 @@ the Jabber network.</property>
<property name="has_frame">True</property>
<property name="invisible_char">*</property>
<property name="activates_default">False</property>
<signal name="changed" handler="on_proxyuser_entry_changed" last_modification_time="Wed, 08 Jun 2005 20:57:53 GMT"/>
</widget>
<packing>
<property name="left_attach">1</property>