/[mldonkey]/mldonkey/src/gtk2/gui/guiFriends.ml
ViewVC logotype

Diff of /mldonkey/src/gtk2/gui/guiFriends.ml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by spiralvoice, Mon Oct 31 18:34:02 2005 UTC revision 1.3 by spiralvoice, Sat Nov 12 11:16:36 2005 UTC
# Line 259  class g_friend () = Line 259  class g_friend () =
259  (*************************************************************************)  (*************************************************************************)
260    
261      method content (col : GTree.view_column) c =      method content (col : GTree.view_column) c =
262          let autosize = match col#sizing with `AUTOSIZE -> true | _ -> false in
263        match c with        match c with
264            Col_friend_name ->            Col_friend_name ->
265              begin              begin
# Line 273  class g_friend () = Line 274  class g_friend () =
274                  end;                  end;
275                let renderer = GTree.cell_renderer_text [`XALIGN 0.] in                let renderer = GTree.cell_renderer_text [`XALIGN 0.] in
276                col#pack ~expand:false renderer;                col#pack ~expand:false renderer;
277                col#set_cell_data_func renderer                col#add_attribute renderer "foreground" friend_color;
278                 (fun model row ->                if autosize
279                    match !view_context with                  then col#add_attribute renderer "text" friend_name
280                    else col#set_cell_data_func renderer
281                     (fun model row ->
282                        match !view_context with
283                        Some context when col#width > 0 ->                        Some context when col#width > 0 ->
284                          begin                          begin
285                            let width =                            let width =
# Line 287  class g_friend () = Line 291  class g_friend () =
291                            let s = GuiTools.fit_string_to_pixels name ~context ~pixels:width in                            let s = GuiTools.fit_string_to_pixels name ~context ~pixels:width in
292                            renderer#set_properties [ `TEXT s ]                            renderer#set_properties [ `TEXT s ]
293                          end                          end
294                        | _ -> renderer#set_properties [ `TEXT "" ]                      | _ -> renderer#set_properties [ `TEXT "" ]
295                );                   )
               col#add_attribute renderer "foreground" friend_color;  
