2 new plugins

This commit is contained in:
ingvar1995 2016-10-29 17:26:05 +03:00
parent caa98208d5
commit dd4634c1a7
4 changed files with 109 additions and 1 deletions

46
AutoAnswer/aans.py Normal file
View file

@ -0,0 +1,46 @@
import plugin_super_class
from PySide import QtGui, QtCore
import json
class AutoAnswer(plugin_super_class.PluginSuperClass):
def __init__(self, *args):
super(AutoAnswer, self).__init__('AutoAnswer', 'aans', *args)
self._data = json.loads(self.load_settings())
self._tmp = None
def get_description(self):
return QtGui.QApplication.translate("aans", 'Plugin which allows you to auto answer on calls.', None, QtGui.QApplication.UnicodeUTF8)
def start(self):
self._tmp = self._profile.incoming_call
def func(audio, video, friend_number):
if self._profile.get_friend_by_number(friend_number).tox_id in self._data['id']:
self._profile.accept_call(friend_number, audio, video)
else:
self._tmp(friend_number, audio, video)
self._profile.incoming_call = func
def stop(self):
self._profile.incoming_call = self._tmp
def get_menu(self, menu, num):
friend = self._profile.get_friend(num)
if friend.tox_id in self._data['id']:
text = 'Disallow auto answer'
else:
text = 'Allow auto answer'
act = QtGui.QAction(QtGui.QApplication.translate("aans", text, None, QtGui.QApplication.UnicodeUTF8), menu)
act.connect(act, QtCore.SIGNAL("triggered()"), lambda: self.toggle(friend.tox_id))
return [act]
def toggle(self, tox_id):
if tox_id in self._data['id']:
self._data['id'].remove(tox_id)
else:
self._data['id'].append(tox_id)
self.save_settings(json.dumps(self._data))

View file

@ -0,0 +1 @@
{"id": ["20E3E1DEB598C1A6B49B2D2F6BF1C181F4FE9C977B9098903F176269F32CEF1D"]}

60
Garland/garland.py Normal file
View file

@ -0,0 +1,60 @@
import plugin_super_class
import threading
import time
from PySide import QtCore
class InvokeEvent(QtCore.QEvent):
EVENT_TYPE = QtCore.QEvent.Type(QtCore.QEvent.registerEventType())
def __init__(self, fn, *args, **kwargs):
QtCore.QEvent.__init__(self, InvokeEvent.EVENT_TYPE)
self.fn = fn
self.args = args
self.kwargs = kwargs
class Invoker(QtCore.QObject):
def event(self, event):
event.fn(*event.args, **event.kwargs)
return True
_invoker = Invoker()
def invoke_in_main_thread(fn, *args, **kwargs):
QtCore.QCoreApplication.postEvent(_invoker, InvokeEvent(fn, *args, **kwargs))
class Garland(plugin_super_class.PluginSuperClass):
def __init__(self, *args):
super(Garland, self).__init__('Garland', 'grlnd', *args)
self._thread = None
self._exec = None
self._time = 3
def close(self):
self.stop()
def stop(self):
self._exec = False
self._thread.join()
def start(self):
self._exec = True
self._thread = threading.Thread(target=self.change_status)
self._thread.start()
def command(self, command):
if command.startswith('time'):
self._time = max(int(command.split(' ')[1]), 0) / 1000
else:
super().command(command)
def change_status(self):
time.sleep(5)
while self._exec:
invoke_in_main_thread(self._profile.change_status)
time.sleep(self._time)

View file

@ -14,5 +14,6 @@ For more info visit [plugins.md](https://github.com/toxygen-project/toxygen/blob
- AutoAwayStatusLinux - sets "Away" status when user is inactive (Linux only).
- AutoAwayStatusWindows - sets "Away" status when user is inactive (Windows only).
- Chess - play chess with your friends using Tox.
- Garland - changes your status like it's garland.
- AutoAnswer - calls auto answering.