What is CP2?
Code Project Project is a collaborative effort, first brought forward by Joel Holdsworth and later Jamie Hale, to produce quality software by all and for all CodeProject users, by utilizing their collective knowledge and expertise in the software development profession. If you have general questions or comments pertaining to CP2, please direct them to Jason Henderson.
All Code Project Projects are works in progress. Not all pages may be available until progress has been made in that area. Please do not pass judgement on this project or it's article series until its completion. Thank you.
CP2 Universal Gui LibrarY (UGLY) Project
***NOTE: This project is in the process of moving to a new location.***
It will no longer be affiliated with CodeProject, and it will have a new name - FLUID UI Toolkit.
Its new location is http://www.fluiduitoolkit.com.
You are welcome to join this project. To sign up, please register on the forums.
Critical Documents:
critical_documents.zip
Project Leader:
Justin Dunlap
Project Abstract
The UGLY Library - Universal Graphical User Interface LibrarY is a project aimed at providing a comprehensive, modern, and innovative suite controls and support classes to the user interface designer. These classes will allow them to access new, easy to use controls and UI layout options such as user configurable menus and toolbars, floating windows, etc.
Scope
To start with, the project will be aimed at getting a suite of standard windows controls together that will be drop-in replacements for the existing ones. These replacements will have extended functionality and drawing capabilities - the type of which will be dependent on the control type.
Starting in this way, we can keep the project small and build from there, we need to see how enthusiastic people are going to be and small bite sized chunks will be easier to digest.
Skill Set
It looks like the kind of people we will need are those who are familiar with developing controls under Windows. I myself have quite some experience in this area. We are implementing the controls in both C# (for .NET) and C++ (for Win32), so we need people with experience in one or both of these languages.
Architecture
Since the project consists of controls/components, it should be fairly easy to divide it up into sub-sections. Besides the control, there will be:
-
An example test application (one or more) - to start with, I suggest a bitmap editor (with a bit more features than Paint) and a rich text editor (like WordPad).
We will have a DLL for the framework, and one for the basic controls. For the special controls, a DLL should be created for each class of controls - one for all special listview-related controls, one for all special buton-related controls, etc.
Some of the areas we will want to provide enhanced support for are:
-
Printing functionality - controls should have a GetRendering() method that gets a rendering of the control.
-
Owner drawn/skinnable - through an advanced rendering/behavior subsystem.
The User's view
As the intended users will be application programmers, we need decent documentation on the classes and the API's. Keeping everything as consistent as possible across all the classes is a must. To begin with, we will simply define the interfaces in XML, to be viewed with the XSLT transform I created for the purpose. Eventually, though, we will probably want to use an automatic documentation system (I am trying to find one for use with C++).
We're aiming here to make the target audience's life as easy as possible. You want a spin control that increments in 0.01 units? You got it! etc.
A list of controls we may support
STANDARD |
NON-STANDARD |
UNCONVENTIONAL |
- syntax highlight numbered text control
|
- skinnable popup - for balloons, etc.
- color picker bar - functionality is like scrollbar
- color picker gradient - round, square, etc
- number ticker (like odometer)
- dockable / pinnable dialogs
|
- dockable slide panels/drop down lists
- a control like the flexible PowerBuilder datawindow
- a sticky-note control or undockable thumbtacks (stick a note anywhere on the window and move it anywhere)
- file cabinet control (user can lable outside and drag and drop things in and out)
- flip switches (like a light switch)
- springy Slinky-like dropdown list control (release and it springs back up)
|
I am especially interested in a commandbar and an image thumbnail viewer.
History
June 12 2003 - Posted
<Other updates - were not kept track of>
July 31 2003 - Updated by Justin Dunlap - did a full update.
Other CP2 projects
Defect Tracking and Source Control Project
Scripting Framework Project
Group projects like this one cannot succeed without the help of dedicated individuals. If you are interesting in volunteering your time and expertise to this project, please post a message in the VOLUNTEERS thread on this page and the Project Leader will contact you for confirmation.