def __init__(self): super().__init__() self.controller = Controller() self.displays = Displays() if len(self.displays) == 0: print('Could not find supported displays') quit() self.sensors = LuminanceSourceManager() self.sensors.add_source_type(LuminanceIIO) self.sensors.add_source_type(LuminanceMQTT, { 'topic': MQTT_TOPIC, 'host': MQTT_HOST }) manual_parameters = self.controller.get_range() manual_parameters.update({'value': self.displays.get_brightness()}) self.sensors.add_source_type(LuminanceManual, manual_parameters) self.sensors.activate(DEFAULT_SENSOR) self.menu = self.construct_menu() self.menu_visible = False self.setContextMenu(self.menu) self.activated.connect(lambda reason: self.action_click(reason, self)) self.timer = QtCore.QTimer() self.timer.timeout.connect(self.main_control) self.timer.start(1000) if MQTT_PUBLISH is True: self.mqtt_publisher = LuminanceMQTT(name="mqttp", path=MQTT_TOPIC, host=MQTT_HOST)
def __init__(self): mirror_logger.info("Started Mirrorcast") self.indicator = appindicator.Indicator.new( "mirrorMenu", os.path.abspath('/opt/mirrorcast/mirrorcast_tray.png'), appindicator.IndicatorCategory.SYSTEM_SERVICES) self.indicator.set_status(appindicator.IndicatorStatus.ACTIVE) #A string so we know what the user is doing self.state = "stopped" self.menu = gtk.Menu() #Set up menu item_start = gtk.MenuItem('Start Mirroring') item_start.connect('activate', self.start) self.menu.append(item_start) #Media Sub Menu self.media_sub = gtk.Menu() item_media = gtk.MenuItem('Play Media (Experimental)') item_media.set_submenu(self.media_sub) item_file = gtk.MenuItem('Media File') item_file.connect('activate', self.file) self.media_sub.append(item_file) item_dvd = gtk.MenuItem('Play DVD') item_dvd.connect('activate', self.dvd) self.media_sub.append(item_dvd) item_youtube = gtk.MenuItem('Youtube URL') item_youtube.connect('activate', self.youtube) self.media_sub.append(item_youtube) self.menu.append(item_media) item_freeze = gtk.MenuItem('Freeze') item_freeze.connect('activate', self.freeze) self.menu.append(item_freeze) item_update = gtk.MenuItem('Update Mirrorcast') item_update.connect('activate', self.update) self.menu.append(item_update) item_quit = gtk.MenuItem('Quit') item_quit.connect('activate', self.quit) self.menu.append(item_quit) sep = gtk.SeparatorMenuItem() self.menu.append(sep) self.outputSub = gtk.Menu() output = gtk.MenuItem("Cast To") output.set_submenu(self.outputSub) '''Recievers/Hosts Menu''' self.hosts = hosts() #Varaibles for sorting receivers into sub-menus self.list_receivers = [] self.sortedMenu = [] sortSub = [] subitems = [] sortInd = 0 sortInd2 = 0 #Add receivers to menu self.list_receivers.append(gtk.RadioMenuItem('None')) for ind, i in enumerate(self.hosts.receivers): #allow user to sort their receivers into sublists if i['aspect'] == "sub": self.sortedMenu.append(gtk.Menu()) sortSub.append(gtk.MenuItem(i['host'])) sortSub[sortInd].set_submenu(self.sortedMenu[sortInd]) self.outputSub.append(sortSub[sortInd]) sortInd = sortInd + 1 elif sortInd > 0: try: subitems.append( gtk.RadioMenuItem(str(i['host']), group=self.subitems[sortInd2 - 1])) except: subitems.append( gtk.RadioMenuItem(str(i['host']), group=self.list_receivers[0])) subitems[sortInd2].connect('toggled', self.hosts.set_receiver, subitems[sortInd2].get_label()) self.sortedMenu[sortInd - 1].append(subitems[sortInd2]) sortInd2 = sortInd2 + 1 else: self.list_receivers.append( gtk.RadioMenuItem(str(i['host']), group=self.list_receivers[ind - 1])) for i in self.list_receivers: self.outputSub.append(i) i.connect('toggled', self.hosts.set_receiver, i.get_label()) self.list_receivers[0].set_active(True) self.Display = Displays() self.displaysSub = gtk.Menu() displays = gtk.MenuItem("Select Display to Mirror") displays.set_submenu(self.displaysSub) self.list_displays = [] #Add displays/monitors to menu for ind, i in enumerate(self.Display.monitors): if ind != 0: self.list_displays.append( gtk.RadioMenuItem(str(i[0]), group=self.list_displays[ind - 1])) else: self.list_displays.append( gtk.RadioMenuItem(self.Display.monitors[0][0])) for i in self.list_displays: self.displaysSub.append(i) i.connect('toggled', self.Display.set_display, i.get_label()) self.list_displays[0].set_active(True) self.menu.append(output) self.menu.append(displays) self.menu.show_all() self.indicator.set_menu(self.menu) self.sound = Audio() self.ffmpeg = None self.vlc = None self.sleep = dbus_listen(item_start, self.ffmpeg)