"""
------------------------------------------------------------------------------
--                                                                          --
--                                 LAB 03                                   --
--                                                                          --
--                     D I S C A L C U L A T O R . P Y                      --
--                                                                          --
------------------------------------------------------------------------------
-- <Your Name Here>                                                         --
--                                                                          --
-- <Class Name Here>                                                        --
--                                                                          --
------------------------------------------------------------------------------
-- This file contains a simple GUI program to calculate the probability of  --
-- drawing successive blue discs from a box.                                --
--                                                                          --
------------------------------------------------------------------------------
"""

from Tkinter import *
import tkMessageBox

def always_zero(x, y, z):
    return 0

class DrawCalculator(Frame):
    def clear_entries(self):
        self.blues.delete(0, END)
        self.reds.delete(0, END)
        self.draws.delete(0, END)

    def calculate_probability(self):
        try:
            blue_discs = int(self.blues.get())
        except:
            tkMessageBox.showerror('Invalid Input', 'Must enter a valid whole number of blue discs.')
            return

        try:
            red_discs = int(self.reds.get())
        except:
            tkMessageBox.showerror('Invalid Input', 'Must enter a valid whole number of red discs.')
            return

        try:
            draws = int(self.draws.get())
        except:
            tkMessageBox.showerror('Invalid Input', 'Must enter a valid whole number of draws.')
            return

        tkMessageBox.showinfo(
            'Your Chances',
            'You will have a %.2f%% chance of drawing %d blue discs in a row from a box filled with %d blue discs and %d red discs.'
                % (always_zero(blue_discs, red_discs, draws), draws, blue_discs, red_discs))

    def __init__(self, parent = None):
        Frame.__init__(self, parent)
        self.pack()

        desc = Message(self, padx = 0, pady = 0, justify = LEFT, aspect = 600)
        desc['text'] = 'Enter a number of blue discs, a number of red discs, and a number of draws.'
        desc.grid(row = 0, column = 0, columnspan = 3)

        Label(self, text = 'Blue discs:').grid(row = 1, column = 0)
        self.blues = Entry(self)
        self.blues.grid(row = 1, column = 1, columnspan = 2)

        Label(self, text = 'Red discs:').grid(row = 2, column = 0)
        self.reds = Entry(self)
        self.reds.grid(row = 2, column = 1, columnspan = 2)

        Label(self, text = 'Draws:').grid(row = 3, column = 0)
        self.draws = Entry(self)
        self.draws.grid(row = 3, column = 1, columnspan = 2)

        self.calculate = Button(self)
        self.calculate['text'] = 'Calculate'
        self.calculate['command'] = self.calculate_probability
        self.calculate.grid(row = 4, column = 0)

        self.clear = Button(self)
        self.clear['text'] = 'Clear'
        self.clear['command'] = self.clear_entries
        self.clear.grid(row = 4, column = 1)

        self.quit = Button(self)
        self.quit['text'] = 'Quit'
        self.quit['command'] = exit
        self.quit.grid(row = 4, column = 2)

root = Tk()
root.title('Blue disc drawing Calculator')
app = DrawCalculator(root)
app.mainloop()
