Example #1
0
def singleperf(cols, rows):
    pb = ProtoBoard(cols, rows)

    for r in range(rows):
        for c in range(cols):
            pb.addHTrace(c, c, r)

    return pb, "single_perf_%d_%d.pb" % (cols, rows)
Example #2
0
def bpssb300h():
    pb = ProtoBoard(30, 12)
    for c in range(30):
        pb.addVTrace(c, 0, 4)
        pb.addVTrace(c, 7, 11)
    pb.addHTrace(0, 29, 5)
    pb.addHTrace(0, 29, 6)
    return pb, "bps_sb300_h.pb"
Example #3
0
def sfbreadboardminiv():
    pb = ProtoBoard(12, 17)
    for r in range(17):
        pb.addHTrace(0, 4, r)
        pb.addHTrace(7, 11, r)
    pb.addVSkip(5)
    pb.addVSkip(6)
    return pb, "sf_breadboard_mini_v.pb"
Example #4
0
def singleperf(cols,rows):
    pb = ProtoBoard(cols,rows)
    
    for r in range(rows):
        for c in range(cols):
            pb.addHTrace(c, c, r)
    
    return pb, "single_perf_%d_%d.pb" % (cols,rows)
Example #5
0
def sfbreadboardminiv():
    pb = ProtoBoard(12, 17)
    for r in range(17):
        pb.addHTrace(0, 4, r)
        pb.addHTrace(7, 11, r)
    pb.addVSkip(5)
    pb.addVSkip(6)
    return pb, "sf_breadboard_mini_v.pb"
Example #6
0
def bpssb300h():
    pb = ProtoBoard(30, 12)
    for c in range(30):
        pb.addVTrace(c, 0, 4)
        pb.addVTrace(c, 7, 11)
    pb.addHTrace(0, 29, 5)
    pb.addHTrace(0, 29, 6)
    return pb, "bps_sb300_h.pb"
Example #7
0
def bpssb300v():
    pb = ProtoBoard(12, 30)
    for r in range(30):
        pb.addHTrace(0, 4, r)
        pb.addHTrace(7, 11, r)
    pb.addVTrace(5, 0, 29)
    pb.addVTrace(6, 0, 29)
    return pb, "bps_sb300_v.pb"
Example #8
0
def bpssb300v():
    pb = ProtoBoard(12, 30)
    for r in range(30):
        pb.addHTrace(0, 4, r)
        pb.addHTrace(7, 11, r)
    pb.addVTrace(5, 0, 29)
    pb.addVTrace(6, 0, 29)
    return pb, "bps_sb300_v.pb"
Example #9
0
def doubleperfh(cols, rows):
    pb = ProtoBoard(cols, rows)

    for r in range(rows):
        for c in range(0, cols - 1, 2):
            pb.addHTrace(c, c + 1, r)

    if cols % 2 == 1:
        for r in range(rows):
            pb.addHTrace(cols - 1, cols - 1, r)

    return pb, "double_perf_%d_%d_h.pb" % (cols, rows)
Example #10
0
def doubleperfh(cols, rows):
    pb = ProtoBoard(cols,rows)
    
    for r in range(rows):
        for c in range(0, cols-1, 2):
            pb.addHTrace(c, c+1, r)
            
    if cols % 2 == 1:
        for r in range(rows):
            pb.addHTrace(cols-1, cols-1, r)
    
    return pb, "double_perf_%d_%d_h.pb" % (cols,rows)
Example #11
0
def adapermaprotov(n):
    pb = ProtoBoard(18, n)
    for r in range(n):
        pb.addHTrace(3, 7, r)
        pb.addHTrace(10, 14, r)
    pb.addVSkip(2)
    pb.addVSkip(8)
    pb.addVSkip(9)
    pb.addVSkip(15)
    pb.addVTrace(0, 0, n-1)
    pb.addVTrace(1, 0, n-1)
    pb.addVTrace(16, 0, n-1)
    pb.addVTrace(17, 0, n-1)
    return pb, "ada_permaproto_%d_v.pb" % n
Example #12
0
def adapermaprotoh(n):
    pb = ProtoBoard(n, 18)
    for c in range(n):
        pb.addVTrace(c, 3, 7)
        pb.addVTrace(c, 10, 14)
    pb.addHSkip(2)
    pb.addHSkip(8)
    pb.addHSkip(9)
    pb.addHSkip(15)
    pb.addHTrace(0, n-1, 0)
    pb.addHTrace(0, n-1, 1)
    pb.addHTrace(0, n-1, 16)
    pb.addHTrace(0, n-1, 17)
    return pb, "ada_permaproto_%d_h.pb" % n
