1 <!DOCTYPE html
> <html> <head> <title>button.coffee
</title> <meta http-equiv=
"content-type" content=
"text/html; charset=UTF-8"> <link rel=
"stylesheet" media=
"all" href=
"docco.css" /> </head> <body> <div id=
"container"> <div id=
"background"></div> <div id=
"jump_to"> Jump To
… <div id=
"jump_wrapper"> <div id=
"jump_page"> <a class=
"source" href=
"bootstrap.html"> bootstrap.coffee
</a> <a class=
"source" href=
"chrome.html"> chrome.coffee
</a> <a class=
"source" href=
"console.html"> console.coffee
</a> <a class=
"source" href=
"unload.html"> unload.coffee
</a> <a class=
"source" href=
"window-utils.html"> window-utils.coffee
</a> <a class=
"source" href=
"button.html"> button.coffee
</a> <a class=
"source" href=
"commands.html"> commands.coffee
</a> <a class=
"source" href=
"events.html"> events.coffee
</a> <a class=
"source" href=
"help.html"> help.coffee
</a> <a class=
"source" href=
"hints.html"> hints.coffee
</a> <a class=
"source" href=
"marker.html"> marker.coffee
</a> <a class=
"source" href=
"prefs.html"> prefs.coffee
</a> <a class=
"source" href=
"utils.html"> utils.coffee
</a> <a class=
"source" href=
"vim.html"> vim.coffee
</a> </div> </div> </div> <table cellpadding=
"0" cellspacing=
"0"> <thead> <tr> <th class=
"docs"> <h1> button.coffee
</h1> </th> <th class=
"code"> </th> </tr> </thead> <tbody> <tr id=
"section-1"> <td class=
"docs"> <div class=
"pilwrap"> <a class=
"pilcrow" href=
"#section-1">¶</a> </div> </td> <td class=
"code"> <div class=
"highlight"><pre><span class=
"p">{
</span> <span class=
"nx">getPref
</span>
2 <span class=
"p">,
</span> <span class=
"nx">setPref
</span> <span class=
"p">}
</span> <span class=
"o">=
</span> <span class=
"nx">require
</span> <span class=
"s">'prefs
'</span>
4 <span class=
"nv">positions =
</span><span class=
"p">{}
</span>
6 <span class=
"nv">persist =
</span><span class=
"nf">(document, toolbar, buttonID, beforeID) -
></span>
7 <span class=
"nv">currentset =
</span><span class=
"nx">tb
</span><span class=
"p">.
</span><span class=
"nx">getAttribute
</span><span class=
"p">(
</span><span class=
"s">'currentset
'</span><span class=
"p">).
</span><span class=
"nx">split
</span><span class=
"p">(
</span><span class=
"s">',
'</span><span class=
"p">)
</span>
8 <span class=
"nv">idx =
</span><span class=
"k">if
</span> <span class=
"nx">beforeID
</span> <span class=
"k">then
</span> <span class=
"nx">currentset
</span><span class=
"p">.
</span><span class=
"nx">indexOf
</span><span class=
"p">(
</span><span class=
"nx">beforeID
</span><span class=
"p">)
</span> <span class=
"k">else
</span> <span class=
"o">-
</span><span class=
"mi">1</span><span class=
"p">;
</span>
9 <span class=
"k">if
</span> <span class=
"nx">idx
</span> <span class=
"o">!=
</span> <span class=
"o">-
</span><span class=
"mi">1</span>
10 <span class=
"nx">currentset
</span><span class=
"p">.
</span><span class=
"nx">splice
</span><span class=
"p">(
</span><span class=
"nx">idx
</span><span class=
"p">,
</span> <span class=
"mi">0</span><span class=
"p">,
</span> <span class=
"nx">buttonID
</span><span class=
"p">);
</span>
11 <span class=
"k">else
</span>
12 <span class=
"nx">currentset
</span><span class=
"p">.
</span><span class=
"nx">push
</span><span class=
"p">(
</span><span class=
"nx">buttonID
</span><span class=
"p">);
</span>
14 <span class=
"nx">toolbar
</span><span class=
"p">.
</span><span class=
"nx">setAttribute
</span> <span class=
"s">"currentset
"</span><span class=
"p">,
</span> <span class=
"nx">currentset
</span><span class=
"p">.
</span><span class=
"nx">join
</span><span class=
"p">(
</span><span class=
"s">",
"</span><span class=
"p">)
</span>
15 <span class=
"nb">document
</span><span class=
"p">.
</span><span class=
"nx">persist
</span> <span class=
"nx">toolbar
</span><span class=
"p">.
</span><span class=
"nx">id
</span><span class=
"p">,
</span> <span class=
"s">"currentset
"</span>
16 <span class=
"k">return
</span> <span class=
"p">[
</span><span class=
"nx">currentset
</span><span class=
"p">,
</span> <span class=
"nx">idx
</span><span class=
"p">]
</span>
18 <span class=
"nv">setButtonDefaultPosition =
</span><span class=
"nf">(buttonId, toolbarId, beforeId) -
></span>
19 <span class=
"nx">positions
</span><span class=
"p">[
</span><span class=
"nx">buttonId
</span><span class=
"p">]
</span> <span class=
"o">=
</span> <span class=
"p">[
</span><span class=
"nx">toolbarId
</span><span class=
"p">,
</span> <span class=
"nx">beforeId
</span><span class=
"p">]
</span>
21 <span class=
"nv">restorePosition =
</span><span class=
"nf">(doc, button) -
></span>
22 <span class=
"nv">$ =
</span><span class=
"nf">(sel, all) -
></span> <span class=
"nx">doc
</span><span class=
"p">[
</span><span class=
"k">if
</span> <span class=
"nx">all
</span> <span class=
"k">then
</span> <span class=
"s">"querySelectorAll
"</span> <span class=
"k">else
</span> <span class=
"s">"getElementById
"</span><span class=
"p">](
</span><span class=
"nx">sel
</span><span class=
"p">)
</span>
24 <span class=
"p">(
</span><span class=
"nx">$
</span><span class=
"p">(
</span><span class=
"s">"navigator-toolbox
"</span><span class=
"p">)
</span> <span class=
"o">||
</span> <span class=
"nx">$
</span><span class=
"p">(
</span><span class=
"s">"mail-toolbox
"</span><span class=
"p">)).
</span><span class=
"nx">palette
</span><span class=
"p">.
</span><span class=
"nx">appendChild
</span><span class=
"p">(
</span><span class=
"nx">button
</span><span class=
"p">)
</span>
26 <span class=
"k">for
</span> <span class=
"nx">tb
</span> <span class=
"k">in
</span> <span class=
"nx">$
</span><span class=
"p">(
</span><span class=
"s">"toolbar
"</span><span class=
"p">,
</span> <span class=
"kc">true
</span><span class=
"p">)
</span>
27 <span class=
"nv">currentset =
</span><span class=
"nx">tb
</span><span class=
"p">.
</span><span class=
"nx">getAttribute
</span><span class=
"p">(
</span><span class=
"s">'currentset
'</span><span class=
"p">).
</span><span class=
"nx">split
</span><span class=
"p">(
</span><span class=
"s">',
'</span><span class=
"p">)
</span>
28 <span class=
"nv">idx =
</span><span class=
"nx">currentset
</span><span class=
"p">.
</span><span class=
"nx">indexOf
</span> <span class=
"nx">button
</span><span class=
"p">.
</span><span class=
"nx">id
</span>
29 <span class=
"k">if
</span> <span class=
"nx">idx
</span> <span class=
"o">></span> <span class=
"o">-
</span><span class=
"mi">1</span>
30 <span class=
"nv">toolbar =
</span><span class=
"nx">tb
</span>
31 <span class=
"k">break
</span>
32 </pre></div> </td> </tr> <tr id=
"section-2"> <td class=
"docs"> <div class=
"pilwrap"> <a class=
"pilcrow" href=
"#section-2">¶</a> </div> <p>Saved position not found, using the default one, after persisting it
</p> </td> <td class=
"code"> <div class=
"highlight"><pre> <span class=
"k">if
</span> <span class=
"o">!
</span><span class=
"nx">toolbar
</span> <span class=
"o">and
</span> <span class=
"p">(
</span><span class=
"nx">button
</span><span class=
"p">.
</span><span class=
"nx">id
</span> <span class=
"k">in
</span> <span class=
"nb">Object
</span><span class=
"p">.
</span><span class=
"nx">keys
</span><span class=
"p">(
</span><span class=
"nx">positions
</span><span class=
"p">))
</span>
33 <span class=
"p">[
</span><span class=
"nx">tbID
</span><span class=
"p">,
</span> <span class=
"nx">beforeID
</span><span class=
"p">]
</span> <span class=
"o">=
</span> <span class=
"nx">positions
</span><span class=
"p">[
</span><span class=
"nx">button
</span><span class=
"p">.
</span><span class=
"nx">id
</span><span class=
"p">];
</span>
34 <span class=
"nv">toolbar =
</span><span class=
"nx">$
</span><span class=
"p">(
</span><span class=
"nx">tbID
</span><span class=
"p">)
</span>
35 <span class=
"p">[
</span><span class=
"nx">currentset
</span><span class=
"p">,
</span> <span class=
"nx">idx
</span><span class=
"p">]
</span> <span class=
"o">=
</span> <span class=
"nx">persist
</span><span class=
"p">(
</span><span class=
"nx">doc
</span><span class=
"p">,
</span> <span class=
"nx">toolbar
</span><span class=
"p">,
</span> <span class=
"nx">button
</span><span class=
"p">.
</span><span class=
"nx">id
</span><span class=
"p">,
</span> <span class=
"nx">beforeID
</span><span class=
"p">)
</span>
37 <span class=
"k">if
</span> <span class=
"nx">toolbar
</span>
38 <span class=
"k">if
</span> <span class=
"nx">idx
</span> <span class=
"o">></span> <span class=
"o">-
</span><span class=
"mi">1</span></pre></div> </td> </tr> <tr id=
"section-3"> <td class=
"docs"> <div class=
"pilwrap"> <a class=
"pilcrow" href=
"#section-3">¶</a> </div> <p>Inserting the button before the first item in
<code>currentset
</code>
39 after
<code>idx
</code> that is present in the document
</p> </td> <td class=
"code"> <div class=
"highlight"><pre> <span class=
"k">for
</span> <span class=
"nx">i
</span> <span class=
"k">in
</span> <span class=
"p">[
</span><span class=
"nx">idx
</span> <span class=
"o">+
</span> <span class=
"mi">1</span> <span class=
"p">...
</span> <span class=
"nx">currentset
</span><span class=
"p">.
</span><span class=
"nx">length
</span><span class=
"p">]
</span>
40 <span class=
"k">if
</span> <span class=
"nv">before =
</span><span class=
"nx">$
</span><span class=
"p">(
</span><span class=
"nx">currentset
</span><span class=
"p">[
</span><span class=
"nx">i
</span><span class=
"p">])
</span>
41 <span class=
"nx">toolbar
</span><span class=
"p">.
</span><span class=
"nx">insertItem
</span> <span class=
"nx">button
</span><span class=
"p">.
</span><span class=
"nx">id
</span><span class=
"p">,
</span> <span class=
"nx">before
</span>
42 <span class=
"k">return
</span><span class=
"p">;
</span>
44 <span class=
"nx">toolbar
</span><span class=
"p">.
</span><span class=
"nx">insertItem
</span> <span class=
"nx">button
</span><span class=
"p">.
</span><span class=
"nx">id
</span>
46 <span class=
"nv">iconUrl =
</span><span class=
"nx">do
</span> <span class=
"o">-
></span>
47 <span class=
"nv">icon_normal =
</span><span class=
"nx">getResourceURI
</span><span class=
"p">(
</span><span class=
"s">'resources/icon.png
'</span><span class=
"p">).
</span><span class=
"nx">spec
</span>
48 <span class=
"nv">icon_grey =
</span><span class=
"nx">getResourceURI
</span><span class=
"p">(
</span><span class=
"s">'resources/icon-grey.png
'</span><span class=
"p">).
</span><span class=
"nx">spec
</span>
50 <span class=
"k">return
</span> <span class=
"nf">(disabled) -
></span> <span class=
"s">"url(
</span><span class=
"si">#{
</span> <span class=
"k">if
</span> <span class=
"nx">disabled
</span> <span class=
"k">then
</span> <span class=
"nx">icon_grey
</span> <span class=
"k">else
</span> <span class=
"nx">icon_normal
</span> <span class=
"si">}
</span><span class=
"s">)
"</span>
52 <span class=
"nv">addToolbarButton =
</span><span class=
"nf">(window) -
></span>
53 <span class=
"nv">buttonId =
</span><span class=
"nx">getPref
</span> <span class=
"s">'button_id
'</span>
54 <span class=
"nv">disabled =
</span><span class=
"nx">getPref
</span> <span class=
"s">'disabled
'</span>
56 <span class=
"nv">doc =
</span><span class=
"nb">window
</span><span class=
"p">.
</span><span class=
"nb">document
</span>
57 <span class=
"nv">button =
</span><span class=
"nx">doc
</span><span class=
"p">.
</span><span class=
"nx">createElement
</span> <span class=
"s">'toolbarbutton
'</span>
58 <span class=
"nx">button
</span><span class=
"p">.
</span><span class=
"nx">setAttribute
</span> <span class=
"s">'id
'</span><span class=
"p">,
</span> <span class=
"nx">buttonId
</span>
59 <span class=
"nx">button
</span><span class=
"p">.
</span><span class=
"nx">setAttribute
</span> <span class=
"s">'type
'</span><span class=
"p">,
</span> <span class=
"s">'checkbox
'</span>
60 <span class=
"nx">button
</span><span class=
"p">.
</span><span class=
"nx">setAttribute
</span> <span class=
"s">'label
'</span><span class=
"p">,
</span> <span class=
"s">'Vim for Firefox
'</span>
61 <span class=
"nx">button
</span><span class=
"p">.
</span><span class=
"nx">setAttribute
</span> <span class=
"s">'class
'</span><span class=
"p">,
</span> <span class=
"s">'toolbarbutton-
1 chromeclass-toolbar-additional
'</span>
62 <span class=
"nx">button
</span><span class=
"p">.
</span><span class=
"nx">setAttribute
</span> <span class=
"s">'tooltiptext
'</span><span class=
"p">,
</span> <span class=
"s">'Enable/Disable
'</span>
63 <span class=
"nv">button.checked =
</span><span class=
"nx">disabled
</span>
64 <span class=
"nv">button.style.listStyleImage =
</span><span class=
"nx">iconUrl
</span><span class=
"p">(
</span><span class=
"nx">disabled
</span><span class=
"p">)
</span>
66 <span class=
"nv">onButtonCommand =
</span><span class=
"nf">(event) -
></span>
67 <span class=
"nv">dis =
</span><span class=
"nx">button
</span><span class=
"p">.
</span><span class=
"nx">checked
</span>
68 <span class=
"nx">setPref
</span> <span class=
"s">'disabled
'</span><span class=
"p">,
</span> <span class=
"nx">dis
</span>
69 <span class=
"nv">button.style.listStyleImage =
</span><span class=
"nx">iconUrl
</span><span class=
"p">(
</span><span class=
"nx">dis
</span><span class=
"p">)
</span>
71 <span class=
"nx">button
</span><span class=
"p">.
</span><span class=
"nx">addEventListener
</span> <span class=
"s">'command
'</span><span class=
"p">,
</span> <span class=
"nx">onButtonCommand
</span><span class=
"p">,
</span> <span class=
"kc">false
</span>
74 <span class=
"nx">restorePosition
</span> <span class=
"nx">doc
</span><span class=
"p">,
</span> <span class=
"nx">button
</span><span class=
"p">,
</span> <span class=
"s">'nav-bar
'</span><span class=
"p">,
</span> <span class=
"s">'bookmarks-menu-button-container
'</span>
76 <span class=
"nx">unload
</span> <span class=
"o">-
></span> <span class=
"nx">button
</span><span class=
"p">.
</span><span class=
"nx">parentNode
</span><span class=
"p">.
</span><span class=
"nx">removeChild
</span> <span class=
"nx">button
</span>
78 <span class=
"nv">exports.addToolbarButton =
</span><span class=
"nx">addToolbarButton
</span>
79 <span class=
"nv">exports.setButtonDefaultPosition =
</span><span class=
"nx">setButtonDefaultPosition
</span>
81 </pre></div> </td> </tr> </tbody> </table> </div> </body> </html>