Difference between revisions of "WxHaskell/Development"

From HaskellWiki
Jump to navigation Jump to search
(→‎See also: Added a link)
(12 intermediate revisions by 3 users not shown)
Line 1: Line 1:
=== Development ===
+
== Development ==
   
wxHaskell is an open-source project, and you are invited to help developing wxHaskell! (see the [[WxHaskell/Contribute|contribute]] page for more information.) Currently the development team consists of:
+
wxHaskell is an open-source project, and you are invited to help developing wxHaskell! (see the [[WxHaskell/Contribute|contribute]] page for more information.) Currently the development team consists of (in no particular order):
   
 
; Jeremy O'Donoghue
 
; Jeremy O'Donoghue
  +
:
: Team leader
 
  +
; Eric Kow
; Mads Lindstrøm
 
  +
:
: Linux support (Debian)
 
  +
; Atze Dijkstra
; Kido Takahiro (shelarcy)
 
  +
:
: Windows support, and MacOS X support
 
  +
; Henk-Jan van Tuyl
  +
: Windows support
  +
  +
 
== Overview ==
  +
 
<ul>
 
<li>wx [[http://hackage.haskell.org/packages/archive/wx/latest/doc/html/Graphics-UI-WX.html documentation]]. The main middle-level library. This library is written in Haskell and only depends on the wxcore package. It uses overloading and attributes to expose a nice functional interface to the wxcore library. However, it does ''not'' try to create a new model for programming GUI interfaces: everything is still in the <tt>IO</tt> monad and state is handled through mutable variables.
 
<li>wxcore [[http://hackage.haskell.org/packages/archive/wxcore/latest/doc/html/Graphics-UI-WXCore.html documentation]]. The Haskell binding to the core wxWidgets library. This is just like programming the wxWidgets library directly, you can see some [https://github.com/wxHaskell/wxHaskell/tree/master/samples/wxcore examples] in the GitHub repository. All the method definitions and marshalling code is generated automatically -- about 500 classes with 2500 methods and 1000 constant definitions. wxcore uses the following two sub-projects:
 
<ul>
 
<li>wxc. A C project that puts a C wrapper around the C++ interface to wxWidgets. This makes it much easier to access the wxWidgets library from Haskell. The C wrapper consists of the C sources of the Eiffel [http://elj.sourceforge.net/projects/gui/ewxw/ ewxw library] for wxWidgets. We also added a few files to make the project suitable for Haskell. A big thank-you to the people that worked on the Eiffel library!
 
<li>wxdirect. A Haskell program that reads the C header files of the wxc C library and automatically generates Haskell marshalling code and class definitions.</li></ul>
 
</ul>
  +
  +
  +
== How to ==
  +
  +
Some articles that describe how to extend wxHaskell or develop packages using wxHaskell:
  +
* [http://wewantarock.wordpress.com/2010/01/07/custom-controls-in-wxhaskell-part-1/ Custom Controls in wxHaskell (part 1)], [http://wewantarock.wordpress.com/2010/01/10/custom-controls-in-wxhaskell-part-2/ (2)], [http://wewantarock.wordpress.com/2010/01/11/custom-controls-in-wxhaskell-part-3/ (3)], [http://wewantarock.wordpress.com/2010/01/13/custom-controls-in-wxhaskell-part-4/ (4)], [http://wewantarock.wordpress.com/2010/01/19/custom-controls-in-wxhaskell-part-5/ (5)].
  +
  +
* [http://wewantarock.wordpress.com/2011/06/17/how-does-wxhaskell-event-handling-work-part-1/ How does wxHaskell event handling work (part 1)]
  +
  +
* [http://wewantarock.wordpress.com/2010/01/31/building-a-text-editor-part-1/ Building a text editor (Part 1)], [http://wewantarock.wordpress.com/2010/01/31/building-a-text-editor-part-2/ (2)], [http://wewantarock.wordpress.com/2010/03/18/building-a-text-editor-part-3/ (3)], [http://wewantarock.wordpress.com/2010/04/06/building-a-text-editor-part-4/ (4)], [http://wewantarock.wordpress.com/2010/04/06/building-a-text-editor-part-5/ (5)].
  +
  +
== See also ==
  +
  +
* [[WxHaskell/Development/Environment]]
  +
* [[WxHaskell/Development/classes/wxAny]]
  +
* [[WxHaskell/Contribute]]
  +
* [http://docs.wxwidgets.org/2.8/ wxWidgets 2.8 documentation]
  +
* [http://docs.wxwidgets.org/2.9/ wxWidgets 2.9 documentation]
  +
* [http://docs.wxwidgets.org/3.0/ wxWidgets 3.0 documentation]
  +
* [http://svn.wxwidgets.org/viewvc/wx/wxWidgets/ The wxWidgets SVN repository]
  +
* [https://github.com/wxWidgets/wxWidgets Read-only mirror of the wxWidgets SVN repo] on GitHub
  +
* [http://www.wxwidgets.org/develop/svn.htm Using SVN] (for wxWidgets)
  +
  +
== Contributors ==
  +
 
The following people have contributed to the wxHaskell project:
  +
 
; Daan Leijen
 
; Daan Leijen
 
: The main developer and designer of wxHaskell
 
: The main developer and designer of wxHaskell
Furthermore, the following people have contributed to the wxHaskell project:
 
 
 
; Wolfgang Thaller
 
; Wolfgang Thaller
 
: Contributed a nifty MacOS X module that enables the use of GHCi on MacOS X.
 
: Contributed a nifty MacOS X module that enables the use of GHCi on MacOS X.
Line 32: Line 70:
 
: Created the initial rpm specification files and released a few rpm distributions of wxHaskell
 
: Created the initial rpm specification files and released a few rpm distributions of wxHaskell
 
; Eric Kow
 
; Eric Kow
: Unicode Support
+
: Unicode support
  +
; Jeremy O'Donoghue
=== Overview ===
 
 
: Team leader
 
; Mads Lindstrøm
 
: Linux support (Debian)
 
; KIDO Takahiro (shelarcy)
 
: Windows support, and MacOS X support
  +
; Brian LEWIS
  +
: Cabal cleanup
  +
   
wxHaskell is a project hosted on [http://sourceforge.net/projects/wxhaskell sourceforge]. The sources are available via darcs on [http://code.haskell.org/wxhaskell/ code.haskell.org].
 
   
<ul>
 
<li>wx [[http://wxhaskell.sourceforge.net/doc documentation]]. The main middle-level library. This library is written in Haskell and only depends on the wxcore package. It uses overloading and attributes to expose a nice functional interface to the wxcore library. However, it does ''not'' try to create a new model for programming GUI interfaces: everything is still in the <tt>IO</tt> monad and state is handled through mutable variables.
 
<li>wxcore [[http://wxhaskell.sourceforge.net/doc documentation]]. The Haskell binding to the core wxWidgets library. This is just like programming the wxWidgets library directly, you can see some [http://code.haskell.org/wxhaskell/samples/wxcore/ examples] in the darcs. All the method definitions and marshaling code is generated automatically -- about 500 classes with 2500 methods and 1000 constant definitions. wxcore uses the following two sub-projects:
 
<ul>
 
<li>wxc. A C project that puts a C wrapper around the C++ interface to wxWidgets. This makes it much easier to access the wxWidgets library from Haskell. The C wrapper consists of the C sources of the Eiffel [http://elj.sourceforge.net/projects/gui/ewxw/ ewxw library] for wxWidgets. We also added a few files to make the project suitable for Haskell, but we made no changes to the original Eiffel sources. This way, we are able to automatically update the sources from their cvs server. A big thank-you to the people that worked on the Eiffel library!
 
<li>wxdirect. A Haskell program that reads the C header files of the Eiffel wxWidgets C library and automatically generates Haskell marshaling code and class definitions.</li></ul>
 
</ul>
 
   
 
[[Category:wxHaskell|Development]]
 
[[Category:wxHaskell|Development]]

Revision as of 14:10, 21 November 2013

Development

wxHaskell is an open-source project, and you are invited to help developing wxHaskell! (see the contribute page for more information.) Currently the development team consists of (in no particular order):

Jeremy O'Donoghue
Eric Kow
Atze Dijkstra
Henk-Jan van Tuyl
Windows support


Overview

  • wx [documentation]. The main middle-level library. This library is written in Haskell and only depends on the wxcore package. It uses overloading and attributes to expose a nice functional interface to the wxcore library. However, it does not try to create a new model for programming GUI interfaces: everything is still in the IO monad and state is handled through mutable variables.
  • wxcore [documentation]. The Haskell binding to the core wxWidgets library. This is just like programming the wxWidgets library directly, you can see some examples in the GitHub repository. All the method definitions and marshalling code is generated automatically -- about 500 classes with 2500 methods and 1000 constant definitions. wxcore uses the following two sub-projects:
    • wxc. A C project that puts a C wrapper around the C++ interface to wxWidgets. This makes it much easier to access the wxWidgets library from Haskell. The C wrapper consists of the C sources of the Eiffel ewxw library for wxWidgets. We also added a few files to make the project suitable for Haskell. A big thank-you to the people that worked on the Eiffel library!
    • wxdirect. A Haskell program that reads the C header files of the wxc C library and automatically generates Haskell marshalling code and class definitions.


How to

Some articles that describe how to extend wxHaskell or develop packages using wxHaskell:

See also

Contributors

The following people have contributed to the wxHaskell project:

Daan Leijen
The main developer and designer of wxHaskell
Wolfgang Thaller
Contributed a nifty MacOS X module that enables the use of GHCi on MacOS X.
Martijn Schrage
Helped to design the library interface and tested the library by using wxHaskell as a backend to Proxima – a sophisticated generic structure editor.
Arjan van IJzendoorn
Developer of NetEdit and provides a lot feedback for improving the library.
Maarten Loffler, Sean Seefried, and Luc Taesch
Contributed samples to the library. Maarten also helped creating a proper windows98 installer.
Andres Löh
Testing on Gentoo Linux with GTK (and has written the graphical editor used by team DOM in the ICFP contest).
Arthur Baars
Testing on MacOS X, and creating MacOS X installers.
Wijnand Suijlen
Has written the Helium interpreter in wxHaskell and initiated the design of the layout combinators.
Eelco Dolstra and Armijn Hemel
Kindly provided their linux computers and unix wisdom :-) to test wxHaskell on Linux/GTK systems. Special thanks goes to Armijn Hemel for maintaining a Red Hat Linux and MacOS X system for testing in the student laboratories.
Jens Petersen
Created the initial rpm specification files and released a few rpm distributions of wxHaskell
Eric Kow
Unicode support
Jeremy O'Donoghue
Team leader
Mads Lindstrøm
Linux support (Debian)
KIDO Takahiro (shelarcy)
Windows support, and MacOS X support
Brian LEWIS
Cabal cleanup