#!/usr/bin/env python
__version__ = "$Revision: $"

from wxPython.wx import *

import os

_WINSIZE = (400, 275)

# ----------------------------------------------------------------------------
# ----------------------------------------------------------------------------
class wxMyFrame(wxFrame):

    def __init__(self, parent, id, title):
        wxFrame.__init__(self, parent, -1, title, pos=(100,100),
                             size=_WINSIZE,
                             style=wxDEFAULT_FRAME_STYLE)#|wxSTAY_ON_TOP)
        # Store the current working directory
        self.cwd = os.getcwd()

        # A panel to hold everything
        self.Panel = wxPanel(self, -1)
        self.Panel.SetAutoLayout(True)

        # Set up some sizers to dynamically size the window contents
        self.hsizer = wxBoxSizer(wxHORIZONTAL)
        self.vsizer = wxBoxSizer(wxVERTICAL)

        # The parameter slider
        self.slider = wxSlider(self.Panel, -1, 0, 0, 100,
                               style=wxSL_HORIZONTAL|wxSL_AUTOTICKS)
        self.slider.SetTickFreq(1,1)
        self.slider.SetLineSize(1)
        self.slider.SetPageSize(2)
        EVT_SCROLL(self.slider, self.OnSliderScroll)

        # The parameter textbox
        self.param = wxTextCtrl(self.Panel, -1, value="%8.6f" % 0,
                                     style=wxTE_RIGHT|wxTE_PROCESS_ENTER)
        EVT_TEXT(self, self.param.GetId(), self.OnValueChange)

        self.vsizer.Add(15,15)
        self.vsizer.Add(wxStaticText(self.Panel, -1, "Parameter"),
                                                        0, wxLEFT, border=10)
        self.vsizer.Add(5,5)
        self.vsizer.Add(self.param, 0, wxLEFT, border=10)
        self.vsizer.Add(5,5)
        self.vsizer.Add(self.slider, 0, wxEXPAND|wxLEFT|wxRIGHT, border=10)
        self.vsizer.Add(2,2)

        # Now define the sizer for the parent window holding us...
        self.hsizer.Add(self.vsizer, 1, wxEXPAND)
        self.Panel.SetSizer(self.hsizer)

        # Even though AutoLayout is on, we must force this to happen once
        self.Panel.Layout()
# ----------------------------------------------------------------------------
    def OnValueChange(self, event):
        print "ValueChange", event.GetEventType(), event.GetEventObject()
#        event.Skip()
# ----------------------------------------------------------------------------
    def OnSliderScroll(self, event):
        if event.GetEventType() == wxEVT_SCROLL_THUMBRELEASE or \
                        event.GetEventType() == wxEVT_SCROLL_ENDSCROLL:
            return
        print "Scroll", event.GetEventType(), event.GetEventObject()
        self.param.SetValue("%8.6f" % (float(self.slider.GetValue())/100.0,))
#        event.Skip()
# ----------------------------------------------------------------------------
# ----------------------------------------------------------------------------
class myApp(wxApp):
    """A minimal, wxApp."""
    def __init__(self, num):
        wxApp.__init__(self, num)

    def OnInit(self):
        wxInitAllImageHandlers()

        self.Mainframe = wxMyFrame(None, -1, "Testapp")
        self.Mainframe.Show(true)
        self.SetTopWindow(self.Mainframe)

        return True
# ----------------------------------------------------------------------------
# ----------------------------------------------------------------------------
def main():

    # Create an Application window
    sneApp = myApp(0)
    sneApp.MainLoop()
    return 0
# ----------------------------------------------------------------------------

if __name__ == '__main__':

    sys.exit(main())

# ----------------------------------------------------------------------------
# ----------------------------------------------------------------------------
# vi:set shiftwidth=4 tabstop=4:
# vim:set expandtab list lcs=tab\:>>:

