diff --git a/data/glade/preferences_window.glade b/data/glade/preferences_window.glade index f82682c62..531ee3331 100644 --- a/data/glade/preferences_window.glade +++ b/data/glade/preferences_window.glade @@ -23,200 +23,79 @@ <property name="border_width">12</property> <property name="spacing">6</property> <child> - <widget class="GtkCheckButton" id="trayicon_checkbutton"> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Use t_rayicon (aka. notification area icon)</property> - <property name="use_underline">True</property> - <property name="response_id">0</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_trayicon_checkbutton_toggled"/> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - <child> - <widget class="GtkCheckButton" id="save_position_checkbutton"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="tooltip" translatable="yes">If checked, Gajim will remember the roster and chat window positions in the screen and the sizes of them next time you run it</property> - <property name="label" translatable="yes">Save _position and size for roster and chat windows</property> - <property name="use_underline">True</property> - <property name="response_id">0</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_save_position_checkbutton_toggled"/> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - <child> - <widget class="GtkCheckButton" id="show_avatars_in_roster_checkbutton"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="tooltip" translatable="yes">If checked, Gajim will display avatars of contacts in roster window and in group chats</property> - <property name="label" translatable="yes">Display a_vatars of contacts in 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_show_avatars_in_roster_checkbutton_toggled"/> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">2</property> - </packing> - </child> - <child> - <widget class="GtkCheckButton" id="show_status_msgs_in_roster_checkbutton"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="tooltip" translatable="yes">If checked, Gajim will display status messages of contacts under the contact name in roster window and in group chats</property> - <property name="label" translatable="yes">Display status _messages of contacts in 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_show_status_msgs_in_roster_checkbutton_toggled"/> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">3</property> - </packing> - </child> - <child> - <widget class="GtkCheckButton" id="sort_by_show_checkbutton"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">_Sort contacts by status</property> - <property name="use_underline">True</property> - <property name="response_id">0</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_sort_by_show_checkbutton_toggled"/> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">4</property> - </packing> - </child> - <child> - <widget class="GtkFrame" id="frame35"> + <widget class="GtkFrame" id="frame1"> <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_xalign">0</property> <property name="shadow_type">GTK_SHADOW_NONE</property> <child> - <widget class="GtkAlignment" id="alignment73"> + <widget class="GtkAlignment" id="alignment1"> <property name="visible">True</property> - <property name="border_width">6</property> - <property name="top_padding">4</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <property name="left_padding">12</property> <child> - <widget class="GtkVBox" id="vbox95"> + <widget class="GtkVBox" id="vbox1"> <property name="visible">True</property> - <property name="spacing">12</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="spacing">6</property> <child> - <widget class="GtkHBox" id="hbox2901"> + <widget class="GtkCheckButton" id="show_avatars_in_roster_checkbutton"> <property name="visible">True</property> - <property name="spacing">12</property> - <child> - <widget class="GtkLabel" id="label174"> - <property name="visible">True</property> - <property name="label" translatable="yes">Default status _iconset:</property> - <property name="use_underline">True</property> - <property name="mnemonic_widget">iconset_combobox</property> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - <child> - <widget class="GtkComboBox" id="iconset_combobox"> - <property name="visible">True</property> - <signal name="changed" handler="on_iconset_combobox_changed"/> - </widget> - <packing> - <property name="expand">False</property> - <property name="position">1</property> - </packing> - </child> - <child> - <widget class="GtkCheckButton" id="transports_iconsets_checkbutton"> - <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 iconsets</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"/> - </widget> - <packing> - <property name="expand">False</property> - <property name="position">2</property> - </packing> - </child> - </widget> - </child> - <child> - <widget class="GtkHBox" id="hbox2956"> - <property name="visible">True</property> - <property name="spacing">12</property> - <child> - <widget class="GtkLabel" id="label249"> - <property name="visible">True</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="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - <child> - <widget class="GtkComboBox" id="theme_combobox"> - <property name="visible">True</property> - <signal name="changed" handler="on_theme_combobox_changed"/> - </widget> - <packing> - <property name="expand">False</property> - <property name="position">1</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="use_underline">True</property> - <property name="response_id">0</property> - <signal name="clicked" handler="on_manage_theme_button_clicked"/> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">2</property> - </packing> - </child> + <property name="can_focus">True</property> + <property name="tooltip" translatable="yes">If checked, Gajim will display avatars of contacts in roster window and in group chats</property> + <property name="label" translatable="yes">Display a_vatars of contacts in 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_show_avatars_in_roster_checkbutton_toggled"/> </widget> <packing> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + <child> + <widget class="GtkCheckButton" id="show_status_msgs_in_roster_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="tooltip" translatable="yes">If checked, Gajim will display status messages of contacts under the contact name in roster window and in group chats</property> + <property name="label" translatable="yes">Display status _messages of contacts in 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_show_status_msgs_in_roster_checkbutton_toggled"/> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> <property name="position">1</property> </packing> </child> + <child> + <widget class="GtkCheckButton" id="sort_by_show_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Sort contacts by status</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_sort_by_show_checkbutton_toggled"/> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> </widget> </child> </widget> </child> <child> - <widget class="GtkLabel" id="label326"> + <widget class="GtkLabel" id="label1"> <property name="visible">True</property> - <property name="label" translatable="yes"><b>Interface Customization</b></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"><b>Roster Appearance</b></property> <property name="use_markup">True</property> </widget> <packing> @@ -226,8 +105,336 @@ </widget> <packing> <property name="expand">False</property> - <property name="padding">12</property> - <property name="position">5</property> + </packing> + </child> + <child> + <widget class="GtkFrame" id="frame2"> + <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_xalign">0</property> + <property name="shadow_type">GTK_SHADOW_NONE</property> + <child> + <widget class="GtkAlignment" id="alignment2"> + <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="left_padding">12</property> + <child> + <widget class="GtkTable" id="table1"> + <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="n_rows">6</property> + <property name="n_columns">2</property> + <property name="column_spacing">6</property> + <property name="row_spacing">6</property> + <child> + <widget class="GtkEventBox" id="eventbox5"> + <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> + </widget> + </child> + </widget> + <packing> + <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> + <packing> + <property name="left_attach">1</property> + <property name="right_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="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="right_attach">2</property> + <property name="top_attach">5</property> + <property name="bottom_attach">6</property> + <property name="x_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkCheckButton" id="xhtml_checkbutton"> + <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"/> + </widget> + <packing> + <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="compact_view_checkbutton"> + <property name="can_focus">True</property> + <property name="tooltip" translatable="yes">Hides buttons in chatwindows to </property> + <property name="label" translatable="yes">_Make message windows compact</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_compact_view_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="one_window_type_combobox"> + <property name="visible">True</property> + <property name="items" translatable="yes">Never +Always +Per account +Per 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">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkComboBox" id="treat_incoming_messages_combobox"> + <property name="visible">True</property> + <property name="items" translatable="yes">Determined by sender +Chat message +Single message</property> + <signal name="changed" handler="on_treat_incoming_messages_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> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label379"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="xpad">1</property> + <property name="label" translatable="yes">Use only one message _window:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">one_window_type_combobox</property> + </widget> + <packing> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label387"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="xpad">1</property> + <property name="label" translatable="yes">Treat all incoming messages as:</property> + </widget> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + <child> + <widget class="GtkLabel" id="label2"> + <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"><b>Chat Appearance</b></property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkFrame" id="frame3"> + <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_xalign">0</property> + <property name="shadow_type">GTK_SHADOW_NONE</property> + <child> + <widget class="GtkAlignment" id="alignment3"> + <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="left_padding">12</property> + <child> + <widget class="GtkTable" id="table2"> + <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="n_rows">3</property> + <property name="n_columns">4</property> + <property name="column_spacing">6</property> + <property name="row_spacing">6</property> + <child> + <widget class="GtkLabel" id="label4"> + <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> + </widget> + <packing> + <property name="left_attach">3</property> + <property name="right_attach">4</property> + </packing> + </child> + <child> + <widget class="GtkCheckButton" id="transports_iconsets_checkbutton"> + <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 iconsets</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"/> + </widget> + <packing> + <property name="right_attach">4</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + </packing> + </child> + <child> + <widget class="GtkComboBox" id="iconset_combobox"> + <property name="visible">True</property> + <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> + <widget class="GtkLabel" id="label174"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Status _iconset:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">iconset_combobox</property> + </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">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkComboBox" id="theme_combobox"> + <property name="visible">True</property> + <signal name="changed" handler="on_theme_combobox_changed"/> + </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> + <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="use_underline">True</property> + <property name="response_id">0</property> + <signal name="clicked" handler="on_manage_theme_button_clicked"/> + </widget> + <packing> + <property name="left_attach">2</property> + <property name="right_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> + <child> + <widget class="GtkLabel" id="label6"> + <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> + </widget> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">4</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + <child> + <widget class="GtkLabel" id="label3"> + <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"><b>Themes</b></property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">2</property> </packing> </child> </widget> @@ -252,160 +459,126 @@ <property name="border_width">12</property> <property name="spacing">6</property> <child> - <widget class="GtkHBox" id="hbox3018"> + <widget class="GtkFrame" id="frame4"> <property name="visible">True</property> - <property name="spacing">5</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_xalign">0</property> + <property name="shadow_type">GTK_SHADOW_NONE</property> <child> - <widget class="GtkLabel" id="label379"> + <widget class="GtkAlignment" id="alignment4"> <property name="visible">True</property> - <property name="xpad">1</property> - <property name="label" translatable="yes">One message _window:</property> - <property name="use_underline">True</property> - <property name="mnemonic_widget">one_window_type_combobox</property> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - <child> - <widget class="GtkComboBox" id="one_window_type_combobox"> - <property name="visible">True</property> - <property name="items" translatable="yes">Never -Always -Per account -Per type</property> - <signal name="changed" handler="on_one_window_type_combo_changed"/> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - </widget> - <packing> - <property name="expand">False</property> - </packing> - </child> - <child> - <widget class="GtkCheckButton" id="compact_view_checkbutton"> - <property name="can_focus">True</property> - <property name="tooltip" translatable="yes">Hides buttons in chatwindows to </property> - <property name="label" translatable="yes">_Make message windows compact</property> - <property name="use_underline">True</property> - <property name="response_id">0</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_compact_view_checkbutton_toggled"/> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - <child> - <widget class="GtkCheckButton" id="xhtml_checkbutton"> - <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"/> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">2</property> - </packing> - </child> - <child> - <widget class="GtkCheckButton" id="speller_checkbutton"> - <property name="can_focus">True</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="expand">False</property> - <property name="fill">False</property> - <property name="position">3</property> - </packing> - </child> - <child> - <widget class="GtkHBox" id="hbox3024"> - <property name="visible">True</property> - <property name="spacing">4</property> - <child> - <widget class="GtkLabel" id="label387"> - <property name="visible">True</property> - <property name="xpad">1</property> - <property name="label" translatable="yes">Treat all incoming messages as:</property> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - <child> - <widget class="GtkComboBox" id="treat_incoming_messages_combobox"> - <property name="visible">True</property> - <property name="items" translatable="yes">Determined by sender -Chat message -Single message</property> - <signal name="changed" handler="on_treat_incoming_messages_combobox_changed"/> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - </widget> - <packing> - <property name="expand">False</property> - <property name="position">4</property> - </packing> - </child> - <child> - <widget class="GtkHBox" id="hbox2947"> - <property name="visible">True</property> - <property name="spacing">5</property> - <child> - <widget class="GtkEventBox" id="eventbox5"> - <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> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="left_padding">12</property> <child> - <widget class="GtkLabel" id="label381"> + <widget class="GtkTable" id="table3"> <property name="visible">True</property> - <property name="xpad">1</property> - <property name="label" translatable="yes">Emoticons:</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="n_rows">3</property> + <property name="n_columns">2</property> + <property name="column_spacing">6</property> + <property name="row_spacing">6</property> + <child> + <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">Check this option, only if someone you don't have in the roster spams/annoys you. 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_ignore_events_from_unknown_contacts_checkbutton_toggled"/> + </widget> + <packing> + <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> + </packing> + </child> + <child> + <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_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> + <property name="x_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkEventBox" id="eventbox7"> + <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> + <child> + <widget class="GtkLabel" id="label386"> + <property name="visible">True</property> + <property name="xalign">0</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="eventbox4"> + <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> + <child> + <widget class="GtkLabel" id="label354"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">_Send chat state notifications:</property> + <property name="use_underline">True</property> + </widget> + </child> + </widget> + <packing> + <property name="x_options">GTK_FILL</property> + </packing> + </child> + <child> + <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_outgoing_chat_states_combobox_changed"/> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="x_options">GTK_FILL</property> + </packing> + </child> </widget> </child> </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> </child> <child> - <widget class="GtkComboBox" id="emoticons_combobox"> + <widget class="GtkLabel" id="label5"> <property name="visible">True</property> - <signal name="changed" handler="on_emoticons_combobox_changed"/> + <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"><b>Privacy</b></property> + <property name="use_markup">True</property> </widget> <packing> - <property name="expand">False</property> - <property name="position">1</property> + <property name="type">label_item</property> </packing> </child> </widget> <packing> <property name="expand">False</property> - <property name="position">5</property> </packing> </child> <child> @@ -422,77 +595,6 @@ Single message</property> <widget class="GtkVBox" id="vbox62"> <property name="visible">True</property> <property name="spacing">12</property> - <child> - <widget class="GtkHBox" id="hbox2944"> - <property name="visible">True</property> - <property name="spacing">6</property> - <child> - <widget class="GtkLabel" id="label219"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">Print time:</property> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - <child> - <widget class="GtkRadioButton" id="time_always_radiobutton"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">On every _message</property> - <property name="use_underline">True</property> - <property name="response_id">0</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_time_always_radiobutton_toggled"/> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - <child> - <widget class="GtkRadioButton" id="time_sometimes_radiobutton"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="tooltip" translatable="yes">Also known as iChat style</property> - <property name="label" translatable="yes">E_very 5 minutes</property> - <property name="use_underline">True</property> - <property name="response_id">0</property> - <property name="draw_indicator">True</property> - <property name="group">time_always_radiobutton</property> - <signal name="toggled" handler="on_time_sometimes_radiobutton_toggled"/> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">2</property> - </packing> - </child> - <child> - <widget class="GtkRadioButton" id="time_never_radiobutton"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">_Never</property> - <property name="use_underline">True</property> - <property name="response_id">0</property> - <property name="draw_indicator">True</property> - <property name="group">time_always_radiobutton</property> - <signal name="toggled" handler="on_time_never_radiobutton_toggled"/> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">3</property> - </packing> - </child> - </widget> - <packing> - <property name="expand">False</property> - </packing> - </child> <child> <widget class="GtkTable" id="table25"> <property name="visible">True</property> @@ -501,55 +603,132 @@ Single message</property> <property name="column_spacing">12</property> <property name="row_spacing">6</property> <child> - <widget class="GtkCheckButton" id="default_chat_font"> + <widget class="GtkLabel" id="label72"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Use system _default</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">_Incoming message:</property> <property name="use_underline">True</property> - <property name="response_id">0</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_default_chat_font_toggled"/> + <property name="justify">GTK_JUSTIFY_CENTER</property> + <property name="wrap">True</property> + <property name="mnemonic_widget">incoming_msg_colorbutton</property> </widget> <packing> - <property name="left_attach">2</property> - <property name="right_attach">4</property> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkHBox" id="hbox3021"> + <widget class="GtkColorButton" id="incoming_msg_colorbutton"> <property name="visible">True</property> - <property name="spacing">6</property> - <child> - <widget class="GtkLabel" id="font_label"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">_Font:</property> - <property name="use_underline">True</property> - <property name="mnemonic_widget">conversation_fontbutton</property> - </widget> - </child> - <child> - <widget class="GtkFontButton" id="conversation_fontbutton"> - <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"/> - </widget> - <packing> - <property name="expand">False</property> - <property name="position">1</property> - </packing> - </child> + <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"/> </widget> <packing> + <property name="left_attach">1</property> <property name="right_attach">2</property> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> + <property name="x_options"></property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label70"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">_Outgoing message:</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> + </widget> + <packing> + <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="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_outgoing_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="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label71"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">_Status message:</property> + <property name="use_underline">True</property> + <property name="justify">GTK_JUSTIFY_CENTER</property> + <property name="wrap">True</property> + <property name="mnemonic_widget">status_msg_colorbutton</property> + </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="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_status_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="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label371"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">_URL:</property> + <property name="use_underline">True</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="url_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_url_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="y_options"></property> </packing> </child> <child> @@ -621,130 +800,53 @@ Single message</property> </packing> </child> <child> - <widget class="GtkColorButton" id="url_msg_colorbutton"> + <widget class="GtkHBox" id="hbox3021"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="response_id">0</property> - <signal name="color_set" handler="on_url_msg_colorbutton_color_set"/> + <property name="spacing">6</property> + <child> + <widget class="GtkLabel" id="font_label"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">_Font:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">conversation_fontbutton</property> + </widget> + </child> + <child> + <widget class="GtkFontButton" id="conversation_fontbutton"> + <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"/> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> </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="right_attach">2</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="label371"> + <widget class="GtkCheckButton" id="default_chat_font"> <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">_URL:</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Use system _default</property> <property name="use_underline">True</property> - <property name="mnemonic_widget">url_msg_colorbutton</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_default_chat_font_toggled"/> </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"> - <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"/> - </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="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label71"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">_Status message:</property> - <property name="use_underline">True</property> - <property name="justify">GTK_JUSTIFY_CENTER</property> - <property name="wrap">True</property> - <property name="mnemonic_widget">status_msg_colorbutton</property> - </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="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_outgoing_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="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label70"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">_Outgoing message:</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> - </widget> - <packing> - <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="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_incoming_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="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label72"> - <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> - </widget> - <packing> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> @@ -752,7 +854,6 @@ Single message</property> </widget> <packing> <property name="expand">False</property> - <property name="position">1</property> </packing> </child> </widget> @@ -773,7 +874,7 @@ Single message</property> <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">6</property> + <property name="position">1</property> </packing> </child> </widget> @@ -785,7 +886,7 @@ Single message</property> <child> <widget class="GtkLabel" id="label218"> <property name="visible">True</property> - <property name="label" translatable="yes">Chat</property> + <property name="label" translatable="yes">Privacy</property> </widget> <packing> <property name="type">tab</property> @@ -814,149 +915,67 @@ Single message</property> <property name="visible">True</property> <property name="spacing">6</property> <child> - <widget class="GtkFrame" id="frame25"> + <widget class="GtkHBox" id="hbox1"> <property name="visible">True</property> - <property name="border_width">2</property> - <property name="label_xalign">0</property> - <property name="shadow_type">GTK_SHADOW_NONE</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="spacing">6</property> <child> - <widget class="GtkAlignment" id="alignment54"> + <widget class="GtkLabel" id="label7"> <property name="visible">True</property> - <property name="left_padding">12</property> - <child> - <widget class="GtkHBox" id="hbox2949"> - <property name="visible">True</property> - <property name="border_width">3</property> - <property name="spacing">6</property> - <child> - <widget class="GtkRadioButton" id="notify_on_new_message_radiobutton"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="tooltip" translatable="yes">Gajim will notify you for new events via a popup in the bottom right of the screen</property> - <property name="label" translatable="yes">_Notify me about it</property> - <property name="use_underline">True</property> - <property name="response_id">0</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_notify_on_new_message_radiobutton_toggled"/> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - <child> - <widget class="GtkRadioButton" id="popup_new_message_radiobutton"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="tooltip" translatable="yes">Gajim will automatically show new events by popping up the relevant window</property> - <property name="label" translatable="yes">_Pop it up</property> - <property name="use_underline">True</property> - <property name="response_id">0</property> - <property name="draw_indicator">True</property> - <property name="group">notify_on_new_message_radiobutton</property> - <signal name="toggled" handler="on_popup_new_message_radiobutton_toggled"/> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - <child> - <widget class="GtkRadioButton" id="only_in_roster_radiobutton"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="tooltip" translatable="yes">Gajim will only change the icon of the contact that triggered the new event</property> - <property name="label" translatable="yes">Show only in _roster</property> - <property name="use_underline">True</property> - <property name="response_id">0</property> - <property name="draw_indicator">True</property> - <property name="group">notify_on_new_message_radiobutton</property> - <signal name="toggled" handler="on_only_in_roster_radiobutton_toggled"/> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">2</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - <child> - <widget class="GtkEventBox" id="eventbox"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">When a new event (message, file transfer request etc..) is received, the following methods may be used to inform you about it. Please note that events about new messages only occur if it is a new message from a contact you are not already chatting with</property> - <child> - <widget class="GtkLabel" id="label233"> - <property name="visible">True</property> - <property name="label" translatable="yes">When new event is received</property> - </widget> - </child> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">When new event is received:</property> </widget> <packing> - <property name="type">label_item</property> + <property name="expand">False</property> </packing> </child> + <child> + <widget class="GtkComboBox" id="on_event_combobox"> + <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="items" translatable="yes">_Pop it up +_Notify me about it +Show only in _roster</property> + <signal name="changed" handler="on_on_event_combobox_changed"/> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + </widget> + </child> + <child> + <widget class="GtkCheckButton" id="notify_on_signin_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">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">Notify me about contacts that sign _in</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_notify_on_signin_checkbutton_toggled"/> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkCheckButton" id="notify_on_signout_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="tooltip" translatable="yes">Gajim will notify you via a popup window in the bottom right of the screen about contacts that just signed out</property> + <property name="label" translatable="yes">Notify me about contacts that sign _out</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_notify_on_signout_checkbutton_toggled"/> </widget> <packing> <property name="expand">False</property> <property name="fill">False</property> - </packing> - </child> - <child> - <widget class="GtkHBox" id="hbox2950"> - <property name="visible">True</property> - <property name="spacing">6</property> - <child> - <widget class="GtkLabel" id="label241"> - <property name="visible">True</property> - <property name="label" translatable="yes">Notify me about contacts that: </property> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - <child> - <widget class="GtkCheckButton" id="notify_on_signin_checkbutton"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="tooltip" translatable="yes">Gajim will notify you via a popup window in the bottom right of the screen about contacts that just signed in</property> - <property name="label" translatable="yes">Sign _in</property> - <property name="use_underline">True</property> - <property name="response_id">0</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_notify_on_signin_checkbutton_toggled"/> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - <child> - <widget class="GtkCheckButton" id="notify_on_signout_checkbutton"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="tooltip" translatable="yes">Gajim will notify you via a popup window in the bottom right of the screen about contacts that just signed out</property> - <property name="label" translatable="yes">Sign _out</property> - <property name="use_underline">True</property> - <property name="response_id">0</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_notify_on_signout_checkbutton_toggled"/> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">2</property> - </packing> - </child> - </widget> - <packing> - <property name="expand">False</property> - <property name="position">1</property> + <property name="position">2</property> </packing> </child> <child> @@ -972,7 +991,7 @@ Single message</property> <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">2</property> + <property name="position">3</property> </packing> </child> <child> @@ -1029,12 +1048,9 @@ Single message</property> <child> <placeholder/> </child> - <child> - <placeholder/> - </child> </widget> <packing> - <property name="position">3</property> + <property name="position">4</property> </packing> </child> </widget> @@ -1054,239 +1070,149 @@ Single message</property> </widget> <packing> <property name="expand">False</property> - <property name="fill">False</property> </packing> </child> <child> - <widget class="GtkCheckButton" id="ignore_events_from_unknown_contacts_checkbutton"> + <widget class="GtkFrame" id="frame5"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="tooltip" translatable="yes">Check this option, only if someone you don't have in the roster spams/annoys you. 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_ignore_events_from_unknown_contacts_checkbutton_toggled"/> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - <child> - <widget class="GtkHBox" id="hbox2991"> - <property name="visible">True</property> - <property name="spacing">12</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_xalign">0</property> + <property name="shadow_type">GTK_SHADOW_NONE</property> <child> - <widget class="GtkEventBox" id="eventbox4"> + <widget class="GtkAlignment" id="alignment5"> <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="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="left_padding">12</property> <child> - <widget class="GtkLabel" id="label354"> - <property name="visible">True</property> - <property name="label" translatable="yes">Outgoing Chat state noti_fications:</property> - <property name="use_underline">True</property> - </widget> - </child> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - <child> - <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_outgoing_chat_states_combobox_changed"/> - </widget> - <packing> - <property name="expand">False</property> - <property name="position">1</property> - </packing> - </child> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">2</property> - </packing> - </child> - <child> - <widget class="GtkHBox" id="hbox3023"> - <property name="visible">True</property> - <property name="spacing">12</property> - <child> - <widget class="GtkEventBox" id="eventbox7"> - <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> - <child> - <widget class="GtkLabel" id="label386"> - <property name="visible">True</property> - <property name="label" translatable="yes">Displayed Chat state noti_fications:</property> - <property name="use_underline">True</property> - </widget> - </child> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - <child> - <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_displayed_chat_states_combobox_changed"/> - </widget> - <packing> - <property name="expand">False</property> - <property name="position">1</property> - </packing> - </child> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">3</property> - </packing> - </child> - <child> - <widget class="GtkExpander" id="expander2"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <child> - <widget class="GtkVBox" id="vbox65"> - <property name="visible">True</property> - <property name="spacing">6</property> - <child> - <widget class="GtkHBox" id="hbox2946"> + <widget class="GtkVBox" id="vbox65"> <property name="visible">True</property> <property name="spacing">6</property> - <property name="homogeneous">True</property> <child> - <widget class="GtkCheckButton" id="play_sounds_checkbutton"> + <widget class="GtkHBox" id="hbox2946"> <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> - </child> - <child> - <widget class="GtkHBox" id="soundplayer_hbox"> - <property name="spacing">5</property> + <property name="spacing">6</property> + <property name="homogeneous">True</property> <child> - <widget class="GtkLabel" id="label189"> + <widget class="GtkCheckButton" id="play_sounds_checkbutton"> <property name="visible">True</property> - <property name="label" translatable="yes">_Player:</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Play _sounds</property> <property name="use_underline">True</property> - <property name="mnemonic_widget">soundplayer_entry</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_play_sounds_checkbutton_toggled"/> </widget> </child> <child> - <widget class="GtkEntry" id="soundplayer_entry"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <signal name="changed" handler="on_soundplayer_entry_changed"/> + <widget class="GtkHBox" id="soundplayer_hbox"> + <property name="spacing">5</property> + <child> + <widget class="GtkLabel" id="label189"> + <property name="visible">True</property> + <property name="label" translatable="yes">_Player:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">soundplayer_entry</property> + </widget> + </child> + <child> + <widget class="GtkEntry" id="soundplayer_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <signal name="changed" handler="on_soundplayer_entry_changed"/> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> </widget> <packing> <property name="position">1</property> </packing> </child> </widget> - <packing> - <property name="position">1</property> - </packing> - </child> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - <child> - <widget class="GtkScrolledWindow" id="sounds_scrolledwindow"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="shadow_type">GTK_SHADOW_IN</property> - <child> - <widget class="GtkTreeView" id="sounds_treeview"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <signal name="cursor_changed" handler="on_treeview_sounds_cursor_changed"/> - </widget> - </child> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> - <child> - <widget class="GtkHBox" id="browse_sounds_hbox"> - <property name="visible">True</property> - <property name="spacing">6</property> - <child> - <widget class="GtkEntry" id="sounds_entry"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <signal name="changed" handler="on_sounds_entry_changed"/> - </widget> - </child> - <child> - <widget class="GtkButton" id="browse_for_sounds_button"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label">...</property> - <property name="use_underline">True</property> - <property name="response_id">0</property> - <signal name="clicked" handler="on_browse_for_sounds_button_clicked"/> - </widget> <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">1</property> </packing> </child> <child> - <widget class="GtkButton" id="play_button"> + <widget class="GtkScrolledWindow" id="sounds_scrolledwindow"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="response_id">0</property> - <signal name="clicked" handler="on_play_button_clicked"/> + <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="shadow_type">GTK_SHADOW_IN</property> <child> - <widget class="GtkImage" id="image1370"> + <widget class="GtkTreeView" id="sounds_treeview"> <property name="visible">True</property> - <property name="stock">gtk-media-play</property> + <property name="can_focus">True</property> + <signal name="cursor_changed" handler="on_treeview_sounds_cursor_changed"/> </widget> </child> </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkHBox" id="browse_sounds_hbox"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <widget class="GtkEntry" id="sounds_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <signal name="changed" handler="on_sounds_entry_changed"/> + </widget> + </child> + <child> + <widget class="GtkButton" id="browse_for_sounds_button"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label">...</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <signal name="clicked" handler="on_browse_for_sounds_button_clicked"/> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="play_button"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="response_id">0</property> + <signal name="clicked" handler="on_play_button_clicked"/> + <child> + <widget class="GtkImage" id="image1370"> + <property name="visible">True</property> + <property name="stock">gtk-media-play</property> + </widget> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> + </widget> <packing> <property name="expand">False</property> - <property name="fill">False</property> <property name="position">2</property> </packing> </child> </widget> - <packing> - <property name="expand">False</property> - <property name="position">2</property> - </packing> </child> </widget> </child> <child> - <widget class="GtkLabel" id="label385"> + <widget class="GtkLabel" id="label8"> <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"><b>Sounds</b></property> <property name="use_markup">True</property> </widget> @@ -1296,7 +1222,8 @@ Disabled</property> </child> </widget> <packing> - <property name="position">4</property> + <property name="expand">False</property> + <property name="position">1</property> </packing> </child> </widget> @@ -1330,33 +1257,88 @@ Disabled</property> <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</property> - <signal name="changed" handler="on_auto_xa_message_entry_changed"/> + <property name="label" translatable="yes">Auto _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="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="GtkCheckButton" id="auto_xa_checkbutton"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="tooltip" translatable="yes">The auto away status message</property> - <signal name="changed" handler="on_auto_away_message_entry_changed"/> + <property name="label" translatable="yes">Auto _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="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="label77"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">minutes</property> + </widget> + <packing> + <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="GtkLabel" id="label78"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">minutes</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="GtkAlignment" id="alignment33"> + <property name="visible">True</property> + <property name="xalign">1</property> + <property name="xscale">0</property> + <child> + <widget class="GtkSpinButton" id="auto_away_time_spinbutton"> + <property name="width_request">50</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="adjustment">12 1 720 1 10 10</property> + <property name="climb_rate">1</property> + <signal name="value_changed" handler="on_auto_away_time_spinbutton_value_changed"/> + </widget> + </child> + </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> <child> <widget class="GtkAlignment" id="alignment34"> <property name="visible">True</property> @@ -1383,85 +1365,30 @@ Disabled</property> </packing> </child> <child> - <widget class="GtkAlignment" id="alignment33"> - <property name="visible">True</property> - <property name="xalign">1</property> - <property name="xscale">0</property> - <child> - <widget class="GtkSpinButton" id="auto_away_time_spinbutton"> - <property name="width_request">50</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="adjustment">12 1 720 1 10 10</property> - <property name="climb_rate">1</property> - <signal name="value_changed" handler="on_auto_away_time_spinbutton_value_changed"/> - </widget> - </child> - </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> - <child> - <widget class="GtkLabel" id="label78"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">minutes</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="GtkLabel" id="label77"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">minutes</property> - </widget> - <packing> - <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="GtkCheckButton" id="auto_xa_checkbutton"> + <widget class="GtkEntry" id="auto_away_message_entry"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">Auto _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 away status message</property> + <signal name="changed" handler="on_auto_away_message_entry_changed"/> </widget> <packing> - <property name="top_attach">1</property> - <property name="bottom_attach">2</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_away_checkbutton"> + <widget class="GtkEntry" id="auto_xa_message_entry"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">Auto _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"/> + <property name="tooltip" translatable="yes">The auto not available status message</property> + <signal name="changed" handler="on_auto_xa_message_entry_changed"/> </widget> <packing> - <property name="x_options">GTK_FILL</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="y_options"></property> </packing> </child> @@ -1773,60 +1700,18 @@ Custom</property> <property name="column_spacing">12</property> <property name="row_spacing">6</property> <child> - <widget class="GtkEntry" id="custom_file_manager_entry"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <signal name="changed" handler="on_custom_file_manager_entry_changed"/> - </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="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label355"> + <widget class="GtkLabel" id="label199"> <property name="visible">True</property> <property name="xalign">0</property> - <property name="label" translatable="yes">_File manager:</property> + <property name="label" translatable="yes">_Browser:</property> <property name="use_underline">True</property> - <property name="mnemonic_widget">custom_file_manager_entry</property> + <property name="mnemonic_widget">custom_browser_entry</property> </widget> <packing> - <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_browser_entry"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <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="y_options"></property> - </packing> - </child> - <child> - <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_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="label200"> <property name="visible">True</property> @@ -1843,18 +1728,60 @@ Custom</property> </packing> </child> <child> - <widget class="GtkLabel" id="label199"> + <widget class="GtkEntry" id="custom_mail_client_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_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="GtkEntry" id="custom_browser_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <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="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label355"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">_File manager:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">custom_file_manager_entry</property> + </widget> + <packing> + <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_file_manager_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <signal name="changed" handler="on_custom_file_manager_entry_changed"/> + </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="y_options"></property> + </packing> + </child> </widget> </child> </widget> diff --git a/src/config.py b/src/config.py index d4c6df71f..2f4f43988 100644 --- a/src/config.py +++ b/src/config.py @@ -62,11 +62,12 @@ class PreferencesWindow: self.xml = gtkgui_helpers.get_glade('preferences_window.glade') self.window = self.xml.get_widget('preferences_window') self.window.set_transient_for(gajim.interface.roster.window) + self.notebook = self.xml.get_widget('preferences_notebook') + self.treat_incoming_messages_combobox =\ + self.xml.get_widget('treat_incoming_messages_combobox') + self.one_window_type_combobox =\ + self.xml.get_widget('one_window_type_combobox') self.iconset_combobox = self.xml.get_widget('iconset_combobox') - self.notify_on_new_message_radiobutton = self.xml.get_widget( - 'notify_on_new_message_radiobutton') - self.popup_new_message_radiobutton = self.xml.get_widget( - 'popup_new_message_radiobutton') self.notify_on_signin_checkbutton = self.xml.get_widget( 'notify_on_signin_checkbutton') self.notify_on_signout_checkbutton = self.xml.get_widget( @@ -82,30 +83,10 @@ class PreferencesWindow: self.auto_xa_time_spinbutton = self.xml.get_widget( 'auto_xa_time_spinbutton') self.auto_xa_message_entry = self.xml.get_widget('auto_xa_message_entry') - self.trayicon_checkbutton = self.xml.get_widget('trayicon_checkbutton') - self.notebook = self.xml.get_widget('preferences_notebook') - self.one_window_type_combobox =\ - self.xml.get_widget('one_window_type_combobox') - self.treat_incoming_messages_combobox =\ - self.xml.get_widget('treat_incoming_messages_combobox') w = self.xml.get_widget('anc_hbox') - # trayicon - if gajim.interface.systray_capabilities: - st = gajim.config.get('trayicon') - self.trayicon_checkbutton.set_active(st) - else: - self.trayicon_checkbutton.set_sensitive(False) - - # Save position - st = gajim.config.get('saveposition') - self.xml.get_widget('save_position_checkbutton').set_active(st) - - # Sort contacts by show - st = gajim.config.get('sort_by_show') - self.xml.get_widget('sort_by_show_checkbutton').set_active(st) - + ### General tab ### # Display avatars in roster st = gajim.config.get('show_avatars_in_roster') self.xml.get_widget('show_avatars_in_roster_checkbutton').set_active(st) @@ -115,6 +96,10 @@ class PreferencesWindow: self.xml.get_widget('show_status_msgs_in_roster_checkbutton').set_active( st) + # Sort contacts by show + st = gajim.config.get('sort_by_show') + self.xml.get_widget('sort_by_show_checkbutton').set_active(st) + # emoticons emoticons_combobox = self.xml.get_widget('emoticons_combobox') emoticons_list = os.listdir(os.path.join(gajim.DATA_DIR, 'emoticons')) @@ -141,6 +126,44 @@ class PreferencesWindow: if not gajim.config.get('emoticons_theme'): emoticons_combobox.set_active(len(l)-1) + # Set default for treat incoming messages + choices = common.config.opt_treat_incoming_messages + type = gajim.config.get('treat_incoming_messages') + if type in choices: + self.treat_incoming_messages_combobox.set_active(choices.index(type)) + else: + self.treat_incoming_messages_combobox.set_active(0) + + # Set default for single window type + choices = common.config.opt_one_window_types + type = gajim.config.get('one_message_window') + if type in choices: + self.one_window_type_combobox.set_active(choices.index(type)) + else: + self.one_window_type_combobox.set_active(0) + + # Compact View + st = gajim.config.get('compact_view') + self.xml.get_widget('compact_view_checkbutton').set_active(st) + + # Ignore XHTML + st = gajim.config.get('ignore_incoming_xhtml') + self.xml.get_widget('xhtml_checkbutton').set_active(st) + + # use speller + if HAS_GTK_SPELL: + st = gajim.config.get('use_speller') + self.xml.get_widget('speller_checkbutton').set_active(st) + else: + self.xml.get_widget('speller_checkbutton').set_sensitive(False) + + # Themes + theme_combobox = self.xml.get_widget('theme_combobox') + cell = gtk.CellRendererText() + theme_combobox.pack_start(cell, True) + theme_combobox.add_attribute(cell, 'text', 0) + self.update_theme_list() + # iconset iconsets_list = os.listdir(os.path.join(gajim.DATA_DIR, 'iconsets')) if os.path.isdir(gajim.MY_ICONSETS_PATH): @@ -178,121 +201,11 @@ class PreferencesWindow: if gajim.config.get('iconset') == l[i]: self.iconset_combobox.set_active(i) - # Set default for single window type - choices = common.config.opt_one_window_types - type = gajim.config.get('one_message_window') - if type in choices: - self.one_window_type_combobox.set_active(choices.index(type)) - else: - self.one_window_type_combobox.set_active(0) - - # Compact View - st = gajim.config.get('compact_view') - self.xml.get_widget('compact_view_checkbutton').set_active(st) - - # Set default for treat incoming messages - choices = common.config.opt_treat_incoming_messages - type = gajim.config.get('treat_incoming_messages') - if type in choices: - self.treat_incoming_messages_combobox.set_active(choices.index(type)) - else: - self.treat_incoming_messages_combobox.set_active(0) - # Use transports iconsets st = gajim.config.get('use_transports_iconsets') self.xml.get_widget('transports_iconsets_checkbutton').set_active(st) - # Themes - theme_combobox = self.xml.get_widget('theme_combobox') - cell = gtk.CellRendererText() - theme_combobox.pack_start(cell, True) - theme_combobox.add_attribute(cell, 'text', 0) - self.update_theme_list() - - # use speller - if os.name == 'nt': - self.xml.get_widget('speller_checkbutton').set_no_show_all(True) - else: - if HAS_GTK_SPELL: - st = gajim.config.get('use_speller') - self.xml.get_widget('speller_checkbutton').set_active(st) - else: - self.xml.get_widget('speller_checkbutton').set_sensitive(False) - - # Ignore XHTML - st = gajim.config.get('ignore_incoming_xhtml') - self.xml.get_widget('xhtml_checkbutton').set_active(st) - - # Print time - st = gajim.config.get('print_ichat_every_foo_minutes') - text = _('Every %s _minutes') % st - self.xml.get_widget('time_sometimes_radiobutton').set_label(text) - - if gajim.config.get('print_time') == 'never': - self.xml.get_widget('time_never_radiobutton').set_active(True) - elif gajim.config.get('print_time') == 'sometimes': - self.xml.get_widget('time_sometimes_radiobutton').set_active(True) - else: - self.xml.get_widget('time_always_radiobutton').set_active(True) - - # Color for incoming messages - colSt = gajim.config.get('inmsgcolor') - self.xml.get_widget('incoming_msg_colorbutton').set_color( - gtk.gdk.color_parse(colSt)) - - # Color for outgoing messages - colSt = gajim.config.get('outmsgcolor') - self.xml.get_widget('outgoing_msg_colorbutton').set_color( - gtk.gdk.color_parse(colSt)) - - # Color for status messages - colSt = gajim.config.get('statusmsgcolor') - self.xml.get_widget('status_msg_colorbutton').set_color( - gtk.gdk.color_parse(colSt)) - - # Color for hyperlinks - colSt = gajim.config.get('urlmsgcolor') - self.xml.get_widget('url_msg_colorbutton').set_color( - gtk.gdk.color_parse(colSt)) - - # Font for messages - font = gajim.config.get('conversation_font') - # try to set default font for the current desktop env - fontbutton = self.xml.get_widget('conversation_fontbutton') - if font == '': - fontbutton.set_sensitive(False) - self.xml.get_widget('default_chat_font').set_active(True) - else: - fontbutton.set_font_name(font) - - # on new message - only_in_roster = True - if gajim.config.get('notify_on_new_message'): - self.xml.get_widget('notify_on_new_message_radiobutton').set_active( - True) - only_in_roster = False - if gajim.config.get('autopopup'): - self.xml.get_widget('popup_new_message_radiobutton').set_active(True) - only_in_roster = False - if only_in_roster: - self.xml.get_widget('only_in_roster_radiobutton').set_active(True) - - # notify on online statuses - st = gajim.config.get('notify_on_signin') - self.notify_on_signin_checkbutton.set_active(st) - - # notify on offline statuses - st = gajim.config.get('notify_on_signout') - self.notify_on_signout_checkbutton.set_active(st) - - # autopopupaway - st = gajim.config.get('autopopupaway') - self.auto_popup_away_checkbutton.set_active(st) - - # Ignore messages from unknown contacts - self.xml.get_widget('ignore_events_from_unknown_contacts_checkbutton').\ - set_active(gajim.config.get('ignore_unknown_contacts')) - + ### Privacy tab ### # outgoing send chat state notifications st = gajim.config.get('outgoing_chat_state_notifications') combo = self.xml.get_widget('outgoing_chat_states_combobox') @@ -313,6 +226,32 @@ class PreferencesWindow: else: # disabled combo.set_active(2) + # Ignore messages from unknown contacts + self.xml.get_widget('ignore_events_from_unknown_contacts_checkbutton').\ + set_active(gajim.config.get('ignore_unknown_contacts')) + + ### Events tab ### + # On new event + on_event_combobox = self.xml.get_widget('on_event_combobox') + if gajim.config.get('autopopup'): + on_event_combobox.set_active(0) + elif gajim.config.get('notify_on_new_message'): + on_event_combobox.set_active(1) + else: + on_event_combobox.set_active(2) + + # notify on online statuses + st = gajim.config.get('notify_on_signin') + self.notify_on_signin_checkbutton.set_active(st) + + # notify on offline statuses + st = gajim.config.get('notify_on_signout') + self.notify_on_signout_checkbutton.set_active(st) + + # autopopupaway + st = gajim.config.get('autopopupaway') + self.auto_popup_away_checkbutton.set_active(st) + # sounds if os.name == 'nt': # if windows, player must not become visible on show_all @@ -361,7 +300,7 @@ class PreferencesWindow: self.fill_sound_treeview() - #Autoaway + # Autoaway st = gajim.config.get('autoaway') self.auto_away_checkbutton.set_active(st) @@ -496,7 +435,7 @@ class PreferencesWindow: widget.set_active(st) else: widget.set_sensitive(False) - + # Notify user of new gmail e-mail messages, # only show checkbox if user has a gtalk account frame_gmail = self.xml.get_widget('frame_gmail') @@ -515,7 +454,37 @@ class PreferencesWindow: break else: frame_gmail.hide() - + + # Color for incoming messages + colSt = gajim.config.get('inmsgcolor') + self.xml.get_widget('incoming_msg_colorbutton').set_color( + gtk.gdk.color_parse(colSt)) + + # Color for outgoing messages + colSt = gajim.config.get('outmsgcolor') + self.xml.get_widget('outgoing_msg_colorbutton').set_color( + gtk.gdk.color_parse(colSt)) + + # Color for status messages + colSt = gajim.config.get('statusmsgcolor') + self.xml.get_widget('status_msg_colorbutton').set_color( + gtk.gdk.color_parse(colSt)) + + # Color for hyperlinks + colSt = gajim.config.get('urlmsgcolor') + self.xml.get_widget('url_msg_colorbutton').set_color( + gtk.gdk.color_parse(colSt)) + + # Font for messages + font = gajim.config.get('conversation_font') + # try to set default font for the current desktop env + fontbutton = self.xml.get_widget('conversation_fontbutton') + if font == '': + fontbutton.set_sensitive(False) + self.xml.get_widget('default_chat_font').set_active(True) + else: + fontbutton.set_font_name(font) + self.xml.signal_autoconnect(self) self.sound_tree.get_model().connect('row-changed', @@ -545,36 +514,6 @@ class PreferencesWindow: w.set_sensitive(widget.get_active()) gajim.interface.save_config() - def on_trayicon_checkbutton_toggled(self, widget): - if widget.get_active(): - gajim.config.set('trayicon', True) - gajim.interface.show_systray() - show = helpers.get_global_show() - gajim.interface.systray.change_status(show) - else: - gajim.config.set('trayicon', False) - if not gajim.interface.roster.window.get_property('visible'): - gajim.interface.roster.window.present() - gajim.interface.hide_systray() - # no tray, show roster! - gajim.config.set('show_roster_on_startup', True) - gajim.interface.roster.draw_roster() - gajim.interface.save_config() - - def on_save_position_checkbutton_toggled(self, widget): - self.on_checkbutton_toggled(widget, 'saveposition') - - def on_sort_by_show_checkbutton_toggled(self, widget): - self.on_checkbutton_toggled(widget, 'sort_by_show') - gajim.interface.roster.draw_roster() - - def on_show_status_msgs_in_roster_checkbutton_toggled(self, widget): - self.on_checkbutton_toggled(widget, 'show_status_msgs_in_roster') - gajim.interface.roster.draw_roster() - for ctl in gajim.interface.msg_win_mgr.controls(): - if ctl.type_id == message_control.TYPE_GC: - ctl.update_ui() - def on_show_avatars_in_roster_checkbutton_toggled(self, widget): self.on_checkbutton_toggled(widget, 'show_avatars_in_roster') gajim.interface.roster.draw_roster() @@ -585,7 +524,18 @@ class PreferencesWindow: message_control.TYPE_GC) + \ gajim.interface.minimized_controls[account].values(): gc_control.draw_roster() - + + def on_show_status_msgs_in_roster_checkbutton_toggled(self, widget): + self.on_checkbutton_toggled(widget, 'show_status_msgs_in_roster') + gajim.interface.roster.draw_roster() + for ctl in gajim.interface.msg_win_mgr.controls(): + if ctl.type_id == message_control.TYPE_GC: + ctl.update_ui() + + def on_sort_by_show_checkbutton_toggled(self, widget): + self.on_checkbutton_toggled(widget, 'sort_by_show') + gajim.interface.roster.draw_roster() + def on_emoticons_combobox_changed(self, widget): active = widget.get_active() model = widget.get_model() @@ -604,51 +554,10 @@ class PreferencesWindow: for win in gajim.interface.msg_win_mgr.windows(): win.toggle_emoticons() - def on_iconset_combobox_changed(self, widget): - model = widget.get_model() + def on_treat_incoming_messages_combobox_changed(self, widget): active = widget.get_active() - icon_string = model[active][1].decode('utf-8') - gajim.config.set('iconset', icon_string) - gajim.interface.roster.reload_jabber_state_images() - gajim.interface.save_config() - - def on_transports_iconsets_checkbutton_toggled(self, widget): - self.on_checkbutton_toggled(widget, 'use_transports_iconsets') - gajim.interface.roster.reload_jabber_state_images() - - def on_manage_theme_button_clicked(self, widget): - if self.theme_preferences is None: - self.theme_preferences = dialogs.GajimThemesWindow() - else: - self.theme_preferences.window.present() - self.theme_preferences.select_active_theme() - - def on_theme_combobox_changed(self, widget): - model = widget.get_model() - active = widget.get_active() - config_theme = model[active][0].decode('utf-8').replace(' ', '_') - - gajim.config.set('roster_theme', config_theme) - - # begin repainting themed widgets throughout - gajim.interface.roster.repaint_themed_widgets() - gajim.interface.roster.change_roster_style(None) - gajim.interface.save_config() - - def update_theme_list(self): - theme_combobox = self.xml.get_widget('theme_combobox') - model = gtk.ListStore(str) - theme_combobox.set_model(model) - i = 0 - for config_theme in gajim.config.get_per('themes'): - theme = config_theme.replace('_', ' ') - model.append([theme]) - if gajim.config.get('roster_theme') == config_theme: - theme_combobox.set_active(i) - i += 1 - - def on_open_advanced_notifications_button_clicked(self, widget): - dialogs.AdvancedNotificationsWindow() + config_type = common.config.opt_treat_incoming_messages[active] + gajim.config.set('treat_incoming_messages', config_type) def on_one_window_type_combo_changed(self, widget): active = widget.get_active() @@ -657,10 +566,16 @@ class PreferencesWindow: gajim.interface.save_config() gajim.interface.msg_win_mgr.reconfig() - def on_treat_incoming_messages_combobox_changed(self, widget): + def on_compact_view_checkbutton_toggled(self, widget): active = widget.get_active() - config_type = common.config.opt_treat_incoming_messages[active] - gajim.config.set('treat_incoming_messages', config_type) + for ctl in gajim.interface.msg_win_mgr.controls(): + ctl.chat_buttons_set_visible(active) + gajim.config.set('compact_view', active) + gajim.interface.save_config() + gajim.interface.roster.draw_roster() + + def on_xhtml_checkbutton_toggled(self, widget): + self.on_checkbutton_toggled(widget, 'ignore_incoming_xhtml') def apply_speller(self): for acct in gajim.connections: @@ -685,15 +600,6 @@ class PreferencesWindow: if spell_obj: spell_obj.detach() - def on_compact_view_checkbutton_toggled(self, widget): - active = widget.get_active() - for ctl in gajim.interface.msg_win_mgr.controls(): - ctl.chat_buttons_set_visible(active) - gajim.config.set('compact_view', active) - gajim.interface.save_config() - gajim.interface.roster.draw_roster() - - def on_speller_checkbutton_toggled(self, widget): active = widget.get_active() gajim.config.set('use_speller', active) @@ -719,22 +625,111 @@ class PreferencesWindow: else: self.remove_speller() - def on_xhtml_checkbutton_toggled(self, widget): - self.on_checkbutton_toggled(widget, 'ignore_incoming_xhtml') - - def on_time_never_radiobutton_toggled(self, widget): - if widget.get_active(): - gajim.config.set('print_time', 'never') + def on_theme_combobox_changed(self, widget): + model = widget.get_model() + active = widget.get_active() + config_theme = model[active][0].decode('utf-8').replace(' ', '_') + + gajim.config.set('roster_theme', config_theme) + + # begin repainting themed widgets throughout + gajim.interface.roster.repaint_themed_widgets() + gajim.interface.roster.change_roster_style(None) gajim.interface.save_config() - def on_time_sometimes_radiobutton_toggled(self, widget): - if widget.get_active(): - gajim.config.set('print_time', 'sometimes') + def update_theme_list(self): + theme_combobox = self.xml.get_widget('theme_combobox') + model = gtk.ListStore(str) + theme_combobox.set_model(model) + i = 0 + for config_theme in gajim.config.get_per('themes'): + theme = config_theme.replace('_', ' ') + model.append([theme]) + if gajim.config.get('roster_theme') == config_theme: + theme_combobox.set_active(i) + i += 1 + + def on_manage_theme_button_clicked(self, widget): + if self.theme_preferences is None: + self.theme_preferences = dialogs.GajimThemesWindow() + else: + self.theme_preferences.window.present() + self.theme_preferences.select_active_theme() + + def on_iconset_combobox_changed(self, widget): + model = widget.get_model() + active = widget.get_active() + icon_string = model[active][1].decode('utf-8') + gajim.config.set('iconset', icon_string) + gajim.interface.roster.reload_jabber_state_images() gajim.interface.save_config() - def on_time_always_radiobutton_toggled(self, widget): - if widget.get_active(): - gajim.config.set('print_time', 'always') + def on_transports_iconsets_checkbutton_toggled(self, widget): + self.on_checkbutton_toggled(widget, 'use_transports_iconsets') + gajim.interface.roster.reload_jabber_state_images() + + def on_outgoing_chat_states_combobox_changed(self, widget): + active = widget.get_active() + if active == 0: # all + gajim.config.set('outgoing_chat_state_notifications', 'all') + elif active == 1: # only composing + gajim.config.set('outgoing_chat_state_notifications', 'composing_only') + else: # disabled + gajim.config.set('outgoing_chat_state_notifications', 'disabled') + + def on_displayed_chat_states_combobox_changed(self, widget): + active = widget.get_active() + if active == 0: # all + gajim.config.set('displayed_chat_state_notifications', 'all') + elif active == 1: # only composing + gajim.config.set('displayed_chat_state_notifications', + 'composing_only') + else: # disabled + gajim.config.set('displayed_chat_state_notifications', 'disabled') + + def on_ignore_events_from_unknown_contacts_checkbutton_toggled(self, widget): + self.on_checkbutton_toggled(widget, 'ignore_unknown_contacts') + + def on_on_event_combobox_changed(self, widget): + active = widget.get_active() + if active == 0: + gajim.config.set('autopopup', True) + gajim.config.set('notify_on_new_message', False) + elif active == 1: + gajim.config.set('autopopup', False) + gajim.config.set('notify_on_new_message', True) + else: + gajim.config.set('autopopup', False) + gajim.config.set('notify_on_new_message', False) + + def on_notify_on_signin_checkbutton_toggled(self, widget): + self.on_checkbutton_toggled(widget, 'notify_on_signin') + + def on_notify_on_signout_checkbutton_toggled(self, widget): + self.on_checkbutton_toggled(widget, 'notify_on_signout') + + def on_auto_popup_away_checkbutton_toggled(self, widget): + self.on_checkbutton_toggled(widget, 'autopopupaway') + + def on_open_advanced_notifications_button_clicked(self, widget): + dialogs.AdvancedNotificationsWindow() + + def on_play_sounds_checkbutton_toggled(self, widget): + self.on_checkbutton_toggled(widget, 'sounds_on', + [self.xml.get_widget('soundplayer_hbox'), + self.xml.get_widget('sounds_scrolledwindow'), + self.xml.get_widget('browse_sounds_hbox')]) + + def on_soundplayer_entry_changed(self, widget): + gajim.config.set('soundplayer', widget.get_text().decode('utf-8')) + gajim.interface.save_config() + + def on_sounds_treemodel_row_changed(self, model, path, iter): + sound_event = model[iter][3].decode('utf-8') + gajim.config.set_per('soundevents', sound_event, 'enabled', + bool(model[path][0])) + gajim.config.set_per('soundevents', sound_event, 'path', + model[iter][2].decode('utf-8')) gajim.interface.save_config() def update_text_tags(self): @@ -802,73 +797,6 @@ class PreferencesWindow: self.update_text_tags() gajim.interface.save_config() - def on_notify_on_new_message_radiobutton_toggled(self, widget): - self.on_checkbutton_toggled(widget, 'notify_on_new_message', - [self.auto_popup_away_checkbutton]) - - def on_popup_new_message_radiobutton_toggled(self, widget): - self.on_checkbutton_toggled(widget, 'autopopup', - [self.auto_popup_away_checkbutton]) - - def on_only_in_roster_radiobutton_toggled(self, widget): - if widget.get_active(): - self.auto_popup_away_checkbutton.set_sensitive(False) - - def on_notify_on_signin_checkbutton_toggled(self, widget): - self.on_checkbutton_toggled(widget, 'notify_on_signin') - - def on_notify_on_signout_checkbutton_toggled(self, widget): - self.on_checkbutton_toggled(widget, 'notify_on_signout') - - def on_auto_popup_away_checkbutton_toggled(self, widget): - self.on_checkbutton_toggled(widget, 'autopopupaway') - - def on_ignore_events_from_unknown_contacts_checkbutton_toggled(self, widget): - self.on_checkbutton_toggled(widget, 'ignore_unknown_contacts') - - def on_outgoing_chat_states_combobox_changed(self, widget): - active = widget.get_active() - if active == 0: # all - gajim.config.set('outgoing_chat_state_notifications', 'all') - elif active == 1: # only composing - gajim.config.set('outgoing_chat_state_notifications', 'composing_only') - else: # disabled - gajim.config.set('outgoing_chat_state_notifications', 'disabled') - - def on_displayed_chat_states_combobox_changed(self, widget): - active = widget.get_active() - if active == 0: # all - gajim.config.set('displayed_chat_state_notifications', 'all') - elif active == 1: # only composing - gajim.config.set('displayed_chat_state_notifications', - 'composing_only') - else: # disabled - gajim.config.set('displayed_chat_state_notifications', 'disabled') - - def on_play_sounds_checkbutton_toggled(self, widget): - self.on_checkbutton_toggled(widget, 'sounds_on', - [self.xml.get_widget('soundplayer_hbox'), - self.xml.get_widget('sounds_scrolledwindow'), - self.xml.get_widget('browse_sounds_hbox')]) - - def on_soundplayer_entry_changed(self, widget): - gajim.config.set('soundplayer', widget.get_text().decode('utf-8')) - gajim.interface.save_config() - - def on_prompt_online_status_message_checkbutton_toggled(self, widget): - self.on_checkbutton_toggled(widget, 'ask_online_status') - - def on_prompt_offline_status_message_checkbutton_toggled(self, widget): - self.on_checkbutton_toggled(widget, 'ask_offline_status') - - def on_sounds_treemodel_row_changed(self, model, path, iter): - sound_event = model[iter][3].decode('utf-8') - gajim.config.set_per('soundevents', sound_event, 'enabled', - bool(model[path][0])) - gajim.config.set_per('soundevents', sound_event, 'path', - model[iter][2].decode('utf-8')) - gajim.interface.save_config() - def on_auto_away_checkbutton_toggled(self, widget): self.on_checkbutton_toggled(widget, 'autoaway', [self.auto_away_time_spinbutton, self.auto_away_message_entry]) @@ -899,6 +827,12 @@ class PreferencesWindow: def on_auto_xa_message_entry_changed(self, widget): gajim.config.set('autoxa_message', widget.get_text().decode('utf-8')) + def on_prompt_online_status_message_checkbutton_toggled(self, widget): + self.on_checkbutton_toggled(widget, 'ask_online_status') + + def on_prompt_offline_status_message_checkbutton_toggled(self, widget): + self.on_checkbutton_toggled(widget, 'ask_offline_status') + def fill_default_msg_treeview(self): model = self.default_msg_tree.get_model() model.clear()