Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(158)

Side by Side Diff: app/menus/simple_menu_model.h

Issue 2800015: GTK: First draft of the unified cut/copy/paste and +/-/Fullscreen menu items. (Closed) Base URL: http://src.chromium.org/git/chromium.git
Patch Set: estade cleanups Created 10 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « app/menus/menu_model.h ('k') | app/menus/simple_menu_model.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef APP_MENUS_SIMPLE_MENU_MODEL_H_ 5 #ifndef APP_MENUS_SIMPLE_MENU_MODEL_H_
6 #define APP_MENUS_SIMPLE_MENU_MODEL_H_ 6 #define APP_MENUS_SIMPLE_MENU_MODEL_H_
7 7
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/string16.h" 10 #include "base/string16.h"
11 #include "app/menus/button_menu_item_model.h"
11 #include "app/menus/menu_model.h" 12 #include "app/menus/menu_model.h"
12 #include "third_party/skia/include/core/SkBitmap.h" 13 #include "third_party/skia/include/core/SkBitmap.h"
13 14
14 namespace menus { 15 namespace menus {
15 16
16 // A simple MenuModel implementation with an imperative API for adding menu 17 // A simple MenuModel implementation with an imperative API for adding menu
17 // items. This makes it easy to construct fixed menus. Menus populated by 18 // items. This makes it easy to construct fixed menus. Menus populated by
18 // dynamic data sources may be better off implementing MenuModel directly. 19 // dynamic data sources may be better off implementing MenuModel directly.
19 // The breadth of MenuModel is not exposed through this API. 20 // The breadth of MenuModel is not exposed through this API.
20 class SimpleMenuModel : public MenuModel { 21 class SimpleMenuModel : public MenuModel {
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 virtual ~SimpleMenuModel(); 54 virtual ~SimpleMenuModel();
54 55
55 // Methods for adding items to the model. 56 // Methods for adding items to the model.
56 void AddItem(int command_id, const string16& label); 57 void AddItem(int command_id, const string16& label);
57 void AddItemWithStringId(int command_id, int string_id); 58 void AddItemWithStringId(int command_id, int string_id);
58 void AddSeparator(); 59 void AddSeparator();
59 void AddCheckItem(int command_id, const string16& label); 60 void AddCheckItem(int command_id, const string16& label);
60 void AddCheckItemWithStringId(int command_id, int string_id); 61 void AddCheckItemWithStringId(int command_id, int string_id);
61 void AddRadioItem(int command_id, const string16& label, int group_id); 62 void AddRadioItem(int command_id, const string16& label, int group_id);
62 void AddRadioItemWithStringId(int command_id, int string_id, int group_id); 63 void AddRadioItemWithStringId(int command_id, int string_id, int group_id);
64
65 // These three methods take pointers to various sub-models. These models
66 // should be owned by the same owner of this SimpleMenuModel.
67 void AddButtonItem(int command_id, ButtonMenuItemModel* model);
63 void AddSubMenu(int command_id, const string16& label, MenuModel* model); 68 void AddSubMenu(int command_id, const string16& label, MenuModel* model);
64 void AddSubMenuWithStringId(int command_id, int string_id, MenuModel* model); 69 void AddSubMenuWithStringId(int command_id, int string_id, MenuModel* model);
65 70
66 // Methods for inserting items into the model. 71 // Methods for inserting items into the model.
67 void InsertItemAt(int index, int command_id, const string16& label); 72 void InsertItemAt(int index, int command_id, const string16& label);
68 void InsertItemWithStringIdAt(int index, int command_id, int string_id); 73 void InsertItemWithStringIdAt(int index, int command_id, int string_id);
69 void InsertSeparatorAt(int index); 74 void InsertSeparatorAt(int index);
70 void InsertCheckItemAt(int index, int command_id, const string16& label); 75 void InsertCheckItemAt(int index, int command_id, const string16& label);
71 void InsertCheckItemWithStringIdAt(int index, int command_id, int string_id); 76 void InsertCheckItemWithStringIdAt(int index, int command_id, int string_id);
72 void InsertRadioItemAt( 77 void InsertRadioItemAt(
(...skipping 22 matching lines...) Expand all
95 virtual int GetItemCount() const; 100 virtual int GetItemCount() const;
96 virtual ItemType GetTypeAt(int index) const; 101 virtual ItemType GetTypeAt(int index) const;
97 virtual int GetCommandIdAt(int index) const; 102 virtual int GetCommandIdAt(int index) const;
98 virtual string16 GetLabelAt(int index) const; 103 virtual string16 GetLabelAt(int index) const;
99 virtual bool IsLabelDynamicAt(int index) const; 104 virtual bool IsLabelDynamicAt(int index) const;
100 virtual bool GetAcceleratorAt(int index, 105 virtual bool GetAcceleratorAt(int index,
101 menus::Accelerator* accelerator) const; 106 menus::Accelerator* accelerator) const;
102 virtual bool IsItemCheckedAt(int index) const; 107 virtual bool IsItemCheckedAt(int index) const;
103 virtual int GetGroupIdAt(int index) const; 108 virtual int GetGroupIdAt(int index) const;
104 virtual bool GetIconAt(int index, SkBitmap* icon) const; 109 virtual bool GetIconAt(int index, SkBitmap* icon) const;
110 virtual ButtonMenuItemModel* GetButtonMenuItemAt(int index) const;
105 virtual bool IsEnabledAt(int index) const; 111 virtual bool IsEnabledAt(int index) const;
106 virtual void HighlightChangedTo(int index); 112 virtual void HighlightChangedTo(int index);
107 virtual void ActivatedAt(int index); 113 virtual void ActivatedAt(int index);
108 virtual MenuModel* GetSubmenuModelAt(int index) const; 114 virtual MenuModel* GetSubmenuModelAt(int index) const;
109 115
110 protected: 116 protected:
111 // Some variants of this model (SystemMenuModel) relies on items to be 117 // Some variants of this model (SystemMenuModel) relies on items to be
112 // inserted backwards. This is counter-intuitive for the API, so rather than 118 // inserted backwards. This is counter-intuitive for the API, so rather than
113 // forcing customers to insert things backwards, we return the indices 119 // forcing customers to insert things backwards, we return the indices
114 // backwards instead. That's what this method is for. By default, it just 120 // backwards instead. That's what this method is for. By default, it just
115 // returns what it's passed. 121 // returns what it's passed.
116 virtual int FlipIndex(int index) const { return index; } 122 virtual int FlipIndex(int index) const { return index; }
117 123
118 Delegate* delegate() { return delegate_; } 124 Delegate* delegate() { return delegate_; }
119 125
120 private: 126 private:
121 struct Item { 127 struct Item {
122 int command_id; 128 int command_id;
123 string16 label; 129 string16 label;
124 SkBitmap icon; 130 SkBitmap icon;
125 ItemType type; 131 ItemType type;
126 int group_id; 132 int group_id;
127 MenuModel* submenu; 133 MenuModel* submenu;
134 ButtonMenuItemModel* button_model;
128 }; 135 };
129 std::vector<Item> items_; 136 std::vector<Item> items_;
130 137
131 // Functions for inserting items into |items_|. 138 // Functions for inserting items into |items_|.
132 void AppendItem(const Item& item); 139 void AppendItem(const Item& item);
133 void InsertItemAtIndex(const Item& item, int index); 140 void InsertItemAtIndex(const Item& item, int index);
134 void ValidateItem(const Item& item); 141 void ValidateItem(const Item& item);
135 142
136 Delegate* delegate_; 143 Delegate* delegate_;
137 144
138 DISALLOW_COPY_AND_ASSIGN(SimpleMenuModel); 145 DISALLOW_COPY_AND_ASSIGN(SimpleMenuModel);
139 }; 146 };
140 147
141 } // namespace menus 148 } // namespace menus
142 149
143 #endif // APP_MENUS_SIMPLE_MENU_MODEL_H_ 150 #endif // APP_MENUS_SIMPLE_MENU_MODEL_H_
OLDNEW
« no previous file with comments | « app/menus/menu_model.h ('k') | app/menus/simple_menu_model.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698