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("PropsizeVC", "propsize", dir
+ wxString("/samples/propsize"), wxStringList("propsize.cpp", 0));
267 GenerateSample("RegtestVC", "regtest", dir
+ wxString("/samples/regtest"), wxStringList("regtest.cpp", 0));
268 GenerateSample("ResourceVC", "resource", dir
+ wxString("/samples/resource"), wxStringList("resource.cpp", "resource.h", 0));
269 GenerateSample("RichEditVC", "wxLayout", dir
+ wxString("/samples/richedit"), wxStringList("wxLayout.cpp",
270 "kbList.cpp", "wxllist.cpp", "wxlparser.cpp", "wxlwindow.cpp", 0));
271 GenerateSample("SashtestVC", "sashtest", dir
+ wxString("/samples/sashtest"), wxStringList("sashtest.cpp", "sashtest.h", 0));
272 GenerateSample("ScrollVC", "scroll", dir
+ wxString("/samples/scroll"), wxStringList("scroll.cpp", 0));
273 GenerateSample("ScrollsubVC", "scrollsub", dir
+ wxString("/samples/scrollsub"), wxStringList("scrollsub.cpp", 0));
274 GenerateSample("SplitterVC", "test", dir
+ wxString("/samples/splitter"), wxStringList("test.cpp", 0));
275 GenerateSample("TabVC", "test", dir
+ wxString("/samples/tab"), wxStringList("test.cpp", "test.h", 0));
276 GenerateSample("TaskbarVC", "tbtest", dir
+ wxString("/samples/taskbar"), wxStringList("tbtest.cpp", "tbtest.h", 0));
277 GenerateSample("TextVC", "text", dir
+ wxString("/samples/text"), wxStringList("text.cpp", 0));
278 GenerateSample("ThreadVC", "test", dir
+ wxString("/samples/thread"), wxStringList("test.cpp", 0));
279 GenerateSample("ToolbarVC", "toolbar", dir
+ wxString("/samples/toolbar"), wxStringList("toolbar.cpp", 0));
280 GenerateSample("TreectrlVC", "treetest", dir
+ wxString("/samples/treectrl"), wxStringList("treetest.cpp", "treetest.h", 0));
281 GenerateSample("TypetestVC", "typetest", dir
+ wxString("/samples/typetest"), wxStringList("typetest.cpp", "typetest.h", 0));
282 GenerateSample("ValidateVC", "validate", dir
+ wxString("/samples/validate"), wxStringList("validate.cpp", "validate.h", 0));
283 GenerateSample("ClientVC", "client", dir
+ wxString("/samples/sockets"), wxStringList("client.cpp", 0));
284 GenerateSample("ServerVC", "server", dir
+ wxString("/samples/sockets"), wxStringList("server.cpp", 0));
285 GenerateSample("ClientVC", "client", dir
+ wxString("/samples/ipc"), wxStringList("client.cpp", "client.h", "ddesetup.h", 0));
286 GenerateSample("ServerVC", "server", dir
+ wxString("/samples/ipc"), wxStringList("server.cpp", "server.h", "ddesetup.h", 0));
287 GenerateSample("CaretVC", "caret", dir
+ wxString("/samples/caret"), wxStringList("caret.cpp", 0));
288 GenerateSample("DrawingVC", "drawing", dir
+ wxString("/samples/drawing"), wxStringList("drawing.cpp", 0));
289 GenerateSample("ScrollVC", "scroll", dir
+ wxString("/samples/scroll"), wxStringList("scroll.cpp", 0));
290 GenerateSample("WizardVC", "wizard", dir
+ wxString("/samples/wizard"), wxStringList("wiztest.cpp", 0));
291 GenerateSample("RotateVC", "rotate", dir
+ wxString("/samples/rotate"), wxStringList("rotate.cpp", 0));
292 GenerateSample("ExecVC", "exec", dir
+ wxString("/samples/exec"), wxStringList("exec.cpp", 0));
293 GenerateSample("FontVC", "font", dir
+ wxString("/samples/font"), wxStringList("font.cpp", 0));
294 GenerateSample("MenuVC", "menu", dir
+ wxString("/samples/menu"), wxStringList("menu.cpp", 0));
298 GenerateSample("BombsVC", "bombs", dir
+ wxString("/demos/bombs"),
299 wxStringList("bombs.cpp", "bombs1.cpp", "game.cpp", "bombs.h", "game.h", 0));
301 GenerateSample("FortyVC", "forty", dir
+ wxString("/demos/forty"),
302 wxStringList("forty.cpp", "canvas.cpp", "card.cpp", "game.cpp", "pile.cpp", "playerdg.cpp", "scoredg.cpp", "scorefil.cpp",
303 "canvas.h", "forty.h", "card.h", "game.h", "pile.h", "playerdg.h", "scoredg.h", "scorefil.h",
306 GenerateSample("FractalVC", "fractal", dir
+ wxString("/demos/fractal"), wxStringList("fractal.cpp", 0));
308 GenerateSample("LifeVC", "life", dir
+ wxString("/demos/life"),
309 wxStringList("life.cpp", "game.cpp", "dialogs.cpp", "life.h", "game.h", "dialogs.h", 0));
311 GenerateSample("PoemVC", "wxpoem", dir
+ wxString("/demos/poem"), wxStringList("wxpoem.cpp", "wxpoem.h", 0));
313 GenerateSample("DbbrowseVC", "dbbrowse", dir
+ wxString("/demos/dbbrowse"),
314 wxStringList("dbbrowse.cpp", "browsedb.cpp", "dbgrid.cpp", "dbtree.cpp", "dlguser.cpp", "doc.cpp",
315 "pgmctrl.cpp", "tabpgwin.cpp",
316 "dbbrowse.h", "browsedb.h", "dbgrid.h", "dbtree.h", "dlguser.h", "doc.h", "pgmctrl.h", "std.h", "tabpgwin.h",
324 project
.SetIncludeDirs(wxStringList("../../../include", 0));
325 project
.SetResourceIncludeDirs(wxStringList("../../../include", 0));
326 project
.SetLibDirs(wxStringList("../../../lib", 0));
327 project
.SetDebugLibDirs(wxStringList("../../../src/Debug", "../../../src/jpeg/Debug", "../../../src/tiff/Debug", 0));
328 project
.SetReleaseLibDirs(wxStringList("../../../src/Release", "../../../src/jpeg/Release", "../../../src/tiff/Release", 0));
330 project
.SetProjectName("DialogEdVC");
331 project
.SetTargetName("dialoged");
332 project
.SetProjectPath(dir
+ wxString("/utils/dialoged/src"));
333 project
.SetSourceFiles(wxStringList("dialoged.cpp", "dlghndlr.cpp", "edlist.cpp", "edtree.cpp",
334 "reseditr.cpp", "reswrite.cpp", "symbtabl.cpp", "winstyle.cpp", "winprop.cpp",
335 "dialoged.h", "dlghndlr.h", "edlist.h", "edtree.h", "reseditr.h", "symbtabl.h", "winprop.h",
339 if (!project
.GenerateVCProject())
341 wxString
msg("Could not generate Dialog Editor project");
346 project
.SetIncludeDirs(wxStringList("../../../include", 0));
347 project
.SetResourceIncludeDirs(wxStringList("../../../include", 0));
348 project
.SetLibDirs(wxStringList("../../../lib", 0));
349 project
.SetDebugLibDirs(wxStringList("../../../src/Debug", "../../../src/jpeg/Debug", "../../../src/tiff/Debug", 0));
350 project
.SetReleaseLibDirs(wxStringList("../../../src/Release", "../../../src/jpeg/Release", "../../../src/tiff/Release", 0));
352 project
.SetProjectName("Tex2RTFVC");
353 project
.SetTargetName("tex2rtf");
354 project
.SetProjectPath(dir
+ wxString("/utils/tex2rtf/src"));
355 project
.SetSourceFiles(wxStringList("tex2rtf.cpp", "htmlutil.cpp", "readshg.cpp", "rtfutils.cpp",
356 "table.cpp", "tex2any.cpp", "texutils.cpp", "xlputils.cpp",
357 "bmputils.h", "readshg.h", "rtfutils.h", "table.h", "tex2any.h", "tex2rtf.h", "wxhlpblk.h",
360 if (!project
.GenerateVCProject())
362 wxString
msg("Could not generate Tex2RTF project");
367 project
.SetIncludeDirs(wxStringList("../../../include", 0));
368 project
.SetResourceIncludeDirs(wxStringList("../../../include", 0));
369 project
.SetLibDirs(wxStringList("../../../lib", 0));
370 project
.SetDebugLibDirs(wxStringList("../../../src/Debug", "../../../src/jpeg/Debug", "../../../src/tiff/Debug", 0));
371 project
.SetReleaseLibDirs(wxStringList("../../../src/Release", "../../../src/jpeg/Release", "../../../src/tiff/Release", 0));
373 project
.SetProjectName("HelpGenVC");
374 project
.SetTargetName("helpgen");
375 project
.SetProjectPath(dir
+ wxString("/utils/helpgen/src"));
376 project
.SetSourceFiles(wxStringList("helpgen.cpp", "cjparser.cpp", "docripper.cpp", "ifcontext.cpp",
377 "markup.cpp", "ripper_main.cpp", "scriptbinder.cpp", "sourcepainter.cpp",
379 "cjparser.h", "docripper.h", "ifcontext.h", "markup.h", "scriptbinder.h", "sourcepainter.h",
380 "srcparser.h", "wxstlac.h", "wxstllst.h", "wxstlvec.h", 0));
382 if (!project
.GenerateVCProject())
384 wxString
msg("Could not generate HelpGen project");
389 project
.SetIncludeDirs(wxStringList("../../include", 0));
390 project
.SetResourceIncludeDirs(wxStringList("../../include", 0));
391 project
.SetLibDirs(wxStringList("../../lib", 0));
392 project
.SetDebugLibDirs(wxStringList("../../src/Debug", "../../src/jpeg/Debug", "../../src/tiff/Debug", 0));
393 project
.SetReleaseLibDirs(wxStringList("../../src/Release", "../../src/jpeg/Release", "../../src/tiff/Release", 0));
395 project
.SetProjectName("ProjGenVC");
396 project
.SetTargetName("makeproj");
397 project
.SetProjectPath(dir
+ wxString("/utils/projgen"));
398 project
.SetSourceFiles(wxStringList("makeproj.cpp", "makeproj.h", 0));
400 if (!project
.GenerateVCProject())
402 wxString
msg("Could not generate ProjGen project");
407 project
.SetIncludeDirs(wxStringList("../../include", 0));
408 project
.SetResourceIncludeDirs(wxStringList("../../include", 0));
409 project
.SetLibDirs(wxStringList("../../lib", 0));
410 project
.SetDebugLibDirs(wxStringList("../../src/Debug", "../../src/jpeg/Debug", "../../src/tiff/Debug", 0));
411 project
.SetReleaseLibDirs(wxStringList("../../src/Release", "../../src/jpeg/Release", "../../src/tiff/Release", 0));
413 project
.SetProjectName("hhp2cachedVC");
414 project
.SetTargetName("hhp2cached");
415 project
.SetProjectPath(dir
+ wxString("/utils/hhp2cached"));
416 project
.SetSourceFiles(wxStringList("hhp2cached.cpp", 0));
418 if (!project
.GenerateVCProject())
420 wxString
msg("Could not generate hhp2cached project");
424 // wxTreeLayout sample
426 project
.SetIncludeDirs(wxStringList("../../../include", 0));
427 project
.SetResourceIncludeDirs(wxStringList("../../../include", 0));
428 project
.SetLibDirs(wxStringList("../../../lib", 0));
429 project
.SetDebugLibDirs(wxStringList("../../../src/Debug", "../../../src/jpeg/Debug", "../../../src/tiff/Debug", 0));
430 project
.SetReleaseLibDirs(wxStringList("../../../src/Release", "../../../src/jpeg/Release", "../../../src/tiff/Release", 0));
432 project
.SetProjectName("TreeSampleVC");
433 project
.SetTargetName("test");
434 project
.SetProjectPath(dir
+ wxString("/utils/wxtree/src"));
435 project
.SetSourceFiles(wxStringList("test.cpp", "wxtree.cpp", "test.h", "wxtree.h", 0));
437 if (!project
.GenerateVCProject())
439 wxString
msg("Could not generate wxTreeLayout project");
445 project
.SetIncludeDirs(wxStringList("../../../../include", "../../src", 0));
446 project
.SetResourceIncludeDirs(wxStringList("../../../../include", 0));
447 project
.SetLibDirs(wxStringList("../../../../lib", 0));
448 project
.SetDebugLibDirs(wxStringList("../../../../src/Debug", "../../src/Debug", "../../../../src/jpeg/Debug", "../../../../src/tiff/Debug", 0));
449 project
.SetReleaseLibDirs(wxStringList("../../../../src/Release", "../../src/Release", "../../../../src/jpeg/Release", "../../../../src/tiff/Release", 0));
451 project
.SetExtraLibs(wxStringList("ogl.lib", 0));
453 project
.SetProjectName("OGLEditVC");
454 project
.SetTargetName("ogledit");
455 project
.SetProjectPath(dir
+ wxString("/utils/ogl/samples/ogledit"));
456 project
.SetSourceFiles(wxStringList("ogledit.cpp", "doc.cpp", "palette.cpp", "view.cpp",
457 "doc.h", "ogledit.h", "palette.h", "view.h",
460 if (!project
.GenerateVCProject())
462 wxString
msg("Could not generate OGLEdit project");
468 project
.SetIncludeDirs(wxStringList("../../../../include", "../../src", 0));
469 project
.SetResourceIncludeDirs(wxStringList("../../../../include", 0));
470 project
.SetLibDirs(wxStringList("../../../../lib", 0));
471 project
.SetDebugLibDirs(wxStringList("../../../../src/Debug", "../../src/Debug", "../../../../src/jpeg/Debug", "../../../../src/tiff/Debug", 0));
472 project
.SetReleaseLibDirs(wxStringList("../../../../src/Release", "../../src/Release", "../../../../src/jpeg/Release", "../../../../src/tiff/Release", 0));
473 project
.SetExtraLibs(wxStringList("ogl.lib", 0));
475 project
.SetProjectName("StudioVC");
476 project
.SetTargetName("studio");
477 project
.SetProjectPath(dir
+ wxString("/utils/ogl/samples/studio"));
478 project
.SetSourceFiles(wxStringList("studio.cpp", "cspalette.cpp", "dialogs.cpp", "view.cpp",
479 "doc.cpp", "mainfrm.cpp", "project.cpp", "shapes.cpp", "symbols.cpp", "csprint.cpp",
480 "studio.h", "cspalette.h", "dialogs.h", "view.h",
481 "doc.h", "mainfrm.h", "project.h", "shapes.h", "symbols.h",
484 if (!project
.GenerateVCProject())
486 wxString
msg("Could not generate OGL Studio project");
490 // GLCanvas cube sample
492 project
.SetIncludeDirs(wxStringList("../../../../include", "../../win", 0));
493 project
.SetResourceIncludeDirs(wxStringList("../../../../include", 0));
494 project
.SetLibDirs(wxStringList("../../../../lib", 0));
495 project
.SetDebugLibDirs(wxStringList("../../../../src/Debug", "../../win/Debug", "../../../../src/jpeg/Debug", "../../../../src/tiff/Debug", 0));
496 project
.SetReleaseLibDirs(wxStringList("../../../../src/Release", "../../win/Release", "../../../../src/jpeg/Release", "../../../../src/tiff/Release", 0));
498 project
.SetExtraLibs(wxStringList("glcanvas.lib", "opengl32.lib", "glu32.lib", 0));
500 project
.SetProjectName("CubeVC");
501 project
.SetTargetName("cube");
502 project
.SetProjectPath(dir
+ wxString("/utils/glcanvas/samples/cube"));
503 project
.SetSourceFiles(wxStringList("cube.cpp", "cube.h",
506 if (!project
.GenerateVCProject())
508 wxString
msg("Could not generate GLCanvas Cube project");
512 // GLCanvas isosurf sample
514 project
.SetIncludeDirs(wxStringList("../../../../include", "../../win", 0));
515 project
.SetResourceIncludeDirs(wxStringList("../../../../include", 0));
516 project
.SetLibDirs(wxStringList("../../../../lib", 0));
517 project
.SetDebugLibDirs(wxStringList("../../../../src/Debug", "../../win/Debug", "../../../../src/jpeg/Debug", "../../../../src/tiff/Debug", 0));
518 project
.SetReleaseLibDirs(wxStringList("../../../../src/Release", "../../win/Release", "../../../../src/jpeg/Release", "../../../../src/tiff/Release", 0));
519 project
.SetExtraLibs(wxStringList("glcanvas.lib", "opengl32.lib", "glu32.lib", 0));
521 project
.SetProjectName("IsoSurfVC");
522 project
.SetTargetName("isosurf");
523 project
.SetProjectPath(dir
+ wxString("/utils/glcanvas/samples/isosurf"));
524 project
.SetSourceFiles(wxStringList("isosurf.cpp", "isosurf.h",
527 if (!project
.GenerateVCProject())
529 wxString
msg("Could not generate GLCanvas IsoSurf project");
533 // GLCanvas penguin sample
535 project
.SetIncludeDirs(wxStringList("../../../../include", "../../win", 0));
536 project
.SetResourceIncludeDirs(wxStringList("../../../../include", 0));
537 project
.SetLibDirs(wxStringList("../../../../lib", 0));
538 project
.SetDebugLibDirs(wxStringList("../../../../src/Debug", "../../win/Debug", "../../../../src/jpeg/Debug", "../../../../src/tiff/Debug", 0));
539 project
.SetReleaseLibDirs(wxStringList("../../../../src/Release", "../../win/Release", "../../../../src/jpeg/Release", "../../../../src/tiff/Release", 0));
540 project
.SetExtraLibs(wxStringList("glcanvas.lib", "opengl32.lib", "glu32.lib", 0));
542 project
.SetProjectName("PenguinVC");
543 project
.SetTargetName("penguin");
544 project
.SetProjectPath(dir
+ wxString("/utils/glcanvas/samples/penguin"));
545 project
.SetSourceFiles(wxStringList("penguin.cpp", "penguin.h",
547 "trackball.c", "trackball.h",
550 if (!project
.GenerateVCProject())
552 wxString
msg("Could not generate GLCanvas Penguin project");
557 // ----------------------------------------------------------------------------
559 // ----------------------------------------------------------------------------
562 MyFrame::MyFrame(const wxString
& title
, const wxPoint
& pos
, const wxSize
& size
)
563 : wxFrame((wxFrame
*)NULL
, -1, title
, pos
, size
)
565 // set the frame icon
566 SetIcon(wxICON(mondrian
));
569 wxMenu
*menuFile
= new wxMenu
;
571 menuFile
->Append(MakeProject_Generate
, "&Generate");
572 menuFile
->Append(MakeProject_About
, "&About...");
573 menuFile
->AppendSeparator();
574 menuFile
->Append(MakeProject_Quit
, "E&xit");
576 // now append the freshly created menu to the menu bar...
577 wxMenuBar
*menuBar
= new wxMenuBar
;
578 menuBar
->Append(menuFile
, "&File");
580 // ... and attach this menu bar to the frame
583 // create a status bar just for fun (by default with 1 pane only)
585 SetStatusText("Welcome to wxWindows!");
591 void MyFrame::OnQuit(wxCommandEvent
& WXUNUSED(event
))
593 // TRUE is to force the frame to close
597 void MyFrame::OnAbout(wxCommandEvent
& WXUNUSED(event
))
599 wxMessageBox("MakeProject: generates VC++ project files",
600 "About MakeProject", wxOK
| wxICON_INFORMATION
, this);
603 void MyFrame::OnGenerate(wxCommandEvent
& WXUNUSED(event
))
605 wxGetApp().GenerateSamples("d:/wx2/wxWindows");
608 bool MyFrame::GenerateSample(const wxString
& projectName
, const wxString
& targetName
,
609 const wxString
& path
, const wxStringList
& sourceFiles
, const wxString
& relativeRootPath
)
611 return wxGetApp().GenerateSample(projectName
, targetName
, path
, sourceFiles
, relativeRootPath
);
618 wxProject::wxProject()
622 wxProject::~wxProject()
627 bool wxProject::GenerateVCProject()
629 wxString fullProjectName
= m_path
+ wxString("/") + m_projectName
+ ".dsp";
631 ofstream
stream(fullProjectName
);
635 /////////////////////// General stuff
637 stream
<< "# Microsoft Developer Studio Project File - Name=\"" << m_projectName
<< "\" - Package Owner=<4>\n";
638 stream
<< "# Microsoft Developer Studio Generated Build File, Format Version 5.00\n";
639 stream
<< "# (Actually, generated by MakeProject, (c) Julian Smart, 1998)\n";
640 stream
<< "# ** DO NOT EDIT **\n\n";
641 stream
<< "# TARGTYPE \"Win32 (x86) Application\" 0x0101\n\n";
642 stream
<< "CFG=" << m_projectName
<< " - Win32 Debug\n";
643 stream
<< "!MESSAGE This is not a valid makefile. To build this project using NMAKE,\n";
644 stream
<< "!MESSAGE use the Export Makefile command and run\n";
645 stream
<< "!MESSAGE\n";
646 stream
<< "!MESSAGE NMAKE /f \"" << m_projectName
<< ".mak\".\n";
647 stream
<< "!MESSAGE\n";
648 stream
<< "!MESSAGE You can specify a configuration when running NMAKE\n";
649 stream
<< "!MESSAGE by defining the macro CFG on the command line. For example:\n";
650 stream
<< "!MESSAGE\n";
651 stream
<< "!MESSAGE NMAKE /f \"" << m_projectName
<< ".mak\" CFG=\"" << m_projectName
<< " - Win32 Debug\"\n";
652 stream
<< "!MESSAGE\n";
653 stream
<< "!MESSAGE Possible choices for configuration are:\n";
654 stream
<< "!MESSAGE\n";
655 stream
<< "!MESSAGE \"" << m_projectName
<< " - Win32 Release\" (based on \"Win32 (x86) Application\")\n";
656 stream
<< "!MESSAGE \"" << m_projectName
<< " - Win32 Debug\" (based on \"Win32 (x86) Application\")\n";
657 stream
<< "!MESSAGE \"" << m_projectName
<< " - Win32 Debug DLL\" (based on \"Win32 (x86) Application\")\n";
658 stream
<< "!MESSAGE \"" << m_projectName
<< " - Win32 Release DLL\" (based on \"Win32 (x86) Application\")\n";
659 stream
<< "!MESSAGE\n";
661 stream
<< "# Begin Project\n";
662 stream
<< "# PROP Scc_ProjName \"\"\n";
663 stream
<< "# PROP Scc_LocalPath \"\"\n";
664 stream
<< "CPP=cl.exe\n";
665 stream
<< "MTL=midl.exe\n";
666 stream
<< "RSC=rc.exe\n";
669 /////////////////////// Win32 Release target
671 stream
<< "!IF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Release\"\n";
673 stream
<< "# PROP BASE Use_MFC 0\n";
674 stream
<< "# PROP BASE Use_Debug_Libraries 0\n";
675 stream
<< "# PROP BASE Output_Dir \"Release\"\n";
676 stream
<< "# PROP BASE Intermediate_Dir \"Release\"\n";
677 stream
<< "# PROP BASE Target_Dir \"\"\n";
678 stream
<< "# PROP Use_MFC 0\n";
679 stream
<< "# PROP Use_Debug_Libraries 0\n";
680 stream
<< "# PROP Output_Dir \"Release\"\n";
681 stream
<< "# PROP Intermediate_Dir \"Release\"\n";
682 stream
<< "# PROP Ignore_Export_Lib 0\n";
683 stream
<< "# PROP Target_Dir \"\"\n";
684 stream
<< "# ADD BASE CPP /nologo /W3 /GX /O2 /D \"WIN32\" /D \"NDEBUG\" /D \"_WINDOWS\" /YX /FD /c\n";
685 stream
<< "# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2";
687 int n
= m_includeDirs
.Number();
689 for (i
= 0; i
< n
; i
++)
691 wxString includeDir
= m_includeDirs
[i
];
692 stream
<< " /I \"" << includeDir
<< "\"";
695 stream
<< " /D \"NDEBUG\" /D \"WIN32\" /D \"_WINDOWS\" /D \"__WINDOWS__\" /D \"__WXMSW__\" /D \"__WIN95__\" /D \"__WIN32__\" /D WINVER=0x0400 /D \"STRICT\" /FD /c\n";
696 stream
<< "# SUBTRACT CPP /YX\n";
697 stream
<< "# ADD BASE MTL /nologo /D \"NDEBUG\" /mktyplib203 /o NUL /win32\n";
698 stream
<< "# ADD MTL /nologo /D \"NDEBUG\" /mktyplib203 /o NUL /win32\n";
699 stream
<< "# ADD BASE RSC /l 0x809 /d \"NDEBUG\"\n";
700 stream
<< "# ADD RSC /l 0x809 /d \"NDEBUG\"\n";
701 stream
<< "BSC32=bscmake.exe\n";
702 stream
<< "# ADD BASE BSC32 /nologo\n";
703 stream
<< "# ADD BSC32 /nologo\n";
704 stream
<< "LINK32=link.exe\n";
705 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";
706 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 ";
707 n
= m_extraLibs
.Number();
708 for (i
= 0; i
< n
; i
++)
710 wxString lib
= m_extraLibs
[i
];
711 stream
<< lib
<< " ";
714 stream
<< "/nologo /subsystem:windows /machine:I386 /nodefaultlib:\"libc.lib,libci.lib,msvcrtd.lib\" /out:\"Release/" << m_targetName
<< ".exe\"";
716 n
= m_releaseLibDirs
.Number();
717 for (i
= 0; i
< n
; i
++)
719 wxString libDir
= m_releaseLibDirs
[i
];
720 stream
<< " /libpath:\"" << libDir
<< "\"";
722 n
= m_libDirs
.Number();
723 for (i
= 0; i
< n
; i
++)
725 wxString libDir
= m_libDirs
[i
];
726 stream
<< " /libpath:\"" << libDir
<< "\"";
731 /////////////////////// Win32 Debug target
733 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Debug\"\n";
735 stream
<< "# PROP BASE Use_MFC 0\n";
736 stream
<< "# PROP BASE Use_Debug_Libraries 1\n";
737 stream
<< "# PROP BASE Output_Dir \"Debug\"\n";
738 stream
<< "# PROP BASE Intermediate_Dir \"Debug\"\n";
739 stream
<< "# PROP BASE Target_Dir \"\"\n";
740 stream
<< "# PROP Use_MFC 0\n";
741 stream
<< "# PROP Use_Debug_Libraries 1\n";
742 stream
<< "# PROP Output_Dir \"Debug\"\n";
743 stream
<< "# PROP Intermediate_Dir \"Debug\"\n";
744 stream
<< "# PROP Ignore_Export_Lib 0\n";
745 stream
<< "# PROP Target_Dir \"\"\n";
746 stream
<< "# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D \"WIN32\" /D \"_DEBUG\" /D \"_WINDOWS\" /YX /FD /c\n";
747 stream
<< "# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od";
749 n
= m_includeDirs
.Number();
750 for (i
= 0; i
< n
; i
++)
752 wxString includeDir
= m_includeDirs
[i
];
753 stream
<< " /I \"" << includeDir
<< "\"";
756 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";
757 stream
<< "# ADD BASE MTL /nologo /D \"_DEBUG\" /mktyplib203 /o NUL /win32\n";
758 stream
<< "# ADD MTL /nologo /D \"_DEBUG\" /mktyplib203 /o NUL /win32\n";
759 stream
<< "# ADD BASE RSC /l 0x809 /d \"_DEBUG\"\n";
760 stream
<< "# ADD RSC /l 0x809 /d \"_DEBUG\"\n";
761 stream
<< "BSC32=bscmake.exe\n";
762 stream
<< "# ADD BASE BSC32 /nologo\n";
763 stream
<< "# ADD BSC32 /nologo\n";
764 stream
<< "LINK32=link.exe\n";
765 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";
766 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 ";
767 n
= m_extraLibs
.Number();
768 for (i
= 0; i
< n
; i
++)
770 wxString lib
= m_extraLibs
[i
];
771 stream
<< lib
<< " ";
773 stream
<< "/nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:\"libcd.lib,libcid.lib,msvcrt.lib\" /out:\"Debug/" << m_targetName
<< ".exe\" /pdbtype:sept";
775 n
= m_debugLibDirs
.Number();
776 for (i
= 0; i
< n
; i
++)
778 wxString libDir
= m_debugLibDirs
[i
];
779 stream
<< " /libpath:\"" << libDir
<< "\"";
781 n
= m_libDirs
.Number();
782 for (i
= 0; i
< n
; i
++)
784 wxString libDir
= m_libDirs
[i
];
785 stream
<< " /libpath:\"" << libDir
<< "\"";
789 // stream << "!ENDIF\n";
792 /////////////////////// Win32 Debug DLL target
794 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Debug DLL\"\n";
796 stream
<< "# PROP BASE Use_MFC 0\n";
797 stream
<< "# PROP BASE Use_Debug_Libraries 1\n";
798 stream
<< "# PROP BASE Output_Dir \"DebugDLL\"\n";
799 stream
<< "# PROP BASE Intermediate_Dir \"DebugDLL\"\n";
800 stream
<< "# PROP BASE Target_Dir \"\"\n";
801 stream
<< "# PROP Use_MFC 0\n";
802 stream
<< "# PROP Use_Debug_Libraries 1\n";
803 stream
<< "# PROP Output_Dir \"DebugDLL\"\n";
804 stream
<< "# PROP Intermediate_Dir \"DebugDLL\"\n";
805 stream
<< "# PROP Ignore_Export_Lib 0\n";
806 stream
<< "# PROP Target_Dir \"\"\n";
807 stream
<< "# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D \"WIN32\" /D \"_DEBUG\" /D \"_WINDOWS\" /YX /FD /c\n";
808 stream
<< "# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od";
810 n
= m_includeDirs
.Number();
811 for (i
= 0; i
< n
; i
++)
813 wxString includeDir
= m_includeDirs
[i
];
814 stream
<< " /I \"" << includeDir
<< "\"";
817 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";
818 stream
<< "# ADD BASE MTL /nologo /D \"_DEBUG\" /mktyplib203 /o NUL /win32\n";
819 stream
<< "# ADD MTL /nologo /D \"_DEBUG\" /mktyplib203 /o NUL /win32\n";
820 stream
<< "# ADD BASE RSC /l 0x809 /d \"_DEBUG\"\n";
821 stream
<< "# ADD RSC /l 0x809 /d \"_DEBUG\"\n";
822 stream
<< "BSC32=bscmake.exe\n";
823 stream
<< "# ADD BASE BSC32 /nologo\n";
824 stream
<< "# ADD BSC32 /nologo\n";
825 stream
<< "LINK32=link.exe\n";
826 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";
827 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 ";
828 n
= m_extraLibs
.Number();
829 for (i
= 0; i
< n
; i
++)
831 wxString lib
= m_extraLibs
[i
];
832 stream
<< lib
<< " ";
834 stream
<< "/nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:\"libcd.lib\" /nodefaultlib:\"libcid.lib\" /out:\"DebugDLL/" << m_targetName
<< ".exe\" /pdbtype:sept";
836 n
= m_debugLibDirs
.Number();
837 for (i
= 0; i
< n
; i
++)
839 wxString libDir
= m_debugLibDirs
[i
];
840 libDir
+= "DLL"; // Assume that we have e.g. Debug so make it DebugDLL
841 stream
<< " /libpath:\"" << libDir
<< "\"";
843 n
= m_libDirs
.Number();
844 for (i
= 0; i
< n
; i
++)
846 wxString libDir
= m_libDirs
[i
];
847 stream
<< " /libpath:\"" << libDir
<< "\"";
851 // stream << "!ENDIF\n";
854 /////////////////////// Win32 Release DLL target
856 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Release DLL\"\n";
858 stream
<< "# PROP BASE Use_MFC 0\n";
859 stream
<< "# PROP BASE Use_Debug_Libraries 0\n";
860 stream
<< "# PROP BASE Output_Dir \"ReleaseDLL\"\n";
861 stream
<< "# PROP BASE Intermediate_Dir \"ReleaseDLL\"\n";
862 stream
<< "# PROP BASE Target_Dir \"\"\n";
863 stream
<< "# PROP Use_MFC 0\n";
864 stream
<< "# PROP Use_Debug_Libraries 0\n";
865 stream
<< "# PROP Output_Dir \"ReleaseDLL\"\n";
866 stream
<< "# PROP Intermediate_Dir \"ReleaseDLL\"\n";
867 stream
<< "# PROP Ignore_Export_Lib 0\n";
868 stream
<< "# PROP Target_Dir \"\"\n";
869 stream
<< "# ADD BASE CPP /nologo /W3 /GX /O2 /D \"WIN32\" /D \"NDEBUG\" /D \"_WINDOWS\" /YX /FD /c\n";
870 stream
<< "# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2";
872 n
= m_includeDirs
.Number();
873 for (i
= 0; i
< n
; i
++)
875 wxString includeDir
= m_includeDirs
[i
];
876 stream
<< " /I \"" << includeDir
<< "\"";
879 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";
880 stream
<< "# SUBTRACT CPP /YX\n";
881 stream
<< "# ADD BASE MTL /nologo /D \"NDEBUG\" /mktyplib203 /o NUL /win32\n";
882 stream
<< "# ADD MTL /nologo /D \"NDEBUG\" /mktyplib203 /o NUL /win32\n";
883 stream
<< "# ADD BASE RSC /l 0x809 /d \"NDEBUG\"\n";
884 stream
<< "# ADD RSC /l 0x809 /d \"NDEBUG\"\n";
885 stream
<< "BSC32=bscmake.exe\n";
886 stream
<< "# ADD BASE BSC32 /nologo\n";
887 stream
<< "# ADD BSC32 /nologo\n";
888 stream
<< "LINK32=link.exe\n";
889 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";
890 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 ";
891 n
= m_extraLibs
.Number();
892 for (i
= 0; i
< n
; i
++)
894 wxString lib
= m_extraLibs
[i
];
895 stream
<< lib
<< " ";
897 stream
<< "/nologo /subsystem:windows /machine:I386 /nodefaultlib:\"libc.lib\" /nodefaultlib:\"libci.lib\" /out:\"ReleaseDLL/" << m_targetName
<< ".exe\"";
899 n
= m_releaseLibDirs
.Number();
900 for (i
= 0; i
< n
; i
++)
902 wxString libDir
= m_releaseLibDirs
[i
];
903 libDir
+= "DLL"; // Assume that we have e.g. Release so make it ReleaseDLL
904 stream
<< " /libpath:\"" << libDir
<< "\"";
906 n
= m_libDirs
.Number();
907 for (i
= 0; i
< n
; i
++)
909 wxString libDir
= m_libDirs
[i
];
910 stream
<< " /libpath:\"" << libDir
<< "\"";
914 stream
<< "!ENDIF\n";
917 /////////////////////// Source code for targets
919 stream
<< "# Begin Target\n";
921 stream
<< "# Name \"" << m_projectName
<< " - Win32 Release\"\n";
922 stream
<< "# Name \"" << m_projectName
<< " - Win32 Debug\"\n";
923 stream
<< "# Name \"" << m_projectName
<< " - Win32 Debug DLL\"\n";
924 stream
<< "# Name \"" << m_projectName
<< " - Win32 Release DLL\"\n";
927 n
= m_sourceFiles
.Number();
928 for (i
= 0; i
< n
; i
++)
930 wxString sourceFile
= m_sourceFiles
[i
];
932 stream
<< "# Begin Source File\n";
934 stream
<< "SOURCE=.\\" << sourceFile
<< "\n";
936 stream
<< "!IF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Release\"\n";
938 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Debug\"\n";
940 stream
<< "# SUBTRACT CPP /YX /Yc /Yu\n";
942 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Debug DLL\"\n";
944 stream
<< "# SUBTRACT BASE CPP /YX /Yc /Yu\n";
945 stream
<< "# SUBTRACT CPP /YX /Yc /Yu\n";
947 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Release DLL\"\n";
949 stream
<< "!ENDIF\n";
951 stream
<< "# End Source File\n";
954 // The .rc file: assume it has the target name + rc extension.
955 stream
<< "# Begin Source File\n";
957 stream
<< "SOURCE=.\\" << m_targetName
<< ".rc\n";
958 stream
<< "# ADD BASE RSC /l 0x809\n";
959 stream
<< "# ADD RSC /l 0x809";
961 n
= m_resourceIncludeDirs
.Number();
962 for (i
= 0; i
< n
; i
++)
964 wxString includeDir
= m_resourceIncludeDirs
[i
];
965 stream
<< " /i \"" << includeDir
<< "\"";
969 stream
<< "# End Source File\n";
970 stream
<< "# End Target\n";
971 stream
<< "# End Project\n";
973 // Now generate the .dsw workspace file
975 wxString fullWorkSpaceName
= m_path
+ wxString("/") + m_projectName
+ ".dsw";
977 ofstream
stream2(fullWorkSpaceName
);
981 stream2
<< "Microsoft Developer Studio Workspace File, Format Version 5.00\n";
982 stream2
<< "# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!\n";
984 stream2
<< "###############################################################################\n";
986 stream2
<< "Project: \"" << m_projectName
<< "\"=.\\" << m_projectName
<< ".dsp - Package Owner=<4>\n";
988 stream2
<< "Package=<5>\n";
992 stream2
<< "Package=<4>\n";
996 stream2
<< "###############################################################################\n";
998 stream2
<< "Global:\n";
1000 stream2
<< "Package=<5>\n";
1004 stream2
<< "Package=<3>\n";
1008 stream2
<< "###############################################################################\n";
1014 BEGIN_EVENT_TABLE(MyDialog
, wxDialog
)
1015 EVT_BUTTON(wxID_EXIT
, MyDialog::OnQuit
)
1016 EVT_BUTTON(ID_GENERATE_PROJECT
, MyDialog::OnGenerate
)
1017 EVT_BUTTON(ID_GENERATE_SAMPLES
, MyDialog::OnGenerateSamples
)
1020 // ----------------------------------------------------------------------------
1022 // ----------------------------------------------------------------------------
1024 // frame constructor
1025 MyDialog::MyDialog(const wxString
& title
, const wxPoint
& pos
, const wxSize
& size
):
1028 LoadFromResource((wxWindow
*) NULL
, "project_dialog");
1032 void MyDialog::OnQuit(wxCommandEvent
& event
)
1037 void MyDialog::OnAbout(wxCommandEvent
& event
)
1041 void MyDialog::OnGenerate(wxCommandEvent
& event
)
1045 void MyDialog::OnGenerateSamples(wxCommandEvent
& event
)
1047 char* dir
= getenv("WXWIN");
1051 wxTextEntryDialog
dialog(this, "Please enter the wxWindows directory", "Text entry", dirStr
, wxOK
|wxCANCEL
);
1052 if (dialog
.ShowModal() == wxID_OK
)
1054 if (wxDirExists(dialog
.GetValue()))
1056 // wxGetApp().GenerateSample("MinimalVC", "minimal", dir + wxString("/samples/minimal"),
1057 // wxStringList("minimal.cpp", 0));
1059 wxGetApp().GenerateSamples(dialog
.GetValue());
1063 wxMessageBox("This directory doesn't exist.");