[MixMaster] Make compatible with Python 3

This also retains Python 2 support.
This commit is contained in:
Ray Speth 2013-06-21 20:58:35 +00:00
parent 440bf4a8d1
commit 0a56f3286f
39 changed files with 288 additions and 166 deletions

View file

@ -1,7 +1,13 @@
from Tkinter import *
import sys
if sys.version_info.major == 3:
from tkinter import *
else:
from Tkinter import *
from Cantera import *
from SpeciesInfo import SpeciesInfo
from .SpeciesInfo import SpeciesInfo
#from KineticsFrame import KineticsFrame
_CUTOFF = 1.e-15

View file

@ -1,11 +1,20 @@
from __future__ import print_function
from types import *
from Tkinter import *
from ScrolledText import ScrolledText
import sys
if sys.version_info.major == 3:
from tkinter import *
from tkinter.scrolledtext import ScrolledText
else:
from Tkinter import *
from ScrolledText import ScrolledText
#import datawindow
#import filewindow
def ff():
print ' hi '
print(' hi ')
class ControlWindow(Frame):
fncs = [ff]*10
@ -90,23 +99,23 @@ class ControlWindow(Frame):
return filemenu
def testevent(event):
print 'event ',event.value
print('event ',event.value)
def make_menu(name, menubar, list):
def make_menu(name, menubar, lst):
nc = len(name)
button=Menubutton(menubar, text=name, width=nc+4, padx=3,pady=1)
button.pack(side=LEFT)
menu = Menu(button,tearoff=FALSE)
m = menu
i = 0
for entry in list:
for entry in lst:
i += 1
if entry == 'separator':
menu.add_separator({})
elif type(entry)==ListType:
elif isinstance(entry, list):
for num in entry:
menu.entryconfig(num,state=DISABLED)
elif type(entry[1]) != ListType:
elif not isinstance(entry[1], list):
if i == 20:
i = 0
submenu = Menu(button,tearoff=FALSE)
@ -143,7 +152,6 @@ def menuitem_state(button, *statelist):
pass
class ArgumentWindow(Toplevel):
import tkMessageBox
def __init__(self, sim, **options):
Toplevel.__init__(self, sim.cwin)
self.resizable(FALSE,FALSE)

View file

@ -1,12 +1,18 @@
import os, math, string
from Tkinter import *
import os, math, string, sys
if sys.version_info.major == 3:
from tkinter import *
from tkinter.filedialog import askopenfilename
else:
from Tkinter import *
from tkFileDialog import askopenfilename
from Cantera import *
from Cantera.num import *
from Cantera import num
from tkFileDialog import askopenfilename
from GraphFrame import Graph
from DataGraph import DataGraph, plotLimits
from ControlPanel import make_menu
from .GraphFrame import Graph
from .DataGraph import DataGraph, plotLimits
from .ControlPanel import make_menu
U_LOC = 1
@ -180,7 +186,7 @@ class DataFrame(Frame):
if self.data[P_LOC,0] == 0.0:
self.data[P_LOC,:] = ones(self.np,'d')*OneAtm
print 'Warning: no pressure data. P set to 1 atm.'
print('Warning: no pressure data. P set to 1 atm.')
self.sc.config(cnf={'from':0,'to':self.np-1})
if self.loc.get() <= 0:

View file

@ -1,5 +1,10 @@
import sys
if sys.version_info.major == 3:
from tkinter import *
else:
from Tkinter import *
from Tkinter import *
import math
from Cantera.num import *

View file

@ -1,10 +1,16 @@
from Tkinter import *
from __future__ import print_function
import sys
from ElementFrame import getElements
from utilities import handleError
if sys.version_info.major == 3:
from tkinter import *
else:
from Tkinter import *
from .ElementFrame import getElements
from .utilities import handleError
from Cantera import *
from config import *
from SpeciesFrame import getSpecies
from .config import *
from .SpeciesFrame import getSpecies
def testit():
pass
@ -25,7 +31,7 @@ class EditFrame(Frame):
def __init__(self, master, app):
Frame.__init__(self, master)
self.mix = app.mix
print self.mix, dir(self.mix)
print(self.mix, dir(self.mix))
self.app = app
self.master = master
self.master.title("Cantera Mechanism Editor")
@ -76,8 +82,8 @@ class EditFrame(Frame):
c, r = 0, r + 1
def getspecies(self):
print getSpecies(self.mix.speciesNames(),
self.mix.speciesNames())
print(getSpecies(self.mix.speciesNames(),
self.mix.speciesNames()))
def editSpecies(self, event=None):
e = Toplevel(event.widget.master)
@ -145,7 +151,7 @@ class EditFrame(Frame):
for fr in e.children.values():
for item in fr.children.values():
try:
print item.cget('selection')
print(item.cget('selection'))
except:
pass
e.destroy()

