Languages

[Genie] Confirm before exit application

Your rating: None Average: 3 (2 votes)
[indent=4]
 
uses Gtk
 
class MyWin : Gtk.Window
    mdlg : Gtk.MessageDialog
    const exit_str : string = "Exit ?"
 
    // from a menu item
    def exit_clicked ()
        var e = new Gdk.Event(Gdk.EventType.DELETE)
        this.exit_event(e)
 
    // from Alt-F4 or window toolbar or ...
    def exit_event (E : Gdk.Event) : bool
        var mdlg = new Gtk.MessageDialog (this, Gtk.DialogFlags.DESTROY_WITH_PARENT | Gtk.DialogFlags.MODAL, Gtk.MessageType.QUESTION, Gtk.ButtonsType.YES_NO, this.exit_str)
        if mdlg.run() == Gtk.ResponseType.YES
            Gtk.main_quit()
            return false
        mdlg.destroy()
        return true
    init
        title = "Exit Query Test"
        window_position = WindowPosition.CENTER
        default_height = 100
        default_width = 100
        // 
        this.delete_event.connect(this.exit_event)
        /* Menus */
        var bar = new MenuBar()
        var menu1 = new Menu()
        var image_menu_item = new ImageMenuItem.from_stock(STOCK_QUIT, null)
        // query before exit from Menu selection
        image_menu_item.activate.connect(this.exit_clicked)
        menu1.append(image_menu_item)
        var launcher = new MenuItem.with_mnemonic("_File")
        launcher.set_submenu(menu1)
        bar.append(launcher)
        /* VBox */
        var vbox = new VBox(false, 0)
        vbox.pack_start (bar, false, true, 0)
        add (vbox)
 
init
    Gtk.init (ref args)
    var w = new MyWin ()
    w.show_all ()
    Gtk.main ()