Files @ c95fa8ab1067
Branch filter:

Location: Diana/src/diana/drawer/base.py

Laman
changed imports
import os
from itertools import count

from jinja2 import Environment,FileSystemLoader


class DiagramPoint:
	def __init__(self,x,y,color="",label=""):
		self.x=x
		self.y=y
		self.color=color
		self.label=label

	def __repr__(self):
		return 'DiagramPoint({0},{1},"{2}","{3}")'.format(self.x,self.y,self.color,self.label)


class Base:
	highNumbers=True

	def __init__(self,start=0):
		self.overlays=[]
		self._letter="a"

		self._index=dict()
		self._indexGen=count(start)

		curDir=os.path.dirname(__file__)
		templateDir=os.path.join(curDir,"..","templ")
		self._env=Environment(loader=FileSystemLoader(templateDir))
		self._env.trim_blocks=True
		self._env.lstrip_blocks=True

	def addStone(self,x,y,color):
		assert (x,y) not in self._index
		self._index[(x,y)]=(next(self._indexGen),DiagramPoint(x,y,color))

	def addMove(self,x,y,color,label):
		if (not self.highNumbers) and isinstance(label,int) and label%100!=0:
			label%=100

		if (x,y) not in self._index:
			self._index[(x,y)]=(next(self._indexGen),DiagramPoint(x,y,color,label))
		else:
			(_,point)=self._index[(x,y)]
			if not point.label:
				point.label=self._letter
				self._letter=chr(ord(self._letter)+1)
			self.overlays.append((label, point.label))

	def addLabel(self,x,y,label):
		self._index[(x,y)]=(next(self._indexGen),DiagramPoint(x,y,"",label))

	def save(self,filename):
		notes=open(filename+".txt", 'w')
		notes.write("\n".join("{0} = {1}".format(a,b) for (a,b) in self.overlays))
		notes.close()