From bfecc683a8e63e7ea0b9ada2e87d5c539d2f507c Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Sun, 11 Jul 2010 10:13:45 +0200 Subject: [PATCH] hda-analyzer: fix digital category update, handle scroll events in graph win Signed-off-by: Jaroslav Kysela --- hda-analyzer/hda_graph.py | 27 +++++++++++++++++++++++++-- hda-analyzer/hda_guilib.py | 3 ++- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/hda-analyzer/hda_graph.py b/hda-analyzer/hda_graph.py index 0461b34..06b5c99 100755 --- a/hda-analyzer/hda_graph.py +++ b/hda-analyzer/hda_graph.py @@ -25,6 +25,11 @@ from hda_codec import EAPDBTL_BITS, PIN_WIDGET_CONTROL_BITS, \ GRAPH_WINDOWS = {} +class DummyScrollEvent: + + def __init__(self, dir): + self.direction = dir + class Node: def __init__(self, codec, node, x, y, nodesize, extra): @@ -442,12 +447,13 @@ class CodecGraphLayout(gtk.Layout): self.set_events(0) self.add_events(gtk.gdk.EXPOSURE_MASK | gtk.gdk.POINTER_MOTION_MASK | gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK | - gtk.gdk.LEAVE_NOTIFY_MASK) + gtk.gdk.LEAVE_NOTIFY_MASK | gtk.gdk.SCROLL_MASK) self.expose_handler = self.connect("expose-event", self.expose) self.click_handler = self.connect("button-press-event", self.button_click) self.release_handler = self.connect("button-release-event", self.button_release) self.motion_handler = self.connect("motion-notify-event", self.mouse_move) self.mouse_leave_handler = self.connect("leave-notify-event", self.mouse_leave) + self.scroll_me_handler = self.connect("scroll-event", self.scroll_me) self.popup_win = None self.popup = None @@ -764,6 +770,10 @@ class CodecGraphLayout(gtk.Layout): def button_click(self, widget, event): if event.button != 3: + if event.button == 8: + self.scroll_me(self, DummyScrollEvent(gtk.gdk.SCROLL_LEFT)) + elif event.button == 9: + self.scroll_me(self, DummyScrollEvent(gtk.gdk.SCROLL_RIGHT)) return False node, what = self.find_node(event) m = None @@ -860,9 +870,22 @@ class CodecGraphLayout(gtk.Layout): return False def button_release(self, widget, event): - pass + def scroll_me(self, widget, event): + if event.direction == gtk.gdk.SCROLL_UP: + adj = self.get_vadjustment() + adj.set_value(adj.get_value()-40) + elif event.direction == gtk.gdk.SCROLL_DOWN: + adj = self.get_vadjustment() + adj.set_value(adj.get_value()+40) + elif event.direction == gtk.gdk.SCROLL_LEFT: + adj = self.get_hadjustment() + adj.set_value(adj.get_value()-40) + elif event.direction == gtk.gdk.SCROLL_RIGHT: + adj = self.get_hadjustment() + adj.set_value(adj.get_value()+40) + gobject.type_register(CodecGraphLayout) class CodecGraph(gtk.Window): diff --git a/hda-analyzer/hda_guilib.py b/hda-analyzer/hda_guilib.py index 4fe8457..cdd12cb 100644 --- a/hda-analyzer/hda_guilib.py +++ b/hda-analyzer/hda_guilib.py @@ -463,7 +463,7 @@ class NodeGui(gtk.ScrolledWindow): hbox1.pack_start(frame) frame = gtk.Frame('Digital Converter Category') entry = gtk.Entry() - entry.set_text("0x%x" % node.dig1_category) + self.dig_category_entry = entry entry.set_width_chars(4) entry.connect("activate", self.__dig1_category_activate, node) frame.add(entry) @@ -526,6 +526,7 @@ class NodeGui(gtk.ScrolledWindow): checkbutton = self.digital_checkbuttons[idx] checkbutton.set_active(node.digi1 & (1 << DIG1_BITS[name])) idx += 1 + self.dig_category_entry.set_text("0x%x" % node.dig1_category) elif node.wtype_id == 'PIN': if 'EAPD' in node.pincap: idx = 0 -- 2.47.1