View file

@ -3,9 +3,13 @@
# the selected elements
#
from Tkinter import *
import sys
if sys.version_info.major == 3:
from tkinter import *
else:
from Tkinter import *
from types import *
import tkMessageBox
import string
from Cantera import *
@ -140,15 +144,15 @@ class ElementPropertyFrame(Frame):
sticky=W,
padx=10)
Label(self,
text=`el.atomicNumber`).grid(column=1,
row=n,
sticky=W,
padx=10)
text=repr(el.atomicNumber)).grid(column=1,
row=n,
sticky=W,
padx=10)
Label(self,
text=`el.atomicWeight`).grid(column=2,
row=n,
sticky=W,
padx=10)
text=repr(el.atomicWeight)).grid(column=2,
row=n,
sticky=W,
padx=10)
n = n + 1
@ -179,4 +183,4 @@ def showElementProperties(ellist):
if __name__ == "__main__":
print getElements()
print(getElements())

View file

@ -1,5 +1,9 @@
import sys
if sys.version_info.major == 3:
from tkinter import *
else:
from Tkinter import *
from Tkinter import *
import math
class Graph(Frame):
@ -59,8 +63,8 @@ class Graph(Frame):
relief=SUNKEN,bd=1)
self.canvas.create_text(4,2,text=self.maxY,anchor=NW)
self.canvas.create_text(4,self.graph_h,text=self.minY,anchor=SW)
self.ml["text"] = `minX`
self.mr["text"] = `maxX`
self.ml["text"] = repr(minX)
self.mr["text"] = repr(maxX)
self.canvas.pack()
self.last_points = []
@ -125,4 +129,4 @@ if __name__=='__main__':
#print("finished")
g.pauseWhenFinished()
h.pauseWhenFinished()
print g
print(g)

View file

@ -1,8 +1,14 @@
import os, math
from Tkinter import *
import os, math,sys
if sys.version_info.major == 3:
from tkinter import *
from tkinter.filedialog import askopenfilename
else:
from Tkinter import *
from tkFileDialog import askopenfilename
from Cantera import *
#from Cantera.ck2ctml import ck2ctml
from tkFileDialog import askopenfilename
class ImportFrame(Frame):
def __init__(self,top):
@ -84,7 +90,7 @@ class ImportFrame(Frame):
else: nm = ff
outfile = p+os.sep+nm+'.xml'
try:
print 'not supported.'
print('not supported.')
#ck2ctml(infile = ckfile, thermo = thermdb,
# transport = trandb, outfile = outfile,
# id = nm)
@ -92,7 +98,7 @@ class ImportFrame(Frame):
return
except:
print 'Errors were encountered. See log file ck2ctml.log'
print('Errors were encountered. See log file ck2ctml.log')
self.hide()
return

View file

@ -1,8 +1,15 @@
import os, math
from Tkinter import *
from __future__ import print_function
import os, math, sys
if sys.version_info.major == 3:
from tkinter import *
else:
from Tkinter import *
from Cantera import *
from SpeciesInfo import SpeciesInfo
from .SpeciesInfo import SpeciesInfo
from Cantera import rxnpath
import webbrowser
@ -241,7 +248,7 @@ class ReactionKineticsFrame(Frame):
def show(self,e=None,b=None,c=None):
v = self.vis.get()
print e,b,c
print(e,b,c)
#if v == 0:
# self.hide()
# return

View file

@ -1,7 +1,13 @@
from Cantera import *
from Tkinter import *
from ControlPanel import ControlWindow
from ControlPanel import make_menu, menuitem_state
import sys
if sys.version_info.major == 3:
from tkinter import *
else:
from Tkinter import *
from .ControlPanel import ControlWindow
from .ControlPanel import make_menu, menuitem_state
#from Cantera.Examples.Tk import _mechdir
import os

View file

@ -1,6 +1,6 @@
from Cantera import GasConstant, OneAtm
from Cantera.num import zeros, ones
from utilities import handleError
from .utilities import handleError
def spdict(phase, x):
nm = phase.speciesNames()

View file

@ -1,7 +1,12 @@
from Tkinter import *
from Cantera import *
from SpeciesInfo import SpeciesInfo
import sys
if sys.version_info.major == 3:
from tkinter import *
else:
from Tkinter import *
from .SpeciesInfo import SpeciesInfo
_CUTOFF = 1.e-15
_ATOL = 1.e-15

