1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: Generate sample VC++ project files
4 // Author: Julian Smart
8 // Copyright: (c) Julian Smart
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
13 #pragma implementation "makeproj.h"
16 // For compilers that support precompilation, includes "wx.h".
17 #include "wx/wxprec.h"
19 #if defined(__BORLANDC__)
24 #include "wx/resource.h"
30 #include "projgenrc.h"
32 // ----------------------------------------------------------------------------
34 // ----------------------------------------------------------------------------
35 // the application icon
36 #if defined(__WXGTK__) || defined(__WXMOTIF__)
37 #include "mondrian.xpm"
40 // ----------------------------------------------------------------------------
42 // ----------------------------------------------------------------------------
44 // Define a new application type, each program should derive a class from wxApp
45 class MyApp
: public wxApp
48 // override base class virtuals
49 // ----------------------------
51 // this one is called on application startup and is a good place for the app
52 // initialization (doing it here and not in the ctor allows to have an error
53 // return: if OnInit() returns false, the application terminates)
54 virtual bool OnInit();
56 bool GenerateSample(const wxString
& projectName
, const wxString
& targetName
,
57 const wxString
& path
, const wxStringList
& sourceFiles
, const wxString
& relativeRootPath
= "../..");
58 void GenerateSamples(const wxString
& dir
); // Takes wxWindows directory path
61 // Define a new frame type: this is going to be our main frame
62 class MyFrame
: public wxFrame
66 MyFrame(const wxString
& title
, const wxPoint
& pos
, const wxSize
& size
);
68 // event handlers (these functions should _not_ be virtual)
69 void OnQuit(wxCommandEvent
& event
);
70 void OnAbout(wxCommandEvent
& event
);
71 void OnGenerate(wxCommandEvent
& event
);
73 bool GenerateSample(const wxString
& projectName
, const wxString
& targetName
,
74 const wxString
& path
, const wxStringList
& sourceFiles
, const wxString
& relativeRootPath
= "../..");
77 // any class wishing to process wxWindows events must use this macro
81 // Define a dialog: this will be our main dialog
82 class MyDialog
: public wxDialog
86 MyDialog(const wxString
& title
, const wxPoint
& pos
= wxDefaultPosition
, const wxSize
& size
= wxDefaultSize
);
88 // event handlers (these functions should _not_ be virtual)
89 void OnQuit(wxCommandEvent
& event
);
90 void OnAbout(wxCommandEvent
& event
);
91 void OnGenerate(wxCommandEvent
& event
);
92 void OnGenerateSamples(wxCommandEvent
& event
);
95 // any class wishing to process wxWindows events must use this macro
100 // ----------------------------------------------------------------------------
102 // ----------------------------------------------------------------------------
104 // IDs for the controls and the menu commands
108 MakeProject_Quit
= 1,
110 MakeProject_Generate
,
111 MakeProject_GenerateSamples
,
113 // controls start here (the numbers are, of course, arbitrary)
114 MakeProject_Text
= 1000,
117 // ----------------------------------------------------------------------------
118 // event tables and other macros for wxWindows
119 // ----------------------------------------------------------------------------
121 // the event tables connect the wxWindows events with the functions (event
122 // handlers) which process them. It can be also done at run-time, but for the
123 // simple menu events like this the static method is much simpler.
124 BEGIN_EVENT_TABLE(MyFrame
, wxFrame
)
125 EVT_MENU(MakeProject_Quit
, MyFrame::OnQuit
)
126 EVT_MENU(MakeProject_About
, MyFrame::OnAbout
)
127 EVT_MENU(MakeProject_Generate
, MyFrame::OnGenerate
)
130 // Create a new application object: this macro will allow wxWindows to create
131 // the application object during program execution (it's better than using a
132 // static object for many reasons) and also declares the accessor function
133 // wxGetApp() which will return the reference of the right type (i.e. MyApp and
137 // ============================================================================
139 // ============================================================================
141 // ----------------------------------------------------------------------------
142 // the application class
143 // ----------------------------------------------------------------------------
145 // 'Main program' equivalent: the program execution "starts" here
149 // Create the main application window
150 MyFrame
*frame
= new MyFrame("MakeProject wxWindows App",
151 wxPoint(50, 50), wxSize(450, 340));
156 wxResourceParseFile("projgenrc.wxr");
158 MyDialog
* dialog
= new MyDialog("VC++ MakeProject");
164 bool MyApp::GenerateSample(const wxString
& projectName
, const wxString
& targetName
,
165 const wxString
& path
, const wxStringList
& sourceFiles
, const wxString
& relativeRootPath
)
167 wxString
relativeIncludePath(relativeRootPath
+ wxString("/include"));
168 wxString
relativeLibPath(relativeRootPath
+ wxString("/lib"));
169 wxString
relativeDebugPath(relativeRootPath
+ wxString("/src/Debug"));
170 wxString
relativeReleasePath(relativeRootPath
+ wxString("/src/Release"));
171 wxString
relativeDebugPathJPEG(relativeRootPath
+ wxString("/src/jpeg/Debug"));
172 wxString
relativeReleasePathJPEG(relativeRootPath
+ wxString("/src/jpeg/Release"));
173 wxString
relativeDebugPathTIFF(relativeRootPath
+ wxString("/src/tiff/Debug"));
174 wxString
relativeReleasePathTIFF(relativeRootPath
+ wxString("/src/tiff/Release"));
179 project
.SetIncludeDirs(wxStringList((const char*) relativeIncludePath
, 0));
180 project
.SetResourceIncludeDirs(wxStringList((const char*) relativeIncludePath
, 0));
181 project
.SetLibDirs(wxStringList((const char*) relativeLibPath
, 0));
182 project
.SetDebugLibDirs(wxStringList((const char*) relativeDebugPath
, (const char*) relativeDebugPathJPEG
, (const char*) relativeDebugPathTIFF
, 0));
183 project
.SetReleaseLibDirs(wxStringList((const char*) relativeReleasePath
, (const char*) relativeReleasePathJPEG
, (const char*) relativeReleasePathTIFF
, 0));
185 project
.SetProjectName(projectName
);
186 project
.SetTargetName(targetName
);
187 project
.SetProjectPath(path
);
188 project
.SetSourceFiles(sourceFiles
);
190 if (!project
.GenerateVCProject())
192 wxString
msg("Could not generate ");
201 void MyApp::GenerateSamples(const wxString
& dir
)
203 // Small bug. Because we don't distinguish between Debug/DebugDLL, Release/ReleaseDLL,
204 // we can't yet make a sample that uses other wxWindows static libraries + the wxWindows DLL library.
208 GenerateSample("CalendarVC", "calendar", dir
+ wxString("/samples/calendar"), wxStringList("calendar.cpp", 0));
209 GenerateSample("CaretVC", "caret", dir
+ wxString("/samples/caret"), wxStringList("caret.cpp", 0));
210 GenerateSample("CheckLstVC", "checklst", dir
+ wxString("/samples/checklst"), wxStringList("checklst.cpp", 0));
211 GenerateSample("ConfigVC", "conftest", dir
+ wxString("/samples/config"), wxStringList("conftest.cpp", 0));
212 GenerateSample("ControlsVC", "controls", dir
+ wxString("/samples/controls"), wxStringList("controls.cpp", 0));
213 GenerateSample("DbVC", "dbtest", dir
+ wxString("/samples/db"),
214 wxStringList("dbtest.cpp", "listdb.cpp", "dbtest.h", "listdb.h", 0));
215 GenerateSample("DialogsVC", "dialogs", dir
+ wxString("/samples/dialogs"),
216 wxStringList("dialogs.cpp", "dialogs.h", 0));
217 GenerateSample("DndVC", "dnd", dir
+ wxString("/samples/dnd"), wxStringList("dnd.cpp", 0));
218 GenerateSample("DocViewVC", "docview", dir
+ wxString("/samples/docview"),
219 wxStringList("docview.cpp", "doc.cpp", "view.cpp", "docview.h", "doc.h", "view.h", 0));
220 GenerateSample("DocVwMDIVC", "docview", dir
+ wxString("/samples/docvwmdi"),
221 wxStringList("docview.cpp", "doc.cpp", "view.cpp", "docview.h", "doc.h", "view.h", 0));
222 GenerateSample("DynamicVC", "dynamic", dir
+ wxString("/samples/dynamic"), wxStringList("dynamic.cpp", 0));
223 GenerateSample("DrawingVC", "drawing", dir
+ wxString("/samples/drawing"), wxStringList("drawing.cpp", 0));
224 GenerateSample("GridVC", "test", dir
+ wxString("/samples/grid"), wxStringList("test.cpp", 0));
225 GenerateSample("NewGridVC", "griddemo", dir
+ wxString("/samples/newgrid"), wxStringList("griddemo.cpp", 0));
226 GenerateSample("HelpVC", "demo", dir
+ wxString("/samples/help"), wxStringList("demo.cpp", 0));
229 GenerateSample("AboutVC", "about", dir
+ wxString("/samples/html/about"), wxStringList("about.cpp", 0),
231 GenerateSample("HelpVC", "help", dir
+ wxString("/samples/html/help"), wxStringList("help.cpp", 0),
233 GenerateSample("PrintingVC", "printing", dir
+ wxString("/samples/html/printing"), wxStringList("printing.cpp", 0),
235 GenerateSample("TestVC", "test", dir
+ wxString("/samples/html/test"), wxStringList("test.cpp", 0),
237 GenerateSample("VirtualVC", "virtual", dir
+ wxString("/samples/html/virtual"), wxStringList("virtual.cpp", 0),
239 GenerateSample("WidgetVC", "widget", dir
+ wxString("/samples/html/widget"), wxStringList("widget.cpp", 0),
241 GenerateSample("ZipVC", "zip", dir
+ wxString("/samples/html/zip"), wxStringList("zip.cpp", 0),
243 GenerateSample("HelpViewVC", "helpview", dir
+ wxString("/samples/html/helpview"), wxStringList("helpview.cpp", 0),
246 GenerateSample("ImageVC", "image", dir
+ wxString("/samples/image"), wxStringList("image.cpp", 0));
247 GenerateSample("InternatVC", "internat", dir
+ wxString("/samples/internat"), wxStringList("internat.cpp", 0));
248 GenerateSample("JoytestVC", "joytest", dir
+ wxString("/samples/joytest"), wxStringList("joytest.cpp", "joytest.h", 0));
249 GenerateSample("LayoutVC", "layout", dir
+ wxString("/samples/layout"), wxStringList("layout.cpp", "layout.h", 0));
250 GenerateSample("ListctrlVC", "listtest", dir
+ wxString("/samples/listctrl"), wxStringList("listtest.cpp", "listtest.h", 0));
251 GenerateSample("MdiVC", "mdi", dir
+ wxString("/samples/mdi"), wxStringList("mdi.cpp", "mdi.h", 0));
252 GenerateSample("MemcheckVC", "memcheck", dir
+ wxString("/samples/memcheck"), wxStringList("memcheck.cpp", 0));
253 // Note: MFC sample will be different.
254 GenerateSample("MfcVC", "mfc", dir
+ wxString("/samples/mfc"), wxStringList("mfctest.cpp", "mfctest.h", 0));
255 GenerateSample("MiniframVC", "test", dir
+ wxString("/samples/minifram"), wxStringList("test.cpp", "test.h", 0));
256 GenerateSample("MinimalVC", "minimal", dir
+ wxString("/samples/minimal"), wxStringList("minimal.cpp", 0));
257 GenerateSample("NativdlgVC", "nativdlg", dir
+ wxString("/samples/nativdlg"), wxStringList("nativdlg.cpp", "nativdlg.h", "resource.h", 0));
258 GenerateSample("DialupVC", "nettest", dir
+ wxString("/samples/dialup"), wxStringList("nettest.cpp", 0));
259 GenerateSample("NotebookVC", "test", dir
+ wxString("/samples/notebook"), wxStringList("test.cpp", "test.h", 0));
260 GenerateSample("OleautoVC", "oleauto", dir
+ wxString("/samples/oleauto"), wxStringList("oleauto.cpp", 0));
261 GenerateSample("OwnerdrwVC", "ownerdrw", dir
+ wxString("/samples/ownerdrw"), wxStringList("ownerdrw.cpp", 0));
262 GenerateSample("PngVC", "pngdemo", dir
+ wxString("/samples/png"), wxStringList("pngdemo.cpp", "pngdemo.h", 0));
263 GenerateSample("PrintingVC", "printing", dir
+ wxString("/samples/printing"), wxStringList("printing.cpp", "printing.h", 0));
264 GenerateSample("ProplistVC", "test", dir
+ wxString("/samples/proplist"), wxStringList("test.cpp", "test.h", 0));
265 GenerateSample("RegtestVC", "regtest", dir
+ wxString("/samples/regtest"), wxStringList("regtest.cpp", 0));
266 GenerateSample("ResourceVC", "resource", dir
+ wxString("/samples/resource"), wxStringList("resource.cpp", "resource.h", 0));
267 GenerateSample("RichEditVC", "wxLayout", dir
+ wxString("/samples/richedit"), wxStringList("wxLayout.cpp",
268 "kbList.cpp", "wxllist.cpp", "wxlparser.cpp", "wxlwindow.cpp", 0));
269 GenerateSample("SashtestVC", "sashtest", dir
+ wxString("/samples/sashtest"), wxStringList("sashtest.cpp", "sashtest.h", 0));
270 GenerateSample("ScrollVC", "scroll", dir
+ wxString("/samples/scroll"), wxStringList("scroll.cpp", 0));
271 GenerateSample("SplitterVC", "test", dir
+ wxString("/samples/splitter"), wxStringList("test.cpp", 0));
272 GenerateSample("TabVC", "test", dir
+ wxString("/samples/tab"), wxStringList("test.cpp", "test.h", 0));
273 GenerateSample("TaskbarVC", "tbtest", dir
+ wxString("/samples/taskbar"), wxStringList("tbtest.cpp", "tbtest.h", 0));
274 GenerateSample("TextVC", "text", dir
+ wxString("/samples/text"), wxStringList("text.cpp", 0));
275 GenerateSample("ThreadVC", "test", dir
+ wxString("/samples/thread"), wxStringList("test.cpp", 0));
276 GenerateSample("ToolbarVC", "test", dir
+ wxString("/samples/toolbar"), wxStringList("test.cpp", "test.h", 0));
277 GenerateSample("TreectrlVC", "treetest", dir
+ wxString("/samples/treectrl"), wxStringList("treetest.cpp", "treetest.h", 0));
278 GenerateSample("TypetestVC", "typetest", dir
+ wxString("/samples/typetest"), wxStringList("typetest.cpp", "typetest.h", 0));
279 GenerateSample("ValidateVC", "validate", dir
+ wxString("/samples/validate"), wxStringList("validate.cpp", "validate.h", 0));
280 GenerateSample("ClientVC", "client", dir
+ wxString("/samples/socket"), wxStringList("client.cpp", 0));
281 GenerateSample("ServerVC", "server", dir
+ wxString("/samples/socket"), wxStringList("server.cpp", 0));
282 GenerateSample("ClientVC", "client", dir
+ wxString("/samples/dde"), wxStringList("client.cpp", "client.h", "ddesetup.h", 0));
283 GenerateSample("ServerVC", "server", dir
+ wxString("/samples/dde"), wxStringList("server.cpp", "server.h", "ddesetup.h", 0));
284 GenerateSample("CaretVC", "caret", dir
+ wxString("/samples/caret"), wxStringList("caret.cpp", 0));
285 GenerateSample("DrawingVC", "drawing", dir
+ wxString("/samples/drawing"), wxStringList("drawing.cpp", 0));
286 GenerateSample("ScrollVC", "scroll", dir
+ wxString("/samples/scroll"), wxStringList("scroll.cpp", 0));
287 GenerateSample("WizardVC", "wizard", dir
+ wxString("/samples/wizard"), wxStringList("wiztest.cpp", 0));
291 GenerateSample("BombsVC", "bombs", dir
+ wxString("/demos/bombs"),
292 wxStringList("bombs.cpp", "bombs1.cpp", "game.cpp", "bombs.h", "game.h", 0));
294 GenerateSample("FortyVC", "forty", dir
+ wxString("/demos/forty"),
295 wxStringList("forty.cpp", "canvas.cpp", "card.cpp", "game.cpp", "pile.cpp", "playerdg.cpp", "scoredg.cpp", "scorefil.cpp",
296 "canvas.h", "forty.h", "card.h", "game.h", "pile.h", "playerdg.h", "scoredg.h", "scorefil.h",
299 GenerateSample("FractalVC", "fractal", dir
+ wxString("/demos/fractal"), wxStringList("fractal.cpp", 0));
301 GenerateSample("LifeVC", "life", dir
+ wxString("/demos/life"),
302 wxStringList("life.cpp", "game.cpp", "dialogs.cpp", "life.h", "game.h", "dialogs.h", 0));
304 GenerateSample("PoemVC", "wxpoem", dir
+ wxString("/demos/poem"), wxStringList("wxpoem.cpp", "wxpoem.h", 0));
311 project
.SetIncludeDirs(wxStringList("../../../include", 0));
312 project
.SetResourceIncludeDirs(wxStringList("../../../include", 0));
313 project
.SetLibDirs(wxStringList("../../../lib", 0));
314 project
.SetDebugLibDirs(wxStringList("../../../src/Debug", 0));
315 project
.SetReleaseLibDirs(wxStringList("../../../src/Release", 0));
317 project
.SetProjectName("DialogEdVC");
318 project
.SetTargetName("dialoged");
319 project
.SetProjectPath(dir
+ wxString("/utils/dialoged/src"));
320 project
.SetSourceFiles(wxStringList("dialoged.cpp", "dlghndlr.cpp", "edlist.cpp", "edtree.cpp",
321 "reseditr.cpp", "reswrite.cpp", "symbtabl.cpp", "winstyle.cpp", "winprop.cpp",
322 "dialoged.h", "dlghndlr.h", "edlist.h", "edtree.h", "reseditr.h", "symbtabl.h", "winprop.h",
326 if (!project
.GenerateVCProject())
328 wxString
msg("Could not generate Dialog Editor project");
333 project
.SetIncludeDirs(wxStringList("../../../include", 0));
334 project
.SetResourceIncludeDirs(wxStringList("../../../include", 0));
335 project
.SetLibDirs(wxStringList("../../../lib", 0));
336 project
.SetDebugLibDirs(wxStringList("../../../src/Debug", 0));
337 project
.SetReleaseLibDirs(wxStringList("../../../src/Release", 0));
339 project
.SetProjectName("Tex2RTFVC");
340 project
.SetTargetName("tex2rtf");
341 project
.SetProjectPath(dir
+ wxString("/utils/tex2rtf/src"));
342 project
.SetSourceFiles(wxStringList("tex2rtf.cpp", "htmlutil.cpp", "readshg.cpp", "rtfutils.cpp",
343 "table.cpp", "tex2any.cpp", "texutils.cpp", "xlputils.cpp",
344 "bmputils.h", "readshg.h", "rtfutils.h", "table.h", "tex2any.h", "tex2rtf.h", "wxhlpblk.h",
347 if (!project
.GenerateVCProject())
349 wxString
msg("Could not generate Tex2RTF project");
354 project
.SetIncludeDirs(wxStringList("../../../include", 0));
355 project
.SetResourceIncludeDirs(wxStringList("../../../include", 0));
356 project
.SetLibDirs(wxStringList("../../../lib", 0));
357 project
.SetDebugLibDirs(wxStringList("../../../src/Debug", 0));
358 project
.SetReleaseLibDirs(wxStringList("../../../src/Release", 0));
360 project
.SetProjectName("HelpGenVC");
361 project
.SetTargetName("helpgen");
362 project
.SetProjectPath(dir
+ wxString("/utils/helpgen/src"));
363 project
.SetSourceFiles(wxStringList("helpgen.cpp", "cjparser.cpp", "docripper.cpp", "ifcontext.cpp",
364 "markup.cpp", "ripper_main.cpp", "scriptbinder.cpp", "sourcepainter.cpp",
366 "cjparser.h", "docripper.h", "ifcontext.h", "markup.h", "scriptbinder.h", "sourcepainter.h",
367 "srcparser.h", "wxstlac.h", "wxstllst.h", "wxstlvec.h", 0));
369 if (!project
.GenerateVCProject())
371 wxString
msg("Could not generate HelpGen project");
376 project
.SetIncludeDirs(wxStringList("../../include", 0));
377 project
.SetResourceIncludeDirs(wxStringList("../../include", 0));
378 project
.SetLibDirs(wxStringList("../../lib", 0));
379 project
.SetDebugLibDirs(wxStringList("../../src/Debug", 0));
380 project
.SetReleaseLibDirs(wxStringList("../../src/Release", 0));
382 project
.SetProjectName("ProjGenVC");
383 project
.SetTargetName("makeproj");
384 project
.SetProjectPath(dir
+ wxString("/utils/projgen"));
385 project
.SetSourceFiles(wxStringList("makeproj.cpp", "makeproj.h", 0));
387 if (!project
.GenerateVCProject())
389 wxString
msg("Could not generate ProjGen project");
393 // wxTreeLayout sample
395 project
.SetIncludeDirs(wxStringList("../../../include", 0));
396 project
.SetResourceIncludeDirs(wxStringList("../../../include", 0));
397 project
.SetLibDirs(wxStringList("../../../lib", 0));
398 project
.SetDebugLibDirs(wxStringList("../../../src/Debug", 0));
399 project
.SetReleaseLibDirs(wxStringList("../../../src/Release", 0));
401 project
.SetProjectName("TreeSampleVC");
402 project
.SetTargetName("test");
403 project
.SetProjectPath(dir
+ wxString("/utils/wxtree/src"));
404 project
.SetSourceFiles(wxStringList("test.cpp", "wxtree.cpp", "test.h", "wxtree.h", 0));
406 if (!project
.GenerateVCProject())
408 wxString
msg("Could not generate wxTreeLayout project");
414 project
.SetIncludeDirs(wxStringList("../../../../include", "../../src", 0));
415 project
.SetResourceIncludeDirs(wxStringList("../../../../include", 0));
416 project
.SetLibDirs(wxStringList("../../../../lib", 0));
417 project
.SetDebugLibDirs(wxStringList("../../../../src/Debug", "../../src/Debug", 0));
418 project
.SetReleaseLibDirs(wxStringList("../../../../src/Release", "../../src/Release", 0));
419 project
.SetExtraLibs(wxStringList("ogl.lib", 0));
421 project
.SetProjectName("OGLEditVC");
422 project
.SetTargetName("ogledit");
423 project
.SetProjectPath(dir
+ wxString("/utils/ogl/samples/ogledit"));
424 project
.SetSourceFiles(wxStringList("ogledit.cpp", "doc.cpp", "palette.cpp", "view.cpp",
425 "doc.h", "ogledit.h", "palette.h", "view.h",
428 if (!project
.GenerateVCProject())
430 wxString
msg("Could not generate OGLEdit project");
436 project
.SetIncludeDirs(wxStringList("../../../../include", "../../src", 0));
437 project
.SetResourceIncludeDirs(wxStringList("../../../../include", 0));
438 project
.SetLibDirs(wxStringList("../../../../lib", 0));
439 project
.SetDebugLibDirs(wxStringList("../../../../src/Debug", "../../src/Debug", 0));
440 project
.SetReleaseLibDirs(wxStringList("../../../../src/Release", "../../src/Release", 0));
441 project
.SetExtraLibs(wxStringList("ogl.lib", 0));
443 project
.SetProjectName("StudioVC");
444 project
.SetTargetName("studio");
445 project
.SetProjectPath(dir
+ wxString("/utils/ogl/samples/studio"));
446 project
.SetSourceFiles(wxStringList("studio.cpp", "cspalette.cpp", "dialogs.cpp", "view.cpp",
447 "doc.cpp", "mainfrm.cpp", "project.cpp", "shapes.cpp", "symbols.cpp", "csprint.cpp",
448 "studio.h", "cspalette.h", "dialogs.h", "view.h",
449 "doc.h", "mainfrm.h", "project.h", "shapes.h", "symbols.h",
452 if (!project
.GenerateVCProject())
454 wxString
msg("Could not generate OGL Studio project");
458 // GLCanvas cube sample
460 project
.SetIncludeDirs(wxStringList("../../../../include", "../../win", 0));
461 project
.SetResourceIncludeDirs(wxStringList("../../../../include", 0));
462 project
.SetLibDirs(wxStringList("../../../../lib", 0));
463 project
.SetDebugLibDirs(wxStringList("../../../../src/Debug", "../../win/Debug", 0));
464 project
.SetReleaseLibDirs(wxStringList("../../../../src/Release", "../../win/Release", 0));
465 project
.SetExtraLibs(wxStringList("glcanvas.lib", "opengl32.lib", "glu32.lib", 0));
467 project
.SetProjectName("CubeVC");
468 project
.SetTargetName("cube");
469 project
.SetProjectPath(dir
+ wxString("/utils/glcanvas/samples/cube"));
470 project
.SetSourceFiles(wxStringList("cube.cpp", "cube.h",
473 if (!project
.GenerateVCProject())
475 wxString
msg("Could not generate GLCanvas Cube project");
479 // GLCanvas isosurf sample
481 project
.SetIncludeDirs(wxStringList("../../../../include", "../../win", 0));
482 project
.SetResourceIncludeDirs(wxStringList("../../../../include", 0));
483 project
.SetLibDirs(wxStringList("../../../../lib", 0));
484 project
.SetDebugLibDirs(wxStringList("../../../../src/Debug", "../../win/Debug", 0));
485 project
.SetReleaseLibDirs(wxStringList("../../../../src/Release", "../../win/Release", 0));
486 project
.SetExtraLibs(wxStringList("glcanvas.lib", "opengl32.lib", "glu32.lib", 0));
488 project
.SetProjectName("IsoSurfVC");
489 project
.SetTargetName("isosurf");
490 project
.SetProjectPath(dir
+ wxString("/utils/glcanvas/samples/isosurf"));
491 project
.SetSourceFiles(wxStringList("isosurf.cpp", "isosurf.h",
494 if (!project
.GenerateVCProject())
496 wxString
msg("Could not generate GLCanvas IsoSurf project");
500 // GLCanvas penguin sample
502 project
.SetIncludeDirs(wxStringList("../../../../include", "../../win", 0));
503 project
.SetResourceIncludeDirs(wxStringList("../../../../include", 0));
504 project
.SetLibDirs(wxStringList("../../../../lib", 0));
505 project
.SetDebugLibDirs(wxStringList("../../../../src/Debug", "../../win/Debug", 0));
506 project
.SetReleaseLibDirs(wxStringList("../../../../src/Release", "../../win/Release", 0));
507 project
.SetExtraLibs(wxStringList("glcanvas.lib", "opengl32.lib", "glu32.lib", 0));
509 project
.SetProjectName("PenguinVC");
510 project
.SetTargetName("penguin");
511 project
.SetProjectPath(dir
+ wxString("/utils/glcanvas/samples/penguin"));
512 project
.SetSourceFiles(wxStringList("penguin.cpp", "penguin.h",
514 "trackball.c", "trackball.h",
517 if (!project
.GenerateVCProject())
519 wxString
msg("Could not generate GLCanvas Penguin project");
524 // ----------------------------------------------------------------------------
526 // ----------------------------------------------------------------------------
529 MyFrame::MyFrame(const wxString
& title
, const wxPoint
& pos
, const wxSize
& size
)
530 : wxFrame((wxFrame
*)NULL
, -1, title
, pos
, size
)
532 // set the frame icon
533 SetIcon(wxICON(mondrian
));
536 wxMenu
*menuFile
= new wxMenu
;
538 menuFile
->Append(MakeProject_Generate
, "&Generate");
539 menuFile
->Append(MakeProject_About
, "&About...");
540 menuFile
->AppendSeparator();
541 menuFile
->Append(MakeProject_Quit
, "E&xit");
543 // now append the freshly created menu to the menu bar...
544 wxMenuBar
*menuBar
= new wxMenuBar
;
545 menuBar
->Append(menuFile
, "&File");
547 // ... and attach this menu bar to the frame
550 // create a status bar just for fun (by default with 1 pane only)
552 SetStatusText("Welcome to wxWindows!");
558 void MyFrame::OnQuit(wxCommandEvent
& WXUNUSED(event
))
560 // TRUE is to force the frame to close
564 void MyFrame::OnAbout(wxCommandEvent
& WXUNUSED(event
))
566 wxMessageBox("MakeProject: generates VC++ project files",
567 "About MakeProject", wxOK
| wxICON_INFORMATION
, this);
570 void MyFrame::OnGenerate(wxCommandEvent
& WXUNUSED(event
))
572 wxGetApp().GenerateSamples("d:/wx2/wxWindows");
575 bool MyFrame::GenerateSample(const wxString
& projectName
, const wxString
& targetName
,
576 const wxString
& path
, const wxStringList
& sourceFiles
, const wxString
& relativeRootPath
)
578 return wxGetApp().GenerateSample(projectName
, targetName
, path
, sourceFiles
, relativeRootPath
);
585 wxProject::wxProject()
589 wxProject::~wxProject()
594 bool wxProject::GenerateVCProject()
596 wxString fullProjectName
= m_path
+ wxString("/") + m_projectName
+ ".dsp";
598 ofstream
stream(fullProjectName
);
602 /////////////////////// General stuff
604 stream
<< "# Microsoft Developer Studio Project File - Name=\"" << m_projectName
<< "\" - Package Owner=<4>\n";
605 stream
<< "# Microsoft Developer Studio Generated Build File, Format Version 5.00\n";
606 stream
<< "# (Actually, generated by MakeProject, (c) Julian Smart, 1998)\n";
607 stream
<< "# ** DO NOT EDIT **\n\n";
608 stream
<< "# TARGTYPE \"Win32 (x86) Application\" 0x0101\n\n";
609 stream
<< "CFG=" << m_projectName
<< " - Win32 Debug\n";
610 stream
<< "!MESSAGE This is not a valid makefile. To build this project using NMAKE,\n";
611 stream
<< "!MESSAGE use the Export Makefile command and run\n";
612 stream
<< "!MESSAGE\n";
613 stream
<< "!MESSAGE NMAKE /f \"" << m_projectName
<< ".mak\".\n";
614 stream
<< "!MESSAGE\n";
615 stream
<< "!MESSAGE You can specify a configuration when running NMAKE\n";
616 stream
<< "!MESSAGE by defining the macro CFG on the command line. For example:\n";
617 stream
<< "!MESSAGE\n";
618 stream
<< "!MESSAGE NMAKE /f \"" << m_projectName
<< ".mak\" CFG=\"" << m_projectName
<< " - Win32 Debug\"\n";
619 stream
<< "!MESSAGE\n";
620 stream
<< "!MESSAGE Possible choices for configuration are:\n";
621 stream
<< "!MESSAGE\n";
622 stream
<< "!MESSAGE \"" << m_projectName
<< " - Win32 Release\" (based on \"Win32 (x86) Application\")\n";
623 stream
<< "!MESSAGE \"" << m_projectName
<< " - Win32 Debug\" (based on \"Win32 (x86) Application\")\n";
624 stream
<< "!MESSAGE \"" << m_projectName
<< " - Win32 Debug DLL\" (based on \"Win32 (x86) Application\")\n";
625 stream
<< "!MESSAGE \"" << m_projectName
<< " - Win32 Release DLL\" (based on \"Win32 (x86) Application\")\n";
626 stream
<< "!MESSAGE\n";
628 stream
<< "# Begin Project\n";
629 stream
<< "# PROP Scc_ProjName \"\"\n";
630 stream
<< "# PROP Scc_LocalPath \"\"\n";
631 stream
<< "CPP=cl.exe\n";
632 stream
<< "MTL=midl.exe\n";
633 stream
<< "RSC=rc.exe\n";
636 /////////////////////// Win32 Release target
638 stream
<< "!IF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Release\"\n";
640 stream
<< "# PROP BASE Use_MFC 0\n";
641 stream
<< "# PROP BASE Use_Debug_Libraries 0\n";
642 stream
<< "# PROP BASE Output_Dir \"Release\"\n";
643 stream
<< "# PROP BASE Intermediate_Dir \"Release\"\n";
644 stream
<< "# PROP BASE Target_Dir \"\"\n";
645 stream
<< "# PROP Use_MFC 0\n";
646 stream
<< "# PROP Use_Debug_Libraries 0\n";
647 stream
<< "# PROP Output_Dir \"Release\"\n";
648 stream
<< "# PROP Intermediate_Dir \"Release\"\n";
649 stream
<< "# PROP Ignore_Export_Lib 0\n";
650 stream
<< "# PROP Target_Dir \"\"\n";
651 stream
<< "# ADD BASE CPP /nologo /W3 /GX /O2 /D \"WIN32\" /D \"NDEBUG\" /D \"_WINDOWS\" /YX /FD /c\n";
652 stream
<< "# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2";
654 int n
= m_includeDirs
.Number();
656 for (i
= 0; i
< n
; i
++)
658 wxString includeDir
= m_includeDirs
[i
];
659 stream
<< " /I \"" << includeDir
<< "\"";
662 stream
<< " /D \"NDEBUG\" /D \"WIN32\" /D \"_WINDOWS\" /D \"__WINDOWS__\" /D \"__WXMSW__\" /D \"__WIN95__\" /D \"__WIN32__\" /D WINVER=0x0400 /D \"STRICT\" /FD /c\n";
663 stream
<< "# SUBTRACT CPP /YX\n";
664 stream
<< "# ADD BASE MTL /nologo /D \"NDEBUG\" /mktyplib203 /o NUL /win32\n";
665 stream
<< "# ADD MTL /nologo /D \"NDEBUG\" /mktyplib203 /o NUL /win32\n";
666 stream
<< "# ADD BASE RSC /l 0x809 /d \"NDEBUG\"\n";
667 stream
<< "# ADD RSC /l 0x809 /d \"NDEBUG\"\n";
668 stream
<< "BSC32=bscmake.exe\n";
669 stream
<< "# ADD BASE BSC32 /nologo\n";
670 stream
<< "# ADD BSC32 /nologo\n";
671 stream
<< "LINK32=link.exe\n";
672 stream
<< "# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib /nologo /subsystem:windows /machine:I386\n";
673 stream
<< "# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib wxvc.lib jpeg.lib tiff.lib ";
674 n
= m_extraLibs
.Number();
675 for (i
= 0; i
< n
; i
++)
677 wxString lib
= m_extraLibs
[i
];
678 stream
<< lib
<< " ";
681 stream
<< "/nologo /subsystem:windows /machine:I386 /nodefaultlib:\"libc.lib,libci.lib,msvcrtd.lib\" /out:\"Release/" << m_targetName
<< ".exe\"";
683 n
= m_releaseLibDirs
.Number();
684 for (i
= 0; i
< n
; i
++)
686 wxString libDir
= m_releaseLibDirs
[i
];
687 stream
<< " /libpath:\"" << libDir
<< "\"";
689 n
= m_libDirs
.Number();
690 for (i
= 0; i
< n
; i
++)
692 wxString libDir
= m_libDirs
[i
];
693 stream
<< " /libpath:\"" << libDir
<< "\"";
698 /////////////////////// Win32 Debug target
700 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Debug\"\n";
702 stream
<< "# PROP BASE Use_MFC 0\n";
703 stream
<< "# PROP BASE Use_Debug_Libraries 1\n";
704 stream
<< "# PROP BASE Output_Dir \"Debug\"\n";
705 stream
<< "# PROP BASE Intermediate_Dir \"Debug\"\n";
706 stream
<< "# PROP BASE Target_Dir \"\"\n";
707 stream
<< "# PROP Use_MFC 0\n";
708 stream
<< "# PROP Use_Debug_Libraries 1\n";
709 stream
<< "# PROP Output_Dir \"Debug\"\n";
710 stream
<< "# PROP Intermediate_Dir \"Debug\"\n";
711 stream
<< "# PROP Ignore_Export_Lib 0\n";
712 stream
<< "# PROP Target_Dir \"\"\n";
713 stream
<< "# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D \"WIN32\" /D \"_DEBUG\" /D \"_WINDOWS\" /YX /FD /c\n";
714 stream
<< "# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od";
716 n
= m_includeDirs
.Number();
717 for (i
= 0; i
< n
; i
++)
719 wxString includeDir
= m_includeDirs
[i
];
720 stream
<< " /I \"" << includeDir
<< "\"";
723 stream
<< " /D \"WIN32\" /D \"_DEBUG\" /D \"_WINDOWS\" /D \"__WINDOWS__\" /D \"__WXMSW__\" /D DEBUG=1 /D \"__WXDEBUG__\" /D \"__WIN95__\" /D \"__WIN32__\" /D WINVER=0x0400 /D \"STRICT\" /Yu\"wx/wxprec.h\" /FD /c\n";
724 stream
<< "# ADD BASE MTL /nologo /D \"_DEBUG\" /mktyplib203 /o NUL /win32\n";
725 stream
<< "# ADD MTL /nologo /D \"_DEBUG\" /mktyplib203 /o NUL /win32\n";
726 stream
<< "# ADD BASE RSC /l 0x809 /d \"_DEBUG\"\n";
727 stream
<< "# ADD RSC /l 0x809 /d \"_DEBUG\"\n";
728 stream
<< "BSC32=bscmake.exe\n";
729 stream
<< "# ADD BASE BSC32 /nologo\n";
730 stream
<< "# ADD BSC32 /nologo\n";
731 stream
<< "LINK32=link.exe\n";
732 stream
<< "# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept\n";
733 stream
<< "# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib wxvc.lib jpeg.lib tiff.lib ";
734 n
= m_extraLibs
.Number();
735 for (i
= 0; i
< n
; i
++)
737 wxString lib
= m_extraLibs
[i
];
738 stream
<< lib
<< " ";
740 stream
<< "/nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:\"libcd.lib,libcid.lib,msvcrt.lib\" /out:\"Debug/" << m_targetName
<< ".exe\" /pdbtype:sept";
742 n
= m_debugLibDirs
.Number();
743 for (i
= 0; i
< n
; i
++)
745 wxString libDir
= m_debugLibDirs
[i
];
746 stream
<< " /libpath:\"" << libDir
<< "\"";
748 n
= m_libDirs
.Number();
749 for (i
= 0; i
< n
; i
++)
751 wxString libDir
= m_libDirs
[i
];
752 stream
<< " /libpath:\"" << libDir
<< "\"";
756 // stream << "!ENDIF\n";
759 /////////////////////// Win32 Debug DLL target
761 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Debug DLL\"\n";
763 stream
<< "# PROP BASE Use_MFC 0\n";
764 stream
<< "# PROP BASE Use_Debug_Libraries 1\n";
765 stream
<< "# PROP BASE Output_Dir \"DebugDLL\"\n";
766 stream
<< "# PROP BASE Intermediate_Dir \"DebugDLL\"\n";
767 stream
<< "# PROP BASE Target_Dir \"\"\n";
768 stream
<< "# PROP Use_MFC 0\n";
769 stream
<< "# PROP Use_Debug_Libraries 1\n";
770 stream
<< "# PROP Output_Dir \"DebugDLL\"\n";
771 stream
<< "# PROP Intermediate_Dir \"DebugDLL\"\n";
772 stream
<< "# PROP Ignore_Export_Lib 0\n";
773 stream
<< "# PROP Target_Dir \"\"\n";
774 stream
<< "# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D \"WIN32\" /D \"_DEBUG\" /D \"_WINDOWS\" /YX /FD /c\n";
775 stream
<< "# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od";
777 n
= m_includeDirs
.Number();
778 for (i
= 0; i
< n
; i
++)
780 wxString includeDir
= m_includeDirs
[i
];
781 stream
<< " /I \"" << includeDir
<< "\"";
784 stream
<< " /D \"WIN32\" /D \"_DEBUG\" /D \"_WINDOWS\" /D \"__WINDOWS__\" /D \"__WXMSW__\" /D DEBUG=1 /D \"__WXDEBUG__\" /D \"__WIN95__\" /D \"__WIN32__\" /D WINVER=0x0400 /D \"STRICT\" /D WXUSINGDLL=1 /Yu\"wx/wxprec.h\" /FD /c\n";
785 stream
<< "# ADD BASE MTL /nologo /D \"_DEBUG\" /mktyplib203 /o NUL /win32\n";
786 stream
<< "# ADD MTL /nologo /D \"_DEBUG\" /mktyplib203 /o NUL /win32\n";
787 stream
<< "# ADD BASE RSC /l 0x809 /d \"_DEBUG\"\n";
788 stream
<< "# ADD RSC /l 0x809 /d \"_DEBUG\"\n";
789 stream
<< "BSC32=bscmake.exe\n";
790 stream
<< "# ADD BASE BSC32 /nologo\n";
791 stream
<< "# ADD BSC32 /nologo\n";
792 stream
<< "LINK32=link.exe\n";
793 stream
<< "# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept\n";
794 stream
<< "# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib wxvc.lib ";
795 n
= m_extraLibs
.Number();
796 for (i
= 0; i
< n
; i
++)
798 wxString lib
= m_extraLibs
[i
];
799 stream
<< lib
<< " ";
801 stream
<< "/nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:\"libcd.lib\" /nodefaultlib:\"libcid.lib\" /out:\"DebugDLL/" << m_targetName
<< ".exe\" /pdbtype:sept";
803 n
= m_debugLibDirs
.Number();
804 for (i
= 0; i
< n
; i
++)
806 wxString libDir
= m_debugLibDirs
[i
];
807 libDir
+= "DLL"; // Assume that we have e.g. Debug so make it DebugDLL
808 stream
<< " /libpath:\"" << libDir
<< "\"";
810 n
= m_libDirs
.Number();
811 for (i
= 0; i
< n
; i
++)
813 wxString libDir
= m_libDirs
[i
];
814 stream
<< " /libpath:\"" << libDir
<< "\"";
818 // stream << "!ENDIF\n";
821 /////////////////////// Win32 Release DLL target
823 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Release DLL\"\n";
825 stream
<< "# PROP BASE Use_MFC 0\n";
826 stream
<< "# PROP BASE Use_Debug_Libraries 0\n";
827 stream
<< "# PROP BASE Output_Dir \"ReleaseDLL\"\n";
828 stream
<< "# PROP BASE Intermediate_Dir \"ReleaseDLL\"\n";
829 stream
<< "# PROP BASE Target_Dir \"\"\n";
830 stream
<< "# PROP Use_MFC 0\n";
831 stream
<< "# PROP Use_Debug_Libraries 0\n";
832 stream
<< "# PROP Output_Dir \"ReleaseDLL\"\n";
833 stream
<< "# PROP Intermediate_Dir \"ReleaseDLL\"\n";
834 stream
<< "# PROP Ignore_Export_Lib 0\n";
835 stream
<< "# PROP Target_Dir \"\"\n";
836 stream
<< "# ADD BASE CPP /nologo /W3 /GX /O2 /D \"WIN32\" /D \"NDEBUG\" /D \"_WINDOWS\" /YX /FD /c\n";
837 stream
<< "# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2";
839 n
= m_includeDirs
.Number();
840 for (i
= 0; i
< n
; i
++)
842 wxString includeDir
= m_includeDirs
[i
];
843 stream
<< " /I \"" << includeDir
<< "\"";
846 stream
<< " /D \"NDEBUG\" /D \"WIN32\" /D \"_WINDOWS\" /D \"__WINDOWS__\" /D \"__WXMSW__\" /D \"__WIN95__\" /D \"__WIN32__\" /D WINVER=0x0400 /D \"STRICT\" /D WXUSINGDLL=1 /FD /c\n";
847 stream
<< "# SUBTRACT CPP /YX\n";
848 stream
<< "# ADD BASE MTL /nologo /D \"NDEBUG\" /mktyplib203 /o NUL /win32\n";
849 stream
<< "# ADD MTL /nologo /D \"NDEBUG\" /mktyplib203 /o NUL /win32\n";
850 stream
<< "# ADD BASE RSC /l 0x809 /d \"NDEBUG\"\n";
851 stream
<< "# ADD RSC /l 0x809 /d \"NDEBUG\"\n";
852 stream
<< "BSC32=bscmake.exe\n";
853 stream
<< "# ADD BASE BSC32 /nologo\n";
854 stream
<< "# ADD BSC32 /nologo\n";
855 stream
<< "LINK32=link.exe\n";
856 stream
<< "# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib /nologo /subsystem:windows /machine:I386\n";
857 stream
<< "# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib wxvc.lib ";
858 n
= m_extraLibs
.Number();
859 for (i
= 0; i
< n
; i
++)
861 wxString lib
= m_extraLibs
[i
];
862 stream
<< lib
<< " ";
864 stream
<< "/nologo /subsystem:windows /machine:I386 /nodefaultlib:\"libc.lib\" /nodefaultlib:\"libci.lib\" /out:\"ReleaseDLL/" << m_targetName
<< ".exe\"";
866 n
= m_releaseLibDirs
.Number();
867 for (i
= 0; i
< n
; i
++)
869 wxString libDir
= m_releaseLibDirs
[i
];
870 libDir
+= "DLL"; // Assume that we have e.g. Release so make it ReleaseDLL
871 stream
<< " /libpath:\"" << libDir
<< "\"";
873 n
= m_libDirs
.Number();
874 for (i
= 0; i
< n
; i
++)
876 wxString libDir
= m_libDirs
[i
];
877 stream
<< " /libpath:\"" << libDir
<< "\"";
881 stream
<< "!ENDIF\n";
884 /////////////////////// Source code for targets
886 stream
<< "# Begin Target\n";
888 stream
<< "# Name \"" << m_projectName
<< " - Win32 Release\"\n";
889 stream
<< "# Name \"" << m_projectName
<< " - Win32 Debug\"\n";
890 stream
<< "# Name \"" << m_projectName
<< " - Win32 Debug DLL\"\n";
891 stream
<< "# Name \"" << m_projectName
<< " - Win32 Release DLL\"\n";
894 n
= m_sourceFiles
.Number();
895 for (i
= 0; i
< n
; i
++)
897 wxString sourceFile
= m_sourceFiles
[i
];
899 stream
<< "# Begin Source File\n";
901 stream
<< "SOURCE=.\\" << sourceFile
<< "\n";
903 stream
<< "!IF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Release\"\n";
905 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Debug\"\n";
907 stream
<< "# SUBTRACT CPP /YX /Yc /Yu\n";
909 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Debug DLL\"\n";
911 stream
<< "# SUBTRACT BASE CPP /YX /Yc /Yu\n";
912 stream
<< "# SUBTRACT CPP /YX /Yc /Yu\n";
914 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Release DLL\"\n";
916 stream
<< "!ENDIF\n";
918 stream
<< "# End Source File\n";
921 // The .rc file: assume it has the target name + rc extension.
922 stream
<< "# Begin Source File\n";
924 stream
<< "SOURCE=.\\" << m_targetName
<< ".rc\n";
925 stream
<< "# ADD BASE RSC /l 0x809\n";
926 stream
<< "# ADD RSC /l 0x809";
928 n
= m_resourceIncludeDirs
.Number();
929 for (i
= 0; i
< n
; i
++)
931 wxString includeDir
= m_resourceIncludeDirs
[i
];
932 stream
<< " /i \"" << includeDir
<< "\"";
936 stream
<< "# End Source File\n";
937 stream
<< "# End Target\n";
938 stream
<< "# End Project\n";
940 // Now generate the .dsw workspace file
942 wxString fullWorkSpaceName
= m_path
+ wxString("/") + m_projectName
+ ".dsw";
944 ofstream
stream2(fullWorkSpaceName
);
948 stream2
<< "Microsoft Developer Studio Workspace File, Format Version 5.00\n";
949 stream2
<< "# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!\n";
951 stream2
<< "###############################################################################\n";
953 stream2
<< "Project: \"" << m_projectName
<< "\"=.\\" << m_projectName
<< ".dsp - Package Owner=<4>\n";
955 stream2
<< "Package=<5>\n";
959 stream2
<< "Package=<4>\n";
963 stream2
<< "###############################################################################\n";
965 stream2
<< "Global:\n";
967 stream2
<< "Package=<5>\n";
971 stream2
<< "Package=<3>\n";
975 stream2
<< "###############################################################################\n";
981 BEGIN_EVENT_TABLE(MyDialog
, wxDialog
)
982 EVT_BUTTON(wxID_EXIT
, MyDialog::OnQuit
)
983 EVT_BUTTON(ID_GENERATE_PROJECT
, MyDialog::OnGenerate
)
984 EVT_BUTTON(ID_GENERATE_SAMPLES
, MyDialog::OnGenerateSamples
)
987 // ----------------------------------------------------------------------------
989 // ----------------------------------------------------------------------------
992 MyDialog::MyDialog(const wxString
& title
, const wxPoint
& pos
, const wxSize
& size
):
995 LoadFromResource((wxWindow
*) NULL
, "project_dialog");
999 void MyDialog::OnQuit(wxCommandEvent
& event
)
1004 void MyDialog::OnAbout(wxCommandEvent
& event
)
1008 void MyDialog::OnGenerate(wxCommandEvent
& event
)
1012 void MyDialog::OnGenerateSamples(wxCommandEvent
& event
)
1014 char* dir
= getenv("WXWIN");
1018 wxTextEntryDialog
dialog(this, "Please enter the wxWindows directory", "Text entry", dirStr
, wxOK
|wxCANCEL
);
1019 if (dialog
.ShowModal() == wxID_OK
)
1021 if (wxDirExists(dialog
.GetValue()))
1023 // wxGetApp().GenerateSample("MinimalVC", "minimal", dir + wxString("/samples/minimal"),
1024 // wxStringList("minimal.cpp", 0));
1026 wxGetApp().GenerateSamples(dialog
.GetValue());
1030 wxMessageBox("This directory doesn't exist.");