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.
206 GenerateSample("BombsVC", "bombs", dir
+ wxString("/samples/bombs"),
207 wxStringList("bombs.cpp", "bombs1.cpp", "game.cpp", "bombs.h", "game.h", 0));
208 GenerateSample("CaretVC", "caret", dir
+ wxString("/samples/caret"), wxStringList("caret.cpp", 0));
209 GenerateSample("CheckLstVC", "checklst", dir
+ wxString("/samples/checklst"), wxStringList("checklst.cpp", 0));
210 GenerateSample("ConfigVC", "conftest", dir
+ wxString("/samples/config"), wxStringList("conftest.cpp", 0));
211 GenerateSample("ControlsVC", "controls", dir
+ wxString("/samples/controls"), wxStringList("controls.cpp", 0));
212 GenerateSample("DbVC", "dbtest", dir
+ wxString("/samples/db"),
213 wxStringList("dbtest.cpp", "listdb.cpp", "dbtest.h", "listdb.h", 0));
214 GenerateSample("DialogsVC", "dialogs", dir
+ wxString("/samples/dialogs"),
215 wxStringList("dialogs.cpp", "dialogs.h", 0));
216 GenerateSample("DndVC", "dnd", dir
+ wxString("/samples/dnd"), wxStringList("dnd.cpp", 0));
217 GenerateSample("DocViewVC", "docview", dir
+ wxString("/samples/docview"),
218 wxStringList("docview.cpp", "doc.cpp", "view.cpp", "docview.h", "doc.h", "view.h", 0));
219 GenerateSample("DocVwMDIVC", "docview", dir
+ wxString("/samples/docvwmdi"),
220 wxStringList("docview.cpp", "doc.cpp", "view.cpp", "docview.h", "doc.h", "view.h", 0));
221 GenerateSample("DynamicVC", "dynamic", dir
+ wxString("/samples/dynamic"), wxStringList("dynamic.cpp", 0));
222 GenerateSample("DrawingVC", "drawing", dir
+ wxString("/samples/drawing"), wxStringList("drawing.cpp", 0));
223 GenerateSample("FortyVC", "forty", dir
+ wxString("/samples/forty"),
224 wxStringList("forty.cpp", "canvas.cpp", "card.cpp", "game.cpp", "pile.cpp", "playerdg.cpp", "scoredg.cpp", "scorefil.cpp",
225 "canvas.h", "forty.h", "card.h", "game.h", "pile.h", "playerdg.h", "scoredg.h", "scorefil.h",
227 GenerateSample("FractalVC", "fractal", dir
+ wxString("/samples/fractal"), wxStringList("fractal.cpp", 0));
228 GenerateSample("GridVC", "test", dir
+ wxString("/samples/grid"), wxStringList("test.cpp", 0));
229 GenerateSample("NewGridVC", "griddemo", dir
+ wxString("/samples/newgrid"), wxStringList("griddemo.cpp", 0));
230 GenerateSample("HelpVC", "demo", dir
+ wxString("/samples/help"), wxStringList("demo.cpp", 0));
233 GenerateSample("AboutVC", "about", dir
+ wxString("/samples/html/about"), wxStringList("about.cpp", 0),
235 GenerateSample("HelpVC", "help", dir
+ wxString("/samples/html/help"), wxStringList("help.cpp", 0),
237 GenerateSample("PrintingVC", "printing", dir
+ wxString("/samples/html/printing"), wxStringList("printing.cpp", 0),
239 GenerateSample("TestVC", "test", dir
+ wxString("/samples/html/test"), wxStringList("test.cpp", 0),
241 GenerateSample("VirtualVC", "virtual", dir
+ wxString("/samples/html/virtual"), wxStringList("virtual.cpp", 0),
243 GenerateSample("WidgetVC", "widget", dir
+ wxString("/samples/html/widget"), wxStringList("widget.cpp", 0),
245 GenerateSample("ZipVC", "zip", dir
+ wxString("/samples/html/zip"), wxStringList("zip.cpp", 0),
247 GenerateSample("HelpViewVC", "helpview", dir
+ wxString("/samples/html/helpview"), wxStringList("helpview.cpp", 0),
250 GenerateSample("ImageVC", "image", dir
+ wxString("/samples/image"), wxStringList("image.cpp", 0));
251 GenerateSample("InternatVC", "internat", dir
+ wxString("/samples/internat"), wxStringList("internat.cpp", 0));
252 GenerateSample("JoytestVC", "joytest", dir
+ wxString("/samples/joytest"), wxStringList("joytest.cpp", "joytest.h", 0));
253 GenerateSample("LayoutVC", "layout", dir
+ wxString("/samples/layout"), wxStringList("layout.cpp", "layout.h", 0));
254 GenerateSample("ListctrlVC", "listtest", dir
+ wxString("/samples/listctrl"), wxStringList("listtest.cpp", "listtest.h", 0));
255 GenerateSample("MdiVC", "mdi", dir
+ wxString("/samples/mdi"), wxStringList("mdi.cpp", "mdi.h", 0));
256 GenerateSample("MemcheckVC", "memcheck", dir
+ wxString("/samples/memcheck"), wxStringList("memcheck.cpp", 0));
257 // Note: MFC sample will be different.
258 GenerateSample("MfcVC", "mfc", dir
+ wxString("/samples/mfc"), wxStringList("mfctest.cpp", "mfctest.h", 0));
259 GenerateSample("MiniframVC", "test", dir
+ wxString("/samples/minifram"), wxStringList("test.cpp", "test.h", 0));
260 GenerateSample("MinimalVC", "minimal", dir
+ wxString("/samples/minimal"), wxStringList("minimal.cpp", 0));
261 GenerateSample("NativdlgVC", "nativdlg", dir
+ wxString("/samples/nativdlg"), wxStringList("nativdlg.cpp", "nativdlg.h", "resource.h", 0));
262 GenerateSample("NettestVC", "nettest", dir
+ wxString("/samples/nettest"), wxStringList("nettest.cpp", 0));
263 GenerateSample("NotebookVC", "test", dir
+ wxString("/samples/notebook"), wxStringList("test.cpp", "test.h", 0));
264 GenerateSample("OleautoVC", "oleauto", dir
+ wxString("/samples/oleauto"), wxStringList("oleauto.cpp", 0));
265 GenerateSample("OwnerdrwVC", "ownerdrw", dir
+ wxString("/samples/ownerdrw"), wxStringList("ownerdrw.cpp", 0));
266 GenerateSample("PngVC", "pngdemo", dir
+ wxString("/samples/png"), wxStringList("pngdemo.cpp", "pngdemo.h", 0));
267 GenerateSample("PrintingVC", "printing", dir
+ wxString("/samples/printing"), wxStringList("printing.cpp", "printing.h", 0));
268 GenerateSample("ProplistVC", "test", dir
+ wxString("/samples/proplist"), wxStringList("test.cpp", "test.h", 0));
269 GenerateSample("RegtestVC", "regtest", dir
+ wxString("/samples/regtest"), wxStringList("regtest.cpp", 0));
270 GenerateSample("ResourceVC", "resource", dir
+ wxString("/samples/resource"), wxStringList("resource.cpp", "resource.h", 0));
271 GenerateSample("RichEditVC", "wxLayout", dir
+ wxString("/samples/richedit"), wxStringList("wxLayout.cpp",
272 "kbList.cpp", "wxllist.cpp", "wxlparser.cpp", "wxlwindow.cpp", 0));
273 GenerateSample("SashtestVC", "sashtest", dir
+ wxString("/samples/sashtest"), wxStringList("sashtest.cpp", "sashtest.h", 0));
274 GenerateSample("ScrollVC", "scroll", dir
+ wxString("/samples/scroll"), wxStringList("scroll.cpp", 0));
275 GenerateSample("SplitterVC", "test", dir
+ wxString("/samples/splitter"), wxStringList("test.cpp", 0));
276 GenerateSample("TabVC", "test", dir
+ wxString("/samples/tab"), wxStringList("test.cpp", "test.h", 0));
277 GenerateSample("TaskbarVC", "tbtest", dir
+ wxString("/samples/taskbar"), wxStringList("tbtest.cpp", "tbtest.h", 0));
278 GenerateSample("TextVC", "text", dir
+ wxString("/samples/text"), wxStringList("text.cpp", 0));
279 GenerateSample("ThreadVC", "test", dir
+ wxString("/samples/thread"), wxStringList("test.cpp", 0));
280 GenerateSample("ToolbarVC", "test", dir
+ wxString("/samples/toolbar"), wxStringList("test.cpp", "test.h", 0));
281 GenerateSample("TreectrlVC", "treetest", dir
+ wxString("/samples/treectrl"), wxStringList("treetest.cpp", "treetest.h", 0));
282 GenerateSample("TypetestVC", "typetest", dir
+ wxString("/samples/typetest"), wxStringList("typetest.cpp", "typetest.h", 0));
283 GenerateSample("ValidateVC", "validate", dir
+ wxString("/samples/validate"), wxStringList("validate.cpp", "validate.h", 0));
284 GenerateSample("ClientVC", "client", dir
+ wxString("/samples/wxsocket"), wxStringList("client.cpp", 0));
285 GenerateSample("ServerVC", "server", dir
+ wxString("/samples/wxsocket"), wxStringList("server.cpp", 0));
286 GenerateSample("PoemVC", "wxpoem", dir
+ wxString("/samples/wxpoem"), wxStringList("wxpoem.cpp", "wxpoem.h", 0));
287 GenerateSample("ClientVC", "client", dir
+ wxString("/samples/dde"), wxStringList("client.cpp", "client.h", "ddesetup.h", 0));
288 GenerateSample("ServerVC", "server", dir
+ wxString("/samples/dde"), wxStringList("server.cpp", "server.h", "ddesetup.h", 0));
289 GenerateSample("CaretVC", "caret", dir
+ wxString("/samples/caret"), wxStringList("caret.cpp", 0));
290 GenerateSample("DrawingVC", "drawing", dir
+ wxString("/samples/drawing"), wxStringList("drawing.cpp", 0));
291 GenerateSample("ScrollVC", "scroll", dir
+ wxString("/samples/scroll"), wxStringList("scroll.cpp", 0));
292 GenerateSample("WizardVC", "wizard", dir
+ wxString("/samples/wizard"), wxStringList("wiztest.cpp", 0));
299 project
.SetIncludeDirs(wxStringList("../../../include", 0));
300 project
.SetResourceIncludeDirs(wxStringList("../../../include", 0));
301 project
.SetLibDirs(wxStringList("../../../lib", 0));
302 project
.SetDebugLibDirs(wxStringList("../../../src/Debug", 0));
303 project
.SetReleaseLibDirs(wxStringList("../../../src/Release", 0));
305 project
.SetProjectName("DialogEdVC");
306 project
.SetTargetName("dialoged");
307 project
.SetProjectPath(dir
+ wxString("/utils/dialoged/src"));
308 project
.SetSourceFiles(wxStringList("dialoged.cpp", "dlghndlr.cpp", "edlist.cpp", "edtree.cpp",
309 "reseditr.cpp", "reswrite.cpp", "symbtabl.cpp", "winstyle.cpp", "winprop.cpp",
310 "dialoged.h", "dlghndlr.h", "edlist.h", "edtree.h", "reseditr.h", "symbtabl.h", "winprop.h",
314 if (!project
.GenerateVCProject())
316 wxString
msg("Could not generate Dialog Editor project");
321 project
.SetIncludeDirs(wxStringList("../../../include", 0));
322 project
.SetResourceIncludeDirs(wxStringList("../../../include", 0));
323 project
.SetLibDirs(wxStringList("../../../lib", 0));
324 project
.SetDebugLibDirs(wxStringList("../../../src/Debug", 0));
325 project
.SetReleaseLibDirs(wxStringList("../../../src/Release", 0));
327 project
.SetProjectName("Tex2RTFVC");
328 project
.SetTargetName("tex2rtf");
329 project
.SetProjectPath(dir
+ wxString("/utils/tex2rtf/src"));
330 project
.SetSourceFiles(wxStringList("tex2rtf.cpp", "htmlutil.cpp", "readshg.cpp", "rtfutils.cpp",
331 "table.cpp", "tex2any.cpp", "texutils.cpp", "xlputils.cpp",
332 "bmputils.h", "readshg.h", "rtfutils.h", "table.h", "tex2any.h", "tex2rtf.h", "wxhlpblk.h",
335 if (!project
.GenerateVCProject())
337 wxString
msg("Could not generate Tex2RTF project");
342 project
.SetIncludeDirs(wxStringList("../../../include", 0));
343 project
.SetResourceIncludeDirs(wxStringList("../../../include", 0));
344 project
.SetLibDirs(wxStringList("../../../lib", 0));
345 project
.SetDebugLibDirs(wxStringList("../../../src/Debug", 0));
346 project
.SetReleaseLibDirs(wxStringList("../../../src/Release", 0));
348 project
.SetProjectName("HelpGenVC");
349 project
.SetTargetName("helpgen");
350 project
.SetProjectPath(dir
+ wxString("/utils/helpgen/src"));
351 project
.SetSourceFiles(wxStringList("helpgen.cpp", "cjparser.cpp", "docripper.cpp", "ifcontext.cpp",
352 "markup.cpp", "ripper_main.cpp", "scriptbinder.cpp", "sourcepainter.cpp",
354 "cjparser.h", "docripper.h", "ifcontext.h", "markup.h", "scriptbinder.h", "sourcepainter.h",
355 "srcparser.h", "wxstlac.h", "wxstllst.h", "wxstlvec.h", 0));
357 if (!project
.GenerateVCProject())
359 wxString
msg("Could not generate HelpGen project");
364 project
.SetIncludeDirs(wxStringList("../../include", 0));
365 project
.SetResourceIncludeDirs(wxStringList("../../include", 0));
366 project
.SetLibDirs(wxStringList("../../lib", 0));
367 project
.SetDebugLibDirs(wxStringList("../../src/Debug", 0));
368 project
.SetReleaseLibDirs(wxStringList("../../src/Release", 0));
370 project
.SetProjectName("ProjGenVC");
371 project
.SetTargetName("makeproj");
372 project
.SetProjectPath(dir
+ wxString("/utils/projgen"));
373 project
.SetSourceFiles(wxStringList("makeproj.cpp", "makeproj.h", 0));
375 if (!project
.GenerateVCProject())
377 wxString
msg("Could not generate ProjGen project");
381 // wxTreeLayout sample
383 project
.SetIncludeDirs(wxStringList("../../../include", 0));
384 project
.SetResourceIncludeDirs(wxStringList("../../../include", 0));
385 project
.SetLibDirs(wxStringList("../../../lib", 0));
386 project
.SetDebugLibDirs(wxStringList("../../../src/Debug", 0));
387 project
.SetReleaseLibDirs(wxStringList("../../../src/Release", 0));
389 project
.SetProjectName("TreeSampleVC");
390 project
.SetTargetName("test");
391 project
.SetProjectPath(dir
+ wxString("/utils/wxtree/src"));
392 project
.SetSourceFiles(wxStringList("test.cpp", "wxtree.cpp", "test.h", "wxtree.h", 0));
394 if (!project
.GenerateVCProject())
396 wxString
msg("Could not generate wxTreeLayout project");
402 project
.SetIncludeDirs(wxStringList("../../../../include", "../../src", 0));
403 project
.SetResourceIncludeDirs(wxStringList("../../../../include", 0));
404 project
.SetLibDirs(wxStringList("../../../../lib", 0));
405 project
.SetDebugLibDirs(wxStringList("../../../../src/Debug", "../../src/Debug", 0));
406 project
.SetReleaseLibDirs(wxStringList("../../../../src/Release", "../../src/Release", 0));
407 project
.SetExtraLibs(wxStringList("ogl.lib", 0));
409 project
.SetProjectName("OGLEditVC");
410 project
.SetTargetName("ogledit");
411 project
.SetProjectPath(dir
+ wxString("/utils/ogl/samples/ogledit"));
412 project
.SetSourceFiles(wxStringList("ogledit.cpp", "doc.cpp", "palette.cpp", "view.cpp",
413 "doc.h", "ogledit.h", "palette.h", "view.h",
416 if (!project
.GenerateVCProject())
418 wxString
msg("Could not generate OGLEdit project");
424 project
.SetIncludeDirs(wxStringList("../../../../include", "../../src", 0));
425 project
.SetResourceIncludeDirs(wxStringList("../../../../include", 0));
426 project
.SetLibDirs(wxStringList("../../../../lib", 0));
427 project
.SetDebugLibDirs(wxStringList("../../../../src/Debug", "../../src/Debug", 0));
428 project
.SetReleaseLibDirs(wxStringList("../../../../src/Release", "../../src/Release", 0));
429 project
.SetExtraLibs(wxStringList("ogl.lib", 0));
431 project
.SetProjectName("StudioVC");
432 project
.SetTargetName("studio");
433 project
.SetProjectPath(dir
+ wxString("/utils/ogl/samples/studio"));
434 project
.SetSourceFiles(wxStringList("studio.cpp", "cspalette.cpp", "dialogs.cpp", "view.cpp",
435 "doc.cpp", "mainfrm.cpp", "project.cpp", "shapes.cpp", "symbols.cpp", "csprint.cpp",
436 "studio.h", "cspalette.h", "dialogs.h", "view.h",
437 "doc.h", "mainfrm.h", "project.h", "shapes.h", "symbols.h",
440 if (!project
.GenerateVCProject())
442 wxString
msg("Could not generate OGL Studio project");
446 // GLCanvas cube sample
448 project
.SetIncludeDirs(wxStringList("../../../../include", "../../win", 0));
449 project
.SetResourceIncludeDirs(wxStringList("../../../../include", 0));
450 project
.SetLibDirs(wxStringList("../../../../lib", 0));
451 project
.SetDebugLibDirs(wxStringList("../../../../src/Debug", "../../win/Debug", 0));
452 project
.SetReleaseLibDirs(wxStringList("../../../../src/Release", "../../win/Release", 0));
453 project
.SetExtraLibs(wxStringList("glcanvas.lib", "opengl32.lib", "glu32.lib", 0));
455 project
.SetProjectName("CubeVC");
456 project
.SetTargetName("cube");
457 project
.SetProjectPath(dir
+ wxString("/utils/glcanvas/samples/cube"));
458 project
.SetSourceFiles(wxStringList("cube.cpp", "cube.h",
461 if (!project
.GenerateVCProject())
463 wxString
msg("Could not generate GLCanvas Cube project");
467 // GLCanvas isosurf sample
469 project
.SetIncludeDirs(wxStringList("../../../../include", "../../win", 0));
470 project
.SetResourceIncludeDirs(wxStringList("../../../../include", 0));
471 project
.SetLibDirs(wxStringList("../../../../lib", 0));
472 project
.SetDebugLibDirs(wxStringList("../../../../src/Debug", "../../win/Debug", 0));
473 project
.SetReleaseLibDirs(wxStringList("../../../../src/Release", "../../win/Release", 0));
474 project
.SetExtraLibs(wxStringList("glcanvas.lib", "opengl32.lib", "glu32.lib", 0));
476 project
.SetProjectName("IsoSurfVC");
477 project
.SetTargetName("isosurf");
478 project
.SetProjectPath(dir
+ wxString("/utils/glcanvas/samples/isosurf"));
479 project
.SetSourceFiles(wxStringList("isosurf.cpp", "isosurf.h",
482 if (!project
.GenerateVCProject())
484 wxString
msg("Could not generate GLCanvas IsoSurf project");
488 // GLCanvas penguin sample
490 project
.SetIncludeDirs(wxStringList("../../../../include", "../../win", 0));
491 project
.SetResourceIncludeDirs(wxStringList("../../../../include", 0));
492 project
.SetLibDirs(wxStringList("../../../../lib", 0));
493 project
.SetDebugLibDirs(wxStringList("../../../../src/Debug", "../../win/Debug", 0));
494 project
.SetReleaseLibDirs(wxStringList("../../../../src/Release", "../../win/Release", 0));
495 project
.SetExtraLibs(wxStringList("glcanvas.lib", "opengl32.lib", "glu32.lib", 0));
497 project
.SetProjectName("PenguinVC");
498 project
.SetTargetName("penguin");
499 project
.SetProjectPath(dir
+ wxString("/utils/glcanvas/samples/penguin"));
500 project
.SetSourceFiles(wxStringList("penguin.cpp", "penguin.h",
502 "trackball.c", "trackball.h",
505 if (!project
.GenerateVCProject())
507 wxString
msg("Could not generate GLCanvas Penguin project");
512 // ----------------------------------------------------------------------------
514 // ----------------------------------------------------------------------------
517 MyFrame::MyFrame(const wxString
& title
, const wxPoint
& pos
, const wxSize
& size
)
518 : wxFrame((wxFrame
*)NULL
, -1, title
, pos
, size
)
520 // set the frame icon
521 SetIcon(wxICON(mondrian
));
524 wxMenu
*menuFile
= new wxMenu
;
526 menuFile
->Append(MakeProject_Generate
, "&Generate");
527 menuFile
->Append(MakeProject_About
, "&About...");
528 menuFile
->AppendSeparator();
529 menuFile
->Append(MakeProject_Quit
, "E&xit");
531 // now append the freshly created menu to the menu bar...
532 wxMenuBar
*menuBar
= new wxMenuBar
;
533 menuBar
->Append(menuFile
, "&File");
535 // ... and attach this menu bar to the frame
538 // create a status bar just for fun (by default with 1 pane only)
540 SetStatusText("Welcome to wxWindows!");
546 void MyFrame::OnQuit(wxCommandEvent
& WXUNUSED(event
))
548 // TRUE is to force the frame to close
552 void MyFrame::OnAbout(wxCommandEvent
& WXUNUSED(event
))
554 wxMessageBox("MakeProject: generates VC++ project files",
555 "About MakeProject", wxOK
| wxICON_INFORMATION
, this);
558 void MyFrame::OnGenerate(wxCommandEvent
& WXUNUSED(event
))
560 wxGetApp().GenerateSamples("d:/wx2/wxWindows");
563 bool MyFrame::GenerateSample(const wxString
& projectName
, const wxString
& targetName
,
564 const wxString
& path
, const wxStringList
& sourceFiles
, const wxString
& relativeRootPath
)
566 return wxGetApp().GenerateSample(projectName
, targetName
, path
, sourceFiles
, relativeRootPath
);
573 wxProject::wxProject()
577 wxProject::~wxProject()
582 bool wxProject::GenerateVCProject()
584 wxString fullProjectName
= m_path
+ wxString("/") + m_projectName
+ ".dsp";
586 ofstream
stream(fullProjectName
);
590 /////////////////////// General stuff
592 stream
<< "# Microsoft Developer Studio Project File - Name=\"" << m_projectName
<< "\" - Package Owner=<4>\n";
593 stream
<< "# Microsoft Developer Studio Generated Build File, Format Version 5.00\n";
594 stream
<< "# (Actually, generated by MakeProject, (c) Julian Smart, 1998)\n";
595 stream
<< "# ** DO NOT EDIT **\n\n";
596 stream
<< "# TARGTYPE \"Win32 (x86) Application\" 0x0101\n\n";
597 stream
<< "CFG=" << m_projectName
<< " - Win32 Debug\n";
598 stream
<< "!MESSAGE This is not a valid makefile. To build this project using NMAKE,\n";
599 stream
<< "!MESSAGE use the Export Makefile command and run\n";
600 stream
<< "!MESSAGE\n";
601 stream
<< "!MESSAGE NMAKE /f \"" << m_projectName
<< ".mak\".\n";
602 stream
<< "!MESSAGE\n";
603 stream
<< "!MESSAGE You can specify a configuration when running NMAKE\n";
604 stream
<< "!MESSAGE by defining the macro CFG on the command line. For example:\n";
605 stream
<< "!MESSAGE\n";
606 stream
<< "!MESSAGE NMAKE /f \"" << m_projectName
<< ".mak\" CFG=\"" << m_projectName
<< " - Win32 Debug\"\n";
607 stream
<< "!MESSAGE\n";
608 stream
<< "!MESSAGE Possible choices for configuration are:\n";
609 stream
<< "!MESSAGE\n";
610 stream
<< "!MESSAGE \"" << m_projectName
<< " - Win32 Release\" (based on \"Win32 (x86) Application\")\n";
611 stream
<< "!MESSAGE \"" << m_projectName
<< " - Win32 Debug\" (based on \"Win32 (x86) Application\")\n";
612 stream
<< "!MESSAGE \"" << m_projectName
<< " - Win32 Debug DLL\" (based on \"Win32 (x86) Application\")\n";
613 stream
<< "!MESSAGE \"" << m_projectName
<< " - Win32 Release DLL\" (based on \"Win32 (x86) Application\")\n";
614 stream
<< "!MESSAGE\n";
616 stream
<< "# Begin Project\n";
617 stream
<< "# PROP Scc_ProjName \"\"\n";
618 stream
<< "# PROP Scc_LocalPath \"\"\n";
619 stream
<< "CPP=cl.exe\n";
620 stream
<< "MTL=midl.exe\n";
621 stream
<< "RSC=rc.exe\n";
624 /////////////////////// Win32 Release target
626 stream
<< "!IF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Release\"\n";
628 stream
<< "# PROP BASE Use_MFC 0\n";
629 stream
<< "# PROP BASE Use_Debug_Libraries 0\n";
630 stream
<< "# PROP BASE Output_Dir \"Release\"\n";
631 stream
<< "# PROP BASE Intermediate_Dir \"Release\"\n";
632 stream
<< "# PROP BASE Target_Dir \"\"\n";
633 stream
<< "# PROP Use_MFC 0\n";
634 stream
<< "# PROP Use_Debug_Libraries 0\n";
635 stream
<< "# PROP Output_Dir \"Release\"\n";
636 stream
<< "# PROP Intermediate_Dir \"Release\"\n";
637 stream
<< "# PROP Ignore_Export_Lib 0\n";
638 stream
<< "# PROP Target_Dir \"\"\n";
639 stream
<< "# ADD BASE CPP /nologo /W3 /GX /O2 /D \"WIN32\" /D \"NDEBUG\" /D \"_WINDOWS\" /YX /FD /c\n";
640 stream
<< "# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2";
642 int n
= m_includeDirs
.Number();
644 for (i
= 0; i
< n
; i
++)
646 wxString includeDir
= m_includeDirs
[i
];
647 stream
<< " /I \"" << includeDir
<< "\"";
650 stream
<< " /D \"NDEBUG\" /D \"WIN32\" /D \"_WINDOWS\" /D \"__WINDOWS__\" /D \"__WXMSW__\" /D \"__WIN95__\" /D \"__WIN32__\" /D WINVER=0x0400 /D \"STRICT\" /FD /c\n";
651 stream
<< "# SUBTRACT CPP /YX\n";
652 stream
<< "# ADD BASE MTL /nologo /D \"NDEBUG\" /mktyplib203 /o NUL /win32\n";
653 stream
<< "# ADD MTL /nologo /D \"NDEBUG\" /mktyplib203 /o NUL /win32\n";
654 stream
<< "# ADD BASE RSC /l 0x809 /d \"NDEBUG\"\n";
655 stream
<< "# ADD RSC /l 0x809 /d \"NDEBUG\"\n";
656 stream
<< "BSC32=bscmake.exe\n";
657 stream
<< "# ADD BASE BSC32 /nologo\n";
658 stream
<< "# ADD BSC32 /nologo\n";
659 stream
<< "LINK32=link.exe\n";
660 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";
661 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 ";
662 n
= m_extraLibs
.Number();
663 for (i
= 0; i
< n
; i
++)
665 wxString lib
= m_extraLibs
[i
];
666 stream
<< lib
<< " ";
669 stream
<< "/nologo /subsystem:windows /machine:I386 /nodefaultlib:\"libc.lib,libci.lib,msvcrtd.lib\" /out:\"Release/" << m_targetName
<< ".exe\"";
671 n
= m_releaseLibDirs
.Number();
672 for (i
= 0; i
< n
; i
++)
674 wxString libDir
= m_releaseLibDirs
[i
];
675 stream
<< " /libpath:\"" << libDir
<< "\"";
677 n
= m_libDirs
.Number();
678 for (i
= 0; i
< n
; i
++)
680 wxString libDir
= m_libDirs
[i
];
681 stream
<< " /libpath:\"" << libDir
<< "\"";
686 /////////////////////// Win32 Debug target
688 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Debug\"\n";
690 stream
<< "# PROP BASE Use_MFC 0\n";
691 stream
<< "# PROP BASE Use_Debug_Libraries 1\n";
692 stream
<< "# PROP BASE Output_Dir \"Debug\"\n";
693 stream
<< "# PROP BASE Intermediate_Dir \"Debug\"\n";
694 stream
<< "# PROP BASE Target_Dir \"\"\n";
695 stream
<< "# PROP Use_MFC 0\n";
696 stream
<< "# PROP Use_Debug_Libraries 1\n";
697 stream
<< "# PROP Output_Dir \"Debug\"\n";
698 stream
<< "# PROP Intermediate_Dir \"Debug\"\n";
699 stream
<< "# PROP Ignore_Export_Lib 0\n";
700 stream
<< "# PROP Target_Dir \"\"\n";
701 stream
<< "# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D \"WIN32\" /D \"_DEBUG\" /D \"_WINDOWS\" /YX /FD /c\n";
702 stream
<< "# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od";
704 n
= m_includeDirs
.Number();
705 for (i
= 0; i
< n
; i
++)
707 wxString includeDir
= m_includeDirs
[i
];
708 stream
<< " /I \"" << includeDir
<< "\"";
711 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";
712 stream
<< "# ADD BASE MTL /nologo /D \"_DEBUG\" /mktyplib203 /o NUL /win32\n";
713 stream
<< "# ADD MTL /nologo /D \"_DEBUG\" /mktyplib203 /o NUL /win32\n";
714 stream
<< "# ADD BASE RSC /l 0x809 /d \"_DEBUG\"\n";
715 stream
<< "# ADD RSC /l 0x809 /d \"_DEBUG\"\n";
716 stream
<< "BSC32=bscmake.exe\n";
717 stream
<< "# ADD BASE BSC32 /nologo\n";
718 stream
<< "# ADD BSC32 /nologo\n";
719 stream
<< "LINK32=link.exe\n";
720 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";
721 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 ";
722 n
= m_extraLibs
.Number();
723 for (i
= 0; i
< n
; i
++)
725 wxString lib
= m_extraLibs
[i
];
726 stream
<< lib
<< " ";
728 stream
<< "/nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:\"libcd.lib,libcid.lib,msvcrt.lib\" /out:\"Debug/" << m_targetName
<< ".exe\" /pdbtype:sept";
730 n
= m_debugLibDirs
.Number();
731 for (i
= 0; i
< n
; i
++)
733 wxString libDir
= m_debugLibDirs
[i
];
734 stream
<< " /libpath:\"" << libDir
<< "\"";
736 n
= m_libDirs
.Number();
737 for (i
= 0; i
< n
; i
++)
739 wxString libDir
= m_libDirs
[i
];
740 stream
<< " /libpath:\"" << libDir
<< "\"";
744 // stream << "!ENDIF\n";
747 /////////////////////// Win32 Debug DLL target
749 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Debug DLL\"\n";
751 stream
<< "# PROP BASE Use_MFC 0\n";
752 stream
<< "# PROP BASE Use_Debug_Libraries 1\n";
753 stream
<< "# PROP BASE Output_Dir \"DebugDLL\"\n";
754 stream
<< "# PROP BASE Intermediate_Dir \"DebugDLL\"\n";
755 stream
<< "# PROP BASE Target_Dir \"\"\n";
756 stream
<< "# PROP Use_MFC 0\n";
757 stream
<< "# PROP Use_Debug_Libraries 1\n";
758 stream
<< "# PROP Output_Dir \"DebugDLL\"\n";
759 stream
<< "# PROP Intermediate_Dir \"DebugDLL\"\n";
760 stream
<< "# PROP Ignore_Export_Lib 0\n";
761 stream
<< "# PROP Target_Dir \"\"\n";
762 stream
<< "# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D \"WIN32\" /D \"_DEBUG\" /D \"_WINDOWS\" /YX /FD /c\n";
763 stream
<< "# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od";
765 n
= m_includeDirs
.Number();
766 for (i
= 0; i
< n
; i
++)
768 wxString includeDir
= m_includeDirs
[i
];
769 stream
<< " /I \"" << includeDir
<< "\"";
772 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";
773 stream
<< "# ADD BASE MTL /nologo /D \"_DEBUG\" /mktyplib203 /o NUL /win32\n";
774 stream
<< "# ADD MTL /nologo /D \"_DEBUG\" /mktyplib203 /o NUL /win32\n";
775 stream
<< "# ADD BASE RSC /l 0x809 /d \"_DEBUG\"\n";
776 stream
<< "# ADD RSC /l 0x809 /d \"_DEBUG\"\n";
777 stream
<< "BSC32=bscmake.exe\n";
778 stream
<< "# ADD BASE BSC32 /nologo\n";
779 stream
<< "# ADD BSC32 /nologo\n";
780 stream
<< "LINK32=link.exe\n";
781 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";
782 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 ";
783 n
= m_extraLibs
.Number();
784 for (i
= 0; i
< n
; i
++)
786 wxString lib
= m_extraLibs
[i
];
787 stream
<< lib
<< " ";
789 stream
<< "/nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:\"libcd.lib\" /nodefaultlib:\"libcid.lib\" /out:\"DebugDLL/" << m_targetName
<< ".exe\" /pdbtype:sept";
791 n
= m_debugLibDirs
.Number();
792 for (i
= 0; i
< n
; i
++)
794 wxString libDir
= m_debugLibDirs
[i
];
795 libDir
+= "DLL"; // Assume that we have e.g. Debug so make it DebugDLL
796 stream
<< " /libpath:\"" << libDir
<< "\"";
798 n
= m_libDirs
.Number();
799 for (i
= 0; i
< n
; i
++)
801 wxString libDir
= m_libDirs
[i
];
802 stream
<< " /libpath:\"" << libDir
<< "\"";
806 // stream << "!ENDIF\n";
809 /////////////////////// Win32 Release DLL target
811 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Release DLL\"\n";
813 stream
<< "# PROP BASE Use_MFC 0\n";
814 stream
<< "# PROP BASE Use_Debug_Libraries 0\n";
815 stream
<< "# PROP BASE Output_Dir \"ReleaseDLL\"\n";
816 stream
<< "# PROP BASE Intermediate_Dir \"ReleaseDLL\"\n";
817 stream
<< "# PROP BASE Target_Dir \"\"\n";
818 stream
<< "# PROP Use_MFC 0\n";
819 stream
<< "# PROP Use_Debug_Libraries 0\n";
820 stream
<< "# PROP Output_Dir \"ReleaseDLL\"\n";
821 stream
<< "# PROP Intermediate_Dir \"ReleaseDLL\"\n";
822 stream
<< "# PROP Ignore_Export_Lib 0\n";
823 stream
<< "# PROP Target_Dir \"\"\n";
824 stream
<< "# ADD BASE CPP /nologo /W3 /GX /O2 /D \"WIN32\" /D \"NDEBUG\" /D \"_WINDOWS\" /YX /FD /c\n";
825 stream
<< "# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2";
827 n
= m_includeDirs
.Number();
828 for (i
= 0; i
< n
; i
++)
830 wxString includeDir
= m_includeDirs
[i
];
831 stream
<< " /I \"" << includeDir
<< "\"";
834 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";
835 stream
<< "# SUBTRACT CPP /YX\n";
836 stream
<< "# ADD BASE MTL /nologo /D \"NDEBUG\" /mktyplib203 /o NUL /win32\n";
837 stream
<< "# ADD MTL /nologo /D \"NDEBUG\" /mktyplib203 /o NUL /win32\n";
838 stream
<< "# ADD BASE RSC /l 0x809 /d \"NDEBUG\"\n";
839 stream
<< "# ADD RSC /l 0x809 /d \"NDEBUG\"\n";
840 stream
<< "BSC32=bscmake.exe\n";
841 stream
<< "# ADD BASE BSC32 /nologo\n";
842 stream
<< "# ADD BSC32 /nologo\n";
843 stream
<< "LINK32=link.exe\n";
844 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";
845 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 ";
846 n
= m_extraLibs
.Number();
847 for (i
= 0; i
< n
; i
++)
849 wxString lib
= m_extraLibs
[i
];
850 stream
<< lib
<< " ";
852 stream
<< "/nologo /subsystem:windows /machine:I386 /nodefaultlib:\"libc.lib\" /nodefaultlib:\"libci.lib\" /out:\"ReleaseDLL/" << m_targetName
<< ".exe\"";
854 n
= m_releaseLibDirs
.Number();
855 for (i
= 0; i
< n
; i
++)
857 wxString libDir
= m_releaseLibDirs
[i
];
858 libDir
+= "DLL"; // Assume that we have e.g. Release so make it ReleaseDLL
859 stream
<< " /libpath:\"" << libDir
<< "\"";
861 n
= m_libDirs
.Number();
862 for (i
= 0; i
< n
; i
++)
864 wxString libDir
= m_libDirs
[i
];
865 stream
<< " /libpath:\"" << libDir
<< "\"";
869 stream
<< "!ENDIF\n";
872 /////////////////////// Source code for targets
874 stream
<< "# Begin Target\n";
876 stream
<< "# Name \"" << m_projectName
<< " - Win32 Release\"\n";
877 stream
<< "# Name \"" << m_projectName
<< " - Win32 Debug\"\n";
878 stream
<< "# Name \"" << m_projectName
<< " - Win32 Debug DLL\"\n";
879 stream
<< "# Name \"" << m_projectName
<< " - Win32 Release DLL\"\n";
882 n
= m_sourceFiles
.Number();
883 for (i
= 0; i
< n
; i
++)
885 wxString sourceFile
= m_sourceFiles
[i
];
887 stream
<< "# Begin Source File\n";
889 stream
<< "SOURCE=.\\" << sourceFile
<< "\n";
891 stream
<< "!IF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Release\"\n";
893 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Debug\"\n";
895 stream
<< "# SUBTRACT CPP /YX /Yc /Yu\n";
897 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Debug DLL\"\n";
899 stream
<< "# SUBTRACT BASE CPP /YX /Yc /Yu\n";
900 stream
<< "# SUBTRACT CPP /YX /Yc /Yu\n";
902 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Release DLL\"\n";
904 stream
<< "!ENDIF\n";
906 stream
<< "# End Source File\n";
909 // The .rc file: assume it has the target name + rc extension.
910 stream
<< "# Begin Source File\n";
912 stream
<< "SOURCE=.\\" << m_targetName
<< ".rc\n";
913 stream
<< "# ADD BASE RSC /l 0x809\n";
914 stream
<< "# ADD RSC /l 0x809";
916 n
= m_resourceIncludeDirs
.Number();
917 for (i
= 0; i
< n
; i
++)
919 wxString includeDir
= m_resourceIncludeDirs
[i
];
920 stream
<< " /i \"" << includeDir
<< "\"";
924 stream
<< "# End Source File\n";
925 stream
<< "# End Target\n";
926 stream
<< "# End Project\n";
928 // Now generate the .dsw workspace file
930 wxString fullWorkSpaceName
= m_path
+ wxString("/") + m_projectName
+ ".dsw";
932 ofstream
stream2(fullWorkSpaceName
);
936 stream2
<< "Microsoft Developer Studio Workspace File, Format Version 5.00\n";
937 stream2
<< "# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!\n";
939 stream2
<< "###############################################################################\n";
941 stream2
<< "Project: \"" << m_projectName
<< "\"=.\\" << m_projectName
<< ".dsp - Package Owner=<4>\n";
943 stream2
<< "Package=<5>\n";
947 stream2
<< "Package=<4>\n";
951 stream2
<< "###############################################################################\n";
953 stream2
<< "Global:\n";
955 stream2
<< "Package=<5>\n";
959 stream2
<< "Package=<3>\n";
963 stream2
<< "###############################################################################\n";
969 BEGIN_EVENT_TABLE(MyDialog
, wxDialog
)
970 EVT_BUTTON(wxID_EXIT
, MyDialog::OnQuit
)
971 EVT_BUTTON(ID_GENERATE_PROJECT
, MyDialog::OnGenerate
)
972 EVT_BUTTON(ID_GENERATE_SAMPLES
, MyDialog::OnGenerateSamples
)
975 // ----------------------------------------------------------------------------
977 // ----------------------------------------------------------------------------
980 MyDialog::MyDialog(const wxString
& title
, const wxPoint
& pos
, const wxSize
& size
):
983 LoadFromResource((wxWindow
*) NULL
, "project_dialog");
987 void MyDialog::OnQuit(wxCommandEvent
& event
)
992 void MyDialog::OnAbout(wxCommandEvent
& event
)
996 void MyDialog::OnGenerate(wxCommandEvent
& event
)
1000 void MyDialog::OnGenerateSamples(wxCommandEvent
& event
)
1002 char* dir
= getenv("WXWIN");
1006 wxTextEntryDialog
dialog(this, "Please enter the wxWindows directory", "Text entry", dirStr
, wxOK
|wxCANCEL
);
1007 if (dialog
.ShowModal() == wxID_OK
)
1009 if (wxDirExists(dialog
.GetValue()))
1011 // wxGetApp().GenerateSample("MinimalVC", "minimal", dir + wxString("/samples/minimal"),
1012 // wxStringList("minimal.cpp", 0));
1014 wxGetApp().GenerateSamples(dialog
.GetValue());
1018 wxMessageBox("This directory doesn't exist.");