home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / BC_502 / APPEXPRT.PAK / CSDIDOCV.OWL < prev    next >
Encoding:
Text File  |  1997-05-06  |  25.0 KB  |  785 lines

  1. ##{cheader.snp}
  2. #include <owl/pch.h>
  3.  
  4. ##@OPT_APPL_TOOLBAR
  5. #include <owl/buttonga.h>
  6. #include <owl/docmanag.h>
  7. ##@OPT_APPL_STATUSBAR
  8. #include <owl/statusba.h>
  9. ##@QUERY_APPL_OLE_AUTO 2
  10. #include <owl/olefacto.h>
  11. #include <ocf/ocreg.h>
  12. ##--BEGIN-- @QUERY_APPL_MODEL != VALUE_DIALOG
  13. ##OPT_DV_RESET
  14. ##OPT_DV_NEXT
  15. ##QUERY_DV_TDOCUMENT [[TDocument]]
  16. ##GetIncludeFile(\\"[[TDocument]]") [[DocIncludeFile]]
  17. #include [[DocIncludeFile]]
  18. ##--END-- @QUERY_APPL_MODEL != VALUE_DIALOG
  19. ##@QUERY_APPL_MODEL == VALUE_DIALOG
  20. #include <owl/filedoc.h>
  21.  
  22. ##--BEGIN-- @OPT_APPL_REGISTRY || @OPT_APPL_MAIL
  23. ##@OPT_APPL_REGISTRY
  24. #include <classlib/cmdline.h>
  25. ##@OPT_APPL_MAIL
  26. #include <classlib/filename.h>
  27.  
  28. ##--END-- @OPT_APPL_REGISTRY || @OPT_APPL_MAIL
  29. ##QUERY_FILE_H [[FileName]]
  30. #include "[[FileName]]"
  31. ##--BEGIN-- @QUERY_APPL_MODEL != VALUE_DIALOG
  32. ##OPT_DV_RESET
  33. ##OPT_DV_NEXT
  34. ##QUERY_DV_TVIEW [[WindowClient]]
  35. ##<<*WindowClient QUERY_FILE_H [[FileName]]
  36. #include "[[FileName]]"                        // Definition of client class.
  37. ##--END-- @QUERY_APPL_MODEL != VALUE_DIALOG
  38. ##--BEGIN-- @QUERY_APPL_MODEL == VALUE_DIALOG
  39. ##QUERY_WIND_CLIENT [[Client]]
  40. ##<<*Client QUERY_FILE_H [[Filename]]
  41. #include "[[Filename]]"                        // Definition of client class.
  42. ##--END-- @QUERY_APPL_MODEL == VALUE_DIALOG
  43. ##--BEGIN-- ((@QUERY_APPL_MODEL != VALUE_DIALOG) || ((@QUERY_APPL_MODEL == VALUE_DIALOG) && @QUERY_APPL_DLGCLIENT_MENU))
  44. ##      :<<TDialog QUERY_FILE_H [[Filename]]
  45. #include "[[Filename]]"                        // Definition of about dialog.
  46. ##--END-- ((@QUERY_APPL_MODEL != VALUE_DIALOG) || ((@QUERY_APPL_MODEL == VALUE_DIALOG) && @QUERY_APPL_DLGCLIENT_MENU))
  47.  
  48.  
  49. ##--BEGIN-- @OPT_APPL_HELP
  50. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 3
  51. //
  52. // Generated help file.
  53. //
  54. ##@QUERY_APPL_HELP [[HelpFile]]
  55. const char HelpFileName[] = "[[HelpFile]].hlp";
  56.  
  57. ##--END-- @OPT_APPL_HELP
  58. //{{[[TApplication]] Implementation}}
  59.  
  60.  
  61. ##--BEGIN-- @QUERY_APPL_OLE_AUTO
  62. //
  63. // OLE's ITypeInfo browses this symbol table for a list of all data,
  64. // properties, and methods exposed by this automated class.
  65. //
  66. ##@QUERY_APPL_OLE != VALUE_NOOLE
  67. DEFINE_AUTOAGGREGATE([[TApplication]], OcApp->Aggregate)
  68. ##@QUERY_APPL_OLE == VALUE_NOOLE
  69. DEFINE_AUTOCLASS([[TApplication]])
  70.   EXPOSE_APPLICATION([[TApplication]], "Application", "Application object", 0)
  71.   EXPOSE_QUIT("Quit", "Quit application", 0)
  72. //{{[[TApplication]]SYM_TBL_BEGIN}}
  73. //{{[[TApplication]]SYM_TBL_END}}
  74. ##@QUERY_APPL_OLE != VALUE_NOOLE
  75. END_AUTOAGGREGATE([[TApplication]], tfAppObject | tfCanCreate, "[[TApplication]]", 0, 0);
  76. ##@QUERY_APPL_OLE == VALUE_NOOLE
  77. END_AUTOCLASS([[TApplication]], tfAppObject | tfCanCreate, "[[TApplication]]", 0, 0);
  78.  
  79. ##--END-- @QUERY_APPL_OLE_AUTO
  80. ## ((@QUERY_APPL_OLE != VALUE_NOOLE) || @QUERY_APPL_OLE_AUTO) 2
  81. DEFINE_APP_DICTIONARY(AppDictionary);
  82.  
  83. ## ((@QUERY_APPL_OLE == VALUE_NOOLE) && @QUERY_APPL_OLE_AUTO)
  84. static TPointer<TRegistrar> Registrar;
  85. ## ((@QUERY_APPL_OLE != VALUE_NOOLE)
  86. static TPointer<TOcRegistrar> Registrar;
  87.  
  88. ##--BEGIN-- ((@QUERY_APPL_OLE != VALUE_NOOLE) || @QUERY_APPL_OLE_AUTO)
  89. REGISTRATION_FORMAT_BUFFER(200)
  90.  
  91. BEGIN_REGISTRATION(ApplicationReg)
  92. ##@QUERY_OLE_GUID [[GUID]]
  93.   REGDATA(clsid, "{[[GUID]]}")
  94. ##--BEGIN-- @QUERY_PRJ_NAME [[AppTitle]]
  95. ## ((@QUERY_APPL_OLE == VALUE_SERVER) || (@QUERY_APPL_OLE == VALUE_OLEBOTH) || @QUERY_APPL_OLE_AUTO) 2
  96.   REGDATA(appname, "[[AppTitle]] Server")
  97.   REGDATA(description, "[[AppTitle]] Server Application")
  98. ## ((@QUERY_APPL_OLE == VALUE_CONTAINER) && !@QUERY_APPL_OLE_AUTO) 2
  99.   REGDATA(appname, "[[AppTitle]] Container")
  100.   REGDATA(description, "[[AppTitle]] Container Application")
  101. ##@QUERY_APPL_OLE_AUTO
  102.   REGDATA(progid, "[[AppTitle]].Application.1")
  103. ##--END-- @QUERY_PRJ_NAME [[AppTitle]]
  104. ##@QUERY_APPL_OLE_AUTO
  105.   REGDATA(cmdline, "/Automation")
  106. ##!@QUERY_APPL_OLE_AUTO
  107.   REGDATA(cmdline, "")
  108. ##--BEGIN-- ((@QUERY_APPL_OLE == VALUE_SERVER) || (@QUERY_APPL_OLE == VALUE_OLEBOTH))
  109.   REGDATA(usage, ocrSingleUse)
  110. ##--BEGIN-- @QUERY_APPL_OLE_AUTO
  111. //  REGDATA(debugger, "TDW")
  112. ##--END-- @QUERY_APPL_OLE_AUTO
  113. ##--END-- ((@QUERY_APPL_OLE == VALUE_SERVER) || (@QUERY_APPL_OLE == VALUE_OLEBOTH))
  114. END_REGISTRATION
  115.  
  116. ##--END-- @QUERY_APPL_OLE != VALUE_NOOLE
  117. ##--BEGIN-- @QUERY_APPL_MODEL == VALUE_DIALOG
  118. ##:     @QUERY_APPL_DLGCLIENT [[DLogClient]]
  119. DEFINE_DOC_TEMPLATE_CLASS(TFileDocument, [[DLogClient]], DlgDTPL);
  120. DlgDTPL __dlogClnt("All Files", "*.*", 0, "TXT", dtAutoDelete | dtUpdateDir);
  121.  
  122. ##--END-- @QUERY_APPL_MODEL == VALUE_DIALOG
  123. ##@QUERY_APPL_OLE != VALUE_NOOLE
  124. ##: {AddOleDV.SNP}
  125. ##*
  126. ##@QUERY_APPL_OLE == VALUE_NOOLE
  127. ##: {AddDocV.SNP}
  128. ##*
  129.  
  130.  
  131. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 3
  132. //
  133. // Build a response table for all messages/commands handled by the application.
  134. //
  135. ##@OPT_APPL_MRU
  136. DEFINE_RESPONSE_TABLE2([[TApplication]], TRecentFiles, TApplication)
  137. ##!@OPT_APPL_MRU
  138. DEFINE_RESPONSE_TABLE1([[TApplication]], TApplication)
  139. //{{[[TApplication]]RSP_TBL_BEGIN}}
  140.   EV_OWLVIEW(dnCreate, EvNewView),
  141.   EV_OWLVIEW(dnClose,  EvCloseView),
  142. ##--BEGIN-- @OPT_APPL_MAIL
  143. ##:DBResponse(\\"[[TApplication]]", "CM_FILESEND", "CmFileSend", "", "COMMAND")
  144.   EV_COMMAND(CM_FILESEND, CmFileSend),
  145. ##:DBResponse(\\"[[TApplication]]", "CM_FILESEND", "CeFileSend", "", "ENABLER")
  146.   EV_COMMAND_ENABLE(CM_FILESEND, CeFileSend),
  147. ##--END-- @OPT_APPL_MAIL
  148. ##:DBResponse(\\"[[TApplication]]", "CM_HELPABOUT", "CmHelpAbout", "", "COMMAND")
  149.   EV_COMMAND(CM_HELPABOUT, CmHelpAbout),
  150. ##@OPT_APPL_HELP 2
  151. ##:DBResponse(\\"[[TApplication]]", "CM_HELPCONTENTS", "CmHelpContents", "", "COMMAND")
  152. ##:DBResponse(\\"[[TApplication]]", "CM_HELPUSING", "CmHelpUsing", "", "COMMAND")
  153.   EV_COMMAND(CM_HELPCONTENTS, CmHelpContents),
  154.   EV_COMMAND(CM_HELPUSING, CmHelpUsing),
  155. ##@OPT_APPL_PRINTING 6
  156. ##:DBResponse(\\"[[TApplication]]", "CM_FILEPRINT", "CmFilePrint", "", "COMMAND")
  157. ##:DBResponse(\\"[[TApplication]]", "CM_FILEPRINTERSETUP", "CmFilePrintSetup", "", "COMMAND")
  158. ##:DBResponse(\\"[[TApplication]]", "CM_FILEPRINTPREVIEW", "CmFilePrintPreview", "", "COMMAND")
  159. ##:DBResponse(\\"[[TApplication]]", "CM_FILEPRINT", "CmPrintEnable", "", "ENABLER")
  160. ##:DBResponse(\\"[[TApplication]]", "CM_FILEPRINTERSETUP", "CmPrintEnable", "", "ENABLER")
  161. ##:DBResponse(\\"[[TApplication]]", "CM_FILEPRINTPREVIEW", "CmPrintEnable", "", "ENABLER")
  162.   EV_COMMAND(CM_FILEPRINT, CmFilePrint),
  163.   EV_COMMAND(CM_FILEPRINTERSETUP, CmFilePrintSetup),
  164.   EV_COMMAND(CM_FILEPRINTPREVIEW, CmFilePrintPreview),
  165.   EV_COMMAND_ENABLE(CM_FILEPRINT, CmPrintEnable),
  166.   EV_COMMAND_ENABLE(CM_FILEPRINTERSETUP, CmPrintEnable),
  167.   EV_COMMAND_ENABLE(CM_FILEPRINTPREVIEW, CmPrintEnable),
  168. ##@OPT_APPL_DRAGDROP
  169. ##:DBResponse(\\"[[TApplication]]", "", "", "WM_DROPFILES", "")
  170.   EV_WM_DROPFILES,
  171. ##@OPT_APPL_PRINTING
  172. ##:DBResponse(\\"[[TApplication]]", "", "", "WM_WININICHANGE", "")
  173.   EV_WM_WININICHANGE,
  174. ##--BEGIN-- @OPT_APPL_MRU
  175.   EV_OWLDOCUMENT(dnCreate, EvOwlDocument),
  176.   EV_OWLDOCUMENT(dnRename, EvOwlDocument),
  177.   EV_REGISTERED(MruFileMessage, CmFileSelected),
  178. ##--END-- @OPT_APPL_MRU
  179. //{{[[TApplication]]RSP_TBL_END}}
  180. END_RESPONSE_TABLE;
  181.  
  182.  
  183. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  184. //--------------------------------------------------------
  185. // [[TApplication]]
  186. // ~~~~~
  187. //
  188. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  189. ##--BEGIN-- ((@QUERY_APPL_OLE != VALUE_NOOLE) || (@QUERY_APPL_OLE_AUTO))
  190. ##QUERY_WIND_TITLE [[Title]]
  191. ##@QUERY_TARGET_NAME [[Target]]
  192. ##@OPT_APPL_MRU
  193. [[TApplication]]::[[TApplication]]() : TApplication(::ApplicationReg["appname"], ::Module, &::AppDictionary), TRecentFiles(".\\[[Target]].ini", 4)
  194. ##!@OPT_APPL_MRU
  195. [[TApplication]]::[[TApplication]]() : TApplication(::ApplicationReg["appname"], ::Module, &::AppDictionary)
  196. ##--END-- ((@QUERY_APPL_OLE != VALUE_NOOLE) || (@QUERY_APPL_OLE_AUTO))
  197. ##--BEGIN-- ((@QUERY_APPL_OLE == VALUE_NOOLE) && (!@QUERY_APPL_OLE_AUTO))
  198. ##QUERY_WIND_TITLE [[Title]]
  199. ##@QUERY_TARGET_NAME [[Target]]
  200. ##@OPT_APPL_MRU
  201. [[TApplication]]::[[TApplication]]() : TApplication("[[Title]]"), TRecentFiles(".\\[[Target]].ini", 4)
  202. ##QUERY_WIND_TITLE [[Title]]
  203. ##!@OPT_APPL_MRU
  204. [[TApplication]]::[[TApplication]]() : TApplication("[[Title]]")
  205. ##--END-- ((@QUERY_APPL_OLE == VALUE_NOOLE) && (!@QUERY_APPL_OLE_AUTO))
  206. {
  207. ##@OPT_APPL_HELP 4
  208.   HelpState = false;
  209.   ContextHelp = false;
  210.   HelpCursor = 0;
  211.  
  212. ##@OPT_APPL_PRINTING 3
  213.   Printer = 0;
  214.   Printing = 0;
  215.  
  216.   SetDocManager(new TDocManager(dmSDI, this));
  217.  
  218. ##@OPT_APPL_MAIL 2
  219.   ApxMail = new TMailer();
  220.  
  221.   // INSERT>> Your constructor code here.
  222. }
  223.  
  224.  
  225. [[TApplication]]::~[[TApplication]]()
  226. {
  227. ##@OPT_APPL_PRINTING 2
  228.   delete Printer;
  229.  
  230. ##@OPT_APPL_MAIL 2
  231.   delete ApxMail;
  232.  
  233.   // INSERT>> Your destructor code here.
  234. }
  235.  
  236.  
  237. ##--BEGIN-- @OPT_APPL_HELP
  238. bool [[TApplication]]::CanClose()
  239. {
  240.   bool result = TApplication::CanClose();
  241.  
  242. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  243.   // Close the help engine if we used it.
  244.   //
  245.   if (result && HelpState)
  246.     GetMainWindow()->WinHelp(HelpFileName, HELP_QUIT, 0);
  247.  
  248.   return result;
  249. }
  250.  
  251.  
  252. ##--END-- @OPT_APPL_HELP
  253. ## (((@QUERY_APPL_MODEL == VALUE_DIALOG) && @QUERY_APPL_DLGCLIENT_MENU) || (@QUERY_APPL_MODEL != VALUE_DIALOG))
  254. ##--BEGIN-- @OPT_APPL_TOOLBAR
  255. ##@QUERY_APPL_OLE == VALUE_NOOLE
  256. void [[TApplication]]::CreateGadgets(TDockableControlBar* cb, bool server)
  257. ##@QUERY_APPL_OLE != VALUE_NOOLE
  258. void [[TApplication]]::CreateGadgets(TControlBar* cb, bool server)
  259. {
  260.   if (!server) {
  261.     cb->Insert(*new TButtonGadget(CM_FILENEW, CM_FILENEW));
  262.     cb->Insert(*new TButtonGadget(CM_FILEOPEN, CM_FILEOPEN));
  263.     cb->Insert(*new TButtonGadget(CM_FILESAVE, CM_FILESAVE));
  264.     cb->Insert(*new TSeparatorGadget(6));
  265.   }
  266.  
  267.   cb->Insert(*new TButtonGadget(CM_EDITCUT, CM_EDITCUT));
  268.   cb->Insert(*new TButtonGadget(CM_EDITCOPY, CM_EDITCOPY));
  269.   cb->Insert(*new TButtonGadget(CM_EDITPASTE, CM_EDITPASTE));
  270.   cb->Insert(*new TSeparatorGadget(6));
  271.   cb->Insert(*new TButtonGadget(CM_EDITUNDO, CM_EDITUNDO));
  272.   cb->Insert(*new TSeparatorGadget(6));
  273.   cb->Insert(*new TButtonGadget(CM_EDITFIND, CM_EDITFIND));
  274.   cb->Insert(*new TButtonGadget(CM_EDITFINDNEXT, CM_EDITFINDNEXT));
  275. ##--BEGIN-- @OPT_APPL_PRINTING
  276.  
  277.   if (!server) {
  278.     cb->Insert(*new TSeparatorGadget(6));
  279.     cb->Insert(*new TButtonGadget(CM_FILEPRINT, CM_FILEPRINT));
  280.     cb->Insert(*new TButtonGadget(CM_FILEPRINTPREVIEW, CM_FILEPRINTPREVIEW));
  281.   }
  282. ##--END-- @OPT_APPL_PRINTING
  283. ##@OPT_APPL_HELP 3
  284.  
  285.   cb->Insert(*new TSeparatorGadget(6));
  286.   cb->Insert(*new TButtonGadget(CM_HELPCONTENTS, CM_HELPCONTENTS));
  287.  
  288. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  289.   // Add caption and fly-over help hints.
  290.   //
  291.   cb->SetCaption("Toolbar");
  292.   cb->SetHintMode(TGadgetWindow::EnterHints);
  293. }
  294.  
  295.  
  296. ##@QUERY_APPL_OLE == VALUE_NOOLE
  297. void [[TApplication]]::SetupSpeedBar(TDecoratedFrame* frame)
  298. ##@QUERY_APPL_OLE != VALUE_NOOLE
  299. void [[TApplication]]::SetupSpeedBar(TOleFrame* frame)
  300. {
  301. ##@QUERY_APPL_OLE == VALUE_NOOLE 2
  302.   ApxHarbor = new THarbor(*frame);
  303.  
  304. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  305.   // Create default toolbar New and associate toolbar buttons with commands.
  306.   //
  307. ##@QUERY_APPL_OLE == VALUE_NOOLE
  308.   TDockableControlBar* cb = new TDockableControlBar(frame);
  309. ##@QUERY_APPL_OLE != VALUE_NOOLE
  310.   TControlBar* cb = new TControlBar(frame);
  311.   CreateGadgets(cb);
  312.  
  313. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  314.   // Setup the toolbar ID used by OLE 2 for toolbar negotiation.
  315.   //
  316.   cb->Attr.Id = IDW_TOOLBAR;
  317.  
  318. ##@QUERY_APPL_OLE == VALUE_NOOLE
  319.   ApxHarbor->Insert(*cb, alTop);
  320. ##@QUERY_APPL_OLE != VALUE_NOOLE
  321.   frame->Insert(*cb, TDecoratedFrame::Top);
  322. }
  323.  
  324.  
  325. ##--END-- @OPT_APPL_TOOLBAR
  326. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  327. //--------------------------------------------------------
  328. // [[TApplication]]
  329. // ~~~~~
  330. // Application main window construction & intialization.
  331. //
  332. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  333. void [[TApplication]]::InitMainWindow()
  334. {
  335.   if (nCmdShow != SW_HIDE)
  336. ##@QUERY_APPL_STARTUP == VALUE_NORMAL
  337.     nCmdShow = (nCmdShow != SW_SHOWMINNOACTIVE) ? SW_SHOWNORMAL : nCmdShow;
  338. ##@QUERY_APPL_STARTUP == VALUE_MIN
  339.     nCmdShow = (nCmdShow != SW_SHOWMINNOACTIVE) ? SW_SHOWMINIMIZED : nCmdShow;
  340. ##@QUERY_APPL_STARTUP == VALUE_MAX
  341.     nCmdShow = (nCmdShow != SW_SHOWMINNOACTIVE) ? SW_SHOWMAXIMIZED : nCmdShow;
  342.  
  343. ##@OPT_APPL_STATUSBAR
  344.   TSDIDecFrame* frame = new TSDIDecFrame(0, GetName(), 0, true, this);
  345. ##!@OPT_APPL_STATUSBAR
  346.   TSDIDecFrame* frame = new TSDIDecFrame(0, GetName(), 0, false, this);
  347.  
  348. ##QUERY_WIND_STYLE [[StyleAttributes]]
  349. ##StyleAttributes != "" 4
  350.   // Override the default window style for the main window.
  351.   //
  352.   [[StyleAttributes]]
  353.  
  354. ##@OPT_APPL_DRAGDROP 4
  355.   // Enable acceptance of dropped files
  356.   //
  357.   frame->Attr.ExStyle |= WS_EX_ACCEPTFILES;
  358.  
  359. ##{fwndbkgd.snp}
  360. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  361.   // Assign icons for this application.
  362.   //
  363.   frame->SetIcon(this, IDI_SDIAPPLICATION);
  364.   frame->SetIconSm(this, IDI_SDIAPPLICATION);
  365.  
  366. ## (((@QUERY_APPL_MODEL == VALUE_DIALOG) && @QUERY_APPL_DLGCLIENT_MENU)  || (@QUERY_APPL_MODEL != VALUE_DIALOG))
  367. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  368.   // Menu associated with window and accelerator table associated with table.
  369.   //
  370. ## (((@QUERY_APPL_MODEL == VALUE_DIALOG) && @QUERY_APPL_DLGCLIENT_MENU)  || (@QUERY_APPL_MODEL != VALUE_DIALOG)) 2
  371.   frame->AssignMenu(IDM_SDI);
  372. ## (((@QUERY_APPL_MODEL == VALUE_DIALOG) && @QUERY_APPL_DLGCLIENT_MENU)  || (@QUERY_APPL_MODEL != VALUE_DIALOG))
  373. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 3
  374.  
  375.   // Associate with the accelerator table.
  376.   //
  377. ## (((@QUERY_APPL_MODEL == VALUE_DIALOG) && @QUERY_APPL_DLGCLIENT_MENU)  || (@QUERY_APPL_MODEL != VALUE_DIALOG)) 2
  378.   frame->Attr.AccelTable = IDM_SDI;
  379.  
  380. ## (((@QUERY_APPL_MODEL == VALUE_DIALOG) && @QUERY_APPL_DLGCLIENT_MENU) || (@QUERY_APPL_MODEL != VALUE_DIALOG))
  381. ##@OPT_APPL_STATUSBAR 6
  382.   TStatusBar* sb = new TStatusBar(frame, TGadget::Recessed,
  383.                                   TStatusBar::CapsLock        |
  384.                                   TStatusBar::NumLock         |
  385.                                   TStatusBar::ScrollLock);
  386.   frame->Insert(*sb, TDecoratedFrame::Bottom);
  387.  
  388. ## (((@QUERY_APPL_MODEL == VALUE_DIALOG) && @QUERY_APPL_DLGCLIENT_MENU) || (@QUERY_APPL_MODEL != VALUE_DIALOG))
  389. ##@OPT_APPL_TOOLBAR 2
  390.   SetupSpeedBar(frame);
  391.  
  392.   SetMainWindow(frame);
  393.  
  394. ## (((@QUERY_APPL_MODEL == VALUE_DIALOG) && @QUERY_APPL_DLGCLIENT_MENU)  || (@QUERY_APPL_MODEL != VALUE_DIALOG)) 2
  395.   frame->SetMenuDescr(TMenuDescr(IDM_SDI));
  396.  
  397. ##--BEGIN-- @QUERY_APPL_CONTROL == VALUE_3D
  398. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  399.   // Windows 3-D controls.
  400.   //
  401.   EnableCtl3d(true);
  402. ##--END-- @QUERY_APPL_CONTROL==VALUE_3D
  403. ##--BEGIN-- @QUERY_APPL_CONTROL==VALUE_BWCC
  404. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  405.   // Borland Windows custom controls.
  406.   //
  407.   EnableBWCC();
  408. ##--END-- @QUERY_APPL_CONTROL==VALUE_BWCC
  409. }
  410.  
  411.  
  412. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  413. //--------------------------------------------------------
  414. // [[TApplication]]
  415. // ~~~~~
  416. // Application instance initialization.
  417. //
  418. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  419. void [[TApplication]]::InitInstance()
  420. {
  421.   TApplication::InitInstance();
  422.   GetDocManager()->CreateAnyDoc(0, dtNewDoc);
  423. ##@OPT_APPL_REGISTRY
  424.   ProcessCmdLine(lpCmdLine);
  425. }
  426.  
  427.  
  428. ##{registry.snp}
  429. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  430. //--------------------------------------------------------
  431. // [[TApplication]]
  432. // ~~~~~
  433. // Response Table handlers:
  434. //
  435. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  436. void [[TApplication]]::EvNewView(TView& view)
  437. {
  438.   GetMainWindow()->SetClientWindow(view.GetWindow());
  439.   if (!view.IsOK())
  440.     GetMainWindow()->SetClientWindow(0);
  441.   else if (view.GetViewMenu())
  442.     GetMainWindow()->MergeMenu(*view.GetViewMenu());
  443. ##--BEGIN-- ((@QUERY_APPL_OLE == VALUE_SERVER) || (@QUERY_APPL_OLE == VALUE_OLEBOTH))
  444.  
  445.   TOleView* ov = TYPESAFE_DOWNCAST(&view, TOleView);
  446.   if (!ov || !ov->GetOcRemView())
  447.     OcApp->SetOption(amEmbedding, false);
  448. ##--END-- ((@QUERY_APPL_OLE == VALUE_SERVER) || (@QUERY_APPL_OLE == VALUE_OLEBOTH))
  449. }
  450.  
  451.  
  452. void [[TApplication]]::EvCloseView(TView&)
  453. {
  454.   GetMainWindow()->SetClientWindow(0);
  455. ##QUERY_WIND_TITLE [[Title]]
  456.   GetMainWindow()->SetCaption("[[Title]]");
  457. }
  458.  
  459.  
  460. //{{TSDIDecFrame Implementation}}
  461.  
  462.  
  463. ##@QUERY_APPL_OLE != VALUE_NOOLE 3
  464. TSDIDecFrame::TSDIDecFrame(TWindow* , const char far* title, TWindow* clientWnd, bool trackMenuSelection, TModule* module)
  465. :
  466.   TOleFrame(title, clientWnd, trackMenuSelection, module)
  467. ##@QUERY_APPL_OLE == VALUE_NOOLE 3
  468. TSDIDecFrame::TSDIDecFrame(TWindow* parent, const char far* title, TWindow* clientWnd, bool trackMenuSelection, TModule* module)
  469. :
  470.   TDecoratedFrame(parent, title, clientWnd, trackMenuSelection, module)
  471. {
  472.   // INSERT>> Your constructor code here.
  473.  
  474. }
  475.  
  476.  
  477. TSDIDecFrame::~TSDIDecFrame()
  478. {
  479.   // INSERT>> Your destructor code here.
  480.  
  481. }
  482. ##--BEGIN-- @OPT_APPL_PRINTING
  483.  
  484.  
  485. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  486. //--------------------------------------------------------
  487. // [[TApplication]]
  488. // ~~~~~~~~~~
  489. // Menu File Print command
  490. //
  491. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  492. void [[TApplication]]::CmFilePrint()
  493. {
  494. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  495.   // Create Printer object if not already created.
  496.   //
  497.   if (!Printer)
  498.     Printer = new TPrinter(this);
  499.  
  500.   TDocument* currentDoc = GetDocManager()->GetCurrentDoc();
  501.  
  502.   TAPointer<char> docName = new char[_MAX_PATH];
  503.  
  504.   if (currentDoc->GetTitle())
  505.     strcpy(docName, currentDoc->GetTitle());
  506.   else
  507.     strcpy(docName, "Document");
  508.  
  509. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  510.   // Create Printout window and set characteristics.
  511.   //
  512.   TApxPrintout printout(Printer, docName, GetMainWindow()->GetClientWindow());
  513.   printout.SetBanding(true);
  514.  
  515.   Printing++;
  516.  
  517. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  518.   // Bring up the Print dialog and print the document.
  519.   //
  520.   Printer->Print(GetWindowPtr(GetActiveWindow()), printout, true);
  521.  
  522.   Printing--;
  523. }
  524.  
  525.  
  526. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  527. //--------------------------------------------------------
  528. // [[TApplication]]
  529. // ~~~~~~~~~~
  530. // Menu File Print Setup command
  531. //
  532. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  533. void [[TApplication]]::CmFilePrintSetup()
  534. {
  535.   if (!Printer)
  536.     Printer = new TPrinter(this);
  537.  
  538. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  539.   // Bring up the Print Setup dialog.
  540.   //
  541.   Printer->Setup(GetMainWindow());
  542. }
  543.  
  544.  
  545. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  546. //--------------------------------------------------------
  547. // [[TApplication]]
  548. // ~~~~~~~~~~
  549. // Menu File Print Preview command
  550. //
  551. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  552. void [[TApplication]]::CmFilePrintPreview()
  553. {
  554.   TSDIDecFrame* sdiFrame = TYPESAFE_DOWNCAST(GetMainWindow(), TSDIDecFrame);
  555.   if (sdiFrame) {
  556.     if (!Printer)
  557.       Printer = new TPrinter(this);
  558.  
  559.     Printing++;
  560.  
  561.     TApxPreviewWin* prevW = new TApxPreviewWin(sdiFrame, Printer, sdiFrame->GetClientWindow(), "Print Preview", new TLayoutWindow(0));
  562.     prevW->Create();
  563.  
  564. ##:@QUERY_APPL_COMMENT == VALUE_VERBOSE 3
  565.     // Here we resize the preview window to take the size of the MainWindow, then
  566.     // hide the MainWindow.
  567.     //
  568.     TFrameWindow * mainWindow =  GetMainWindow();
  569.     TRect r = mainWindow->GetWindowRect();
  570.     prevW->MoveWindow(r);
  571.     prevW->ShowWindow(SW_SHOWNORMAL);
  572.     mainWindow->ShowWindow(SW_HIDE);
  573.  
  574.     BeginModal(GetMainWindow());
  575.  
  576. ##:@QUERY_APPL_COMMENT == VALUE_VERBOSE 3
  577.     // After the user closes the preview Window, we take its size and use it
  578.     // to size the MainWindow, then show the MainWindow again.
  579.     //
  580.     r = prevW->GetWindowRect();
  581.     mainWindow->MoveWindow(r);
  582.     mainWindow->ShowWindow(SW_SHOWNORMAL);
  583.  
  584.     Printing--;
  585.  
  586. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  587.     // Now that printing is off we can invalidate because the edit window to repaint.
  588.     //
  589.     GetMainWindow()->SetRedraw(true);
  590.     GetMainWindow()->Invalidate();
  591.  
  592. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 3
  593.     // We must destroy the preview window explicitly.  Otherwise, the window will
  594.     // not be destroyed until it's parent the MainWindow is destroyed.
  595.     //
  596.     prevW->Destroy();
  597.     delete prevW;
  598.   }
  599. }
  600.  
  601.  
  602. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  603. //--------------------------------------------------------
  604. // [[TApplication]]
  605. // ~~~~~~~~~~
  606. // Menu enabler used by Print, Print Setup and Print Preview.
  607. //
  608. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  609. void [[TApplication]]::CmPrintEnable(TCommandEnabler& tce)
  610. {
  611. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 4
  612.   // If we have a Printer already created just test if all is okay.
  613.   // Otherwise create a Printer object and make sure the printer really exists
  614.   // and then delete the Printer object.
  615.   //
  616.   if (!Printer) {
  617.     Printer = new TPrinter(this);
  618.       tce.Enable(!Printer->GetSetup().Error);
  619.   }
  620.   else
  621.     tce.Enable(!Printer->GetSetup().Error);
  622. }
  623. ##--END-- @OPT_APPL_PRINTING
  624. ##--END-- (@QUERY_APPL_MODEL == VALUE_SDI)
  625. ##--BEGIN-- @OPT_APPL_MAIL
  626.  
  627.  
  628. void [[TApplication]]::CeFileSend(TCommandEnabler& ce)
  629. {
  630.   ce.Enable((GetDocManager()->GetCurrentDoc() != 0)
  631.             && ApxMail->IsMAPIAvailable());
  632. }
  633.  
  634.  
  635. void [[TApplication]]::CmFileSend ()
  636. {
  637.   // Check to see if a document exists
  638.   //
  639.   TDocument* currentDoc = GetDocManager()->GetCurrentDoc();
  640.  
  641.   if (currentDoc) {
  642.     TAPointer<char> savedPath = new char[_MAX_PATH];
  643.     TAPointer<char> docName = new char[_MAX_PATH];
  644.  
  645.     bool dirtyState = currentDoc->IsDirty();
  646.  
  647.     if (currentDoc->GetDocPath())
  648.       strcpy(savedPath, currentDoc->GetDocPath());
  649.     else
  650.       strcpy(savedPath, "");
  651.  
  652.     if (currentDoc->GetTitle())
  653.       strcpy(docName, currentDoc->GetTitle());
  654.     else
  655.       strcpy(docName, "Document");
  656.  
  657.     TFileName tempFile(TFileName::TempFile);
  658.  
  659.     currentDoc->SetDocPath(tempFile.Canonical().c_str());
  660.     currentDoc->Commit(true);
  661.  
  662.     currentDoc->SetDocPath(savedPath);
  663.     currentDoc->SetDirty(dirtyState);
  664.  
  665.     ApxMail->SendDocuments(GetMainWindow(), tempFile.Canonical().c_str(), docName, false);
  666.  
  667.     tempFile.Remove();
  668.   }
  669. }
  670. ##--END-- @OPT_APPL_MAIL
  671. ##--BEGIN-- @OPT_APPL_HELP
  672.  
  673.  
  674. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  675. //--------------------------------------------------------
  676. // [[TApplication]]
  677. // ~~~~~
  678. // Menu Help Contents command
  679. //
  680. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  681. void [[TApplication]]::CmHelpContents()
  682. {
  683. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  684.   // Show the help table of contents.
  685.   //
  686.   HelpState = GetMainWindow()->WinHelp(HelpFileName, HELP_CONTENTS, 0);
  687. }
  688.  
  689.  
  690. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  691. //--------------------------------------------------------
  692. // [[TApplication]]
  693. // ~~~~~
  694. // Menu Help Using Help command
  695. //
  696. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  697. void [[TApplication]]::CmHelpUsing()
  698. {
  699. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  700.   // Display the contents of the Windows help file.
  701.   //
  702.   HelpState = GetMainWindow()->WinHelp(HelpFileName, HELP_HELPONHELP, 0);
  703. }
  704. ##--END-- @OPT_APPL_HELP
  705.  
  706.  
  707. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  708. //--------------------------------------------------------
  709. // [[TApplication]]
  710. // ~~~~~~~~~~~
  711. //
  712. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  713. ##@QUERY_TARGET_NAME [[Target]]
  714. // Menu Help About [[Target]] command
  715. void [[TApplication]]::CmHelpAbout()
  716. {
  717. ##"" [[TDialog]]
  718. ##--BEGIN-- ((@QUERY_APPL_MODEL != VALUE_DIALOG) || ((@QUERY_APPL_MODEL == VALUE_DIALOG) && @QUERY_APPL_DLGCLIENT_MENU))
  719. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  720.   // Show the modal dialog.
  721.   //
  722. ##      :<<TDialog QUERY_CLASS_NAME TDialog
  723. ## ((@QUERY_APPL_OLE == VALUE_SERVER) || (@QUERY_APPL_OLE == VALUE_OLEBOTH))
  724.   [[TDialog]](&TWindow(::GetFocus(), this)).Execute();
  725. ## ((@QUERY_APPL_OLE != VALUE_SERVER) && (@QUERY_APPL_OLE != VALUE_OLEBOTH))
  726.   [[TDialog]](GetMainWindow()).Execute();
  727. ##--END-- ((@QUERY_APPL_MODEL != VALUE_DIALOG) || ((@QUERY_APPL_MODEL == VALUE_DIALOG) && @QUERY_APPL_DLGCLIENT_MENU))
  728. }
  729. ##--BEGIN-- @OPT_APPL_DRAGDROP
  730.  
  731.  
  732. void [[TApplication]]::EvDropFiles(TDropInfo drop)
  733. {
  734. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  735.   // Tell DragQueryFile the file interested in (0) and the length of your buffer.
  736.   //
  737.   int    nameLength = drop.DragQueryFileNameLen(0) + 1;
  738.   char*  fileName = new char[nameLength];
  739.  
  740.   drop.DragQueryFile(0, fileName, nameLength);
  741.  
  742. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  743.   // Open the file that was dropped.
  744.   //
  745.   AddFile(fileName);
  746. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 3
  747.  
  748.   // Release the memory allocated for this handle with DragFinish.
  749.   //
  750.   drop.DragFinish();
  751.   delete[] fileName;
  752. }
  753.  
  754.  
  755. void [[TApplication]]::AddFile(const char* FileName)
  756. {
  757.   TDocTemplate* tpl = GetDocManager()->MatchTemplate(FileName);
  758.   if (tpl)
  759.     GetDocManager()->CreateDoc(tpl, FileName);
  760. }
  761. ##--END-- @OPT_APPL_DRAGDROP
  762. ##--BEGIN-- @OPT_APPL_MRU
  763.  
  764.  
  765. void [[TApplication]]::EvOwlDocument(TDocument& doc)
  766. {
  767.   if (doc.GetDocPath())
  768.     SaveMenuChoice(doc.GetDocPath());
  769. }
  770.  
  771.  
  772. int32 [[TApplication]]::CmFileSelected(uint wp, int32)
  773. {
  774.   TAPointer<char> text = new char[_MAX_PATH];
  775.  
  776.   GetMenuText(wp, text, _MAX_PATH);
  777.   TDocTemplate* tpl = GetDocManager()->MatchTemplate(text);
  778.   if (tpl)
  779.     GetDocManager()->CreateDoc(tpl, text);
  780.   return 0;
  781. }
  782. ##--END-- @OPT_APPL_MRU
  783.  
  784. ##{main.owl}
  785.