53 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # Python imports
 | |
| import sys, threading, subprocess, time
 | |
| 
 | |
| # Gtk imports
 | |
| import gi
 | |
| gi.require_version('Gtk', '3.0')
 | |
| from gi.repository import Gtk
 | |
| 
 | |
| # Application imports
 | |
| 
 | |
| 
 | |
| def threaded(fn):
 | |
|     def wrapper(*args, **kwargs):
 | |
|         threading.Thread(target=fn, args=args, kwargs=kwargs, daemon=False).start()
 | |
|     return wrapper
 | |
| 
 | |
| 
 | |
| class Main:
 | |
|     def __init__(self, socket_id, event_system):
 | |
|         self._plugin_name  = "Example Plugin"
 | |
|         self._event_system = event_system
 | |
|         self._socket_id    = socket_id
 | |
|         self._gtk_plug     = Gtk.Plug.new(self._socket_id)
 | |
|         button             = Gtk.Button(label=self._plugin_name)
 | |
|         self._message      = None
 | |
|         self._time_out     = 5
 | |
| 
 | |
|         button.connect("button-release-event", self._do_action)
 | |
|         self._gtk_plug.add(button)
 | |
|         self._gtk_plug.show_all()
 | |
| 
 | |
| 
 | |
|     @threaded
 | |
|     def _do_action(self, widget=None, eve=None):
 | |
|         message = "Hello, World!"
 | |
|         self._event_system.push_gui_event(["some_type", "display_message", ("warning", message, None)])
 | |
| 
 | |
| 
 | |
|     def set_message(self, data):
 | |
|         self._message = data
 | |
| 
 | |
|     def get_plugin_name(self):
 | |
|         return self._plugin_name
 | |
| 
 | |
|     def get_socket_id(self):
 | |
|         return self._socket_id
 | |
| 
 | |
|     def _run_timeout(self):
 | |
|         timeout = 0
 | |
|         while not self._message and timeout < self._time_out:
 | |
|             time.sleep(1)
 | |
|             timeout += 1
 |