23.2 Presentations

  • 23.2.1 The Presentation Protocol
  • A presentation is a special kind of output record that remembers not only output, but the object associated with the output and the semantic type associated with that object. [annotate]

    [presentation, Concept← A Glossary]
    [presentation, Concept← A Glossary]
    [presentation, Concept← A Glossary]
    [presentation, Concept← A Glossary]
    [presentation, Concept← A Glossary]
    [presentation, Concept← 23.7.3 Finding Applicable Presentations, set-highlighted-presentation]
    [presentation, Concept← 23.7.3 Finding Applicable Presentations, throw-highlighted-presentation]
    [presentation, Concept← 23.7.2 Presentation Translator Functions, call-presentation-menu]
    [presentation, Concept← 23.7.2 Presentation Translator Functions, call-presentation-translator]
    [presentation, Concept← 23.7.2 Presentation Translator Functions, presentation-matches-context-type]
    [presentation, Concept← 23.7.2 Presentation Translator Functions, find-applicable-translators]
    [presentation, Concept← 23.3.3 Presentation Methods, highlight-presentation]
    [presentation, Concept← 23.2.1 The Presentation Protocol, presentation-modifier]
    [presentation, Concept← 23.2.1 The Presentation Protocol, (setf presentation-single-box)]
    [presentation, Concept← 23.2.1 The Presentation Protocol, presentation-single-box]
    [presentation, Concept← 23.2.1 The Presentation Protocol, (setf presentation-type)]
    [presentation, Concept← 23.2.1 The Presentation Protocol, presentation-type]
    [presentation, Concept← 23.2.1 The Presentation Protocol, (setf presentation-object)]
    [presentation, Concept← 23.2.1 The Presentation Protocol, presentation-object]
    [presentation, Concept← 23.2 Presentations, presentationp]

    Minor issue: Describe exactly what a presentation is. What does it mean for presentations to be nested? --- SWM [annotate]

    presentation   [Protocol Class]
              

    The protocol class that corresponds to a presentation. If you want to create a new class that behaves like a presentation, it should be a subclass of presentation. All instantiable subclasses of presentation must obey the presentation protocol. [annotate]

    [annotate]

    Note: Should this description mention that PRESENTATION is a subclass of OUTPUT-RECORD? [edit]-- Robert Strandh 2005-09-03 23:04Z
     

    presentationp  object [Protocol Predicate]
              

    Returns true if object is a presentation, otherwise returns false. [annotate]

    [annotate]

    standard-presentation   [Class]
              

    The instantiable output record class that represents presentations. present normally creates output records of this class. Members of this class are mutable. [annotate]

    [annotate]

    Note: Perhaps this description should mention that STANDARD-PRESENTATION is a subclass of PRESENTATION? [edit]-- Robert Strandh 2005-09-03 23:05Z
     

    :object   [Initarg]
    :type   [Initarg]
    :view   [Initarg]
    :single-box   [Initarg]
    :modifier   [Initarg]
              

    All presentation classes must handle these five initargs, which are used to specify, respectively, the object, type, view, single-box, and modifier components of a presentation. [annotate]

    [annotate]

    Note: Yet there are no provided accessors for :view, is this omission intended? [edit]-- Matt Seddon 2022-11-06 15:14Z
     

    23.2.1 The Presentation Protocol

    The following functions comprise the presentation protocol. All classes that inherit from presentation must implement methods for these generic functions. [annotate]

    presentation-object  presentation [Generic Function]
              

    Returns the object associated with the presentation presentation. [annotate]

    [annotate]

    (setf presentation-object)  object presentation [Generic Function]
              

    Changes the object associated with the presentation presentation to object. [annotate]

    [annotate]

    presentation-type  presentation [Generic Function]
              

    Returns the presentation type associated with the presentation presentation. [annotate]

    [annotate]

    (setf presentation-type)  type presentation [Generic Function]
              

    Changes the object associated with the presentation presentation to object. [annotate]

    Note: Surely this is a mistake? It must mean that the type associated with the presentation `presentation' is changed to type. [edit]-- Ethan Smith 2023-07-18 05:20Z
     

    presentation-single-box  presentation [Generic Function]
              

    Returns the "single box" attribute of the presentation presentation, which controls how the presentation is highlighted and when it is sensitive. This will be one of four values: [annotate]

    • nil (the default)---if the pointer is pointing at a visible piece of the output that was drawn as part of the presentation, then it is considered to be pointing at the presentation. The presentation is highlighted by highlighting each visible part of the output that was drawn as part of the presentation. [annotate]
    • t---if the pointer is inside the bounding rectangle of the presentation, it is considered to be pointing at the presentation. The presentation is highlighted by drawing a thin border around the bounding rectangle. [annotate]
    • :position---like t for determining whether the pointer is pointing at the presentation, but like nil for highlighting. [annotate]
    • :highlighting---like nil for determining whether the pointer is pointing at the presentation, but like t for highlighting. [annotate]

    [annotate]

    (setf presentation-single-box)  single-box presentation [Generic Function]
              

    Changes the "single box" attribute of the presentation presentation to single-box. [annotate]

    [annotate]

    presentation-modifier  presentation [Generic Function]
              

    Returns the "modifier" associated with the presentation presentation. The modifier is some sort of object that describes how the presentation object might be modified. For example, it might be a function of one argument (the new value) that can be called in order to store a new value for object after a user somehow "edits" the presentation. [annotate]

    [annotate]