Tuesday, December 07, 2010

Do Androids dream of wxWidgets?

Don't know about androids to be honest but I'd definitely love to be able to develop applications using wxWidgets that could run on both iPhone (which is already kind of possible) and Android and also reuse at least parts of their code with desktop versions. Unfortunately Android doesn't exactly encourage developing in C++ but things seem to be slowly moving in the right direction and the last NDK release allows to implement GUI applications entirely in C++ by providing the new NativeActivity class.

There is still no convenient access to native widgets but we can use Java classes from C++ code via JNI and we could even automatically wrap them using something like JCC. So at least in principle it seems that there are no obstacles to implementing a working wxAndroid port. And at least wxUniversal could be ported without using JNI at all and just using OpenGL for drawing.

All we need right now are the volunteers (and/or donations...) to make it happen. For me personally it would be one of the most interesting things to do after releasing wxWidgets 3.0.

Thursday, July 22, 2010

GSoC 2010 Mid Term

Even though it was expected because we could see all of them working hard, I'm still happy to announce that all GSoC students working on wxWidgets this summer have passed their mid term evaluations with flying colours, congratulations! To give you some insight in what exactly has happened during the first half of the program, here are progress reports straight from the students themselves:

wxRichTextCtrl image support improvements project

Mingquan Yang

My project generally contains two main parts: an image controlling dialog and multiple image floating supports.

For controlling dailog, in the past weeks, a new class wxRichTextImageDlg was added to control the image properties.
And wxRichTextImageAttr is completed to pass the image property between image object and controlling dialog. Now the dialog supports image alignment, floating and image scaling change. And in layout, we only support image scaling now. The richtext sample application is changed to add the new feature.

The floating layout work started from last week and get a detail discuss about how to anchor an image to a paragraph and how the alignment/floating affect the image with my mentor. Now, code design is complete and I have started coding on this floating algorithm.

Implementing support for new Windows Vista/7 UI elements in wxWidgets

Rickard Westerlund

My work started out slow with school ending late and other issues I've had to deal with. It's going quite well now, I've finished my work on implementing wxCommandLinkButton and I should be finished with task dialog replacement for wxMessageDialog as well as the new wxRichMessageDialog pretty soon. I hope I will also be under way with the task dialog replacement for wxProgressDialog at the time of the mid-term evaluation.

Most of the problems I've encountered have been related to following the code structure and style of wxWidgets, since I haven't worked with it before. Since I've learnt a lot about that I believe the work on the remaining components to go much smoother.

For the next period I will work on implementing a wxSplitButton class and a native implementation of wxHyperLinkCtrl using syslinks for Windows. I've already looked into split buttons and syslinks and come up with some ideas for the implementation.
Finally, for the taskbar-related functionality I had planned I'd like to at least implement the progress bar as it should be possible to implement under other platforms as well.

Masked edit control implementation

Julien Weinzorn

In the beginning, my work was to write documentation and the base of the classes wxMaskedField and wxMaskedEdit. Next I have created unitary test and correct my code.

After this I got some problems with autoconf and event connection, but now it works well. Therefore my timeline was ambitious and the project is a bit more complicated than I thought.

Two weeks ago I have beginning to write a basic sample to test my code and it was not working according to wxPython. Therefore I have test an other way to code maskEdit and the new version works find with single field mask.

At present, wxMaskedField and wxMaskedEdit are completed. I think the docs is for a great part written. Unitary test are write and all test works. The connection between textCtrl and mask works. The connection between comboBox and mask works.

Now I want to add mouse support, and next add sample withing multiple field and default user input (it is an array of possible choice). Next add some advance features like change fill char, add some formatCode to change the mask behaviour and if I have the time, attempt to a regex validation options.

wxQt port

Javier Torres

wxQt is progressing well. I have already implemented wxDC and friends so we can paint on windows and bitmaps. Also, I have started
implementing the window functionality I needed to be able to test the image and drawing samples. Right now, both the drawing and images sample compile and work fine (although some functionality such as blitting is still not there). Some random screenshots comparing side to side with wxGTK (up and left is qt, down and right is gtk):
first and second one.

