X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/92a19c2e7757ba742846f83e56356de0a607bdc2..646c4aebb22c4b60f71b7c30c2eedfa6328888f4:/samples/html/virtual/virtual.cpp diff --git a/samples/html/virtual/virtual.cpp b/samples/html/virtual/virtual.cpp index a45604a6fb..bd681ed8a5 100644 --- a/samples/html/virtual/virtual.cpp +++ b/samples/html/virtual/virtual.cpp @@ -4,7 +4,7 @@ // demonstrates virtual file systems feature ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(__APPLE__) #pragma implementation "test.cpp" #pragma interface "test.cpp" #endif @@ -19,17 +19,17 @@ // for all others, include the necessary headers (this file is usually all you // need because it includes almost all "standard" wxWindows headers #ifndef WX_PRECOMP - #include + #include "wx/wx.h" #endif -#include +#include "wx/html/htmlwin.h" // new handler class: -#include -#include +#include "wx/wfstream.h" +#include "wx/mstream.h" @@ -45,7 +45,7 @@ public: bool MyVFS::CanOpen(const wxString& location) { - return (GetProtocol(location) == "myVFS"); + return (GetProtocol(location) == wxT("myVFS")); } @@ -54,7 +54,8 @@ wxFSFile* MyVFS::OpenFile(wxFileSystem& fs, const wxString& location) { wxFSFile *f; wxInputStream *str; - char *buf = (char*)malloc(1024); + static char buf[1024]; + const wxWX2MBbuf loc = location.ToAscii(); sprintf(buf, "

You're in Node %s

" "Where do you want to go?

" @@ -62,12 +63,17 @@ wxFSFile* MyVFS::OpenFile(wxFileSystem& fs, const wxString& location) "sub-2
" "sub-3
" "
", - location.GetData(), location.GetData(), location.GetData(), location.GetData()); - - // WARNING: wxMemoryInputStream will not free buf. - // There is a memory leak here. + (const char*)loc, (const char*)loc, (const char*)loc, + (const char*)loc); + + // NB: There's a terrible hack involved: we fill 'buf' with new data every + // time this method is called and return new wxMemoryInputStream pointing to it. + // This won't work as soon as there are 2+ myVFS files opened. Fortunately, + // this won't happen because wxHTML keeps only one "page" file opened at the + // time. str = new wxMemoryInputStream(buf, strlen(buf)); - f = new wxFSFile(str, location, "text/html", wxEmptyString, wxDateTime::Today()); + f = new wxFSFile(str, location, wxT("text/html"), wxEmptyString, wxDateTime::Today()); + return f; } @@ -99,7 +105,6 @@ wxFSFile* MyVFS::OpenFile(wxFileSystem& fs, const wxString& location) // event handlers (these functions should _not_ be virtual) void OnQuit(wxCommandEvent& event); - void OnAbout(wxCommandEvent& event); void OnBack(wxCommandEvent& event); void OnForward(wxCommandEvent& event); @@ -117,7 +122,6 @@ wxFSFile* MyVFS::OpenFile(wxFileSystem& fs, const wxString& location) { // menu items Minimal_Quit = 1, - Minimal_About, Minimal_Back, Minimal_Forward, @@ -134,7 +138,6 @@ wxFSFile* MyVFS::OpenFile(wxFileSystem& fs, const wxString& location) // simple menu events like this the static method is much simpler. BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(Minimal_Quit, MyFrame::OnQuit) - EVT_MENU(Minimal_About, MyFrame::OnAbout) EVT_MENU(Minimal_Back, MyFrame::OnBack) EVT_MENU(Minimal_Forward, MyFrame::OnForward) END_EVENT_TABLE() @@ -158,15 +161,15 @@ wxFSFile* MyVFS::OpenFile(wxFileSystem& fs, const wxString& location) bool MyApp::OnInit() { // Create the main application window - MyFrame *frame = new MyFrame("wxHtmlWindow testing application", + MyFrame *frame = new MyFrame(_("wxHtmlWindow testing application"), wxPoint(50, 50), wxSize(640, 480)); - + // Show it and tell the application that it's our main window // @@@ what does it do exactly, in fact? is it necessary here? frame->Show(TRUE); SetTopWindow(frame); wxFileSystem::AddHandler(new MyVFS); - + // success: wxApp::OnRun() will be called which will enter the main message // loop and the application will run. If we returned FALSE here, the // application would exit immediately. @@ -187,14 +190,14 @@ wxHtmlWindow *html; wxMenu *menuFile = new wxMenu; wxMenu *menuNav = new wxMenu; - menuFile->Append(Minimal_Quit, "E&xit"); - menuNav->Append(Minimal_Back, "Go &BACK"); - menuNav->Append(Minimal_Forward, "Go &FORWARD"); + menuFile->Append(Minimal_Quit, _("E&xit")); + menuNav->Append(Minimal_Back, _("Go &BACK")); + menuNav->Append(Minimal_Forward, _("Go &FORWARD")); // now append the freshly created menu to the menu bar... wxMenuBar *menuBar = new wxMenuBar; - menuBar->Append(menuFile, "&File"); - menuBar->Append(menuNav, "&Navigate"); + menuBar->Append(menuFile, _("&File")); + menuBar->Append(menuNav, _("&Navigate")); // ... and attach this menu bar to the frame SetMenuBar(menuBar); @@ -202,9 +205,9 @@ wxHtmlWindow *html; CreateStatusBar(2); html = new wxHtmlWindow(this); - html -> SetRelatedFrame(this, "VFS Demo: '%s'"); + html -> SetRelatedFrame(this, _("VFS Demo: '%s'")); html -> SetRelatedStatusBar(1); - html -> LoadPage("start.htm"); + html -> LoadPage(wxT("start.htm")); } @@ -216,19 +219,13 @@ wxHtmlWindow *html; Close(TRUE); } - void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) - { - } - - - void MyFrame::OnBack(wxCommandEvent& WXUNUSED(event)) { - if (!html -> HistoryBack()) wxMessageBox("You reached prehistory era!"); + if (!html -> HistoryBack()) wxMessageBox(_("You reached prehistory era!")); } void MyFrame::OnForward(wxCommandEvent& WXUNUSED(event)) { - if (!html -> HistoryForward()) wxMessageBox("No more items in history!"); + if (!html -> HistoryForward()) wxMessageBox(_("No more items in history!")); }