From c3c2f1be940948d5e2a0c00f68c6084cc33c72d6 Mon Sep 17 00:00:00 2001
From: user <user@user-ThinkPad-X60.(none)>
Date: Mon, 27 Apr 2015 21:36:26 -0400
Subject: [PATCH] cleaned up css, improved the gui preset interface

---
 pd/nw/dialog_canvas.css           | 138 -------
 pd/nw/dialog_iemgui.css           | 113 ------
 pd/nw/dialog_iemgui.html          |   2 +-
 pd/nw/dialog_prefs.html           |  18 +-
 pd/nw/index.css                   |  35 --
 pd/nw/index.html                  |   4 +-
 pd/nw/locales/en/translation.json |   4 +-
 pd/nw/pd_canvas.css               | 102 -----
 pd/nw/pd_canvas.html              |   7 +-
 pd/nw/pdcanvas.css                |  87 -----
 pd/nw/pdgui.js                    |  31 +-
 pd/nw/pdproperties.css            | 113 ------
 pd/nw/pdproperties.html           | 604 ------------------------------
 13 files changed, 55 insertions(+), 1203 deletions(-)
 delete mode 100644 pd/nw/dialog_canvas.css
 delete mode 100644 pd/nw/dialog_iemgui.css
 delete mode 100644 pd/nw/index.css
 delete mode 100644 pd/nw/pd_canvas.css
 delete mode 100644 pd/nw/pdcanvas.css
 delete mode 100644 pd/nw/pdproperties.css
 delete mode 100644 pd/nw/pdproperties.html

diff --git a/pd/nw/dialog_canvas.css b/pd/nw/dialog_canvas.css
deleted file mode 100644
index 5a2e244d0..000000000
--- a/pd/nw/dialog_canvas.css
+++ /dev/null
@@ -1,138 +0,0 @@
-@font-face {
-    font-family: "DejaVu Sans Mono";
-    src: url("DejaVuSansMono.ttf");
-}
-
-body {
-    font-family:Verdana;
-    margin: 0px;
-}
-
-fieldset {
-    font-family:Georgia;
-    background-color:#eeeeee;
-    border-radius:3px;
-    border:2px solid black;
-    margin-left:auto;
-    margin-right:auto;
-    padding: 10px;
-}
-
-input[type="text"]{
-    width:3em;
-}
-
-input[type="number"]{
-    width:3em;
-}
-
-div.x-scale {
-    padding: 3px;
-    text-align: center;
-}
-
-div.gop-range {
-}
-
-div.y1 {
-    text-align: center;
-    padding: 3px;
-}
-
-div.x1 {
-    text-align: center;
-    padding: 3px;
-}
-
-div.y2 {
-    text-align: center;
-    padding: 3px;
-}
-
-
-.disabled {
-    color: #aaa;
-}
-
-.prop{
-}
-
-.hidden {
-    display: none;
-}
-
-.container{
-    display: none;
-}
-
-body {
-}
-
-.noselect {
-    -webkit-touch-callout: none;
-    -webkit-user-select: none;
-    -khtml-user-select: none;
-    -moz-user-select: none;
-    -ms-user-select: none;
-    user-select: none;
-}
-
-text {
-    // fill: red;
-    cursor: default;
-}
-
-.selected_border {
-    stroke: blue;
-    stroke-dasharray: none;
-    stroke-width: 1;
-}
-
-label {
-    text-align: right;
-//    margin-right: auto;
-//    margin-left: auto;
-}
-
-.pair {
-    width: 75%;
-    text-align: left;
-    align: left;
-}
-
-.item1 {
-    width: 50%;
-}
-
-.item2 {
-    width: 50%;
-}
-
-input[name="x-offset"] {
-    width: 2em;
-}
-
-input[name="y-offset"] {
-    width: 2em;
-}
-
-input[name="send-symbol"] {
-    width: 8em;
-}
-
-input[name="receive-symbol"] {
-    width: 8em;
-}
-
-input[name="label"] {
-    width: 8em;
-}
-
-input[name="font-size"] {
-    width: 3em;
-}
-
-.submit_buttons {
-    text-align: center;
-    padding: 8px;
-}
diff --git a/pd/nw/dialog_iemgui.css b/pd/nw/dialog_iemgui.css
deleted file mode 100644
index b62808614..000000000
--- a/pd/nw/dialog_iemgui.css
+++ /dev/null
@@ -1,113 +0,0 @@
-@font-face {
-    font-family: "DejaVu Sans Mono";
-    src: url("DejaVuSansMono.ttf");
-}
-
-body {
-    font-family:Verdana;
-    margin: 0px;
-}
-
-fieldset {
-    font-family:Georgia;
-    background-color:#eeeeee;
-    border-radius:3px;
-    border:2px solid black;
-    margin-left:auto;
-    margin-right:auto;
-    padding: 10px;
-}
-
-input[type="text"]{
-    width:3em;
-}
-
-input[type="number"]{
-    width:3em;
-}
-
-
-.prop{
-}
-
-.hidden {
-    display: none;
-}
-
-.container{
-    display: none;
-}
-
-
-
-body {
-}
-
-.noselect {
-    -webkit-touch-callout: none;
-    -webkit-user-select: none;
-    -khtml-user-select: none;
-    -moz-user-select: none;
-    -ms-user-select: none;
-    user-select: none;
-}
-
-text {
-    // fill: red;
-    cursor: default;
-}
-
-.selected_border {
-    stroke: blue;
-    stroke-dasharray: none;
-    stroke-width: 1;
-}
-
-label {
-    text-align: right;
-//    margin-right: auto;
-//    margin-left: auto;
-}
-
-.pair {
-    width: 75%;
-    text-align: left;
-    align: left;
-}
-
-.item1 {
-    width: 50%;
-}
-
-.item2 {
-    width: 50%;
-}
-
-input[name="x-offset"] {
-    width: 2em;
-}
-
-input[name="y-offset"] {
-    width: 2em;
-}
-
-input[name="send-symbol"] {
-    width: 8em;
-}
-
-input[name="receive-symbol"] {
-    width: 8em;
-}
-
-input[name="label"] {
-    width: 8em;
-}
-
-input[name="font-size"] {
-    width: 3em;
-}
-
-.submit_buttons {
-    text-align: center;
-    padding: 8px;
-}
diff --git a/pd/nw/dialog_iemgui.html b/pd/nw/dialog_iemgui.html
index 1db283656..52239720d 100644
--- a/pd/nw/dialog_iemgui.html
+++ b/pd/nw/dialog_iemgui.html
@@ -3,7 +3,7 @@
   <head>
     <link rel="stylesheet" type="text/css" href="dialog_iemgui.css">
   </head>
