# Path: venster/lib/form.py
# EXIT_NONE = 0
# EXIT_ONDESTROY = 1 #exit app on destroy of form
# EXIT_ONLASTDESTROY = 2 #exit app on destroy of last form
# ID_NEW = 5001
# ID_OPEN = 5002
# ID_EXIT = 5003
# ID_SAVE = 5004
# ID_SAVEAS = 5005
# ID_CLOSE = 5006
# ID_UNDO = 5101
# ID_REDO = 5102
# ID_COPY = 5103
# ID_PASTE = 5104
# ID_CUT = 5105
# ID_SELECTALL = 5106
# ID_CLEAR = 5107
# ID_HELP_CONTENTS = 5201
# ID_ABOUT = 5202
# CTRL_VIEW = "form_CtrlView"
# CTRL_STATUSBAR = "form_CtrlStatusBar"
# CTRL_COOLBAR = "form_CtrlCoolbar"
# class Controls(dict):
# class Form(Window):
#     class CmdUIUpdateEvent(object):
# class CMD_UI_UPDATE(object):
#     def Add(self, *args):
#     def dispose(self):
#     def __getattr__(self, key):
#     def __init__(self, *args, **kwargs):
#     def dispose(self):
#     def CreateAccels(self):
#     def PreTranslateMessage(self, msg):
#     def OnMenuSelect(self, event):
#         def __init__(self):
#         def Enable(self, fEnable):
#     def OnInitMenuPopup(self, event):
#     def DoLayout(self, cx, cy):
#     def OnDestroy(self, event):
#     def OnSize(self, event):
#     def OnCreate(self, event):
#     def OnExitCmd(self, event):
#     def OnCloseCmd(self, event):
#     def OnClose(self, event):
#     def __init__(self, id, handler):
#     def __install__(self, msgMap):
#     def __call__(self, receiver, event):


from venster.windows import *
from venster.wtl import *
from venster.lib import form
## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
## EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
## MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
## NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
## LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
## OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
## WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE



class MyForm(form.Form):
    """sample showing how a form can be prevented from closing by
    overriding the OnClose method of Form"""
    
    _window_icon_ = _window_icon_sm_ = Icon("blinky.ico")
    _window_title_ = "Test close" 

    _form_menu_ = [(MF_POPUP, "&File",
                    [(MF_STRING, "&New\bCtrl+N", form.ID_NEW),
                     (MF_SEPARATOR,),
                     (MF_STRING, "&Exit", form.ID_EXIT)])]

    _form_accels_ = [(FCONTROL|FVIRTKEY, ord("N"), form.ID_NEW)]

    _form_exit_ = form.EXIT_ONLASTDESTROY

    def OnNew(self, event):
        newForm = MyForm()
        newForm.ShowWindow()


# Path: venster/lib/form.py
# EXIT_NONE = 0
# EXIT_ONDESTROY = 1 #exit app on destroy of form
# EXIT_ONLASTDESTROY = 2 #exit app on destroy of last form
# ID_NEW = 5001
# ID_OPEN = 5002
# ID_EXIT = 5003
# ID_SAVE = 5004
# ID_SAVEAS = 5005
# ID_CLOSE = 5006
# ID_UNDO = 5101
# ID_REDO = 5102
# ID_COPY = 5103
# ID_PASTE = 5104
# ID_CUT = 5105
# ID_SELECTALL = 5106
# ID_CLEAR = 5107
# ID_HELP_CONTENTS = 5201
# ID_ABOUT = 5202
# CTRL_VIEW = "form_CtrlView"
# CTRL_STATUSBAR = "form_CtrlStatusBar"
# CTRL_COOLBAR = "form_CtrlCoolbar"
# class Controls(dict):
# class Form(Window):
#     class CmdUIUpdateEvent(object):
# class CMD_UI_UPDATE(object):
#     def Add(self, *args):
#     def dispose(self):
#     def __getattr__(self, key):
#     def __init__(self, *args, **kwargs):
#     def dispose(self):
#     def CreateAccels(self):
#     def PreTranslateMessage(self, msg):
#     def OnMenuSelect(self, event):
#         def __init__(self):
#         def Enable(self, fEnable):
#     def OnInitMenuPopup(self, event):
#     def DoLayout(self, cx, cy):
#     def OnDestroy(self, event):
#     def OnSize(self, event):
#     def OnCreate(self, event):
#     def OnExitCmd(self, event):
#     def OnCloseCmd(self, event):
#     def OnClose(self, event):
#     def __init__(self, id, handler):
#     def __install__(self, msgMap):
#     def __call__(self, receiver, event):


# Path: test/test_close.py
from venster.windows import *
from venster.wtl import *
from venster.lib import form

## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
## EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
## MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
## NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
## LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
## OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
## WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE



class MyForm(form.Form):
    """sample showing how a form can be prevented from closing by
    overriding the OnClose method of Form"""
    
    _window_icon_ = _window_icon_sm_ = Icon("blinky.ico")
    _window_title_ = "Test close" 

    _form_menu_ = [(MF_POPUP, "&File",
                    [(MF_STRING, "&New\bCtrl+N", form.ID_NEW),
                     (MF_SEPARATOR,),
                     (MF_STRING, "&Exit", form.ID_EXIT)])]

    _form_accels_ = [(FCONTROL|FVIRTKEY, ord("N"), form.ID_NEW)]

    _form_exit_ = form.EXIT_ONLASTDESTROY

    def OnNew(self, event):
        newForm = MyForm()
        newForm.ShowWindow()


    cmd_handler(form.ID_NEW)(OnNew)