Mailing list for all users of the OCaml language and system.
 help / color / mirror / Atom feed
From: yoann padioleau <padator@wanadoo.fr>
To: Chris Campbell <cyberdanx@gmail.com>
Cc: Jon Harrop <jon@ffconsultancy.com>, caml-list@yquem.inria.fr
Subject: Re: GUI for OCaml (was: Re: [Caml-list] Does LablTk have a future?)
Date: Wed, 31 Aug 2005 00:49:05 +0200	[thread overview]
Message-ID: <B8DFA291-6FE8-4F75-BAED-19F07433F777@wanadoo.fr> (raw)
In-Reply-To: <c22844d105083009256c816e1a@mail.gmail.com>

>>
>>> I'm not even sure what a "functional" API for a
>>> GUI toolkit would look like.  Ideas?  Example code snippets?
>>>

In fact the API is already "functional" in some way, because in ocaml
(as well as in perl, ruby, ...) you can pass closure as callbacks.  
This is something really great for GUI compared
to langage like C where you have to separate the code responsible for  
creation of the widget from
the code responsible for the action on the widget.

Another point is that it is functional because you can compose the  
widgets together. You can nest them so the nesting of the code
can be put in paralell with the nesting in the widgets.

You can do

build_app_widget(title: "myapp",
      (build_vbox
        (build_menu
           (build_item "File" callback:(fun () -> some_action))
           (build_item "Close"  callback:(fun () -> some_other_action)
      ...
     )
     (build_hbox
       (build_canvas
         (...
      )
   ...
  )



>>
>> I think the GUI code should be split into definition (i.e. how the  
>> widgets are
>> laid out) and execution (i.e. what functions are called for GUI  
>> events). The
>> former should be functional in style because it is easier to write  
>> and more
>> succinct and the latter should be imperative in style because it is
>> essentially poking a state machine about.
>>
>
> This sounds like QTk.  It is a wrapper to Tk that uses records (tuples
> and atoms are records in Oz) and call backs to implement the gui.
> It's quite effective.  In Oz, your example would look something like
> this... (warning, last Oz use was a while ago)
>
> Qtk.build td(lr(label:"Search" text(handle: H))
>                  (lr(button(text:"Add" action:P)
>
> Where P and H are call back procedures.
>

 From what I remember you can do exactly the kind of stuff you wrote  
with lablgtk quite easily.

The only problem is that many times in H and P you want to modify the  
state of the widget (for instance modify the text in an entry) and in  
that
case you have to name the widget  with a let.


>
> Make it independant to a degree.  Most GUIs offer the same  
> functionality anyway.
>


I agree.

>
> Chris
>
> _______________________________________________
> Caml-list mailing list. Subscription management:
> http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
> Archives: http://caml.inria.fr
> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
> Bug reports: http://caml.inria.fr/bin/caml-bugs
>
>



  reply	other threads:[~2005-08-30 22:56 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-08-28 15:38 Does LablTk have a future? Matt Gushee
     [not found] ` <aefe758210f7fa0b9846b0ea4278cf3a@rouaix.org>
2005-08-28 23:21   ` [Caml-list] " Matt Gushee
2005-08-29 22:33 ` Jon Harrop
2005-08-30  4:39   ` Matt Gushee
2005-08-30 11:39     ` Yaron Minsky
2005-08-30 11:48     ` Jon Harrop
2005-08-30 12:22       ` David MENTRE
2005-08-30 13:45         ` Jon Harrop
2005-08-30 15:47           ` David MENTRE
2005-08-30 16:08             ` Jon Harrop
2005-09-01  4:25               ` Matt Gushee
2005-09-01 11:20                 ` Matt Gushee
2005-09-01 11:26                   ` Matt Gushee
2005-09-01 14:09                 ` Chris Campbell
2005-08-30 16:21           ` Bardur Arantsson
2005-08-30 17:47           ` [Caml-list] " David Thomas
2005-08-30 18:06             ` Tyler Eaves
2005-08-30 19:01             ` Jon Harrop
2005-08-30 22:55               ` Chris Campbell
     [not found]               ` <c22844d10508301553b54841b@mail.gmail.com>
2005-08-30 22:56                 ` Fwd: " Chris Campbell
2005-08-30 23:04                   ` Doug Kirk
2005-08-31  0:08                   ` Fwd: " Jon Harrop
2005-08-31  0:31                     ` Olivier Andrieu
2005-08-31  8:48               ` Feeding the OCaml GUI troll (was: Re: [Caml-list] Does LablTk have a future?) David MENTRE
2005-08-31  9:06                 ` Proposal a GUI from Ocamlsdl Christophe Raffalli
2005-08-31 14:39                   ` [Caml-list] " Jon Harrop
2005-09-01 19:27                     ` Nathaniel Gray
2005-08-31 14:27                 ` Feeding the OCaml GUI troll (was: Re: [Caml-list] Does LablTk have a future?) Jon Harrop
2005-09-01  4:49                 ` Feeding the OCaml GUI troll Matt Gushee
2005-09-01 13:15                   ` [Caml-list] " skaller
2005-09-01 13:28                     ` David MENTRE
2005-09-01 13:50                       ` skaller
2005-09-01 14:43                     ` Chris Campbell
2005-09-02  7:40                     ` Ville-Pertti Keinonen
2005-09-02 12:39                       ` skaller
2005-09-03 10:34                         ` Damien Bobillot
2005-09-03 12:30                           ` skaller
2005-09-04 14:08                           ` Richard Jones
2005-09-03 11:10                         ` yoann padioleau
2005-09-03 11:30                           ` Jonathan Roewen
2005-09-03 17:23                           ` Doug Kirk
2005-09-04 14:01                         ` Richard Jones
2005-09-01 19:23                 ` Feeding the OCaml GUI troll (was: Re: [Caml-list] Does LablTk have a future?) Nathaniel Gray
2005-09-01  4:31             ` [Caml-list] Does LablTk have a future? Matt Gushee
2005-09-01  4:17       ` Matt Gushee
2005-09-01 13:25         ` Jon Harrop
2005-08-30  7:16   ` GUI for OCaml (was: Re: [Caml-list] Does LablTk have a future?) David MENTRE
2005-08-30  9:53     ` GUI for OCaml Christophe Raffalli
2005-08-30 10:28       ` [Caml-list] " David MENTRE
2005-08-30 13:04         ` Bünzli Daniel
2005-08-30 17:13         ` David Thomas
2005-08-30 11:18       ` Mark Shinwell
2005-08-30 14:22       ` Jacques Carette
2005-08-30 23:12         ` Pietro Abate
2005-08-30 14:14     ` GUI for OCaml (was: Re: [Caml-list] Does LablTk have a future?) Richard Jones
2005-08-30 15:33       ` mmzeeman
2005-08-30 15:44         ` Jon Harrop
2005-08-30 22:34         ` yoann padioleau
2005-09-01  4:58           ` Matt Gushee
2005-08-30 16:01       ` Jon Harrop
2005-08-30 16:25         ` Chris Campbell
2005-08-30 22:49           ` yoann padioleau [this message]
2005-08-30 16:03       ` Chris Campbell
2005-08-30 22:31     ` yoann padioleau
2005-08-31  8:19       ` About Lablgtk2 (was: e: GUI for OCaml) David MENTRE
2005-09-03 11:41         ` yoann padioleau
2005-08-30 17:35   ` [Caml-list] Does LablTk have a future? Olivier Andrieu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=B8DFA291-6FE8-4F75-BAED-19F07433F777@wanadoo.fr \
    --to=padator@wanadoo.fr \
    --cc=caml-list@yquem.inria.fr \
    --cc=cyberdanx@gmail.com \
    --cc=jon@ffconsultancy.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox