]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/dirctrlg.cpp
Committing in .
[wxWidgets.git] / src / generic / dirctrlg.cpp
index 027add20e7d2c0775102c690dc0a39ac5a4bd0ed..2a98d67f83b24e7228c7154a778591b047107fa2 100644 (file)
@@ -47,6 +47,7 @@
 #include "wx/generic/dirctrlg.h"
 
 #ifdef __WXMSW__
 #include "wx/generic/dirctrlg.h"
 
 #ifdef __WXMSW__
+#include <windows.h>
 #include <direct.h>
 #include <stdlib.h>
 #include <ctype.h>
 #include <direct.h>
 #include <stdlib.h>
 #include <ctype.h>
@@ -121,9 +122,9 @@ static char * icon3_xpm[] = {
 /* width height ncolors chars_per_pixel */
 "16 16 3 1",
 /* colors */
 /* width height ncolors chars_per_pixel */
 "16 16 3 1",
 /* colors */
-"      s None  c None",
-".     c #000000",
-"+     c #ffffff",
+"     s None    c None",
+".    c #000000",
+"+    c #ffffff",
 /* pixels */
 "                ",
 "  ........      ",
 /* pixels */
 "                ",
 "  ........      ",
@@ -145,13 +146,13 @@ static char * icon3_xpm[] = {
 /* Computer */
 static char * icon4_xpm[] = {
 "16 16 7 1",
 /* Computer */
 static char * icon4_xpm[] = {
 "16 16 7 1",
-"      s None  c None",
-".     c #808080",
-"X     c #c0c0c0",
-"o     c Black",
-"O     c Gray100",
-"+     c #008080",
-"@     c Blue",
+"     s None    c None",
+".    c #808080",
+"X    c #c0c0c0",
+"o    c Black",
+"O    c Gray100",
+"+    c #008080",
+"@    c Blue",
 "    ........... ",
 "   .XXXXXXXXXX.o",
 "   .OOOOOOOOO..o",
 "    ........... ",
 "   .XXXXXXXXXX.o",
 "   .OOOOOOOOO..o",
@@ -172,13 +173,13 @@ static char * icon4_xpm[] = {
 /* Drive */
 static char * icon5_xpm[] = {
 "16 16 7 1",
 /* Drive */
 static char * icon5_xpm[] = {
 "16 16 7 1",
-"      s None  c None",
-".     c #808080",
-"X     c #c0c0c0",
-"o     c Black",
-"O     c Gray100",
-"+     c Green",
-"@     c #008000",
+"     s None    c None",
+".    c #808080",
+"X    c #c0c0c0",
+"o    c Black",
+"O    c Gray100",
+"+    c Green",
+"@    c #008000",
 "                ",
 "                ",
 "                ",
 "                ",
 "                ",
 "                ",
@@ -199,16 +200,16 @@ static char * icon5_xpm[] = {
 /* CD-ROM */
 static char *icon6_xpm[] = {
 "16 16 10 1",
 /* CD-ROM */
 static char *icon6_xpm[] = {
 "16 16 10 1",
-"      s None  c None",
-".     c #808080",
-"X     c #c0c0c0",
-"o     c Yellow",
-"O     c Blue",
-"+     c Black",
-"@     c Gray100",
-"#     c #008080",
-"$     c Green",
-"%     c #008000",
+"     s None    c None",
+".    c #808080",
+"X    c #c0c0c0",
+"o    c Yellow",
+"O    c Blue",
+"+    c Black",
+"@    c Gray100",
+"#    c #008080",
+"$    c Green",
+"%    c #008000",
 "        ...     ",
 "      ..XoX..   ",
 "     .O.XoXXX+  ",
 "        ...     ",
 "      ..XoX..   ",
 "     .O.XoXXX+  ",
@@ -229,13 +230,13 @@ static char *icon6_xpm[] = {
 /* Floppy */
 static char * icon7_xpm[] = {
 "16 16 7 1",
 /* Floppy */
 static char * icon7_xpm[] = {
 "16 16 7 1",
-"      s None  c None",
-".     c #808080",
-"X     c Gray100",
-"o     c #c0c0c0",
-"O     c Black",
-"+     c Cyan",
-"@     c Red",
+"     s None    c None",
+".    c #808080",
+"X    c Gray100",
+"o    c #c0c0c0",
+"O    c Black",
+"+    c Cyan",
+"@    c Red",
 "         ......X",
 "        .ooooooO",
 "        .+++++OO",
 "         ......X",
 "        .ooooooO",
 "        .+++++OO",
@@ -256,13 +257,13 @@ static char * icon7_xpm[] = {
 /* Removeable */
 static char * icon8_xpm[] = {
 "16 16 7 1",
 /* Removeable */
 static char * icon8_xpm[] = {
 "16 16 7 1",
-"      s None  c None",
-".     c #808080",
-"X     c #c0c0c0",
-"o     c Black",
-"O     c Gray100",
-"+     c Red",
-"@     c #800000",
+"     s None    c None",
+".    c #808080",
+"X    c #c0c0c0",
+"o    c Black",
+"O    c Gray100",
+"+    c Red",
+"@    c #800000",
 "                ",
 "                ",
 "                ",
 "                ",
 "                ",
 "                ",
@@ -292,17 +293,17 @@ static const int ID_NEW = 1004;
 static bool wxIsDriveAvailable(const wxString dirName)
 {
 #ifdef __WIN32__
 static bool wxIsDriveAvailable(const wxString dirName)
 {
 #ifdef __WIN32__
-       UINT errorMode = SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOOPENFILEERRORBOX);
+    UINT errorMode = SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOOPENFILEERRORBOX);
 #endif
 #endif
-       bool success = TRUE;
+    bool success = TRUE;
 
     // Check if this is a root directory and if so,
     // whether the drive is avaiable.
 
     // Check if this is a root directory and if so,
     // whether the drive is avaiable.
-    if (dirName.Len() == 3 && dirName[1] == wxT(':'))
+    if (dirName.Len() == 3 && dirName[(size_t)1] == wxT(':'))
     {
     {
-               wxString dirNameLower(dirName.Lower());
+        wxString dirNameLower(dirName.Lower());
         int currentDrive = _getdrive();
         int currentDrive = _getdrive();
-        int thisDrive = (int) (dirNameLower[0] - 'a' + 1) ;
+        int thisDrive = (int) (dirNameLower[(size_t)0] - 'a' + 1) ;
         int err = _chdrive( thisDrive ) ;
         _chdrive( currentDrive );
 
         int err = _chdrive( thisDrive ) ;
         _chdrive( currentDrive );
 
@@ -312,10 +313,10 @@ static bool wxIsDriveAvailable(const wxString dirName)
         }
     }
 #ifdef __WIN32__
         }
     }
 #ifdef __WIN32__
-       (void) SetErrorMode(errorMode);
+    (void) SetErrorMode(errorMode);
 #endif
 
 #endif
 
-       return success;
+    return success;
 }
 #endif
 
 }
 #endif
 
@@ -350,23 +351,23 @@ void wxDirItemDataEx::SetNewDirName( wxString path )
 
 bool wxDirItemDataEx::HasSubDirs()
 {
 
 bool wxDirItemDataEx::HasSubDirs()
 {
-       if (m_path.IsEmpty())
-               return TRUE;
+    if (m_path.IsEmpty())
+        return TRUE;
 
 
-       // On WIN32, must check if this volume is mounted or
-       // we get an error dialog for e.g. drive a:
+    // On WIN32, must check if this volume is mounted or
+    // we get an error dialog for e.g. drive a:
 #ifdef __WIN32__
 #ifdef __WIN32__
-       if (!wxIsDriveAvailable(m_path))
-               return FALSE;
+    if (!wxIsDriveAvailable(m_path))
+        return FALSE;
 #endif
 
     wxString search = m_path;
 #endif
 
     wxString search = m_path;
-       
-       if (m_path.Last() != wxFILE_SEP_PATH)
-       {
-               search += wxString(wxFILE_SEP_PATH);
-       }
-       search += wxT("*");
+    
+    if (m_path.Last() != wxFILE_SEP_PATH)
+    {
+        search += wxString(wxFILE_SEP_PATH);
+    }
+    search += wxT("*");
 
     wxLogNull log;
     wxString path = wxFindFirstFile( search, wxDIR );
 
     wxLogNull log;
     wxString path = wxFindFirstFile( search, wxDIR );
@@ -441,14 +442,14 @@ bool wxGenericDirCtrl::Create(wxWindow *parent,
     m_imageList->Add(wxIcon(icon7_xpm));
     m_imageList->Add(wxIcon(icon8_xpm));
 #elif defined(__WXMSW__)
     m_imageList->Add(wxIcon(icon7_xpm));
     m_imageList->Add(wxIcon(icon8_xpm));
 #elif defined(__WXMSW__)
-    m_imageList->Add(wxIcon(wxT("wxICON_SMALL_CLOSED_FOLDER"), wxBITMAP_TYPE_RESOURCE));
-    m_imageList->Add(wxIcon(wxT("wxICON_SMALL_OPEN_FOLDER"), wxBITMAP_TYPE_RESOURCE));
-    m_imageList->Add(wxIcon(wxT("wxICON_SMALL_FILE"), wxBITMAP_TYPE_RESOURCE));
-    m_imageList->Add(wxIcon(wxT("wxICON_SMALL_COMPUTER"), wxBITMAP_TYPE_RESOURCE));
-    m_imageList->Add(wxIcon(wxT("wxICON_SMALL_DRIVE"), wxBITMAP_TYPE_RESOURCE));
-    m_imageList->Add(wxIcon(wxT("wxICON_SMALL_CDROM"), wxBITMAP_TYPE_RESOURCE));
-    m_imageList->Add(wxIcon(wxT("wxICON_SMALL_FLOPPY"), wxBITMAP_TYPE_RESOURCE));
-    m_imageList->Add(wxIcon(wxT("wxICON_SMALL_REMOVEABLE"), wxBITMAP_TYPE_RESOURCE));
+    m_imageList->Add(wxIcon(wxT("wxICON_SMALL_CLOSED_FOLDER"), wxBITMAP_TYPE_ICO_RESOURCE));
+    m_imageList->Add(wxIcon(wxT("wxICON_SMALL_OPEN_FOLDER"), wxBITMAP_TYPE_ICO_RESOURCE));
+    m_imageList->Add(wxIcon(wxT("wxICON_SMALL_FILE"), wxBITMAP_TYPE_ICO_RESOURCE));
+    m_imageList->Add(wxIcon(wxT("wxICON_SMALL_COMPUTER"), wxBITMAP_TYPE_ICO_RESOURCE));
+    m_imageList->Add(wxIcon(wxT("wxICON_SMALL_DRIVE"), wxBITMAP_TYPE_ICO_RESOURCE));
+    m_imageList->Add(wxIcon(wxT("wxICON_SMALL_CDROM"), wxBITMAP_TYPE_ICO_RESOURCE));
+    m_imageList->Add(wxIcon(wxT("wxICON_SMALL_FLOPPY"), wxBITMAP_TYPE_ICO_RESOURCE));
+    m_imageList->Add(wxIcon(wxT("wxICON_SMALL_REMOVEABLE"), wxBITMAP_TYPE_ICO_RESOURCE));
 #else
 #error "Sorry, we don't have icons available for this platforms."
 #endif
 #else
 #error "Sorry, we don't have icons available for this platforms."
 #endif
@@ -568,7 +569,7 @@ void wxGenericDirCtrl::SetupSections()
         path.Printf(wxT("%c:\\"), (char) (drive + 'a' - 1));
         name.Printf(wxT("(%c:)"), (char) (drive + 'a' - 1));
 
         path.Printf(wxT("%c:\\"), (char) (drive + 'a' - 1));
         name.Printf(wxT("(%c:)"), (char) (drive + 'a' - 1));
 
-               if (wxIsDriveAvailable(path))
+        if (wxIsDriveAvailable(path))
         {
             
             AddSection(path, name);
         {
             
             AddSection(path, name);
@@ -700,12 +701,12 @@ void wxGenericDirCtrl::ExpandDir(wxTreeItemId parentId)
 #ifdef __WXMSW__
     // Check if this is a root directory and if so,
     // whether the drive is avaiable.
 #ifdef __WXMSW__
     // Check if this is a root directory and if so,
     // whether the drive is avaiable.
-       if (!wxIsDriveAvailable(dirName))
-       {
+    if (!wxIsDriveAvailable(dirName))
+    {
         data->m_isExpanded = FALSE;
         wxMessageBox(wxT("Sorry, this drive is not available."));
         data->m_isExpanded = FALSE;
         wxMessageBox(wxT("Sorry, this drive is not available."));
-               return;
-       }
+          return;
+    }
 #endif
 
     // This may take a longish time. Go to busy cursor
 #endif
 
     // This may take a longish time. Go to busy cursor
@@ -722,6 +723,7 @@ void wxGenericDirCtrl::ExpandDir(wxTreeItemId parentId)
     wxDir d;
     wxString eachFilename;
 
     wxDir d;
     wxString eachFilename;
 
+    wxLogNull log;
     d.Open(dirName);
 
     if (d.IsOpened())
     d.Open(dirName);
 
     if (d.IsOpened())
@@ -743,6 +745,8 @@ void wxGenericDirCtrl::ExpandDir(wxTreeItemId parentId)
     // Now do the filenames -- but only if we're allowed to
     if ((GetWindowStyle() & wxDIRCTRL_DIR_ONLY) == 0)
     {
     // Now do the filenames -- but only if we're allowed to
     if ((GetWindowStyle() & wxDIRCTRL_DIR_ONLY) == 0)
     {
+        wxLogNull log;
+
         d.Open(dirName);
         
         if (d.IsOpened())
         d.Open(dirName);
         
         if (d.IsOpened())
@@ -783,14 +787,18 @@ void wxGenericDirCtrl::ExpandDir(wxTreeItemId parentId)
             options = wxDIR_DIRS;
         }
 
             options = wxDIR_DIRS;
         }
 
-        wxDir dir2(path);
-        wxString str;
-        // Have to test for wxDIR_DIRS separately in case m_currentFilterStr is non-empty and
-        // and filters out any directories
-        if (dir2.GetFirst(& str, m_currentFilterStr, options) || dir2.GetFirst(& str, wxEmptyString, wxDIR_DIRS))
+        wxLogNull log;
+        wxDir dir2;
+        if (dir2.Open(path))
         {
         {
-            m_treeCtrl->SetItemHasChildren(id);
-        }
+            wxString str;
+            // Have to test for wxDIR_DIRS separately in case m_currentFilterStr is non-empty and
+            // and filters out any directories
+            if (dir2.GetFirst(& str, m_currentFilterStr, options) || dir2.GetFirst(& str, wxEmptyString, wxDIR_DIRS))
+            {
+                m_treeCtrl->SetItemHasChildren(id);
+            }
+    }
     }
 
     // Add the sorted filenames
     }
 
     // Add the sorted filenames
@@ -982,6 +990,7 @@ void wxGenericDirCtrl::FindChildFiles(wxTreeItemId id, int dirFlags, wxArrayStri
     wxDir d;
     wxString eachFilename;
 
     wxDir d;
     wxString eachFilename;
 
+    wxLogNull log;
     d.Open(dirName);
 
     if (d.IsOpened())
     d.Open(dirName);
 
     if (d.IsOpened())
@@ -1180,7 +1189,7 @@ wxGenericDirDialog::wxGenericDirDialog(wxWindow* parent, const wxString& title,
     // 1) dir ctrl
     m_dirCtrl = new wxGenericDirCtrl(this, ID_DIRCTRL,
         defaultPath, wxPoint(5, 5),
     // 1) dir ctrl
     m_dirCtrl = new wxGenericDirCtrl(this, ID_DIRCTRL,
         defaultPath, wxPoint(5, 5),
-        wxSize(300, 200), wxDIRCTRL_DIR_ONLY);
+        wxSize(300, 200), wxDIRCTRL_DIR_ONLY|wxSUNKEN_BORDER);
 
     topsizer->Add( m_dirCtrl, 1, wxTOP|wxLEFT|wxRIGHT | wxEXPAND, 10 );
 
 
     topsizer->Add( m_dirCtrl, 1, wxTOP|wxLEFT|wxRIGHT | wxEXPAND, 10 );