Example #13
0
def adapermaprotov(n):
    pb = ProtoBoard(18, n)
    for r in range(n):
        pb.addHTrace(3, 7, r)
        pb.addHTrace(10, 14, r)
    pb.addVSkip(2)
    pb.addVSkip(8)
    pb.addVSkip(9)
    pb.addVSkip(15)
    pb.addVTrace(0, 0, n - 1)
    pb.addVTrace(1, 0, n - 1)
    pb.addVTrace(16, 0, n - 1)
    pb.addVTrace(17, 0, n - 1)
    return pb, "ada_permaproto_%d_v.pb" % n
Example #14
0
def adapermaprotoh(n):
    pb = ProtoBoard(n, 18)
    for c in range(n):
        pb.addVTrace(c, 3, 7)
        pb.addVTrace(c, 10, 14)
    pb.addHSkip(2)
    pb.addHSkip(8)
    pb.addHSkip(9)
    pb.addHSkip(15)
    pb.addHTrace(0, n - 1, 0)
    pb.addHTrace(0, n - 1, 1)
    pb.addHTrace(0, n - 1, 16)
    pb.addHTrace(0, n - 1, 17)
    return pb, "ada_permaproto_%d_h.pb" % n
Example #15
0
	def loadBoard(self, fn):
		try:
			with open(fn, "r") as x: xml = x.read()
		except:
			return None
		
		xmldoc = XMLDoc(xml, makelist=["trace", "cut", "removal", "wire", "component"])
		
		compID.reInit()
		
		root = xmldoc.getRoot()
		sz = [int(x) for x in str(root.size).split(',')]
		
		pb = ProtoBoard(sz[0], sz[1])
		
		try:
			pb.setDescription((str(root.description)))
		except AttributeError:
			pb.setDescription(None)
		
		try:
			tl = root.htraces.trace
		except AttributeError:
			tl = []
			
		for t in tl:
			trc = [int(x) for x in str(t).split(',')]
			pb.addHTrace(trc[0], trc[1], trc[2])
		
		try:
			tl = root.vtraces.trace
		except AttributeError:
			tl = []
			
		for t in tl:
			trc = [int(x) for x in str(t).split(',')]
			pb.addVTrace(trc[0], trc[1], trc[2])
		
		try:
			s = str(root.hskips).strip()
		except AttributeError:
			s = ""

		if len(s) > 0:
			for sk in s.split(','):
				pb.addHSkip(int(sk))
		
		try:
			s = str(root.vskips).strip()
		except AttributeError:
			s = ""

		if len(s) > 0:
			for sk in s.split(','):
				pb.addVSkip(int(sk))
		
		try:
			cl = root.hcuts.cut
		except AttributeError:
			cl = []
			
		for c in cl:
			cut = [int(x) for x in str(c).split(',')]
			pb.addHCut(cut[0], cut[1], cut[2])
		
		try:
			cl = root.vcuts.cut
		except AttributeError:
			cl = []
			
		for c in cl:
			cut = [int(x) for x in str(c).split(',')]
			pb.addVCut(cut[0], cut[1], cut[2])
		
		try:
			rl = root.removals.removal
		except AttributeError:
			rl = []
			
		for r in rl:
			rmv = [int(x) for x in str(r).split(',')]
			pb.traceRemove([rmv[0], rmv[1]])

		try:
			wirelist = root.wires.wire
		except AttributeError:
			wirelist = []

		for w in wirelist:
			s = str(w.pointa)
			pta = [int(x) for x in s.split(',')]
			s = str(w.pointb)
			ptb = [int(x) for x in s.split(',')]
			s = str(w.color)
			clr = [int(x) for x in s.split(',')]

			c = StretchComponent(WIRENAME, pta, ptb, LT_WIRE)
			pb.addWire(c, wx.Colour(clr[0], clr[1], clr[2]))

		try:
			complist = root.components.component
		except AttributeError:
			complist = []

		cl = self.settings.fixedComponentList
		for c in complist:
			tp = str(c.type)
			cid = str(c.id)
			nm = str(c.name)
			value = str(c.value)
			s = str(c.anchor)
			vw = int(str(c.view))
			
			anchor = [int(x) for x in s.split(',')]
			comp = cl.getComponent(tp)[0]
			comp.setID(cid)
			comp.setName(nm)
			comp.setValue(value)
			comp.setAnchor(anchor)
			cl.setView(comp, vw)
			pb.addComponent(comp)
			compID.reserveID(cid)

		try:
			complist = root.stretchcomponents.component
		except AttributeError:
			complist = []

		cl = self.settings.stretchComponentList
		for c in complist:
			tp = str(c.type)
			cid = str(c.id)
			nm = str(c.name)
			value = str(c.value)
			s = str(c.pointa)
			pta = [int(x) for x in s.split(',')]
			s = str(c.pointb)
			ptb = [int(x) for x in s.split(',')]

			comp = cl.getComponent(tp)[0]
			comp.setID(cid)
			comp.setP1(pta)
			comp.setP2(ptb)
			comp.setName(nm)
			comp.setValue(value)
			pb.addStretchComponent(comp)
			compID.reserveID(cid) 

		try:
			complist = root.growcomponents.component
		except AttributeError:
			complist = []

		cl = self.settings.growComponentList
		for c in complist:
			tp = str(c.type)
			cid = str(c.id)
			nm = str(c.name)
			value = str(c.value)
			s = str(c.pointa)
			pta = [int(x) for x in s.split(',')]
			s = str(c.pointb)
			ptb = [int(x) for x in s.split(',')]

			comp = cl.getComponent(tp)[0]
			comp.setID(cid)
			comp.setP1(pta)
			comp.setP2(ptb)
			comp.setName(nm)
			comp.setValue(value)
			pb.addGrowComponent(comp)
			compID.reserveID(cid)

			
		pb.setModified(False)
		return pb
