Advertisement
yayopoint

Listado Puertos Jack

Jun 16th, 2012
271
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.00 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. ####################################
  5. ###           Módulos            ###
  6. ####################################
  7. import dbus
  8. from gi.repository import Gtk
  9. from dbus.mainloop.glib import DBusGMainLoop
  10.  
  11.  
  12. # Hay que hacer este llamado antes de definir el bus
  13. dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
  14.  
  15. ####################################
  16. ###             Bus              ###
  17. ####################################
  18. bus = dbus.SessionBus()
  19. jack_control_obj = bus.get_object("org.jackaudio.service", "/org/jackaudio/Controller")
  20. jack_control_ifa = dbus.Interface(jack_control_obj, "org.jackaudio.JackPatchbay")
  21.  
  22. #port_list = jack_control_ifa.GetAllPorts()
  23.  
  24. graph = jack_control_ifa.GetGraph(0)
  25.  
  26. for item in graph[1]:
  27.   print(item[0], item[1])
  28.   for subitem in item[2]:
  29.     print("-> ", subitem[0], subitem[1], subitem[2], subitem[3])
  30.  
  31. def printNewPort(new_graph_version, client_id, client_name, port_id, port_name, port_flags, port_type):
  32.   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)
  33.  
  34. jack_control_ifa.connect_to_signal("PortAppeared", printNewPort)
  35.  
  36. ####################################
  37. ###             GUI              ###
  38. ####################################
  39. class MainWindow(Gtk.Window):
  40.   def __init__(self):
  41.     Gtk.Window.__init__(self, title="Listado de Puertos Jack")
  42.     self.set_default_size(200, 200)
  43.     self.model = self.__create_model(graph[1])
  44.  
  45.     sw = Gtk.ScrolledWindow()
  46.     treeView = Gtk.TreeView(self.model)
  47.  
  48.     cellRenderer = Gtk.CellRendererText()
  49.     column = Gtk.TreeViewColumn("ID", cellRenderer, text=0)
  50.     column1 = Gtk.TreeViewColumn("Puertos", cellRenderer, text=1)
  51.     treeView.append_column(column)
  52.     treeView.append_column(column1)
  53.  
  54.     sw.add(treeView)
  55.     self.add(sw)
  56.  
  57.     jack_control_ifa.connect_to_signal("ClientAppeared", self.__add_client)
  58.     jack_control_ifa.connect_to_signal("PortAppeared", self.__add_port)
  59.  
  60.   def __create_model(self, item_list):
  61.     model = Gtk.TreeStore(int, str)
  62.     for client in item_list:
  63.       iter = model.append(None)
  64.       model.set(iter,
  65.                 0, client[0],
  66.                 1, client[1])
  67.       for port in client[2]:
  68.         child_iter = model.append(iter)
  69.         model.set(child_iter,
  70.                   0, port[0],
  71.                   1, port[1])
  72.     return model
  73.  
  74.   def __add_client (self, new_graph_version, client_id, client_name):
  75.     iter = self.model.append(None)
  76.     self.lastItem = iter
  77.     self.model.set(iter,
  78.               0, client_id,
  79.               1, client_name)
  80.  
  81.   def __add_port (self, new_graph_version, client_id, client_name, port_id, port_name, port_flags, port_type):
  82.     child_iter = self.model.append(self.lastItem)
  83.     self.model.set(child_iter,
  84.               0, port_id,
  85.               1, port_name)
  86.  
  87. win = MainWindow()
  88. win.connect("delete-event", Gtk.main_quit)
  89. win.show_all()
  90. Gtk.main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement