Overview
YAXGL is a both an XML-file specification and a set of libraries implementing support for the format. YAXGL can be used to create graphical user interfaces (GUI) by writing XML files and then letting the libraries create the actual GUI at runtime for you. The advantages of this approach to creating a GUI over the classic approach of defining the GUI directly in the programming language are:
- Platform and language independence (the GUI definitions are completely independent of the language and plattform, the APIs are as similar as possible)
- Improved maintainabilty (by separating presentation and business logic, GUI designers and ergonomics experts can create and maintain GUIs without being trained in any programming languages)
- Easier reusability (the GUI definitions are independent of any application-specific code and much easier to understand to a human than framework-specific source code)
And if you're using language or platform dependent GUI files (like the resource files used in the Windows API):
- Simplified readability (being just XML files, YAXGL definitions can be viewed and edited with any text editor)
- Vendor independence (being just a wrapper, switching to another GUI framework is a lot easier than rewriting the whole code)
YAXGL stands for "Yet Another XML GUI language" and is an innuendo to the multitude of XML GUI languages being released recently, most of which are neither usable in real life applications nor bring any new functionality to the field. YAXGL is no exception in this respect.
Concept
YAXGL libraries are wrappers on top of existing GUI frameworks. The following frameworks are currently supported:
- The Standard Widget Toolkit (SWT) using Java or any other langauge compiling to code for the Java Virtual Machine (Groovy, ...).
- Windows Forms using any CLR (.NET) language (C#, VB.NET, Boo, ...).
- wxWidgets (formerly wxWindows) using Python.
The libraries allow to create windows from YAXGL files and then access and manipulate their properties and their controls' properties. To provide static checking, YAXGL files can be validated against their XML Schema.
YAXGL implements a subset of the features of these frameworks. More specifically, it provides the basic aspects of the most common controls. To allow extended functionality, it provides access to the native windows and controls.
Functions in the application-specific code can be made event handlers for one or more controls and event types by marking the function with specific metadata in the code (Java Annotations / .NET Attributes / Python function decorators).
All libraries are supposed to be as similar as possible, varying only in the syntax of the language itself. All class names, methods and the general usage concepts are the same among all YAXGL libraries.
Project history and state
YAXGL has been created as a project for an XML class at the HTWG Konstanz in the summer term 2007.
Development has been suspended. It's partially incomplete, for example not all controls are supported by the Python/wxWidgets version. The project might be picked up again, or it might not. The sources are available on request.
Downloads
Documents
- Introductory presentation (PDF) (German)
- Final presentation (PDF) (German)
- XML Schema definition
Development
- YAXGL SWT/Java library v0.9
- YAXGL Windows Forms/.NET library v0.9
- YAXGL wxWidgets/Python library v0.9
- YAXGL Demo applications v0.9