(* Chris Noe *) (* describe the objects and operations associated with the View menu *) module View; from Test import Test; from Question import QuestionDB, Question, Type, Class, Time, Difficulty, Keywords, LastUsed, QuestionText, CorrectAnswer, Author; (* a row of the question db view shows most of the properties of a question *) obj QuestionDBTable is qdbrows:QuestionDBRow*; obj QuestionDBRow is type:Type and class:Class and time:Time and difficulty:Difficulty and lastused:LastUsed and keywords:Keywords and questiontext:QuestionText and correctanswer:CorrectAnswer and author:Author; (* View > Question Database *) operation ViewQuestionDB is inputs: qdb:QuestionDB, cl:ColumnsList; outputs: qdbt:QuestionDBTable; pre: (* Ensure that the question DB exists *); post: (* Ensure that the question db is properly displayed *) (forall (i:integer | (i >= 1) and (i < #qdb)) (qdb[i].type = qdbt[i].type) and (qdb[i].class = qdbt[i].class) and (qdb[i].time = qdbt[i].time ) and (qdb[i].difficulty = qdbt[i].difficulty) and (qdb[i].keywords = qdbt[i].keywords) and (qdb[i].lastused = qdbt[i].lastused) and (qdb[i].questiontext = qdbt[i].questiontext) and (qdb[i].author= qdbt[i].author) and (qdb[i].correctanswer = qdbt[i].correctanswer)); end ViewQuestionDB; (* View > Current Test *) operation ViewCurrentTest is inputs: t:Test; outputs: (* None *); pre: (* None *); post: (* None *); end ViewCurrentTest; (* View > Columns ... *) obj ShowType is boolean; obj ShowClass is boolean; obj ShowTime is boolean; obj ShowDifficulty is boolean; obj ShowLastUsed is boolean; obj ShowKeywords is boolean; obj ShowQuestionText is boolean; obj ShowCorrectAnswer is boolean; obj ShowAuthor is boolean; obj ColumnsList is ShowType and ShowClass and ShowTime and ShowDifficulty and ShowLastUsed and ShowKeywords and ShowQuestionText and ShowCorrectAnswer and ShowAuthor; operation ViewColumns is inputs: c:ColumnsList; outputs: c':ColumnsList; pre: (* None *); post: (* Modified ColumnsList shows which columns to display *); end ViewColumns; (* View > Font Editor ... *) operation ViewFontEditor is inputs: (* None *); outputs: (* None *); pre: (* None *); post: (* None *); end ViewFontEditor; end View;