+ 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 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 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");
+}
+
+function updateAlgoMenu() {
+ try {
+ var currentAlgo = gPref.getCharPref("mandelbrot.use_algorithm");
+ }
+ catch(e) {
+ var currentAlgo = '';
+ }
+ if (!currentAlgo.length) {
+ currentAlgo = 'numeric';
+ setAlgorithm(currentAlgo);
+ }
+
+ var popup = document.getElementById("menu_algoPopup");
+ var item = popup.firstChild;
+ while (item) {
+ if (item.getAttribute("name") == "algorithm") {
+ if (item.getAttribute("value") == currentAlgo)
+ item.setAttribute("checked", "true");
+ else
+ item.removeAttribute("checked");
+ }
+ item = item.nextSibling;
+ }
+}
+
+function setAlgorithm(algoID) {
+ gPref.setCharPref("mandelbrot.use_algorithm", algoID);