Historical Redy, Revision 4

http://redy-project.org/images/redy_blink.gif

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

Redy is currently under development and will be released soon. Official website: http://redy-project.org

Applications

Redy makes it easy to develop GUI applications in Euphoria. It will also include some useful applications:

  • RedyCode - an IDE for Redy and Euphoria development
  • RhodaPlot - a graphing calculator tool

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 it make 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

Example Redy Application

http://redy-project.org/images/screenshots/window_close_disabled.png

--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*/ 
            gui:wdestroy("winMain") 
        end if 
    end if 
end procedure 
 
 
procedure start() 
    gui:wcreate({ 
        {"name", "winMain"}, 
        {"class", "window"}, 
        {"title", App_Name}, 
        {"size", {400, 350}}, 
        {"allow_close", 0} 
    }) 
     
    gui:wcreate({ 
        {"name", "cntMain"}, 
        {"parent", "winMain"}, 
        {"class", "container"}, 
        {"orientation", "horizontal"}, 
        {"sizemode_x", "expand"}, 
        {"sizemode_y", "expand"} 
    }) 
     
    gui:wcreate({ 
        {"name", "txtInfo"}, 
        {"parent", "cntMain"}, 
        {"class", "textedit"}, 
        {"monowidth", 1}, 
        {"text", 
            "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, RedyOS

Search



Quick Links

User menu

Not signed in.

Misc Menu