-  <body>
+  <body id="iemgui_dialog_body">
     <div class="container">
     <form> 
       <fieldset> 
diff --git a/pd/nw/dialog_prefs.html b/pd/nw/dialog_prefs.html
index 7913d5365..31d9540f0 100644
--- a/pd/nw/dialog_prefs.html
+++ b/pd/nw/dialog_prefs.html
@@ -215,13 +215,18 @@
           <label data-i18n="[title]prefs.gui.presets.gui_preset_tt">
             <span data-i18n="prefs.gui.presets.gui_preset"></span>
           </label>
-          <select id="gui_preset">
-            <option data-i18n="prefs.gui.presets.vanilla" value="0">
+          <select id="gui_preset" onchange="gui_preset_change(this);">
+            <option data-i18n="prefs.gui.presets.default" value="default">
             </option>
-            <option data-i18n="prefs.gui.presets.extended" value="1">
+            <option data-i18n="prefs.gui.presets.vanilla" value="vanilla">
             </option>
-            <option data-i18n="prefs.gui.presets.l2ork" value="2">
+            <option data-i18n="prefs.gui.presets.extended" value="extended">
             </option>
+            <option data-i18n="prefs.gui.presets.l2ork" value="l2ork">
+            </option>
+            <option data-i18n="prefs.gui.presets.inverted" value="inverted">
+            </option>
+
           </select>
 
       </fieldset>
@@ -271,6 +276,11 @@
             this_elem.style.setProperty('display', 'inline');
     }
 
+    function gui_preset_change(elem) {
+        pdgui.skin.set(elem.value);
+    }
+
+
     function flag_change(elem) {
         var attr, arrays_select, name, value, flag;
         arrays_select = document.getElementById('arrays_select');
diff --git a/pd/nw/index.css b/pd/nw/index.css
deleted file mode 100644
index 4b9fd1b1e..000000000
--- a/pd/nw/index.css
+++ /dev/null
@@ -1,35 +0,0 @@
-body {
-    margin: 0px;
-}
-
-.noselect {
-    -webkit-touch-callout: none;
-    -webkit-user-select: none;
-    -khtml-user-select: none;
-    -moz-user-select: none;
-    -ms-user-select: none;
-    user-select: none;
-}
-
-#console_controls {
-    background-color: LightGray;
-    height: 50px; 
-} 
-
-#control_frame {
-    padding: 12px;
-}
-
-#printout {
-    margin: 8px;
-}
-
-#bottom {
-    position: absolute;
-    top: 50px;
-    left: 0px;
-    right: 0px;
-    bottom: 0px;
-    overflow-y: scroll;    
-
-}
diff --git a/pd/nw/index.html b/pd/nw/index.html
index a53f62f0e..d1e53eb6d 100644
--- a/pd/nw/index.html
+++ b/pd/nw/index.html
@@ -3,7 +3,7 @@
   <head>
     <link rel="stylesheet" type="text/css" href="index.css">
   </head>
-  <body>
+  <body id="console_body">
     <input style="display:none;" id="fileDialog" type="file" nwworkingdir multiple />
     <div id="console_controls" class="noselect">
       <div id="control_frame">
