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()); }
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); } }
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(); }
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(); }
const wxString wxExVCS::GetFile() const { if (m_Files.empty()) { return wxExConfigFirstOf(_("Base folder")); } else { return m_Files[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); }
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; }
const std::string wxExVCS::GetFile() const { return (m_Files.empty() ? wxExConfigFirstOf(_("Base folder")): m_Files[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); }