ocarina/src/extra/oGtk/menu.py

154 lines
3.5 KiB
Python

#! /usr/bin/python
# To change this template, choose Tools | Templates
# and open the template in the editor.
__author__="bjschuma"
__date__ ="$Jan 14, 2010 10:39:29 PM$"
import gtk
import ocarina
import guibuilder
from ct import cmd
from oGtk import dialog
from oGtk import window
from et import scanlib
from et import needle
import db
class MenuBar(gtk.MenuBar):
def __init__(self):
gtk.MenuBar.__init__(self)
self.show()
class MenuItem(gtk.MenuItem):
def __init__(self,attrs=None):
name = "New Menu"
cmd = ""
for a in attrs:
if a == "name":
name = attrs[a]
elif a== "cmd":
cmd = attrs[a]
gtk.MenuItem.__init__(self,name)
self.show()
self.menu = None
self.cmd = cmd
self.connect("activate",self.clicked)
def addSubMenu(self,submenu):
if self.menu == None:
self.menu = gtk.Menu()
self.set_submenu(self.menu)
self.menu.append(submenu)
def clicked(self,a):
if self.cmd != "":
print self.cmd
cmd.run(self.cmd)
class MenuPlay(gtk.ImageMenuItem):
def __init__(self):
gtk.ImageMenuItem.__init__(self,gtk.STOCK_MEDIA_PLAY)
ocarina.events.invite("ocarina-play",self.hide)
ocarina.events.invite("ocarina-pause",self.show)
self.connect("activate",self.clicked)
self.show()
def clicked(self,item):
cmd.run("play")
class MenuPause(gtk.ImageMenuItem):
def __init__(self):
gtk.ImageMenuItem.__init__(self,gtk.STOCK_MEDIA_PAUSE)
ocarina.events.invite("ocarina-pause",self.hide)
ocarina.events.invite("ocarina-play",self.show)
self.connect("activate",self.clicked)
def clicked(self,item):
cmd.run("pause")
class MenuStop(gtk.ImageMenuItem):
def __init__(self):
gtk.ImageMenuItem.__init__(self,gtk.STOCK_MEDIA_STOP)
self.connect("activate",self.clicked)
self.show()
def clicked(self,item):
cmd.run("stop")
class MenuSongSelect(gtk.MenuItem):
def __init__(self):
gtk.MenuItem.__init__(self,"Select song")
self.connect("activate",self.onclick)
self.show()
def onclick(self,menu):
file = dialog.FileChooser("Select a song").choose()
if file!=None:
cmd.run("load " + file)
class MenuLibNew(gtk.MenuItem):
def __init__(self):
gtk.MenuItem.__init__(self,"New Library")
self.connect("activate",self.onclick)
self.show()
def onclick(self,menu):
choice = dialog.NewLibrary()
(name,path) = choice.choose()
del choice
if name != None:
db.newlib(name,path)
thread = needle.Needle(scanlib.go,name)
thread.start()
class MenuTheme(gtk.MenuItem):
def __init__(self):
gtk.MenuItem.__init__(self,"Change Theme")
self.connect("activate", self.onclick)
self.show()
def onclick(self,menu):
file = dialog.FileChooser("Select a theme file").choose()
if file!=None:
print file
ocarina.vars["$theme"] = str(file)
guibuilder.init()
def make_menubar(attrs=None):return MenuBar()
def make_menuitem(attrs=None):return MenuItem(attrs)
def make_menuplay(attrs=None):return MenuPlay()
def make_menupause(attrs=None):return MenuPause()
def make_menustop(attrs=None):return MenuStop()
def make_menusongsel(attrs=None):return MenuSongSelect()
def make_menulibnew(attrs=None):return MenuLibNew()
def make_menutheme(attrs=None):return MenuTheme()
guibuilder.parts["menubar"] = make_menubar
guibuilder.parts["menuitem"] = make_menuitem
guibuilder.parts["menuplay"] = make_menuplay
guibuilder.parts["menupause"] = make_menupause
guibuilder.parts["menustop"] = make_menustop
guibuilder.parts["menusongsel"] = make_menusongsel
guibuilder.parts["menulibnew"] = make_menulibnew
guibuilder.parts["menutheme"] = make_menutheme