@@ -529,7 +529,7 @@ function canvasNew(args) {
 
     </script>
     <input style="display:none;" id="saveDialog" type="file" nwsaveas />
-    <div id = "bottom">
+    <div id = "console_bottom">
       <div id = "printout">
       <pre id="p1" style="white-space: pre-wrap;">Welcome to Pd GUI using Node-Webkit
         <script>document.write(process.versions['node-webkit'])</script><br/></pre> 
diff --git a/pd/nw/locales/en/translation.json b/pd/nw/locales/en/translation.json
index f3e8646b8..0818f4087 100644
--- a/pd/nw/locales/en/translation.json
+++ b/pd/nw/locales/en/translation.json
@@ -283,9 +283,11 @@
       "presets": {
         "gui_preset": "GUI preset",
         "gui_preset_tt": "Collection of patch colors and styles",
+        "default": "default",
         "vanilla": "Vanilla",
         "extended": "Pd-Extended",
-        "l2ork": "Pd-L2ork"
+        "l2ork": "Pd-L2ork",
+        "inverted": "inverted"
       }
     },
     "audio": {
diff --git a/pd/nw/pd_canvas.css b/pd/nw/pd_canvas.css
deleted file mode 100644
index f78ee752b..000000000
--- a/pd/nw/pd_canvas.css
+++ /dev/null
@@ -1,102 +0,0 @@
-@font-face {
-    font-family: "DejaVu Sans Mono";
-    src: url("DejaVuSansMono.ttf");
-}
-
-body {
-    margin: 0px;
-    font-family: "DejaVu Sans Mono";
-}
-
-.noselect {
-    -webkit-touch-callout: none;
-    -webkit-user-select: none;
-    -khtml-user-select: none;
-    -moz-user-select: none;
-    -ms-user-select: none;
-    user-select: none;
-}
-
-text {
-    // fill: red;
-    cursor: default;
-}
-
-.selected_border {
-    stroke: blue;
-    stroke-dasharray: none;
-    stroke-width: 1;
-}
-
-/* a message when it flashes on a mouse-click */
-.msg.flashed .border {
-    stroke-width: 4;
-}
-
-/* Border color for selected objects
-   In plain English:
-       Any element with a class 'border' that is contained inside
-       a parent element that is not in class 'gop' but is
-       in class 'selected' (whew!)
-*/
-:not(.gop).selected .border {
-    stroke: blue;
-}
-
-.selected_line {
-    stroke: blue;
-}
-
-.broken_border {
-    fill: #f7f7f7;
-    stroke: red;
-    stroke-dasharray: 3 2;
-}
-
-.xlet_control {
-    stroke: red;
-    fill: gray;
-//    stroke-width: 1;
-}
-
-.xlet_signal {
-    stroke: green;
-    fill: green;
-    stroke-width: 1;
-}
-
-.xlet_iemgui {
-    stroke: black;
-    fill: black;
-    stroke-width: 1;
-}
-
-.iemgui_label_selected {
-    fill: blue;
-}
-
-@-webkit-keyframes fizzle {
-    0% {
-        stroke-width: 1;
-        stroke-opacity: 1;
-        x: 0;
-        rx: 1;
-        ry: 1;
-    }
-    100% {
-        stroke-width: 20;
-        stroke-opacity: 0.2;
-        x: 100;
-        rx: 50;
-        ry: 50;
-    }
-}
-
-.xlet_selected {
-    stroke: purple !important;
-    -webkit-animation: fizzle 0.5s linear 1;
-}
-
-//.xlet:hover {
-//    stroke: red;
-//}
diff --git a/pd/nw/pd_canvas.html b/pd/nw/pd_canvas.html
index 71e0272ea..4f739817e 100644
--- a/pd/nw/pd_canvas.html
+++ b/pd/nw/pd_canvas.html
@@ -1,9 +1,9 @@
 <!DOCTYPE html>
 <html>
   <head>
-  <link rel="stylesheet" type="text/css" href="pd_canvas.css">
+  <link id="page_style" rel="stylesheet" type="text/css" href="css/default.css">
   </head>
-  <body>
+  <body id="patch_body">
   <input style="display:none;" id="fileDialog" type="file" multiple />
   <input style="display:none;" id="saveDialog" type="file" nwsaveas nwworkingdir accept=".pd" />
 
@@ -18,6 +18,9 @@
     var nw = require('nw.gui'); 
     var pdgui = require('./pdgui.js');
 
+    // Apply gui preset to this canvas
+    pdgui.skin.apply(this);
+
     //var name = pdgui.last_loaded();
     
     var l = pdgui.get_local_string;
diff --git a/pd/nw/pdcanvas.css b/pd/nw/pdcanvas.css
deleted file mode 100644
index 864a2fe81..000000000
--- a/pd/nw/pdcanvas.css
+++ /dev/null
@@ -1,87 +0,0 @@
-@font-face {
-    font-family: "DejaVu Sans Mono";
-    src: url("DejaVuSansMono.ttf");
-}
-
-body {
-    margin: 0px;
-    font-family: "DejaVu Sans Mono";
-}
-
-.noselect {
-    -webkit-touch-callout: none;
-    -webkit-user-select: none;
-    -khtml-user-select: none;
-    -moz-user-select: none;
-    -ms-user-select: none;
-    user-select: none;
-}
-
-text {
-    // fill: red;
-    cursor: default;
-}
-
-.selected_border {
-    stroke: blue;
-    stroke-dasharray: none;
-    stroke-width: 1;
-}
-
-.selected_line {
-    stroke: blue;
-}
-
-.broken_border {
-    fill: #f7f7f7;
-    stroke: red;
-    stroke-dasharray: 3 2;
-}
-
-.xlet_control {
-    stroke: red;
-    fill: gray;
-//    stroke-width: 1;
-}
-
-.xlet_signal {
-    stroke: green;
-    fill: green;
-    stroke-width: 1;
-}
-
-.xlet_iemgui {
-    stroke: black;
-    fill: black;
-    stroke-width: 1;
-}
-
-.iemgui_label_selected {
-    fill: blue;
-}
-
-@-webkit-keyframes fizzle {
-    0% {
-        stroke-width: 1;
-        stroke-opacity: 1;
-        x: 0;
-        rx: 1;
-        ry: 1;
-    }
-    100% {
-        stroke-width: 20;
-        stroke-opacity: 0.2;
-        x: 100;
-        rx: 50;
-        ry: 50;
-    }
-}
-
-.xlet_selected {
-    stroke: purple !important;
-    -webkit-animation: fizzle 0.5s linear 1;
-}
-
-//.xlet:hover {
-//    stroke: red;
-//}
diff --git a/pd/nw/pdgui.js b/pd/nw/pdgui.js
index 53b808101..69f0f4cf1 100644
--- a/pd/nw/pdgui.js
+++ b/pd/nw/pdgui.js
@@ -174,7 +174,7 @@ function gui_post(string, color) {
         var text = pd_window.document.createTextNode(string + "\n"); 
         span.appendChild(text);
         myp.appendChild(span);
-        var printout = pd_window.document.getElementById("bottom");
+        var printout = pd_window.document.getElementById("console_bottom");
         printout.scrollTop = printout.scrollHeight;
 
         last_string = string;
@@ -3331,3 +3331,32 @@ function gui_midi_properties(gfxstub, sys_indevs, sys_outdevs,
         );
     }
 }
