Mercurial > libervia-web
diff src/browser/sat_browser/base_widget.py @ 676:849ffb24d5bf frontends_multi_profiles
browser side: menus refactorisation:
- use of the new quick_frontends.quick_menus module, resulting in a big code simplification in Libervia
- menu are added in there respective modules: main menus are done directely in libervia_main, while tarot and radiocol menus are done in game_tarot and game_radiocol
- launchAction has the same signature as in QuickApp
- base_menu: there are now 2 classes to launch an action: MenuCmd which manage quick_menus classes, and SimpleCmd to launch a generic callback
- base_menu: MenuNode has been removed as logic is now in quick_menus
- base_menu: GenericMenuBar.update method can be called to fully (re)build the menus
- base_widget: removed WidgetSubMenuBar which is no more useful (GenericMenuBar do the same thing)
- plugin_menu_context is used in LiberviaWidget and other classes with menus to indicate which menu types must be used
- otr menus hooks are temporarily removed, will be fixed soon
author | Goffi <goffi@goffi.org> |
---|---|
date | Tue, 17 Mar 2015 20:42:02 +0100 |
parents | 6d3142b782c3 |
children | 9877607c719a |
line wrap: on
line diff
--- a/src/browser/sat_browser/base_widget.py Tue Mar 17 20:28:41 2015 +0100 +++ b/src/browser/sat_browser/base_widget.py Tue Mar 17 20:42:02 2015 +0100 @@ -17,10 +17,10 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -import pyjd # this is dummy in pyjs from sat.core.log import getLogger log = getLogger(__name__) import base_menu +from sat_frontends.quick_frontend import quick_menus ### Exceptions ### @@ -53,30 +53,14 @@ base_menu.GenericMenuBar.__init__(self, host, vertical=vertical, styles=menu_styles) # regroup all the dynamic menu categories in a sub-menu - sub_menu = WidgetSubMenuBar(host, vertical=True) - try: - parent.addMenus(sub_menu) - except (AttributeError, TypeError): # FIXME: pyjamas can throw a TypeError depending on compilation options - pass - else: - if len(sub_menu.getCategories()) > 0: - self.addCategory('', '', 'plugins', sub_menu) + for menu_context in parent.plugin_menu_context: + main_cont = host.menus.getMainContainer(menu_context) + if len(main_cont)>0: # we don't add the icon if the menu is empty + sub_menu = base_menu.GenericMenuBar(host, vertical=True, flat_level=1) + sub_menu.update(menu_context, parent) + menu_category = quick_menus.MenuCategory("plugins", extra={'icon':'plugins'}) + self.addCategory(menu_category, sub_menu) @classmethod - def getCategoryHTML(cls, menu_name_i18n, type_): - return cls.ITEM_TPL % type_ - - -class WidgetSubMenuBar(base_menu.GenericMenuBar): - - def __init__(self, host, vertical=True): - """ - - @param host (SatWebFrontend) - @param vertical (bool): if True, set the menu vertically - """ - base_menu.GenericMenuBar.__init__(self, host, vertical=vertical, flat_level=1) - - @classmethod - def getCategoryHTML(cls, menu_name_i18n, type_): - return menu_name_i18n + def getCategoryHTML(cls, category): + return cls.ITEM_TPL % category.icon