'''
Created on Sep 17, 2013

@author: B_OZEL
'''
import wx
import wx.grid as gridlib
import wx.lib.scrolledpanel as scrolled



class NoteBook(wx.Notebook):
    
    def __init__(self, parent, pages):
        
        wx.Notebook.__init__(self, parent, id=wx.ID_ANY, style= wx.BK_DEFAULT)
        x = 0

        for page in pages:
            page_name = page[1:]
            
            notebook_page = wx.Panel(self)
            self.AddPage(notebook_page, page_name)
            main_panel = wx.Panel(notebook_page)
            
            data_panel = wx.Panel(main_panel)
            headers_panel = wx.Panel(main_panel)
            
            
            roster_panel = GridObject(data_panel, 20, 50)
            roster_panel.grid.ShowScrollbars(wx.SHOW_SB_DEFAULT,wx.SHOW_SB_NEVER)
            

            vacation_panel =  GridObject(data_panel, 20, 3)
            vacation_panel.grid.SetMinSize((110,50))            
            
            data_panel_sizer = wx.BoxSizer(wx.HORIZONTAL)

            data_panel_sizer.Add(vacation_panel, 1, wx.EXPAND | wx.ALIGN_RIGHT)
            data_panel_sizer.Add(roster_panel, 1, wx.EXPAND)            
            data_panel.SetSizer(data_panel_sizer)
            
            
            calendar_panel =  GridObject(data_panel, 1, 50)
            calendar_panel.grid.ShowScrollbars(wx.SHOW_SB_NEVER,wx.SHOW_SB_NEVER)     
            
            vacation_header_panel =  GridObject(data_panel, 1, 3)
            vacation_header_panel.grid.ShowScrollbars(wx.SHOW_SB_NEVER,wx.SHOW_SB_NEVER)
            
            headers_panel_sizer = wx.BoxSizer(wx.HORIZONTAL)

            headers_panel_sizer.Add(vacation_header_panel, 1, wx.EXPAND)
            headers_panel_sizer.Add(calendar_panel, 0, wx.EXPAND)            
            headers_panel.SetSizer(headers_panel_sizer)
            
            main_panel_sizer = wx.BoxSizer(wx.VERTICAL)
            main_panel_sizer.Add(headers_panel,1, wx.EXPAND)
            main_panel_sizer.Add(data_panel, 1, wx.EXPAND)
            main_panel.SetSizer(main_panel_sizer)            
            
            chart_panel = wx.Panel(notebook_page)
            #print "created chart panel for fleet ", fleet_name

            
            notebook_panel_sizer = wx.BoxSizer(wx.VERTICAL)
            notebook_panel_sizer.Add(main_panel, 1, wx.EXPAND)
            notebook_panel_sizer.Add(chart_panel, 1, wx.EXPAND)    
            notebook_page.SetSizer(notebook_panel_sizer)
            #notebook_panel_sizer.SetSizeHints(self)
           
   
            x += 1
            

                    


        
class EntryPage(wx.Panel):
    
    def __init__(self, parent):
        
        wx.Panel.__init__(self, parent)
        testButton = wx.Button(self, -1, label = "test button", pos = (10,10)) 
        
class GridObject(wx.Panel):
    
    def __init__(self, parent, row, cols): 
        
        wx.Panel.__init__(self, parent)
        self.grid = gridlib.Grid(parent, -1)   
        self.grid.CreateGrid(row, cols) 
        
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.grid, 1, wx.EXPAND)
        self.SetSizer(sizer)            
        

class MainWindow(wx.Frame):
    
    def __init__(self, title):
        """
        Constructor
        """
        wx.Frame.__init__(self, None, title=title, pos=(150,150), size=(1200,900))
        self.Bind(wx.EVT_CLOSE, self.OnClose)
        menubar = wx.MenuBar() 
        file_menu = wx.Menu()   
        exitMenuItem = file_menu.Append(wx.NewId(), "Exit", "Exit program")
        self.Bind(wx.EVT_MENU, self.onExit, exitMenuItem)     
        menubar.Append(file_menu, "&File")   
        
        panel = wx.Panel(self, name="Main panel")  
        
        notebook_pages = ["XX1", "XX2", "XX3", "XX4", "XX5"]
        self.notebook = NoteBook(panel, notebook_pages)
        
        summary_page = EntryPage(self.notebook)
        self.notebook.AddPage(summary_page, "Summary")        
        
        nb_sizer = wx.BoxSizer()
        nb_sizer.Add(self.notebook, 1, wx.EXPAND)
        panel.SetSizer(nb_sizer)
        
    def OnClose(self, event):
        self.Destroy() 
        print "destroyed xxx"
        sys.exit(1)   
        

    def onExit(self, event):
        """"""
        self.Close()
        print "destroyed window"
        
        sys.exit(1)                
 
        
        
        
if __name__ == "__main__":
    app = wx.App(False)
    frame = MainWindow("App")
    frame.Show()
    app.MainLoop()
    print "destroyed 2, now sys.exit"        