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));
306 GenerateSample("TreelayVC", "test", dir
+ wxString("/samples/treelay"), wxStringList("test.cpp", "test.h", 0));
310 GenerateSample("BombsVC", "bombs", dir
+ wxString("/demos/bombs"),
311 wxStringList("bombs.cpp", "bombs1.cpp", "game.cpp", "bombs.h", "game.h", 0));
313 GenerateSample("FortyVC", "forty", dir
+ wxString("/demos/forty"),
314 wxStringList("forty.cpp", "canvas.cpp", "card.cpp", "game.cpp", "pile.cpp", "playerdg.cpp", "scoredg.cpp", "scorefil.cpp",
315 "canvas.h", "forty.h", "card.h", "game.h", "pile.h", "playerdg.h", "scoredg.h", "scorefil.h",
318 GenerateSample("FractalVC", "fractal", dir
+ wxString("/demos/fractal"), wxStringList("fractal.cpp", 0));
320 GenerateSample("LifeVC", "life", dir
+ wxString("/demos/life"),
321 wxStringList("life.cpp", "game.cpp", "dialogs.cpp", "life.h", "game.h", "dialogs.h", 0));
323 GenerateSample("PoemVC", "wxpoem", dir
+ wxString("/demos/poem"), wxStringList("wxpoem.cpp", "wxpoem.h", 0));
325 GenerateSample("DbbrowseVC", "dbbrowse", dir
+ wxString("/demos/dbbrowse"),
326 wxStringList("dbbrowse.cpp", "browsedb.cpp", "dbgrid.cpp", "dbtree.cpp", "dlguser.cpp", "doc.cpp",
327 "pgmctrl.cpp", "tabpgwin.cpp",
328 "dbbrowse.h", "browsedb.h", "dbgrid.h", "dbtree.h", "dlguser.h", "doc.h", "pgmctrl.h", "std.h", "tabpgwin.h",
336 project
.SetIncludeDirs(wxStringList("../../../include", 0));
337 project
.SetResourceIncludeDirs(wxStringList("../../../include", 0));
338 project
.SetLibDirs(wxStringList("../../../lib", 0));
339 project
.SetDebugLibDirs(wxStringList("../../../src/Debug", "../../../src/jpeg/Debug", "../../../src/tiff/Debug", 0));
340 project
.SetReleaseLibDirs(wxStringList("../../../src/Release", "../../../src/jpeg/Release", "../../../src/tiff/Release", 0));
342 project
.SetProjectName("DialogEdVC");
343 project
.SetTargetName("dialoged");
344 project
.SetProjectPath(dir
+ wxString("/utils/dialoged/src"));
345 project
.SetSourceFiles(wxStringList("dialoged.cpp", "dlghndlr.cpp", "edlist.cpp", "edtree.cpp",
346 "reseditr.cpp", "reswrite.cpp", "symbtabl.cpp", "winstyle.cpp", "winprop.cpp",
347 "dialoged.h", "dlghndlr.h", "edlist.h", "edtree.h", "reseditr.h", "symbtabl.h", "winprop.h",
351 if (!project
.GenerateVCProject())
353 wxString
msg("Could not generate Dialog Editor project");
358 project
.SetIncludeDirs(wxStringList("../../../include", 0));
359 project
.SetResourceIncludeDirs(wxStringList("../../../include", 0));
360 project
.SetLibDirs(wxStringList("../../../lib", 0));
361 project
.SetDebugLibDirs(wxStringList("../../../src/Debug", "../../../src/jpeg/Debug", "../../../src/tiff/Debug", 0));
362 project
.SetReleaseLibDirs(wxStringList("../../../src/Release", "../../../src/jpeg/Release", "../../../src/tiff/Release", 0));
364 project
.SetProjectName("Tex2RTFVC");
365 project
.SetTargetName("tex2rtf");
366 project
.SetProjectPath(dir
+ wxString("/utils/tex2rtf/src"));
367 project
.SetSourceFiles(wxStringList("tex2rtf.cpp", "htmlutil.cpp", "readshg.cpp", "rtfutils.cpp",
368 "table.cpp", "tex2any.cpp", "texutils.cpp", "xlputils.cpp",
369 "bmputils.h", "readshg.h", "rtfutils.h", "table.h", "tex2any.h", "tex2rtf.h", "wxhlpblk.h",
372 if (!project
.GenerateVCProject())
374 wxString
msg("Could not generate Tex2RTF project");
379 project
.SetIncludeDirs(wxStringList("../../../include", 0));
380 project
.SetResourceIncludeDirs(wxStringList("../../../include", 0));
381 project
.SetLibDirs(wxStringList("../../../lib", 0));
382 project
.SetDebugLibDirs(wxStringList("../../../src/Debug", "../../../src/jpeg/Debug", "../../../src/tiff/Debug", 0));
383 project
.SetReleaseLibDirs(wxStringList("../../../src/Release", "../../../src/jpeg/Release", "../../../src/tiff/Release", 0));
385 project
.SetProjectName("HelpGenVC");
386 project
.SetTargetName("helpgen");
387 project
.SetProjectPath(dir
+ wxString("/utils/helpgen/src"));
388 project
.SetSourceFiles(wxStringList("helpgen.cpp", "cjparser.cpp", "docripper.cpp", "ifcontext.cpp",
389 "markup.cpp", "ripper_main.cpp", "scriptbinder.cpp", "sourcepainter.cpp",
391 "cjparser.h", "docripper.h", "ifcontext.h", "markup.h", "scriptbinder.h", "sourcepainter.h",
392 "srcparser.h", "wxstlac.h", "wxstllst.h", "wxstlvec.h", 0));
394 if (!project
.GenerateVCProject())
396 wxString
msg("Could not generate HelpGen project");
401 project
.SetIncludeDirs(wxStringList("../../include", 0));
402 project
.SetResourceIncludeDirs(wxStringList("../../include", 0));
403 project
.SetLibDirs(wxStringList("../../lib", 0));
404 project
.SetDebugLibDirs(wxStringList("../../src/Debug", "../../src/jpeg/Debug", "../../src/tiff/Debug", 0));
405 project
.SetReleaseLibDirs(wxStringList("../../src/Release", "../../src/jpeg/Release", "../../src/tiff/Release", 0));
407 project
.SetProjectName("ProjGenVC");
408 project
.SetTargetName("makeproj");
409 project
.SetProjectPath(dir
+ wxString("/utils/projgen"));
410 project
.SetSourceFiles(wxStringList("makeproj.cpp", "makeproj.h", 0));
412 if (!project
.GenerateVCProject())
414 wxString
msg("Could not generate ProjGen project");
419 project
.SetIncludeDirs(wxStringList("../../include", 0));
420 project
.SetResourceIncludeDirs(wxStringList("../../include", 0));
421 project
.SetLibDirs(wxStringList("../../lib", 0));
422 project
.SetDebugLibDirs(wxStringList("../../src/Debug", "../../src/jpeg/Debug", "../../src/tiff/Debug", 0));
423 project
.SetReleaseLibDirs(wxStringList("../../src/Release", "../../src/jpeg/Release", "../../src/tiff/Release", 0));
425 project
.SetProjectName("hhp2cachedVC");
426 project
.SetTargetName("hhp2cached");
427 project
.SetProjectPath(dir
+ wxString("/utils/hhp2cached"));
428 project
.SetSourceFiles(wxStringList("hhp2cached.cpp", 0));
430 if (!project
.GenerateVCProject())
432 wxString
msg("Could not generate hhp2cached project");
436 // wxTreeLayout sample
438 project
.SetIncludeDirs(wxStringList("../../../include", 0));
439 project
.SetResourceIncludeDirs(wxStringList("../../../include", 0));
440 project
.SetLibDirs(wxStringList("../../../lib", 0));
441 project
.SetDebugLibDirs(wxStringList("../../../src/Debug", "../../../src/jpeg/Debug", "../../../src/tiff/Debug", 0));
442 project
.SetReleaseLibDirs(wxStringList("../../../src/Release", "../../../src/jpeg/Release", "../../../src/tiff/Release", 0));
444 project
.SetProjectName("TreeSampleVC");
445 project
.SetTargetName("test");
446 project
.SetProjectPath(dir
+ wxString("/utils/wxtree/src"));
447 project
.SetSourceFiles(wxStringList("test.cpp", "wxtree.cpp", "test.h", "wxtree.h", 0));
449 if (!project
.GenerateVCProject())
451 wxString
msg("Could not generate wxTreeLayout project");
456 // OGLEdit. We have to do it the long way because we need to add the extra ogl.lib.
458 project
.SetIncludeDirs(wxStringList("../../../include", 0));
459 project
.SetResourceIncludeDirs(wxStringList("../../../include", 0));
460 project
.SetLibDirs(wxStringList("../../../lib", 0));
461 project
.SetDebugLibDirs(wxStringList("../../../src/Debug", "../../../src/ogl/Debug", "../../../src/jpeg/Debug", "../../../src/tiff/Debug", 0));
462 project
.SetReleaseLibDirs(wxStringList("../../../src/Release", "../../../src/ogl/Release", "../../../src/jpeg/Release", "../../../src/tiff/Release", 0));
464 project
.SetExtraLibs(wxStringList("ogl.lib", 0));
466 project
.SetProjectName("OGLEditVC");
467 project
.SetTargetName("ogledit");
468 project
.SetProjectPath(dir
+ wxString("/samples/ogl/ogledit"));
469 project
.SetSourceFiles(wxStringList("ogledit.cpp", "doc.cpp", "palette.cpp", "view.cpp",
470 "doc.h", "ogledit.h", "palette.h", "view.h",
473 if (!project
.GenerateVCProject())
475 wxString
msg("Could not generate OGLEdit project");
481 project
.SetIncludeDirs(wxStringList("../../../include", 0));
482 project
.SetResourceIncludeDirs(wxStringList("../../../include", 0));
483 project
.SetLibDirs(wxStringList("../../../lib", 0));
484 project
.SetDebugLibDirs(wxStringList("../../../src/Debug", "../../../src/ogl/Debug", "../../../src/jpeg/Debug", "../../../src/tiff/Debug", 0));
485 project
.SetReleaseLibDirs(wxStringList("../../../src/Release", "../../../src/ogl/Release", "../../../src/jpeg/Release", "../../../src/tiff/Release", 0));
487 project
.SetExtraLibs(wxStringList("ogl.lib", 0));
489 project
.SetProjectName("StudioVC");
490 project
.SetTargetName("studio");
491 project
.SetProjectPath(dir
+ wxString("/samples/ogl/studio"));
492 project
.SetSourceFiles(wxStringList("studio.cpp", "cspalette.cpp", "dialogs.cpp", "view.cpp",
493 "doc.cpp", "mainfrm.cpp", "project.cpp", "shapes.cpp", "symbols.cpp", "csprint.cpp",
494 "studio.h", "cspalette.h", "dialogs.h", "view.h",
495 "doc.h", "mainfrm.h", "project.h", "shapes.h", "symbols.h",
498 if (!project
.GenerateVCProject())
500 wxString
msg("Could not generate OGL Studio project");
505 // ----------------------------------------------------------------------------
507 // ----------------------------------------------------------------------------
510 MyFrame::MyFrame(const wxString
& title
, const wxPoint
& pos
, const wxSize
& size
)
511 : wxFrame((wxFrame
*)NULL
, -1, title
, pos
, size
)
513 // set the frame icon
514 SetIcon(wxICON(mondrian
));
517 wxMenu
*menuFile
= new wxMenu
;
519 menuFile
->Append(MakeProject_Generate
, "&Generate");
520 menuFile
->Append(MakeProject_About
, "&About...");
521 menuFile
->AppendSeparator();
522 menuFile
->Append(MakeProject_Quit
, "E&xit");
524 // now append the freshly created menu to the menu bar...
525 wxMenuBar
*menuBar
= new wxMenuBar
;
526 menuBar
->Append(menuFile
, "&File");
528 // ... and attach this menu bar to the frame
531 // create a status bar just for fun (by default with 1 pane only)
533 SetStatusText("Welcome to wxWindows!");
539 void MyFrame::OnQuit(wxCommandEvent
& WXUNUSED(event
))
541 // TRUE is to force the frame to close
545 void MyFrame::OnAbout(wxCommandEvent
& WXUNUSED(event
))
547 wxMessageBox("MakeProject: generates VC++ project files",
548 "About MakeProject", wxOK
| wxICON_INFORMATION
, this);
551 void MyFrame::OnGenerate(wxCommandEvent
& WXUNUSED(event
))
553 wxGetApp().GenerateSamples("d:/wx2/wxWindows");
556 bool MyFrame::GenerateSample(const wxString
& projectName
, const wxString
& targetName
,
557 const wxString
& path
, const wxStringList
& sourceFiles
, const wxString
& relativeRootPath
)
559 return wxGetApp().GenerateSample(projectName
, targetName
, path
, sourceFiles
, relativeRootPath
);
566 wxProject::wxProject()
570 wxProject::~wxProject()
575 bool wxProject::GenerateVCProject()
577 wxString fullProjectName
= m_path
+ wxString("/") + m_projectName
+ ".dsp";
579 ofstream
stream(fullProjectName
);
583 /////////////////////// General stuff
585 stream
<< "# Microsoft Developer Studio Project File - Name=\"" << m_projectName
<< "\" - Package Owner=<4>\n";
586 stream
<< "# Microsoft Developer Studio Generated Build File, Format Version 5.00\n";
587 stream
<< "# (Actually, generated by MakeProject, (c) Julian Smart, 1998)\n";
588 stream
<< "# ** DO NOT EDIT **\n\n";
589 stream
<< "# TARGTYPE \"Win32 (x86) Application\" 0x0101\n\n";
590 stream
<< "CFG=" << m_projectName
<< " - Win32 Debug\n";
591 stream
<< "!MESSAGE This is not a valid makefile. To build this project using NMAKE,\n";
592 stream
<< "!MESSAGE use the Export Makefile command and run\n";
593 stream
<< "!MESSAGE\n";
594 stream
<< "!MESSAGE NMAKE /f \"" << m_projectName
<< ".mak\".\n";
595 stream
<< "!MESSAGE\n";
596 stream
<< "!MESSAGE You can specify a configuration when running NMAKE\n";
597 stream
<< "!MESSAGE by defining the macro CFG on the command line. For example:\n";
598 stream
<< "!MESSAGE\n";
599 stream
<< "!MESSAGE NMAKE /f \"" << m_projectName
<< ".mak\" CFG=\"" << m_projectName
<< " - Win32 Debug\"\n";
600 stream
<< "!MESSAGE\n";
601 stream
<< "!MESSAGE Possible choices for configuration are:\n";
602 stream
<< "!MESSAGE\n";
603 stream
<< "!MESSAGE \"" << m_projectName
<< " - Win32 Release\" (based on \"Win32 (x86) Application\")\n";
604 stream
<< "!MESSAGE \"" << m_projectName
<< " - Win32 Debug\" (based on \"Win32 (x86) Application\")\n";
605 stream
<< "!MESSAGE \"" << m_projectName
<< " - Win32 Debug DLL\" (based on \"Win32 (x86) Application\")\n";
606 stream
<< "!MESSAGE \"" << m_projectName
<< " - Win32 Release DLL\" (based on \"Win32 (x86) Application\")\n";
607 stream
<< "!MESSAGE\n";
609 stream
<< "# Begin Project\n";
610 stream
<< "# PROP Scc_ProjName \"\"\n";
611 stream
<< "# PROP Scc_LocalPath \"\"\n";
612 stream
<< "CPP=cl.exe\n";
613 stream
<< "MTL=midl.exe\n";
614 stream
<< "RSC=rc.exe\n";
617 /////////////////////// Win32 Release target
619 stream
<< "!IF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Release\"\n";
621 stream
<< "# PROP BASE Use_MFC 0\n";
622 stream
<< "# PROP BASE Use_Debug_Libraries 0\n";
623 stream
<< "# PROP BASE Output_Dir \"Release\"\n";
624 stream
<< "# PROP BASE Intermediate_Dir \"Release\"\n";
625 stream
<< "# PROP BASE Target_Dir \"\"\n";
626 stream
<< "# PROP Use_MFC 0\n";
627 stream
<< "# PROP Use_Debug_Libraries 0\n";
628 stream
<< "# PROP Output_Dir \"Release\"\n";
629 stream
<< "# PROP Intermediate_Dir \"Release\"\n";
630 stream
<< "# PROP Ignore_Export_Lib 0\n";
631 stream
<< "# PROP Target_Dir \"\"\n";
632 stream
<< "# ADD BASE CPP /nologo /W3 /GX /O2 /D \"WIN32\" /D \"NDEBUG\" /D \"_WINDOWS\" /YX /FD /c\n";
633 stream
<< "# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2";
635 int n
= m_includeDirs
.Number();
637 for (i
= 0; i
< n
; i
++)
639 wxString includeDir
= m_includeDirs
[i
];
640 stream
<< " /I \"" << includeDir
<< "\"";
643 stream
<< " /D \"NDEBUG\" /D \"WIN32\" /D \"_WINDOWS\" /D \"__WINDOWS__\" /D \"__WXMSW__\" /D \"__WIN95__\" /D \"__WIN32__\" /D WINVER=0x0400 /D \"STRICT\" /FD /c\n";
644 stream
<< "# SUBTRACT CPP /YX\n";
645 stream
<< "# ADD BASE MTL /nologo /D \"NDEBUG\" /mktyplib203 /o NUL /win32\n";
646 stream
<< "# ADD MTL /nologo /D \"NDEBUG\" /mktyplib203 /o NUL /win32\n";
647 stream
<< "# ADD BASE RSC /l 0x809 /d \"NDEBUG\"\n";
648 stream
<< "# ADD RSC /l 0x809 /d \"NDEBUG\"\n";
649 stream
<< "BSC32=bscmake.exe\n";
650 stream
<< "# ADD BASE BSC32 /nologo\n";
651 stream
<< "# ADD BSC32 /nologo\n";
652 stream
<< "LINK32=link.exe\n";
653 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";
654 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 ";
655 n
= m_extraLibs
.Number();
656 for (i
= 0; i
< n
; i
++)
658 wxString lib
= m_extraLibs
[i
];
659 stream
<< lib
<< " ";
662 stream
<< "/nologo /subsystem:windows /machine:I386 /nodefaultlib:\"libc.lib,libci.lib,msvcrtd.lib\" /out:\"Release/" << m_targetName
<< ".exe\"";
664 n
= m_releaseLibDirs
.Number();
665 for (i
= 0; i
< n
; i
++)
667 wxString libDir
= m_releaseLibDirs
[i
];
668 stream
<< " /libpath:\"" << libDir
<< "\"";
670 n
= m_libDirs
.Number();
671 for (i
= 0; i
< n
; i
++)
673 wxString libDir
= m_libDirs
[i
];
674 stream
<< " /libpath:\"" << libDir
<< "\"";
679 /////////////////////// Win32 Debug target
681 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Debug\"\n";
683 stream
<< "# PROP BASE Use_MFC 0\n";
684 stream
<< "# PROP BASE Use_Debug_Libraries 1\n";
685 stream
<< "# PROP BASE Output_Dir \"Debug\"\n";
686 stream
<< "# PROP BASE Intermediate_Dir \"Debug\"\n";
687 stream
<< "# PROP BASE Target_Dir \"\"\n";
688 stream
<< "# PROP Use_MFC 0\n";
689 stream
<< "# PROP Use_Debug_Libraries 1\n";
690 stream
<< "# PROP Output_Dir \"Debug\"\n";
691 stream
<< "# PROP Intermediate_Dir \"Debug\"\n";
692 stream
<< "# PROP Ignore_Export_Lib 0\n";
693 stream
<< "# PROP Target_Dir \"\"\n";
694 stream
<< "# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D \"WIN32\" /D \"_DEBUG\" /D \"_WINDOWS\" /YX /FD /c\n";
695 stream
<< "# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od";
697 n
= m_includeDirs
.Number();
698 for (i
= 0; i
< n
; i
++)
700 wxString includeDir
= m_includeDirs
[i
];
701 stream
<< " /I \"" << includeDir
<< "\"";
704 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";
705 stream
<< "# ADD BASE MTL /nologo /D \"_DEBUG\" /mktyplib203 /o NUL /win32\n";
706 stream
<< "# ADD MTL /nologo /D \"_DEBUG\" /mktyplib203 /o NUL /win32\n";
707 stream
<< "# ADD BASE RSC /l 0x809 /d \"_DEBUG\"\n";
708 stream
<< "# ADD RSC /l 0x809 /d \"_DEBUG\"\n";
709 stream
<< "BSC32=bscmake.exe\n";
710 stream
<< "# ADD BASE BSC32 /nologo\n";
711 stream
<< "# ADD BSC32 /nologo\n";
712 stream
<< "LINK32=link.exe\n";
713 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";
714 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 ";
715 n
= m_extraLibs
.Number();
716 for (i
= 0; i
< n
; i
++)
718 wxString lib
= m_extraLibs
[i
];
719 stream
<< lib
<< " ";
721 stream
<< "/nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:\"libcd.lib,libcid.lib,msvcrt.lib\" /out:\"Debug/" << m_targetName
<< ".exe\" /pdbtype:sept";
723 n
= m_debugLibDirs
.Number();
724 for (i
= 0; i
< n
; i
++)
726 wxString libDir
= m_debugLibDirs
[i
];
727 stream
<< " /libpath:\"" << libDir
<< "\"";
729 n
= m_libDirs
.Number();
730 for (i
= 0; i
< n
; i
++)
732 wxString libDir
= m_libDirs
[i
];
733 stream
<< " /libpath:\"" << libDir
<< "\"";
737 // stream << "!ENDIF\n";
740 /////////////////////// Win32 Debug DLL target
742 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Debug DLL\"\n";
744 stream
<< "# PROP BASE Use_MFC 0\n";
745 stream
<< "# PROP BASE Use_Debug_Libraries 1\n";
746 stream
<< "# PROP BASE Output_Dir \"DebugDLL\"\n";
747 stream
<< "# PROP BASE Intermediate_Dir \"DebugDLL\"\n";
748 stream
<< "# PROP BASE Target_Dir \"\"\n";
749 stream
<< "# PROP Use_MFC 0\n";
750 stream
<< "# PROP Use_Debug_Libraries 1\n";
751 stream
<< "# PROP Output_Dir \"DebugDLL\"\n";
752 stream
<< "# PROP Intermediate_Dir \"DebugDLL\"\n";
753 stream
<< "# PROP Ignore_Export_Lib 0\n";
754 stream
<< "# PROP Target_Dir \"\"\n";
755 stream
<< "# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D \"WIN32\" /D \"_DEBUG\" /D \"_WINDOWS\" /YX /FD /c\n";
756 stream
<< "# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od";
758 n
= m_includeDirs
.Number();
759 for (i
= 0; i
< n
; i
++)
761 wxString includeDir
= m_includeDirs
[i
];
762 stream
<< " /I \"" << includeDir
<< "\"";
765 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";
766 stream
<< "# ADD BASE MTL /nologo /D \"_DEBUG\" /mktyplib203 /o NUL /win32\n";
767 stream
<< "# ADD MTL /nologo /D \"_DEBUG\" /mktyplib203 /o NUL /win32\n";
768 stream
<< "# ADD BASE RSC /l 0x809 /d \"_DEBUG\"\n";
769 stream
<< "# ADD RSC /l 0x809 /d \"_DEBUG\"\n";
770 stream
<< "BSC32=bscmake.exe\n";
771 stream
<< "# ADD BASE BSC32 /nologo\n";
772 stream
<< "# ADD BSC32 /nologo\n";
773 stream
<< "LINK32=link.exe\n";
774 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";
775 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 ";
776 n
= m_extraLibs
.Number();
777 for (i
= 0; i
< n
; i
++)
779 wxString lib
= m_extraLibs
[i
];
780 stream
<< lib
<< " ";
782 stream
<< "/nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:\"libcd.lib\" /nodefaultlib:\"libcid.lib\" /out:\"DebugDLL/" << m_targetName
<< ".exe\" /pdbtype:sept";
784 n
= m_debugLibDirs
.Number();
785 for (i
= 0; i
< n
; i
++)
787 wxString libDir
= m_debugLibDirs
[i
];
788 libDir
+= "DLL"; // Assume that we have e.g. Debug so make it DebugDLL
789 stream
<< " /libpath:\"" << libDir
<< "\"";
791 n
= m_libDirs
.Number();
792 for (i
= 0; i
< n
; i
++)
794 wxString libDir
= m_libDirs
[i
];
795 stream
<< " /libpath:\"" << libDir
<< "\"";
799 // stream << "!ENDIF\n";
802 /////////////////////// Win32 Release DLL target
804 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Release DLL\"\n";
806 stream
<< "# PROP BASE Use_MFC 0\n";
807 stream
<< "# PROP BASE Use_Debug_Libraries 0\n";
808 stream
<< "# PROP BASE Output_Dir \"ReleaseDLL\"\n";
809 stream
<< "# PROP BASE Intermediate_Dir \"ReleaseDLL\"\n";
810 stream
<< "# PROP BASE Target_Dir \"\"\n";
811 stream
<< "# PROP Use_MFC 0\n";
812 stream
<< "# PROP Use_Debug_Libraries 0\n";
813 stream
<< "# PROP Output_Dir \"ReleaseDLL\"\n";
814 stream
<< "# PROP Intermediate_Dir \"ReleaseDLL\"\n";
815 stream
<< "# PROP Ignore_Export_Lib 0\n";
816 stream
<< "# PROP Target_Dir \"\"\n";
817 stream
<< "# ADD BASE CPP /nologo /W3 /GX /O2 /D \"WIN32\" /D \"NDEBUG\" /D \"_WINDOWS\" /YX /FD /c\n";
818 stream
<< "# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2";
820 n
= m_includeDirs
.Number();
821 for (i
= 0; i
< n
; i
++)
823 wxString includeDir
= m_includeDirs
[i
];
824 stream
<< " /I \"" << includeDir
<< "\"";
827 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";
828 stream
<< "# SUBTRACT CPP /YX\n";
829 stream
<< "# ADD BASE MTL /nologo /D \"NDEBUG\" /mktyplib203 /o NUL /win32\n";
830 stream
<< "# ADD MTL /nologo /D \"NDEBUG\" /mktyplib203 /o NUL /win32\n";
831 stream
<< "# ADD BASE RSC /l 0x809 /d \"NDEBUG\"\n";
832 stream
<< "# ADD RSC /l 0x809 /d \"NDEBUG\"\n";
833 stream
<< "BSC32=bscmake.exe\n";
834 stream
<< "# ADD BASE BSC32 /nologo\n";
835 stream
<< "# ADD BSC32 /nologo\n";
836 stream
<< "LINK32=link.exe\n";
837 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";
838 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 ";
839 n
= m_extraLibs
.Number();
840 for (i
= 0; i
< n
; i
++)
842 wxString lib
= m_extraLibs
[i
];
843 stream
<< lib
<< " ";
845 stream
<< "/nologo /subsystem:windows /machine:I386 /nodefaultlib:\"libc.lib\" /nodefaultlib:\"libci.lib\" /out:\"ReleaseDLL/" << m_targetName
<< ".exe\"";
847 n
= m_releaseLibDirs
.Number();
848 for (i
= 0; i
< n
; i
++)
850 wxString libDir
= m_releaseLibDirs
[i
];
851 libDir
+= "DLL"; // Assume that we have e.g. Release so make it ReleaseDLL
852 stream
<< " /libpath:\"" << libDir
<< "\"";
854 n
= m_libDirs
.Number();
855 for (i
= 0; i
< n
; i
++)
857 wxString libDir
= m_libDirs
[i
];
858 stream
<< " /libpath:\"" << libDir
<< "\"";
862 stream
<< "!ENDIF\n";
865 /////////////////////// Source code for targets
867 stream
<< "# Begin Target\n";
869 stream
<< "# Name \"" << m_projectName
<< " - Win32 Release\"\n";
870 stream
<< "# Name \"" << m_projectName
<< " - Win32 Debug\"\n";
871 stream
<< "# Name \"" << m_projectName
<< " - Win32 Debug DLL\"\n";
872 stream
<< "# Name \"" << m_projectName
<< " - Win32 Release DLL\"\n";
875 n
= m_sourceFiles
.Number();
876 for (i
= 0; i
< n
; i
++)
878 wxString sourceFile
= m_sourceFiles
[i
];
880 stream
<< "# Begin Source File\n";
882 stream
<< "SOURCE=.\\" << sourceFile
<< "\n";
884 stream
<< "!IF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Release\"\n";
886 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Debug\"\n";
888 stream
<< "# SUBTRACT CPP /YX /Yc /Yu\n";
890 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Debug DLL\"\n";
892 stream
<< "# SUBTRACT BASE CPP /YX /Yc /Yu\n";
893 stream
<< "# SUBTRACT CPP /YX /Yc /Yu\n";
895 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Release DLL\"\n";
897 stream
<< "!ENDIF\n";
899 stream
<< "# End Source File\n";
902 // The .rc file: assume it has the target name + rc extension.
903 stream
<< "# Begin Source File\n";
905 stream
<< "SOURCE=.\\" << m_targetName
<< ".rc\n";
906 stream
<< "# ADD BASE RSC /l 0x809\n";
907 stream
<< "# ADD RSC /l 0x809";
909 n
= m_resourceIncludeDirs
.Number();
910 for (i
= 0; i
< n
; i
++)
912 wxString includeDir
= m_resourceIncludeDirs
[i
];
913 stream
<< " /i \"" << includeDir
<< "\"";
917 stream
<< "# End Source File\n";
918 stream
<< "# End Target\n";
919 stream
<< "# End Project\n";
921 // Now generate the .dsw workspace file
923 wxString fullWorkSpaceName
= m_path
+ wxString("/") + m_projectName
+ ".dsw";
925 ofstream
stream2(fullWorkSpaceName
);
929 stream2
<< "Microsoft Developer Studio Workspace File, Format Version 5.00\n";
930 stream2
<< "# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!\n";
932 stream2
<< "###############################################################################\n";
934 stream2
<< "Project: \"" << m_projectName
<< "\"=.\\" << m_projectName
<< ".dsp - Package Owner=<4>\n";
936 stream2
<< "Package=<5>\n";
940 stream2
<< "Package=<4>\n";
944 stream2
<< "###############################################################################\n";
946 stream2
<< "Global:\n";
948 stream2
<< "Package=<5>\n";
952 stream2
<< "Package=<3>\n";
956 stream2
<< "###############################################################################\n";
962 BEGIN_EVENT_TABLE(MyDialog
, wxDialog
)
963 EVT_BUTTON(wxID_EXIT
, MyDialog::OnQuit
)
964 EVT_BUTTON(ID_GENERATE_PROJECT
, MyDialog::OnGenerate
)
965 EVT_BUTTON(ID_GENERATE_SAMPLES
, MyDialog::OnGenerateSamples
)
968 // ----------------------------------------------------------------------------
970 // ----------------------------------------------------------------------------
973 MyDialog::MyDialog(const wxString
& title
, const wxPoint
& pos
, const wxSize
& size
):
976 LoadFromResource((wxWindow
*) NULL
, "project_dialog");
980 void MyDialog::OnQuit(wxCommandEvent
& event
)
982 this->EndModal(wxID_OK
);
985 void MyDialog::OnAbout(wxCommandEvent
& event
)
989 void MyDialog::OnGenerate(wxCommandEvent
& event
)
993 void MyDialog::OnGenerateSamples(wxCommandEvent
& event
)
995 char* dir
= getenv("WXWIN");
999 wxTextEntryDialog
dialog(this, "Please enter the wxWindows directory", "Text entry", dirStr
, wxOK
|wxCANCEL
);
1000 if (dialog
.ShowModal() == wxID_OK
)
1002 if (wxDirExists(dialog
.GetValue()))
1004 // wxGetApp().GenerateSample("MinimalVC", "minimal", dir + wxString("/samples/minimal"),
1005 // wxStringList("minimal.cpp", 0));
1007 wxGetApp().GenerateSamples(dialog
.GetValue());
1011 wxMessageBox("This directory doesn't exist.");