uifile tools

The Matpi GUI Toolbox has the following uifile tools:
  • muiputfile
  • muigetfile

  • fastsave
  • fastread

muiputfile & muigetfile

This capability allows for read/write routines to have runtime customisable options, e.g.

The idea behind this is that the read/write routines can be customised at run time, example use cases:
  • Adding a name to the dataset your loading (for use in a plot legends)
  • Tell your routine to only load partial data
  • Write binary/text flag
  • Add dynamic header information to your file (e.g. description)
The idea is that this information is known by the author of the read/write routine and this is not necessarily the author of the GUI.  It allows for all the information to be inserted at the same time as the file to be saved is selected.

The progress bar is optional - and it requires that the read/write routine sends an update value (0 to 1) to update the bar.

Any authors of the read/write routines are required to follow some basic rules:
  • Follow basic arg-in and arg-out rules to allow the GUI to talk to the routine to find out the runtime options.
    • When called with no arguments - routine returns default runtime options
    • uicontrols are built based on the class type of the variable.
    • Reading
      • defaultOptions = READROUTINE();
      • data = READROUTINE ( filename, options );
    • Writing
      • defaultOptions = WRITEROUTINE();
      • WRITEROUTINE ( filename, data, options );
    • Remembers last directory for file selection
      • This can be customised by each read/write routine.
The GUI automatically takes care of the generation of the controls.

The demo download includes some runtime examples 
For licensed users - m-file examples are provided and more details are in the user guides.

fastsave & fastwrite

This feature is (currently) for PC only.

Network reading and writing of files can be slow, these two functions when used in conjunction with read and write routines can vastly improve reading and writing performance.

Note: For a commercial client with remote located network drives the performance was reduced from many minutes to a few seconds for both reading & writing.