WX.Net

About/News
Screenshots

Documentation
    Why WX.Net? 
    Roadmap
    Release Notes
    Building From Source
    Tutorial
    User Manual
    Reference Doc.
    WX.Build Doc.
    wxWidgets

Download

Who's Who
SourceForge

Get WX.Net at SourceForge.net. Fast, secure and Free Open Source software downloads

Built with wxWidgets

Works on Mono

?????????????????????????

Release Notes for wx.NET v0.5

0.5 Beta 1
10 June 2004

New Classes

Associated support classes shown in parentheses; links go to corresponding wxWidgets documentation.

  • Display (VideoMode)
    Determines the sizes and locations of displays connected to the system. Supported always on Mac and Windows. Only supported on Linux when the Xinerama extension in XFree86 has been installed. Xinerama allows applications and window managers to use two or more physical displays as one large virtual display.
  • GDI: GDIPens, GDIBrushes, ColourDatabase, PenList, BrushList, FontList
  • GridBagSizer
    A sizer that can lay out items in a virtual grid like a FlexGridSizer but explicit positioning of the items is allowed and items can optionally span more than one row and/or column
  • HtmlListBox
    Create impressive looking lists by embedding using HTML as listbox rows. Here's an example of HtmlListBox in action, used within a photo application Bryan Bulten is creating using wx.NET.
  • Listbook
    Similar to Notebook, but uses a ListCtrl to show labels instead of tabs.
  • ListView
    A simpler interface for ListCtrl.
  • SashWindow (SashEvent, SashEdge)
    A window with edges that can be dragged to resize the window.
  • SashLayoutWindow (LayoutAlgorithm)
    Provides a way to use simple accessors to specify how the window should be laid out, rather than having to respond to events.
  • SizerItem
    Used to track the position, size and other attributes of each item managed by a Sizer.
  • TabCtrl
    Manages multiply "tabbed" pages. Windows only.
  • VListBox
    A virtual ListBox useful for very large lists whereby callbacks are used to draw items only when needed. HtmlListBox inherits from this.
  • VScrolledWindow
    A virtual Panel.

New Samples

  • Display
  • EventDemo
  • HtmlListBox
  • Listbook
  • SashWindow
  • XrcDemo

Major Class Changes

  • App
    • Now uses callback instead of event for OnInit and also has an OnExit callback
  • Window
    • Added more .NET friendly ClientToScreen and ScreenToClient which use Point
    • Common events added (see below)
    • Added some common System.Windows.Forms convienence properties: Top, Left, Right, Bottom, Width, Height for porting simplicity
  • XmlResource

Numerous bug fixes and improvements. XmlResource is the class the drives the XML-based resource system known as XRC. UI layout for elements such as dialogs, frames, menu bars and toolbars can be stored in text files and loaded into your application at run-time. XmlResource now supports the use of .NET-based sub-classes. For example, you could sub-class Button as MyButton in your C# code and then use the class MyButton in your XRC file. By default the current namespace/assembly is searched for the sub-class. But you can also specify an assembly and namespace by using [assembly]namespace.class syntax.

These wx.NET-only properties control assembly/namespace searching for your sub-class:

  • string SubclassNamespace
    If the class name does not have a dot (.) in it, use this value as the namespace for the sub-class. If SubclassNamespace is null/empty, use the namespace of the invoking class (i.e. determine dyanmically, not just once).
  • string SubclassAssembly
    Used only if an assembly has not been set via the [assembly]class XRC convention. If SubclassAssembly is null/empty, the assembly of the invoking class will be used.

Mac OS X Improvements

Much work has been done to improve Mac support in this release. All samples now run under DotGNU Portable.Net (aka PNET) 0.6.6. And the new build system and instructions described below make it easy to get going. There are still outstanding issues, particularly with the HtmlWindow class, but these should be addressed in time for the next wx.NET release. Here is a screenshot of some samples.

New Event System

Standard .NET events are now available within many classes. Generically the Window base class provides the following:

Activated · Char · Closing · KeyUp · LeftDoubleClick · LeftDown · LeftUp · MiddleDoubleClick · MiddleDown · MiddleUp · MouseEnter · MouseLeave · MouseMove · MouseThumbTrack · Moved · Resized · RightDoubleClick · RightDown · RightUp · ScrollLineDown · ScrollLineUp

Many derived classes provide additional events. And some classes derived directly from wxObject have their own unique events. For example, a MenuItem has a Click and Select event.

C# coders can use standard delegate magic to bind to a wx.NET event:

button.Click += new EventListener( OnClick);

VB.NET coders can simply use the WithEvents keyword when declaring a widget.

UInt Change

Unsigned integers (uint) types were exposed in public interfaces under v0.4. uint is not CLS compliant and can not be used in VB.NET 2002/2003. uints were changed to Integer. This may require minor changes to your code.

New Build System and Platform Specific Build Documentation

Building wxWidgets and wx.NET can get a bit tedious and error prone given all the optional components (such as XmlResource) and different options for different platforms. We've created a wrapper build system to ease the pain somewhat.

Under the Build sub-directory you'll find build wrappers and detailed documentation for the major platforms:

  • Linux GTK+ using GNU tools and either Mono or PNET
  • MacOS X using Apple's GNU tools and DarwinPorts Mono or PNET
  • Windows using VS.NET 2002/2003

Click a link above to view the custom build instructions for a particular platform.

In each case a Makefile and custom tools provide a wrapper around the wxWidgets and wx.NET configure, compile, and install process. We've even included a tested pre-compiled version of premake to simplify use and support.

