=head1 GUIDeFATE

GUIDeFATE  -  Graphical User Interface Design From A Text Editor

=head1 SYNOPSIS

    use GUIDeFATE;

    my $window=<<END;
    +------------------------+
    |T  Calculator           |
    +M-----------------------+
    |  [                  ]  |
    |  { V }{ % }{ C }{AC }  |
    |  { 1 }{ 2 }{ 3 }{ + }  |
    |  { 4 }{ 5 }{ 6 }{ - }  |
    |  { 7 }{ 8 }{ 9 }{ * }  |
    |  { . }{ 0 }{ = }{ / }  |
    |  made with GUIdeFATE   |
    |  and happy things      |
    +------------------------+

    END

    my $gui=GUIDeFATE->new($window,[$backend],[$assist]); # API changed at version 0.06
    # $backend is one of Wx(Default), Tk, Qt, Web, HTML, Win32 or Gtk
    # $assist is one or  "q" (quiet, default), "v" (verbose),
    # "d" for debug (websocket) or "a" for Autogenerate
    
    $frame=$gui->getFrame||$gui;
    $gui->MainLoop;

=head1 REQUIRES

Perl5.8.8, Exporter, Wx, Wx::Perl::Imagick (for Wx interface)
Perl5.8.8, Exporter, Tk, Image::Magick, Tk::JPEG, MIME::Base64 (for Tk interface)
Perl5.8.8, Exporter, Glib, Gtk (for Gtk interface)
Perl5.8.8, Exporter, QtCore4, QtGui4 (for Qt interface)
Perl5.8.8, Exporter, Win32, Imager (for Win32 interface)
Perl5.8.8, Exporter (for HTML interface)
Perl5.8.8, Exporter, Net::WebSocket::Server, IO::Socket::PortState (for WebSocket interface)

=head1 EXPORTS

getFrame()
returns an object containing Widgets (referencesd by id) and
GUI interaction functions. This is actually provided by the middle-man
((GFwx, GFtk etc) but not availlable for GFhtml  of GFweb

=head1 DESCRIPTION

GUIDeFATE enables the user to convert a textual representation into a
Graphical User Interface. It attempts to abstract out the underlying
framework.  A visually recognisable pattern is passed as a string to
GUIDeFATE and this is transformed into an Interactive Interface.

=head1 METHODS

=head2 Creation

=over 4

=item my $gui=GUIDeFATE->new($window, $backend, $options);

Extracts dimensions and widgets in a window from the textual
representation.
If $backend not provided, defaults to "Wx"; options are Wx and Tk,
Gtk, Qt, Win32 and Web
If $options contains "v", then a verbose output is sent to console,
if it contains "a", and autogenerated file is produced with all the
called functions

Web Socket applications can made.  In such cases generating the client
and server parts can be directed to use a particular port/host

    my $gui=GUIDeFATE->new($window,[$backend],[$assist],[$port]);

$port can be a port number (default 8085), or "<host>:<port>" e.g.
"example.com:8085" (default host is localhost) or possibly (untested)
an SSL socket.  The port requested is not always the port used: if
the port for listening is not available, then the port number is
incremented until a free port is found.


or

=item my $frame=$gui->getFrame || $gui;

Returns reference to the frame for both abstracted and backend
specific functions.

For more details visit The GUIDeFATE wiki at its Github pages

=back

=head1 AUTHOR

Saif Ahmed, SAIFTYNET { at } gmail.com

=head1 SEE ALSO

L<Wx>, L<Tk>, L<Image::Magick>, L<Wx::Perl::Imagick>,
L<Imager>,L<Win32>,
L<GLib>, L<Gtk3>, L<Win32>, L<QtCore4>,
L<Net::WebSocket::Server>

=cut