... | ... |
@@ -11,11 +11,9 @@ class MyDotWindow(xdot.DotWindow): |
11 | 11 |
|
12 | 12 |
def __init__(self): |
13 | 13 |
xdot.DotWindow.__init__(self) |
14 |
+ self.widget.connect('clicked', self.on_url_clicked) |
|
14 | 15 |
|
15 |
- def get_name(self, name): |
|
16 |
- return 'My Dot Window' |
|
17 |
- |
|
18 |
- def on_url_clicked(self, url, event): |
|
16 |
+ def on_url_clicked(self, widget, url, event): |
|
19 | 17 |
dialog = gtk.MessageDialog( |
20 | 18 |
parent = self, |
21 | 19 |
buttons = gtk.BUTTONS_OK, |
... | ... |
@@ -3,13 +3,14 @@ |
3 | 3 |
|
4 | 4 |
__author__ = "Jose Fonseca" |
5 | 5 |
|
6 |
-__version__ = "0.2" |
|
6 |
+__version__ = "0.3" |
|
7 | 7 |
|
8 | 8 |
|
9 | 9 |
import sys |
10 | 10 |
import subprocess |
11 | 11 |
import math |
12 | 12 |
|
13 |
+import gobject |
|
13 | 14 |
import gtk |
14 | 15 |
import gtk.gdk |
15 | 16 |
import gtk.keysyms |
... | ... |
@@ -472,13 +473,16 @@ class XDotParser: |
472 | 473 |
|
473 | 474 |
class DotWidget(gtk.DrawingArea): |
474 | 475 |
|
476 |
+ __gsignals__ = { |
|
477 |
+ 'expose-event': 'override', |
|
478 |
+ 'clicked' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_STRING, gtk.gdk.Event)) |
|
479 |
+ } |
|
480 |
+ |
|
475 | 481 |
def __init__(self): |
476 | 482 |
gtk.DrawingArea.__init__(self) |
477 | 483 |
|
478 | 484 |
self.graph = Graph() |
479 | 485 |
|
480 |
- self.connect("expose_event", self.on_expose) |
|
481 |
- |
|
482 | 486 |
self.set_flags(gtk.CAN_FOCUS) |
483 | 487 |
|
484 | 488 |
self.add_events(gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK) |
... | ... |
@@ -510,8 +514,8 @@ class DotWidget(gtk.DrawingArea): |
510 | 514 |
self.graph = parser.parse() |
511 | 515 |
self.zoom_image(self.zoom_ratio, center=True) |
512 | 516 |
|
513 |
- def on_expose(self, area, event): |
|
514 |
- cr = area.window.cairo_create() |
|
517 |
+ def do_expose_event(self, event): |
|
518 |
+ cr = self.window.cairo_create() |
|
515 | 519 |
|
516 | 520 |
# set a clip region for the expose event |
517 | 521 |
cr.rectangle( |
... | ... |
@@ -606,7 +610,8 @@ class DotWidget(gtk.DrawingArea): |
606 | 610 |
x, y = int(event.x), int(event.y) |
607 | 611 |
url = self.get_url(x, y) |
608 | 612 |
if url is not None: |
609 |
- return self.on_url_clicked(url, event) |
|
613 |
+ self.emit('clicked', unicode(url), event) |
|
614 |
+ return True |
|
610 | 615 |
|
611 | 616 |
return False |
612 | 617 |
|
... | ... |
@@ -658,9 +663,6 @@ class DotWidget(gtk.DrawingArea): |
658 | 663 |
y = self.graph.height - y |
659 | 664 |
return self.graph.get_url(x, y) |
660 | 665 |
|
661 |
- def on_url_clicked(self, url, event): |
|
662 |
- return False |
|
663 |
- |
|
664 | 666 |
|
665 | 667 |
class DotWindow(gtk.Window): |
666 | 668 |
|
... | ... |
@@ -722,16 +724,11 @@ class DotWindow(gtk.Window): |
722 | 724 |
|
723 | 725 |
self.set_focus(self.widget) |
724 | 726 |
|
725 |
- self.widget.on_url_clicked = self.on_url_clicked |
|
726 |
- |
|
727 | 727 |
self.show_all() |
728 | 728 |
|
729 | 729 |
def set_dotcode(self, dotcode): |
730 | 730 |
self.widget.set_dotcode(dotcode) |
731 | 731 |
|
732 |
- def on_url_clicked(self, url, event): |
|
733 |
- return False |
|
734 |
- |
|
735 | 732 |
|
736 | 733 |
def main(): |
737 | 734 |
import optparse |