sig
  exception DotError of string
  type t_point = float * float
  type t_coord = ViewGraph.t_point * ViewGraph.t_point
  type t_graph
  type t_node
  type t_gtk_obj = GnomeCanvas.re_p GnoCanvas.item
  val get_id : ViewGraph.t_node -> string
  val get_coord : ViewGraph.t_node -> ViewGraph.t_coord option
  val get_obj : ViewGraph.t_node -> ViewGraph.t_gtk_obj option
  val get_neighbours :
    ViewGraph.t_graph ->
    ViewGraph.t_node -> ViewGraph.t_node list * ViewGraph.t_node list
  module type SigCb =
    sig
      type t_env
      val button_one_press_on_graph : ViewGraph.SigCb.t_env -> unit
      val button_two_press_on_graph : ViewGraph.SigCb.t_env -> unit
      val button_three_press_on_graph : ViewGraph.SigCb.t_env -> unit
      val button_one_press_on_node :
        ViewGraph.SigCb.t_env -> ViewGraph.t_node -> unit
      val button_two_press_on_node :
        ViewGraph.SigCb.t_env -> ViewGraph.t_node -> unit
      val button_three_press_on_node :
        ViewGraph.SigCb.t_env -> ViewGraph.t_node -> unit
      val enter_node : ViewGraph.SigCb.t_env -> ViewGraph.t_node -> unit
      val leave_node : ViewGraph.SigCb.t_env -> ViewGraph.t_node -> unit
    end
  module EmptyCb :
    sig
      type t_env = unit
      val button_one_press_on_graph : t_env -> unit
      val button_two_press_on_graph : t_env -> unit
      val button_three_press_on_graph : t_env -> unit
      val button_one_press_on_node : t_env -> t_node -> unit
      val button_two_press_on_node : t_env -> t_node -> unit
      val button_three_press_on_node : t_env -> t_node -> unit
      val enter_node : t_env -> t_node -> unit
      val leave_node : t_env -> t_node -> unit
    end
  module M :
    functor (Cb : SigCb->
      sig
        val open_dot_file :
          Cb.t_env ->
          GnoCanvas.canvas -> ?dot_cmd:string -> string -> ViewGraph.t_graph
        val clear : GnoCanvas.canvas -> ViewGraph.t_graph -> unit
      end
end