]> git.gir.st - VimFx.git/blob - docs/utils.html
enering/leaving modes tweaks
[VimFx.git] / docs / utils.html
1 <!DOCTYPE html> <html> <head> <title>utils.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 &hellip; <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> utils.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">&#182;</a> </div> </td> <td class="code"> <div class="highlight"><pre><span class="p">{</span> <span class="nv">interfaces: </span><span class="nx">Ci</span><span class="p">,</span> <span class="nv">classes: </span><span class="nx">Cc</span> <span class="p">}</span> <span class="o">=</span> <span class="nx">Components</span>
2
3 <span class="nv">HTMLInputElement = </span><span class="nx">Ci</span><span class="p">.</span><span class="nx">nsIDOMHTMLInputElement</span>
4 <span class="nv">HTMLTextAreaElement = </span><span class="nx">Ci</span><span class="p">.</span><span class="nx">nsIDOMHTMLTextAreaElement</span>
5 <span class="nv">HTMLSelectElement = </span><span class="nx">Ci</span><span class="p">.</span><span class="nx">nsIDOMHTMLSelectElement</span>
6 <span class="nv">XULDocument = </span><span class="nx">Ci</span><span class="p">.</span><span class="nx">nsIDOMXULDocument</span>
7 <span class="nv">XULElement = </span><span class="nx">Ci</span><span class="p">.</span><span class="nx">nsIDOMXULElement</span>
8 <span class="nv">HTMLDocument = </span><span class="nx">Ci</span><span class="p">.</span><span class="nx">nsIDOMHTMLDocument</span>
9 <span class="nv">HTMLElement = </span><span class="nx">Ci</span><span class="p">.</span><span class="nx">nsIDOMHTMLElement</span>
10 <span class="nv">Window = </span><span class="nx">Ci</span><span class="p">.</span><span class="nx">nsIDOMWindow</span>
11 <span class="nv">ChromeWindow = </span><span class="nx">Ci</span><span class="p">.</span><span class="nx">nsIDOMChromeWindow</span>
12 <span class="nv">KeyboardEvent = </span><span class="nx">Ci</span><span class="p">.</span><span class="nx">nsIDOMKeyEvent</span>
13
14 <span class="nv">_sss = </span><span class="nx">Cc</span><span class="p">[</span><span class="s">&quot;@mozilla.org/content/style-sheet-service;1&quot;</span><span class="p">].</span><span class="nx">getService</span><span class="p">(</span><span class="nx">Ci</span><span class="p">.</span><span class="nx">nsIStyleSheetService</span><span class="p">)</span>
15 <span class="nv">_clip = </span><span class="nx">Cc</span><span class="p">[</span><span class="s">&quot;@mozilla.org/widget/clipboard;1&quot;</span><span class="p">].</span><span class="nx">getService</span><span class="p">(</span><span class="nx">Ci</span><span class="p">.</span><span class="nx">nsIClipboard</span><span class="p">)</span>
16
17 <span class="p">{</span> <span class="nx">getPref</span> <span class="p">}</span> <span class="o">=</span> <span class="nx">require</span> <span class="s">&#39;prefs&#39;</span>
18
19 <span class="k">class</span> <span class="nx">Bucket</span>
20 <span class="nv">constructor: </span><span class="nf">(@idFunc, @newFunc) -&gt;</span>
21 <span class="vi">@bucket = </span><span class="p">{}</span>
22
23 <span class="nv">get: </span><span class="nf">(obj) -&gt;</span>
24 <span class="nv">id = </span><span class="nx">@idFunc</span> <span class="nx">obj</span>
25 <span class="k">if</span> <span class="nv">container = </span><span class="nx">@bucket</span><span class="p">[</span><span class="nx">id</span><span class="p">]</span>
26 <span class="k">return</span> <span class="nx">container</span>
27 <span class="k">else</span>
28 <span class="k">return</span> <span class="nx">@bucket</span><span class="p">[</span><span class="nx">id</span><span class="p">]</span> <span class="o">=</span> <span class="nx">@newFunc</span> <span class="nx">obj</span>
29
30 <span class="nv">forget: </span><span class="nf">(obj) -&gt;</span>
31 <span class="k">delete</span> <span class="nx">@bucket</span><span class="p">[</span><span class="nx">id</span><span class="p">]</span> <span class="k">if</span> <span class="nv">id = </span><span class="nx">@idFunc</span> <span class="nx">obj</span>
32
33 <span class="nv">isRootWindow = </span><span class="nf">(window) -&gt;</span>
34 <span class="nb">window</span><span class="p">.</span><span class="nx">location</span> <span class="o">==</span> <span class="s">&quot;chrome://browser/content/browser.xul&quot;</span></pre></div> </td> </tr> <tr id="section-2"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-2">&#182;</a> </div> <p>Returns the <code>window</code> from the currently active tab.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nv">getCurrentTabWindow = </span><span class="nf">(event) -&gt;</span>
35 <span class="k">if</span> <span class="nb">window</span> <span class="o">=</span> <span class="nx">getEventWindow</span> <span class="nx">event</span>
36 <span class="k">if</span> <span class="nv">rootWindow = </span><span class="nx">getRootWindow</span> <span class="nb">window</span>
37 <span class="k">return</span> <span class="nx">rootWindow</span><span class="p">.</span><span class="nx">gBrowser</span><span class="p">.</span><span class="nx">selectedTab</span><span class="p">.</span><span class="nx">linkedBrowser</span><span class="p">.</span><span class="nx">contentWindow</span></pre></div> </td> </tr> <tr id="section-3"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-3">&#182;</a> </div> <p>Returns the window associated with the event</p> </td> <td class="code"> <div class="highlight"><pre><span class="nv">getEventWindow = </span><span class="nf">(event) -&gt;</span>
38 <span class="k">if</span> <span class="nx">event</span><span class="p">.</span><span class="nx">originalTarget</span> <span class="k">instanceof</span> <span class="nx">Window</span>
39 <span class="k">return</span> <span class="nx">event</span><span class="p">.</span><span class="nx">originalTarget</span>
40 <span class="k">else</span>
41 <span class="nv">doc = </span><span class="nx">event</span><span class="p">.</span><span class="nx">originalTarget</span><span class="p">.</span><span class="nx">ownerDocument</span> <span class="o">or</span> <span class="nx">event</span><span class="p">.</span><span class="nx">originalTarget</span>
42 <span class="k">if</span> <span class="nx">doc</span> <span class="k">instanceof</span> <span class="nx">HTMLDocument</span> <span class="o">or</span> <span class="nx">doc</span> <span class="k">instanceof</span> <span class="nx">XULDocument</span>
43 <span class="k">return</span> <span class="nx">doc</span><span class="p">.</span><span class="nx">defaultView</span>
44
45 <span class="nv">getEventRootWindow = </span><span class="nf">(event) -&gt;</span>
46 <span class="k">if</span> <span class="nb">window</span> <span class="o">=</span> <span class="nx">getEventWindow</span> <span class="nx">event</span>
47 <span class="k">return</span> <span class="nx">getRootWindow</span> <span class="nb">window</span>
48
49 <span class="nv">getEventTabBrowser = </span><span class="nf">(event) -&gt;</span>
50 <span class="nx">cw</span><span class="p">.</span><span class="nx">gBrowser</span> <span class="k">if</span> <span class="nv">cw = </span><span class="nx">getEventRootWindow</span> <span class="nx">event</span>
51
52 <span class="nv">getRootWindow = </span><span class="nf">(window) -&gt;</span>
53 <span class="k">return</span> <span class="nb">window</span><span class="p">.</span><span class="nx">QueryInterface</span><span class="p">(</span><span class="nx">Ci</span><span class="p">.</span><span class="nx">nsIInterfaceRequestor</span><span class="p">)</span>
54 <span class="p">.</span><span class="nx">getInterface</span><span class="p">(</span><span class="nx">Ci</span><span class="p">.</span><span class="nx">nsIWebNavigation</span><span class="p">)</span>
55 <span class="p">.</span><span class="nx">QueryInterface</span><span class="p">(</span><span class="nx">Ci</span><span class="p">.</span><span class="nx">nsIDocShellTreeItem</span><span class="p">)</span>
56 <span class="p">.</span><span class="nx">rootTreeItem</span>
57 <span class="p">.</span><span class="nx">QueryInterface</span><span class="p">(</span><span class="nx">Ci</span><span class="p">.</span><span class="nx">nsIInterfaceRequestor</span><span class="p">)</span>
58 <span class="p">.</span><span class="nx">getInterface</span><span class="p">(</span><span class="nx">Window</span><span class="p">);</span>
59
60 <span class="nv">isElementEditable = </span><span class="nf">(element) -&gt;</span>
61 <span class="k">return</span> <span class="nx">element</span><span class="p">.</span><span class="nx">isContentEditable</span> <span class="o">or</span> <span class="o">\</span>
62 <span class="nx">element</span> <span class="k">instanceof</span> <span class="nx">HTMLInputElement</span> <span class="o">or</span> <span class="o">\</span>
63 <span class="nx">element</span> <span class="k">instanceof</span> <span class="nx">HTMLTextAreaElement</span> <span class="o">or</span> <span class="o">\</span>
64 <span class="nx">element</span> <span class="k">instanceof</span> <span class="nx">HTMLSelectElement</span>
65
66 <span class="nv">getWindowId = </span><span class="nf">(window) -&gt;</span>
67 <span class="k">return</span> <span class="nb">window</span><span class="p">.</span><span class="nx">QueryInterface</span><span class="p">(</span><span class="nx">Components</span><span class="p">.</span><span class="nx">interfaces</span><span class="p">.</span><span class="nx">nsIInterfaceRequestor</span><span class="p">)</span>
68 <span class="p">.</span><span class="nx">getInterface</span><span class="p">(</span><span class="nx">Components</span><span class="p">.</span><span class="nx">interfaces</span><span class="p">.</span><span class="nx">nsIDOMWindowUtils</span><span class="p">)</span>
69 <span class="p">.</span><span class="nx">outerWindowID</span>
70
71 <span class="nv">getSessionStore = </span><span class="o">-&gt;</span>
72 <span class="nx">Cc</span><span class="p">[</span><span class="s">&quot;@mozilla.org/browser/sessionstore;1&quot;</span><span class="p">].</span><span class="nx">getService</span><span class="p">(</span><span class="nx">Ci</span><span class="p">.</span><span class="nx">nsISessionStore</span><span class="p">);</span></pre></div> </td> </tr> <tr id="section-4"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-4">&#182;</a> </div> <p>Function that returns a URI to the css file that's part of the extension</p> </td> <td class="code"> <div class="highlight"><pre><span class="nv">cssUri = </span><span class="nx">do</span> <span class="nf">() -&gt;</span>
73 <span class="nf">(name) -&gt;</span>
74 <span class="nv">baseURI = </span><span class="nx">Services</span><span class="p">.</span><span class="nx">io</span><span class="p">.</span><span class="nx">newURI</span> <span class="nx">__SCRIPT_URI_SPEC__</span><span class="p">,</span> <span class="kc">null</span><span class="p">,</span> <span class="kc">null</span>
75 <span class="nv">uri = </span><span class="nx">Services</span><span class="p">.</span><span class="nx">io</span><span class="p">.</span><span class="nx">newURI</span> <span class="s">&quot;resources/</span><span class="si">#{</span> <span class="nx">name</span> <span class="si">}</span><span class="s">.css&quot;</span><span class="p">,</span> <span class="kc">null</span><span class="p">,</span> <span class="nx">baseURI</span>
76 <span class="k">return</span> <span class="nx">uri</span></pre></div> </td> </tr> <tr id="section-5"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-5">&#182;</a> </div> <p>Loads the css identified by the name in the StyleSheetService as User Stylesheet
77 The stylesheet is then appended to every document, but it can be overwritten by
78 any user css</p> </td> <td class="code"> <div class="highlight"><pre><span class="nv">loadCss = </span><span class="nf">(name) -&gt;</span>
79 <span class="nv">uri = </span><span class="nx">cssUri</span><span class="p">(</span><span class="nx">name</span><span class="p">)</span>
80 <span class="nx">_sss</span><span class="p">.</span><span class="nx">loadAndRegisterSheet</span><span class="p">(</span><span class="nx">uri</span><span class="p">,</span> <span class="nx">_sss</span><span class="p">.</span><span class="nx">AGENT_SHEET</span><span class="p">)</span>
81
82 <span class="nx">unload</span> <span class="o">-&gt;</span>
83 <span class="nx">_sss</span><span class="p">.</span><span class="nx">unregisterSheet</span><span class="p">(</span><span class="nx">uri</span><span class="p">,</span> <span class="nx">_sss</span><span class="p">.</span><span class="nx">AGENT_SHEET</span><span class="p">)</span></pre></div> </td> </tr> <tr id="section-6"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-6">&#182;</a> </div> <p>Processes the keyboard event and extracts string representation
84 of the key <em>without modifiers</em>.
85 Only processes that can be handled by the extension</p>
86
87 <p>Currently we handle letters, Escape and Tab keys</p> </td> <td class="code"> <div class="highlight"><pre><span class="nv">keyboardEventChar = </span><span class="nf">(keyboardEvent) -&gt;</span></pre></div> </td> </tr> <tr id="section-7"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-7">&#182;</a> </div> <p>Ignore the key if Meta of Alt are pressed</p> </td> <td class="code"> <div class="highlight"><pre> <span class="k">if</span> <span class="nx">keyboardEvent</span><span class="p">.</span><span class="nx">metaKey</span> <span class="o">or</span> <span class="nx">keyboardEvent</span><span class="p">.</span><span class="nx">altKey</span>
88 <span class="k">return</span>
89
90 <span class="nv">key = </span><span class="nx">keyboardEvent</span><span class="p">.</span><span class="nx">keyCode</span>
91 <span class="nv">char = </span><span class="nb">String</span><span class="p">.</span><span class="nx">fromCharCode</span><span class="p">(</span><span class="nx">key</span><span class="p">)</span>
92 <span class="nv">HINTCHARS = </span><span class="nx">getPref</span> <span class="s">&#39;hint_chars&#39;</span>
93
94 <span class="k">if</span> <span class="nx">key</span> <span class="o">&gt;=</span> <span class="nx">KeyboardEvent</span><span class="p">.</span><span class="nx">DOM_VK_A</span> <span class="o">and</span> <span class="nx">key</span> <span class="o">&lt;=</span> <span class="nx">KeyboardEvent</span><span class="p">.</span><span class="nx">DOM_VK_Z</span>
95 <span class="k">if</span> <span class="nx">keyboardEvent</span><span class="p">.</span><span class="nx">shiftKey</span>
96 <span class="k">return</span> <span class="nx">char</span><span class="p">.</span><span class="nx">toUpperCase</span><span class="p">()</span>
97 <span class="k">else</span>
98 <span class="k">return</span> <span class="nx">char</span><span class="p">.</span><span class="nx">toLowerCase</span><span class="p">()</span></pre></div> </td> </tr> <tr id="section-8"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-8">&#182;</a> </div> <p>Allow additional chars from the hint chars list</p> </td> <td class="code"> <div class="highlight"><pre> <span class="k">else</span> <span class="k">if</span> <span class="nx">HINTCHARS</span><span class="p">.</span><span class="nx">search</span><span class="p">(</span><span class="nx">char</span><span class="p">)</span> <span class="o">&gt;</span> <span class="o">-</span><span class="mi">1</span>
99 <span class="k">return</span> <span class="nx">char</span>
100 <span class="k">else</span>
101 <span class="k">switch</span> <span class="nx">keyboardEvent</span><span class="p">.</span><span class="nx">keyCode</span>
102 <span class="k">when</span> <span class="nx">KeyboardEvent</span><span class="p">.</span><span class="nx">DOM_VK_ESCAPE</span>
103 <span class="k">return</span> <span class="s">&#39;Esc&#39;</span>
104 <span class="k">when</span> <span class="nx">KeyboardEvent</span><span class="p">.</span><span class="nx">DOM_VK_BACK_SPACE</span>
105 <span class="k">return</span> <span class="s">&#39;Backspace&#39;</span></pre></div> </td> </tr> <tr id="section-9"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-9">&#182;</a> </div> <p>Extracts string representation of the KeyboardEvent and adds
106 relevant modifiers (<em>ctrl</em>, <em>alt</em>, <em>meta</em>) in case they were pressed</p> </td> <td class="code"> <div class="highlight"><pre><span class="nv">keyboardEventKeyString = </span><span class="nf">(keyboardEvent) -&gt;</span>
107 <span class="nv">char = </span><span class="nx">keyboardEventChar</span> <span class="nx">keyboardEvent</span>
108
109 <span class="k">if</span> <span class="nx">char</span> <span class="o">and</span> <span class="nx">keyboardEvent</span><span class="p">.</span><span class="nx">ctrlKey</span>
110 <span class="nv">char = </span><span class="s">&quot;c-</span><span class="si">#{</span> <span class="nx">char</span> <span class="si">}</span><span class="s">&quot;</span>
111
112 <span class="k">return</span> <span class="nx">char</span></pre></div> </td> </tr> <tr id="section-10"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-10">&#182;</a> </div> <p>Simulate mouse click with full chain of event
113 Copied from Vimium codebase</p> </td> <td class="code"> <div class="highlight"><pre><span class="nv">simulateClick = </span><span class="nf">(element, modifiers) -&gt;</span>
114 <span class="nb">document</span> <span class="o">=</span> <span class="nx">element</span><span class="p">.</span><span class="nx">ownerDocument</span>
115 <span class="nb">window</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">defaultView</span>
116 <span class="nx">modifiers</span> <span class="o">||=</span> <span class="p">{}</span>
117
118 <span class="nv">eventSequence = </span><span class="p">[</span><span class="s">&quot;mouseover&quot;</span><span class="p">,</span> <span class="s">&quot;mousedown&quot;</span><span class="p">,</span> <span class="s">&quot;mouseup&quot;</span><span class="p">,</span> <span class="s">&quot;click&quot;</span><span class="p">]</span>
119 <span class="k">for</span> <span class="nx">event</span> <span class="k">in</span> <span class="nx">eventSequence</span>
120 <span class="nv">mouseEvent = </span><span class="nb">document</span><span class="p">.</span><span class="nx">createEvent</span><span class="p">(</span><span class="s">&quot;MouseEvents&quot;</span><span class="p">)</span>
121 <span class="nx">mouseEvent</span><span class="p">.</span><span class="nx">initMouseEvent</span><span class="p">(</span><span class="nx">event</span><span class="p">,</span> <span class="kc">true</span><span class="p">,</span> <span class="kc">true</span><span class="p">,</span> <span class="nb">window</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">modifiers</span><span class="p">.</span><span class="nx">ctrlKey</span><span class="p">,</span> <span class="kc">false</span><span class="p">,</span> <span class="kc">false</span><span class="p">,</span>
122 <span class="nx">modifiers</span><span class="p">.</span><span class="nx">metaKey</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="kc">null</span><span class="p">)</span></pre></div> </td> </tr> <tr id="section-11"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-11">&#182;</a> </div> <p>Debugging note: Firefox will not execute the element's default action if we dispatch this click event,
123 but Webkit will. Dispatching a click on an input box does not seem to focus it; we do that separately</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nx">element</span><span class="p">.</span><span class="nx">dispatchEvent</span><span class="p">(</span><span class="nx">mouseEvent</span><span class="p">)</span></pre></div> </td> </tr> <tr id="section-12"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-12">&#182;</a> </div> <p>Write a string into system clipboard</p> </td> <td class="code"> <div class="highlight"><pre><span class="nv">writeToClipboard = </span><span class="nf">(text) -&gt;</span>
124 <span class="nv">str = </span><span class="nx">Cc</span><span class="p">[</span><span class="s">&quot;@mozilla.org/supports-string;1&quot;</span><span class="p">].</span><span class="nx">createInstance</span><span class="p">(</span><span class="nx">Ci</span><span class="p">.</span><span class="nx">nsISupportsString</span><span class="p">);</span>
125 <span class="nv">str.data = </span><span class="nx">text</span>
126
127 <span class="nv">trans = </span><span class="nx">Cc</span><span class="p">[</span><span class="s">&quot;@mozilla.org/widget/transferable;1&quot;</span><span class="p">].</span><span class="nx">createInstance</span><span class="p">(</span><span class="nx">Ci</span><span class="p">.</span><span class="nx">nsITransferable</span><span class="p">);</span>
128 <span class="nx">trans</span><span class="p">.</span><span class="nx">addDataFlavor</span><span class="p">(</span><span class="s">&quot;text/unicode&quot;</span><span class="p">);</span>
129 <span class="nx">trans</span><span class="p">.</span><span class="nx">setTransferData</span><span class="p">(</span><span class="s">&quot;text/unicode&quot;</span><span class="p">,</span> <span class="nx">str</span><span class="p">,</span> <span class="nx">text</span><span class="p">.</span><span class="nx">length</span> <span class="o">*</span> <span class="mi">2</span><span class="p">);</span>
130
131 <span class="nx">_clip</span><span class="p">.</span><span class="nx">setData</span> <span class="nx">trans</span><span class="p">,</span> <span class="kc">null</span><span class="p">,</span> <span class="nx">Ci</span><span class="p">.</span><span class="nx">nsIClipboard</span><span class="p">.</span><span class="nx">kGlobalClipboard</span></pre></div> </td> </tr> <tr id="section-13"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-13">&#182;</a> </div> <p>Write a string into system clipboard</p> </td> <td class="code"> <div class="highlight"><pre><span class="nv">readFromClipboard = </span><span class="nf">() -&gt;</span>
132 <span class="nv">trans = </span><span class="nx">Cc</span><span class="p">[</span><span class="s">&quot;@mozilla.org/widget/transferable;1&quot;</span><span class="p">].</span><span class="nx">createInstance</span><span class="p">(</span><span class="nx">Ci</span><span class="p">.</span><span class="nx">nsITransferable</span><span class="p">);</span>
133 <span class="nx">trans</span><span class="p">.</span><span class="nx">addDataFlavor</span><span class="p">(</span><span class="s">&quot;text/unicode&quot;</span><span class="p">);</span>
134
135 <span class="nx">_clip</span><span class="p">.</span><span class="nx">getData</span> <span class="nx">trans</span><span class="p">,</span> <span class="nx">Ci</span><span class="p">.</span><span class="nx">nsIClipboard</span><span class="p">.</span><span class="nx">kGlobalClipboard</span>
136
137 <span class="nv">str = </span><span class="p">{}</span>
138 <span class="nv">strLength = </span><span class="p">{}</span>
139
140 <span class="nx">trans</span><span class="p">.</span><span class="nx">getTransferData</span><span class="p">(</span><span class="s">&quot;text/unicode&quot;</span><span class="p">,</span> <span class="nx">str</span><span class="p">,</span> <span class="nx">strLength</span><span class="p">)</span>
141
142 <span class="k">if</span> <span class="nx">str</span>
143 <span class="nv">str = </span><span class="nx">str</span><span class="p">.</span><span class="nx">value</span><span class="p">.</span><span class="nx">QueryInterface</span><span class="p">(</span><span class="nx">Ci</span><span class="p">.</span><span class="nx">nsISupportsString</span><span class="p">);</span>
144 <span class="k">return</span> <span class="nx">str</span><span class="p">.</span><span class="nx">data</span><span class="p">.</span><span class="nx">substring</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">strLength</span><span class="p">.</span><span class="nx">value</span> <span class="o">/</span> <span class="mi">2</span>
145
146 <span class="k">return</span> <span class="kc">undefined</span></pre></div> </td> </tr> <tr id="section-14"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-14">&#182;</a> </div> <p>Executes function <code>func</code> and mearues how much time it took</p> </td> <td class="code"> <div class="highlight"><pre><span class="nv">timeIt = </span><span class="nf">(func, msg) -&gt;</span>
147 <span class="nv">start = </span><span class="k">new</span> <span class="nb">Date</span><span class="p">().</span><span class="nx">getTime</span><span class="p">()</span>
148 <span class="nv">result = </span><span class="nx">func</span><span class="p">()</span>
149 <span class="nv">end = </span><span class="k">new</span> <span class="nb">Date</span><span class="p">().</span><span class="nx">getTime</span><span class="p">()</span>
150
151 <span class="nx">console</span><span class="p">.</span><span class="nx">log</span> <span class="nx">msg</span><span class="p">,</span> <span class="nx">end</span> <span class="o">-</span> <span class="nx">start</span>
152 <span class="k">return</span> <span class="nx">result</span>
153
154 <span class="nv">exports.Bucket = </span><span class="nx">Bucket</span>
155 <span class="nv">exports.isRootWindow = </span><span class="nx">isRootWindow</span>
156 <span class="nv">exports.getCurrentTabWindow = </span><span class="nx">getCurrentTabWindow</span>
157 <span class="nv">exports.getEventWindow = </span><span class="nx">getEventWindow</span>
158 <span class="nv">exports.getEventRootWindow = </span><span class="nx">getEventRootWindow</span>
159 <span class="nv">exports.getEventTabBrowser = </span><span class="nx">getEventTabBrowser</span>
160
161 <span class="nv">exports.getWindowId = </span><span class="nx">getWindowId</span>
162 <span class="nv">exports.getRootWindow = </span><span class="nx">getRootWindow</span>
163 <span class="nv">exports.isElementEditable = </span><span class="nx">isElementEditable</span>
164 <span class="nv">exports.getSessionStore = </span><span class="nx">getSessionStore</span>
165
166 <span class="nv">exports.loadCss = </span><span class="nx">loadCss</span>
167
168 <span class="nv">exports.keyboardEventKeyString = </span><span class="nx">keyboardEventKeyString</span>
169 <span class="nv">exports.simulateClick = </span><span class="nx">simulateClick</span>
170 <span class="nv">exports.readFromClipboard = </span><span class="nx">readFromClipboard</span>
171 <span class="nv">exports.writeToClipboard = </span><span class="nx">writeToClipboard</span>
172 <span class="nv">exports.timeIt = </span><span class="nx">timeIt</span>
173
174 </pre></div> </td> </tr> </tbody> </table> </div> </body> </html>
Imprint / Impressum