]> matita.cs.unibo.it Git - helm.git/commitdiff
added icons to entries shown in cicbrowser so that directories are
authorStefano Zacchiroli <zack@upsilon.cc>
Wed, 8 Jun 2005 09:10:17 +0000 (09:10 +0000)
committerStefano Zacchiroli <zack@upsilon.cc>
Wed, 8 Jun 2005 09:10:17 +0000 (09:10 +0000)
distinguishable from objects

12 files changed:
helm/matita/buildTimeConf.ml.in
helm/matita/configure.ac
helm/matita/icons/matita-folder.png [new file with mode: 0644]
helm/matita/icons/matita-object.png [new file with mode: 0644]
helm/matita/icons/matita-theory.png [new file with mode: 0644]
helm/matita/matita.ml
helm/matita/matitaGtkMisc.ml
helm/matita/matitaGtkMisc.mli
helm/matita/matitaGui.ml
helm/matita/matitaMathView.ml
helm/matita/matitaMisc.ml
helm/matita/matitaMisc.mli

index bff7ad6aab43e4292139db4d1b1d436a3fbfddd3..1715dd1f4352c90f034cf1c6298ffdd8a9d061cc 100644 (file)
@@ -34,4 +34,5 @@ let phrase_sep = ".";;
 let blank_uri = "about:blank";;
 let current_proof_uri = "about:current_proof";;
 let default_script_font = "Monospace 10";;
+let images_dir = "@IMAGES_DIR@";;
 
index 32759f12d8f94daf5136a4b7c2af47d093600c97..e7cd49fadeb8face6be24744756e97a7e6864d0c 100644 (file)
@@ -87,6 +87,7 @@ if test "$DEBUG" = "true"; then
 fi
 
 MATITA_GTKRC="matita.gtkrc"
+IMAGES_DIR="icons"
 
 AC_SUBST(CAMLP4O)
 AC_SUBST(DEBUG)
@@ -97,6 +98,7 @@ AC_SUBST(HAVE_OCAMLOPT)
 AC_SUBST(LABLGLADECC)
 AC_SUBST(OCAMLFIND)
 AC_SUBST(MATITA_GTKRC)
