+ 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;
+ }