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");
454 // OGLEdit. We have to do it the long way because we need to add the extra ogl.lib.
456 project
.SetIncludeDirs(wxStringList("../../../include", 0));
457 project
.SetResourceIncludeDirs(wxStringList("../../../include", 0));
458 project
.SetLibDirs(wxStringList("../../../lib", 0));
459 project
.SetDebugLibDirs(wxStringList("../../../src/Debug", "../../../src/ogl/Debug", "../../../src/jpeg/Debug", "../../../src/tiff/Debug", 0));
460 project
.SetReleaseLibDirs(wxStringList("../../../src/Release", "../../../src/ogl/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("/samples/ogl/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", 0));
480 project
.SetResourceIncludeDirs(wxStringList("../../../include", 0));
481 project
.SetLibDirs(wxStringList("../../../lib", 0));
482 project
.SetDebugLibDirs(wxStringList("../../../src/Debug", "../../../src/ogl/Debug", "../../../src/jpeg/Debug", "../../../src/tiff/Debug", 0));
483 project
.SetReleaseLibDirs(wxStringList("../../../src/Release", "../../../src/ogl/Release", "../../../src/jpeg/Release", "../../../src/tiff/Release", 0));
485 project
.SetExtraLibs(wxStringList("ogl.lib", 0));
487 project
.SetProjectName("StudioVC");
488 project
.SetTargetName("studio");
489 project
.SetProjectPath(dir
+ wxString("/samples/ogl/studio"));
490 project
.SetSourceFiles(wxStringList("studio.cpp", "cspalette.cpp", "dialogs.cpp", "view.cpp",
491 "doc.cpp", "mainfrm.cpp", "project.cpp", "shapes.cpp", "symbols.cpp", "csprint.cpp",
492 "studio.h", "cspalette.h", "dialogs.h", "view.h",
493 "doc.h", "mainfrm.h", "project.h", "shapes.h", "symbols.h",
496 if (!project
.GenerateVCProject())
498 wxString
msg("Could not generate OGL Studio project");
503 // ----------------------------------------------------------------------------
505 // ----------------------------------------------------------------------------
508 MyFrame::MyFrame(const wxString
& title
, const wxPoint
& pos
, const wxSize
& size
)
509 : wxFrame((wxFrame
*)NULL
, -1, title
, pos
, size
)
511 // set the frame icon
512 SetIcon(wxICON(mondrian
));
515 wxMenu
*menuFile
= new wxMenu
;
517 menuFile
->Append(MakeProject_Generate
, "&Generate");
518 menuFile
->Append(MakeProject_About
, "&About...");
519 menuFile
->AppendSeparator();
520 menuFile
->Append(MakeProject_Quit
, "E&xit");
522 // now append the freshly created menu to the menu bar...
523 wxMenuBar
*menuBar
= new wxMenuBar
;
524 menuBar
->Append(menuFile
, "&File");
526 // ... and attach this menu bar to the frame
529 // create a status bar just for fun (by default with 1 pane only)
531 SetStatusText("Welcome to wxWindows!");
537 void MyFrame::OnQuit(wxCommandEvent
& WXUNUSED(event
))
539 // TRUE is to force the frame to close
543 void MyFrame::OnAbout(wxCommandEvent
& WXUNUSED(event
))
545 wxMessageBox("MakeProject: generates VC++ project files",
546 "About MakeProject", wxOK
| wxICON_INFORMATION
, this);
549 void MyFrame::OnGenerate(wxCommandEvent
& WXUNUSED(event
))
551 wxGetApp().GenerateSamples("d:/wx2/wxWindows");
554 bool MyFrame::GenerateSample(const wxString
& projectName
, const wxString
& targetName
,
555 const wxString
& path
, const wxStringList
& sourceFiles
, const wxString
& relativeRootPath
)
557 return wxGetApp().GenerateSample(projectName
, targetName
, path
, sourceFiles
, relativeRootPath
);
564 wxProject::wxProject()
568 wxProject::~wxProject()
573 bool wxProject::GenerateVCProject()
575 wxString fullProjectName
= m_path
+ wxString("/") + m_projectName
+ ".dsp";
577 ofstream
stream(fullProjectName
);
581 /////////////////////// General stuff
583 stream
<< "# Microsoft Developer Studio Project File - Name=\"" << m_projectName
<< "\" - Package Owner=<4>\n";
584 stream
<< "# Microsoft Developer Studio Generated Build File, Format Version 5.00\n";
585 stream
<< "# (Actually, generated by MakeProject, (c) Julian Smart, 1998)\n";
586 stream
<< "# ** DO NOT EDIT **\n\n";
587 stream
<< "# TARGTYPE \"Win32 (x86) Application\" 0x0101\n\n";
588 stream
<< "CFG=" << m_projectName
<< " - Win32 Debug\n";
589 stream
<< "!MESSAGE This is not a valid makefile. To build this project using NMAKE,\n";
590 stream
<< "!MESSAGE use the Export Makefile command and run\n";
591 stream
<< "!MESSAGE\n";
592 stream
<< "!MESSAGE NMAKE /f \"" << m_projectName
<< ".mak\".\n";
593 stream
<< "!MESSAGE\n";
594 stream
<< "!MESSAGE You can specify a configuration when running NMAKE\n";
595 stream
<< "!MESSAGE by defining the macro CFG on the command line. For example:\n";
596 stream
<< "!MESSAGE\n";
597 stream
<< "!MESSAGE NMAKE /f \"" << m_projectName
<< ".mak\" CFG=\"" << m_projectName
<< " - Win32 Debug\"\n";
598 stream
<< "!MESSAGE\n";
599 stream
<< "!MESSAGE Possible choices for configuration are:\n";
600 stream
<< "!MESSAGE\n";
601 stream
<< "!MESSAGE \"" << m_projectName
<< " - Win32 Release\" (based on \"Win32 (x86) Application\")\n";
602 stream
<< "!MESSAGE \"" << m_projectName
<< " - Win32 Debug\" (based on \"Win32 (x86) Application\")\n";
603 stream
<< "!MESSAGE \"" << m_projectName
<< " - Win32 Debug DLL\" (based on \"Win32 (x86) Application\")\n";
604 stream
<< "!MESSAGE \"" << m_projectName
<< " - Win32 Release DLL\" (based on \"Win32 (x86) Application\")\n";
605 stream
<< "!MESSAGE\n";
607 stream
<< "# Begin Project\n";
608 stream
<< "# PROP Scc_ProjName \"\"\n";
609 stream
<< "# PROP Scc_LocalPath \"\"\n";
610 stream
<< "CPP=cl.exe\n";
611 stream
<< "MTL=midl.exe\n";
612 stream
<< "RSC=rc.exe\n";
615 /////////////////////// Win32 Release target
617 stream
<< "!IF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Release\"\n";
619 stream
<< "# PROP BASE Use_MFC 0\n";
620 stream
<< "# PROP BASE Use_Debug_Libraries 0\n";
621 stream
<< "# PROP BASE Output_Dir \"Release\"\n";
622 stream
<< "# PROP BASE Intermediate_Dir \"Release\"\n";
623 stream
<< "# PROP BASE Target_Dir \"\"\n";
624 stream
<< "# PROP Use_MFC 0\n";
625 stream
<< "# PROP Use_Debug_Libraries 0\n";
626 stream
<< "# PROP Output_Dir \"Release\"\n";
627 stream
<< "# PROP Intermediate_Dir \"Release\"\n";
628 stream
<< "# PROP Ignore_Export_Lib 0\n";
629 stream
<< "# PROP Target_Dir \"\"\n";
630 stream
<< "# ADD BASE CPP /nologo /W3 /GX /O2 /D \"WIN32\" /D \"NDEBUG\" /D \"_WINDOWS\" /YX /FD /c\n";
631 stream
<< "# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2";
633 int n
= m_includeDirs
.Number();
635 for (i
= 0; i
< n
; i
++)
637 wxString includeDir
= m_includeDirs
[i
];
638 stream
<< " /I \"" << includeDir
<< "\"";
641 stream
<< " /D \"NDEBUG\" /D \"WIN32\" /D \"_WINDOWS\" /D \"__WINDOWS__\" /D \"__WXMSW__\" /D \"__WIN95__\" /D \"__WIN32__\" /D WINVER=0x0400 /D \"STRICT\" /FD /c\n";
642 stream
<< "# SUBTRACT CPP /YX\n";
643 stream
<< "# ADD BASE MTL /nologo /D \"NDEBUG\" /mktyplib203 /o NUL /win32\n";
644 stream
<< "# ADD MTL /nologo /D \"NDEBUG\" /mktyplib203 /o NUL /win32\n";
645 stream
<< "# ADD BASE RSC /l 0x809 /d \"NDEBUG\"\n";
646 stream
<< "# ADD RSC /l 0x809 /d \"NDEBUG\"\n";
647 stream
<< "BSC32=bscmake.exe\n";
648 stream
<< "# ADD BASE BSC32 /nologo\n";
649 stream
<< "# ADD BSC32 /nologo\n";
650 stream
<< "LINK32=link.exe\n";
651 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";
652 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 ";
653 n
= m_extraLibs
.Number();
654 for (i
= 0; i
< n
; i
++)
656 wxString lib
= m_extraLibs
[i
];
657 stream
<< lib
<< " ";
660 stream
<< "/nologo /subsystem:windows /machine:I386 /nodefaultlib:\"libc.lib,libci.lib,msvcrtd.lib\" /out:\"Release/" << m_targetName
<< ".exe\"";
662 n
= m_releaseLibDirs
.Number();
663 for (i
= 0; i
< n
; i
++)
665 wxString libDir
= m_releaseLibDirs
[i
];
666 stream
<< " /libpath:\"" << libDir
<< "\"";
668 n
= m_libDirs
.Number();
669 for (i
= 0; i
< n
; i
++)
671 wxString libDir
= m_libDirs
[i
];
672 stream
<< " /libpath:\"" << libDir
<< "\"";
677 /////////////////////// Win32 Debug target
679 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Debug\"\n";
681 stream
<< "# PROP BASE Use_MFC 0\n";
682 stream
<< "# PROP BASE Use_Debug_Libraries 1\n";
683 stream
<< "# PROP BASE Output_Dir \"Debug\"\n";
684 stream
<< "# PROP BASE Intermediate_Dir \"Debug\"\n";
685 stream
<< "# PROP BASE Target_Dir \"\"\n";
686 stream
<< "# PROP Use_MFC 0\n";
687 stream
<< "# PROP Use_Debug_Libraries 1\n";
688 stream
<< "# PROP Output_Dir \"Debug\"\n";
689 stream
<< "# PROP Intermediate_Dir \"Debug\"\n";
690 stream
<< "# PROP Ignore_Export_Lib 0\n";
691 stream
<< "# PROP Target_Dir \"\"\n";
692 stream
<< "# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D \"WIN32\" /D \"_DEBUG\" /D \"_WINDOWS\" /YX /FD /c\n";
693 stream
<< "# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od";
695 n
= m_includeDirs
.Number();
696 for (i
= 0; i
< n
; i
++)
698 wxString includeDir
= m_includeDirs
[i
];
699 stream
<< " /I \"" << includeDir
<< "\"";
702 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";
703 stream
<< "# ADD BASE MTL /nologo /D \"_DEBUG\" /mktyplib203 /o NUL /win32\n";
704 stream
<< "# ADD MTL /nologo /D \"_DEBUG\" /mktyplib203 /o NUL /win32\n";
705 stream
<< "# ADD BASE RSC /l 0x809 /d \"_DEBUG\"\n";
706 stream
<< "# ADD RSC /l 0x809 /d \"_DEBUG\"\n";
707 stream
<< "BSC32=bscmake.exe\n";
708 stream
<< "# ADD BASE BSC32 /nologo\n";
709 stream
<< "# ADD BSC32 /nologo\n";
710 stream
<< "LINK32=link.exe\n";
711 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";
712 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 ";
713 n
= m_extraLibs
.Number();
714 for (i
= 0; i
< n
; i
++)
716 wxString lib
= m_extraLibs
[i
];
717 stream
<< lib
<< " ";
719 stream
<< "/nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:\"libcd.lib,libcid.lib,msvcrt.lib\" /out:\"Debug/" << m_targetName
<< ".exe\" /pdbtype:sept";
721 n
= m_debugLibDirs
.Number();
722 for (i
= 0; i
< n
; i
++)
724 wxString libDir
= m_debugLibDirs
[i
];
725 stream
<< " /libpath:\"" << libDir
<< "\"";
727 n
= m_libDirs
.Number();
728 for (i
= 0; i
< n
; i
++)
730 wxString libDir
= m_libDirs
[i
];
731 stream
<< " /libpath:\"" << libDir
<< "\"";
735 // stream << "!ENDIF\n";
738 /////////////////////// Win32 Debug DLL target
740 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Debug DLL\"\n";
742 stream
<< "# PROP BASE Use_MFC 0\n";
743 stream
<< "# PROP BASE Use_Debug_Libraries 1\n";
744 stream
<< "# PROP BASE Output_Dir \"DebugDLL\"\n";
745 stream
<< "# PROP BASE Intermediate_Dir \"DebugDLL\"\n";
746 stream
<< "# PROP BASE Target_Dir \"\"\n";
747 stream
<< "# PROP Use_MFC 0\n";
748 stream
<< "# PROP Use_Debug_Libraries 1\n";
749 stream
<< "# PROP Output_Dir \"DebugDLL\"\n";
750 stream
<< "# PROP Intermediate_Dir \"DebugDLL\"\n";
751 stream
<< "# PROP Ignore_Export_Lib 0\n";
752 stream
<< "# PROP Target_Dir \"\"\n";
753 stream
<< "# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D \"WIN32\" /D \"_DEBUG\" /D \"_WINDOWS\" /YX /FD /c\n";
754 stream
<< "# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od";
756 n
= m_includeDirs
.Number();
757 for (i
= 0; i
< n
; i
++)
759 wxString includeDir
= m_includeDirs
[i
];
760 stream
<< " /I \"" << includeDir
<< "\"";
763 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";
764 stream
<< "# ADD BASE MTL /nologo /D \"_DEBUG\" /mktyplib203 /o NUL /win32\n";
765 stream
<< "# ADD MTL /nologo /D \"_DEBUG\" /mktyplib203 /o NUL /win32\n";
766 stream
<< "# ADD BASE RSC /l 0x809 /d \"_DEBUG\"\n";
767 stream
<< "# ADD RSC /l 0x809 /d \"_DEBUG\"\n";
768 stream
<< "BSC32=bscmake.exe\n";
769 stream
<< "# ADD BASE BSC32 /nologo\n";
770 stream
<< "# ADD BSC32 /nologo\n";
771 stream
<< "LINK32=link.exe\n";
772 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";
773 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 ";
774 n
= m_extraLibs
.Number();
775 for (i
= 0; i
< n
; i
++)
777 wxString lib
= m_extraLibs
[i
];
778 stream
<< lib
<< " ";
780 stream
<< "/nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:\"libcd.lib\" /nodefaultlib:\"libcid.lib\" /out:\"DebugDLL/" << m_targetName
<< ".exe\" /pdbtype:sept";
782 n
= m_debugLibDirs
.Number();
783 for (i
= 0; i
< n
; i
++)
785 wxString libDir
= m_debugLibDirs
[i
];
786 libDir
+= "DLL"; // Assume that we have e.g. Debug so make it DebugDLL
787 stream
<< " /libpath:\"" << libDir
<< "\"";
789 n
= m_libDirs
.Number();
790 for (i
= 0; i
< n
; i
++)
792 wxString libDir
= m_libDirs
[i
];
793 stream
<< " /libpath:\"" << libDir
<< "\"";
797 // stream << "!ENDIF\n";
800 /////////////////////// Win32 Release DLL target
802 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Release DLL\"\n";
804 stream
<< "# PROP BASE Use_MFC 0\n";
805 stream
<< "# PROP BASE Use_Debug_Libraries 0\n";
806 stream
<< "# PROP BASE Output_Dir \"ReleaseDLL\"\n";
807 stream
<< "# PROP BASE Intermediate_Dir \"ReleaseDLL\"\n";
808 stream
<< "# PROP BASE Target_Dir \"\"\n";
809 stream
<< "# PROP Use_MFC 0\n";
810 stream
<< "# PROP Use_Debug_Libraries 0\n";
811 stream
<< "# PROP Output_Dir \"ReleaseDLL\"\n";
812 stream
<< "# PROP Intermediate_Dir \"ReleaseDLL\"\n";
813 stream
<< "# PROP Ignore_Export_Lib 0\n";
814 stream
<< "# PROP Target_Dir \"\"\n";
815 stream
<< "# ADD BASE CPP /nologo /W3 /GX /O2 /D \"WIN32\" /D \"NDEBUG\" /D \"_WINDOWS\" /YX /FD /c\n";
816 stream
<< "# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2";
818 n
= m_includeDirs
.Number();
819 for (i
= 0; i
< n
; i
++)
821 wxString includeDir
= m_includeDirs
[i
];
822 stream
<< " /I \"" << includeDir
<< "\"";
825 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";
826 stream
<< "# SUBTRACT CPP /YX\n";
827 stream
<< "# ADD BASE MTL /nologo /D \"NDEBUG\" /mktyplib203 /o NUL /win32\n";
828 stream
<< "# ADD MTL /nologo /D \"NDEBUG\" /mktyplib203 /o NUL /win32\n";
829 stream
<< "# ADD BASE RSC /l 0x809 /d \"NDEBUG\"\n";
830 stream
<< "# ADD RSC /l 0x809 /d \"NDEBUG\"\n";
831 stream
<< "BSC32=bscmake.exe\n";
832 stream
<< "# ADD BASE BSC32 /nologo\n";
833 stream
<< "# ADD BSC32 /nologo\n";
834 stream
<< "LINK32=link.exe\n";
835 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";
836 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 ";
837 n
= m_extraLibs
.Number();
838 for (i
= 0; i
< n
; i
++)
840 wxString lib
= m_extraLibs
[i
];
841 stream
<< lib
<< " ";
843 stream
<< "/nologo /subsystem:windows /machine:I386 /nodefaultlib:\"libc.lib\" /nodefaultlib:\"libci.lib\" /out:\"ReleaseDLL/" << m_targetName
<< ".exe\"";
845 n
= m_releaseLibDirs
.Number();
846 for (i
= 0; i
< n
; i
++)
848 wxString libDir
= m_releaseLibDirs
[i
];
849 libDir
+= "DLL"; // Assume that we have e.g. Release so make it ReleaseDLL
850 stream
<< " /libpath:\"" << libDir
<< "\"";
852 n
= m_libDirs
.Number();
853 for (i
= 0; i
< n
; i
++)
855 wxString libDir
= m_libDirs
[i
];
856 stream
<< " /libpath:\"" << libDir
<< "\"";
860 stream
<< "!ENDIF\n";
863 /////////////////////// Source code for targets
865 stream
<< "# Begin Target\n";
867 stream
<< "# Name \"" << m_projectName
<< " - Win32 Release\"\n";
868 stream
<< "# Name \"" << m_projectName
<< " - Win32 Debug\"\n";
869 stream
<< "# Name \"" << m_projectName
<< " - Win32 Debug DLL\"\n";
870 stream
<< "# Name \"" << m_projectName
<< " - Win32 Release DLL\"\n";
873 n
= m_sourceFiles
.Number();
874 for (i
= 0; i
< n
; i
++)
876 wxString sourceFile
= m_sourceFiles
[i
];
878 stream
<< "# Begin Source File\n";
880 stream
<< "SOURCE=.\\" << sourceFile
<< "\n";
882 stream
<< "!IF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Release\"\n";
884 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Debug\"\n";
886 stream
<< "# SUBTRACT CPP /YX /Yc /Yu\n";
888 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Debug DLL\"\n";
890 stream
<< "# SUBTRACT BASE CPP /YX /Yc /Yu\n";
891 stream
<< "# SUBTRACT CPP /YX /Yc /Yu\n";
893 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Release DLL\"\n";
895 stream
<< "!ENDIF\n";
897 stream
<< "# End Source File\n";
900 // The .rc file: assume it has the target name + rc extension.
901 stream
<< "# Begin Source File\n";
903 stream
<< "SOURCE=.\\" << m_targetName
<< ".rc\n";
904 stream
<< "# ADD BASE RSC /l 0x809\n";
905 stream
<< "# ADD RSC /l 0x809";
907 n
= m_resourceIncludeDirs
.Number();
908 for (i
= 0; i
< n
; i
++)
910 wxString includeDir
= m_resourceIncludeDirs
[i
];
911 stream
<< " /i \"" << includeDir
<< "\"";
915 stream
<< "# End Source File\n";
916 stream
<< "# End Target\n";
917 stream
<< "# End Project\n";
919 // Now generate the .dsw workspace file
921 wxString fullWorkSpaceName
= m_path
+ wxString("/") + m_projectName
+ ".dsw";
923 ofstream
stream2(fullWorkSpaceName
);
927 stream2
<< "Microsoft Developer Studio Workspace File, Format Version 5.00\n";
928 stream2
<< "# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!\n";
930 stream2
<< "###############################################################################\n";
932 stream2
<< "Project: \"" << m_projectName
<< "\"=.\\" << m_projectName
<< ".dsp - Package Owner=<4>\n";
934 stream2
<< "Package=<5>\n";
938 stream2
<< "Package=<4>\n";
942 stream2
<< "###############################################################################\n";
944 stream2
<< "Global:\n";
946 stream2
<< "Package=<5>\n";
950 stream2
<< "Package=<3>\n";
954 stream2
<< "###############################################################################\n";
960 BEGIN_EVENT_TABLE(MyDialog
, wxDialog
)
961 EVT_BUTTON(wxID_EXIT
, MyDialog::OnQuit
)
962 EVT_BUTTON(ID_GENERATE_PROJECT
, MyDialog::OnGenerate
)
963 EVT_BUTTON(ID_GENERATE_SAMPLES
, MyDialog::OnGenerateSamples
)
966 // ----------------------------------------------------------------------------
968 // ----------------------------------------------------------------------------
971 MyDialog::MyDialog(const wxString
& title
, const wxPoint
& pos
, const wxSize
& size
):
974 LoadFromResource((wxWindow
*) NULL
, "project_dialog");
978 void MyDialog::OnQuit(wxCommandEvent
& event
)
980 this->EndModal(wxID_OK
);
983 void MyDialog::OnAbout(wxCommandEvent
& event
)
987 void MyDialog::OnGenerate(wxCommandEvent
& event
)
991 void MyDialog::OnGenerateSamples(wxCommandEvent
& event
)
993 char* dir
= getenv("WXWIN");
997 wxTextEntryDialog
dialog(this, "Please enter the wxWindows directory", "Text entry", dirStr
, wxOK
|wxCANCEL
);
998 if (dialog
.ShowModal() == wxID_OK
)
1000 if (wxDirExists(dialog
.GetValue()))
1002 // wxGetApp().GenerateSample("MinimalVC", "minimal", dir + wxString("/samples/minimal"),
1003 // wxStringList("minimal.cpp", 0));
1005 wxGetApp().GenerateSamples(dialog
.GetValue());
1009 wxMessageBox("This directory doesn't exist.");