2 new plugins
This commit is contained in:
		
							parent
							
								
									caa98208d5
								
							
						
					
					
						commit
						dd4634c1a7
					
				
					 4 changed files with 109 additions and 1 deletions
				
			
		
							
								
								
									
										46
									
								
								AutoAnswer/aans.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								AutoAnswer/aans.py
									
										
									
									
									
										Normal 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)) | ||||||
|  | 
 | ||||||
							
								
								
									
										1
									
								
								AutoAnswer/aans/settings.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								AutoAnswer/aans/settings.json
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | ||||||
|  | {"id": ["20E3E1DEB598C1A6B49B2D2F6BF1C181F4FE9C977B9098903F176269F32CEF1D"]} | ||||||
							
								
								
									
										60
									
								
								Garland/garland.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								Garland/garland.py
									
										
									
									
									
										Normal 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) | ||||||
|  | @ -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). | - AutoAwayStatusLinux - sets "Away" status when user is inactive (Linux only). | ||||||
| - AutoAwayStatusWindows - sets "Away" status when user is inactive (Windows only). | - AutoAwayStatusWindows - sets "Away" status when user is inactive (Windows only). | ||||||
| - Chess - play chess with your friends using Tox. | - Chess - play chess with your friends using Tox. | ||||||
| 
 | - Garland - changes your status like it's garland. | ||||||
|  | - AutoAnswer - calls auto answering. | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 ingvar1995
						ingvar1995