* Move menu code to common class

* use it for wmjackctl
 * add reactivate to menu


git-svn-id: svn+ssh://svn.marcochapeau.org/laditools/trunk@19 bfe161da-02ef-4cea-8c43-ae261ea21ac6
This commit is contained in:
nedko 2007-12-18 22:56:58 +00:00
parent 4d6ca9e97f
commit 4e9cf1d1b4
2 changed files with 57 additions and 52 deletions

41
jackctl.py Normal file
View File

@ -0,0 +1,41 @@
# base class for control apps, currently dockapp and tray app
import pygtk
pygtk.require('2.0')
import gtk
import gobject
class jackctl:
def __init__(self):
self.menu = gtk.Menu()
self.start_item = gtk.MenuItem("_Start JACK")
self.stop_item = gtk.MenuItem("Sto_p JACK")
self.reactivate_item = gtk.MenuItem("Reactivate JACK")
self.quit_item = gtk.MenuItem("_Quit")
self.menu.append(self.start_item)
self.menu.append(self.stop_item)
self.menu.append(self.reactivate_item)
self.menu.append(self.quit_item)
self.start_item.connect("activate", self.on_menu_start)
self.stop_item.connect("activate", self.on_menu_stop)
self.reactivate_item.connect("activate", self.on_menu_reactivate)
self.quit_item.connect("activate", self.on_menu_destroy)
self.menu.show_all()
def on_menu_start(self, widget):
self.get_controller().start()
def on_menu_stop(self, widget):
self.get_controller().stop()
def on_menu_reactivate(self, widget):
self.get_controller().kill()
def on_menu_destroy(self, widget):
print "on_menu_destroy, parent"
gtk.main_quit()
# will this work for tray app?
def menu_activate(self):
self.menu.popup(None, None, None, 3, 0)
self.menu.reposition()

View File

@ -4,18 +4,15 @@ import sys
import os
from wmdocklib import wmoo, pywmhelpers
from jack_controller import jack_controller
from jackctl import jackctl
import time
try:
import pygtk
pygtk.require('2.0')
import gtk
import gobject
have_gtk = True
except:
have_gtk = False
import pygtk
pygtk.require('2.0')
import gtk
import gobject
class wmjackctl(wmoo.Application):
class wmjackctl(wmoo.Application, jackctl):
def __init__(self):
self.jack = None
wmoo.Application.__init__(
@ -24,44 +21,17 @@ class wmjackctl(wmoo.Application):
margin = 2,
debug = False)
if have_gtk:
self.menu = gtk.Menu()
self.start_item = gtk.MenuItem("_Start JACK")
self.stop_item = gtk.MenuItem("Sto_p JACK")
self.quit_item = gtk.MenuItem("_Quit")
self.menu.append(self.start_item)
self.menu.append(self.stop_item)
self.menu.append(self.quit_item)
self.start_item.connect("activate", self.start_callback)
self.stop_item.connect("activate", self.stop_callback)
self.quit_item.connect("activate", self.destroy)
jackctl.__init__(self)
self.addCallback(self.on_button_release, 'buttonrelease', area=(0,0,64,64))
self.addCallback(self.on_button_release, 'buttonrelease', area=(0,0,64,64))
self.gtkloop = have_gtk
def get_controller(self):
return self.jack
def on_button_release(self, event):
if event['button'] == 3:
self.show_popup_menu()
self.menu_activate()
def show_popup_menu(self):
#print "show menu here!"
if have_gtk:
self.menu.popup(None, None, None, 3, 0)
self.menu.reposition()
def destroy(self, widget):
if self.gtkloop:
gtk.main_quit()
else:
self.go = False
def start_callback(self, widget):
self.jack.start()
def stop_callback(self, widget):
self.jack.stop()
def update(self):
lines = ["JACK"]
try:
@ -137,13 +107,11 @@ class wmjackctl(wmoo.Application):
def run_sleep(self):
self.go = True
while self.go:
if have_gtk:
while gtk.events_pending():
gtk.main_iteration()
while gtk.events_pending():
gtk.main_iteration()
self.do_dockapp()
if have_gtk:
while gtk.events_pending():
gtk.main_iteration()
while gtk.events_pending():
gtk.main_iteration()
time.sleep(self._sleep)
def run_gtk(self):
@ -152,10 +120,6 @@ class wmjackctl(wmoo.Application):
gtk.main()
def run(self):
if self.gtkloop:
self.menu.show_all()
self.run_gtk()
else:
self.run_sleep()
self.run_gtk()
wmjackctl().run()