Proposal Nyquist GUI Updates

From Audacity Wiki
Jump to: navigation, search
Proposal pages help us get from feature requests into actual plans. This proposal page is about new features for Nyquist GUIs.
Proposal pages are used on an ongoing basis by the Audacity development team and are open to edits from visitors to the wiki. They are a good way to get community feedback on a proposal.


  • Note: Proposals for Google Summer of Code projects are significantly different in structure, are submitted via Google's web app and may or may not have a corresponding proposal page.


Proposed Feature

To provide more flexible GUI creation in Nyquist.

  • Conditional construction of GUI, e.g. to include or not spectral selection fields.
  • GUI is specified in the body of the Nyquist code, rather than in a little language in the comments.
  • Additional features available in Nyquist GUIs such as spin boxes, sizers, static boxes and HTML text windows.

Developer/QA Backing

  • James
  • Steve

Details

Here is some C++ GUI creation code and the corresponding proposed Nyquist.

void SetEnvelopeCommand::PopulateOrExchange(ShuttleGui & S)
{
   S.AddSpace(0, 5);

   S.StartMultiColumn(3, wxALIGN_CENTER);
   {
      S.TieNumericTextBox(  _("Time:"),          mT );
      S.TieNumericTextBox(  _("Value:"),         mV );
      S.TieCheckBox(        _("Delete:"),        mbDelete );
   }
   S.EndMultiColumn();
}

and the Nyquist...

(defun setEnvelopeCommand (&key S t v delete )
   (gui:addSpace 0 5 )
   (gui:multiColumn S 3 gui:kCENTER (
       gui:numericTextBox(_ "Time:" t )
       gui:numericTextBox(_ "Value:" v )
       gui:checkBox(_ "Delete:" delete ))
) 



Advantages

Use Cases