]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/filedlgg.cpp
Don't complain under MicroWindows if a wxDC's HDC is NULL - it happens
[wxWidgets.git] / src / generic / filedlgg.cpp
index ed7c974c9b498edb625df333d8cf1a822c984408..2d418f1064f4f1bb808d976333f3237496835582 100644 (file)
@@ -20,6 +20,8 @@
 #pragma hdrstop
 #endif
 
+#if wxUSE_FILEDLG
+
 #ifndef __UNIX__
 #error wxFileDialog currently only supports unix
 #endif
@@ -557,7 +559,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++;
@@ -572,7 +574,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++;
@@ -582,9 +584,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 )
@@ -1023,7 +1028,7 @@ void wxFileDialog::HandleAction( const wxString &fn )
         return;
     }
 
-    if (filename[0] == wxT('~'))
+    if (filename[0u] == wxT('~'))
     {
         filename.Remove( 0, 1 );
         wxString tmp( wxGetUserHome() );
@@ -1045,7 +1050,7 @@ void wxFileDialog::HandleAction( const wxString &fn )
     }
 
     if (dir != wxT("/")) dir += wxT("/");
-    if (filename[0] != wxT('/'))
+    if (filename[0u] != wxT('/'))
     {
         dir += filename;
         filename = dir;
@@ -1094,6 +1099,18 @@ void wxFileDialog::HandleAction( const wxString &fn )
 
     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);
 }
@@ -1259,19 +1276,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,
@@ -1279,15 +1294,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);
 }
 
 
@@ -1307,3 +1322,5 @@ public:
 };
 
 IMPLEMENT_DYNAMIC_CLASS(wxFileDialogGenericModule, wxModule)
+
+#endif // wxUSE_FILEDLG