Problem creating new patcher with JS


    Nov 29 2008 | 5:09 pm
    Having trouble creating a new patcher window with Javascript. Using this code:
    function newpatch(){
    p = new Patcher(50,50,200,200);
    p.wind.visible=true;
    }
    No errors reported in the Max window... What am I doing wrong?
    Thanks,
    Brennon

    • Nov 30 2008 | 1:57 am
      Wow...this shouldn't be this hard...
      To create a new patcher, quoting from the documentation:
      var p = new Patcher(left,top,bottom,right);
      And further down in the documentation, under Patcher object properties:
      wind (Wind, get)
      A Javascript representation of the window associated with the patcher.
      So, I've also tried setting some of those properties. Here's what I'm working with now:
      var myPatcher = new Patcher(100,100,400,400);
      function bang(){
      myPatcher.dirty();
      myPatcher.wind.visible = 1;
      myPatcher.wind.bringtofront();
      myPatcher.newdefault(10,10,"toggle");
      post("myPatcher.parentclass:");
      post(myPatcher.parentclass);
      post("n");
      post("myPatcher.wind.visible:");
      post(myPatcher.wind.visible);
      post("n");
      post("myPatcher.wind.location:");
      post(myPatcher.wind.location);
      myPatcher.wind.location = (0,0,100,100);
      post("myPatcher.wind.location:");
      post(myPatcher.wind.location);
      post("n");
      post("myPatcher.wind.assocclass:");
      post(myPatcher.wind.assoclass);
      post("n");
      post("myPatcher.wind.assoc:");
      post(myPatcher.wind.assoc);
      post("n");
      myPatcher.bringtofront();
      myPatcher.fullscreen(1);
      myPatcher.apply(printOut);
      }
      function printOut(){
      post("I found a Maxobj!");
      }
      I've included all of my debugging code, as well. Here is my typical output:
      js: myPatcher.parentclass: jsobject 0
      js: myPatcher.wind.visible: 0
      js: myPatcher.wind.location: 100 100 400 426
      method getwind called on invalid object
      js: myPatcher.wind.location: 100 100 400 426
      js: myPatcher.wind.assocclass:
      js: myPatcher.wind.assoc: jsobject 37535792
      js: I found a Maxobj!
      -----
      If I comment out the line,
      myPatcher.newdefault(10,10,"toggle");
      I do NOT get the debugging output:
      js: I found a Maxobj!
      So, I know the patcher and toggle are being created, I just can't see them or manipulate them. Is this a bug?
      For what it's worth, I CAN create a subpatcher with the following Javascript:
      var p=this.patcher;
      var subp = p.newdefault(100,100, "p", "patcherName");
      function hide(){
      subp.wind.visible = 0;
      }
      function show(){
      subp.wind.visible = 1;
      }
      But when I call the hide or show functions, I get:
      js: old_gimme.js: Javascript TypeError: subp.wind has no properties, line 4
      js: error calling function hide
      js: old_gimme.js: Javascript TypeError: subp.wind has no properties, line 8
      js: error calling function show
      I'm pulling my hair out here...does ANYONE have an idea??
    • Dec 02 2008 | 2:52 am
      Can this message be moved to the JS forum, please?
    • Oct 07 2013 | 6:28 pm
      Use patcher.front() to see the window.
      Cheers
      -A
    • Apr 25 2014 | 7:10 am
      I have the same problem, I tried patcher.front(); and it does not work. Anyone please have any idea about how to
      create a new patcher using javascript? Thank you
    • Apr 25 2014 | 7:22 am
      Hi, I tried this and the patcher was created. It seems that the variable should be declared inside the function.
      autowatch = 1;
      function bang(){
      var myPatcher = new Patcher(100,100,400,400);
      myPatcher.wind.visible = 1;
      myPatcher.wind.bringtofront();
      myPatcher.newdefault(10,10, "toggle");
      myPatcher.bringtofront();
      myPatcher.fullscreen(1);
      myPatcher.front();
      }