2 if(!org.gnome) org.gnome={};
3 if(!org.gnome.tomboy) org.gnome.tomboy={};
4 if(!org.gnome.tomboy.ffext) org.gnome.tomboy.ffext={};
7 org.gnome.tomboy.ffext = {
10 createnote: function(e){
13 tb_strings = document.getElementById("tomfoxbundle");
16 var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
21 if (getPrefType("extensions.tomfox.bDisplayNote") == PREF_BOOL){
22 bDisplayNote = getBoolPref("extensions.tomfox.bDisplayNote");
26 if (getPrefType("extensions.tomfox.bAddUrl") == PREF_BOOL){
27 bAddUrl = getBoolPref("extensions.tomfox.bAddUrl");
31 if (getPrefType("extensions.tomfox.bPromptForTitle") == PREF_BOOL){
32 bPromptForTitle = getBoolPref("extensions.tomfox.bPromptForTitle");
36 if (getPrefType("extensions.tomfox.bNoteAppend") == PREF_BOOL){
37 bAppend = getBoolPref("extensions.tomfox.bNoteAppend");
40 var sDefaultNotebook = this.trim(getCharPref("extensions.tomfox.sDefaultNotebook"));
46 if (e.shiftKey==true) {bPromptForTitle=true};
47 var tbtitle = this.PageTitle();
48 if (bPromptForTitle==true) {tbtitle = window.prompt(tb_strings.getString("notetitleprompt"),tbtitle,"Tomfox")};
49 if(tbtitle=="") {tbtitle = "Untitled"};
52 // Limit the size of the note title
53 tbtitle = tbtitle.substring(0,100);
57 var tbnote = this.SelectedText();
62 if (bAddUrl==true) {tbURL = this.CurrentURL()};
65 // Replace XML Characters
66 tbtitle = String(this.ReplaceXMLchars(tbtitle));
67 tbnote = String(this.ReplaceXMLchars(tbnote));
68 tbURL = String(this.ReplaceXMLchars(tbURL));
72 tbtitle = this.ConvertToUTF8(tbtitle);
73 tbnote = this.ConvertToUTF8(tbnote);
74 tbURL = this.ConvertToUTF8(tbURL);
75 sDefaultNotebook = this.ConvertToUTF8(sDefaultNotebook);
78 // Run tomboy dbus script
79 var file = Components.classes["@mozilla.org/extensions/manager;1"]
80 .getService(Components.interfaces.nsIExtensionManager)
81 .getInstallLocation("tomfox@harrycoal.co.uk")
82 .getItemLocation("tomfox@harrycoal.co.uk");
83 file.append("tfdbus.py");
85 var process = Components.classes['@mozilla.org/process/util;1']
86 .getService(Components.interfaces.nsIProcess);
98 var arguments= [tbtitle, tbnote, tbURL, bDisplayNote, sDefaultNotebook, bAppend] ;
99 process.run(false, arguments, arguments.length);
102 alert("Error: Cannot find Tomfox DBus script: tfdbus.py");
109 ReplaceXMLchars: function(txt){
110 // Replace reserved XML characters
111 txt = txt.replace(new RegExp("&","g"), "\&");
112 txt = txt.replace(new RegExp("<","g"), "\<");
113 txt = txt.replace(new RegExp(">","g"), "\>");
114 txt = txt.replace(new RegExp("−","g"), "\-");
115 txt = txt.replace(new RegExp("%","g"), "\%");
120 SelectedText: function(){
121 var focusedWindow = document.commandDispatcher.focusedWindow;
122 var selection = focusedWindow.getSelection();
124 for(var i = 0; i < selection.rangeCount; i++) {
125 seltext = seltext + selection.getRangeAt(i) + "\n\n";
131 ConvertToUTF8: function(value){
132 const conv = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
133 conv.charset = "UTF-8";
134 return conv.ConvertFromUnicode(value) + conv.Finish();
138 CurrentURL: function(){
139 var aDocShell = document.getElementById("content").webNavigation;
140 var url = aDocShell.currentURI.spec;
146 PageTitle: function(){
147 var aDocShell = document.getElementById("content").webNavigation;
148 var url = aDocShell.currentURI.spec;
151 title = aDocShell.document.title;
159 trim: function(stringToTrim){
160 return stringToTrim.replace(/^\s+|\s+$/g,"");