
Hi all, I summarized everything that was said on this email list. I put the result on the web and would like to ask everybody to review it and correct what I got wrong: http://www.cs.ukc.ac.uk/people/staff/as49/poll.pdf After everyone has agreed to what they've said, I'd like to formulate some sort of majority opinion and from that a mission statement. Thank you, Axel.

--- Axel Simon
Hi all,
I summarized everything that was said on this email list. I put the result on the web and would like to ask everybody to review it and correct what I got wrong:
After all, are we ready to specify any kind of low level API? I propose to specify just some set of modules with corresponding functions and data types, while the implementation will leave unspecified. That will allow to implement API with various backends: - wxWindows - GTK - WIN32 - Aqua Maybe the wxWindows backed will be good starting point for the first working prototype. I still prefer native WIN32 and GTK backends but this is just my own preference. Regardless of my own preference I think that if we keep API definition independent of wxWindows or some other backend, that will make possible for voluntiers (like me) to implement API for their prefered backends (WIN32, GTK). I found following key stones: - the implementation for scrolled windows should follow design of GtkScrolledWindow instead of desing of WIN32 which is adopted in ObjectIO. It is interesting that .NET WindowsForms also uses approach similar to GTK. The GTK approach is a litle bit high level and it is more easy to emulate on various platforms. - the menu bar under MAC is attached to application while under WIN32 and GTK it is attached to window. I was already posted some proposals in my previos mail: http://haskell.cs.yale.edu/pipermail/gui/2003-January/000106.html Wolfgang Thaller wrote that "Basically, that should work" but also mention that there are also other differences like "Quit", "About" and probably some other menu commands. See: http://haskell.cs.yale.edu/pipermail/gui/2003-January/000107.html I tried to implement menu bar in Port, following my own proposal and found that this works. In addition to the user specified menu bar the library automaticaly maintain Windows menu for MDI interface. I think that it also can maintain "Quit" and "About" menus. The menu commands should be placed in its prefered places: WIN32 and GTK: "Quit" should be renamed to "Exit" and should be placed in "File" menu. "About" should be in "Help" menu. Aqua: "Quit" and "About" should be placed in "Finder" menu. In both cases the "Quit" will automaticaly close window/application and the "About" should call user specified function which will display About dialog. If the user doesn't specify his/her own function then the library should display system defined About dialog,which will display the application name and the short application description, which need to be specified in the library inialization phase. There are also some reasons to standardize "New file" and "Open file" commands. - The drawing primitives should use graphics context as it is proposed from Axel. This differs from the implementation used in ObjectIO and Port. Best regards, Krasimir __________________________________________________ Do you Yahoo!? Yahoo! Shopping - Send Flowers for Valentine's Day http://shopping.yahoo.com

Krasimir, I think I agree to all you said and feel happy (and more confident) that we find a common route. Before we start discussing implementation details, I would like to formulate a Mission Statement which should talk about what we want in terms of - adherence to native look and feel, possibly restricting the common API in its functionality - professional vs. educational API (former) - level of the common API - platforms we want to cover - the process of finding the API - maybe more And of course all these should be motivated from the discussion. After that we should definitely answer those questions you mentioned, I am especially sorry that we didn't even bother to respond to the MDI/SDI/NDI mail you sent. But that's one of the first things to tackle. Axel. On Wed, Feb 12, 2003 at 01:30:44AM -0800, Krasimir Angelov wrote: > After all, are we ready to specify any kind of low
level API? I propose to specify just some set of modules with corresponding functions and data types, while the implementation will leave unspecified. That will allow to implement API with various backends:
- wxWindows - GTK - WIN32 - Aqua
Maybe the wxWindows backed will be good starting point for the first working prototype. I still prefer native WIN32 and GTK backends but this is just my own preference. Regardless of my own preference I think that if we keep API definition independent of wxWindows or some other backend, that will make possible for voluntiers (like me) to implement API for their prefered backends (WIN32, GTK). I found following key stones:
- the implementation for scrolled windows should follow design of GtkScrolledWindow instead of desing of WIN32 which is adopted in ObjectIO. It is interesting that .NET WindowsForms also uses approach similar to GTK. The GTK approach is a litle bit high level and it is more easy to emulate on various platforms. - the menu bar under MAC is attached to application while under WIN32 and GTK it is attached to window. I was already posted some proposals in my previos mail: http://haskell.cs.yale.edu/pipermail/gui/2003-January/000106.html
Wolfgang Thaller wrote that "Basically, that should work" but also mention that there are also other differences like "Quit", "About" and probably some other menu commands. See: http://haskell.cs.yale.edu/pipermail/gui/2003-January/000107.html
I tried to implement menu bar in Port, following my own proposal and found that this works. In addition to the user specified menu bar the library automaticaly maintain Windows menu for MDI interface. I think that it also can maintain "Quit" and "About" menus. The menu commands should be placed in its prefered places: WIN32 and GTK: "Quit" should be renamed to "Exit" and should be placed in "File" menu. "About" should be in "Help" menu. Aqua: "Quit" and "About" should be placed in "Finder" menu. In both cases the "Quit" will automaticaly close window/application and the "About" should call user specified function which will display About dialog. If the user doesn't specify his/her own function then the library should display system defined About dialog,which will display the application name and the short application description, which need to be specified in the library inialization phase. There are also some reasons to standardize "New file" and "Open file" commands.
- The drawing primitives should use graphics context as it is proposed from Axel. This differs from the implementation used in ObjectIO and Port.
Best regards, Krasimir
__________________________________________________ Do you Yahoo!? Yahoo! Shopping - Send Flowers for Valentine's Day http://shopping.yahoo.com

