home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / vos2-121.zip / v / appgen / vgcode.cpp < prev    next >
C/C++ Source or Header  |  1998-10-05  |  63KB  |  1,805 lines

  1. //===============================================================
  2. // V Shell App Generator
  3. //
  4. // Copyright (c) 1995,1996  Bruce E. Wampler
  5. //
  6. // This file is part of the V C++ GUI Framework, and is covered
  7. // under the terms of the GNU Library General Public License,
  8. // Version 2. This library has NO WARRANTY. See the source file
  9. // v/srcx/vapp.cxx for more complete information about license terms.
  10. //===============================================================
  11.  
  12. // This file has the code that generates the required files
  13.  
  14. #include "vgcode.h"
  15.  
  16. #include <string.h>
  17. #include <fstream.h>
  18. #include <v/vutil.h>
  19.  
  20. //=========================>>> GeneratedBy <<<==========================
  21.   static void GeneratedBy(ofstream& of, char* comment)
  22.   {
  23.     char buff[40];
  24.     char date[20];
  25.     vGetLocalTime(buff);
  26.     vGetLocalDate(date);
  27.     strcat(buff," ");
  28.     strcat(buff,date);
  29.  
  30. of << comment << "=======================================================================\n";
  31. of << comment << "@V@:Note: This file generated by vgen V" << VGEN_VERS << " ";
  32. of << "(" << buff << ").\n";
  33.   }
  34.  
  35. //=========================>>> genApp <<<==========================
  36.   int genApp(vgOptions& op)
  37.   {
  38.     char *bn = &op.appName[0];
  39.     char *fn = &op.fileName[0];
  40.  
  41.     char cppName[100], hName[100];
  42.  
  43. //*****************************************************************
  44. // Generate the app .cpp file
  45.  
  46.     strcpy(cppName,fn); strcat(cppName,"app.cpp");
  47.  
  48.     ofstream of(cppName);
  49.  
  50.     if (!of)
  51.     return 0;
  52.  
  53. GeneratedBy(of, "//");    //=========================================================
  54.  
  55. of << "//    " << fn << "app.cpp:    Source for " << bn << "App class\n";
  56. of << "//=======================================================================\n";
  57. of << "\n";
  58. of << "#include \"" << fn << "app.h\"        // Header file\n";
  59. of << "\n";
  60. of << "//=========================>>> " << bn << "App::" << bn << "App <<<==========================\n";
  61.     of << "  " << bn << "App::" << bn << "App(char* name, int sdi, int h, int w) : vApp(name, sdi, h, w)\n";
  62. of << "  {\n";
  63. of << "    // Constructor\n";
  64. of << "\n";
  65. of << "   _" << bn << "CmdWin = 0;\n";
  66. of << "  }\n";
  67. of << "\n";
  68. of << "//=========================>>> " << bn << "App::" << bn << "App <<<==========================\n";
  69. of << "  " << bn << "App::~" << bn << "App()\n";
  70. of << "  {\n";
  71. of << "    // Destructor\n";
  72. of << "  }\n";
  73. of << "\n";
  74. of << "//=====================>>> " << bn << "App::NewAppWin <<<==========================\n";
  75. of << "  vWindow* " << bn << "App::NewAppWin(vWindow* win, char* name,\n";
  76. of << "    int w, int h, vAppWinInfo* winInfo)\n";
  77. of << "  {\n";
  78. of << "    vAppWinInfo* awinfo = winInfo;\n";
  79. of << "    char *appname = name;\n";
  80. of << "\n";
  81. of << "    if (!*name)\n";
  82. of << "      {\n";
  83. of << "     appname = \"" << op.title << "\";        // Default name\n";
  84. of << "      }\n";
  85. of << "    \n";
  86. of << "    UserDebug1(Build,\"" << bn << "App::NewAppWin(%s)\\n\",appname);\n";
  87. of << "\n";
  88. of << "    // Create the first window using provided CmdWindow\n";
  89. of << "\n";
  90. of << "    _" << bn << "CmdWin = (" << bn << "CmdWindow*) win;\n";
  91. of << "    if (!_" << bn << "CmdWin)\n";
  92. of << "      {\n";
  93. of << "    _" << bn << "CmdWin = new " << bn << "CmdWindow(appname, w, h);\n";
  94. of << "      }\n";
  95. of << "\n";
  96. of << "    if (!awinfo)\n";
  97. of << "    awinfo = new vAppWinInfo(appname);\n";
  98. of << "\n";
  99. of << "    return vApp::NewAppWin(_" << bn << "CmdWin, appname, w, h, awinfo);\n";
  100. of << "  }\n";
  101. of << "\n";
  102. of << "//============================>>> " << bn << "App::Exit <<<===========================\n";
  103. of << "  void " << bn << "App::Exit(void)\n";
  104. of << "  {\n";
  105. of << "    // This is called to close all windows.\n";
  106. of << "\n";
  107. of << "    UserDebug(Build,\"" << bn << "App::Exit()\\n\");\n";
  108. of << "\n";
  109. of << "    vApp::Exit();        // Default behavior\n";
  110. of << "  }\n";
  111. of << "\n";
  112. of << "//======================>>> " << bn << "App::CloseAppWin <<<===========================\n";
  113. of << "  int " << bn << "App::CloseAppWin(vWindow* win)\n";
  114. of << "  {\n";
  115. of << "    // This will be called BEFORE a window has been unregistered or\n";
  116. of << "    // closed.  Default behavior: unregister and close the window.\n";
  117. of << "\n";
  118. of << "    UserDebug(Build,\"" << bn << "App::CloseAppWin()\\n\");\n";
  119. of << "\n";
  120. of << "    return vApp::CloseAppWin(win);\n";
  121. of << "  }\n";
  122. of << "\n";
  123. of << "//=====================>>> " << bn << "App::AppCommand <<<==============================\n";
  124. of << "  void " << bn << "App::AppCommand(vWindow* win, ItemVal id, ItemVal val, CmdType cType)\n";
  125. of << "  {\n";
  126. of << "    // Commands not processed by the window will be passed here\n";
  127. of << "\n";
  128. of << "    UserDebug1(Build,\"" << bn << "App::AppCmd(ID: %d)\\n\",id);\n";
  129. of << "    vApp::AppCommand(win, id, val, cType);\n";
  130. of << "  }\n";
  131. of << "\n";
  132. of << "//=========================>>> " << bn << "App::KeyIn <<<==============================\n";
  133. of << "  void " << bn << "App::KeyIn(vWindow* win, vKey key, unsigned int shift)\n";
  134. of << "  {\n";
  135. of << "    // Key strokes not processed by the window will be passed here\n";
  136. of << "\n";
  137. of << "    vApp::KeyIn(win, key, shift);\n";
  138. of << "  }\n";
  139. of << "\n";
  140. of << "//###########################################################################\n";
  141. of << "\n";
  142. if (op.canvasType == NoCanvas)
  143.     of << "  static " << bn << "App " << bn << "_App(\"" << op.title << "\",1,70,150);    // The instance of the app\n";
  144. else if (op.winSDI)
  145.     of << "  static " << bn << "App " << bn << "_App(\"" << op.title << "\",1);    // The instance of the app\n";
  146. else
  147.     of << "  static " << bn << "App " << bn << "_App(\"" << op.title << "\");    // The instance of the app\n";
  148. of << "\n";
  149. of << "//============================>>> AppMain <<<==============================\n";
  150. of << "  int AppMain(int argc, char** argv)\n";
  151. of << "  {\n";
  152. of << "    // Use AppMain to create the main window\n";
  153. of << "\n";
  154. if (op.canvasType == NoCanvas)
  155.     of << "    (void) theApp->NewAppWin(0, \"" << op.title << "\", 0, 0);\n";
  156. else
  157.     of << "    (void) theApp->NewAppWin(0, \"" << op.title << "\", 450, 250);\n";
  158. of << "\n";
  159. of << "    return 0;\n";
  160. of << "  }\n";
  161.      of.close();
  162.  
  163. //*****************************************************************
  164. // Generate the app .h file
  165.  
  166.     strcpy(hName,fn); strcat(hName,"app.h");
  167.  
  168.     ofstream hf(hName);
  169.  
  170.     if (!hf)
  171.     return 0;
  172.  
  173. GeneratedBy(of, "//");    //=========================================================
  174. hf << "//    " << fn << "app.h:    Header for " << bn << "App class\n";
  175. hf << "//=======================================================================\n";
  176. hf << "\n";
  177. hf << "#ifndef " << bn << "APP_H\n";
  178. hf << "#define " << bn << "APP_H\n";
  179. hf << "\n";
  180. hf << "// Include standard V files as needed\n";
  181. hf << "\n";
  182. hf << "#ifdef vDEBUG\n";
  183. hf << "#include <v/vdebug.h>\n";
  184. hf << "#endif\n";
  185. hf << "\n";
  186. hf << "#include <v/vapp.h>\n";
  187. hf << "#include <v/vawinfo.h>\n";
  188. hf << "\n";
  189. hf << "#include \"" << fn << "cmdw.h\"    // we use " << bn << "CommandWindow\n";
  190. hf << "\n";
  191. hf << "    class " << bn << "App : public vApp\n";
  192. hf << "      {\n";
  193. hf << "    friend int AppMain(int, char**);    // allow AppMain access\n";
  194. hf << "\n";
  195. hf << "      public:        //---------------------------------------- public\n";
  196. hf << "\n";
  197. hf << "    " << bn << "App(char* name, int sdi = 0, int h = 0, int w = 0);\n";
  198. hf << "    virtual ~" << bn << "App();\n";
  199. hf << "\n";
  200. hf << "    // Routines from vApp that are normally overridden\n";
  201. hf << "\n";
  202. hf << "    virtual vWindow* NewAppWin(vWindow* win, char* name, int w, int h,\n";
  203. hf << "        vAppWinInfo* winInfo);\n";
  204. hf << "\n";
  205. hf << "    virtual void Exit(void);\n";
  206. hf << "\n";
  207. hf << "    virtual int CloseAppWin(vWindow*);\n";
  208. hf << "\n";
  209. hf << "    virtual void AppCommand(vWindow* win, ItemVal id, ItemVal val, CmdType cType);\n";
  210. hf << "\n";
  211. hf << "    virtual void KeyIn(vWindow*, vKey, unsigned int);\n";
  212. hf << "\n";
  213. hf << "    // New routines for this particular app\n";
  214. hf << "\n";
  215. hf << "      protected:    //--------------------------------------- protected\n";
  216. hf << "\n";
  217. hf << "      private:        //--------------------------------------- private\n";
  218. hf << "\n";
  219. hf << "    " << bn << "CmdWindow* _" << bn << "CmdWin;        // Pointer to instance of first window\n";
  220. hf << "\n";
  221. hf << "      };\n";
  222. hf << "#endif\n";
  223.     hf.close();
  224.     return 1;
  225.  
  226.   }
  227.  
  228. //=========================>>> genCmdw <<<==========================
  229.   int genCmdw(vgOptions& op)
  230.   {
  231.     char *bn = &op.appName[0];
  232.     char *fn = &op.fileName[0];
  233.     char cppName[100], hName[100];
  234.  
  235. //*****************************************************************
  236. // Generate the app .cpp file
  237.  
  238.     strcpy(cppName,fn); strcat(cppName,"cmdw.cpp");
  239.  
  240.     ofstream of(cppName);
  241.  
  242.     if (!of)
  243.     return 0;
  244.  
  245. GeneratedBy(of, "//");    //=========================================================
  246. of << "//    " << fn << "cmdw.cpp:    Source for " << bn << "CmdWindow class\n";
  247. of << "//=======================================================================\n";
  248. of << "\n";
  249. of << "#include <v/vnotice.h>    // for vNoticeDialog\n";
  250. of << "#include <v/vkeys.h>    // to map keys\n";
  251. of << "\n";
  252. of << "#include \"" << fn << "cmdw.h\"    // our header\n";
  253. of << "\n";
  254. of << "//    Start defines for the main window with 100\n";
  255. of << "\n";
  256. of << "//@V@:BeginIDs\n";
  257. of << "    enum {\n";
  258. of << "    m_FirstCmd = 100, // Dummy Command\n";
  259. if (op.addDialog || op.addModal)
  260.     of << "    m_TestDialog,    // TestDialog menu\n";
  261. if (op.addDialog)
  262.     of << "    m_Dialog,    // TestDialog menu\n";
  263. if (op.addModal)
  264.     of << "    m_ModalDialog,    // TestDialog menu\n";
  265. if (op.addToolBar)
  266.     of << "    btnTestTool,    // Tool Bar test\n";
  267. if (op.addStatus)
  268.     of << "    lblTestStat,    // Status Bar test\n";
  269. if (op.addDate)
  270.     of << "    lblCurTime,    // Date/Time field\n";
  271. if (op.addTimer)
  272.     of << "    cmdAuxTimer,    // AuxTimer\n";
  273. of << "    blkLast        // Last item\n";
  274. of << "      };\n";
  275. of << "//@V@:EndIDs\n";
  276. of << "\n";
  277. if (op.addMenu)
  278.   {
  279. of << "//@V@:BeginPulldownMenu FileMenu\n";
  280. of << "    static vMenu FileMenu[] =\n";
  281. of << "      {\n";
  282. of << "    {\"&New\", M_New, isSens, notChk, noKeyLbl, noKey, noSub},\n";
  283. of << "    {\"&Open...\", M_Open, isSens, notChk, noKeyLbl, noKey, noSub},\n";
  284. of << "    {\"&Save\", M_Save, isSens, notChk, noKeyLbl, noKey, noSub},\n";
  285. of << "    {\"Save &as...\", M_SaveAs, isSens, notChk, noKeyLbl, noKey, noSub},\n";
  286. of << "    {\"&Close...\", M_CloseFile, isSens, notChk, noKeyLbl, noKey, noSub},\n";
  287. of << "    {\"-\", M_Line, notSens, notChk, noKeyLbl, noKey, noSub},\n";
  288. of << "    {\"E&xit\", M_Exit, isSens, notChk, noKeyLbl, noKey, noSub},\n";
  289. of << "    {NULL}\n";
  290. of << "      };\n";
  291. of << "//@V@:EndPulldownMenu\n";
  292. of << "\n";
  293. of << "//@V@:BeginPulldownMenu EditMenu\n";
  294. of << "    static vMenu EditMenu[] =\n";
  295. of << "      {\n";
  296. of << "    {\"Cut  \", M_Cut, isSens, notChk, \"Ctrl-X\", 'X'-'@', noSub},\n";
  297. of << "    {\"Copy \", M_Copy, isSens, notChk, \"Ctrl-C\", 'C'-'@', noSub},\n";
  298. of << "    {\"Paste\", M_Paste, isSens, notChk, \"Ctrl-V\", 'V'-'@', noSub},\n";
  299. of << "    {NULL}\n";
  300. of << "      };\n";
  301. of << "//@V@:EndPulldownMenu\n";
  302. of << "\n";
  303. if (op.addModal || op.addDialog)
  304.   {
  305.     of << "//@V@:BeginPulldownMenu TestDialog\n";
  306.     of << "    static vMenu TestDialog[] =\n";
  307.     of << "      {\n";
  308.     if (op.addDialog)
  309.     of << "    {\"Dialog\", m_Dialog, isSens, notChk, noKeyLbl, noKey, noSub},\n";
  310.     if (op.addModal)
  311.     of << "    {\"Modal Dialog\", m_ModalDialog, isSens, notChk, noKeyLbl, noKey, noSub},\n";
  312.     of << "        {NULL}\n";
  313.     of << "      };\n";
  314.     of << "//@V@:EndPulldownMenu\n";
  315.     of << "\n";
  316.   }
  317. of << "//@V@:BeginMenu StandardMenu\n";
  318. of << "    static vMenu StandardMenu[] =\n";
  319. of << "      {\n";
  320. of << "    {\"&File\", M_File, isSens, notUsed, notUsed, noKey, &FileMenu[0]},\n";
  321. of << "    {\"&Edit\", M_Edit, isSens, notUsed, notUsed, noKey, &EditMenu[0]},\n";
  322. if (op.addDialog || op.addModal)
  323.     of << "    {\"&TestDialog\", m_TestDialog, isSens, notUsed, notUsed, noKey, &TestDialog[0]},\n";
  324. of << "    {NULL}\n";
  325. of << "      };\n";
  326. of << "//@V@:EndMenu\n\n";
  327.   }
  328. if (op.addToolBar)
  329.   {
  330.     of << "//@V@:BeginCmdPane ToolBar\n";
  331.     of << "    static CommandObject ToolBar[] =\n";
  332.     of << "      {\n";
  333.     if (!op.addMenu)
  334.         of << "    {C_Button,M_Exit,0,\"Exit\",NoList,CA_None,isSens,NoFrame,0,0},\n";
  335.     of << "    {C_Button,btnTestTool,0,\"Test\",NoList,CA_None,isSens,NoFrame,0,0},\n";
  336.     of << "    {C_EndOfList,0,0,0,0,CA_None,0,0,0}\n";
  337.     of << "      };\n";
  338.     of << "//@V@:EndCmdPane\n\n";
  339.   }
  340. if (op.addStatus)
  341.   {
  342.     of << "//@V@:BeginStatPane StatBar\n";
  343.     of << "    static vStatus StatBar[] =\n";
  344.     of << "      {\n";
  345.     of << "    {\"" << op.title << "\", lblTestStat, CA_NoBorder, isSens, 0},\n";
  346.     if (op.addDate)
  347.     of << "    {\" 00:00:00 AM  dd mmm yyyy \",lblCurTime, CA_None, isSens, 0},\n";
  348.     of << "    {0,0,0,0,0}\n";
  349.     of << "      };\n";
  350.     of << "//@V@:EndStatPane\n\n";
  351.   }
  352. if (op.addDate)
  353.   {
  354.     of << "//====================>>> " << bn <<"Timer::TimerTick <<<====================\n";
  355.     of << "  void " << bn << "Timer::TimerTick()\n";
  356.     of << "  {\n";
  357.     of << "    cmdw->WindowCommand(lblCurTime, lblCurTime, C_Button); // update clock\n";
  358.     of << "  }\n\n";
  359.   }
  360. if (op.addTimer)
  361.   {
  362.     of << "//====================>>> " << bn <<"AuxTimer::TimerTick <<<====================\n";
  363.     of << "  void " << bn << "AuxTimer::TimerTick()\n";
  364.     of << "  {\n";
  365.     of << "    cmdw->WindowCommand(cmdAuxTimer, cmdAuxTimer, C_Button); // update clock\n";
  366.     of << "  }\n\n";
  367.   }
  368. of << "//====================>>> " << bn << "CmdWindow::" << bn << "CmdWindow <<<====================\n";
  369. of << "  " << bn << "CmdWindow::" << bn << "CmdWindow(char* name, int width, int height) :\n";
  370. of << "    vCmdWindow(name, width, height)\n";
  371. of << "  {\n";
  372. of << "    UserDebug1(Constructor,\"" << bn << "CmdWindow::" << bn << "CmdWindow(%s) Constructor\\n\",name)\n";
  373. of << "\n";
  374. if (op.addMenu)
  375.   {
  376.     of << "    // The Menu Bar\n";
  377.     of << "    " << bn << "Menu = new vMenuPane(StandardMenu);\n";
  378.     of << "    AddPane(" << bn << "Menu);\n\n";
  379.   }
  380. if (op.addToolBar)
  381.   {
  382.     of << "    // The Command Pane\n";
  383.     of << "    " << bn << "CmdPane = new vCommandPane(ToolBar);\n";
  384.     of << "    AddPane(" << bn << "CmdPane);\n";
  385.     of << "\n";
  386.   }
  387. of << "    // The Canvas\n";
  388.  
  389. if (op.canvasType != NoCanvas)
  390.   {
  391.     if (op.canvasType == Canvas)
  392.     of << "    " << bn << "Canvas = new " << bn << "CanvasPane;\n";
  393.     else if (op.canvasType == Text)
  394.     of << "    " << bn << "Canvas = new " << bn << "TextCanvasPane;\n";
  395.     else if (op.canvasType == OpenGL)
  396.     of << "    " << bn << "Canvas = new " << bn << "OGLCanvasPane;\n";
  397.     of << "    AddPane(" << bn << "Canvas);\n\n";
  398.   }
  399.  
  400. if (op.addStatus)
  401.   {
  402.     of << "    // The Status Bar\n";
  403.     of << "    " << bn << "Status = new vStatusPane(StatBar);\n";
  404.     of << "    AddPane(" << bn << "Status);\n\n";
  405.   }
  406. if (op.addDate)
  407.   {
  408.     of << "    _timer = new " << bn << "Timer(this);        // create timer\n";
  409.     of << "    _timer->TimerSet(1000);        // 1 second intervals\n";
  410.   }
  411. if (op.addTimer)
  412.   {
  413.     of << "    _auxTimer = new " << bn << "AuxTimer(this);    // create aux timer\n";
  414.     of << "    _auxTimer->TimerSet(500);        // 1/2 second intervals\n";
  415.   }
  416. of << "    // Associated dialogs\n";
  417. of << "\n";
  418. if (op.addDialog)
  419.     of << "    " << bn << "Dlg = new " << bn << "Dialog(this,name);\n";
  420. if (op.addModal)
  421.     of << "    " << bn << "MDlg = new " << bn << "ModalDialog(this,name);\n";
  422. of << "    \n";
  423. of << "    // Show Window\n";
  424. of << "\n";
  425. of << "    ShowWindow();\n";
  426. if (op.addDate)
  427.     of << "    WindowCommand(lblCurTime,lblCurTime,C_Button);    // update clock\n";
  428. if (op.addTimer)
  429.     of << "    WindowCommand(cmdAuxTimer,cmdAuxTimer,C_Button);    // update clock\n";
  430. if (op.vScroll)
  431.     of << "    " << bn << "Canvas->ShowVScroll(1);    // Show Vert Scroll\n";
  432. if (op.hScroll)
  433.     of << "    " << bn << "Canvas->ShowHScroll(1);    // Show Horiz Scroll\n";
  434. of << "  }\n";
  435. of << "\n";
  436. of << "//====================>>> " << bn << "CmdWindow::~" << bn << "CmdWindow <<<====================\n";
  437. of << "  " << bn << "CmdWindow::~" << bn << "CmdWindow()\n";
  438. of << "  {\n";
  439. of << "    UserDebug(Destructor,\"" << bn << "CmdWindow::~" << bn << "CmdWindow() destructor\\n\")\n";
  440. of << "\n";
  441. of << "    // Now put a delete for each new in the constructor.\n";
  442. of << "\n";
  443. if (op.addMenu)
  444.   {
  445.     of << "    delete " << bn << "Menu;\n";
  446.   }
  447. if (op.canvasType != NoCanvas)
  448.   {
  449.     of << "    delete " << bn << "Canvas;\n";
  450.   }
  451. if (op.addToolBar)
  452.     of << "    delete " << bn << "CmdPane;\n";
  453. if (op.addStatus)
  454.     of << "    delete " << bn << "Status;\n";
  455. if (op.addDate)
  456.   {
  457.     of << "    _timer->TimerStop();    // end it\n";
  458.     of << "    delete _timer;        // free it\n";
  459.   }
  460. if (op.addTimer)
  461.   {
  462.     of << "    _auxTimer->TimerStop();    // end it\n";
  463.     of << "    delete _auxTimer;    // free it\n";
  464.   }
  465. if (op.addDialog)
  466.     of << "    delete " << bn << "Dlg;\n";
  467. if (op.addModal)
  468.     of << "    delete " << bn << "MDlg;\n";
  469. of << "  }\n";
  470. of << "\n";
  471. of << "//====================>>> " << bn << "CmdWindow::KeyIn <<<====================\n";
  472. of << "  void " << bn << "CmdWindow::KeyIn(vKey keysym, unsigned int shift)\n";
  473. of << "  {\n";
  474. of << "    vCmdWindow::KeyIn(keysym, shift);\n";
  475. of << "  }\n";
  476. of << "\n";
  477. of << "//====================>>> " << bn << "CmdWindow::WindowCommand <<<====================\n";
  478. of << "  void " << bn << "CmdWindow::WindowCommand(ItemVal id, ItemVal val, CmdType cType)\n";
  479. of << "  {\n";
  480. of << "    // Default: route menu and toolbar commands here\n";
  481. of << "\n";
  482. of << "\n";
  483. of << "    UserDebug1(CmdEvents,\"" << bn << "CmdWindow:WindowCommand(%d)\\n\",id)\n";
  484. of << "\n";
  485. of << "    switch (id)\n";
  486. of << "      {\n";
  487. if (op.addMenu)
  488. {
  489. of << "    //@V@:Case M_New\n";
  490. of << "    case M_New:\n";
  491. of << "      {\n";
  492. of << "        vNoticeDialog note(this);\n";
  493. of << "        note.Notice(\"New\");\n";
  494. of << "        break;\n";
  495. of << "      }    //@V@:EndCase\n";
  496. of << "\n";
  497. of << "    //@V@:Case M_Open\n";
  498. of << "    case M_Open:\n";
  499. of << "      {\n";
  500. of << "        vNoticeDialog note(this);\n";
  501. of << "        note.Notice(\"Open\");\n";
  502. of << "        break;\n";
  503. of << "      }    //@V@:EndCase\n";
  504. of << "\n";
  505. of << "    //@V@:Case M_Save\n";
  506. of << "    case M_Save:\n";
  507. of << "      {\n";
  508. of << "        vNoticeDialog note(this);\n";
  509. of << "        note.Notice(\"Save\");\n";
  510. of << "        break;\n";
  511. of << "      }    //@V@:EndCase\n";
  512. of << "\n";
  513. of << "    //@V@:Case M_SaveAs\n";
  514. of << "    case M_SaveAs:\n";
  515. of << "      {\n";
  516. of << "        vNoticeDialog note(this);\n";
  517. of << "        note.Notice(\"Save As\");\n";
  518. of << "        break;\n";
  519. of << "      }    //@V@:EndCase\n";
  520. of << "\n";
  521. of << "    //@V@:Case M_CloseFile\n";
  522. of << "    case M_CloseFile:\n";
  523. of << "      {\n";
  524. of << "        vNoticeDialog note(this);\n";
  525. of << "        note.Notice(\"Close File\");\n";
  526. of << "        break;\n";
  527. of << "      }    //@V@:EndCase\n";
  528. of << "\n";
  529. }
  530. of << "    //@V@:Case M_Exit\n";
  531. of << "    case M_Exit:\n";
  532. of << "      {\n";
  533. of << "        theApp->Exit();\n";
  534. of << "        break;\n";
  535. of << "      }    //@V@:EndCase\n";
  536. of << "\n";
  537. if (op.addMenu)
  538. {
  539. of << "    //@V@:Case M_Cut\n";
  540. of << "    case M_Cut:\n";
  541. of << "      {\n";
  542. of << "        vNoticeDialog note(this);\n";
  543. of << "        note.Notice(\"Cut\");\n";
  544. of << "        break;\n";
  545. of << "      }    //@V@:EndCase\n";
  546. of << "\n";
  547. of << "    //@V@:Case M_Copy\n";
  548. of << "    case M_Copy:\n";
  549. of << "      {\n";
  550. of << "        vNoticeDialog note(this);\n";
  551. of << "        note.Notice(\"Copy\");\n";
  552. of << "        break;\n";
  553. of << "      }    //@V@:EndCase\n";
  554. of << "\n";
  555. of << "    //@V@:Case M_Paste\n";
  556. of << "    case M_Paste:\n";
  557. of << "      {\n";
  558. of << "        vNoticeDialog note(this);\n";
  559. of << "        note.Notice(\"Paste\");\n";
  560. of << "        break;\n";
  561. of << "      }    //@V@:EndCase\n\n";
  562. }
  563. if (op.addDialog)
  564.   {
  565.     of << "    //@V@:Case m_Dialog\n";
  566.     of << "    case m_Dialog:\n";
  567.     of << "      {\n";
  568.     of << "        if (!" << bn << "Dlg->IsDisplayed())\n";
  569.     of << "        " << bn << "Dlg->ShowDialog(\"Sample Modeless Dialog\");\n";
  570.     of << "        break;\n";
  571.     of << "      }    //@V@:EndCase\n";
  572.     of << "\n\n";
  573.     }
  574. if (op.addModal)
  575.   {
  576.     of << "    //@V@:Case m_ModalDialog\n";
  577.     of << "    case m_ModalDialog:\n";
  578.     of << "      {\n";
  579.     of << "        ItemVal rval = " << bn << "MDlg->" << bn << "Action(\"Sample Modal Dialog\");\n";
  580.     of << "        break;\n";
  581.     of << "      }    //@V@:EndCase\n";
  582.     of << "\n\n";
  583.   }
  584. if (op.addToolBar)
  585.   {
  586.     of << "    //@V@:Case btnTestTool\n";
  587.     of << "    case btnTestTool:\n";
  588.     of << "      {\n";
  589.     of << "        vNoticeDialog note(this);\n";
  590.     of << "        note.Notice(\"Tool Bar Test\");\n";
  591.     of << "        break;\n";
  592.     of << "      }    //@V@:EndCase\n";
  593.     of << "\n\n";
  594.   }
  595. if (op.addTimer)
  596.   {
  597.     of << "    //@V@:Case auxTimer\n";
  598.     of << "    case cmdAuxTimer:    // Event from aux timer\n";
  599.     of << "      {\n";
  600. if (op.canvasType == OpenGL)
  601.     of << "        " << bn << "Canvas->TimerAnimate();\n";
  602.     of << "        break;\n";
  603.     of << "      }    //@V@:EndCase\n";
  604.   }
  605. if (op.addDate)
  606.   {
  607.     of << "    case lblCurTime:    // Update time on status bar\n";
  608.     of << "          {\n";
  609.     of << "            char buff[40];\n";
  610.     of << "            char date[20];\n";
  611.     of << "            vGetLocalTime(buff);\n";
  612.     of << "        vGetLocalDate(date);\n";
  613.     of << "        strcat(buff,\"  \");\n";
  614.     of << "            strcat(buff,date);\n";
  615.     of << "        SetString(lblCurTime,buff);\n";
  616.     of << "          }\n\n";
  617.   }
  618. of << "    default:        // route unhandled commands up\n";
  619. of << "      {\n";
  620. of << "        vCmdWindow::WindowCommand(id, val, cType);\n";
  621. of << "        break;\n";
  622. of << "      }\n";
  623. of << "      }\n";
  624. of << "  }\n";
  625.    of.close();
  626.  
  627. //*****************************************************************
  628. // Generate the cmdw .h file
  629.  
  630.     strcpy(hName,fn); strcat(hName,"cmdw.h");
  631.  
  632.     ofstream hf(hName);
  633.  
  634.     if (!hf)
  635.     return 0;
  636.  
  637. GeneratedBy(of, "//");    //=========================================================
  638. hf << "//    " << fn << "cmdw.h:    Header for " << bn << "cmdw class\n";
  639. hf << "//=======================================================================\n";
  640. hf << "\n";
  641. hf << "#ifndef " << bn << "CMDW_H\n";
  642. hf << "#define " << bn << "CMDW_H\n";
  643. hf << "\n";
  644. hf << "#include <v/vcmdwin.h>    // So we can use vCmdWindow\n";
  645. if (op.addMenu)
  646.     hf << "#include <v/vmenu.h>    // For the menu pane\n";
  647. hf << "#include <v/vutil.h>    // For V Utilities\n";
  648. if (op.addToolBar)
  649.     hf << "#include <v/vcmdpane.h> // command pane\n";
  650. if (op.addStatus)
  651.     hf << "#include <v/vstatusp.h>    // For the status pane\n";
  652. if (op.addDate || op.addTimer)
  653.     hf << "#include <v/vtimer.h>    // Timer\n";
  654. hf << "\n";
  655. hf << "#ifdef vDEBUG\n";
  656. hf << "#include <v/vdebug.h>\n";
  657. hf << "#endif\n";
  658. hf << "\n";
  659. if (op.canvasType == Canvas)
  660.      hf << "#include \"" << fn << "cnv.h\"    // " << bn << "CanvasPane\n";
  661. else if (op.canvasType == Text)
  662.      hf << "#include \"" << fn << "cnv.h\"    // " << bn << "TextCanvasPane\n";
  663. else if (op.canvasType == OpenGL)
  664.      hf << "#include \"" << fn << "cnv.h\"    // " << bn << "OGLCanvasPane\n";
  665. if (op.addDialog)
  666.     hf << "#include \"" << fn << "dlg.h\"    // " << bn << "Dialog\n";
  667. if (op.addModal)
  668.     hf << "#include \"" << fn << "mdlg.h\"    // " << bn << "ModalDialog\n";
  669. if (op.addDate || op.addTimer)        // using timers
  670. hf << "\n    class " << bn << "CmdWindow;\n";
  671. if (op.addDate)            // Add a time/date to status bar
  672.   {
  673. hf << "\n    class " << bn << "Timer : public vTimer\n";
  674. hf << "      {\n";
  675. hf << "      public:        //---------------------------------------- public\n";
  676. hf << "    " << bn << "Timer(" << bn << "CmdWindow* cw) { cmdw = cw; }\n";
  677. hf << "    ~" << bn << "Timer() {}\n";
  678. hf << "    virtual void TimerTick();\n";
  679. hf << "      private:        //--------------------------------------- private\n";
  680. hf << "    " << bn << "CmdWindow* cmdw;\n";
  681. hf << "      };\n";
  682.   }
  683. if (op.addTimer)        // add aux timer
  684.   {
  685. hf << "\n    class " << bn << "AuxTimer : public vTimer\n";
  686. hf << "      {\n";
  687. hf << "      public:        //---------------------------------------- public\n";
  688. hf << "    " << bn << "AuxTimer(" << bn << "CmdWindow* cw) { cmdw = cw; }\n";
  689. hf << "    ~" << bn << "AuxTimer() {}\n";
  690. hf << "    virtual void TimerTick();\n";
  691. hf << "      private:        //--------------------------------------- private\n";
  692. hf << "    " << bn << "CmdWindow* cmdw;\n";
  693. hf << "      };\n";
  694.   }
  695. hf << "\n    class " << bn << "CmdWindow : public vCmdWindow\n";
  696. hf << "      {\n";
  697. hf << "    friend int AppMain(int, char**);    // allow AppMain access\n";
  698. hf << "\n";
  699. hf << "      public:        //---------------------------------------- public\n";
  700. hf << "    " << bn << "CmdWindow(char*, int, int);\n";
  701. hf << "    virtual ~" << bn << "CmdWindow();\n";
  702. hf << "    virtual void WindowCommand(ItemVal id, ItemVal val, CmdType cType);\n";
  703. hf << "    virtual void KeyIn(vKey keysym, unsigned int shift);\n";
  704. if (op.addTimer)            // Add aux timer
  705.     hf << "    " << bn << "AuxTimer* Get" << bn 
  706.        << "AuxTimer() {return _auxTimer;}// Aux Timer\n";
  707. hf << "\n";
  708. hf << "      protected:    //--------------------------------------- protected\n";
  709. hf << "\n";
  710. hf << "      private:        //--------------------------------------- private\n";
  711. hf << "\n";
  712. hf << "    // Standard elements\n";
  713. if (op.addMenu)
  714.   {
  715. hf << "    vMenuPane* " << bn << "Menu;        // For the menu bar\n";
  716.   }
  717. if (op.canvasType == Canvas)
  718.     hf << "    " << bn << "CanvasPane* " << bn << "Canvas;        // For the canvas\n";
  719. else if (op.canvasType == Text)
  720.     hf << "    " << bn << "TextCanvasPane* " << bn << "Canvas;        // For the canvas\n";
  721. else if (op.canvasType == OpenGL)
  722.     hf << "    " << bn << "OGLCanvasPane* " << bn << "Canvas;        // For the canvas\n";
  723. if (op.addToolBar)
  724.     hf << "    vCommandPane* " << bn << "CmdPane;    // for the command pane\n";
  725. if (op.addStatus)
  726.     hf << "    vStatusPane* " << bn << "Status;        // For the status bar\n";
  727. if (op.addDate)            // Add a time/date to status bar
  728.     hf << "    " << bn << "Timer* _timer;    // Timer for Date/Time\n";
  729. if (op.addTimer)            // Add aux timer
  730.     hf << "    " << bn << "AuxTimer* _auxTimer;    // Aux Timer\n";
  731. hf << "\n";
  732. hf << "    // Dialogs associated with CmdWindow\n";
  733. hf << "\n";
  734. if (op.addDialog)
  735.     hf << "    " << bn << "Dialog* " << bn << "Dlg;\n";
  736. if (op.addModal)
  737.     hf << "    " << bn << "ModalDialog* " << bn << "MDlg;\n";
  738. hf << "\n";
  739. hf << "      };\n";
  740. hf << "#endif\n";
  741.    hf.close();
  742.    return 1;
  743.  
  744.   }
  745.  
  746. //=========================>>> genCnv <<<==========================
  747.   int genCnv(vgOptions& op)
  748.   {
  749.     char *bn = &op.appName[0];
  750.     char *fn = &op.fileName[0];
  751.     char cppName[100], hName[100];
  752.  
  753. //*****************************************************************
  754. // Generate the canvas .cpp file
  755.  
  756.     strcpy(cppName,fn); strcat(cppName,"cnv.cpp");
  757.  
  758.     ofstream of(cppName);
  759.  
  760.     if (!of)
  761.     return 0;
  762. //---->
  763. GeneratedBy(of, "//");    //=========================================================
  764. of << "//    " << fn << "cnv.cpp:    Source for " << bn << "CanvasPane class\n";
  765. of << "//=======================================================================\n";
  766. of << "\n";
  767. of << "#include \"" << fn << "cnv.h\"\n";
  768. of << "\n";
  769. of << "//===================>>> " << bn << "CanvasPane::" << bn << "CanvasPane <<<====================\n";
  770. of << "  " << bn << "CanvasPane::" << bn << "CanvasPane()\n";
  771. of << "  {\n";
  772. of << "  }\n";
  773. of << "\n";
  774. of << "//===================>>> " << bn << "CanvasPane::~" << bn << "CanvasPane <<<====================\n";
  775. of << "  " << bn << "CanvasPane::~" << bn << "CanvasPane()\n";
  776. of << "  {\n";
  777. of << "  }\n";
  778. of << "\n";
  779. of << "//======================>>> " << bn << "CanvasPane::HPage <<<========================\n";
  780. of << "  void " << bn << "CanvasPane::HPage(int shown, int top)\n";
  781. of << "  {\n";
  782. of << "    vCanvasPane::HPage(shown, top);\n";
  783. of << "  }\n";
  784. of << "\n";
  785. of << "//======================>>> " << bn << "CanvasPane::VPage <<<========================\n";
  786. of << "  void " << bn << "CanvasPane::VPage(int shown, int top)\n";
  787. of << "  {\n";
  788. of << "    vCanvasPane::VPage(shown, top);\n";
  789. of << "  }\n";
  790. of << "\n";
  791. of << "//=======================>>> " << bn << "CanvasPane::HScroll <<<======================\n";
  792. of << "  void " << bn << "CanvasPane::HScroll(int step)\n";
  793. of << "  {\n";
  794. of << "    vCanvasPane::HScroll(step);\n";
  795. of << "  }\n";
  796. of << "\n";
  797. of << "//======================>>> " << bn << "CanvasPane::VScroll <<<======================\n";
  798. of << "  void " << bn << "CanvasPane::VScroll(int step)\n";
  799. of << "  {\n";
  800. of << "    vCanvasPane::VScroll(step);\n";
  801. of << "  }\n";
  802. of << "\n";
  803. of << "//======================>>> " << bn << "CanvasPane::MouseDown <<<======================\n";
  804. of << "  void " << bn << "CanvasPane::MouseDown(int X, int Y, int button)\n";
  805. of << "  {\n";
  806. of << "    vCanvasPane::MouseDown(X,Y,button);\n";
  807. of << "  }\n";
  808. of << "\n";
  809. of << "//========================>>> " << bn << "CanvasPane::MouseUp <<<======================\n";
  810. of << "  void " << bn << "CanvasPane::MouseUp(int X, int Y, int button)\n";
  811. of << "  {\n";
  812. of << "    vCanvasPane::MouseUp(X,Y,button);\n";
  813. of << "  }\n";
  814. of << "\n";
  815. of << "//======================>>> " << bn << "CanvasPane::MouseMove <<<======================\n";
  816. of << "  void " << bn << "CanvasPane::MouseMove(int x, int y, int button)\n";
  817. of << "  {\n";
  818. of << "    vCanvasPane::MouseMove(x,y,button);\n";
  819. of << "  }\n";
  820. of << "\n";
  821. of << "//=========================>>> " << bn << "CanvasPane::Redraw <<<======================\n";
  822. of << "  void " << bn << "CanvasPane::Redraw(int x, int y, int w, int h)\n";
  823. of << "  {\n";
  824. of << "    vCanvasPane::Redraw(x,y,w,h);\n";
  825. of << "  }\n";
  826. of << "\n";
  827. of << "//======================>>> " << bn << "CanvasPane::Resize <<<======================\n";
  828. of << "  void " << bn << "CanvasPane::Resize(int w, int h)\n";
  829. of << "  {\n";
  830. of << "    vCanvasPane::Resize(w,h);\n";
  831. of << "  }\n";
  832. of << "\n";
  833.  
  834.    of.close();
  835.  
  836. //*****************************************************************
  837. // Generate the canvas .h file
  838.  
  839.     strcpy(hName,fn); strcat(hName,"cnv.h");
  840.  
  841.     ofstream hf(hName);
  842.  
  843.     if (!hf)
  844.     return 0;
  845.  
  846. //---->
  847. GeneratedBy(of, "//");    //=========================================================
  848. hf << "//    " << fn << "cnv.h:    Header for " << bn << "CanvasPane class\n";
  849. hf << "//=======================================================================\n";
  850. hf << "\n";
  851. hf << "#ifndef " << bn << "CNV_H\n";
  852. hf << "#define " << bn << "CNV_H\n";
  853. hf << "\n";
  854. hf << "#include <v/vcanvas.h>\n";
  855. hf << "\n";
  856. hf << "    class " << bn << "CanvasPane : public vCanvasPane\n";
  857. hf << "      {\n";
  858. hf << "      public:        //---------------------------------------- public\n";
  859. hf << "    " << bn << "CanvasPane();\n";
  860. hf << "    virtual ~" << bn << "CanvasPane();\n";
  861. hf << "\n";
  862. hf << "    // Scrolling\n";
  863. hf << "    virtual void HPage(int shown, int top);\n";
  864. hf << "    virtual void VPage(int shown, int top);\n";
  865. hf << "\n";
  866. hf << "    virtual void HScroll(int step);\n";
  867. hf << "    virtual void VScroll(int step);\n";
  868. hf << "\n";
  869. hf << "    // Events\n";
  870. hf << "    virtual void MouseDown(int x, int y, int button);\n";
  871. hf << "    virtual void MouseUp(int x, int y, int button);\n";
  872. hf << "    virtual void MouseMove(int x, int y, int button);\n";
  873. hf << "\n";
  874. hf << "    virtual void Redraw(int x, int y, int width, int height);\n";
  875. hf << "    virtual void Resize(int newW, int newH);\n";
  876. hf << "\n";
  877. hf << "      protected:    //--------------------------------------- protected\n";
  878. hf << "\n";
  879. hf << "      private:        //--------------------------------------- private\n";
  880. hf << "      };\n";
  881. hf << "#endif\n";
  882.  
  883.    hf.close();
  884.    return 1;
  885.  
  886.   }
  887.  
  888. //=========================>>> genOGLCnv <<<==========================
  889.   int genOGLCnv(vgOptions& op)
  890.   {
  891.     char *bn = &op.appName[0];
  892.     char *fn = &op.fileName[0];
  893.     char cppName[100], hName[100];
  894.  
  895. //*****************************************************************
  896. // Generate the canvas .cpp file
  897.  
  898.     strcpy(cppName,fn); strcat(cppName,"cnv.cpp");
  899.  
  900.     ofstream of(cppName);
  901.  
  902.     if (!of)
  903.     return 0;
  904. //---->
  905. GeneratedBy(of, "//");    //=========================================================
  906. of << "//    " << fn << "cnv.cpp:    Source for " << bn << "OGLCanvasPane class\n";
  907. of << "//=======================================================================\n";
  908. of << "\n";
  909. of << "#include \"" << fn << "cnv.h\"\n";
  910. of << "\n";
  911. of << "//===================>>> " << bn << "OGLCanvasPane::" << bn << "OGLCanvasPane <<<====================\n";
  912. of << "  " << bn << "OGLCanvasPane::" << bn <<
  913.        "OGLCanvasPane(unsigned int vGLmode, PaneType pt)\n";
  914. of << "  {\n";
  915. of << "    initDone = 0;\n";
  916. of << "  }\n";
  917. of << "\n";
  918. of << "//===================>>> " << bn << "OGLCanvasPane::~" << bn << "OGLCanvasPane <<<====================\n";
  919. of << "  " << bn << "OGLCanvasPane::~" << bn << "OGLCanvasPane()\n";
  920. of << "  {\n";
  921. of << "  }\n";
  922. of << "\n";
  923. if (op.addTimer)
  924.   {
  925. of << "//======================>>> " << bn << "OGLCanvasPane::TimerAnimate <<<========================\n";
  926. of << "  void " << bn << "OGLCanvasPane::TimerAnimate(void)\n";
  927. of << "  {\n";
  928. of << "    // **** Called by CmdWindow AuxTimer for animation.\n\n";
  929. of << "  }\n";
  930.   }
  931. of << "//======================>>> " << bn << "OGLCanvasPane::graphicsInit <<<========================\n";
  932. of << "  void " << bn << "OGLCanvasPane::graphicsInit(void)\n";
  933. of << "  {\n";
  934. of << "    vBaseGLCanvasPane::graphicsInit();    // Always call the superclass first!\n\n";
  935. of << "    // **** Your OpenGL initialization code goes here!\n\n";
  936. of << "    initDone = 1;\n";
  937. of << "  }\n";
  938. of << "//======================>>> " << bn << "OGLCanvasPane::HPage <<<========================\n";
  939. of << "  void " << bn << "OGLCanvasPane::HPage(int shown, int top)\n";
  940. of << "  {\n";
  941. of << "    vBaseGLCanvasPane::HPage(shown, top);\n";
  942. of << "  }\n";
  943. of << "\n";
  944. of << "//======================>>> " << bn << "OGLCanvasPane::VPage <<<========================\n";
  945. of << "  void " << bn << "OGLCanvasPane::VPage(int shown, int top)\n";
  946. of << "  {\n";
  947. of << "    vBaseGLCanvasPane::VPage(shown, top);\n";
  948. of << "  }\n";
  949. of << "\n";
  950. of << "//=======================>>> " << bn << "OGLCanvasPane::HScroll <<<======================\n";
  951. of << "  void " << bn << "OGLCanvasPane::HScroll(int step)\n";
  952. of << "  {\n";
  953. of << "    vBaseGLCanvasPane::HScroll(step);\n";
  954. of << "  }\n";
  955. of << "\n";
  956. of << "//======================>>> " << bn << "OGLCanvasPane::VScroll <<<======================\n";
  957. of << "  void " << bn << "OGLCanvasPane::VScroll(int step)\n";
  958. of << "  {\n";
  959. of << "    vBaseGLCanvasPane::VScroll(step);\n";
  960. of << "  }\n";
  961. of << "\n";
  962. of << "//======================>>> " << bn << "OGLCanvasPane::MouseDown <<<======================\n";
  963. of << "  void " << bn << "OGLCanvasPane::MouseDown(int X, int Y, int button)\n";
  964. of << "  {\n";
  965. of << "    vBaseGLCanvasPane::MouseDown(X,Y,button);\n";
  966. of << "  }\n";
  967. of << "\n";
  968. of << "//========================>>> " << bn << "OGLCanvasPane::MouseUp <<<======================\n";
  969. of << "  void " << bn << "OGLCanvasPane::MouseUp(int X, int Y, int button)\n";
  970. of << "  {\n";
  971. of << "    vBaseGLCanvasPane::MouseUp(X,Y,button);\n";
  972. of << "  }\n";
  973. of << "\n";
  974. of << "//======================>>> " << bn << "CanvasPane::MouseMove <<<======================\n";
  975. of << "  void " << bn << "OGLCanvasPane::MouseMove(int x, int y, int button)\n";
  976. of << "  {\n";
  977. of << "    vBaseGLCanvasPane::MouseMove(x,y,button);\n";
  978. of << "  }\n";
  979. of << "\n";
  980. of << "//=========================>>> " << bn << "OGLCanvasPane::Redraw <<<======================\n";
  981. of << "  void " << bn << "OGLCanvasPane::Redraw(int x, int y, int w, int h)\n";
  982. of << "  {\n    static int inRedraw = 0;\n\n";
  983. of << "    if (inRedraw || !initDone)  // Don't draw until initialized\n";
  984. of << "        return;\n\n";
  985. of << "    inRedraw = 1;  // Don't allow recursive redraws.\n\n";
  986. of << "    vglMakeCurrent();  // Typically done here\n\n";
  987. of << "    // *** Your drawing code typically goes here. You may\n";
  988. of << "    // insert it here, or just call a drawing routine.\n\n";
  989. of << "    vglFlush();  // After you draw, typically flush\n\n";
  990. of << "    inRedraw = 0;  // Out of Redraw\n\n";
  991. of << "  }\n";
  992. of << "\n";
  993. of << "//======================>>> " << bn << "OGLCanvasPane::Resize <<<======================\n";
  994. of << "  void " << bn << "OGLCanvasPane::Resize(int w, int h)\n";
  995. of << "  {\n";
  996. of << "    vBaseGLCanvasPane::Resize(w,h);\n";
  997. of << "  }\n";
  998. of << "\n";
  999.  
  1000.    of.close();
  1001.  
  1002. //*****************************************************************
  1003. // Generate the canvas .h file
  1004.  
  1005.     strcpy(hName,fn); strcat(hName,"cnv.h");
  1006.  
  1007.     ofstream hf(hName);
  1008.  
  1009.     if (!hf)
  1010.     return 0;
  1011.  
  1012. //---->
  1013. GeneratedBy(of, "//");    //=========================================================
  1014. hf << "//    " << fn << "cnv.h:    Header for " << bn << "OGLCanvasPane class\n";
  1015. hf << "//=======================================================================\n";
  1016. hf << "\n";
  1017. hf << "#ifndef " << bn << "CNV_H\n";
  1018. hf << "#define " << bn << "CNV_H\n";
  1019. hf << "\n";
  1020. hf << "#include <v/vbglcnv.h>\n";
  1021. hf << "\n";
  1022. hf << "    class " << bn << "OGLCanvasPane : public vBaseGLCanvasPane\n";
  1023. hf << "      {\n";
  1024. hf << "      public:        //---------------------------------------- public\n";
  1025. hf << "    " << bn << "OGLCanvasPane(unsigned int vGLmode = vGL_Default, PaneType pt = P_Canvas);\n";
  1026. hf << "    virtual ~" << bn << "OGLCanvasPane();\n";
  1027. hf << "\n";
  1028. hf << "    virtual void graphicsInit(void);\n\n";
  1029. if (op.addTimer)
  1030. hf << "  void TimerAnimate(void);    // for AuxTimer animation\n";
  1031. hf << "    // Scrolling\n";
  1032. hf << "    virtual void HPage(int shown, int top);\n";
  1033. hf << "    virtual void VPage(int shown, int top);\n";
  1034. hf << "\n";
  1035. hf << "    virtual void HScroll(int step);\n";
  1036. hf << "    virtual void VScroll(int step);\n";
  1037. hf << "\n";
  1038. hf << "    // Events\n";
  1039. hf << "    virtual void MouseDown(int x, int y, int button);\n";
  1040. hf << "    virtual void MouseUp(int x, int y, int button);\n";
  1041. hf << "    virtual void MouseMove(int x, int y, int button);\n";
  1042. hf << "\n";
  1043. hf << "    virtual void Redraw(int x, int y, int width, int height);\n";
  1044. hf << "    virtual void Resize(int newW, int newH);\n";
  1045. hf << "\n";
  1046. hf << "      protected:    //--------------------------------------- protected\n";
  1047. hf << "\n";
  1048. hf << "      private:        //--------------------------------------- private\n";
  1049. hf << "        int initDone;\n";
  1050. hf << "      };\n";
  1051. hf << "#endif\n";
  1052.  
  1053.    hf.close();
  1054.    return 1;
  1055.  
  1056.   }
  1057.  
  1058. //=========================>>> genTextCnv <<<==========================
  1059.   int genTextCnv(vgOptions& op)
  1060.   {
  1061.     char *bn = &op.appName[0];
  1062.     char *fn = &op.fileName[0];
  1063.     char cppName[100], hName[100];
  1064.  
  1065. //*****************************************************************
  1066. // Generate the canvas .cpp file
  1067.  
  1068.     strcpy(cppName,fn); strcat(cppName,"cnv.cpp");
  1069.  
  1070.     ofstream of(cppName);
  1071.  
  1072.     if (!of)
  1073.     return 0;
  1074. //---->
  1075. GeneratedBy(of, "//");    //=========================================================
  1076. of << "//    " << fn << "cnv.cpp:    Source for " << bn << "TextCanvasPane class\n";
  1077. of << "//=======================================================================\n";
  1078. of << "\n";
  1079. of << "#include \"" << fn << "cnv.h\"\n";
  1080. of << "\n";
  1081. of << "//=================>>> " << bn << "TextCanvasPane::" << bn << "TextCanvasPane <<<================\n";
  1082. of << "  " << bn << "TextCanvasPane::" << bn << "TextCanvasPane()\n";
  1083. of << "  {\n";
  1084. of << "  }\n";
  1085. of << "\n";
  1086. of << "//=================>>> " << bn << "TextCanvasPane::~" << bn << "TextCanvasPane <<<================\n";
  1087. of << "  " << bn << "TextCanvasPane::~" << bn << "TextCanvasPane()\n";
  1088. of << "  {\n";
  1089. of << "  }\n";
  1090. of << "\n";
  1091. of << "//=====================>>> " << bn << "TextCanvasPane::HPage <<<========================\n";
  1092. of << "  void " << bn << "TextCanvasPane::HPage(int shown, int top)\n";
  1093. of << "  {\n";
  1094. of << "    vTextCanvasPane::HPage(shown, top);\n";
  1095. of << "  }\n";
  1096. of << "\n";
  1097. of << "//=====================>>> " << bn << "TextCanvasPane::VPage <<<========================\n";
  1098. of << "  void " << bn << "TextCanvasPane::VPage(int shown, int top)\n";
  1099. of << "  {\n";
  1100. of << "    vTextCanvasPane::VPage(shown, top);\n";
  1101. of << "  }\n";
  1102. of << "\n";
  1103. of << "//====================>>> " << bn << "TextCanvasPane::HScroll <<<======================\n";
  1104. of << "  void " << bn << "TextCanvasPane::HScroll(int step)\n";
  1105. of << "  {\n";
  1106. of << "    vTextCanvasPane::HScroll(step);\n";
  1107. of << "  }\n";
  1108. of << "\n";
  1109. of << "//====================>>> " << bn << "TextCanvasPane::VScroll <<<======================\n";
  1110. of << "  void " << bn << "TextCanvasPane::VScroll(int step)\n";
  1111. of << "  {\n";
  1112. of << "    vTextCanvasPane::VScroll(step);\n";
  1113. of << "  }\n";
  1114. of << "\n";
  1115. of << "//===================>>> " << bn << "TextCanvasPane::FontChanged <<<==================\n";
  1116. of << "  void " << bn << "TextCanvasPane::FontChanged(vFont& newFont)\n";
  1117. of << "  {\n";
  1118. of << "    vTextCanvasPane::FontChanged(newFont);\n";
  1119. of << "  }\n";
  1120. of << "\n";
  1121. of << "//===================>>> " << bn << "TextCanvasPane::TextMouseDown <<<==================\n";
  1122. of << "  void " << bn << "TextCanvasPane::TextMouseDown(int row, int col, int button)\n";
  1123. of << "  {\n";
  1124. of << "    vTextCanvasPane::TextMouseDown(row,col,button);\n";
  1125. of << "  }\n";
  1126. of << "\n";
  1127. of << "//======================>>> " << bn << "TextCanvasPane::TextMouseUp <<<==================\n";
  1128. of << "  void " << bn << "TextCanvasPane::TextMouseUp(int row, int col, int button)\n";
  1129. of << "  {\n";
  1130. of << "    vTextCanvasPane::TextMouseUp(row,col,button);\n";
  1131. of << "  }\n";
  1132. of << "\n";
  1133. of << "//======================>>> " << bn << "TextCanvasPane::TextMouseMove <<<=================\n";
  1134. of << "  void " << bn << "TextCanvasPane::TextMouseMove(int row, int col, int button)\n";
  1135. of << "  {\n";
  1136. of << "    vTextCanvasPane::TextMouseMove(row,col,button);\n";
  1137. of << "  }\n";
  1138. of << "\n";
  1139. of << "//=========================>>> " << bn << "TextCanvasPane::Redraw <<<======================\n";
  1140. of << "  void " << bn << "TextCanvasPane::Redraw(int x, int y, int w, int h)\n";
  1141. of << "  {\n";
  1142. of << "    vTextCanvasPane::Redraw(x,y,w,h);\n";
  1143. of << "  }\n";
  1144. of << "\n";
  1145. of << "//======================>>> " << bn << "TextCanvasPane::ResizeText <<<======================\n";
  1146. of << "  void " << bn << "TextCanvasPane::ResizeText(const int rows, const int cols)\n";
  1147. of << "  {\n";
  1148. of << "    static int first = 1;\n";
  1149. of << "    if (first)\n";
  1150. of << "      {\n";
  1151. of << "    first = 0; DrawText(\"This is a Text Canvas\\n\");\n";
  1152. of << "      }\n";
  1153. of << "    vTextCanvasPane::ResizeText(rows,cols);\n";
  1154. of << "  }\n";
  1155. of << "\n";
  1156.    of.close();
  1157.  
  1158. //*****************************************************************
  1159. // Generate the canvas .h file
  1160.  
  1161.     strcpy(hName,fn); strcat(hName,"cnv.h");
  1162.  
  1163.     ofstream hf(hName);
  1164.  
  1165.     if (!hf)
  1166.     return 0;
  1167.  
  1168. //---->
  1169. GeneratedBy(of, "//");    //=========================================================
  1170. hf << "//    " << fn << "cnv.h:    Header for " << bn << "TextCanvasPane class\n";
  1171. hf << "//=======================================================================\n";
  1172. hf << "#ifndef " << bn << "TCNV_H\n";
  1173. hf << "#define " << bn << "TCNV_H\n";
  1174. hf << "\n";
  1175. hf << "#include <v/vtextcnv.h>\n";
  1176. hf << "\n";
  1177. hf << "    class " << bn << "TextCanvasPane : public vTextCanvasPane\n";
  1178. hf << "      {\n";
  1179. hf << "      public:        //---------------------------------------- public\n";
  1180. hf << "    " << bn << "TextCanvasPane();\n";
  1181. hf << "    virtual ~" << bn << "TextCanvasPane();\n";
  1182. hf << "\n";
  1183. hf << "    // Scrolling\n";
  1184. hf << "    virtual void HPage(int, int);\n";
  1185. hf << "    virtual void VPage(int, int);\n";
  1186. hf << "\n";
  1187. hf << "    virtual void HScroll(int);\n";
  1188. hf << "    virtual void VScroll(int);\n";
  1189. hf << "\n";
  1190. hf << "    // Events\n";
  1191. hf << "    virtual void FontChanged(vFont& newFont);\n";
  1192. hf << "    virtual void ResizeText(const int rows, const int cols);\n";
  1193. hf << "    virtual void Redraw(int x, int y, int w , int h);\n";
  1194. hf << "    virtual void TextMouseDown(int row, int col, int button);\n";
  1195. hf << "    virtual void TextMouseUp(int row, int col, int button);\n";
  1196. hf << "    virtual void TextMouseMove(int row, int col, int button);\n";
  1197. hf << "\n";
  1198. hf << "      protected:    //--------------------------------------- protected\n";
  1199. hf << "      private:        //--------------------------------------- private\n";
  1200. hf << "      };\n";
  1201. hf << "#endif\n";
  1202. hf << "\n";
  1203.    hf.close();
  1204.    return 1;
  1205.  
  1206.   }
  1207.  
  1208. //=========================>>> genDlg <<<==========================
  1209.   int genDlg(vgOptions& op)
  1210.   {
  1211.     char *bn = &op.appName[0];
  1212.     char *fn = &op.fileName[0];
  1213.     char cppName[100], hName[100];
  1214.  
  1215. //*****************************************************************
  1216. // Generate the dialog .cpp file
  1217.  
  1218.     strcpy(cppName,fn); strcat(cppName,"dlg.cpp");
  1219.  
  1220.     ofstream of(cppName);
  1221.  
  1222.     if (!of)
  1223.     return 0;
  1224.  
  1225. //---->
  1226. GeneratedBy(of, "//");    //=========================================================
  1227. of << "//    " << fn << "dlg.cpp:    Source for " << bn << "Dialog class\n";
  1228. of << "//=======================================================================\n";
  1229. of << "\n";
  1230. of << "#include \"" << fn << "dlg.h\"\n";
  1231. if (!op.extraDialog)
  1232.     of << "#include \"" << fn << "cmdw.h\"\n";
  1233. of << "#include <v/vnotice.h>\n";
  1234. of << "\n";
  1235. of << "//@V@:BeginIDs\n";
  1236. of << "    enum {\n";
  1237. of << "    lblMainMsg = 1000,\n";
  1238. of << "    btnTestDlg        // add your id's here\n";
  1239. of << "  };\n";
  1240. of << "//@V@:EndIds\n";
  1241. of << "\n";
  1242. of << "//@V@:BeginDialogCmd DefaultCmds\n";
  1243. of << "    static DialogCmd DefaultCmds[] =\n";
  1244. of << "      {\n";
  1245. of << "    {C_Label, lblMainMsg, 0,\"X\",NoList,CA_MainMsg,isSens,NoFrame, 0, 0},\n";
  1246. of << "\n";
  1247. of << "    {C_Button, M_Cancel, 0, \" Cancel \",NoList,CA_None,\n";
  1248. of << "        isSens,NoFrame,0, lblMainMsg},\n";
  1249. of << "    {C_Button, M_OK, 0, \" OK \", NoList, CA_DefaultButton,\n";
  1250. of << "        isSens, NoFrame, M_Cancel, lblMainMsg},\n";
  1251. of << "\n";
  1252. of << "    {C_Button, btnTestDlg, 0, \" Test \", NoList, CA_None,\n";
  1253. of << "        isSens, NoFrame, M_OK, lblMainMsg},\n";
  1254. of << "\n";
  1255. of << "    {C_EndOfList,0,0,0,0,CA_None,0,0,0}\n";
  1256. of << "    };\n";
  1257. of << "//@V@:EndDialogCmd\n";
  1258. of << "\n";
  1259. of << "\n";
  1260. of << "//=========================>>> " << bn << "Dialog::" << bn << "Dialog <<<====================\n";
  1261. of << "  " << bn << "Dialog::" << bn << "Dialog(vBaseWindow* bw, char* title) :\n";
  1262. of << "    vDialog(bw, 0, title)\n";
  1263. of << "  {\n";
  1264. of << "      UserDebug(Constructor,\"" << bn << "Dialog::" << bn << "Dialog()\\n\")\n";
  1265. of << "\n";
  1266. if (!op.extraDialog)
  1267.     of << "    _myCmdWin = (" << bn << "CmdWindow*) bw;\n";
  1268. of << "    AddDialogCmds(DefaultCmds);        // add the predefined commands\n";
  1269. of << "  }\n";
  1270. of << "\n";
  1271. of << "//========================>>> " << bn << "Dialog::~" << bn << "Dialog <<<====================\n";
  1272. of << "  " << bn << "Dialog::~" << bn << "Dialog()\n";
  1273. of << "  {\n";
  1274. of << "    UserDebug(Destructor,\"" << bn << "Dialog::~" << bn << "Dialog() destructor\\n\")\n";
  1275. of << "  }\n";
  1276. of << "\n";
  1277. of << "//====================>>> " << bn << "Dialog::DialogCommand <<<=======================\n";
  1278. of << "  void " << bn << "Dialog::DialogCommand(ItemVal id, ItemVal retval, CmdType ctype)\n";
  1279. of << "  {\n";
  1280. of << "    // Dialog commands to here\n";
  1281. of << "\n";
  1282. of << "    UserDebug2(CmdEvents,\"" << bn << "Dialog::DialogCommand(id:%d, val:%d)\\n\",id, retval)\n";
  1283. of << "\n";
  1284. of << "    switch (id)        // We will do some things depending on value\n";
  1285. of << "      {\n";
  1286. of << "    //@V@:Case: btnTestDlg\n";
  1287. of << "    case btnTestDlg:\n";
  1288. of << "      {\n";
  1289. of << "        vNoticeDialog note(this);\n";
  1290. of << "        note.Notice(\"Test Dialog\");\n";
  1291. of << "        break;\n";
  1292. of << "      }    //@V@:EndCase\n";
  1293. of << "\n";
  1294. of << "      }\n";
  1295. of << "\n";
  1296. of << "    vDialog::DialogCommand(id,retval,ctype);\n";
  1297. of << "  }\n";
  1298. of << "\n";
  1299.  
  1300.    of.close();
  1301.  
  1302. //*****************************************************************
  1303. // Generate the dialog .h file
  1304.  
  1305.     strcpy(hName,fn); strcat(hName,"dlg.h");
  1306.  
  1307.     ofstream hf(hName);
  1308.  
  1309.     if (!hf)
  1310.     return 0;
  1311.  
  1312. //---->
  1313.  
  1314. GeneratedBy(of, "//");    //=========================================================
  1315. hf << "//    " << fn << "dlg.h:    Header for " << bn << "Dialog class\n";
  1316. hf << "//=======================================================================\n";
  1317. hf << "\n";
  1318. hf << "#ifndef " << bn << "DIALOG_H\n";
  1319. hf << "#define " << bn << "DIALOG_H\n";
  1320. hf << "#include <v/vdialog.h>\n";
  1321. hf << "\n";
  1322. if (!op.extraDialog)
  1323.     hf << "    class "<< bn << "CmdWindow;\n\n";
  1324. hf << "    class " << bn << "Dialog : public vDialog\n";
  1325. hf << "      {\n";
  1326. hf << "      public:        //---------------------------------------- public\n";
  1327. hf << "    " << bn << "Dialog(vBaseWindow* bw, char* title = \"" << op.title << "\");\n";
  1328. hf << "    virtual ~" << bn << "Dialog();        // Destructor\n";
  1329. hf << "    virtual void DialogCommand(ItemVal,ItemVal,CmdType); // action selected\n";
  1330. hf << "    void AddDefaultCmds();        // to add the defined commands\n";
  1331. hf << "\n";
  1332. hf << "      protected:    //--------------------------------------- protected\n";
  1333. hf << "\n";
  1334. hf << "      private:        //--------------------------------------- private\n";
  1335. hf << "\n";
  1336. if (!op.extraDialog)
  1337.     hf << "    " << bn << "CmdWindow* _myCmdWin;\n";
  1338. hf << "      };\n";
  1339. hf << "#endif\n";
  1340.    hf.close();
  1341.    return 1;
  1342.  
  1343.   }
  1344.  
  1345. //=========================>>> genMdlg <<<==========================
  1346.   int genMDlg(vgOptions& op)
  1347.   {
  1348.     char *bn = &op.appName[0];
  1349.     char *fn = &op.fileName[0];
  1350.     char cppName[100], hName[100];
  1351.  
  1352. //*****************************************************************
  1353. // Generate the modal dialog .cpp file
  1354.  
  1355.     strcpy(cppName,fn); strcat(cppName,"mdlg.cpp");
  1356.  
  1357.     ofstream of(cppName);
  1358.  
  1359.     if (!of)
  1360.     return 0;
  1361.  
  1362. //---->
  1363. GeneratedBy(of, "//");    //=========================================================
  1364. of << "//    " << fn << "mdlg.cpp:    Source for " << bn << "ModalDialog class\n";
  1365. of << "//=======================================================================\n";
  1366. of << "\n";
  1367. of << "#include \"" << fn << "mdlg.h\"\n";
  1368. if (!op.extraDialog)
  1369.     of << "#include \"" << fn << "cmdw.h\"\n";
  1370. of << "#include <v/vnotice.h>\n";
  1371. of << "\n";
  1372. of << "//@V@:BeginIDs\n";
  1373. of << "    enum {\n";
  1374. of << "    lblMainMsg = 1000,\n";
  1375. of << "    btnTestMDlg        // add your id's here\n";
  1376. of << "  };\n";
  1377. of << "//@V@:EndIds\n";
  1378. of << "\n";
  1379. of << "//@V@:BeginDialogCmd DefaultCmds\n";
  1380. of << "    static DialogCmd DefaultCmds[] =\n";
  1381. of << "      {\n";
  1382. of << "    {C_Label, lblMainMsg, 0,\"X\",NoList,CA_MainMsg,isSens,NoFrame, 0, 0},\n";
  1383. of << "\n";
  1384. of << "    {C_Button, M_Cancel, 0, \" Cancel \",NoList,CA_None,\n";
  1385. of << "        isSens,NoFrame,0, lblMainMsg},\n";
  1386. of << "    {C_Button, M_OK, 0, \" OK \", NoList, CA_DefaultButton,\n";
  1387. of << "        isSens, NoFrame, M_Cancel, lblMainMsg},\n";
  1388. of << "\n";
  1389. of << "    {C_Button, btnTestMDlg, 0, \" Test \", NoList, CA_None,\n";
  1390. of << "        isSens, NoFrame, M_OK, lblMainMsg},\n";
  1391. of << "\n";
  1392. of << "    {C_EndOfList,0,0,0,0,CA_None,0,0,0}\n";
  1393. of << "    };\n";
  1394. of << "//@V@:EndDialogCmd\n";
  1395. of << "\n";
  1396. of << "\n";
  1397. of << "//======================>>> " << bn << "ModalDialog::" << bn << "ModalDialog <<<==================\n";
  1398. of << "  " << bn << "ModalDialog::" << bn << "ModalDialog(vBaseWindow* bw, char* title) :\n";
  1399. of << "    vModalDialog(bw, title)\n";
  1400. of << "  {\n";
  1401. of << "    UserDebug(Constructor,\"" << bn << "ModalDialog::" << bn << "ModalDialog()\\n\")\n";
  1402. if (!op.extraDialog)
  1403.     of << "    _myCmdWin = (" << bn << "CmdWindow*) bw;\n";
  1404. of << "    AddDialogCmds(DefaultCmds);        // add the predefined commands\n";
  1405. of << "  }\n";
  1406. of << "\n";
  1407. of << "//===================>>> " << bn << "ModalDialog::~" << bn << "ModalDialog <<<====================\n";
  1408. of << "  " << bn << "ModalDialog::~" << bn << "ModalDialog()\n";
  1409. of << "  {\n";
  1410. of << "    UserDebug(Destructor,\"" << bn << "ModalDialog::~" << bn << "ModalDialog() destructor\\n\")\n";
  1411. of << "  }\n";
  1412. of << "\n";
  1413. of << "//====================>>> " << bn << "ModalDialog::" << bn << "Action <<<====================\n";
  1414. of << "  int " << bn << "ModalDialog::" << bn << "Action(char* msg)\n";
  1415. of << "  {\n";
  1416. of << "    ItemVal ans,rval;\n";
  1417. of << "\n";
  1418. of << "    ans = ShowModalDialog(msg,rval);\n";
  1419. of << "    if (ans == M_Cancel)\n";
  1420. of << "    return 0;\n";
  1421. of << "\n";
  1422. of << "    // *** Add code to process dialog values here\n";
  1423. of << "\n";
  1424. of << "    return ans == M_OK;\n";
  1425. of << "  }\n";
  1426. of << "\n";
  1427. of << "//====================>>> " << bn << "ModalDialog::DialogCommand <<<====================\n";
  1428. of << "  void " << bn << "ModalDialog::DialogCommand(ItemVal id, ItemVal retval, CmdType ctype)\n";
  1429. of << "  {\n";
  1430. of << "    UserDebug2(CmdEvents,\"" << bn << "ModalDialog::DialogCommand(id:%d, val:%d)\\n\",id, retval)\n";
  1431. of << "\n";
  1432. of << "    switch (id)        // We will do some things depending on value\n";
  1433. of << "      {\n";
  1434. of << "    //@V@:Case: btnTestMDlg\n";
  1435. of << "    case btnTestMDlg:\n";
  1436. of << "      {\n";
  1437. of << "        vNoticeDialog note(this);\n";
  1438. of << "        note.Notice(\"Test Dialog\");\n";
  1439. of << "        break;\n";
  1440. of << "      }    //@V@:EndCase\n";
  1441. of << "      }\n";
  1442. of << "\n";
  1443. of << "    vModalDialog::DialogCommand(id,retval,ctype);\n";
  1444. of << "  }\n";
  1445. of << "\n";
  1446.  
  1447.    of.close();
  1448.  
  1449. //*****************************************************************
  1450. // Generate the modal dialog .h file
  1451.  
  1452.     strcpy(hName,fn); strcat(hName,"mdlg.h");
  1453.  
  1454.     ofstream hf(hName);
  1455.  
  1456.     if (!hf)
  1457.     return 0;
  1458.  
  1459. //---->
  1460. GeneratedBy(of, "//");    //=========================================================
  1461. hf << "//    " << fn << "mdlg.h:    Header for " << bn << "ModalDialog class\n";
  1462. hf << "//=======================================================================\n";
  1463. hf << "\n";
  1464. hf << "#ifndef " << bn << "MDLG_H\n";
  1465. hf << "#define " << bn << "MDLG_H\n";
  1466. hf << "\n";
  1467. hf << "#include <v/vmodald.h>\n";
  1468. hf << "\n";
  1469. if (!op.extraDialog)
  1470.     hf << "    class "<< bn << "CmdWindow;\n\n";
  1471. hf << "    class " << bn << "ModalDialog : public vModalDialog\n";
  1472. hf << "      {\n";
  1473. hf << "      public:        //---------------------------------------- public\n";
  1474. hf << "    " << bn << "ModalDialog(vBaseWindow* bw, char* title = \"" << op.title << "\");\n";
  1475. hf << "    virtual ~" << bn << "ModalDialog();        // Destructor\n";
  1476. hf << "    virtual void DialogCommand(ItemVal,ItemVal,CmdType); // action selected\n";
  1477. hf << "    virtual int " << bn << "Action(char* msg);\n";
  1478. hf << "\n";
  1479. hf << "      protected:    //--------------------------------------- protected\n";
  1480. hf << "\n";
  1481. hf << "      private:        //--------------------------------------- private\n";
  1482. hf << "\n";
  1483. if (!op.extraDialog)
  1484.     hf << "    " << bn << "CmdWindow* _myCmdWin;\n";
  1485. hf << "      };\n";
  1486. hf << "#endif\n";
  1487. hf << "\n";
  1488.  
  1489.    hf.close();
  1490.    return 1;
  1491.  
  1492.   }
  1493.  
  1494. //*****************************************************************
  1495. // Generate the V IDE Project file
  1496.  
  1497. //=========================>>> genProject <<<==========================
  1498.   int genProject(vgOptions& op)
  1499.   {
  1500.  
  1501.     static const char SecProjOpts[] = "//% Section 1 - PROJECT OPTIONS";
  1502.     static const char SecProjOptsEnd[] = "//%end-proj-opts";
  1503.     static const char SecMakefile[] = "//% Section 2 - MAKEFILE";
  1504.     static const char SecOptions[] = "//% Section 3 - OPTIONS";
  1505.     static const char SecOptionsEnd[] = "//%end-options";
  1506.     static const char SecHomeV[] = "//% Section 4 - HOMEV";
  1507.     static const char SecTarget[] = "//% Section 5  - TARGET FILE";
  1508.     static const char SecObjFiles[] = "//% Section 6  - SOURCE FILES";
  1509.     static const char SecObjFilesEnd[] = "//%end-srcfiles";
  1510.     static const char SecCompiler[] = "//% Section 7  - COMPILER NAME";
  1511.     static const char SecIncDirs[] = "//% Section 8  - INCLUDE DIRECTORIES";
  1512.     static const char SecIncDirsEnd[] = "//%end-include-dirs";
  1513.     static const char SecLibDirs[] = "//% Section 9 - LIBRARY DIRECTORIES";
  1514.     static const char SecLibDirsEnd[] = "//%end-library-dirs";
  1515.     static const char SecDefs[] = "//% Section 10  - DEFINITIONS";
  1516.     static const char SecDefsPoolEnd[] = "//%end-defs-pool";
  1517.     static const char SecDefsEnd[] = "//%end-defs";
  1518.     static const char SecCFlags[] = "//% Section 11  - C FLAGS";
  1519.     static const char SecLibFlags[] = "//% Section 12  - LIBRARY FLAGS";
  1520.     static const char SecSrcDir[] = "//% Section 13  - SRC DIRECTORY";
  1521.     static const char SecObjDir[] = "//% Section 14  - OBJ DIRECTORY";
  1522.     static const char SecBinDir[] = "//% Section 15 - BIN DIRECTORY";
  1523.     static const char SecUserTargets[] = "//% Section 16 - USER TARGETS";
  1524.     static const char SecUserTargetsEnd[] = "//%end-user-targets";
  1525.  
  1526.     char *fn = &op.fileName[0];
  1527.     char *bn = &op.appName[0];
  1528.     char name[100];
  1529.  
  1530.     strcpy(name,bn); strcat(name,".vpj");
  1531.     ofstream prjf(name);
  1532.  
  1533.     if (!prjf)
  1534.     return 0;
  1535. //---------------------------------------------------------------
  1536.  //header
  1537.     char buff[40];
  1538.     char date[20];
  1539.     vGetLocalTime(buff);
  1540.     vGetLocalDate(date);
  1541.  
  1542.     prjf << "//=======================================================================\n";
  1543.     prjf << "//@V@:Note: Project File generated by VGEN for VIDE: ";
  1544.     prjf << "(" << buff << " " << date << ").\n";
  1545.     prjf << "//CAUTION! Hand edit only if you know what you are doing!\n";
  1546.     prjf << "//=======================================================================\n\n";
  1547.  
  1548.     // Project Options
  1549.     prjf << SecProjOpts << endl;
  1550.  
  1551.     prjf << SecProjOptsEnd << endl << endl;
  1552.  
  1553.     // Makefile name
  1554.     prjf << SecMakefile << endl;
  1555.     prjf << "makefile." << op.fileName << endl << endl;
  1556.  
  1557.     // Options
  1558.     prjf << SecOptions << endl;
  1559.     prjf << SecOptionsEnd << endl << endl;
  1560.  
  1561.     // HOMEV
  1562.     prjf << SecHomeV << endl;
  1563.     prjf << op.home << endl << endl;
  1564.  
  1565.     // 1) name of exe target file
  1566.     prjf << SecTarget << endl;
  1567. #ifdef V_VersionX
  1568.     prjf << bn << endl << endl;
  1569. #else
  1570.     prjf << bn << ".exe" << endl << endl;
  1571. #endif
  1572.  
  1573.     // 2) source files
  1574.     prjf << SecObjFiles << endl;
  1575.     prjf << fn  << "app.cpp" << endl;
  1576.     if (op.addDialog)
  1577.     prjf << fn << "dlg.cpp" << endl;
  1578.     if (op.addModal)
  1579.     prjf << fn << "mdlg.cpp" << endl;
  1580.     if (op.canvasType != NoCanvas)
  1581.     prjf << fn << "cnv.cpp" << endl;
  1582.     prjf << fn << "cmdw.cpp" << endl;
  1583.     prjf << SecObjFilesEnd << endl << endl;
  1584.  
  1585.     // 3) compiler name
  1586.     prjf << SecCompiler << endl;
  1587.     prjf << "g++" << endl << endl;
  1588.  
  1589.     // 4) include dirs
  1590.     prjf << SecIncDirs << endl;
  1591.     prjf << "$(HOMEV)/include" << endl;
  1592. #ifdef V_VersionX
  1593.     prjf << "/usr/X11/include" << endl;
  1594. #endif
  1595.  
  1596.     prjf << SecIncDirsEnd << endl << endl;
  1597.  
  1598.     // 5) lib dirs
  1599.     prjf << SecLibDirs << endl;
  1600.     prjf << "$(HOMEV)/lib" << endl;
  1601. #ifdef V_VersionX
  1602.     prjf << "/usr/X11R6/lib" << endl;
  1603. #endif
  1604.     prjf << SecLibDirsEnd << endl << endl;
  1605.  
  1606.     // 6) defs
  1607.     prjf << SecDefs << endl;
  1608.     prjf << SecDefsPoolEnd << endl;
  1609.  
  1610.     prjf << SecDefsEnd << endl << endl;
  1611.  
  1612.     // 7) cflag
  1613.     prjf << SecCFlags << endl;
  1614.     prjf << "-O" << endl << endl;
  1615.  
  1616.     // 8) libflag 
  1617.     prjf << SecLibFlags << endl;
  1618.  
  1619.     if (op.canvasType == OpenGL)
  1620.       {
  1621.     prjf << OGLDEF_LIBS << endl << endl;
  1622.       }
  1623.     else
  1624.       {
  1625.     prjf << DEF_LIBS << endl << endl;
  1626.       }
  1627.  
  1628.     // src directory
  1629.     prjf << SecSrcDir << endl;
  1630.     prjf << "." << endl << endl;
  1631.  
  1632.     // 9) object directory
  1633.     prjf << SecObjDir << endl;
  1634.     prjf << "." << endl << endl;
  1635.  
  1636.     //10) bin directory
  1637.     prjf << SecBinDir << endl;
  1638.     prjf << "." << endl << endl;
  1639.  
  1640.     // User Targets
  1641.     prjf << endl << "//% User targets section. Following lines will be" << endl;
  1642.     prjf << "//% inserted into Makefile right before the generated cleanall target." << endl;
  1643.     prjf << "//% The Project File editor does not edit these lines - edit the .vpj" << endl;
  1644.     prjf << "//% directly. You should know what you are doing." << endl;
  1645.  
  1646.     prjf << SecUserTargets << endl;
  1647.     prjf << SecUserTargetsEnd << endl << endl;
  1648. //---------------------------------------------------------------
  1649.  
  1650.     prjf.close();
  1651.     return 1;
  1652.   }
  1653.  
  1654.  
  1655. //*****************************************************************
  1656. // Generate the g++ Make file 
  1657.  
  1658. //=========================>>> genMake <<<==========================
  1659.   int genMake(vgOptions& op)
  1660.   {
  1661.     char *bn = &op.appName[0];
  1662.     char *fn = &op.fileName[0];
  1663.     char name[100];
  1664.  
  1665.     strcpy(name,"makefile."); strcat(name,fn);
  1666.  
  1667.     ofstream of(name);
  1668.  
  1669.     if (!of)
  1670.     return 0;
  1671.  
  1672. //------>
  1673.  
  1674. GeneratedBy(of, "#");    //=========================================================
  1675. of << "#=======================================================================\n";
  1676. of << "\n";
  1677. of << "CC    =    g++\n";
  1678. of << "\n";
  1679. of << "HOMEV    =    " << op.home << "\n";
  1680. #ifdef V_VersionX
  1681. of << "X11INC    =    /usr/X11/include\n";
  1682. of << "X11LIB    =    /usr/X11R6/lib\n";
  1683. #endif
  1684. if (op.canvasType == OpenGL)
  1685. of << "LIBS    =    " << OGLDEF_LIBS << "\n";
  1686. else
  1687. of << "LIBS    =    " << DEF_LIBS << "\n";
  1688. of << "VLibDir    =    $(HOMEV)/lib\n";
  1689. of << "oDir    =    .\n";
  1690. of << "Bin    =    .\n";
  1691. of << "\n";
  1692. of << "VPATH    =    $(HOMEV)" << DEF_VPATH << "\n";
  1693. of << "\n";
  1694. of << "#--------------------------------------------------------------\n";
  1695. of << "# Architecture dependent\n";
  1696. of << "\n";
  1697. of << "# Flags for includes and libraries\n";
  1698. of << "\n";
  1699. #ifdef V_VersionX
  1700. of << "CFLAGS    =    -O -I$(X11INC) -I$(HOMEV)" << DEF_VPATH << "\n";
  1701. of << "\n";
  1702. of << "LFLAGS    =    -O -L$(X11LIB) -L$(VLibDir)\n";
  1703. of << "\n";
  1704. #else
  1705. of << "CFLAGS    =    -O -I$(HOMEV)" << DEF_VPATH << "\n";
  1706. of << "\n";
  1707. of << "LFLAGS    =    -O -L$(VLibDir)\n";
  1708. of << "\n";
  1709. #endif
  1710. of << "EXOBJS    =    $(oDir)/" << fn  << "app.o \\\n";
  1711. if (op.addDialog)
  1712.     of << "        $(oDir)/" << fn << "dlg.o \\\n";
  1713. if (op.addModal)
  1714.     of << "        $(oDir)/" << fn << "mdlg.o \\\n";
  1715. if (op.canvasType != NoCanvas)
  1716.     of << "        $(oDir)/" << fn << "cnv.o \\\n";
  1717. of << "        $(oDir)/" << fn << "cmdw.o\n";
  1718. of << "\n";
  1719. #ifdef V_VersionX
  1720. of << "all:    $(Bin)/" << bn << "\n";
  1721. #else
  1722. of << "all:    $(Bin)/" << bn << ".exe\n";
  1723. #endif
  1724. of << "\n";
  1725. of << "objs:    $(EXOBJS)\n";
  1726. of << "\n";
  1727. of << "clean:\n";
  1728. of << "    rm $(EXOBJS)\n";
  1729. of << "\n";
  1730. //
  1731. // BEW: 4/6/98 Changed so that same makefile will work with either
  1732. //    libV.a or libV.so. Probably should put a dependency on
  1733. //    v_defs.h in the code files, but that will have complications
  1734. //    of its own. We will assume that V is constant for now.
  1735. //
  1736. #ifdef REQUIRE_LIBV
  1737. #ifdef V_VersionX
  1738. of << "$(Bin)/" << bn <<":    $(EXOBJS) $(VLibDir)/libV.a\n";
  1739. #else
  1740. of << "$(Bin)/" << bn <<".exe:    $(EXOBJS) $(VLibDir)/libV.a\n";
  1741. #endif
  1742.  
  1743. #else
  1744.  
  1745. #ifdef V_VersionX
  1746. of << "$(Bin)/" << bn <<":    $(EXOBJS)\n";    // so don't require libV.a
  1747. #else
  1748. of << "$(Bin)/" << bn <<".exe:    $(EXOBJS)\n";    // so don't require libV.a
  1749. #endif
  1750. #endif
  1751. of << "    $(CC) -o $@ $(LFLAGS) $(EXOBJS) $(LIBS)\n";
  1752. of << "\n";
  1753. if (op.canvasType != NoCanvas)
  1754.   {
  1755.     of << "$(oDir)/" << fn << "cnv.o:    " << fn << "cnv.cpp  " << fn << "cnv.h\n";
  1756.     of << "    $(CC) -c $(CFLAGS) -o $@ $<\n";
  1757.     of << "\n";
  1758.   }
  1759. if (op.addDialog)
  1760. {
  1761.     of << "$(oDir)/" << fn << "dlg.o:    " << fn << "dlg.cpp  " << fn << "dlg.h\n";
  1762.     of << "    $(CC) -c $(CFLAGS) -o $@ $<\n";
  1763.     of << "\n";
  1764. }
  1765. if (op.addModal)
  1766. {
  1767.     of << "$(oDir)/" << fn << "mdlg.o:    " << fn << "mdlg.cpp " << fn << "mdlg.h\n";
  1768.     of << "    $(CC) -c $(CFLAGS) -o $@ $<\n";
  1769.     of << "\n";
  1770. }
  1771. of << "$(oDir)/" << fn << "cmdw.o:    " << fn << "cmdw.cpp " << fn << "cmdw.h\n";
  1772. of << "    $(CC) -c $(CFLAGS) -o $@ $<\n";
  1773. of << "\n";
  1774.  
  1775. //***** Handle different dependencies for dialogs
  1776.  
  1777. if (op.addDialog && op.addModal)
  1778. {
  1779. of << "$(oDir)/" << fn << "app.o:    " << fn << "app.cpp " << fn << "dlg.h " << fn << "mdlg.h \\\n";
  1780. of << "    " << fn << "app.h " << fn << "cmdw.h\n";
  1781. of << "    $(CC) -c $(CFLAGS) -o $@ $<\n";
  1782. }
  1783. else if (op.addDialog)
  1784. {
  1785. of << "$(oDir)/" << fn << "app.o:    " << fn << "app.cpp " << fn << "dlg.h \\\n";
  1786. of << "    " << fn << "app.h " << fn << "cmdw.h\n";
  1787. of << "    $(CC) -c $(CFLAGS) -o $@ $<\n";
  1788. }
  1789. else if (op.addModal)
  1790. {
  1791. of << "$(oDir)/" << fn << "app.o:    " << fn << "app.cpp " << fn << "mdlg.h \\\n";
  1792. of << "    " << fn << "app.h " << fn << "cmdw.h\n";
  1793. of << "    $(CC) -c $(CFLAGS) -o $@ $<\n";
  1794. }
  1795. else
  1796. {
  1797. of << "$(oDir)/" << fn << "app.o:    " << fn << "app.cpp \\\n";
  1798. of << "    " << fn << "app.h " << fn << "cmdw.h\n";
  1799. of << "    $(CC) -c $(CFLAGS) -o $@ $<\n";
  1800. }
  1801.  
  1802.     of.close();
  1803.     return 1;
  1804.   }
  1805.