home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1998 May / Pcwk5b98.iso / Borland / Cplus45 / BC45 / CMDENABL.PAK / CMDENAB1.CPP next >
C/C++ Source or Header  |  1995-08-29  |  3KB  |  133 lines

  1. //----------------------------------------------------------------------------
  2. //  ObjectWindows - (C) Copyright 1994 by Borland International
  3. //    Command-enabling sample application
  4. //    First version implements four file commands, along with two commands to
  5. //    toggle flags and one command to show current state of flags.
  6. //    Performs no command enabling.
  7. //----------------------------------------------------------------------------
  8. #include <owl/owlpch.h>
  9. #include <owl/applicat.h>
  10. #include <owl/framewin.h>
  11. #include "cmdenabl.h"
  12.  
  13. //  Class definitions:
  14. //  TCmdEnableApp -- application object initializes TApplication, overrides
  15. //    InitMainWindow.
  16. class TCmdEnableApp : public TApplication
  17. {
  18.   public:
  19.     TCmdEnableApp() : TApplication() {}
  20.   protected:
  21.     void InitMainWindow();
  22. };
  23.  
  24. //  TCmdEnableWindow -- window object initializes TWindow, adds four event
  25. //    handlers, adds response table for four events.
  26. class TCmdEnableWindow : public TWindow {
  27.   public:
  28.     TCmdEnableWindow(TWindow* parent = 0);
  29.  
  30.   protected:
  31.     bool isDirty;
  32.     bool isNewFile;
  33.  
  34.     // Event handlers
  35.     void CmFileNew();
  36.     void CmFileOpen();
  37.     void CmFileSave();
  38.     void CmFileSaveAs();
  39.     void CmToggleDirty();
  40.     void CmToggleNew();
  41.     void CmShowState();
  42.  
  43.     DECLARE_RESPONSE_TABLE(TCmdEnableWindow);
  44. };
  45.  
  46. DEFINE_RESPONSE_TABLE1(TCmdEnableWindow, TWindow)
  47.   EV_COMMAND(CM_FILENEW, CmFileNew),
  48.   EV_COMMAND(CM_FILEOPEN, CmFileOpen),
  49.   EV_COMMAND(CM_FILESAVE, CmFileSave),
  50.   EV_COMMAND(CM_FILESAVEAS, CmFileSaveAs),
  51.   EV_COMMAND(CM_TOGGLEDIRTY, CmToggleDirty),
  52.   EV_COMMAND(CM_TOGGLENEW, CmToggleNew),
  53.   EV_COMMAND(CM_SHOWSTATE, CmShowState),
  54. END_RESPONSE_TABLE;
  55.  
  56. // Put the OwlMain here just to get it out of the way
  57. int OwlMain(int /*argc*/, char* /*argv*/ [])
  58. {
  59.   return TCmdEnableApp().Run();
  60. }
  61.  
  62. //  Class function definitions
  63. //  class TCmdEnableApp
  64. //  TCmdEnableApp::InitMainWindow
  65. void
  66. TCmdEnableApp::InitMainWindow()
  67. {
  68.   // Construct the frame window
  69.   TFrameWindow* frame = new TFrameWindow(0, "Command-enabling sample application", new TCmdEnableWindow, true);
  70.  
  71.   // Set the main window and its menu
  72.   SetMainWindow(frame);
  73.   GetMainWindow()->AssignMenu("COMMANDS");
  74. }
  75.  
  76. TCmdEnableWindow::TCmdEnableWindow(TWindow *parent) : TWindow(parent)
  77. {
  78.   isNewFile = true;
  79.   isDirty = false;
  80. }
  81.  
  82. void
  83. TCmdEnableWindow::CmFileNew()
  84. {
  85.   isDirty=false;
  86.   isNewFile=true;
  87.   MessageBox("Opened a new file.\nisDirty=false\nisNewFile=true", "File action taken");
  88. }
  89.  
  90. void
  91. TCmdEnableWindow::CmFileOpen()
  92. {
  93.   isDirty=false;
  94.   isNewFile=false;
  95.   MessageBox("Opened an existing file.\nisDirty=false\nisNewFile=false", "File action taken");
  96. }
  97.  
  98. void
  99. TCmdEnableWindow::CmFileSave()
  100. {
  101.   isDirty=false;
  102.   isNewFile=false;
  103.   MessageBox("Saved an existing file.\nisDirty=false\nisNewFile=false", "File action taken");
  104. }
  105.  
  106. void
  107. TCmdEnableWindow::CmFileSaveAs()
  108. {
  109.   isDirty=false;
  110.   isNewFile=false;
  111.   MessageBox("Saved a file under a new name.\nisDirty=false\nisNewFile=false", "File action taken");
  112. }
  113.  
  114. void
  115. TCmdEnableWindow::CmToggleDirty()
  116. {
  117.   isDirty=!isDirty;
  118. }
  119.  
  120. void
  121. TCmdEnableWindow::CmToggleNew()
  122. {
  123.   isNewFile = !isNewFile;
  124. }
  125.  
  126. void
  127. TCmdEnableWindow::CmShowState()
  128. {
  129.   string str(isDirty ? "isDirty = true\n" : "isDirty = false\n");
  130.   str += (isNewFile ? "isNewFile = true" : "isNewFile = false");
  131.   MessageBox(str.c_str(), "Current state");
  132. }
  133.