hold.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. /**********************************************************************
  2. *<
  3. FILE: hold.h
  4. DESCRIPTION:
  5. CREATED BY: Dan Silva
  6. HISTORY:
  7. *> Copyright (c) 1994, All Rights Reserved.
  8. **********************************************************************/
  9. #ifndef __HOLD__H__
  10. #define __HOLD__H__
  11. class HoldStore;
  12. class RestoreObj {
  13. friend class HoldStore;
  14. RestoreObj *next,*prev;
  15. public:
  16. RestoreObj() { next = prev = NULL; }
  17. virtual ~RestoreObj() {};
  18. virtual void Restore(int isUndo)=0;
  19. virtual void Redo()=0;
  20. virtual int Size() { return 1; }
  21. virtual void EndHold() { }
  22. virtual TSTR Description() { return TSTR(_T("---")); }
  23. };
  24. class Hold {
  25. HoldStore *holdStore, *holdList;
  26. int undoEnabled;
  27. int superLevel;
  28. HoldStore *ResetStore();
  29. void Init();
  30. public:
  31. CoreExport Hold();
  32. CoreExport ~Hold();
  33. CoreExport void Put(RestoreObj *rob);
  34. CoreExport void Begin();
  35. CoreExport void Suspend(); // temporarly suspend holding
  36. CoreExport void Resume(); // resume holding
  37. CoreExport int Holding(); // are we holding?
  38. CoreExport void DisableUndo(); // prevents Undo when Accept is called.
  39. CoreExport void EnableUndo();
  40. CoreExport void Restore(); // Restore changes from holdStore.
  41. CoreExport void Release(); // Tosses out holdStore.
  42. // 3 ways to terminate the Begin()...
  43. CoreExport void End(); // toss holdStore.
  44. CoreExport void Accept(int nameID); // record Undo (if enabled), End();
  45. CoreExport void Accept(TCHAR *name);
  46. CoreExport void Cancel(); // Restore changes, End()
  47. //
  48. // Group several Begin-End lists into a single Super-group.
  49. CoreExport void SuperBegin();
  50. CoreExport void SuperAccept(int nameID);
  51. CoreExport void SuperAccept(TCHAR *name);
  52. CoreExport void SuperCancel();
  53. };
  54. extern CoreExport Hold theHold;
  55. void CoreExport EnableUndoDebugPrintout(BOOL onoff);
  56. #endif //__HOLD__H__