]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/filedlgg.cpp
fixed memory allocation code of wxStreamBuffer to not realloc() new[]ed memory any...
[wxWidgets.git] / src / generic / filedlgg.cpp
index 002683596536031d2ba4521b084a4fde503459c7..e58ccf72195c252500a197df4ea243d4f8695401 100644 (file)
 #include <sys/stat.h>
 #include <dirent.h>
 #include <pwd.h>
-#include <grp.h>
-#include <time.h>
+#ifndef __VMS
+# include <grp.h>
+#endif
+# include <time.h>
 #include <unistd.h>
 
 #include "wx/generic/home.xpm"
@@ -273,7 +275,7 @@ wxFileData::wxFileData( const wxString &name, const wxString &fname )
     struct stat buff;
     stat( m_fileName.fn_str(), &buff );
 
-#ifndef __EMX__
+#if !defined( __EMX__ ) && !defined(__VMS)
     struct stat lbuff;
     lstat( m_fileName.fn_str(), &lbuff );
     m_isLink = S_ISLNK( lbuff.st_mode );
@@ -555,7 +557,7 @@ void wxFileCtrl::Update()
         res = wxFileNameFromPath( f );
         fd = new wxFileData( res, f );
         wxString s = fd->GetName();
-        if (m_showHidden || (s[0] != wxT('.')))
+        if (m_showHidden || (s[0u] != wxT('.')))
         {
             Add( fd, item );
             item.m_itemId++;
@@ -570,7 +572,7 @@ void wxFileCtrl::Update()
         res = wxFileNameFromPath( f );
         fd = new wxFileData( res, f );
         wxString s = fd->GetName();
-        if (m_showHidden || (s[0] != wxT('.')))
+        if (m_showHidden || (s[0u] != wxT('.')))
         {
             Add( fd, item );
             item.m_itemId++;
@@ -580,9 +582,12 @@ void wxFileCtrl::Update()
 
     SortItems( ListCompare, 0 );
 
-    SetColumnWidth( 1, wxLIST_AUTOSIZE );
-    SetColumnWidth( 2, wxLIST_AUTOSIZE );
-    SetColumnWidth( 3, wxLIST_AUTOSIZE );
+    if (my_style & wxLC_REPORT)
+    {
+       SetColumnWidth( 1, wxLIST_AUTOSIZE );
+       SetColumnWidth( 2, wxLIST_AUTOSIZE );
+       SetColumnWidth( 3, wxLIST_AUTOSIZE );
+    }
 }
 
 void wxFileCtrl::SetWild( const wxString &wild )
@@ -1021,7 +1026,7 @@ void wxFileDialog::HandleAction( const wxString &fn )
         return;
     }
 
-    if (filename[0] == wxT('~'))
+    if (filename[0u] == wxT('~'))
     {
         filename.Remove( 0, 1 );
         wxString tmp( wxGetUserHome() );
@@ -1043,7 +1048,7 @@ void wxFileDialog::HandleAction( const wxString &fn )
     }
 
     if (dir != wxT("/")) dir += wxT("/");
-    if (filename[0] != wxT('/'))
+    if (filename[0u] != wxT('/'))
     {
         dir += filename;
         filename = dir;
@@ -1092,6 +1097,18 @@ void wxFileDialog::HandleAction( const wxString &fn )
 
     SetPath( filename );
 
+    // change to the directory where the user went if asked
+    if ( GetWindowStyle() & wxCHANGE_DIR )
+    {
+        wxString cwd;
+        wxSplitPath(filename, &cwd, NULL, NULL);
+
+        if ( cwd != wxGetWorkingDirectory() )
+        {
+            wxSetWorkingDirectory(cwd);
+        }
+    }
+
     wxCommandEvent event;
     wxDialog::OnOK(event);
 }
@@ -1257,19 +1274,17 @@ wxString wxFileSelector( const wxChar *title,
     }
 }
 
-wxString wxLoadFileSelector( const wxChar *what, const wxChar *extension, const wxChar *default_name, wxWindow *parent )
+wxString wxLoadFileSelector( const wxChar *what, const wxChar *ext, const wxChar *default_name, wxWindow *parent )
 {
-    wxChar *ext = (wxChar *)extension;
+    wxString prompt = wxString::Format(_("Load %s file"), what);
 
-    wxChar prompt[50];
-    wxString str = _("Load %s file");
-    wxSprintf(prompt, str, what);
+    if (*ext == wxT('.'))
+        ext++;
 
-    if (*ext == wxT('.')) ext++;
-    wxChar wild[60];
-    wxSprintf(wild, wxT("*.%s"), ext);
+    wxString wild = wxString::Format(_T("*.%s"), ext);
 
-    return wxFileSelector (prompt, (const wxChar *) NULL, default_name, ext, wild, 0, parent);
+    return wxFileSelector(prompt, (const wxChar *) NULL, default_name,
+                          ext, wild, 0, parent);
 }
 
 wxString wxSaveFileSelector(const wxChar *what, const wxChar *extension, const wxChar *default_name,
@@ -1277,15 +1292,15 @@ wxString wxSaveFileSelector(const wxChar *what, const wxChar *extension, const w
 {
     wxChar *ext = (wxChar *)extension;
 
-    wxChar prompt[50];
-    wxString str = _("Save %s file");
-    wxSprintf(prompt, str, what);
+    wxString prompt = wxString::Format(_("Save %s file"), what);
+
+    if (*ext == wxT('.'))
+        ext++;
 
-    if (*ext == wxT('.')) ext++;
-    wxChar wild[60];
-    wxSprintf(wild, wxT("*.%s"), ext);
+    wxString wild = wxString::Format(_T("*.%s"), ext);
 
-    return wxFileSelector (prompt, (const wxChar *) NULL, default_name, ext, wild, 0, parent);
+    return wxFileSelector(prompt, (const wxChar *) NULL, default_name,
+                          ext, wild, 0, parent);
 }