296              end              end
297    
298          | Col_friend_network ->          | Col_friend_network ->
# Line 329  class g_friend () = Line 332  class g_friend () =
332  (*************************************************************************)  (*************************************************************************)
333    
334      method force_update_icons () =      method force_update_icons () =
335          let f k row =
336            let s = friend_of_key k in
337            store#set ~row ~column:friend_network_pixb (Mi.network_pixb s.source_network ~size:A.SMALL ());
338            store#set ~row ~column:friend_type_pixb (Mi.source_type_to_icon s.source_type ~size:A.SMALL);
339            store#set ~row ~column:friend_state_pixb (Mi.client_state_to_icon false ~size:A.SMALL);
340            let rec iter items =
341              match items with
342                  [] -> ()
343                | (GTreeDirectory tree) :: tail ->
344                     begin
345                       tree.g_file_tree_pixb <- folder_closed ();
346                       iter tail
347                     end
348                | (GTreeFile r) :: tail ->
349                    begin
350                      r.res_network_pixb <- Mi.network_pixb r.res_num ~size:A.SMALL ();
351                      r.res_name_pixb <- Mi.file_type_of_name r.res_name ~size:A.SMALL;
352                      iter tail
353                    end
354            in
355            match s.source_files with
356                None -> ()
357              | Some ft ->
358                  begin
359                    ft.g_file_tree_pixb <- folder_closed ();
360                    iter ft.g_file_tree_list
361                  end
362          in
363        List.iter (fun k ->        List.iter (fun k ->
364          try          try
           let s = friend_of_key k in  
365            let row = self#find_row k in            let row = self#find_row k in
366            store#set ~row ~column:friend_network_pixb (Mi.network_pixb s.source_network ~size:A.SMALL ());            Gaux.may ~f:(f k) row
           store#set ~row ~column:friend_type_pixb (Mi.source_type_to_icon s.source_type ~size:A.SMALL);  
           store#set ~row ~column:friend_state_pixb (Mi.client_state_to_icon false ~size:A.SMALL);  
           let rec iter items =  
             match items with  
                 [] -> ()  
               | (GTreeDirectory tree) :: tail ->  
                    begin  
                      tree.g_file_tree_pixb <- folder_closed ();  
                      iter tail  
                    end  
               | (GTreeFile r) :: tail ->  
                   begin  
                     r.res_network_pixb <- Mi.network_pixb r.res_num ~size:A.SMALL ();  
                     r.res_name_pixb <- Mi.file_type_of_name r.res_name ~size:A.SMALL;  
                     iter tail  
                   end  
           in  
           match s.source_files with  
               None -> ()  
             | Some ft ->  
                 begin  
                   ft.g_file_tree_pixb <- folder_closed ();  
                   iter ft.g_file_tree_list  
                 end  
367          with _ -> ()          with _ -> ()
368        ) (self#all_items ())        ) (self#all_items ())
369    
# Line 607  let friend_menu sel = Line 613  let friend_menu sel =
613    
614  let rec insert_dir ft id ?parent () =  let rec insert_dir ft id ?parent () =
615    ft.g_file_tree_num <- !id;    ft.g_file_tree_num <- !id;
616    let parent = folderstore#add_item ft ?parent () in    folderstore#add_item ft ?parent ();
617    H.add ft_by_num ft;    H.add ft_by_num ft;
618    incr id;    incr id;
619    match ft.g_file_tree_list with    match ft.g_file_tree_list with
# Line 616  let rec insert_dir ft id ?parent () = Line 622  let rec insert_dir ft id ?parent () =
622          List.iter (fun tree_item ->          List.iter (fun tree_item ->
623            match tree_item with            match tree_item with
624                GTreeFile _ -> ()                GTreeFile _ -> ()
625              | GTreeDirectory d -> insert_dir d id ~parent ()              | GTreeDirectory d ->
626                    try
627                      let parent = folderstore#find_row (folder_key ft.g_file_tree_num) in
628                      insert_dir d id ~parent ()
629                    with _ -> ()
630          ) ft.g_file_tree_list          ) ft.g_file_tree_list
631    
632  let on_select_friend sel =  let on_select_friend sel =
# Line 703  let on_select_folder sel = Line 713  let on_select_folder sel =
713              let ft = folder_of_key k in              let ft = folder_of_key k in
714              List.iter (fun tree_item ->              List.iter (fun tree_item ->
715                match tree_item with                match tree_item with
716                    GTreeFile r -> ignore (resultstore#add_item r)                    GTreeFile r -> resultstore#add r ~f:update_results_label ()
717                  | _ -> ()                  | _ -> ()
718              ) ft.g_file_tree_list;              ) ft.g_file_tree_list
             update_results_label ()  
719            with _ -> ()            with _ -> ()
720          end          end
721    
# Line 787  let clear () = Line 796  let clear () =
796    
797  let remove_friend s =  let remove_friend s =
798    friendstore#remove_item (friend_key s.source_num);    friendstore#remove_item (friend_key s.source_num);
799      let _ =
800        match s.source_files with
801            None -> ()
802          | Some ft ->
803              List.iter (fun tree_item ->
804                match tree_item with
805                    GTreeFile r -> Hashtbl.remove G.results r.res_num
806                  | _ -> ()
807              ) ft.g_file_tree_list
808      in
809    update_friends_label ();    update_friends_label ();
810    if List.mem_assoc s.source_num !source_has_file    if List.mem_assoc s.source_num !source_has_file
811      then source_has_file := List.remove_assoc s.source_num !source_has_file      then source_has_file := List.remove_assoc s.source_num !source_has_file
# Line 796  let h_update_friend s s_new = Line 815  let h_update_friend s s_new =
815      let row = friendstore#find_row (friend_key s_new.source_num) in      let row = friendstore#find_row (friend_key s_new.source_num) in
816      if client_browsed_tag land s_new.source_type = 0      if client_browsed_tag land s_new.source_type = 0
817        then remove_friend s        then remove_friend s
818        else friendstore#update_item row s s_new        else Gaux.may ~f:(fun r -> friendstore#update_item r s s_new) row
819   with _ ->   with _ ->
820      if client_browsed_tag land s_new.source_type <> 0      if client_browsed_tag land s_new.source_type <> 0
821        then begin        then begin
822          ignore (friendstore#add_item s_new);          friendstore#add_item s_new ~f:update_friends_label ()
         update_friends_label ()  
823        end        end
824    
825  let add_friend_files (source_num , dirname, result_num) =  let add_friend_files (source_num , dirname, result_num) =
# Line 816  let add_friend_files (source_num , dirna Line 834  let add_friend_files (source_num , dirna
834        in        in
835        Mi.add_file tree dirname r;        Mi.add_file tree dirname r;
836        let s_new = {s with source_files = Some tree} in        let s_new = {s with source_files = Some tree} in
       Hashtbl.remove G.results result_num;  
837        (if not (List.mem_assoc source_num !source_has_file)        (if not (List.mem_assoc source_num !source_has_file)
838           then source_has_file := (source_num, false) :: !source_has_file);           then source_has_file := (source_num, false) :: !source_has_file);
839        h_update_friend s s_new;        h_update_friend s s_new;

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26