| ... | ... |
@@ -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 |