• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Custom IC SKILL
  3. Remembering form settings between invocations (and sessions...

Stats

  • Locked Locked
  • Replies 5
  • Subscribers 144
  • Views 14744
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Remembering form settings between invocations (and sessions)

Ivars
Ivars over 11 years ago

 Hi,

I'm trying to create a popup form that will allow a user to specify a file name and directory in which to save a plot (amoung other things).

The difficulty I'm having is having the form remember the directory and file name between invocations of the form. In the skeleton code below, I've used a pair of global varibles to maintain a history of the previous directory path and file name. This seems like a rather crude approach. The string field structure has a "lastValue" property but I don't know how to make use of it.

My questions are:

1) How to elegantly have the last directory path and file name filled in on the form every time it is invoked.

2) How to maintain the history of these settings between Cadence session. Should I write the variables to a file each time the form completed and then read in the file when initially creating the form in a new session? What is the cleanest approach?

3) I've set the defValue for both fields, but only the plotDirField gets set to the default value when the "Default" button is pushed. The plotNameField retains its previous value. Why?

Thanks for any help.

I'm using IC6.1.5.500.17 if it matters.

Ivars

Code Skeleton:


procedure( igfPlotNameCB( theForm )
      igfPlotNameFieldLastValue = theForm->igfPlotNameField->value
      );procedure

procedure( igfPlotDirCB( theForm )
      igfPlotDirLastValue = theForm->igfPlotDir->value
      )


procedure( igfSavePlotFormCB( theForm )
      hiSetCallbackStatus( theForm t)
      )

igfPlotDirLastValue = "~/"
igfPlotNameFieldLastValue = ""

procedure( igfCreateSavePlotPopUp()
      let( (plotDirField plotNameField)
          plotDirField =  hiCreateFileSelectorField(
                           ?name 'plotDir
                           ?mode 'directory
                           ?prompt "Plot Directory:"
                           ?value igfPlotDirLastValue
                           ?defValue "~/"
                           ?callback "igfPlotDirCB( hiGetCurrentForm() )"
                           ?enabled t
                           )
          plotNameField = hiCreateStringField(
                       ?name 'plotName
                       ?prompt "Plot Name"
                       ?value igfPlotNameLastValue
                       ?defValue " "
                       ?callback "igfPlotNameCB( hiGetCurrentForm() )"
                       ?editable t
                       )
          igfSavePlotForm = hiCreateAppForm(
                        ?name 'igfSavePlotPopUpMenu
                        ?formTitle "Save Plot"
                        ?callback 'igfSavePlotFormCB
                        ?fields list( plotDir plotNameField )
                        ?unmapAfterCB t
                  )
)


procedure( igfSavePlotPopUp()
      when(igfSavePlotForm == 'unbound
           igfCreateSavePlotPopup()
           ); when
      hiDisplayForm( igfSavePlotForm )
      ); procedure igfSavePlotPopUp()

hiSetBindKey( "vivaGraph" "<Key>F6" "igfSavePlotPopUp()" )

  • Cancel
Parents
  • skillUser
    skillUser over 11 years ago

    Hi Ivars,

    I think it is failing because the .cdsenv file entries should have 5 elements for the file that is found by the search mechanism (CSF, for example) - this is different to the ~/.cdsenv file (for example) used to specify user defaults. Try adding an extra argument to the end of each line (perhaps just a t or nil) and see if that helps.

    Best regards,

    Lawrence.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • skillUser
    skillUser over 11 years ago

    Hi Ivars,

    I think it is failing because the .cdsenv file entries should have 5 elements for the file that is found by the search mechanism (CSF, for example) - this is different to the ~/.cdsenv file (for example) used to specify user defaults. Try adding an extra argument to the end of each line (perhaps just a t or nil) and see if that helps.

    Best regards,

    Lawrence.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
No Data

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information