From 0b61e8d509f9d93e16eb90b6268dfc1da1ce5544 Mon Sep 17 00:00:00 2001 From: Virgile Prevosto <virgile.prevosto@m4x.org> Date: Wed, 21 Nov 2018 19:46:19 +0100 Subject: [PATCH] [GUI] Compiles against GTK3 --- src/plugins/gui/design.ml | 7 ++++--- src/plugins/gui/dgraph.ml.in | 4 +++- src/plugins/gui/dgraph.mli.in | 8 +++++++- src/plugins/gui/filetree.ml | 8 +++++--- src/plugins/gui/gtk_form.ml | 14 ++++---------- src/plugins/gui/gtk_helper.ml | 14 +++++++++----- src/plugins/gui/menu_manager.ml | 23 +++++++++++++++-------- src/plugins/gui/project_manager.ml | 6 +++--- src/plugins/gui/wfile.ml | 5 +++-- src/plugins/gui/widget.ml | 11 +++++++---- 10 files changed, 60 insertions(+), 40 deletions(-) diff --git a/src/plugins/gui/design.ml b/src/plugins/gui/design.ml index d695a38cb3a..bd8db74a74f 100644 --- a/src/plugins/gui/design.ml +++ b/src/plugins/gui/design.ml @@ -657,8 +657,9 @@ struct let fold_category = "fold" let unfold_category = "unfold" - let declare_markers (source:GSourceView2.source_view) = - source#set_mark_category_pixbuf +(*GTK3 does not exist anymore in gsourceview3. *) + let declare_markers (_source:GSourceView2.source_view) = () +(* source#set_mark_category_pixbuf ~category:fold_category (Some Gtk_helper.Icon.(get Fold)); source#set_mark_category_pixbuf ~category:unfold_category (Some Gtk_helper.Icon.(get Unfold)); @@ -682,7 +683,7 @@ struct F.Valid_under_hyp; F.Invalid_under_hyp; F.Inconsistent ] - +*) (* tooltip marks are recreated whenever the buffer changes *) let tooltip_marks : (int, string) Hashtbl.t = Hashtbl.create 8 diff --git a/src/plugins/gui/dgraph.ml.in b/src/plugins/gui/dgraph.ml.in index 85cffffb27e..030f9fa5843 100644 --- a/src/plugins/gui/dgraph.ml.in +++ b/src/plugins/gui/dgraph.ml.in @@ -7,8 +7,10 @@ module DGraphModel = struct end module DGraphContainer = struct + type status = Global | Tree | Both + module Dot = struct - let from_dot_with_commands ?packing:_ _ = + let from_dot_with_commands ?packing:_ ?status:_ _ = raise (DGraphModel.DotError "DGraph is unsupported in GTK3") end end diff --git a/src/plugins/gui/dgraph.mli.in b/src/plugins/gui/dgraph.mli.in index ce84948c30d..33751178dd2 100644 --- a/src/plugins/gui/dgraph.mli.in +++ b/src/plugins/gui/dgraph.mli.in @@ -7,8 +7,14 @@ module DGraphModel: sig end module DGraphContainer: sig + + type status = Global | Tree | Both + module Dot: sig - val from_dot_with_commands: ?packing:(GObj.widget ->unit) -> string -> + val from_dot_with_commands: + ?packing:(GObj.widget ->unit) -> + ?status:status -> + string -> GPack.table * <adapt_zoom: unit -> unit> end end diff --git a/src/plugins/gui/filetree.ml b/src/plugins/gui/filetree.ml index b835d12d195..a60026927e6 100644 --- a/src/plugins/gui/filetree.ml +++ b/src/plugins/gui/filetree.ml @@ -548,7 +548,8 @@ let make (tree_view:GTree.view) = ~label:"Hide built-ins" ~key:key_hide_builtins in let mhide_annotations = MenusHide.menu_item menu ~label:"Hide global annotations" ~key:key_hide_annotations in - let () = menu#add (GMenu.separator_item () :> GMenu.menu_item) in + (*GTK3: no GMenu.separator_item*) + (*let () = menu#add (GMenu.separator_item () :> GMenu.menu_item) in*) let mflat_mode = MenusHide.menu_item menu ~label:"Flat mode" ~key:key_flat_mode in @@ -630,7 +631,7 @@ let make (tree_view:GTree.view) = let column = GTree.view_column ~renderer:(renderer,[]) () in ignore (tree_view#append_column column); let label = GMisc.label ~text:title () in - (GData.tooltips ())#set_tip ~text:tooltip label#coerce; + Gtk_helper.do_tooltip ~tooltip label; column#set_widget (Some label#coerce); column#set_alignment 0.5; column#set_reorderable true; @@ -1012,7 +1013,8 @@ let make (tree_view:GTree.view) = mhide_annotations key_hide_annotations self#reset_internal); ignore (MenusHide.mi_set_callback mflat_mode key_flat_mode self#reset_internal); - menu#add (GMenu.separator_item () :> GMenu.menu_item); + (*GTK3: no GMenu.separator_item*) + (*menu#add (GMenu.separator_item () :> GMenu.menu_item);*) tree_view#set_model (Some (init_model:>GTree.model)); self#enable_select_functions (); diff --git a/src/plugins/gui/gtk_form.ml b/src/plugins/gui/gtk_form.ml index 2054b86d0f5..0d55967df72 100644 --- a/src/plugins/gui/gtk_form.ml +++ b/src/plugins/gui/gtk_form.ml @@ -40,12 +40,6 @@ type 'a field = ?tooltip:string -> packing:(GObj.widget -> unit) -> (unit -> 'a) -> ('a -> unit) -> demon -> unit -let mk_tooltip ?tooltip obj = match tooltip with - | None -> () - | Some text -> - let tooltip = GData.tooltips () in - tooltip#set_tip ~text obj#coerce - (* ------------------------------------------------------------------------ *) (* --- Check Button --- *) (* ------------------------------------------------------------------------ *) @@ -54,7 +48,7 @@ let check ?label ?tooltip ~packing get set demon = let button = GButton.check_button ?label ~packing ~active:(get ()) () in - mk_tooltip ?tooltip button ; + Gtk_helper.do_tooltip ?tooltip button ; ignore (button#connect#toggled ~callback:(fun () -> set button#active)); register demon (fun () -> button#set_active (get())) @@ -88,7 +82,7 @@ let menu entries ?width ?tooltip ~packing get set demon = with Not_found -> () in ignore (combo_box#connect#changed callback) ; - mk_tooltip ?tooltip combo_box ; + Gtk_helper.do_tooltip ?tooltip combo_box ; register demon update (* ------------------------------------------------------------------------ *) @@ -105,7 +99,7 @@ let spinner ?(lower=0) ?(upper=max_int) ?width ?tooltip ~packing get set demon = if a<>b then set a in let update () = spin#adjustment#set_value (float (get ())) in ignore (spin#connect#value_changed ~callback) ; - mk_tooltip ?tooltip spin ; + Gtk_helper.do_tooltip ?tooltip spin ; register demon update (* ------------------------------------------------------------------------ *) @@ -137,5 +131,5 @@ let label ~text ~packing () = let button ~label ?tooltip ~callback ~packing () = let b = GButton.button ~label ~packing () in - mk_tooltip ?tooltip b ; + Gtk_helper.do_tooltip ?tooltip b ; ignore (b#connect#clicked ~callback) diff --git a/src/plugins/gui/gtk_helper.ml b/src/plugins/gui/gtk_helper.ml index 0846a320802..761b616153a 100644 --- a/src/plugins/gui/gtk_helper.ml +++ b/src/plugins/gui/gtk_helper.ml @@ -357,11 +357,12 @@ type 'a chooser = (* --- Bundle of fields --- *) (* ------------------------------------------------------------------------ *) -let do_tooltip ?tooltip obj = match tooltip with +let do_tooltip ?tooltip _obj = match tooltip with | None -> () - | Some text -> - let tooltip = GData.tooltips () in - tooltip#set_tip ~text obj#coerce + | Some _text -> () + (*GTK3: no GData.tooltips*) + (* let tooltip = GData.tooltips () in + tooltip#set_tip ~text obj#coerce *) let on_bool ?tooltip ?use_markup (container:GPack.box) label get set = let result = ref (get ()) in @@ -550,10 +551,13 @@ let trace_event (w:GObj.event_ops) = | `DROP_FINISHED -> "drop-finish" | `CLIENT_EVENT -> "client-event" | `VISIBILITY_NOTIFY -> "visibility-notify" - | `NO_EXPOSE-> "no-expose" + (*GTK3 Event does not exist anymore *) + (* | `NO_EXPOSE-> "no-expose" *) | `SCROLL -> "scroll" | `WINDOW_STATE -> "window-state" | `SETTING -> "setting" + (*GTK3: leave room for more events. *) + | _ -> "unknown-gtk3-event" in ignore (w#connect#any ~callback:(fun e -> diff --git a/src/plugins/gui/menu_manager.ml b/src/plugins/gui/menu_manager.ml index 0388411e620..13df82394f8 100644 --- a/src/plugins/gui/menu_manager.ml +++ b/src/plugins/gui/menu_manager.ml @@ -165,7 +165,7 @@ class menu_manager ?packing ~host:(_:Gtk_helper.host) = By default, add all the others just before this very first group. *) ref (match pos, first_tool_separator with | None, None -> 0 - | None, Some sep -> max 0 (toolbar#get_item_index sep) + | None, Some sep -> max 0 (toolbar#get_item_index sep#as_tool_item) | Some p, _ -> p) in let toolbar_packing w = @@ -213,7 +213,10 @@ class menu_manager ?packing ~host:(_:Gtk_helper.host) = (fun () -> b#set_active (active ())) :: set_active_states; BToggle b in - (bt_type_as_skel b)#set_tooltip (GData.tooltips ()) tooltip ""; + (*GTK3: set_tooltip does not exist anymore. *) + (*(bt_type_as_skel b)#set_tooltip (GData.tooltips ()) tooltip "";*) + (bt_type_as_skel b)#misc#set_tooltip_text tooltip; + (*/GTK3*) toolbar_buttons <- (b, sensitive) :: toolbar_buttons; b in @@ -238,9 +241,10 @@ class menu_manager ?packing ~host:(_:Gtk_helper.host) = lazy (fst !!aux), lazy (snd !!aux) in let add_menu_separator = - fun () -> - if !menu_pos > 0 || (!menu_pos = -1 && container#children <> []) then - ignore (GMenu.separator_item ~packing:container_packing ()) + fun () -> () + (*GTK3: no GMenu.separator_item *) + (*if !menu_pos > 0 || (!menu_pos = -1 && container#children <> []) then + ignore (GMenu.separator_item ~packing:container_packing ()) *) in let add_item_menu stock_opt label callback sensitive = let item = match stock_opt, callback with @@ -249,11 +253,14 @@ class menu_manager ?packing ~host:(_:Gtk_helper.host) = ignore (mi#connect#activate callback); MStandard mi | Some stock, Unit_callback callback -> - let image = GMisc.image ~stock () in + let _image = GMisc.image ~stock () in let mi = - (GMenu.image_menu_item + (*GTK3: no image_menu_item *) + (*(GMenu.image_menu_item ~image ~packing:!!menubar_packing ~label () - :> GMenu.menu_item) + :> GMenu.menu_item) *) + GMenu.menu_item ~label () + (*/GTK3*) in ignore (mi#connect#activate callback); MStandard mi diff --git a/src/plugins/gui/project_manager.ml b/src/plugins/gui/project_manager.ml index abea1ed4844..fcb2357a891 100644 --- a/src/plugins/gui/project_manager.ml +++ b/src/plugins/gui/project_manager.ml @@ -218,10 +218,9 @@ and mk_project_entry window menu ?group p = let box = GPack.hbox ~packing:p_item#add () in ignore (GMisc.label ~text:pname ~packing:box#pack ()); let buttons_box = GPack.hbox ~packing:(box#pack ~from:`END) () in - let tooltips = GData.tooltips () in let add_action stock text callback = let item = GButton.button ~packing:buttons_box#pack () in - tooltips#set_tip item#coerce ~text; + Gtk_helper.do_tooltip ~tooltip:text item; item#set_relief `NONE; let image = GMisc.image ~stock () in item#set_image image#coerce; @@ -274,7 +273,8 @@ let () = let new_item = constant_items.(0) in new_item#add_accelerator `CONTROL 'n'; constant_items.(3)#add_accelerator `CONTROL 'd'; - ignore (GMenu.separator_item ~packing:menu#append ()); + (*GTK3: no GMenu.separator_item *) + (* ignore (GMenu.separator_item ~packing:menu#append ());*) let callback () = let is_reset = reset menu in if is_reset then make_project_entries window menu diff --git a/src/plugins/gui/wfile.ml b/src/plugins/gui/wfile.ml index b32f0aa3063..9bcb0d74c44 100644 --- a/src/plugins/gui/wfile.ml +++ b/src/plugins/gui/wfile.ml @@ -76,8 +76,9 @@ class button ?kind ?title ?select ?tooltip ?parent () = let box = GPack.hbox ~homogeneous:false ~spacing:0 ~border_width:0 () in let fld = GMisc.label ~text:"(none)" ~xalign:0.0 ~packing:(box#pack ~expand:true) () in - let _ = GMisc.separator `VERTICAL - ~packing:(box#pack ~expand:false ~padding:2) ~show:true () in + (*GTK3: no GMisc.separator anymore. *) + (*let _ = GMisc.separator `VERTICAL + ~packing:(box#pack ~expand:false ~padding:2) ~show:true () in *) let _ = GMisc.image ~packing:(box#pack ~expand:false) ~stock:`OPEN () in let button = GButton.button () in let dialog = new dialog ?kind ?title ?select ?parent () in diff --git a/src/plugins/gui/widget.ml b/src/plugins/gui/widget.ml index bc9c1f649ce..0f63fd00ff6 100644 --- a/src/plugins/gui/widget.ml +++ b/src/plugins/gui/widget.ml @@ -73,7 +73,8 @@ class label ?(style=`Label) ?(align=`Left) ?width ?text () = | Some c0 , `NORMAL -> w#misc#modify_fg [ `NORMAL , `COLOR c0 ] | None , (#GDraw.color as c) -> - fg <- Some (w#misc#style#fg `NORMAL) ; + (*GTK3: misc#style does not exist anymore *) + (* fg <- Some (w#misc#style#fg `NORMAL) ; *) w#misc#modify_fg [ `NORMAL , c ] | Some _ , (#GDraw.color as c) -> w#misc#modify_fg [ `NORMAL , c ] @@ -84,7 +85,8 @@ class label ?(style=`Label) ?(align=`Left) ?width ?text () = | Some c0 , `NORMAL -> w#misc#modify_bg [ `NORMAL , `COLOR c0 ] | None , (#GDraw.color as c) -> - bg <- Some (w#misc#style#bg `NORMAL) ; + (*GTK3: misc#style does not exist anymore *) + (* bg <- Some (w#misc#style#bg `NORMAL) ; *) w#misc#modify_bg [ `NORMAL , c ] | Some _ , (#GDraw.color as c) -> w#misc#modify_bg [ `NORMAL , c ] @@ -427,8 +429,9 @@ class popup () = method add_separator = separator <- true method add_item ~label ~callback = - if not empty && separator then - ignore (GMenu.separator_item ~packing:menu#append ()) ; + (*GTK3: no separator_item anymore. *) + (* if not empty && separator then + ignore (GMenu.separator_item ~packing:menu#append ()) ; *) let item = GMenu.menu_item ~label ~packing:menu#append () in ignore (item#connect#activate ~callback) ; empty <- false ; separator <- false -- GitLab