pygoocanvas r240 - in trunk: . demo/simple_demo
- From: gianmt svn gnome org
- To: svn-commits-list gnome org
- Subject: pygoocanvas r240 - in trunk: . demo/simple_demo
- Date: Mon, 8 Dec 2008 00:01:35 +0000 (UTC)
Author: gianmt
Date: Mon Dec 8 00:01:35 2008
New Revision: 240
URL: http://svn.gnome.org/viewvc/pygoocanvas?rev=240&view=rev
Log:
Add example for static item and grid, fix some code in demo.
Modified:
trunk/ChangeLog
trunk/demo/simple_demo/demo.py
Modified: trunk/demo/simple_demo/demo.py
==============================================================================
--- trunk/demo/simple_demo/demo.py (original)
+++ trunk/demo/simple_demo/demo.py Mon Dec 8 00:01:35 2008
@@ -26,7 +26,7 @@
notebook.append_page(self.create_canvas_primitives (), gtk.Label("Primitives"))
notebook.append_page(arrowhead_demo.create_canvas_arrowhead (), gtk.Label("Arrowhead"))
notebook.append_page(fifteen_demo.create_canvas_fifteen (), gtk.Label("Fifteen"))
- notebook.append_page(features_demo.create_canvas_features (), gtk.Label("Features"))
+ notebook.append_page(features_demo.create_canvas_features (), gtk.Label("Reparent"))
notebook.append_page(scalability_demo.create_canvas_scalability (), gtk.Label("Scalability"))
notebook.append_page(grabs_demo.create_grabs_page (), gtk.Label("Grabs"))
notebook.append_page(events_demo.create_events_page (), gtk.Label("Events"))
@@ -348,21 +348,27 @@
self.setup_heading(group, "Lines", 4)
self.setup_heading(group, "Polygons", 7)
- def create_stipple (self, color_name, stipple_data):
+ def create_stipple (self, color_name):
color = gtk.gdk.color_parse (color_name)
+
+ stipple_data = array.array('B', [0, 0, 0, 255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 255])
+
stipple_data[2] = stipple_data[14] = color.red >> 8
stipple_data[1] = stipple_data[13] = color.green >> 8
stipple_data[0] = stipple_data[12] = color.blue >> 8
- surface = cairo.ImageSurface.create_for_data (stipple_data, cairo.FORMAT_ARGB32, 2, 2, 8)
+
+ print stipple_data
+
+ surface = cairo.ImageSurface.create_for_data (stipple_data,
+ cairo.FORMAT_ARGB32,
+ 2, 2, 8)
pattern = cairo.SurfacePattern(surface)
pattern.set_extend (cairo.EXTEND_REPEAT)
return pattern
def setup_rectangles (self, root):
- stipple_data = array.array('i', [0, 0, 0, 255, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 255])
-
item = goocanvas.Rect (parent = root,
x = 20,
y = 30,
@@ -372,7 +378,7 @@
line_width = 8.0)
self.setup_item_signals (item)
- pattern = self.create_stipple ("mediumseagreen", stipple_data)
+ pattern = self.create_stipple ("mediumseagreen")
item = goocanvas.Rect (parent = root,
x = 90,
y = 40,
@@ -421,8 +427,6 @@
self.setup_item_signals (item)
def setup_ellipses (self, root):
- stipple_data = array.array('i', [0, 0, 0, 255, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 255])
ellipse1 = goocanvas.Ellipse (parent = root,
center_x = 245,
center_y = 45,
@@ -443,7 +447,7 @@
title = "An ellipse")
self.setup_item_signals (self.ellipse2)
- pattern = self.create_stipple ("cadetblue", stipple_data)
+ pattern = self.create_stipple ("cadetblue")
ellipse3 = goocanvas.Ellipse (parent = root,
center_x = 245,
center_y = 110,
@@ -476,13 +480,45 @@
j += 1
def make_hilbert (self, root):
- '''hilbert = "urdrrulurulldluuruluurdrurddldrrruluurdrurddldrddlulldrdldrrurd"
- stipple_data = array.array('i', [0, 0, 0, 255, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 255])
- points = goocanvas.Poiints([(340, 290),])
- pp = len(hilbert)+1
- p = pp*2'''
- pass
+ SCALE = 7
+ hilbert = "urdrrulurulldluuruluurdrurddldrrruluurdrurddldrddlulldrdldrrurd"
+
+ points = [(340, 290),]
+ count = 0
+
+ for letter in hilbert:
+ if letter == 'u':
+ p = points[count][0]
+ p1 = points[count][1] - SCALE
+ points.append (tuple([p, p1]))
+ if letter == 'd':
+ p = points[count][0]
+ p1 = points[count][1] + SCALE
+ points.append (tuple([p, p1]))
+ if letter == 'l':
+ p = points[count][0] - SCALE
+ p1 = points[count][1]
+ points.append (tuple([p, p1]))
+ if letter == 'r':
+ p = points[count][0] + SCALE
+ p1 = points[count][1]
+ points.append (tuple([p, p1]))
+ count += 1
+
+ points = goocanvas.Points(points)
+
+ pattern = self.create_stipple("red")
+
+ item = goocanvas.Polyline (parent = root,
+ close_path = False,
+ points = points,
+ line_width = 4.0,
+ stroke_pattern = pattern,
+ line_cap = cairo.LINE_CAP_SQUARE,
+ line_join = cairo.LINE_JOIN_MITER)
+
+ self.setup_item_signals (item)
+
def setup_lines (self, root):
self.polish_diamond (root)
@@ -542,11 +578,9 @@
self.setup_item_signals (polyline5)
def setup_polygons (self, root):
- stipple_data = array.array('i', [0, 0, 0, 255, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 255])
points = goocanvas.Points ([(210.0, 320.0), (210.0, 380.0),
(260.0, 350.0)])
- pattern = self.create_stipple ("blue", stipple_data)
+ pattern = self.create_stipple ("blue")
polyline1 = goocanvas.Polyline (parent = root,
close_path = True,
line_width = 1.0,
@@ -590,9 +624,7 @@
return group
def setup_texts (self, root):
- stipple_data = array.array('i', [0, 0, 0, 255, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 255])
- pattern = self.create_stipple ("blue", stipple_data)
+ pattern = self.create_stipple ("blue")
par = self.make_anchor (root, 420.0, 20.0)
item = goocanvas.Text (parent = par,
text = "Anchor NW",
@@ -747,6 +779,60 @@
self.plant_flower (root, 20.0, 280.0, gtk.ANCHOR_SW)
self.plant_flower (root, 180.0, 280.0, gtk.ANCHOR_SE)
+ def setup_static_items (self, canvas):
+ static_root = canvas.get_static_root_item ()
+
+ ''' All static items in one place in the canvas should be placed in the
+ same group. '''
+
+ group = goocanvas.Group (parent=static_root)
+
+ item = goocanvas.polyline_new_line (group,
+ 40.0, 410.0,
+ 40.0, 330.0,
+ stroke_color = "midnightblue",
+ line_width = 3.0,
+ end_arrow = True,
+ arrow_tip_length = 3.0,
+ arrow_length = 4.0,
+ arrow_width = 3.5)
+ self.setup_item_signals (item)
+
+ item = goocanvas.polyline_new_line (group,
+ 32.0, 370.0,
+ 48.0, 370.0,
+ stroke_color = "midnightblue",
+ line_width = 3.0)
+ self.setup_item_signals (item);
+
+ item = goocanvas.Text (parent = group,
+ text = "N",
+ x = 40,
+ y = 320,
+ width = -1,
+ anchor = gtk.ANCHOR_S,
+ font = "Sans 12")
+ self.setup_item_signals (item);
+
+ def setup_grids (self, root):
+ item = goocanvas.Grid (parent = root,
+ x = 80,
+ y = 310,
+ width = 90,
+ height = 90,
+ x_step = 10,
+ y_step = 10,
+ x_offset = 5,
+ y_offset = 5,
+ stroke_color = "yellow",
+ fill_color = "pink",
+ border_width = 2.0,
+ border_color = "red",
+ vert_grid_line_color = "lightblue",
+ horz_grid_line_width = 1.0,
+ vert_grid_line_width = 1.0,
+ vert_grid_lines_on_top = True)
+
def setup_canvas (self, canvas):
root = canvas.get_root_item ()
root.connect("button_press_event", self.on_background_button_press)
@@ -757,7 +843,9 @@
self.setup_polygons (root)
self.setup_texts (root)
self.setup_invisible_texts (root)
- self.setup_images(root)
+ self.setup_static_items (canvas)
+ self.setup_images (root)
+ self.setup_grids (root)
if __name__ == "__main__":
mycanvas = MyCanvas()
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]