home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1998 May / Pcwk5b98.iso / Borland / Cplus45 / BC45 / EXPERT.PAK / CSDI.OWL < prev    next >
Text File  |  1995-08-29  |  25KB  |  698 lines

  1. ##{cheader.snp}
  2. #include <owl\owlpch.h>
  3. #pragma hdrstop
  4.  
  5. ##@OPT_APPL_DRAGDROP 2
  6. #include <dir.h>
  7.  
  8. ##--BEGIN-- !@OPT_APPL_DRAGDROP
  9. ##:     QUERY_WIND_CLIENT [[Client]]
  10. ##:     <<*Client QUERY_BASE_NAME [[BaseClient]]
  11. ##:     BaseClient == "TListBox"
  12. #include <dir.h>
  13.  
  14. ##--END-- !@OPT_APPL_DRAGDROP
  15. ##QUERY_FILE_H [[FileName]]
  16. #include "[[FileName]]"
  17. ##QUERY_WIND_CLIENT [[Client]]
  18. ##<<*Client QUERY_FILE_H [[Filename]]
  19. #include "[[Filename]]"                        // Definition of client class.       
  20. ##--BEGIN-- ((@QUERY_APPL_MODEL != VALUE_DIALOG) || ((@QUERY_APPL_MODEL == VALUE_DIALOG) && @QUERY_APPL_DLGCLIENT_MENU))
  21. ##      :<<TDialog QUERY_FILE_H [[Filename]]
  22. #include "[[Filename]]"                        // Definition of about dialog.       
  23. ##--END-- ((@QUERY_APPL_MODEL != VALUE_DIALOG) || ((@QUERY_APPL_MODEL == VALUE_DIALOG) && @QUERY_APPL_DLGCLIENT_MENU))
  24.  
  25.  
  26. ##--BEGIN-- @OPT_APPL_HELP
  27. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  28. //
  29. // Generated help file.
  30. //
  31. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  32. ##@QUERY_APPL_HELP [[HelpFile]]
  33. const char HelpFileName[] = "[[HelpFile]].hlp";
  34.  
  35.  
  36. ##--END-- @OPT_APPL_HELP
  37. ##{cdragdrp.owl}
  38. //{{[[TApplication]] Implementation}}
  39.  
  40.  
  41. ##--BEGIN-- @QUERY_APPL_OLE_AUTO 
  42. //
  43. // OLE's ITypeInfo browses this symbol table for a list of all data,
  44. // properties, and methods exposed by this automated class.
  45. //
  46. DEFINE_AUTOCLASS([[TApplication]])
  47.     EXPOSE_APPLICATION([[TApplication]], "Application", "Application object", 0)
  48.     EXPOSE_QUIT("Quit", "Quit application", 0)
  49. //{{[[TApplication]]SYM_TBL_BEGIN}}
  50. //{{[[TApplication]]SYM_TBL_END}}
  51. END_AUTOCLASS([[TApplication]], tfAppObject | tfCanCreate, "[[TApplication]]", 0, 0);
  52.  
  53.  
  54. DEFINE_APP_DICTIONARY(AppDictionary);
  55. static TPointer<TRegistrar> Registrar;
  56.  
  57. REGISTRATION_FORMAT_BUFFER(100)
  58.  
  59. BEGIN_REGISTRATION(ApplicationReg)
  60. ##@QUERY_OLE_GUID [[GUID]]
  61.     REGDATA(clsid, "{[[GUID]]}")
  62. ##--BEGIN-- @QUERY_PRJ_NAME [[AppTitle]]
  63.     REGDATA(progid, "[[AppTitle]].Application.1")
  64.     REGDATA(appname, "[[AppTitle]] Server")
  65.     REGDATA(description, "[[AppTitle]] Server Application")
  66.     REGDATA(cmdline, "/Automation")
  67. //    REGDATA(debugger, "TDW")
  68. ##--END-- @QUERY_PRJ_NAME [[AppTitle]]
  69. END_REGISTRATION
  70.  
  71.  
  72. ##--END-- @QUERY_APPL_OLE_AUTO 
  73. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  74. //
  75. // Build a response table for all messages/commands handled
  76. // by the application.
  77. //
  78. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  79. DEFINE_RESPONSE_TABLE1([[TApplication]], TApplication)
  80. //{{[[TApplication]]RSP_TBL_BEGIN}}
  81. ##--BEGIN-- @QUERY_APPL_MODEL != VALUE_DIALOG
  82. ##:DBResponse(\\"[[TApplication]]", "CM_FILENEW", "CmFileNew", "", "COMMAND")
  83. ##:DBResponse(\\"[[TApplication]]", "CM_FILEOPEN", "CmFileOpen", "", "COMMAND")
  84.     EV_COMMAND(CM_FILENEW, CmFileNew),
  85.     EV_COMMAND(CM_FILEOPEN, CmFileOpen),
  86. ##@OPT_APPL_PRINTING 6
  87. ##:DBResponse(\\"[[TApplication]]", "CM_FILEPRINT", "CmFilePrint", "", "COMMAND")
  88. ##:DBResponse(\\"[[TApplication]]", "CM_FILEPRINTERSETUP", "CmFilePrintSetup", "", "COMMAND")
  89. ##:DBResponse(\\"[[TApplication]]", "CM_FILEPRINTPREVIEW", "CmFilePrintPreview", "", "COMMAND")
  90. ##:DBResponse(\\"[[TApplication]]", "CM_FILEPRINT", "CmPrintEnable", "", "ENABLER")
  91. ##:DBResponse(\\"[[TApplication]]", "CM_FILEPRINTERSETUP", "CmPrintEnable", "", "ENABLER")
  92. ##:DBResponse(\\"[[TApplication]]", "CM_FILEPRINTPREVIEW", "CmPrintEnable", "", "ENABLER")
  93.     EV_COMMAND(CM_FILEPRINT, CmFilePrint),
  94.     EV_COMMAND(CM_FILEPRINTERSETUP, CmFilePrintSetup),
  95.     EV_COMMAND(CM_FILEPRINTPREVIEW, CmFilePrintPreview),
  96.     EV_COMMAND_ENABLE(CM_FILEPRINT, CmPrintEnable),
  97.     EV_COMMAND_ENABLE(CM_FILEPRINTERSETUP, CmPrintEnable),
  98.     EV_COMMAND_ENABLE(CM_FILEPRINTPREVIEW, CmPrintEnable),
  99. ##--END-- @QUERY_APPL_MODEL != VALUE_DIALOG
  100. ##@OPT_APPL_HELP 2
  101. ##:DBResponse(\\"[[TApplication]]", "CM_HELPCONTENTS", "CmHelpContents", "", "COMMAND")
  102. ##:DBResponse(\\"[[TApplication]]", "CM_HELPUSING", "CmHelpUsing", "", "COMMAND")
  103.     EV_COMMAND(CM_HELPCONTENTS, CmHelpContents),
  104.     EV_COMMAND(CM_HELPUSING, CmHelpUsing),
  105. ##:DBResponse(\\"[[TApplication]]", "CM_HELPABOUT", "CmHelpAbout", "", "COMMAND")
  106.     EV_COMMAND(CM_HELPABOUT, CmHelpAbout),
  107. ##@OPT_APPL_DRAGDROP
  108. ##:DBResponse(\\"[[TApplication]]", "", "", "WM_DROPFILES", "")
  109.     EV_WM_DROPFILES,
  110. ##@OPT_APPL_PRINTING
  111. ##:DBResponse(\\"[[TApplication]]", "", "", "WM_WININICHANGE", "")
  112.     EV_WM_WININICHANGE,
  113. //{{[[TApplication]]RSP_TBL_END}}
  114. END_RESPONSE_TABLE;
  115.  
  116.  
  117. ##--END-- (@QUERY_APPL_MODEL == VALUE_SDI) && !@OPT_APPL_DOCVIEW
  118. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  119. //////////////////////////////////////////////////////////
  120. // [[TApplication]]
  121. // =====
  122. //
  123. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  124. ##@QUERY_APPL_OLE_AUTO
  125. [[TApplication]]::[[TApplication]] () : TApplication(::ApplicationReg["appname"], ::Module, &::AppDictionary)
  126. ##!@QUERY_APPL_OLE_AUTO
  127. ##QUERY_WIND_TITLE [[Title]]
  128. [[TApplication]]::[[TApplication]] () : TApplication("[[Title]]")
  129. {
  130. ##@OPT_APPL_HELP 3
  131.     HelpState = false;
  132.     ContextHelp = false;
  133.     HelpCursor = 0;
  134.  
  135. ##@OPT_APPL_PRINTING 3
  136.     Printer = 0;
  137.     Printing = 0;
  138.  
  139. ##--BEGIN-- @QUERY_APPL_MODEL != VALUE_DIALOG
  140. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  141.     // Common file file flags and filters for Open/Save As dialogs.  Filename and directory are
  142.     // computed in the member functions CmFileOpen, and CmFileSaveAs.
  143.     FileData.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;
  144. ##OPT_DV_RESET
  145. ##OPT_DV_NEXT
  146. ##QUERY_DV_DESCR [[Descr]]
  147. ##--BEGIN-- QUERY_DV_FILTER [[Filter]]
  148. ##(Filter != "*.*") && (Descr != "All Files (*.*)"
  149.     FileData.SetFilter("[[Descr]]|[[Filter]]|All Files (*.*)|*.*|");
  150. ##(Filter == "*.*") && (Descr == "All Files (*.*)"
  151.     FileData.SetFilter("All Files (*.*)|*.*|");
  152.  
  153. ##--END-- QUERY_DV_FILTER [[Filter]]
  154. ##--END-- @QUERY_APPL_MODEL != VALUE_DIALOG
  155.     // INSERT>> Your constructor code here.
  156. }
  157.  
  158.  
  159. [[TApplication]]::~[[TApplication]] ()
  160. {
  161. ##@OPT_APPL_PRINTING 3
  162.     if (Printer)
  163.         delete Printer;
  164.  
  165.     // INSERT>> Your destructor code here.
  166. }
  167.  
  168.  
  169. ##--BEGIN-- @OPT_APPL_HELP
  170. bool [[TApplication]]::CanClose ()
  171. {
  172.     bool result = TApplication::CanClose();
  173.  
  174. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  175.     //
  176.     // Close the help engine if we used it.
  177.     //
  178. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  179.     if (result && HelpState)
  180.         GetMainWindow()->WinHelp(HelpFileName, HELP_QUIT, 0L);
  181.  
  182.     return result;
  183. }
  184.  
  185.  
  186. ##--END-- @OPT_APPL_HELP
  187. ##(((@QUERY_APPL_MODEL == VALUE_DIALOG) && @QUERY_APPL_DLGCLIENT_MENU) || (@QUERY_APPL_MODEL != VALUE_DIALOG))
  188. ##--BEGIN-- @OPT_APPL_TOOLBAR
  189. void [[TApplication]]::SetupSpeedBar (TDecoratedFrame *frame)
  190. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  191.     //
  192.     // Create default toolbar New and associate toolbar buttons with commands.
  193.     //   
  194. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  195.     TControlBar* cb = new TControlBar(frame);
  196. ##@QUERY_APPL_MODEL == VALUE_SDI 2
  197.     cb->Insert(*new TButtonGadget(CM_FILENEW, CM_FILENEW));
  198.     cb->Insert(*new TButtonGadget(CM_FILEOPEN, CM_FILEOPEN));
  199.     cb->Insert(*new TButtonGadget(CM_FILESAVE, CM_FILESAVE));
  200.     cb->Insert(*new TSeparatorGadget(6));
  201.     cb->Insert(*new TButtonGadget(CM_EDITCUT, CM_EDITCUT));
  202.     cb->Insert(*new TButtonGadget(CM_EDITCOPY, CM_EDITCOPY));
  203.     cb->Insert(*new TButtonGadget(CM_EDITPASTE, CM_EDITPASTE));
  204.     cb->Insert(*new TSeparatorGadget(6));
  205.     cb->Insert(*new TButtonGadget(CM_EDITUNDO, CM_EDITUNDO));
  206.     cb->Insert(*new TSeparatorGadget(6));
  207.     cb->Insert(*new TButtonGadget(CM_EDITFIND, CM_EDITFIND));
  208.     cb->Insert(*new TButtonGadget(CM_EDITFINDNEXT, CM_EDITFINDNEXT));
  209. ##@OPT_APPL_PRINTING 3
  210.     cb->Insert(*new TSeparatorGadget(6));
  211.     cb->Insert(*new TButtonGadget(CM_FILEPRINT, CM_FILEPRINT));
  212.     cb->Insert(*new TButtonGadget(CM_FILEPRINTPREVIEW, CM_FILEPRINTPREVIEW));
  213. ##@OPT_APPL_HELP 2
  214.     cb->Insert(*new TSeparatorGadget(6));
  215.     cb->Insert(*new TButtonGadget(CM_HELPCONTENTS, CM_HELPCONTENTS));
  216.  
  217. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE
  218.     // Add fly-over help hints.
  219.     cb->SetHintMode(TGadgetWindow::EnterHints);
  220.  
  221.     frame->Insert(*cb, TDecoratedFrame::Top);
  222. }
  223.  
  224.  
  225. ##--END-- @OPT_APPL_TOOLBAR
  226. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  227. //////////////////////////////////////////////////////////
  228. // [[TApplication]]
  229. // =====
  230. // Application intialization.
  231. //
  232. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  233. void [[TApplication]]::InitMainWindow ()
  234. {
  235.     if (nCmdShow != SW_HIDE)
  236. ##@QUERY_APPL_STARTUP == VALUE_NORMAL
  237.         nCmdShow = (nCmdShow != SW_SHOWMINNOACTIVE) ? SW_SHOWNORMAL : nCmdShow;
  238. ##@QUERY_APPL_STARTUP == VALUE_MIN
  239.         nCmdShow = (nCmdShow != SW_SHOWMINNOACTIVE) ? SW_SHOWMINIMIZED : nCmdShow;
  240. ##@QUERY_APPL_STARTUP == VALUE_MAX
  241.         nCmdShow = (nCmdShow != SW_SHOWMINNOACTIVE) ? SW_SHOWMAXIMIZED : nCmdShow;
  242.  
  243. ##@OPT_APPL_STATUSBAR 
  244.     SDIDecFrame *frame = new SDIDecFrame(0, GetName(), 0, true);
  245. ##!@OPT_APPL_STATUSBAR
  246.     SDIDecFrame *frame = new SDIDecFrame(0, GetName(), 0, false);
  247. ##@QUERY_APPL_MODEL == VALUE_DIALOG
  248.     frame->SetFlag(wfShrinkToClient);
  249.  
  250. ##QUERY_WIND_STYLE [[StyleAttributes]]
  251. ##StyleAttributes != "" 3
  252.     // Override the default window style for the main window.
  253. [[StyleAttributes]]
  254.  
  255. ##QUERY_WIND_BACKGRND [[BackgroundColor]]
  256. ##BackgroundColor != "" 3
  257.     // Change the window's background color
  258.     frame->SetBkgndColor([[BackgroundColor]]);
  259.  
  260. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  261.     //
  262.     // Assign ICON w/ this application.
  263.     //
  264. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  265.     frame->SetIcon(this, IDI_SDIAPPLICATION);
  266.  
  267. ##(((@QUERY_APPL_MODEL == VALUE_DIALOG) && @QUERY_APPL_DLGCLIENT_MENU)  || (@QUERY_APPL_MODEL != VALUE_DIALOG))
  268. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  269.     //
  270.     // Menu associated with window and accelerator table associated with table.
  271.     //
  272. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  273. ##(((@QUERY_APPL_MODEL == VALUE_DIALOG) && @QUERY_APPL_DLGCLIENT_MENU)  || (@QUERY_APPL_MODEL != VALUE_DIALOG)) 2
  274.     frame->AssignMenu(SDI_MENU);
  275.     
  276. ##(((@QUERY_APPL_MODEL == VALUE_DIALOG) && @QUERY_APPL_DLGCLIENT_MENU)  || (@QUERY_APPL_MODEL != VALUE_DIALOG))
  277. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  278.     //
  279.     // Associate with the accelerator table.
  280.     //
  281. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  282. ##(((@QUERY_APPL_MODEL == VALUE_DIALOG) && @QUERY_APPL_DLGCLIENT_MENU)  || (@QUERY_APPL_MODEL != VALUE_DIALOG)) 2
  283.     frame->Attr.AccelTable = SDI_MENU;
  284.  
  285. ##(((@QUERY_APPL_MODEL == VALUE_DIALOG) && @QUERY_APPL_DLGCLIENT_MENU) || (@QUERY_APPL_MODEL != VALUE_DIALOG))
  286. ##@OPT_APPL_TOOLBAR
  287.     SetupSpeedBar(frame);
  288. ##@OPT_APPL_STATUSBAR 7
  289.  
  290.     TStatusBar *sb = new TStatusBar(frame, TGadget::Recessed,
  291.                                     TStatusBar::CapsLock        |
  292.                                     TStatusBar::NumLock         |
  293.                                     TStatusBar::ScrollLock      |
  294.                                     TStatusBar::Overtype);
  295.     frame->Insert(*sb, TDecoratedFrame::Bottom);
  296.   
  297.     SetMainWindow(frame);
  298.  
  299. ##(((@QUERY_APPL_MODEL == VALUE_DIALOG) && @QUERY_APPL_DLGCLIENT_MENU)  || (@QUERY_APPL_MODEL != VALUE_DIALOG))
  300.     frame->SetMenuDescr(TMenuDescr(SDI_MENU));
  301. ##--BEGIN-- @QUERY_APPL_CONTROL==VALUE_3D
  302.  
  303. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  304.     //
  305.     // Windows 3-D controls.
  306.     //
  307. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  308.     EnableCtl3d(true);
  309. ##--END-- @QUERY_APPL_CONTROL==VALUE_3D
  310. ##--BEGIN-- @QUERY_APPL_CONTROL==VALUE_BWCC
  311.  
  312. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  313.     //
  314.     // Borland Windows custom controls.
  315.     //
  316. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  317.     EnableBWCC();
  318. ##--END-- @QUERY_APPL_CONTROL==VALUE_BWCC
  319. }
  320.  
  321.  
  322. ##--BEGIN-- @QUERY_APPL_MODEL != VALUE_DIALOG
  323. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  324. //////////////////////////////////////////////////////////
  325. // [[TApplication]]
  326. // ===========
  327. // Menu File New command
  328. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  329. void [[TApplication]]::CmFileNew ()
  330. {
  331. ##QUERY_WIND_CLIENT [[ClientClass]]
  332. ##--BEGIN-- <<*ClientClass QUERY_BASE_NAME [[BaseClient]]
  333. ##BaseClient == "TEditFile" 2
  334.     [[ClientClass]] *client = TYPESAFE_DOWNCAST(GetMainWindow()->GetClientWindow(), [[ClientClass]]);     // Client window for the frame.
  335.     client->NewFile();
  336. ##BaseClient == "TListBox" 3
  337.     [[ClientClass]] *client = TYPESAFE_DOWNCAST(GetMainWindow()->GetClientWindow(), [[ClientClass]]);     // Client window for the frame.
  338.     if (client->CanClose())
  339.         client->ClearList();
  340. ##--END-- <<*ClientClass QUERY_BASE_NAME [[BaseClient]]
  341. }
  342.  
  343.  
  344. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  345. //////////////////////////////////////////////////////////
  346. // [[TApplication]]
  347. // ===========
  348. // Menu File Open command
  349. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  350. void [[TApplication]]::CmFileOpen ()
  351. {
  352. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  353.     //
  354.     // Display standard Open dialog box to select a file name.
  355.     //
  356. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  357.     *FileData.FileName = 0;
  358.  
  359. ##QUERY_WIND_CLIENT [[ClientClass]]
  360.     [[ClientClass]] *client = TYPESAFE_DOWNCAST(GetMainWindow()->GetClientWindow(), [[ClientClass]]);     // Client window for the frame.
  361.     if (client->CanClose())
  362.         if (TFileOpenDialog(GetMainWindow(), FileData).Execute() == IDOK)
  363.             OpenFile();
  364. }
  365.  
  366.  
  367. void [[TApplication]]::OpenFile (const char *fileName)
  368. {
  369.     if (fileName)
  370.         strcpy(FileData.FileName, fileName);
  371.  
  372. ##QUERY_WIND_CLIENT [[ClientName]]
  373. ##--BEGIN-- <<*ClientName QUERY_BASE_NAME [[BaseClient]]
  374. ##BaseClient == "TEditFile" 2
  375.     [[ClientName]] *client = TYPESAFE_DOWNCAST(GetMainWindow()->GetClientWindow(), [[ClientName]]);     // Client window for the frame.
  376.     client->ReplaceWith(FileData.FileName);
  377. ##BaseClient == "TListBox" 3
  378.     [[ClientName]] *client = TYPESAFE_DOWNCAST(GetMainWindow()->GetClientWindow(), [[ClientName]]);     // Client window for the frame.
  379.     client->ClearList();
  380.     LoadTextFile();
  381. ##--END-- <<*ClientName QUERY_BASE_NAME [[BaseClient]]
  382. }
  383.  
  384.  
  385. ##QUERY_WIND_CLIENT [[ClientName]]
  386. ##--BEGIN-- <<*ClientName QUERY_BASE_NAME [[BaseClient]]
  387. ##--BEGIN-- BaseClient == "TListBox"
  388. ##:     @QUERY_APPL_COMMENT == VALUE_VERBOSE
  389. // Used by ListBox client to read a text file into the list box.
  390. void [[TApplication]]::LoadTextFile ()
  391. {
  392.     char            buf[255+1];
  393.     ifstream        *inStream;
  394.  
  395.     TListBox        *client = TYPESAFE_DOWNCAST(GetMainWindow()->GetClientWindow(), TListBox);
  396.  
  397. ##:     @QUERY_APPL_COMMENT == VALUE_VERBOSE
  398.     // Only work if the client class is a TListBox.
  399.     if (client) {
  400.         client->ClearList();
  401.         inStream = new ifstream(FileData.FileName);
  402.         while (inStream->good()) {
  403.             inStream->getline(buf, sizeof(buf) - 1);
  404.             if (inStream->good())
  405.                 client->AddString(buf);
  406.         }
  407.  
  408. ##:     @QUERY_APPL_COMMENT == VALUE_VERBOSE
  409.         // Return an error message if we had a stream error and it wasn't the eof.
  410.         if (inStream->bad() && !inStream->eof()) {
  411.             string msgTemplate(*this, IDS_UNABLEREAD);
  412.             char*  msg = new char[MAXPATH + msgTemplate.length()];
  413.             wsprintf(msg, msgTemplate.c_str(), *FileData.FileName);
  414.             GetMainWindow()->MessageBox(msg, GetName(), MB_ICONEXCLAMATION | MB_OK);
  415.             delete msg;
  416.         }
  417.  
  418.         delete inStream;
  419.     }
  420. }
  421.  
  422.  
  423. ##--END-- BaseClient == "TListBox"
  424. ##--END-- <<*ClientName QUERY_BASE_NAME [[BaseClient]]
  425. ##--END-- @QUERY_APPL_MODEL != VALUE_DIALOG
  426. //{{SDIDecFrame Implementation}}
  427.  
  428.  
  429. SDIDecFrame::SDIDecFrame (TWindow *parent, const char far *title, TWindow *clientWnd, bool trackMenuSelection, TModule *module)
  430. ##QUERY_WIND_CLIENT [[ClientClass]]
  431. ##--BEGIN-- <<*ClientClass QUERY_BASE_NAME [[BaseClient]]
  432. ##BaseClient == "TEditFile"
  433.     : TDecoratedFrame(parent, title, clientWnd == 0 ? new [[ClientClass]](0, 0, 0) : clientWnd, trackMenuSelection, module)
  434. ##BaseClient == "TListBox"
  435.     : TDecoratedFrame(parent, title, clientWnd == 0 ? new [[ClientClass]](0, 0, 0, 0, 100, 100) : clientWnd, trackMenuSelection, module)
  436. ##BaseClient == "TWindow"
  437.     : TDecoratedFrame(parent, title, clientWnd == 0 ? new [[ClientClass]](0, "") : clientWnd, trackMenuSelection, module)
  438. ##BaseClient == "TDialog"
  439.     : TDecoratedFrame(parent, title, clientWnd == 0 ? new [[ClientClass]](0) : clientWnd, trackMenuSelection, module)
  440. ##--END-- <<*ClientClass QUERY_BASE_NAME [[BaseClient]]
  441. {
  442.     // INSERT>> Your constructor code here.
  443.  
  444. }
  445.  
  446.  
  447. SDIDecFrame::~SDIDecFrame ()
  448. {
  449.     // INSERT>> Your destructor code here.
  450.  
  451. }
  452. ##--BEGIN-- ((@QUERY_APPL_MODEL == VALUE_DIALOG) && (@OPT_APPL_TOOLBAR || @OPT_APPL_STATUSBAR))
  453.  
  454.  
  455. void SDIDecFrame::SetupWindow ()
  456. {
  457.     TDecoratedFrame::SetupWindow();
  458.     
  459.     TRect  r;
  460.     GetWindowRect(r);
  461.  
  462. ##@OPT_APPL_TOOLBAR && @OPT_APPL_STATUSBAR && @QUERY_APPL_DLGCLIENT_MENU
  463.     r.bottom += 60;
  464. ##((!@QUERY_APPL_DLGCLIENT_MENU && @OPT_APPL_STATUSBAR) || (@QUERY_APPL_DLGCLIENT_MENU && @OPT_APPL_TOOLBAR && !OPT_APPL_STATUSBAR))
  465.     r.bottom += 30;
  466.     SetWindowPos(0, r, SWP_NOZORDER | SWP_NOMOVE);
  467.  
  468.     // INSERT>> Your code here.
  469.  
  470. }
  471. ##--END-- ((@QUERY_APPL_MODEL == VALUE_DIALOG) && (@OPT_APPL_TOOLBAR || @OPT_APPL_STATUSBAR))
  472. ##--BEGIN-- @OPT_APPL_PRINTING
  473.  
  474.  
  475. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  476. //////////////////////////////////////////////////////////
  477. // [[TApplication]]
  478. // ==========
  479. // Menu File Print command
  480. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  481. void [[TApplication]]::CmFilePrint ()
  482. {
  483. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  484.     //
  485.     // Create Printer object if not already created.
  486.     // 
  487. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  488.     if (!Printer)
  489.         Printer = new TPrinter(this);
  490.  
  491. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  492.     //
  493.     // Create Printout window and set characteristics.
  494.     //
  495. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  496.     APXPrintOut printout(Printer, "Title", GetMainWindow()->GetClientWindow());
  497.     printout.SetBanding(true);
  498.  
  499.     Printing++;
  500.  
  501. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  502.     //
  503.     // Bring up the Print dialog and print the document.
  504.     //
  505. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  506.     Printer->Print(GetWindowPtr(GetActiveWindow()), printout, true);
  507.  
  508.     Printing--;
  509. }
  510.  
  511.  
  512. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  513. //////////////////////////////////////////////////////////
  514. // [[TApplication]]
  515. // ==========
  516. // Menu File Print Setup command
  517. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  518. void [[TApplication]]::CmFilePrintSetup ()
  519. {
  520.     if (!Printer)
  521.         Printer = new TPrinter(this);
  522.  
  523. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  524.     //
  525.     // Bring up the Print Setup dialog.
  526.     //
  527. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  528.     Printer->Setup(GetMainWindow());
  529. }
  530.  
  531.  
  532. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  533. //////////////////////////////////////////////////////////
  534. // [[TApplication]]
  535. // ==========
  536. // Menu File Print Preview command
  537. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  538. void [[TApplication]]::CmFilePrintPreview ()
  539. {
  540.     SDIDecFrame *sdiFrame = TYPESAFE_DOWNCAST(GetMainWindow(), SDIDecFrame); 
  541.     if (sdiFrame) {
  542.         if (!Printer)
  543.             Printer = new TPrinter(this);
  544.  
  545.         Printing++;
  546.  
  547.         PreviewWindow *prevW = new PreviewWindow(sdiFrame, Printer, sdiFrame->GetClientWindow(), "Print Preview", new TLayoutWindow(0));
  548.         prevW->Create();
  549.  
  550.         BeginModal(GetMainWindow());
  551.  
  552.         Printing--;
  553.  
  554. ##:@QUERY_APPL_COMMENT == VALUE_VERBOSE
  555.         // Now that printing is off we can invalidate because the edit window to repaint.
  556.         GetMainWindow()->SetRedraw(true);
  557.         GetMainWindow()->Invalidate();
  558.  
  559. ##:@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  560.         // We must destroy the preview window explicitly.  Otherwise, the window will not be destroyed until
  561.         // it's parent the MainWindow is destroyed.
  562.         prevW->Destroy();
  563.         delete prevW;
  564.     }
  565. }
  566.  
  567.  
  568. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  569. //////////////////////////////////////////////////////////
  570. // [[TApplication]]
  571. // ==========
  572. // Menu enabler used by Print, Print Setup and Print Preview.
  573. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  574. void [[TApplication]]::CmPrintEnable (TCommandEnabler &tce)
  575. {
  576. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  577.     // If we have a Printer already created just test if all is okay.
  578.     // Otherwise create a Printer object and make sure the printer
  579.     // really exists and then delete the Printer object.
  580. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  581.     if (!Printer) {
  582.         Printer = new TPrinter(this);
  583.         
  584.         tce.Enable(Printer->GetSetup().Error == 0);
  585.     } else
  586.         tce.Enable(Printer->GetSetup().Error == 0);
  587. }
  588. ##--END-- @OPT_APPL_PRINTING
  589. ##--BEGIN-- @OPT_APPL_HELP
  590.  
  591.  
  592. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  593. //////////////////////////////////////////////////////////
  594. // [[TApplication]]
  595. // =====
  596. // Menu Help Contents command
  597. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  598. void [[TApplication]]::CmHelpContents ()
  599. {
  600. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  601.     //
  602.     // Show the help table of contents.
  603.     //
  604. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  605.     HelpState = GetMainWindow()->WinHelp(HelpFileName, HELP_CONTENTS, 0L);
  606. }
  607.  
  608.  
  609. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  610. //////////////////////////////////////////////////////////
  611. // [[TApplication]]
  612. // =====
  613. // Menu Help Using Help command
  614. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  615. void [[TApplication]]::CmHelpUsing ()
  616. {
  617. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  618.     //
  619.     // Display the contents of the Windows help file.
  620.     //
  621. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  622.     HelpState = GetMainWindow()->WinHelp(HelpFileName, HELP_HELPONHELP, 0L);
  623. }
  624. ##--END-- @OPT_APPL_HELP
  625.  
  626.  
  627. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  628. //////////////////////////////////////////////////////////
  629. // [[TApplication]]
  630. // ===========
  631. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  632. ##@QUERY_TARGET_NAME [[Target]]
  633. // Menu Help About [[Target]] command
  634. void [[TApplication]]::CmHelpAbout ()
  635. {
  636. ##"" [[TDialog]]
  637. ##--BEGIN-- ((@QUERY_APPL_MODEL != VALUE_DIALOG) || ((@QUERY_APPL_MODEL == VALUE_DIALOG) && @QUERY_APPL_DLGCLIENT_MENU))
  638. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  639.     //
  640.     // Show the modal dialog.
  641.     //
  642. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  643. ##      :<<TDialog QUERY_CLASS_NAME TDialog
  644.     [[TDialog]](MainWindow).Execute();
  645. ##--END-- ((@QUERY_APPL_MODEL != VALUE_DIALOG) || ((@QUERY_APPL_MODEL == VALUE_DIALOG) && @QUERY_APPL_DLGCLIENT_MENU))
  646. }
  647. ##--BEGIN-- @OPT_APPL_DRAGDROP
  648.  
  649.  
  650. void [[TApplication]]::InitInstance ()
  651. {
  652.     TApplication::InitInstance();
  653.  
  654. ##:@QUERY_APPL_COMMENT == VALUE_VERBOSE
  655.     // Accept files via drag/drop in the frame window.
  656.     GetMainWindow()->DragAcceptFiles(true);
  657. }
  658.  
  659.  
  660. void [[TApplication]]::EvDropFiles (TDropInfo drop)
  661. {
  662. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE
  663.     // Tell DragQueryFile the file interested in (0) and the length of your buffer.
  664.     int     fileLength = drop.DragQueryFileNameLen(0) + 1;
  665.     char    *fileName = new char[fileLength];
  666.  
  667.     drop.DragQueryFile(0, fileName, fileLength);
  668.  
  669. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE
  670.     // Open the file that was dropped.
  671.     AddFile(fileName);
  672. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE
  673.     // Release the memory allocated for this handle with DragFinish.
  674.     drop.DragFinish();
  675. }
  676.  
  677.  
  678. void [[TApplication]]::AddFile (const char *FileName)
  679. {
  680.     strcpy(FileData.FileName, FileName);
  681.  
  682. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE
  683.     // Open the file dragged in.
  684. ##QUERY_WIND_CLIENT [[ClientClass]]
  685. ##--BEGIN-- <<*ClientClass QUERY_BASE_NAME [[BaseClient]]
  686. ##BaseClient == "TEditFile" 2
  687.     [[ClientClass]] *client = TYPESAFE_DOWNCAST(GetMainWindow()->GetClientWindow(), [[ClientClass]]);
  688.     client->ReplaceWith(FileData.FileName);
  689. ##BaseClient == "TListBox" 3
  690.     [[ClientClass]] *client = TYPESAFE_DOWNCAST(GetMainWindow()->GetClientWindow(), [[ClientClass]]);
  691.     client->ClearList();
  692.     LoadTextFile();
  693. ##--END-- <<*ClientClass QUERY_BASE_NAME [[BaseClient]]
  694. }
  695. ##--END-- @OPT_APPL_DRAGDROP
  696. ##{main.owl}
  697.