summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Mavrinac <mavrinac@gmail.com>2008-10-09 12:27:58 -0400
committerAaron Mavrinac <mavrinac@gmail.com>2008-10-09 12:27:58 -0400
commitefb499ac289d599ef54c5d814fb126bc06a4a6d2 (patch)
tree9c5e3bc4378b461152fc7e35a44707f4c6da857d /app-emulation
parentAdded tests to sci-libs/tina-libs ebuild. (diff)
downloadezod-efb499ac289d599ef54c5d814fb126bc06a4a6d2.tar.gz
ezod-efb499ac289d599ef54c5d814fb126bc06a4a6d2.tar.bz2
ezod-efb499ac289d599ef54c5d814fb126bc06a4a6d2.zip
Initial import of app-emulation/evbu ebuild.
Diffstat (limited to 'app-emulation')
-rw-r--r--app-emulation/evbu/ChangeLog8
-rw-r--r--app-emulation/evbu/Manifest6
-rw-r--r--app-emulation/evbu/evbu-0.6.ebuild43
-rw-r--r--app-emulation/evbu/files/evbu-0.6-pysimwx.patch781
-rw-r--r--app-emulation/evbu/files/evbu-0.6-wx.patch454
-rw-r--r--app-emulation/evbu/metadata.xml13
6 files changed, 1305 insertions, 0 deletions
diff --git a/app-emulation/evbu/ChangeLog b/app-emulation/evbu/ChangeLog
new file mode 100644
index 0000000..c5c8f81
--- /dev/null
+++ b/app-emulation/evbu/ChangeLog
@@ -0,0 +1,8 @@
+# ChangeLog for app-emulation/evbu
+# Copyright 1999-2008 Gentoo Foundation; Distributed under the GPL v2
+# $Header: $
+
+*evbu-0.6 (09 Oct 2008)
+
+ 09 Oct 2008; Aaron Mavrinac <mavrinac@gmail.com> evbu-0.6.ebuild:
+ Initial import
diff --git a/app-emulation/evbu/Manifest b/app-emulation/evbu/Manifest
new file mode 100644
index 0000000..3b42905
--- /dev/null
+++ b/app-emulation/evbu/Manifest
@@ -0,0 +1,6 @@
+AUX evbu-0.6-pysimwx.patch 31557 RMD160 cf90ad8dabcbfc378f7a0f8eba57357594858b1b SHA1 c5c110e5d771953054f7ed572723212d1f496f1f SHA256 2afb3cff25af0e5dd7181c0df2df1a886d514d3b9e3e23c23d764d2e7f8f0ccc
+AUX evbu-0.6-wx.patch 16428 RMD160 5ad7a5c5964b7e878caf981b5eec8f2942b6d0c7 SHA1 af42ae5517bd5a3dc6f5fdbf550f86747322d136 SHA256 27bbf1baaf2f74672e12aece73c02669f6e0bd3675cc2e69b9274c779e07b2ef
+DIST evbu-0.6.tar.gz 109457 RMD160 701118bccba6ef07e5abff61cc81b226a8bc2e8c SHA1 1a985312482a6fb3cc8fb4875cb6fcb962c07638 SHA256 f15d4bca9ffd898a8c5379340dc124ec198fdb2eb23431d7f83b525e32a08e19
+EBUILD evbu-0.6.ebuild 946 RMD160 bdda2fb1c003095a0b6c2a8f6541e550f5fad070 SHA1 d94b41d00eeaace898bd2e8bef5c59264611f97d SHA256 f73a23b27cad199dcc7982a0c0293e1e8d2d6adef62e60f39313c0464a954d47
+MISC ChangeLog 230 RMD160 ddac491d29fd032839097df172a40388e6d5e332 SHA1 15e1a9af3bc71bd29c5901150e5e0085ac6e5550 SHA256 41dd1ac6514b2742d944f07edff23fb671346ff5a9386b4a62db29c1742e7938
+MISC metadata.xml 489 RMD160 23a9073ff6ef4f00d526465b8d99beb3aee44237 SHA1 57d08c04ce7d4a6c370786607c05d663fb60ad53 SHA256 4c774fa9c98f039377c246df67ff462d1875f3b3392d06a6982efd364b028752
diff --git a/app-emulation/evbu/evbu-0.6.ebuild b/app-emulation/evbu/evbu-0.6.ebuild
new file mode 100644
index 0000000..0031b6c
--- /dev/null
+++ b/app-emulation/evbu/evbu-0.6.ebuild
@@ -0,0 +1,43 @@
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+NEED_PYTHON=2.1
+
+inherit distutils python
+
+DESCRIPTION="EVBU simulates the execution of a 68HC11 microcontroller."
+HOMEPAGE="http://claymore.engineer.gvsu.edu/~steriana/Python/"
+SRC_URI="http://claymore.engineer.gvsu.edu/%7Esteriana/courses/Downloads/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE=""
+
+DEPEND="virtual/python
+ dev-python/setuptools"
+RDEPEND="virtual/python
+ >=dev-python/wxpython-2.3.2"
+
+DOCS="COPYING README"
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+ epatch "${FILESDIR}"/${P}-wx.patch
+ epatch "${FILESDIR}"/${P}-pysimwx.patch
+ sed '$d' < misc/evbu > misc/evbu-new
+ mv misc/evbu-new misc/evbu
+ echo python $(python_get_sitedir)/${PN}/${PN}.py \$\* >> misc/evbu
+}
+
+src_install() {
+ distutils_src_install
+ dobin misc/evbu
+ dohtml doc/*
+}
+
+pkg_postrm() {
+ python_mod_cleanup
+}
diff --git a/app-emulation/evbu/files/evbu-0.6-pysimwx.patch b/app-emulation/evbu/files/evbu-0.6-pysimwx.patch
new file mode 100644
index 0000000..bc5af57
--- /dev/null
+++ b/app-emulation/evbu/files/evbu-0.6-pysimwx.patch
@@ -0,0 +1,781 @@
+diff -Naur PySim11/kcmmemory.py PySim11.new/kcmmemory.py
+--- PySim11/kcmmemory.py 2004-07-25 11:41:25.000000000 -0400
++++ PySim11.new/kcmmemory.py 2008-10-09 12:14:42.000000000 -0400
+@@ -3,7 +3,7 @@
+ #
+ # Source file is kcmmemory.png from KDE icons
+
+-from wxPython.wx import wxBitmapFromXPMData, wxImageFromBitmap
++from wx import BitmapFromXPMData, ImageFromBitmap
+ import cPickle
+
+
+@@ -30,8 +30,8 @@
+ a." )
+
+ def getkcmmemoryBitmap():
+- return wxBitmapFromXPMData(getkcmmemoryData())
++ return BitmapFromXPMData(getkcmmemoryData())
+
+ def getkcmmemoryImage():
+- return wxImageFromBitmap(getkcmmemoryBitmap())
++ return ImageFromBitmap(getkcmmemoryBitmap())
+
+diff -Naur PySim11/lacursors.py PySim11.new/lacursors.py
+--- PySim11/lacursors.py 2004-07-25 11:41:25.000000000 -0400
++++ PySim11.new/lacursors.py 2008-10-09 12:18:53.000000000 -0400
+@@ -3,14 +3,14 @@
+ """
+
+ ## import all of the wxPython GUI package
+-from wxPython.wx import *
++from wx import *
+
+ import types
+ import sys
+
+-class LACursors(wxWindow):
++class LACursors(Window):
+ def __init__(self, parent, id, orig, size):
+- wxWindow.__init__(self, parent, id, orig, size)
++ Window.__init__(self, parent, id, orig, size)
+ self.parent = parent
+
+ EVT_PAINT(self, self.OnPaint)
+@@ -20,8 +20,8 @@
+
+ self.startTime = 0L
+ self.division = 100000L # 100ns/div
+- self.lineColor1 = wxRED
+- self.lineColor2 = wxCYAN
++ self.lineColor1 = RED
++ self.lineColor2 = CYAN
+ self.lineWidth = 1
+ self.tickSpacing = 50 # pixels/division
+
+@@ -66,7 +66,7 @@
+ self.Refresh()
+
+ def OnPaint(self, event):
+- dc = wxPaintDC(self)
++ dc = PaintDC(self)
+ (w, h) = self.GetClientSizeTuple()
+ (decorationDX,decorationDY) = self.parent.GetWaveformBorderSizes()
+
+@@ -75,7 +75,7 @@
+ # pixels/tick so we compute...
+ dX = float(self.tickSpacing) / self.division
+
+- dc.SetBackground(wxBrush(self.parent.GetBackgroundColour(), wxSOLID))
++ dc.SetBackground(Brush(self.parent.GetBackgroundColour(), SOLID))
+ dc.Clear()
+
+ if self.pos1 is None:
+@@ -83,24 +83,24 @@
+ else:
+ x = int((self.pos1 - self.startTime)*dX + decorationDX)
+ if 0 <= x <= w:
+- dc.SetPen(wxPen(self.lineColor1, self.lineWidth, wxSOLID))
++ dc.SetPen(Pen(self.lineColor1, self.lineWidth, SOLID))
+ if self.active==1:
+- dc.SetBrush(wxBrush(self.lineColor1, wxSOLID))
++ dc.SetBrush(Brush(self.lineColor1, SOLID))
+ else:
+- dc.SetBrush(wxBrush(self.lineColor1, wxTRANSPARENT))
+- dc.DrawPolygon([wxPoint(0,h), wxPoint(-4,h-4), wxPoint(-4,0), wxPoint(4,0), wxPoint(4,h-4)], xoffset=x)
++ dc.SetBrush(Brush(self.lineColor1, TRANSPARENT))
++ dc.DrawPolygon([Point(0,h), Point(-4,h-4), Point(-4,0), Point(4,0), Point(4,h-4)], xoffset=x)
+
+ if self.pos2 is None:
+ pass
+ else:
+ x = int((self.pos2 - self.startTime)*dX + decorationDX)
+ if 0 <= x <= w:
+- dc.SetPen(wxPen(self.lineColor2, self.lineWidth, wxSOLID))
++ dc.SetPen(Pen(self.lineColor2, self.lineWidth, SOLID))
+ if self.active==2:
+- dc.SetBrush(wxBrush(self.lineColor2, wxSOLID))
++ dc.SetBrush(Brush(self.lineColor2, SOLID))
+ else:
+- dc.SetBrush(wxBrush(self.lineColor2, wxTRANSPARENT))
+- dc.DrawPolygon([wxPoint(0,h), wxPoint(-4,h-4), wxPoint(-4,0), wxPoint(4,0), wxPoint(4,h-4)], xoffset=x)
++ dc.SetBrush(Brush(self.lineColor2, TRANSPARENT))
++ dc.DrawPolygon([Point(0,h), Point(-4,h-4), Point(-4,0), Point(4,0), Point(4,h-4)], xoffset=x)
+
+ def GetC1Pos(self):
+ if not (self.pos1 is None):
+diff -Naur PySim11/ladata.py PySim11.new/ladata.py
+--- PySim11/ladata.py 2004-07-25 11:41:25.000000000 -0400
++++ PySim11.new/ladata.py 2008-10-09 12:20:32.000000000 -0400
+@@ -2,7 +2,7 @@
+ import re
+
+ ## import all of the wxPython GUI package
+-from wxPython.wx import *
++from wx import *
+
+ #---------------------------------------------------------------------------
+
+@@ -63,9 +63,9 @@
+ # seem to work.
+ return hasattr(w, 'Blue')
+
+-class LAData(wxWindow):
++class LAData(Window):
+ def __init__(self, parent, id, orig, size):
+- wxWindow.__init__(self, parent, id, orig, size, wxSUNKEN_BORDER)
++ Window.__init__(self, parent, id, orig, size, SUNKEN_BORDER)
+
+ EVT_PAINT(self, self.OnPaint)
+ EVT_SIZE(self, self.OnSize)
+@@ -74,11 +74,11 @@
+
+ self.startTime = 0L
+ self.division = 100000L # 100ns/div
+- self.lineColor = wxWHITE
++ self.lineColor = WHITE
+ self.lineWidth = 2
+- self.backgroundColor = wxBLACK
++ self.backgroundColor = BLACK
+ self.tickSpacing = 50 # pixels/division
+- self.tickColor = wxTheColourDatabase.FindColour("YELLOW")
++ self.tickColor = TheColourDatabase.FindColour("YELLOW")
+
+ self.cursor1 = self.cursor2 = None
+
+@@ -195,13 +195,13 @@
+ t = T1
+ T1 = T2
+ T2 = t
+- self.Refresh(1, wxRect(T1, 0, T2-T1+1, h))
++ self.Refresh(1, Rect(T1, 0, T2-T1+1, h))
+ elif not (self.cursor1 is None):
+ T1 = int((self.cursor1 - self.startTime)*self.dX)
+- self.Refresh(1, wxRect(T1-2, 0, 5, h))
++ self.Refresh(1, Rect(T1-2, 0, 5, h))
+ elif not (oldpos is None):
+ T1 = int((oldpos - self.startTime)*self.dX)
+- self.Refresh(1, wxRect(T1-2, 0, 5, h))
++ self.Refresh(1, Rect(T1-2, 0, 5, h))
+ else:
+ self.Refresh()
+
+@@ -217,23 +217,23 @@
+ t = T1
+ T1 = T2
+ T2 = t
+- self.Refresh(1, wxRect(T1, 0, T2-T1+1, h))
++ self.Refresh(1, Rect(T1, 0, T2-T1+1, h))
+ elif not (self.cursor2 is None):
+ T1 = int((self.cursor2 - self.startTime)*self.dX)
+- self.Refresh(1, wxRect(T1-2, 0, 5, h))
++ self.Refresh(1, Rect(T1-2, 0, 5, h))
+ elif not (oldpos is None):
+ T1 = int((oldpos - self.startTime)*self.dX)
+- self.Refresh(1, wxRect(T1-2, 0, 5, h))
++ self.Refresh(1, Rect(T1-2, 0, 5, h))
+ else:
+ self.Refresh()
+
+ def OnPaint(self, event):
+- dc = wxPaintDC(self)
++ dc = PaintDC(self)
+ (w, h) = self.GetClientSizeTuple()
+ YVal = [h-4, 4] # Mapping from (0,1) to pixel positions
+
+- dc.SetPen(wxPen(self.lineColor, self.lineWidth, wxSOLID))
+- dc.SetBackground(wxBrush(self.backgroundColor, wxSOLID))
++ dc.SetPen(Pen(self.lineColor, self.lineWidth, SOLID))
++ dc.SetBackground(Brush(self.backgroundColor, SOLID))
+
+ region = self.GetUpdateRegion()
+ dc.SetClippingRegionAsRegion(region)
+@@ -279,7 +279,7 @@
+ if firstTime < self.startTime:
+ firstTime = firstTime + self.division
+
+- dc.SetPen(wxPen(self.tickColor, 1, wxSOLID))
++ dc.SetPen(Pen(self.tickColor, 1, SOLID))
+ if self.events:
+ while 1:
+ T = int((firstTime - self.startTime)*self.dX)
+@@ -291,11 +291,11 @@
+ # Draw cursors
+ if not (self.cursor1 is None):
+ T = int((self.cursor1 - self.startTime)*self.dX)
+- dc.SetPen(wxRED_PEN)
++ dc.SetPen(RED_PEN)
+ dc.DrawLine(T, 0, T, h)
+ if not (self.cursor2 is None):
+ T = int((self.cursor2 - self.startTime)*self.dX)
+- dc.SetPen(wxPen(wxCYAN, 1, wxSOLID))
++ dc.SetPen(Pen(CYAN, 1, SOLID))
+ dc.DrawLine(T, 0, T, h)
+
+ def Clear(self):
+@@ -332,13 +332,13 @@
+ try:
+ fid = open(filename, 'r')
+ except IOError, detail:
+- wxMessageBox('%s: "%s"' % (detail.strerror, detail.filename), "You lose", wxOK|wxCENTRE)
++ MessageBox('%s: "%s"' % (detail.strerror, detail.filename), "You lose", OK|CENTRE)
+ return 0
+
+ try:
+ lines = fid.readlines()
+ except IOError, detail:
+- wxMessageBox('%s: "%s"' % (detail.strerror, filename), "You lose", wxOK|wxCENTRE)
++ MessageBox('%s: "%s"' % (detail.strerror, filename), "You lose", OK|CENTRE)
+ return 0
+
+ fid.close()
+@@ -354,7 +354,7 @@
+ match = pat_c.match(line)
+ if match is None:
+ if comment_c.match(line) is None:
+- wxMessageBox('Error at "%s" line %d\nLine is not in the format\n"CYCLE ZeroOrOne"' % (filename, linenum), "Bad file format", wxOK|wxCENTRE)
++ MessageBox('Error at "%s" line %d\nLine is not in the format\n"CYCLE ZeroOrOne"' % (filename, linenum), "Bad file format", OK|CENTRE)
+ return 0
+ else:
+ continue
+@@ -364,7 +364,7 @@
+
+ if events:
+ if cycle <= events[-1][0]:
+- wxMessageBox('Error at "%s" line %d\nCycle time not in ascending order' % (filename, linenum), "Bad file format", wxOK|wxCENTRE)
++ MessageBox('Error at "%s" line %d\nCycle time not in ascending order' % (filename, linenum), "Bad file format", OK|CENTRE)
+ return 0
+
+ if val != events[-1][1]:
+diff -Naur PySim11/laframe.py PySim11.new/laframe.py
+--- PySim11/laframe.py 2004-07-25 11:41:25.000000000 -0400
++++ PySim11.new/laframe.py 2008-10-09 12:21:09.000000000 -0400
+@@ -2,30 +2,30 @@
+ This module is the top-level frame for the logic analyzer window
+ """
+
+-from wxPython.wx import *
++from wx import *
+ from lapanel import LAPanel
+
+ from kcmmemory import getkcmmemoryData
+
+ ## Create a new frame class, derived from the wxPython Frame.
+-class LAFrame(wxFrame):
++class LAFrame(Frame):
+
+ def __init__(self, parent, id, title):
+ # First, call the base class' __init__ method to create the frame
+- wxFrame.__init__(self, parent, id, title, wxPoint(-1, -1), wxSize(835, 320), wxDEFAULT_FRAME_STYLE)
++ Frame.__init__(self, parent, id, title, Point(-1, -1), Size(835, 320), DEFAULT_FRAME_STYLE)
+
+ EVT_CLOSE(self, self.OnCloseWindow)
+
+ # Add the LA panel
+- self.la = LAPanel(self, -1, wxPoint(10,10), wxSize(660,300), wxTAB_TRAVERSAL)
++ self.la = LAPanel(self, -1, Point(10,10), Size(660,300), TAB_TRAVERSAL)
+
+- self.statusBar = wxStatusBar(self, -1)
++ self.statusBar = StatusBar(self, -1)
+ self.statusBar.SetFieldsCount(1)
+ self.statusBar.SetStatusWidths([-1])
+ self.statusBar.SetStatusText("", 0)
+ self.SetStatusBar(self.statusBar)
+
+- icon = wxIconFromXPMData(getkcmmemoryData())
++ icon = IconFromXPMData(getkcmmemoryData())
+ self.SetIcon(icon)
+
+ # This method is called automatically when the CLOSE event is
+@@ -34,10 +34,10 @@
+ if hasattr(self,'testonly'):
+ self.Destroy()
+ else:
+- wxMessageBox("Do not close this window while EVBU is running.", "Bad user!", wxOK|wxCENTRE)
++ MessageBox("Do not close this window while EVBU is running.", "Bad user!", OK|CENTRE)
+
+ if __name__=="__main__":
+- app = wxPySimpleApp()
++ app = PySimpleApp()
+ f = LAFrame(None, -1, "Stuff")
+ f.Show(1)
+ f.testonly = 1
+diff -Naur PySim11/lalabel.py PySim11.new/lalabel.py
+--- PySim11/lalabel.py 2004-07-25 11:41:25.000000000 -0400
++++ PySim11.new/lalabel.py 2008-10-09 12:21:43.000000000 -0400
+@@ -3,7 +3,7 @@
+ """
+
+ ## import all of the wxPython GUI package
+-from wxPython.wx import *
++from wx import *
+
+ import types
+
+@@ -20,18 +20,18 @@
+ # seem to work.
+ return hasattr(w, 'Blue')
+
+-class LALabel(wxWindow):
++class LALabel(Window):
+ def __init__(self, parent, id, orig, size):
+- wxWindow.__init__(self, parent, id, orig, size, wxSUNKEN_BORDER)
++ Window.__init__(self, parent, id, orig, size, SUNKEN_BORDER)
+
+ EVT_PAINT(self, self.OnPaint)
+ EVT_SIZE(self, self.OnSize)
+ EVT_RIGHT_DOWN(self, self.OnRightClick)
+ EVT_LEFT_DCLICK(self, self.OnLeftDoubleClick)
+
+- self.textColor = wxWHITE
++ self.textColor = WHITE
+ self.textWidth = 2
+- self.backgroundColor = wxTheColourDatabase.FindColour("DIM GREY")
++ self.backgroundColor = TheColourDatabase.FindColour("DIM GREY")
+
+ self.parent = parent
+ self.label = ""
+@@ -75,11 +75,11 @@
+ self.Refresh()
+
+ def OnPaint(self, event):
+- dc = wxPaintDC(self)
++ dc = PaintDC(self)
+ (W, H) = self.GetClientSizeTuple()
+
+- bg = wxBrush(self.backgroundColor, wxSOLID)
+- dc.SetFont(wxFont(14, wxSWISS, wxNORMAL, wxBOLD))
++ bg = Brush(self.backgroundColor, SOLID)
++ dc.SetFont(Font(14, SWISS, NORMAL, BOLD))
+ dc.SetTextForeground(self.textColor)
+ dc.SetTextBackground(self.backgroundColor)
+ dc.SetBackground(bg)
+diff -Naur PySim11/lapanel.py PySim11.new/lapanel.py
+--- PySim11/lapanel.py 2004-07-25 11:41:25.000000000 -0400
++++ PySim11.new/lapanel.py 2008-10-09 12:24:08.000000000 -0400
+@@ -3,7 +3,7 @@
+ """
+
+ ## import all of the wxPython GUI package
+-from wxPython.wx import *
++from wx import *
+
+ import operator
+ import types
+@@ -30,18 +30,18 @@
+
+ # Colors for successive traces
+ _LA_DATA_COLORS = [
+- wxWHITE, wxRED, wxBLUE, wxGREEN, wxCYAN,
+- wxTheColourDatabase.FindColour("YELLOW"),
+- wxTheColourDatabase.FindColour("MAGENTA"),
+- wxTheColourDatabase.FindColour("PINK")
++ WHITE, RED, BLUE, GREEN, CYAN,
++ TheColourDatabase.FindColour("YELLOW"),
++ TheColourDatabase.FindColour("MAGENTA"),
++ TheColourDatabase.FindColour("PINK")
+ ]
+ _LA_LAST_COLOR = -1
+
+ # Background color definitions for input waveforms and output waveforms
+-_LA_INDATA_COLOR = wxTheColourDatabase.FindColour("DIM GRAY")
+-_LA_OUTDATA_COLOR = wxBLACK
++_LA_INDATA_COLOR = TheColourDatabase.FindColour("DIM GRAY")
++_LA_OUTDATA_COLOR = BLACK
+
+-class LAPanel(wxPanel):
++class LAPanel(Panel):
+ # Future support for time units?
+ Cycles = 1
+ Ms = 2
+@@ -49,11 +49,11 @@
+ Ns = 4
+
+ def __init__(self, parent, id, orig, size, attr):
+- wxPanel.__init__(self, parent, id, orig, size, attr)
++ Panel.__init__(self, parent, id, orig, size, attr)
+ self.parent = parent
+
+ (w,h) = self.GetClientSize()
+- self.cursors = LACursors(self, -1, wxPoint(5+100+5, _LA_TOP_Y-10), wxSize(w-5-100-5-5, 10))
++ self.cursors = LACursors(self, -1, Point(5+100+5, _LA_TOP_Y-10), Size(w-5-100-5-5, 10))
+ self.isSimulating = 0
+
+ # The PySim11 thread calls our functions to post window update
+@@ -105,12 +105,12 @@
+ # "right" way just yet.
+
+ # Start time text control
+- wxStaticBox(self, -1, "Start Time", wxPoint(5, 10), wxSize(176,40))
+- self.startTimeText = wxTextCtrl(self, 100, "0", wxPoint(10, 25), wxSize(68,20), wxTE_PROCESS_ENTER)
+- self.startTimeUnits = wxStaticText(self, -1, "cyc", wxPoint(80, 28), wxSize(25,20))
+- self.startTimePDivButton = wxButton(self, 111, "+div", wxPoint(105, 19), wxSize(37,15))
+- self.startTimeMDivButton = wxButton(self, 112, "-div", wxPoint(140, 19), wxSize(37,15))
+- self.startTimeZeroButton = wxButton(self, 101, "zero", wxPoint(105, 33), wxSize(72,15))
++ StaticBox(self, -1, "Start Time", Point(5, 10), Size(176,40))
++ self.startTimeText = TextCtrl(self, 100, "0", Point(10, 25), Size(68,20), TE_PROCESS_ENTER)
++ self.startTimeUnits = StaticText(self, -1, "cyc", Point(80, 28), Size(25,20))
++ self.startTimePDivButton = Button(self, 111, "+div", Point(105, 19), Size(37,15))
++ self.startTimeMDivButton = Button(self, 112, "-div", Point(140, 19), Size(37,15))
++ self.startTimeZeroButton = Button(self, 101, "zero", Point(105, 33), Size(72,15))
+
+ EVT_TEXT_ENTER(self, 100, self.OnStartTimeChange)
+ EVT_BUTTON(self, 101, self.OnZeroStartTime)
+@@ -118,18 +118,18 @@
+ EVT_BUTTON(self, 112, self.OnMDiv)
+
+ # Division text control
+- wxStaticBox(self, -1, "Scale", wxPoint(186, 10), wxSize(134,40))
+- self.divisionText = wxTextCtrl(self, 102, "100", wxPoint(191,25), wxSize(68,20), wxTE_PROCESS_ENTER)
+- self.divisionUnits = wxStaticText(self, -1, "cyc/div", wxPoint(262,28), wxSize(50,20))
++ StaticBox(self, -1, "Scale", Point(186, 10), Size(134,40))
++ self.divisionText = TextCtrl(self, 102, "100", Point(191,25), Size(68,20), TE_PROCESS_ENTER)
++ self.divisionUnits = StaticText(self, -1, "cyc/div", Point(262,28), Size(50,20))
+
+ EVT_TEXT_ENTER(self, 102, self.OnDivisionChange)
+
+ # Zoom buttons
+- wxStaticBox(self, -1, "Zoom", wxPoint(325, 10), wxSize(165,40))
+- self.zoomInButton = wxButton(self, 103, "In", wxPoint(380, 19), wxSize(50,15))
+- self.zoomOutButton = wxButton(self, 104, "Out", wxPoint(380, 33), wxSize(50,15))
+- self.zoomAllButton = wxButton(self, 105, "All", wxPoint(435, 19), wxSize(50,15))
+- self.zoomMaxButton = wxButton(self, 106, "Max", wxPoint(435, 33), wxSize(50,15))
++ StaticBox(self, -1, "Zoom", Point(325, 10), Size(165,40))
++ self.zoomInButton = Button(self, 103, "In", Point(380, 19), Size(50,15))
++ self.zoomOutButton = Button(self, 104, "Out", Point(380, 33), Size(50,15))
++ self.zoomAllButton = Button(self, 105, "All", Point(435, 19), Size(50,15))
++ self.zoomMaxButton = Button(self, 106, "Max", Point(435, 33), Size(50,15))
+
+ EVT_BUTTON(self, 103, self.OnZoomIn)
+ EVT_BUTTON(self, 104, self.OnZoomOut)
+@@ -139,13 +139,13 @@
+ ##############
+ # Cursors
+ ##############
+- wxStaticBox(self, -1, "Cursors", wxPoint(495, 10), wxSize(325,40))
+- wxStaticText(self, -1, "C1", wxPoint(500, 30), wxSize(20, 15))
+- self.c1TimeText = wxTextCtrl(self, 113, "0", wxPoint(520, 26), wxSize(70, 20), wxTE_PROCESS_ENTER)
+- wxStaticText(self, -1, "C2", wxPoint(600, 30), wxSize(20, 15))
+- self.c2TimeText = wxTextCtrl(self, 114, "0", wxPoint(620, 26), wxSize(70, 20), wxTE_PROCESS_ENTER)
+- wxStaticText(self, -1, "C2-C1", wxPoint(700, 30), wxSize(45, 15))
+- self.deltaCTimeText = wxTextCtrl(self, 115, "0", wxPoint(745, 26), wxSize(70, 20), wxTE_READONLY)
++ StaticBox(self, -1, "Cursors", Point(495, 10), Size(325,40))
++ StaticText(self, -1, "C1", Point(500, 30), Size(20, 15))
++ self.c1TimeText = TextCtrl(self, 113, "0", Point(520, 26), Size(70, 20), TE_PROCESS_ENTER)
++ StaticText(self, -1, "C2", Point(600, 30), Size(20, 15))
++ self.c2TimeText = TextCtrl(self, 114, "0", Point(620, 26), Size(70, 20), TE_PROCESS_ENTER)
++ StaticText(self, -1, "C2-C1", Point(700, 30), Size(45, 15))
++ self.deltaCTimeText = TextCtrl(self, 115, "0", Point(745, 26), Size(70, 20), TE_READONLY)
+
+ EVT_TEXT_ENTER(self, 113, self.OnTextC1)
+ EVT_TEXT_ENTER(self, 114, self.OnTextC2)
+@@ -172,14 +172,14 @@
+ # bar for our parent, an LAFrame. Now why is this? Why doesn't this code
+ # migrate up to laframe.py?
+ ######
+- parent.menubar = wxMenuBar()
++ parent.menubar = MenuBar()
+
+- waveformMenu = wxMenu()
++ waveformMenu = Menu()
+ waveformMenu.Append(401, "&Add waveform...\tCtrl-A", "Add a waveform")
+ parent.menubar.Append(waveformMenu, "&Waveform")
+ self.waveformMenu = waveformMenu
+
+- viewMenu = wxMenu()
++ viewMenu = Menu()
+ viewMenu.Append(201, "&Zero\tCtrl-Z", "Set start time to 0")
+ viewMenu.Append(211, "&+Div", "Increase start time by one division (also Shift-Right)")
+ viewMenu.Append(212, "&-Div", "Decrease start time by one division (also Shift-Left)")
+@@ -206,17 +206,17 @@
+ EVT_MENU(parent, 207, self.OnCursor1)
+ EVT_MENU(parent, 208, self.OnCursor2)
+
+- accel = wxAcceleratorTable([ \
+- (wxACCEL_CTRL, ord('a'), 401), \
+- (wxACCEL_CTRL, ord('z'), 201), \
+- (wxACCEL_NORMAL, WXK_PRIOR, 203), \
+- (wxACCEL_NORMAL, WXK_NEXT, 204), \
+- (wxACCEL_CTRL, WXK_PRIOR, 206), \
+- (wxACCEL_CTRL, WXK_NEXT, 205), \
+- (wxACCEL_CTRL, ord('1'), 207), \
+- (wxACCEL_CTRL, ord('2'), 208), \
+- (wxACCEL_SHIFT, WXK_RIGHT, 211), \
+- (wxACCEL_SHIFT, WXK_LEFT, 212)])
++ accel = AcceleratorTable([ \
++ (ACCEL_CTRL, ord('a'), 401), \
++ (ACCEL_CTRL, ord('z'), 201), \
++ (ACCEL_NORMAL, WXK_PRIOR, 203), \
++ (ACCEL_NORMAL, WXK_NEXT, 204), \
++ (ACCEL_CTRL, WXK_PRIOR, 206), \
++ (ACCEL_CTRL, WXK_NEXT, 205), \
++ (ACCEL_CTRL, ord('1'), 207), \
++ (ACCEL_CTRL, ord('2'), 208), \
++ (ACCEL_SHIFT, WXK_RIGHT, 211), \
++ (ACCEL_SHIFT, WXK_LEFT, 212)])
+ parent.SetAcceleratorTable(accel)
+
+ def OnPDiv(self, event):
+@@ -264,7 +264,7 @@
+ if newSpacing != self.tickSpacing:
+ self.SetTickSpacing(newSpacing)
+ else:
+- wxMessageBox("Minimum zoom reached. Increase the scale to see more of the waveform.", "Whoa, there", wxOK|wxCENTRE)
++ MessageBox("Minimum zoom reached. Increase the scale to see more of the waveform.", "Whoa, there", OK|CENTRE)
+
+ def OnZoomIn(self, event):
+ newSpacing = self.tickSpacing*5/4
+@@ -372,8 +372,8 @@
+ if w >= 100:
+ for wave in self.waveforms:
+ (oldw, h) = wave.GetSize()
+- wave.SetSize(wxSize(w,h))
+- self.cursors.SetSize(wxSize(w-5-100, 10))
++ wave.SetSize(Size(w,h))
++ self.cursors.SetSize(Size(w-5-100, 10))
+
+ def OnZeroStartTime(self, event):
+ self.startTimeText.SetValue("0")
+@@ -405,7 +405,7 @@
+ if self.isSimulating:
+ return
+
+- m = wxMenu()
++ m = Menu()
+ (x,y) = event.GetPosition()
+
+ m.Append(401, "Add waveform...")
+@@ -489,7 +489,7 @@
+ x = self.clickxy[0]
+ nextedge = self.clickwaveform.FindNextEdgeFromX(x)
+ if nextedge is None:
+- wxMessageBox("No waveform edges exist past this point", "Outta luck", wxOK|wxCENTRE)
++ MessageBox("No waveform edges exist past this point", "Outta luck", OK|CENTRE)
+ return
+
+ self.cursors.SetC1PosCycles(nextedge)
+@@ -501,7 +501,7 @@
+ x = self.clickxy[0]
+ nextedge = self.clickwaveform.FindNextEdgeFromX(x)
+ if nextedge is None:
+- wxMessageBox("No waveform edges exist past this point", "Outta luck", wxOK|wxCENTRE)
++ MessageBox("No waveform edges exist past this point", "Outta luck", OK|CENTRE)
+ return
+
+ self.cursors.SetC2PosCycles(nextedge)
+@@ -551,7 +551,7 @@
+ (w,h) = self.GetClientSizeTuple()
+ ix = len(self.waveforms)
+
+- w = LAWaveform(self, -1, wxPoint(5, _LA_TOP_Y+ix*_LA_VSPACING), wxSize(w-10, _LA_HEIGHT), 0)
++ w = LAWaveform(self, -1, Point(5, _LA_TOP_Y+ix*_LA_VSPACING), Size(w-10, _LA_HEIGHT), 0)
+
+ # Open dialog to set properties
+ (isOK, newPath) = w.Edit(self.lastSTIPath)
+@@ -687,7 +687,7 @@
+ apply(func, args)
+
+ # Come back here for the next event in the queue
+- wxPostEvent(self, wxCommandEvent(wxEVT_COMMAND_BUTTON_CLICKED, 301))
++ PostEvent(self, CommandEvent(wxEVT_COMMAND_BUTTON_CLICKED, 301))
+
+ # The following functions are called as fake button handlers
+ # to respond to events from the PySim11 thread.
+@@ -743,19 +743,19 @@
+
+ def OnCycReset(self, event):
+ self.queue.put((self.OnCycReset_handler, ()))
+- wxPostEvent(self, wxCommandEvent(wxEVT_COMMAND_BUTTON_CLICKED, 301))
++ PostEvent(self, CommandEvent(wxEVT_COMMAND_BUTTON_CLICKED, 301))
+
+ def IsSimulating(self, sim):
+ self.queue.put((self.IsSimulating_handler, (sim,)))
+- wxPostEvent(self, wxCommandEvent(wxEVT_COMMAND_BUTTON_CLICKED, 301))
++ PostEvent(self, CommandEvent(wxEVT_COMMAND_BUTTON_CLICKED, 301))
+
+ def Append(self, PortPin, T, V):
+ self.queue.put((self.Append_handler, (PortPin, T, V)))
+- wxPostEvent(self, wxCommandEvent(wxEVT_COMMAND_BUTTON_CLICKED, 301))
++ PostEvent(self, CommandEvent(wxEVT_COMMAND_BUTTON_CLICKED, 301))
+
+ def AppendRel(self, PortPin, DT, V):
+ self.queue.put((self.AppendRel_handler, (PortPin, DT, V)))
+- wxPostEvent(self, wxCommandEvent(wxEVT_COMMAND_BUTTON_CLICKED, 301))
++ PostEvent(self, CommandEvent(wxEVT_COMMAND_BUTTON_CLICKED, 301))
+
+ ##################################################################
+ ##################################################################
+diff -Naur PySim11/lawaveform.py PySim11.new/lawaveform.py
+--- PySim11/lawaveform.py 2004-07-25 11:41:25.000000000 -0400
++++ PySim11.new/lawaveform.py 2008-10-09 12:24:35.000000000 -0400
+@@ -7,7 +7,7 @@
+ import os.path
+
+ ## import all of the wxPython GUI package
+-from wxPython.wx import *
++from wx import *
+
+ from ladata import LAData
+ from lalabel import LALabel
+@@ -15,9 +15,9 @@
+
+ _LA_LABELWIDTH = 100
+
+-class LAWaveform(wxWindow):
++class LAWaveform(Window):
+ def __init__(self, parent, id, orig, size, attr):
+- wxWindow.__init__(self, parent, id, orig, size, attr)
++ Window.__init__(self, parent, id, orig, size, attr)
+
+ self.data = None # Contains object of class LAData
+ self.label = None # Contains object of class LALabel
+@@ -66,7 +66,7 @@
+ (oldw, oldh) = self.data.GetSize()
+ neww = myw - _LA_LABELWIDTH - 5
+ if neww >= 100:
+- self.data.SetSize(wxSize(neww, oldh))
++ self.data.SetSize(Size(neww, oldh))
+
+ event.Skip()
+
+@@ -100,14 +100,14 @@
+
+ (w,h) = self.GetClientSizeTuple()
+
+- d = LAWaveformProperties(self, -1, "Waveform Properties", wxPoint(-1,-1), lastPath)
++ d = LAWaveformProperties(self, -1, "Waveform Properties", Point(-1,-1), lastPath)
+ d.SetValues(self.portpin, self.stimfile)
+
+- if d.ShowModal() == wxID_OK:
++ if d.ShowModal() == ID_OK:
+ dlgdata = d.SlurpData()
+ if len(dlgdata['pin']) and dlgdata['pin'] != self.portpin:
+- self.label = LALabel(self, -1, wxPoint(0, 0), wxSize(_LA_LABELWIDTH, h))
+- self.data = LAData(self, -1, wxPoint(_LA_LABELWIDTH+5, 0), wxSize(w-_LA_LABELWIDTH-5,h))
++ self.label = LALabel(self, -1, Point(0, 0), Size(_LA_LABELWIDTH, h))
++ self.data = LAData(self, -1, Point(_LA_LABELWIDTH+5, 0), Size(w-_LA_LABELWIDTH-5,h))
+
+ self.label.SetLabel(dlgdata['pin'])
+ self.stimfile = dlgdata['filename']
+@@ -174,7 +174,7 @@
+ assert self.isinput
+
+ if not self.stimfile:
+- wxMessageBox("You must first Edit this waveform to specify a stimulus file", "First things first", wxOK|wxCENTRE)
++ MessageBox("You must first Edit this waveform to specify a stimulus file", "First things first", OK|CENTRE)
+ return
+
+ if self.data:
+diff -Naur PySim11/lawaveprops_dlg.py PySim11.new/lawaveprops_dlg.py
+--- PySim11/lawaveprops_dlg.py 2004-07-25 11:41:25.000000000 -0400
++++ PySim11.new/lawaveprops_dlg.py 2008-10-09 12:26:07.000000000 -0400
+@@ -1,4 +1,4 @@
+-from wxPython.wx import *
++from wx import *
+
+ PortInfo = { \
+ 'PA7': ('IO',"""Port A:7 PA7/PAI/OC1
+@@ -215,40 +215,40 @@
+ input channel.""")
+ }
+
+-class LAWaveformProperties(wxDialog):
++class LAWaveformProperties(Dialog):
+
+ def __init__(self, parent, id, title, orig, lastPath):
+- wxDialog.__init__(self, parent, id, title, orig, wxDLG_SZE(parent,wxSize(160,184)), wxCAPTION|wxDIALOG_MODAL)
++ Dialog.__init__(self, parent, id, title, orig, DLG_SZE(parent,Size(160,184)), CAPTION|DIALOG_MODAL)
+
+- wxStaticText(self, -1, "Port Pin", wxDLG_PNT(self,wxPoint(10,10)), wxDLG_SZE(self,wxSize(21,9)), wxALIGN_LEFT)
++ StaticText(self, -1, "Port Pin", DLG_PNT(self,Point(10,10)), DLG_SZE(self,Size(21,9)), ALIGN_LEFT)
+
+ self.lastPath = lastPath
+
+ names = PortInfo.keys()
+ names.sort()
+
+- self.listbox = wxListBox(self, 100, wxDLG_PNT(self,wxPoint(10,20)), wxDLG_SZE(self,wxSize(46,90)), names, wxLB_SINGLE)
+- self.stimulusfile = wxStaticText(self, -1, "Stimulus File", wxDLG_PNT(self,wxPoint(10,114)), wxDLG_SZE(self,wxSize(36,9)), wxALIGN_LEFT)
++ self.listbox = ListBox(self, 100, DLG_PNT(self,Point(10,20)), DLG_SZE(self,Size(46,90)), names, LB_SINGLE)
++ self.stimulusfile = StaticText(self, -1, "Stimulus File", DLG_PNT(self,Point(10,114)), DLG_SZE(self,Size(36,9)), ALIGN_LEFT)
+ self.stimulusfile.Enable(0)
+
+- self.filename = wxTextCtrl(self, 101, "", wxDLG_PNT(self,wxPoint(10,123)), wxDLG_SZE(self,wxSize(100,13)), wxTE_PROCESS_ENTER)
++ self.filename = TextCtrl(self, 101, "", DLG_PNT(self,Point(10,123)), DLG_SZE(self,Size(100,13)), TE_PROCESS_ENTER)
+ self.filename.Enable(0)
+- self.browse = wxButton(self, 102, "Browse", wxDLG_PNT(self,wxPoint(116,123)), wxDLG_SZE(self,wxSize(32,12)))
++ self.browse = Button(self, 102, "Browse", DLG_PNT(self,Point(116,123)), DLG_SZE(self,Size(32,12)))
+ self.browse.Enable(0)
+- wxStaticBox(self, -1, "Port Pin Info", wxDLG_PNT(self,wxPoint(60,10)), wxDLG_SZE(self,wxSize(90,100)))
++ StaticBox(self, -1, "Port Pin Info", DLG_PNT(self,Point(60,10)), DLG_SZE(self,Size(90,100)))
+
+- self.pininfo = wxStaticText(self, 103, "", wxDLG_PNT(self,wxPoint(62,21)), wxDLG_SZE(self,wxSize(86,85)), wxALIGN_LEFT|wxST_NO_AUTORESIZE)
++ self.pininfo = StaticText(self, 103, "", DLG_PNT(self,Point(62,21)), DLG_SZE(self,Size(86,85)), ALIGN_LEFT|ST_NO_AUTORESIZE)
+
+- wxStaticLine(self, -1, wxDLG_PNT(self,wxPoint(5,145)), wxDLG_SZE(self,wxSize(148,2)), wxLI_HORIZONTAL)
+- self.okbutton = wxButton(self, wxID_OK, "OK", wxDLG_PNT(self,wxPoint(34, 152)), wxDLG_SZE(self,wxSize(32,12)))
++ StaticLine(self, -1, DLG_PNT(self,Point(5,145)), DLG_SZE(self,Size(148,2)), LI_HORIZONTAL)
++ self.okbutton = Button(self, ID_OK, "OK", DLG_PNT(self,Point(34, 152)), DLG_SZE(self,Size(32,12)))
+ self.okbutton.Enable(0)
+- wxButton(self, wxID_CANCEL, "Cancel", wxDLG_PNT(self,wxPoint(86, 152)), wxDLG_SZE(self,wxSize(32,12)))
++ Button(self, ID_CANCEL, "Cancel", DLG_PNT(self,Point(86, 152)), DLG_SZE(self,Size(32,12)))
+
+ EVT_LISTBOX(self, 100, self.OnListBox)
+ EVT_LISTBOX_DCLICK(self, 100, self.OnListBoxDoubleClick)
+ EVT_BUTTON(self, 102, self.OnBrowse)
+ EVT_TEXT_ENTER(self, 101, self.OnTextEnter)
+- EVT_BUTTON(self, wxID_OK, self.OnOk)
++ EVT_BUTTON(self, ID_OK, self.OnOk)
+
+ def OnOk(self, event):
+ # Don't allow OK button when no selection. We kind-of handle
+@@ -279,13 +279,13 @@
+ self.filename.SetValue("")
+
+ def OnTextEnter(self, event):
+- wxPostEvent(self, wxCommandEvent(wxEVT_COMMAND_BUTTON_CLICKED, wxID_OK))
++ PostEvent(self, CommandEvent(wxEVT_COMMAND_BUTTON_CLICKED, ID_OK))
+
+ def OnListBoxDoubleClick(self, event):
+ s = event.GetString()
+ assert PortInfo.has_key(s)
+ self.okbutton.Enable(1)
+- wxPostEvent(self, wxCommandEvent(wxEVT_COMMAND_BUTTON_CLICKED, wxID_OK))
++ PostEvent(self, CommandEvent(wxEVT_COMMAND_BUTTON_CLICKED, ID_OK))
+
+ def OnListBox(self, event):
+ s = event.GetString()
+@@ -302,7 +302,7 @@
+ self.stimulusfile.Enable(1)
+
+ def OnBrowse(self, event):
+- s = wxFileSelector("Select stimulus file", self.lastPath, "", ".sti", "Stimulus files (*.sti)|*.sti|All files (*.*)|*.*", wxOPEN|wxFILE_MUST_EXIST, self)
++ s = FileSelector("Select stimulus file", self.lastPath, "", ".sti", "Stimulus files (*.sti)|*.sti|All files (*.*)|*.*", OPEN|FILE_MUST_EXIST, self)
+ if (s):
+ self.filename.SetValue(s)
+
+@@ -315,9 +315,9 @@
+ return d
+
+ if __name__=="__main__":
+- app = wxPySimpleApp()
+- d = LAWaveformProperties(None, -1, "Waveform Properties", wxPoint(-1,-1))
+- if d.ShowModal() == wxID_OK:
++ app = PySimpleApp()
++ d = LAWaveformProperties(None, -1, "Waveform Properties", Point(-1,-1))
++ if d.ShowModal() == ID_OK:
+ dlgdata = d.SlurpData()
+ print dlgdata['pin']
+ print dlgdata['filename']
+diff -Naur PySim11/pe_pio.py PySim11.new/pe_pio.py
+--- PySim11/pe_pio.py 2004-07-25 11:41:25.000000000 -0400
++++ PySim11.new/pe_pio.py 2008-10-09 12:26:29.000000000 -0400
+@@ -114,7 +114,7 @@
+ PAIF = 0x10
+
+ try:
+- import wxPython.wx
++ import wx
+ from laframe import LAFrame
+
+ except:
diff --git a/app-emulation/evbu/files/evbu-0.6-wx.patch b/app-emulation/evbu/files/evbu-0.6-wx.patch
new file mode 100644
index 0000000..2c1e686
--- /dev/null
+++ b/app-emulation/evbu/files/evbu-0.6-wx.patch
@@ -0,0 +1,454 @@
+diff -Naur evbu/evbu.py evbu.new/evbu.py
+--- evbu/evbu.py 2004-07-25 11:41:25.000000000 -0400
++++ evbu.new/evbu.py 2008-10-09 12:02:20.000000000 -0400
+@@ -811,11 +811,11 @@
+ import Queue
+
+ ## import all of the wxPython GUI package
+- from wxPython.wx import *
++ from wx import *
+
+ from evbuframe import EVBUFrame
+
+- class MyApp(wxApp):
++ class MyApp(App):
+
+ # wxWindows calls this method to initialize the application
+ def OnInit(self):
+@@ -866,7 +866,7 @@
+ import buffalo
+ bstate = buffalo.BuffaloServices(evb)
+
+- frame.Show(true)
++ frame.Show(True)
+
+ # Tell wxWindows that this is our main window
+ self.SetTopWindow(frame)
+@@ -884,7 +884,7 @@
+ frame.term.input.SetFocus()
+
+ # Return a success flag
+- return true
++ return True
+
+
+ # Save and restore working directory on exit
+diff -Naur evbu/evbuframe.py evbu.new/evbuframe.py
+--- evbu/evbuframe.py 2004-07-25 11:41:25.000000000 -0400
++++ evbu.new/evbuframe.py 2008-10-09 11:49:35.000000000 -0400
+@@ -10,7 +10,7 @@
+
+ from safestruct import *
+
+-from wxPython.wx import *
++from wx import *
+
+ import G
+ from term import Term
+@@ -18,7 +18,7 @@
+ from PySim11 import PySim11
+ from kcmmemory import getkcmmemoryData
+
+-class EVBUFrame(wxFrame):
++class EVBUFrame(Frame):
+
+ def __init__(self, parent, id, title, queue, simbreak):
+ # Queue for sending user input to cmdloop
+@@ -38,11 +38,11 @@
+ # Determine sizes
+ #
+ #####################################################
+- dc = wxScreenDC()
++ dc = ScreenDC()
+ if sys.platform == "win32":
+- font = wxFont(12, wxMODERN, wxNORMAL, wxNORMAL)
++ font = Font(12, MODERN, NORMAL, NORMAL)
+ else:
+- font = wxFont(14, wxMODERN, wxNORMAL, wxNORMAL)
++ font = Font(14, MODERN, NORMAL, NORMAL)
+ dc.SetFont(font)
+ ch = dc.GetCharHeight()
+ cw = dc.GetCharWidth()
+@@ -75,10 +75,10 @@
+ h = 25*ch + ch + 72
+
+ # First, call the base class' __init__ method to create the frame
+- wxFrame.__init__(self, parent, id, title, wxPoint(-1, -1), wxSize(w,h), wxMINIMIZE_BOX|wxMAXIMIZE_BOX|wxSYSTEM_MENU|wxCAPTION|wxRESIZE_BORDER)
+- self.SetAutoLayout(true)
++ Frame.__init__(self, parent, id, title, Point(-1, -1), Size(w,h), MINIMIZE_BOX|MAXIMIZE_BOX|SYSTEM_MENU|CAPTION|RESIZE_BORDER)
++ self.SetAutoLayout(True)
+
+- self.term = Term(self, -1, wxPoint(0,0), (80,25), font, queue)
++ self.term = Term(self, -1, Point(0,0), (80,25), font, queue)
+
+ # The PySim11 thread calls our functions to post window update
+ # commands using this queue. We use a fake button with ID
+@@ -87,7 +87,7 @@
+ # (func, parms) which is simply invoked as apply(func,parms)
+ # in the handler.
+ self.handlerqueue = Queue.Queue(0)
+- self.handlerqueuebuttonid = wxNewId()
++ self.handlerqueuebuttonid = NewId()
+ EVT_BUTTON(self, self.handlerqueuebuttonid, self.Queue_handler)
+
+ ##############################################
+@@ -95,25 +95,25 @@
+ # Create menu bar, event table, and accelerator
+ #
+ ##############################################
+- self.menubar = wxMenuBar()
++ self.menubar = MenuBar()
+ self.menuIDs = {}
+- fileMenu = wxMenu()
+- #self.menuIDs['Preferences'] = fileMenu.preferencesID = wxNewId()
++ fileMenu = Menu()
++ #self.menuIDs['Preferences'] = fileMenu.preferencesID = NewId()
+ #fileMenu.Append(fileMenu.preferencesID, "&Preferences...\tCtrl-P", "Edit global properties for this application")
+ #fileMenu.AppendSeparator()
+- self.menuIDs['Load'] = fileMenu.loadID = wxNewId()
++ self.menuIDs['Load'] = fileMenu.loadID = NewId()
+ fileMenu.Append(fileMenu.loadID, "&Load\tCtrl-L", "Load an S19 file")
+- self.menuIDs['Exit'] = fileMenu.exitID = wxNewId()
++ self.menuIDs['Exit'] = fileMenu.exitID = NewId()
+ fileMenu.Append(fileMenu.exitID, "E&xit\tCtrl-Q", "Exit the program")
+ self.menubar.Append(fileMenu, "&File")
+
+- simMenu = wxMenu()
+- self.menuIDs['Stop'] = simMenu.stopID = wxNewId()
++ simMenu = Menu()
++ self.menuIDs['Stop'] = simMenu.stopID = NewId()
+ simMenu.Append(simMenu.stopID, "&Stop\tCtrl-C", "Stop the simulation")
+ self.menubar.Append(simMenu, "&Simulation")
+
+- helpMenu = wxMenu()
+- self.menuIDs['About'] = helpMenu.aboutID = wxNewId()
++ helpMenu = Menu()
++ self.menuIDs['About'] = helpMenu.aboutID = NewId()
+ helpMenu.Append(helpMenu.aboutID, "&About...", "About this program")
+ self.menubar.Append(helpMenu, "&Help")
+
+@@ -127,10 +127,10 @@
+ EVT_MENU(self, helpMenu.aboutID, self.OnAbout)
+ EVT_MENU(self, simMenu.stopID, self.OnSimStop)
+
+- accel = wxAcceleratorTable([ \
+- (wxACCEL_CTRL, ord('q'), fileMenu.exitID), \
+- # (wxACCEL_CTRL, ord('p'), fileMenu.preferencesID), \
+- (wxACCEL_CTRL, ord('c'), simMenu.stopID)])
++ accel = AcceleratorTable([ \
++ (ACCEL_CTRL, ord('q'), fileMenu.exitID), \
++ # (ACCEL_CTRL, ord('p'), fileMenu.preferencesID), \
++ (ACCEL_CTRL, ord('c'), simMenu.stopID)])
+ self.SetAcceleratorTable(accel)
+
+ ##############################################
+@@ -138,15 +138,15 @@
+ # Create status bar
+ #
+ ##############################################
+- self.statusBar = wxStatusBar(self, -1, 0)
++ self.statusBar = StatusBar(self, -1, 0)
+ self.statusBar.SetFieldsCount(1)
+ self.statusBar.SetStatusWidths([-1])
+ self.statusBar.SetStatusText("Ready", 0)
+ self.SetStatusBar(self.statusBar)
+ #self.statusBarBackgroundColor = self.statusBar.GetBackgroundColour()
+
+- self.sizer = wxBoxSizer(wxVERTICAL)
+- self.sizer.Add(self.term, 1, wxEXPAND)
++ self.sizer = BoxSizer(VERTICAL)
++ self.sizer.Add(self.term, 1, EXPAND)
+ self.sizer.Fit(self)
+ self.SetSizer(self.sizer)
+
+@@ -175,7 +175,7 @@
+ # Icon
+ #
+ #########################
+- icon = wxIconFromXPMData(getkcmmemoryData())
++ icon = IconFromXPMData(getkcmmemoryData())
+ self.SetIcon(icon)
+
+ #def OnSize(self, event):
+@@ -184,7 +184,7 @@
+
+ def Quit(self):
+ if self.isSimulating:
+- wxMessageBox("Simulation is in progress. Terminate the simulation before quitting the program.", "Hold it, bub", wxOK|wxCENTRE)
++ MessageBox("Simulation is in progress. Terminate the simulation before quitting the program.", "Hold it, bub", OK|CENTRE)
+ return
+
+ self.queue.put(0)
+@@ -197,7 +197,7 @@
+ pass
+
+ def OnFileLoad(self, event):
+- line = wxFileSelector("Select S19 file", os.getcwd(), "", ".s19", "S19 files (*.s19)|*.s19|All files (*.*)|*.*", wxOPEN|wxFILE_MUST_EXIST, self)
++ line = FileSelector("Select S19 file", os.getcwd(), "", ".s19", "S19 files (*.s19)|*.s19|All files (*.*)|*.*", OPEN|FILE_MUST_EXIST, self)
+ if line:
+ self.queue.put("load "+line)
+
+@@ -215,7 +215,7 @@
+ <http://claymore.engineer.gvsu.edu/~steriana/Python>
+ """ % (EVBUoptions.EVBUVersionMajor, EVBUoptions.EVBUVersionMinor,\
+ PySim11.PySim11VersionMajor, PySim11.PySim11VersionMinor)
+- wxMessageBox(aboutText, "About EVBU", wxOK|wxCENTRE, self)
++ MessageBox(aboutText, "About EVBU", OK|CENTRE, self)
+
+ def FlushQueue(self):
+ # Flush the queue that sends user data to the EVBU
+@@ -235,7 +235,7 @@
+ # User-generated simulation stop
+ def OnSimStop(self, event):
+ if not self.isSimulating:
+- wxMessageBox("Simulation not in progress", "Huh?", wxOK|wxCENTRE, self)
++ MessageBox("Simulation not in progress", "Huh?", OK|CENTRE, self)
+ return
+
+ # Clear the flag, then wait for PySim11 to set it, indicating a
+@@ -246,8 +246,8 @@
+ if self.simbreak.isSet():
+ break
+ else:
+- ret = wxMessageBox("The simulator has not stopped yet. Press OK to try again or Cancel to give up.", "Ooops", wxOK|wxCANCEL|wxCENTRE|wxICON_ERROR)
+- if ret != wxOK:
++ ret = MessageBox("The simulator has not stopped yet. Press OK to try again or Cancel to give up.", "Ooops", OK|CANCEL|CENTRE|ICON_ERROR)
++ if ret != OK:
+ return
+
+ ##################################################################
+@@ -266,7 +266,7 @@
+ apply(func, args)
+
+ # Come back here for the next event in the queue
+- wxPostEvent(self, wxCommandEvent(wxEVT_COMMAND_BUTTON_CLICKED, self.handlerqueuebuttonid))
++ PostEvent(self, CommandEvent(EVT_COMMAND_BUTTON_CLICKED, self.handlerqueuebuttonid))
+
+ def OnCharWait_handler(self):
+ self.statusBar.SetStatusText("Simulating...waiting for a character", 0)
+@@ -302,35 +302,35 @@
+
+ def OnCharWait(self, event):
+ self.handlerqueue.put((self.OnCharWait_handler, ()))
+- wxPostEvent(self, wxCommandEvent(wxEVT_COMMAND_BUTTON_CLICKED, self.handlerqueuebuttonid))
++ PostEvent(self, CommandEvent(EVT_COMMAND_BUTTON_CLICKED, self.handlerqueuebuttonid))
+
+ def OnNoCharWait(self, event):
+ self.handlerqueue.put((self.OnNoCharWait_handler, ()))
+- wxPostEvent(self, wxCommandEvent(wxEVT_COMMAND_BUTTON_CLICKED, self.handlerqueuebuttonid))
++ PostEvent(self, CommandEvent(EVT_COMMAND_BUTTON_CLICKED, self.handlerqueuebuttonid))
+
+ def OnSimStart(self, event):
+ self.handlerqueue.put((self.OnSimStart_handler, ()))
+- wxPostEvent(self, wxCommandEvent(wxEVT_COMMAND_BUTTON_CLICKED, self.handlerqueuebuttonid))
++ PostEvent(self, CommandEvent(EVT_COMMAND_BUTTON_CLICKED, self.handlerqueuebuttonid))
+
+ def OnSimEnd(self, event):
+ self.handlerqueue.put((self.OnSimEnd_handler, ()))
+- wxPostEvent(self, wxCommandEvent(wxEVT_COMMAND_BUTTON_CLICKED, self.handlerqueuebuttonid))
++ PostEvent(self, CommandEvent(EVT_COMMAND_BUTTON_CLICKED, self.handlerqueuebuttonid))
+
+ if __name__=="__main__":
+- class MyApp(wxApp):
++ class MyApp(App):
+
+ # wxWindows calls this method to initialize the application
+ def OnInit(self):
+
+ # Create an instance of our customized Frame class
+ frame = EVBUFrame(None, -1, "This is a test")
+- frame.Show(true)
++ frame.Show(True)
+
+ # Tell wxWindows that this is our main window
+ self.SetTopWindow(frame)
+
+ # Return a success flag
+- return true
++ return True
+
+
+ app = MyApp(0) # Create an instance of the application class
+diff -Naur evbu/kcmmemory.py evbu.new/kcmmemory.py
+--- evbu/kcmmemory.py 2004-07-25 11:41:25.000000000 -0400
++++ evbu.new/kcmmemory.py 2008-10-09 11:37:52.000000000 -0400
+@@ -3,7 +3,7 @@
+ #
+ # Source file is kcmmemory.png from KDE icons
+
+-from wxPython.wx import wxBitmapFromXPMData, wxImageFromBitmap
++from wx import BitmapFromXPMData, ImageFromBitmap
+ import cPickle
+
+
+@@ -30,8 +30,8 @@
+ a." )
+
+ def getkcmmemoryBitmap():
+- return wxBitmapFromXPMData(getkcmmemoryData())
++ return BitmapFromXPMData(getkcmmemoryData())
+
+ def getkcmmemoryImage():
+- return wxImageFromBitmap(getkcmmemoryBitmap())
++ return ImageFromBitmap(getkcmmemoryBitmap())
+
+diff -Naur evbu/term.py evbu.new/term.py
+--- evbu/term.py 2004-07-25 11:41:25.000000000 -0400
++++ evbu.new/term.py 2008-10-09 12:01:44.000000000 -0400
+@@ -1,5 +1,5 @@
+ ## import all of the wxPython GUI package
+-from wxPython.wx import *
++from wx import *
+
+ import Queue
+
+@@ -57,9 +57,9 @@
+ # Term -- terminal with read-only display and single-input line
+
+
+-class MyTextCtrl(wxTextCtrl):
++class MyTextCtrl(TextCtrl):
+ def __init__(self, parent, id, title, orig, size, style):
+- wxTextCtrl.__init__(self, parent, id, title, orig, size, style)
++ TextCtrl.__init__(self, parent, id, title, orig, size, style)
+ self.parent = parent
+
+ EVT_CHAR(self, self.OnChar)
+@@ -68,7 +68,7 @@
+ self.parent.RawChar(event.GetKeyCode())
+ event.Skip()
+
+-class Term(wxWindow):
++class Term(Window):
+ def __init__(self, parent, id, orig, dimension, font, queue):
+ self.parent = parent
+
+@@ -86,7 +86,7 @@
+ # List of previously entered lines for recalling with up/down arrows
+ self.history = History(100)
+
+- dc = wxClientDC(parent)
++ dc = ClientDC(parent)
+ dc.SetFont(font)
+ ch = dc.GetCharHeight()
+ cw = dc.GetCharWidth()
+@@ -95,37 +95,37 @@
+ w = dimension[0]*cw + 25
+ h = dimension[1]*ch + ch + 18
+
+- wxWindow.__init__(self, parent, id, orig, wxSize(w,h), wxNO_BORDER)
++ Window.__init__(self, parent, id, orig, Size(w,h), NO_BORDER)
+
+ EVT_SIZE(self, self.OnSize)
+- self.sizer = wxBoxSizer(wxVERTICAL)
++ self.sizer = BoxSizer(VERTICAL)
+
+ # Slop approach
+ h = dimension[1]*ch + 8
+
+- self.display = wxTextCtrl(self, 200, "", wxPoint(0,0), wxSize(w,h), wxTE_MULTILINE|wxTE_READONLY|wxTE_RICH|wxTE_NOHIDESEL)
++ self.display = TextCtrl(self, 200, "", Point(0,0), Size(w,h), TE_MULTILINE|TE_READONLY|TE_RICH|TE_NOHIDESEL)
+
+ sep = 4
+ h2 = ch + 8
+
+- self.input = MyTextCtrl(self, 201, "", wxPoint(0,h+sep), wxSize(w,h2), wxTE_PROCESS_ENTER|wxTE_RICH)
++ self.input = MyTextCtrl(self, 201, "", Point(0,h+sep), Size(w,h2), TE_PROCESS_ENTER|TE_RICH)
+
+ self.display.SetFont(font)
+- self.display.SetDefaultStyle(wxTextAttr(wxGREEN, wxBLACK, font))
+- self.display.SetBackgroundColour(wxBLACK)
++ self.display.SetDefaultStyle(TextAttr(GREEN, BLACK, font))
++ self.display.SetBackgroundColour(BLACK)
+
+ self.input.SetFont(font)
+- self.input.SetBackgroundColour(wxBLACK)
+- self.input.SetForegroundColour(wxWHITE)
++ self.input.SetBackgroundColour(BLACK)
++ self.input.SetForegroundColour(WHITE)
+
+ EVT_TEXT_ENTER(self, 201, self.OnInput)
+ EVT_BUTTON(self, 301, self.OnWriteQueue)
+
+ # Try using a sizer
+- self.sizer.Add(self.display, 1, wxEXPAND)
+- self.sizer.Add(w, 5, 0, wxEXPAND)
+- self.sizer.Add(self.input, 0, wxEXPAND)
+- self.SetAutoLayout(true)
++ self.sizer.Add(self.display, 1, EXPAND)
++ #self.sizer.Add(w, 5, 0, EXPAND)
++ self.sizer.Add(self.input, 0, EXPAND)
++ self.SetAutoLayout(True)
+ self.SetSizer(self.sizer)
+ self.sizer.Fit(self)
+
+@@ -135,14 +135,14 @@
+ #print 'Display:', (X,Y), (x,y)
+ #dX = X-x
+ #dY = Y-y
+- #self.display.SetClientSize(wxSize(dimension[0]*cw + dX, dimension[1]*ch + dY))
++ #self.display.SetClientSize(Size(dimension[0]*cw + dX, dimension[1]*ch + dY))
+
+ #(X,Y) = self.input.GetSizeTuple()
+ #(x,y) = self.input.GetClientSizeTuple()
+ #print 'Input:', (X,Y), (x,y)
+ #dX = X-x
+ #dY = Y-y
+- #self.input.SetClientSize(wxSize(dimension[0]*cw + dX, 1*ch + dY))
++ #self.input.SetClientSize(Size(dimension[0]*cw + dX, 1*ch + dY))
+
+ def OnSize(self, event):
+ #print 'OnSize:', event.GetSize()
+@@ -186,44 +186,44 @@
+ for line in lines[:-1]:
+ self.writequeue.put(line+'\n')
+ self.writequeue.put(lines[-1])
+- wxPostEvent(self, wxCommandEvent(wxEVT_COMMAND_BUTTON_CLICKED, 301))
++ PostEvent(self, CommandEvent(wxEVT_COMMAND_BUTTON_CLICKED, 301))
+
+ def OnWriteQueue(self, event):
+ try:
+ self.display.AppendText(self.writequeue.get(0))
+- wxPostEvent(self, wxCommandEvent(wxEVT_COMMAND_BUTTON_CLICKED, 301))
++ PostEvent(self, CommandEvent(wxEVT_COMMAND_BUTTON_CLICKED, 301))
+ except Queue.Empty:
+ pass
+
+ #---------------------------------------------------------------------------
+ if __name__=="__main__":
+- class MyFrame(wxFrame):
++ class MyFrame(Frame):
+
+ def __init__(self, parent, id, title):
+ # First, call the base class' __init__ method to create the frame
+- wxFrame.__init__(self, parent, id, title, wxPoint(-1, -1), wxSize(800, 450))
++ Frame.__init__(self, parent, id, title, Point(-1, -1), Size(800, 450))
+
+ EVT_CLOSE(self, self.OnCloseWindow)
+
+- self.term = Term(self, -1, wxPoint(0,0), wxSize(610,430))
++ self.term = Term(self, -1, Point(0,0), Size(610,430))
+
+ def OnCloseWindow(self, event):
+ self.Destroy()
+
+- class MyApp(wxApp):
++ class MyApp(App):
+
+ # wxWindows calls this method to initialize the application
+ def OnInit(self):
+
+ # Create an instance of our customized Frame class
+ frame = MyFrame(None, -1, "This is a test")
+- frame.Show(true)
++ frame.Show(True)
+
+ # Tell wxWindows that this is our main window
+ self.SetTopWindow(frame)
+
+ # Return a success flag
+- return true
++ return True
+
+
+ app = MyApp(0) # Create an instance of the application class
diff --git a/app-emulation/evbu/metadata.xml b/app-emulation/evbu/metadata.xml
new file mode 100644
index 0000000..9c0499d
--- /dev/null
+++ b/app-emulation/evbu/metadata.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<herd>no-herd</herd>
+<maintainer>
+ <name>Aaron Mavrinac</name>
+ <email>mavrinac@gmail.com</email>
+</maintainer>
+<longdescription lang="en">
+EVBU is a simulator for the 68HC11 microcontroller. Within a GUI, it implements a command line interface, very similar to the BUFFALO monitor, and a waveform interface for simulating I/O.
+</longdescription>
+</pkgmetadata>
+