root/lang/javascript/vimperator-plugins/branches/2.1/tinymenu.js

Revision 30198, 3.2 kB (checked in by anekos, 19 months ago)

メニューを開くコマンドを追加
:opentinymenu

Line 
1var PLUGIN_INFO =
2<VimperatorPlugin>
3<name>{NAME}</name>
4<description>Tiny Menu for Vimperator</description>
5<minVersion>2.0pre</minVersion>
6<maxVersion>2.0</maxVersion>
7<updateURL>http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk/tinymenu.js</updateURL>
8<author mail="hotchpotch@gmail.com" homepage="http://d.hatena.ne.jp/secondlife/">Yuichi Tateno</author>
9<license>MPL 1.1/GPL 2.0/LGPL 2.1</license>
10<version>0.2</version>
11<detail><![CDATA[
12append statusbar's menuicon like Tiny Menu [ https://addons.mozilla.org/firefox/addon/1455 ].
13
14thx icon id:tnx.
15
16== Commands ==
17  :opentinymenu:
18    Open the tiny menu.
19]]></detail>
20</VimperatorPlugin>;
21
22(function() {
23    if (!liberator.plugins.tinymenu)
24        liberator.plugins.tinymenu = {};
25
26    let tinymenu = liberator.plugins.tinymenu;
27    if (tinymenu.menu) return;
28
29    let p = function(msg) {
30        Application.console.log(msg);
31    };
32
33    const ICON = 'data:image/png;base64,'+
34                 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK'+
35                 '6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGiSURBVHja'+
36                 'jFPLSsNQEJ30kZK+Nkk3zUoQuhKErK0gCHHlN5SCUFoImEU3LgVBiFAQhIIf4UIo'+
37                 'CIJ/oO3KbWm7aLorJTQg9UxsYxKi7cDhPuaec+femRFqtRpFrAJcAMfA4XrvHXgD'+
38                 'usBn8HAqQr4ErlVVlXK5HEmS5G06jqMtFgttPB43sLwC7qICIvCkKIpeKpUok8mE'+
39                 'VLPZrIdisSjZtm3NZrNTbJ8D7kbgFkQdN5Miy/SfqeUyffT7OoRusDRZ4ABoleFg'+
40                 'O6pWyTTNEMmyrNB6atsEAQPTRxao4+akIAg/zumU2u12mIC9oCUSCWIO/qTOAjre'+
41                 '5js1TYsNvdls/qapUqFCocBTnQX2RFEMHTYMI7TudDoeKWjpdNr7klTcbUzYZusn'+
42                 'J1lg6LrufjB1cRFEDRwehizQm8/nraDALhGAw8MLC3RHo1FDlmU/E9siWK1WhAx8'+
43                 'bdI4AB4mk0mLC2mXCHCWh3vmCutm8ksZNR9L4iwsl0suIEIp96KlzD9yBoffTPl8'+
44                 'PthMHhFhO38108bY8YyD3M4nkXZ+jWvnbwEGAKqdlwtH3ubkAAAAAElFTkSuQmCC';
45
46    if (!tinymenu.popup) {
47        let menus = Array.slice(document.getElementById('main-menubar').childNodes);
48        let popup = document.createElement('menupopup');
49        menus.reverse().forEach(function(elem) popup.appendChild(elem.cloneNode(true)));
50        popup.setAttribute('id', 'gimperator-tinymenu-popup');
51        tinymenu.popup = popup;
52    }
53
54    if (!tinymenu.menu) {
55        let menu = document.createElement('statusbarpanel');
56        menu.setAttribute('id', 'vimperator-tinymenu');
57        menu.setAttribute('class','statusbarpanel-iconic');
58        menu.setAttribute('src', ICON);
59        tinymenu.menu = menu;
60    }
61
62    let menu = tinymenu.menu;
63    let popup = tinymenu.popup;
64
65    menu.addEventListener('click', function(event) {
66        if (popup.state == 'closed')
67            popup.openPopup(menu, 'before_end', 0, 0, false, true);
68    }, false);
69
70    commands.addUserCommand(
71        ['opentinymenu'],
72        'Open the tiny menu ',
73        function () {
74            popup.openPopup(menu, 'before_end', 0, 0, false, true);
75        },
76        true
77    );
78
79    //document.getElementById('status-bar').insertBefore(menu, document.getElementById('security-button').nextSibling);
80    document.getElementById('status-bar').appendChild(popup);
81    document.getElementById('status-bar').appendChild(menu);
82})();
Note: See TracBrowser for help on using the browser.