Sorry, but no. There is no way to keep the same proportion. Maybe you can
set the RASTERWIDTH# of some of the columns, to keep their size small while
FITTOSIZE will expand the others.

 

Best,

Scuri

 

From: Lance Larsen [mailto:llar...@islinc.com] 
Sent: sexta-feira, 5 de abril de 2013 18:22
To: IUP discussion list.
Subject: Re: [Iup-users] Auto-resizing the Matrix component

 

Ah, yes. I should have caught that in needed to set RASTERWIDTH values from
your last reply. For the benefit of others that might run into the same
issues, I will mention the other changes I made to get this to work. I added
dlg.shrink="YES" so that the dialog would attempt to shrink the components
it contains when it get smaller. This didn't work because I was using an
hbox layout and the component is expanding in the horizontal direction. hbox
in this case only allows expansion, so I switched to vbox. (This is
discussed on the iup documentation in the Layout guide.) Below is the code
that is working for me:

When the columns resize, each is set to the same width. It would be nice if
they maintained the same proportion. Is there a way to make this happen
automatically? 

function OpenTimestepDialog()
  require("iuplua")
  require("iupluacontrols")

  mat = iup.matrix {border="Yes", resizematrix = "Yes", scrollbar="Yes",
REDRAW="ALL", 
                            numcol=7, numlin=3,numcol_visible=7,
numlin_visible=3, widthdef=34}
  mat:setcell(0,1,"End\nTime")
  mat:setcell(0,2,"Minimum\nStep")
  mat:setcell(0,3,"Maximum\nStep")
  mat:setcell(0,4,"Control\nOption")
  mat:setcell(0,5,"Plot\nFreq.")
  mat:setcell(0,6,"Edit\nFreq.")
  mat:setcell(0,7,"Restart\nFreq.")
    
  dlg = iup.dialog{ iup.vbox{mat, margin="5x5"}, title="Time Step Data",}
  
  -- Need so that the control will shrink with the dialog  
  dlg.shrink="yes"

  -- use the dlg resize callback rather than the matrix resize callback
  -- Otherwise the matrix will not redraw
  function dlg:resize_cb(w, h)
        -- Call refresh before adjusting size
        iup.Refresh(dlg)
        -- Set the columns you would like to auto resize to nil
        -- then set the FITTOSIZE flag to columns to resize columns
        mat.RASTERWIDTH1 = nil
        mat.RASTERWIDTH2 = nil
        mat.RASTERWIDTH3 = nil
        mat.RASTERWIDTH4 = nil
        mat.RASTERWIDTH5 = nil
        mat.RASTERWIDTH6 = nil
        mat.RASTERWIDTH7 = nil
        mat.FITTOSIZE = "Columns"
    return iup.DEFAULT
  end
      
  dlg:show()
end

On 4/5/2013 1:13 PM, Antonio Scuri wrote: 

 Hi,

 

  FITTOSIZE will set RASTERWIDTH1,. for all columns. So when you set it
again, you must first reset them to NULL or nil in Lua

 

mat.RASTERWIDTH1 = nil

mat.RASTERWIDTH2 = nil

mat.RASTERWIDTH3 = nil

mat.RASTERWIDTH4 = nil

mat.RASTERWIDTH5 = nil

mat.RASTERWIDTH6 = nil

mat.RASTERWIDTH7 = nil

 

Best,

Scuri

 

From: Lance Larsen [mailto:gaffer...@gmail.com] 
Sent: sexta-feira, 5 de abril de 2013 15:02
To: IUP discussion list.
Subject: Re: [Iup-users] Auto-resizing the Matrix component

 

Scuri,

 

I implemented the resize callback on the dialog instead. This did fix the
problem with the matrix view not being drawn, but the matrix columns are not
being resized when I expand the dialog bounds. I turned on the matrix view
border, so I can see that the matrix view is resizing, just not the table
itself. Am I setting FITTOSIZE correctly, or is there something else I am
missing?

 

