view inkscape/AssignSymbol.py @ 330:b0571f10c1b8

Use pango_cairo_layout_path() instead of pango_cairo_show_layout(). - pango_cairo_show_layout() will stroke and fill text. - We want shape itself add pathes to cairo context, but not stroke and fill. - redraw manager will apply paints (source surface) on cairo context before stroke and fill to get right color. - Using pango_cairo_show_layout() we can not apply stroke and fill color seperately. So, pango_cairo_layout_path() is used instead of.
author Thinker K.F. Li <thinker@branda.to>
date Fri, 06 Mar 2009 21:04:52 +0800
parents 5006e4abdda5
children
line wrap: on
line source

#!/usr/bin/python
import inkex
import pygtk
import gtk

class AssignSymbol(inkex.Effect):
	def effect(self):
		self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
		self.window.set_position(gtk.WIN_POS_MOUSE)
		self.defaultname = 'input symbol name here'
		self.fillcontent()
		self.window.show_all()
		self.window.connect("delete_event", gtk.main_quit)
		gtk.main()
	def onQuit(self,data):
		gtk.main_quit()
	def onAssign(self,data):
		text = self.text.get_text()
		if text != self.defaultname:
			self.node.set("mbname",text)
			self.node.set("id",text)
		gtk.main_quit()
		
	def confirm(self,msg):
		vbox = gtk.VBox()
		vbox.pack_start(gtk.Label(msg))
		self.button = gtk.Button('OK')
		vbox.pack_start(self.button)
		self.button.connect("clicked", self.onQuit)
		self.window.add(vbox)
	def dumpattr(self,n):
		s = ""
		for a,v in n.attrib.items():
			s = s + ("%s=%s"  % (a,v))
		return s
			
	def dump(self,node,l=0):
		print " " * l*2,"<", node.tag, self.dumpattr(node),">"
		for n in node:
			self.dump(n,l+1)
		print " " * l * 2,"/>"

	def fillcontent(self):
		if len(self.selected) != 1:
			self.confirm('Please select on group only')
			return
		for id,node in self.selected.iteritems():
			#self.dump(node)
			self.node = node
			vbox = gtk.VBox()
			vbox.pack_start(gtk.Label('Please input the symbol name'))
			self.text = gtk.Entry()
			try:
				self.text.set_text(node.get("mbname"))
			except:
				self.text.set_text(self.defaultname)
			vbox.pack_start(self.text)
			self.button = gtk.Button('OK')
			self.button.connect("clicked", self.onAssign)
			vbox.pack_start(self.button)
			self.window.add(vbox)
			self.window.show_all()
			
		
		

a=AssignSymbol()
a.affect()

# vim: set ts=4