This system does not replace the premake front-end that drives the wx.NET built; it simply provides a layer on top of it.

If you find any bugs or have any feedback please contact Mike Muegel by sending an e-mail to wxnet-users.

New Tool - TowxNET

This C# application can read XRC or wxGlade WXG UI layout files and generate the appropriate C# or VB.NET source code for each class.

Some of the main features:

  • Command line or UI driven (--gui)
  • C# (default) or VB.NET (--basic) output
  • Updateable output! When TowxNET creates a file for the first time, it encloses the auto-generated code in #regions. TowxNET will leave code outside of these regions alone. So that you can edit the file and insert event initialization code, your event handlers, and other runtime logic. If you change your UI, just re-run TowxNET. All your custom code will still be there. NOTE: this feature is not operational yet in VB.NET.

Please review Utils/TowxNET/README.txt. A sample application that has been created with TowxNET can be found under Utils/TowxNET/Samples/Src/Controls. C# and VB.NET versions are available as is the original input XRC file.

TowxNET is very new and may have some bugs. If you have any feedback or problems, please contact Alexander Olk by sending an e-mail to wxnet-users .

If you are looking for an XRC editor see the list at the wxWidgets site. We like wxGlade if you need a free tool and the commercial DialogBlocks or wxDesigner if you have some spare change.

Errata

  • Bug fixes too numerous to mention during this pre-release development phase. For a full list of changes, see the ChangeLog since version 0.4. A list of new files is also available.

0.5 Beta 2
24 June 2004

Build System

  • On Mac/Linux, when you do a "make wxnet", install is no longer done by default. You can do "make wxnet-install" at any time.
  • The install that is performed is a much more complete package. wxWidgets shared libraries are copied to WXNET_INSTALL_DIR/Bin. A top-level README.txt file is created that explains how to launch the samples and describes in more detail development and runtime issues with wx.NET.dll, wx-c, and the wxWidgets shared libraries.
  • To ensure you pick up the correct wxWidgets shared libraries on a Linux build, use the "wxnet-run" shell script that gets created in either WXNET_INSTALL_DIR/Bin or your source tree Bin.
  • More "clean" options in the Mac/Linux make. Type "make" to see all options.
  • In the Build/{Linux,MacOSX}/Defs.in, many of the example directories now use $(HOME) to callout the user's home directory.

Mac Improvements

  • A bug in wxMac-2.5.2 was found which caused bitmap loading problems was identified. If you are compiling wx.NET for Mac yourself please patch the wxMac source code as described in section 7 of the Mac build README. This problem will be fixed in wxMac-2.5.3.
  • Samples now run under Mono. PNET has no problem mapping wx-c to wx-c.dylib; Mono, however, needs some hints on the Mac as it seems to be looking for libwx-c.so (a Linux-style library name). So a wx.NET.dll.config file now gets installed to Bin to give Mono mapping hints.
  • Bundles determine the path to the .NET runtime (mono or ilrun) to use more dynamically so that the bundles are more portable to other user's Macs. The bundle scripts that get generated by "make wxnet" and "make wxnet-install" on the Mac are now written in Perl. Here is an example.
  • The FreeCell and ImgView samples now work. See updated Mac screenshot.
  • Problems with the Font and Mdi samples were also resolved.
Misc
  • TowxNET now fully supports VB.NET, including the update feature when you re-run towxnet on an existing .vb output file.
  • The Demos/FreeCell VB.NET app has been simplified to work under the improved 0.5 API. A pre-compiled assembly is now include in the source distribution as the Mono VB.NET compiler is not 100% yet.
  • wx.NET.dll is now signed with an unsecured private/public keypair to facilitate experimentation with the GAC. They keypair is in Src/wx.NET/keys.snk 
  • New CONTRIBUTORS.txt file.

0.5 Final
4 July 2004

Build System

  • "make wxw" no longer builds the samples under Linux and MacOS. Do a "make wxw-samples" if you want to build the samples (recommended for first time wxWidgets developers).
  • The premake Linux binary included in the source has been compiled against an older version of GLIBC for compatibility on older Linux distros.
  • The Windows binary release now includes .config files for exe assemblies so they run under both MS.NET 1.0 and 1.1.

Misc

  • New Sample Launcher by Alexander Olk provides an easy way to browse and start the samples and demos. Available from the top-level of the install or source folder as "Sample-Launcher."
  • New User Manual by Mike Muegel covers wx.NET compilation, installation, samples, and library use in detail. In addition to being available online (latest release), the version for a particular release is also included in the source and binary distributions. Many of the README files have been deleted or slimmed down in favor of the user manual.

Mac Improvements

  • HtmlWindow issues fixed on the Mac. Thus the Mac now is a fully supported wx.NET platform!
  • The bundles now have a custom wxWidgets icon

Contributors (Not Exhaustive!)

  • Alexander Olk has been very busy since our last release. In addition to being responsible for most of the new classes and samples, he created the powerful standalone utility, TowxNET. Alexander also developed the new event system and helped fix a number of bugs. Alexander also created the sample launcher.
  • Bryan Bulten implemented various events within a number of classes using the new event system. Bryan also created the new GridBagSizer and SizerItem classes and did key work in providing .NET-based sub-classing within XmlResource.
  • Michael Muegel joined the team. Mike made bug fixes and tweaks here and there, added the Display class/sample, and created the build wrapper system. Mike also worked to get wx.NET working better on the Mac and did various CVS project automation tasks. Mike also handled version 0.5 release management, created the new user manual, and refreshed the Website for all the many 0.5 changes.