Пример #1
0
void wxExFrameWithHistory::FindInFiles(wxWindowID dialogid)
{
  const bool replace = (dialogid == ID_REPLACE_IN_FILES);
  const wxExTool tool =
    (replace ?
       ID_TOOL_REPORT_REPLACE:
       ID_TOOL_REPORT_FIND);

  if (!wxExTextFileWithListView::SetupTool(tool, this))
  {
    return;
  }

  wxLogStatus(
    wxExFindReplaceData::Get()->GetFindReplaceInfoText(replace));
    
  int flags = wxDIR_FILES | wxDIR_HIDDEN;
  
  if (wxConfigBase::Get()->ReadBool(m_TextRecursive, true)) 
  {
    flags |= wxDIR_DIRS;
  }

  wxExDirTool dir(
    tool,
    wxExConfigFirstOf(m_TextInFolder),
    wxExConfigFirstOf(m_TextInFiles),
    flags);

  dir.FindFiles();

  tool.Log(&dir.GetStatistics().GetElements());
}
Пример #2
0
bool wxExVCS::Execute()
{
  const wxExFileName filename(GetFile());

  if (!filename.IsOk())
  {
    return m_Entry.Execute(
      m_Entry.GetCommand().IsAdd() ? wxExConfigFirstOf(_("Path")): std::string(), 
      wxExLexer(), 
      true,
      wxExConfigFirstOf(_("Base folder")));
  }
  else
  {
    std::string args;
    std::string wd;
    
    if (m_Files.size() > 1)
    {
      for (const auto& it : m_Files)
      {
        args += "\"" + it + "\" ";
      }
    }
    else if (m_Entry.GetName() == "git")
    {
      const std::string admin_dir(FindEntry(filename).GetAdminDir());
      wd = GetTopLevelDir(admin_dir, filename);
      
      if (!filename.GetFullName().empty())
      {
        args = GetRelativeFile(
          admin_dir, 
          filename);
      }
    }
    else if (m_Entry.GetName() == "sccs")
    {
      args = "\"" + 
      // sccs for windows does not handle windows paths,
      // so convert them to UNIX, and add volume as well.
#ifdef __WXMSW__      
        filename.GetVolume() + wxFileName::GetVolumeSeparator() +
#endif        
        filename.GetFullPath(wxPATH_UNIX) + "\"";
    }
    else
    {
      args = "\"" + filename.GetFullPath() + "\"";
    }
    
    return m_Entry.Execute(args, filename.GetLexer(), true, wd);
  }
}
Пример #3
0
bool wxExVCS::GetDir(wxWindow* parent)
{
  if (!Use())
  {
    return false;
  }
  
  const wxString message = _("Select VCS Folder");
  
  std::vector<wxExConfigItem> v;

  // See also vcsentry, same item is used there.
  v.push_back(wxExConfigItem(
    _("Base folder"), 
    CONFIG_COMBOBOXDIR, 
    wxEmptyString, 
    true,
    1005));
      
  if (wxExConfigFirstOf(_("Base folder")).empty()) 
  {
    if (
      parent != NULL && 
      wxExConfigDialog(parent, v, message).ShowModal() == wxID_CANCEL)
    {
      return false;
    }
  }
  else
  {
    m_Entry = FindEntry(wxExConfigFirstOf(_("Base folder")));
  
    if (m_Entry.GetName().empty())
    {
      if (
        parent != NULL &&
        wxExConfigDialog(parent, v, message).ShowModal() == wxID_CANCEL)
      {
        return false;
      }
    }
  }
  
  m_Entry = FindEntry(wxExConfigFirstOf(_("Base folder")));
  
  return !m_Entry.GetName().empty();
}
Пример #4
0
bool wxExVCS::SetEntryFromBase(wxWindow* parent)
{
  if (!Use())
  {
    return false;
  }
  
  const wxString message = _("Select VCS Folder");
  
  // See also vcsentry, same item is used there.
  const std::vector<wxExItem> v{{
    _("Base folder"), ITEM_COMBOBOX_DIR, wxAny(), true, wxWindow::NewControlId()}};
      
  if (wxExConfigFirstOf(_("Base folder")).empty()) 
  {
    if (
      parent != nullptr && 
      wxExItemDialog(parent, v, message).ShowModal() == wxID_CANCEL)
    {
      return false;
    }
    
    m_Entry = FindEntry(wxExConfigFirstOf(_("Base folder")));
  }
  else
  {
    m_Entry = FindEntry(wxExConfigFirstOf(_("Base folder")));
  
    if (m_Entry.GetName().empty())
    {
      if (
        parent != nullptr &&
        wxExItemDialog(parent, v, message).ShowModal() == wxID_CANCEL)
      {
        return false;
      }
      
      m_Entry = FindEntry(wxExConfigFirstOf(_("Base folder")));
    }
  }
  
  return !m_Entry.GetName().empty();
}
Пример #5
0
const wxString wxExVCS::GetFile() const
{
  if (m_Files.empty())
  {
    return wxExConfigFirstOf(_("Base folder"));
  }
  else
  {
    return m_Files[0];
  }
}
Пример #6
0
void wxExListViewFile::AddItems()
{
  int flags = 0;

  if (wxConfigBase::Get()->ReadBool(m_TextAddFiles, true)) 
  {
    flags |= wxDIR_FILES;
  }

  if (wxConfigBase::Get()->ReadBool(m_TextAddRecursive, true)) 
  {
    flags |= wxDIR_DIRS;
  }

  wxExDirWithListView dir(
    this,
    wxExConfigFirstOf(m_TextInFolder),
    wxExConfigFirstOf(m_TextAddWhat),
    flags);

  const int old_count = GetItemCount();

  dir.FindFiles();

  const int added = GetItemCount() - old_count;

  if (added > 0)
  {
    m_ContentsChanged = true;

    if (wxConfigBase::Get()->ReadBool("List/SortSync", true))
    {
      SortColumn(_("Modified"), SORT_KEEP);
    }
  }

  const wxString text = 
    _("Added") + wxString::Format(" %d ", added) + _("file(s)");

  wxLogStatus(text);
}
Пример #7
0
bool wxExFrameWithHistory::FindInFiles(
  const wxArrayString& files,
  int id,
  bool show_dialog,
  wxExListView* report)
{
  const wxExFileName filename(files[0]);
  const wxExTool tool(id);
  
  if (show_dialog && FindInFilesDialog(
    tool.GetId(),
    filename.DirExists() && !filename.FileExists()) == wxID_CANCEL)
  {
    return false;
  }
  
  if (!wxExTextFileWithListView::SetupTool(tool, this, report))
  {
    return false;
  }
  
  wxExStatistics<long> stats;
  
  for (int i = 0; i < files.GetCount(); i++)
  {
    const wxExFileName fn(files[i]);
    
    if (fn.FileExists())
    {
      wxExTextFileWithListView file(fn, tool);
      file.RunTool();
      stats += file.GetStatistics().GetElements();
    }
    else
    {
      wxExDirTool dir(
        tool, 
        fn.GetFullPath(), 
        wxExConfigFirstOf(m_TextInFiles));
        
      dir.FindFiles();
      stats += dir.GetStatistics().GetElements();
    }
  }
  
  tool.Log(&stats);
  
  return true;
}
Пример #8
0
const std::string wxExVCS::GetFile() const
{
  return (m_Files.empty() ? wxExConfigFirstOf(_("Base folder")): m_Files[0]);
}
Пример #9
0
long wxExVCS::Execute()
{
  const wxExFileName filename(GetFile());

  if (!filename.IsOk())
  {
    wxString args;

    if (m_Entry.GetCommand().IsAdd())
    {
      args = wxExConfigFirstOf(_("Path"));
    }
    
    return m_Entry.Execute(
      args, 
      wxExLexer(), 
      wxExConfigFirstOf(_("Base folder")));
  }
  else
  {
    wxString args;
    wxString wd;
    
    if (m_Files.size() > 1)
    {
      // File should not be surrounded by double quotes.
      for (
#ifdef wxExUSE_CPP0X	
        auto it = m_Files.begin();
#else
        wxArrayString::iterator it = m_Files.begin();
#endif		
        it != m_Files.end();
        ++it)
      {
        args += *it + " ";
      }
    }
    else if (m_Entry.GetName().Lower() == "git")
    {
      const wxString admin_dir(FindEntry(filename).GetAdminDir());
      wd = GetTopLevelDir(admin_dir, filename);
      
      if (!filename.GetFullName().empty())
      {
        args = GetRelativeFile(
          admin_dir, 
          filename);
      }
    }
    else if (m_Entry.GetName().Lower() == "sccs")
    {
      args = "\"" + 
      // sccs for windows does not handle windows paths,
      // so convert them to UNIX, and add volume as well.
#ifdef __WXMSW__      
        filename.GetVolume() + filename.GetVolumeSeparator() +
#endif        
        filename.GetFullPath(wxPATH_UNIX) + "\"";
    }
    else
    {
      args = "\"" + filename.GetFullPath() + "\"";
    }
    
    return m_Entry.Execute(args, filename.GetLexer(), wd);
  }