1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CHROME_BROWSER_UI_LIBGTK2UI_MENU_UTIL_H_ 6 #define CHROME_BROWSER_UI_LIBGTK2UI_MENU_UTIL_H_ 7 8 #include <gtk/gtk.h> 9 10 #include "ui/gfx/image/image.h" 11 12 namespace ui { 13 class MenuModel; 14 } 15 16 namespace libgtk2ui { 17 // Builds GtkImageMenuItems. 18 GtkWidget* BuildMenuItemWithImage(const std::string& label, GtkWidget* image); 19 GtkWidget* BuildMenuItemWithImage(const std::string& label, 20 const gfx::Image& icon); 21 GtkWidget* BuildMenuItemWithLabel(const std::string& label); 22 23 ui::MenuModel* ModelForMenuItem(GtkMenuItem* menu_item); 24 25 // This method is used to build the menu dynamically. The return value is the 26 // new menu item. 27 GtkWidget* AppendMenuItemToMenu(int index, 28 ui::MenuModel* model, 29 GtkWidget* menu_item, 30 GtkWidget* menu, 31 bool connect_to_activate, 32 GCallback item_activated_cb, 33 void* this_ptr); 34 35 // Gets the ID of a menu item. 36 // Returns true if the menu item has an ID. 37 bool GetMenuItemID(GtkWidget* menu_item, int* menu_id); 38 39 // Execute command associated with specified id. 40 void ExecuteCommand(ui::MenuModel* model, int id); 41 42 // Creates a GtkMenu from |model_|. block_activation_ptr is used to disable 43 // the item_activated_callback while we set up the set up the menu items. 44 // See comments in definition of SetMenuItemInfo for more info. 45 void BuildSubmenuFromModel(ui::MenuModel* model, 46 GtkWidget* menu, 47 GCallback item_activated_cb, 48 bool* block_activation, 49 void* this_ptr); 50 51 // Sets the check mark, enabled/disabled state and dynamic labels on menu items. 52 void SetMenuItemInfo(GtkWidget* widget, void* block_activation_ptr); 53 54 } // namespace libgtk2ui 55 56 #endif // CHROME_BROWSER_UI_LIBGTK2UI_MENU_UTIL_H_ 57