There are two general goals for this project:
You may start with your solution to the previous project or a provided solution.
Your GUI should start by allowing the user to select the two required files: thedata file and the mtable file (you will not have a "variables" file for this project).
Once the files have been selected you should verify that the files are readable and consistent. The consistency check will be fairly simple. The first non-commented line of the mtable file should be an interger value that specifies the size of each record (in bytes) in the binary file, you should make sure that the size of binary file is a multiple of the record size.
Once the two files have been selected and checked, your GIU should let the user graph the value of a single variable (with a numerical type) or build a table of the values for selected variables. To do this, you need to provide an interface that will let the user select the variable they wish to graph or the variables that they would like to see in the table -- the names of possible the variables will be taken from the mtable file.
Every window must have an "exit" button, so that user can terminate the program (clicking on the close icon on each window only closes that window, it will not terminate the program).
Your program should not terminate unless the user clicks on one of the "exit" buttons. If there is an error (e.g., an unreadable file), you should present the user with a pop-up dailog and allow them to correct the error.
How you go about meeting these requirements is really up to you -- all that we require is that you check that the files are readable and consistent and that the user be able to plot the value of a variable or build a table of selected variable values.
As you can imagine, there are many possible solutions that will be acceptable. If you have questions about general approaches, do not hesitate to ask or send mail tot he class mailing list.
We will grant "extra credit" for solutions that go significantly beyond the minimal requitrements (e.g., using fancy layout for windows or adding a text box for file selection).