+AC_SUBST(IMAGES_DIR)
 
 AC_OUTPUT([
   buildTimeConf.ml
diff --git a/helm/matita/icons/matita-folder.png b/helm/matita/icons/matita-folder.png
new file mode 100644 (file)
index 0000000..ec0cc08
Binary files /dev/null and b/helm/matita/icons/matita-folder.png differ
diff --git a/helm/matita/icons/matita-object.png b/helm/matita/icons/matita-object.png
new file mode 100644 (file)
index 0000000..fe89a30
Binary files /dev/null and b/helm/matita/icons/matita-object.png differ
diff --git a/helm/matita/icons/matita-theory.png b/helm/matita/icons/matita-theory.png
new file mode 100644 (file)
index 0000000..389152e
Binary files /dev/null and b/helm/matita/icons/matita-theory.png differ
index c1225bae46f6b7787b58fe2a1e80a0b739314ddb..d0959e453b0342ed9ca49623c7514fb9f8819793 100644 (file)
@@ -169,9 +169,12 @@ let _ =
   if Filename.basename Sys.argv.(0) = "cicbrowser" then begin (* cicbrowser *)
     Helm_registry.set "matita.mode" "cicbrowser";
     let browser = MatitaMathView.cicBrowser () in
-    try
-      browser#load (`Uri Sys.argv.(1))
-    with Invalid_argument _ -> ()
+    let entry =
+      try
+        `Uri Sys.argv.(1)
+      with Invalid_argument _ -> `Dir "cic:/"
+    in
+    browser#load entry
   end else begin  (* matita *)
     Helm_registry.set "matita.mode" "matita";
     gui#main#mainWin#show ();
index 0301b31f2e3981a02aad48493943af7a04c03223..7c8b611a2b0e2daa92efeb8f187a58af85517b54 100644 (file)
@@ -82,11 +82,10 @@ class stringListModel (tree_view: GTree.view) =
   let column_list = new GTree.column_list in
   let text_column = column_list#add Gobject.Data.string in
   let list_store = GTree.list_store column_list in
+  let renderer = (GTree.cell_renderer_text [], ["text", text_column]) in
+  let view_column = GTree.view_column ~renderer () in
   object (self)
-
     initializer
-      let renderer = (GTree.cell_renderer_text [], ["text", text_column]) in
-      let view_column = GTree.view_column ~renderer () in
       tree_view#set_model (Some (list_store :> GTree.model));
       ignore (tree_view#append_column view_column)
 
@@ -106,7 +105,46 @@ class stringListModel (tree_view: GTree.view) =
           let iter = list_store#get_iter tree_path in
           list_store#get ~row:iter ~column:text_column)
         tree_view#selection#get_selected_rows
+  end
+
+class taggedStringListModel ~(tags:(string * GdkPixbuf.pixbuf) list)
+  (tree_view: GTree.view)
+=
+  let column_list = new GTree.column_list in
+  let tag_column = column_list#add Gobject.Data.gobject in
+  let text_column = column_list#add Gobject.Data.string in
+  let list_store = GTree.list_store column_list in
+  let text_renderer = (GTree.cell_renderer_text [], ["text", text_column]) in
+  let tag_renderer = (GTree.cell_renderer_pixbuf [], ["pixbuf", tag_column]) in
+  let text_vcolumn = GTree.view_column ~renderer:text_renderer () in
+  let tag_vcolumn = GTree.view_column ~renderer:tag_renderer () in
+  let lookup_pixbuf tag =
+    try List.assoc tag tags with Not_found -> assert false
+  in
+  object (self)
+    initializer
+      tree_view#set_model (Some (list_store :> GTree.model));
+      ignore (tree_view#append_column tag_vcolumn);
+      ignore (tree_view#append_column text_vcolumn)
 
+    method list_store = list_store
+
+    method easy_append ~tag s =
+      let tree_iter = list_store#append () in
+      list_store#set ~row:tree_iter ~column:text_column s;
+      list_store#set ~row:tree_iter ~column:tag_column (lookup_pixbuf tag)
+
+    method easy_insert pos ~tag s =
+      let tree_iter = list_store#insert pos in
+      list_store#set ~row:tree_iter ~column:text_column s;
+      list_store#set ~row:tree_iter ~column:tag_column (lookup_pixbuf tag)
+
+    method easy_selection () =
+      List.map
+        (fun tree_path ->
+          let iter = list_store#get_iter tree_path in
+          list_store#get ~row:iter ~column:text_column)
+        tree_view#selection#get_selected_rows
   end
 
 class type gui =
index 993dff4c37c0f74b82dace32a85b8c117b7d70c1..32b1fe53b945c600d801cac670348def88fee90c 100644 (file)
@@ -73,6 +73,20 @@ class stringListModel:
     method easy_selection:  unit -> string list
   end
 
+  (** as above with Pixbuf associated to each row. Each time an insert is
+   * performed a string tag should be specified, the corresponding pixbuf in the
+   * tags associative list will be shown on the left of the inserted row *)
+class taggedStringListModel:
+  tags:((string * GdkPixbuf.pixbuf) list) ->
+  GTree.view ->
+  object
+    method list_store: GTree.list_store (** list_store forwarding *)
+
+    method easy_append:     tag:string -> string -> unit
+    method easy_insert:     int -> tag:string -> string -> unit
+    method easy_selection:  unit -> string list
+  end
+
 (** {2 Matita GUI components} *)
 
 class type gui =
index 2844aa92e5ce6b8666369e5aa4a549ed603ed851..d18b82d140833f1cedfdc78db10d728f6af639cb 100644 (file)
@@ -242,9 +242,9 @@ class gui () =
         (* debug menu *)
       self#main#debugMenu#misc#hide ();
         (* status bar *)
-      self#main#hintLowImage#set_file "icons/matita-bulb-low.png";
-      self#main#hintMediumImage#set_file "icons/matita-bulb-medium.png";
-      self#main#hintHighImage#set_file "icons/matita-bulb-high.png";
+      self#main#hintLowImage#set_file (image_path "matita-bulb-low.png");
+      self#main#hintMediumImage#set_file (image_path "matita-bulb-medium.png");
+      self#main#hintHighImage#set_file (image_path "matita-bulb-high.png");
         (* focus *)
       self#main#scriptTextView#misc#grab_focus ();
         (* main win dimension *)
index 0a2e8f90df37fbb5b2423e782333086cf209ec68..dc90df9db6ed7cfcf27d52f375f924ada3a9cd08 100644 (file)
@@ -322,6 +322,10 @@ class cicBrowser_impl ~(history:MatitaTypes.mathViewer_entry MatitaMisc.history)
     ignore (MatitaGtkMisc.ask_confirmation ~gui:(MatitaGui.instance ())
       ~title:"Cic browser" ~msg ~cancel:false ());
   in
+  let tags =
+    [ "dir", GdkPixbuf.from_file (MatitaMisc.image_path "matita-folder.png");
+      "obj", GdkPixbuf.from_file (MatitaMisc.image_path "matita-object.png") ]
+  in
   let handle_error f =
     try
       f ()
@@ -399,7 +403,9 @@ class cicBrowser_impl ~(history:MatitaTypes.mathViewer_entry MatitaMisc.history)
     val mutable current_infos = None
     val mutable current_mathml = None
 
-    val model = new MatitaGtkMisc.stringListModel win#whelpResultTreeview
+(*     val model = new MatitaGtkMisc.stringListModel win#whelpResultTreeview *)
+    val model =
+      new MatitaGtkMisc.taggedStringListModel tags win#whelpResultTreeview
 
     method private _getWhelpResultTreeviewSelection () =
       match model#easy_selection () with
@@ -465,7 +471,7 @@ class cicBrowser_impl ~(history:MatitaTypes.mathViewer_entry MatitaMisc.history)
             | `Uri uri -> self#_loadUriManagerUri (UriManager.uri_of_string uri)
             | `Whelp (query, results) -> 
                 set_whelp_query query;
-                self#_loadList results);
+                self#_loadList (List.map (fun r -> "dir", r) results));
             self#setEntry entry
           end
       with
@@ -505,8 +511,8 @@ class cicBrowser_impl ~(history:MatitaTypes.mathViewer_entry MatitaMisc.history)
     method private _loadDir dir = 
       let content = Http_getter.ls dir in
       let l = List.map (function 
-        | Http_getter_types.Ls_section sec -> sec            
-        | Http_getter_types.Ls_object obj -> obj.Http_getter_types.uri
+        | Http_getter_types.Ls_section sec -> "dir", sec
+        | Http_getter_types.Ls_object obj -> "obj", obj.Http_getter_types.uri
         ) content
       in
       self#_loadList l
@@ -545,7 +551,7 @@ class cicBrowser_impl ~(history:MatitaTypes.mathViewer_entry MatitaMisc.history)
 
     method private _loadList l =
       model#list_store#clear ();
-      List.iter model#easy_append l;
+      List.iter (fun (tag, s) -> model#easy_append ~tag s) l;
       self#_showList
     
     (** { public methods, all must call _load!! } *)
index 07143db991bc4f84d9f1b62997ded1d1246e3f09..a35a57ed644943103e5c5a9e22806abc28445df9 100644 (file)
@@ -192,3 +192,5 @@ let qualify status name = get_string_option status "baseuri" ^ "/" ^ name
 
 let unopt = function None -> failwith "unopt: None" | Some v -> v
 
+let image_path n = sprintf "%s/%s" BuildTimeConf.images_dir n
+
index 3731bd1a615204955dbade3806ed6d7e623f37f1..acbe3bac6c4a606c8904a48e49b60a41d42acc56 100644 (file)
@@ -87,3 +87,6 @@ val get_proof_metasenv: MatitaTypes.status ->  Cic.metasenv
 val get_proof_context: MatitaTypes.status -> Cic.context 
 val get_proof_aliases: MatitaTypes.status -> DisambiguateTypes.environment 
 
+  (** given the base name of an image, returns its full path *)
+val image_path: string -> string
+