From: Robin Dunn Date: Thu, 18 Nov 2004 01:28:18 +0000 (+0000) Subject: StandardPaths updates. Added a demo sample for StandardPaths. Made X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/62038e5976965767ea0ec64c6992878457ddd59a?ds=inline StandardPaths updates. Added a demo sample for StandardPaths. Made the Python install prefix be the default install prefix for StandardPaths. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30597 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/wxPython/demo/Main.py b/wxPython/demo/Main.py index 8c9b6d4ab1..458c1a713a 100644 --- a/wxPython/demo/Main.py +++ b/wxPython/demo/Main.py @@ -47,10 +47,7 @@ import images _treeList = [ # new stuff ('Recent Additions/Updates', [ - 'StockButtons', - 'Ticker', - 'Choicebook', - 'ListCtrl_edit', + 'StandardPaths', ]), # managed windows == things with a (optional) caption you can close @@ -228,6 +225,7 @@ _treeList = [ 'PrintFramework', 'ShapedWindow', 'Sound', + 'StandardPaths', 'Unicode', ]), @@ -254,9 +252,10 @@ class MyLog(wx.PyLog): self.logTime = logTime def DoLogString(self, message, timeStamp): - if self.logTime: - message = time.strftime("%X", time.localtime(timeStamp)) + \ - ": " + message + #print message, timeStamp + #if self.logTime: + # message = time.strftime("%X", time.localtime(timeStamp)) + \ + # ": " + message if self.tc: self.tc.AppendText(message + '\n') diff --git a/wxPython/demo/StandardPaths.py b/wxPython/demo/StandardPaths.py new file mode 100644 index 0000000000..40650e0452 --- /dev/null +++ b/wxPython/demo/StandardPaths.py @@ -0,0 +1,97 @@ + +import wx + +#---------------------------------------------------------------------- + +class TestPanel(wx.Panel): + def __init__(self, parent, log): + self.log = log + wx.Panel.__init__(self, parent, -1) + + sizer = wx.FlexGridSizer(0, 3, 5, 5) + box = wx.BoxSizer(wx.VERTICAL) + fs = self.GetFont().GetPointSize() + bf = wx.Font(fs+4, wx.SWISS, wx.NORMAL, wx.BOLD) + + t = wx.StaticText(self, -1, "StandardPaths") + t.SetFont(bf) + box.Add(t, 0, wx.CENTER|wx.ALL, 5) + box.Add(wx.StaticLine(self, -1), 0, wx.EXPAND) + + # get the global (singleton) instance of wx.StandardPaths + sp = wx.StandardPaths.Get() + + # StandardPaths will use the value of wx.App().GetAppName() + # for some of the stnadard path components. Let's set it to + # something that makes that obvious for the demo. In your own + # apps you'll set it in to something more meaningfull for your + # app in your OnInit, (or just let it default.) + wx.GetApp().SetAppName("AppName") + + self.help = {} + + # Loop through all of the getters in wx.StandardPaths and make + # a set of items in the sizer for each. + for x in ['GetConfigDir', + 'GetUserConfigDir', + 'GetDataDir', + 'GetLocalDataDir', + 'GetUserDataDir', + 'GetUserLocalDataDir', + 'GetPluginsDir', + 'GetInstallPrefix', + ]: + func = getattr(sp, x) + sizer.Add(wx.StaticText(self, -1, x+'():'), 0, + wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL) + sizer.Add(wx.TextCtrl(self, -1, func(), size=(275,-1), style=wx.TE_READONLY)) + + btn = wx.Button(self, wx.ID_HELP) + sizer.Add(btn) + self.help[btn] = func.__doc__ + + self.Bind(wx.EVT_BUTTON, self.OnShowDoc, id=wx.ID_HELP) + + box.Add(sizer, 0, wx.CENTER|wx.ALL, 25) + self.SetSizer(box) + + + def OnShowDoc(self, evt): + doc = self.help[evt.GetEventObject()] + + # trim the whitespace from each line + lines = [] + for line in doc.split('\n'): + lines.append(line.strip()) + doc = '\n'.join(lines) + wx.TipWindow(self, doc, 500) + + +#---------------------------------------------------------------------- + +def runTest(frame, nb, log): + win = TestPanel(nb, log) + return win + +#---------------------------------------------------------------------- + + + +overview = """ +

StandardPaths

+ +wxWidgets provides this class to simply determine where to locate +certain types of files in a platform specific manner. This includes +things like configuration files, general data files writeable by the +user, and application files that are shared by all user. + + +""" + + + +if __name__ == '__main__': + import sys,os + import run + run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:]) + diff --git a/wxPython/demo/template.py b/wxPython/demo/template.py index 3019d1f42e..e63d503c89 100644 --- a/wxPython/demo/template.py +++ b/wxPython/demo/template.py @@ -1,5 +1,5 @@ -import wx # This module uses the new wx namespace +import wx #---------------------------------------------------------------------- diff --git a/wxPython/src/_app_ex.py b/wxPython/src/_app_ex.py index 221f313d6b..bae7df624e 100644 --- a/wxPython/src/_app_ex.py +++ b/wxPython/src/_app_ex.py @@ -165,6 +165,9 @@ your Mac.""" if redirect: self.RedirectStdio(filename) + # Use Python's install prefix as the default + wx.StandardPaths.Get().SetInstallPrefix(_sys.prefix) + # This finishes the initialization of wxWindows and then calls # the OnInit that should be present in the derived class self._BootstrapApp() diff --git a/wxPython/src/_stdpaths.i b/wxPython/src/_stdpaths.i index 9c5d94733f..c4209cac64 100644 --- a/wxPython/src/_stdpaths.i +++ b/wxPython/src/_stdpaths.i @@ -53,22 +53,29 @@ class doesn't help you to do it.", ""); class wxStandardPaths { public: - - DocDeclStr( - static wxStandardPaths& , Get(), - "Return the global standard paths object", ""); + + DocStr( + Get, + "Return the global standard paths singleton", ""); + %extend { + static wxStandardPaths* Get() { + return (wxStandardPaths*) &wxStandardPaths::Get(); + } + } + + DocDeclStr( virtual wxString , GetConfigDir() const, "Return the directory with system config files: /etc under Unix, -c:\Documents and Settings\All Users\Application Data under Windows, +'c:\\Documents and Settings\\All Users\\Application Data' under Windows, /Library/Preferences for Mac", ""); DocDeclStr( virtual wxString , GetUserConfigDir() const, "Return the directory for the user config files: $HOME under Unix, -c:\Documents and Settings\username under Windows, +'c:\\Documents and Settings\\username' under Windows, and ~/Library/Preferences under Mac Only use this if you have a single file to put there, otherwise @@ -79,7 +86,7 @@ Only use this if you have a single file to put there, otherwise virtual wxString , GetDataDir() const, "Return the location of the application's global, (i.e. not user-specific,) data files: prefix/share/appname under Unix, -c:\Program Files\appname under Windows, +'c:\\Program Files\\appname' under Windows, appname.app/Contents/SharedSupport app bundle directory under Mac.", ""); @@ -93,8 +100,8 @@ host-specific. Same as `GetDataDir` except under Unix where it is DocDeclStr( virtual wxString , GetUserDataDir() const, "Return the directory for the user-dependent application data files: -$HOME/.appname under Unix, c:\Documents and -Settings\username\Application Data\appname under Windows and +$HOME/.appname under Unix, c:\\Documents and +Settings\\username\\Application Data\\appname under Windows and ~/Library/Application Support/appname under Mac", ""); @@ -104,7 +111,7 @@ Settings\username\Application Data\appname under Windows and with the other machines Same as `GetUserDataDir` for all platforms except Windows where it is -the 'Local Settings\Application Data\appname' directory.", ""); +the 'Local Settings\\Application Data\\appname' directory.", ""); DocDeclStr( @@ -119,12 +126,14 @@ Contents/Plugins app bundle subdirectory under Mac", ""); void , SetInstallPrefix(const wxString& prefix), "Set the program installation directory which is /usr/local by default. This value will be used by other methods such as `GetDataDir` and -`GetPluginsDir` as the prefix for what they return. (Unix only.)", ""); +`GetPluginsDir` as the prefix for what they return. (This function +only has meaning on Unix systems.)", ""); DocDeclStr( wxString , GetInstallPrefix() const, - "Get the program installation prefix. (Unix only.)", ""); + "Get the program installation prefix. The default is the prefix where +Python is installed. (This function only has meaning on Unix systems.)", ""); #else %extend { void SetInstallPrefix(const wxString& prefix) {}