Sequencers.txt 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. MODULE Sequencers;
  2. (* THIS IS TEXT COPY OF BlackBox 1.6-rc6 System/Mod/Sequencers.odc *)
  3. (* DO NOT EDIT *)
  4. IMPORT Stores;
  5. CONST
  6. clean* = 0;
  7. notUndoable* = 1;
  8. invisible* = 2;
  9. TYPE
  10. Message* = ABSTRACT RECORD END;
  11. Notifier* = POINTER TO ABSTRACT RECORD
  12. next: Notifier
  13. END;
  14. Sequencer* = POINTER TO ABSTRACT RECORD
  15. notifiers: Notifier
  16. END;
  17. CloseMsg* = RECORD (Message)
  18. sticky*: BOOLEAN (** OUT, preset to FALSE **)
  19. END;
  20. RemoveMsg* = RECORD (Message) END;
  21. Directory* = POINTER TO ABSTRACT RECORD END;
  22. VAR dir*: Directory;
  23. (** Directory **)
  24. PROCEDURE (dir: Directory) New* (): Sequencer, NEW, ABSTRACT;
  25. PROCEDURE SetDir* (d: Directory);
  26. BEGIN
  27. ASSERT(d # NIL, 20); dir := d
  28. END SetDir;
  29. (** Notifier **)
  30. PROCEDURE (f: Notifier) Notify* (VAR msg: Message), NEW, EMPTY;
  31. (** Sequencer **)
  32. PROCEDURE (s: Sequencer) Dirty* (): BOOLEAN, NEW, ABSTRACT;
  33. PROCEDURE (s: Sequencer) SetDirty* (dirty: BOOLEAN), NEW, ABSTRACT;
  34. PROCEDURE (s: Sequencer) BeginScript* (IN name: Stores.OpName;
  35. VAR script: Stores.Operation), NEW, ABSTRACT;
  36. PROCEDURE (s: Sequencer) Do* (st: Stores.Store; IN name: Stores.OpName;
  37. op: Stores.Operation), NEW, ABSTRACT;
  38. PROCEDURE (s: Sequencer) LastOp* (st: Stores.Store): Stores.Operation, NEW, ABSTRACT;
  39. PROCEDURE (s: Sequencer) Bunch* (st: Stores.Store), NEW, ABSTRACT;
  40. PROCEDURE (s: Sequencer) EndScript* (script: Stores.Operation), NEW, ABSTRACT;
  41. PROCEDURE (s: Sequencer) StopBunching* (), NEW, ABSTRACT;
  42. PROCEDURE (s: Sequencer) BeginModification* (type: INTEGER; st: Stores.Store), NEW, ABSTRACT;
  43. PROCEDURE (s: Sequencer) EndModification* (type: INTEGER; st: Stores.Store), NEW, ABSTRACT;
  44. PROCEDURE (s: Sequencer) CanUndo* (): BOOLEAN, NEW, ABSTRACT;
  45. PROCEDURE (s: Sequencer) CanRedo* (): BOOLEAN, NEW, ABSTRACT;
  46. PROCEDURE (s: Sequencer) GetUndoName* (VAR name: Stores.OpName), NEW, ABSTRACT;
  47. PROCEDURE (s: Sequencer) GetRedoName* (VAR name: Stores.OpName), NEW, ABSTRACT;
  48. PROCEDURE (s: Sequencer) Undo* (), NEW, ABSTRACT;
  49. PROCEDURE (s: Sequencer) Redo* (), NEW, ABSTRACT;
  50. PROCEDURE (s: Sequencer) Handle* (VAR msg: ANYREC), NEW, EMPTY;
  51. PROCEDURE (s: Sequencer) Notify* (VAR msg: Message), NEW;
  52. VAR n: Notifier;
  53. BEGIN
  54. n := s.notifiers;
  55. WHILE n # NIL DO
  56. n.Notify(msg);
  57. n := n.next
  58. END
  59. END Notify;
  60. PROCEDURE (s: Sequencer) InstallNotifier* (n: Notifier), NEW;
  61. BEGIN
  62. n.next := s.notifiers; s.notifiers := n
  63. END InstallNotifier;
  64. END Sequencers.