View file

@ -3,10 +3,13 @@
# the selected elements
#
from Tkinter import *
from types import *
import tkMessageBox
import sys
if sys.version_info.major == 3:
from tkinter import *
else:
from Tkinter import *
from types import *
from Cantera import *
class SpeciesFrame(Frame):
@ -171,4 +174,4 @@ def showElementProperties(ellist):
if __name__ == "__main__":
print getSpecies()
print(getSpecies())

View file

@ -1,9 +1,14 @@
from Tkinter import *
import sys
if sys.version_info.major == 3:
from tkinter import *
else:
from Tkinter import *
import re, math
from Cantera import *
from Units import temperature, specificEnergy, specificEntropy
from UnitChooser import UnitVar
from GraphFrame import Graph
from .Units import temperature, specificEnergy, specificEntropy
from .UnitChooser import UnitVar
from .GraphFrame import Graph
def testit():
pass
@ -44,7 +49,7 @@ class SpeciesInfo(Label):
Label(self.eframe,text='Atoms:')\
.grid(row=0,column=0,sticky=N+W)
for el, c in self.sp.composition():
Label(self.eframe,text=`int(c)`+' '+el).grid(row=0,column=r)
Label(self.eframe,text=repr(int(c))+' '+el).grid(row=0,column=r)
r = r + 1

View file

@ -1,12 +1,17 @@
from Cantera import *
from Tkinter import *
from Units import temperature, pressure, density, specificEnergy, specificEntropy
from UnitChooser import UnitVar
from ThermoProp import ThermoProp
from utilities import handleError
import sys
if sys.version_info.major == 3:
from tkinter import *
else:
from Tkinter import *
from .Units import temperature, pressure, density, specificEnergy, specificEntropy
from .UnitChooser import UnitVar
from .ThermoProp import ThermoProp
from .utilities import handleError
_PRESSURE = 1
_TEMPERATURE = 0

View file

@ -1,5 +1,10 @@
from Tkinter import *
from UnitChooser import UnitVar
import sys
if sys.version_info.major == 3:
from tkinter import *
else:
from Tkinter import *
from .UnitChooser import UnitVar
_tv = ['Temperature','Internal Energy','Enthalpy']
_pv = ['Pressure', 'Density']

View file

@ -1,4 +1,8 @@
from Tkinter import *
import sys
if sys.version_info.major == 3:
from tkinter import *
else:
from Tkinter import *
class TransportFrame(Frame):
def show(self, i, frame, row, col):

View file

@ -1,4 +1,9 @@
from Tkinter import *
import sys
if sys.version_info.major == 3:
from tkinter import *
else:
from Tkinter import *
import re
class UnitVar(Frame):

View file

@ -1,5 +1,5 @@
#!/usr/bin/env python
from unit import unit, dimensionless
from .unit import unit, dimensionless
#
# The basic SI units
@ -75,39 +75,39 @@ yocto = 1e-24
if __name__ == "__main__":
print "The 7 base SI units:"
print " meter: %s" % meter
print " kilogram: %s" % kilogram
print " second: %s" % second
print " ampere: %s" % ampere
print " kelvin: %s" % kelvin
print " mole: %s" % mole
print " candela: %s" % candela
print
print "The 21 SI derived units with special names:"
print " radian: %s" % radian
print " steradian: %s" % steradian
print " hertz: %s" % hertz
print("The 7 base SI units:")
print(" meter: %s" % meter)
print(" kilogram: %s" % kilogram)
print(" second: %s" % second)
print(" ampere: %s" % ampere)
print(" kelvin: %s" % kelvin)
print(" mole: %s" % mole)
print(" candela: %s" % candela)
print("")
print("The 21 SI derived units with special names:")
print(" radian: %s" % radian)
print(" steradian: %s" % steradian)
print(" hertz: %s" % hertz)
print " newton: %s" % newton
print " pascal: %s" % pascal
print " joule: %s" % joule
print " watt: %s" % watt
print(" newton: %s" % newton)
print(" pascal: %s" % pascal)
print(" joule: %s" % joule)
print(" watt: %s" % watt)
print " coulomb: %s" % coulomb
print " volt: %s" % volt
print " farad: %s" % farad
print " ohm: %s" % ohm
print " siemens: %s" % siemens
print " weber: %s" % weber
print " tesla: %s" % tesla
print " henry: %s" % henry
print(" coulomb: %s" % coulomb)
print(" volt: %s" % volt)
print(" farad: %s" % farad)
print(" ohm: %s" % ohm)
print(" siemens: %s" % siemens)
print(" weber: %s" % weber)
print(" tesla: %s" % tesla)
print(" henry: %s" % henry)
print " degree Celsius: %s" % celsius
print(" degree Celsius: %s" % celsius)
print " lumen: %s" % lumen
print " lux: %s" % lux
print(" lumen: %s" % lumen)
print(" lux: %s" % lux)
print " becquerel: %s" % becquerel
print " gray: %s" % gray
print " sievert: %s" % sievert
print(" becquerel: %s" % becquerel)
print(" gray: %s" % gray)
print(" sievert: %s" % sievert)

View file

@ -1,4 +1,5 @@
import SI, math
import math
from . import SI
#
# Definitions of common density units

View file

@ -1,4 +1,4 @@
from SI import joule
from .SI import joule
#
# Definitions of common energy units

View file

@ -1,4 +1,4 @@
from SI import meter
from .SI import meter
#
# Definitions of common force units

View file

@ -1,5 +1,5 @@
from SI import meter
from SI import nano, milli, centi, kilo
from .SI import meter
from .SI import nano, milli, centi, kilo
#
# Definitions of common length units

View file

@ -1,4 +1,4 @@
from SI import kilogram
from .SI import kilogram
#
# Definitions of common mass units

View file

@ -1,4 +1,4 @@
from SI import watt, kilo
from .SI import watt, kilo
#
# Definitions of common power units

View file

@ -1,4 +1,4 @@
import SI
from . import SI
#
# Definitions of common pressure units

View file

@ -1,4 +1,4 @@
import SI, energy, mass
from . import SI, energy, mass
#
# Definitions of common energy units

View file

@ -1,4 +1,4 @@
import SI, energy, mass
from . import SI, energy, mass
units = ['J__kg_K', 'kJ__kg_K', 'cal__g_K']

View file

@ -1,5 +1,5 @@
from time import hour
from length import nautical_mile
from .time import hour
from .length import nautical_mile
#
# Definitions of common speed units

View file

@ -1,4 +1,4 @@
import SI
from . import SI
K = SI.kelvin
R = (9.0/5.0)*K

View file

@ -1,4 +1,4 @@
from SI import second
from .SI import second
#
# Definitions of common time units

View file

@ -1,6 +1,6 @@
import operator
class unit:
class unit(object):
_zero = (0,) * 7
_negativeOne = (-1, ) * 7
@ -37,8 +37,10 @@ class unit:
return unit(value, derivation)
def __div__(self, other):
return self.__truediv__(other)
def __truediv__(self, other):
if type(other) == type(0) or type(other) == type(0.0):
return unit(self.value/other, self.derivation)
@ -77,6 +79,9 @@ class unit:
return unit.__mul__(self, other)
def __rdiv__(self, other):
return self.__rtruediv__(other)
def __rtruediv__(self, other):
if type(other) != type(0) and type(other) != type(0.0):
raise BadOperation(self, other)

View file

@ -1,4 +1,4 @@
from length import meter, centimeter, foot, inch
from .length import meter, centimeter, foot, inch
#
# Definitions of common volume units

View file

@ -1,4 +1,4 @@
# from Cantera import *
from main import MixMaster
#from .main import MixMaster

View file

@ -1,7 +1,11 @@
# functionality imports
from Tkinter import *
import sys
if sys.version_info.major == 3:
from tkinter import *
else:
from Tkinter import *
from Cantera.gui import menu, newflow
@ -27,7 +31,7 @@ class App:
self.newbutton.grid(row = 1, column = 1)
def notyet(self):
print 'not yet!'
print('not yet!')
def newflow(self):

View file

@ -10,29 +10,37 @@ _app_version = '1.0'
# functionality imports
from Tkinter import *
import tkMessageBox
import sys
if sys.version_info.major == 3:
from tkinter import *
from tkinter import messagebox
from tkinter.filedialog import askopenfilename
else:
from Tkinter import *
import tkMessageBox as messagebox
from tkFileDialog import askopenfilename
import sys, os, string
# Cantera imports
from Cantera import *
from Cantera.num import zeros
import utilities
from Cantera.gases import IdealGasMix
from . import utilities
# local imports
from TransportFrame import TransportFrame
from CompositionFrame import MixtureFrame
from ThermoFrame import ThermoFrame
from ImportFrame import ImportFrame
from DataFrame import DataFrame
from KineticsFrame import SpeciesKineticsFrame, ReactionKineticsFrame, ReactionPathFrame
from .TransportFrame import TransportFrame
from .CompositionFrame import MixtureFrame
from .ThermoFrame import ThermoFrame
from .ImportFrame import ImportFrame
from .DataFrame import DataFrame
from .KineticsFrame import SpeciesKineticsFrame, ReactionKineticsFrame, ReactionPathFrame
#from Edit import EditFrame
from MechManager import MechManager, _autoload
from UnitChooser import UnitVar
from ControlPanel import ControlWindow
from ControlPanel import make_menu, menuitem_state
from Mix import Mix, Species
from .MechManager import MechManager, _autoload
from .UnitChooser import UnitVar
from .ControlPanel import ControlWindow
from .ControlPanel import make_menu, menuitem_state
from .Mix import Mix, Species
def testit():
return
@ -44,7 +52,6 @@ class MixMaster:
sys.exit(0)
def openmech(self):
from tkFileDialog import askopenfilename
pathname = askopenfilename(filetypes=[("Cantera Input Files", "*.cti"),
("XML Files", "*.xml *.ctml"),
("All Files", "*.*")])
@ -81,7 +88,7 @@ class MixMaster:
def addWindow(self, name, w):
"""Add a new window, or replace an existing one."""
wstate = ''
if self._windows.has_key(name):
if name in self._windows:
try:
wstate = self._windows[name].master.state()
self._windows[name].master.destroy()
@ -304,8 +311,8 @@ class MixMaster:
def aboutmix(self):
m = tkMessageBox.showinfo(title = 'About MixMaster',
message = """
m = messagebox.showinfo(title = 'About MixMaster',
message = """
MixMaster
version """+_app_version+"""

View file

@ -1,17 +1,20 @@
from Tkinter import *
import sys
if sys.version_info.major == 3:
from tkinter import *
else:
from Tkinter import *
def make_menu(name, menubar, list):
from types import *
def make_menu(name, menubar, lst):
button=Menubutton(menubar, text=name, padx=3,pady=1)
button.pack(side=LEFT, anchor=W)
menu = Menu(button,tearoff=FALSE)
for entry in list:
for entry in lst:
if entry == 'separator':
menu.add_separator({})
elif type(entry)==ListType:
elif isinstance(entry, list):
for num in entry:
menu.entryconfig(num,state=DISABLED)
elif type(entry[1]) != ListType:
elif not isinstance(entry[1], list):
if len(entry) == 2 or entry[2] == 'command':
menu.add_command(label=entry[0],
command=entry[1])

View file

@ -1,7 +1,15 @@
from Tkinter import *
from tkFileDialog import askopenfilename
import tkMessageBox
import sys
if sys.version_info.major == 3:
from tkinter import *
from tkinter.filedialog import askopenfilename
from tkinter import messagebox
else:
from Tkinter import *
import tkMessageBox as messagebox
from tkFileDialog import askopenfilename
from Cantera.gases import IdealGasMix
from Cantera import *
@ -104,8 +112,8 @@ class NewFlowDialog:
self.gas = IdealGasMix(import_file = infile)
except:
tkMessageBox.showerror('Create Gas',
'Error reading file %s. See log file for more information.' % infile)
messagebox.showerror('Create Gas',
'Error reading file %s. See log file for more information.' % infile)
#self.flow = Flow1D(flow_type = ftype, flow_geom = fgeom,
# pressure = p, grid = gr, gas = g)

View file

@ -3,8 +3,12 @@ import os, sys
import types, traceback
try:
from Tkinter import Tk
import tkMessageBox
if sys.version_info.major == 3:
from tkinter import Tk
from tkinter import messagebox
else:
from Tkinter import Tk
import tkMessageBox
_hasTk = 1
except:
_hasTk = 0
@ -13,14 +17,14 @@ except:
def write_CSV(f,x):
"""write list x to file f in comma-separated-value format."""
for e in x:
f.write( `e`+',')
f.write( repr(e)+',')
f.write('\n')
def _print_value(name, value, unitstr):
print string.rjust(name, 15)+ \
print(string.rjust(name, 15)+ \
string.rjust('%10.5e' %value, 15) + ' ' + \
string.ljust(unitstr,5),
string.ljust(unitstr,5))
def hasTk():
try:
@ -32,8 +36,8 @@ def hasTk():
def handleError(message = '<error>', window = None,
fatal = 0, warning = 0, options = None):
if warning:
tkMessageBox.showwarning(title = 'Warning', message = message,
parent = window)
messagebox.showwarning(title = 'Warning', message = message,
parent = window)
else:
m = tkMessageBox.showerror(title = 'Error', message = message,
parent = window)
m = messagebox.showerror(title = 'Error', message = message,
parent = window)