Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/gajim-plugins.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwurstsalat <mailtrash@posteo.de>2021-10-26 23:07:55 +0300
committerwurstsalat <mailtrash@posteo.de>2021-10-26 23:07:55 +0300
commit352d0ec1411969262119f75e15af1c2f12a8531b (patch)
tree66f584274af0bddacf964f6fd5f0992cce430d6c /triggers
parent3ac35b359c1929e7ebf9feb1d1951d98a3967ed2 (diff)
[triggers] Adapt to Gajim changes
Diffstat (limited to 'triggers')
-rw-r--r--triggers/gtk/config.py52
-rw-r--r--triggers/gtk/config.ui619
-rw-r--r--triggers/triggers.py279
3 files changed, 345 insertions, 605 deletions
diff --git a/triggers/gtk/config.py b/triggers/gtk/config.py
index d64f809..eafc702 100644
--- a/triggers/gtk/config.py
+++ b/triggers/gtk/config.py
@@ -28,24 +28,6 @@ from gajim.plugins.helpers import get_builder
EVENTS = {
'message_received': [],
- 'contact_connected': [
- 'use_systray_cb',
- 'disable_systray_cb',
- 'use_roster_cb',
- 'disable_roster_cb'
- ],
- 'contact_disconnected': [
- 'use_systray_cb',
- 'disable_systray_cb',
- 'use_roster_cb',
- 'disable_roster_cb'
- ],
- 'contact_status_change': [
- 'use_systray_cb',
- 'disable_systray_cb',
- 'use_roster_cb',
- 'disable_roster_cb'
- ]
}
RECIPIENT_TYPES = [
@@ -63,7 +45,7 @@ class ConfigDialog(Gtk.ApplicationWindow):
self.set_show_menubar(False)
self.set_title(_('Triggers Configuration'))
self.set_transient_for(transient)
- self.set_default_size(600, 700)
+ self.set_default_size(600, 800)
self.set_type_hint(Gdk.WindowTypeHint.DIALOG)
self.set_modal(True)
self.set_destroy_with_parent(True)
@@ -95,9 +77,7 @@ class ConfigDialog(Gtk.ApplicationWindow):
'recipient_type_combobox', 'recipient_list_entry',
'delete_button', 'online_cb', 'away_cb', 'xa_cb', 'dnd_cb',
'use_sound_cb', 'disable_sound_cb', 'use_popup_cb',
- 'disable_popup_cb', 'use_auto_open_cb',
- 'disable_auto_open_cb', 'use_systray_cb',
- 'disable_systray_cb', 'use_roster_cb', 'disable_roster_cb',
+ 'disable_popup_cb',
'tab_opened_cb', 'not_tab_opened_cb', 'has_focus_cb',
'not_has_focus_cb', 'filechooser', 'sound_file_box',
'up_button', 'down_button', 'run_command_cb',
@@ -233,7 +213,7 @@ class ConfigDialog(Gtk.ApplicationWindow):
self._ui.filechooser.set_filename(value)
# sound, popup, auto_open, systray, roster
- for option in ('sound', 'popup', 'auto_open', 'systray', 'roster'):
+ for option in ('sound', 'popup'):
value = self._config[self._active_num][option]
if value == 'yes':
self._ui.__dict__['use_' + option + '_cb'].set_active(True)
@@ -322,11 +302,8 @@ class ConfigDialog(Gtk.ApplicationWindow):
'sound': '',
'sound_file': '',
'popup': '',
- 'auto_open': '',
'run_command': False,
'command': '',
- 'systray': '',
- 'roster': '',
'one_shot': False,
}
iter_ = model.append((num, ''))
@@ -397,9 +374,6 @@ class ConfigDialog(Gtk.ApplicationWindow):
return
event = list(EVENTS.keys())[active]
self._config[self._active_num]['event'] = event
- for widget in ('use_systray_cb', 'disable_systray_cb', 'use_roster_cb',
- 'disable_roster_cb'):
- self._ui.__dict__[widget].set_sensitive(True)
for widget in EVENTS[event]:
self._ui.__dict__[widget].set_sensitive(False)
self._ui.__dict__[widget].set_state(False)
@@ -555,14 +529,6 @@ class ConfigDialog(Gtk.ApplicationWindow):
def _on_disable_popup_cb_toggled(self, widget):
self._on_disable_it_toggled(widget, self._ui.use_popup_cb, 'popup')
- def _on_use_auto_open_cb_toggled(self, widget):
- self._on_use_it_toggled(widget, self._ui.disable_auto_open_cb,
- 'auto_open')
-
- def _on_disable_auto_open_cb_toggled(self, widget):
- self._on_disable_it_toggled(widget, self._ui.use_auto_open_cb,
- 'auto_open')
-
def _on_run_command_cb_toggled(self, widget):
self._config[self._active_num]['run_command'] = widget.get_active()
if widget.get_active():
@@ -573,18 +539,6 @@ class ConfigDialog(Gtk.ApplicationWindow):
def _on_command_entry_changed(self, widget):
self._config[self._active_num]['command'] = widget.get_text()
- def _on_use_systray_cb_toggled(self, widget):
- self._on_use_it_toggled(widget, self._ui.disable_systray_cb, 'systray')
-
- def _on_disable_systray_cb_toggled(self, widget):
- self._on_disable_it_toggled(widget, self._ui.use_systray_cb, 'systray')
-
- def _on_use_roster_cb_toggled(self, widget):
- self._on_use_it_toggled(widget, self._ui.disable_roster_cb, 'roster')
-
- def _on_disable_roster_cb_toggled(self, widget):
- self._on_disable_it_toggled(widget, self._ui.use_roster_cb, 'roster')
-
def _on_one_shot_cb_toggled(self, widget):
self._config[self._active_num]['one_shot'] = widget.get_active()
self._ui.command_entry.set_sensitive(widget.get_active())
diff --git a/triggers/gtk/config.ui b/triggers/gtk/config.ui
index bf6f416..c9a1be8 100644
--- a/triggers/gtk/config.ui
+++ b/triggers/gtk/config.ui
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.22.2 -->
+<!-- Generated with glade 3.38.2 -->
<interface>
- <requires lib="gtk+" version="3.20"/>
+ <requires lib="gtk+" version="3.24"/>
<object class="GtkListStore" id="liststore1">
<columns>
<!-- column-name item -->
@@ -44,42 +44,42 @@
</object>
<object class="GtkBox" id="box">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="border_width">18</property>
+ <property name="can-focus">False</property>
+ <property name="border-width">18</property>
<property name="orientation">vertical</property>
<property name="spacing">6</property>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="propagate_natural_width">True</property>
- <property name="propagate_natural_height">True</property>
+ <property name="can-focus">True</property>
+ <property name="propagate-natural-width">True</property>
+ <property name="propagate-natural-height">True</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">6</property>
<child>
<object class="GtkBox" id="rules_box">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkScrolledWindow">
- <property name="height_request">100</property>
+ <property name="height-request">100</property>
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="shadow_type">in</property>
+ <property name="can-focus">True</property>
+ <property name="shadow-type">in</property>
<child>
<object class="GtkTreeView" id="conditions_treeview">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="enable_grid_lines">horizontal</property>
+ <property name="can-focus">True</property>
+ <property name="enable-grid-lines">horizontal</property>
<signal name="cursor-changed" handler="_on_conditions_treeview_cursor_changed" swapped="no"/>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
@@ -96,18 +96,18 @@
<child>
<object class="GtkToolbar">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="show_arrow">False</property>
+ <property name="can-focus">False</property>
+ <property name="show-arrow">False</property>
<property name="icon_size">1</property>
<child>
<object class="GtkToolButton" id="up_button">
<property name="visible">True</property>
<property name="sensitive">False</property>
- <property name="can_focus">False</property>
- <property name="tooltip_text" translatable="yes">Up</property>
+ <property name="can-focus">False</property>
+ <property name="tooltip-text" translatable="yes">Up</property>
<property name="label" translatable="yes">Up</property>
- <property name="use_underline">True</property>
- <property name="stock_id">gtk-go-up</property>
+ <property name="use-underline">True</property>
+ <property name="icon-name">go-up-symbolic</property>
<signal name="clicked" handler="_on_up_button_clicked" swapped="no"/>
</object>
<packing>
@@ -119,11 +119,11 @@
<object class="GtkToolButton" id="down_button">
<property name="visible">True</property>
<property name="sensitive">False</property>
- <property name="can_focus">False</property>
- <property name="tooltip_text" translatable="yes">Down</property>
+ <property name="can-focus">False</property>
+ <property name="tooltip-text" translatable="yes">Down</property>
<property name="label" translatable="yes">Down</property>
- <property name="use_underline">True</property>
- <property name="stock_id">gtk-go-down</property>
+ <property name="use-underline">True</property>
+ <property name="icon-name">go-down-symbolic</property>
<signal name="clicked" handler="_on_down_button_clicked" swapped="no"/>
</object>
<packing>
@@ -134,11 +134,11 @@
<child>
<object class="GtkToolButton" id="new_button">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="tooltip_text" translatable="yes">New rule</property>
+ <property name="can-focus">False</property>
+ <property name="tooltip-text" translatable="yes">New rule</property>
<property name="label" translatable="yes">New rule</property>
- <property name="use_underline">True</property>
- <property name="stock_id">gtk-new</property>
+ <property name="use-underline">True</property>
+ <property name="icon-name">list-add-symbolic</property>
<signal name="clicked" handler="_on_new_button_clicked" swapped="no"/>
</object>
<packing>
@@ -149,11 +149,11 @@
<child>
<object class="GtkToolButton" id="delete_button">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="tooltip_text" translatable="yes">Delete rule</property>
+ <property name="can-focus">False</property>
+ <property name="tooltip-text" translatable="yes">Delete rule</property>
<property name="label" translatable="yes">Delete rule</property>
- <property name="use_underline">True</property>
- <property name="stock_id">gtk-delete</property>
+ <property name="use-underline">True</property>
+ <property name="icon-name">list-remove-symbolic</property>
<signal name="clicked" handler="_on_delete_button_clicked" swapped="no"/>
</object>
<packing>
@@ -181,23 +181,23 @@
<child>
<object class="GtkBox" id="config_box">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
<property name="halign">center</property>
<property name="orientation">vertical</property>
<property name="spacing">6</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="margin_top">6</property>
+ <property name="can-focus">False</property>
+ <property name="margin-top">6</property>
<property name="label" translatable="yes">Conditions</property>
- <property name="use_markup">True</property>
+ <property name="use-markup">True</property>
<style>
<class name="large-header"/>
<class name="dim-label"/>
@@ -210,33 +210,34 @@
</packing>
</child>
<child>
+ <!-- n-columns=2 n-rows=3 -->
<object class="GtkGrid">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
<property name="halign">center</property>
- <property name="row_spacing">6</property>
- <property name="column_spacing">12</property>
+ <property name="row-spacing">6</property>
+ <property name="column-spacing">12</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
<property name="halign">end</property>
<property name="label" translatable="yes">Event</property>
- <property name="use_markup">True</property>
+ <property name="use-markup">True</property>
<style>
<class name="dim-label"/>
</style>
</object>
<packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkComboBox" id="event_combobox">
- <property name="width_request">200</property>
+ <property name="width-request">200</property>
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
<property name="model">liststore2</property>
<signal name="changed" handler="_on_event_combobox_changed" swapped="no"/>
<child>
@@ -247,30 +248,30 @@
</child>
</object>
<packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
+ <property name="left-attach">1</property>
+ <property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
<property name="halign">end</property>
<property name="label" translatable="yes">Category</property>
- <property name="use_markup">True</property>
+ <property name="use-markup">True</property>
<style>
<class name="dim-label"/>
</style>
</object>
<packing>
- <property name="left_attach">0</property>
- <property name="top_attach">1</property>
+ <property name="left-attach">0</property>
+ <property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkComboBox" id="recipient_type_combobox">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
<property name="model">liststore1</property>
<signal name="changed" handler="_on_recipient_type_combobox_changed" swapped="no"/>
<child>
@@ -281,28 +282,28 @@
</child>
</object>
<packing>
- <property name="left_attach">1</property>
- <property name="top_attach">1</property>
+ <property name="left-attach">1</property>
+ <property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="recipient_list_entry">
- <property name="width_request">300</property>
+ <property name="width-request">300</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
- <property name="can_focus">True</property>
- <property name="tooltip_text" translatable="yes">comma separated list</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes">comma separated list</property>
<signal name="changed" handler="_on_recipient_list_entry_changed" swapped="no"/>
</object>
<packing>
- <property name="left_attach">1</property>
- <property name="top_attach">2</property>
+ <property name="left-attach">1</property>
+ <property name="top-attach">2</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
<property name="halign">end</property>
<property name="label" translatable="yes">List</property>
<style>
@@ -310,8 +311,8 @@
</style>
</object>
<packing>
- <property name="left_attach">0</property>
- <property name="top_attach">2</property>
+ <property name="left-attach">0</property>
+ <property name="top-attach">2</property>
</packing>
</child>
</object>
@@ -324,17 +325,17 @@
<child>
<object class="GtkBox">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
<property name="halign">center</property>
- <property name="margin_top">6</property>
+ <property name="margin-top">6</property>
<property name="spacing">6</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
<property name="valign">start</property>
<property name="label" translatable="yes">My status</property>
- <property name="use_markup">True</property>
+ <property name="use-markup">True</property>
<style>
<class name="dim-label"/>
</style>
@@ -349,11 +350,11 @@
<object class="GtkRadioButton" id="all_status_rb">
<property name="label" translatable="yes">All statuses</property>
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
<property name="valign">start</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
+ <property name="use-underline">True</property>
+ <property name="draw-indicator">True</property>
<property name="group">special_status_rb</property>
<signal name="toggled" handler="_on_status_radiobutton_toggled" swapped="no"/>
</object>
@@ -367,11 +368,11 @@
<object class="GtkRadioButton" id="special_status_rb">
<property name="label" translatable="yes">Certain status</property>
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
<property name="valign">start</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
+ <property name="use-underline">True</property>
+ <property name="draw-indicator">True</property>
<property name="group">all_status_rb</property>
</object>
<packing>
@@ -383,14 +384,14 @@
<child>
<object class="GtkExpander" id="status_expander">
<property name="visible">True</property>
- <property name="can_focus">True</property>
+ <property name="can-focus">True</property>
<property name="valign">start</property>
- <property name="margin_top">3</property>
+ <property name="margin-top">3</property>
<property name="expanded">True</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">6</property>
<child>
@@ -398,11 +399,11 @@
<property name="label" translatable="yes">Online</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
<property name="halign">start</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
+ <property name="use-underline">True</property>
+ <property name="draw-indicator">True</property>
<signal name="toggled" handler="_on_status_cb_toggled" swapped="no"/>
</object>
<packing>
@@ -416,11 +417,11 @@
<property name="label" translatable="yes">Away</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
<property name="halign">start</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
+ <property name="use-underline">True</property>
+ <property name="draw-indicator">True</property>
<signal name="toggled" handler="_on_status_cb_toggled" swapped="no"/>
</object>
<packing>
@@ -434,11 +435,11 @@
<property name="label" translatable="yes">Not Available</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
<property name="halign">start</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
+ <property name="use-underline">True</property>
+ <property name="draw-indicator">True</property>
<signal name="toggled" handler="_on_status_cb_toggled" swapped="no"/>
</object>
<packing>
@@ -452,11 +453,11 @@
<property name="label" translatable="yes">Busy</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
<property name="halign">start</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
+ <property name="use-underline">True</property>
+ <property name="draw-indicator">True</property>
<signal name="toggled" handler="_on_status_cb_toggled" swapped="no"/>
</object>
<packing>
@@ -470,7 +471,7 @@
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
<property name="label" translatable="yes">Status</property>
</object>
</child>
@@ -489,15 +490,16 @@
</packing>
</child>
<child>
+ <!-- n-columns=3 n-rows=2 -->
<object class="GtkGrid">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="row_spacing">6</property>
- <property name="column_spacing">12</property>
+ <property name="can-focus">False</property>
+ <property name="row-spacing">6</property>
+ <property name="column-spacing">12</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
<property name="halign">end</property>
<property name="label" translatable="yes">Chat Window</property>
<style>
@@ -505,14 +507,14 @@
</style>
</object>
<packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
<property name="halign">end</property>
<property name="label" translatable="yes">Focus</property>
<style>
@@ -520,70 +522,70 @@
</style>
</object>
<packing>
- <property name="left_attach">0</property>
- <property name="top_attach">1</property>
+ <property name="left-attach">0</property>
+ <property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="tab_opened_cb">
<property name="label" translatable="yes">Opened</property>
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
<property name="halign">start</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
+ <property name="use-underline">True</property>
+ <property name="draw-indicator">True</property>
<signal name="toggled" handler="_on_tab_opened_cb_toggled" swapped="no"/>
</object>
<packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
+ <property name="left-attach">1</property>
+ <property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="has_focus_cb">
<property name="label" translatable="yes">Has focus</property>
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
<property name="halign">start</property>
- <property name="draw_indicator">True</property>
+ <property name="draw-indicator">True</property>
<signal name="toggled" handler="_on_has_focus_cb_toggled" swapped="no"/>
</object>
<packing>
- <property name="left_attach">1</property>
- <property name="top_attach">1</property>
+ <property name="left-attach">1</property>
+ <property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="not_tab_opened_cb">
<property name="label" translatable="yes">Not opened</property>
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
<property name="halign">start</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
+ <property name="use-underline">True</property>
+ <property name="draw-indicator">True</property>
<signal name="toggled" handler="_on_not_tab_opened_cb_toggled" swapped="no"/>
</object>
<packing>
- <property name="left_attach">2</property>
- <property name="top_attach">0</property>
+ <property name="left-attach">2</property>
+ <property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="not_has_focus_cb">
<property name="label" translatable="yes">Does not have focus</property>
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
<property name="halign">start</property>
- <property name="draw_indicator">True</property>
+ <property name="draw-indicator">True</property>
<signal name="toggled" handler="_on_not_has_focus_cb_toggled" swapped="no"/>
</object>
<packing>
- <property name="left_attach">2</property>
- <property name="top_attach">1</property>
+ <property name="left-attach">2</property>
+ <property name="top-attach">1</property>
</packing>
</child>
</object>
@@ -603,17 +605,17 @@
<child>
<object class="GtkBox">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
<property name="halign">center</property>
<property name="orientation">vertical</property>
<property name="spacing">6</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="margin_top">6</property>
+ <property name="can-focus">False</property>
+ <property name="margin-top">6</property>
<property name="label" translatable="yes">Actions</property>
- <property name="use_markup">True</property>
+ <property name="use-markup">True</property>
<style>
<class name="large-header"/>
<class name="dim-label"/>
@@ -628,77 +630,13 @@
<child>
<object class="GtkBox">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">6</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">start</property>
- <property name="label" translatable="yes">Chat Window</property>
- <style>
- <class name="bold"/>
- <class name="dim-label"/>
- </style>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="use_auto_open_cb">
- <property name="label" translatable="yes">_Open chat window with contact</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="halign">start</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
- <signal name="toggled" handler="_on_use_auto_open_cb_toggled" swapped="no"/>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="disable_auto_open_cb">
- <property name="label" translatable="yes">_Disable automatically opening</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="halign">start</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
- <signal name="toggled" handler="_on_disable_auto_open_cb_toggled" swapped="no"/>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <property name="spacing">6</property>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes">Notifications</property>
<style>
@@ -714,13 +652,13 @@
</child>
<child>
<object class="GtkCheckButton" id="use_popup_cb">
- <property name="label" translatable="yes">Not_ificate me with a popup</property>
+ <property name="label" translatable="yes">Not_ify me with a popup</property>
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
<property name="halign">start</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
+ <property name="use-underline">True</property>
+ <property name="draw-indicator">True</property>
<signal name="toggled" handler="_on_use_popup_cb_toggled" swapped="no"/>
</object>
<packing>
@@ -733,11 +671,11 @@
<object class="GtkCheckButton" id="disable_popup_cb">
<property name="label" translatable="yes">_Disable existing notification</property>
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
<property name="halign">start</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
+ <property name="use-underline">True</property>
+ <property name="draw-indicator">True</property>
<signal name="toggled" handler="_on_disable_popup_cb_toggled" swapped="no"/>
</object>
<packing>
@@ -750,22 +688,22 @@
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
- <property name="position">2</property>
+ <property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">6</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes">Sounds</property>
- <property name="use_markup">True</property>
+ <property name="use-markup">True</property>
<style>
<class name="bold"/>
<class name="dim-label"/>
@@ -780,18 +718,18 @@
<child>
<object class="GtkBox">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
<property name="halign">start</property>
<property name="spacing">12</property>
<child>
<object class="GtkCheckButton" id="use_sound_cb">
<property name="label" translatable="yes">Play sound</property>
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
<property name="halign">start</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
+ <property name="use-underline">True</property>
+ <property name="draw-indicator">True</property>
<signal name="toggled" handler="_on_use_sound_cb_toggled" swapped="no"/>
</object>
<packing>
@@ -803,16 +741,16 @@
<child>
<object class="GtkBox" id="sound_file_box">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
<property name="spacing">12</property>
<child>
<object class="GtkFileChooserButton" id="filechooser">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="preview_widget_active">False</property>
- <property name="use_preview_label">False</property>
+ <property name="can-focus">False</property>
+ <property name="preview-widget-active">False</property>
+ <property name="use-preview-label">False</property>
<property name="title" translatable="yes">Select Sound</property>
- <property name="width_chars">15</property>
+ <property name="width-chars">15</property>
<signal name="file-set" handler="_on_sound_file_set" swapped="no"/>
</object>
<packing>
@@ -824,14 +762,14 @@
<child>
<object class="GtkButton" id="play_button">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
<signal name="clicked" handler="_on_play_button_clicked" swapped="no"/>
<child>
<object class="GtkImage">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="stock">gtk-media-play</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">media-playback-start-symbolic</property>
</object>
</child>
</object>
@@ -859,11 +797,11 @@
<object class="GtkCheckButton" id="disable_sound_cb">
<property name="label" translatable="yes">_Disable existing sound for this event</property>
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
<property name="halign">start</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
+ <property name="use-underline">True</property>
+ <property name="draw-indicator">True</property>
<signal name="toggled" handler="_on_disable_sound_cb_toggled" swapped="no"/>
</object>
<packing>
@@ -876,38 +814,40 @@
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Advanced</property>
+ <style>
+ <class name="bold"/>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkExpander">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="margin_top">6</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">center</property>
- <property name="orientation">vertical</property>
+ <property name="can-focus">False</property>
<property name="spacing">6</property>
<child>
- <object class="GtkCheckButton" id="one_shot_cb">
- <property name="label" translatable="yes">Delete this rule once applied</property>
+ <object class="GtkCheckButton" id="run_command_cb">
+ <property name="label" translatable="yes">Launch command</property>
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="halign">start</property>
- <property name="margin_top">6</property>
- <property name="draw_indicator">True</property>
- <signal name="toggled" handler="_on_one_shot_cb_toggled" swapped="no"/>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="use-underline">True</property>
+ <property name="draw-indicator">True</property>
+ <signal name="toggled" handler="_on_run_command_cb_toggled" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
@@ -916,174 +856,47 @@
</packing>
</child>
<child>
- <object class="GtkBox">
+ <object class="GtkEntry" id="command_entry">
+ <property name="width-request">200</property>
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">6</property>
- <child>
- <object class="GtkCheckButton" id="run_command_cb">
- <property name="label" translatable="yes">Launch command</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
- <signal name="toggled" handler="_on_run_command_cb_toggled" swapped="no"/>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="command_entry">
- <property name="width_request">200</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="placeholder_text" translatable="yes">Command...</property>
- <signal name="changed" handler="_on_command_entry_changed" swapped="no"/>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkGrid">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="row_spacing">6</property>
- <property name="column_spacing">12</property>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">start</property>
- <property name="label" translatable="yes">Notification</property>
- <style>
- <class name="bold"/>
- <class name="dim-label"/>
- </style>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">start</property>
- <property name="label" translatable="yes">Contact List</property>
- <style>
- <class name="bold"/>
- <class name="dim-label"/>
- </style>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="use_roster_cb">
- <property name="label" translatable="yes">_Show event</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="halign">start</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
- <signal name="toggled" handler="_on_use_roster_cb_toggled" swapped="no"/>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="disable_roster_cb">
- <property name="label" translatable="yes">_Disable showing event</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="halign">start</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
- <signal name="toggled" handler="_on_disable_roster_cb_toggled" swapped="no"/>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="use_systray_cb">
- <property name="label" translatable="yes">_Show event</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="halign">start</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
- <signal name="toggled" handler="_on_use_systray_cb_toggled" swapped="no"/>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="disable_systray_cb">
- <property name="label" translatable="yes">_Disable showing event</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="halign">start</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
- <signal name="toggled" handler="_on_disable_systray_cb_toggled" swapped="no"/>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">2</property>
- </packing>
- </child>
+ <property name="can-focus">True</property>
+ <property name="placeholder-text" translatable="yes">Command...</property>
+ <signal name="changed" handler="_on_command_entry_changed" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
- <property name="position">7</property>
+ <property name="position">1</property>
</packing>
</child>
</object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">4</property>
+ </packing>
</child>
- <child type="label">
- <object class="GtkLabel">
+ <child>
+ <object class="GtkCheckButton" id="one_shot_cb">
+ <property name="label" translatable="yes">Delete this rule once applied</property>
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Advanced Actions</property>
- <style>
- <class name="bold"/>
- <class name="dim-label"/>
- </style>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="draw-indicator">True</property>
+ <signal name="toggled" handler="_on_one_shot_cb_toggled" swapped="no"/>
</object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">5</property>
+ </packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
- <property name="position">2</property>
+ <property name="position">1</property>
</packing>
</child>
</object>
diff --git a/triggers/triggers.py b/triggers/triggers.py
index 844f422..aa85386 100644
--- a/triggers/triggers.py
+++ b/triggers/triggers.py
@@ -35,28 +35,125 @@ class Triggers(GajimPlugin):
self.events_handlers = {
'notification': (ged.PREGUI, self._on_notification),
- 'decrypted-message-received': (ged.PREGUI2,
- self._on_message_received),
- 'gc-message-received': (ged.PREGUI2, self._on_gc_message_received),
+ 'message-received': (ged.PREGUI2, self._on_message_received),
+ 'gc-message-received': (ged.PREGUI2, self._on_message_received),
'presence-received': (ged.PREGUI, self._on_presence_received),
}
- def _check_rule_recipients(self, obj, rule):
+ def _on_notification(self, event):
+ self._check_all(event,
+ self._check_rule_apply_notification,
+ self._apply_rule)
+
+ def _on_message_received(self, event):
+ self._check_all(event,
+ self._check_rule_apply_msg_received,
+ self._apply_rule)
+
+ def _on_presence_received(self, event):
+ if event.old_show < 2 and event.new_show > 1:
+ check_func = self._check_rule_apply_connected
+ elif event.old_show > 1 and event.new_show < 2:
+ check_func = self._check_rule_apply_disconnected
+ else:
+ check_func = self._check_rule_apply_status_changed
+ self._check_all(event, check_func, self._apply_rule)
+
+ def _check_all(self, event, check_func, apply_func):
+ # check rules in order
+ rules_num = [int(item) for item in self.config.keys()]
+ rules_num.sort()
+ to_remove = []
+ for num in rules_num:
+ rule = self.config[str(num)]
+ if check_func(event, rule):
+ apply_func(event, rule)
+ if 'one_shot' in rule and rule['one_shot']:
+ to_remove.append(num)
+ # Should we stop after first valid rule ?
+ # break
+
+ decal = 0
+ num = 0
+ while str(num) in self.config:
+ if num + decal in to_remove:
+ num2 = num
+ while str(num2 + 1) in self.config:
+ self.config[str(num2)] = self.config[str(num2 + 1)].copy()
+ num2 += 1
+ del self.config[str(num2)]
+ decal += 1
+ else:
+ num += 1
+
+ def _check_rule_apply_msg_received(self, event, rule):
+ return self._check_rule_all('message_received', event, rule)
+
+ def _check_rule_apply_connected(self, event, rule):
+ return self._check_rule_all('contact_connected', event, rule)
+
+ def _check_rule_apply_disconnected(self, event, rule):
+ return self._check_rule_all('contact_disconnected', event, rule)
+
+ def _check_rule_apply_status_changed(self, event, rule):
+ return self._check_rule_all('contact_status_change', event, rule)
+
+ def _check_rule_apply_notification(self, event, rule):
+ # Check notification type
+ notif_type = ''
+ if event.notif_type == 'incoming-message':
+ notif_type = 'message_received'
+ if event.notif_type == 'pres':
+ # TODO:
+ if (event.base_event.old_show < 2 and
+ event.base_event.new_show > 1):
+ notif_type = 'contact_connected'
+ elif (event.base_event.old_show > 1 and
+ event.base_event.new_show < 2):
+ notif_type = 'contact_disconnected'
+ else:
+ notif_type = 'contact_status_change'
+
+ return self._check_rule_all(notif_type, event, rule)
+
+ def _check_rule_all(self, notif_type, event, rule):
+ # Check notification type
+ if rule['event'] != notif_type:
+ return False
+
+ # notification type is ok. Now check recipient
+ if not self._check_rule_recipients(event, rule):
+ return False
+
+ # recipient is ok. Now check our status
+ if not self._check_rule_status(event, rule):
+ return False
+
+ # our_status is ok. Now check opened chat window
+ if not self._check_rule_tab_opened(event, rule):
+ return False
+
+ # tab_opened is ok. Now check opened chat window
+ if not self._check_rule_has_focus(event, rule):
+ return False
+
+ # All is ok
+ return True
+
+ def _check_rule_recipients(self, event, rule):
rule_recipients = [t.strip() for t in rule['recipients'].split(',')]
if rule['recipient_type'] == 'groupchat':
- if obj.jid in rule_recipients:
+ if event.jid in rule_recipients:
return True
return False
- if (rule['recipient_type'] == 'contact' and obj.jid not in
+ if (rule['recipient_type'] == 'contact' and event.jid not in
rule_recipients):
return False
- contact = app.contacts.get_first_contact_from_jid(
- obj.conn.name, obj.jid)
- if not contact: # PM?
- return False
- contact_groups = contact.groups
+ client = app.get_client(event.account)
+ contact = client.get_module('Contacts').get_contact(event.jid)
+
group_found = False
- for group in contact_groups:
+ for group in contact.groups:
if group in rule_recipients:
group_found = True
break
@@ -65,19 +162,19 @@ class Triggers(GajimPlugin):
return True
- def _check_rule_status(self, obj, rule):
+ def _check_rule_status(self, event, rule):
rule_statuses = rule['status'].split()
- our_status = app.connections[obj.conn.name].status
+ our_status = app.connections[event.account].status
if rule['status'] != 'all' and our_status not in rule_statuses:
return False
return True
- def _check_rule_tab_opened(self, obj, rule):
+ def _check_rule_tab_opened(self, event, rule):
if rule['tab_opened'] == 'both':
return True
tab_opened = False
- if app.interface.msg_win_mgr.get_control(obj.jid, obj.conn.name):
+ if app.window.get_control(event.account, event.jid):
tab_opened = True
if tab_opened and rule['tab_opened'] == 'no':
return False
@@ -86,17 +183,17 @@ class Triggers(GajimPlugin):
return True
- def _check_rule_has_focus(self, obj, rule):
+ def _check_rule_has_focus(self, event, rule):
if rule['has_focus'] == 'both':
return True
if rule['tab_opened'] == 'no':
# Does not apply in this case
return True
- ctrl = app.interface.msg_win_mgr.get_control(obj.jid, obj.conn.name)
+ ctrl = app.window.get_control(event.account, event.jid)
if not ctrl:
# Does not apply in this case
return True
- has_focus = ctrl.parent_win.window.has_focus()
+ has_focus = ctrl.has_focus()
if has_focus and rule['has_focus'] == 'no':
return False
elif not has_focus and rule['has_focus'] == 'yes':
@@ -104,142 +201,18 @@ class Triggers(GajimPlugin):
return True
- def _check_rule_all(self, event, obj, rule):
- # Check notification type
- if rule['event'] != event:
- return False
-
- # notification type is ok. Now check recipient
- if not self._check_rule_recipients(obj, rule):
- return False
-
- # recipient is ok. Now check our status
- if not self._check_rule_status(obj, rule):
- return False
-
- # our_status is ok. Now check opened chat window
- if not self._check_rule_tab_opened(obj, rule):
- return False
-
- # tab_opened is ok. Now check opened chat window
- if not self._check_rule_has_focus(obj, rule):
- return False
-
- # All is ok
- return True
-
- def _check_rule_apply_notification(self, obj, rule):
- # Check notification type
- notif_type = ''
- if obj.notif_type in ('msg', 'gc-msg'):
- notif_type = 'message_received'
- elif obj.notif_type == 'pres':
- if obj.base_event.old_show < 2 and obj.base_event.new_show > 1:
- notif_type = 'contact_connected'
- elif obj.base_event.old_show > 1 and obj.base_event.new_show < 2:
- notif_type = 'contact_disconnected'
- else:
- notif_type = 'contact_status_change'
-
- return self._check_rule_all(notif_type, obj, rule)
-
- def _check_rule_apply_msg_received(self, obj, rule):
- return self._check_rule_all('message_received', obj, rule)
-
- def _check_rule_apply_connected(self, obj, rule):
- return self._check_rule_all('contact_connected', obj, rule)
-
- def _check_rule_apply_disconnected(self, obj, rule):
- return self._check_rule_all('contact_disconnected', obj, rule)
-
- def _check_rule_apply_status_changed(self, obj, rule):
- return self._check_rule_all('contact_status_change', obj, rule)
-
- def _apply_rule_notification(self, obj, rule):
+ def _apply_rule(self, event, rule):
if rule['sound'] == 'no':
- obj.do_sound = False
+ event.sound = None
+ event.sound_file = None
elif rule['sound'] == 'yes':
- obj.do_sound = True
- obj.sound_event = ''
- obj.sound_file = rule['sound_file']
-
- if rule['popup'] == 'no' or obj.control_focused:
- obj.do_popup = False
- elif rule['popup'] == 'yes':
- obj.do_popup = True
+ event.sound = None
+ event.sound_file = rule['sound_file']
if rule['run_command']:
- obj.do_command = True
- obj.command = rule['command']
- else:
- obj.do_command = False
-
- if rule['systray'] == 'no':
- obj.show_in_notification_area = False
- elif rule['systray'] == 'yes':
- obj.show_in_notification_area = True
-
- if rule['roster'] == 'no':
- obj.show_in_roster = False
- elif rule['roster'] == 'yes':
- obj.show_in_roster = True
-
- def _apply_rule_message_received(self, obj, rule):
- if rule['auto_open'] == 'no':
- obj.popup = False
- elif rule['auto_open'] == 'yes':
- obj.popup = True
-
- def _apply_rule_presence_received(self, obj, rule):
- if rule['auto_open'] == 'no':
- obj.popup = False
- elif rule['auto_open'] == 'yes':
- obj.popup = True
-
- def _check_all(self, obj, check_func, apply_func):
- # check rules in order
- rules_num = [int(i) for i in self.config.keys()]
- rules_num.sort()
- to_remove = []
- for num in rules_num:
- rule = self.config[str(num)]
- if check_func(obj, rule):
- apply_func(obj, rule)
- if 'one_shot' in rule and rule['one_shot']:
- to_remove.append(num)
- # Should we stop after first valid rule ?
- # break
+ event.command = rule['command']
- decal = 0
- num = 0
- while str(num) in self.config:
- if num + decal in to_remove:
- num2 = num
- while str(num2 + 1) in self.config:
- self.config[str(num2)] = self.config[str(num2 + 1)].copy()
- num2 += 1
- del self.config[str(num2)]
- decal += 1
- else:
- num += 1
-
- def _on_notification(self, obj):
- self._check_all(obj, self._check_rule_apply_notification,
- self._apply_rule_notification)
-
- def _on_message_received(self, obj):
- self._check_all(obj, self._check_rule_apply_msg_received,
- self._apply_rule_message_received)
-
- def _on_gc_message_received(self, obj):
- self._check_all(obj, self._check_rule_apply_msg_received,
- self._apply_rule_message_received)
-
- def _on_presence_received(self, obj):
- if obj.old_show < 2 and obj.new_show > 1:
- check_func = self._check_rule_apply_connected
- elif obj.old_show > 1 and obj.new_show < 2:
- check_func = self._check_rule_apply_disconnected
- else:
- check_func = self._check_rule_apply_status_changed
- self._check_all(obj, check_func, self._apply_rule_presence_received)
+ if rule['popup'] == 'no':
+ event.show_notification = False
+ elif rule['popup'] == 'yes':
+ event.show_notification = True