]> git.alsa-project.org Git - alsa.git/commitdiff
hda-analyzer: add TRACKER class to track open windows
authorJaroslav Kysela <perex@perex.cz>
Tue, 6 Jul 2010 12:23:32 +0000 (14:23 +0200)
committerJaroslav Kysela <perex@perex.cz>
Tue, 6 Jul 2010 12:23:32 +0000 (14:23 +0200)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
hda-analyzer/hda_analyzer.py
hda-analyzer/hda_graph.py
hda-analyzer/hda_guilib.py

index 8dec0eb08c9d81e488cd5d0647c2adbc4bba62ca..284e82cec5f1811be8a585aa08f44c75e07f1c2e 100755 (executable)
@@ -213,6 +213,7 @@ class HDAAnalyzer(gtk.Window):
     self._new_notebook_page(scrolled_window, '_Text dump')
 
     self.show_all()    
+    TRACKER.add(self)
 
   def __destroy(self, widget):
     if do_diff():      
@@ -230,7 +231,7 @@ class HDAAnalyzer(gtk.Window):
             CODEC_TREE[card][codec].revert()
         print "Settings for all codecs were reverted..."
     
-    gtk.main_quit()
+    TRACKER.close(self)
 
   def simple_dialog(self, type, msg):
     dialog = gtk.MessageDialog(self,
index 7700f29f8a2a9c8f4b0002ef24197f5f956d3724..43bfed5a3597ddb1558f24c82106debe4bb7b1ac 100755 (executable)
@@ -667,6 +667,7 @@ class CodecGraphLayout(gtk.Layout):
           self.queue_draw()
 
   def node_win_destroy(self, widget, node):
+    TRACKER.close(node.win)
     node.win = None
 
   def open_node(self, widget, node):
@@ -681,6 +682,7 @@ class CodecGraphLayout(gtk.Layout):
       win.connect("destroy", self.node_win_destroy, node)
       win.show_all()
       node.win = win
+      TRACKER.add(win)
     else:
       node.win.present()
     
@@ -815,9 +817,11 @@ class CodecGraph(gtk.Window):
     hScrollbar.set_adjustment(hAdjust)
     self.show_all()
     GRAPH_WINDOWS[codec] = self
+    TRACKER.add(self)
 
   def __destroy(self, widget):
     del GRAPH_WINDOWS[self.codec]
+    TRACKER.close(self)
 
 def create_graph(codec):
   if codec in GRAPH_WINDOWS:
index 532da33272c5408c318976b577665fe8db3f1fff..841cacb846f59619adb7c1c75146c3cba7de37f0 100644 (file)
@@ -575,3 +575,20 @@ class NodeGui(gtk.ScrolledWindow):
     vbox.pack_start(self.__build_card_info(card), False, False)
     mframe.add(vbox)
     self.add_with_viewport(mframe)
+
+class TrackWindows:
+
+  def __init__(self):
+    self.windows = []
+    
+  def add(self, win):
+    if not win in self.windows:
+      self.windows.append(win)
+    
+  def close(self, win):
+    if win in self.windows:
+      self.windows.remove(win)
+      if not self.windows:
+        gtk.main_quit()
+
+TRACKER = TrackWindows()