Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- ####################################
- ### Módulos ###
- ####################################
- import dbus
- from gi.repository import Gtk
- from dbus.mainloop.glib import DBusGMainLoop
- # Hay que hacer este llamado antes de definir el bus
- dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
- ####################################
- ### Bus ###
- ####################################
- bus = dbus.SessionBus()
- jack_control_obj = bus.get_object("org.jackaudio.service", "/org/jackaudio/Controller")
- jack_control_ifa = dbus.Interface(jack_control_obj, "org.jackaudio.JackPatchbay")
- #port_list = jack_control_ifa.GetAllPorts()
- graph = jack_control_ifa.GetGraph(0)
- for item in graph[1]:
- print(item[0], item[1])
- for subitem in item[2]:
- print("-> ", subitem[0], subitem[1], subitem[2], subitem[3])
- def printNewPort(new_graph_version, client_id, client_name, port_id, port_name, port_flags, port_type):
- print("GV:", new_graph_version, ", client_id:", client_id, ", client_name: ", client_name, ", port_id: ", port_id, ", port_name: ", port_name, ", port_type", port_type)
- jack_control_ifa.connect_to_signal("PortAppeared", printNewPort)
- ####################################
- ### GUI ###
- ####################################
- class MainWindow(Gtk.Window):
- def __init__(self):
- Gtk.Window.__init__(self, title="Listado de Puertos Jack")
- self.set_default_size(200, 200)
- self.model = self.__create_model(graph[1])
- sw = Gtk.ScrolledWindow()
- treeView = Gtk.TreeView(self.model)
- cellRenderer = Gtk.CellRendererText()
- column = Gtk.TreeViewColumn("ID", cellRenderer, text=0)
- column1 = Gtk.TreeViewColumn("Puertos", cellRenderer, text=1)
- treeView.append_column(column)
- treeView.append_column(column1)
- sw.add(treeView)
- self.add(sw)
- jack_control_ifa.connect_to_signal("ClientAppeared", self.__add_client)
- jack_control_ifa.connect_to_signal("PortAppeared", self.__add_port)
- def __create_model(self, item_list):
- model = Gtk.TreeStore(int, str)
- for client in item_list:
- iter = model.append(None)
- model.set(iter,
- 0, client[0],
- 1, client[1])
- for port in client[2]:
- child_iter = model.append(iter)
- model.set(child_iter,
- 0, port[0],
- 1, port[1])
- return model
- def __add_client (self, new_graph_version, client_id, client_name):
- iter = self.model.append(None)
- self.lastItem = iter
- self.model.set(iter,
- 0, client_id,
- 1, client_name)
- def __add_port (self, new_graph_version, client_id, client_name, port_id, port_name, port_flags, port_type):
- child_iter = self.model.append(self.lastItem)
- self.model.set(child_iter,
- 0, port_id,
- 1, port_name)
- win = MainWindow()
- win.connect("delete-event", Gtk.main_quit)
- win.show_all()
- Gtk.main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement