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:
-rw-r--r--flashing_keyboard/__init__.py1
-rw-r--r--flashing_keyboard/config_dialog.ui68
-rw-r--r--flashing_keyboard/flashing_keyboard.py92
-rw-r--r--flashing_keyboard/manifest.ini8
4 files changed, 169 insertions, 0 deletions
diff --git a/flashing_keyboard/__init__.py b/flashing_keyboard/__init__.py
new file mode 100644
index 0000000..ace90e1
--- /dev/null
+++ b/flashing_keyboard/__init__.py
@@ -0,0 +1 @@
+from flashing_keyboard import FlashingKeyboard
diff --git a/flashing_keyboard/config_dialog.ui b/flashing_keyboard/config_dialog.ui
new file mode 100644
index 0000000..f034266
--- /dev/null
+++ b/flashing_keyboard/config_dialog.ui
@@ -0,0 +1,68 @@
+<?xml version="1.0"?>
+<interface>
+ <requires lib="gtk+" version="2.16"/>
+ <!-- interface-naming-policy toplevel-contextual -->
+ <object class="GtkWindow" id="window1">
+ <child>
+ <object class="GtkTable" id="config_table">
+ <property name="visible">True</property>
+ <property name="border_width">6</property>
+ <property name="n_rows">2</property>
+ <property name="n_columns">2</property>
+ <property name="column_spacing">7</property>
+ <property name="row_spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">command 1:</property>
+ </object>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">command 2:</property>
+ </object>
+ <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>
+ <object class="GtkEntry" id="command1">
+ <property name="width_request">300</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">&#x25CF;</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="command2">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">&#x25CF;</property>
+ </object>
+ <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>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/flashing_keyboard/flashing_keyboard.py b/flashing_keyboard/flashing_keyboard.py
new file mode 100644
index 0000000..3661869
--- /dev/null
+++ b/flashing_keyboard/flashing_keyboard.py
@@ -0,0 +1,92 @@
+# -*- coding: utf-8 -*-
+
+import gtk
+import subprocess
+import gobject
+
+from common import gajim
+from plugins import GajimPlugin
+from plugins.helpers import log_calls, log
+from plugins.gui import GajimPluginConfigDialog
+
+
+class FlashingKeyboard(GajimPlugin):
+ @log_calls('FlashingKeyboard')
+ def init(self):
+ self.config_dialog = FlashingKeyboardPluginConfigDialog(self)
+ self.config_default_values = {
+ 'command1': ("xset led named 'Scroll Lock'",''),
+ 'command2': ("xset -led named 'Scroll Lock'", '')}
+
+ self.is_active = None
+ self.timeout = 500
+ self.timeout_off = self.timeout / 2
+ self.id_0 = None
+
+ def on_event_added(self, event):
+ if event.show_in_systray:
+ self.flash_trigger()
+
+ def on_event_removed(self, event_list):
+ self.flash_trigger()
+
+ def flash_trigger(self):
+ if gajim.events.get_nb_systray_events():
+ if self.id_0:
+ return
+ self.id_0 = gobject.timeout_add(self.timeout, self.led_on)
+ else:
+ if self.id_0:
+ gobject.source_remove(self.id_0)
+ self.id_0 = None
+
+ def led_on(self):
+ subprocess.Popen('%s' % self.config['command1'], shell=True).wait()
+ gobject.timeout_add(self.timeout_off, self.led_off)
+ return True
+
+ def led_off(self):
+ subprocess.Popen('%s' % self.config['command2'], shell=True).wait()
+
+ @log_calls('FlashingKeyboard')
+ def activate(self):
+ gajim.events.event_added_subscribe(self.on_event_added)
+ gajim.events.event_removed_subscribe(self.on_event_removed)
+ if gajim.events.get_nb_systray_events():
+ self.id_0 = gobject.timeout_add(self.timeout, self.led_on)
+
+ @log_calls('FlashingKeyboard')
+ def deactivate(self):
+ gajim.events.event_added_unsubscribe(self.on_event_added)
+ gajim.events.event_removed_unsubscribe(self.on_event_removed)
+ if self.id_0:
+ gobject.source_remove(self.id_0)
+
+class FlashingKeyboardPluginConfigDialog(GajimPluginConfigDialog):
+ def init(self):
+ self.GTK_BUILDER_FILE_PATH = self.plugin.local_file_path(
+ 'config_dialog.ui')
+ self.xml = gtk.Builder()
+ self.xml.set_translation_domain('flashingkeyboard')
+ self.xml.add_objects_from_file(self.GTK_BUILDER_FILE_PATH,
+ ['config_table'])
+ config_table = self.xml.get_object('config_table')
+ self.child.pack_start(config_table)
+ self.xml.connect_signals(self)
+ self.connect('hide', self.on_close_button_clicked)
+
+ def on_run(self):
+ self.isactive = self.plugin.active
+ if self.plugin.active:
+ gajim.plugin_manager.deactivate_plugin(self.plugin)
+ for name in self.plugin.config_default_values:
+ widget = self.xml.get_object(name)
+ widget.set_text(self.plugin.config[name])
+
+ def on_close_button_clicked(self, widget):
+ widget = self.xml.get_object('command1')
+ self.plugin.config['command1'] = widget.get_text()
+ widget = self.xml.get_object('command2')
+ self.plugin.config['command2'] = widget.get_text()
+ if self.isactive:
+ gajim.plugin_manager.activate_plugin(self.plugin)
diff --git a/flashing_keyboard/manifest.ini b/flashing_keyboard/manifest.ini
new file mode 100644
index 0000000..0da83be
--- /dev/null
+++ b/flashing_keyboard/manifest.ini
@@ -0,0 +1,8 @@
+[info]
+name: Flashing Keyboard
+short_name: flashing_keyboard
+version: 0.1
+description: Flashing keyboard led if there is unread messages
+authors: Denis Fomin <fominde@gmail.com>
+homepage: http://trac-plugins.gajim.org
+