def __init__(self):
        simplepanel.applet.Applet.__init__(self)

        self.pulseaudio = PulseAudio('Cream Volume Applet')
        self.pulseaudio.connect()
        while not self.pulseaudio.sinks:
            time.sleep(0.01)

        self.icon_size = 22
        self.menu_active = False
        self.icon = self._get_icon_for_volume(self.pulseaudio.get_volume()[0])

        self.menu = Bubble()

        self.volume_scale = gtk.HScale()
        self.volume_scale.set_range(0, 100)
        self.volume_scale.set_size_request(200, -1)
        self.volume_scale.set_draw_value(False)
        self.volume_scale.set_value(self.pulseaudio.get_volume()[0])

        self.layout = gtk.HBox()
        self.layout.pack_start(self.volume_scale)

        self.menu.add(self.layout)

        self.connect('click', self.toggle_menu_cb)
        self.connect('scroll', self.scroll_cb)
        self.volume_scale.connect('change-value', self.value_changed_cb)
Exemple #2
0
    def __init__(self):
        simplepanel.applet.Applet.__init__(self)

        self.pulseaudio = PulseAudio('Cream Volume Applet')
        self.pulseaudio.connect()
        while not self.pulseaudio.sinks:
            time.sleep(0.01)

        self.icon_size = 22
        self.menu_active = False
        self.icon = self._get_icon_for_volume(self.pulseaudio.get_volume()[0])

        self.menu = Bubble()

        self.volume_scale = gtk.HScale()
        self.volume_scale.set_range(0, 100)
        self.volume_scale.set_size_request(200, -1)
        self.volume_scale.set_draw_value(False)
        self.volume_scale.set_value(self.pulseaudio.get_volume()[0])

        self.layout = gtk.HBox()
        self.layout.pack_start(self.volume_scale)

        self.menu.add(self.layout)

        self.connect('click', self.toggle_menu_cb)
        self.connect('scroll', self.scroll_cb)
        self.volume_scale.connect('change-value', self.value_changed_cb)
Exemple #3
0
import sys
import dbus
import dbus.service
import dbus.mainloop.qt

from PyQt4.QtCore import QCoreApplication
from PyQt4 import QtCore

from pulseaudio.PulseAudio import *
from VeromixDbus import *
from VeromixEvent import *
from Pa2dBus import *


if __name__ == '__main__':
    app=QtCore.QCoreApplication(sys.argv)
    signal.signal(signal.SIGINT, signal.SIG_DFL)
    mainloop = dbus.mainloop.qt.DBusQtMainLoop(set_as_default=True)
    conn = dbus.SessionBus()
    name = dbus.service.BusName("org.veromix.pulseaudio.qt", conn)

    dbus.set_default_main_loop(mainloop)

    pulse = PulseAudio()
    bus = VeromixDbus(pulse,conn)
    i = Pa2dBus(bus, pulse)
    event_processor = VeromixEvent(i)
    pulse.set_receiver(event_processor)
    pulse.start_pulsing()
    app.exec_()
