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
);
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
);
77 // any class wishing to process wxWindows events must use this macro
81 // Define a dialog: this will be our main dialog
82 class MyDialog
: public wxDialog
86 MyDialog(const wxString
& title
, const wxPoint
& pos
= wxDefaultPosition
, const wxSize
& size
= wxDefaultSize
);
88 // event handlers (these functions should _not_ be virtual)
89 void OnQuit(wxCommandEvent
& event
);
90 void OnAbout(wxCommandEvent
& event
);
91 void OnGenerate(wxCommandEvent
& event
);
92 void OnGenerateSamples(wxCommandEvent
& event
);
95 // any class wishing to process wxWindows events must use this macro
100 // ----------------------------------------------------------------------------
102 // ----------------------------------------------------------------------------
104 // IDs for the controls and the menu commands
108 MakeProject_Quit
= 1,
110 MakeProject_Generate
,
111 MakeProject_GenerateSamples
,
113 // controls start here (the numbers are, of course, arbitrary)
114 MakeProject_Text
= 1000,
117 // ----------------------------------------------------------------------------
118 // event tables and other macros for wxWindows
119 // ----------------------------------------------------------------------------
121 // the event tables connect the wxWindows events with the functions (event
122 // handlers) which process them. It can be also done at run-time, but for the
123 // simple menu events like this the static method is much simpler.
124 BEGIN_EVENT_TABLE(MyFrame
, wxFrame
)
125 EVT_MENU(MakeProject_Quit
, MyFrame::OnQuit
)
126 EVT_MENU(MakeProject_About
, MyFrame::OnAbout
)
127 EVT_MENU(MakeProject_Generate
, MyFrame::OnGenerate
)
130 // Create a new application object: this macro will allow wxWindows to create
131 // the application object during program execution (it's better than using a
132 // static object for many reasons) and also declares the accessor function
133 // wxGetApp() which will return the reference of the right type (i.e. MyApp and
137 // ============================================================================
139 // ============================================================================
141 // ----------------------------------------------------------------------------
142 // the application class
143 // ----------------------------------------------------------------------------
145 // 'Main program' equivalent: the program execution "starts" here
149 // Create the main application window
150 MyFrame
*frame
= new MyFrame("MakeProject wxWindows App",
151 wxPoint(50, 50), wxSize(450, 340));
156 wxResourceParseFile("projgenrc.wxr");
158 MyDialog
* dialog
= new MyDialog("VC++ MakeProject");
164 bool MyApp::GenerateSample(const wxString
& projectName
, const wxString
& targetName
,
165 const wxString
& path
, const wxStringList
& sourceFiles
)
170 project
.SetIncludeDirs(wxStringList("../../include", 0));
171 project
.SetResourceIncludeDirs(wxStringList("../../include", 0));
172 project
.SetLibDirs(wxStringList("../../lib", 0));
173 project
.SetDebugLibDirs(wxStringList("../../src/Debug", 0));
174 project
.SetReleaseLibDirs(wxStringList("../../src/Release", 0));
176 project
.SetProjectName(projectName
);
177 project
.SetTargetName(targetName
);
178 project
.SetProjectPath(path
);
179 project
.SetSourceFiles(sourceFiles
);
181 if (!project
.GenerateVCProject())
183 wxString
msg("Could not generate ");
192 void MyApp::GenerateSamples(const wxString
& dir
)
194 // Small bug. Because we don't distinguish between Debug/DebugDLL, Release/ReleaseDLL,
195 // we can't yet make a sample that uses other wxWindows static libraries + the wxWindows DLL library.
197 GenerateSample("BombsVC", "bombs", dir
+ wxString("/samples/bombs"),
198 wxStringList("bombs.cpp", "bombs1.cpp", "game.cpp", "bombs.h", "game.h", 0));
199 GenerateSample("CaretVC", "caret", dir
+ wxString("/samples/caret"), wxStringList("caret.cpp", 0));
200 GenerateSample("CheckLstVC", "checklst", dir
+ wxString("/samples/checklst"), wxStringList("checklst.cpp", 0));
201 GenerateSample("ConfigVC", "conftest", dir
+ wxString("/samples/config"), wxStringList("conftest.cpp", 0));
202 GenerateSample("ControlsVC", "controls", dir
+ wxString("/samples/controls"), wxStringList("controls.cpp", 0));
203 GenerateSample("DbVC", "dbtest", dir
+ wxString("/samples/db"),
204 wxStringList("dbtest.cpp", "listdb.cpp", "dbtest.h", "listdb.h", 0));
205 GenerateSample("DialogsVC", "dialogs", dir
+ wxString("/samples/dialogs"),
206 wxStringList("dialogs.cpp", "dialogs.h", 0));
207 GenerateSample("DndVC", "dnd", dir
+ wxString("/samples/dnd"), wxStringList("dnd.cpp", 0));
208 GenerateSample("DocViewVC", "docview", dir
+ wxString("/samples/docview"),
209 wxStringList("docview.cpp", "doc.cpp", "view.cpp", "docview.h", "doc.h", "view.h", 0));
210 GenerateSample("DocVwMDIVC", "docview", dir
+ wxString("/samples/docvwmdi"),
211 wxStringList("docview.cpp", "doc.cpp", "view.cpp", "docview.h", "doc.h", "view.h", 0));
212 GenerateSample("DynamicVC", "dynamic", dir
+ wxString("/samples/dynamic"), wxStringList("dynamic.cpp", 0));
213 GenerateSample("FortyVC", "forty", dir
+ wxString("/samples/forty"),
214 wxStringList("forty.cpp", "canvas.cpp", "card.cpp", "game.cpp", "pile.cpp", "playerdg.cpp", "scoredg.cpp", "scorefil.cpp",
215 "canvas.h", "forty.h", "card.h", "game.h", "pile.h", "playerdg.h", "scoredg.h", "scorefil.h",
217 GenerateSample("FractalVC", "fractal", dir
+ wxString("/samples/fractal"), wxStringList("fractal.cpp", 0));
218 GenerateSample("GridVC", "test", dir
+ wxString("/samples/grid"), wxStringList("test.cpp", 0));
219 GenerateSample("NewGridVC", "griddemo", dir
+ wxString("/samples/newgrid"), wxStringList("griddemo.cpp", 0));
220 GenerateSample("HelpVC", "demo", dir
+ wxString("/samples/help"), wxStringList("demo.cpp", 0));
223 GenerateSample("AboutVC", "about", dir
+ wxString("/samples/html/about"), wxStringList("about.cpp", 0));
224 GenerateSample("HelpVC", "help", dir
+ wxString("/samples/html/help"), wxStringList("help.cpp", 0));
225 GenerateSample("PrintingVC", "printing", dir
+ wxString("/samples/html/printing"), wxStringList("printing.cpp", 0));
226 GenerateSample("TestVC", "test", dir
+ wxString("/samples/html/test"), wxStringList("test.cpp", 0));
227 GenerateSample("VirtualVC", "virtual", dir
+ wxString("/samples/html/virtual"), wxStringList("virtual.cpp", 0));
228 GenerateSample("WidgetVC", "widget", dir
+ wxString("/samples/html/widget"), wxStringList("widget.cpp", 0));
229 GenerateSample("ZipVC", "zip", dir
+ wxString("/samples/html/zip"), wxStringList("zip.cpp", 0));
230 GenerateSample("HelpViewVC", "helpview", dir
+ wxString("/samples/html/helpview"), wxStringList("helpview.cpp", 0));
232 GenerateSample("ImageVC", "image", dir
+ wxString("/samples/image"), wxStringList("image.cpp", 0));
233 GenerateSample("InternatVC", "internat", dir
+ wxString("/samples/internat"), wxStringList("internat.cpp", 0));
234 GenerateSample("JoytestVC", "joytest", dir
+ wxString("/samples/joytest"), wxStringList("joytest.cpp", "joytest.h", 0));
235 GenerateSample("LayoutVC", "layout", dir
+ wxString("/samples/layout"), wxStringList("layout.cpp", "layout.h", 0));
236 GenerateSample("ListctrlVC", "listtest", dir
+ wxString("/samples/listctrl"), wxStringList("listtest.cpp", "listtest.h", 0));
237 GenerateSample("MdiVC", "mdi", dir
+ wxString("/samples/mdi"), wxStringList("mdi.cpp", "mdi.h", 0));
238 GenerateSample("MemcheckVC", "memcheck", dir
+ wxString("/samples/memcheck"), wxStringList("memcheck.cpp", 0));
239 // Note: MFC sample will be different.
240 GenerateSample("MfcVC", "mfc", dir
+ wxString("/samples/mfc"), wxStringList("mfctest.cpp", "mfctest.h", 0));
241 GenerateSample("MiniframVC", "test", dir
+ wxString("/samples/minifram"), wxStringList("test.cpp", "test.h", 0));
242 GenerateSample("MinimalVC", "minimal", dir
+ wxString("/samples/minimal"), wxStringList("minimal.cpp", 0));
243 GenerateSample("NativdlgVC", "nativdlg", dir
+ wxString("/samples/nativdlg"), wxStringList("nativdlg.cpp", "nativdlg.h", "resource.h", 0));
244 GenerateSample("NettestVC", "nettest", dir
+ wxString("/samples/nettest"), wxStringList("nettest.cpp", 0));
245 GenerateSample("NotebookVC", "test", dir
+ wxString("/samples/notebook"), wxStringList("test.cpp", "test.h", 0));
246 GenerateSample("OleautoVC", "oleauto", dir
+ wxString("/samples/oleauto"), wxStringList("oleauto.cpp", 0));
247 GenerateSample("OwnerdrwVC", "ownerdrw", dir
+ wxString("/samples/ownerdrw"), wxStringList("ownerdrw.cpp", 0));
248 GenerateSample("PngVC", "pngdemo", dir
+ wxString("/samples/png"), wxStringList("pngdemo.cpp", "pngdemo.h", 0));
249 GenerateSample("PrintingVC", "printing", dir
+ wxString("/samples/printing"), wxStringList("printing.cpp", "printing.h", 0));
250 GenerateSample("ProplistVC", "test", dir
+ wxString("/samples/proplist"), wxStringList("test.cpp", "test.h", 0));
251 GenerateSample("RegtestVC", "regtest", dir
+ wxString("/samples/regtest"), wxStringList("regtest.cpp", 0));
252 GenerateSample("ResourceVC", "resource", dir
+ wxString("/samples/resource"), wxStringList("resource.cpp", "resource.h", 0));
253 GenerateSample("RichEditVC", "wxLayout", dir
+ wxString("/samples/richedit"), wxStringList("wxLayout.cpp",
254 "kbList.cpp", "wxllist.cpp", "wxlparser.cpp", "wxlwindow.cpp", 0));
255 GenerateSample("SashtestVC", "sashtest", dir
+ wxString("/samples/sashtest"), wxStringList("sashtest.cpp", "sashtest.h", 0));
256 GenerateSample("ScrollVC", "scroll", dir
+ wxString("/samples/scroll"), wxStringList("scroll.cpp", 0));
257 GenerateSample("SplitterVC", "test", dir
+ wxString("/samples/splitter"), wxStringList("test.cpp", 0));
258 GenerateSample("TabVC", "test", dir
+ wxString("/samples/tab"), wxStringList("test.cpp", "test.h", 0));
259 GenerateSample("TaskbarVC", "tbtest", dir
+ wxString("/samples/taskbar"), wxStringList("tbtest.cpp", "tbtest.h", 0));
260 GenerateSample("TextVC", "text", dir
+ wxString("/samples/text"), wxStringList("text.cpp", 0));
261 GenerateSample("ThreadVC", "test", dir
+ wxString("/samples/thread"), wxStringList("test.cpp", 0));
262 GenerateSample("ToolbarVC", "test", dir
+ wxString("/samples/toolbar"), wxStringList("test.cpp", "test.h", 0));
263 GenerateSample("TreectrlVC", "treetest", dir
+ wxString("/samples/treectrl"), wxStringList("treetest.cpp", "treetest.h", 0));
264 GenerateSample("TypetestVC", "typetest", dir
+ wxString("/samples/typetest"), wxStringList("typetest.cpp", "typetest.h", 0));
265 GenerateSample("ValidateVC", "validate", dir
+ wxString("/samples/validate"), wxStringList("validate.cpp", "validate.h", 0));
266 GenerateSample("ClientVC", "client", dir
+ wxString("/samples/wxsocket"), wxStringList("client.cpp", 0));
267 GenerateSample("ServerVC", "server", dir
+ wxString("/samples/wxsocket"), wxStringList("server.cpp", 0));
268 GenerateSample("PoemVC", "wxpoem", dir
+ wxString("/samples/wxpoem"), wxStringList("wxpoem.cpp", "wxpoem.h", 0));
269 GenerateSample("ClientVC", "client", dir
+ wxString("/samples/dde"), wxStringList("client.cpp", "client.h", "ddesetup.h", 0));
270 GenerateSample("ServerVC", "server", dir
+ wxString("/samples/dde"), wxStringList("server.cpp", "server.h", "ddesetup.h", 0));
271 GenerateSample("CaretVC", "caret", dir
+ wxString("/samples/caret"), wxStringList("caret.cpp", 0));
272 GenerateSample("DrawingVC", "drawing", dir
+ wxString("/samples/drawing"), wxStringList("drawing.cpp", 0));
273 GenerateSample("ScrollVC", "scroll", dir
+ wxString("/samples/scroll"), wxStringList("scroll.cpp", 0));
274 GenerateSample("WizardVC", "wizard", dir
+ wxString("/samples/wizard"), wxStringList("wiztest.cpp", 0));
281 project
.SetIncludeDirs(wxStringList("../../../include", 0));
282 project
.SetResourceIncludeDirs(wxStringList("../../../include", 0));
283 project
.SetLibDirs(wxStringList("../../../lib", 0));
284 project
.SetDebugLibDirs(wxStringList("../../../src/Debug", 0));
285 project
.SetReleaseLibDirs(wxStringList("../../../src/Release", 0));
287 project
.SetProjectName("DialogEdVC");
288 project
.SetTargetName("dialoged");
289 project
.SetProjectPath(dir
+ wxString("/utils/dialoged/src"));
290 project
.SetSourceFiles(wxStringList("dialoged.cpp", "dlghndlr.cpp", "edlist.cpp", "edtree.cpp",
291 "reseditr.cpp", "reswrite.cpp", "symbtabl.cpp", "winstyle.cpp", "winprop.cpp",
292 "dialoged.h", "dlghndlr.h", "edlist.h", "edtree.h", "reseditr.h", "symbtabl.h", "winprop.h",
296 if (!project
.GenerateVCProject())
298 wxString
msg("Could not generate Dialog Editor project");
303 project
.SetIncludeDirs(wxStringList("../../../include", 0));
304 project
.SetResourceIncludeDirs(wxStringList("../../../include", 0));
305 project
.SetLibDirs(wxStringList("../../../lib", 0));
306 project
.SetDebugLibDirs(wxStringList("../../../src/Debug", 0));
307 project
.SetReleaseLibDirs(wxStringList("../../../src/Release", 0));
309 project
.SetProjectName("Tex2RTFVC");
310 project
.SetTargetName("tex2rtf");
311 project
.SetProjectPath(dir
+ wxString("/utils/tex2rtf/src"));
312 project
.SetSourceFiles(wxStringList("tex2rtf.cpp", "htmlutil.cpp", "readshg.cpp", "rtfutils.cpp",
313 "table.cpp", "tex2any.cpp", "texutils.cpp", "xlputils.cpp",
314 "bmputils.h", "readshg.h", "rtfutils.h", "table.h", "tex2any.h", "tex2rtf.h", "wxhlpblk.h",
317 if (!project
.GenerateVCProject())
319 wxString
msg("Could not generate Tex2RTF project");
324 project
.SetIncludeDirs(wxStringList("../../../include", 0));
325 project
.SetResourceIncludeDirs(wxStringList("../../../include", 0));
326 project
.SetLibDirs(wxStringList("../../../lib", 0));
327 project
.SetDebugLibDirs(wxStringList("../../../src/Debug", 0));
328 project
.SetReleaseLibDirs(wxStringList("../../../src/Release", 0));
330 project
.SetProjectName("HelpGenVC");
331 project
.SetTargetName("helpgen");
332 project
.SetProjectPath(dir
+ wxString("/utils/helpgen/src"));
333 project
.SetSourceFiles(wxStringList("helpgen.cpp", "cjparser.cpp", "docripper.cpp", "ifcontext.cpp",
334 "markup.cpp", "ripper_main.cpp", "scriptbinder.cpp", "sourcepainter.cpp",
336 "cjparser.h", "docripper.h", "ifcontext.h", "markup.h", "scriptbinder.h", "sourcepainter.h",
337 "srcparser.h", "wxstlac.h", "wxstllst.h", "wxstlvec.h", 0));
339 if (!project
.GenerateVCProject())
341 wxString
msg("Could not generate HelpGen project");
345 // wxTreeLayout sample
347 project
.SetIncludeDirs(wxStringList("../../../include", 0));
348 project
.SetResourceIncludeDirs(wxStringList("../../../include", 0));
349 project
.SetLibDirs(wxStringList("../../../lib", 0));
350 project
.SetDebugLibDirs(wxStringList("../../../src/Debug", 0));
351 project
.SetReleaseLibDirs(wxStringList("../../../src/Release", 0));
353 project
.SetProjectName("TreeSampleVC");
354 project
.SetTargetName("test");
355 project
.SetProjectPath(dir
+ wxString("/utils/wxtree/src"));
356 project
.SetSourceFiles(wxStringList("test.cpp", "wxtree.cpp", "test.h", "wxtree.h", 0));
358 if (!project
.GenerateVCProject())
360 wxString
msg("Could not generate wxTreeLayout project");
366 project
.SetIncludeDirs(wxStringList("../../../../include", "../../src", 0));
367 project
.SetResourceIncludeDirs(wxStringList("../../../../include", 0));
368 project
.SetLibDirs(wxStringList("../../../../lib", 0));
369 project
.SetDebugLibDirs(wxStringList("../../../../src/Debug", "../../src/Debug", 0));
370 project
.SetReleaseLibDirs(wxStringList("../../../../src/Release", "../../src/Release", 0));
371 project
.SetExtraLibs(wxStringList("ogl.lib", 0));
373 project
.SetProjectName("OGLEditVC");
374 project
.SetTargetName("ogledit");
375 project
.SetProjectPath(dir
+ wxString("/utils/ogl/samples/ogledit"));
376 project
.SetSourceFiles(wxStringList("ogledit.cpp", "doc.cpp", "palette.cpp", "view.cpp",
377 "doc.h", "ogledit.h", "palette.h", "view.h",
380 if (!project
.GenerateVCProject())
382 wxString
msg("Could not generate OGLEdit project");
388 project
.SetIncludeDirs(wxStringList("../../../../include", "../../src", 0));
389 project
.SetResourceIncludeDirs(wxStringList("../../../../include", 0));
390 project
.SetLibDirs(wxStringList("../../../../lib", 0));
391 project
.SetDebugLibDirs(wxStringList("../../../../src/Debug", "../../src/Debug", 0));
392 project
.SetReleaseLibDirs(wxStringList("../../../../src/Release", "../../src/Release", 0));
393 project
.SetExtraLibs(wxStringList("ogl.lib", 0));
395 project
.SetProjectName("StudioVC");
396 project
.SetTargetName("studio");
397 project
.SetProjectPath(dir
+ wxString("/utils/ogl/samples/studio"));
398 project
.SetSourceFiles(wxStringList("studio.cpp", "cspalette.cpp", "dialogs.cpp", "view.cpp",
399 "doc.cpp", "mainfrm.cpp", "project.cpp", "shapes.cpp", "symbols.cpp", "csprint.cpp",
400 "studio.h", "cspalette.h", "dialogs.h", "view.h",
401 "doc.h", "mainfrm.h", "project.h", "shapes.h", "symbols.h",
404 if (!project
.GenerateVCProject())
406 wxString
msg("Could not generate OGL Studio project");
410 // GLCanvas cube sample
412 project
.SetIncludeDirs(wxStringList("../../../../include", "../../win", 0));
413 project
.SetResourceIncludeDirs(wxStringList("../../../../include", 0));
414 project
.SetLibDirs(wxStringList("../../../../lib", 0));
415 project
.SetDebugLibDirs(wxStringList("../../../../src/Debug", "../../win/Debug", 0));
416 project
.SetReleaseLibDirs(wxStringList("../../../../src/Release", "../../win/Release", 0));
417 project
.SetExtraLibs(wxStringList("glcanvas.lib", "opengl32.lib", "glu32.lib", 0));
419 project
.SetProjectName("CubeVC");
420 project
.SetTargetName("cube");
421 project
.SetProjectPath(dir
+ wxString("/utils/glcanvas/samples/cube"));
422 project
.SetSourceFiles(wxStringList("cube.cpp", "cube.h",
425 if (!project
.GenerateVCProject())
427 wxString
msg("Could not generate GLCanvas Cube project");
431 // GLCanvas isosurf sample
433 project
.SetIncludeDirs(wxStringList("../../../../include", "../../win", 0));
434 project
.SetResourceIncludeDirs(wxStringList("../../../../include", 0));
435 project
.SetLibDirs(wxStringList("../../../../lib", 0));
436 project
.SetDebugLibDirs(wxStringList("../../../../src/Debug", "../../win/Debug", 0));
437 project
.SetReleaseLibDirs(wxStringList("../../../../src/Release", "../../win/Release", 0));
438 project
.SetExtraLibs(wxStringList("glcanvas.lib", "opengl32.lib", "glu32.lib", 0));
440 project
.SetProjectName("IsoSurfVC");
441 project
.SetTargetName("isosurf");
442 project
.SetProjectPath(dir
+ wxString("/utils/glcanvas/samples/isosurf"));
443 project
.SetSourceFiles(wxStringList("isosurf.cpp", "isosurf.h",
446 if (!project
.GenerateVCProject())
448 wxString
msg("Could not generate GLCanvas IsoSurf project");
452 // GLCanvas penguin sample
454 project
.SetIncludeDirs(wxStringList("../../../../include", "../../win", 0));
455 project
.SetResourceIncludeDirs(wxStringList("../../../../include", 0));
456 project
.SetLibDirs(wxStringList("../../../../lib", 0));
457 project
.SetDebugLibDirs(wxStringList("../../../../src/Debug", "../../win/Debug", 0));
458 project
.SetReleaseLibDirs(wxStringList("../../../../src/Release", "../../win/Release", 0));
459 project
.SetExtraLibs(wxStringList("glcanvas.lib", "opengl32.lib", "glu32.lib", 0));
461 project
.SetProjectName("PenguinVC");
462 project
.SetTargetName("penguin");
463 project
.SetProjectPath(dir
+ wxString("/utils/glcanvas/samples/penguin"));
464 project
.SetSourceFiles(wxStringList("penguin.cpp", "penguin.h",
466 "trackball.c", "trackball.h",
469 if (!project
.GenerateVCProject())
471 wxString
msg("Could not generate GLCanvas Penguin project");
476 // ----------------------------------------------------------------------------
478 // ----------------------------------------------------------------------------
481 MyFrame::MyFrame(const wxString
& title
, const wxPoint
& pos
, const wxSize
& size
)
482 : wxFrame((wxFrame
*)NULL
, -1, title
, pos
, size
)
484 // set the frame icon
485 SetIcon(wxICON(mondrian
));
488 wxMenu
*menuFile
= new wxMenu
;
490 menuFile
->Append(MakeProject_Generate
, "&Generate");
491 menuFile
->Append(MakeProject_About
, "&About...");
492 menuFile
->AppendSeparator();
493 menuFile
->Append(MakeProject_Quit
, "E&xit");
495 // now append the freshly created menu to the menu bar...
496 wxMenuBar
*menuBar
= new wxMenuBar
;
497 menuBar
->Append(menuFile
, "&File");
499 // ... and attach this menu bar to the frame
502 // create a status bar just for fun (by default with 1 pane only)
504 SetStatusText("Welcome to wxWindows!");
510 void MyFrame::OnQuit(wxCommandEvent
& WXUNUSED(event
))
512 // TRUE is to force the frame to close
516 void MyFrame::OnAbout(wxCommandEvent
& WXUNUSED(event
))
518 wxMessageBox("MakeProject: generates VC++ project files",
519 "About MakeProject", wxOK
| wxICON_INFORMATION
, this);
522 void MyFrame::OnGenerate(wxCommandEvent
& WXUNUSED(event
))
524 wxGetApp().GenerateSamples("d:/wx2/wxWindows");
527 bool MyFrame::GenerateSample(const wxString
& projectName
, const wxString
& targetName
,
528 const wxString
& path
, const wxStringList
& sourceFiles
)
530 return wxGetApp().GenerateSample(projectName
, targetName
, path
, sourceFiles
);
537 wxProject::wxProject()
541 wxProject::~wxProject()
546 bool wxProject::GenerateVCProject()
548 wxString fullProjectName
= m_path
+ wxString("/") + m_projectName
+ ".dsp";
550 ofstream
stream(fullProjectName
);
554 /////////////////////// General stuff
556 stream
<< "# Microsoft Developer Studio Project File - Name=\"" << m_projectName
<< "\" - Package Owner=<4>\n";
557 stream
<< "# Microsoft Developer Studio Generated Build File, Format Version 5.00\n";
558 stream
<< "# (Actually, generated by MakeProject, (c) Julian Smart, 1998)\n";
559 stream
<< "# ** DO NOT EDIT **\n\n";
560 stream
<< "# TARGTYPE \"Win32 (x86) Application\" 0x0101\n\n";
561 stream
<< "CFG=" << m_projectName
<< " - Win32 Debug\n";
562 stream
<< "!MESSAGE This is not a valid makefile. To build this project using NMAKE,\n";
563 stream
<< "!MESSAGE use the Export Makefile command and run\n";
564 stream
<< "!MESSAGE\n";
565 stream
<< "!MESSAGE NMAKE /f \"" << m_projectName
<< ".mak\".\n";
566 stream
<< "!MESSAGE\n";
567 stream
<< "!MESSAGE You can specify a configuration when running NMAKE\n";
568 stream
<< "!MESSAGE by defining the macro CFG on the command line. For example:\n";
569 stream
<< "!MESSAGE\n";
570 stream
<< "!MESSAGE NMAKE /f \"" << m_projectName
<< ".mak\" CFG=\"" << m_projectName
<< " - Win32 Debug\"\n";
571 stream
<< "!MESSAGE\n";
572 stream
<< "!MESSAGE Possible choices for configuration are:\n";
573 stream
<< "!MESSAGE\n";
574 stream
<< "!MESSAGE \"" << m_projectName
<< " - Win32 Release\" (based on \"Win32 (x86) Application\")\n";
575 stream
<< "!MESSAGE \"" << m_projectName
<< " - Win32 Debug\" (based on \"Win32 (x86) Application\")\n";
576 stream
<< "!MESSAGE \"" << m_projectName
<< " - Win32 Debug DLL\" (based on \"Win32 (x86) Application\")\n";
577 stream
<< "!MESSAGE \"" << m_projectName
<< " - Win32 Release DLL\" (based on \"Win32 (x86) Application\")\n";
578 stream
<< "!MESSAGE\n";
580 stream
<< "# Begin Project\n";
581 stream
<< "# PROP Scc_ProjName \"\"\n";
582 stream
<< "# PROP Scc_LocalPath \"\"\n";
583 stream
<< "CPP=cl.exe\n";
584 stream
<< "MTL=midl.exe\n";
585 stream
<< "RSC=rc.exe\n";
588 /////////////////////// Win32 Release target
590 stream
<< "!IF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Release\"\n";
592 stream
<< "# PROP BASE Use_MFC 0\n";
593 stream
<< "# PROP BASE Use_Debug_Libraries 0\n";
594 stream
<< "# PROP BASE Output_Dir \"Release\"\n";
595 stream
<< "# PROP BASE Intermediate_Dir \"Release\"\n";
596 stream
<< "# PROP BASE Target_Dir \"\"\n";
597 stream
<< "# PROP Use_MFC 0\n";
598 stream
<< "# PROP Use_Debug_Libraries 0\n";
599 stream
<< "# PROP Output_Dir \"Release\"\n";
600 stream
<< "# PROP Intermediate_Dir \"Release\"\n";
601 stream
<< "# PROP Ignore_Export_Lib 0\n";
602 stream
<< "# PROP Target_Dir \"\"\n";
603 stream
<< "# ADD BASE CPP /nologo /W3 /GX /O2 /D \"WIN32\" /D \"NDEBUG\" /D \"_WINDOWS\" /YX /FD /c\n";
604 stream
<< "# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2";
606 int n
= m_includeDirs
.Number();
608 for (i
= 0; i
< n
; i
++)
610 wxString includeDir
= m_includeDirs
[i
];
611 stream
<< " /I \"" << includeDir
<< "\"";
614 stream
<< " /D \"NDEBUG\" /D \"WIN32\" /D \"_WINDOWS\" /D \"__WINDOWS__\" /D \"__WXMSW__\" /D \"__WIN95__\" /D \"__WIN32__\" /D WINVER=0x0400 /D \"STRICT\" /FD /c\n";
615 stream
<< "# SUBTRACT CPP /YX\n";
616 stream
<< "# ADD BASE MTL /nologo /D \"NDEBUG\" /mktyplib203 /o NUL /win32\n";
617 stream
<< "# ADD MTL /nologo /D \"NDEBUG\" /mktyplib203 /o NUL /win32\n";
618 stream
<< "# ADD BASE RSC /l 0x809 /d \"NDEBUG\"\n";
619 stream
<< "# ADD RSC /l 0x809 /d \"NDEBUG\"\n";
620 stream
<< "BSC32=bscmake.exe\n";
621 stream
<< "# ADD BASE BSC32 /nologo\n";
622 stream
<< "# ADD BSC32 /nologo\n";
623 stream
<< "LINK32=link.exe\n";
624 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 /nologo /subsystem:windows /machine:I386\n";
625 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 wxvc.lib ";
626 n
= m_extraLibs
.Number();
627 for (i
= 0; i
< n
; i
++)
629 wxString lib
= m_extraLibs
[i
];
630 stream
<< lib
<< " ";
633 stream
<< "/nologo /subsystem:windows /machine:I386 /nodefaultlib:\"libc.lib\" /nodefaultlib:\"libci.lib\" /out:\"Release/" << m_targetName
<< ".exe\"";
635 n
= m_releaseLibDirs
.Number();
636 for (i
= 0; i
< n
; i
++)
638 wxString libDir
= m_releaseLibDirs
[i
];
639 stream
<< " /libpath:\"" << libDir
<< "\"";
641 n
= m_libDirs
.Number();
642 for (i
= 0; i
< n
; i
++)
644 wxString libDir
= m_libDirs
[i
];
645 stream
<< " /libpath:\"" << libDir
<< "\"";
650 /////////////////////// Win32 Debug target
652 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Debug\"\n";
654 stream
<< "# PROP BASE Use_MFC 0\n";
655 stream
<< "# PROP BASE Use_Debug_Libraries 1\n";
656 stream
<< "# PROP BASE Output_Dir \"Debug\"\n";
657 stream
<< "# PROP BASE Intermediate_Dir \"Debug\"\n";
658 stream
<< "# PROP BASE Target_Dir \"\"\n";
659 stream
<< "# PROP Use_MFC 0\n";
660 stream
<< "# PROP Use_Debug_Libraries 1\n";
661 stream
<< "# PROP Output_Dir \"Debug\"\n";
662 stream
<< "# PROP Intermediate_Dir \"Debug\"\n";
663 stream
<< "# PROP Ignore_Export_Lib 0\n";
664 stream
<< "# PROP Target_Dir \"\"\n";
665 stream
<< "# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D \"WIN32\" /D \"_DEBUG\" /D \"_WINDOWS\" /YX /FD /c\n";
666 stream
<< "# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od";
668 n
= m_includeDirs
.Number();
669 for (i
= 0; i
< n
; i
++)
671 wxString includeDir
= m_includeDirs
[i
];
672 stream
<< " /I \"" << includeDir
<< "\"";
675 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";
676 stream
<< "# ADD BASE MTL /nologo /D \"_DEBUG\" /mktyplib203 /o NUL /win32\n";
677 stream
<< "# ADD MTL /nologo /D \"_DEBUG\" /mktyplib203 /o NUL /win32\n";
678 stream
<< "# ADD BASE RSC /l 0x809 /d \"_DEBUG\"\n";
679 stream
<< "# ADD RSC /l 0x809 /d \"_DEBUG\"\n";
680 stream
<< "BSC32=bscmake.exe\n";
681 stream
<< "# ADD BASE BSC32 /nologo\n";
682 stream
<< "# ADD BSC32 /nologo\n";
683 stream
<< "LINK32=link.exe\n";
684 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 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept\n";
685 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 wxvc.lib ";
686 n
= m_extraLibs
.Number();
687 for (i
= 0; i
< n
; i
++)
689 wxString lib
= m_extraLibs
[i
];
690 stream
<< lib
<< " ";
692 stream
<< "/nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:\"libcd.lib,libcid.lib,msvcrt.lib\" /out:\"Debug/" << m_targetName
<< ".exe\" /pdbtype:sept";
694 n
= m_debugLibDirs
.Number();
695 for (i
= 0; i
< n
; i
++)
697 wxString libDir
= m_debugLibDirs
[i
];
698 stream
<< " /libpath:\"" << libDir
<< "\"";
700 n
= m_libDirs
.Number();
701 for (i
= 0; i
< n
; i
++)
703 wxString libDir
= m_libDirs
[i
];
704 stream
<< " /libpath:\"" << libDir
<< "\"";
708 // stream << "!ENDIF\n";
711 /////////////////////// Win32 Debug DLL target
713 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Debug DLL\"\n";
715 stream
<< "# PROP BASE Use_MFC 0\n";
716 stream
<< "# PROP BASE Use_Debug_Libraries 1\n";
717 stream
<< "# PROP BASE Output_Dir \"DebugDLL\"\n";
718 stream
<< "# PROP BASE Intermediate_Dir \"DebugDLL\"\n";
719 stream
<< "# PROP BASE Target_Dir \"\"\n";
720 stream
<< "# PROP Use_MFC 0\n";
721 stream
<< "# PROP Use_Debug_Libraries 1\n";
722 stream
<< "# PROP Output_Dir \"DebugDLL\"\n";
723 stream
<< "# PROP Intermediate_Dir \"DebugDLL\"\n";
724 stream
<< "# PROP Ignore_Export_Lib 0\n";
725 stream
<< "# PROP Target_Dir \"\"\n";
726 stream
<< "# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D \"WIN32\" /D \"_DEBUG\" /D \"_WINDOWS\" /YX /FD /c\n";
727 stream
<< "# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od";
729 n
= m_includeDirs
.Number();
730 for (i
= 0; i
< n
; i
++)
732 wxString includeDir
= m_includeDirs
[i
];
733 stream
<< " /I \"" << includeDir
<< "\"";
736 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";
737 stream
<< "# ADD BASE MTL /nologo /D \"_DEBUG\" /mktyplib203 /o NUL /win32\n";
738 stream
<< "# ADD MTL /nologo /D \"_DEBUG\" /mktyplib203 /o NUL /win32\n";
739 stream
<< "# ADD BASE RSC /l 0x809 /d \"_DEBUG\"\n";
740 stream
<< "# ADD RSC /l 0x809 /d \"_DEBUG\"\n";
741 stream
<< "BSC32=bscmake.exe\n";
742 stream
<< "# ADD BASE BSC32 /nologo\n";
743 stream
<< "# ADD BSC32 /nologo\n";
744 stream
<< "LINK32=link.exe\n";
745 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 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept\n";
746 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 wxvc.lib ";
747 n
= m_extraLibs
.Number();
748 for (i
= 0; i
< n
; i
++)
750 wxString lib
= m_extraLibs
[i
];
751 stream
<< lib
<< " ";
753 stream
<< "/nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:\"libcd.lib\" /nodefaultlib:\"libcid.lib\" /out:\"DebugDLL/" << m_targetName
<< ".exe\" /pdbtype:sept";
755 n
= m_debugLibDirs
.Number();
756 for (i
= 0; i
< n
; i
++)
758 wxString libDir
= m_debugLibDirs
[i
];
759 libDir
+= "DLL"; // Assume that we have e.g. Debug so make it DebugDLL
760 stream
<< " /libpath:\"" << libDir
<< "\"";
762 n
= m_libDirs
.Number();
763 for (i
= 0; i
< n
; i
++)
765 wxString libDir
= m_libDirs
[i
];
766 stream
<< " /libpath:\"" << libDir
<< "\"";
770 // stream << "!ENDIF\n";
773 /////////////////////// Win32 Release DLL target
775 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Release DLL\"\n";
777 stream
<< "# PROP BASE Use_MFC 0\n";
778 stream
<< "# PROP BASE Use_Debug_Libraries 0\n";
779 stream
<< "# PROP BASE Output_Dir \"ReleaseDLL\"\n";
780 stream
<< "# PROP BASE Intermediate_Dir \"ReleaseDLL\"\n";
781 stream
<< "# PROP BASE Target_Dir \"\"\n";
782 stream
<< "# PROP Use_MFC 0\n";
783 stream
<< "# PROP Use_Debug_Libraries 0\n";
784 stream
<< "# PROP Output_Dir \"ReleaseDLL\"\n";
785 stream
<< "# PROP Intermediate_Dir \"ReleaseDLL\"\n";
786 stream
<< "# PROP Ignore_Export_Lib 0\n";
787 stream
<< "# PROP Target_Dir \"\"\n";
788 stream
<< "# ADD BASE CPP /nologo /W3 /GX /O2 /D \"WIN32\" /D \"NDEBUG\" /D \"_WINDOWS\" /YX /FD /c\n";
789 stream
<< "# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2";
791 n
= m_includeDirs
.Number();
792 for (i
= 0; i
< n
; i
++)
794 wxString includeDir
= m_includeDirs
[i
];
795 stream
<< " /I \"" << includeDir
<< "\"";
798 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";
799 stream
<< "# SUBTRACT CPP /YX\n";
800 stream
<< "# ADD BASE MTL /nologo /D \"NDEBUG\" /mktyplib203 /o NUL /win32\n";
801 stream
<< "# ADD MTL /nologo /D \"NDEBUG\" /mktyplib203 /o NUL /win32\n";
802 stream
<< "# ADD BASE RSC /l 0x809 /d \"NDEBUG\"\n";
803 stream
<< "# ADD RSC /l 0x809 /d \"NDEBUG\"\n";
804 stream
<< "BSC32=bscmake.exe\n";
805 stream
<< "# ADD BASE BSC32 /nologo\n";
806 stream
<< "# ADD BSC32 /nologo\n";
807 stream
<< "LINK32=link.exe\n";
808 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 /nologo /subsystem:windows /machine:I386\n";
809 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 wxvc.lib ";
810 n
= m_extraLibs
.Number();
811 for (i
= 0; i
< n
; i
++)
813 wxString lib
= m_extraLibs
[i
];
814 stream
<< lib
<< " ";
816 stream
<< "/nologo /subsystem:windows /machine:I386 /nodefaultlib:\"libc.lib\" /nodefaultlib:\"libci.lib\" /out:\"ReleaseDLL/" << m_targetName
<< ".exe\"";
818 n
= m_releaseLibDirs
.Number();
819 for (i
= 0; i
< n
; i
++)
821 wxString libDir
= m_releaseLibDirs
[i
];
822 libDir
+= "DLL"; // Assume that we have e.g. Release so make it ReleaseDLL
823 stream
<< " /libpath:\"" << libDir
<< "\"";
825 n
= m_libDirs
.Number();
826 for (i
= 0; i
< n
; i
++)
828 wxString libDir
= m_libDirs
[i
];
829 stream
<< " /libpath:\"" << libDir
<< "\"";
833 stream
<< "!ENDIF\n";
836 /////////////////////// Source code for targets
838 stream
<< "# Begin Target\n";
840 stream
<< "# Name \"" << m_projectName
<< " - Win32 Release\"\n";
841 stream
<< "# Name \"" << m_projectName
<< " - Win32 Debug\"\n";
842 stream
<< "# Name \"" << m_projectName
<< " - Win32 Debug DLL\"\n";
843 stream
<< "# Name \"" << m_projectName
<< " - Win32 Release DLL\"\n";
846 n
= m_sourceFiles
.Number();
847 for (i
= 0; i
< n
; i
++)
849 wxString sourceFile
= m_sourceFiles
[i
];
851 stream
<< "# Begin Source File\n";
853 stream
<< "SOURCE=.\\" << sourceFile
<< "\n";
855 stream
<< "!IF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Release\"\n";
857 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Debug\"\n";
859 stream
<< "# SUBTRACT CPP /YX /Yc /Yu\n";
861 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Debug DLL\"\n";
863 stream
<< "# SUBTRACT BASE CPP /YX /Yc /Yu\n";
864 stream
<< "# SUBTRACT CPP /YX /Yc /Yu\n";
866 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Release DLL\"\n";
868 stream
<< "!ENDIF\n";
870 stream
<< "# End Source File\n";
873 // The .rc file: assume it has the target name + rc extension.
874 stream
<< "# Begin Source File\n";
876 stream
<< "SOURCE=.\\" << m_targetName
<< ".rc\n";
877 stream
<< "# ADD BASE RSC /l 0x809\n";
878 stream
<< "# ADD RSC /l 0x809";
880 n
= m_resourceIncludeDirs
.Number();
881 for (i
= 0; i
< n
; i
++)
883 wxString includeDir
= m_resourceIncludeDirs
[i
];
884 stream
<< " /i \"" << includeDir
<< "\"";
888 stream
<< "# End Source File\n";
889 stream
<< "# End Target\n";
890 stream
<< "# End Project\n";
892 // Now generate the .dsw workspace file
894 wxString fullWorkSpaceName
= m_path
+ wxString("/") + m_projectName
+ ".dsw";
896 ofstream
stream2(fullWorkSpaceName
);
900 stream2
<< "Microsoft Developer Studio Workspace File, Format Version 5.00\n";
901 stream2
<< "# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!\n";
903 stream2
<< "###############################################################################\n";
905 stream2
<< "Project: \"" << m_projectName
<< "\"=.\\" << m_projectName
<< ".dsp - Package Owner=<4>\n";
907 stream2
<< "Package=<5>\n";
911 stream2
<< "Package=<4>\n";
915 stream2
<< "###############################################################################\n";
917 stream2
<< "Global:\n";
919 stream2
<< "Package=<5>\n";
923 stream2
<< "Package=<3>\n";
927 stream2
<< "###############################################################################\n";
933 BEGIN_EVENT_TABLE(MyDialog
, wxDialog
)
934 EVT_BUTTON(wxID_EXIT
, MyDialog::OnQuit
)
935 EVT_BUTTON(ID_GENERATE_PROJECT
, MyDialog::OnGenerate
)
936 EVT_BUTTON(ID_GENERATE_SAMPLES
, MyDialog::OnGenerateSamples
)
939 // ----------------------------------------------------------------------------
941 // ----------------------------------------------------------------------------
944 MyDialog::MyDialog(const wxString
& title
, const wxPoint
& pos
, const wxSize
& size
):
947 LoadFromResource((wxWindow
*) NULL
, "project_dialog");
951 void MyDialog::OnQuit(wxCommandEvent
& event
)
956 void MyDialog::OnAbout(wxCommandEvent
& event
)
960 void MyDialog::OnGenerate(wxCommandEvent
& event
)
964 void MyDialog::OnGenerateSamples(wxCommandEvent
& event
)
966 char* dir
= getenv("WXWIN");
970 wxTextEntryDialog
dialog(this, "Please enter the wxWindows directory", "Text entry", dirStr
, wxOK
|wxCANCEL
);
971 if (dialog
.ShowModal() == wxID_OK
)
973 if (wxDirExists(dialog
.GetValue()))
975 // wxGetApp().GenerateSample("MinimalVC", "minimal", dir + wxString("/samples/minimal"),
976 // wxStringList("minimal.cpp", 0));
978 wxGetApp().GenerateSamples(dialog
.GetValue());
982 wxMessageBox("This directory doesn't exist.");