From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on yquem.inria.fr X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=AWL autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from mail4-relais-sop.national.inria.fr (mail4-relais-sop.national.inria.fr [192.134.164.105]) by yquem.inria.fr (Postfix) with ESMTP id B8A92BC6C for ; Wed, 6 Feb 2008 20:06:13 +0100 (CET) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ao8CADKTqUeAKs4F/2dsb2JhbACtaA X-IronPort-AV: E=Sophos;i="4.25,313,1199660400"; d="scan'208";a="22309960" Received: from netscaler2.rice.edu (HELO mh2.mail.rice.edu) ([128.42.206.5]) by mail4-smtp-sop.national.inria.fr with ESMTP; 06 Feb 2008 20:06:12 +0100 Received: from mh2.mail.rice.edu (localhost.localdomain [127.0.0.1]) by mh2.mail.rice.edu (Postfix) with ESMTP id 7357836D00B; Wed, 6 Feb 2008 13:06:11 -0600 (CST) X-Virus-Scanned: by amavis-2.4.4 at mh2.mail.rice.edu Received: from mh2.mail.rice.edu ([127.0.0.1]) by mh2.mail.rice.edu (mh2.mail.rice.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ULVlrwvWMbdG; Wed, 6 Feb 2008 13:06:11 -0600 (CST) Received: from [10.97.94.2] (student-97-wless94-002.rice.edu [10.97.94.2]) (using TLSv1 with cipher RC4-MD5 (128/128 bits)) (No client certificate requested) by mh2.mail.rice.edu (Postfix) with ESMTP id 09F2136CFD6; Wed, 6 Feb 2008 13:06:06 -0600 (CST) Message-ID: <47AA0563.80706@rice.edu> Date: Wed, 06 Feb 2008 13:07:15 -0600 From: Gregory Malecha Reply-To: gmalecha@rice.edu User-Agent: Thunderbird 2.0.0.9 (X11/20071031) MIME-Version: 1.0 To: gmalecha@rice.edu Cc: Olivier Andrieu , caml-list@yquem.inria.fr Subject: Re: [Caml-list] LablGTK Reading Properties References: <47A89124.1040304@rice.edu> <95513600802060057g1d866af1of277c8f086f6483b@mail.gmail.com> <47A9E900.6000403@rice.edu> In-Reply-To: <47A9E900.6000403@rice.edu> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Spam: no; 0.00; lablgtk:01 gdk:01 iter:01 printf:01 printf:01 iter:01 stdout:01 gdk:01 gpack:01 grange:01 grange:01 gwindow:01 gmain:01 gmain:01 andrieu:01 I got it working with lines, but not with polygons. Here's my code: open Gdk.GC;; open GnomeCanvas;; let points item = let prop = {Gobject.name = "points"; Gobject.conv = GnomeCanvas.Conv.points} in let x = Gobject.get prop item in match x with None -> print_string "NONE!\n"; [] | Some ary -> print_string "SOME!\n"; Array.to_list ary ;; let rec draw canvas root = let line = GnoCanvas.line ~points:[|1.;2.; 3.;4. |] root in let poly = GnoCanvas.polygon ~points:[| 45.;35.; 100.;60.; 80.;70.|] root in let _ = print_string "Line Points\n" in let _ = List.iter (Printf.printf "%f\n") (points line#as_item) in let _ = print_string "Polygon Points\n" in let _ = List.iter (Printf.printf "%f\n") (points poly#as_item) in let _ = flush stdout in () ;; let createCanvas window = (* GtkBase.Widget.push_colormap (Gdk.Rgb.get_cmap ()) ; *) let canvas = GnoCanvas.canvas ~width:600 ~height:450 () in canvas#set_center_scroll_region false ; GtkBase.Widget.pop_colormap () ; let table = GPack.table ~rows:2 ~columns:2 ~row_spacings:4 ~col_spacings:4 ~packing:window#add () in let frame = GBin.frame ~shadow_type:`IN () in table#attach ~left:0 ~right:1 ~top:0 ~bottom:1 ~expand:`BOTH ~fill:`BOTH ~shrink:`BOTH ~xpadding:0 ~ypadding:0 frame#coerce ; canvas#set_scroll_region 0. 0. 900. 450. ; frame#add canvas#coerce ; let w = GRange.scrollbar `HORIZONTAL ~adjustment:canvas#hadjustment () in table#attach ~left:0 ~right:1 ~top:1 ~bottom:2 ~expand:`X ~fill:`BOTH ~shrink:`X ~xpadding:0 ~ypadding:0 w#coerce ; let w = GRange.scrollbar `VERTICAL ~adjustment:canvas#vadjustment () in table#attach ~left:1 ~right:2 ~top:0 ~bottom:1 ~expand:`Y ~fill:`BOTH ~shrink:`Y ~xpadding:0 ~ypadding:0 w#coerce ; canvas#misc#set_can_focus true ; canvas#misc#grab_focus () ; canvas ;; let createGui () = let window = GWindow.window () in let canvas = createCanvas window in begin canvas#event#connect#button_press ~callback:(fun _ -> draw canvas canvas#root; false); ignore (window#connect#destroy ~callback:GMain.Main.quit); window#show (); draw canvas canvas#root; GMain.Main.main end ;; let _ = let main = createGui () in main () ;; The output from this is: Line Points SOME! 1.000000 2.000000 3.000000 4.000000 Polygon Points NONE! Is this done for polygons differently? Thanks. Gregory Malecha wrote: > I've modified the function and I'm still getting the same behavior. > Here is my new code: > > let points item = > let prop = {Gobject.name = "points"; > Gobject.conv = GnomeCanvas.Conv.points} in > let x = Gobject.get prop item in > match x with > None -> print_string "NONE!\n"; [] > | Some ary -> > print_string "SOME!\n"; > Array.to_list ary > > Is there a particular thing that I have to do before I can get the > points? Does anyone have an example where they are able to do this? > > Thanks. > > Olivier Andrieu wrote: >> Hi, >> >> On Feb 5, 2008 5:39 PM, Gregory Malecha wrote: >> >>> Hi, >>> >>> I've been working on some code with GnomeCanvas and I'm having >>> difficulty reading properties off of objects. For example, I've created >>> a polygon and I want to read the points from it, but I always get back >>> None. Here's my current code: >>> >>> let points item = >>> let prop = {Gobject.name = "points"; >>> Gobject.conv = GnomeCanvas.Conv.path_def} in >>> let x = Gobject.get prop item in >>> match x with >>> None -> print_string "NONE!\n"; [] (* I always end up in this >>> case *) >>> | Some ary -> >>> print_string "SOME!\n"; >>> let ary = GnomeCanvas.Conv.get_points ary in >>> Array.to_list ary >>> >> >> you're getting None because you're using the wrong conversion >> function: this "points" property is basically a float array and here >> you're using the path_def conversion which is for bpath (bezier path). >> >> Your code should work with: >> let prop = {Gobject.name = "points"; conv = >> GnomeCanvas.Conv.points} in ... >> >> > -- gregory malecha wiess college computer science 219.510.3400