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");
166 bool MyApp::GenerateSample(const wxString
& projectName
, const wxString
& targetName
,
167 const wxString
& path
, const wxStringList
& sourceFiles
, const wxString
& relativeRootPath
)
169 wxString
relativeIncludePath(relativeRootPath
+ wxString("/include"));
170 wxString
relativeLibPath(relativeRootPath
+ wxString("/lib"));
171 wxString
relativeDebugPath(relativeRootPath
+ wxString("/src/Debug"));
172 wxString
relativeReleasePath(relativeRootPath
+ wxString("/src/Release"));
173 wxString
relativeDebugPathJPEG(relativeRootPath
+ wxString("/src/jpeg/Debug"));
174 wxString
relativeReleasePathJPEG(relativeRootPath
+ wxString("/src/jpeg/Release"));
175 wxString
relativeDebugPathTIFF(relativeRootPath
+ wxString("/src/tiff/Debug"));
176 wxString
relativeReleasePathTIFF(relativeRootPath
+ wxString("/src/tiff/Release"));
181 project
.SetIncludeDirs(wxStringList((const char*) relativeIncludePath
, 0));
182 project
.SetResourceIncludeDirs(wxStringList((const char*) relativeIncludePath
, 0));
183 project
.SetLibDirs(wxStringList((const char*) relativeLibPath
, 0));
184 project
.SetDebugLibDirs(wxStringList((const char*) relativeDebugPath
, (const char*) relativeDebugPathJPEG
, (const char*) relativeDebugPathTIFF
, 0));
185 project
.SetReleaseLibDirs(wxStringList((const char*) relativeReleasePath
, (const char*) relativeReleasePathJPEG
, (const char*) relativeReleasePathTIFF
, 0));
186 project
.SetExtraLibs(wxStringList("opengl32.lib", "glu32.lib", 0));
188 project
.SetProjectName(projectName
);
189 project
.SetTargetName(targetName
);
190 project
.SetProjectPath(path
);
191 project
.SetSourceFiles(sourceFiles
);
193 if (!project
.GenerateVCProject())
195 wxString
msg("Could not generate ");
204 void MyApp::GenerateSamples(const wxString
& dir
)
206 // Small bug. Because we don't distinguish between Debug/DebugDLL, Release/ReleaseDLL,
207 // we can't yet make a sample that uses other wxWindows static libraries + the wxWindows DLL library.
211 GenerateSample("CalendarVC", "calendar", dir
+ wxString("/samples/calendar"), wxStringList("calendar.cpp", 0));
212 GenerateSample("CaretVC", "caret", dir
+ wxString("/samples/caret"), wxStringList("caret.cpp", 0));
213 GenerateSample("CheckLstVC", "checklst", dir
+ wxString("/samples/checklst"), wxStringList("checklst.cpp", 0));
214 GenerateSample("ConfigVC", "conftest", dir
+ wxString("/samples/config"), wxStringList("conftest.cpp", 0));
215 GenerateSample("ControlsVC", "controls", dir
+ wxString("/samples/controls"), wxStringList("controls.cpp", 0));
216 GenerateSample("DbVC", "dbtest", dir
+ wxString("/samples/db"),
217 wxStringList("dbtest.cpp", "listdb.cpp", "dbtest.h", "listdb.h", 0));
218 GenerateSample("DialogsVC", "dialogs", dir
+ wxString("/samples/dialogs"),
219 wxStringList("dialogs.cpp", "dialogs.h", 0));
220 GenerateSample("DndVC", "dnd", dir
+ wxString("/samples/dnd"), wxStringList("dnd.cpp", 0));
221 GenerateSample("DocViewVC", "docview", dir
+ wxString("/samples/docview"),
222 wxStringList("docview.cpp", "doc.cpp", "view.cpp", "docview.h", "doc.h", "view.h", 0));
223 GenerateSample("DocVwMDIVC", "docview", dir
+ wxString("/samples/docvwmdi"),
224 wxStringList("docview.cpp", "doc.cpp", "view.cpp", "docview.h", "doc.h", "view.h", 0));
225 GenerateSample("DynamicVC", "dynamic", dir
+ wxString("/samples/dynamic"), wxStringList("dynamic.cpp", 0));
226 GenerateSample("DrawingVC", "drawing", dir
+ wxString("/samples/drawing"), wxStringList("drawing.cpp", 0));
227 GenerateSample("ExecVC", "exec", dir
+ wxString("/samples/exec"), wxStringList("exec.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("CubeVC", "cube", dir
+ wxString("/samples/opengl/cube"), wxStringList("cube.cpp", "cube.h", 0),
235 GenerateSample("IsosurfVC", "isosurf", dir
+ wxString("/samples/opengl/isosurf"), wxStringList("isosurf.cpp", "isousrf.h", 0),
237 GenerateSample("PenguinVC", "penguin", dir
+ wxString("/samples/opengl/penguin"), wxStringList("penguin.cpp", "penguin.h",
238 "lw.cpp", "lw.h", "trackball.c", "trackball.h", 0), "../../..");
241 GenerateSample("AboutVC", "about", dir
+ wxString("/samples/html/about"), wxStringList("about.cpp", 0),
243 GenerateSample("HelpVC", "help", dir
+ wxString("/samples/html/help"), wxStringList("help.cpp", 0),
245 GenerateSample("PrintingVC", "printing", dir
+ wxString("/samples/html/printing"), wxStringList("printing.cpp", 0),
247 GenerateSample("TestVC", "test", dir
+ wxString("/samples/html/test"), wxStringList("test.cpp", 0),
249 GenerateSample("VirtualVC", "virtual", dir
+ wxString("/samples/html/virtual"), wxStringList("virtual.cpp", 0),
251 GenerateSample("WidgetVC", "widget", dir
+ wxString("/samples/html/widget"), wxStringList("widget.cpp", 0),
253 GenerateSample("ZipVC", "zip", dir
+ wxString("/samples/html/zip"), wxStringList("zip.cpp", 0),
255 GenerateSample("HelpViewVC", "helpview", dir
+ wxString("/samples/html/helpview"), wxStringList("helpview.cpp", 0),
258 GenerateSample("ImageVC", "image", dir
+ wxString("/samples/image"), wxStringList("image.cpp", 0));
259 GenerateSample("InternatVC", "internat", dir
+ wxString("/samples/internat"), wxStringList("internat.cpp", 0));
260 GenerateSample("JoytestVC", "joytest", dir
+ wxString("/samples/joytest"), wxStringList("joytest.cpp", "joytest.h", 0));
261 GenerateSample("LayoutVC", "layout", dir
+ wxString("/samples/layout"), wxStringList("layout.cpp", "layout.h", 0));
262 GenerateSample("ListctrlVC", "listtest", dir
+ wxString("/samples/listctrl"), wxStringList("listtest.cpp", "listtest.h", 0));
263 GenerateSample("MdiVC", "mdi", dir
+ wxString("/samples/mdi"), wxStringList("mdi.cpp", "mdi.h", 0));
264 GenerateSample("MemcheckVC", "memcheck", dir
+ wxString("/samples/memcheck"), wxStringList("memcheck.cpp", 0));
265 // Note: MFC sample will be different.
266 GenerateSample("MfcVC", "mfc", dir
+ wxString("/samples/mfc"), wxStringList("mfctest.cpp", "mfctest.h", 0));
267 GenerateSample("MiniframVC", "test", dir
+ wxString("/samples/minifram"), wxStringList("test.cpp", "test.h", 0));
268 GenerateSample("MinimalVC", "minimal", dir
+ wxString("/samples/minimal"), wxStringList("minimal.cpp", 0));
269 GenerateSample("NativdlgVC", "nativdlg", dir
+ wxString("/samples/nativdlg"), wxStringList("nativdlg.cpp", "nativdlg.h", "resource.h", 0));
270 GenerateSample("DialupVC", "nettest", dir
+ wxString("/samples/dialup"), wxStringList("nettest.cpp", 0));
271 GenerateSample("NotebookVC", "test", dir
+ wxString("/samples/notebook"), wxStringList("test.cpp", "test.h", 0));
272 GenerateSample("OleautoVC", "oleauto", dir
+ wxString("/samples/oleauto"), wxStringList("oleauto.cpp", 0));
273 GenerateSample("OwnerdrwVC", "ownerdrw", dir
+ wxString("/samples/ownerdrw"), wxStringList("ownerdrw.cpp", 0));
274 GenerateSample("PngVC", "pngdemo", dir
+ wxString("/samples/png"), wxStringList("pngdemo.cpp", "pngdemo.h", 0));
275 GenerateSample("PrintingVC", "printing", dir
+ wxString("/samples/printing"), wxStringList("printing.cpp", "printing.h", 0));
276 GenerateSample("ProplistVC", "test", dir
+ wxString("/samples/proplist"), wxStringList("test.cpp", "test.h", 0));
277 GenerateSample("PropsizeVC", "propsize", dir
+ wxString("/samples/propsize"), wxStringList("propsize.cpp", 0));
278 GenerateSample("RegtestVC", "regtest", dir
+ wxString("/samples/regtest"), wxStringList("regtest.cpp", 0));
279 GenerateSample("ResourceVC", "resource", dir
+ wxString("/samples/resource"), wxStringList("resource.cpp", "resource.h", 0));
280 GenerateSample("RichEditVC", "wxLayout", dir
+ wxString("/samples/richedit"), wxStringList("wxLayout.cpp",
281 "kbList.cpp", "wxllist.cpp", "wxlparser.cpp", "wxlwindow.cpp", 0));
282 GenerateSample("SashtestVC", "sashtest", dir
+ wxString("/samples/sashtest"), wxStringList("sashtest.cpp", "sashtest.h", 0));
283 GenerateSample("ScrollVC", "scroll", dir
+ wxString("/samples/scroll"), wxStringList("scroll.cpp", 0));
284 GenerateSample("ScrollsubVC", "scrollsub", dir
+ wxString("/samples/scrollsub"), wxStringList("scrollsub.cpp", 0));
285 GenerateSample("SplitterVC", "test", dir
+ wxString("/samples/splitter"), wxStringList("test.cpp", 0));
286 GenerateSample("TabVC", "test", dir
+ wxString("/samples/tab"), wxStringList("test.cpp", "test.h", 0));
287 GenerateSample("TaskbarVC", "tbtest", dir
+ wxString("/samples/taskbar"), wxStringList("tbtest.cpp", "tbtest.h", 0));
288 GenerateSample("TextVC", "text", dir
+ wxString("/samples/text"), wxStringList("text.cpp", 0));
289 GenerateSample("ThreadVC", "test", dir
+ wxString("/samples/thread"), wxStringList("test.cpp", 0));
290 GenerateSample("ToolbarVC", "toolbar", dir
+ wxString("/samples/toolbar"), wxStringList("toolbar.cpp", 0));
291 GenerateSample("TreectrlVC", "treetest", dir
+ wxString("/samples/treectrl"), wxStringList("treetest.cpp", "treetest.h", 0));
292 GenerateSample("TypetestVC", "typetest", dir
+ wxString("/samples/typetest"), wxStringList("typetest.cpp", "typetest.h", 0));
293 GenerateSample("ValidateVC", "validate", dir
+ wxString("/samples/validate"), wxStringList("validate.cpp", "validate.h", 0));
294 GenerateSample("ClientVC", "client", dir
+ wxString("/samples/sockets"), wxStringList("client.cpp", 0));
295 GenerateSample("ServerVC", "server", dir
+ wxString("/samples/sockets"), wxStringList("server.cpp", 0));
296 GenerateSample("ClientVC", "client", dir
+ wxString("/samples/ipc"), wxStringList("client.cpp", "client.h", "ddesetup.h", 0));
297 GenerateSample("ServerVC", "server", dir
+ wxString("/samples/ipc"), wxStringList("server.cpp", "server.h", "ddesetup.h", 0));
298 GenerateSample("CaretVC", "caret", dir
+ wxString("/samples/caret"), wxStringList("caret.cpp", 0));
299 GenerateSample("DrawingVC", "drawing", dir
+ wxString("/samples/drawing"), wxStringList("drawing.cpp", 0));
300 GenerateSample("ScrollVC", "scroll", dir
+ wxString("/samples/scroll"), wxStringList("scroll.cpp", 0));
301 GenerateSample("WizardVC", "wiztest", dir
+ wxString("/samples/wizard"), wxStringList("wiztest.cpp", 0));
302 GenerateSample("RotateVC", "rotate", dir
+ wxString("/samples/rotate"), wxStringList("rotate.cpp", 0));
303 GenerateSample("ExecVC", "exec", dir
+ wxString("/samples/exec"), wxStringList("exec.cpp", 0));
304 GenerateSample("FontVC", "font", dir
+ wxString("/samples/font"), wxStringList("font.cpp", 0));
305 GenerateSample("MenuVC", "menu", dir
+ wxString("/samples/menu"), wxStringList("menu.cpp", 0));
309 GenerateSample("BombsVC", "bombs", dir
+ wxString("/demos/bombs"),
310 wxStringList("bombs.cpp", "bombs1.cpp", "game.cpp", "bombs.h", "game.h", 0));
312 GenerateSample("FortyVC", "forty", dir
+ wxString("/demos/forty"),
313 wxStringList("forty.cpp", "canvas.cpp", "card.cpp", "game.cpp", "pile.cpp", "playerdg.cpp", "scoredg.cpp", "scorefil.cpp",
314 "canvas.h", "forty.h", "card.h", "game.h", "pile.h", "playerdg.h", "scoredg.h", "scorefil.h",
317 GenerateSample("FractalVC", "fractal", dir
+ wxString("/demos/fractal"), wxStringList("fractal.cpp", 0));
319 GenerateSample("LifeVC", "life", dir
+ wxString("/demos/life"),
320 wxStringList("life.cpp", "game.cpp", "dialogs.cpp", "life.h", "game.h", "dialogs.h", 0));
322 GenerateSample("PoemVC", "wxpoem", dir
+ wxString("/demos/poem"), wxStringList("wxpoem.cpp", "wxpoem.h", 0));
324 GenerateSample("DbbrowseVC", "dbbrowse", dir
+ wxString("/demos/dbbrowse"),
325 wxStringList("dbbrowse.cpp", "browsedb.cpp", "dbgrid.cpp", "dbtree.cpp", "dlguser.cpp", "doc.cpp",
326 "pgmctrl.cpp", "tabpgwin.cpp",
327 "dbbrowse.h", "browsedb.h", "dbgrid.h", "dbtree.h", "dlguser.h", "doc.h", "pgmctrl.h", "std.h", "tabpgwin.h",
335 project
.SetIncludeDirs(wxStringList("../../../include", 0));
336 project
.SetResourceIncludeDirs(wxStringList("../../../include", 0));
337 project
.SetLibDirs(wxStringList("../../../lib", 0));
338 project
.SetDebugLibDirs(wxStringList("../../../src/Debug", "../../../src/jpeg/Debug", "../../../src/tiff/Debug", 0));
339 project
.SetReleaseLibDirs(wxStringList("../../../src/Release", "../../../src/jpeg/Release", "../../../src/tiff/Release", 0));
341 project
.SetProjectName("DialogEdVC");
342 project
.SetTargetName("dialoged");
343 project
.SetProjectPath(dir
+ wxString("/utils/dialoged/src"));
344 project
.SetSourceFiles(wxStringList("dialoged.cpp", "dlghndlr.cpp", "edlist.cpp", "edtree.cpp",
345 "reseditr.cpp", "reswrite.cpp", "symbtabl.cpp", "winstyle.cpp", "winprop.cpp",
346 "dialoged.h", "dlghndlr.h", "edlist.h", "edtree.h", "reseditr.h", "symbtabl.h", "winprop.h",
350 if (!project
.GenerateVCProject())
352 wxString
msg("Could not generate Dialog Editor project");
357 project
.SetIncludeDirs(wxStringList("../../../include", 0));
358 project
.SetResourceIncludeDirs(wxStringList("../../../include", 0));
359 project
.SetLibDirs(wxStringList("../../../lib", 0));
360 project
.SetDebugLibDirs(wxStringList("../../../src/Debug", "../../../src/jpeg/Debug", "../../../src/tiff/Debug", 0));
361 project
.SetReleaseLibDirs(wxStringList("../../../src/Release", "../../../src/jpeg/Release", "../../../src/tiff/Release", 0));
363 project
.SetProjectName("Tex2RTFVC");
364 project
.SetTargetName("tex2rtf");
365 project
.SetProjectPath(dir
+ wxString("/utils/tex2rtf/src"));
366 project
.SetSourceFiles(wxStringList("tex2rtf.cpp", "htmlutil.cpp", "readshg.cpp", "rtfutils.cpp",
367 "table.cpp", "tex2any.cpp", "texutils.cpp", "xlputils.cpp",
368 "bmputils.h", "readshg.h", "rtfutils.h", "table.h", "tex2any.h", "tex2rtf.h", "wxhlpblk.h",
371 if (!project
.GenerateVCProject())
373 wxString
msg("Could not generate Tex2RTF project");
378 project
.SetIncludeDirs(wxStringList("../../../include", 0));
379 project
.SetResourceIncludeDirs(wxStringList("../../../include", 0));
380 project
.SetLibDirs(wxStringList("../../../lib", 0));
381 project
.SetDebugLibDirs(wxStringList("../../../src/Debug", "../../../src/jpeg/Debug", "../../../src/tiff/Debug", 0));
382 project
.SetReleaseLibDirs(wxStringList("../../../src/Release", "../../../src/jpeg/Release", "../../../src/tiff/Release", 0));
384 project
.SetProjectName("HelpGenVC");
385 project
.SetTargetName("helpgen");
386 project
.SetProjectPath(dir
+ wxString("/utils/helpgen/src"));
387 project
.SetSourceFiles(wxStringList("helpgen.cpp", "cjparser.cpp", "docripper.cpp", "ifcontext.cpp",
388 "markup.cpp", "ripper_main.cpp", "scriptbinder.cpp", "sourcepainter.cpp",
390 "cjparser.h", "docripper.h", "ifcontext.h", "markup.h", "scriptbinder.h", "sourcepainter.h",
391 "srcparser.h", "wxstlac.h", "wxstllst.h", "wxstlvec.h", 0));
393 if (!project
.GenerateVCProject())
395 wxString
msg("Could not generate HelpGen project");
400 project
.SetIncludeDirs(wxStringList("../../include", 0));
401 project
.SetResourceIncludeDirs(wxStringList("../../include", 0));
402 project
.SetLibDirs(wxStringList("../../lib", 0));
403 project
.SetDebugLibDirs(wxStringList("../../src/Debug", "../../src/jpeg/Debug", "../../src/tiff/Debug", 0));
404 project
.SetReleaseLibDirs(wxStringList("../../src/Release", "../../src/jpeg/Release", "../../src/tiff/Release", 0));
406 project
.SetProjectName("ProjGenVC");
407 project
.SetTargetName("makeproj");
408 project
.SetProjectPath(dir
+ wxString("/utils/projgen"));
409 project
.SetSourceFiles(wxStringList("makeproj.cpp", "makeproj.h", 0));
411 if (!project
.GenerateVCProject())
413 wxString
msg("Could not generate ProjGen project");
418 project
.SetIncludeDirs(wxStringList("../../include", 0));
419 project
.SetResourceIncludeDirs(wxStringList("../../include", 0));
420 project
.SetLibDirs(wxStringList("../../lib", 0));
421 project
.SetDebugLibDirs(wxStringList("../../src/Debug", "../../src/jpeg/Debug", "../../src/tiff/Debug", 0));
422 project
.SetReleaseLibDirs(wxStringList("../../src/Release", "../../src/jpeg/Release", "../../src/tiff/Release", 0));
424 project
.SetProjectName("hhp2cachedVC");
425 project
.SetTargetName("hhp2cached");
426 project
.SetProjectPath(dir
+ wxString("/utils/hhp2cached"));
427 project
.SetSourceFiles(wxStringList("hhp2cached.cpp", 0));
429 if (!project
.GenerateVCProject())
431 wxString
msg("Could not generate hhp2cached project");
435 // wxTreeLayout sample
437 project
.SetIncludeDirs(wxStringList("../../../include", 0));
438 project
.SetResourceIncludeDirs(wxStringList("../../../include", 0));
439 project
.SetLibDirs(wxStringList("../../../lib", 0));
440 project
.SetDebugLibDirs(wxStringList("../../../src/Debug", "../../../src/jpeg/Debug", "../../../src/tiff/Debug", 0));
441 project
.SetReleaseLibDirs(wxStringList("../../../src/Release", "../../../src/jpeg/Release", "../../../src/tiff/Release", 0));
443 project
.SetProjectName("TreeSampleVC");
444 project
.SetTargetName("test");
445 project
.SetProjectPath(dir
+ wxString("/utils/wxtree/src"));
446 project
.SetSourceFiles(wxStringList("test.cpp", "wxtree.cpp", "test.h", "wxtree.h", 0));
448 if (!project
.GenerateVCProject())
450 wxString
msg("Could not generate wxTreeLayout project");
456 project
.SetIncludeDirs(wxStringList("../../../../include", "../../src", 0));
457 project
.SetResourceIncludeDirs(wxStringList("../../../../include", 0));
458 project
.SetLibDirs(wxStringList("../../../../lib", 0));
459 project
.SetDebugLibDirs(wxStringList("../../../../src/Debug", "../../src/Debug", "../../../../src/jpeg/Debug", "../../../../src/tiff/Debug", 0));
460 project
.SetReleaseLibDirs(wxStringList("../../../../src/Release", "../../src/Release", "../../../../src/jpeg/Release", "../../../../src/tiff/Release", 0));
462 project
.SetExtraLibs(wxStringList("ogl.lib", 0));
464 project
.SetProjectName("OGLEditVC");
465 project
.SetTargetName("ogledit");
466 project
.SetProjectPath(dir
+ wxString("/utils/ogl/samples/ogledit"));
467 project
.SetSourceFiles(wxStringList("ogledit.cpp", "doc.cpp", "palette.cpp", "view.cpp",
468 "doc.h", "ogledit.h", "palette.h", "view.h",
471 if (!project
.GenerateVCProject())
473 wxString
msg("Could not generate OGLEdit project");
479 project
.SetIncludeDirs(wxStringList("../../../../include", "../../src", 0));
480 project
.SetResourceIncludeDirs(wxStringList("../../../../include", 0));
481 project
.SetLibDirs(wxStringList("../../../../lib", 0));
482 project
.SetDebugLibDirs(wxStringList("../../../../src/Debug", "../../src/Debug", "../../../../src/jpeg/Debug", "../../../../src/tiff/Debug", 0));
483 project
.SetReleaseLibDirs(wxStringList("../../../../src/Release", "../../src/Release", "../../../../src/jpeg/Release", "../../../../src/tiff/Release", 0));
484 project
.SetExtraLibs(wxStringList("ogl.lib", 0));
486 project
.SetProjectName("StudioVC");
487 project
.SetTargetName("studio");
488 project
.SetProjectPath(dir
+ wxString("/utils/ogl/samples/studio"));
489 project
.SetSourceFiles(wxStringList("studio.cpp", "cspalette.cpp", "dialogs.cpp", "view.cpp",
490 "doc.cpp", "mainfrm.cpp", "project.cpp", "shapes.cpp", "symbols.cpp", "csprint.cpp",
491 "studio.h", "cspalette.h", "dialogs.h", "view.h",
492 "doc.h", "mainfrm.h", "project.h", "shapes.h", "symbols.h",
495 if (!project
.GenerateVCProject())
497 wxString
msg("Could not generate OGL Studio project");
502 // ----------------------------------------------------------------------------
504 // ----------------------------------------------------------------------------
507 MyFrame::MyFrame(const wxString
& title
, const wxPoint
& pos
, const wxSize
& size
)
508 : wxFrame((wxFrame
*)NULL
, -1, title
, pos
, size
)
510 // set the frame icon
511 SetIcon(wxICON(mondrian
));
514 wxMenu
*menuFile
= new wxMenu
;
516 menuFile
->Append(MakeProject_Generate
, "&Generate");
517 menuFile
->Append(MakeProject_About
, "&About...");
518 menuFile
->AppendSeparator();
519 menuFile
->Append(MakeProject_Quit
, "E&xit");
521 // now append the freshly created menu to the menu bar...
522 wxMenuBar
*menuBar
= new wxMenuBar
;
523 menuBar
->Append(menuFile
, "&File");
525 // ... and attach this menu bar to the frame
528 // create a status bar just for fun (by default with 1 pane only)
530 SetStatusText("Welcome to wxWindows!");
536 void MyFrame::OnQuit(wxCommandEvent
& WXUNUSED(event
))
538 // TRUE is to force the frame to close
542 void MyFrame::OnAbout(wxCommandEvent
& WXUNUSED(event
))
544 wxMessageBox("MakeProject: generates VC++ project files",
545 "About MakeProject", wxOK
| wxICON_INFORMATION
, this);
548 void MyFrame::OnGenerate(wxCommandEvent
& WXUNUSED(event
))
550 wxGetApp().GenerateSamples("d:/wx2/wxWindows");
553 bool MyFrame::GenerateSample(const wxString
& projectName
, const wxString
& targetName
,
554 const wxString
& path
, const wxStringList
& sourceFiles
, const wxString
& relativeRootPath
)
556 return wxGetApp().GenerateSample(projectName
, targetName
, path
, sourceFiles
, relativeRootPath
);
563 wxProject::wxProject()
567 wxProject::~wxProject()
572 bool wxProject::GenerateVCProject()
574 wxString fullProjectName
= m_path
+ wxString("/") + m_projectName
+ ".dsp";
576 ofstream
stream(fullProjectName
);
580 /////////////////////// General stuff
582 stream
<< "# Microsoft Developer Studio Project File - Name=\"" << m_projectName
<< "\" - Package Owner=<4>\n";
583 stream
<< "# Microsoft Developer Studio Generated Build File, Format Version 5.00\n";
584 stream
<< "# (Actually, generated by MakeProject, (c) Julian Smart, 1998)\n";
585 stream
<< "# ** DO NOT EDIT **\n\n";
586 stream
<< "# TARGTYPE \"Win32 (x86) Application\" 0x0101\n\n";
587 stream
<< "CFG=" << m_projectName
<< " - Win32 Debug\n";
588 stream
<< "!MESSAGE This is not a valid makefile. To build this project using NMAKE,\n";
589 stream
<< "!MESSAGE use the Export Makefile command and run\n";
590 stream
<< "!MESSAGE\n";
591 stream
<< "!MESSAGE NMAKE /f \"" << m_projectName
<< ".mak\".\n";
592 stream
<< "!MESSAGE\n";
593 stream
<< "!MESSAGE You can specify a configuration when running NMAKE\n";
594 stream
<< "!MESSAGE by defining the macro CFG on the command line. For example:\n";
595 stream
<< "!MESSAGE\n";
596 stream
<< "!MESSAGE NMAKE /f \"" << m_projectName
<< ".mak\" CFG=\"" << m_projectName
<< " - Win32 Debug\"\n";
597 stream
<< "!MESSAGE\n";
598 stream
<< "!MESSAGE Possible choices for configuration are:\n";
599 stream
<< "!MESSAGE\n";
600 stream
<< "!MESSAGE \"" << m_projectName
<< " - Win32 Release\" (based on \"Win32 (x86) Application\")\n";
601 stream
<< "!MESSAGE \"" << m_projectName
<< " - Win32 Debug\" (based on \"Win32 (x86) Application\")\n";
602 stream
<< "!MESSAGE \"" << m_projectName
<< " - Win32 Debug DLL\" (based on \"Win32 (x86) Application\")\n";
603 stream
<< "!MESSAGE \"" << m_projectName
<< " - Win32 Release DLL\" (based on \"Win32 (x86) Application\")\n";
604 stream
<< "!MESSAGE\n";
606 stream
<< "# Begin Project\n";
607 stream
<< "# PROP Scc_ProjName \"\"\n";
608 stream
<< "# PROP Scc_LocalPath \"\"\n";
609 stream
<< "CPP=cl.exe\n";
610 stream
<< "MTL=midl.exe\n";
611 stream
<< "RSC=rc.exe\n";
614 /////////////////////// Win32 Release target
616 stream
<< "!IF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Release\"\n";
618 stream
<< "# PROP BASE Use_MFC 0\n";
619 stream
<< "# PROP BASE Use_Debug_Libraries 0\n";
620 stream
<< "# PROP BASE Output_Dir \"Release\"\n";
621 stream
<< "# PROP BASE Intermediate_Dir \"Release\"\n";
622 stream
<< "# PROP BASE Target_Dir \"\"\n";
623 stream
<< "# PROP Use_MFC 0\n";
624 stream
<< "# PROP Use_Debug_Libraries 0\n";
625 stream
<< "# PROP Output_Dir \"Release\"\n";
626 stream
<< "# PROP Intermediate_Dir \"Release\"\n";
627 stream
<< "# PROP Ignore_Export_Lib 0\n";
628 stream
<< "# PROP Target_Dir \"\"\n";
629 stream
<< "# ADD BASE CPP /nologo /W3 /GX /O2 /D \"WIN32\" /D \"NDEBUG\" /D \"_WINDOWS\" /YX /FD /c\n";
630 stream
<< "# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2";
632 int n
= m_includeDirs
.Number();
634 for (i
= 0; i
< n
; i
++)
636 wxString includeDir
= m_includeDirs
[i
];
637 stream
<< " /I \"" << includeDir
<< "\"";
640 stream
<< " /D \"NDEBUG\" /D \"WIN32\" /D \"_WINDOWS\" /D \"__WINDOWS__\" /D \"__WXMSW__\" /D \"__WIN95__\" /D \"__WIN32__\" /D WINVER=0x0400 /D \"STRICT\" /FD /c\n";
641 stream
<< "# SUBTRACT CPP /YX\n";
642 stream
<< "# ADD BASE MTL /nologo /D \"NDEBUG\" /mktyplib203 /o NUL /win32\n";
643 stream
<< "# ADD MTL /nologo /D \"NDEBUG\" /mktyplib203 /o NUL /win32\n";
644 stream
<< "# ADD BASE RSC /l 0x809 /d \"NDEBUG\"\n";
645 stream
<< "# ADD RSC /l 0x809 /d \"NDEBUG\"\n";
646 stream
<< "BSC32=bscmake.exe\n";
647 stream
<< "# ADD BASE BSC32 /nologo\n";
648 stream
<< "# ADD BSC32 /nologo\n";
649 stream
<< "LINK32=link.exe\n";
650 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";
651 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 ";
652 n
= m_extraLibs
.Number();
653 for (i
= 0; i
< n
; i
++)
655 wxString lib
= m_extraLibs
[i
];
656 stream
<< lib
<< " ";
659 stream
<< "/nologo /subsystem:windows /machine:I386 /nodefaultlib:\"libc.lib,libci.lib,msvcrtd.lib\" /out:\"Release/" << m_targetName
<< ".exe\"";
661 n
= m_releaseLibDirs
.Number();
662 for (i
= 0; i
< n
; i
++)
664 wxString libDir
= m_releaseLibDirs
[i
];
665 stream
<< " /libpath:\"" << libDir
<< "\"";
667 n
= m_libDirs
.Number();
668 for (i
= 0; i
< n
; i
++)
670 wxString libDir
= m_libDirs
[i
];
671 stream
<< " /libpath:\"" << libDir
<< "\"";
676 /////////////////////// Win32 Debug target
678 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Debug\"\n";
680 stream
<< "# PROP BASE Use_MFC 0\n";
681 stream
<< "# PROP BASE Use_Debug_Libraries 1\n";
682 stream
<< "# PROP BASE Output_Dir \"Debug\"\n";
683 stream
<< "# PROP BASE Intermediate_Dir \"Debug\"\n";
684 stream
<< "# PROP BASE Target_Dir \"\"\n";
685 stream
<< "# PROP Use_MFC 0\n";
686 stream
<< "# PROP Use_Debug_Libraries 1\n";
687 stream
<< "# PROP Output_Dir \"Debug\"\n";
688 stream
<< "# PROP Intermediate_Dir \"Debug\"\n";
689 stream
<< "# PROP Ignore_Export_Lib 0\n";
690 stream
<< "# PROP Target_Dir \"\"\n";
691 stream
<< "# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D \"WIN32\" /D \"_DEBUG\" /D \"_WINDOWS\" /YX /FD /c\n";
692 stream
<< "# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od";
694 n
= m_includeDirs
.Number();
695 for (i
= 0; i
< n
; i
++)
697 wxString includeDir
= m_includeDirs
[i
];
698 stream
<< " /I \"" << includeDir
<< "\"";
701 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";
702 stream
<< "# ADD BASE MTL /nologo /D \"_DEBUG\" /mktyplib203 /o NUL /win32\n";
703 stream
<< "# ADD MTL /nologo /D \"_DEBUG\" /mktyplib203 /o NUL /win32\n";
704 stream
<< "# ADD BASE RSC /l 0x809 /d \"_DEBUG\"\n";
705 stream
<< "# ADD RSC /l 0x809 /d \"_DEBUG\"\n";
706 stream
<< "BSC32=bscmake.exe\n";
707 stream
<< "# ADD BASE BSC32 /nologo\n";
708 stream
<< "# ADD BSC32 /nologo\n";
709 stream
<< "LINK32=link.exe\n";
710 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";
711 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 ";
712 n
= m_extraLibs
.Number();
713 for (i
= 0; i
< n
; i
++)
715 wxString lib
= m_extraLibs
[i
];
716 stream
<< lib
<< " ";
718 stream
<< "/nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:\"libcd.lib,libcid.lib,msvcrt.lib\" /out:\"Debug/" << m_targetName
<< ".exe\" /pdbtype:sept";
720 n
= m_debugLibDirs
.Number();
721 for (i
= 0; i
< n
; i
++)
723 wxString libDir
= m_debugLibDirs
[i
];
724 stream
<< " /libpath:\"" << libDir
<< "\"";
726 n
= m_libDirs
.Number();
727 for (i
= 0; i
< n
; i
++)
729 wxString libDir
= m_libDirs
[i
];
730 stream
<< " /libpath:\"" << libDir
<< "\"";
734 // stream << "!ENDIF\n";
737 /////////////////////// Win32 Debug DLL target
739 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Debug DLL\"\n";
741 stream
<< "# PROP BASE Use_MFC 0\n";
742 stream
<< "# PROP BASE Use_Debug_Libraries 1\n";
743 stream
<< "# PROP BASE Output_Dir \"DebugDLL\"\n";
744 stream
<< "# PROP BASE Intermediate_Dir \"DebugDLL\"\n";
745 stream
<< "# PROP BASE Target_Dir \"\"\n";
746 stream
<< "# PROP Use_MFC 0\n";
747 stream
<< "# PROP Use_Debug_Libraries 1\n";
748 stream
<< "# PROP Output_Dir \"DebugDLL\"\n";
749 stream
<< "# PROP Intermediate_Dir \"DebugDLL\"\n";
750 stream
<< "# PROP Ignore_Export_Lib 0\n";
751 stream
<< "# PROP Target_Dir \"\"\n";
752 stream
<< "# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D \"WIN32\" /D \"_DEBUG\" /D \"_WINDOWS\" /YX /FD /c\n";
753 stream
<< "# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od";
755 n
= m_includeDirs
.Number();
756 for (i
= 0; i
< n
; i
++)
758 wxString includeDir
= m_includeDirs
[i
];
759 stream
<< " /I \"" << includeDir
<< "\"";
762 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";
763 stream
<< "# ADD BASE MTL /nologo /D \"_DEBUG\" /mktyplib203 /o NUL /win32\n";
764 stream
<< "# ADD MTL /nologo /D \"_DEBUG\" /mktyplib203 /o NUL /win32\n";
765 stream
<< "# ADD BASE RSC /l 0x809 /d \"_DEBUG\"\n";
766 stream
<< "# ADD RSC /l 0x809 /d \"_DEBUG\"\n";
767 stream
<< "BSC32=bscmake.exe\n";
768 stream
<< "# ADD BASE BSC32 /nologo\n";
769 stream
<< "# ADD BSC32 /nologo\n";
770 stream
<< "LINK32=link.exe\n";
771 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";
772 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 ";
773 n
= m_extraLibs
.Number();
774 for (i
= 0; i
< n
; i
++)
776 wxString lib
= m_extraLibs
[i
];
777 stream
<< lib
<< " ";
779 stream
<< "/nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:\"libcd.lib\" /nodefaultlib:\"libcid.lib\" /out:\"DebugDLL/" << m_targetName
<< ".exe\" /pdbtype:sept";
781 n
= m_debugLibDirs
.Number();
782 for (i
= 0; i
< n
; i
++)
784 wxString libDir
= m_debugLibDirs
[i
];
785 libDir
+= "DLL"; // Assume that we have e.g. Debug so make it DebugDLL
786 stream
<< " /libpath:\"" << libDir
<< "\"";
788 n
= m_libDirs
.Number();
789 for (i
= 0; i
< n
; i
++)
791 wxString libDir
= m_libDirs
[i
];
792 stream
<< " /libpath:\"" << libDir
<< "\"";
796 // stream << "!ENDIF\n";
799 /////////////////////// Win32 Release DLL target
801 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Release DLL\"\n";
803 stream
<< "# PROP BASE Use_MFC 0\n";
804 stream
<< "# PROP BASE Use_Debug_Libraries 0\n";
805 stream
<< "# PROP BASE Output_Dir \"ReleaseDLL\"\n";
806 stream
<< "# PROP BASE Intermediate_Dir \"ReleaseDLL\"\n";
807 stream
<< "# PROP BASE Target_Dir \"\"\n";
808 stream
<< "# PROP Use_MFC 0\n";
809 stream
<< "# PROP Use_Debug_Libraries 0\n";
810 stream
<< "# PROP Output_Dir \"ReleaseDLL\"\n";
811 stream
<< "# PROP Intermediate_Dir \"ReleaseDLL\"\n";
812 stream
<< "# PROP Ignore_Export_Lib 0\n";
813 stream
<< "# PROP Target_Dir \"\"\n";
814 stream
<< "# ADD BASE CPP /nologo /W3 /GX /O2 /D \"WIN32\" /D \"NDEBUG\" /D \"_WINDOWS\" /YX /FD /c\n";
815 stream
<< "# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2";
817 n
= m_includeDirs
.Number();
818 for (i
= 0; i
< n
; i
++)
820 wxString includeDir
= m_includeDirs
[i
];
821 stream
<< " /I \"" << includeDir
<< "\"";
824 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";
825 stream
<< "# SUBTRACT CPP /YX\n";
826 stream
<< "# ADD BASE MTL /nologo /D \"NDEBUG\" /mktyplib203 /o NUL /win32\n";
827 stream
<< "# ADD MTL /nologo /D \"NDEBUG\" /mktyplib203 /o NUL /win32\n";
828 stream
<< "# ADD BASE RSC /l 0x809 /d \"NDEBUG\"\n";
829 stream
<< "# ADD RSC /l 0x809 /d \"NDEBUG\"\n";
830 stream
<< "BSC32=bscmake.exe\n";
831 stream
<< "# ADD BASE BSC32 /nologo\n";
832 stream
<< "# ADD BSC32 /nologo\n";
833 stream
<< "LINK32=link.exe\n";
834 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";
835 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 ";
836 n
= m_extraLibs
.Number();
837 for (i
= 0; i
< n
; i
++)
839 wxString lib
= m_extraLibs
[i
];
840 stream
<< lib
<< " ";
842 stream
<< "/nologo /subsystem:windows /machine:I386 /nodefaultlib:\"libc.lib\" /nodefaultlib:\"libci.lib\" /out:\"ReleaseDLL/" << m_targetName
<< ".exe\"";
844 n
= m_releaseLibDirs
.Number();
845 for (i
= 0; i
< n
; i
++)
847 wxString libDir
= m_releaseLibDirs
[i
];
848 libDir
+= "DLL"; // Assume that we have e.g. Release so make it ReleaseDLL
849 stream
<< " /libpath:\"" << libDir
<< "\"";
851 n
= m_libDirs
.Number();
852 for (i
= 0; i
< n
; i
++)
854 wxString libDir
= m_libDirs
[i
];
855 stream
<< " /libpath:\"" << libDir
<< "\"";
859 stream
<< "!ENDIF\n";
862 /////////////////////// Source code for targets
864 stream
<< "# Begin Target\n";
866 stream
<< "# Name \"" << m_projectName
<< " - Win32 Release\"\n";
867 stream
<< "# Name \"" << m_projectName
<< " - Win32 Debug\"\n";
868 stream
<< "# Name \"" << m_projectName
<< " - Win32 Debug DLL\"\n";
869 stream
<< "# Name \"" << m_projectName
<< " - Win32 Release DLL\"\n";
872 n
= m_sourceFiles
.Number();
873 for (i
= 0; i
< n
; i
++)
875 wxString sourceFile
= m_sourceFiles
[i
];
877 stream
<< "# Begin Source File\n";
879 stream
<< "SOURCE=.\\" << sourceFile
<< "\n";
881 stream
<< "!IF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Release\"\n";
883 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Debug\"\n";
885 stream
<< "# SUBTRACT CPP /YX /Yc /Yu\n";
887 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Debug DLL\"\n";
889 stream
<< "# SUBTRACT BASE CPP /YX /Yc /Yu\n";
890 stream
<< "# SUBTRACT CPP /YX /Yc /Yu\n";
892 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Release DLL\"\n";
894 stream
<< "!ENDIF\n";
896 stream
<< "# End Source File\n";
899 // The .rc file: assume it has the target name + rc extension.
900 stream
<< "# Begin Source File\n";
902 stream
<< "SOURCE=.\\" << m_targetName
<< ".rc\n";
903 stream
<< "# ADD BASE RSC /l 0x809\n";
904 stream
<< "# ADD RSC /l 0x809";
906 n
= m_resourceIncludeDirs
.Number();
907 for (i
= 0; i
< n
; i
++)
909 wxString includeDir
= m_resourceIncludeDirs
[i
];
910 stream
<< " /i \"" << includeDir
<< "\"";
914 stream
<< "# End Source File\n";
915 stream
<< "# End Target\n";
916 stream
<< "# End Project\n";
918 // Now generate the .dsw workspace file
920 wxString fullWorkSpaceName
= m_path
+ wxString("/") + m_projectName
+ ".dsw";
922 ofstream
stream2(fullWorkSpaceName
);
926 stream2
<< "Microsoft Developer Studio Workspace File, Format Version 5.00\n";
927 stream2
<< "# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!\n";
929 stream2
<< "###############################################################################\n";
931 stream2
<< "Project: \"" << m_projectName
<< "\"=.\\" << m_projectName
<< ".dsp - Package Owner=<4>\n";
933 stream2
<< "Package=<5>\n";
937 stream2
<< "Package=<4>\n";
941 stream2
<< "###############################################################################\n";
943 stream2
<< "Global:\n";
945 stream2
<< "Package=<5>\n";
949 stream2
<< "Package=<3>\n";
953 stream2
<< "###############################################################################\n";
959 BEGIN_EVENT_TABLE(MyDialog
, wxDialog
)
960 EVT_BUTTON(wxID_EXIT
, MyDialog::OnQuit
)
961 EVT_BUTTON(ID_GENERATE_PROJECT
, MyDialog::OnGenerate
)
962 EVT_BUTTON(ID_GENERATE_SAMPLES
, MyDialog::OnGenerateSamples
)
965 // ----------------------------------------------------------------------------
967 // ----------------------------------------------------------------------------
970 MyDialog::MyDialog(const wxString
& title
, const wxPoint
& pos
, const wxSize
& size
):
973 LoadFromResource((wxWindow
*) NULL
, "project_dialog");
977 void MyDialog::OnQuit(wxCommandEvent
& event
)
979 this->EndModal(wxID_OK
);
982 void MyDialog::OnAbout(wxCommandEvent
& event
)
986 void MyDialog::OnGenerate(wxCommandEvent
& event
)
990 void MyDialog::OnGenerateSamples(wxCommandEvent
& event
)
992 char* dir
= getenv("WXWIN");
996 wxTextEntryDialog
dialog(this, "Please enter the wxWindows directory", "Text entry", dirStr
, wxOK
|wxCANCEL
);
997 if (dialog
.ShowModal() == wxID_OK
)
999 if (wxDirExists(dialog
.GetValue()))
1001 // wxGetApp().GenerateSample("MinimalVC", "minimal", dir + wxString("/samples/minimal"),
1002 // wxStringList("minimal.cpp", 0));
1004 wxGetApp().GenerateSamples(dialog
.GetValue());
1008 wxMessageBox("This directory doesn't exist.");