+
+// Let's try a closure for gui skins
+exports.skin = (function () {
+    var dir = 'css/';
+    var preset = 'default';
+    var w;
+    function apply(win) {
+        win.window.document.getElementById('page_style')
+            .setAttribute('href', dir + preset + '.css');
+    }
+    return {
+        get: function () {
+            gui_post("getting preset: " + dir + preset + '.css');
+            return dir + preset + '.css';
+        },
+        set: function (name) {
+            preset = name;
+            gui_post("trying to set...");
+            for (w in patchwin) {
+                if (patchwin.hasOwnProperty(w)) {
+                    apply(patchwin[w]);
+                }
+            }
+        },
+        apply: function (nw_window) {
+            apply(nw_window);
+        }
+    };
+}());
diff --git a/pd/nw/pdproperties.css b/pd/nw/pdproperties.css
deleted file mode 100644
index b62808614..000000000
--- a/pd/nw/pdproperties.css
+++ /dev/null
@@ -1,113 +0,0 @@
-@font-face {
-    font-family: "DejaVu Sans Mono";
-    src: url("DejaVuSansMono.ttf");
-}
-
-body {
-    font-family:Verdana;
-    margin: 0px;
-}
-
-fieldset {
-    font-family:Georgia;
-    background-color:#eeeeee;
-    border-radius:3px;
-    border:2px solid black;
-    margin-left:auto;
-    margin-right:auto;
-    padding: 10px;
-}
-
-input[type="text"]{
-    width:3em;
-}
-
-input[type="number"]{
-    width:3em;
-}
-
-
-.prop{
-}
-
-.hidden {
-    display: none;
-}
-
-.container{
-    display: none;
-}
-
-
-
-body {
-}
-
-.noselect {
-    -webkit-touch-callout: none;
-    -webkit-user-select: none;
-    -khtml-user-select: none;
-    -moz-user-select: none;
-    -ms-user-select: none;
-    user-select: none;
-}
-
-text {
-    // fill: red;
-    cursor: default;
-}
-
-.selected_border {
-    stroke: blue;
-    stroke-dasharray: none;
-    stroke-width: 1;
-}
-
-label {
-    text-align: right;
-//    margin-right: auto;
-//    margin-left: auto;
-}
-
-.pair {
-    width: 75%;
-    text-align: left;
-    align: left;
-}
-
-.item1 {
-    width: 50%;
-}
-
-.item2 {
-    width: 50%;
-}
-
-input[name="x-offset"] {
-    width: 2em;
-}
-
-input[name="y-offset"] {
-    width: 2em;
-}
-
-input[name="send-symbol"] {
-    width: 8em;
-}
-
-input[name="receive-symbol"] {
-    width: 8em;
-}
-
-input[name="label"] {
-    width: 8em;
-}
-
-input[name="font-size"] {
-    width: 3em;
-}
-
-.submit_buttons {
-    text-align: center;
-    padding: 8px;
-}
diff --git a/pd/nw/pdproperties.html b/pd/nw/pdproperties.html
deleted file mode 100644
index b266a91b6..000000000
--- a/pd/nw/pdproperties.html
+++ /dev/null
@@ -1,604 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <link rel="stylesheet" type="text/css" href="pdproperties.css">
-  </head>
-  <body>
-    <div class="container">
-    <form> 
-      <fieldset> 
-        <legend data-i18n="iem.prop.heading.size"></legend> 
-
-        <table class="pairs">
-          <tr class="size prop hidden">
-            <td>
-              <label data-i18n="[title]iem.prop.size_tt">
-                <span data-i18n="iem.prop.size"></span>
-              </label>
-            </td>
-            <td data-i18n="[title]iem.prop.size_tt">
-              <input type="text" name="size">
-            </td>
-          </tr>
-          <tr class="selection-size prop hidden">
-            <td>
-              <label data-i18n="[title]iem.select_size_tt">
-                <span data-i18n="iem.prop.select_size"></span>
-              </label>
-            </td>
-            <td data-i18n="[title]iem.prop.select_size_tt">
-              <input type="text" name="selection-size">
-            </td>
-          </tr>
-          <tr class="number prop hidden">
-            <td>
-              <label data-i18n="[title]iem.prop.number_tt">
-                <span data-i18n="iem.prop.number"></span>
-              </label>
-            </td>
-            <td data-i18n="[title]iem.prop.number_tt">
-              <input type="number" name="number">
-            </td>
-          </tr>
-          <tr class="nonzero-value prop hidden">
-            <td>
-              <label data-i18n="[title]iem.prop.nonzero_value_tt">
-                <span data-i18n="iem.prop.nonzero_value"></span>
-              </label>
-            </td>
-            <td data-i18n="[title]iem.prop.nonzero_value_tt">
-              <input type="text" name="nonzero-value">
-            </td>
-          </tr>
-          <tr class="width prop hidden">
-            <td>
-              <label data-i18n="[title]iem.prop.width_tt"> 
-                <span data-i18n="iem.prop.width"></span>
-              </label>
-            </td>
-            <td data-i18n="[title]iem.prop.width_tt">
-              <input type="text" name="width">
-            </td>
-            <td>
-              <label data-i18n="[title]iem.prop.height_tt">
-                <span data-i18n="iem.prop.height"></span>
-              </label>
-            </td>
-            <td data-i18n="[title]iem.prop.height_tt">
-              <input type="text" name="height">
-            </td>
-          </tr>
-          <tr class="visible-width prop hidden">
-            <td>
-              <label data-i18n="[title]iem.prop.visible_width_tt">
-                <span data-i18n="iem.prop.visible_width"></span>
-              </label>
-            </td>
-            <td data-i18n="[title]iem.prop.visible_width_tt">
-              <input type="text" name="visible-width">
-            </td>
-            <td>
-              <label data-i18n="iem.prop.visible_height">
-                <span data-i18n="iem.prop.visible_height"></span>
-              </label>
-            </td>
-            <td data-i18n="[title]iem.prop.visible_height_tt">
-              <input type="text" name="visible-height">
-            </td>
-          </tr>
-          <tr class="minimum-range prop pair hidden">
-            <td>
-              <label data-i18n="[title]iem.prop.minimum_tt">
-                <span data-i18n="iem.prop.minimum"></span>
-              </label>
-            </td>
-            <td data-i18n="[title]iem.prop.minimum_tt">
-              <input type="text" name="minimum-range">
-            </td>
-            <td>
-              <label data-i18n="[title]iem.prop.maximum_tt">
-                <span data-i18n="iem.prop.maximum"></span>
-              </label>
-            </td>
-            <td data-i18n="[title]iem.prop.maximum_tt">
-              <input type="text" name="maximum-range">
-            </td>
-          </tr>
-          <tr class="flash-interrupt prop hidden">
-            <td>
-              <label data-i18n="[title]iem.prop.flash_interrupt_tt">
-                <span data-i18n="iem.prop.flash_interrupt"></span>
-              </label>
-            </td>
-            <td data-i18n="[title]iem.prop.flash_interrupt_tt">
-              <input type="text" name="flash-interrupt">
-            </td>
-            <td>
-              <label data-i18n="[title]iem.prop.flash_hold_tt">
-                <span data-i18n="iem.prop.flash_hold"></span>
-              </label>
-            </td>
-            <td data-i18n="[title]iem.prop.flash_hold_tt">
-              <input type="text" name="flash-hold">
-            </td>
-          </tr>
-          <tr class="log-height prop hidden">
-            <td></td><td></td>
-            <td>
-              <label data-i18n="[title]iem.prop.log_height_tt">
-                <span data-i18n="iem.prop.log_height"></span>
-              </label>
-            </td>
-            <td>
-              <input type="text" name="log-height">
-            </td>
-          </tr>
-        </table>
-
-        <div class="init prop hidden">
-          <label data-i18n="[title]iem.prop.init_tt">
-            <input type="checkbox" name="init" value="on">
-            <span data-i18n="iem.prop.init"></span>
-          </label>
-          <br>
-        </div>
-
-        <div class="vu-scale prop hidden">
-          <label data-i18n="[title]iem.prop.vu_scale_tt">
-            <span data-i18n="iem.prop.vu_scale"></span>
-            <input type="checkbox" name="vu-scale" value="on">
-          </label>
-          <br>
-        </div>
-
-        <div class="log-scaling prop hidden">
-          <label data-i18n="[title]iem.prop.log_scale_tt">
-            <input type="checkbox" name="log-scaling" value="on">
-            <span data-i18n="iem.prop.log_scale"></span>
-          </label>
-          <br>
-        </div>
-
-        <div class="steady-on-click prop hidden">
-          <label data-i18n="[title]iem.prop.steady_tt">
-            <input type="checkbox" name="steady-on-click" value="on">
-            <span data-i18n="iem.prop.steady"></span>
-          </label>
-          <br>
-        </div>
-      </fieldset> 
-
-      <fieldset> 
-        <legend data-i18n="iem.prop.heading.messages"></legend> 
-
-        <table>
-          <tr class="send-symbol prop hidden">
-            <td>
-              <label data-i18n="[title]iem.prop.send_tt">
-                <span data-i18n="iem.prop.send"></span>
-              </label>
-            </td>
-            <td data-i18n="[title]iem.prop.send_tt">
-              <input type="text" name="send-symbol">
-            </td>
-            <td>
-          <tr class="receive-symbol prop hidden">
-            <td>
-              <label data-i18n="[title]iem.prop.receive_tt">
-                <span data-i18n="iem.prop.receive"></span>
-              </label>
-            </td>
-            <td data-i18n="[title]iem.prop.receive_tt">
-              <input type="text" name="receive-symbol">
-            </td>
-            <td>
-          </tr>
-        </table>
-      </fieldset> 
-
-      <fieldset> 
-        <legend data-i18n="iem.prop.heading.label">wrong stuff</legend> 
-
-        <table class="pairs">
-          <tr class="label prop hidden">
-            <td>
-              <label data-i18n="[title]iem.prop.label_tt">
-                <span data-i18n="iem.prop.label"></span>
-              </label>
-            </td>
-            <td data-i18n="[title]iem.prop.label_tt">
-              <input type="text" name="label">
-            </td>
-            <td>
-              <label data-i18n="[title]iem.prop.xoffset_tt">
-                <span data-i18n="iem.prop.xoffset"></span>
-              </label>
-            </td>
-            <td data-i18n="[title]iem.prop.xoffset_tt">
-              <input type="text" name="x-offset">
-            </td>
-            <td>
-              <label data-i18n="[title]iem.prop.yoffset_tt">
-                <span data-i18n="iem.prop.yoffset"></span>
-              </label>
-            </td>
-            <td data-i18n="[title]iem.prop.yoffset_tt">
-              <input type="text" name="y-offset">
-            </td>
-          </tr>
-          <tr class="font-style prop hidden">
-            <td>
-              <label data-i18n="[title]iem.prop.font_tt">
-                <span data-i18n="iem.prop.font"></span>
-            </td>
-            <td data-i18n="[title]iem.prop.font_tt">
-              <select name="font-style">
-                <option>Font Number 0</option>
-                <option>Font #1</option>
-                <option>Font 2</option>
-              </select>
-            </td>
-            <td colspan="4">
-              <label data-i18n="[title]iem.prop.fontsize_tt">
-                <span data-i18n="iem.prop.fontsize"></span>
-                <input type="text" name="font-size">
-              <label>
-            </td>
-          </tr>
-        </table>
-      </fieldset> 
-
-      <fieldset> 
-      <legend data-i18n="iem.prop.heading.colors"></legend> 
-
-      <div class="background-color prop hidden">
-        <label data-i18n="[title]iem.prop.bgcolor_tt">
-          <input type="color" name="background-color">
-          <span data-i18n="iem.prop.bgcolor"></span>
-        </label>
-        <br>
-      </div>
-
-      <div class="foreground-color prop hidden">
-        <label data-i18n="[title]iem.prop.fgcolor_tt">
-          <input type="color" name="foreground-color">
-          <span data-i18n="iem.prop.fgcolor"></span>
-        </label>
-        <br>
-      </div>
-
-      <div class="label-color prop hidden">
-        <label data-i18n="[title]iem.prop.label_color_tt">
-          <input type="color" name="label-color">
-          <span data-i18n="iem.prop.label_color"></span>
-        </label>
-        <br>
-      </div>
-    </fieldset> 
-
-    <div class="prop hidden">
-      <input type="hidden" name="minimum-size">
-      <input type="hidden" name="range-schedule">
-      <input type="hidden" name="hide-frame">
-    </div>
-
-    <div class="submit_buttons">
-      <button type="button" onClick="ok()" data-i18n="[title]iem.prop.ok_tt">
-        <span data-i18n="iem.prop.ok"></span>
-      </button>
-      <button type="button" onClick="apply()" data-i18n="[title]iem.prop.apply_tt">
-        <span data-i18n="iem.prop.apply"></span>
-      </button>
-      <button type="button" onClick="cancel()" data-i18n="[title]iem.prop.cancel_tt">
-        <span data-i18n="iem.prop.cancel"></span>
-      </button>
-    </div>
-
-  </form> 
-  </div>      
-
-  <script>
-    'use strict';
-    var nw = require('nw.gui'); 
-    var pdgui = require('./pdgui.js');
-
-    // For translations
-    var l = pdgui.get_local_string;
-
-    console.log("my working dire is " + pdgui.get_pwd());
-
-    var pd_object_callback;
-
-    function ok() {
-        apply();
-        cancel();
-    }
-
-//    function toggler(evt) {
-//        evt.value = evt.checked ? 1 : 0; 
-//    }
-
-    function substitute_space(arg) {
-        var fake_space = String.fromCharCode(11);
-        return arg.split(' ').join(fake_space);
-    }
-
-    function strip_problem_chars(arg) {
-        var problem_chars = [';', ',', '{', '}', '\\'];
-        var ret = arg;
-        for(var i = 0; i < problem_chars.length; i++) {
-            ret = ret.split(';').join('');
-        }
-        return ret;
-    }
-
-    function apply() {
-        pdgui.gui_post("we're applying shits!");
-
-        /* Not sure what these are...
-            iemgui_clip_dim $id
-            iemgui_clip_num $id
-            iemgui_sched_rng $id
-            iemgui_verify_rng $id
-            iemgui_sched_rng $id
-            iemgui_clip_fontsize $id
-        */
-
-
-
-        var send_symbol = document.getElementsByName('send-symbol')[0].value;
-        var receive_symbol = document.getElementsByName('receive-symbol')[0].value;
-        var label =  document.getElementsByName('label')[0].value;
-        if (send_symbol === null || send_symbol === '') { send_symbol = 'empty'; }
-        if (receive_symbol === null || receive_symbol === '') { receive_symbol = 'empty'; }
-        if (label === null || label === '') { label = 'empty'; }
-
-        console.log("send_symbol is " + send_symbol);
-
-        if (send_symbol.charAt(0) === '$') {
-            send_symbol = '#' + send_symbol.slice(1);
-        }
-        if (receive_symbol.charAt(0) === '$') {
-            receive_symbol = '#' + receive_symbol.slice(1);
-        }
-        if (label.charAt(0) === '$') {
-            label = '#' + label.slice(1);
-        }
-
-        send_symbol = substitute_space(send_symbol);
-        receive_symbol = substitute_space(receive_symbol);
-        label = substitute_space(label);
-
-        send_symbol = strip_problem_chars(send_symbol);
-        receive_symbol = strip_problem_chars(receive_symbol);
-        label = strip_problem_chars(label);
-
-        var label_x_offset =  document.getElementsByName('x-offset')[0].value;
-        var label_y_offset =  document.getElementsByName('y-offset')[0].value;
-
-	// make sure the offset boxes have a value
-        if (label_x_offset === null) { label_x_offset = 0; }
-        if (label_y_offset === null) { label_y_offset = 0; }
-
-        var height, width;
-        var size = document.getElementsByName('size')[0].value;
-        if (size === '') {
-            var size = document.getElementsByName('selection-size')[0].value;
-        }
-
-        if (size !== '') {
-            width = size;
-            height = size;
-        } else {
-            width = document.getElementsByName('width')[0].value;
-            height = document.getElementsByName('height')[0].value;
-        }
-
-        var slot3 = document.getElementsByName('minimum-range')[0].value;
-        var slot4 = document.getElementsByName('maximum-range')[0].value;
-
-        if (slot3 === '') {
-            slot3 = document.getElementsByName('flash-interrupt')[0].value;
-            slot4 = document.getElementsByName('flash-hold')[0].value;
-        }
-
-        if (slot3 === '') {
-            slot3 = document.getElementsByName('visible-width')[0].value;
-            slot4 = document.getElementsByName('visible-height')[0].value;
-        }
-
-        if (slot3 === '') { // toggle
-            slot3 = document.getElementsByName('nonzero-value')[0].value;
-            if (slot3 === '') {
-                slot3 = 0;
-            }
-            slot4 = 0;
-        }
-
-        var slot5 = +document.getElementsByName('log-scaling')[0].checked;
-        // Hack to accomodate the vu-scale property, which exists in the same
-        // slot as this one
-        var log_scaling_spanner = document.getElementsByClassName('log-scaling')[0];
-        var log_display = log_scaling_spanner.style.getPropertyValue('display');
-
-        if (log_display === null) {
-            slot5 = +document.getElementsByName('vu-scale')[0].checked;
-            pdgui.gui_post('slot five is ' + slot5);
-        }
-        pdgui.gui_post('slot five is ' + slot5);
-
-        var init = +document.getElementsByName('init')[0].checked;
-        if (init === '') { init = 0; }
-
-        var slot7 = document.getElementsByName('log-height')[0].value;
-        if (slot7 === '') {
-            slot7 = document.getElementsByName('number')[0].value;
-        }
-        if (slot7 === '') {
-            slot7 = 0;
-        }
-
-        var font_style = document.getElementsByName('font-style')[0].value;
-        if (font_style !== null) { font_style = 0; }
-
-        var font_size = document.getElementsByName('font-size')[0].value;
-        if (font_size === '') { font_size = 0; }
-
-        var foreground_color = parseInt(document.getElementsByName('foreground-color')[0].value.slice(1), 16);
-        var background_color = parseInt(document.getElementsByName('background-color')[0].value.slice(1), 16);
-        var label_color = parseInt(document.getElementsByName('label-color')[0].value.slice(1), 16);
-
-        var slot18 = +document.getElementsByName('steady-on-click')[0].checked;
-
-        pdgui.pdsend([pd_object_callback, 'dialog',
-            width, height,
-            slot3, // bng: flash-interrupt
-                   // slider: min-range
-                   // toggle: nonzero-value
-                   // my_canvas: visible_width
-            slot4, // bng: flash-hold
-                   // slider: max-range
-                   // my_canvas: visible_height
-            slot5, // slider: lin/log thingy
-                   // nbx: lin/log
-                   // vu: vu-scale
-            init,
-            slot7, // log-height or vradio/hradio number
-            send_symbol, receive_symbol, label,
-            label_x_offset, label_y_offset,
-            font_style, font_size,
-            background_color, foreground_color,
-            label_color,
-            slot18, // steady on click
-            0].join(' '));
-/*
-	pd [concat $id dialog \
-		$::dialog($vid:wdt) $::dialog($vid:hgt) \
-		$::dialog($vid:min_rng) $::dialog($vid:max_rng) \
-		$::dialog($vid:lin0_log1) $::dialog($vid:loadbang) \
-		$::dialog($vid:num) \
-		$hhhsnd $hhhrcv $hhhgui_nam \
-		$::dialog($vid:gn_dx) $::dialog($vid:gn_dy) \
-		$::dialog($vid:gn_f) $::dialog($vid:gn_fs) \
-		$::dialog($vid:bcol) $::dialog($vid:fcol) \
-		$::dialog($vid:lcol) \
-		$::dialog($vid:steady) $::dialog($vid:hide) \;]
-*/
-
-    }
-
-    function cancel() {
-        pdgui.gui_post("closing the window at this point");
-//        window.close(true);
-        pdgui.pdsend(pd_object_callback + " cancel");
-    }
-
-    // This gets called from the nw_create_window function in index.html
-    // It provides us with our window id from the C side.  Once we have it
-    // we can create the menu and register event callbacks
-    function register_canvas_id(gfxstub, attr_array) {
-        pd_object_callback = gfxstub;
-
-        console.log('attr array is ' + attr_array.toString());
-        for (var i = 0; i < attr_array.length; i+=2) {
-            console.log(attr_array[i] + ": " + attr_array[i+1]);
-        }
-        add_events(gfxstub);
-        // not sure that we need this for properties windows
-//        pdgui.canvas_map(gfxstub);
-        translate_form();
-        populate_form(attr_array);
-        // We don't turn on rendering of the "container" div until
-        // We've finished displaying all the spans and populating the
-        // labels and form elements.  That makes it more efficient and
-        // snappier, at least on older machines.
-        document.getElementsByClassName('container')[0].style.setProperty('display', 'inline');
-//        document.getElementsByClass("fumbles")[0].setAttribute('style', 'display: inline;');
-    }
-
-function tr_text(id) {
-    var elem = document.getElementById('iem.prop.' + id);
-    elem.textContent = l('iem.prop.' + id);
-}
-
-// Stop-gap translator
-function translate_form() {
-    var i
-    var elements = document.querySelectorAll('[data-i18n]');
-    for (i = 0; i < elements.length; i++) {
-        var data = elements[i].dataset.i18n;
-        if (data.slice(0,7) === '[title]') {
-            elements[i].title = l(data.slice(7));
-        } else {
-            elements[i].textContent = l(data);
-        }
-    }
-}
-
-function populate_form(attr_array) {
-
-    // First, let's put the translated text for the form labels:
-
-//    tr_text('heading.size');
-//    tr_text('heading.messages');
-//    tr_text('heading.label');
-//    tr_text('heading.colors');
-//    tr_prop('width');
-//    tr_tooltip('width');
-
-//    var headings = ["size", "messages", "label", "colors"];
-//    for (var i = 0; i < headings.length; i++) {
-//        var str = "iem.prop.heading." + headings[i];
-//        var heading = document.getElementById(str);
-//        heading.textContent = l(str);
-//    }
-
-    for(var i = 0; i < attr_array.length; i+=2) {
-        // Unhide the span with the class with the same name as the id
-        var prop_group = document.getElementsByClassName(attr_array[i])[0];
-        if (prop_group !== undefined) {
-            console.log("the thing here is " + attr_array[i]);
-            prop_group.classList.remove('hidden');
-        } else {
-            pdgui.gui_post("Error: couldn't find iemgui prop group for " + attr_array[i]);
-        }
-        // iemguis use the string 'empty' for null because of
-        // the limitations of Pd's state-saving API.  So we have
-        // to filter that one out
-        if(attr_array[i+1] !== 'empty') {
-            var elem = document.getElementsByName(attr_array[i]);
-            if (elem.length > 0) {
-                if(attr_array[i].slice(-5) === 'color') {
-                    var hex_string = Number(attr_array[i+1]).toString(16);
-                    var color_string = "#" + (hex_string === '0' ? '000000' : hex_string);
-                    pdgui.gui_post("color is " + color_string);
-                    elem[0].value = color_string;
-                } else if (elem[0].type === 'checkbox') {
-                    // The attr here is a string, so we need to
-                    // force it to number, hence the "+" below
-                    elem[0].checked = +attr_array[i+1];
-                } else {
-                    elem[0].value = attr_array[i+1];
-                }
-            }
-        }
-    }
-}
-
-function add_events(name) {
-    // let's handle some events for this window...
-
-    // closing the Window
-    nw.Window.get().on("close", function() {
-        // this needs to do whatever the "cancel" button does
-//        pdgui.pdsend(name + " menuclose 0");
-//        cancel();
-        pdgui.remove_dialogwin(pd_object_callback);
-        this.close(true);
-    });
-
-}
-
-  </script>
-  </body>
-</html>
-- 
GitLab