X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b600ed13625645eb985acf49eecd06fd111eb061..7b70a3257f24daa4d574afd03c82e65631af1f2b:/src/generic/filedlgg.cpp diff --git a/src/generic/filedlgg.cpp b/src/generic/filedlgg.cpp index f1fa6a4c9f..6f301a8f23 100644 --- a/src/generic/filedlgg.cpp +++ b/src/generic/filedlgg.cpp @@ -9,7 +9,7 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "filedlgg.h" #endif @@ -23,7 +23,7 @@ #if wxUSE_FILEDLG // NOTE : it probably also supports MAC, untested -#if !defined(__UNIX__) && !defined(__DOS__) && !defined(__WIN32__) +#if !defined(__UNIX__) && !defined(__DOS__) && !defined(__WIN32__) && !defined(__OS2__) #error wxGenericFileDialog currently only supports Unix, win32 and DOS #endif @@ -63,6 +63,11 @@ #endif #endif +#ifdef __WINDOWS__ + #include "wx/msw/wrapwin.h" + #include "wx/msw/mslu.h" +#endif + #ifdef __WATCOMC__ #include #endif @@ -77,7 +82,7 @@ // ---------------------------------------------------------------------------- static -int wxFileDataNameCompare( long data1, long data2, long data) +int wxCALLBACK wxFileDataNameCompare( long data1, long data2, long data) { wxFileData *fd1 = (wxFileData*)data1; wxFileData *fd2 = (wxFileData*)data2; @@ -89,7 +94,7 @@ int wxFileDataNameCompare( long data1, long data2, long data) } static -int wxFileDataSizeCompare( long data1, long data2, long data) +int wxCALLBACK wxFileDataSizeCompare( long data1, long data2, long data) { wxFileData *fd1 = (wxFileData*)data1; wxFileData *fd2 = (wxFileData*)data2; @@ -103,7 +108,7 @@ int wxFileDataSizeCompare( long data1, long data2, long data) } static -int wxFileDataTypeCompare( long data1, long data2, long data) +int wxCALLBACK wxFileDataTypeCompare( long data1, long data2, long data) { wxFileData *fd1 = (wxFileData*)data1; wxFileData *fd2 = (wxFileData*)data2; @@ -117,7 +122,7 @@ int wxFileDataTypeCompare( long data1, long data2, long data) } static -int wxFileDataTimeCompare( long data1, long data2, long data) +int wxCALLBACK wxFileDataTimeCompare( long data1, long data2, long data) { wxFileData *fd1 = (wxFileData*)data1; wxFileData *fd2 = (wxFileData*)data2; @@ -129,11 +134,11 @@ int wxFileDataTimeCompare( long data1, long data2, long data) return fd1->GetDateTime().IsLaterThan(fd2->GetDateTime()) ? int(data) : -int(data); } -#ifdef __UNIX__ +#if defined(__UNIX__) && !defined(__OS2__) #define IsTopMostDir(dir) (dir == wxT("/")) #endif -#if defined(__DOS__) || defined(__WINDOWS__) +#if defined(__DOS__) || defined(__WINDOWS__) || defined (__OS2__) #define IsTopMostDir(dir) (dir.IsEmpty()) #endif @@ -178,9 +183,9 @@ void wxFileData::ReadData() return; } -#if defined(__DOS__) || defined(__WINDOWS__) +#if defined(__DOS__) || defined(__WINDOWS__) || defined(__OS2__) // c:\.. is a drive don't stat it - if ((fileName == wxT("..")) && (filePath.length() <= 5)) + if ((m_fileName == wxT("..")) && (m_filePath.length() <= 5)) { m_type = is_drive; m_size = 0; @@ -190,7 +195,7 @@ void wxFileData::ReadData() wxStructStat buff; -#if defined(__UNIX__) && (!defined( __EMX__ ) && !defined(__VMS)) +#if defined(__UNIX__) && (!defined( __OS2__ ) && !defined(__VMS)) lstat( m_filePath.fn_str(), &buff ); m_type |= S_ISLNK( buff.st_mode ) != 0 ? is_link : 0; #else // no lstat() @@ -225,7 +230,7 @@ void wxFileData::ReadData() buff.st_mode & wxS_IWOTH ? _T('w') : _T('-'), buff.st_mode & wxS_IXOTH ? _T('x') : _T('-')); #elif defined(__WIN32__) - DWORD attribs = GetFileAttributes(filePath); + DWORD attribs = GetFileAttributes(m_filePath); if (attribs != (DWORD)-1) { m_permissions.Printf(_T("%c%c%c%c"), @@ -338,8 +343,9 @@ void wxFileData::MakeItem( wxListItem &item ) if (IsLink()) { - wxColour *dg = wxTheColourDatabase->FindColour( _T("MEDIUM GREY") ); - item.SetTextColour(*dg); + wxColour dg = wxTheColourDatabase->Find( _T("MEDIUM GREY") ); + if ( dg.Ok() ) + item.SetTextColour(dg); } item.m_data = (long)this; } @@ -485,12 +491,11 @@ void wxFileCtrl::UpdateFiles() FreeAllItemsData(); DeleteAllItems(); - wxFileData *fd = (wxFileData *) NULL; wxListItem item; item.m_itemId = 0; item.m_col = 0; -#if defined(__WINDOWS__) || defined(__DOS__) || defined(__WXMAC__) || defined(__WXPM__) +#if defined(__WINDOWS__) || defined(__DOS__) || defined(__WXMAC__) || defined(__OS2__) if ( IsTopMostDir(m_dirName) ) { wxArrayString names, paths; @@ -499,7 +504,7 @@ void wxFileCtrl::UpdateFiles() for (n=0; nRead(wxT("/wxWindows/wxFileDialog/ViewStyle"), @@ -848,15 +855,11 @@ wxGenericFileDialog::wxGenericFileDialog(wxWindow *parent, &ms_lastShowHidden); } - m_message = message; - m_dialogStyle = style; - if (m_dialogStyle == 0) m_dialogStyle = wxOPEN; if ((m_dialogStyle & wxMULTIPLE ) && !(m_dialogStyle & wxOPEN)) m_dialogStyle |= wxOPEN; - m_dir = defaultDir; if ((m_dir.empty()) || (m_dir == wxT("."))) { m_dir = wxGetCwd(); @@ -869,28 +872,13 @@ wxGenericFileDialog::wxGenericFileDialog(wxWindow *parent, m_path = m_dir; m_path += wxFILE_SEP_PATH; m_path += defaultFile; - m_fileName = defaultFile; - m_wildCard = wildCard; - m_filterIndex = 0; m_filterExtension = wxEmptyString; // interpret wildcards - - if (m_wildCard.IsEmpty()) - m_wildCard = _("All files (*)|*"); - wxArrayString wildDescriptions, wildFilters; - int wild_count = wxParseFileFilter(m_wildCard, wildDescriptions, wildFilters); - - wxASSERT_MSG(wild_count > 0, wxT("Wrong file type descripition") ); - - // if error parsing, add default back - if (wildFilters.GetCount() < 1u) + if ( !ParseWildcard(m_wildCard, wildDescriptions, wildFilters) ) { - wild_count = 1; - m_wildCard = _("All files (*)|*"); - wildDescriptions.Add(_("All files (*)")); - wildFilters.Add(wxT("*")); + wxFAIL_MSG( wxT("Wrong file type description") ); } // layout @@ -1212,13 +1200,7 @@ void wxGenericFileDialog::HandleAction( const wxString &fn ) // file without extension as well? if ( !(m_dialogStyle & wxOPEN) || !wxFileExists(filename) ) { - wxString ext; - wxSplitPath(filename, NULL, NULL, &ext); - if ( ext.empty() ) - { - // append the first extension of the filter string - filename += m_filterExtension.BeforeFirst(_T(';')); - } + filename = AppendExtension(filename, m_filterExtension); } // check that the file [doesn't] exist if necessary @@ -1227,8 +1209,7 @@ void wxGenericFileDialog::HandleAction( const wxString &fn ) wxFileExists( filename ) ) { wxString msg; - msg.Printf( _("File '%s' already exists, do you really want to " - "overwrite it?"), filename.c_str() ); + msg.Printf( _("File '%s' already exists, do you really want to overwrite it?"), filename.c_str() ); if (wxMessageBox(msg, _("Confirm"), wxYES_NO) != wxYES) return; @@ -1249,7 +1230,7 @@ void wxGenericFileDialog::HandleAction( const wxString &fn ) wxString cwd; wxSplitPath(filename, &cwd, NULL, NULL); - if ( cwd != wxGetWorkingDirectory() ) + if ( cwd != wxGetCwd() ) { wxSetWorkingDirectory(cwd); } @@ -1374,9 +1355,9 @@ void wxGenericFileDialog::UpdateControls() bool enable = !IsTopMostDir(dir); m_upDirButton->Enable(enable); -#if defined(__DOS__) || defined(__WINDOWS__) +#if defined(__DOS__) || defined(__WINDOWS__) || defined(__OS2__) m_newDirButton->Enable(enable); -#endif // defined(__DOS__) || defined(__WINDOWS__) +#endif // defined(__DOS__) || defined(__WINDOWS__) || defined(__OS2__) } #ifdef USE_GENERIC_FILEDIALOG