start an 'image settings' prefwindow-based dialog for settings several options on...
authorRobert Kaiser <robert@notebook.box.kairo.at>
Sun, 26 Oct 2008 16:29:45 +0000 (17:29 +0100)
committerRobert Kaiser <robert@notebook.box.kairo.at>
Sun, 26 Oct 2008 16:29:45 +0000 (17:29 +0100)
xulapp/chrome/mandelbrot/content/image-settings.js [new file with mode: 0644]
xulapp/chrome/mandelbrot/content/image-settings.xul [new file with mode: 0644]
xulapp/chrome/mandelbrot/content/mandelbrot.js
xulapp/chrome/mandelbrot/content/mandelbrot.xul
xulapp/chrome/mandelbrot/locales/en-US/image-settings.dtd [new file with mode: 0644]
xulapp/chrome/mandelbrot/locales/en-US/mandelbrot.dtd
xulapp/chrome/mandelbrot/skin/classic/image-settings.css [new file with mode: 0644]

diff --git a/xulapp/chrome/mandelbrot/content/image-settings.js b/xulapp/chrome/mandelbrot/content/image-settings.js
new file mode 100644 (file)
index 0000000..c00c19a
--- /dev/null
@@ -0,0 +1,39 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is KaiRo.at Mandelbrot, XULRunner version.
+ *
+ * The Initial Developer of the Original Code is
+ * Robert Kaiser <kairo@kairo.at>.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *   Robert Kaiser <kairo@kairo.at>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+function initSettings() {
+}
diff --git a/xulapp/chrome/mandelbrot/content/image-settings.xul b/xulapp/chrome/mandelbrot/content/image-settings.xul
new file mode 100644 (file)
index 0000000..efe8288
--- /dev/null
@@ -0,0 +1,76 @@
+<?xml version="1.0"?>
+
+<!-- ***** BEGIN LICENSE BLOCK *****
+   - Version: MPL 1.1/GPL 2.0/LGPL 2.1
+   -
+   - The contents of this file are subject to the Mozilla Public License Version
+   - 1.1 (the "License"); you may not use this file except in compliance with
+   - the License. You may obtain a copy of the License at
+   - http://www.mozilla.org/MPL/
+   -
+   - Software distributed under the License is distributed on an "AS IS" basis,
+   - WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+   - for the specific language governing rights and limitations under the
+   - License.
+   -
+   - The Original Code is KaiRo.at Mandelbrot, XULRunner version.
+   -
+   - The Initial Developer of the Original Code is
+   - Robert Kaiser <kairo@kairo.at>.
+   - Portions created by the Initial Developer are Copyright (C) 2008
+   - the Initial Developer. All Rights Reserved.
+   -
+   - Contributor(s):
+   -   Robert Kaiser <kairo@kairo.at>
+   -
+   - Alternatively, the contents of this file may be used under the terms of
+   - either the GNU General Public License Version 2 or later (the "GPL"), or
+   - the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+   - in which case the provisions of the GPL or the LGPL are applicable instead
+   - of those above. If you wish to allow use of your version of this file only
+   - under the terms of either the GPL or the LGPL, and not to allow others to
+   - use your version of this file under the terms of the MPL, indicate your
+   - decision by deleting the provisions above and replace them with the notice
+   - and other provisions required by the LGPL or the GPL. If you do not delete
+   - the provisions above, a recipient may use your version of this file under
+   - the terms of any one of the MPL, the GPL or the LGPL.
+   -
+   - ***** END LICENSE BLOCK ***** -->
+
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://mandelbrot/skin/image-settings.css" type="text/css"?>
+
+<!DOCTYPE prefwindow SYSTEM "chrome://mandelbrot/locale/image-settings.dtd">
+
+<prefwindow id="imgSettingsDlg"
+            xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+            title="&imageSettings.title;"
+            dlgbuttons="accept,cancel"
+            ondialogaccept="callDrawImage();"
+            buttonlabelaccept="&DrawImageButton.label;">
+
+  <prefpane id="imgSettingsPane" onpaneload="initSettings();">
+    <script type="application/x-javascript"
+            src="chrome://mandelbrot/content/mandelbrot.js"/>
+    <script type="application/x-javascript"
+            src="chrome://mandelbrot/content/image-settings.js"/>
+
+    <preferences id="mandelbrotPreferences">
+      <preference id="mandelbrot.image.width" name="mandelbrot.image.width"
+                  type="int"/>
+      <preference id="mandelbrot.image.height" name="mandelbrot.image.height"
+                  type="int"/>
+    </preferences>
+
+    <groupbox label="&img.size.title;">
+      <hbox flex="1">
+        <label value="&img.width.label;" control="imgWidth"/>
+        <textbox id="imgWidth" size="4" preference="mandelbrot.image.width"/>
+      </hbox>
+      <hbox flex="1">
+        <label value="&img.height.label;" control="imgHeight"/>
+        <textbox id="imgHeight" size="4" preference="mandelbrot.image.heigth"/>
+      </hbox>
+    </groupbox>
+  </prefpane>
+</prefwindow>
index e3c36ae00e8278d53e33b4645f6f7c1b45ce176c..7762362591c4664798a8f9344df9865b91d59fae 100644 (file)
@@ -69,10 +69,20 @@ function drawImage() {
 function drawLine(line, canvas, context, iterMax, algorithm) {
     let Cr_min = -2.0;
     let Cr_max = 1.0;
+    try {
+      Cr_min = gPref.getCharPref("mandelbrot.last_image.Cr_min");
+      Cr_max = gPref.getCharPref("mandelbrot.last_image.Cr_max");
+    }
+    catch (e) { }
     let Cr_scale = Cr_max - Cr_min;
 
     let Ci_min = -1.5;
     let Ci_max = 1.5;
+    try {
+      Cr_min = gPref.getCharPref("mandelbrot.last_image.Ci_min");
+      Cr_max = gPref.getCharPref("mandelbrot.last_image.Ci_max");
+    }
+    catch (e) { }
     let Ci_scale = Ci_max - Ci_min;
 
     let pixels = [];
@@ -363,6 +373,10 @@ function setPalette(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"));
@@ -403,7 +417,6 @@ function setAlgorithm(algoID) {
   gPref.setCharPref("mandelbrot.use_algorithm", algoID);
 }
 
-
 /***** helper functions from external sources *****/
 
 // function below is based on http://developer.mozilla.org/en/docs/Code_snippets:Canvas
index 94d23355cbaf663415fe4655a28cbb2ba73c5a35..b83b843387245b61e6908c031b8b49702798b0b8 100644 (file)
@@ -86,6 +86,7 @@
               <menuitem type="radio" name="palette" value="kairo" label="&colorKairo.label;"/>
             </menupopup>
           </menu>
+          <menuitem id="imgSettings" label="&imgSettings.label;" oncommand="imgSettings();"/>
         </menupopup>
       </menu>
       <menu id="debugMenu" label="&debugMenu.label;">
diff --git a/xulapp/chrome/mandelbrot/locales/en-US/image-settings.dtd b/xulapp/chrome/mandelbrot/locales/en-US/image-settings.dtd
new file mode 100644 (file)
index 0000000..dde6348
--- /dev/null
@@ -0,0 +1,43 @@
+<!-- ***** BEGIN LICENSE BLOCK *****
+   - Version: MPL 1.1/GPL 2.0/LGPL 2.1
+   -
+   - The contents of this file are subject to the Mozilla Public License Version
+   - 1.1 (the "License"); you may not use this file except in compliance with
+   - the License. You may obtain a copy of the License at
+   - http://www.mozilla.org/MPL/
+   -
+   - Software distributed under the License is distributed on an "AS IS" basis,
+   - WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+   - for the specific language governing rights and limitations under the
+   - License.
+   -
+   - The Original Code is KaiRo.at Mandelbrot, XULRunner version.
+   -
+   - The Initial Developer of the Original Code is
+   - Robert Kaiser <kairo@kairo.at>.
+   - Portions created by the Initial Developer are Copyright (C) 2008
+   - the Initial Developer. All Rights Reserved.
+   -
+   - Contributor(s):
+   -   Robert Kaiser <kairo@kairo.at>
+   -
+   - Alternatively, the contents of this file may be used under the terms of
+   - either the GNU General Public License Version 2 or later (the "GPL"), or
+   - the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+   - in which case the provisions of the GPL or the LGPL are applicable instead
+   - of those above. If you wish to allow use of your version of this file only
+   - under the terms of either the GPL or the LGPL, and not to allow others to
+   - use your version of this file under the terms of the MPL, indicate your
+   - decision by deleting the provisions above and replace them with the notice
+   - and other provisions required by the LGPL or the GPL. If you do not delete
+   - the provisions above, a recipient may use your version of this file under
+   - the terms of any one of the MPL, the GPL or the LGPL.
+   -
+   - ***** END LICENSE BLOCK ***** -->
+
+<!ENTITY imageSettings.title   "Image Settings">
+<!ENTITY DrawImageButton.label "Draw Image">
+
+<!ENTITY img.size.title        "Image Size">
+<!ENTITY img.width.label       "Width">
+<!ENTITY img.height.label      "Height">
index 61cd3601e7d7b79b52b0a753ca702fa5f92ae71c..b71edf46a5043e3dcefbfa075d78c28947ff7b4a 100644 (file)
@@ -51,6 +51,7 @@
 <!ENTITY colorMenu.label  "Color Palette">
 <!ENTITY colorBW.label    "Black &amp; White">
 <!ENTITY colorKairo.label "KaiRo.at">
+<!ENTITY imgSettings.label "Image Settingsā€¦">
 
 <!ENTITY debugMenu.label  "Debug">
 <!ENTITY jitEnabled.label "Enable JIT (TraceMonkey)">
diff --git a/xulapp/chrome/mandelbrot/skin/classic/image-settings.css b/xulapp/chrome/mandelbrot/skin/classic/image-settings.css
new file mode 100644 (file)
index 0000000..d28d888
--- /dev/null
@@ -0,0 +1,37 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is KaiRo.at Mandelbrot, XULRunner version.
+ *
+ * The Initial Developer of the Original Code is
+ * Robert Kaiser <kairo@kairo.at>.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *   Robert Kaiser <kairo@kairo.at>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+