wiki:Projects/GSoC/ApplicationConfigurationGUI
Notice: We have migrated to GitLab launching 2024-05-01 see here: https://gitlab.rtems.org/

Version 34 (modified by Shubhamsomani, on 09/16/13 at 23:55:45) (diff)

/* Goal: */

ApplicationConfigurationGUI

Administrative

Mentors:

Joel Sherrill, Cynthia Rempel

Students:

Help Wanted

Status:

The GUI has been coded, packaged and tested(on Windows,Ubuntu and CentOS). It can be cloned from https://github.com/shubhamsomani/GUI (temporary).

The TUI has been coded and tested.(on Ubuntu).It can be cloned from https://github.com/shubhamsomani/TUI (temporary).

Introduction

The GUI attempts to solve the problem of how to make configuring RTEMS in a user-friendly way. Having the GUI automatically generated from either # a Makefile (or Makefiles) and http://git.rtems.org/rtems/tree/doc/user/conf.t or, # Waf solves the problem of keeping the GUI up-to-date with limited maintainer-hours.

The application GUI is # Written in Python # Allows the user to edit values # Recognizes when one of the values is not in correct format # Saves its own version of user configuration, and # Generate a .h file which would be used in an application # Automatically generated by running a command that uses textual substitution/parsing of http://git.rtems.org/rtems/tree/doc/user/conf.t

GUI Directory Structure

Controller.py -> Controller of the complete tool.

GUI.py -> File responsible for UI generation.

Generator.py -> File responsible for header file generation.

configuration.ini (present after you save values) -> responsible for storing saved values.

header.h -> The generated header to be used in Applications.

/text/text_parser.py -> The text parser module, which parses the conf.t and fetches neccesary information.

The Graphical User Interface is created on the MVC(Model View Controller) framework. In the GUI ,the Model is the conf.t file where definitions of the macros are present. The View is GUI.py file which handles with creating the GUI. The Controller is the Controller.py file.

Possible Goal Extensions beyond the Main Objective

# Add to the Makefile a check for whether the required libraries/headers were on a system, and if not, install them. # Copy the script and modify the copy to use another approach, for example: if an Eclipse Wizard was generated, re implement to generate the a Linux kernel config infrastructure. # Work on the RTEMS ConfigKit?. # Hook the Application Configuration GUI into the RTEMS source tree, by putting into http://git.rtems.org/rtems/tree/contrib/config_gui/Makefile.am # Package the GUI so that it includes the libraries it depends on, for example, if the GUI uses GTK+, the GUI would ship with GTK+

Resources

JoelSherrill has used the GNU/Linux kernel config infrastructure for similar projects in the past and things it is likely the best alternative as a baseline. This would certainly provide multiple interfaces on GNU/Linux hosts (e.g. X11, menu, command line). But we would like a solution that also addresses MS-Windows users.

Chris Johns is the resident Python wizard and offered to help define classes to do the transformations. Python is a very portable language and toolkit which should be easy to dynamically generate UIs in -- both TUI and GUI. Using one implementation language would allow you to share the "controller" portion of the program but implement different "views"

A better possibility is to write a GUI program in Python which reads an XML format file describing the RTEMS configuration parameters. As the user set values, the program would store this information in another XML format file. When it was time to write the C code to use with the RTEMS application, the GUI application would write that. So we would have:

  • XML file describing RTEMS configuration parameters
  • XML save file with user settings
  • C/H file output for use with RTEMS application

References

# Some Design work # Python Config Parser Examples : The python config parser can read and write config files.