

"""
ButtonWindow_AgwButtonPanel_Mod.py
    
    Demonstration of a typical use of the ButtonPanel.
    
    Uses a modified version of wx.lib.agw.ButtonPanelthat automatically 
    left-justifies the buttonbar when a buttonbar label is used.

Ray Pasco   2012-05-27
pascor(at)verizon(dot)net

"""

import sys

import wx
import AgwButtonPanel as abp

#------------------------------------------------------------------------------
###############################################################################
#------------------------------------------------------------------------------

class AppFrame( wx.Frame ) :
    
    def __init__( self, parent=None, id=-1, title='ButtonWindow_AgwButtonPanel_Mod', 
                                     pos=(400, 0), size=(400, 200) ) :
        
        wx.Frame.__init__( self, parent, id, title, pos, size )
        self.Bind( wx.EVT_CLOSE, self.OnClose )
        
        mainPanel = wx.Panel( self, -1 )
        
        #-----
        
        vSizer = wx.BoxSizer( wx.VERTICAL ) 
        mainPanel.SetSizer( vSizer ) 
        
        alignment     = abp.BP_ALIGN_LEFT
        self.agwStyle = abp.BP_USE_GRADIENT
        
        title = 'AgwButtonPanel'
        self.btnPnl = abp.ButtonPanel( mainPanel, -1, title, 
                                      agwStyle=self.agwStyle, alignment=alignment)
        
        self.btnPnl.SetStyle( self.agwStyle )
        
        bpArt = self.btnPnl.GetBPArt()
        bpArt.SetColour( abp.BP_GRADIENT_COLOUR_TO,   wx.Colour( 235, 245, 245 ) )    # Top of bar
        bpArt.SetColour( abp.BP_GRADIENT_COLOUR_FROM, wx.Colour( 175, 175, 220 ) )    # Bottom
        bpArt.SetColour( abp.BP_SEPARATOR_COLOUR, wx.BLACK )
        bpArt.SetColour( abp.BP_TEXT_COLOUR, (50, 50, 150) )
        bpArt.SetMetric( abp.BP_BORDER_SIZE, 0)  # Change to a 0 pixel border, Default is 1 pixel.
        
        #-----
        
        self.graBtnID = wx.NewId()
        self.grabBtn = abp.ButtonInfo( self.btnPnl, self.graBtnID, GetBitmap_Camera_PNG() )
        self.btnPnl.AddButton( self.grabBtn )
        self.Bind( wx.EVT_BUTTON, self.OnButton, self.grabBtn )
        
        self.doSoundBtnID = wx.NewId()
        self.doSoundBtn = abp.ButtonInfo( self.btnPnl, self.doSoundBtnID, GetBitmap_DoSound_PNG() )
        self.btnPnl.AddButton( self.doSoundBtn )
        self.Bind( wx.EVT_BUTTON, self.OnButton, self.doSoundBtn )
        
        self.saveFileBtnID = wx.NewId()
        self.saveFileBtn = abp.ButtonInfo( self.btnPnl, self.saveFileBtnID, GetBitmap_SaveFile_PNG() )
        self.btnPnl.AddButton( self.saveFileBtn )
        self.Bind( wx.EVT_BUTTON, self.OnButton, self.saveFileBtn )
        
        self.btnPnl.AddSeparator()
        
        self.exitBtnID = wx.NewId()
        self.exitBtn = abp.ButtonInfo( self.btnPnl, self.exitBtnID, GetBitmap_Exit_PNG() )
        self.btnPnl.AddButton( self.exitBtn )
        self.Bind( wx.EVT_BUTTON, self.OnButton, self.exitBtn)
        
        vSizer.Add( self.btnPnl, 0, wx.EXPAND )
        
        
        self.imgWin = wx.TextCtrl( mainPanel, -1, '', style=wx.TE_MULTILINE )
        vSizer.Add( self.imgWin, 1, wx.EXPAND|wx.ALL,2 )
        
        self.btnPnl.DoLayout()      # The control's internal method
        vSizer.Layout()
        
    #end __init__
    
    #----------------------------------
    
    def OnButton( self, event ) :
        
        eventID = event.GetId()
        
        if   eventID == self.graBtnID :
            
            print '----  Grab Button Clicked'
            
        elif eventID == self.doSoundBtnID :
            
            print '----  DoSound Button Clicked'
            
        elif eventID == self.saveFileBtnID :
            
            print '----  SaveFile Button Clicked'
            
        elif eventID == self.exitBtnID :
            
            print '----  Exit Button Clicked'
            self.Close()
            
        else :
            
            print '####  AppFrame::OnButton:   UNKNOWN Event'
            sys.exit(1)
            
        #end if

    #end def
    
    #----------------------------------
    
    def OnClose( self, event ) :
        
        print '----  AppFrame::OnClose()'
        self.Destroy()
        
    #end def
    
#end class

#------------------------------------------------------------------------------

# This file was generated by Image2PyFile.py  by Ray Pasco

