from wxPython.wx import *
from wxPython.grid import *

ID_TREECTRL = 10000
ID_NOTEBOOK = 10001
ID_GRID = 10002

NotebookHeight = 200
NotebookWidth = 500
TreeWidth = 300
TreeHeight = NotebookHeight

class FactExplorerControl(wxPanel):
    def __init__(self, parent, id,  kbname, view, componentList, factList):
        wxPanel.__init__(self, parent, id)
        
        item00 = wxBoxSizer( wxVERTICAL )
        
        item1 = wxBoxSizer( wxHORIZONTAL )
        
        item3 = wxStaticBox( self, -1, "History" )
        item3.SetFont( wxFont( 9, wxSWISS, wxNORMAL, wxNORMAL ) )
        item2 = wxStaticBoxSizer( item3, wxVERTICAL )
        
        item4 = wxTreeCtrl( self, ID_TREECTRL, wxDefaultPosition, wxSize(TreeHeight, TreeWidth), wxTR_HAS_BUTTONS|wxTR_LINES_AT_ROOT|wxSUNKEN_BORDER )
        item2.AddWindow( item4, 1, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 )
    
        item1.AddSizer( item2, 10, wxGROW|wxALIGN_CENTER_HORIZONTAL|wxALL, 5 )
    
        item1.AddSpacer( 20, 20, 1, wxGROW|wxALIGN_CENTER_HORIZONTAL|wxALL, 5 )
    
        item6 = wxStaticBox( self, -1, "Distiller" )
        item6.SetFont( wxFont( 9, wxSWISS, wxNORMAL, wxNORMAL ) )
        item5 = wxStaticBoxSizer( item6, wxVERTICAL )
        
        item8 = wxNotebook( self, ID_NOTEBOOK, size = wxSize(NotebookHeight, NotebookWidth))
        item7 = wxNotebookSizer( item8 )
    
        item9 = wxPanel( item8, -1 )
        item8.AddPage( item9, "Filter" )
    
        item10 = wxPanel( item8, -1 )
        item8.AddPage( item10, "Group" )
    
        item5.AddSizer( item7, 1, wxGROW|wxALL, 5 )
    
        item1.AddSizer( item5, 15, wxGROW|wxALIGN_CENTER_HORIZONTAL|wxALL, 5 )
    
        item00.AddSizer( item1, 1, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 )
        self.SetSizer(item00)
        #self.SetAutoLayout(True)
        item00.Fit(self)
        
        
class FactExplorerDisplay(wxPanel):
    def __init__(self, parent, id,  kbname, view, componentList, factList):
        wxPanel.__init__(self, parent, id)
        
        item01 = wxBoxSizer(wxVERTICAL)
        item12 = wxStaticBox( self, -1, "Query Result" )
        item11 = wxStaticBoxSizer( item12, wxHORIZONTAL )
        
        item13 = wxGrid( self, ID_GRID, style=wxWANTS_CHARS, size = wxSize(900, 400) )
        item13.CreateGrid( 50, 10)
        item11.AddWindow( item13, 1, wxGROW|wxALL, 5 )
    
        item01.AddSizer( item11, 1, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 )

        self.SetSizer(item01)
        self.SetAutoLayout(True)
        item01.Fit(self)
        
    
    
class FactExplorer(wxFrame):
    def __init__(self, parent, id,  kbname, view, componentList, factList):
        global BKE_ICON
        wxFrame.__init__(self, parent, id, 'Fact Explorer for KB:  ' + kbname,
                         size = wxSize(800, 700),
                         style = wxDEFAULT_FRAME_STYLE|wxCLIP_CHILDREN
                                |wxNO_FULL_REPAINT_ON_RESIZE
                        )

        splitter = wxSplitterWindow(self, -1)
        topWindow = wxWindow(splitter, -1)
        bottomWindow = wxWindow(splitter, -1)
    
        topWindow = FactExplorerControl(splitter, -1, kbname, view, componentList, factList)        
        
        bottomWindow = FactExplorerDisplay(splitter, -1, kbname, view, componentList, factList)        
        
        splitter.SetMinimumPaneSize(10)
        splitter.SplitHorizontally(topWindow, bottomWindow, NotebookHeight + 150)
        

if __name__ == '__main__':
   from sys import argv

   class App(wxApp):
       def OnInit(self):
           wxInitAllImageHandlers()
           self.frame = FactExplorer(None, -1, "Test KB name", None, None, None)
           self.frame.Show()
           return True
       def OnExit(self):
           pass

   
   app = App(0)
   app.MainLoop()
