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("ExecVC", "exec", dir
+ wxString("/samples/exec"), wxStringList("exec.cpp", 0));
225 GenerateSample("GridVC", "test", dir
+ wxString("/samples/grid"), wxStringList("test.cpp", 0));
226 GenerateSample("NewGridVC", "griddemo", dir
+ wxString("/samples/newgrid"), wxStringList("griddemo.cpp", 0));
227 GenerateSample("HelpVC", "demo", dir
+ wxString("/samples/help"), wxStringList("demo.cpp", 0));
230 GenerateSample("AboutVC", "about", dir
+ wxString("/samples/html/about"), wxStringList("about.cpp", 0),
232 GenerateSample("HelpVC", "help", dir
+ wxString("/samples/html/help"), wxStringList("help.cpp", 0),
234 GenerateSample("PrintingVC", "printing", dir
+ wxString("/samples/html/printing"), wxStringList("printing.cpp", 0),
236 GenerateSample("TestVC", "test", dir
+ wxString("/samples/html/test"), wxStringList("test.cpp", 0),
238 GenerateSample("VirtualVC", "virtual", dir
+ wxString("/samples/html/virtual"), wxStringList("virtual.cpp", 0),
240 GenerateSample("WidgetVC", "widget", dir
+ wxString("/samples/html/widget"), wxStringList("widget.cpp", 0),
242 GenerateSample("ZipVC", "zip", dir
+ wxString("/samples/html/zip"), wxStringList("zip.cpp", 0),
244 GenerateSample("HelpViewVC", "helpview", dir
+ wxString("/samples/html/helpview"), wxStringList("helpview.cpp", 0),
247 GenerateSample("ImageVC", "image", dir
+ wxString("/samples/image"), wxStringList("image.cpp", 0));
248 GenerateSample("InternatVC", "internat", dir
+ wxString("/samples/internat"), wxStringList("internat.cpp", 0));
249 GenerateSample("JoytestVC", "joytest", dir
+ wxString("/samples/joytest"), wxStringList("joytest.cpp", "joytest.h", 0));
250 GenerateSample("LayoutVC", "layout", dir
+ wxString("/samples/layout"), wxStringList("layout.cpp", "layout.h", 0));
251 GenerateSample("ListctrlVC", "listtest", dir
+ wxString("/samples/listctrl"), wxStringList("listtest.cpp", "listtest.h", 0));
252 GenerateSample("MdiVC", "mdi", dir
+ wxString("/samples/mdi"), wxStringList("mdi.cpp", "mdi.h", 0));
253 GenerateSample("MemcheckVC", "memcheck", dir
+ wxString("/samples/memcheck"), wxStringList("memcheck.cpp", 0));
254 // Note: MFC sample will be different.
255 GenerateSample("MfcVC", "mfc", dir
+ wxString("/samples/mfc"), wxStringList("mfctest.cpp", "mfctest.h", 0));
256 GenerateSample("MiniframVC", "test", dir
+ wxString("/samples/minifram"), wxStringList("test.cpp", "test.h", 0));
257 GenerateSample("MinimalVC", "minimal", dir
+ wxString("/samples/minimal"), wxStringList("minimal.cpp", 0));
258 GenerateSample("NativdlgVC", "nativdlg", dir
+ wxString("/samples/nativdlg"), wxStringList("nativdlg.cpp", "nativdlg.h", "resource.h", 0));
259 GenerateSample("DialupVC", "nettest", dir
+ wxString("/samples/dialup"), wxStringList("nettest.cpp", 0));
260 GenerateSample("NotebookVC", "test", dir
+ wxString("/samples/notebook"), wxStringList("test.cpp", "test.h", 0));
261 GenerateSample("OleautoVC", "oleauto", dir
+ wxString("/samples/oleauto"), wxStringList("oleauto.cpp", 0));
262 GenerateSample("OwnerdrwVC", "ownerdrw", dir
+ wxString("/samples/ownerdrw"), wxStringList("ownerdrw.cpp", 0));
263 GenerateSample("PngVC", "pngdemo", dir
+ wxString("/samples/png"), wxStringList("pngdemo.cpp", "pngdemo.h", 0));
264 GenerateSample("PrintingVC", "printing", dir
+ wxString("/samples/printing"), wxStringList("printing.cpp", "printing.h", 0));
265 GenerateSample("ProplistVC", "test", dir
+ wxString("/samples/proplist"), wxStringList("test.cpp", "test.h", 0));
266 GenerateSample("RegtestVC", "regtest", dir
+ wxString("/samples/regtest"), wxStringList("regtest.cpp", 0));
267 GenerateSample("ResourceVC", "resource", dir
+ wxString("/samples/resource"), wxStringList("resource.cpp", "resource.h", 0));
268 GenerateSample("RichEditVC", "wxLayout", dir
+ wxString("/samples/richedit"), wxStringList("wxLayout.cpp",
269 "kbList.cpp", "wxllist.cpp", "wxlparser.cpp", "wxlwindow.cpp", 0));
270 GenerateSample("SashtestVC", "sashtest", dir
+ wxString("/samples/sashtest"), wxStringList("sashtest.cpp", "sashtest.h", 0));
271 GenerateSample("ScrollVC", "scroll", dir
+ wxString("/samples/scroll"), wxStringList("scroll.cpp", 0));
272 GenerateSample("SplitterVC", "test", dir
+ wxString("/samples/splitter"), wxStringList("test.cpp", 0));
273 GenerateSample("TabVC", "test", dir
+ wxString("/samples/tab"), wxStringList("test.cpp", "test.h", 0));
274 GenerateSample("TaskbarVC", "tbtest", dir
+ wxString("/samples/taskbar"), wxStringList("tbtest.cpp", "tbtest.h", 0));
275 GenerateSample("TextVC", "text", dir
+ wxString("/samples/text"), wxStringList("text.cpp", 0));
276 GenerateSample("ThreadVC", "test", dir
+ wxString("/samples/thread"), wxStringList("test.cpp", 0));
277 GenerateSample("ToolbarVC", "toolbar", dir
+ wxString("/samples/toolbar"), wxStringList("toolbar.cpp", 0));
278 GenerateSample("TreectrlVC", "treetest", dir
+ wxString("/samples/treectrl"), wxStringList("treetest.cpp", "treetest.h", 0));
279 GenerateSample("TypetestVC", "typetest", dir
+ wxString("/samples/typetest"), wxStringList("typetest.cpp", "typetest.h", 0));
280 GenerateSample("ValidateVC", "validate", dir
+ wxString("/samples/validate"), wxStringList("validate.cpp", "validate.h", 0));
281 GenerateSample("ClientVC", "client", dir
+ wxString("/samples/socket"), wxStringList("client.cpp", 0));
282 GenerateSample("ServerVC", "server", dir
+ wxString("/samples/socket"), wxStringList("server.cpp", 0));
283 GenerateSample("ClientVC", "client", dir
+ wxString("/samples/dde"), wxStringList("client.cpp", "client.h", "ddesetup.h", 0));
284 GenerateSample("ServerVC", "server", dir
+ wxString("/samples/dde"), wxStringList("server.cpp", "server.h", "ddesetup.h", 0));
285 GenerateSample("CaretVC", "caret", dir
+ wxString("/samples/caret"), wxStringList("caret.cpp", 0));
286 GenerateSample("DrawingVC", "drawing", dir
+ wxString("/samples/drawing"), wxStringList("drawing.cpp", 0));
287 GenerateSample("ScrollVC", "scroll", dir
+ wxString("/samples/scroll"), wxStringList("scroll.cpp", 0));
288 GenerateSample("WizardVC", "wizard", dir
+ wxString("/samples/wizard"), wxStringList("wiztest.cpp", 0));
289 GenerateSample("RotateVC", "rotate", dir
+ wxString("/samples/rotate"), wxStringList("rotate.cpp", 0));
293 GenerateSample("BombsVC", "bombs", dir
+ wxString("/demos/bombs"),
294 wxStringList("bombs.cpp", "bombs1.cpp", "game.cpp", "bombs.h", "game.h", 0));
296 GenerateSample("FortyVC", "forty", dir
+ wxString("/demos/forty"),
297 wxStringList("forty.cpp", "canvas.cpp", "card.cpp", "game.cpp", "pile.cpp", "playerdg.cpp", "scoredg.cpp", "scorefil.cpp",
298 "canvas.h", "forty.h", "card.h", "game.h", "pile.h", "playerdg.h", "scoredg.h", "scorefil.h",
301 GenerateSample("FractalVC", "fractal", dir
+ wxString("/demos/fractal"), wxStringList("fractal.cpp", 0));
303 GenerateSample("LifeVC", "life", dir
+ wxString("/demos/life"),
304 wxStringList("life.cpp", "game.cpp", "dialogs.cpp", "life.h", "game.h", "dialogs.h", 0));
306 GenerateSample("PoemVC", "wxpoem", dir
+ wxString("/demos/poem"), wxStringList("wxpoem.cpp", "wxpoem.h", 0));
308 GenerateSample("DbbrowseVC", "dbbrowse", dir
+ wxString("/demos/dbbrowse"),
309 wxStringList("dbbrowse.cpp", "browsedb.cpp", "dbgrid.cpp", "dbtree.cpp", "dlguser.cpp", "doc.cpp",
310 "pgmctrl.cpp", "tabpgwin.cpp",
311 "dbbrowse.h", "browsedb.h", "dbgrid.h", "dbtree.h", "dlguser.h", "doc.h", "pgmctrl.h", "std.h", "tabpgwin.h",
319 project
.SetIncludeDirs(wxStringList("../../../include", 0));
320 project
.SetResourceIncludeDirs(wxStringList("../../../include", 0));
321 project
.SetLibDirs(wxStringList("../../../lib", 0));
322 project
.SetDebugLibDirs(wxStringList("../../../src/Debug", "../../../src/jpeg/Debug", "../../../src/tiff/Debug", 0));
323 project
.SetReleaseLibDirs(wxStringList("../../../src/Release", "../../../src/jpeg/Release", "../../../src/tiff/Release", 0));
325 project
.SetProjectName("DialogEdVC");
326 project
.SetTargetName("dialoged");
327 project
.SetProjectPath(dir
+ wxString("/utils/dialoged/src"));
328 project
.SetSourceFiles(wxStringList("dialoged.cpp", "dlghndlr.cpp", "edlist.cpp", "edtree.cpp",
329 "reseditr.cpp", "reswrite.cpp", "symbtabl.cpp", "winstyle.cpp", "winprop.cpp",
330 "dialoged.h", "dlghndlr.h", "edlist.h", "edtree.h", "reseditr.h", "symbtabl.h", "winprop.h",
334 if (!project
.GenerateVCProject())
336 wxString
msg("Could not generate Dialog Editor project");
341 project
.SetIncludeDirs(wxStringList("../../../include", 0));
342 project
.SetResourceIncludeDirs(wxStringList("../../../include", 0));
343 project
.SetLibDirs(wxStringList("../../../lib", 0));
344 project
.SetDebugLibDirs(wxStringList("../../../src/Debug", "../../../src/jpeg/Debug", "../../../src/tiff/Debug", 0));
345 project
.SetReleaseLibDirs(wxStringList("../../../src/Release", "../../../src/jpeg/Release", "../../../src/tiff/Release", 0));
347 project
.SetProjectName("Tex2RTFVC");
348 project
.SetTargetName("tex2rtf");
349 project
.SetProjectPath(dir
+ wxString("/utils/tex2rtf/src"));
350 project
.SetSourceFiles(wxStringList("tex2rtf.cpp", "htmlutil.cpp", "readshg.cpp", "rtfutils.cpp",
351 "table.cpp", "tex2any.cpp", "texutils.cpp", "xlputils.cpp",
352 "bmputils.h", "readshg.h", "rtfutils.h", "table.h", "tex2any.h", "tex2rtf.h", "wxhlpblk.h",
355 if (!project
.GenerateVCProject())
357 wxString
msg("Could not generate Tex2RTF project");
362 project
.SetIncludeDirs(wxStringList("../../../include", 0));
363 project
.SetResourceIncludeDirs(wxStringList("../../../include", 0));
364 project
.SetLibDirs(wxStringList("../../../lib", 0));
365 project
.SetDebugLibDirs(wxStringList("../../../src/Debug", "../../../src/jpeg/Debug", "../../../src/tiff/Debug", 0));
366 project
.SetReleaseLibDirs(wxStringList("../../../src/Release", "../../../src/jpeg/Release", "../../../src/tiff/Release", 0));
368 project
.SetProjectName("HelpGenVC");
369 project
.SetTargetName("helpgen");
370 project
.SetProjectPath(dir
+ wxString("/utils/helpgen/src"));
371 project
.SetSourceFiles(wxStringList("helpgen.cpp", "cjparser.cpp", "docripper.cpp", "ifcontext.cpp",
372 "markup.cpp", "ripper_main.cpp", "scriptbinder.cpp", "sourcepainter.cpp",
374 "cjparser.h", "docripper.h", "ifcontext.h", "markup.h", "scriptbinder.h", "sourcepainter.h",
375 "srcparser.h", "wxstlac.h", "wxstllst.h", "wxstlvec.h", 0));
377 if (!project
.GenerateVCProject())
379 wxString
msg("Could not generate HelpGen project");
384 project
.SetIncludeDirs(wxStringList("../../include", 0));
385 project
.SetResourceIncludeDirs(wxStringList("../../include", 0));
386 project
.SetLibDirs(wxStringList("../../lib", 0));
387 project
.SetDebugLibDirs(wxStringList("../../src/Debug", "../../src/jpeg/Debug", "../../src/tiff/Debug", 0));
388 project
.SetReleaseLibDirs(wxStringList("../../src/Release", "../../src/jpeg/Release", "../../src/tiff/Release", 0));
390 project
.SetProjectName("ProjGenVC");
391 project
.SetTargetName("makeproj");
392 project
.SetProjectPath(dir
+ wxString("/utils/projgen"));
393 project
.SetSourceFiles(wxStringList("makeproj.cpp", "makeproj.h", 0));
395 if (!project
.GenerateVCProject())
397 wxString
msg("Could not generate ProjGen project");
402 project
.SetIncludeDirs(wxStringList("../../include", 0));
403 project
.SetResourceIncludeDirs(wxStringList("../../include", 0));
404 project
.SetLibDirs(wxStringList("../../lib", 0));
405 project
.SetDebugLibDirs(wxStringList("../../src/Debug", "../../src/jpeg/Debug", "../../src/tiff/Debug", 0));
406 project
.SetReleaseLibDirs(wxStringList("../../src/Release", "../../src/jpeg/Release", "../../src/tiff/Release", 0));
408 project
.SetProjectName("hhp2cachedVC");
409 project
.SetTargetName("hhp2cached");
410 project
.SetProjectPath(dir
+ wxString("/utils/hhp2cached"));
411 project
.SetSourceFiles(wxStringList("hhp2cached.cpp", 0));
413 if (!project
.GenerateVCProject())
415 wxString
msg("Could not generate hhp2cached project");
419 // wxTreeLayout sample
421 project
.SetIncludeDirs(wxStringList("../../../include", 0));
422 project
.SetResourceIncludeDirs(wxStringList("../../../include", 0));
423 project
.SetLibDirs(wxStringList("../../../lib", 0));
424 project
.SetDebugLibDirs(wxStringList("../../../src/Debug", "../../../src/jpeg/Debug", "../../../src/tiff/Debug", 0));
425 project
.SetReleaseLibDirs(wxStringList("../../../src/Release", "../../../src/jpeg/Release", "../../../src/tiff/Release", 0));
427 project
.SetProjectName("TreeSampleVC");
428 project
.SetTargetName("test");
429 project
.SetProjectPath(dir
+ wxString("/utils/wxtree/src"));
430 project
.SetSourceFiles(wxStringList("test.cpp", "wxtree.cpp", "test.h", "wxtree.h", 0));
432 if (!project
.GenerateVCProject())
434 wxString
msg("Could not generate wxTreeLayout project");
440 project
.SetIncludeDirs(wxStringList("../../../../include", "../../src", 0));
441 project
.SetResourceIncludeDirs(wxStringList("../../../../include", 0));
442 project
.SetLibDirs(wxStringList("../../../../lib", 0));
443 project
.SetDebugLibDirs(wxStringList("../../../../src/Debug", "../../src/Debug", "../../../../src/jpeg/Debug", "../../../../src/tiff/Debug", 0));
444 project
.SetReleaseLibDirs(wxStringList("../../../../src/Release", "../../src/Release", "../../../../src/jpeg/Release", "../../../../src/tiff/Release", 0));
446 project
.SetExtraLibs(wxStringList("ogl.lib", 0));
448 project
.SetProjectName("OGLEditVC");
449 project
.SetTargetName("ogledit");
450 project
.SetProjectPath(dir
+ wxString("/utils/ogl/samples/ogledit"));
451 project
.SetSourceFiles(wxStringList("ogledit.cpp", "doc.cpp", "palette.cpp", "view.cpp",
452 "doc.h", "ogledit.h", "palette.h", "view.h",
455 if (!project
.GenerateVCProject())
457 wxString
msg("Could not generate OGLEdit project");
463 project
.SetIncludeDirs(wxStringList("../../../../include", "../../src", 0));
464 project
.SetResourceIncludeDirs(wxStringList("../../../../include", 0));
465 project
.SetLibDirs(wxStringList("../../../../lib", 0));
466 project
.SetDebugLibDirs(wxStringList("../../../../src/Debug", "../../src/Debug", "../../../../src/jpeg/Debug", "../../../../src/tiff/Debug", 0));
467 project
.SetReleaseLibDirs(wxStringList("../../../../src/Release", "../../src/Release", "../../../../src/jpeg/Release", "../../../../src/tiff/Release", 0));
468 project
.SetExtraLibs(wxStringList("ogl.lib", 0));
470 project
.SetProjectName("StudioVC");
471 project
.SetTargetName("studio");
472 project
.SetProjectPath(dir
+ wxString("/utils/ogl/samples/studio"));
473 project
.SetSourceFiles(wxStringList("studio.cpp", "cspalette.cpp", "dialogs.cpp", "view.cpp",
474 "doc.cpp", "mainfrm.cpp", "project.cpp", "shapes.cpp", "symbols.cpp", "csprint.cpp",
475 "studio.h", "cspalette.h", "dialogs.h", "view.h",
476 "doc.h", "mainfrm.h", "project.h", "shapes.h", "symbols.h",
479 if (!project
.GenerateVCProject())
481 wxString
msg("Could not generate OGL Studio project");
485 // GLCanvas cube sample
487 project
.SetIncludeDirs(wxStringList("../../../../include", "../../win", 0));
488 project
.SetResourceIncludeDirs(wxStringList("../../../../include", 0));
489 project
.SetLibDirs(wxStringList("../../../../lib", 0));
490 project
.SetDebugLibDirs(wxStringList("../../../../src/Debug", "../../win/Debug", "../../../../src/jpeg/Debug", "../../../../src/tiff/Debug", 0));
491 project
.SetReleaseLibDirs(wxStringList("../../../../src/Release", "../../win/Release", "../../../../src/jpeg/Release", "../../../../src/tiff/Release", 0));
493 project
.SetExtraLibs(wxStringList("glcanvas.lib", "opengl32.lib", "glu32.lib", 0));
495 project
.SetProjectName("CubeVC");
496 project
.SetTargetName("cube");
497 project
.SetProjectPath(dir
+ wxString("/utils/glcanvas/samples/cube"));
498 project
.SetSourceFiles(wxStringList("cube.cpp", "cube.h",
501 if (!project
.GenerateVCProject())
503 wxString
msg("Could not generate GLCanvas Cube project");
507 // GLCanvas isosurf sample
509 project
.SetIncludeDirs(wxStringList("../../../../include", "../../win", 0));
510 project
.SetResourceIncludeDirs(wxStringList("../../../../include", 0));
511 project
.SetLibDirs(wxStringList("../../../../lib", 0));
512 project
.SetDebugLibDirs(wxStringList("../../../../src/Debug", "../../win/Debug", "../../../../src/jpeg/Debug", "../../../../src/tiff/Debug", 0));
513 project
.SetReleaseLibDirs(wxStringList("../../../../src/Release", "../../win/Release", "../../../../src/jpeg/Release", "../../../../src/tiff/Release", 0));
514 project
.SetExtraLibs(wxStringList("glcanvas.lib", "opengl32.lib", "glu32.lib", 0));
516 project
.SetProjectName("IsoSurfVC");
517 project
.SetTargetName("isosurf");
518 project
.SetProjectPath(dir
+ wxString("/utils/glcanvas/samples/isosurf"));
519 project
.SetSourceFiles(wxStringList("isosurf.cpp", "isosurf.h",
522 if (!project
.GenerateVCProject())
524 wxString
msg("Could not generate GLCanvas IsoSurf project");
528 // GLCanvas penguin sample
530 project
.SetIncludeDirs(wxStringList("../../../../include", "../../win", 0));
531 project
.SetResourceIncludeDirs(wxStringList("../../../../include", 0));
532 project
.SetLibDirs(wxStringList("../../../../lib", 0));
533 project
.SetDebugLibDirs(wxStringList("../../../../src/Debug", "../../win/Debug", "../../../../src/jpeg/Debug", "../../../../src/tiff/Debug", 0));
534 project
.SetReleaseLibDirs(wxStringList("../../../../src/Release", "../../win/Release", "../../../../src/jpeg/Release", "../../../../src/tiff/Release", 0));
535 project
.SetExtraLibs(wxStringList("glcanvas.lib", "opengl32.lib", "glu32.lib", 0));
537 project
.SetProjectName("PenguinVC");
538 project
.SetTargetName("penguin");
539 project
.SetProjectPath(dir
+ wxString("/utils/glcanvas/samples/penguin"));
540 project
.SetSourceFiles(wxStringList("penguin.cpp", "penguin.h",
542 "trackball.c", "trackball.h",
545 if (!project
.GenerateVCProject())
547 wxString
msg("Could not generate GLCanvas Penguin project");
552 // ----------------------------------------------------------------------------
554 // ----------------------------------------------------------------------------
557 MyFrame::MyFrame(const wxString
& title
, const wxPoint
& pos
, const wxSize
& size
)
558 : wxFrame((wxFrame
*)NULL
, -1, title
, pos
, size
)
560 // set the frame icon
561 SetIcon(wxICON(mondrian
));
564 wxMenu
*menuFile
= new wxMenu
;
566 menuFile
->Append(MakeProject_Generate
, "&Generate");
567 menuFile
->Append(MakeProject_About
, "&About...");
568 menuFile
->AppendSeparator();
569 menuFile
->Append(MakeProject_Quit
, "E&xit");
571 // now append the freshly created menu to the menu bar...
572 wxMenuBar
*menuBar
= new wxMenuBar
;
573 menuBar
->Append(menuFile
, "&File");
575 // ... and attach this menu bar to the frame
578 // create a status bar just for fun (by default with 1 pane only)
580 SetStatusText("Welcome to wxWindows!");
586 void MyFrame::OnQuit(wxCommandEvent
& WXUNUSED(event
))
588 // TRUE is to force the frame to close
592 void MyFrame::OnAbout(wxCommandEvent
& WXUNUSED(event
))
594 wxMessageBox("MakeProject: generates VC++ project files",
595 "About MakeProject", wxOK
| wxICON_INFORMATION
, this);
598 void MyFrame::OnGenerate(wxCommandEvent
& WXUNUSED(event
))
600 wxGetApp().GenerateSamples("d:/wx2/wxWindows");
603 bool MyFrame::GenerateSample(const wxString
& projectName
, const wxString
& targetName
,
604 const wxString
& path
, const wxStringList
& sourceFiles
, const wxString
& relativeRootPath
)
606 return wxGetApp().GenerateSample(projectName
, targetName
, path
, sourceFiles
, relativeRootPath
);
613 wxProject::wxProject()
617 wxProject::~wxProject()
622 bool wxProject::GenerateVCProject()
624 wxString fullProjectName
= m_path
+ wxString("/") + m_projectName
+ ".dsp";
626 ofstream
stream(fullProjectName
);
630 /////////////////////// General stuff
632 stream
<< "# Microsoft Developer Studio Project File - Name=\"" << m_projectName
<< "\" - Package Owner=<4>\n";
633 stream
<< "# Microsoft Developer Studio Generated Build File, Format Version 5.00\n";
634 stream
<< "# (Actually, generated by MakeProject, (c) Julian Smart, 1998)\n";
635 stream
<< "# ** DO NOT EDIT **\n\n";
636 stream
<< "# TARGTYPE \"Win32 (x86) Application\" 0x0101\n\n";
637 stream
<< "CFG=" << m_projectName
<< " - Win32 Debug\n";
638 stream
<< "!MESSAGE This is not a valid makefile. To build this project using NMAKE,\n";
639 stream
<< "!MESSAGE use the Export Makefile command and run\n";
640 stream
<< "!MESSAGE\n";
641 stream
<< "!MESSAGE NMAKE /f \"" << m_projectName
<< ".mak\".\n";
642 stream
<< "!MESSAGE\n";
643 stream
<< "!MESSAGE You can specify a configuration when running NMAKE\n";
644 stream
<< "!MESSAGE by defining the macro CFG on the command line. For example:\n";
645 stream
<< "!MESSAGE\n";
646 stream
<< "!MESSAGE NMAKE /f \"" << m_projectName
<< ".mak\" CFG=\"" << m_projectName
<< " - Win32 Debug\"\n";
647 stream
<< "!MESSAGE\n";
648 stream
<< "!MESSAGE Possible choices for configuration are:\n";
649 stream
<< "!MESSAGE\n";
650 stream
<< "!MESSAGE \"" << m_projectName
<< " - Win32 Release\" (based on \"Win32 (x86) Application\")\n";
651 stream
<< "!MESSAGE \"" << m_projectName
<< " - Win32 Debug\" (based on \"Win32 (x86) Application\")\n";
652 stream
<< "!MESSAGE \"" << m_projectName
<< " - Win32 Debug DLL\" (based on \"Win32 (x86) Application\")\n";
653 stream
<< "!MESSAGE \"" << m_projectName
<< " - Win32 Release DLL\" (based on \"Win32 (x86) Application\")\n";
654 stream
<< "!MESSAGE\n";
656 stream
<< "# Begin Project\n";
657 stream
<< "# PROP Scc_ProjName \"\"\n";
658 stream
<< "# PROP Scc_LocalPath \"\"\n";
659 stream
<< "CPP=cl.exe\n";
660 stream
<< "MTL=midl.exe\n";
661 stream
<< "RSC=rc.exe\n";
664 /////////////////////// Win32 Release target
666 stream
<< "!IF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Release\"\n";
668 stream
<< "# PROP BASE Use_MFC 0\n";
669 stream
<< "# PROP BASE Use_Debug_Libraries 0\n";
670 stream
<< "# PROP BASE Output_Dir \"Release\"\n";
671 stream
<< "# PROP BASE Intermediate_Dir \"Release\"\n";
672 stream
<< "# PROP BASE Target_Dir \"\"\n";
673 stream
<< "# PROP Use_MFC 0\n";
674 stream
<< "# PROP Use_Debug_Libraries 0\n";
675 stream
<< "# PROP Output_Dir \"Release\"\n";
676 stream
<< "# PROP Intermediate_Dir \"Release\"\n";
677 stream
<< "# PROP Ignore_Export_Lib 0\n";
678 stream
<< "# PROP Target_Dir \"\"\n";
679 stream
<< "# ADD BASE CPP /nologo /W3 /GX /O2 /D \"WIN32\" /D \"NDEBUG\" /D \"_WINDOWS\" /YX /FD /c\n";
680 stream
<< "# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2";
682 int n
= m_includeDirs
.Number();
684 for (i
= 0; i
< n
; i
++)
686 wxString includeDir
= m_includeDirs
[i
];
687 stream
<< " /I \"" << includeDir
<< "\"";
690 stream
<< " /D \"NDEBUG\" /D \"WIN32\" /D \"_WINDOWS\" /D \"__WINDOWS__\" /D \"__WXMSW__\" /D \"__WIN95__\" /D \"__WIN32__\" /D WINVER=0x0400 /D \"STRICT\" /FD /c\n";
691 stream
<< "# SUBTRACT CPP /YX\n";
692 stream
<< "# ADD BASE MTL /nologo /D \"NDEBUG\" /mktyplib203 /o NUL /win32\n";
693 stream
<< "# ADD MTL /nologo /D \"NDEBUG\" /mktyplib203 /o NUL /win32\n";
694 stream
<< "# ADD BASE RSC /l 0x809 /d \"NDEBUG\"\n";
695 stream
<< "# ADD RSC /l 0x809 /d \"NDEBUG\"\n";
696 stream
<< "BSC32=bscmake.exe\n";
697 stream
<< "# ADD BASE BSC32 /nologo\n";
698 stream
<< "# ADD BSC32 /nologo\n";
699 stream
<< "LINK32=link.exe\n";
700 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";
701 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 ";
702 n
= m_extraLibs
.Number();
703 for (i
= 0; i
< n
; i
++)
705 wxString lib
= m_extraLibs
[i
];
706 stream
<< lib
<< " ";
709 stream
<< "/nologo /subsystem:windows /machine:I386 /nodefaultlib:\"libc.lib,libci.lib,msvcrtd.lib\" /out:\"Release/" << m_targetName
<< ".exe\"";
711 n
= m_releaseLibDirs
.Number();
712 for (i
= 0; i
< n
; i
++)
714 wxString libDir
= m_releaseLibDirs
[i
];
715 stream
<< " /libpath:\"" << libDir
<< "\"";
717 n
= m_libDirs
.Number();
718 for (i
= 0; i
< n
; i
++)
720 wxString libDir
= m_libDirs
[i
];
721 stream
<< " /libpath:\"" << libDir
<< "\"";
726 /////////////////////// Win32 Debug target
728 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Debug\"\n";
730 stream
<< "# PROP BASE Use_MFC 0\n";
731 stream
<< "# PROP BASE Use_Debug_Libraries 1\n";
732 stream
<< "# PROP BASE Output_Dir \"Debug\"\n";
733 stream
<< "# PROP BASE Intermediate_Dir \"Debug\"\n";
734 stream
<< "# PROP BASE Target_Dir \"\"\n";
735 stream
<< "# PROP Use_MFC 0\n";
736 stream
<< "# PROP Use_Debug_Libraries 1\n";
737 stream
<< "# PROP Output_Dir \"Debug\"\n";
738 stream
<< "# PROP Intermediate_Dir \"Debug\"\n";
739 stream
<< "# PROP Ignore_Export_Lib 0\n";
740 stream
<< "# PROP Target_Dir \"\"\n";
741 stream
<< "# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D \"WIN32\" /D \"_DEBUG\" /D \"_WINDOWS\" /YX /FD /c\n";
742 stream
<< "# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od";
744 n
= m_includeDirs
.Number();
745 for (i
= 0; i
< n
; i
++)
747 wxString includeDir
= m_includeDirs
[i
];
748 stream
<< " /I \"" << includeDir
<< "\"";
751 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";
752 stream
<< "# ADD BASE MTL /nologo /D \"_DEBUG\" /mktyplib203 /o NUL /win32\n";
753 stream
<< "# ADD MTL /nologo /D \"_DEBUG\" /mktyplib203 /o NUL /win32\n";
754 stream
<< "# ADD BASE RSC /l 0x809 /d \"_DEBUG\"\n";
755 stream
<< "# ADD RSC /l 0x809 /d \"_DEBUG\"\n";
756 stream
<< "BSC32=bscmake.exe\n";
757 stream
<< "# ADD BASE BSC32 /nologo\n";
758 stream
<< "# ADD BSC32 /nologo\n";
759 stream
<< "LINK32=link.exe\n";
760 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";
761 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 ";
762 n
= m_extraLibs
.Number();
763 for (i
= 0; i
< n
; i
++)
765 wxString lib
= m_extraLibs
[i
];
766 stream
<< lib
<< " ";
768 stream
<< "/nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:\"libcd.lib,libcid.lib,msvcrt.lib\" /out:\"Debug/" << m_targetName
<< ".exe\" /pdbtype:sept";
770 n
= m_debugLibDirs
.Number();
771 for (i
= 0; i
< n
; i
++)
773 wxString libDir
= m_debugLibDirs
[i
];
774 stream
<< " /libpath:\"" << libDir
<< "\"";
776 n
= m_libDirs
.Number();
777 for (i
= 0; i
< n
; i
++)
779 wxString libDir
= m_libDirs
[i
];
780 stream
<< " /libpath:\"" << libDir
<< "\"";
784 // stream << "!ENDIF\n";
787 /////////////////////// Win32 Debug DLL target
789 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Debug DLL\"\n";
791 stream
<< "# PROP BASE Use_MFC 0\n";
792 stream
<< "# PROP BASE Use_Debug_Libraries 1\n";
793 stream
<< "# PROP BASE Output_Dir \"DebugDLL\"\n";
794 stream
<< "# PROP BASE Intermediate_Dir \"DebugDLL\"\n";
795 stream
<< "# PROP BASE Target_Dir \"\"\n";
796 stream
<< "# PROP Use_MFC 0\n";
797 stream
<< "# PROP Use_Debug_Libraries 1\n";
798 stream
<< "# PROP Output_Dir \"DebugDLL\"\n";
799 stream
<< "# PROP Intermediate_Dir \"DebugDLL\"\n";
800 stream
<< "# PROP Ignore_Export_Lib 0\n";
801 stream
<< "# PROP Target_Dir \"\"\n";
802 stream
<< "# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D \"WIN32\" /D \"_DEBUG\" /D \"_WINDOWS\" /YX /FD /c\n";
803 stream
<< "# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od";
805 n
= m_includeDirs
.Number();
806 for (i
= 0; i
< n
; i
++)
808 wxString includeDir
= m_includeDirs
[i
];
809 stream
<< " /I \"" << includeDir
<< "\"";
812 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";
813 stream
<< "# ADD BASE MTL /nologo /D \"_DEBUG\" /mktyplib203 /o NUL /win32\n";
814 stream
<< "# ADD MTL /nologo /D \"_DEBUG\" /mktyplib203 /o NUL /win32\n";
815 stream
<< "# ADD BASE RSC /l 0x809 /d \"_DEBUG\"\n";
816 stream
<< "# ADD RSC /l 0x809 /d \"_DEBUG\"\n";
817 stream
<< "BSC32=bscmake.exe\n";
818 stream
<< "# ADD BASE BSC32 /nologo\n";
819 stream
<< "# ADD BSC32 /nologo\n";
820 stream
<< "LINK32=link.exe\n";
821 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";
822 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 ";
823 n
= m_extraLibs
.Number();
824 for (i
= 0; i
< n
; i
++)
826 wxString lib
= m_extraLibs
[i
];
827 stream
<< lib
<< " ";
829 stream
<< "/nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:\"libcd.lib\" /nodefaultlib:\"libcid.lib\" /out:\"DebugDLL/" << m_targetName
<< ".exe\" /pdbtype:sept";
831 n
= m_debugLibDirs
.Number();
832 for (i
= 0; i
< n
; i
++)
834 wxString libDir
= m_debugLibDirs
[i
];
835 libDir
+= "DLL"; // Assume that we have e.g. Debug so make it DebugDLL
836 stream
<< " /libpath:\"" << libDir
<< "\"";
838 n
= m_libDirs
.Number();
839 for (i
= 0; i
< n
; i
++)
841 wxString libDir
= m_libDirs
[i
];
842 stream
<< " /libpath:\"" << libDir
<< "\"";
846 // stream << "!ENDIF\n";
849 /////////////////////// Win32 Release DLL target
851 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Release DLL\"\n";
853 stream
<< "# PROP BASE Use_MFC 0\n";
854 stream
<< "# PROP BASE Use_Debug_Libraries 0\n";
855 stream
<< "# PROP BASE Output_Dir \"ReleaseDLL\"\n";
856 stream
<< "# PROP BASE Intermediate_Dir \"ReleaseDLL\"\n";
857 stream
<< "# PROP BASE Target_Dir \"\"\n";
858 stream
<< "# PROP Use_MFC 0\n";
859 stream
<< "# PROP Use_Debug_Libraries 0\n";
860 stream
<< "# PROP Output_Dir \"ReleaseDLL\"\n";
861 stream
<< "# PROP Intermediate_Dir \"ReleaseDLL\"\n";
862 stream
<< "# PROP Ignore_Export_Lib 0\n";
863 stream
<< "# PROP Target_Dir \"\"\n";
864 stream
<< "# ADD BASE CPP /nologo /W3 /GX /O2 /D \"WIN32\" /D \"NDEBUG\" /D \"_WINDOWS\" /YX /FD /c\n";
865 stream
<< "# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2";
867 n
= m_includeDirs
.Number();
868 for (i
= 0; i
< n
; i
++)
870 wxString includeDir
= m_includeDirs
[i
];
871 stream
<< " /I \"" << includeDir
<< "\"";
874 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";
875 stream
<< "# SUBTRACT CPP /YX\n";
876 stream
<< "# ADD BASE MTL /nologo /D \"NDEBUG\" /mktyplib203 /o NUL /win32\n";
877 stream
<< "# ADD MTL /nologo /D \"NDEBUG\" /mktyplib203 /o NUL /win32\n";
878 stream
<< "# ADD BASE RSC /l 0x809 /d \"NDEBUG\"\n";
879 stream
<< "# ADD RSC /l 0x809 /d \"NDEBUG\"\n";
880 stream
<< "BSC32=bscmake.exe\n";
881 stream
<< "# ADD BASE BSC32 /nologo\n";
882 stream
<< "# ADD BSC32 /nologo\n";
883 stream
<< "LINK32=link.exe\n";
884 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";
885 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 ";
886 n
= m_extraLibs
.Number();
887 for (i
= 0; i
< n
; i
++)
889 wxString lib
= m_extraLibs
[i
];
890 stream
<< lib
<< " ";
892 stream
<< "/nologo /subsystem:windows /machine:I386 /nodefaultlib:\"libc.lib\" /nodefaultlib:\"libci.lib\" /out:\"ReleaseDLL/" << m_targetName
<< ".exe\"";
894 n
= m_releaseLibDirs
.Number();
895 for (i
= 0; i
< n
; i
++)
897 wxString libDir
= m_releaseLibDirs
[i
];
898 libDir
+= "DLL"; // Assume that we have e.g. Release so make it ReleaseDLL
899 stream
<< " /libpath:\"" << libDir
<< "\"";
901 n
= m_libDirs
.Number();
902 for (i
= 0; i
< n
; i
++)
904 wxString libDir
= m_libDirs
[i
];
905 stream
<< " /libpath:\"" << libDir
<< "\"";
909 stream
<< "!ENDIF\n";
912 /////////////////////// Source code for targets
914 stream
<< "# Begin Target\n";
916 stream
<< "# Name \"" << m_projectName
<< " - Win32 Release\"\n";
917 stream
<< "# Name \"" << m_projectName
<< " - Win32 Debug\"\n";
918 stream
<< "# Name \"" << m_projectName
<< " - Win32 Debug DLL\"\n";
919 stream
<< "# Name \"" << m_projectName
<< " - Win32 Release DLL\"\n";
922 n
= m_sourceFiles
.Number();
923 for (i
= 0; i
< n
; i
++)
925 wxString sourceFile
= m_sourceFiles
[i
];
927 stream
<< "# Begin Source File\n";
929 stream
<< "SOURCE=.\\" << sourceFile
<< "\n";
931 stream
<< "!IF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Release\"\n";
933 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Debug\"\n";
935 stream
<< "# SUBTRACT CPP /YX /Yc /Yu\n";
937 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Debug DLL\"\n";
939 stream
<< "# SUBTRACT BASE CPP /YX /Yc /Yu\n";
940 stream
<< "# SUBTRACT CPP /YX /Yc /Yu\n";
942 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Release DLL\"\n";
944 stream
<< "!ENDIF\n";
946 stream
<< "# End Source File\n";
949 // The .rc file: assume it has the target name + rc extension.
950 stream
<< "# Begin Source File\n";
952 stream
<< "SOURCE=.\\" << m_targetName
<< ".rc\n";
953 stream
<< "# ADD BASE RSC /l 0x809\n";
954 stream
<< "# ADD RSC /l 0x809";
956 n
= m_resourceIncludeDirs
.Number();
957 for (i
= 0; i
< n
; i
++)
959 wxString includeDir
= m_resourceIncludeDirs
[i
];
960 stream
<< " /i \"" << includeDir
<< "\"";
964 stream
<< "# End Source File\n";
965 stream
<< "# End Target\n";
966 stream
<< "# End Project\n";
968 // Now generate the .dsw workspace file
970 wxString fullWorkSpaceName
= m_path
+ wxString("/") + m_projectName
+ ".dsw";
972 ofstream
stream2(fullWorkSpaceName
);
976 stream2
<< "Microsoft Developer Studio Workspace File, Format Version 5.00\n";
977 stream2
<< "# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!\n";
979 stream2
<< "###############################################################################\n";
981 stream2
<< "Project: \"" << m_projectName
<< "\"=.\\" << m_projectName
<< ".dsp - Package Owner=<4>\n";
983 stream2
<< "Package=<5>\n";
987 stream2
<< "Package=<4>\n";
991 stream2
<< "###############################################################################\n";
993 stream2
<< "Global:\n";
995 stream2
<< "Package=<5>\n";
999 stream2
<< "Package=<3>\n";
1003 stream2
<< "###############################################################################\n";
1009 BEGIN_EVENT_TABLE(MyDialog
, wxDialog
)
1010 EVT_BUTTON(wxID_EXIT
, MyDialog::OnQuit
)
1011 EVT_BUTTON(ID_GENERATE_PROJECT
, MyDialog::OnGenerate
)
1012 EVT_BUTTON(ID_GENERATE_SAMPLES
, MyDialog::OnGenerateSamples
)
1015 // ----------------------------------------------------------------------------
1017 // ----------------------------------------------------------------------------
1019 // frame constructor
1020 MyDialog::MyDialog(const wxString
& title
, const wxPoint
& pos
, const wxSize
& size
):
1023 LoadFromResource((wxWindow
*) NULL
, "project_dialog");
1027 void MyDialog::OnQuit(wxCommandEvent
& event
)
1032 void MyDialog::OnAbout(wxCommandEvent
& event
)
1036 void MyDialog::OnGenerate(wxCommandEvent
& event
)
1040 void MyDialog::OnGenerateSamples(wxCommandEvent
& event
)
1042 char* dir
= getenv("WXWIN");
1046 wxTextEntryDialog
dialog(this, "Please enter the wxWindows directory", "Text entry", dirStr
, wxOK
|wxCANCEL
);
1047 if (dialog
.ShowModal() == wxID_OK
)
1049 if (wxDirExists(dialog
.GetValue()))
1051 // wxGetApp().GenerateSample("MinimalVC", "minimal", dir + wxString("/samples/minimal"),
1052 // wxStringList("minimal.cpp", 0));
1054 wxGetApp().GenerateSamples(dialog
.GetValue());
1058 wxMessageBox("This directory doesn't exist.");