Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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)