function OpenTimeStepDialog()

  local mat = iup.matrix {border="Yes", resizematrix = "Yes",
scrollbar="Yes", 

    REDRAW="ALL", numcol=7, numlin=3,numcol_visible=7, numlin_visible=3,
widthdef=34}

  mat:setcell(0,1,"End\nTime")

  ...    

  

  tsd = iup.dialog{ iup.hbox{mat; margin="5x5";expand="Yes"}, title="Time
Step Data", }

 

  function tsd:resize_cb(w, h)

    iup.Refresh(tsd)

    mat.FITTOSIZE = "Columns"

    return iup.DEFAULT

  end

end

 

~Lance

 

On Fri, Apr 5, 2013 at 11:25 AM, Antonio Scuri <antonio.sc...@gmail.com>
wrote:

Hi Lance,

 

  The resize_cb callback in Lua can not be replaced, you must do it in C.
But I suggest you to use the resize_cb of the dialog instead, but you will
have to call the iup.Refresh(dlg) function before setting FITTOSIZE.

 

  When setting FITTOSIZE all columns that don't have RASTERWIDTH set to a
given value will be resized, in other words all columns that RASTERWIDTH is
set to NULL will be resized.

 

Best Regards,

Antonio Scuri

 

From: Lance Larsen [mailto:gaffer...@gmail.com] 
Sent: sexta-feira, 5 de abril de 2013 13:08
To: iup-users@lists.sourceforge.net
Subject: [Iup-users] Auto-resizing the Matrix component

 

I am evaluating iup for a project where I am combining the SciTE text editor
for popup dialogs that help with adding or editing content. I need to use
Lua to access iup. One thing I wanted to do was set up a dialog that
included a spreadsheet view that expands with the dialog. I saw that there
is a FITTOSIZE option that should allow you to do this, but I am having
trouble figuring out how to set it up correctly. 

 

I did see an incomplete c example in the archive where a RESIZE_CB was
defined and RASTERWIDTH2 was set (does this control which columns are
expanded) and FITTOSIZE was set to "COLUMNS". When I created a Lua resize_cb
callback, it stopped drawing the matrix view. I saw another archived item
indicating that the original callback needed to be called inside the
resize_cb that I create, but I am not sure how to do this in Lua. I tried to
get a reference to the original resize_cb, but the value is 'nil'. Below is
one of my attempts to get this right followed by some specific questions.
Any help is appreciated.

 

 

  mat = iup.matrix {border="Yes", resizematrix = "Yes", scrollbar="Yes",
redraw="All", \

     numcol=7, numlin=3, numcol_visible=7, numlin_visible=3, widthdef=34}

  mat:setcell(0,1,"End\nTime")

  mat:setcell(0,2,"Minimum\nStep")

  mat:setcell(0,3,"Maximum\nStep")

  mat:setcell(0,4,"Control\nOption")

  mat:setcell(0,5,"Plot\nFreq.")

  mat:setcell(0,6,"Edit\nFreq.")

  mat:setcell(0,7,"Restart\nFreq.")

    

  old_resize = mat.resize_cb

 

  function mat:resize_cb(w, h)

    mat.RASTERWIDTH2 = nil

    mat.FITTOSIZE = "Columns"

 

    -- The following line fails since old_resize is nil

    --mat:old_resize(w,h)

 

    return iup.DEFAULT

  end

  

  dlg = iup.dialog{ iup.hbox{mat; margin="5x5";expand="Yes"}, title="Time
Step Data", }

  dlg:show()

 

 

How do I set FITTOSIZE, and is resize_cb the right place to do this?

 

How do I indicate which columns expand (RASTERWIDTH? - if so what do I set
this to?)

 

How do I call the original resize_cb function for the matrix view (if there
is one)? If there isn't why does the view not redraw correctly?

 

-Lance Larsen


----------------------------------------------------------------------------
--
Minimize network downtime and maximize team effectiveness.
Reduce network management and security costs.Learn how to hire
the most talented Cisco Certified professionals. Visit the
Employer Resources Portal
http://www.cisco.com/web/learning/employer_resources/index.html
_______________________________________________
Iup-users mailing list
Iup-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/iup-users

 

 
 
----------------------------------------------------------------------------
--
Minimize network downtime and maximize team effectiveness.
Reduce network management and security costs.Learn how to hire 
the most talented Cisco Certified professionals. Visit the 
Employer Resources Portal
http://www.cisco.com/web/learning/employer_resources/index.html
 
 
_______________________________________________
Iup-users mailing list
Iup-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/iup-users

 

CONFIDENTIALITY NOTICE:This e-mail message, including any attachments, is
for the sole use of the intended recipient(s) and may contain confidential
and privileged information. Any unauthorized review, use, disclosure or
distribution is prohibited. If you are not the intended recipient, please
contact the sender by reply e-mail and destroy all copies of the original
message. 

 

------------------------------------------------------------------------------
Minimize network downtime and maximize team effectiveness.
Reduce network management and security costs.Learn how to hire 
the most talented Cisco Certified professionals. Visit the 
Employer Resources Portal
http://www.cisco.com/web/learning/employer_resources/index.html
_______________________________________________
Iup-users mailing list
Iup-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/iup-users

Reply via email to