[gnome-builder/wip/chergert/perspective] html-preview: use menu merging



commit 87c657ba141710f6c2049deb5bbb7aca0c600842
Author: Christian Hergert <chergert redhat com>
Date:   Sat Dec 5 00:34:31 2015 -0800

    html-preview: use menu merging
    
    Now that we can merge menus, just use that instead of manually extending
    the menu. Use action:enabled instead of hiding the menu item. I'd rather
    we hide the menu item, maybe there is an attribute/hint for that...

 plugins/html-preview/Makefile.am                   |   10 +++---
 .../html-preview/html_preview_plugin/__init__.py   |   28 +++++---------------
 .../html-preview/html_preview_plugin/gtk/menus.ui  |   11 ++++++++
 3 files changed, 23 insertions(+), 26 deletions(-)
---
diff --git a/plugins/html-preview/Makefile.am b/plugins/html-preview/Makefile.am
index e0e41bd..cecfeb0 100644
--- a/plugins/html-preview/Makefile.am
+++ b/plugins/html-preview/Makefile.am
@@ -6,16 +6,16 @@ plugindir = $(libdir)/gnome-builder/plugins
 dist_plugin_DATA = html-preview.plugin
 
 moduledir = $(libdir)/gnome-builder/plugins/html_preview_plugin
-dist_module_DATA = \
-       html_preview_plugin/__init__.py \
-       $(NULL)
+dist_module_DATA = html_preview_plugin/__init__.py
 
 resourcedir = $(datadir)/gnome-builder/plugins/html_preview_plugin
 dist_resource_DATA = \
        html_preview_plugin/markdown.css \
        html_preview_plugin/markdown-view.js \
-       html_preview_plugin/marked.js \
-       $(NULL)
+       html_preview_plugin/marked.js
+
+resourcegtkdir = $(datadir)/gnome-builder/plugins/html_preview_plugin/gtk
+dist_resourcegtk_DATA = html_preview_plugin/gtk/menus.ui
 
 endif
 
diff --git a/plugins/html-preview/html_preview_plugin/__init__.py 
b/plugins/html-preview/html_preview_plugin/__init__.py
index a5b9d8f..e0ffa48 100644
--- a/plugins/html-preview/html_preview_plugin/__init__.py
+++ b/plugins/html-preview/html_preview_plugin/__init__.py
@@ -55,20 +55,19 @@ class HtmlPreviewData(GObject.Object, Ide.ApplicationAddin):
 
 class HtmlPreviewAddin(GObject.Object, Ide.EditorViewAddin):
     def do_load(self, editor):
-        self.menu = HtmlPreviewMenu(editor.get_menu())
+        self.action = Gio.SimpleAction(name='preview-as-html', enabled=True)
+        self.action.connect('activate', lambda *_: self.preview_activated(editor))
 
         actions = editor.get_action_group('view')
-        action = Gio.SimpleAction(name='preview-as-html', enabled=True)
-        action.connect('activate', lambda *_: self.preview_activated(editor))
-        actions.add_action(action)
+        actions.add_action(self.action)
 
     def do_unload(self, editor):
-        self.menu.hide()
+        actions = editor.get_action_group('view')
+        actions.remove_action('preview-as-html')
 
     def do_language_changed(self, language_id):
-        self.menu.hide()
-        if language_id in ('html', 'markdown'):
-            self.menu.show()
+        enabled = (language_id in ('html', 'markdown'))
+        self.action.set_enabled(enabled)
 
     def preview_activated(self, editor):
         document = editor.get_document()
@@ -77,19 +76,6 @@ class HtmlPreviewAddin(GObject.Object, Ide.EditorViewAddin):
         print (stack)
         stack.add(view)
 
-class HtmlPreviewMenu:
-    exten = None
-
-    def __init__(self, menu):
-        self.exten = Ide.MenuExtension.new_for_section(menu, 'preview-section')
-
-    def show(self):
-        item = Gio.MenuItem.new(_("Preview as HTML"), 'view.preview-as-html')
-        self.exten.append_menu_item(item)
-
-    def hide(self):
-        self.exten.remove_items()
-
 class HtmlPreviewView(Ide.LayoutView):
     markdown = False
 
diff --git a/plugins/html-preview/html_preview_plugin/gtk/menus.ui 
b/plugins/html-preview/html_preview_plugin/gtk/menus.ui
new file mode 100644
index 0000000..ce5d852
--- /dev/null
+++ b/plugins/html-preview/html_preview_plugin/gtk/menus.ui
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<interface>
+  <menu id="ide-layout-stack-menu">
+    <section id="ide-layout-stack-menu-preview-section">
+      <item>
+        <attribute name="label" translatable="yes">Preview as HTML</attribute>
+        <attribute name="action">view.preview-as-html</attribute>
+      </item>
+    </section>
+  </menu>
+</interface>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]