Example #1
0
    def create_sinks(self):
        self.veromix_sinks = Gtk.VBox()

        self.source_box = SortedChannelBox()
        self.veromix_sinks.pack_start(self.source_box, False, True, 0)
        self.source_box.connect("veromix-resize", self._do_resize)

        self.sink_box = SortedChannelBox()
        self.veromix_sinks.pack_start(self.sink_box, False, True, 0)
        self.sink_box.connect("veromix-resize", self._do_resize)

        spacer = Gtk.HBox()
        self.veromix_sinks.pack_start(spacer, True, True, 0)

        self.scroll = Gtk.ScrolledWindow(hadjustment=None, vadjustment=None)
        self.scroll.set_policy(1, 1)
        self.scroll.add_with_viewport(self.veromix_sinks)
        self.scroll.set_border_width(5)

        #        self.expander = Gtk.Expander(label="Outputs")
        #        self.expander.set_expanded(True)
        #        self.expander.add(self.scroll)
        #        self.pack_start(self.expander, True, True, 0)

        self.pack_start(self.scroll, True, True, 0)
Example #2
0
    def create_sinks(self):
        self.veromix_sinks = Gtk.VBox()

        self.source_box = SortedChannelBox()
        self.veromix_sinks.pack_start(self.source_box, False, True, 0)
        self.source_box.connect("veromix-resize", self._do_resize)

        self.sink_box = SortedChannelBox()
        self.veromix_sinks.pack_start(self.sink_box, False, True, 0)
        self.sink_box.connect("veromix-resize", self._do_resize)

        spacer = Gtk.HBox()
        self.veromix_sinks.pack_start(spacer, True, True, 0)

        self.scroll = Gtk.ScrolledWindow(hadjustment=None, vadjustment=None)
        self.scroll.set_policy(1, 1)
        self.scroll.add_with_viewport(self.veromix_sinks)
        self.scroll.set_border_width(5)

        #        self.expander = Gtk.Expander(label="Outputs")
        #        self.expander.set_expanded(True)
        #        self.expander.add(self.scroll)
        #        self.pack_start(self.expander, True, True, 0)

        self.pack_start(self.scroll, True, True, 0)
Example #3
0
class Veromix(Gtk.VBox):
    def __init__(self, window, dbus):
        Gtk.VBox.__init__(self, window)
        self.window = window
        self.pa = PulseAudio(self, dbus)

        self.create_sinks()
        self.launch_pa()
        self.init_mpris2()

    def launch_pa(self):

        self.pa.connect_veromix_service()
        # FIXME: singleton initialization
        ContextMenu.get_instance(self)

        self.pa.connect("on_sink_info", self.sink_box.on_sink_info)
        self.pa.connect("on_sink_remove", self.sink_box.on_sink_remove)

        self.pa.connect("on_sink_input_info", self.sink_box.on_sink_input_info)
        self.pa.connect("on_sink_input_remove", self.sink_box.on_sink_remove)

        self.pa.connect("on_source_info", self.source_box.on_source_info)
        self.pa.connect("on_source_remove", self.source_box.on_sink_remove)

        self.pa.connect("on_source_output_info", self.source_box.on_source_output_info)
        self.pa.connect("on_source_output_remove", self.source_box.on_sink_remove)

        self.pa.connect("on_module_info", self.sink_box.on_module_info)

        self.pa.connect("on_volume_meter_sink", self.sink_box.on_volume_meter_sink)
        self.pa.connect("on_volume_meter_sink_input", self.sink_box.on_volume_meter_sink_input)
        self.pa.connect("on_volume_meter_source", self.source_box.on_volume_meter_source)

        self.pa.connect("mpris2_player_added", self.sink_box.on_media_player_added)
        self.pa.connect("mpris2_player_removed", self.sink_box.on_media_player_removed)

        self.pa.requestInfo()

    def init_mpris2(self):
        if not config().get_media_player_enabled():
            return self
        self.pa.enable_mpris2()
        for controller in self.pa.get_mpris2_players():
            v = controller.get_name()
            #            if self.in_mediaplayer_blacklist(v):
            #                return
            self.sink_box.on_media_player_added(None, controller.get_name(), controller)

    def create_sinks(self):
        self.veromix_sinks = Gtk.VBox()

        self.source_box = SortedChannelBox()
        self.veromix_sinks.pack_start(self.source_box, False, True, 0)
        self.source_box.connect("veromix-resize", self._do_resize)

        self.sink_box = SortedChannelBox()
        self.veromix_sinks.pack_start(self.sink_box, False, True, 0)
        self.sink_box.connect("veromix-resize", self._do_resize)

        spacer = Gtk.HBox()
        self.veromix_sinks.pack_start(spacer, True, True, 0)

        self.scroll = Gtk.ScrolledWindow(hadjustment=None, vadjustment=None)
        self.scroll.set_policy(1, 1)
        self.scroll.add_with_viewport(self.veromix_sinks)
        self.scroll.set_border_width(5)

        #        self.expander = Gtk.Expander(label="Outputs")
        #        self.expander.set_expanded(True)
        #        self.expander.add(self.scroll)
        #        self.pack_start(self.expander, True, True, 0)

        self.pack_start(self.scroll, True, True, 0)

    def get_default_sink(self):
        return self.sink_box.get_default_sink()

    def get_sink_widgets(self):
        return self.sink_box.get_sinks()

    def pa_proxy(self):
        return self.pa

    def query_application(self, app_info, default_icon=None):
        # FIXME
        return default_icon

    def _do_resize(self, event):
        previous_policy = self.scroll.get_policy()
        # Disable scrolling:
        self.scroll.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.NEVER)
        # See what changed:
        desired = self.scroll.size_request()
        toplevel = self.scroll.get_toplevel()
        new_size = toplevel.size_request()
        # Reenable scrolling:
        self.scroll.set_policy(*previous_policy)
        default_size = self.window.get_default_size()
        self.window.resize(max(new_size.width, default_size[0]), max(new_size.height, default_size[1]))
