]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/filedlgg.cpp
corrected wxIsAbsolutePath for new Mac Path notation
[wxWidgets.git] / src / generic / filedlgg.cpp
index 5a6e892e78bcb2a0b9c9c6b0eb8a73f8277850e4..41e6ad08d02908cebf6ce468e256952cfdf66ca7 100644 (file)
 #include <sys/stat.h>
 #include <dirent.h>
 #include <pwd.h>
 #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"
 #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 );
 
     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 );
     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();
         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++;
         {
             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();
         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++;
         {
             Add( fd, item );
             item.m_itemId++;
@@ -580,9 +582,12 @@ void wxFileCtrl::Update()
 
     SortItems( ListCompare, 0 );
 
 
     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 )
 }
 
 void wxFileCtrl::SetWild( const wxString &wild )
@@ -688,12 +693,12 @@ void wxFileCtrl::OnListDeleteAllItems( wxListEvent &WXUNUSED(event) )
     item.m_mask = wxLIST_MASK_DATA;
 
     item.m_itemId = GetNextItem( -1, wxLIST_NEXT_ALL );
     item.m_mask = wxLIST_MASK_DATA;
 
     item.m_itemId = GetNextItem( -1, wxLIST_NEXT_ALL );
-    while ( item.m_itemId != -1 ) 
+    while ( item.m_itemId != -1 )
     {
         GetItem( item );
         wxFileData *fd = (wxFileData*)item.m_data;
         delete fd;
     {
         GetItem( item );
         wxFileData *fd = (wxFileData*)item.m_data;
         delete fd;
-        item.m_data = (void*) NULL;
+        item.m_data = 0;
         SetItem( item );
         item.m_itemId = GetNextItem( item.m_itemId, wxLIST_NEXT_ALL );
     }
         SetItem( item );
         item.m_itemId = GetNextItem( item.m_itemId, wxLIST_NEXT_ALL );
     }
@@ -928,9 +933,11 @@ wxFileDialog::wxFileDialog(wxWindow *parent,
 
     Centre( wxBOTH );
 
 
     Centre( wxBOTH );
 
+/*
     if (m_fileName.IsEmpty())
         m_list->SetFocus();
     else
     if (m_fileName.IsEmpty())
         m_list->SetFocus();
     else
+*/
         m_text->SetFocus();
 
     wxEndBusyCursor();
         m_text->SetFocus();
 
     wxEndBusyCursor();
@@ -1019,7 +1026,7 @@ void wxFileDialog::HandleAction( const wxString &fn )
         return;
     }
 
         return;
     }
 
-    if (filename[0] == wxT('~'))
+    if (filename[0u] == wxT('~'))
     {
         filename.Remove( 0, 1 );
         wxString tmp( wxGetUserHome() );
     {
         filename.Remove( 0, 1 );
         wxString tmp( wxGetUserHome() );
@@ -1041,7 +1048,7 @@ void wxFileDialog::HandleAction( const wxString &fn )
     }
 
     if (dir != wxT("/")) dir += wxT("/");
     }
 
     if (dir != wxT("/")) dir += wxT("/");
-    if (filename[0] != wxT('/'))
+    if (filename[0u] != wxT('/'))
     {
         dir += filename;
         filename = dir;
     {
         dir += filename;
         filename = dir;
@@ -1090,6 +1097,18 @@ void wxFileDialog::HandleAction( const wxString &fn )
 
     SetPath( filename );
 
 
     SetPath( filename );
 
+    // change to the directory where the user went if asked
+    if ( m_dialogStyle & wxCHANGE_DIR )
+    {
+        wxString cwd;
+        wxSplitPath(filename, &cwd, NULL, NULL);
+
+        if ( cwd != wxGetWorkingDirectory() )
+        {
+            wxSetWorkingDirectory(cwd);
+        }
+    }
+
     wxCommandEvent event;
     wxDialog::OnOK(event);
 }
     wxCommandEvent event;
     wxDialog::OnOK(event);
 }
@@ -1171,7 +1190,7 @@ void wxFileDialog::GetPaths( wxArrayString& paths ) const
     item.m_mask = wxLIST_MASK_TEXT;
 
     item.m_itemId = m_list->GetNextItem( -1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED );
     item.m_mask = wxLIST_MASK_TEXT;
 
     item.m_itemId = m_list->GetNextItem( -1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED );
-    while ( item.m_itemId != -1 ) 
+    while ( item.m_itemId != -1 )
     {
         m_list->GetItem( item );
         paths.Add( dir + item.m_text );
     {
         m_list->GetItem( item );
         paths.Add( dir + item.m_text );
@@ -1194,7 +1213,7 @@ void wxFileDialog::GetFilenames(wxArrayString& files) const
     item.m_mask = wxLIST_MASK_TEXT;
 
     item.m_itemId = m_list->GetNextItem( -1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED );
     item.m_mask = wxLIST_MASK_TEXT;
 
     item.m_itemId = m_list->GetNextItem( -1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED );
-    while ( item.m_itemId != -1 ) 
+    while ( item.m_itemId != -1 )
     {
         m_list->GetItem( item );
         files.Add( item.m_text );
     {
         m_list->GetItem( item );
         files.Add( item.m_text );
@@ -1255,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,
 }
 
 wxString wxSaveFileSelector(const wxChar *what, const wxChar *extension, const wxChar *default_name,
@@ -1275,15 +1292,15 @@ wxString wxSaveFileSelector(const wxChar *what, const wxChar *extension, const w
 {
     wxChar *ext = (wxChar *)extension;
 
 {
     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);
 }
 
 
 }