]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/filedlgg.cpp
Moved the cleanup code to an EVT_WINDOW_DESTROY handler.
[wxWidgets.git] / src / generic / filedlgg.cpp
index 9e43121fbcb37a3bc5d01df1f9d6dc037cee88b7..bc618a23454dcdd502d3e1a6ca5ff4177cf52597 100644 (file)
@@ -46,6 +46,7 @@
 #include "wx/config.h"
 #include "wx/imaglist.h"
 #include "wx/dir.h"
+#include "wx/artprov.h"
 
 #if wxUSE_TOOLTIPS
     #include "wx/tooltip.h"
 # include <time.h>
 #include <unistd.h>
 
-// XPM hack: make the arrays const
-#define static static const
-
-#ifndef __DOS__
-#include "wx/generic/home.xpm"
-#endif
-#include "wx/generic/listview.xpm"
-#include "wx/generic/repview.xpm"
-#include "wx/generic/new_dir.xpm"
-#include "wx/generic/dir_up.xpm"
-#include "wx/generic/folder.xpm"
-#include "wx/generic/deffile.xpm"
-#include "wx/generic/exefile.xpm"
-
-#undef static
-
 //-----------------------------------------------------------------------------
 //  wxFileData
 //-----------------------------------------------------------------------------
@@ -211,11 +196,14 @@ wxFileIconsTable::wxFileIconsTable() :
                     m_HashTable(wxKEY_STRING)
 {
     m_HashTable.DeleteContents(TRUE);
-    m_ImageList.Add(wxBitmap(folder_xpm));  // FI_FOLDER
-    m_ImageList.Add(wxBitmap(deffile_xpm)); // FI_UNKNOWN
+    // FI_FOLDER:
+    m_ImageList.Add(wxArtProvider::GetBitmap(wxART_FOLDER, wxART_CMN_DIALOG));
+    // FI_UNKNOWN:
+    m_ImageList.Add(wxArtProvider::GetBitmap(wxART_NORMAL_FILE, wxART_CMN_DIALOG)); 
+    // FI_EXECUTABLE:
     if (GetIconID(wxEmptyString, _T("application/x-executable")) == FI_UNKNOWN)
-    {                                       // FI_EXECUTABLE
-        m_ImageList.Add(wxBitmap(exefile_xpm));
+    {
+        m_ImageList.Add(wxArtProvider::GetBitmap(wxART_EXECUTABLE_FILE, wxART_CMN_DIALOG));
         m_HashTable.Delete(_T("exe"));
         m_HashTable.Put(_T("exe"), new wxFileIconEntry(FI_EXECUTABLE));
     }
@@ -275,7 +263,7 @@ static wxBitmap CreateAntialiasedBitmap(const wxImage& img)
         p1 += 32 * 3, p2 += 32 * 3;
     }
 
-    return small.ConvertToBitmap();
+    return wxBitmap(small);
 }
 
 // finds empty borders and return non-empty area of image:
@@ -344,12 +332,12 @@ int wxFileIconsTable::GetIconID(const wxString& extension, const wxString& mime)
         m_HashTable.Put(extension, new wxFileIconEntry(newid));
         return newid;
     }
-    wxImage img(ic);
+    wxImage img = ic.ConvertToImage();
     delete ft;
 
     int id = m_ImageList.GetImageCount();
     if (img.GetWidth() == 16 && img.GetHeight() == 16)