Example #16
0
class NewFileDialog(wx.Dialog):
	def __init__(self, parent):
		self.parent = parent 
		self.settings = parent.settings
		self.images = parent.settings.images
		
		self.chosenTemplate = None
		
		self.pb = None
		
		title = "New Proto-board file"
		wx.Dialog.__init__(self, parent, wx.ID_ANY, title, size=(100, 100))
		self.SetBackgroundColour("white")
		self.Bind(wx.EVT_CLOSE, self.onClose)
		
		sizer = wx.BoxSizer(wx.VERTICAL)
		
		sizer.AddSpacer((10, 10))
		
		hsizer = wx.BoxSizer(wx.HORIZONTAL)
		
		hsizer.AddSpacer((20, 10))
		
		box = wx.StaticBox(self, -1, "Choose an existing template")
		tmplSizer = wx.StaticBoxSizer(box, wx.VERTICAL)
		
		self.templates = [x 
			for x in sorted(os.listdir(self.settings.templDir))
				if x.endswith(".pbt")]
		
		self.descText = {}
		for t in self.templates:
			self.descText[t] = self.getTemplateDesc(os.path.join(self.settings.templDir, t))
		
		self.chTempl = wx.Choice(self, wx.ID_ANY, choices = self.templates)
		self.chTempl.Bind(wx.EVT_CHOICE, self.onTemplChoice)
		if len(self.templates) > 0:
			self.chTempl.SetSelection(0)
			self.chosenTemplate = self.templates[0]
		tmplSizer.Add(self.chTempl, 0, wx.ALL, 10)
		
		self.tbTmplOk = wx.BitmapButton(self, wx.ID_ANY, self.images.pngOk, size=BDIM)
		self.setTemplateHelp()
		self.Bind(wx.EVT_BUTTON, self.onTmplOk, self.tbTmplOk)
		tmplSizer.Add(self.tbTmplOk, 0, wx.ALIGN_CENTER)
		
		hsizer.Add(tmplSizer, 0, wx.EXPAND)
		hsizer.AddSpacer((10, 10))
		
		box = wx.StaticBox(self, -1, "Choose proto board parameters")
		rightSizer = wx.StaticBoxSizer(box, wx.VERTICAL)
		rightSizer.AddSpacer((20, 20))

		t1 = wx.StaticText(self, wx.ID_ANY, "Columns:")		
		self.scCols = wx.SpinCtrl(self, wx.ID_ANY, size=(50, -1))
		self.scCols.SetRange(5,100)
		self.scCols.SetValue(5)
		
		t2 = wx.StaticText(self, wx.ID_ANY, "Rows:")		
		self.scRows = wx.SpinCtrl(self, wx.ID_ANY, size=(50, -1))
		self.scRows.SetRange(5,100)
		self.scRows.SetValue(5)
		
		t3 = wx.StaticText(self, wx.ID_ANY, "Trace Length:")		
		self.scTraces = wx.SpinCtrl(self, wx.ID_ANY, size=(50, -1))
		self.scTraces.SetRange(1,20)
		self.scTraces.SetValue(1)
		
		t4 = wx.StaticText(self, wx.ID_ANY, "Full Length:")
		self.cbFull = wx.CheckBox(self, wx.ID_ANY, "")
		
		t5 = wx.StaticText(self, wx.ID_ANY, "Vertical Traces:")
		self.cbVert = wx.CheckBox(self, wx.ID_ANY, "")
		
		isizer = wx.FlexGridSizer(cols=4, hgap=6, vgap=6)
		isizer.AddMany([ t1, self.scCols, t2, self.scRows,
						 t3, self.scTraces, t4, self.cbFull,
						 t5, self.cbVert])
		
		rightSizer.Add(isizer, 1, wx.ALIGN_CENTER_HORIZONTAL|wx.LEFT|wx.RIGHT, 10)
		rightSizer.AddSpacer((10, 10))



		btnSizer=wx.BoxSizer(wx.HORIZONTAL)
		
		self.tbOk = wx.BitmapButton(self, wx.ID_ANY, self.images.pngOk, size=BDIM)
		self.tbOk.SetToolTipString("Create new proto-board file")
		self.Bind(wx.EVT_BUTTON, self.onOk, self.tbOk)
		btnSizer.Add(self.tbOk)
		
		btnSizer.AddSpacer((20, 20))
		
		self.tbCancel = wx.BitmapButton(self, wx.ID_ANY, self.images.pngCancel, size=BDIM)
		self.tbCancel.SetToolTipString("Exit without creating new file")
		self.Bind(wx.EVT_BUTTON, self.onClose, self.tbCancel)
		btnSizer.Add(self.tbCancel)
		
		rightSizer.Add(btnSizer, 0, wx.ALIGN_CENTER_HORIZONTAL)
		
		hsizer.Add(rightSizer, 0, wx.EXPAND)
		hsizer.AddSpacer((20, 10))
		
		sizer.Add(hsizer)
		
		sizer.AddSpacer((20, 20))
		
		self.SetSizer(sizer)
		self.Fit()
		
	def getTemplateDesc(self, fnTmpl):
		try:
			with open(fnTmpl, "r") as x: xml = x.read()
		except:
			return None
		
		xmldoc = XMLDoc(xml, makelist=["trace", "cut", "removal", "wire", "component"])
		root = xmldoc.getRoot()
		try:
			return root.description
		except AttributeError:
			return None

	def onTemplChoice(self, evt):
		self.chosenTemplate = self.chTempl.GetStringSelection()
		self.setTemplateHelp()
		
	def setTemplateHelp(self):
		if self.chosenTemplate is None:
			self.tbTmplOk.SetToolTipString("Create based on a template")
		elif self.descText[self.chosenTemplate] is None:
			self.tbTmplOk.SetToolTipString("Create using template %s" % self.chosenTemplate)
		else:
			self.tbTmplOk.SetToolTipString("Create using %s" % self.descText[self.chosenTemplate])
		
	def getData(self):
		return self.pb
		
	def onTmplOk(self, evt):
		i = self.chTempl.GetSelection()
		fn = os.path.join(self.settings.templDir, self.chTempl.GetString(i))
		self.pb = self.parent.loadBoard(fn)
		self.EndModal(wx.ID_OK)
		
	def onOk(self, evt):
		r = self.scRows.GetValue()
		c = self.scCols.GetValue()
		vertical = self.cbVert.IsChecked()
		
		if self.cbFull.IsChecked():
			if vertical:
				tl = r
			else:
				tl = c
		else:
			tl = self.scTraces.GetValue()
		self.pb = ProtoBoard(c, r)

		if vertical:
			if tl > r:
				tl = r
			for i in range(c):
				for j in range(0, r-tl+1, tl):
					self.pb.addVTrace(i, j, j+tl-1)
			nl = r % tl
			if nl != 0:
				for i in range(c):
					self.pb.addVTrace(i, r-nl, r-1)
		else:		
			if tl > c:
				tl = c
			for i in range(r):
				for j in range(0, c-tl+1, tl):
					self.pb.addHTrace(j, j+tl-1, i)
			nl = c % tl
			if nl != 0:
				for i in range(r):
					self.pb.addHTrace(c-nl, c-1, i)
		
		self.EndModal(wx.ID_OK)
		
	def onClose(self, evt):
		self.EndModal(wx.ID_CANCEL)