On the wxWindow front, the event handling architecture is there, and some random events are handled (mousewheeling, OnPaint and some more) and implementing all of these is the next objective. After that, the only thing missing to complete the initial idea for the project is all the details of windows and subclasses (mostly the scrolled window as it is the most different).

Unit tests for the GUI features

Steven Lamerton

GUI unit-testing work is coming along nicely, especially as my exams didn't finish until just before two weeks ago. Before my exams (and during them too!) I worked on wxUIActionSimulator. The keyboard related functions now all take a wxKeyCode rather than platform specific key codes and wxKeyModifiers rather than a long list of bools. The Unix implementation specifically was nearly completely re-written and a wxKeycode -> CGKeyCode function was written for OSX. I now feel wxUIActionSimulator could be enabled by default rather than disabled.

Since exams I have been working entirely on testing. I have written a new wxTestableFrame class for counting events and updated the existing unit-testing framework to make use of it. Once this was completed, and the issue I brought up on the list was solved, I started working on new test cases. In just over a week I have increased the number of tests from roughly 85 to 160. Many of these are testing the events generated by controls and ensuring they actually match up to the documentation.

Thanks once again for all of you and good luck for the rest of the program!

Monday, July 19, 2010

2.9.1 Finally Done

The 2.9.1 is finally officially done, all the files are here or at the FTP mirror. Not much to add to the previous posts about 2.9.1, I can only say that for me this is without doubt the best* wxWidgets release to date and it's incredibly more convenient and practical to use for development than 2.8.

Thanks to Stefan for quickly fixing the two important Mac bugs mentioned in the last update. And thanks for Source Forge for making the releases much, much less painful than in the past -- you can now simply scp the files to their file release system instead of passing by the hideous and incredibly slow (at least in the past when I had to use it) web-based file manager. It's a pleasure to see such outbreaks of common sense, even if (or "especially when"?) they come after years of torturing people with their old interface.

And, of course, thanks to everybody else who contributed to this release and the ongoing wxWidgets development. You're too numerous to be listed here but your help is really appreciated and, as hard as it could be to believe, the release would have taken even longer (if it ever happened at all) without it. Thank you!

* Barring some catastrophic bug which we didn't notice, of course...

Thursday, July 15, 2010

2.9.1 Update

Unfortunately some new bugs prevented us from making 2.9.1 as planned and now we aim at July 19 instead. Please let us know if you find any other important problems in the current svn!

Monday, June 21, 2010

Preparing for 2.9.1

Sorry for lack of posts summarizing the recent wxWidgets development progress and here, to compensate, is a post about an upcoming development: we're finally going to release 2.9.1 soon. This release will include many of the things previously discussed here, notably new debug build handling, thread-safe wxLog, new wxInfoBar class and so on.

It will also probably be the penultimate release before 3.0 as the current thinking is to release 2.9.2 after merging the work of the students on GSoC projects this summer some time in September and then follow with a 3.0 release before the end of the year. So testing and finding bugs and, even worse, regressions compared to the old 2.8 versions would be very welcome.

The schedule for this one is to make a release candidate before the end of this week and the final one on July 12 or, if any important problems are found with the RC, on July 19 to give us some time to hide them under the carpet fix them.

Friday, April 30, 2010

GSoC 2010 Projects Announced

We're very happy to announce that five students have been accepted by Google Summer of Code program to work on wxWidgets this summer. Our congratulations to:
  • Mingquan Yang who will enhance images support in wxRichTextCtrl.
  • Rickard Westerlund who will bring support to new Windows Vista/7 UI elements to wxWidgets.
  • Julien Weinzorn who will implement the masked edit control.
  • Javier Torres who will work on wxQt port implementation.
  • Steven Lamerton who will add many more unit tests for wxWidgets GUI classes.
(if you're wondering about the order, it's really random -- or, rather, reversed (because using the straight one all the time is not fair, especially if your name starts with 'Z' :-) alphabetical order of names).

The projects are a mix of concrete, immediately user-visible improvements and more ambitious long-term investments. But all of them should be very useful to wxWidgets and its users.

Thanks once again to Google for organizing the Summer of Code and looking forward to it!