Le 03/12/2019 à 15:20, Stéphane Mottelet a écrit :
Sorry Antoine but I have completely lost the thread. Please give us an example of what (still) does not work for you.
Ah, sorry for the noise.
I don't know why your syntax was not working, but it clearly was not working. I saw a bunch of java related issues on command line so I restarted scilab and boom, both syntax where working perfectly.
I have no idea what happened and how to reproduce it.

See below the example GUI I built using the new get/set syntax.

I think an example showing the full power of tagPath to distinguish two uicontrols with same tag but different parents (with different tags) could be useful too.


Antoine


//////////////////////////////////////////

f=figure();
f.tag="myfig";
/* ---------------- First number from slider ----------------  */
//values
nmin=-5;
nmax=10;
nini=7;
nsmallstep=1;
nsbigstep=2;
//slider position and size
x=10;
y=20;
w=100;
h=25;
//slider uicontrol creation in figure f
hslider=uicontrol(f, ...
    "style", "slider", ...
    "tag", "slider1", ...
    "backgroundcolor", [1 1 1], ...
    "position", [x y w h], ...
    "value", nini, ...
    "min", nmin, ...
    "max", nmax, ...
    "sliderstep", [nsmallstep, nsbigstep], ...
    "callback", "update_values");

/* ------------- Second number from an editable text -------------  */
// initial value
editini="3.14";
//edit position and size
x2=x;
y2=y+h+5;
w2=w;
h2=h;
//edit uicontrol creation in figure f
hedit=uicontrol(f, ...
    "style", "edit", ...
    "tag", "edit2", ...
    "backgroundcolor", [1 1 1], ...
    "position", [x2 y2 w2 h2], ...
    "string", editini, ...
    "callback", "update_values");

/* ------------- Sum displayed in a text uicontrol ------------- */
// initial value
textini="Nothing"
//edit position and size
x3=x+w+5;
y3=y;
w3=w;
h3=2*h+5;
//slider uicontrol creation
htext=uicontrol(f, ...
    "style", "text", ...
    "tag", "text3", ...
    "backgroundcolor", [1 1 1], ...
    "position", [x3 y3 w3 h3], ...
    "string", textini);

/* -------- callback function for slider and edit uicontrols --------  */
//Whenever user interacts with the slider or the edit uicontrols
//  show the sum of both numbers in the text field
function update_values()
    //temporarily deactivate the callback (don't want callback calls to stack up while processing the current one
    set(gcbo,"callback_type",-1);
    /*
      Using the unique tag chosen at the creation time of the uicontrols
      to set/get the uicontrol properties
    */
    //get both numbers from the slider and the edit uicontrols
    number1=get("slider1", "value");
    string2=get("edit2", "string");
    //alternative syntax using the full tagpath ie "tagOfParent/tag" to avoid confusion
//    number1=get("myfig/slider1", "value");
//    string2=get("myfig/edit2", "string");
    //do your maths & conversion
    string3=string(number1+evstr(string2));
    //change the string displayed in the text uicontrol
    set("text3", "string", string3);
    //reactivate callback
    set(gcbo,"callback_type",0);
endfunction

//////////////////////////////////////////


S.

Le 29/11/2019 à 12:28, Antoine Monmayrant a écrit :
get() and set() can now use a tagsPath, that might be less ambiguate
than using findobj(), that returns the first component with a matching
tag (unless only unique tags are defined). The documentation of set() is being overhauled <https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/bugzilla.scilab.org/show_bug.cgi?id=15414>. You
may have a look to it there
<https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/bugzilla.scilab.org/attachment.cgi?id=4997>. The same work on
the get()'s page is pending
<https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/bugzilla.scilab.org/show_bug.cgi?id=15226>.
I tried to use your syntax in a callback and it does not work.
The values returned are not the same than when using findobj and the old syntax (I always get the initial value for the uicontrol, not the updated ones).
I'll try to get a minimal working example...

Antoine

_______________________________________________
users mailing list
users@lists.scilab.org
https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users

_______________________________________________
users mailing list
users@lists.scilab.org
http://lists.scilab.org/mailman/listinfo/users

Reply via email to