From fe2abb1dbd3c2ed13190b85d19dfa990e8a2c015 Mon Sep 17 00:00:00 2001 From: Nikos Kouremenos <kourem@gmail.com> Date: Tue, 1 Mar 2005 18:00:34 +0000 Subject: [PATCH] some changes. introduce accounts window bug --- plugins/gtkgui/config.py | 97 +++++++++++++++------------ plugins/gtkgui/gtkgui.glade | 128 ++++++------------------------------ plugins/gtkgui/gtkgui.py | 2 +- 3 files changed, 77 insertions(+), 150 deletions(-) diff --git a/plugins/gtkgui/config.py b/plugins/gtkgui/config.py index 0f574b8a8..9a59a1e93 100644 --- a/plugins/gtkgui/config.py +++ b/plugins/gtkgui/config.py @@ -1050,7 +1050,7 @@ class accountpreferences_window: jid = self.xml.get_widget('jid_entry').get_text() if self.plugin.connected[self.account]: self.plugin.windows[self.account]['infos'][jid] = \ - vCard_Window(jid, self.plugin, self.account) + vCard_Window(jid.get_text(), self.plugin, self.account) self.plugin.send('ASK_VCARD', self.account, jid) else: warning_Window(_('You must be connected to get your informations')) @@ -1126,49 +1126,58 @@ class accountpreferences_window: self.init_account(infos) self.xml.get_widget('new_account_checkbutton').set_sensitive(False) -class accounts_Window: +class accounts_window: """Class for accounts window : lists of accounts""" - def delete_event(self, widget): + def on_accounts_window_delete_event(self, widget, event): """close window""" + print 'delete' del self.plugin.windows['accounts'] - def on_close(self, widget): + def on_close_button_clicked(self, widget): """When Close button is clicked""" + print 'destroy' widget.get_toplevel().destroy() def init_accounts(self): """initialize listStore with existing accounts""" - self.xml.get_widget("modify_button").set_sensitive(False) - self.xml.get_widget("delete_button").set_sensitive(False) + self.xml.get_widget('modify_button').set_sensitive(False) + self.xml.get_widget('delete_button').set_sensitive(False) model = self.accounts_treeview.get_model() model.clear() for account in self.plugin.accounts: activ = 1 - if self.plugin.accounts[account].has_key("active"): - activ = self.plugin.accounts[account]["active"] + if self.plugin.accounts[account].has_key('active'): + activ = self.plugin.accounts[account]['active'] iter = model.append() model.set(iter, 0, account, 1, \ - self.plugin.accounts[account]["hostname"], 2, activ) + self.plugin.accounts[account]['hostname'], 2, activ) def on_row_activated(self, widget): """Activate delete and modify buttons when a row is selected""" self.xml.get_widget("modify_button").set_sensitive(True) self.xml.get_widget("delete_button").set_sensitive(True) - def on_new_clicked(self, widget): + def on_new_button_clicked(self, widget): """When new button is clicked : open an account information window""" if not self.plugin.windows.has_key('accountPreference'): self.plugin.windows['accountPreference'] = \ accountpreferences_window(self.plugin) - def on_delete_clicked(self, widget): + def on_delete_button_clicked(self, widget): """When delete button is clicked : Remove an account from the listStore and from the config file""" sel = self.accounts_treeview.get_selection() (model, iter) = sel.get_selected() account = model.get_value(iter, 0) - window = confirm_Window(_("Are you sure you want to remove this account (%s) ?") % account) - if window.wait() == gtk.RESPONSE_OK: + + dlg = gtk.MessageDialog(None, + gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, + gtk.MESSAGE_QUESTION, gtk.BUTTONS_YES_NO, + _("Are you sure you want to remove\nthis account (%s) ?") % account) + response = dlg.run() + dlg.hide() + + if response == gtk.RESPONSE_YES: if self.plugin.connected[account]: self.plugin.send('STATUS', account, ('offline', 'offline')) del self.plugin.accounts[account] @@ -1182,7 +1191,7 @@ class accounts_Window: self.plugin.roster.draw_roster() self.init_accounts() - def on_modify_clicked(self, widget): + def on_modify_button_clicked(self, widget): """When modify button is clicked : open the account information window for this account""" if not self.plugin.windows.has_key('accountPreference'): @@ -1226,12 +1235,7 @@ class accounts_Window: renderer.connect('toggled', self.on_toggled, model) self.accounts_treeview.insert_column_with_attributes(-1, _('Active'), \ renderer, active=2) - self.xml.signal_connect('gtk_widget_destroy', self.delete_event) - self.xml.signal_connect('on_row_activated', self.on_row_activated) - self.xml.signal_connect('on_new_clicked', self.on_new_clicked) - self.xml.signal_connect('on_delete_clicked', self.on_delete_clicked) - self.xml.signal_connect('on_modify_clicked', self.on_modify_clicked) - self.xml.signal_connect('on_close_clicked', self.on_close) + self.xml.signal_autoconnect(self) self.init_accounts() @@ -1286,14 +1290,18 @@ class agentRegistration_Window: self.xml.signal_connect('on_button_ok_clicked', self.on_ok) -class agent_browser_window: +class browseAgent_Window: """Class for bowser agent window : to know the agents on the selected server""" - def on_agent_browser_window_destroy(self, widget): + def delete_event(self, widget): """close window""" del self.plugin.windows[self.account]['browser'] - def on_close_button_clicked(self, widget): + def on_cancel(self, widget): + """When Cancel button is clicked""" + widget.get_toplevel().destroy() + + def on_close(self, widget): """When Close button is clicked""" widget.get_toplevel().destroy() @@ -1304,14 +1312,14 @@ class agent_browser_window: def agents(self, agents): """When list of available agent arrive : Fill the treeview with it""" - model = self.agents_treeview.get_model() + model = self.treeview.get_model() for agent in agents: iter = model.append(None, (agent['name'], agent['jid'])) self.agent_infos[agent['jid']] = {'features' : []} def agent_info(self, agent, identities, features, items): """When we recieve informations about an agent""" - model = self.agents_treeview.get_model() + model = self.treeview.get_model() iter = model.get_iter_root() expand = 0 while (iter): @@ -1336,24 +1344,23 @@ class agent_browser_window: model.append(iter, (item['name'], item['jid'])) self.agent_infos[item['jid']] = {'identities': [item]} if expand: - self.agents_treeview.expand_row((model.get_path(iter)), False) + self.treeview.expand_row((model.get_path(iter)), False) - def on_refresh_button_clicked(self, widget): + def on_refresh(self, widget): """When refresh button is clicked : refresh list : clear and rerequest it""" - self.agents_treeview.get_model().clear() + self.treeview.get_model().clear() self.browse() - def on_agents_treeview_row_activated(self, widget, path, col=0): + def on_row_activated(self, widget, path, col=0): """When a row is activated : Register or join the selected agent""" - #TODO pass def on_join_button_clicked(self, widget): """When we want to join a conference : Ask specific informations about the selected agent and close the window""" - model, iter = self.agents_treeview.get_selection().get_selected() + model, iter = self.treeview.get_selection().get_selected() if not iter: return service = model.get_value(iter, 1) @@ -1368,17 +1375,17 @@ class agent_browser_window: def on_register_button_clicked(self, widget): """When we want to register an agent : Ask specific informations about the selected agent and close the window""" - model, iter = self.agents_treeview.get_selection().get_selected() + model, iter = self.treeview.get_selection().get_selected() if not iter : return service = model.get_value(iter, 1) self.plugin.send('REG_AGENT_INFO', self.account, service) widget.get_toplevel().destroy() - def on_agents_treeview_cursor_changed(self, widget): + def on_cursor_changed(self, widget): """When we select a row : activate buttons if needed""" - model, iter = self.agents_treeview.get_selection().get_selected() + model, iter = self.treeview.get_selection().get_selected() jid = model.get_value(iter, 1) self.register_button.set_sensitive(False) if self.agent_infos[jid].has_key('features'): @@ -1395,29 +1402,35 @@ class agent_browser_window: if not plugin.connected[account]: warning_Window(_("You must be connected to view Agents")) return - xml = gtk.glade.XML(GTKGUI_GLADE, 'agent_browser_window', APP) - self.window = xml.get_widget('agent_browser_window') - self.agents_treeview = xml.get_widget('agents_treeview') + xml = gtk.glade.XML(GTKGUI_GLADE, 'browser', APP) + self.window = xml.get_widget('browser') + self.treeview = xml.get_widget('treeview') self.plugin = plugin self.account = account self.agent_infos = {} model = gtk.TreeStore(gobject.TYPE_STRING, gobject.TYPE_STRING) - self.agents_treeview.set_model(model) + self.treeview.set_model(model) #columns renderer = gtk.CellRendererText() renderer.set_data('column', 0) - self.agents_treeview.insert_column_with_attributes(-1, 'Name', \ - renderer, text=0) + self.treeview.insert_column_with_attributes(-1, 'Name', renderer, text=0) renderer = gtk.CellRendererText() renderer.set_data('column', 1) - self.agents_treeview.insert_column_with_attributes(-1, 'Service', \ + self.treeview.insert_column_with_attributes(-1, 'Service', \ renderer, text=1) self.register_button = xml.get_widget('register_button') self.register_button.set_sensitive(False) self.join_button = xml.get_widget('join_button') self.join_button.set_sensitive(False) - xml.signal_autoconnect(self) + + xml.signal_connect('gtk_widget_destroy', self.delete_event) + xml.signal_connect('on_refresh_clicked', self.on_refresh) + xml.signal_connect('on_row_activated', self.on_row_activated) + xml.signal_connect('on_join_button_clicked', self.on_join_button_clicked) + xml.signal_connect('on_register_button_clicked', self.on_register_button_clicked) + xml.signal_connect('on_cursor_changed', self.on_cursor_changed) + xml.signal_connect('on_close_clicked', self.on_close) self.browse() class join_gc: diff --git a/plugins/gtkgui/gtkgui.glade b/plugins/gtkgui/gtkgui.glade index 4e33c4ea0..5e43cd23f 100644 --- a/plugins/gtkgui/gtkgui.glade +++ b/plugins/gtkgui/gtkgui.glade @@ -671,7 +671,7 @@ <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="gtk_widget_destroy" last_modification_time="Wed, 10 Dec 2003 22:31:27 GMT"/> + <signal name="delete_event" handler="on_accounts_window_delete_event" last_modification_time="Tue, 01 Mar 2005 16:41:41 GMT"/> <child> <widget class="GtkVBox" id="vbox5"> @@ -747,20 +747,7 @@ <property name="use_stock">True</property> <property name="relief">GTK_RELIEF_NORMAL</property> <property name="focus_on_click">True</property> - <signal name="clicked" handler="on_new_clicked" last_modification_time="Thu, 28 Oct 2004 11:35:22 GMT"/> - </widget> - </child> - - <child> - <widget class="GtkButton" id="delete_button"> - <property name="visible">True</property> - <property name="can_default">True</property> - <property name="can_focus">True</property> - <property name="label">gtk-delete</property> - <property name="use_stock">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <signal name="clicked" handler="on_delete_clicked" last_modification_time="Thu, 28 Oct 2004 13:36:37 GMT"/> + <signal name="clicked" handler="on_new_button_clicked" last_modification_time="Tue, 01 Mar 2005 16:11:26 GMT"/> </widget> </child> @@ -771,10 +758,10 @@ <property name="can_focus">True</property> <property name="relief">GTK_RELIEF_NORMAL</property> <property name="focus_on_click">True</property> - <signal name="clicked" handler="on_modify_clicked" last_modification_time="Thu, 28 Oct 2004 13:36:59 GMT"/> + <signal name="clicked" handler="on_modify_button_clicked" last_modification_time="Tue, 01 Mar 2005 16:11:36 GMT"/> <child> - <widget class="GtkAlignment" id="alignment30"> + <widget class="GtkAlignment" id="alignment44"> <property name="visible">True</property> <property name="xalign">0.5</property> <property name="yalign">0.5</property> @@ -786,13 +773,13 @@ <property name="right_padding">0</property> <child> - <widget class="GtkHBox" id="hbox45"> + <widget class="GtkHBox" id="hbox2919"> <property name="visible">True</property> <property name="homogeneous">False</property> <property name="spacing">2</property> <child> - <widget class="GtkImage" id="image172"> + <widget class="GtkImage" id="image320"> <property name="visible">True</property> <property name="stock">gtk-refresh</property> <property name="icon_size">4</property> @@ -809,7 +796,7 @@ </child> <child> - <widget class="GtkLabel" id="label167"> + <widget class="GtkLabel" id="label201"> <property name="visible">True</property> <property name="label" translatable="yes">_Modify</property> <property name="use_underline">True</property> @@ -835,6 +822,19 @@ </widget> </child> + <child> + <widget class="GtkButton" id="delete_button"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-delete</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <signal name="clicked" handler="on_delete_button_clicked" last_modification_time="Tue, 01 Mar 2005 16:11:50 GMT"/> + </widget> + </child> + <child> <widget class="GtkButton" id="close_button"> <property name="visible">True</property> @@ -844,7 +844,7 @@ <property name="use_stock">True</property> <property name="relief">GTK_RELIEF_NORMAL</property> <property name="focus_on_click">True</property> - <signal name="clicked" handler="on_close_clicked" last_modification_time="Thu, 28 Oct 2004 11:36:49 GMT"/> + <signal name="clicked" handler="on_close_button_clicked" last_modification_time="Tue, 01 Mar 2005 16:11:58 GMT"/> </widget> </child> </widget> @@ -2548,92 +2548,6 @@ on the server as a vCard</property> </child> </widget> -<widget class="GtkDialog" id="Confirm"> - <property name="border_width">5</property> - <property name="visible">True</property> - <property name="title" translatable="yes">Sure ?</property> - <property name="type">GTK_WINDOW_TOPLEVEL</property> - <property name="window_position">GTK_WIN_POS_NONE</property> - <property name="modal">False</property> - <property name="resizable">True</property> - <property name="destroy_with_parent">False</property> - <property name="decorated">True</property> - <property name="skip_taskbar_hint">False</property> - <property name="skip_pager_hint">False</property> - <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> - <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> - <property name="has_separator">True</property> - - <child internal-child="vbox"> - <widget class="GtkVBox" id="dialog-vbox1"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> - - <child internal-child="action_area"> - <widget class="GtkHButtonBox" id="dialog-action_area1"> - <property name="visible">True</property> - <property name="layout_style">GTK_BUTTONBOX_END</property> - - <child> - <widget class="GtkButton" id="cancelbutton"> - <property name="visible">True</property> - <property name="can_default">True</property> - <property name="can_focus">True</property> - <property name="label">gtk-cancel</property> - <property name="use_stock">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="response_id">-6</property> - </widget> - </child> - - <child> - <widget class="GtkButton" id="okbutton"> - <property name="visible">True</property> - <property name="can_default">True</property> - <property name="can_focus">True</property> - <property name="label">gtk-ok</property> - <property name="use_stock">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="response_id">-5</property> - </widget> - </child> - </widget> - <packing> - <property name="padding">5</property> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="pack_type">GTK_PACK_END</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label_confirm"> - <property name="visible">True</property> - <property name="label" translatable="yes"></property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">True</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="mnemonic_widget">okbutton</property> - </widget> - <packing> - <property name="padding">10</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - </child> -</widget> - <widget class="GtkWindow" id="subscription_request_window"> <property name="border_width">5</property> <property name="visible">True</property> diff --git a/plugins/gtkgui/gtkgui.py b/plugins/gtkgui/gtkgui.py index c864d50d6..8d5b70317 100644 --- a/plugins/gtkgui/gtkgui.py +++ b/plugins/gtkgui/gtkgui.py @@ -2029,7 +2029,7 @@ class roster_Window: """When accounts is seleted : call the accounts class to modify accounts""" if not self.plugin.windows.has_key('accounts'): - self.plugin.windows['accounts'] = accounts_Window(self.plugin) + self.plugin.windows['accounts'] = accounts_window(self.plugin) def close_all(self, dic): """close all the windows in the given dictionary"""