import wx
try:
    from agw import aui
except ImportError: # if it's not there locally, try the wxPython lib.
    import wx.lib.agw.aui as aui

#from wx.aui import *
import wx.lib.flatnotebook

class BuildPanelOpz(object):
    def buildPanelOpz(self,notebookOpz,panelBottom):
        #definizione pannello indici
        self.panelIndex = wx.Panel(notebookOpz,-1,style=wx.BORDER)

        #definizione pannello trigger
        self.panelTrigger = wx.Panel(notebookOpz,-1,style=wx.BORDER)

        #definizione pannello view
        self.panelView = wx.Panel(notebookOpz,-1,style=wx.BORDER)

        self.panelSqlQuery = wx.Panel(notebookOpz,-1,style=wx.BORDER)
 
        notebookOpz.AddPage(self.panelIndex, 'Page1', '')

        notebookOpz.AddPage(self.panelTrigger, 'Page2', '')

        notebookOpz.AddPage(self.panelView, 'Page3', '')

        notebookOpz.AddPage(self.panelSqlQuery, 'Page4', '')

        sizer = wx.BoxSizer()
        sizer.Add(notebookOpz,1, wx.EXPAND, 5)
        panelBottom.SetSizer(sizer)
        panelBottom.Layout()

    buildPanelOpz = classmethod(buildPanelOpz)

class MyAUIManager(object):
    def buildAUIManager(self,parent,wSize):
        #print 'wsize',wSize #(800,600)
        self.panelTree = wx.Panel(parent, -1, size=wx.DefaultSize,style=wx.BORDER)
        self.panelRight = wx.Panel(parent, -1, size=wx.DefaultSize,style=wx.BORDER)
        self.panelBottom = wx.Panel(parent, -1, size=wx.DefaultSize,style=wx.BORDER)

        self.auimanager = aui.AuiManager()
        self.auimanager.SetManagedWindow(parent)

        self.auimanager.AddPane(self.panelBottom,
                aui.AuiPaneInfo().
                CenterPane().
                Name("Option").
                CloseButton(False).Position(1).
                Caption("PanelBottom").CaptionVisible(True).
                MinimizeButton(True).MaximizeButton(True)                                
                #BestSize(wx.Size(wSize[0]* .7, wSize[1] * 0.30))
                                )
        self.auimanager.AddPane(self.panelRight,
                aui.AuiPaneInfo().
                CenterPane().
                CloseButton(False).
                Caption("PanelUp").CaptionVisible(True).
                MinimizeButton(True).MaximizeButton(True).                                
                BestSize(wx.Size(wSize[0] * .7, wSize[1] * 0.475))
                                )


        self.auimanager.AddPane(self.panelTree,
                #wx.aui.AuiPaneInfo().Left().Layer(1).CloseButton(False).Fixed())
                aui.AuiPaneInfo().
                Left().CloseButton(False).
                Caption("PanelLeft").CaptionVisible(True).
                MinimizeButton(True).MaximizeButton(True).
                BestSize(wx.Size(wSize[0] * .3,wSize[1]* 0.80)))

        if wx.version()[:6] == '2.8.10': #old version wxpython
            self.notebook = wx.lib.flatnotebook.FlatNotebook(self.panelRight,-1,style=wx.NB_FIXEDWIDTH|wx.NB_MULTILINE|wx.lib.flatnotebook.FNB_NODRAG)
        else:                            #new version python
            self.notebook = wx.lib.flatnotebook.FlatNotebook(self.panelRight,-1,style=wx.lib.flatnotebook.FNB_NODRAG)
            style = self.notebook.GetAGWWindowStyleFlag()
            # set new style
            style |= wx.lib.flatnotebook.FNB_VC8|wx.lib.flatnotebook.FNB_X_ON_TAB|wx.lib.flatnotebook.FNB_NO_X_BUTTON

            self.notebook.SetAGWWindowStyleFlag(style)
            

        #notebook.Bind(wx.lib.flatnotebook.EVT_FLATNOTEBOOK_PAGE_CLOSING, self.OnClosingPageNotebook)
        #notebook.Bind(wx.lib.flatnotebook.EVT_FLATNOTEBOOK_PAGE_CLOSED, self.OnClosedPageNotebook)
        sizer = wx.BoxSizer()
        sizer.Add(self.notebook,1, wx.EXPAND, 5)
        self.panelRight.SetSizer(sizer)
        self.panelRight.Layout()
        # -> fine

        # -> creazione NOTEBOOKOPTION
        if wx.version()[:6] == '2.8.10': #old version wxpython
            self.notebookOpz = wx.lib.flatnotebook.FlatNotebook(self.panelBottom,-1,style=wx.NB_FIXEDWIDTH|wx.lib.flatnotebook.FNB_NODRAG|wx.lib.flatnotebook.FNB_NO_X_BUTTON|wx.lib.flatnotebook.FNB_NOWHERE)
        else:                            #new version python
            self.notebookOpz = wx.lib.flatnotebook.FlatNotebook(self.panelBottom,-1,style=wx.lib.flatnotebook.FNB_NODRAG)
            style = self.notebookOpz.GetAGWWindowStyleFlag()
            # set new style
            style |= wx.lib.flatnotebook.FNB_VC8|wx.lib.flatnotebook.FNB_NO_X_BUTTON|wx.lib.flatnotebook.FNB_NOWHERE
            self.notebookOpz.SetAGWWindowStyleFlag(style)
                                                            

        flag = aui.AUI_MGR_ALLOW_ACTIVE_PANE
        self.auimanager.SetAGWFlags(self.auimanager.GetAGWFlags() ^ flag)        
        #self.auimanager.Update()

    buildAUIManager = classmethod(buildAUIManager)

if __name__ == '__main__':
    app = wx.PySimpleApp()  
    frame = wx.Frame(None,-1,size=(800,600))
    #definisci l'auimanager personalizzato
    MyAUIManager.buildAUIManager(frame,(800,600))
    #definisce il pannello delle opzioni all'iterno dell'auimanager personalizzato
    BuildPanelOpz.buildPanelOpz(MyAUIManager.notebookOpz,MyAUIManager.panelBottom)
    MyAUIManager.auimanager.Update()
    frame.Show()
    app.MainLoop()