Example #4
0
class Veromix(Gtk.VBox):
    def __init__(self, window, dbus):
        Gtk.VBox.__init__(self, window)
        self.window = window
        self.pa = PulseAudio(self, dbus)

        self.create_sinks()
        self.launch_pa()
        self.init_mpris2()

    def launch_pa(self):

        self.pa.connect_veromix_service()
        # FIXME: singleton initialization
        ContextMenu.get_instance(self)

        self.pa.connect("on_sink_info", self.sink_box.on_sink_info)
        self.pa.connect("on_sink_remove", self.sink_box.on_sink_remove)

        self.pa.connect("on_sink_input_info", self.sink_box.on_sink_input_info)
        self.pa.connect("on_sink_input_remove", self.sink_box.on_sink_remove)

        self.pa.connect("on_source_info", self.source_box.on_source_info)
        self.pa.connect("on_source_remove", self.source_box.on_sink_remove)

        self.pa.connect("on_source_output_info",
                        self.source_box.on_source_output_info)
        self.pa.connect("on_source_output_remove",
                        self.source_box.on_sink_remove)

        self.pa.connect("on_module_info", self.sink_box.on_module_info)

        self.pa.connect("on_volume_meter_sink",
                        self.sink_box.on_volume_meter_sink)
        self.pa.connect("on_volume_meter_sink_input",
                        self.sink_box.on_volume_meter_sink_input)
        self.pa.connect("on_volume_meter_source",
                        self.source_box.on_volume_meter_source)

        self.pa.connect("mpris2_player_added",
                        self.sink_box.on_media_player_added)
        self.pa.connect("mpris2_player_removed",
                        self.sink_box.on_media_player_removed)

        self.pa.requestInfo()

    def init_mpris2(self):
        if not config().get_media_player_enabled():
            return self
        self.pa.enable_mpris2()
        for controller in self.pa.get_mpris2_players():
            v = controller.get_name()
            #            if self.in_mediaplayer_blacklist(v):
            #                return
            self.sink_box.on_media_player_added(None, controller.get_name(),
                                                controller)

    def create_sinks(self):
        self.veromix_sinks = Gtk.VBox()

        self.source_box = SortedChannelBox()
        self.veromix_sinks.pack_start(self.source_box, False, True, 0)
        self.source_box.connect("veromix-resize", self._do_resize)

        self.sink_box = SortedChannelBox()
        self.veromix_sinks.pack_start(self.sink_box, False, True, 0)
        self.sink_box.connect("veromix-resize", self._do_resize)

        spacer = Gtk.HBox()
        self.veromix_sinks.pack_start(spacer, True, True, 0)

        self.scroll = Gtk.ScrolledWindow(hadjustment=None, vadjustment=None)
        self.scroll.set_policy(1, 1)
        self.scroll.add_with_viewport(self.veromix_sinks)
        self.scroll.set_border_width(5)

        #        self.expander = Gtk.Expander(label="Outputs")
        #        self.expander.set_expanded(True)
        #        self.expander.add(self.scroll)
        #        self.pack_start(self.expander, True, True, 0)

        self.pack_start(self.scroll, True, True, 0)

    def get_default_sink(self):
        return self.sink_box.get_default_sink()

    def get_sink_widgets(self):
        return self.sink_box.get_sinks()

    def pa_proxy(self):
        return self.pa

    def query_application(self, app_info, default_icon=None):
        # FIXME
        return default_icon

    def _do_resize(self, event):
        previous_policy = self.scroll.get_policy()
        # Disable scrolling:
        self.scroll.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.NEVER)
        # See what changed:
        desired = self.scroll.size_request()
        toplevel = self.scroll.get_toplevel()
        new_size = toplevel.size_request()
        # Reenable scrolling:
        self.scroll.set_policy(*previous_policy)
        default_size = self.window.get_default_size()
        self.window.resize(max(new_size.width, default_size[0]),
                           max(new_size.height, default_size[1]))