Author: js
Date: 2009-02-14 13:09:23 +0100 (Sat, 14 Feb 2009)
New Revision: 11095
Added:
branches/osx_newbuildsys/data/pixmaps/events/subscription_request.png
branches/osx_newbuildsys/data/pixmaps/events/unsubscribed.png
Modified:
branches/osx_newbuildsys/data/glade/preferences_window.glade
branches/osx_newbuildsys/src/common/config.py
branches/osx_newbuildsys/src/common/connection.py
branches/osx_newbuildsys/src/common/events.py
branches/osx_newbuildsys/src/common/helpers.py
branches/osx_newbuildsys/src/common/xmpp/auth_nb.py
branches/osx_newbuildsys/src/common/xmpp/transports_nb.py
branches/osx_newbuildsys/src/config.py
branches/osx_newbuildsys/src/dialogs.py
branches/osx_newbuildsys/src/gajim.py
branches/osx_newbuildsys/src/network_manager_listener.py
branches/osx_newbuildsys/src/notify.py
branches/osx_newbuildsys/src/roster_window.py
Log:
Merge trunk r10089.
Modified: branches/osx_newbuildsys/data/glade/preferences_window.glade
===================================================================
--- branches/osx_newbuildsys/data/glade/preferences_window.glade 2009-02-14 12:06:05 UTC (rev 11094)
+++ branches/osx_newbuildsys/data/glade/preferences_window.glade 2009-02-14 12:09:23 UTC (rev 11095)
@@ -211,55 +211,45 @@
<property name="column_spacing">6</property>
<property name="row_spacing">6</property>
<child>
- <widget class="GtkComboBox" id="one_window_type_combobox">
- <property name="width_request">50</property>
+ <widget class="GtkLabel" id="label379">
<property name="visible">True</property>
- <property name="items" translatable="yes">Detached roster with detached chats
-Detached roster with single chat
-Single window for everything
-Detached roster with chat grouped by account
-Detached roster with chat grouped by type</property>
- <signal name="changed" handler="on_one_window_type_combo_changed"/>
+ <property name="xalign">0</property>
+ <property name="xpad">1</property>
+ <property name="label" translatable="yes">_Window behavior:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">one_window_type_combobox</property>
</widget>
<packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
</packing>
</child>
<child>
- <widget class="GtkCheckButton" id="speller_checkbutton">
- <property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">If checked, Gajim will highlight spelling errors in input fields of chat windows. If no language is explicitly set via right click on the input field, the default language will be used for this contact or group chat.</property>
- <property name="label" translatable="yes">_Highlight misspelled words</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="draw_indicator">True</property>
- <signal name="toggled" handler="on_speller_checkbutton_toggled"/>
+ <widget class="GtkComboBox" id="emoticons_combobox">
+ <property name="visible">True</property>
+ <signal name="changed" handler="on_emoticons_combobox_changed"/>
</widget>
<packing>
+ <property name="left_attach">1</property>
<property name="right_attach">2</property>
- <property name="top_attach">4</property>
- <property name="bottom_attach">5</property>
- <property name="x_options">GTK_FILL</property>
</packing>
</child>
<child>
- <widget class="GtkCheckButton" id="xhtml_checkbutton">
+ <widget class="GtkEventBox" id="eventbox5">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">Some messages may include rich content (formatting, colors etc). If checked, Gajim will just display the raw message text.</property>
- <property name="label" translatable="yes">_Ignore rich content in incoming messages</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="draw_indicator">True</property>
- <signal name="toggled" handler="on_xhtml_checkbutton_toggled"/>
+ <property name="tooltip" translatable="yes">If not disabled, Gajim will replace ascii smilies like ':)' with equivalent animated or static graphical emoticons</property>
+ <child>
+ <widget class="GtkLabel" id="label381">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="xpad">1</property>
+ <property name="label" translatable="yes">_Emoticons:</property>
+ <property name="use_underline">True</property>
+ </widget>
+ </child>
</widget>
<packing>
- <property name="right_attach">2</property>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
<property name="x_options">GTK_FILL</property>
</packing>
</child>
@@ -281,46 +271,56 @@
</packing>
</child>
<child>
- <widget class="GtkEventBox" id="eventbox5">
+ <widget class="GtkCheckButton" id="xhtml_checkbutton">
<property name="visible">True</property>
- <property name="tooltip" translatable="yes">If not disabled, Gajim will replace ascii smilies like ':)' with equivalent animated or static graphical emoticons</property>
- <child>
- <widget class="GtkLabel" id="label381">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="xpad">1</property>
- <property name="label" translatable="yes">_Emoticons:</property>
- <property name="use_underline">True</property>
- </widget>
- </child>
+ <property name="can_focus">True</property>
+ <property name="tooltip" translatable="yes">Some messages may include rich content (formatting, colors etc). If checked, Gajim will just display the raw message text.</property>
+ <property name="label" translatable="yes">_Ignore rich content in incoming messages</property>
+ <property name="use_underline">True</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_xhtml_checkbutton_toggled"/>
</widget>
<packing>
+ <property name="right_attach">2</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
<property name="x_options">GTK_FILL</property>
</packing>
</child>
<child>
- <widget class="GtkComboBox" id="emoticons_combobox">
- <property name="visible">True</property>
- <signal name="changed" handler="on_emoticons_combobox_changed"/>
+ <widget class="GtkCheckButton" id="speller_checkbutton">
+ <property name="can_focus">True</property>
+ <property name="tooltip" translatable="yes">If checked, Gajim will highlight spelling errors in input fields of chat windows. If no language is explicitly set via right click on the input field, the default language will be used for this contact or group chat.</property>
+ <property name="label" translatable="yes">_Highlight misspelled words</property>
+ <property name="use_underline">True</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_speller_checkbutton_toggled"/>
</widget>
<packing>
- <property name="left_attach">1</property>
<property name="right_attach">2</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="x_options">GTK_FILL</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label379">
+ <widget class="GtkComboBox" id="one_window_type_combobox">
+ <property name="width_request">50</property>
<property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="xpad">1</property>
- <property name="label" translatable="yes">_Window behavior:</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">one_window_type_combobox</property>
+ <property name="items" translatable="yes">Detached roster with detached chats
+Detached roster with single chat
+Single window for everything
+Detached roster with chat grouped by account
+Detached roster with chat grouped by type</property>
+ <signal name="changed" handler="on_one_window_type_combo_changed"/>
</widget>
<packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
</packing>
</child>
</widget>
@@ -614,35 +614,55 @@
<property name="border_width">6</property>
<property name="left_padding">12</property>
<child>
- <widget class="GtkHBox" id="hbox4">
+ <widget class="GtkVBox" id="vbox3">
<property name="visible">True</property>
<property name="spacing">6</property>
<child>
- <widget class="GtkCheckButton" id="play_sounds_checkbutton">
+ <widget class="GtkHBox" id="hbox4">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">Play _sounds</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="draw_indicator">True</property>
- <signal name="toggled" handler="on_play_sounds_checkbutton_toggled"/>
+ <property name="spacing">6</property>
+ <child>
+ <widget class="GtkCheckButton" id="play_sounds_checkbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Play _sounds</property>
+ <property name="use_underline">True</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_play_sounds_checkbutton_toggled"/>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkButton" id="manage_sounds_button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="label" translatable="yes">Ma_nage...</property>
+ <property name="use_underline">True</property>
+ <property name="response_id">0</property>
+ <signal name="clicked" handler="on_manage_sounds_button_clicked"/>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
</widget>
- <packing>
- <property name="expand">False</property>
- </packing>
</child>
<child>
- <widget class="GtkButton" id="manage_sounds_button">
+ <widget class="GtkCheckButton" id="sound_dnd_checkbutton">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="label" translatable="yes">Ma_nage...</property>
+ <property name="label" translatable="yes">Allow sound when I'm _busy</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
- <signal name="clicked" handler="on_manage_sounds_button_clicked"/>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_sound_dnd_checkbutton_toggled"/>
</widget>
<packing>
- <property name="expand">False</property>
<property name="position">1</property>
</packing>
</child>
@@ -710,67 +730,67 @@
<property name="column_spacing">6</property>
<property name="row_spacing">6</property>
<child>
- <widget class="GtkComboBox" id="outgoing_chat_states_combobox">
+ <widget class="GtkComboBox" id="displayed_chat_states_combobox">
<property name="visible">True</property>
<property name="items" translatable="yes">All chat states
Composing only
Disabled</property>
- <signal name="changed" handler="on_outgoing_chat_states_combobox_changed"/>
+ <signal name="changed" handler="on_displayed_chat_states_combobox_changed"/>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
</packing>
</child>
<child>
- <widget class="GtkEventBox" id="eventbox9">
+ <widget class="GtkEventBox" id="eventbox8">
<property name="visible">True</property>
- <property name="tooltip" translatable="yes">Gajim can send and receive meta-information related to a conversation you may have with a contact. Here you can specify which chatstates you want to send to the other party.</property>
+ <property name="tooltip" translatable="yes">Gajim can send and receive meta-information related to a conversation you may have with a contact. Here you can specify which chatstates you want to display in chat windows.</property>
<child>
- <widget class="GtkLabel" id="label34">
+ <widget class="GtkLabel" id="label33">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">_Send chat state notifications:</property>
+ <property name="label" translatable="yes">_Display chat state notifications:</property>
<property name="use_underline">True</property>
</widget>
</child>
</widget>
<packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
<property name="x_options">GTK_FILL</property>
</packing>
</child>
<child>
- <widget class="GtkEventBox" id="eventbox8">
+ <widget class="GtkEventBox" id="eventbox9">
<property name="visible">True</property>
- <property name="tooltip" translatable="yes">Gajim can send and receive meta-information related to a conversation you may have with a contact. Here you can specify which chatstates you want to display in chat windows.</property>
+ <property name="tooltip" translatable="yes">Gajim can send and receive meta-information related to a conversation you may have with a contact. Here you can specify which chatstates you want to send to the other party.</property>
<child>
- <widget class="GtkLabel" id="label33">
+ <widget class="GtkLabel" id="label34">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">_Display chat state notifications:</property>
+ <property name="label" translatable="yes">_Send chat state notifications:</property>
<property name="use_underline">True</property>
</widget>
</child>
</widget>
<packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
<property name="x_options">GTK_FILL</property>
</packing>
</child>
<child>
- <widget class="GtkComboBox" id="displayed_chat_states_combobox">
+ <widget class="GtkComboBox" id="outgoing_chat_states_combobox">
<property name="visible">True</property>
<property name="items" translatable="yes">All chat states
Composing only
Disabled</property>
- <signal name="changed" handler="on_displayed_chat_states_combobox_changed"/>
+ <signal name="changed" handler="on_outgoing_chat_states_combobox_changed"/>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
</packing>
</child>
</widget>
@@ -834,60 +854,65 @@
<property name="column_spacing">12</property>
<property name="row_spacing">6</property>
<child>
- <widget class="GtkEntry" id="auto_xa_message_entry">
+ <widget class="GtkCheckButton" id="auto_away_checkbutton">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">The auto not available status message. If empty, Gajim will not change the current status message
-$S will be replaced by previous status message
-$T will be replaced by auto-not-available timeout</property>
- <signal name="changed" handler="on_auto_xa_message_entry_changed"/>
+ <property name="tooltip" translatable="yes">If checked, Gajim will change status to Away when the computer is unused.</property>
+ <property name="label" translatable="yes">_Away after:</property>
+ <property name="use_underline">True</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_auto_away_checkbutton_toggled"/>
</widget>
<packing>
- <property name="left_attach">3</property>
- <property name="right_attach">4</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="auto_xa_checkbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip" translatable="yes">If checked, Gajim will change status to Not Available when the computer has not been used even longer</property>
+ <property name="label" translatable="yes">_Not available after:</property>
+ <property name="use_underline">True</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_auto_xa_checkbutton_toggled"/>
+ </widget>
+ <packing>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkEntry" id="auto_away_message_entry">
+ <widget class="GtkLabel" id="label77">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">The auto away status message. If empty, Gajim will not change the current status message
-$S will be replaced by previous status message
-$T will be replaced by auto-away timeout</property>
- <signal name="changed" handler="on_auto_away_message_entry_changed"/>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">minutes</property>
</widget>
<packing>
- <property name="left_attach">3</property>
- <property name="right_attach">4</property>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkAlignment" id="alignment34">
+ <widget class="GtkLabel" id="label78">
<property name="visible">True</property>
- <property name="xalign">1</property>
- <property name="xscale">0</property>
- <child>
- <widget class="GtkSpinButton" id="auto_xa_time_spinbutton">
- <property name="width_request">50</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="adjustment">20 1 1440 1 10 10</property>
- <property name="climb_rate">1</property>
- <signal name="value_changed" handler="on_auto_xa_time_spinbutton_value_changed"/>
- </widget>
- </child>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">minutes</property>
</widget>
<packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
+ <property name="y_options"></property>
</packing>
</child>
<child>
@@ -914,67 +939,62 @@
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label78">
+ <widget class="GtkAlignment" id="alignment34">
<property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">minutes</property>
+ <property name="xalign">1</property>
+ <property name="xscale">0</property>
+ <child>
+ <widget class="GtkSpinButton" id="auto_xa_time_spinbutton">
+ <property name="width_request">50</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">20 1 1440 1 10 10</property>
+ <property name="climb_rate">1</property>
+ <signal name="value_changed" handler="on_auto_xa_time_spinbutton_value_changed"/>
+ </widget>
+ </child>
</widget>
<packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
+ <property name="y_options">GTK_FILL</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label77">
+ <widget class="GtkEntry" id="auto_away_message_entry">
<property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">minutes</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip" translatable="yes">The auto away status message. If empty, Gajim will not change the current status message
+$S will be replaced by previous status message
+$T will be replaced by auto-away timeout</property>
+ <signal name="changed" handler="on_auto_away_message_entry_changed"/>
</widget>
<packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="x_options">GTK_FILL</property>
+ <property name="left_attach">3</property>
+ <property name="right_attach">4</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkCheckButton" id="auto_xa_checkbutton">
+ <widget class="GtkEntry" id="auto_xa_message_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">If checked, Gajim will change status to Not Available when the computer has not been used even longer</property>
- <property name="label" translatable="yes">_Not available after:</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="draw_indicator">True</property>
- <signal name="toggled" handler="on_auto_xa_checkbutton_toggled"/>
+ <property name="tooltip" translatable="yes">The auto not available status message. If empty, Gajim will not change the current status message
+$S will be replaced by previous status message
+$T will be replaced by auto-not-available timeout</property>
+ <signal name="changed" handler="on_auto_xa_message_entry_changed"/>
</widget>
<packing>
+ <property name="left_attach">3</property>
+ <property name="right_attach">4</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
- <child>
- <widget class="GtkCheckButton" id="auto_away_checkbutton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">If checked, Gajim will change status to Away when the computer is unused.</property>
- <property name="label" translatable="yes">_Away after:</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="draw_indicator">True</property>
- <signal name="toggled" handler="on_auto_away_checkbutton_toggled"/>
- </widget>
- <packing>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
</widget>
</child>
</widget>
@@ -1132,24 +1152,40 @@
<placeholder/>
</child>
<child>
- <widget class="GtkScrolledWindow" id="scrolledwindow23">
+ <widget class="GtkVButtonBox" id="vbuttonbox3">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
- <property name="vscrollbar_policy">GTK_POLICY_NEVER</property>
- <property name="shadow_type">GTK_SHADOW_IN</property>
+ <property name="spacing">5</property>
+ <property name="layout_style">GTK_BUTTONBOX_START</property>
<child>
- <widget class="GtkTextView" id="msg_textview">
+ <widget class="GtkButton" id="new_msg_button">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="border_width">3</property>
- <property name="wrap_mode">GTK_WRAP_WORD</property>
+ <property name="can_default">True</property>
+ <property name="label">gtk-new</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">0</property>
+ <signal name="clicked" handler="on_new_msg_button_clicked"/>
</widget>
</child>
+ <child>
+ <widget class="GtkButton" id="delete_msg_button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="label">gtk-delete</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">0</property>
+ <signal name="clicked" handler="on_delete_msg_button_clicked"/>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
</widget>
<packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
<property name="y_options">GTK_FILL</property>
</packing>
</child>
@@ -1172,40 +1208,24 @@
</widget>
</child>
<child>
- <widget class="GtkVButtonBox" id="vbuttonbox3">
+ <widget class="GtkScrolledWindow" id="scrolledwindow23">
<property name="visible">True</property>
- <property name="spacing">5</property>
- <property name="layout_style">GTK_BUTTONBOX_START</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+ <property name="vscrollbar_policy">GTK_POLICY_NEVER</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
<child>
- <widget class="GtkButton" id="new_msg_button">
+ <widget class="GtkTextView" id="msg_textview">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="can_default">True</property>
- <property name="label">gtk-new</property>
- <property name="use_stock">True</property>
- <property name="response_id">0</property>
- <signal name="clicked" handler="on_new_msg_button_clicked"/>
+ <property name="border_width">3</property>
+ <property name="wrap_mode">GTK_WRAP_WORD</property>
</widget>
</child>
- <child>
- <widget class="GtkButton" id="delete_msg_button">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="can_default">True</property>
- <property name="label">gtk-delete</property>
- <property name="use_stock">True</property>
- <property name="response_id">0</property>
- <signal name="clicked" handler="on_delete_msg_button_clicked"/>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
</widget>
<packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="x_options">GTK_FILL</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
<property name="y_options">GTK_FILL</property>
</packing>
</child>
@@ -1271,14 +1291,15 @@
<placeholder/>
</child>
<child>
- <widget class="GtkLabel" id="label4">
+ <widget class="GtkFontButton" id="conversation_fontbutton">
<property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="label" translatable="yes">Chat message:</property>
+ <property name="can_focus">True</property>
+ <property name="response_id">0</property>
+ <signal name="font_set" handler="on_conversation_fontbutton_font_set"/>
</widget>
<packing>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
</packing>
</child>
<child>
@@ -1299,15 +1320,14 @@
</packing>
</child>
<child>
- <widget class="GtkFontButton" id="conversation_fontbutton">
+ <widget class="GtkLabel" id="label4">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="response_id">0</property>
- <signal name="font_set" handler="on_conversation_fontbutton_font_set"/>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label" translatable="yes">Chat message:</property>
</widget>
<packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
</packing>
</child>
</widget>
@@ -1357,43 +1377,35 @@
<placeholder/>
</child>
<child>
- <widget class="GtkLabel" id="label249">
+ <widget class="GtkCheckButton" id="transports_iconsets_checkbutton">
<property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">T_heme:</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">theme_combobox</property>
- </widget>
- <packing>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <widget class="GtkButton" id="manage_theme_button">
- <property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">Configure color and font of the interface</property>
- <property name="label" translatable="yes">Ma_nage...</property>
+ <property name="tooltip" translatable="yes">If checked, Gajim will use protocol-specific status icons. (eg. A contact from MSN will have the equivalent msn icon for status online, away, busy, etc...)</property>
+ <property name="label" translatable="yes">Use _transports icons</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
- <signal name="clicked" handler="on_manage_theme_button_clicked"/>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_transports_iconsets_checkbutton_toggled"/>
</widget>
<packing>
- <property name="left_attach">2</property>
+ <property name="left_attach">1</property>
<property name="right_attach">3</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
</packing>
</child>
<child>
- <widget class="GtkComboBox" id="theme_combobox">
+ <widget class="GtkComboBox" id="iconset_combobox">
<property name="visible">True</property>
- <signal name="changed" handler="on_theme_combobox_changed"/>
+ <signal name="changed" handler="on_iconset_combobox_changed"/>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
</packing>
</child>
<child>
@@ -1412,37 +1424,45 @@
</packing>
</child>
<child>
- <widget class="GtkComboBox" id="iconset_combobox">
+ <widget class="GtkComboBox" id="theme_combobox">
<property name="visible">True</property>
- <signal name="changed" handler="on_iconset_combobox_changed"/>
+ <signal name="changed" handler="on_theme_combobox_changed"/>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
</packing>
</child>
<child>
- <widget class="GtkCheckButton" id="transports_iconsets_checkbutton">
+ <widget class="GtkButton" id="manage_theme_button">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">If checked, Gajim will use protocol-specific status icons. (eg. A contact from MSN will have the equivalent msn icon for status online, away, busy, etc...)</property>
- <property name="label" translatable="yes">Use _transports icons</property>
+ <property name="tooltip" translatable="yes">Configure color and font of the interface</property>
+ <property name="label" translatable="yes">Ma_nage...</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
- <property name="draw_indicator">True</property>
- <signal name="toggled" handler="on_transports_iconsets_checkbutton_toggled"/>
+ <signal name="clicked" handler="on_manage_theme_button_clicked"/>
</widget>
<packing>
- <property name="left_attach">1</property>
+ <property name="left_attach">2</property>
<property name="right_attach">3</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
</packing>
</child>
+ <child>
+ <widget class="GtkLabel" id="label249">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">T_heme:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">theme_combobox</property>
+ </widget>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
</widget>
</child>
</widget>
@@ -1482,119 +1502,65 @@
<property name="column_spacing">12</property>
<property name="row_spacing">6</property>
<child>
- <widget class="GtkHBox" id="hbox3022">
+ <widget class="GtkLabel" id="label72">
<property name="visible">True</property>
- <child>
- <widget class="GtkLabel" id="label383">
- <property name="visible">True</property>
- </widget>
- <packing>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkButton" id="reset_colors_button">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="focus_on_click">False</property>
- <property name="response_id">0</property>
- <signal name="clicked" handler="on_reset_colors_button_clicked"/>
- <child>
- <widget class="GtkAlignment" id="alignment52">
- <property name="visible">True</property>
- <property name="xscale">0</property>
- <property name="yscale">0</property>
- <child>
- <widget class="GtkHBox" id="hbox2936">
- <property name="visible">True</property>
- <property name="spacing">2</property>
- <child>
- <widget class="GtkImage" id="image439">
- <property name="visible">True</property>
- <property name="stock">gtk-revert-to-saved</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label217">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Reset to Default Colors</property>
- <property name="use_underline">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">_Incoming message:</property>
+ <property name="use_underline">True</property>
+ <property name="justify">GTK_JUSTIFY_CENTER</property>
+ <property name="wrap">True</property>
+ <property name="mnemonic_widget">incoming_msg_colorbutton</property>
</widget>
<packing>
- <property name="right_attach">4</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
<property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkColorButton" id="url_msg_colorbutton">
+ <widget class="GtkColorButton" id="incoming_msg_colorbutton">
<property name="visible">True</property>
<property name="can_focus">True</property>
+ <property name="has_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="has_default">True</property>
<property name="response_id">0</property>
- <signal name="color_set" handler="on_url_msg_colorbutton_color_set"/>
+ <signal name="color_set" handler="on_incoming_msg_colorbutton_color_set"/>
</widget>
<packing>
- <property name="left_attach">3</property>
- <property name="right_attach">4</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="x_options"></property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label371">
+ <widget class="GtkLabel" id="label70">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">_URL highlight:</property>
+ <property name="label" translatable="yes">_Outgoing message:</property>
<property name="use_underline">True</property>
- <property name="mnemonic_widget">url_msg_colorbutton</property>
+ <property name="justify">GTK_JUSTIFY_CENTER</property>
+ <property name="wrap">True</property>
+ <property name="mnemonic_widget">outgoing_msg_colorbutton</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkColorButton" id="status_msg_colorbutton">
+ <widget class="GtkColorButton" id="outgoing_msg_colorbutton">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="response_id">0</property>
- <signal name="color_set" handler="on_status_msg_colorbutton_color_set"/>
+ <signal name="color_set" handler="on_outgoing_msg_colorbutton_color_set"/>
</widget>
<packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options"></property>
+ <property name="left_attach">3</property>
+ <property name="right_attach">4</property>
+ <property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
@@ -1616,66 +1582,120 @@
</packing>
</child>
<child>
- <widget class="GtkColorButton" id="outgoing_msg_colorbutton">
+ <widget class="GtkColorButton" id="status_msg_colorbutton">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="response_id">0</property>
- <signal name="color_set" handler="on_outgoing_msg_colorbutton_color_set"/>
+ <signal name="color_set" handler="on_status_msg_colorbutton_color_set"/>
</widget>
<packing>
- <property name="left_attach">3</property>
- <property name="right_attach">4</property>
- <property name="x_options">GTK_FILL</property>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options"></property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label70">
+ <widget class="GtkLabel" id="label371">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">_Outgoing message:</property>
+ <property name="label" translatable="yes">_URL highlight:</property>
<property name="use_underline">True</property>
- <property name="justify">GTK_JUSTIFY_CENTER</property>
- <property name="wrap">True</property>
- <property name="mnemonic_widget">outgoing_msg_colorbutton</property>
+ <property name="mnemonic_widget">url_msg_colorbutton</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkColorButton" id="incoming_msg_colorbutton">
+ <widget class="GtkColorButton" id="url_msg_colorbutton">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="has_focus">True</property>
- <property name="can_default">True</property>
- <property name="has_default">True</property>
<property name="response_id">0</property>
- <signal name="color_set" handler="on_incoming_msg_colorbutton_color_set"/>
+ <signal name="color_set" handler="on_url_msg_colorbutton_color_set"/>
</widget>
<packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="x_options"></property>
+ <property name="left_attach">3</property>
+ <property name="right_attach">4</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label72">
+ <widget class="GtkHBox" id="hbox3022">
<property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">_Incoming message:</property>
- <property name="use_underline">True</property>
- <property name="justify">GTK_JUSTIFY_CENTER</property>
- <property name="wrap">True</property>
- <property name="mnemonic_widget">incoming_msg_colorbutton</property>
+ <child>
+ <widget class="GtkLabel" id="label383">
+ <property name="visible">True</property>
+ </widget>
+ <packing>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkButton" id="reset_colors_button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="focus_on_click">False</property>
+ <property name="response_id">0</property>
+ <signal name="clicked" handler="on_reset_colors_button_clicked"/>
+ <child>
+ <widget class="GtkAlignment" id="alignment52">
+ <property name="visible">True</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <child>
+ <widget class="GtkHBox" id="hbox2936">
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
+ <child>
+ <widget class="GtkImage" id="image439">
+ <property name="visible">True</property>
+ <property name="stock">gtk-revert-to-saved</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label217">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Reset to Default Colors</property>
+ <property name="use_underline">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
</widget>
<packing>
+ <property name="right_attach">4</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
<property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
</packing>
</child>
</widget>
@@ -1762,85 +1782,85 @@
<property name="column_spacing">12</property>
<property name="row_spacing">6</property>
<child>
- <widget class="GtkLabel" id="label199">
+ <widget class="GtkEntry" id="custom_file_manager_entry">
<property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">_Browser:</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">custom_browser_entry</property>
+ <property name="can_focus">True</property>
+ <signal name="changed" handler="on_custom_file_manager_entry_changed"/>
</widget>
<packing>
- <property name="x_options">GTK_FILL</property>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label200">
+ <widget class="GtkLabel" id="label355">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">_Mail client:</property>
+ <property name="label" translatable="yes">_File manager:</property>
<property name="use_underline">True</property>
- <property name="mnemonic_widget">custom_mail_client_entry</property>
+ <property name="mnemonic_widget">custom_file_manager_entry</property>
</widget>
<packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkEntry" id="custom_mail_client_entry">
+ <widget class="GtkEntry" id="custom_browser_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <signal name="changed" handler="on_custom_mail_client_entry_changed"/>
+ <signal name="changed" handler="on_custom_browser_entry_changed"/>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkEntry" id="custom_browser_entry">
+ <widget class="GtkEntry" id="custom_mail_client_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <signal name="changed" handler="on_custom_browser_entry_changed"/>
+ <signal name="changed" handler="on_custom_mail_client_entry_changed"/>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label355">
+ <widget class="GtkLabel" id="label200">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">_File manager:</property>
+ <property name="label" translatable="yes">_Mail client:</property>
<property name="use_underline">True</property>
- <property name="mnemonic_widget">custom_file_manager_entry</property>
+ <property name="mnemonic_widget">custom_mail_client_entry</property>
</widget>
<packing>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkEntry" id="custom_file_manager_entry">
+ <widget class="GtkLabel" id="label199">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <signal name="changed" handler="on_custom_file_manager_entry_changed"/>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">_Browser:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">custom_browser_entry</property>
</widget>
<packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
@@ -1904,19 +1924,18 @@
<property name="column_spacing">6</property>
<property name="row_spacing">6</property>
<child>
- <widget class="GtkCheckButton" id="log_encrypted_chats_checkbutton">
+ <widget class="GtkCheckButton" id="ignore_events_from_unknown_contacts_checkbutton">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">If checked, Gajim will keep logs for encrypted messages. Please note that when using E2E encryption the remote party has to agree on logging, else the messages will not be logged.</property>
- <property name="label" translatable="yes">Log _encrypted chat session</property>
+ <property name="tooltip" translatable="yes">If checked, Gajim will ignore incoming events from unauthorized contacts. Use with caution, because it blocks all messages from any contact that is not in the roster</property>
+ <property name="label" translatable="yes">_Ignore events from contacts not in the roster</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<property name="draw_indicator">True</property>
- <signal name="toggled" handler="on_log_encrypted_chats_checkbutton_toggled"/>
+ <signal name="toggled" handler="on_ignore_events_from_unknown_contacts_checkbutton_toggled"/>
</widget>
<packing>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
</packing>
</child>
<child>
@@ -1936,18 +1955,19 @@
</packing>
</child>
<child>
- <widget class="GtkCheckButton" id="ignore_events_from_unknown_contacts_checkbutton">
+ <widget class="GtkCheckButton" id="log_encrypted_chats_checkbutton">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">If checked, Gajim will ignore incoming events from unauthorized contacts. Use with caution, because it blocks all messages from any contact that is not in the roster</property>
- <property name="label" translatable="yes">_Ignore events from contacts not in the roster</property>
+ <property name="tooltip" translatable="yes">If checked, Gajim will keep logs for encrypted messages. Please note that when using E2E encryption the remote party has to agree on logging, else the messages will not be logged.</property>
+ <property name="label" translatable="yes">Log _encrypted chat session</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<property name="draw_indicator">True</property>
- <signal name="toggled" handler="on_ignore_events_from_unknown_contacts_checkbutton_toggled"/>
+ <signal name="toggled" handler="on_log_encrypted_chats_checkbutton_toggled"/>
</widget>
<packing>
- <property name="x_options">GTK_FILL</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
</packing>
</child>
</widget>
Copied: branches/osx_newbuildsys/data/pixmaps/events/subscription_request.png (from rev 11089, trunk/data/pixmaps/events/subscription_request.png)
===================================================================
(Binary files differ)
Copied: branches/osx_newbuildsys/data/pixmaps/events/unsubscribed.png (from rev 11089, trunk/data/pixmaps/events/unsubscribed.png)
===================================================================
(Binary files differ)
Modified: branches/osx_newbuildsys/src/common/config.py
===================================================================
--- branches/osx_newbuildsys/src/common/config.py 2009-02-14 12:06:05 UTC (rev 11094)
+++ branches/osx_newbuildsys/src/common/config.py 2009-02-14 12:09:23 UTC (rev 11095)
@@ -79,6 +79,7 @@
'notify_on_signout': [ opt_bool, False ],
'notify_on_new_message': [ opt_bool, True ],
'autopopupaway': [ opt_bool, False ],
+ 'sounddnd': [ opt_bool, False, _('Play sound when user is busy')],
'use_notif_daemon': [ opt_bool, True , _('Use D-Bus and Notification-Daemon to show notifications') ],
'showoffline': [ opt_bool, False ],
'show_only_chat_and_online': [ opt_bool, False, _('Show only online and free for chat contacts in roster.')],
Modified: branches/osx_newbuildsys/src/common/connection.py
===================================================================
--- branches/osx_newbuildsys/src/common/connection.py 2009-02-14 12:06:05 UTC (rev 11094)
+++ branches/osx_newbuildsys/src/common/connection.py 2009-02-14 12:09:23 UTC (rev 11095)
@@ -167,6 +167,7 @@
# request vcard or os info... to a real JID but act as if it comes from
# the fake jid
self.groupchat_jids = {} # {ID : groupchat_jid}
+ self.pasword_callback = None
self.on_connect_success = None
self.on_connect_failure = None
@@ -1815,6 +1816,19 @@
q.setTagData('password',password)
self.connection.send(iq)
+ def get_password(self, callback):
+ if self.password:
+ callback(self.password)
+ return
+ self.pasword_callback = callback
+ self.dispatch('PASSWORD_REQUIRED', None)
+
+ def set_password(self, password):
+ self.password = password
+ if self.pasword_callback:
+ self.pasword_callback(password)
+ self.pasword_callback = None
+
def unregister_account(self, on_remove_success):
# no need to write this as a class method and keep the value of
# on_remove_success as a class property as pass it as an argument
Modified: branches/osx_newbuildsys/src/common/events.py
===================================================================
--- branches/osx_newbuildsys/src/common/events.py 2009-02-14 12:06:05 UTC (rev 11094)
+++ branches/osx_newbuildsys/src/common/events.py 2009-02-14 12:09:23 UTC (rev 11095)
@@ -28,11 +28,12 @@
class Event:
'''Information concerning each event'''
- def __init__(self, type_, time_, parameters, show_in_roster = False,
- show_in_systray = True):
+ def __init__(self, type_, time_, parameters, show_in_roster=False,
+ show_in_systray=True):
''' type_ in chat, normal, file-request, file-error, file-completed,
file-request-error, file-send-error, file-stopped, gc_msg, pm,
- printed_chat, printed_gc_msg, printed_marked_gc_msg, printed_pm
+ printed_chat, printed_gc_msg, printed_marked_gc_msg, printed_pm,
+ gc-invitation, subscription_request, unsubscribed
parameters is (per type_):
chat, normal, pm: [message, subject, kind, time, encrypted, resource,
msg_id]
@@ -41,7 +42,11 @@
gc_msg: None
printed_chat: control
printed_*: None
- messages that are already printed in chat, but not read'''
+ messages that are already printed in chat, but not read
+ gc-invitation: [room_jid, reason, password, is_continued]
+ subscription_request: [text, nick]
+ unsubscribed: contact
+ '''
self.type_ = type_
self.time_ = time_
self.parameters = parameters
Modified: branches/osx_newbuildsys/src/common/helpers.py
===================================================================
--- branches/osx_newbuildsys/src/common/helpers.py 2009-02-14 12:06:05 UTC (rev 11094)
+++ branches/osx_newbuildsys/src/common/helpers.py 2009-02-14 12:09:23 UTC (rev 11095)
@@ -1022,7 +1022,7 @@
return True
return False
-def allow_sound_notification(sound_event, advanced_notif_num = None):
+def allow_sound_notification(account, sound_event, advanced_notif_num=None):
if advanced_notif_num is not None:
sound = gajim.config.get_per('notifications', str(advanced_notif_num),
'sound')
@@ -1030,7 +1030,9 @@
return True
if sound == 'no':
return False
- if gajim.config.get_per('soundevents', sound_event, 'enabled'):
+ if gajim.config.get('sounddnd') or gajim.connections[account].connected != \
+ gajim.SHOW_LIST.index('dnd') and gajim.config.get_per('soundevents',
+ sound_event, 'enabled'):
return True
return False
Modified: branches/osx_newbuildsys/src/common/xmpp/auth_nb.py
===================================================================
--- branches/osx_newbuildsys/src/common/xmpp/auth_nb.py 2009-02-14 12:06:05 UTC (rev 11094)
+++ branches/osx_newbuildsys/src/common/xmpp/auth_nb.py 2009-02-14 12:09:23 UTC (rev 11095)
@@ -212,13 +212,10 @@
self.mechanism = 'DIGEST-MD5'
elif 'PLAIN' in self.mecs:
self.mecs.remove('PLAIN')
- sasl_data = u'%s\x00%s\x00%s' % (self.username + '@' + \
- self._owner.Server, self.username, self.password)
- sasl_data = sasl_data.encode('utf-8').encode('base64').replace(
- '\n','')
- node = Node('auth', attrs={'xmlns': NS_SASL, 'mechanism': 'PLAIN'},
- payload=[sasl_data])
self.mechanism = 'PLAIN'
+ self._owner._caller.get_password(self.set_password)
+ self.startsasl = SASL_IN_PROCESS
+ raise NodeProcessed
else:
self.startsasl = SASL_FAILURE
log.error('I can only use DIGEST-MD5, GSSAPI and PLAIN mecanisms.')
@@ -297,36 +294,21 @@
if 'qop' in chal and ((isinstance(chal['qop'], str) and \
chal['qop'] =='auth') or (isinstance(chal['qop'], list) and 'auth' in \
chal['qop'])):
- resp = {}
- resp['username'] = self.username
+ self.resp = {}
+ self.resp['username'] = self.username
if self.realm:
- resp['realm'] = self.realm
+ self.resp['realm'] = self.realm
else:
- resp['realm'] = self._owner.Server
- resp['nonce'] = chal['nonce']
- resp['cnonce'] = ''.join("%x" % randint(0, 2**28) for randint in
+ self.resp['realm'] = self._owner.Server
+ self.resp['nonce'] = chal['nonce']
+ self.resp['cnonce'] = ''.join("%x" % randint(0, 2**28) for randint in
itertools.repeat(random.randint, 7))
- resp['nc'] = ('00000001')
- resp['qop'] = 'auth'
- resp['digest-uri'] = 'xmpp/' + self._owner.Server
- A1=C([H(C([resp['username'], resp['realm'], self.password])),
- resp['nonce'], resp['cnonce']])
- A2=C(['AUTHENTICATE',resp['digest-uri']])
- response= HH(C([HH(A1), resp['nonce'], resp['nc'], resp['cnonce'],
- resp['qop'], HH(A2)]))
- resp['response'] = response
- resp['charset'] = 'utf-8'
- sasl_data = u''
- for key in ('charset', 'username', 'realm', 'nonce', 'nc', 'cnonce',
- 'digest-uri', 'response', 'qop'):
- if key in ('nc','qop','response','charset'):
- sasl_data += u"%s=%s," % (key, resp[key])
- else:
- sasl_data += u'%s="%s",' % (key, resp[key])
- sasl_data = sasl_data[:-1].encode('utf-8').encode('base64').replace(
- '\r','').replace('\n','')
- node = Node('response', attrs={'xmlns':NS_SASL}, payload=[sasl_data])
- self._owner.send(str(node))
+ self.resp['nc'] = ('00000001')
+ self.resp['qop'] = 'auth'
+ self.resp['digest-uri'] = 'xmpp/' + self._owner.Server
+ self.resp['charset'] = 'utf-8'
+ # Password is now required
+ self._owner._caller.get_password(self.set_password)
elif 'rspauth' in chal:
self._owner.send(str(Node('response', attrs={'xmlns':NS_SASL})))
else:
@@ -335,6 +317,34 @@
if self.on_sasl:
self.on_sasl()
raise NodeProcessed
+
+ def set_password(self, password):
+ self.password = password
+ if self.mechanism == 'DIGEST-MD5':
+ A1 = C([H(C([self.resp['username'], self.resp['realm'],
+ self.password])), self.resp['nonce'], self.resp['cnonce']])
+ A2 = C(['AUTHENTICATE', self.resp['digest-uri']])
+ response= HH(C([HH(A1), self.resp['nonce'], self.resp['nc'],
+ self.resp['cnonce'], self.resp['qop'], HH(A2)]))
+ self.resp['response'] = response
+ sasl_data = u''
+ for key in ('charset', 'username', 'realm', 'nonce', 'nc', 'cnonce',
+ 'digest-uri', 'response', 'qop'):
+ if key in ('nc','qop','response','charset'):
+ sasl_data += u"%s=%s," % (key, self.resp[key])
+ else:
+ sasl_data += u'%s="%s",' % (key, self.resp[key])
+ sasl_data = sasl_data[:-1].encode('utf-8').encode('base64').replace(
+ '\r', '').replace('\n', '')
+ node = Node('response', attrs={'xmlns':NS_SASL}, payload=[sasl_data])
+ elif self.mechanism == 'PLAIN':
+ sasl_data = u'%s\x00%s\x00%s' % (self.username + '@' + \
+ self._owner.Server, self.username, self.password)
+ sasl_data = sasl_data.encode('utf-8').encode('base64').replace(
+ '\n', '')
+ node = Node('auth', attrs={'xmlns': NS_SASL, 'mechanism': 'PLAIN'},
+ payload=[sasl_data])
+ self._owner.send(str(node))
class NonBlockingNonSASL(PlugIn):
Modified: branches/osx_newbuildsys/src/common/xmpp/transports_nb.py
===================================================================
--- branches/osx_newbuildsys/src/common/xmpp/transports_nb.py 2009-02-14 12:06:05 UTC (rev 11094)
+++ branches/osx_newbuildsys/src/common/xmpp/transports_nb.py 2009-02-14 12:09:23 UTC (rev 11095)
@@ -529,7 +529,7 @@
return
if errnum:
- log.error("Connection to %s:%s lost: %s %s" % (self.server, self.port,
+ log.info("Connection to %s:%s lost: %s %s" % (self.server, self.port,
errnum, errstr), exc_info=True)
self.disconnect()
return
Modified: branches/osx_newbuildsys/src/config.py
===================================================================
--- branches/osx_newbuildsys/src/config.py 2009-02-14 12:06:05 UTC (rev 11094)
+++ branches/osx_newbuildsys/src/config.py 2009-02-14 12:09:23 UTC (rev 11095)
@@ -87,6 +87,7 @@
'notify_on_signout_checkbutton')
self.auto_popup_away_checkbutton = self.xml.get_widget(
'auto_popup_away_checkbutton')
+ self.sound_dnd_checkbutton = self.xml.get_widget('sound_dnd_checkbutton')
self.auto_away_checkbutton = self.xml.get_widget('auto_away_checkbutton')
self.auto_away_time_spinbutton = self.xml.get_widget(
'auto_away_time_spinbutton')
@@ -301,6 +302,10 @@
st = gajim.config.get('autopopupaway')
self.auto_popup_away_checkbutton.set_active(st)
+ # sounddnd
+ st = gajim.config.get('sounddnd')
+ self.sound_dnd_checkbutton.set_active(st)
+
# Systray
systray_combobox = self.xml.get_widget('systray_combobox')
if gajim.config.get('trayicon') == 'never':
@@ -764,6 +769,9 @@
def on_auto_popup_away_checkbutton_toggled(self, widget):
self.on_checkbutton_toggled(widget, 'autopopupaway')
+ def on_sound_dnd_checkbutton_toggled(self, widget):
+ self.on_checkbutton_toggled(widget, 'sounddnd')
+
def on_systray_combobox_changed(self, widget):
active = widget.get_active()
if active == 0:
Modified: branches/osx_newbuildsys/src/dialogs.py
===================================================================
--- branches/osx_newbuildsys/src/dialogs.py 2009-02-14 12:06:05 UTC (rev 11094)
+++ branches/osx_newbuildsys/src/dialogs.py 2009-02-14 12:09:23 UTC (rev 11095)
@@ -1644,6 +1644,9 @@
def on_deny_button_clicked(self, widget):
'''refuse the request'''
gajim.connections[self.account].refuse_authorization(self.jid)
+ contact = gajim.contacts.get_contact(self.account, self.jid)
+ if contact and _('Not in Roster') in contact.get_shown_groups():
+ gajim.interface.roster.remove_contact(self.jid, self.account)
self.window.destroy()
def on_actions_button_clicked(self, widget):
Modified: branches/osx_newbuildsys/src/gajim.py
===================================================================
--- branches/osx_newbuildsys/src/gajim.py 2009-02-14 12:06:05 UTC (rev 11094)
+++ branches/osx_newbuildsys/src/gajim.py 2009-02-14 12:09:23 UTC (rev 11095)
@@ -272,6 +272,7 @@
from common import helpers
from common import optparser
from common import dataforms
+from common import passwords
if verbose: gajim.verbose = True
del verbose
@@ -966,10 +967,26 @@
def handle_event_subscribe(self, account, array):
#('SUBSCRIBE', account, (jid, text, user_nick)) user_nick is JEP-0172
- dialogs.SubscriptionRequestWindow(array[0], array[1], account, array[2])
if self.remote_ctrl:
self.remote_ctrl.raise_signal('Subscribe', (account, array))
+ jid = array[0]
+ text = array[1]
+ nick = array[2]
+ if helpers.allow_popup_window(account) or not self.systray_enabled:
+ dialogs.SubscriptionRequestWindow(jid, text, account, nick)
+ return
+
+ self.add_event(account, jid, 'subscription_request', (text, nick))
+
+ if helpers.allow_showing_notification(account):
+ path = os.path.join(gajim.DATA_DIR, 'pixmaps', 'events',
+ 'subscription_request.png')
+ path = gtkgui_helpers.get_path_to_generic_or_avatar(path)
+ event_type = _('Subscription request')
+ notify.popup(event_type, jid, account, 'subscription_request', path,
+ event_type, jid)
+
def handle_event_subscribed(self, account, array):
#('SUBSCRIBED', account, (jid, resource))
jid = array[0]
@@ -999,7 +1016,20 @@
if self.remote_ctrl:
self.remote_ctrl.raise_signal('Subscribed', (account, array))
+ def show_unsubscribed_dialog(self, account, contact):
+ def on_yes(is_checked, list_):
+ self.roster.on_req_usub(None, list_)
+ list_ = [(contact, account)]
+ dialogs.YesNoDialog(
+ _('Contact "%s" removed subscription from you') % contact.jid,
+ _('You will always see him or her as offline.\nDo you want to '
+ 'remove him or her from your contact list?'),
+ on_response_yes=(on_yes, list_))
+ # FIXME: Per RFC 3921, we can "deny" ack as well, but the GUI does
+ # not show deny
+
def handle_event_unsubscribed(self, account, jid):
+ #('UNSUBSCRIBED', account, jid)
gajim.connections[account].ack_unsubscribed(jid)
if self.remote_ctrl:
self.remote_ctrl.raise_signal('Unsubscribed', (account, jid))
@@ -1007,15 +1037,20 @@
contact = gajim.contacts.get_first_contact_from_jid(account, jid)
if not contact:
return
- def on_yes(is_checked, list_):
- self.roster.on_req_usub(None, list_)
- list_ = [(contact, account)]
- dialogs.YesNoDialog(
- _('Contact "%s" removed subscription from you') % jid,
- _('You will always see him or her as offline.\nDo you want to remove him or her from your contact list?'),
- on_response_yes=(on_yes, list_))
- # FIXME: Per RFC 3921, we can "deny" ack as well, but the GUI does not show deny
+ if helpers.allow_popup_window(account) or not self.systray_enabled:
+ self.show_unsubscribed_dialog(account, contact)
+
+ self.add_event(account, jid, 'unsubscribed', contact)
+
+ if helpers.allow_showing_notification(account):
+ path = os.path.join(gajim.DATA_DIR, 'pixmaps', 'events',
+ 'unsubscribed.png')
+ path = gtkgui_helpers.get_path_to_generic_or_avatar(path)
+ event_type = _('Unsubscribed')
+ notify.popup(event_type, jid, account, 'unsubscribed', path,
+ event_type, jid)
+
def handle_event_agent_info_error(self, account, agent):
#('AGENT_ERROR_INFO', account, (agent))
try:
@@ -1495,6 +1530,28 @@
self.gpg_passphrase[keyid] = request
request.add_callback(account, callback)
+ def handle_event_password_required(self, account, array):
+ #('PASSWORD_REQUIRED', account, None)
+ text = _('Enter your password for account %s') % account
+ if passwords.USER_HAS_GNOMEKEYRING and \
+ not passwords.USER_USES_GNOMEKEYRING:
+ text += '\n' + _('Gnome Keyring is installed but not \
+ correctly started (environment variable probably not \
+ correctly set)')
+
+ def on_ok(passphrase, save):
+ if save:
+ gajim.config.set_per('accounts', account, 'savepass', True)
+ passwords.save_password(account, passphrase)
+ gajim.connections[account].set_password(passphrase)
+
+ def on_cancel():
+ self.roster.set_state(account, 'offline')
+ self.roster.update_status_combobox()
+
+ dialogs.PassphraseDialog(_('Password Required'), text, _('Save password'),
+ ok_handler=on_ok, cancel_handler=on_cancel)
+
def handle_event_roster_info(self, account, array):
#('ROSTER_INFO', account, (jid, name, sub, ask, groups))
jid = array[0]
@@ -2235,6 +2292,7 @@
self.handle_event_unique_room_id_unsupported,
'UNIQUE_ROOM_ID_SUPPORTED': self.handle_event_unique_room_id_supported,
'GPG_PASSWORD_REQUIRED': self.handle_event_gpg_password_required,
+ 'PASSWORD_REQUIRED': self.handle_event_password_required,
'SSL_ERROR': self.handle_event_ssl_error,
'FINGERPRINT_ERROR': self.handle_event_fingerprint_error,
'PLAIN_CONNECTION': self.handle_event_plain_connection,
@@ -2263,8 +2321,8 @@
show_in_roster = notify.get_show_in_roster(event_type, account, jid)
show_in_systray = notify.get_show_in_systray(event_type, account, jid)
event = gajim.events.create_event(type_, event_args,
- show_in_roster = show_in_roster,
- show_in_systray = show_in_systray)
+ show_in_roster=show_in_roster,
+ show_in_systray=show_in_systray)
gajim.events.add_event(account, jid, event)
self.roster.show_title()
@@ -2396,6 +2454,18 @@
data[1], data[3])
gajim.events.remove_events(account, jid, event)
self.roster.draw_contact(jid, account)
+ elif type_ == 'subscription_request':
+ event = gajim.events.get_first_event(account, jid, type_)
+ data = event.parameters
+ dialogs.SubscriptionRequestWindow(jid, data[0], account, data[1])
+ gajim.events.remove_events(account, jid, event)
+ self.roster.draw_contact(jid, account)
+ elif type_ == 'unsubscribed':
+ event = gajim.events.get_first_event(account, jid, type_)
+ contact = event.parameters
+ self.show_unsubscribed_dialog(account, contact)
+ gajim.events.remove_events(account, jid, event)
+ self.roster.draw_contact(jid, account)
if w:
w.set_active_tab(ctrl)
w.window.window.focus()
Modified: branches/osx_newbuildsys/src/network_manager_listener.py
===================================================================
--- branches/osx_newbuildsys/src/network_manager_listener.py 2009-02-14 12:06:05 UTC (rev 11094)
+++ branches/osx_newbuildsys/src/network_manager_listener.py 2009-02-14 12:09:23 UTC (rev 11095)
@@ -25,17 +25,32 @@
from common import gajim
def device_now_active(self, *args):
+ '''For Network Manager 0.6'''
for connection in gajim.connections.itervalues():
if gajim.config.get_per('accounts', connection.name,
'listen_to_network_manager') and connection.time_to_reconnect:
connection._reconnect()
def device_no_longer_active(self, *args):
+ '''For Network Manager 0.6'''
for connection in gajim.connections.itervalues():
if gajim.config.get_per('accounts', connection.name,
'listen_to_network_manager') and connection.connected > 1:
connection._disconnectedReconnCB()
+def state_changed(state):
+ '''For Network Manager 0.7'''
+ if props.Get("org.freedesktop.NetworkManager", "State") == 3:
+ for connection in gajim.connections.itervalues():
+ if gajim.config.get_per('accounts', connection.name,
+ 'listen_to_network_manager') and connection.time_to_reconnect:
+ connection._reconnect()
+ else:
+ for connection in gajim.connections.itervalues():
+ if gajim.config.get_per('accounts', connection.name,
+ 'listen_to_network_manager') and connection.connected > 1:
+ connection._disconnectedReconnCB()
+
supported = False
if sys.platform == 'darwin':
@@ -44,22 +59,36 @@
try:
from common.dbus_support import system_bus
- bus = system_bus.SystemBus()
+ bus = system_bus.bus()
if 'org.freedesktop.NetworkManager' in bus.list_names():
+ nm_object = bus.get_object('org.freedesktop.NetworkManager',
+ '/org/freedesktop/NetworkManager')
+ props = dbus.Interface(nm_object,"org.freedesktop.DBus.Properties")
+ bus.add_signal_receiver(state_changed,
+ 'StateChanged',
+ 'org.freedesktop.NetworkManager',
+ 'org.freedesktop.NetworkManager',
+ '/org/freedesktop/NetworkManager')
supported = True
- bus.add_signal_receiver(device_no_longer_active,
- 'DeviceNoLongerActive',
- 'org.freedesktop.NetworkManager',
- 'org.freedesktop.NetworkManager',
- '/org/freedesktop/NetworkManager')
- bus.add_signal_receiver(device_now_active,
- 'DeviceNowActive',
- 'org.freedesktop.NetworkManager',
- 'org.freedesktop.NetworkManager',
- '/org/freedesktop/NetworkManager')
except Exception:
- pass
+ try:
+ if 'org.freedesktop.NetworkManager' in bus.list_names():
+ supported = True
+ bus.add_signal_receiver(device_no_longer_active,
+ 'DeviceNoLongerActive',
+ 'org.freedesktop.NetworkManager',
+ 'org.freedesktop.NetworkManager',
+ '/org/freedesktop/NetworkManager')
+
+ bus.add_signal_receiver(device_now_active,
+ 'DeviceNowActive',
+ 'org.freedesktop.NetworkManager',
+ 'org.freedesktop.NetworkManager',
+ '/org/freedesktop/NetworkManager')
+ except Exception:
+ pass
+
# vim: se ts=3:
Modified: branches/osx_newbuildsys/src/notify.py
===================================================================
--- branches/osx_newbuildsys/src/notify.py 2009-02-14 12:06:05 UTC (rev 11094)
+++ branches/osx_newbuildsys/src/notify.py 2009-02-14 12:09:23 UTC (rev 11095)
@@ -186,16 +186,16 @@
if helpers.allow_showing_notification(account, 'notify_on_new_message',
advanced_notif_num, is_first_message):
do_popup = True
- if is_first_message and helpers.allow_sound_notification(
+ if is_first_message and helpers.allow_sound_notification(account,
'first_message_received', advanced_notif_num):
do_sound = True
elif not is_first_message and focused and \
- helpers.allow_sound_notification('next_message_received_focused',
+ helpers.allow_sound_notification(account, 'next_message_received_focused',
advanced_notif_num):
do_sound = True
elif not is_first_message and not focused and \
- helpers.allow_sound_notification('next_message_received_unfocused',
- advanced_notif_num):
+ helpers.allow_sound_notification(account,
+ 'next_message_received_unfocused', advanced_notif_num):
do_sound = True
if not focused:
do_bounce = True
@@ -500,6 +500,10 @@
ntype = 'presence.status'
elif event_type == _('Connection Failed'):
ntype = 'connection.failed'
+ elif event_type == _('Subscription request'):
+ ntype = 'subscription.request'
+ elif event_type == _('Unsubscribed'):
+ ntype = 'unsubscribed'
else:
# default failsafe values
self.path_to_image = os.path.abspath(
Modified: branches/osx_newbuildsys/src/roster_window.py
===================================================================
--- branches/osx_newbuildsys/src/roster_window.py 2009-02-14 12:06:05 UTC (rev 11094)
+++ branches/osx_newbuildsys/src/roster_window.py 2009-02-14 12:09:23 UTC (rev 11095)
@@ -54,7 +54,6 @@
from common import gajim
from common import helpers
-from common import passwords
from common.exceptions import GajimGeneralException
from common import i18n
from common import pep
@@ -1832,6 +1831,14 @@
data[1])
gajim.events.remove_events(account, jid, event)
return True
+ elif event.type_ == 'subscription_request':
+ dialogs.SubscriptionRequestWindow(jid, data[0], account, data[1])
+ gajim.events.remove_events(account, jid, event)
+ return True
+ elif event.type_ == 'unsubscribed':
+ gajim.interface.show_unsubscribed_dialog(account, data)
+ gajim.events.remove_events(account, jid, event)
+ return True
return False
################################################################################
@@ -1901,16 +1908,19 @@
dialogs.InformationDialog(_('Authorization has been removed'),
_('Now "%s" will always see you as offline.') %jid)
- def set_connecting_state(self, account):
+ def set_state(self, account, state):
child_iterA = self._get_account_iter(account, self.model)
if child_iterA:
self.model[child_iterA][0] = \
- gajim.interface.jabber_state_images['16']['connecting']
+ gajim.interface.jabber_state_images['16'][state]
if gajim.interface.systray_enabled:
- gajim.interface.systray.change_status('connecting')
+ gajim.interface.systray.change_status(state)
if sys.platform == 'darwin':
gajim.interface.dock.change_status('connecting')
+ def set_connecting_state(self, account):
+ self.set_state(account, 'connecting')
+
def send_status(self, account, status, txt, auto=False, to=None):
child_iterA = self._get_account_iter(account, self.model)
if status != 'offline':