GUI.ResetQuit

OpenTuring

GUI.ResetQuitPart of GUI module

Syntax   GUI.ResetQuit

Description   The GUI.ResetQuit procedure resets the "quitting" flag that is set by the GUI.Quit program. The GUI.ResetQuit can be used whenever you want to have a program that exits from the main processing loop, does some work, and then reenters the processing loop.

Without GUI.ResetQuit, the program will exit the second loop immediately because GUI.ProcessEvent will return true.

Example   This program allows the user to select the color that stars are to be drawn in. When the user presses the button, the program exits the first event loop and draws the stars. Before creating another button and entering a second event loop, it calls GUI.ResetQuit.

        import GUI
        var radio : array 1 .. 4 of int
        var button : int
        var starColor : int := red

        % Action procedures for the radio buttons
        procedure Red
            starColor := brightred
        end Red

        procedure Green
            starColor := brightgreen
        end Green

        procedure Blue
            starColor := brightblue
        end Blue

        procedure Cyan
            starColor := brightcyan
        end Cyan

        % Create the radio buttons
        radio (1) := GUI.CreateRadioButton (15, maxy - 35, "Red", 0, Red)
        radio (2) := GUI.CreateRadioButton (-1, -1, "Green", radio (1), Red)
        radio (3) := GUI.CreateRadioButton (-1, -1, "Blue", radio (2), Blue)
        radio (4) := GUI.CreateRadioButton (-1, -1, "Cyan", radio (3), Cyan)

        % Create the push button
        button := GUI.CreateButton (100, maxy - 70, 0, "Draw Stars", GUI.Quit)

        % Process events until the "Draw Stars" button is pressed
        loop
            exit when GUI.ProcessEvent
        end loop

        % Dispose of all the radio buttons and the push button
        for i : 1 .. 4
            GUI.Dispose (radio (i))
        end for
        GUI.Dispose (button)

        % Draw a bunch of stars - No more handling of events or widgets
        for i : 1 .. 100
            var x : int := Rand.Int (0, maxx - 20)
            var y : int := Rand.Int (0, maxy - 20)
            Draw.FillStar (x, y, x + 20, y + 20, starColor)
        end for

        % Create a new button
        button := GUI.CreateButton (300, 10, 0, "Quit", GUI.Quit)

        % Reset the quit flag. Without this statement, the loop following would
        % exit immediately because the quit flag was set in the previous loop
        GUI.ResetQuit

        % Process events until the "Quit" button is pressed
        loop
            exit when GUI.ProcessEvent
        end loop

        % Close the window
        GUI.CloseWindow (defWinID)

Execute  

Status   Exported qualified.

This means that you can only call the function by calling GUI.ResetQuit, not by calling ResetQuit.