Author: esr
Date: Sat Oct 11 17:11:16 2008
New Revision: 30045
URL: http://svn.gna.org/viewcvs/wesnoth?rev=30045&view=rev
Log:
trackplacer: paste in the simplescribble demo code so we have basic
event capture working.
Modified:
trunk/data/tools/trackplacer
Modified: trunk/data/tools/trackplacer
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/data/tools/trackplacer?rev=30045&r1=30044&r2=30045&view=diff
==============================================================================
--- trunk/data/tools/trackplacer (original)
+++ trunk/data/tools/trackplacer Sat Oct 11 17:11:16 2008
@@ -116,6 +116,52 @@
def destroy(self, widget):
sys.exit(0)
+# Backing pixmap for drawing area
+pixmap = None
+
+# Create a new backing pixmap of the appropriate size
+def configure_event(widget, event):
+ global pixmap
+
+ x, y, width, height = widget.get_allocation()
+ pixmap = gtk.gdk.Pixmap(widget.window, width, height)
+ pixmap.draw_rectangle(widget.get_style().white_gc,
+ True, 0, 0, width, height)
+
+ return True
+
+# Redraw the screen from the backing pixmap
+def expose_event(widget, event):
+ x , y, width, height = event.area
+ widget.window.draw_drawable(widget.get_style().fg_gc[gtk.STATE_NORMAL],
+ pixmap, x, y, x, y, width, height)
+ return False
+
+# Draw a rectangle on the screen
+def draw_brush(widget, x, y):
+ rect = (int(x-5), int(y-5), 10, 10)
+ pixmap.draw_rectangle(widget.get_style().black_gc, True,
+ rect[0], rect[1], rect[2], rect[3])
+ widget.queue_draw_area(rect[0], rect[1], rect[2], rect[3])
+
+def button_press_event(widget, event):
+ if event.button == 1 and pixmap != None:
+ draw_brush(widget, event.x, event.y)
+ return True
+
+def motion_notify_event(widget, event):
+ if event.is_hint:
+ x, y, state = event.window.get_pointer()
+ else:
+ x = event.x
+ y = event.y
+ state = event.state
+
+ if state & gtk.gdk.BUTTON1_MASK and pixmap != None:
+ draw_brush(widget, x, y)
+
+ return True
+
class TrackEditor:
def __init__(self, filename=None, verbose=False):
self.verbose = verbose
@@ -142,7 +188,49 @@
self.rest_image.set_from_file(rest_icon)
except:
self.fatal_error("error while reading icons")
- # FIXME: Set up editing window
+ # FIXME: This is a copy of simplescribble.py from the tutorial.
+ # It will need to be edited to do what we really want.
+ window = gtk.Window(gtk.WINDOW_TOPLEVEL)
+ window.set_name ("Test Input")
+
+ vbox = gtk.VBox(False, 0)
+ window.add(vbox)
+ vbox.show()
+
+ window.connect("destroy", lambda w: gtk.main_quit())
+
+ # Create the drawing area
+ drawing_area = gtk.DrawingArea()
+ drawing_area.set_size_request(200, 200)
+ vbox.pack_start(drawing_area, True, True, 0)
+
+ drawing_area.show()
+
+ # Signals used to handle backing pixmap
+ drawing_area.connect("expose_event", expose_event)
+ drawing_area.connect("configure_event", configure_event)
+
+ # Event signals
+ drawing_area.connect("motion_notify_event", motion_notify_event)
+ drawing_area.connect("button_press_event", button_press_event)
+
+ drawing_area.set_events(gtk.gdk.EXPOSURE_MASK
+ | gtk.gdk.LEAVE_NOTIFY_MASK
+ | gtk.gdk.BUTTON_PRESS_MASK
+ | gtk.gdk.POINTER_MOTION_MASK
+ | gtk.gdk.POINTER_MOTION_HINT_MASK)
+
+ # .. And a quit button
+ button = gtk.Button("Quit")
+ vbox.pack_start(button, False, False, 0)
+
+ button.connect_object("clicked", lambda w: w.destroy(), window)
+ button.show()
+
+ window.show()
+
+ gtk.main()
+
self.log("initialization successful")
def log(self, msg):
_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits