#Copyright 2009- Ram Gupta
#This program is distributed under the terms of GNU General Public Licence(GPL)
#
from array import array
import wx
import AnswerWindow
import ExerciseWindow
import MinFrame
class MyFrame(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, size=(490, 450))
panel = wx.Panel(self, -1)
vbox = wx.BoxSizer(wx.VERTICAL)
font = wx.SystemSettings_GetFont(wx.SYS_SYSTEM_FONT)
# Add panel 1
panel1 = wx.Panel(panel, -1)
vbox1 = wx.BoxSizer(wx.VERTICAL)
title = wx.StaticText(panel1, -1,"Math Worksheet")
title.SetFont(font)
vbox1.Add(title,0,wx.ALIGN_CENTRE)
vbox1.Add((-1, 40))
line = wx.StaticLine(panel1, -1, (25, 50), (400,1) )
vbox1.Add(line,1,wx.EXPAND|wx.LEFT|wx.RIGHT,20)
vbox1.Add((-1, 40))
panel1.SetSizer(vbox1)
vbox.Add(panel1, 0, wx.BOLD|wx.ALIGN_CENTRE | wx.TOP, 9)
vbox.Add((-1, 20))
# Add panel 2
panel2 = wx.Panel(panel,-1)
hbox2 = wx.BoxSizer(wx.HORIZONTAL)
panel2.SetSizer(hbox2)
date = wx.StaticText(panel2, -1, 'Date')
date.SetFont(font)
hbox2.Add(date,0,wx.RIGHT,20)
self.todate = wx.TextCtrl(panel2, -1)
hbox2.Add(self.todate,1)
vbox.Add(panel2,1,wx.EXPAND|wx.LEFT|wx.RIGHT,20)
# Add panel 3
panel3 = wx.Panel(panel, -1)
hbox3 = wx.BoxSizer(wx.HORIZONTAL)
panel3.SetSizer(hbox3)
op = wx.StaticText(panel3, -1, 'Operation')
op.SetFont(font)
self.sampleList = ['Addition', 'Subtraction', 'Multiplication', 'Division']
op_name = wx.ComboBox(panel3, 30, "", wx.Point(0, 0), wx.Size(95, -1),
self.sampleList, wx.CB_DROPDOWN)
hbox3.Add(op,0,wx.RIGHT,20)
op_font = op_name.GetFont()
op_font.SetWeight(wx.BOLD)
op_name.SetFont(op_font)
hbox3.Add(op_name,1)
vbox.Add(panel3,1,wx.EXPAND|wx.LEFT|wx.RIGHT,20)
vbox.Add((-1, 10))
# Add panel 4
panel4 = wx.Panel(panel,-1)
hbox4 = wx.BoxSizer(wx.HORIZONTAL)
prob1 = wx.StaticBox(panel4,-1,'Type of problem')
prob1.SetFont(font)
sizer11 = wx.StaticBoxSizer(prob1,orient=wx.HORIZONTAL)
hbox4.Add(sizer11,1,wx.RIGHT,20)
btn_777 = wx.RadioButton(panel4, 1, 'upto 12')
font_777 = btn_777.GetFont()
font_777.SetWeight(wx.BOLD)
btn_777.SetFont(font_777)
btn_787 = wx.RadioButton(panel4, 2, '2 by 1')
font_787 = btn_787.GetFont()
font_787.SetWeight(wx.BOLD)
btn_787.SetFont(font_787)
btn_pil = wx.RadioButton(panel4, 3, '2 by 2')
font_pil = btn_pil.GetFont()
font_pil.SetWeight(wx.BOLD)
btn_pil.SetFont(font_pil)
sizer11.Add(btn_777)
sizer11.Add(btn_787)
sizer11.Add(btn_pil)
panel4.SetSizer(hbox4)
vbox.Add(panel4,1,wx.EXPAND|wx.LEFT|wx.RIGHT,20)
vbox.Add((-1, 10))
# Add panel 5
panel5 = wx.Panel(panel,-1)
hbox5 = wx.BoxSizer(wx.HORIZONTAL)
prob2 = wx.StaticBox(panel5,5,'Number of problems ')
prob2.SetFont(font)
sizer21 = wx.StaticBoxSizer(prob2,orient=wx.HORIZONTAL)
hbox5.Add(sizer21,1,wx.RIGHT,20)
panel5.btn1 = wx.RadioButton(panel5, 7, '10')
sizer21.Add(panel5.btn1)
sizer21.Add(wx.RadioButton(panel5, 8, '20'))
sizer21.Add(wx.RadioButton(panel5, 9, '30'))
sizer21.Add(wx.RadioButton(panel5, 10, '40'))
sizer21.Add(wx.RadioButton(panel5, 11, '50'))
panel5.SetSizer(hbox5)
vbox.Add(panel5,1,wx.EXPAND|wx.LEFT|wx.RIGHT,20)
# Add panel 6
panel6 = wx.Panel(panel,-1)
hbox6 = wx.BoxSizer(wx.HORIZONTAL)
creater = wx.Button(panel6, 20, "Create")
leaver = wx.Button(panel6, 21, "Quit")
hbox6.Add((191, -1), 1, wx.EXPAND | wx.ALIGN_RIGHT)
hbox6.Add(creater,1,wx.ALIGN_RIGHT|wx.RIGHT,10)
hbox6.Add(leaver,1,wx.ALIGN_RIGHT)
panel6.SetSizer(hbox6)
vbox.Add(panel6,1,wx.EXPAND|wx.RIGHT,20)
panel.SetSizer(vbox)
#Add event handlers
self.Bind(wx.EVT_COMBOBOX, self.OnSelect)
wx.EVT_RADIOBUTTON(self,1,self.OnType)
wx.EVT_RADIOBUTTON(self,2, self.OnType)
wx.EVT_RADIOBUTTON(self, 3, self.OnType)
wx.EVT_RADIOBUTTON(self, 7, self.OnCount)
wx.EVT_RADIOBUTTON(self, 8, self.OnCount)
wx.EVT_RADIOBUTTON(self, 9, self.OnCount)
wx.EVT_RADIOBUTTON(self, 10, self.OnCount)
wx.EVT_RADIOBUTTON(self, 11, self.OnCount)
wx.EVT_BUTTON(self, 20, self.OnCreate)
wx.EVT_BUTTON(self, 21, self.OnQuit)
self.ops = 0
self.count = 10
self.type = 0
self.Centre()
self.Show(True)
def OnQuit(self,event):
self.Destroy()
def OnCreate(self,event):
frame1 = MinFrame.MinFrame(self,-1,(1020,620))
panel1 = ExerciseWindow.MyWindow(frame1,self.ops,self.type,self.count)
frame1.Show(1)
def OnCount(self,event):
id = event.GetId()
self.count = 10*(id-6) #Convert from id to real count
def OnType(self,event):
self.type = event.GetId()-1
def OnSelect(self,event):
self.ops = event.GetSelection()
app = wx.PySimpleApp()
frame = MyFrame(None, -1,"MATH Worksheet")
frame.Show(1)
app.MainLoop()