# Bryan Schumaker (8/26/2010) import ocarina LS = ocarina.libsaria gtk = ocarina.gtk prefs = LS.prefs class Button(gtk.Button): def __init__(self, stock, func=None, show=True): gtk.Button.__init__(self) self.func = func img = gtk.image_new_from_stock(stock, gtk.ICON_SIZE_MENU) img.show() self.add(img) self.set_relief(gtk.RELIEF_NONE) self.click_id = self.connect("clicked", self.clicked) if show == True: self.show() self.set_alignment(0,0) def clicked(self, button): self.func() def show(self, *args): gtk.Button.show(self) def hide(self, *args): gtk.Button.hide(self) class PlayButton(Button): def __init__(self): Button.__init__(self, gtk.STOCK_MEDIA_PLAY) LS.event.invite("POSTPLAY", self.hide) LS.event.invite("POSTPAUSE", self.show) LS.event.invite("POSTSTOP", self.show) def clicked(self, button): LS.music.play() class PauseButton(Button): def __init__(self): Button.__init__(self, gtk.STOCK_MEDIA_PAUSE, show=False) LS.event.invite("POSTPLAY", self.show) LS.event.invite("POSTPAUSE", self.hide) LS.event.invite("POSTSTOP", self.hide) def clicked(self, button): LS.music.pause() class StopButton(Button): def __init__(self): Button.__init__(self, gtk.STOCK_MEDIA_STOP) def clicked(self, button): LS.music.stop() class NextButton(Button): def __init__(self): Button.__init__(self, gtk.STOCK_MEDIA_NEXT) def clicked(self, button): LS.collection.plist_next() class OpenButton(Button): def __init__(self): Button.__init__(self, gtk.STOCK_OPEN) def clicked(self, button): from ocarina import fsselect fsselect.run_chooser2(LS.data.universal_open) class RandomButton(gtk.CheckButton): def __init__(self): gtk.CheckButton.__init__(self, "Random") self.set_active(prefs["random"]) self.connect("toggled", self.toggle) self.show() def toggle(self, button): LS.collection.toggle_rand() class UpButton(Button): def __init__(self, callback): Button.__init__(self, gtk.STOCK_ADD) self.callback = callback def clicked(self, button): self.callback() class DownButton(Button): def __init__(self, callback): Button.__init__(self, gtk.STOCK_REMOVE) self.callback = callback def clicked(self, button): self.callback() class VolumeButton(gtk.VolumeButton): def __init__(self): gtk.VolumeButton.__init__(self) self.set_relief(gtk.RELIEF_NONE) adj = self.get_adjustment() adj.set_page_increment(0.05) self.set_value(prefs["volume"]) self.resize() self.connect("value-changed", self.changed) LS.event.invite("POSTSETVOLUME", self.set_slider) self.show() def set_slider(self, prcnt): self.set_value(prcnt) def resize(self): image = self.get_children()[0] icon = image.get_icon_name()[0] image.set_from_icon_name(icon, gtk.ICON_SIZE_MENU) def changed(self, widget, value): LS.music.set_volume(value) widget.resize()