# -*- coding: utf-8 -*-

import wx

class MyApp(wx.App):
    def OnInit(self):
        #
        self.Frame = wx.Frame(None)
        self.Frame.Bind(wx.EVT_SIZE, self.OnSize)
        self.Frame.Bind(wx.EVT_MOVE, self.OnMove)
        #
        self.Frame.newObject            = None
        self.Frame.newID                = None
        #
        self.Frame.lastResizeEvent_obj  = None
        self.Frame.lastResizeEvent_id   = None
        self.Frame.lastResizeEvent_size = None
        self.Frame.newSize              = None
        #
        self.Frame.lastMoveEvent_obj = None
        self.Frame.lastMoveEvent_id  = None
        self.Frame.lastMoveEvent_pos = None
        self.Frame.newPos            = None
        #
        self.Frame.Show()
        return True


    def OnSize(self, event):
        self.Frame.newObject = event.GetEventObject()
        self.Frame.newID     = event.GetId()
        self.Frame.newSize   = event.GetSize()
        if self.Frame.newSize != self.Frame.lastResizeEvent_size:
            if self.Frame.newObject == self.Frame.lastResizeEvent_obj:
                if self.Frame.newID == self.Frame.lastResizeEvent_id:
                    print( "\nSize event => new size = %s" % (str(self.Frame.newSize)) )
        # remember
        self.Frame.lastResizeEvent_obj  = event.GetEventObject()
        self.Frame.lastResizeEvent_id   = event.GetId()
        self.Frame.lastResizeEvent_size = event.GetSize()
        # allows event to be propogated up to parent and eventually app object
        event.Skip()


    def OnMove(self, event):
        self.Frame.newObject = event.GetEventObject()
        self.Frame.newID     = event.GetId()
        self.Frame.newPos    = event.Position
        if self.Frame.newPos != self.Frame.lastMoveEvent_pos and self.Frame.lastMoveEvent_pos is not None:
            if self.Frame.newObject == self.Frame.lastMoveEvent_obj:
                if self.Frame.newID == self.Frame.lastMoveEvent_id:
                    print( "\nMove event => new pos = %s" % (str(self.Frame.newPos)) )
        # remember
        self.Frame.lastMoveEvent_obj = event.GetEventObject()
        self.Frame.lastMoveEvent_id  = event.GetId()
        self.Frame.lastMoveEvent_pos = event.Position
        # allows event to be propogated up to parent and eventually app object
        event.Skip()


def main():
    app = MyApp(0)
    app.MainLoop()

if __name__ == '__main__':
    main()

