Xcos: updated TKSCALE simulation function
[scilab.git] / scilab / modules / scicos_blocks / macros / Sources / tkscaleblk.sci
index 25eb70c..8a27d79 100644 (file)
 //
 // You should have received a copy of the GNU General Public License
 // along with this program; if not, write to the Free Software
-// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 //
 // See the file ../license.txt
 //
 
 function block=tkscaleblk(block,flag)
-  if flag == 1 then
-    // Output update
-    slider = findobj("Tag", block.label + "#slider");
-    if slider <> [] then
-      // calculate real value
-      value = (block.rpar(1) + block.rpar(2) - slider.value) / block.rpar(3);
-      
-      w = slider.parent;
-      if w <> [] then
-        w.info_message = string(value);
-      end
+    if flag == 1 then
+        // Output update
+        slider = get(block.uid + "#slider");
 
-      block.outptr(1) = value;
-    end
-  elseif flag == 4 then
-    // Initialization
+        if slider <> [] then
+            // calculate real value
+            value = (block.rpar(1) + block.rpar(2) + get(slider,"value")) / block.rpar(3);
 
-    // if already exists (stopped) then reuse
-    f = findobj("Tag", block.label);
-    if f <> [] then
-      return;
-    end
+            w = get(block.uid);
+            if w <> [] then
+                set(w, "info_message", string(value));
+            end
+
+            block.outptr(1) = value;
+        end
+    elseif flag == 4 then
+        // Initialization
+
+        // if already exists (stopped) then reuse
+        f = get(block.uid);
+        if f <> [] then
+            return;
+        end
+
+        f = figure("Figure_name", "TK Source: " + block.label, ...
+        "dockable", "off", ...
+        "infobar_visible" , "on", ...
+        "toolbar", "none", ...
+        "menubar_visible", "off", ...
+        "menubar", "none", ...
+        "backgroundcolor", [1 1 1], ...
+        "default_axes", "off", ...
+        "figure_size", [180 350], ...
+        "layout", "border", ...
+        "figure_position", [40 40], ...
+        "Tag", block.uid);
+
+        frame_slider = uicontrol(f, ...
+        "style", "frame", ...
+        "constraints", createConstraints("border", "left", [180, 0]), ...
+        "border", createBorder("line", "lightGray", 1), ...
+        "backgroundcolor", [1 1 1], ...
+        "layout", "gridbag");
+
+        // slider
+        bounds = block.rpar(1:2);
+        initial = mean(bounds);
+        uicontrol(frame_slider, ...
+        "Style", "slider", ...
+        "Tag", block.uid + "#slider", ...
+        "Min", bounds(1), ...
+        "Max", bounds(2), ...
+        "Value", initial, ...
+        "Position", [0 0 10 20], ...
+        "SliderStep", [block.rpar(3) 2*block.rpar(3)]);
 
-    f = figure("Tag", block.label, "Figure_name", "TK Source: " + block.label);
+        frame_label = uicontrol(frame_slider, ...
+        "style", "frame", ...
+        "constraints", createConstraints("border", "right"), ...
+        "backgroundcolor", [1 1 1], ...
+        "layout", "gridbag");
 
-    // delete standard menus
-    delmenu(f.figure_id, gettext("&File"));
-    delmenu(f.figure_id, gettext("&Tools"));
-    delmenu(f.figure_id, gettext("&Edit"));
-    delmenu(f.figure_id, gettext("&?"));
-    toolbar(f.figure_id, "off");
+        // labels
+        labels = string([bounds(2) ; ...
+        mean([bounds(2) initial])  ; ...
+        initial                    ; ...
+        mean([bounds(1) initial])  ; ...
+        bounds(1)]);
+        labels = "<html>" + strcat(labels, "<br /><br /><br />") + "</html>";
 
-    f.position = [0 0 80 200];
+        uicontrol(frame_label, ...
+        "Style", "text", ...
+        "String", labels(1), ...
+        "FontWeight", "bold", ...
+        "backgroundcolor", [1 1 1]);
 
-    // slider
-    bounds = block.rpar(1:2);
-    initial = mean(bounds);
-    uicontrol(f, "Style", "slider", "Tag", block.label + "#slider", ..
-      "Min", bounds(1), "Max", bounds(2), "Value", initial, ..
-      "Position", [0 0 20 200], "SliderStep", [block.rpar(3) 2*block.rpar(3)]);
-    
-    // labels
-    labels = string([bounds(2)                  ;..
-                     mean([bounds(2) initial])  ;..
-                     initial                    ;..
-                     mean([bounds(1) initial])  ;..
-                     bounds(1)]);
-    labels = strcat(labels, "<br /><br /><br />");
-    uicontrol(f, "Style", "text", "String", labels(1), ..
-              "Position", [30  0 50 200]);
-    
-    // update default value
-    block.outptr(1) = initial / block.rpar(3);
-  elseif flag == 5 then
-    // Ending
-    f = findobj("Tag", block.label);
-    if f <> [] then
-      close(f);
+        // update default value
+        block.outptr(1) = initial / block.rpar(3);
+    elseif flag == 5 then
+        // Ending
+        f = get(block.uid);
+        if f <> [] then
+            close(f);
+        end
     end
-  end
 endfunction