Development: Student Projects

From WxWiki

Jump to: navigation, search

Contents

This page lists some suggestions for possible student projects for Google Summer of Code which we consider to be both interesting to work on and important for wxWidgets community. This list is not exhaustive, please see our general TODO list for some more ideas and you can also perfectly well suggest your own projects -- anything that you are motivated to work on and which would make wxWidgets better is welcome!

If you find anything interesting here, please also read our student application guidelines and submit your application. Good luck!

[edit] wxiPhone port

A basic port of wxWidgets to Cocoa Touch has been started by Stefan Csomor, but this requires the UI to be written in Cocoa using Apple's tools. The goal of this project is to implement some of the required GUI wrappers by following the simulated wxiPhone API at wxMobile Proposal.

Experience needed

Some wxWidgets and Cocoa Touch knowledge

[edit] wxQt port

The goal is to build on the start that has been made on the wxQt port by Peter Most, and implement a chunk of functionality. This might be the window device contexts, or a set of classes such as the wxButton, wxCheckBox, wxTextCtrl and other basic controls.

Experience needed

Some wxWidgets and Qt knowledge

[edit] wxRichTextCtrl table support

The goal is to add table support to the wxRichTextCtrl editor. HTML tables can be the model for the underlying structure, and there will need to be several dialogs for editing tables.

Experience needed

Some wxWidgets knowledge

[edit] wxRichTextCtrl image support

The goal is to improve the very basic image support in wxRichTextCtrl. Improvements include floating images (this will need some generic support for text flow around objects), resizing, and an image properties dialog.

Experience needed

Some wxWidgets knowledge

[edit] wxRichTextCtrl right-to-left text support

The goal is to support right-to-left languages such as Hebrew, including support for composing individual diacritics.

Experience needed

Some wxWidgets knowledge, advanced Unicode experience, and knowledge of any platform-specific functionality that may be required to implement RTL and better diacritics support.

[edit] Wrap new Vista/Windows7 Functionality

The goal is to provide access to some of the new Vista UI functionality. This will involve identifying and implementing wrappers for new controls in Windows Vista/7, such as the command link button with BS_COMMANDLINK style, disclosure buttons e.g. [chevron] (which could be used to provide a native wxCollapsiblePane implementation), 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 some or all of them generically.

Experience needed

Windows programming, some wxWidgets knowledge, possibly COM programming

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.

Note that this is really too small a task for a whole GSoC project and should be combined with another task.

Image:Masked_edit3_2.jpg‎

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 we have for example a wxAnimatedPanel that can do certain animations, such as when wxWindows are shuffled in a manner that would not be reflected in true wxWindows' properties, for example genie-like moving from one place to another. 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 then shown using image effects based on the bitmap, and in the end the wxAnimatedPanel is shown again at the new position.

Experience needed

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

See also

http://msdn2.microsoft.com/en-us/library/ms752312.aspx

http://developer.apple.com/documentation/Cocoa/Conceptual/CoreAnimation_guide/CoreAnimation_guide.pdf

[edit] wxOSX 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)
  • native Mac help controller and sample help file
  • segmented controls, menu button, date picker control, token field

Experience needed

Mac OS X programming, some wxWidgets knowledge

See also

Apple Human Interface Guidelines

[edit] wxHildon

wxWidgets supports Maemo (2.2/Gregale/N770 only so far but work is in progress to add support for 3.2/bora/N800). This could do with significant improvements; please contact us on wx-dev mailing list if you're interested in working on it.

We need to consider whether the announcement of MeeGo makes this port obsolete (deprecation of GTK+) or whether GTK+ will be supported long enough for a finished port to be worthwhile.

[edit] wxDFB

There is also a functional DirectFB port now. This port could do with significant improvements, please contact us on wx-dev mailing list if you're interested in working on it.

[edit] Small projects that you can combine in a single proposal

The projects/ideas in this sections are too small to be eligible for an entire GSoC project but you can discuss them on the wx-dev mailing list and find a combination of 2/3/4 of them suitable for GSoC.

[edit] Cross platform administrator dialog

The aim would be to provide API for a cross-platform "get administrator privileges" dialog to allow installations/operations inside system paths. This project may include definition&implementation of an API for changing/querying access privileges at run-time for a certain process.

[edit] Ensure correct behaviour of GUI classes

This project would consist in writing wxGuiTesting-based automated tests for wx controls which ensure that the behaviour and the order and the number of events generated by the (main) wxWidgets GUI controls (wxTextCtrl, wxButton, etc etc) is consistent among the 3 major ports (wxMSW, wxGTK, wxMac).

See http://wxguitest.sourceforge.net/ for more info.

[edit] Older ideas

You can find older, less relevant ideas here: oldgsocideas.

Personal tools