Просмотр исходного кода

Reparent file path widget, add tab completion support to path anf file path widget

Andy Cedilnik 23 лет назад
Родитель
Сommit
f0db119873

+ 1 - 1
Source/CursesDialog/cmCursesFilePathWidget.cxx

@@ -18,7 +18,7 @@
 
 cmCursesFilePathWidget::cmCursesFilePathWidget(int width, int height, 
                                            int left, int top) :
-  cmCursesStringWidget(width, height, left, top)
+  cmCursesPathWidget(width, height, left, top)
 {
   m_Type = cmCacheManager::FILEPATH;
 }

+ 2 - 2
Source/CursesDialog/cmCursesFilePathWidget.h

@@ -17,9 +17,9 @@
 #ifndef __cmCursesFilePathWidget_h
 #define __cmCursesFilePathWidget_h
 
-#include "cmCursesStringWidget.h"
+#include "cmCursesPathWidget.h"
 
-class cmCursesFilePathWidget : public cmCursesStringWidget
+class cmCursesFilePathWidget : public cmCursesPathWidget
 {
 public:
   cmCursesFilePathWidget(int width, int height, int left, int top);

+ 1 - 55
Source/CursesDialog/cmCursesPathWidget.cxx

@@ -29,49 +29,6 @@ cmCursesPathWidget::cmCursesPathWidget(int width, int height,
   m_CurrentIndex = 0;
 }
 
-void GlobDirs(const std::string& fullPath,
-              std::vector<std::string>& files,
-              std::ofstream& of)
-{
-  if ( fullPath[fullPath.size()-1] != '*' )
-    {
-    files.push_back(fullPath);
-    return;
-    }
-  std::string path = cmSystemTools::GetFilenamePath(fullPath);
-  std::string ppath = cmSystemTools::GetFilenameName(fullPath);
-  ppath = ppath.substr(0, ppath.size()-1);
-  of << "Search in directory: " << path << std::endl;
-  of << "Search pattern: " << ppath << std::endl;
-
-  cmDirectory d;
-  if (d.Load(path.c_str()))
-    {
-    for (unsigned int i = 0; i < d.GetNumberOfFiles(); ++i)
-      {
-      if((std::string(d.GetFile(i)) != ".")
-         && (std::string(d.GetFile(i)) != ".."))
-        {
-        std::string fname = path;
-        fname +="/";
-        fname += d.GetFile(i);
-        std::string sfname = d.GetFile(i);
-        if(cmSystemTools::FileIsDirectory(fname.c_str()))
-          {
-          of << "Compare: " << sfname.substr(0, ppath.size()) << " and "
-             << ppath << std::endl;
-          if ( sfname.size() >= ppath.size() && 
-               sfname.substr(0, ppath.size()) == 
-               ppath )
-            {
-            files.push_back(fname);
-            }
-          }
-        }
-      }
-    }
-}
-
 void cmCursesPathWidget::OnType(int& key, cmCursesMainForm* fm, WINDOW* w)
 {
   m_Cycle = false;
@@ -82,7 +39,6 @@ void cmCursesPathWidget::OnType(int& key, cmCursesMainForm* fm, WINDOW* w)
 
 void cmCursesPathWidget::OnTab(cmCursesMainForm* fm, WINDOW* w)
 {
-  std::ofstream of("lala.log");
   std::string::size_type cc;
   if ( !this->GetString() )
     {
@@ -93,28 +49,24 @@ void cmCursesPathWidget::OnTab(cmCursesMainForm* fm, WINDOW* w)
   form_driver(form, REQ_PREV_FIELD);
   std::string cstr = this->GetString();
   cstr = cstr.substr(0, cstr.find_last_not_of(" \t\n\r")+1);
-  of << "Cstr: " << cstr << " <> " << m_LastString << std::endl;
   if ( m_LastString != cstr )
     {
     m_Cycle = false;
     m_CurrentIndex = 0;
     m_LastGlob = "";
-    of << "Reset" << std::endl;
     }
   std::string glob;
   if ( m_Cycle )
     {
-    of << "We are cycling, try same glob" << std::endl;
     glob = m_LastGlob;
     }
   else
     {
     glob = cstr + "*";
-    of << "Try new glob: " << glob << std::endl;
     }
   std::vector<std::string> dirs;
 
-  ::GlobDirs(glob.c_str(), dirs, of);
+  cmSystemTools::SimpleGlob(glob.c_str(), dirs, (m_Type == cmCacheManager::PATH?-1:0));
   if ( m_CurrentIndex < dirs.size() )
     {
     cstr = dirs[m_CurrentIndex];
@@ -124,12 +76,6 @@ void cmCursesPathWidget::OnTab(cmCursesMainForm* fm, WINDOW* w)
     cstr = cstr.substr(0, cstr.size()-1);
     }
 
-  of << "Glob: " << glob << std::endl;
-  for ( cc =0; cc < dirs.size(); cc ++ )
-    {
-    of << "\t" << cc << ": " << dirs[cc] << std::endl;
-    }
-  
   this->SetString(cstr.c_str());
   touchwin(w); 
   wrefresh(w); 

+ 1 - 1
Source/CursesDialog/cmCursesStringWidget.cxx

@@ -63,7 +63,7 @@ void cmCursesStringWidget::OnReturn(cmCursesMainForm* fm, WINDOW*)
     }
 }
 
-void cmCursesStringWidget::OnType(int& key, cmCursesMainForm* fm, WINDOW* w)
+void cmCursesStringWidget::OnType(int& key, cmCursesMainForm* fm, WINDOW*)
 {
   form_driver(fm->GetForm(), key);
 }