--- /dev/null
+open Gtk
+
+open Utils
+open Property
+
+open TiContainer
+
+class tiframe ~(widget : GBin.frame) ~name ~parent_tree ~pos
+ ?(insert_evbox=true) parent_window =
+object
+ val frame = widget
+ inherit ticontainer ~name ~widget ~parent_tree ~pos
+ ~insert_evbox parent_window as container
+
+ method private class_name = "GBin.frame"
+
+ method private get_mandatory_props = [ "label" ]
+
+ initializer
+ classe <- "frame";
+ frame#set_label name;
+ proplist <- proplist @
+ [ "label",
+ new prop_string ~name:"label" ~init:name ~set:(ftrue frame#set_label);
+ "label_xalign",
+ new prop_float ~name:"label_xalign" ~init:"0.0" ~min:0. ~max:1.
+ ~set:(fun x -> frame#set_label_align ~x (); true);
+ "shadow_type",
+ new prop_shadow ~name:"shadow_type" ~init:"ETCHED_IN"
+ ~set:(ftrue frame#set_shadow_type) ]
+end
+
+let new_tiframe ~name ?(listprop = []) =
+ new tiframe ~widget:(GBin.frame ()) ~name
+
+
+
+
+class tiaspect_frame ~(widget : GBin.aspect_frame) ~name ~parent_tree ~pos
+ ?(insert_evbox=true) parent_window =
+object
+ val aspect_frame = widget
+ inherit tiframe ~name ~widget:(widget :> GBin.frame) ~parent_tree ~pos
+ ~insert_evbox parent_window
+
+ method private class_name = "GBin.aspect_frame"
+
+ initializer
+ classe <- "aspect_frame";
+ frame#set_label name;
+ proplist <- proplist @
+ [ "obey_child",
+ new prop_bool ~name:"obey_child" ~init:"true"
+ ~set:(ftrue aspect_frame#set_obey_child);
+ "ratio",
+ new prop_float ~name:"ratio" ~init:"1.0" ~min:0. ~max:1.
+ ~set:(ftrue aspect_frame#set_ratio)
+ ]
+end
+
+let new_tiaspect_frame ~name ?(listprop = []) =
+ new tiaspect_frame ~widget:(GBin.aspect_frame ()) ~name
+
+
+
+
+class tievent_box ~(widget : GBin.event_box) ~name ~parent_tree ~pos
+ ?(insert_evbox=true) parent_window =
+object
+ val event_box = widget
+ inherit ticontainer ~name ~widget ~parent_tree ~pos
+ ~insert_evbox parent_window
+
+ method private class_name = "GBin.event_box"
+ initializer
+ classe <- "event_box"
+end
+
+let new_event_box ~name ?(listprop = []) =
+ new tievent_box ~widget:(GBin.event_box ()) ~name
+
+
+
+
+class tihandle_box ~(widget : GBin.handle_box) ~name ~parent_tree ~pos
+ ?(insert_evbox=true) parent_window =
+object
+ val handle_box = widget
+ inherit ticontainer ~name ~widget ~parent_tree ~pos
+ ~insert_evbox parent_window
+
+ method private class_name = "GBin.handle_box"
+
+ initializer
+ classe <- "handle_box";
+ proplist <- proplist @
+ [ "shadow_type",
+ new prop_shadow ~name:"shadow_type" ~init:"OUT"
+ ~set:(ftrue handle_box#set_shadow_type);
+ "handle_position",
+ new prop_position ~name:"handle_position" ~init:"LEFT"
+ ~set:(ftrue handle_box#set_handle_position);
+ "snap_edge",
+ new prop_position ~name:"snap_edge" ~init:"TOP"
+ ~set:(ftrue handle_box#set_snap_edge)
+ ]
+end
+
+let new_handle_box ~name ?(listprop = []) =
+ new tihandle_box ~widget:(GBin.handle_box ()) ~name
+
+
+
+
+
+class tiviewport ~(widget : GBin.handle_box) ~name ~parent_tree ~pos
+ ?(insert_evbox=true) parent_window =
+object
+ val viewport = widget
+ inherit ticontainer ~name ~widget ~parent_tree ~pos
+ ~insert_evbox parent_window
+
+ method private class_name = "GBin.viewport"
+
+ initializer
+ classe <- "viewport";
+ proplist <- proplist @
+ [ "shadow_type",
+ new prop_shadow ~name:"shadow_type" ~init:"OUT"
+ ~set:(ftrue viewport#set_shadow_type)
+ ]
+end
+
+let new_viewport ~name ?(listprop = []) =
+ new tiviewport ~widget:(GBin.handle_box ()) ~name
+
+
+
+
+
+class tiscrolled_window ~(widget : GBin.scrolled_window)
+ ~name ~parent_tree ~pos ?(insert_evbox=true) parent_window =
+ object(self)
+ val scrolled_window = widget
+ inherit ticontainer ~name ~insert_evbox
+ ~parent_tree ~pos ~widget parent_window
+
+ method private class_name = "GBin.scrolled_window"
+ method private name_of_add_method = "#add_with_viewport"
+
+ method private add rw ~pos =
+ scrolled_window#add_with_viewport (rw#base);
+ children <- [ rw, `START];
+ self#set_full_menu false;
+ tree_item#drag#dest_unset ()
+
+(* we must remove the child from the viewport,
+ not from the scrolled_window;
+ it is not mandatory to remove the viewport
+ from the scrolled_window *)
+ method remove child =
+ let viewport = (new GContainer.container (GtkBase.Container.cast (List.hd scrolled_window#children)#as_widget)) in
+ viewport#remove child#base;
+(* scrolled_window#remove (List.hd scrolled_window#children); *)
+ children <- [ ];
+ self#set_full_menu true;
+ tree_item#drag#dest_set ~actions:[`COPY]
+ [ { target = "STRING"; flags = []; info = 0} ]
+
+
+ initializer
+ classe <- "scrolled_window";
+ proplist <- proplist @
+ [ "hscrollbar_policy",
+ new prop_policy ~name:"hscrollbar_policy" ~init:"ALWAYS"
+ ~set:(ftrue scrolled_window#set_hpolicy);
+ "vscrollbar_policy",
+ new prop_policy ~name:"vscrollbar_policy" ~init:"ALWAYS"
+ ~set:(ftrue scrolled_window#set_vpolicy) ]
+end
+
+let new_tiscrolled_window ~name ?(listprop = []) =
+ new tiscrolled_window ~widget:(GBin.scrolled_window ()) ~name
+
+