# # patch "configure.ac" # from [e5b02da6f834e4f4e61b85f925a2b7ba87c7be9d] # to [9f3cd70fbd6b8350ba4b85beebf8d6df8c64d4a9] # # patch "query.ml" # from [6275ad90471c3193c0b477af9ce2f30b1fc413c0] # to [acdeef859b8d7d2e3cef094a832c02f6a6322feb] # # patch "ui.ml" # from [0d4d672f6ed2a70f09ca2f22d54947d27e59c400] # to [7d156a725cc388c4495bc8b46dbb062386ac0845] # # patch "unidiff.ml" # from [adba6e0ccf2cd60de8b72a8a1126398839104791] # to [d2a54e9183e027c92faee8c6a7eec008478876ee] # ======================================================================== --- configure.ac e5b02da6f834e4f4e61b85f925a2b7ba87c7be9d +++ configure.ac 9f3cd70fbd6b8350ba4b85beebf8d6df8c64d4a9 @@ -10,18 +10,20 @@ fi # Check LablGTK +AC_ARG_VAR(LABLGTK_DIR,[LablGTK location]) AC_ARG_WITH([lablgtk-dir], AS_HELP_STRING([--with-lablgtk-dir=], [specify location of lablgtk library]), LABLGTK_DIR=$withval) -AC_CHECK_OCAML_MODULE(lablgtk, LABLGTK_DIR, GFile, +lablgtk2 +lablgtk) +FINDLIB_LABLGTK=$(ocamlfind query lablgtk2 2> /dev/null) +AC_CHECK_OCAML_MODULE(lablgtk, LABLGTK_DIR, GFile, +lablgtk2 +lablgtk ${FINDLIB_LABLGTK}) # Stop if LablGTK is not found if test -z "$LABLGTK_DIR" ; then AC_MSG_ERROR([ Could not find LablGTK. Make sure LablGTK >= 2.4.0 is installed and specify its location to configure with the `--with-lablgtk-dir=' -option.]) +option or the LABLGTK_DIR environment variable.]) fi LABLGTK_DIR=$(echo $LABLGTK_DIR | sed "address@hidden@$OCAMLLIB/@") # Check if LablGTK was compiled with libgnomecanvas support @@ -50,27 +52,33 @@ MONOTONE_DIR=$withval, MONOTONE_DIR=monotone) AC_ARG_WITH([shared-sqlite], - AS_HELP_STRING([--with-shared-sqlite=], + AS_HELP_STRING([--with-shared-sqlite], [use a system-wide shared sqlite library]), SHARED_SQLITE=$withval, - SHARED_SQLITE=no) -AC_MSG_CHECKING(sqlite) -if test "$SHARED_SQLITE" = "yes" ; then - PKG_CHECK_MODULES(SQLITE, sqlite3 >= 3.0,,AC_MSG_ERROR([ -Couldn't use the shared sqlite package.])) -elif test -d "$MONOTONE_DIR" -a -r "$MONOTONE_DIR/sqlite/lib3rdparty_a-main.o" ; then - AC_MSG_RESULT(found in $MONOTONE_DIR/sqlite) -else - AC_MSG_ERROR([ + SHARED_SQLITE=maybe) +if test "$SHARED_SQLITE" = "yes" -o "$SHARED_SQLITE" = "maybe" ; then + PKG_CHECK_MODULES(SQLITE, sqlite3 >= 3.0, + SHARED_SQLITE=yes, + if test "$SHARED_SQLITE" = "yes" ; then AC_MSG_ERROR([ +Couldn't find the shared sqlite package.]) ; fi) +fi +if test "$SHARED_SQLITE" != "yes" ; then + AC_MSG_CHECKING(monotone's sqlite) + if test -d "$MONOTONE_DIR" -a -r "$MONOTONE_DIR/sqlite/lib3rdparty_a-main.o" ; then + AC_MSG_RESULT(found in $MONOTONE_DIR/sqlite) + else + AC_MSG_ERROR([ + Could not find compiled sqlite sources. Monotone-viz needs a compiled monotone tree for the sqlite library. Create a link named `monotone' or specify the location to configure using the `--with-monotone-dir=' option.]) + fi + if test "${MONOTONE_DIR:0:1}" != "/" ; then + MONOTONE_DIR=$(pwd)/$MONOTONE_DIR + fi fi -if test "${MONOTONE_DIR:0:1}" != "/" ; then - MONOTONE_DIR=$(pwd)/$MONOTONE_DIR -fi AC_SUBST(MONOTONE_DIR) ======================================================================== --- query.ml 6275ad90471c3193c0b477af9ce2f30b1fc413c0 +++ query.ml acdeef859b8d7d2e3cef094a832c02f6a6322feb @@ -35,17 +35,24 @@ let category title ?expand (vbox : #GPack.box) = - let _ = + let base_label = + Printf.sprintf "%s" (Glib.Markup.escape_text title) in + let lab = GMisc.label - ~markup:(Printf.sprintf "%s" (Glib.Markup.escape_text title)) + ~markup:base_label ~xalign:0. ~packing:vbox#pack () in + let set_label nb = + if nb = 0 + then lab#set_label base_label + else lab#set_label (Printf.sprintf "%s (%d matches)" base_label nb) in let al = GBin.alignment ~border_width:8 ~packing:(vbox#pack ?expand) () in al#misc#set_property "left-padding" (`INT 16) ; - al#add + (al#add, set_label) -let setup_query_builder packing = +let setup_query_builder vbox = Lazy.force init_stock ; + let (packing, _) = category "Query" vbox in let packing = (GPack.hbox ~packing ())#pack in let _ = GMisc.label ~text:"Cert name: " ~packing () in let (e_cert_name, _) = @@ -79,7 +86,8 @@ let clear_model m = m.model#clear () -let setup_results_view packing = +let setup_results_view vbox = + let (packing, set_label) = category "Results" ~expand:true vbox in let { model = model } as m = make_model () in let packing = View.wrap_in_scroll_window packing in let v = GTree.view ~model ~headers_clickable:true ~packing ~height:100 () in @@ -93,7 +101,7 @@ add_string_renderer "Id" ~props:[`FAMILY "Monospace"] m.col_id ; add_string_renderer "Date" m.col_date ; add_string_renderer "Author" m.col_author ; - m, v + m, v, set_label let update_results m r = if r <> [] then clear_model m ; @@ -110,13 +118,13 @@ let make v = let w = GWindow.dialog ~title:"Monotone-viz Query" - ~icon:(Lazy.force Icon.monotone) ?parent:(View.get_toplevel v) ~destroy_with_parent:true - ~border_width:8 () in + ~border_width:8 + ~type_hint:`NORMAL () in - let (e1, e2) = setup_query_builder (category "Query" w#vbox) in - let (m, rv) = setup_results_view (category "Results" ~expand:true w#vbox) in + let (e1, e2) = setup_query_builder w#vbox in + let (m, rv, set_label) = setup_results_view w#vbox in w#add_button_stock `CLOSE `CLOSE ; w#add_button_stock `CLEAR `CLEAR ; @@ -134,10 +142,12 @@ | `CLEAR -> clear_model m | `QUERY -> - update_results m - (do_query - ~cert_name:e1#text ~cert_value:e2#text - v))) ; + let results = + do_query + ~cert_name:e1#text ~cert_value:e2#text + v in + update_results m results ; + set_label (List.length results))) ; ignore (rv#connect#row_activated (fun path view_col -> let id = ======================================================================== --- ui.ml 0d4d672f6ed2a70f09ca2f22d54947d27e59c400 +++ ui.ml 7d156a725cc388c4495bc8b46dbb062386ac0845 @@ -240,7 +240,6 @@ let prefs = ref v.View.prefs in let w = GWindow.dialog ~title:"Monotone-viz Preferences" - ~icon:(Lazy.force Icon.monotone) ?parent:(View.get_toplevel v) ~destroy_with_parent:true ~border_width:8 () in ======================================================================== --- unidiff.ml adba6e0ccf2cd60de8b72a8a1126398839104791 +++ unidiff.ml d2a54e9183e027c92faee8c6a7eec008478876ee @@ -44,7 +44,10 @@ (fun q (n, s, len) -> if is_prefix "--- " text s then begin - let filename = String.sub text (s + 4) (len - 4) in + let filename = + let s = String.sub text (s + 4) (len - 4) in + try String.sub s 0 (String.rindex s '\t') + with Not_found -> s in Q.push_list q [ HEADER n ; FILE (filename, n) ] end else if is_prefix "+++ " text s then Q.push q (HEADER n) @@ -106,7 +109,7 @@ ~no_separator:true ?parent ~title:"Monotone diff output" ~type_hint:`NORMAL - ~icon:(Lazy.force Icon.monotone) () in + () in window#add_button_stock `SAVE `SAVE ; window#add_button_stock `CLOSE `CLOSE ; window#set_default_response `CLOSE ;