All pastes #439954 Raw Edit

vitry

public python v1 · immutable
#439954 ·published 2007-04-14 17:32 UTC
rendered paste body
#!/usr/bin/env pythonimport gtkimport gnomecanvasfrom random import randomclass CanvasExample:	def __init__(self):		self.width = 400		self.height = 400		self.all = []		self.colors = ("red", "yellow", "green", "cyan", "blue", "magenta")	def change_item_color(self, item):		# Pick a random color from the list.		n = int(random() * len(self.colors)) - 1		item.set(fill_color = self.colors[n])	def item_event(self, widget, event=None):		if event.type == gtk.gdk.BUTTON_PRESS:			if event.button == 1:				# Remember starting position.				self.remember_x = event.x				self.remember_y = event.y				return True			elif event.button == 3:				# Destroy the item.				widget.destroy()				return True		elif event.type == gtk.gdk._2BUTTON_PRESS:			#Change the item's color.			self.change_item_color(widget)			return True		elif event.type == gtk.gdk.MOTION_NOTIFY:			if event.state & gtk.gdk.BUTTON1_MASK:				# Get the new position and move by the difference				new_x = event.x				new_y = event.y								widget.move(new_x - self.remember_x, new_y - self.remember_y)				self.remember_x = new_x				self.remember_y = new_y					return True		elif event.type == gtk.gdk.ENTER_NOTIFY:			# Make the outline wide.			widget.set(width_units=3)			return True		elif event.type == gtk.gdk.LEAVE_NOTIFY:			# Make the outline thin.			widget.set(width_units=1)			return True		return False	def add_object_clicked(self, widget, event=None):		""" ******************* AKI!!!!!!!!!!!!!!!!!!!!! """		#gdkimage = gtk.gdk.GdkImlib.Image("5b.bmp")#		i = gtk.Image()#		i.set_from_file("5b.png")		im = gnomecanvas.GdkImlib.Image("5b.png")		w = self.acanvas.root().add('GnomeCanvasImage', image=im, width=70, height=105)		w.connect("event", self.item_event)		self.all.append(w)		""" *********************** AKI!!!!!!!!!!!!!!!! """			def main(self):		win = gtk.Window()		win.connect('destroy', lambda q: gtk.main_quit())		win.set_title('ButIRC Fronted')		win.set_geometry_hints(None,520,420,520,420)		vbox = gtk.VBox()		win.add(vbox)		vbox.show()		# Some instructions for people using the example:		label = gtk.Label("Drag - move object.\n" + "Double click - change colour\n" + "Right click - delete object")		vbox.pack_start(label, expand=False)		label.show()		# Creamos el tablero de juego		self.acanvas = gnomecanvas.Canvas(aa=True)		self.acanvas.set_size_request(self.width, self.height)		self.acanvas.set_scroll_region(0,0, self.width, self.height)		vbox.pack_start(self.acanvas)		self.acanvas.show()			# Creamos los botones		hbox = gtk.HButtonBox()		vbox.pack_start(hbox, expand=False)		hbox.show()		b = gtk.Button("Boton 1")		b.connect("clicked", self.add_object_clicked)		hbox.pack_start(b)		b.show()		b = gtk.Button("Boton 2")		b.connect("clicked", lambda q: gtk.main_quit())		hbox.pack_start(b)		b.show()		b = gtk.Button("Quit")		b.connect("clicked", lambda q: gtk.main_quit())		hbox.pack_start(b)		b.show()		win.show()if __name__ == '__main__':	c = CanvasExample()	c.main()	gtk.main()