#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()
