Though triggers are invaluable for building navigation, introductions, conclusions, and even some prototyped responses from on-screen experts, they aren't sufficient for the more intelligent responses necessary in sophisticated, completed educational software. For example INDIE applications contain frequent just-in-time help. It appears as clickable buttons on screen, as in Figure 4.4.
All INDIE applications have this sort of just-in-time, on-screen ASK system. It consists of a list of clickable question buttons and an area where answers to those questions appear. When a question is ``asked'' (i.e., the button is clicked on), a media item (movie, text, or picture) response appears in the box above the list of questions. After the media item plays, a list of followup questions to it appear below it. These followups have their own answers with followups, which can lead students into a vast web of interlinked questions and answers.
Thus, students see a few contextualized questions available at nearly every point in the system that they can ask. Authors need to have fine control over which questions are visible individually and in small groups.
To gain that control, authors could build each question as a separate button widget. Using triggers, authors could hide and show these buttons like they hide and show test screens and navigation buttons. However, there are usually hundreds of ASK questions in an INDIE application, and inside the same application every question button shares the same attributes of every other question button--the only things that change are the text on it and the answer it shows. Thus, individual button authoring is wasteful, rigid against easy change, and prone to mistakes.
To combat this vast and unnecessary expansion in the number of widgets and triggers authors need to build, the INDIE programming team created question-viewers and answer-viewers. Question-viewers and answer-viewers are called in INDIE parlance ``modgits,'' which is a term that combines ``model'' and ``widget.''9.2 Modgits are widgets that have a predefined interface interaction with the underlying model. They show what is happening in the model for certain kinds of objects--in the case of the ASK system, questions and answers.