class SoundApplet(simplepanel.applet.Applet):
    def __init__(self):
        simplepanel.applet.Applet.__init__(self)

        self.pulseaudio = PulseAudio('Cream Volume Applet')
        self.pulseaudio.connect()
        while not self.pulseaudio.sinks:
            time.sleep(0.01)

        self.icon_size = 22
        self.menu_active = False
        self.icon = self._get_icon_for_volume(self.pulseaudio.get_volume()[0])

        self.menu = Bubble()

        self.volume_scale = gtk.HScale()
        self.volume_scale.set_range(0, 100)
        self.volume_scale.set_size_request(200, -1)
        self.volume_scale.set_draw_value(False)
        self.volume_scale.set_value(self.pulseaudio.get_volume()[0])

        self.layout = gtk.HBox()
        self.layout.pack_start(self.volume_scale)

        self.menu.add(self.layout)

        self.connect('click', self.toggle_menu_cb)
        self.connect('scroll', self.scroll_cb)
        self.volume_scale.connect('change-value', self.value_changed_cb)

    def change_volume(self, volume):

        volume = int(volume)

        self.pulseaudio.set_volume([volume, volume])
        self.volume_scale.set_value(volume)

        self.icon = self._get_icon_for_volume(volume)
        self.draw()

    def _get_icon_for_volume(self, volume):

        if volume <= 0:
            return 'audio-volume-muted'
        elif volume <= 30:
            return 'audio-volume-low'
        elif volume <= 66:
            return 'audio-volume-medium'
        else:
            return 'audio-volume-high'

    def toggle_menu_cb(self, applet, x, y):

        if self.menu_active:
            self.menu.hide()
        else:
            self.menu.show(int(self.get_position()[0]),
                           self.get_allocation()[1] + 1)

        self.menu_active = not self.menu_active

    def scroll_cb(self, applet, x, y, direction):

        volume = self.pulseaudio.get_volume()[0]
        if direction == gtk.gdk.SCROLL_UP:
            if volume + STEP >= 100:
                volume = 100
            else:
                volume += STEP
        elif direction == gtk.gdk.SCROLL_DOWN:
            if volume - STEP <= 0:
                volume = 0
            else:
                volume -= STEP

        self.change_volume(volume)

    def value_changed_cb(self, scale, scroll_type, volume):

        self.change_volume(volume)

    def render(self, ctx):

        theme = gtk.icon_theme_get_default()
        icon_info = theme.lookup_icon(self.icon, self.icon_size, 0)
        pb = gtk.gdk.pixbuf_new_from_file(icon_info.get_filename())
        pb = pb.scale_simple(self.icon_size, self.icon_size,
                             gtk.gdk.INTERP_HYPER)

        ctx.set_source_pixbuf(pb, PADDING,
                              (self.get_allocation()[1] - self.icon_size) / 2)
        ctx.paint()

    def allocate(self, height):

        self.set_allocation(self.icon_size + PADDING, height)
        return self.get_allocation()
Exemple #5
0
class SoundApplet(simplepanel.applet.Applet):

    def __init__(self):
        simplepanel.applet.Applet.__init__(self)

        self.pulseaudio = PulseAudio('Cream Volume Applet')
        self.pulseaudio.connect()
        while not self.pulseaudio.sinks:
            time.sleep(0.01)

        self.icon_size = 22
        self.menu_active = False
        self.icon = self._get_icon_for_volume(self.pulseaudio.get_volume()[0])

        self.menu = Bubble()

        self.volume_scale = gtk.HScale()
        self.volume_scale.set_range(0, 100)
        self.volume_scale.set_size_request(200, -1)
        self.volume_scale.set_draw_value(False)
        self.volume_scale.set_value(self.pulseaudio.get_volume()[0])

        self.layout = gtk.HBox()
        self.layout.pack_start(self.volume_scale)

        self.menu.add(self.layout)

        self.connect('click', self.toggle_menu_cb)
        self.connect('scroll', self.scroll_cb)
        self.volume_scale.connect('change-value', self.value_changed_cb)


    def change_volume(self, volume):

        volume = int(volume)

        self.pulseaudio.set_volume([volume, volume])
        self.volume_scale.set_value(volume)

        self.icon = self._get_icon_for_volume(volume)
        self.draw()


    def _get_icon_for_volume(self, volume):

        if volume <= 0:
            return 'audio-volume-muted'
        elif volume <= 30:
            return 'audio-volume-low'
        elif volume <= 66:
            return 'audio-volume-medium'
        else:
            return 'audio-volume-high'



    def toggle_menu_cb(self, applet, x, y):

        if self.menu_active:
            self.menu.hide()
        else:
            self.menu.show(int(self.get_position()[0]), self.get_allocation()[1] + 1)

        self.menu_active = not self.menu_active


    def scroll_cb(self, applet, x, y, direction):

        volume = self.pulseaudio.get_volume()[0]
        if direction == gtk.gdk.SCROLL_UP:
            if volume + STEP >= 100:
                volume = 100
            else:
                volume += STEP
        elif direction == gtk.gdk.SCROLL_DOWN:
            if volume - STEP <= 0:
                volume = 0
            else:
                volume -= STEP

        self.change_volume(volume)


    def value_changed_cb(self, scale, scroll_type, volume):

        self.change_volume(volume)


    def render(self, ctx):

        theme = gtk.icon_theme_get_default()
        icon_info = theme.lookup_icon(self.icon, self.icon_size, 0)
        pb = gtk.gdk.pixbuf_new_from_file(icon_info.get_filename())
        pb = pb.scale_simple(self.icon_size, self.icon_size, gtk.gdk.INTERP_HYPER)

        ctx.set_source_pixbuf(pb, PADDING, (self.get_allocation()[1] - self.icon_size) / 2)
        ctx.paint()



    def allocate(self, height):

        self.set_allocation(self.icon_size + PADDING, height)
        return self.get_allocation()