From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by yquem.inria.fr (Postfix) with ESMTP id B2B59BC57 for ; Mon, 29 Nov 2010 14:20:19 +0100 (CET) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AugBAN0280zRVdc0kGdsb2JhbACidQgWAQEBCQkMBxEDH6hJiWSCGIRVLohWAQEDBYVCBIphhgA X-IronPort-AV: E=Sophos;i="4.59,275,1288566000"; d="scan'208";a="68277189" Received: from mail-ew0-f52.google.com ([209.85.215.52]) by mail3-smtp-sop.national.inria.fr with ESMTP; 29 Nov 2010 14:20:19 +0100 Received: by ewy23 with SMTP id 23so1726466ewy.39 for ; Mon, 29 Nov 2010 05:20:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:content-type; bh=eA+XRN4YHftQmgg3Q8PBspv9nZba0XKrIYpOLayZq2E=; b=CFN+rhua43avfzIaIZe2/rxTnU/PNx2c81fEYN226gmOD+D76NMzAIuyh3CBtjzDu8 Bwo7ZUJ6c/cCCq7QSVIcuq8HnFPqXF4HW22jb4XYZkWn+h24U4LBhrWcm+hKsNDGVR/y VM3uSV90BfLZGPp0NfgKNvQTnDHdF8mcZ4Ozg= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; b=WVrgd2Sp/d4XjrnYrGe9P5geNPGeyFUm2WCbiB4/pbzQO/cxlPgBx3/xP78Jr0NX53 cqArfx3Ay83XzfkKfQZql1zjuS0bdCqN9CyE3SaxpkRXNlTJ5XGEZNVQJW+1Q6FgA2B3 /PeKKLPvHx44fCj2puaP/XLxo/Q9cvcJFLCcY= MIME-Version: 1.0 Received: by 10.213.19.212 with SMTP id c20mr3076533ebb.61.1291036818396; Mon, 29 Nov 2010 05:20:18 -0800 (PST) Received: by 10.213.16.130 with HTTP; Mon, 29 Nov 2010 05:20:17 -0800 (PST) In-Reply-To: References: <4CEC4EF0.30805@lexifi.com> Date: Mon, 29 Nov 2010 14:20:17 +0100 Message-ID: Subject: Re: [Caml-list] Desktop GUI toolkits - current state of the art? From: Adrien To: OCaml List Content-Type: text/plain; charset=ISO-8859-1 X-Spam: no; 0.00; haskell:01 gtk:01 gtk:01 val:01 bool:01 vertically:01 doable:01 toolbar:98 pane:98 pane:98 toolbar:98 panes:98 wrote:01 caml-list:01 widget:03 On 28/11/2010, Adrien wrote: > Hi, > > As far as I'm concerned I've started experimenting with the concept of > "tiling" (as used by tiling window managers) and zippers of horizontal > and vertical boxes. That's pretty much what xmonad (window manager > written in haskell) does. The zipper allows to nicely track the > "current" widget. Hi, Of course, I forgot to mention one point: it's not hard to create an "zipper_of_list" function, which means it'd be possible to have something in the spirit of: type t = | Widget of Gtk.widget Gtk.obj | Zipper of t list val vertical : ?expand:bool -> widgets:(t list) -> t Gtk.Zipper.(of_list [ vertical [ Widget menubar; Widget toolbar; horizontal ~expand:true [ Widget left_pane; Widget right_pane ]; Widget statusbar; ]]) That would create a standard view with menubar, toolbar, statusbar and a central view split vertically in two panes. That isn't ready yet and it'll take some time but I believe it's doable. :-) -- Adrien Nader