Refactoring
This commit is contained in:
parent
068451c2ed
commit
54ec74b33f
|
@ -22,7 +22,6 @@
|
|||
|
||||
import os
|
||||
import sys
|
||||
import signal
|
||||
import gettext
|
||||
import argparse
|
||||
|
||||
|
@ -35,6 +34,7 @@ from laditools import LadishProxy
|
|||
from laditools import LadishStatusType
|
||||
from laditools import LadishProxyError
|
||||
from laditools import JackConfigProxy
|
||||
from laditools import LadiApp
|
||||
|
||||
from gi.repository import Gtk
|
||||
from gi.repository import Gdk
|
||||
|
@ -42,9 +42,6 @@ from gi.repository import GObject
|
|||
|
||||
from laditools.gtk import find_data_file
|
||||
|
||||
sig_handler = signal.getsignal(signal.SIGTERM)
|
||||
signal.signal(signal.SIGINT, sig_handler)
|
||||
|
||||
tooltips_active = True
|
||||
|
||||
(COLUMN_NAME,
|
||||
|
@ -637,53 +634,81 @@ class jack_internal_params_configure_command(jack_params_configure_command):
|
|||
def get_description(self):
|
||||
return _('JACK "%s"') % self.name
|
||||
|
||||
def show_panels(*args, **kwargs):
|
||||
if not 'modules' in kwargs:
|
||||
return None
|
||||
mods = kwargs['modules']
|
||||
window = Gtk.Window.new(Gtk.WindowType.TOPLEVEL)
|
||||
vbox = Gtk.VBox()
|
||||
hbox = Gtk.HBox()
|
||||
notebook = Gtk.Notebook()
|
||||
class LadiControlCenter(LadiApp):
|
||||
|
||||
vbox.pack_start(hbox, True, True, 12)
|
||||
hbox.pack_start(notebook, True, True, 2)
|
||||
window.set_title("LADI Settings")
|
||||
window.set_icon_name('preferences-system')
|
||||
window.set_resizable(True)
|
||||
notebook.set_tab_pos(Gtk.PositionType.LEFT)
|
||||
_appname = 'ladi-control-center'
|
||||
_appname_long = _("LADI Control Center")
|
||||
_appid = 'org.linuxaudio.ladi.controlcenter'
|
||||
|
||||
if 'select' in kwargs:
|
||||
selected = kwargs['select']
|
||||
else:
|
||||
selected = None
|
||||
def quit(self, *args, **kwargs):
|
||||
self.window.destroy()
|
||||
Gtk.main_quit()
|
||||
|
||||
page_count = 0
|
||||
@property
|
||||
def modules(self): return self._modules
|
||||
|
||||
for mod in mods:
|
||||
treeview = mods[mod].run({})
|
||||
container = Gtk.ScrolledWindow()
|
||||
container.set_min_content_width(400)
|
||||
container.set_min_content_height(400)
|
||||
container.set_policy(hscrollbar_policy=Gtk.PolicyType.AUTOMATIC,
|
||||
vscrollbar_policy=Gtk.PolicyType.AUTOMATIC)
|
||||
container.add(treeview)
|
||||
container.show_all()
|
||||
#vbox.show_all()
|
||||
try:
|
||||
tab_label = mods[mod].get_window_title()
|
||||
except:
|
||||
tab_label = mods[mod].get_description()
|
||||
notebook.append_page(container, Gtk.Label(tab_label))
|
||||
if selected and selected == mod:
|
||||
notebook.set_current_page(page_count)
|
||||
page_count += 1
|
||||
def __init__(self):
|
||||
|
||||
window.add(vbox)
|
||||
|
||||
window.show_all()
|
||||
window.connect('destroy', Gtk.main_quit)
|
||||
Gtk.main()
|
||||
LadiApp.__init__(self)
|
||||
|
||||
# Init modules list
|
||||
modules = {'engine' : jack_engine_params_configure_command(),
|
||||
'params' : jack_driver_params_configure_command()}
|
||||
for internal in jack.read_container(['internals']):
|
||||
modules[str(internal)] = jack_internal_params_configure_command(internal)
|
||||
self._modules = modules
|
||||
|
||||
def _activate(self, **kwargs):
|
||||
|
||||
if 'select' in kwargs:
|
||||
selected = kwargs['select']
|
||||
else:
|
||||
selected = None
|
||||
|
||||
# Init UI
|
||||
self.window = window = Gtk.Window.new(Gtk.WindowType.TOPLEVEL)
|
||||
vbox = Gtk.VBox()
|
||||
hbox = Gtk.HBox()
|
||||
notebook = Gtk.Notebook()
|
||||
|
||||
vbox.pack_start(hbox, True, True, 12)
|
||||
hbox.pack_start(notebook, True, True, 2)
|
||||
window.set_title("LADI Settings")
|
||||
window.set_icon_name('preferences-system')
|
||||
window.set_resizable(True)
|
||||
notebook.set_tab_pos(Gtk.PositionType.LEFT)
|
||||
|
||||
page_count = 0
|
||||
|
||||
modules = self.modules
|
||||
for mod in modules:
|
||||
treeview = modules[mod].run({})
|
||||
container = Gtk.ScrolledWindow()
|
||||
container.set_min_content_width(400)
|
||||
container.set_min_content_height(400)
|
||||
container.set_policy(hscrollbar_policy=Gtk.PolicyType.AUTOMATIC,
|
||||
vscrollbar_policy=Gtk.PolicyType.AUTOMATIC)
|
||||
container.add(treeview)
|
||||
container.show_all()
|
||||
#vbox.show_all()
|
||||
try:
|
||||
tab_label = modules[mod].get_window_title()
|
||||
except:
|
||||
tab_label = modules[mod].get_description()
|
||||
notebook.append_page(container, Gtk.Label(tab_label))
|
||||
if selected and selected == mod:
|
||||
notebook.set_current_page(page_count)
|
||||
page_count += 1
|
||||
|
||||
window.add(vbox)
|
||||
window.connect('destroy', self.quit)
|
||||
|
||||
self.connect_signals_quit()
|
||||
|
||||
def run(self, **kwargs):
|
||||
self._activate(**kwargs)
|
||||
self.window.show_all()
|
||||
Gtk.main()
|
||||
|
||||
if __name__ == "__main__":
|
||||
global jack
|
||||
|
@ -695,22 +720,29 @@ if __name__ == "__main__":
|
|||
|
||||
parser = argparse.ArgumentParser(description=_('Convenient graphical interface for configuring JACK'),
|
||||
epilog=_('This program is part of the LADITools suite.'))
|
||||
parser.add_argument('-m', '--module', nargs=1, metavar='MODULE', help=_('select the module to configure'))
|
||||
parser.add_argument('-l', '--list-modules', action='store_true', help=_('list available modules'))
|
||||
parser.add_argument('--version', action='version', version="%(prog)s " + get_version_string())
|
||||
parser.add_argument('-m',
|
||||
'--module',
|
||||
nargs=1,
|
||||
metavar='MODULE',
|
||||
help=_('select the module to configure'))
|
||||
parser.add_argument('-l',
|
||||
'--list-modules',
|
||||
action='store_true',
|
||||
help=_('list available modules'))
|
||||
parser.add_argument('--version',
|
||||
action='version',
|
||||
version="%(prog)s " + get_version_string())
|
||||
|
||||
options = parser.parse_args()
|
||||
|
||||
modules = {'engine' : jack_engine_params_configure_command(),
|
||||
'params' : jack_driver_params_configure_command()}
|
||||
for internal in jack.read_container(['internals']):
|
||||
modules[str(internal)] = jack_internal_params_configure_command(internal)
|
||||
app = LadiControlCenter()
|
||||
|
||||
if options.list_modules and options.module:
|
||||
sys.stderr.write(_("Conflicting options, type %s --help for a list of options.") % sys.argv[0] + '\n')
|
||||
sys.stderr.flush()
|
||||
sys.exit(2)
|
||||
|
||||
modules = app.modules
|
||||
if options.list_modules:
|
||||
sys.stderr.write(_("Available modules: "))
|
||||
sys.stderr.write(' '.join(modules) + '\n')
|
||||
|
@ -722,8 +754,8 @@ if __name__ == "__main__":
|
|||
sys.stderr.flush()
|
||||
sys.exit(2)
|
||||
else:
|
||||
show_panels(modules=modules, select=module)
|
||||
app.run(select=module)
|
||||
else:
|
||||
show_panels(modules=modules)
|
||||
app.run()
|
||||
|
||||
sys.exit(0)
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
import os
|
||||
import sys
|
||||
import time
|
||||
import signal
|
||||
import gettext
|
||||
import argparse
|
||||
|
||||
|
@ -308,8 +307,7 @@ class LadiPlayer(LadiManagerGtk, LadiApp):
|
|||
LadiManagerGtk.__init__(self, autostart)
|
||||
|
||||
# Handle signals
|
||||
signal.signal(signal.SIGTERM, self.quit)
|
||||
signal.signal(signal.SIGINT, self.quit)
|
||||
self.connect_signals_quit()
|
||||
|
||||
# Build the UI
|
||||
builder = Gtk.Builder()
|
||||
|
|
|
@ -24,7 +24,6 @@ import sys
|
|||
import signal
|
||||
from subprocess import Popen, PIPE
|
||||
import pty
|
||||
from signal import SIGTERM
|
||||
import termios
|
||||
import tty
|
||||
import gettext
|
||||
|
@ -106,9 +105,7 @@ class LadiSystemLog(LadiApp):
|
|||
self.global_config = LadiConfiguration (self.appname, self._default_config)
|
||||
self.param_dict = self.global_config.get_config_section (self.appname)
|
||||
|
||||
# Handle signals
|
||||
signal.signal(signal.SIGTERM, self.quit)
|
||||
signal.signal(signal.SIGINT, self.quit)
|
||||
self.connect_signals_quit()
|
||||
|
||||
for log in self.log_files[:]:
|
||||
log['logfile_path'] = self.param_dict[log['config_name']]
|
||||
|
|
|
@ -20,13 +20,9 @@
|
|||
|
||||
import os
|
||||
import sys
|
||||
import signal
|
||||
import gettext
|
||||
import argparse
|
||||
|
||||
sig_handler = signal.getsignal(signal.SIGTERM)
|
||||
signal.signal(signal.SIGINT, sig_handler)
|
||||
|
||||
from laditools import _gettext_domain
|
||||
gettext.install(_gettext_domain)
|
||||
|
||||
|
@ -89,6 +85,8 @@ class LadiStatusIcon (LadiMenu, LadiApp):
|
|||
LadiMenu.__init__(self,
|
||||
autostart,
|
||||
quit = self.quit)
|
||||
LadiApp.__init__(self)
|
||||
self.connect_signals_quit()
|
||||
|
||||
def menu_activate(self, status_icon, button, activate_time, user_data=None):
|
||||
menu = self.create_menu()
|
||||
|
|
|
@ -28,5 +28,16 @@ class LadiApp(object):
|
|||
@property
|
||||
def appid(self): return self._appid
|
||||
|
||||
def connect_signals_quit(self, signals=[], sig_handler=None):
|
||||
if not signals:
|
||||
signals = [signal.SIGTERM,
|
||||
signal.SIGINT]
|
||||
if not sig_handler:
|
||||
sig_handler = self.quit
|
||||
|
||||
for sig in signals:
|
||||
signal.signal(sig, sig_handler)
|
||||
signal.signal(sig, sig_handler)
|
||||
|
||||
def run(self): raise NotImplementedError
|
||||
def quit(self): raise NotImplementedError
|
||||
|
|
Loading…
Reference in New Issue