From 175bb578e0a23e7b2f71dfde16898c184e8a5467 Mon Sep 17 00:00:00 2001 From: Stefan Neis Date: Sat, 6 Nov 2004 22:14:04 +0000 Subject: [PATCH] Added wxStandardPaths implementation for OS/2. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30323 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- build/bakefiles/files.bkl | 5 +++ include/wx/os2/stdpaths.h | 47 +++++++++++++++++++++ include/wx/stdpaths.h | 2 + src/os2/app.cpp | 6 ++- src/os2/stdpaths.cpp | 89 +++++++++++++++++++++++++++++++++++++++ 5 files changed, 148 insertions(+), 1 deletion(-) create mode 100644 include/wx/os2/stdpaths.h create mode 100644 src/os2/stdpaths.cpp diff --git a/build/bakefiles/files.bkl b/build/bakefiles/files.bkl index e3605bdc32..33079e69fe 100644 --- a/build/bakefiles/files.bkl +++ b/build/bakefiles/files.bkl @@ -153,6 +153,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! src/os2/dir.cpp src/os2/mimetype.cpp + src/os2/stdpaths.cpp src/os2/thread.cpp src/os2/utils.cpp src/os2/utilsexc.cpp @@ -160,6 +161,10 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! + wx/os2/apptbase.h + wx/os2/apptrait.h + wx/os2/mimetype.h + wx/os2/stdpaths.h diff --git a/include/wx/os2/stdpaths.h b/include/wx/os2/stdpaths.h new file mode 100644 index 0000000000..353fc5b672 --- /dev/null +++ b/include/wx/os2/stdpaths.h @@ -0,0 +1,47 @@ +/////////////////////////////////////////////////////////////////////////////// +// Name: wx/msw/stdpaths.h +// Purpose: wxStandardPaths for OS/2 +// Author: Stefan Neis +// Modified by: +// Created: 2004-11-06 +// RCS-ID: $Id$ +// Copyright: (c) 2004 Stefan Neis +// Licence: wxWindows licence +/////////////////////////////////////////////////////////////////////////////// + +#ifndef _WX_OS2_STDPATHS_H_ +#define _WX_OS2_STDPATHS_H_ + +// ---------------------------------------------------------------------------- +// wxStandardPaths +// ---------------------------------------------------------------------------- + +class WXDLLIMPEXP_BASE wxStandardPaths : public wxStandardPathsBase +{ +public: + // set the program installation directory which is /usr/local by default + // + // The program directory can be determined automatically from argv[0], + // this function is automatically called from application initialisation. + // If you override the initialisation routine, you should call it + // explicitely yourself. + static void SetInstallPrefix(const wxString& prefix); + + // get the program installation prefix + // + // if the prefix had been previously by SetInstallPrefix, returns that + // value, otherwise returns /usr/local if it failed + wxString GetInstallPrefix() const; + + // implement base class pure virtuals + virtual wxString GetConfigDir() const; + virtual wxString GetUserConfigDir() const; + virtual wxString GetDataDir() const; + virtual wxString GetUserDataDir() const; + virtual wxString GetPluginsDir() const; + +private: + static wxString m_prefix; +}; + +#endif // _WX_OS2_STDPATHS_H_ diff --git a/include/wx/stdpaths.h b/include/wx/stdpaths.h index dba20f0284..8721d015d0 100644 --- a/include/wx/stdpaths.h +++ b/include/wx/stdpaths.h @@ -91,6 +91,8 @@ protected: #include "wx/msw/stdpaths.h" #elif defined(__WXMAC__) || defined(__WXCOCOA__) #include "wx/mac/corefoundation/stdpaths.h" +#elif defined(__OS2__) + #include "wx/os2/stdpaths.h" #elif defined(__UNIX__) #include "wx/unix/stdpaths.h" #endif diff --git a/src/os2/app.cpp b/src/os2/app.cpp index cf60a54926..52aebcb4b8 100644 --- a/src/os2/app.cpp +++ b/src/os2/app.cpp @@ -33,6 +33,8 @@ #include "wx/dynarray.h" #include "wx/wxchar.h" #include "wx/icon.h" + #include "wx/stdpaths.h" + #include "wx/filename.h" #endif #include "wx/log.h" @@ -219,7 +221,9 @@ bool wxApp::Initialize(int& argc, wxChar **argv) // OS2 has to have an anchorblock // vHabmain = WinInitialize(0); - + wxFileName GetPrefix(argv[0]); + GetPrefix.MakeAbsolute(); + wxStandardPaths::SetInstallPrefix(GetPrefix.GetPath()); if (!vHabmain) { // TODO: at least give some error message here... diff --git a/src/os2/stdpaths.cpp b/src/os2/stdpaths.cpp new file mode 100644 index 0000000000..86a91d3e0c --- /dev/null +++ b/src/os2/stdpaths.cpp @@ -0,0 +1,89 @@ +/////////////////////////////////////////////////////////////////////////////// +// Name: unix/stdpaths.cpp +// Purpose: wxStandardPaths implementation for OS/2 systems +// Author: Stefan Neis +// Modified by: +// Created: 2004-11-06 +// RCS-ID: $Id$ +// Copyright: (c) 2004 Stefan Neis +// License: wxWindows license +/////////////////////////////////////////////////////////////////////////////// + +// ============================================================================ +// declarations +// ============================================================================ + +// ---------------------------------------------------------------------------- +// headers +// ---------------------------------------------------------------------------- + +// for compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ + #pragma hdrstop +#endif + +#ifndef WX_PRECOMP + #include "wx/app.h" +#endif //WX_PRECOMP + +#include "wx/filename.h" + +#include "wx/stdpaths.h" + + +// ============================================================================ +// wxStandardPaths implementation +// ============================================================================ + +// ---------------------------------------------------------------------------- +// prefix management +// ---------------------------------------------------------------------------- + +wxString wxStandardPaths::m_prefix; + +void wxStandardPaths::SetInstallPrefix(const wxString& prefix) +{ + m_prefix = prefix; +} + +wxString wxStandardPaths::GetInstallPrefix() const +{ + if ( m_prefix.empty() ) + { + wxStandardPaths *self = wx_const_cast(wxStandardPaths *, this); + + self->m_prefix = _T("/usr/local"); + } + return m_prefix; +} + +// ---------------------------------------------------------------------------- +// public functions +// ---------------------------------------------------------------------------- + +wxString wxStandardPaths::GetConfigDir() const +{ + return m_prefix; +} + +wxString wxStandardPaths::GetUserConfigDir() const +{ + return wxFileName::GetHomeDir(); +} + +wxString wxStandardPaths::GetDataDir() const +{ + return GetInstallPrefix() + _T("\\data"); +} + +wxString wxStandardPaths::GetUserDataDir() const +{ + return AppendAppName(wxFileName::GetHomeDir() + _T("\\.")); +} + +wxString wxStandardPaths::GetPluginsDir() const +{ + return wxString(); +} -- 2.45.2