X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0d853c5412a1628f1bcad5f9043050e7cf105ac7..3a7c125370cf6fd2b66eb06ba031efcfd5c5b9b0:/src/generic/dirctrlg.cpp diff --git a/src/generic/dirctrlg.cpp b/src/generic/dirctrlg.cpp index 28e393d177..ef8e77e1ad 100644 --- a/src/generic/dirctrlg.cpp +++ b/src/generic/dirctrlg.cpp @@ -73,16 +73,17 @@ #endif -#ifdef __OS2__ - -#define INCL_BASE -#include -#ifndef __EMX__ -#include -#endif -#include -#include -extern bool wxIsDriveAvailable(const wxString& dirName); +#if defined(__OS2__) || defined(__DOS__) + #ifdef __OS2__ + #define INCL_BASE + #include + #ifndef __EMX__ + #include + #endif + #include + #include + #endif + extern bool wxIsDriveAvailable(const wxString& dirName); #endif // __OS2__ #if defined(__WXMAC__) @@ -511,6 +512,7 @@ wxBEGIN_PROPERTIES_TABLE(wxGenericDirCtrl) wxPROPERTY( DefaultPath , wxString , SetDefaultPath , GetDefaultPath , , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) wxPROPERTY( Filter , wxString , SetFilter , GetFilter ,, 0 /*flags*/ , wxT("Helpstring") , wxT("group") ) wxPROPERTY( DefaultFilter , int , SetFilterIndex, GetFilterIndex,, 0 /*flags*/ , wxT("Helpstring") , wxT("group") ) + wxPROPERTY_FLAGS( WindowStyle, wxGenericDirCtrlStyle, long, SetWindowStyleFlag, GetWindowStyleFlag, , 0, wxT("Helpstring"), wxT("group") ) wxEND_PROPERTIES_TABLE() wxBEGIN_HANDLERS_TABLE(wxGenericDirCtrl) @@ -818,7 +820,7 @@ void wxGenericDirCtrl::ExpandDir(wxTreeItemId parentId) dirs.Add(eachFilename); } } - while (d.GetNext(& eachFilename)); + while (d.GetNext(&eachFilename)); } } dirs.Sort(wxDirCtrlStringCompareFunction); @@ -832,16 +834,26 @@ void wxGenericDirCtrl::ExpandDir(wxTreeItemId parentId) if (d.IsOpened()) { - if (d.GetFirst(& eachFilename, m_currentFilterStr, wxDIR_FILES)) + int style = wxDIR_FILES; + if (m_showHidden) style |= wxDIR_HIDDEN; + // Process each filter (ex: "JPEG Files (*.jpg;*.jpeg)|*.jpg;*.jpeg") + wxStringTokenizer strTok; + wxString curFilter; + strTok.SetString(m_currentFilterStr,wxT(";")); + while(strTok.HasMoreTokens()) { - do + curFilter = strTok.GetNextToken(); + if (d.GetFirst(& eachFilename, m_currentFilterStr, style)) { - if ((eachFilename != wxT(".")) && (eachFilename != wxT(".."))) + do { - filenames.Add(eachFilename); + if ((eachFilename != wxT(".")) && (eachFilename != wxT(".."))) + { + filenames.Add(eachFilename); + } } + while (d.GetNext(& eachFilename)); } - while (d.GetNext(& eachFilename)); } } filenames.Sort(wxDirCtrlStringCompareFunction); @@ -1522,7 +1534,9 @@ wxImageList *wxFileIconsTable::GetSmallImageList() static wxBitmap CreateAntialiasedBitmap(const wxImage& img) { - wxImage smallimg (16, 16); + const unsigned int size = 16; + + wxImage smallimg (size, size); unsigned char *p1, *p2, *ps; unsigned char mr = img.GetMaskRed(), mg = img.GetMaskGreen(), @@ -1531,12 +1545,12 @@ static wxBitmap CreateAntialiasedBitmap(const wxImage& img) unsigned x, y; unsigned sr, sg, sb, smask; - p1 = img.GetData(), p2 = img.GetData() + 3 * 32, ps = smallimg.GetData(); + p1 = img.GetData(), p2 = img.GetData() + 3 * size*2, ps = smallimg.GetData(); smallimg.SetMaskColour(mr, mr, mr); - for (y = 0; y < 16; y++) + for (y = 0; y < size; y++) { - for (x = 0; x < 16; x++) + for (x = 0; x < size; x++) { sr = sg = sb = smask = 0; if (p1[0] != mr || p1[1] != mg || p1[2] != mb) @@ -1562,9 +1576,9 @@ static wxBitmap CreateAntialiasedBitmap(const wxImage& img) ps[0] = sr >> 2, ps[1] = sg >> 2, ps[2] = sb >> 2; ps += 3; } - p1 += 32 * 3, p2 += 32 * 3; + p1 += size*2 * 3, p2 += size*2 * 3; } - + return wxBitmap(smallimg); } @@ -1631,11 +1645,15 @@ int wxFileIconsTable::GetIconID(const wxString& extension, const wxString& mime) wxIconLocation iconLoc; wxIcon ic; - if ( ft && ft->GetIcon(&iconLoc) ) + { - ic = wxIcon(iconLoc); + wxLogNull logNull; + if ( ft && ft->GetIcon(&iconLoc) ) + { + ic = wxIcon( iconLoc.GetFileName() ); + } } - + delete ft; if ( !ic.Ok() ) @@ -1645,20 +1663,34 @@ int wxFileIconsTable::GetIconID(const wxString& extension, const wxString& mime) return newid; } - wxBitmap tmpBmp; - tmpBmp.CopyFromIcon(ic); - wxImage img = tmpBmp.ConvertToImage(); + wxBitmap bmp; + bmp.CopyFromIcon(ic); + if ( !bmp.Ok() ) + { + int newid = file; + m_HashTable->Put(extension, new wxFileIconEntry(newid)); + return newid; + } + + const unsigned int size = 16; + int id = m_smallImageList->GetImageCount(); - if (img.GetWidth() == 16 && img.GetHeight() == 16) - m_smallImageList->Add(wxBitmap(img)); + if ((bmp.GetWidth() == size) && (bmp.GetHeight() == size)) + { + m_smallImageList->Add(bmp); + } else { - if (img.GetWidth() != 32 || img.GetHeight() != 32) - m_smallImageList->Add(CreateAntialiasedBitmap(CutEmptyBorders(img).Rescale(32, 32))); + wxImage img = bmp.ConvertToImage(); + + if ((img.GetWidth() != size*2) || (img.GetHeight() != size*2)) +// m_smallImageList->Add(CreateAntialiasedBitmap(CutEmptyBorders(img).Rescale(size*2, size*2))); + m_smallImageList->Add(CreateAntialiasedBitmap(img.Rescale(size*2, size*2))); else m_smallImageList->Add(CreateAntialiasedBitmap(img)); } + m_HashTable->Put(extension, new wxFileIconEntry(id)); return id;