WideStudio Logo
WideStudio
Programming Guide
WideStudio Index
Table of contents


How to indicate a dialog on the EXIT event procedure

It is necessary to save data to indicate a dialog, when you finish the application by closing the window. In such a case, it is convenient to use the WSEV_EXIT event procedure of the WSCwindow/WSCmainWindow class.

The WSCwindow/WSCmainWindow class generates the WSEV_EXIT trigger when the window is disappeared before finishing the application.

At first set True to the property "exit" of a WSCwindow/WSCmainWindow instance which is used as main window in the application, and put an event procedure to it with WSEV_EXIT trigger.

We will try to make an event procedure to have the following facility.


  • Indicates the dialog whether exit or continue.

  • If [OK] is selected,execute some procedure and exit the application.

  • If [NO] is selected,exit the application with no process.

  • If [CANCEL] is selected, do nothing and do not exit the application.
  • 
    #----------------------------------------------------------
    #Function for the event procedure
    #----------------------------------------------------------
    #The timer procedure which redisplay the window.
    timer = nil
    target = nil
    def delayproc(object)
      if target != nil
        target.setVisible(Mwt::True) 
      end
    end
    
    # EXIT event procedure
    # Indicates a dialog.
    def exit_ep(object)
      if object.getVisible() != Mwt::False
        return 
      end
      msg = Mwt::WSGIappMessageDialog()  #A
      msg.setProperty("width",500) 
      msg.setProperty("no",Mwt::True) 
      msg.setProperty("defaultPosition",Mwt::True) 
      msg.setProperty("labelString",
        "Exit and save data?\n If you do not want to save and exit,push NO...") 
    
      # Indicates the dialog.
      ret = msg.popup()  #B
    
      if timer == nil
        parent = object.getParentWindow() 
        timer = Mwt::WSCbase::getNewInstance("WSCvtimer",parent,"objname") 
        timer.init 
        timer.setProperty("interval",250) 
        timer.setProperty("cont",Mwt::False) 
        timer.addProcedure("delay-popup","delayproc",Mwt::WSEV_ACTIVATE) 
      end
    
      if ret == Mwt::WS_DIALOG_OK         # When OK is selected.. C
        # saving some data ...
        exit 0 
      elsif ret == Mwt::WS_DIALOG_NO      # When NO is selected.. D
        exit 0 
      elsif ret == Mwt::WS_DIALOG_CANCEL  # When CANCEL is selected.. E
        target = object 
        timer.setProperty("running",Mwt::True)   # Start the timer to show target.
      end
    end
    

    Get the instance of the message dialog (A),indicate it (B). Check the result of the dialog (C)(D)(E). It is necessary to execute delayed procedure to redisplay the window. Exit event is required before the window is redisplayed.



    [The exit dialog]


    Document Release 3.80 for WideStudio ver 3.80, Jan 2005


    WideStudio documents index | Table of contents

    Copyright(C) WideStudio Development Team, 1999-2005 Last modified: Jan 05, 2005