From 040335c530c7b9acb16735f8890e4342ce04e5ba Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Tue, 6 Jul 2010 14:23:32 +0200 Subject: [PATCH] hda-analyzer: add TRACKER class to track open windows Signed-off-by: Jaroslav Kysela --- hda-analyzer/hda_analyzer.py | 3 ++- hda-analyzer/hda_graph.py | 4 ++++ hda-analyzer/hda_guilib.py | 17 +++++++++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/hda-analyzer/hda_analyzer.py b/hda-analyzer/hda_analyzer.py index 8dec0eb..284e82c 100755 --- a/hda-analyzer/hda_analyzer.py +++ b/hda-analyzer/hda_analyzer.py @@ -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, diff --git a/hda-analyzer/hda_graph.py b/hda-analyzer/hda_graph.py index 7700f29..43bfed5 100755 --- a/hda-analyzer/hda_graph.py +++ b/hda-analyzer/hda_graph.py @@ -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: diff --git a/hda-analyzer/hda_guilib.py b/hda-analyzer/hda_guilib.py index 532da33..841cacb 100644 --- a/hda-analyzer/hda_guilib.py +++ b/hda-analyzer/hda_guilib.py @@ -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() -- 2.47.1