from wx.lib.embeddedimage import PyEmbeddedImage

#---------------------------------------------------------------------

DoSound_PNG = PyEmbeddedImage( 
    'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAKRJ'
    'REFUWIXtl+EOgCAIhEN7/zdW+lVzDe2AnFvBz3Zyn1RXEqW8ray01D0A3gLgWngZgMfcDdAz'
    '51oYBTMDIAaIxgSgGfuTVg1gueejNSoA1JxSJrQnSVFs2aVkeu8jaaYGETKJbyRhAARAAHhq'
    'ly72AkSbkK2+11M1AU3GT/sfQCCQb4AZAIVAteaHEIGANN6T0TluzVTacr+GVuNrfZwNfw9w'
    'AIOuTDsLmcpGAAAAAElFTkSuQmCC'
    )

GetBitmap_DoSound_PNG = DoSound_PNG.GetBitmap

#---------------------------------------------------------------------

Exit_PNG = PyEmbeddedImage( 
    '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'
    'AAAAAElFTkSuQmCC'
    )

GetBitmap_Exit_PNG = Exit_PNG.GetBitmap

#---------------------------------------------------------------------

SaveFile_PNG = PyEmbeddedImage( 
    'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAX9J'
    'REFUWIXtlkuO4zAMRIukFA8w6MUcKdtcIdfKFXKEnKo3+cD6mLLVi4YFA1EmCcY93rhWAkW4'
    'HgoUTGBh0eScx8N+v5/V5Hg8PvSuAvwnEQCY2k3O87MQUbXOszu9qRVgBVgBVoAVYAVY/He8'
    'eAKLA1QXkqlOpxOA74WCmcHMGIYBfd/f9RIRiAjGGBhjsN1u/x2g6zpsNhvsdrs7sK7rAAAi'
    'AmstQghPDd8GaJoG1tq7ekoJzIyUEoDvNa7v+5LAoxXsbYAQQjGZqm3bYigi1Z5ZAC6XC0Sk'
    'CjbVOB/MDCKCqs4DMA5fTSKCGCOMMcg5I8ZY6q8m8hTAOQdj7ttUFd57iAiGYYD3HtZaqOpb'
    'a/1TgJxz9YOqClUFM6Nt2/IEh2EAM1cHt6Yx24cjS0RwzuF6vRaYnHMZwhACiAg5ZzjnoKq4'
    '3W44n88vAYwJNNPi748/EDG4nj/Je59TSjgcDmBmxBghIiX6lFJ5kiPc3+ZmogZAfInyh/Rr'
    'SfOiL48IuLcCZcmhAAAAAElFTkSuQmCC'
    )

GetBitmap_SaveFile_PNG = SaveFile_PNG.GetBitmap

#---------------------------------------------------------------------

Camera_PNG = PyEmbeddedImage( 
    'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAhhJ'
    'REFUWIXNV0GK4zAQLGXyANs/SPyCZZ8RGJz7QIgv+YKfkIshV18yDOw9ZiHPWOYFwT8wesBk'
    'NIelHVluxS0zYbdAEKR2dam7pVaUmj2Bw+f1wwCAUopdl8IYAwCYPc1ZormE5PfpNMn583o9'
    'aiMSAAA/fmZBzt//1CK7WRDrA/DPBYhTIA1pKNR/fwqIwIUrzGc3htEIEJIkEZO2bTuY80Vg'
    'Rs7cISH9DgSdgrZtOyG2IHsuVKgyVvLSNPUaXi4XAOOpkAiw0zEowkNZDj7Y5Hkn8O14vEuu'
    'lBotSDvFcyJ2nRHIYZqmOJTlYN1FVVU9EXbE2OKkH4eyZHdvr485B4CiKDoRSqluA/v9HkmS'
    '9AYgvAnfjkeRc1cEx0MgPrVcLg3tfJPn+PX62vtolWWoqgpFUQxIOEiEEscmz28RoA9fttue'
    '8bmuOxHAeI933w6coE2edyLEzWi324nsbIGSh4yK49jEcewtQG7Hkv5AkfOJGNQAFyqqh1V2'
    'ew1xxwu4HTESca5rXI3x8tJa0FXsOrevXpoL7YrBLyLbOcEV8VABrvN7cw8T8J2YJIAL9ZTw'
    'TxLA5Zuri4cIoCNmi3Cdhz5ixTehLcIYw+52ygu6i4DbhAirLMO5rnGub/8LqNW6g0CX0PN6'
    '7eXtuLTWJoqingNOBBFLILF/2W7RNM3fFGitEUWR11hrDQB3bTj7xWLhtWmaBgDwBacoI7H6'
    '78+zAAAAAElFTkSuQmCC'
    )

GetBitmap_Camera_PNG = Camera_PNG.GetBitmap

#------------------------------------------------------------------------------

if __name__ == '__main__' :

    app = wx.App( redirect=False )
    appFrame = AppFrame()
    appFrame.Show()
    app.MainLoop()

#end if