* 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:
parent
4d6ca9e97f
commit
4e9cf1d1b4
|
@ -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()
|
68
wmjackctl
68
wmjackctl
|
@ -4,18 +4,15 @@ import sys
|
||||||
import os
|
import os
|
||||||
from wmdocklib import wmoo, pywmhelpers
|
from wmdocklib import wmoo, pywmhelpers
|
||||||
from jack_controller import jack_controller
|
from jack_controller import jack_controller
|
||||||
|
from jackctl import jackctl
|
||||||
import time
|
import time
|
||||||
|
|
||||||
try:
|
import pygtk
|
||||||
import pygtk
|
pygtk.require('2.0')
|
||||||
pygtk.require('2.0')
|
import gtk
|
||||||
import gtk
|
import gobject
|
||||||
import gobject
|
|
||||||
have_gtk = True
|
|
||||||
except:
|
|
||||||
have_gtk = False
|
|
||||||
|
|
||||||
class wmjackctl(wmoo.Application):
|
class wmjackctl(wmoo.Application, jackctl):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.jack = None
|
self.jack = None
|
||||||
wmoo.Application.__init__(
|
wmoo.Application.__init__(
|
||||||
|
@ -24,44 +21,17 @@ class wmjackctl(wmoo.Application):
|
||||||
margin = 2,
|
margin = 2,
|
||||||
debug = False)
|
debug = False)
|
||||||
|
|
||||||
if have_gtk:
|
jackctl.__init__(self)
|
||||||
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)
|
|
||||||
|
|
||||||
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):
|
def on_button_release(self, event):
|
||||||
if event['button'] == 3:
|
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):
|
def update(self):
|
||||||
lines = ["JACK"]
|
lines = ["JACK"]
|
||||||
try:
|
try:
|
||||||
|
@ -137,13 +107,11 @@ class wmjackctl(wmoo.Application):
|
||||||
def run_sleep(self):
|
def run_sleep(self):
|
||||||
self.go = True
|
self.go = True
|
||||||
while self.go:
|
while self.go:
|
||||||
if have_gtk:
|
while gtk.events_pending():
|
||||||
while gtk.events_pending():
|
gtk.main_iteration()
|
||||||
gtk.main_iteration()
|
|
||||||
self.do_dockapp()
|
self.do_dockapp()
|
||||||
if have_gtk:
|
while gtk.events_pending():
|
||||||
while gtk.events_pending():
|
gtk.main_iteration()
|
||||||
gtk.main_iteration()
|
|
||||||
time.sleep(self._sleep)
|
time.sleep(self._sleep)
|
||||||
|
|
||||||
def run_gtk(self):
|
def run_gtk(self):
|
||||||
|
@ -152,10 +120,6 @@ class wmjackctl(wmoo.Application):
|
||||||
gtk.main()
|
gtk.main()
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
if self.gtkloop:
|
self.run_gtk()
|
||||||
self.menu.show_all()
|
|
||||||
self.run_gtk()
|
|
||||||
else:
|
|
||||||
self.run_sleep()
|
|
||||||
|
|
||||||
wmjackctl().run()
|
wmjackctl().run()
|
||||||
|
|
Loading…
Reference in New Issue