lstat( m_filePath.fn_str(), &buff );
m_type |= S_ISLNK( buff.st_mode ) != 0 ? is_link : 0;
#else // no lstat()
+ // only translate to file charset if we don't go by our
+ // wxStat implementation
+#ifndef wxNEED_WX_UNISTD_H
+ wxStat( m_filePath.fn_str() , &buff );
+#else
wxStat( m_filePath, &buff );
+#endif
#endif
m_type |= (buff.st_mode & S_IFDIR) != 0 ? is_dir : 0;
}
}
- m_size = buff.st_size;
+ m_size = (long)buff.st_size;
m_dateTime = buff.st_mtime;
fd->ReadData();
SetItemText(item, fd->GetFileName());
- SetItemImage(item, fd->GetImageId(), fd->GetImageId());
+ SetItemImage(item, fd->GetImageId());
if (GetWindowStyleFlag() & wxLC_REPORT)
{
const wxString& defaultFile,
const wxString& wildCard,
long style,
- const wxPoint& pos )
+ const wxPoint& pos,
+ bool bypassGenericImpl )
:wxFileDialogBase(parent, message, defaultDir, defaultFile, wildCard, style, pos)
{
- wxDialog::Create( parent, wxID_ANY, message, pos, wxDefaultSize,
- wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER );
+ m_bypassGenericImpl = bypassGenericImpl;
+
+ if (!m_bypassGenericImpl)
+ Create( parent, message, defaultDir, defaultFile, wildCard, style, pos );
+}
+
+bool wxGenericFileDialog::Create( wxWindow *parent,
+ const wxString& message,
+ const wxString& defaultDir,
+ const wxString& defaultFile,
+ const wxString& wildCard,
+ long style,
+ const wxPoint& pos )
+{
+ if (!wxDialog::Create( parent, wxID_ANY, message, pos, wxDefaultSize,
+ wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER ))
+ {
+ return false;
+ }
if (wxConfig::Get(false))
{
m_path += defaultFile;
m_filterExtension = wxEmptyString;
- // interpret wildcards
- wxArrayString wildDescriptions, wildFilters;
- if ( !wxParseCommonDialogsFilter(m_wildCard, wildDescriptions, wildFilters) )
- {
- wxFAIL_MSG( wxT("Wrong file type description") );
- }
-
// layout
bool is_pda = (wxSystemSettings::GetScreenType() <= wxSYS_SCREEN_PDA);
style2 |= wxLC_SINGLE_SEL;
m_list = new wxFileCtrl( this, ID_LIST_CTRL,
- wildFilters[0], ms_lastShowHidden,
+ _T(""), ms_lastShowHidden,
wxDefaultPosition, wxSize(540,200),
style2);
mainsizer->Add( choicesizer, 0, wxEXPAND );
}
- for (size_t n=0; n<wildFilters.GetCount(); n++)
- {
- m_choice->Append( wildDescriptions[n], (void*) new wxString( wildFilters[n] ) );
- }
- SetFilterIndex( 0 );
+ SetWildcard(wildCard);
SetAutoLayout( true );
SetSizer( mainsizer );
Centre( wxBOTH );
m_text->SetFocus();
+
+ return true;
}
wxGenericFileDialog::~wxGenericFileDialog()
{
- if (wxConfig::Get(false))
+ if (!m_bypassGenericImpl)
{
- wxConfig::Get()->Write(wxT("/wxWindows/wxFileDialog/ViewStyle"),
- ms_lastViewStyle);
- wxConfig::Get()->Write(wxT("/wxWindows/wxFileDialog/ShowHidden"),
- ms_lastShowHidden);
- }
+ if (wxConfig::Get(false))
+ {
+ wxConfig::Get()->Write(wxT("/wxWindows/wxFileDialog/ViewStyle"),
+ ms_lastViewStyle);
+ wxConfig::Get()->Write(wxT("/wxWindows/wxFileDialog/ShowHidden"),
+ ms_lastShowHidden);
+ }
- const int count = m_choice->GetCount();
- for ( int i = 0; i < count; i++ )
- {
- delete (wxString *)m_choice->GetClientData(i);
+ const int count = m_choice->GetCount();
+ for ( int i = 0; i < count; i++ )
+ {
+ delete (wxString *)m_choice->GetClientData(i);
+ }
}
}
}
}
+void wxGenericFileDialog::SetWildcard(const wxString& wildCard)
+{
+ wxFileDialogBase::SetWildcard(wildCard);
+
+ wxArrayString wildDescriptions, wildFilters;
+ const size_t count = wxParseCommonDialogsFilter(m_wildCard,
+ wildDescriptions,
+ wildFilters);
+ wxCHECK_RET( count, wxT("wxFileDialog: bad wildcard string") );
+
+ m_choice->Clear();
+ for ( size_t n = 0; n < count; n++ )
+ {
+ m_choice->Append( wildDescriptions[n], new wxString( wildFilters[n] ) );
+ }
+
+ SetFilterIndex( 0 );
+}
+
void wxGenericFileDialog::SetFilterIndex( int filterindex )
{
m_choice->SetSelection( filterindex );
if (filename.BeforeFirst(wxT('/')) == wxT("~"))
{
- filename = wxGetUserHome() + filename.Remove(0, 1);
+ filename = wxString(wxGetUserHome()) + filename.Remove(0, 1);
}
#endif // __UNIX__