Hello,

I needed a not modal dialog so i could not use iupGetParam.
I made a function to be called as

NM = NotModal(function() iup.Update(cnv) end,
{
{"angle",0.0,iup.dial,{orientation="CIRCULAR"}}, --  
name,default,creation,arguments
{"zcam",50,iup.val,{min=0,max=500}},
{"radspersecond",math.pi,iup.dial,{orientation="CIRCULAR"}},
{"fogDensity",0,iup.val,{min=0,max=0.005}}
})

and then use NM.fogDensity to know actual value.

Every time I used sliders CPU time got worse and did not go down when 
stoping interaction.
This problem disappeared when I changed

  function ctrl:valuechanged_cb()
   labelval.title = self.value ;
   this[name] = self.value;
   fun(name,self.value)
  end

for

  function ctrl:mousemove_cb(val)
   labelval.title = val ;
   this[name] = val;
   fun(name,val)
  end

It seems that the relevant line is  this[name] = self.value;

Here are both versions
--------------------good one
function NotModal(fun,telems)
 local elems = {}
 local this = {}
 this.vars = {}
 for i,elem in ipairs(telems) do
  local name = elem[1]
  local inival = elem[2]
  local verb = elem[3]
  local args = elem[4] or {}
  local label = iup.label{title=name}
  local labelval = iup.label{title=tostring(inival),size = "100x10"}
  local ctrl = verb(args)
  function ctrl:mousemove_cb(val)
   labelval.title = val ;
   this[name] = val;
   fun(name,val)
  end
  ctrl.value = inival
  this[name] = inival
  this.vars[#this.vars + 1] = {name = name, ctrl = ctrl, inival = inival}
  elems[i] = iup.hbox{label,ctrl,labelval}
 end
 local butreset = iup.button{title="Reset"}
 function butreset:action()
  for i,var in ipairs(this.vars) do
   var.ctrl:mousemove_cb(var.inival)
  end
 end
 elems[#elems + 1] = butreset
 this.dialog = iup.dialog{iup.vbox(elems),topmost="YES"}
 this.dialog:show()
 return this
end
-------------problematic one
function NotModal(fun,telems)
 local elems = {}
 local this = {}
 this.vars = {}
 for i,elem in ipairs(telems) do
  local name = elem[1]
  local inival = elem[2]
  local verb = elem[3]
  local args = elem[4] or {}
  local label = iup.label{title=name}
  local labelval = iup.label{title=tostring(inival),size = "100x10"}
  local ctrl = verb(args)
  function ctrl:mousemove_cb(val)
   labelval.title = val ;
   this[name] = val;
   fun(name,self.value)
  end
  ctrl.value = inival
  this[name] = inival
  this.vars[#this.vars + 1] = {name = name, ctrl = ctrl, inival = inival}
  elems[i] = iup.hbox{label,ctrl,labelval}
 end
 local butreset = iup.button{title="Reset"}
 function butreset:action()
  for i,var in ipairs(this.vars) do
   var.ctrl:mousemove_cb(var.inival)
  end
 end
 elems[#elems + 1] = butreset
 this.dialog = iup.dialog{iup.vbox(elems),topmost="YES"}
 this.dialog:show()
 return this
end

-----------------------
why is this happening? I wish iupVal:mousemove_cb() dont gets deprecated!!!

Best Regards
victor bombi



------------------------------------------------------------------------------
CenturyLink Cloud: The Leader in Enterprise Cloud Services.
Learn Why More Businesses Are Choosing CenturyLink Cloud For
Critical Workloads, Development Environments & Everything In Between.
Get a Quote or Start a Free Trial Today. 
http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
_______________________________________________
Iup-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/iup-users

Reply via email to