Redy Redy is the new name for FluidAE. It is an open-source graphical application development environment written by ryanj.

A screenshot of a Redy Demo application


Redy is a graphical environment for developing user-friendly applications in the Euphoria programming language. Redy is designed by Ryan Johnson. The official website is Redy is a very large project that has been evolving for many years. Previous versions were highly experimental and were not stable nor complete enough to use for real-world applications. In the last two years, the source code has been almost completely rewritten. Now, it is finally stable and efficient enough to use for real GUI applications!


Redy is intended to be more than a GUI. It has a collection of include files called "redylib" which provides a standardized system to help you create applications Euphoria. Eventually, Redy will have modules such as:

  • Multi-process communication and distributed processing (local or over a network)
  • System information
  • HTTP, FTP, IRC, and email protocols
  • Printing
  • Audio (maybe, if someone helps with this)
  • XML configuration files (for application preferences, for example)
  • Various graphics formats such as jpg, png, svg (if someone helps with this)

Graphical User Interface

Redy has a GUI that is written in 100% euphoria, which means:

  • No dependence on 3rd party tool kits to create widgets. (Only a bare-minimum set of api functions are used.)
  • The entire widget system is small and efficient and doesn't need to include any dll files or massive dll wrappers. Start up time is much faster than win32lib. CPU and memory usage is minimal.
  • You are free to think in euphoria concepts when interacting with widgets, because they are written in euphoria.
  • You have complete freedom to customize the look and behavior of the widget system by simply modifying euphoria source code.

The GUI has many features and little enhancements that make it powerful and easy to use:

  • Widgets automatically arrange themselves inside nested Container widgets.
  • Windows can intelligently position and size themselves.
  • The built-in theme is very "simple-looking" with a classic, clean, boxy, 3D look that makes efficient use of screen space, and has subtle highlights on the widget that has focus and the widget that is hovered over with the mouse.
  • It is compatible with Euphoria's cooperative multitasking, so you can have different tasks controlling different parts of the user interface.
  • You can use a single widget event handler procedure for the entire program, or assign different event handlers to different widgets. You can even have different event handlers in different include files for a modular design.
  • Widgets are created by setting properties with string names, so the source is easy to read and debug. Unlike many other GUI libraries, you never have to think about returning widget IDs and passing them to other routines.
  • All widgets are referenced by string names, which, when combined with Euphoria's powerful string-handling syntax, gives you flexibility to do some interesting things such as build widget names with numbers in them to create multiple instances.
  • The powerful Canvas widget class lets you draw graphics and create "handles" which the user can interact with using the mouse or keyboard, allowing many possibilities such as formatted text with hyperlinks, vector drawing editors, charts, calendars, tile games, etc. Some libraries are included to do some of these things.
  • Ability to store and load images embedded in the program as sequences.
  • Built-in smart popup dialog to display information or ask the user a question is very easy to use.
  • Built-in support for OS clipboard functions and OS Common Dialogs such as File Open and File Save As

The GUI has another unique feature: a powerful Debug Console, which helps you:

  • Catch references to invalid property names or values
  • Catch references to non-existent widgets
  • View the entire widget tree and properties of all widgets instantly
  • Output debug data as multiple items that you can select from a list to view in a textbox rather that printing everything to a text console


The ultimate purpose of Redy is to create applications. The primary application that will be included with Redy is a Euphoria/Redy application Integrated Development Environment, called RedyCode. It is still under development. A few other applications are planned for development in the future (subject to change):

  • RhodaPlot - graphing calculator
  • RedyChat - IRC Client
  • RedyShell - File manager and application launcher
  • RedyCAD - 2D Computer aided design
  • RedyNote - Formatted hypertext editor for taking notes, writing documetation, or organizing your thoughts
  • RedyMail - Email client
  • RedyShow - Multi-monitor and remote (over network) dynamic presentation/slideshow system

Example Redy Application

--This demonstrates how to create a main window in Redy that has "allow_close" disabled. 
--This means when the user tries to close the window, it will not close automatically, 
--but the "closed" event is processed in the event handler, which gives the application 
--a chance to deinitialize, save data, or verify if the user really wants to close the  
--window before destroying the window.  
without warning 
global constant  
App_Name = "Window Close Disabled Demo", 
App_Version = "1.0" 
include gui/gui.e as gui 
include gui/forms/msgbox.e as msgbox 
procedure gui_event(object evwidget, object evtype, object evdata) 
    if equal(evwidget, "winMain") and equal(evtype, "closed") then 
        sequence ans = msgbox:waitmsg("Are you sure you want to exit?", "Question") 
        if equal(ans, "Yes") then 
            /*deinitialize code here*/ 
        end if 
    end if 
end procedure 
procedure start() 
        {"name", "winMain"}, 
        {"class", "window"}, 
        {"title", App_Name}, 
        {"size", {400, 350}}, 
        {"allow_close", 0} 
        {"name", "cntMain"}, 
        {"parent", "winMain"}, 
        {"class", "container"}, 
        {"orientation", "horizontal"}, 
        {"sizemode_x", "expand"}, 
        {"sizemode_y", "expand"} 
        {"name", "txtInfo"}, 
        {"parent", "cntMain"}, 
        {"class", "textedit"}, 
        {"monowidth", 1}, 
            "This demonstrates how to create a main window in Redy that has " & 
            "\"allow_close\" disabled. This means when the user tries to close the " &  
            "window, it will not close automatically, but the \"closed\" event is " & 
            "processed in the event handler, which gives the application a chance to " & 
            "deinitialize, save data, or verify if the user really wants to close " & 
            "the window before destroying the window." 
    /*initialize code here*/ 
end procedure 
gui:start(routine_id("start"), routine_id("gui_event")) 

See also, Redy Tutorial, RedyCode, RedyOS


Quick Links

User menu

Not signed in.

Misc Menu