On Wed, 12 Feb 2003 09:52:03 +0000
Axel Simon
I would like to formulate a Mission Statement which should talk about what we want
Feel free to call it a "requirements analysis" so our work will appear good to software engineers :) V. -- First they ignore you, then they laugh at you, then they fight you, then you win. [Gandhi]

On Wed, Feb 12, 2003 at 12:22:44PM +0100, Nick Name wrote:
On Wed, 12 Feb 2003 09:52:03 +0000 Axel Simon
wrote: I would like to formulate a Mission Statement which should talk about what we want
Feel free to call it a "requirements analysis" so our work will appear good to software engineers :)
I think Mission Statement is more general since it has to address not only the requirements (what) but also how we are tackling things. We'll see. Axel.

Hi All,
--- Krasimir Angelov wrote:
Maybe the wxWindows backed will be good starting point for the first working prototype. I still prefer native WIN32 and GTK backends but this is just my own preference.
To help this discussion, I have put the haddock generated interface of the core wxHaskell binding on the web, so everyone can see how it looks like. http://wxhaskell.sourceforge.net/doc/wxh Some html files are about 3mb in size, so it can take a while to download. (and yes, it is on sourceforge but I wouldn't recommend anyone to try to build it yet as everything is still very initial). All the best, Daan. ----------- and the bye-demo again ---------------- {--------------------------------------------------------------------------------This program implements the "goodbye" demo as posted by John Meacham onthe Haskell GUI mailing list. The program is specified as:I propose a simple program which pops up a window saying 'Hello World' with a button saying 'Bye' which you click and it changes the message to 'Goodbye'. if you click the button again the program exits.When the button is clicked the first time, it calls "onCommand1". This function changes the text of the label and installs another event handler on the button that closes the main frame. (by default, wxWindows exits the gui when all windows are closed).--------------------------------------------------------------------------------}module ByeDemo whereimport Graphics.UI.WXHmain :: IO ()main = run guigui :: IO ()gui = do -- create top frame f <- frameCreateTopFrame "Bye demo" f # windowSetBackgroundColour white -- create text and button control t <- staticTextCreate f idDefault "Hello World" rectNull 0 b <- buttonCreate f idDefault "Bye" rectNull 0 -- put the button underneath the text tsize <- t # windowGetSize b # windowMove (pt 0 (sh tsize)) -- resize the frame around the controls bsize <- b # windowGetSize f # windowSetClientSize (sz (max (sw tsize) (sw bsize)) (sh tsize + sh bsize)) -- set command handler on the button b # buttonOnCommand (onCommand1 f t b) -- show the frame f # windowShow f # windowRaise return () where -- call on the first click onCommand1 f t b = do t # controlSetLabel "Goodbye!" b # buttonOnCommand (onCommand2 f) return () -- call on the second click onCommand2 f = do f # windowClose False return ()

On Wednesday, 2003-02-12, 00:52, Axel Simon wrote:
Hi all,
I summarized everything that was said on this email list. I put the result on the web and would like to ask everybody to review it and correct what I got wrong:
http://www.cs.ukc.ac.uk/people/staff/as49/poll.pdf
After everyone has agreed to what they've said, I'd like to formulate some sort of majority opinion and from that a mission statement.
Thank you, Axel.
Hi Axel, thank you for your work on this. I have to correct something: * I have never said that forcing resizing dialogs onto a Windows user is ok (opinion (b)). In fact I'm strictly against this since it violates native look-and-feel. * The low-level C layer from proposal (a) shall be low-level only concerning programming style (i.e., it shall be imperative). It shall be as high-level as possible concerning the functionality provided because otherwise we might not get native look-and-feel. Wolfgang

On Tuesday 11 February 2003 23:52, Axel Simon wrote:
Hi all,
I summarized everything that was said on this email list. I put the result on the web and would like to ask everybody to review it and correct what I got wrong:
Hello, I've read the summary of my POV. On the whole it accurately reflects MH0, apart from the proposal.. "Implement everything from scratch in Haskell and C (design a Haskell look and feel)" I wasn't proposing a standard Haskell look and feel. Nor was I proposing a standard Haskell control/widget set (or standard Haskell API for such). The library I have in mind would be quite uncommitted in this respect. Regards -- Adrian Hey
participants (6)
-
Adrian Hey
-
Axel Simon
-
Daan Leijen
-
Krasimir Angelov
-
Nick Name
-
Wolfgang Jeltsch