method insert_node ?parent dirname name =
      let row = store#append ?parent () in
      store#set row col_complete name;
      store#set row col_display (self#dir_string name);
      self#row_inserted row name;

      let subdirs = self#subdirs name in
      match subdirs with
        [] ->
          ()
      | l ->
          let rr = store#get_row_reference (store#get_path row) in
          List.iter
            (self#insert_node ~parent: row name)
            (List.sort compare l);
          if self#expand_dir name then
            view#expand_row rr#path