#!/usr/bin/python
# -*- coding: utf-8 -*-

import wx

class Dialog (wx.Dialog):
  def __init__ (self):
    wx.Dialog.__init__ (self, None, -1, 'Test of entry widget')

    panel = wx.Panel (self, -1)
    psizer = wx.BoxSizer (wx.VERTICAL)
    psizer.Add (panel, 1, wx.EXPAND | wx.ALL, 8)

    sizer = wx.BoxSizer (wx.VERTICAL)

    self.tx = wx.TextCtrl (panel, -1, size = (200, -1))
    self.tx.Bind (wx.EVT_TEXT, self.__on_text)
    self.tx.Bind (wx.EVT_CHAR, self.__on_char)

    sizer.Add (self.tx, 0, wx.EXPAND | wx.ALL, 8)

    self.mt = wx.TextCtrl (panel, -1, size = (200, -1), style = wx.TE_MULTILINE)
    self.mt.Bind (wx.EVT_TEXT, self.__on_text)
    self.mt.Bind (wx.EVT_CHAR, self.__on_char)

    sizer.Add (self.mt, 0, wx.EXPAND | wx.ALL, 8)

    panel.SetSizer (sizer)
    sizer.Fit (panel)

    self.SetSizer (psizer)
    self.Fit ()

    self.CenterOnScreen ()

  # ---------------------------------------------------------------------------
  # Handler
  # ---------------------------------------------------------------------------

  def __on_text (self, event):

    widget = event.GetEventObject ()
    print "onTEXT:", repr (event.GetString ()), "at", \
        widget.GetInsertionPoint ()

    event.Skip ()

  # ---------------------------------------------------------------------------

  def __on_char (self, event):

    print "onCHAR:", event.GetUnicodeKey ()
    event.Skip ()


if __name__ == '__main__':
  a = wx.PySimpleApp ()
  d = Dialog ()
  d.ShowModal ()
  d.Destroy ()

  a.MainLoop ()
