X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/653eafdf4f51116c8c0aecd02c6ba20eaf44a8bb..14619f10b0bdb630206607abd0ce0319d45e095a:/utils/emulator/src/emulator.cpp diff --git a/utils/emulator/src/emulator.cpp b/utils/emulator/src/emulator.cpp index 15c5ee95d4..41ef3eec8f 100644 --- a/utils/emulator/src/emulator.cpp +++ b/utils/emulator/src/emulator.cpp @@ -1,6 +1,6 @@ ///////////////////////////////////////////////////////////////////////////// // Name: emulator.cpp -// Purpose: Emulator wxWindows sample +// Purpose: Emulator wxWidgets sample // Author: Julian Smart // Modified by: // Created: 04/01/98 @@ -13,10 +13,6 @@ // declarations // ============================================================================ -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma implementation "emulator.h" -#endif - // ---------------------------------------------------------------------------- // headers // ---------------------------------------------------------------------------- @@ -29,7 +25,7 @@ #endif // for all others, include the necessary headers (this file is usually all you -// need because it includes almost all "standard" wxWindows headers) +// need because it includes almost all "standard" wxWidgets headers) #ifndef WX_PRECOMP #include "wx/wx.h" #endif @@ -38,8 +34,10 @@ #include "wx/fileconf.h" #include "wx/cmdline.h" #include "wx/image.h" +#include "wx/file.h" +#include "wx/filename.h" -#ifdef __WXX11__ +#ifdef __WXX11__ #include "wx/x11/reparent.h" #endif @@ -50,15 +48,15 @@ // ---------------------------------------------------------------------------- // the application icon (under Windows and OS/2 it is in resources) -#if defined(__WXGTK__) || defined(__WXMOTIF__) || defined(__WXMAC__) || defined(__WXMGL__) || defined(__WXX11__) +#ifndef wxHAS_IMAGES_IN_RESOURCES #include "emulator.xpm" #endif // ---------------------------------------------------------------------------- -// event tables and other macros for wxWindows +// event tables and other macros for wxWidgets // ---------------------------------------------------------------------------- -// the event tables connect the wxWindows events with the functions (event +// the event tables connect the wxWidgets events with the functions (event // handlers) which process them. It can be also done at run-time, but for the // simple menu events like this the static method is much simpler. BEGIN_EVENT_TABLE(wxEmulatorFrame, wxFrame) @@ -67,7 +65,7 @@ BEGIN_EVENT_TABLE(wxEmulatorFrame, wxFrame) EVT_CLOSE(wxEmulatorFrame::OnCloseWindow) END_EVENT_TABLE() -// Create a new application object: this macro will allow wxWindows to create +// Create a new application object: this macro will allow wxWidgets to create // the application object during program execution (it's better than using a // static object for many reasons) and also declares the accessor function // wxGetApp() which will return the reference of the right type (i.e. wxEmulatorApp and @@ -76,14 +74,14 @@ IMPLEMENT_APP(wxEmulatorApp) static const wxCmdLineEntryDesc sg_cmdLineDesc[] = { - { wxCMD_LINE_OPTION, _T("u"), _T("use-display"), _T("display number to use (default 100)") }, + { wxCMD_LINE_OPTION, "u", "use-display", "display number to use (default 100)" }, - { wxCMD_LINE_SWITCH, _T("h"), _T("help"), _T("displays help on the command line parameters") }, - { wxCMD_LINE_SWITCH, _T("v"), _T("version"), _T("print version") }, + { wxCMD_LINE_SWITCH, "h", "help", "displays help on the command line parameters" }, + { wxCMD_LINE_SWITCH, "v", "version", "print version" }, - { wxCMD_LINE_PARAM, NULL, NULL, _T("config file 1"), wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL }, + { wxCMD_LINE_PARAM, NULL, NULL, "config file 1", wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL }, - { wxCMD_LINE_NONE } + wxCMD_LINE_DESC_END }; @@ -107,20 +105,22 @@ wxEmulatorApp::wxEmulatorApp() // 'Main program' equivalent: the program execution "starts" here bool wxEmulatorApp::OnInit() { - wxLog::SetTimestamp(NULL); +#if wxUSE_LOG + wxLog::DisableTimestamp(); +#endif // wxUSE_LOG wxInitAllImageHandlers(); wxString currentDir = wxGetCwd(); // Use argv to get current app directory m_appDir = wxFindAppPath(argv[0], currentDir, wxT("WXEMUDIR")); - + // If the development version, go up a directory. #ifdef __WXMSW__ - if ((m_appDir.Right(5).CmpNoCase(_T("DEBUG")) == 0) || - (m_appDir.Right(11).CmpNoCase(_T("DEBUGSTABLE")) == 0) || - (m_appDir.Right(7).CmpNoCase(_T("RELEASE")) == 0) || - (m_appDir.Right(13).CmpNoCase(_T("RELEASESTABLE")) == 0) + if ((m_appDir.Right(5).CmpNoCase(wxT("DEBUG")) == 0) || + (m_appDir.Right(11).CmpNoCase(wxT("DEBUGSTABLE")) == 0) || + (m_appDir.Right(7).CmpNoCase(wxT("RELEASE")) == 0) || + (m_appDir.Right(13).CmpNoCase(wxT("RELEASESTABLE")) == 0) ) m_appDir = wxPathOnly(m_appDir); #endif @@ -138,7 +138,7 @@ bool wxEmulatorApp::OnInit() wxLog::SetActiveTarget(new wxLogStderr); #endif parser.Usage(); - return FALSE; + return false; } if (parser.Found(wxT("v"))) { @@ -146,9 +146,9 @@ bool wxEmulatorApp::OnInit() wxLog::SetActiveTarget(new wxLogStderr); #endif wxString msg; - msg.Printf(wxT("wxWindows PDA Emulator (c) Julian Smart, 2002 Version %.2f, %s"), wxEMULATOR_VERSION, __DATE__); + msg.Printf(wxT("wxWidgets PDA Emulator (c) Julian Smart, 2002 Version %.2f, %s"), wxEMULATOR_VERSION, __DATE__); wxLogMessage(msg); - return FALSE; + return false; } if (parser.Found(wxT("u"), & m_displayNumber)) { @@ -172,30 +172,32 @@ bool wxEmulatorApp::OnInit() if (!LoadEmulator(m_appDir)) { //wxMessageBox(wxT("Sorry, could not load this emulator. Please check bitmaps are valid.")); - return FALSE; + return false; } - + // create the main application window - wxEmulatorFrame *frame = new wxEmulatorFrame(_T("wxEmulator"), + wxEmulatorFrame *frame = new wxEmulatorFrame(wxT("wxEmulator"), wxPoint(50, 50), wxSize(450, 340)); - + +#if wxUSE_STATUSBAR frame->SetStatusText(m_emulatorInfo.m_emulatorTitle, 0); wxString sizeStr; sizeStr.Printf(wxT("Screen: %dx%d"), (int) m_emulatorInfo.m_emulatorScreenSize.x, (int) m_emulatorInfo.m_emulatorScreenSize.y); frame->SetStatusText(sizeStr, 1); +#endif // wxUSE_STATUSBAR - m_containerWindow = new wxEmulatorContainer(frame, -1); + m_containerWindow = new wxEmulatorContainer(frame, wxID_ANY); frame->SetClientSize(m_emulatorInfo.m_emulatorDeviceSize.x, m_emulatorInfo.m_emulatorDeviceSize.y); - + // and show it (the frames, unlike simple controls, are not shown when // created initially) - frame->Show(TRUE); - -#ifdef __WXX11__ + frame->Show(true); + +#ifdef __WXX11__ m_xnestWindow = new wxAdoptedWindow; wxString cmd; @@ -210,24 +212,24 @@ bool wxEmulatorApp::OnInit() { frame->Destroy(); wxMessageBox(wxT("Sorry, could not run Xnest. Please check your PATH.")); - return FALSE; + return false; } - + wxReparenter reparenter; if (!reparenter.WaitAndReparent(m_containerWindow, m_xnestWindow, wxT("Xnest"))) { wxMessageBox(wxT("Sorry, could not reparent Xnest..")); frame->Destroy(); - return FALSE; + return false; } #endif m_containerWindow->DoResize(); // success: wxApp::OnRun() will be called which will enter the main message - // loop and the application will run. If we returned FALSE here, the + // loop and the application will run. If we returned false here, the // application would exit immediately. - return TRUE; + return true; } // Prepend the current program directory to the name @@ -241,7 +243,7 @@ wxString wxEmulatorApp::GetFullAppPath(const wxString& filename) const path += '\\'; #endif path += filename; - + return path; } @@ -259,8 +261,9 @@ bool wxEmulatorApp::LoadEmulator(const wxString& appDir) // ---------------------------------------------------------------------------- // frame constructor -wxEmulatorFrame::wxEmulatorFrame(const wxString& title, const wxPoint& pos, const wxSize& size) - : wxFrame(NULL, -1, title, pos, size) +wxEmulatorFrame::wxEmulatorFrame(const wxString& title, + const wxPoint& pos, const wxSize& size) + : wxFrame(NULL, wxID_ANY, title, pos, size) { // set the frame icon SetIcon(wxICON(emulator)); @@ -271,14 +274,14 @@ wxEmulatorFrame::wxEmulatorFrame(const wxString& title, const wxPoint& pos, cons // the "About" item should be in the help menu wxMenu *helpMenu = new wxMenu; - helpMenu->Append(Emulator_About, _T("&About...\tF1"), _T("Show about dialog")); + helpMenu->Append(Emulator_About, wxT("&About\tF1"), wxT("Show about dialog")); - menuFile->Append(Emulator_Quit, _T("E&xit\tAlt-X"), _T("Quit this program")); + menuFile->Append(Emulator_Quit, wxT("E&xit\tAlt-X"), wxT("Quit this program")); // now append the freshly created menu to the menu bar... wxMenuBar *menuBar = new wxMenuBar(); - menuBar->Append(menuFile, _T("&File")); - menuBar->Append(helpMenu, _T("&Help")); + menuBar->Append(menuFile, wxT("&File")); + menuBar->Append(helpMenu, wxT("&Help")); // ... and attach this menu bar to the frame SetMenuBar(menuBar); @@ -295,16 +298,16 @@ wxEmulatorFrame::wxEmulatorFrame(const wxString& title, const wxPoint& pos, cons void wxEmulatorFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) { - // TRUE is to force the frame to close - Close(TRUE); + // true is to force the frame to close + Close(true); } void wxEmulatorFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) { wxString msg; - msg.Printf( _T("wxEmulator is an environment for testing embedded X11 apps.\n")); + msg.Printf( wxT("wxEmulator is an environment for testing embedded X11 apps.\n")); - wxMessageBox(msg, _T("About wxEmulator"), wxOK | wxICON_INFORMATION, this); + wxMessageBox(msg, wxT("About wxEmulator"), wxOK | wxICON_INFORMATION, this); } void wxEmulatorFrame::OnCloseWindow(wxCloseEvent& WXUNUSED(event)) @@ -346,19 +349,19 @@ void wxEmulatorContainer::DoResize() wxSize sz = GetClientSize(); if (wxGetApp().m_xnestWindow #ifdef __WXX11__ - && wxGetApp().m_xnestWindow->GetMainWindow() + && wxGetApp().m_xnestWindow->X11GetMainWindow() #endif ) { int deviceWidth = wxGetApp().m_emulatorInfo.m_emulatorDeviceSize.x; int deviceHeight = wxGetApp().m_emulatorInfo.m_emulatorDeviceSize.y; - + int x = wxMax(0, (int) ((sz.x - deviceWidth)/2.0)); int y = wxMax(0, (int) ((sz.y - deviceHeight)/2.0)); - + x += wxGetApp().m_emulatorInfo.m_emulatorScreenPosition.x; y += wxGetApp().m_emulatorInfo.m_emulatorScreenPosition.y; - + wxGetApp().m_xnestWindow->Move(x, y); } Refresh(); @@ -367,24 +370,24 @@ void wxEmulatorContainer::DoResize() void wxEmulatorContainer::OnPaint(wxPaintEvent& WXUNUSED(event)) { wxPaintDC dc(this); - + wxSize sz = GetClientSize(); - if (wxGetApp().m_emulatorInfo.m_emulatorBackgroundBitmap.Ok()) + if (wxGetApp().m_emulatorInfo.m_emulatorBackgroundBitmap.IsOk()) { int deviceWidth = wxGetApp().m_emulatorInfo.m_emulatorDeviceSize.x; int deviceHeight = wxGetApp().m_emulatorInfo.m_emulatorDeviceSize.y; - + int x = wxMax(0, (int) ((sz.x - deviceWidth)/2.0)); int y = wxMax(0, (int) ((sz.y - deviceHeight)/2.0)); - + dc.DrawBitmap(wxGetApp().m_emulatorInfo.m_emulatorBackgroundBitmap, x, y); } } void wxEmulatorContainer::OnEraseBackground(wxEraseEvent& event) { - wxDC* dc = NULL; - + wxDC* dc wxDUMMY_INITIALIZE(NULL); + if (event.GetDC()) { dc = event.GetDC(); @@ -393,10 +396,10 @@ void wxEmulatorContainer::OnEraseBackground(wxEraseEvent& event) { dc = new wxClientDC(this); } - + dc->SetBackground(wxBrush(wxGetApp().m_emulatorInfo.m_emulatorBackgroundColour, wxSOLID)); dc->Clear(); - + if (!event.GetDC()) delete dc; } @@ -428,27 +431,31 @@ bool wxEmulatorInfo::Load(const wxString& appDir) { // Try to find absolute path wxString absoluteConfigPath = m_emulatorFilename; - if (!wxIsAbsolutePath(absoluteConfigPath)) + if ( !::wxIsAbsolutePath(absoluteConfigPath) ) { wxString currDir = wxGetCwd(); absoluteConfigPath = currDir + wxString(wxFILE_SEP_PATH) + m_emulatorFilename; - if (!wxFileExists(absoluteConfigPath)) + if ( !wxFile::Exists(absoluteConfigPath) ) { - absoluteConfigPath = appDir + wxString(wxFILE_SEP_PATH) + m_emulatorFilename; + absoluteConfigPath = appDir + wxString(wxFILE_SEP_PATH) + + m_emulatorFilename; } } - if (!wxFileExists(absoluteConfigPath)) + + if ( !wxFile::Exists(absoluteConfigPath) ) { wxString str; - str.Printf(wxT("Could not find config file %s"), absoluteConfigPath.c_str()), + str.Printf( wxT("Could not find config file %s"), + absoluteConfigPath.c_str() ); + wxMessageBox(str); - return FALSE; + return false; } wxString rootPath = wxPathOnly(absoluteConfigPath); { - wxFileConfig config(wxT("wxEmulator"), wxT("wxWindows"), + wxFileConfig config(wxT("wxEmulator"), wxT("wxWidgets"), absoluteConfigPath, wxEmptyString, wxCONFIG_USE_LOCAL_FILE); config.Read(wxT("/General/title"), & m_emulatorTitle); @@ -476,33 +483,36 @@ bool wxEmulatorInfo::Load(const wxString& appDir) m_emulatorScreenPosition = wxPoint(x, y); m_emulatorScreenSize = wxSize(w, h); } - - if (!m_emulatorBackgroundBitmapName.IsEmpty()) + + if (!m_emulatorBackgroundBitmapName.empty()) { wxString absoluteBackgroundBitmapName = rootPath + wxString(wxFILE_SEP_PATH) + m_emulatorBackgroundBitmapName; - if (!wxFileExists(absoluteBackgroundBitmapName)) + if ( !wxFile::Exists(absoluteBackgroundBitmapName) ) { wxString str; - str.Printf(wxT("Could not find bitmap %s"), absoluteBackgroundBitmapName.c_str()), + str.Printf( wxT("Could not find bitmap %s"), + absoluteBackgroundBitmapName.c_str() ); wxMessageBox(str); - return FALSE; + return false; } - + wxBitmapType type = wxDetermineImageType(m_emulatorBackgroundBitmapName); if (type == wxBITMAP_TYPE_INVALID) - return FALSE; - + return false; + if (!m_emulatorBackgroundBitmap.LoadFile(m_emulatorBackgroundBitmapName, type)) { wxString str; - str.Printf(wxT("Could not load bitmap file %s"), m_emulatorBackgroundBitmapName.c_str()), + str.Printf( wxT("Could not load bitmap file %s"), + m_emulatorBackgroundBitmapName.c_str() ); wxMessageBox(str); - return FALSE; + return false; } + m_emulatorDeviceSize = wxSize(m_emulatorBackgroundBitmap.GetWidth(), m_emulatorBackgroundBitmap.GetHeight()); } - return TRUE; + return true; } // Returns the image type, or -1, determined from the extension. @@ -510,22 +520,22 @@ wxBitmapType wxDetermineImageType(const wxString& filename) { wxString path, name, ext; - wxSplitPath(filename, & path, & name, & ext); + wxFileName::SplitPath(filename, & path, & name, & ext); ext.MakeLower(); - if (ext == _T("jpg") || ext == _T("jpeg")) + if (ext == wxT("jpg") || ext == wxT("jpeg")) return wxBITMAP_TYPE_JPEG; - if (ext == _T("gif")) + if (ext == wxT("gif")) return wxBITMAP_TYPE_GIF; - if (ext == _T("bmp")) + if (ext == wxT("bmp")) return wxBITMAP_TYPE_BMP; - if (ext == _T("png")) + if (ext == wxT("png")) return wxBITMAP_TYPE_PNG; - if (ext == _T("pcx")) + if (ext == wxT("pcx")) return wxBITMAP_TYPE_PCX; - if (ext == _T("tif") || ext == _T("tiff")) - return wxBITMAP_TYPE_TIF; - + if (ext == wxT("tif") || ext == wxT("tiff")) + return wxBITMAP_TYPE_TIFF; + return wxBITMAP_TYPE_INVALID; } @@ -544,12 +554,9 @@ wxString wxColourToHexString(const wxColour& col) // Convert 6-digit hex string to a colour wxColour wxHexStringToColour(const wxString& hex) { - unsigned int r = 0; - unsigned int g = 0; - unsigned int b = 0; - r = wxHexToDec(hex.Mid(0, 2)); - g = wxHexToDec(hex.Mid(2, 2)); - b = wxHexToDec(hex.Mid(4, 2)); + unsigned char r = (unsigned char)wxHexToDec(hex.Mid(0, 2)); + unsigned char g = (unsigned char)wxHexToDec(hex.Mid(2, 2)); + unsigned char b = (unsigned char)wxHexToDec(hex.Mid(4, 2)); return wxColour(r, g, b); } @@ -565,10 +572,10 @@ wxString wxFindAppPath(const wxString& argv0, const wxString& cwd, const wxStrin wxString str; // Try appVariableName - if (!appVariableName.IsEmpty()) + if (!appVariableName.empty()) { str = wxGetenv(appVariableName); - if (!str.IsEmpty()) + if (!str.empty()) return str; } @@ -582,7 +589,7 @@ wxString wxFindAppPath(const wxString& argv0, const wxString& cwd, const wxStrin currentDir += wxFILE_SEP_PATH; str = currentDir + argv0; - if (wxFileExists(str)) + if ( wxFile::Exists(str) ) return wxPathOnly(str); } @@ -592,7 +599,7 @@ wxString wxFindAppPath(const wxString& argv0, const wxString& cwd, const wxStrin wxPathList pathList; pathList.AddEnvList(wxT("PATH")); str = pathList.FindAbsoluteValidPath(argv0); - if (!str.IsEmpty()) + if (!str.empty()) return wxPathOnly(str); // Failed