Development: Student Projects
From WxWiki
|
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] Speech Input/Output Support
The goal is to provide a set of classes for alternative input/output methods, especially speech but possibly including other modes that can be used by disabled users. This project could build on the wxTextToSpeech speech synthesis wrapper classes available from http://www.anthemion.co.uk/wx/wxtexttospeech.zip. These classes provide access to several speech engines, and the project could add breadth and depth to these (for example using KDE and GNOME speech APIs, and better SSML support). However the main thrust would be to offer a consistent API for speech recognition engines on a number of platforms; as well as the basic functions, the project would probably involving creating GUIs for training and vocabulary editing, plus a consistent grammar specification mechanism.
(Note that if speech recognition APIs on the three major platforms (Windows, Linux and Mac) are not sufficiently mature for this approach to be practical, or cannot be unified in a reasonable way, then focusing on speech synthesis may not represent a big enough task and thus it would not be an appropriate GSoC project.)
Experience needed
Some wxWidgets knowledge, knowledge of speech technology.
See also
- http://www.anthemion.co.uk/wx/wxtexttospeech.zip
- http://en.wikipedia.org/wiki/Speech_Application_Programming_Interface
- http://en.wikipedia.org/wiki/Speech_Synthesis_Markup_Language
[edit] Accessibility Support
The goal is to research accessibility models on the major platforms and extend or replace the existing wxWidgets 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. A text to speech API (wxTextToSpeech) is currently in progress that could be used with this project.
Experience needed
Some wxWidgets knowledge.
See also
[edit] wxHTML2
The current lightweight HTML classes in wxWidgets, wxHTML, are good for presentation of simple text and graphical information, but cannot cope with modern web standards such as CSS. The goal of the wxHTML2 project is to implement a wrapper around fully-featured web browsers - there is already wxIE on Windows, and wxWebKitCtrl on Mac, so the main part of the project will be a wrapper around a suitable browser under GTK+, such as WebKit, Embeded Mozilla (GTKMozEmbed), or wxMozilla. Although there is a separate wxWebKit project, this is a wxWidgets port of the code rather than a wrapper of the GTK+ port, and may be in a less advanced state than the GTK+ implementation. However it would be worth evaluating as an alternative to a GTK+ based control. The project will create a uniform API on all platforms and demonstrate a simple browser making use of the control. The code should be usable with both wxWidgets 2.8 and 2.9, and part of the project will be to ensure that downloading and building the web browser code is made as easy as possible, given that resolving dependencies can be challenging.
Experience needed
Some wxWidgets knowledge; some GTK+ programming experience.
See also
- http://live.gnome.org/WebKitGtk
- http://libufo.sourceforge.net/ C++ core library for forms respectively graphical user interfaces (GUI)
- http://www.gtkforums.com/about1463.html&highlight=
- https://wiki.mozilla.org/Embedding/NewApi
- http://sourceforge.net/projects/wxactivex
- https://svn.wxwidgets.org/viewvc/wx/wxWidgets/branches/WX_2_8_BRANCH/include/wx/html/webkit.h?revision=53798&view=markup
- http://wxwebkit.wxcommunity.com/
[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
- http://msdn.microsoft.com/library/default.asp?url=/library/en-us/UxGuide/UXGuide/Controls/CommonControls.asp
- http://www.codeproject.com/KB/vista/Vista_TaskDialog_Wrapper.aspx
- http://www.codeproject.com/KB/vista/VGGlassIntro.aspx
[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.
See also
- http://svn.wxwidgets.org/viewvc/wx/wxPython/trunk/wx/lib/masked/maskededit.py?view=markup
- http://www.codeguru.com/cpp/controls/editctrl/article.php/c517
[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.
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
[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 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] 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.

