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

  1. ##{cheader.snp}
  2. #include <owl/pch.h>
  3.  
  4. ##@OPT_APPL_TOOLBAR
  5. #include <owl/buttonga.h>
  6. ##@OPT_APPL_STATUSBAR
  7. #include <owl/statusba.h>
  8. #include <owl/docmanag.h>
  9. ##@QUERY_APPL_OLE_AUTO 2
  10. #include <owl/olefacto.h>
  11. #include <ocf/ocreg.h>
  12. ##OPT_DV_RESET
  13. ##OPT_DV_NEXT
  14. ##QUERY_DV_TDOCUMENT [[TDocument]]
  15. ##GetIncludeFile(\\"[[TDocument]]") [[DocIncludeFile]]
  16. #include [[DocIncludeFile]]
  17.  
  18. ##--BEGIN-- @OPT_APPL_REGISTRY || @OPT_APPL_MAIL
  19. ##@OPT_APPL_REGISTRY
  20. #include <classlib/cmdline.h>
  21. ##@OPT_APPL_MAIL
  22. #include <classlib/filename.h>
  23.  
  24. ##--END-- @OPT_APPL_REGISTRY || @OPT_APPL_MAIL
  25. ##QUERY_FILE_H [[FileName]]
  26. #include "[[FileName]]"
  27. ##<<TMDIClient QUERY_FILE_H [[FileName]]
  28. #include "[[FileName]]"
  29. ##<<TMDIChild QUERY_FILE_H [[FileName]]
  30. #include "[[FileName]]"
  31. ##OPT_DV_RESET
  32. ##OPT_DV_NEXT
  33. ##QUERY_DV_TVIEW [[WindowClient]]
  34. ##<<*WindowClient QUERY_FILE_H [[FileName]]
  35. #include "[[FileName]]"
  36. ##<<TDialog QUERY_FILE_H [[Filename]]
  37. #include "[[Filename]]"                        // Definition of about dialog.
  38.  
  39. ##--BEGIN-- @OPT_APPL_HELP
  40. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 3
  41. //
  42. // Generated help file.
  43. //
  44. ##@QUERY_APPL_HELP [[HelpFile]]
  45. const char HelpFileName[] = "[[HelpFile]].hlp";
  46.  
  47.  
  48. ##--END-- @OPT_APPL_HELP
  49. //{{[[TApplication]] Implementation}}
  50.  
  51.  
  52. ##--BEGIN-- @QUERY_APPL_OLE_AUTO
  53. //
  54. // OLE's ITypeInfo browses this symbol table for a list of all data,
  55. // properties, and methods exposed by this automated class.
  56. //
  57. ##@QUERY_APPL_OLE != VALUE_NOOLE
  58. DEFINE_AUTOAGGREGATE([[TApplication]], OcApp->Aggregate)
  59. ##@QUERY_APPL_OLE == VALUE_NOOLE
  60. DEFINE_AUTOCLASS([[TApplication]])
  61.   EXPOSE_APPLICATION([[TApplication]], "Application", "Application object", 0)
  62.   EXPOSE_QUIT("Quit", "Quit application", 0)
  63. //{{[[TApplication]]SYM_TBL_BEGIN}}
  64. //{{[[TApplication]]SYM_TBL_END}}
  65. ##@QUERY_APPL_OLE != VALUE_NOOLE
  66. END_AUTOAGGREGATE([[TApplication]], tfAppObject | tfCanCreate, "[[TApplication]]", 0, 0);
  67. ##@QUERY_APPL_OLE == VALUE_NOOLE
  68. END_AUTOCLASS([[TApplication]], tfAppObject | tfCanCreate, "[[TApplication]]", 0, 0);
  69.  
  70. ##--END-- @QUERY_APPL_OLE_AUTO
  71. ## ((@QUERY_APPL_OLE != VALUE_NOOLE) || @QUERY_APPL_OLE_AUTO) 2
  72. DEFINE_APP_DICTIONARY(AppDictionary);
  73.  
  74. ## ((@QUERY_APPL_OLE == VALUE_NOOLE) && @QUERY_APPL_OLE_AUTO)
  75. static TPointer<TRegistrar> Registrar;
  76. ## ((@QUERY_APPL_OLE != VALUE_NOOLE)
  77. static TPointer<TOcRegistrar> Registrar;
  78.  
  79. ##--BEGIN-- ((@QUERY_APPL_OLE != VALUE_NOOLE) || @QUERY_APPL_OLE_AUTO)
  80. REGISTRATION_FORMAT_BUFFER(200)
  81.  
  82. BEGIN_REGISTRATION(ApplicationReg)
  83. ##@QUERY_OLE_GUID [[GUID]]
  84.   REGDATA(clsid, "{[[GUID]]}")
  85. ##--BEGIN-- @QUERY_PRJ_NAME [[AppTitle]]
  86. ## ((@QUERY_APPL_OLE == VALUE_SERVER) || (@QUERY_APPL_OLE == VALUE_OLEBOTH) || @QUERY_APPL_OLE_AUTO) 2
  87.   REGDATA(appname, "[[AppTitle]] Server")
  88.   REGDATA(description, "[[AppTitle]] Server Application")
  89. ## ((@QUERY_APPL_OLE == VALUE_CONTAINER) && !@QUERY_APPL_OLE_AUTO) 2
  90.   REGDATA(appname, "[[AppTitle]] Container")
  91.   REGDATA(description, "[[AppTitle]] Container Application")
  92. ##@QUERY_APPL_OLE_AUTO
  93.   REGDATA(progid, "[[AppTitle]].Application.1")
  94. ##--END-- @QUERY_PRJ_NAME [[AppTitle]]
  95. ##@QUERY_APPL_OLE_AUTO
  96.   REGDATA(cmdline, "/Automation")
  97. ##!@QUERY_APPL_OLE_AUTO
  98.   REGDATA(cmdline, "")
  99. ## ((@QUERY_APPL_OLE == VALUE_SERVER) || (@QUERY_APPL_OLE == VALUE_OLEBOTH))
  100.   REGDATA(usage, ocrMultipleUse)
  101. ##--BEGIN-- @QUERY_APPL_OLE_AUTO
  102. //  REGDATA(debugger, "TDW")
  103. ##--END-- @QUERY_APPL_OLE_AUTO
  104. END_REGISTRATION
  105.  
  106. ##--END-- @QUERY_APPL_OLE != VALUE_NOOLE
  107. ##@QUERY_APPL_OLE != VALUE_NOOLE
  108. ##: {AddOleDV.SNP}
  109. ##*
  110. ##@QUERY_APPL_OLE == VALUE_NOOLE
  111. ##: {AddDocV.SNP}
  112. ##*
  113.  
  114.  
  115. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 3
  116. //
  117. // Build a response table for all messages/commands handled by the application.
  118. //
  119. ##@OPT_APPL_MRU
  120. DEFINE_RESPONSE_TABLE2([[TApplication]], TRecentFiles, TApplication)
  121. ##!@OPT_APPL_MRU
  122. DEFINE_RESPONSE_TABLE1([[TApplication]], TApplication)
  123. //{{[[TApplication]]RSP_TBL_BEGIN}}
  124.   EV_OWLVIEW(dnCreate, EvNewView),
  125.   EV_OWLVIEW(dnClose,  EvCloseView),
  126. ##--BEGIN-- @OPT_APPL_MAIL
  127. ##:DBResponse(\\"[[TApplication]]", "CM_FILESEND", "CmFileSend", "", "COMMAND")
  128.   EV_COMMAND(CM_FILESEND, CmFileSend),
  129. ##:DBResponse(\\"[[TApplication]]", "CM_FILESEND", "CeFileSend", "", "ENABLER")
  130.   EV_COMMAND_ENABLE(CM_FILESEND, CeFileSend),
  131. ##--END-- @OPT_APPL_MAIL
  132. ##:DBResponse(\\"[[TApplication]]", "CM_HELPABOUT", "CmHelpAbout", "", "COMMAND")
  133.   EV_COMMAND(CM_HELPABOUT, CmHelpAbout),
  134. ##@OPT_APPL_HELP 2
  135. ##:DBResponse(\\"[[TApplication]]", "CM_HELPCONTENTS", "CmHelpContents", "", "COMMAND")
  136. ##:DBResponse(\\"[[TApplication]]", "CM_HELPUSING", "CmHelpUsing", "", "COMMAND")
  137.   EV_COMMAND(CM_HELPCONTENTS, CmHelpContents),
  138.   EV_COMMAND(CM_HELPUSING, CmHelpUsing),
  139. ##@OPT_APPL_DRAGDROP
  140. ##:DBResponse(\\"[[TApplication]]", "", "", "WM_DROPFILES", "")
  141.   EV_WM_DROPFILES,
  142. ##@OPT_APPL_PRINTING
  143. ##:DBResponse(\\"[[TApplication]]", "", "", "WM_WININICHANGE", "")
  144.   EV_WM_WININICHANGE,
  145. ##--BEGIN-- @OPT_APPL_MRU
  146.   EV_OWLDOCUMENT(dnCreate, EvOwlDocument),
  147.   EV_OWLDOCUMENT(dnRename, EvOwlDocument),
  148.   EV_REGISTERED(MruFileMessage, CmFileSelected),
  149. ##--END-- @OPT_APPL_MRU
  150. //{{[[TApplication]]RSP_TBL_END}}
  151. END_RESPONSE_TABLE;
  152.  
  153.  
  154. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  155. //--------------------------------------------------------
  156. // [[TApplication]]
  157. // ~~~~~
  158. //
  159. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  160. ##--BEGIN-- ((@QUERY_APPL_OLE != VALUE_NOOLE) || (@QUERY_APPL_OLE_AUTO))
  161. ##QUERY_WIND_TITLE [[Title]]
  162. ##@QUERY_TARGET_NAME [[Target]]
  163. ##@OPT_APPL_MRU
  164. [[TApplication]]::[[TApplication]]() : TApplication(::ApplicationReg["appname"], ::Module, &::AppDictionary), TRecentFiles(".\\[[Target]].ini", 4)
  165. ##!@OPT_APPL_MRU
  166. [[TApplication]]::[[TApplication]]() : TApplication(::ApplicationReg["appname"], ::Module, &::AppDictionary)
  167. ##--END-- ((@QUERY_APPL_OLE != VALUE_NOOLE) || (@QUERY_APPL_OLE_AUTO))
  168. ##--BEGIN-- ((@QUERY_APPL_OLE == VALUE_NOOLE) && (!@QUERY_APPL_OLE_AUTO))
  169. ##QUERY_WIND_TITLE [[Title]]
  170. ##@QUERY_TARGET_NAME [[Target]]
  171. ##@OPT_APPL_MRU
  172. [[TApplication]]::[[TApplication]]() : TApplication("[[Title]]"), TRecentFiles(".\\[[Target]].ini", 4)
  173. ##QUERY_WIND_TITLE [[Title]]
  174. ##!@OPT_APPL_MRU
  175. [[TApplication]]::[[TApplication]]() : TApplication("[[Title]]")
  176. ##--END-- ((@QUERY_APPL_OLE == VALUE_NOOLE) && (!@QUERY_APPL_OLE_AUTO))
  177. {
  178. ##@OPT_APPL_HELP 4
  179.   HelpState = false;
  180.   ContextHelp = false;
  181.   HelpCursor = 0;
  182.  
  183. ##@OPT_APPL_PRINTING 3
  184.   Printer = 0;
  185.   Printing = 0;
  186.  
  187.   SetDocManager(new TDocManager(dmMDI, this));
  188.  
  189. ##@OPT_APPL_MAIL 2
  190.   ApxMail = new TMailer();
  191.  
  192.   // INSERT>> Your constructor code here.
  193. }
  194.  
  195.  
  196. [[TApplication]]::~[[TApplication]]()
  197. {
  198. ##@OPT_APPL_PRINTING 2
  199.   delete Printer;
  200.  
  201. ##@OPT_APPL_MAIL 2
  202.   delete ApxMail;
  203.  
  204.   // INSERT>> Your destructor code here.
  205. }
  206.  
  207.  
  208. ##--BEGIN-- @OPT_APPL_HELP
  209. bool [[TApplication]]::CanClose()
  210. {
  211.   bool result = TApplication::CanClose();
  212.  
  213. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  214.   // Close the help engine if we used it.
  215.   //
  216.   if (result && HelpState)
  217.     GetMainWindow()->WinHelp(HelpFileName, HELP_QUIT, 0);
  218.  
  219.   return result;
  220. }
  221.  
  222.  
  223. ##--END-- @OPT_APPL_HELP
  224. ##--BEGIN-- @OPT_APPL_TOOLBAR
  225. ##@QUERY_APPL_OLE == VALUE_NOOLE
  226. void [[TApplication]]::CreateGadgets(TDockableControlBar* cb, bool server)
  227. ##@QUERY_APPL_OLE != VALUE_NOOLE
  228. void [[TApplication]]::CreateGadgets(TControlBar* cb, bool server)
  229. {
  230.   if (!server) {
  231.     cb->Insert(*new TButtonGadget(CM_MDIFILENEW, CM_MDIFILENEW));
  232.     cb->Insert(*new TButtonGadget(CM_MDIFILEOPEN, CM_MDIFILEOPEN));
  233.     cb->Insert(*new TButtonGadget(CM_FILESAVE, CM_FILESAVE));
  234.     cb->Insert(*new TSeparatorGadget(6));
  235.   }
  236.  
  237.   cb->Insert(*new TButtonGadget(CM_EDITCUT, CM_EDITCUT));
  238.   cb->Insert(*new TButtonGadget(CM_EDITCOPY, CM_EDITCOPY));
  239.   cb->Insert(*new TButtonGadget(CM_EDITPASTE, CM_EDITPASTE));
  240.   cb->Insert(*new TSeparatorGadget(6));
  241.   cb->Insert(*new TButtonGadget(CM_EDITUNDO, CM_EDITUNDO));
  242.   cb->Insert(*new TSeparatorGadget(6));
  243.   cb->Insert(*new TButtonGadget(CM_EDITFIND, CM_EDITFIND));
  244.   cb->Insert(*new TButtonGadget(CM_EDITFINDNEXT, CM_EDITFINDNEXT));
  245. ##--BEGIN-- @OPT_APPL_PRINTING
  246.  
  247.   if (!server) {
  248.     cb->Insert(*new TSeparatorGadget(6));
  249.     cb->Insert(*new TButtonGadget(CM_FILEPRINT, CM_FILEPRINT));
  250.     cb->Insert(*new TButtonGadget(CM_FILEPRINTPREVIEW, CM_FILEPRINTPREVIEW));
  251.   }
  252. ##--END-- @OPT_APPL_PRINTING
  253. ##@OPT_APPL_HELP 3
  254.  
  255.   cb->Insert(*new TSeparatorGadget(6));
  256.   cb->Insert(*new TButtonGadget(CM_HELPCONTENTS, CM_HELPCONTENTS));
  257.  
  258. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  259.   // Add caption and fly-over help hints.
  260.   //
  261.   cb->SetCaption("Toolbar");
  262.   cb->SetHintMode(TGadgetWindow::EnterHints);
  263. }
  264.  
  265.  
  266. ##@QUERY_APPL_OLE == VALUE_NOOLE
  267. void [[TApplication]]::SetupSpeedBar(TDecoratedMDIFrame* frame)
  268. ##@QUERY_APPL_OLE != VALUE_NOOLE
  269. void [[TApplication]]::SetupSpeedBar(TOleMDIFrame* frame)
  270. {
  271. ##@QUERY_APPL_OLE == VALUE_NOOLE 2
  272.   ApxHarbor = new THarbor(*frame);
  273.  
  274. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  275.   // Create default toolbar New and associate toolbar buttons with commands.
  276.   //
  277. ##@QUERY_APPL_OLE == VALUE_NOOLE
  278.   TDockableControlBar* cb = new TDockableControlBar(frame);
  279. ##@QUERY_APPL_OLE != VALUE_NOOLE
  280.   TControlBar* cb = new TControlBar(frame);
  281.   CreateGadgets(cb);
  282.  
  283. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  284.   // Setup the toolbar ID used by OLE 2 for toolbar negotiation.
  285.   //
  286.   cb->Attr.Id = IDW_TOOLBAR;
  287.  
  288. ##@QUERY_APPL_OLE == VALUE_NOOLE
  289.   ApxHarbor->Insert(*cb, alTop);
  290. ##@QUERY_APPL_OLE != VALUE_NOOLE
  291.   frame->Insert(*cb, TDecoratedFrame::Top);
  292. }
  293.  
  294.  
  295. ##--END-- @OPT_APPL_TOOLBAR
  296. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  297. //--------------------------------------------------------
  298. // [[TApplication]]
  299. // ~~~~~
  300. // Application main window construction & intialization.
  301. //
  302. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  303. void [[TApplication]]::InitMainWindow()
  304. {
  305.   if (nCmdShow != SW_HIDE)
  306. ##@QUERY_APPL_STARTUP == VALUE_NORMAL
  307.     nCmdShow = (nCmdShow != SW_SHOWMINNOACTIVE) ? SW_SHOWNORMAL : nCmdShow;
  308. ##@QUERY_APPL_STARTUP == VALUE_MIN
  309.     nCmdShow = (nCmdShow != SW_SHOWMINNOACTIVE) ? SW_SHOWMINIMIZED : nCmdShow;
  310. ##@QUERY_APPL_STARTUP == VALUE_MAX
  311.     nCmdShow = (nCmdShow != SW_SHOWMINNOACTIVE) ? SW_SHOWMAXIMIZED : nCmdShow;
  312.  
  313. ##<<TMDIClient QUERY_CLASS_NAME [[TMDIClient]]
  314.   MdiClient = new [[TMDIClient]](this);
  315. ##@OPT_APPL_STATUSBAR 2
  316. ##@QUERY_APPL_OLE != VALUE_NOOLE
  317.   TOleMDIFrame* frame = new TOleMDIFrame(Name, IDM_MDI, *MdiClient, true, this);
  318. ##@QUERY_APPL_OLE == VALUE_NOOLE
  319.   TDecoratedMDIFrame* frame = new TDecoratedMDIFrame(Name, IDM_MDI, *MdiClient, true, this);
  320. ##!@OPT_APPL_STATUSBAR 2
  321. ##@QUERY_APPL_OLE != VALUE_NOOLE
  322.   TOleMDIFrame* frame = new TOleMDIFrame(Name, IDM_MDI, *MdiClient, false, this);
  323. ##@QUERY_APPL_OLE == VALUE_NOOLE
  324.   TDecoratedMDIFrame* frame = new TDecoratedMDIFrame(Name, IDM_MDI, *MdiClient, false, this);
  325.  
  326. ##QUERY_WIND_STYLE [[StyleAttributes]]
  327. ##StyleAttributes != "" 4
  328.   // Override the default window style for the main window.
  329.   //
  330.   [[StyleAttributes]]
  331.  
  332. ##@OPT_APPL_DRAGDROP 4
  333.   // Enable acceptance of dropped files
  334.   //
  335.   frame->Attr.ExStyle |= WS_EX_ACCEPTFILES;
  336.  
  337. ##{fwndbkgd.snp}
  338. ##--BEGIN-- ((@QUERY_APPL_OLE != VALUE_SERVER) && (@QUERY_APPL_OLE != VALUE_OLEBOTH))
  339. ##@QUERY_APPL_STARTUP == VALUE_NORMAL
  340.   nCmdShow = (nCmdShow != SW_SHOWMINNOACTIVE) ? SW_SHOWNORMAL : nCmdShow;
  341. ##@QUERY_APPL_STARTUP == VALUE_MIN
  342.   nCmdShow = (nCmdShow != SW_SHOWMINNOACTIVE) ? SW_SHOWMINIMIZED : nCmdShow;
  343. ##@QUERY_APPL_STARTUP == VALUE_MAX
  344.   nCmdShow = (nCmdShow != SW_SHOWMINNOACTIVE) ? SW_SHOWMAXIMIZED : nCmdShow;
  345.  
  346. ##--END-- ((@QUERY_APPL_OLE != VALUE_SERVER) && (@QUERY_APPL_OLE != VALUE_OLEBOTH))
  347. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  348.   // Assign icons for this application.
  349.   //
  350.   frame->SetIcon(this, IDI_MDIAPPLICATION);
  351.   frame->SetIconSm(this, IDI_MDIAPPLICATION);
  352.  
  353. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  354.   // Associate with the accelerator table.
  355.   //
  356.   frame->Attr.AccelTable = IDM_MDI;
  357.  
  358. ##@OPT_APPL_STATUSBAR 6
  359.   TStatusBar* sb = new TStatusBar(frame, TGadget::Recessed,
  360.                                   TStatusBar::CapsLock        |
  361.                                   TStatusBar::NumLock         |
  362.                                   TStatusBar::ScrollLock);
  363.   frame->Insert(*sb, TDecoratedFrame::Bottom);
  364.  
  365. ##@OPT_APPL_TOOLBAR 2
  366.   SetupSpeedBar(frame);
  367.  
  368.   SetMainWindow(frame);
  369.  
  370.   frame->SetMenuDescr(TMenuDescr(IDM_MDI));
  371.  
  372. ##--BEGIN-- @QUERY_APPL_CONTROL==VALUE_3D
  373. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  374.   // Windows 3-D controls.
  375.   //
  376.   EnableCtl3d(true);
  377. ##--END-- @QUERY_APPL_CONTROL==VALUE_3D
  378. ##--BEGIN-- @QUERY_APPL_CONTROL==VALUE_BWCC
  379. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  380.   // Borland Windows custom controls.
  381.   //
  382.   EnableBWCC();
  383. ##--END-- @QUERY_APPL_CONTROL==VALUE_BWCC
  384. }
  385.  
  386.  
  387. ##--BEGIN-- @OPT_APPL_REGISTRY
  388. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  389. //--------------------------------------------------------
  390. // [[TApplication]]
  391. // ~~~~~
  392. // Application instance initialization.
  393. //
  394. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  395. void [[TApplication]]::InitInstance()
  396. {
  397.   TApplication::InitInstance();
  398.  
  399.   ProcessCmdLine(lpCmdLine);
  400. }
  401.  
  402.  
  403. ##--END-- @OPT_APPL_REGISTRY
  404. ##{registry.snp}
  405. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  406. //--------------------------------------------------------
  407. // [[TApplication]]
  408. // ~~~~~
  409. // Response Table handlers:
  410. //
  411. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  412. void [[TApplication]]::EvNewView(TView& view)
  413. {
  414. ##--BEGIN-- ((@QUERY_APPL_OLE == VALUE_SERVER) || (@QUERY_APPL_OLE == VALUE_OLEBOTH))
  415.   TOleView* ov = TYPESAFE_DOWNCAST(&view, TOleView);
  416.  
  417.   // If  we're embedded and we're opening out of place then don't create the child window.
  418.   //
  419.   if (view.GetDocument().IsEmbedded() && ov && !ov->IsOpenEditing()) {
  420.     TWindow* vw = view.GetWindow();
  421.     vw->SetParent(TYPESAFE_DOWNCAST(GetMainWindow(), TOleFrame)->GetRemViewBucket());
  422.     vw->Create();
  423.   }
  424.   else {
  425.     TMDIClient* mdiClient = TYPESAFE_DOWNCAST(GetMainWindow()->GetClientWindow(), TMDIClient);
  426.     if (mdiClient) {
  427. ##<<TMDIChild QUERY_CLASS_NAME [[TMDIChild]]
  428.       [[TMDIChild]]* child = new [[TMDIChild]](*mdiClient, 0, 0);
  429.  
  430. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  431.       // Assign icons for this child window.
  432.       //
  433.       child->SetIcon(this, IDI_DOC);
  434.       child->SetIconSm(this, IDI_DOC);
  435.  
  436. ##@QUERY_APPL_OLE != VALUE_NOOLE 3
  437.       if (view.GetViewMenu())
  438.         child->SetMenuDescr(*view.GetViewMenu());
  439.  
  440.       child->Create();
  441.       child->SetClientWindow(view.GetWindow());
  442.     }
  443.   }
  444.  
  445.   if (!ov || !ov->GetOcRemView())
  446.     OcApp->SetOption(amEmbedding, false);
  447. ##--END-- ((@QUERY_APPL_OLE == VALUE_SERVER) || (@QUERY_APPL_OLE == VALUE_OLEBOTH))
  448. ##--BEGIN-- ((@QUERY_APPL_OLE != VALUE_SERVER) && (@QUERY_APPL_OLE != VALUE_OLEBOTH))
  449.   TMDIClient* mdiClient = TYPESAFE_DOWNCAST(GetMainWindow()->GetClientWindow(), TMDIClient);
  450.   if (mdiClient) {
  451. ##<<TMDIChild QUERY_CLASS_NAME [[TMDIChild]]
  452.     [[TMDIChild]]* child = new [[TMDIChild]](*mdiClient, 0, view.GetWindow());
  453.  
  454. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  455.     // Set the menu descriptor for this view.
  456.     //
  457.     if (view.GetViewMenu())
  458.       child->SetMenuDescr(*view.GetViewMenu());
  459.  
  460. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  461.     // Assign icons with this child window.
  462.     //
  463.     child->SetIcon(this, IDI_DOC);
  464.     child->SetIconSm(this, IDI_DOC);
  465.  
  466. ##@QUERY_APPL_OLE != VALUE_NOOLE 3
  467.     if (view.GetViewMenu())
  468.       child->SetMenuDescr(*view.GetViewMenu());
  469.  
  470.     child->Create();
  471.   }
  472. ##--END-- ((@QUERY_APPL_OLE != VALUE_SERVER) && (@QUERY_APPL_OLE != VALUE_OLEBOTH))
  473. }
  474.  
  475.  
  476. void [[TApplication]]::EvCloseView(TView&)
  477. {
  478. }
  479. ##--BEGIN-- @OPT_APPL_MAIL
  480.  
  481.  
  482. void [[TApplication]]::CeFileSend(TCommandEnabler& ce)
  483. {
  484.   ce.Enable((GetDocManager()->GetCurrentDoc() != 0)
  485.             && ApxMail->IsMAPIAvailable());
  486. }
  487.  
  488.  
  489. void [[TApplication]]::CmFileSend ()
  490. {
  491.   // Check to see if a document exists
  492.   //
  493.   TDocument* currentDoc = GetDocManager()->GetCurrentDoc();
  494.  
  495.   if (currentDoc) {
  496.     TAPointer<char> savedPath = new char[_MAX_PATH];
  497.     TAPointer<char> docName = new char[_MAX_PATH];
  498.  
  499.     bool dirtyState = currentDoc->IsDirty();
  500.  
  501.     if (currentDoc->GetDocPath())
  502.       strcpy(savedPath, currentDoc->GetDocPath());
  503.     else
  504.       strcpy(savedPath, "");
  505.  
  506.     if (currentDoc->GetTitle())
  507.       strcpy(docName, currentDoc->GetTitle());
  508.     else
  509.       strcpy(docName, "Document");
  510.  
  511.     TFileName tempFile(TFileName::TempFile);
  512.  
  513.     currentDoc->SetDocPath(tempFile.Canonical().c_str());
  514.     currentDoc->Commit(true);
  515.  
  516.     currentDoc->SetDocPath(savedPath);
  517.     currentDoc->SetDirty(dirtyState);
  518.  
  519.     ApxMail->SendDocuments(GetMainWindow(), tempFile.Canonical().c_str(), docName, false);
  520.  
  521.     tempFile.Remove();
  522.   }
  523. }
  524. ##--END-- @OPT_APPL_MAIL
  525. ##--BEGIN-- @OPT_APPL_HELP
  526.  
  527.  
  528. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  529. //--------------------------------------------------------
  530. // [[TApplication]]
  531. // ~~~~~
  532. // Menu Help Contents command
  533. //
  534. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  535. void [[TApplication]]::CmHelpContents()
  536. {
  537. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  538.   // Show the help table of contents.
  539.   //
  540.   HelpState = GetMainWindow()->WinHelp(HelpFileName, HELP_CONTENTS, 0);
  541. }
  542.  
  543.  
  544. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  545. //--------------------------------------------------------
  546. // [[TApplication]]
  547. // ~~~~~
  548. // Menu Help Using Help command
  549. //
  550. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  551. void [[TApplication]]::CmHelpUsing()
  552. {
  553. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  554.   // Display the contents of the Windows help file.
  555.   //
  556.   HelpState = GetMainWindow()->WinHelp(HelpFileName, HELP_HELPONHELP, 0);
  557. }
  558. ##--END-- @OPT_APPL_HELP
  559.  
  560.  
  561. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  562. //--------------------------------------------------------
  563. // [[TApplication]]
  564. // ~~~~~~~~~~~
  565. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  566. ##@QUERY_TARGET_NAME [[Target]]
  567. // Menu Help About [[Target]] command
  568. void [[TApplication]]::CmHelpAbout()
  569. {
  570. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  571.   // Show the modal dialog.
  572.   //
  573. ##--BEGIN-- <<TDialog QUERY_CLASS_NAME [[TDialog]]
  574. ## ((@QUERY_APPL_OLE == VALUE_SERVER) || (@QUERY_APPL_OLE == VALUE_OLEBOTH))
  575.   [[TDialog]](&TWindow(::GetFocus(), this)).Execute();
  576. ## ((@QUERY_APPL_OLE != VALUE_SERVER) && (@QUERY_APPL_OLE != VALUE_OLEBOTH))
  577.   [[TDialog]](GetMainWindow()).Execute();
  578. ##--END-- <<TDialog QUERY_CLASS_NAME [[TDialog]]
  579. }
  580. ##--BEGIN-- @OPT_APPL_DRAGDROP
  581.  
  582.  
  583. void [[TApplication]]::EvDropFiles(TDropInfo drop)
  584. {
  585.   TFileDropletList files;
  586.  
  587. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 3
  588.   // Iterate thru the entries in drop and create FileDrops objects for each
  589.   // one.
  590.   //
  591.   int fileCount = drop.DragQueryFileCount();  // Number of files dropped.
  592.   for (int i = 0; i < fileCount; i++)
  593.     files.Add(new TFileDroplet(drop, i));
  594.  
  595. ##:@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  596.   // Open the files that were dropped.
  597.   //
  598.   AddFiles(files);
  599.  
  600. ##:@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  601.   // Release the memory allocated for this handle with DragFinish.
  602.   //
  603.   drop.DragFinish();
  604. }
  605.  
  606.  
  607. void [[TApplication]]::AddFiles(TFileDropletList& files)
  608. {
  609. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  610.   // Open all files dragged in.
  611.   //
  612.   for (TFileDropletListIter fileIter(files); fileIter; fileIter++) {
  613.     TDocTemplate* tpl = GetDocManager()->MatchTemplate(fileIter.Current()->GetName());
  614.     if (tpl)
  615.       GetDocManager()->CreateDoc(tpl, fileIter.Current()->GetName());
  616.   }
  617. }
  618. ##--END-- @OPT_APPL_DRAGDROP
  619. ##--BEGIN-- @OPT_APPL_MRU
  620.  
  621.  
  622. void [[TApplication]]::EvOwlDocument(TDocument& doc)
  623. {
  624.   if (doc.GetDocPath())
  625.     SaveMenuChoice(doc.GetDocPath());
  626. }
  627.  
  628.  
  629. int32 [[TApplication]]::CmFileSelected(uint wp, int32)
  630. {
  631.   TAPointer<char> text = new char[_MAX_PATH];
  632.  
  633.   GetMenuText(wp, text, _MAX_PATH);
  634.   TDocTemplate* tpl = GetDocManager()->MatchTemplate(text);
  635.   if (tpl)
  636.     GetDocManager()->CreateDoc(tpl, text);
  637.   return 0;
  638. }
  639. ##--END-- @OPT_APPL_MRU
  640.  
  641.  
  642. ##{main.owl}
  643.