Enlightenment CVS committal Author : dj2 Project : e17 Module : libs/ewl
Dir : e17/libs/ewl/src/lib Modified Files: Ewl.h ewl_theme.h Log Message: - more documentation work =================================================================== RCS file: /cvs/e/e17/libs/ewl/src/lib/Ewl.h,v retrieving revision 1.35 retrieving revision 1.36 diff -u -3 -r1.35 -r1.36 --- Ewl.h 8 Feb 2008 17:40:58 -0000 1.35 +++ Ewl.h 27 Feb 2008 03:52:45 -0000 1.36 @@ -9,248 +9,6 @@ * It is discouraged to include each header file individually. */ -/** - * @mainpage The Enlightened Widget Library - * - * @section intro Introduction - * - * The Enlightened Widget Library (EWL) is a widget toolkit based on the - * libraries developed for Enlightenment 17. Rendering is performed - * using Evas, a fast abstracted canvas library that supports multiple - * backends. The appearance of the widgets are described by Edje files, - * which are essentially files containing a collection of images and - * descriptions for laying out those images. The goal of EWL is to abstract - * the use of these backends and to present an easy to use object model to the - * end programmer. - * - * Overall, EWL is similar in design and functionality to other common - * toolkits such as GTK+ and QT. The API's differ, but the overall concepts - * and ideas are similar. If you are familiar with these other toolkits - * getting into EWL should be relatively simple. - * - * EWL uses the concept of inheritance for describing its widgets. When a - * class inherits from another class, the functions that operated on the base - * class can also operate on the inheriting class. For example, in EWL the - * class Ewl_Button inherits from Ewl_Box, which inherits from Ewl_Container. - * This means you can add widgets to the button, just like you could to the - * box or any other container by using ewl_container functions. Since EWL is - * written in C, it uses a very simple single inheritance system. The first - * field of the inheriting struct must be the inherited struct, and note, it's - * not a pointer to the inherited struct. For example: - * - * @code - * struct Ewl_Foo - * { - * Ewl_Bar bar; - * int baz; - * }; - * @endcode - * - * Creates a new class of object, Foo, which inherits from the Bar class and - * extends it by adding an integer baz. If the first line of the struct had - * been Ewl_Bar *bar; it would most likely result in some buffer overflows - * when initializing the widget. - * - * @section model The Object Model - * - * The basis for all widgets in EWL is Ewl_Object. Ewl_Objects are never - * allocated outside of another widget, it provides size and position - * information for the widget as well as info about the widgets padding and - * insets. There are also fields for indicating object alignment and fill - * policies. - * - * The next step above Ewl_Object is Ewl_Widget. Again, Ewl_Widgets are - * usually not allocated by themselves, but are part of all the other widgets - * available in EWL. The Ewl_Widget class provides the necessary information about - * a widget that relates to its appearance, its parent container, event - * handling, as well as a few miscellaneous tasks common to all widgets. The - * Ewl_Widget structure also contains information on the inheritance of any - * given widget. This is useful if you need to check the type of a widget in - * your code. - * - * A necessary class that some widgets inherit from is Ewl_Container. This is - * used for holding collections of widgets and specifiying their layout. Containers - * are the building blocks of the widget set. They allow for creating heirarchies - * of widgets that are bounded within their parent containers. Ewl_Container - * inherits from Ewl_Widget, so any container can also be treated as a - * widget, and thus you can put containers within other containers. Examples - * of inheriting classes are Ewl_Window and Ewl_Box. In the case of - * Ewl_Window, widgets inside the window are given any position they request - * within the insets of the window. For Ewl_Box, contained widgets are - * layed out either from top to bottom, or from left to right, depending on - * the box orientation. - * - * @section callbacks Callbacks - * - * To do work in a GUI, it is necessary to know when certain actions occur. - * EWL handles notification of actions using a common technique called - * callbacks. When the end programmer wants to know when a specific event - * occurs to a widget, they can add a callback to it using ewl_callback_append() - * or one of the similar functions. One of the arguments to these functions is - * a pointer to a function. This function will get called when EWL receives - * the specified event on that widget. You can attach callbacks to any widget, - * and with containers you can even mark them to intercept events to their - * child widgets. - * - * One feature of EWL that is different from other toolkits is that it makes - * extensive use of internal callbacks. In fact, almost all appearance changes - * for widgets are actually callbacks, and most of the ewl_widget calls - * actually do very little work, but trigger specific callbacks. This feature - * allows for overriding specific actions on a widget, or for ordering user - * specified callbacks relative to internal ones. - * - * @section example Example Application Walk-through - * - * One of the easiest applications to build for EWL is a simple image viewer. - * The basic image viewer needs a window and an image widget. The following - * app is a fully functional simple image viewer based on code written by Ben - * Rockwood of Cuddletech. The first part necessary for creating an EWL - * application is to include the necessary header Ewl.h. Following the include - * statements are global variable declarations. - * - * @code - * #include <Ewl.h> - * #include <stdio.h> - * - * Ewl_Widget *main_win; - * Ewl_Widget *main_box; - * Ewl_Widget *image; - * @endcode - * - * Now declarations of function callbacks are - * made, normally when writing an application - * these are added after the GUI code is written. - * The next piece of code is common to most apps, - * the windows in EWL are not closed unless they - * are destroyed, so a callback must be attached - * for the windows delete callback. - * - * @code - * void - * _destroy_main_window(Ewl_Widget *main_win, void *ev_data, void *user_data) - * { - * ewl_widget_destroy(main_win); - * ewl_main_quit(); - * - * return; - * } - * @endcode - * - * For this application that is the only callback, now we - * have the main function. This is where EWL is initialized, - * widgets are created, and the main EWL loop is started. First, - * declare the main function and check to be sure that an image - * file was specified. Then, initialize EWL. - * - * @code - * int main (int argc, char **argv) - * { - * if (argc < 2) { - * fprintf(stderr, "Usage: %s <image>\n", argv[0]); - * return 1; - * } - * if (!ewl_init(&argc, argv)) { - * fprintf(stderr, "Unable to initialize EWL.\n"); - * return 1; - * } - * @endcode - * - * Next allocate the window, set its title and attach a callback to catch its - * delete event. Also, set a minimum size on the window, mark it to be - * auto-sized, and set visible. Marking it auto-sized will cause the widget to - * resize to fit the contents. - * - * @code - * main_win = ewl_window_new(); - * ewl_window_title_set(EWL_WINDOW(main_win), "EWL Simple Image Viewer"); - * ewl_callback_append(main_win, EWL_CALLBACK_DELETE_WINDOW, - * _destroy_main_window, NULL); - * ewl_object_minimum_size_set(EWL_OBJECT(main_win), 100, 100); - * ewl_widget_show(main_win); - * @endcode - * - * Next we create a box to hold the image. This isn't really necessary for - * this app but demonstrates further how to use containers and makes it - * easier to add more widgets later. - * - * @code - * main_box = ewl_vbox_new(); - * ewl_container_child_append(EWL_CONTAINER(main_win), main_box); - * ewl_widget_show(main_box); - * @endcode - * - * Next, create the image widget. We just attempt to load the image - * file that was specified on the command line and add it to the - * box in the window. The second argument is NULL for normal images but can - * be set to the name of the group to load for an Edje file. - * - * @code - * image = ewl_image_new(); - * ewl_image_file_set(EWL_IMAGE(image), argv[1], NULL); - * ewl_container_child_append(EWL_CONTAINER(main_box), image); - * ewl_widget_show(image); - * @endcode - * - * Finally, we call the main function that starts the EWL event - * processing loop. With that, our app is complete. - * - * @code - * ewl_main(); - * - * return 0; - * } - * @endcode - * - * Now that the application source has been written, it must be - * compiled. This is fairly simple with EWL, if you name the app - * simple_viewer.c just use the command: - * - * @code - * gcc -o simple_viewer `pkg-config --cflags --libs ewl` simple_viewer.c - * @endcode - * - * @section conclusion Conclusion - * - * Obviously, creating a simple image viewer doesn't take much - * effort but it's a good basis for understanding the - * basics of EWL. Hopefully, readers will extend this app, and - * possibly create more robust image viewers, and with any luck, - * other applications to demonstrate EWLs capabilities. - * - * If you have questions, corrections, or improvements, please send - * them to <a href="mailto: [EMAIL PROTECTED]">enlightenment-devel at lists dot sourceforge dot net</a>. - */ - -/** - * @page layering Layering Scheme - * - * As widgets are placed inside containers, there becomes the issue of - * specifying which widget gets drawn on top. It's important that the widgets placed - * inside of a container are above the containers background, or the user - * would be unable to view the placed widgets. - * - * EWL handles the layering so the programmer dosen't need to worry about - * it. In some cases it is necessary for a widget to overlap another widget - * with the same parent. In this case you set the layer priority of the - * widget to a higher value (negitive values are possible). - * - * If you want a widget to be placed over top of all other widgets, like - * floater for example, you can set the widget to be 'top layered'. This - * setting will also effect the children of that widget. - */ - -/** - * @page images Documentation Images - * - * Diagram describing Ewl_Object fields - * - * @image html object_fields.png - * - * Diagram describing how Ewl_Object fields affect sizing. - * - * @image html object_sizing.png - */ - #ifdef __cplusplus extern"C" { #endif =================================================================== RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_theme.h,v retrieving revision 1.15 retrieving revision 1.16 diff -u -3 -r1.15 -r1.16 --- ewl_theme.h 28 Feb 2007 12:24:46 -0000 1.15 +++ ewl_theme.h 27 Feb 2008 03:52:45 -0000 1.16 @@ -3,23 +3,6 @@ #define EWL_THEME_H /** - * @page theming How Themes Work - * - * EWL relies on a graphical layout engine called Edje. Edje allows a themer - * to layout images, in fairly advanced ways and provides methods for - * animation and changing of images based on various signals. EWL uses an Edje - * collection per-widget and has a set of keys for specifying which widget - * uses a specific collection. Information about using Edje can be found at the - * <a href="http://www.enlightenment.org/pages/edje.html">project page</a>. - * The remainder of this section concentrates specifically on how EWL - * interacts with Edje. - * - * The keys to lookup the group name for the widgets are top level data keys - * in the themes edje file. Each widget looks up it's group name based on the - * heirarchy it is placed inside other containers. - */ - -/** * @addtogroup Ewl_Theme Ewl_Theme: Methods for Accessing and Modifying Theme Data * Provides methods for accessing theme data, global theme data or per-widget * theme data. ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs