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));
231 GenerateSample("ImageVC", "image", dir
+ wxString("/samples/image"), wxStringList("image.cpp", 0));
232 GenerateSample("InternatVC", "internat", dir
+ wxString("/samples/internat"), wxStringList("internat.cpp", 0));
233 GenerateSample("JoytestVC", "joytest", dir
+ wxString("/samples/joytest"), wxStringList("joytest.cpp", "joytest.h", 0));
234 GenerateSample("LayoutVC", "layout", dir
+ wxString("/samples/layout"), wxStringList("layout.cpp", "layout.h", 0));
235 GenerateSample("ListctrlVC", "listtest", dir
+ wxString("/samples/listctrl"), wxStringList("listtest.cpp", "listtest.h", 0));
236 GenerateSample("MdiVC", "mdi", dir
+ wxString("/samples/mdi"), wxStringList("mdi.cpp", "mdi.h", 0));
237 GenerateSample("MemcheckVC", "memcheck", dir
+ wxString("/samples/memcheck"), wxStringList("memcheck.cpp", 0));
238 // Note: MFC sample will be different.
239 GenerateSample("MfcVC", "mfc", dir
+ wxString("/samples/mfc"), wxStringList("mfctest.cpp", "mfctest.h", 0));
240 GenerateSample("MiniframVC", "test", dir
+ wxString("/samples/minifram"), wxStringList("test.cpp", "test.h", 0));
241 GenerateSample("MinimalVC", "minimal", dir
+ wxString("/samples/minimal"), wxStringList("minimal.cpp", 0));
242 GenerateSample("NativdlgVC", "nativdlg", dir
+ wxString("/samples/nativdlg"), wxStringList("nativdlg.cpp", "nativdlg.h", "resource.h", 0));
243 GenerateSample("NettestVC", "nettest", dir
+ wxString("/samples/nettest"), wxStringList("nettest.cpp", 0));
244 GenerateSample("NotebookVC", "test", dir
+ wxString("/samples/notebook"), wxStringList("test.cpp", "test.h", 0));
245 GenerateSample("OleautoVC", "oleauto", dir
+ wxString("/samples/oleauto"), wxStringList("oleauto.cpp", 0));
246 GenerateSample("OwnerdrwVC", "ownerdrw", dir
+ wxString("/samples/ownerdrw"), wxStringList("ownerdrw.cpp", 0));
247 GenerateSample("PngVC", "pngdemo", dir
+ wxString("/samples/png"), wxStringList("pngdemo.cpp", "pngdemo.h", 0));
248 GenerateSample("PrintingVC", "printing", dir
+ wxString("/samples/printing"), wxStringList("printing.cpp", "printing.h", 0));
249 GenerateSample("ProplistVC", "test", dir
+ wxString("/samples/proplist"), wxStringList("test.cpp", "test.h", 0));
250 GenerateSample("RegtestVC", "regtest", dir
+ wxString("/samples/regtest"), wxStringList("regtest.cpp", 0));
251 GenerateSample("ResourceVC", "resource", dir
+ wxString("/samples/resource"), wxStringList("resource.cpp", "resource.h", 0));
252 GenerateSample("RichEditVC", "wxLayout", dir
+ wxString("/samples/richedit"), wxStringList("wxLayout.cpp",
253 "kbList.cpp", "wxllist.cpp", "wxlparser.cpp", "wxlwindow.cpp", 0));
254 GenerateSample("SashtestVC", "sashtest", dir
+ wxString("/samples/sashtest"), wxStringList("sashtest.cpp", "sashtest.h", 0));
255 GenerateSample("ScrollVC", "scroll", dir
+ wxString("/samples/scroll"), wxStringList("scroll.cpp", 0));
256 GenerateSample("SplitterVC", "test", dir
+ wxString("/samples/splitter"), wxStringList("test.cpp", 0));
257 GenerateSample("TabVC", "test", dir
+ wxString("/samples/tab"), wxStringList("test.cpp", "test.h", 0));
258 GenerateSample("TaskbarVC", "tbtest", dir
+ wxString("/samples/taskbar"), wxStringList("tbtest.cpp", "tbtest.h", 0));
259 GenerateSample("TextVC", "text", dir
+ wxString("/samples/text"), wxStringList("text.cpp", 0));
260 GenerateSample("ThreadVC", "test", dir
+ wxString("/samples/thread"), wxStringList("test.cpp", 0));
261 GenerateSample("ToolbarVC", "test", dir
+ wxString("/samples/toolbar"), wxStringList("test.cpp", "test.h", 0));
262 GenerateSample("TreectrlVC", "treetest", dir
+ wxString("/samples/treectrl"), wxStringList("treetest.cpp", "treetest.h", 0));
263 GenerateSample("TypetestVC", "typetest", dir
+ wxString("/samples/typetest"), wxStringList("typetest.cpp", "typetest.h", 0));
264 GenerateSample("ValidateVC", "validate", dir
+ wxString("/samples/validate"), wxStringList("validate.cpp", "validate.h", 0));
265 GenerateSample("ClientVC", "client", dir
+ wxString("/samples/wxsocket"), wxStringList("client.cpp", 0));
266 GenerateSample("ServerVC", "server", dir
+ wxString("/samples/wxsocket"), wxStringList("server.cpp", 0));
267 GenerateSample("PoemVC", "wxpoem", dir
+ wxString("/samples/wxpoem"), wxStringList("wxpoem.cpp", "wxpoem.h", 0));
268 GenerateSample("ClientVC", "client", dir
+ wxString("/samples/dde"), wxStringList("client.cpp", "client.h", "ddesetup.h", 0));
269 GenerateSample("ServerVC", "server", dir
+ wxString("/samples/dde"), wxStringList("server.cpp", "server.h", "ddesetup.h", 0));
270 GenerateSample("CaretVC", "caret", dir
+ wxString("/samples/caret"), wxStringList("caret.cpp", 0));
271 GenerateSample("DrawingVC", "drawing", dir
+ wxString("/samples/drawing"), wxStringList("drawing.cpp", 0));
272 GenerateSample("ScrollVC", "scroll", dir
+ wxString("/samples/scroll"), wxStringList("scroll.cpp", 0));
273 GenerateSample("WizardVC", "wizard", dir
+ wxString("/samples/wizard"), wxStringList("wiztest.cpp", 0));
280 project
.SetIncludeDirs(wxStringList("../../../include", 0));
281 project
.SetResourceIncludeDirs(wxStringList("../../../include", 0));
282 project
.SetLibDirs(wxStringList("../../../lib", 0));
283 project
.SetDebugLibDirs(wxStringList("../../../src/Debug", 0));
284 project
.SetReleaseLibDirs(wxStringList("../../../src/Release", 0));
286 project
.SetProjectName("DialogEdVC");
287 project
.SetTargetName("dialoged");
288 project
.SetProjectPath(dir
+ wxString("/utils/dialoged/src"));
289 project
.SetSourceFiles(wxStringList("dialoged.cpp", "dlghndlr.cpp", "edlist.cpp", "edtree.cpp",
290 "reseditr.cpp", "reswrite.cpp", "symbtabl.cpp", "winstyle.cpp", "winprop.cpp",
291 "dialoged.h", "dlghndlr.h", "edlist.h", "edtree.h", "reseditr.h", "symbtabl.h", "winprop.h",
295 if (!project
.GenerateVCProject())
297 wxString
msg("Could not generate Dialog Editor project");
302 project
.SetIncludeDirs(wxStringList("../../../include", 0));
303 project
.SetResourceIncludeDirs(wxStringList("../../../include", 0));
304 project
.SetLibDirs(wxStringList("../../../lib", 0));
305 project
.SetDebugLibDirs(wxStringList("../../../src/Debug", 0));
306 project
.SetReleaseLibDirs(wxStringList("../../../src/Release", 0));
308 project
.SetProjectName("Tex2RTFVC");
309 project
.SetTargetName("tex2rtf");
310 project
.SetProjectPath(dir
+ wxString("/utils/tex2rtf/src"));
311 project
.SetSourceFiles(wxStringList("tex2rtf.cpp", "htmlutil.cpp", "readshg.cpp", "rtfutils.cpp",
312 "table.cpp", "tex2any.cpp", "texutils.cpp", "xlputils.cpp",
313 "bmputils.h", "readshg.h", "rtfutils.h", "table.h", "tex2any.h", "tex2rtf.h", "wxhlpblk.h",
316 if (!project
.GenerateVCProject())
318 wxString
msg("Could not generate Tex2RTF project");
323 project
.SetIncludeDirs(wxStringList("../../../include", 0));
324 project
.SetResourceIncludeDirs(wxStringList("../../../include", 0));
325 project
.SetLibDirs(wxStringList("../../../lib", 0));
326 project
.SetDebugLibDirs(wxStringList("../../../src/Debug", 0));
327 project
.SetReleaseLibDirs(wxStringList("../../../src/Release", 0));
329 project
.SetProjectName("HelpGenVC");
330 project
.SetTargetName("helpgen");
331 project
.SetProjectPath(dir
+ wxString("/utils/helpgen/src"));
332 project
.SetSourceFiles(wxStringList("helpgen.cpp", "cjparser.cpp", "docripper.cpp", "ifcontext.cpp",
333 "markup.cpp", "ripper_main.cpp", "scriptbinder.cpp", "sourcepainter.cpp",
335 "cjparser.h", "docripper.h", "ifcontext.h", "markup.h", "scriptbinder.h", "sourcepainter.h",
336 "srcparser.h", "wxstlac.h", "wxstllst.h", "wxstlvec.h", 0));
338 if (!project
.GenerateVCProject())
340 wxString
msg("Could not generate HelpGen project");
344 // wxTreeLayout sample
346 project
.SetIncludeDirs(wxStringList("../../../include", 0));
347 project
.SetResourceIncludeDirs(wxStringList("../../../include", 0));
348 project
.SetLibDirs(wxStringList("../../../lib", 0));
349 project
.SetDebugLibDirs(wxStringList("../../../src/Debug", 0));
350 project
.SetReleaseLibDirs(wxStringList("../../../src/Release", 0));
352 project
.SetProjectName("TreeSampleVC");
353 project
.SetTargetName("test");
354 project
.SetProjectPath(dir
+ wxString("/utils/wxtree/src"));
355 project
.SetSourceFiles(wxStringList("test.cpp", "wxtree.cpp", "test.h", "wxtree.h", 0));
357 if (!project
.GenerateVCProject())
359 wxString
msg("Could not generate wxTreeLayout project");
365 project
.SetIncludeDirs(wxStringList("../../../../include", "../../src", 0));
366 project
.SetResourceIncludeDirs(wxStringList("../../../../include", 0));
367 project
.SetLibDirs(wxStringList("../../../../lib", 0));
368 project
.SetDebugLibDirs(wxStringList("../../../../src/Debug", "../../src/Debug", 0));
369 project
.SetReleaseLibDirs(wxStringList("../../../../src/Release", "../../src/Release", 0));
370 project
.SetExtraLibs(wxStringList("ogl.lib", 0));
372 project
.SetProjectName("OGLEditVC");
373 project
.SetTargetName("ogledit");
374 project
.SetProjectPath(dir
+ wxString("/utils/ogl/samples/ogledit"));
375 project
.SetSourceFiles(wxStringList("ogledit.cpp", "doc.cpp", "palette.cpp", "view.cpp",
376 "doc.h", "ogledit.h", "palette.h", "view.h",
379 if (!project
.GenerateVCProject())
381 wxString
msg("Could not generate OGLEdit project");
387 project
.SetIncludeDirs(wxStringList("../../../../include", "../../src", 0));
388 project
.SetResourceIncludeDirs(wxStringList("../../../../include", 0));
389 project
.SetLibDirs(wxStringList("../../../../lib", 0));
390 project
.SetDebugLibDirs(wxStringList("../../../../src/Debug", "../../src/Debug", 0));
391 project
.SetReleaseLibDirs(wxStringList("../../../../src/Release", "../../src/Release", 0));
392 project
.SetExtraLibs(wxStringList("ogl.lib", 0));
394 project
.SetProjectName("StudioVC");
395 project
.SetTargetName("studio");
396 project
.SetProjectPath(dir
+ wxString("/utils/ogl/samples/studio"));
397 project
.SetSourceFiles(wxStringList("studio.cpp", "cspalette.cpp", "dialogs.cpp", "view.cpp",
398 "doc.cpp", "mainfrm.cpp", "project.cpp", "shapes.cpp", "symbols.cpp", "csprint.cpp",
399 "studio.h", "cspalette.h", "dialogs.h", "view.h",
400 "doc.h", "mainfrm.h", "project.h", "shapes.h", "symbols.h",
403 if (!project
.GenerateVCProject())
405 wxString
msg("Could not generate OGL Studio project");
409 // GLCanvas cube sample
411 project
.SetIncludeDirs(wxStringList("../../../../include", "../../win", 0));
412 project
.SetResourceIncludeDirs(wxStringList("../../../../include", 0));
413 project
.SetLibDirs(wxStringList("../../../../lib", 0));
414 project
.SetDebugLibDirs(wxStringList("../../../../src/Debug", "../../win/Debug", 0));
415 project
.SetReleaseLibDirs(wxStringList("../../../../src/Release", "../../win/Release", 0));
416 project
.SetExtraLibs(wxStringList("glcanvas.lib", "opengl32.lib", "glu32.lib", 0));
418 project
.SetProjectName("CubeVC");
419 project
.SetTargetName("cube");
420 project
.SetProjectPath(dir
+ wxString("/utils/glcanvas/samples/cube"));
421 project
.SetSourceFiles(wxStringList("cube.cpp", "cube.h",
424 if (!project
.GenerateVCProject())
426 wxString
msg("Could not generate GLCanvas Cube project");
430 // GLCanvas isosurf sample
432 project
.SetIncludeDirs(wxStringList("../../../../include", "../../win", 0));
433 project
.SetResourceIncludeDirs(wxStringList("../../../../include", 0));
434 project
.SetLibDirs(wxStringList("../../../../lib", 0));
435 project
.SetDebugLibDirs(wxStringList("../../../../src/Debug", "../../win/Debug", 0));
436 project
.SetReleaseLibDirs(wxStringList("../../../../src/Release", "../../win/Release", 0));
437 project
.SetExtraLibs(wxStringList("glcanvas.lib", "opengl32.lib", "glu32.lib", 0));
439 project
.SetProjectName("IsoSurfVC");
440 project
.SetTargetName("isosurf");
441 project
.SetProjectPath(dir
+ wxString("/utils/glcanvas/samples/isosurf"));
442 project
.SetSourceFiles(wxStringList("isosurf.cpp", "isosurf.h",
445 if (!project
.GenerateVCProject())
447 wxString
msg("Could not generate GLCanvas IsoSurf project");
451 // GLCanvas penguin sample
453 project
.SetIncludeDirs(wxStringList("../../../../include", "../../win", 0));
454 project
.SetResourceIncludeDirs(wxStringList("../../../../include", 0));
455 project
.SetLibDirs(wxStringList("../../../../lib", 0));
456 project
.SetDebugLibDirs(wxStringList("../../../../src/Debug", "../../win/Debug", 0));
457 project
.SetReleaseLibDirs(wxStringList("../../../../src/Release", "../../win/Release", 0));
458 project
.SetExtraLibs(wxStringList("glcanvas.lib", "opengl32.lib", "glu32.lib", 0));
460 project
.SetProjectName("PenguinVC");
461 project
.SetTargetName("penguin");
462 project
.SetProjectPath(dir
+ wxString("/utils/glcanvas/samples/penguin"));
463 project
.SetSourceFiles(wxStringList("penguin.cpp", "penguin.h",
465 "trackball.c", "trackball.h",
468 if (!project
.GenerateVCProject())
470 wxString
msg("Could not generate GLCanvas Penguin project");
475 // ----------------------------------------------------------------------------
477 // ----------------------------------------------------------------------------
480 MyFrame::MyFrame(const wxString
& title
, const wxPoint
& pos
, const wxSize
& size
)
481 : wxFrame((wxFrame
*)NULL
, -1, title
, pos
, size
)
483 // set the frame icon
484 SetIcon(wxICON(mondrian
));
487 wxMenu
*menuFile
= new wxMenu
;
489 menuFile
->Append(MakeProject_Generate
, "&Generate");
490 menuFile
->Append(MakeProject_About
, "&About...");
491 menuFile
->AppendSeparator();
492 menuFile
->Append(MakeProject_Quit
, "E&xit");
494 // now append the freshly created menu to the menu bar...
495 wxMenuBar
*menuBar
= new wxMenuBar
;
496 menuBar
->Append(menuFile
, "&File");
498 // ... and attach this menu bar to the frame
501 // create a status bar just for fun (by default with 1 pane only)
503 SetStatusText("Welcome to wxWindows!");
509 void MyFrame::OnQuit(wxCommandEvent
& WXUNUSED(event
))
511 // TRUE is to force the frame to close
515 void MyFrame::OnAbout(wxCommandEvent
& WXUNUSED(event
))
517 wxMessageBox("MakeProject: generates VC++ project files",
518 "About MakeProject", wxOK
| wxICON_INFORMATION
, this);
521 void MyFrame::OnGenerate(wxCommandEvent
& WXUNUSED(event
))
523 wxGetApp().GenerateSamples("d:/wx2/wxWindows");
526 bool MyFrame::GenerateSample(const wxString
& projectName
, const wxString
& targetName
,
527 const wxString
& path
, const wxStringList
& sourceFiles
)
529 return wxGetApp().GenerateSample(projectName
, targetName
, path
, sourceFiles
);
536 wxProject::wxProject()
540 wxProject::~wxProject()
545 bool wxProject::GenerateVCProject()
547 wxString fullProjectName
= m_path
+ wxString("/") + m_projectName
+ ".dsp";
549 ofstream
stream(fullProjectName
);
553 /////////////////////// General stuff
555 stream
<< "# Microsoft Developer Studio Project File - Name=\"" << m_projectName
<< "\" - Package Owner=<4>\n";
556 stream
<< "# Microsoft Developer Studio Generated Build File, Format Version 5.00\n";
557 stream
<< "# (Actually, generated by MakeProject, (c) Julian Smart, 1998)\n";
558 stream
<< "# ** DO NOT EDIT **\n\n";
559 stream
<< "# TARGTYPE \"Win32 (x86) Application\" 0x0101\n\n";
560 stream
<< "CFG=" << m_projectName
<< " - Win32 Debug\n";
561 stream
<< "!MESSAGE This is not a valid makefile. To build this project using NMAKE,\n";
562 stream
<< "!MESSAGE use the Export Makefile command and run\n";
563 stream
<< "!MESSAGE\n";
564 stream
<< "!MESSAGE NMAKE /f \"" << m_projectName
<< ".mak\".\n";
565 stream
<< "!MESSAGE\n";
566 stream
<< "!MESSAGE You can specify a configuration when running NMAKE\n";
567 stream
<< "!MESSAGE by defining the macro CFG on the command line. For example:\n";
568 stream
<< "!MESSAGE\n";
569 stream
<< "!MESSAGE NMAKE /f \"" << m_projectName
<< ".mak\" CFG=\"" << m_projectName
<< " - Win32 Debug\"\n";
570 stream
<< "!MESSAGE\n";
571 stream
<< "!MESSAGE Possible choices for configuration are:\n";
572 stream
<< "!MESSAGE\n";
573 stream
<< "!MESSAGE \"" << m_projectName
<< " - Win32 Release\" (based on \"Win32 (x86) Application\")\n";
574 stream
<< "!MESSAGE \"" << m_projectName
<< " - Win32 Debug\" (based on \"Win32 (x86) Application\")\n";
575 stream
<< "!MESSAGE \"" << m_projectName
<< " - Win32 Debug DLL\" (based on \"Win32 (x86) Application\")\n";
576 stream
<< "!MESSAGE \"" << m_projectName
<< " - Win32 Release DLL\" (based on \"Win32 (x86) Application\")\n";
577 stream
<< "!MESSAGE\n";
579 stream
<< "# Begin Project\n";
580 stream
<< "# PROP Scc_ProjName \"\"\n";
581 stream
<< "# PROP Scc_LocalPath \"\"\n";
582 stream
<< "CPP=cl.exe\n";
583 stream
<< "MTL=midl.exe\n";
584 stream
<< "RSC=rc.exe\n";
587 /////////////////////// Win32 Release target
589 stream
<< "!IF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Release\"\n";
591 stream
<< "# PROP BASE Use_MFC 0\n";
592 stream
<< "# PROP BASE Use_Debug_Libraries 0\n";
593 stream
<< "# PROP BASE Output_Dir \"Release\"\n";
594 stream
<< "# PROP BASE Intermediate_Dir \"Release\"\n";
595 stream
<< "# PROP BASE Target_Dir \"\"\n";
596 stream
<< "# PROP Use_MFC 0\n";
597 stream
<< "# PROP Use_Debug_Libraries 0\n";
598 stream
<< "# PROP Output_Dir \"Release\"\n";
599 stream
<< "# PROP Intermediate_Dir \"Release\"\n";
600 stream
<< "# PROP Ignore_Export_Lib 0\n";
601 stream
<< "# PROP Target_Dir \"\"\n";
602 stream
<< "# ADD BASE CPP /nologo /W3 /GX /O2 /D \"WIN32\" /D \"NDEBUG\" /D \"_WINDOWS\" /YX /FD /c\n";
603 stream
<< "# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2";
605 int n
= m_includeDirs
.Number();
607 for (i
= 0; i
< n
; i
++)
609 wxString includeDir
= m_includeDirs
[i
];
610 stream
<< " /I \"" << includeDir
<< "\"";
613 stream
<< " /D \"NDEBUG\" /D \"WIN32\" /D \"_WINDOWS\" /D \"__WINDOWS__\" /D \"__WXMSW__\" /D \"__WIN95__\" /D \"__WIN32__\" /D WINVER=0x0400 /D \"STRICT\" /FD /c\n";
614 stream
<< "# SUBTRACT CPP /YX\n";
615 stream
<< "# ADD BASE MTL /nologo /D \"NDEBUG\" /mktyplib203 /o NUL /win32\n";
616 stream
<< "# ADD MTL /nologo /D \"NDEBUG\" /mktyplib203 /o NUL /win32\n";
617 stream
<< "# ADD BASE RSC /l 0x809 /d \"NDEBUG\"\n";
618 stream
<< "# ADD RSC /l 0x809 /d \"NDEBUG\"\n";
619 stream
<< "BSC32=bscmake.exe\n";
620 stream
<< "# ADD BASE BSC32 /nologo\n";
621 stream
<< "# ADD BSC32 /nologo\n";
622 stream
<< "LINK32=link.exe\n";
623 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";
624 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 ";
625 n
= m_extraLibs
.Number();
626 for (i
= 0; i
< n
; i
++)
628 wxString lib
= m_extraLibs
[i
];
629 stream
<< lib
<< " ";
632 stream
<< "/nologo /subsystem:windows /machine:I386 /nodefaultlib:\"libc.lib\" /nodefaultlib:\"libci.lib\" /out:\"Release/" << m_targetName
<< ".exe\"";
634 n
= m_releaseLibDirs
.Number();
635 for (i
= 0; i
< n
; i
++)
637 wxString libDir
= m_releaseLibDirs
[i
];
638 stream
<< " /libpath:\"" << libDir
<< "\"";
640 n
= m_libDirs
.Number();
641 for (i
= 0; i
< n
; i
++)
643 wxString libDir
= m_libDirs
[i
];
644 stream
<< " /libpath:\"" << libDir
<< "\"";
649 /////////////////////// Win32 Debug target
651 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Debug\"\n";
653 stream
<< "# PROP BASE Use_MFC 0\n";
654 stream
<< "# PROP BASE Use_Debug_Libraries 1\n";
655 stream
<< "# PROP BASE Output_Dir \"Debug\"\n";
656 stream
<< "# PROP BASE Intermediate_Dir \"Debug\"\n";
657 stream
<< "# PROP BASE Target_Dir \"\"\n";
658 stream
<< "# PROP Use_MFC 0\n";
659 stream
<< "# PROP Use_Debug_Libraries 1\n";
660 stream
<< "# PROP Output_Dir \"Debug\"\n";
661 stream
<< "# PROP Intermediate_Dir \"Debug\"\n";
662 stream
<< "# PROP Ignore_Export_Lib 0\n";
663 stream
<< "# PROP Target_Dir \"\"\n";
664 stream
<< "# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D \"WIN32\" /D \"_DEBUG\" /D \"_WINDOWS\" /YX /FD /c\n";
665 stream
<< "# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od";
667 n
= m_includeDirs
.Number();
668 for (i
= 0; i
< n
; i
++)
670 wxString includeDir
= m_includeDirs
[i
];
671 stream
<< " /I \"" << includeDir
<< "\"";
674 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";
675 stream
<< "# ADD BASE MTL /nologo /D \"_DEBUG\" /mktyplib203 /o NUL /win32\n";
676 stream
<< "# ADD MTL /nologo /D \"_DEBUG\" /mktyplib203 /o NUL /win32\n";
677 stream
<< "# ADD BASE RSC /l 0x809 /d \"_DEBUG\"\n";
678 stream
<< "# ADD RSC /l 0x809 /d \"_DEBUG\"\n";
679 stream
<< "BSC32=bscmake.exe\n";
680 stream
<< "# ADD BASE BSC32 /nologo\n";
681 stream
<< "# ADD BSC32 /nologo\n";
682 stream
<< "LINK32=link.exe\n";
683 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";
684 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 ";
685 n
= m_extraLibs
.Number();
686 for (i
= 0; i
< n
; i
++)
688 wxString lib
= m_extraLibs
[i
];
689 stream
<< lib
<< " ";
691 stream
<< "/nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:\"libcd.lib,libcid.lib,msvcrt.lib\" /out:\"Debug/" << m_targetName
<< ".exe\" /pdbtype:sept";
693 n
= m_debugLibDirs
.Number();
694 for (i
= 0; i
< n
; i
++)
696 wxString libDir
= m_debugLibDirs
[i
];
697 stream
<< " /libpath:\"" << libDir
<< "\"";
699 n
= m_libDirs
.Number();
700 for (i
= 0; i
< n
; i
++)
702 wxString libDir
= m_libDirs
[i
];
703 stream
<< " /libpath:\"" << libDir
<< "\"";
707 // stream << "!ENDIF\n";
710 /////////////////////// Win32 Debug DLL target
712 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Debug DLL\"\n";
714 stream
<< "# PROP BASE Use_MFC 0\n";
715 stream
<< "# PROP BASE Use_Debug_Libraries 1\n";
716 stream
<< "# PROP BASE Output_Dir \"DebugDLL\"\n";
717 stream
<< "# PROP BASE Intermediate_Dir \"DebugDLL\"\n";
718 stream
<< "# PROP BASE Target_Dir \"\"\n";
719 stream
<< "# PROP Use_MFC 0\n";
720 stream
<< "# PROP Use_Debug_Libraries 1\n";
721 stream
<< "# PROP Output_Dir \"DebugDLL\"\n";
722 stream
<< "# PROP Intermediate_Dir \"DebugDLL\"\n";
723 stream
<< "# PROP Ignore_Export_Lib 0\n";
724 stream
<< "# PROP Target_Dir \"\"\n";
725 stream
<< "# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D \"WIN32\" /D \"_DEBUG\" /D \"_WINDOWS\" /YX /FD /c\n";
726 stream
<< "# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od";
728 n
= m_includeDirs
.Number();
729 for (i
= 0; i
< n
; i
++)
731 wxString includeDir
= m_includeDirs
[i
];
732 stream
<< " /I \"" << includeDir
<< "\"";
735 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";
736 stream
<< "# ADD BASE MTL /nologo /D \"_DEBUG\" /mktyplib203 /o NUL /win32\n";
737 stream
<< "# ADD MTL /nologo /D \"_DEBUG\" /mktyplib203 /o NUL /win32\n";
738 stream
<< "# ADD BASE RSC /l 0x809 /d \"_DEBUG\"\n";
739 stream
<< "# ADD RSC /l 0x809 /d \"_DEBUG\"\n";
740 stream
<< "BSC32=bscmake.exe\n";
741 stream
<< "# ADD BASE BSC32 /nologo\n";
742 stream
<< "# ADD BSC32 /nologo\n";
743 stream
<< "LINK32=link.exe\n";
744 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";
745 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 ";
746 n
= m_extraLibs
.Number();
747 for (i
= 0; i
< n
; i
++)
749 wxString lib
= m_extraLibs
[i
];
750 stream
<< lib
<< " ";
752 stream
<< "/nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:\"libcd.lib\" /nodefaultlib:\"libcid.lib\" /out:\"DebugDLL/" << m_targetName
<< ".exe\" /pdbtype:sept";
754 n
= m_debugLibDirs
.Number();
755 for (i
= 0; i
< n
; i
++)
757 wxString libDir
= m_debugLibDirs
[i
];
758 libDir
+= "DLL"; // Assume that we have e.g. Debug so make it DebugDLL
759 stream
<< " /libpath:\"" << libDir
<< "\"";
761 n
= m_libDirs
.Number();
762 for (i
= 0; i
< n
; i
++)
764 wxString libDir
= m_libDirs
[i
];
765 stream
<< " /libpath:\"" << libDir
<< "\"";
769 // stream << "!ENDIF\n";
772 /////////////////////// Win32 Release DLL target
774 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Release DLL\"\n";
776 stream
<< "# PROP BASE Use_MFC 0\n";
777 stream
<< "# PROP BASE Use_Debug_Libraries 0\n";
778 stream
<< "# PROP BASE Output_Dir \"ReleaseDLL\"\n";
779 stream
<< "# PROP BASE Intermediate_Dir \"ReleaseDLL\"\n";
780 stream
<< "# PROP BASE Target_Dir \"\"\n";
781 stream
<< "# PROP Use_MFC 0\n";
782 stream
<< "# PROP Use_Debug_Libraries 0\n";
783 stream
<< "# PROP Output_Dir \"ReleaseDLL\"\n";
784 stream
<< "# PROP Intermediate_Dir \"ReleaseDLL\"\n";
785 stream
<< "# PROP Ignore_Export_Lib 0\n";
786 stream
<< "# PROP Target_Dir \"\"\n";
787 stream
<< "# ADD BASE CPP /nologo /W3 /GX /O2 /D \"WIN32\" /D \"NDEBUG\" /D \"_WINDOWS\" /YX /FD /c\n";
788 stream
<< "# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2";
790 n
= m_includeDirs
.Number();
791 for (i
= 0; i
< n
; i
++)
793 wxString includeDir
= m_includeDirs
[i
];
794 stream
<< " /I \"" << includeDir
<< "\"";
797 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";
798 stream
<< "# SUBTRACT CPP /YX\n";
799 stream
<< "# ADD BASE MTL /nologo /D \"NDEBUG\" /mktyplib203 /o NUL /win32\n";
800 stream
<< "# ADD MTL /nologo /D \"NDEBUG\" /mktyplib203 /o NUL /win32\n";
801 stream
<< "# ADD BASE RSC /l 0x809 /d \"NDEBUG\"\n";
802 stream
<< "# ADD RSC /l 0x809 /d \"NDEBUG\"\n";
803 stream
<< "BSC32=bscmake.exe\n";
804 stream
<< "# ADD BASE BSC32 /nologo\n";
805 stream
<< "# ADD BSC32 /nologo\n";
806 stream
<< "LINK32=link.exe\n";
807 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";
808 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 ";
809 n
= m_extraLibs
.Number();
810 for (i
= 0; i
< n
; i
++)
812 wxString lib
= m_extraLibs
[i
];
813 stream
<< lib
<< " ";
815 stream
<< "/nologo /subsystem:windows /machine:I386 /nodefaultlib:\"libc.lib\" /nodefaultlib:\"libci.lib\" /out:\"ReleaseDLL/" << m_targetName
<< ".exe\"";
817 n
= m_releaseLibDirs
.Number();
818 for (i
= 0; i
< n
; i
++)
820 wxString libDir
= m_releaseLibDirs
[i
];
821 libDir
+= "DLL"; // Assume that we have e.g. Release so make it ReleaseDLL
822 stream
<< " /libpath:\"" << libDir
<< "\"";
824 n
= m_libDirs
.Number();
825 for (i
= 0; i
< n
; i
++)
827 wxString libDir
= m_libDirs
[i
];
828 stream
<< " /libpath:\"" << libDir
<< "\"";
832 stream
<< "!ENDIF\n";
835 /////////////////////// Source code for targets
837 stream
<< "# Begin Target\n";
839 stream
<< "# Name \"" << m_projectName
<< " - Win32 Release\"\n";
840 stream
<< "# Name \"" << m_projectName
<< " - Win32 Debug\"\n";
841 stream
<< "# Name \"" << m_projectName
<< " - Win32 Debug DLL\"\n";
842 stream
<< "# Name \"" << m_projectName
<< " - Win32 Release DLL\"\n";
845 n
= m_sourceFiles
.Number();
846 for (i
= 0; i
< n
; i
++)
848 wxString sourceFile
= m_sourceFiles
[i
];
850 stream
<< "# Begin Source File\n";
852 stream
<< "SOURCE=.\\" << sourceFile
<< "\n";
854 stream
<< "!IF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Release\"\n";
856 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Debug\"\n";
858 stream
<< "# SUBTRACT CPP /YX /Yc /Yu\n";
860 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Debug DLL\"\n";
862 stream
<< "# SUBTRACT BASE CPP /YX /Yc /Yu\n";
863 stream
<< "# SUBTRACT CPP /YX /Yc /Yu\n";
865 stream
<< "!ELSEIF \"$(CFG)\" == \"" << m_projectName
<< " - Win32 Release DLL\"\n";
867 stream
<< "!ENDIF\n";
869 stream
<< "# End Source File\n";
872 // The .rc file: assume it has the target name + rc extension.
873 stream
<< "# Begin Source File\n";
875 stream
<< "SOURCE=.\\" << m_targetName
<< ".rc\n";
876 stream
<< "# ADD BASE RSC /l 0x809\n";
877 stream
<< "# ADD RSC /l 0x809";
879 n
= m_resourceIncludeDirs
.Number();
880 for (i
= 0; i
< n
; i
++)
882 wxString includeDir
= m_resourceIncludeDirs
[i
];
883 stream
<< " /i \"" << includeDir
<< "\"";
887 stream
<< "# End Source File\n";
888 stream
<< "# End Target\n";
889 stream
<< "# End Project\n";
891 // Now generate the .dsw workspace file
893 wxString fullWorkSpaceName
= m_path
+ wxString("/") + m_projectName
+ ".dsw";
895 ofstream
stream2(fullWorkSpaceName
);
899 stream2
<< "Microsoft Developer Studio Workspace File, Format Version 5.00\n";
900 stream2
<< "# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!\n";
902 stream2
<< "###############################################################################\n";
904 stream2
<< "Project: \"" << m_projectName
<< "\"=.\\" << m_projectName
<< ".dsp - Package Owner=<4>\n";
906 stream2
<< "Package=<5>\n";
910 stream2
<< "Package=<4>\n";
914 stream2
<< "###############################################################################\n";
916 stream2
<< "Global:\n";
918 stream2
<< "Package=<5>\n";
922 stream2
<< "Package=<3>\n";
926 stream2
<< "###############################################################################\n";
932 BEGIN_EVENT_TABLE(MyDialog
, wxDialog
)
933 EVT_BUTTON(wxID_EXIT
, MyDialog::OnQuit
)
934 EVT_BUTTON(ID_GENERATE_PROJECT
, MyDialog::OnGenerate
)
935 EVT_BUTTON(ID_GENERATE_SAMPLES
, MyDialog::OnGenerateSamples
)
938 // ----------------------------------------------------------------------------
940 // ----------------------------------------------------------------------------
943 MyDialog::MyDialog(const wxString
& title
, const wxPoint
& pos
, const wxSize
& size
):
946 LoadFromResource((wxWindow
*) NULL
, "project_dialog");
950 void MyDialog::OnQuit(wxCommandEvent
& event
)
955 void MyDialog::OnAbout(wxCommandEvent
& event
)
959 void MyDialog::OnGenerate(wxCommandEvent
& event
)
963 void MyDialog::OnGenerateSamples(wxCommandEvent
& event
)
965 char* dir
= getenv("WXWIN");
969 wxTextEntryDialog
dialog(this, "Please enter the wxWindows directory", "Text entry", dirStr
, wxOK
|wxCANCEL
);
970 if (dialog
.ShowModal() == wxID_OK
)
972 if (wxDirExists(dialog
.GetValue()))
974 // wxGetApp().GenerateSample("MinimalVC", "minimal", dir + wxString("/samples/minimal"),
975 // wxStringList("minimal.cpp", 0));
977 wxGetApp().GenerateSamples(dialog
.GetValue());
981 wxMessageBox("This directory doesn't exist.");