/usr/bin/SEEL-panel-widget is in seelablet 0.1.9-2.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 | #!/usr/bin/python3
from __future__ import print_function
import time,sys,string,serial.tools.list_ports
from threading import Thread
if sys.version_info.major < 3:
        import gtk
        import appindicator
else:
        from gi.repository import Gtk as gtk
        from gi.repository import AppIndicator3 as appindicator
from subprocess import call
class ThreadedLauncher(Thread):
	def __init__(self,args):
		self.args=args
		Thread.__init__(self)
	def run(self):
		call(self.args)
class messenger():
	def __init__(self):
		self.ind = appindicator.Indicator("SEELablet-indicator", "SEELablet-menu", appindicator.CATEGORY_APPLICATION_STATUS)
		#self.ind.set_status(appindicator.STATUS_ATTENTION)
		self.ind.set_status(appindicator.STATUS_ACTIVE)
		self.ind.set_attention_icon("system-devices-panel-alert")
		self.ind.set_icon("system-devices-panel-information")
		self.ind.set_label("SEEL")
		self.menu_setup()
		self.ind.set_menu(self.menu)
		self.launched_threads = []
	def menu_setup(self):
		self.menu = gtk.Menu()
		
		self.menu_entries=[]
		self.menu_group=None
		#self.devmenu = gtk.MenuItem('Devices')
		#self.devmenu.show()
		
		#self.devlist = gtk.Menu()
		
		#self.devmenu.set_submenu(self.devlist)
		#self.menu.append(self.devmenu)
		self.__addsep__()
		self.scope_menu = gtk.MenuItem(label="_Experiments_" , use_underline=True)
		self.scope_menu.connect("activate", self.launch_experiments)
		self.scope_menu.show()
		self.menu.append(self.scope_menu)
		self.__addsep__()
		#add quit button
		self.quit_item = gtk.MenuItem(label="_Quit_" , use_underline=True)
		self.quit_item.connect("activate", self.quit)
		self.quit_item.show()
		self.menu.append(self.quit_item)
		
	def __addsep__(self):
		#add separator
		sep = gtk.SeparatorMenuItem()
		sep.show()
		self.menu.append(sep)		#add a separator
	def launch_experiments(self,widget):
		if self.menu_group:
			for a in self.menu_group.get_group():
				if a.get_active():
					L = a.get_label()
					T=ThreadedLauncher(["Experiments", "-P",L])
					T.start()
					self.launched_threads.append(T)
	def main(self):
		gtk.timeout_add(500, self.check_for_devices)   #check every 500ms
		gtk.main()
		
	def check_for_devices(self):
		#print ('check msg')
		L = serial.tools.list_ports.comports()
		shortlist=[]
		for a in L:
			if ('ACM' in a[1]) and ('04d8:00df' in a[2]):
				shortlist.append(a)
		total = len(shortlist)
		for a in self.menu_entries[total:]:
			self.menu.remove(a)
		self.menu_entries = self.menu_entries[:total]
		
		for a in range(total-len(self.menu_entries)):
			rp=gtk.RadioMenuItem( label='assas',group=self.menu_group)
			if self.menu_group==None:rp.set_active(True)
			self.menu_group = rp
			#menu_item.show()
			rp.show()
			self.menu.insert(rp,0)
			self.menu_entries.append(rp)
		for a in range(total):
			self.menu_entries[a].set_label(shortlist[a][0])
			#self.menu_entries[a].handler_disconnect(0)
			#self.menu_entries[a].connect("activate", self.device_selected, a)
		return True
	def device_selected(self,devnum,num):
		print (devnum,num)
	def quit(self,widget):
		print ('bye bye')
		sys.exit(0)
	
		
A=messenger()
A.main()
 |