# # # add_file "monotone.ml" # content [4b6201bde7f13d46de89a3a297e36acfdc634a65] # # add_file "monotone.mli" # content [411c0e2eb06c3c5b4627ff870ecb88e0cf32c7ee] # # patch "Makefile" # from [32ba8864bebd73979ee240329267e77b001e66d4] # to [a541d9e779dd36da5fb40e6f6416e2bbe8b1209a] # # patch "app.ml" # from [ecdd153474516d486e2ad04862b65f537522a10e] # to [834eb830af7b4c524b219cd8c928cc8e94ba1354] # # patch "app.mli" # from [221b1797f90548892501681a900a80ee017d9359] # to [0e5ebab671b99f8b3fa6d9e96875b9de5556e668] # # patch "database.ml" # from [2add1983b5938540a6271edd7fc62ec45f74df8c] # to [50a5a35ff7dc8d9910fe824e9ff81b6d8afae95b] # # patch "database.mli" # from [75341955c92f554a0d2ae21b5975591afdcb4416] # to [bbe1dd977dd4df5d9b22a6a74ab79e8d7ad27f93] # # patch "ui.mli" # from [d25fe1553276726e4cd998b1010d280139e5534b] # to [ebb1dcbc5ede2640f55c9f9ceed9793780ed231d] # # patch "view.ml" # from [e2d0e8ea6928c04c7002e37d08aee0c5de5a1c3e] # to [41bf399ecc2067d9cf5e3cde7b0af3917309285a] # ============================================================ --- monotone.ml 4b6201bde7f13d46de89a3a297e36acfdc634a65 +++ monotone.ml 4b6201bde7f13d46de89a3a297e36acfdc634a65 @@ -0,0 +1,15 @@ + +type t = Automate.t + +let make = Automate.make +let exit = Automate.exit + +let decode_branches msg = + let l = Viz_misc.string_split '\n' msg in + List.map (fun l -> l, 0) l + +let branches mtn = + decode_branches + (Automate.submit_sync + mtn + [ "branches" ]) ============================================================ --- monotone.mli 411c0e2eb06c3c5b4627ff870ecb88e0cf32c7ee +++ monotone.mli 411c0e2eb06c3c5b4627ff870ecb88e0cf32c7ee @@ -0,0 +1,7 @@ + +type t + +val make : string -> string -> t +val exit : t -> unit + +val branches : t -> (string * int) list ============================================================ --- Makefile 32ba8864bebd73979ee240329267e77b001e66d4 +++ Makefile a541d9e779dd36da5fb40e6f6416e2bbe8b1209a @@ -22,7 +22,7 @@ SRC = $(OCAMLNET)/base64.ml $(OCAMLNET)/ revision_types.mli revision_lexer.ml revision_parser.ml revision_parser.mli \ subprocess.ml subprocess.mli \ components.ml schema_lexer.ml \ - automate.mli automate.ml \ + automate.mli automate.ml monotone.mli monotone.ml \ database.ml database.mli agraph.ml agraph.mli \ autocolor.ml autocolor.mli viz_style.ml viz_style.mli \ icon.ml ui.ml ui.mli unidiff.ml unidiff.mli \ ============================================================ --- app.ml ecdd153474516d486e2ad04862b65f537522a10e +++ app.ml 834eb830af7b4c524b219cd8c928cc8e94ba1354 @@ -11,6 +11,7 @@ class type t = class type t = object method get_db : Database.t option + method get_mtn : Monotone.t option method get_agraph : Agraph.t option method get_prefs : Viz_style.prefs method get_toplevel : GWindow.window @@ -57,6 +58,7 @@ class ctrl w ~prefs ~manager ~status ~vi let busy = Ui.Busy.make w in object (self) val mutable db = None + val mutable mtn = None val mutable agraph = None val mutable prefs = prefs val mutable query = None @@ -79,6 +81,7 @@ class ctrl w ~prefs ~manager ~status ~vi d method get_db = db + method get_mtn = mtn method get_agraph = agraph method get_prefs = prefs @@ -96,6 +99,8 @@ class ctrl w ~prefs ~manager ~status ~vi self#close_db () ; let m_db = Database.open_db ~busy_handler:self#locked_db fname in db <- Some m_db ; + let m_mtn = Monotone.make prefs.Viz_style.monotone_path fname in + mtn <- Some m_mtn ; View.open_db view self ; Ui.open_db manager self ; match branch with @@ -110,6 +115,8 @@ class ctrl w ~prefs ~manager ~status ~vi self#clear ; may Database.close_db db ; db <- None ; + may Monotone.exit mtn ; + mtn <- None ; may Agraph.abort_layout agraph ; agraph <- None ; View.close_db view self ; ============================================================ --- app.mli 221b1797f90548892501681a900a80ee017d9359 +++ app.mli 0e5ebab671b99f8b3fa6d9e96875b9de5556e668 @@ -11,6 +11,7 @@ class type t = class type t = object method get_db : Database.t option + method get_mtn : Monotone.t option method get_agraph : Agraph.t option method get_prefs : Viz_style.prefs method get_toplevel : GWindow.window ============================================================ --- database.ml 2add1983b5938540a6271edd7fc62ec45f74df8c +++ database.ml 50a5a35ff7dc8d9910fe824e9ff81b6d8afae95b @@ -488,9 +488,7 @@ type t = { stmts : Sqlite3.stmt array ; rostered : bool ; base64 : bool ; - schema_id : string ; - - mtn_automate : Automate.t ; + schema_id : string } @@ -527,8 +525,7 @@ let open_db ?busy_handler fname = stmts = stmts ; rostered = rostered ; base64 = base64 ; - schema_id = schema ; - mtn_automate = Automate.make "mtn" fname ; + schema_id = schema } with Sqlite3.Error (_, msg) -> Sqlite3.close_db db ; @@ -544,15 +541,8 @@ let get_filename d = d.filename let get_filename d = d.filename -let decode_branches msg = - let l = string_split '\n' msg in - List.map (fun l -> l, 0) l - let fetch_branches db = - decode_branches - (Automate.submit_sync - db.mtn_automate - [ "branches" ]) + sqlite_try (fetch_branches db.base64) db let fetch_ancestry_graph db query = sqlite_try (fetch_agraph query db.base64) db ============================================================ --- database.mli 75341955c92f554a0d2ae21b5975591afdcb4416 +++ database.mli bbe1dd977dd4df5d9b22a6a74ab79e8d7ad27f93 @@ -11,7 +11,6 @@ val get_filename : t -> string val get_filename : t -> string -val fetch_branches : t -> (string * int) list val fetch_ancestry_graph : t -> query -> agraph val fetch_revision : t -> string -> node_data val fetch_certs_and_revision : t -> string -> node_data ============================================================ --- ui.mli d25fe1553276726e4cd998b1010d280139e5534b +++ ui.mli ebb1dcbc5ede2640f55c9f9ceed9793780ed231d @@ -1,9 +1,10 @@ val error_notice_f : val valid_utf8 : string -> bool val error_notice : parent:#GWindow.window_skel -> string -> unit val error_notice_f : parent:#GWindow.window_skel -> ('a, unit, string, unit) format4 -> 'a +val with_grab : (unit -> 'a) -> 'a val nice_fetch : (Database.t -> 'a) -> Database.t -> 'a val fold_in_loop : ?granularity:int -> ('a -> 'b -> 'a) -> 'a -> 'b list -> 'a ============================================================ --- view.ml e2d0e8ea6928c04c7002e37d08aee0c5de5a1c3e +++ view.ml 41bf399ecc2067d9cf5e3cde7b0af3917309285a @@ -1534,7 +1534,8 @@ let open_db v ctrl = let open_db v ctrl = Branch_selector.populate v.selector - (Ui.nice_fetch Database.fetch_branches (some ctrl#get_db)) + (Ui.with_grab (fun () -> + Monotone.branches (some ctrl#get_mtn))) let update v ctrl id = Canvas.update_graph v.canvas ctrl id