A bit of cleaning up
[tomfox.git] / content / tomfox.js
blob3bb715c5689465fc0c5c8754053196d2777b4374
1 if(!org) var org={};
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){
12                 // Locale
13                 tb_strings = document.getElementById("tomfoxbundle");
15                 // Get Preferences
16                 var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
18                 with(prefs){
20                         var bDisplayNote;
21                         if (getPrefType("extensions.tomfox.bDisplayNote") == PREF_BOOL){
22                           bDisplayNote = getBoolPref("extensions.tomfox.bDisplayNote");
23                         }
24                 
25                         var bAddUrl;
26                         if (getPrefType("extensions.tomfox.bAddUrl") == PREF_BOOL){
27                           bAddUrl = getBoolPref("extensions.tomfox.bAddUrl");
28                         }
30                         var bPromptForTitle;
31                         if (getPrefType("extensions.tomfox.bPromptForTitle") == PREF_BOOL){
32                           bPromptForTitle = getBoolPref("extensions.tomfox.bPromptForTitle");
33                         }
35                         var bAppend;
36                         if (getPrefType("extensions.tomfox.bNoteAppend") == PREF_BOOL){
37                           bAppend = getBoolPref("extensions.tomfox.bNoteAppend");
38                         }
40                         var sDefaultNotebook = this.trim(getCharPref("extensions.tomfox.sDefaultNotebook"));                    
42                 }
45                 // Get Note Title
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"};
50                 
51                 
52                 // Limit the size of the note title
53                 tbtitle = tbtitle.substring(0,100);
55                                 
56                 // Set Note Contents
57                 var tbnote = this.SelectedText();
59                 
60                 // Get URL
61                 var tbURL = ""
62                 if (bAddUrl==true) {tbURL = this.CurrentURL()};
64                         
65                 // Replace XML Characters
66                 tbtitle = String(this.ReplaceXMLchars(tbtitle));
67                 tbnote = String(this.ReplaceXMLchars(tbnote));
68                 tbURL = String(this.ReplaceXMLchars(tbURL));
71                 // Convert Unicode
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");
84                 if (file.exists()) {
85                         var process = Components.classes['@mozilla.org/process/util;1']
86                                 .getService(Components.interfaces.nsIProcess);  
88                         try 
89                           {
90                           process.init(file);
91                           }
92                         catch(err)
93                           {
94                           dump(err);
95                           }
98                         var arguments= [tbtitle, tbnote, tbURL, bDisplayNote, sDefaultNotebook, bAppend] ; 
99                         process.run(false, arguments, arguments.length);
100                 }
101                 else {
102                         alert("Error: Cannot find Tomfox DBus script: tfdbus.py");
103                 }
105         
106         },
109         ReplaceXMLchars: function(txt){
110                 // Replace reserved XML characters
111                 txt = txt.replace(new RegExp("&","g"), "\&");
112                 txt = txt.replace(new RegExp("<","g"), "\&lt;");
113                 txt = txt.replace(new RegExp(">","g"), "\&gt;");
114                 txt = txt.replace(new RegExp("−","g"), "\&#45;");
115                 txt = txt.replace(new RegExp("%","g"), "\&#37;");
116                 return String(txt);             
117         },
118         
119   
120         SelectedText: function(){
121                 var focusedWindow = document.commandDispatcher.focusedWindow;
122                 var selection = focusedWindow.getSelection();
123                 seltext = "";
124                 for(var i = 0; i < selection.rangeCount; i++) {
125                         seltext = seltext + selection.getRangeAt(i) + "\n\n";
126                 }
127                 return seltext;
128         },
129         
130         
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();          
135         },
136   
137   
138         CurrentURL: function(){
139             var aDocShell = document.getElementById("content").webNavigation;
140             var url = aDocShell.currentURI.spec;
141             var title = null;
142             return url; 
143         },
144   
145   
146         PageTitle: function(){
147             var aDocShell = document.getElementById("content").webNavigation;
148             var url = aDocShell.currentURI.spec;
149             var title = null;
150             try {
151               title = aDocShell.document.title;
152             }catch (e) {
153               title = url;
154             }
155             return title;               
156         }, 
157   
158   
159         trim: function(stringToTrim){
160                 return stringToTrim.replace(/^\s+|\s+$/g,"");
161         }
163