Development: Student Projects

From WxWiki

Jump to: navigation, search

Contents

This page lists suggestions for possible student projects, in particular for Google Summer of Code. You can also suggest your own projects, we want to harness your enthusiasm to make wxWidgets better! Please read our Summer of Code Guidelines.

[edit] Google SoC 2008 Project Suggestions

[edit] wxWallCtrl

The goal is to create an OpenGL implementation of a control to visualise large quantities of 2D data in 3D space.

This kind of visualisation is becoming increasingly popular. You can see the UI in the iPod Touch and iPhone for navigating through music; the PicLens add-on for FireFox uses it to good effect, and you can see similar UIs on YouTube and Amazon. It provides a more compelling and natural browsing method than 2D scrolling, since you can see the context of the data in the same way you see objects in context in the real world. Objects that are not in the centre of your field of view are smaller and seen in perspective.

wxWallCtrl is a very general control, taking objects rendered with conventional wxWidgets primitives and showing them in 3D space. Basic mouse and keyboard navigation is handled, and the dynamic movement of the 'wall' is all defined by the control with some customisation available to the developer. The control is comparable with wxHtmlListBox in that application-specific data is served to the control, and the control takes care of rendering, navigation and the posting of high-level command events as appropriate.

The basic functionality that the control will provide to the application includes display and navigation of items, selection of one or more items, showing an item full-screen, and activation (an application-specific event handler will be called).

In its most abstract form, the control will access arbitrary object information on demand, as the view changes. The application must provide size and position information. A derived version of the control might use a predefined grid layout so that the application does not have to compute object positioning itself.

One refinement would be to allow objects to position themselves in the third dimension. Another would be to allow objects to be manipulated to a limited degree, for example scrolling or revealing different aspects or surfaces. Each object could be a cube, for example, revealing different properties of the object as you turn it. One could even consider treating an object as a window, with a number of controls available conforming to the wxWidgets API. However that would be well beyond the scope of this GsoC project.

The control will probably ask the application to render the data as a bitmap at different resolutions according to the current object size on the screen. This rendering has to be interruptable to allow quick navigation to a different object.

[edit] Experience needed

OpenGL programming, some wxWidgets knowledge

[edit] See also

[edit] Wrap new Vista Functionality

The goal is to provide access to some of the new Vista UI functionality. This will involve identifying and implementing wrappers for new WIN32 controls for Vista, such as the command link button with BS_COMMANDLINK style, disclosure buttons e.g. chevron, and the TaskDialog API; and identifying similar functionality on other platforms and making sure any new wxWidgets API will accommodate other plaforms. Also optionally, implement generic versions of Windows-specific controls. Note that not all Vista-like controls need be implemented with Vista APIs: you may decide to implement them generically.

[edit] Experience needed

Windows programming, some wxWidgets knowledge, possibly COM programming

[edit] See also


[edit] Masked Edit Control

The goal is to write a wxTextEntry-derived class (so that it could be used with both wxTextCtrl and wxComboBox in the future) which allows to limit the user input using the provided 'mask'. Such controls are commonly used for the entry of IP addresses (mask "###.###.###.###"), phone numbers ("(###) ###-####" in the US) and so on. The mask syntax and the API should follow the existing wxMaskedTextCtrl from wxPython.

[edit] See also


[edit] Accessibility Support

The goal is to research accessibility models on the major platforms and extend or replace the existing wxWidegst accessibility functionality, which is pressently Windows-only. Alternatively, it could be an independent API (not based on existing platform APIs) providing classes for augmenting an existing GUI application with a consistent hierarchical model and keyboard access.

[edit] Experience needed

Some wxWidgets knowledge.

[edit] See also

[edit] wxFoldBar

The goal is to provide a control that contains roll-up panels with title bars that match the wxAUI look and feel. The title bars can contain custom buttons as well as standard minimize and hide buttons.

[edit] Experience needed

Some wxWidgets knowledge.

[edit] See also


[edit] Animation for UI Elements

Animated UIs give the "WOW" Effect, which nowadays is an important factor for state of the art applications. Having controls slide to leave place for newly inserted items, fading effects, genie animations etc. increase the user experience. One way to tackle this topic would be

[edit] "basic animation" level

where

  • simple properties (like size, position, color etc) should be changed, between n values
  • over a certain time
  • using a certain function, ie linear, or for a movement eg sin gives a better live experience for movements as it simulates acceleration, movement, deceleration

then perhaps a

[edit] "layer" animation

where eg we have a wxAnimatedPanel, that could do certain animations, like eg when wxWindows are shuffled in a manner that would not be reflected in true wxWindows' properties, eg genie-like moving from one place to another, where not the true wxWindow would be morphed and moved but rather a memory bitmap. Ie in the beginning of the animations the children of the wxAnimatedPanel would render their current state on a memory dc, the true wxAnimatedPanel would be hidden, the animation is shown using image effects based on the bitmap, and in the end the wxAnimatedPanel would be shown again at the new position.

[edit] Experience needed

some wxWidgets knowledge, experience with animations on platforms that already support this

[edit] See also

http://msdn2.microsoft.com/en-us/library/ms752312.aspx http://developer.apple.com/documentation/Cocoa/Conceptual/CoreAnimation_guide/CoreAnimation_guide.pdf

[edit] wxMac UI Enhancements

The goal is to improve native appearance of wxWidgets applications on Mac OS X. The student will identify where native appearance and behaviour improvements could be made, and implement some or all of these.

Tasks may include:

  • Mac-friendly scrolling tab control (perhaps a Mac OS X look and feel for wxAuiNotebook)
  • wxPopupWindow implementation
  • native Mac help controller and sample help file
  • segmented controls, menu button, date picker control, token field

[edit] Experience needed

Mac OS X programming, some wxWidgets knowledge

[edit] See also

Apple Human Interface Guidelines

[edit] wxHildon and/or wxDFB

wxWidgets supports Maemo (2.2/Gregale/N770 only so far but work is in progress to add support for 3.2/bora/N800) and there is also a functional DirectFB port now. However both could do with significant improvements, please contact us on wx-dev mailing list if you're interested in working on either of these ports.


[edit] Fully integrated tabs in wxAUI

The current version of wxAUI supports both docked panels as well as a splittable notebook control. This project would add tab sheets to the docking portion of the toolkit, without usage of extra dynamically created tab controls. The foundation work for this has already been laid. The developer shall then make sure that the full layout including tabs may be serialized in a perspective. 2-3 months maximum.

Another less ambitious project would be better support of minimum sizes in wxAUI. This requires some tricky calculations with sizers and pane proportions, but it would be useful if someone had the time to sit down and do it. Two weeks development time.

[edit] Experience needed

Knowledge of the inner workings of wxSizers

[edit] Google SoC 2006

Wiki pages for wxWidgets SoC projects 2006:

[edit] Google SoC 2007

Wiki pages for wxWidgets SoC projects 2007:

Also see original list of SoC 2007 suggestions annotated with the project results.

[edit] Student project application template

The wxWidgets application template is here:

Personal tools