-        m_ImageList.Add(img.ConvertToBitmap());
+        m_ImageList.Add(wxBitmap(img));
     else
     {
         if (img.GetWidth() != 32 || img.GetHeight() != 32)
@@ -1071,13 +1059,15 @@ wxFileDialog::wxFileDialog(wxWindow *parent,
 
     wxBitmapButton *but;
 
-    but = new wxBitmapButton( this, ID_LIST_MODE, wxBitmap( listview_xpm ) );
+    but = new wxBitmapButton(this, ID_LIST_MODE, 
+                             wxArtProvider::GetBitmap(wxART_LIST_VIEW, wxART_CMN_DIALOG));
 #if wxUSE_TOOLTIPS
     but->SetToolTip( _("View files as a list view") );
 #endif
     buttonsizer->Add( but, 0, wxALL, 5 );
 
-    but = new wxBitmapButton( this, ID_REPORT_MODE, wxBitmap( repview_xpm ) );
+    but = new wxBitmapButton(this, ID_REPORT_MODE,
+                             wxArtProvider::GetBitmap(wxART_REPORT_VIEW, wxART_CMN_DIALOG));
 #if wxUSE_TOOLTIPS
     but->SetToolTip( _("View files as a detailed view") );
 #endif
@@ -1086,14 +1076,16 @@ wxFileDialog::wxFileDialog(wxWindow *parent,
     buttonsizer->Add( 30, 5, 1 );
 
     wxWindow *butDirUp = 
-        new wxBitmapButton( this, ID_UP_DIR, wxBitmap( dir_up_xpm ) );
+        new wxBitmapButton(this, ID_UP_DIR,
+                           wxArtProvider::GetBitmap(wxART_GO_DIR_UP, wxART_CMN_DIALOG));
 #if wxUSE_TOOLTIPS
     butDirUp->SetToolTip( _("Go to parent directory") );
 #endif
     buttonsizer->Add( butDirUp, 0, wxALL, 5 );
 
 #ifndef __DOS__ // VS: Home directory is meaningless in MS-DOS...
-    but = new wxBitmapButton( this, ID_PARENT_DIR, wxBitmap(home_xpm) );
+    but = new wxBitmapButton(this, ID_PARENT_DIR,
+                             wxArtProvider::GetBitmap(wxART_GO_HOME, wxART_CMN_DIALOG));
 #if wxUSE_TOOLTIPS
     but->SetToolTip( _("Go to home directory") );
 #endif
@@ -1103,16 +1095,23 @@ wxFileDialog::wxFileDialog(wxWindow *parent,
 #endif //!__DOS__
 
     wxWindow *butNewDir = 
-        new wxBitmapButton( this, ID_NEW_DIR, wxBitmap(new_dir_xpm) );
+        new wxBitmapButton(this, ID_NEW_DIR,
+                           wxArtProvider::GetBitmap(wxART_NEW_DIR, wxART_CMN_DIALOG));
 #if wxUSE_TOOLTIPS
     butNewDir->SetToolTip( _("Create new directory") );
 #endif
     buttonsizer->Add( butNewDir, 0, wxALL, 5 );
 
+#ifdef __WXX11__
+    mainsizer->Add( buttonsizer, 0, wxALL | wxEXPAND, 0 );
+#else
     mainsizer->Add( buttonsizer, 0, wxALL | wxEXPAND, 5 );
+#endif
 
     wxBoxSizer *staticsizer = new wxBoxSizer( wxHORIZONTAL );
+#ifndef __WXX11__
     staticsizer->Add( new wxStaticText( this, -1, _("Current directory:") ), 0, wxRIGHT, 10 );
+#endif
     m_static = new wxStaticText( this, -1, m_dir );
     staticsizer->Add( m_static, 1 );
     mainsizer->Add( staticsizer, 0, wxEXPAND | wxLEFT|wxRIGHT|wxBOTTOM, 10 );
@@ -1126,7 +1125,31 @@ wxFileDialog::wxFileDialog(wxWindow *parent,
     m_list->ShowHidden(s_lastShowHidden);
     m_list->SetNewDirControl(butNewDir);
     m_list->SetGoToParentControl(butDirUp);
+
+#ifdef __WXX11__
+    // PDAs have a different screen layout
+    mainsizer->Add( m_list, 1, wxEXPAND | wxLEFT|wxRIGHT, 5 );
+
+    wxBoxSizer *choicesizer = new wxBoxSizer( wxHORIZONTAL );
+    m_choice = new wxChoice( this, ID_CHOICE );
+    choicesizer->Add( m_choice, 1, wxCENTER|wxALL, 5 );
+    mainsizer->Add( choicesizer, 0, wxEXPAND );
     
+    wxBoxSizer *textsizer = new wxBoxSizer( wxHORIZONTAL );
+    m_text = new wxTextCtrl( this, ID_TEXT, m_fileName, wxDefaultPosition, wxDefaultSize, wxPROCESS_ENTER );
+    textsizer->Add( m_text, 1, wxCENTER | wxALL, 5 );
+    mainsizer->Add( textsizer, 0, wxEXPAND );
+
+    m_check = new wxCheckBox( this, ID_CHECK, _("Show hidden files") );
+    m_check->SetValue( s_lastShowHidden );
+    textsizer->Add( m_check, 0, wxCENTER|wxALL, 5 );
+    
+    buttonsizer = new wxBoxSizer( wxHORIZONTAL );
+    buttonsizer->Add( new wxButton( this, wxID_OK, _("OK") ), 0, wxCENTER | wxALL, 5 );
+    buttonsizer->Add( new wxButton( this, wxID_CANCEL, _("Cancel") ), 0, wxCENTER | wxALL, 5 );
+    mainsizer->Add( buttonsizer, 0, wxALIGN_RIGHT );
+
+#else
     mainsizer->Add( m_list, 1, wxEXPAND | wxLEFT|wxRIGHT, 10 );
 
     wxBoxSizer *textsizer = new wxBoxSizer( wxHORIZONTAL );
@@ -1144,6 +1167,8 @@ wxFileDialog::wxFileDialog(wxWindow *parent,
     choicesizer->Add( new wxButton( this, wxID_CANCEL, _("Cancel") ), 0, wxCENTER | wxALL, 10 );
     mainsizer->Add( choicesizer, 0, wxEXPAND );
 
+#endif
+
     m_choice->Append( firstWildText, (void*) new wxString( firstWild ) );
     while (tokens.HasMoreTokens())
     {
@@ -1378,6 +1403,8 @@ void wxFileDialog::OnHome( wxCommandEvent &WXUNUSED(event) )
     wxString dir;
     m_list->GetDir( dir );
     m_static->SetLabel( dir );
+    
+    m_text->SetFocus();
 }
 
 void wxFileDialog::OnNew( wxCommandEvent &WXUNUSED(event) )