Example #17
0
    def loadBoard(self, fn):
        try:
            with open(fn, "r") as x:
                xml = x.read()
        except:
            return None

        xmldoc = XMLDoc(
            xml, makelist=["trace", "cut", "removal", "wire", "component"])

        compID.reInit()

        root = xmldoc.getRoot()
        sz = [int(x) for x in str(root.size).split(',')]

        pb = ProtoBoard(sz[0], sz[1])

        try:
            pb.setDescription((str(root.description)))
        except AttributeError:
            pb.setDescription(None)

        try:
            tl = root.htraces.trace
        except AttributeError:
            tl = []

        for t in tl:
            trc = [int(x) for x in str(t).split(',')]
            pb.addHTrace(trc[0], trc[1], trc[2])

        try:
            tl = root.vtraces.trace
        except AttributeError:
            tl = []

        for t in tl:
            trc = [int(x) for x in str(t).split(',')]
            pb.addVTrace(trc[0], trc[1], trc[2])

        try:
            s = str(root.hskips).strip()
        except AttributeError:
            s = ""

        if len(s) > 0:
            for sk in s.split(','):
                pb.addHSkip(int(sk))

        try:
            s = str(root.vskips).strip()
        except AttributeError:
            s = ""

        if len(s) > 0:
            for sk in s.split(','):
                pb.addVSkip(int(sk))

        try:
            cl = root.hcuts.cut
        except AttributeError:
            cl = []

        for c in cl:
            cut = [int(x) for x in str(c).split(',')]
            pb.addHCut(cut[0], cut[1], cut[2])

        try:
            cl = root.vcuts.cut
        except AttributeError:
            cl = []

        for c in cl:
            cut = [int(x) for x in str(c).split(',')]
            pb.addVCut(cut[0], cut[1], cut[2])

        try:
            rl = root.removals.removal
        except AttributeError:
            rl = []

        for r in rl:
            rmv = [int(x) for x in str(r).split(',')]
            pb.traceRemove([rmv[0], rmv[1]])

        try:
            wirelist = root.wires.wire
        except AttributeError:
            wirelist = []

        for w in wirelist:
            s = str(w.pointa)
            pta = [int(x) for x in s.split(',')]
            s = str(w.pointb)
            ptb = [int(x) for x in s.split(',')]
            s = str(w.color)
            clr = [int(x) for x in s.split(',')]

            c = StretchComponent(WIRENAME, pta, ptb, LT_WIRE)
            pb.addWire(c, wx.Colour(clr[0], clr[1], clr[2]))

        try:
            complist = root.components.component
        except AttributeError:
            complist = []

        cl = self.settings.fixedComponentList
        for c in complist:
            tp = str(c.type)
            cid = str(c.id)
            nm = str(c.name)
            value = str(c.value)
            s = str(c.anchor)
            vw = int(str(c.view))

            anchor = [int(x) for x in s.split(',')]
            comp = cl.getComponent(tp)[0]
            comp.setID(cid)
            comp.setName(nm)
            comp.setValue(value)
            comp.setAnchor(anchor)
            cl.setView(comp, vw)
            pb.addComponent(comp)
            compID.reserveID(cid)

        try:
            complist = root.stretchcomponents.component
        except AttributeError:
            complist = []

        cl = self.settings.stretchComponentList
        for c in complist:
            tp = str(c.type)
            cid = str(c.id)
            nm = str(c.name)
            value = str(c.value)
            s = str(c.pointa)
            pta = [int(x) for x in s.split(',')]
            s = str(c.pointb)
            ptb = [int(x) for x in s.split(',')]

            comp = cl.getComponent(tp)[0]
            comp.setID(cid)
            comp.setP1(pta)
            comp.setP2(ptb)
            comp.setName(nm)
            comp.setValue(value)
            pb.addStretchComponent(comp)
            compID.reserveID(cid)

        try:
            complist = root.growcomponents.component
        except AttributeError:
            complist = []

        cl = self.settings.growComponentList
        for c in complist:
            tp = str(c.type)
            cid = str(c.id)
            nm = str(c.name)
            value = str(c.value)
            s = str(c.pointa)
            pta = [int(x) for x in s.split(',')]
            s = str(c.pointb)
            ptb = [int(x) for x in s.split(',')]

            comp = cl.getComponent(tp)[0]
            comp.setID(cid)
            comp.setP1(pta)
            comp.setP2(ptb)
            comp.setName(nm)
            comp.setValue(value)
            pb.addGrowComponent(comp)
            compID.reserveID(cid)

        pb.setModified(False)
        return pb