+ const bundle = document.getElementById("mbrotBundle");
+ const nsIFilePicker = Components.interfaces.nsIFilePicker;
+ var fp = null;
+ try {
+ fp = Components.classes["@mozilla.org/filepicker;1"]
+ .createInstance(nsIFilePicker);
+ } catch (e) {}
+ if (!fp) return;
+ var promptString = bundle.getString("savePrompt");
+ fp.init(window, promptString, nsIFilePicker.modeSave);
+ fp.appendFilter(bundle.getString("pngFilterName"), "*.png");
+ fp.defaultString = "mandelbrot.png";
+
+ var fpResult = fp.show();
+ if (fpResult != nsIFilePicker.returnCancel) {
+ saveCanvas(document.getElementById("mbrotImage"), fp.file);
+ }
+}
+
+function updateBookmarksMenu(aParent) {
+ /* from SM UBhistory, needs to be adapted
+ while (aParent.hasChildNodes())
+ aParent.removeChild(aParent.lastChild);
+
+ var file = Components.classes["@mozilla.org/file/directory_service;1"]
+ .getService(Components.interfaces.nsIProperties)
+ .get("ProfD", Components.interfaces.nsIFile);
+ file.append("urlbarhistory.sqlite");
+ if (file.exists()) {
+ var connection = Components.classes["@mozilla.org/storage/service;1"]
+ .getService(Components.interfaces.mozIStorageService)
+ .openDatabase(file);
+ try {
+ if (connection.tableExists("urlbarhistory")) {
+ var statement = connection.createStatement(
+ "SELECT url FROM urlbarhistory ORDER BY ROWID DESC");
+ while (statement.executeStep())
+ aParent.appendChild(document.createElement("menuitem"))
+ .setAttribute("label", statement.getString(0));
+ statement.reset();
+ statement.finalize();
+ return;
+ }
+ } finally {
+ connection.close();
+ }
+ }
+ //Create the "Nothing Available" Menu item and disable it.
+ var na = aParent.appendChild(document.createElement("menuitem"));
+ na.setAttribute("label", gNavigatorBundle.getString("nothingAvailable"));
+ na.setAttribute("disabled", "true");
+ */
+}
+
+function callBookmark(evtarget) {
+}
+
+function saveBookmark() {
+ /* from SM UBhistory, needs to be adapted
+ // Open or create the urlbar history database.
+ var file = Components.classes["@mozilla.org/file/directory_service;1"]
+ .getService(Components.interfaces.nsIProperties)
+ .get("ProfD", Components.interfaces.nsIFile);
+ file.append("urlbarhistory.sqlite");
+ var connection = Components.classes["@mozilla.org/storage/service;1"]
+ .getService(Components.interfaces.mozIStorageService)
+ .openDatabase(file);
+ connection.beginTransaction();
+ if (!connection.tableExists("urlbarhistory"))
+ connection.createTable("urlbarhistory", "url TEXT, foo INTEGER, bar REAL");
+ // NULL. The value is a NULL value.
+ // INTEGER. The value is a signed integer, stored in 1, 2, 3, 4, 6, or 8 bytes depending on the magnitude of the value.
+ // REAL. The value is a floating point value, stored as an 8-byte IEEE floating point number.
+ // TEXT. The value is a text string, stored using the database encoding (UTF-8, UTF-16BE or UTF-16-LE).
+
+ // Put the value as it was typed by the user in to urlbar history
+ statement = connection.createStatement(
+ "INSERT INTO urlbarhistory (url) VALUES (?1)");
+ statement.bindStringParameter(0, aUrlToAdd);
+ statement.execute();
+ statement.finalize();
+ */
+}
+
+function updateIterMenu() {
+ try {
+ var currentIter = gPref.getIntPref("mandelbrot.iteration_max");
+ }
+ catch(e) {
+ var currentIter = 0;
+ }
+ if (currentIter < 10) {
+ currentIter = 500;
+ setIter(currentIter);
+ }
+
+ var popup = document.getElementById("menu_iterPopup");
+ var item = popup.firstChild;
+ while (item) {
+ if (item.getAttribute("name") == "iter") {
+ if (item.getAttribute("value") == currentIter)
+ item.setAttribute("checked","true");
+ else
+ item.removeAttribute("checked");
+ }
+ item = item.nextSibling;
+ }
+}
+
+function setIter(aIter) {
+ gPref.setIntPref("mandelbrot.iteration_max", aIter);
+}
+
+function updatePaletteMenu() {
+ try {
+ var currentPalette = gPref.getCharPref("mandelbrot.color_palette");
+ }
+ catch(e) {
+ var currentPalette = '';
+ }
+ if (!currentPalette.length) {
+ currentPalette = 'kairo';
+ setPalette(currentPalette);
+ }
+ if (!gColorPalette || !gColorPalette.length)
+ gColorPalette = getColorPalette(currentPalette);
+
+ var popup = document.getElementById("menu_palettePopup");
+ var item = popup.firstChild;
+ while (item) {
+ if (item.getAttribute("name") == "palette") {
+ if (item.getAttribute("value") == currentPalette)
+ item.setAttribute("checked", "true");
+ else
+ item.removeAttribute("checked");
+ }
+ item = item.nextSibling;
+ }
+}
+
+function setPalette(aPaletteID) {
+ gPref.setCharPref("mandelbrot.color_palette", aPaletteID);
+ gColorPalette = getColorPalette(aPaletteID);
+}
+
+function imgSettings() {
+ window.openDialog("chrome://mandelbrot/content/image-settings.xul");
+}
+
+function updateDebugMenu() {
+ var jitMenuItem = document.getElementById("jitEnabled");
+ jitMenuItem.setAttribute("checked", gPref.getBoolPref("javascript.options.jit.chrome"));
+}
+
+function toggleJITState(jitMenuItem) {
+ var jitEnabled = !gPref.getBoolPref("javascript.options.jit.chrome");
+ gPref.setBoolPref("javascript.options.jit.chrome", jitEnabled)
+ jitMenuItem.setAttribute("checked", jitEnabled? "true" : "false");