# Path: Interface/GridElements.py
# class GridElement():
#     """
#     This class contains data for grid elements
#     """
#     __metaclass__ = abc.ABCMeta
# 
#     @abc.abstractmethod
#     def __init__(self, x, y, x_length, y_length, colour="black"):
#         self.x, self.y, self.colour = x, y, colour
#         self.x_length, self.y_length = x_length, y_length
#         self.canvas = None
# 
#     @abc.abstractmethod
#     def add_elements(self):
#         pass
# 
# class FormGridElement(GridElement):
#     """
#     This class contains data for grid elements
#     """
#     def __init__(self, x, y, x_length, y_length, colour="black"):
#         GridElement.__init__(self, x, y, x_length, y_length, colour)
# 
#     def add_elements(self):
#         assert isinstance(self.canvas, Canvas)
#         button = Button(self.canvas, text="Quit")
#         label = Label(self.canvas, text="This is a label")
#         window_one = self.canvas.create_window(10, 10, anchor=NW, window=label)
#         window_two = self.canvas.create_window(100, 10, anchor=NW, window=button)


from Interface.GridElements import GridElement, FormGridElement
from Tkinter import *
from ttk import *
import abc
        """
        one_width = (self.width * padding) / columns
        one_height = (self.height * padding) / rows
        for element in grid_elements:
            assert isinstance(element, GridElement)
            canvas_width = one_width * element.x_length
            canvas_height = one_height * element.y_length
            element.canvas = Canvas(self.content_grid, width=canvas_width, height=canvas_height)
            element.canvas.configure(bg=element.colour)
            element.canvas.grid(column=element.x, row=element.y, columns=element.x_length, rows=element.y_length)

    def add_tabs(self, tabs=3):
        """
        This is a method for adding tabs to the window
        :param tabs: the number of tabs to add to the window
        """
        note_book = Notebook(self.parent)
        for i in range(tabs):
            tab = Frame()
            note_book.add(tab, text="Hello World!")
        note_book.pack()


def main():
    root = Tk()
    top_level = root.winfo_toplevel()
    top_level.wm_state('zoomed')
    comp_finance_window = Window(root, "Computational Finance Package")

    grid_elements = [FormGridElement(0, 0, 2, 1, 'grey'),

# Path: Interface/GridElements.py
# class GridElement():
#     """
#     This class contains data for grid elements
#     """
#     __metaclass__ = abc.ABCMeta
# 
#     @abc.abstractmethod
#     def __init__(self, x, y, x_length, y_length, colour="black"):
#         self.x, self.y, self.colour = x, y, colour
#         self.x_length, self.y_length = x_length, y_length
#         self.canvas = None
# 
#     @abc.abstractmethod
#     def add_elements(self):
#         pass
# 
# class FormGridElement(GridElement):
#     """
#     This class contains data for grid elements
#     """
#     def __init__(self, x, y, x_length, y_length, colour="black"):
#         GridElement.__init__(self, x, y, x_length, y_length, colour)
# 
#     def add_elements(self):
#         assert isinstance(self.canvas, Canvas)
#         button = Button(self.canvas, text="Quit")
#         label = Label(self.canvas, text="This is a label")
#         window_one = self.canvas.create_window(10, 10, anchor=NW, window=label)
#         window_two = self.canvas.create_window(100, 10, anchor=NW, window=button)


# Path: Interface/Window.py
from Interface.GridElements import GridElement, FormGridElement
from Tkinter import *
from ttk import *
import abc

        """
        one_width = (self.width * padding) / columns
        one_height = (self.height * padding) / rows
        for element in grid_elements:
            assert isinstance(element, GridElement)
            canvas_width = one_width * element.x_length
            canvas_height = one_height * element.y_length
            element.canvas = Canvas(self.content_grid, width=canvas_width, height=canvas_height)
            element.canvas.configure(bg=element.colour)
            element.canvas.grid(column=element.x, row=element.y, columns=element.x_length, rows=element.y_length)

    def add_tabs(self, tabs=3):
        """
        This is a method for adding tabs to the window
        :param tabs: the number of tabs to add to the window
        """
        note_book = Notebook(self.parent)
        for i in range(tabs):
            tab = Frame()
            note_book.add(tab, text="Hello World!")
        note_book.pack()


def main():
    root = Tk()
    top_level = root.winfo_toplevel()
    top_level.wm_state('zoomed')
    comp_finance_window = Window(root, "Computational Finance Package")

    grid_elements = [FormGridElement(0, 0, 2, 1, 'grey'),

                     FormGridElement(0, 1, 2, 9, 'grey'),