Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

CP<sup>2</sup> Universal Gui LibrarY (UGLY) Project - MAIN PAGE

0.00/5 (No votes)
3 Sep 2003 1  
A GUI library collaborative project.

A Code Project Project by Bob's loyal subjects
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:

  • A base framework
  • A base control class(es)
  • 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.
  • Better UI

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

  • treeview
  • listview
  • listbox
  • combobox
  • fontcombo
  • ip address box
  • masked edit control
  • property page
  • grid control
  • button
  • toolbar
  • rebar
  • commandbar
  • richedit control
  • MDI tabs
  • chart
  • date picker
  • calendar
  • (marquee)
  • slider
  • tab page
  • explorer treeview
  • explorer listview
  • progress bar
  • syntax highlight numbered text control
  • property grid
  • statusbar
  • updown - spin?
  • scrollable viewport
  • monthview
  • ruler
  • commandbar
  • treelistview
  • listbar (outlook-style)
  • toolbox listbar
  • clock
  • dial
  • range picker
  • skinnable popup - for balloons, etc.
  • data navbar
  • collapsible panel
  • color picker bar - functionality is like scrollbar
  • color palette
  • color picker gradient - round, square, etc
  • auto-complete textbox
  • image-calendar
  • time-scheduler
  • topiclist
  • imagelistview
  • appbar
  • wizard ctl
  • advanced message box
  • analog meter control
  • peak-meter
  • number ticker (like odometer)
  • colorcombo
  • lcd display
  • dockable / pinnable dialogs
  • LED controls
  • enhanced MessageBox
  • radio dial/wheel
  • dockable slide panels/drop down lists
  • maybe a door control
  • book pages control
  • 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)
  • a rolodex control
  • 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)
  • slot machine lever control

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.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here