#Boa:Frame:Frame1

import wx

import myDialog

def create(parent):
    return Frame1(parent)

[wxID_FRAME1, wxID_FRAME1MODELDIAG, wxID_FRAME1NONMODEL, wxID_FRAME1PANEL1, 
] = [wx.NewId() for _init_ctrls in range(4)]

class Frame1(wx.Frame):
    def _init_coll_flexGridSizer1_Items(self, parent):
        # generated method, don't edit

        parent.AddWindow(self.modelDiag, 0, border=5,
              flag=wx.ALIGN_CENTER_HORIZONTAL | wx.ALL)
        parent.AddWindow(self.nonModel, 0, border=5,
              flag=wx.ALIGN_CENTER_HORIZONTAL | wx.ALL)

    def _init_sizers(self):
        # generated method, don't edit
        self.flexGridSizer1 = wx.BoxSizer()

        self._init_coll_flexGridSizer1_Items(self.flexGridSizer1)

        self.panel1.SetSizer(self.flexGridSizer1)

    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Frame.__init__(self, id=wxID_FRAME1, name='', parent=prnt,
              pos=wx.Point(661, 265), size=wx.Size(155, 112),
              style=wx.DEFAULT_FRAME_STYLE, title='Frame1')
        self.SetClientSize(wx.Size(139, 76))

        self.panel1 = wx.Panel(id=wxID_FRAME1PANEL1, name='panel1', parent=self,
              pos=wx.Point(0, 0), size=wx.Size(139, 76),
              style=wx.TAB_TRAVERSAL)

        self.modelDiag = wx.Button(id=wxID_FRAME1MODELDIAG,
              label=u'Model dialog', name=u'modelDiag', parent=self.panel1,
              pos=wx.Point(32, 5), size=wx.Size(75, 23), style=0)
        self.modelDiag.Bind(wx.EVT_BUTTON, self.OnModelDiagButton,
              id=wxID_FRAME1MODELDIAG)

        self.nonModel = wx.Button(id=wxID_FRAME1NONMODEL, label=u'Non Model',
              name=u'nonModel', parent=self.panel1, pos=wx.Point(32, 38),
              size=wx.Size(75, 23), style=0)
        self.nonModel.Bind(wx.EVT_BUTTON, self.OnNonModelButton,
              id=wxID_FRAME1NONMODEL)

        self._init_sizers()

    def __init__(self, parent):
        self._init_ctrls(parent)

    def OnModelDiagButton(self, event):
        self.timer = wx.Timer(self)
        self.Bind(wx.EVT_TIMER, self.OnTimer)
        self.timer.Start(3000, True)    # one shot

        self.dlg = myDialog.Dialog1(self)
        try:
            result = self.dlg.ShowModal()
            print result
        finally:
            self.dlg.Destroy()
        event.Skip()

    def OnNonModelButton(self, event):
        event.Skip()

    def OnTimer(self, evt):
        # Does not work...
        print "Try to destroy the dialog..."
        if self.dlg:
            if self.dlg.IsModal():
                print "Dialog is modal"
    ##            self.dlg.EndModal(True)
                self.dlg.Close()
            else:
                print "Dialog is not modal"
                self.dlg.Close(force=True)


if __name__ == '__main__':
    app = wx.PySimpleApp()
    frame = create(None)
    frame.Show()

    app.MainLoop()
