本文整理汇总了C++中CServerPath类的典型用法代码示例。如果您正苦于以下问题:C++ CServerPath类的具体用法?C++ CServerPath怎么用?C++ CServerPath使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了CServerPath类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetPathFromItem
void CRemoteTreeView::OnMenuDelete(wxCommandEvent&)
{
if (!m_pState->IsRemoteIdle())
return;
if (!m_contextMenuItem)
return;
const CServerPath& path = GetPathFromItem(m_contextMenuItem);
if (path.empty())
return;
if (wxMessageBoxEx(_("Really delete all selected files and/or directories from the server?"), _("Confirmation needed"), wxICON_QUESTION | wxYES_NO, this) != wxYES)
return;
const bool hasParent = path.HasParent();
CRecursiveOperation* pRecursiveOperation = m_pState->GetRecursiveOperationHandler();
CServerPath startDir;
if (hasParent)
{
const wxString& name = GetItemText(m_contextMenuItem);
startDir = path.GetParent();
pRecursiveOperation->AddDirectoryToVisit(startDir, name);
}
else
{
startDir = path;
pRecursiveOperation->AddDirectoryToVisit(startDir, _T(""));
}
CServerPath currentPath;
const wxTreeItemId selected = GetSelection();
if (selected)
currentPath = GetPathFromItem(selected);
if (!currentPath.empty() && (path == currentPath || path.IsParentOf(currentPath, false)))
currentPath = startDir;
CFilterManager filter;
pRecursiveOperation->StartRecursiveOperation(CRecursiveOperation::recursive_delete, startDir, filter.GetActiveFilters(false), !hasParent, currentPath);
}
示例2: if
bool CServerPath::operator==(const CServerPath &op) const
{
if (empty() != op.empty())
return false;
else if (m_type != op.m_type)
return false;
else if (m_data != op.m_data)
return false;
return true;
}
示例3: GetPathFromItem
bool CRemoteTreeView::ListExpand(wxTreeItemId item)
{
const CServerPath path = GetPathFromItem(item);
wxASSERT(!path.empty());
if (path.empty())
return false;
CDirectoryListing listing;
if (m_pState->m_pEngine->CacheLookup(path, listing) == FZ_REPLY_OK)
RefreshItem(item, listing, false);
else
{
SetItemImages(item, true);
wxTreeItemId child = GetLastChild(item);
if (!child || GetItemText(child).empty())
return false;
}
return true;
}
示例4: FileTransfer
int CHttpControlSocket::FileTransfer(const wxString localFile, const CServerPath &remotePath,
const wxString &remoteFile, bool download,
const CFileTransferCommand::t_transferSettings& transferSettings)
{
LogMessage(Debug_Verbose, _T("CHttpControlSocket::FileTransfer()"));
LogMessage(Status, _("Downloading %s"), remotePath.FormatFilename(remoteFile).c_str());
if (!download)
{
ResetOperation(FZ_REPLY_CRITICALERROR | FZ_REPLY_NOTSUPPORTED);
return FZ_REPLY_ERROR;
}
if (m_pCurOpData)
{
LogMessage(__TFILE__, __LINE__, this, Debug_Info, _T("deleting nonzero pData"));
delete m_pCurOpData;
}
CHttpFileTransferOpData *pData = new CHttpFileTransferOpData(download, localFile, remoteFile, remotePath);
m_pCurOpData = pData;
m_pHttpOpData = pData;
if (localFile != _T(""))
{
pData->opState = filetransfer_waitfileexists;
int res = CheckOverwriteFile();
if (res != FZ_REPLY_OK)
return res;
pData->opState = filetransfer_transfer;
pData->pFile = new wxFile();
CreateLocalDir(pData->localFile);
if (!pData->pFile->Open(pData->localFile, wxFile::write))
{
LogMessage(::Error, _("Failed to open \"%s\" for writing"), pData->localFile.c_str());
ResetOperation(FZ_REPLY_ERROR);
return FZ_REPLY_ERROR;
}
}
else
pData->opState = filetransfer_transfer;
int res = InternalConnect(m_pCurrentServer->GetHost(), m_pCurrentServer->GetPort(), m_pCurrentServer->GetProtocol() == HTTPS);
if (res != FZ_REPLY_OK)
return res;
return FileTransferSend();
}
示例5: OnSelectionChanged
void CRemoteViewHeader::OnSelectionChanged(wxCommandEvent& event)
{
const wxString& dir = event.GetString();
if (dir == _T(""))
return;
CServerPath path = m_path;
if (!path.SetPath(dir))
{
wxBell();
return;
}
if (!m_pState->m_pCommandQueue->Idle())
{
wxBell();
return;
}
m_pState->ChangeRemoteDir(path);
}
示例6: InvalidatePath
void CPathCache::InvalidatePath(tServerCache & serverCache, CServerPath const& path, wxString const& subdir)
{
CSourcePath sourcePath;
sourcePath.source = path;
sourcePath.subdir = subdir;
CServerPath target;
tServerCacheIterator serverIter = serverCache.find(sourcePath);
if (serverIter != serverCache.end()) {
target = serverIter->second;
serverCache.erase(serverIter);
}
if (target.empty() && !subdir.empty()) {
target = path;
if (!target.AddSegment(subdir))
return;
}
if (!target.empty()) {
// Unfortunately O(n), don't know of a faster way.
for (auto serverIter = serverCache.begin(); serverIter != serverCache.end(); ) {
if (serverIter->second == target || target.IsParentOf(serverIter->second, false))
serverCache.erase(serverIter++);
else if (serverIter->first.source == target || target.IsParentOf(serverIter->first.source, false))
serverCache.erase(serverIter++);
else
++serverIter;
}
}
}
示例7: Store
void CPathCache::Store(CServer const& server, CServerPath const& target, CServerPath const& source, wxString const& subdir)
{
scoped_lock lock(mutex_);
wxASSERT(!target.empty() && !source.empty());
tCacheIterator iter = m_cache.find(server);
if (iter == m_cache.cend())
#if HAVE_MAP_EMPLACE
iter = m_cache.emplace(std::make_pair(server, tServerCache())).first;
#else
iter = m_cache.insert(std::make_pair(server, tServerCache())).first;
#endif
tServerCache &serverCache = iter->second;
CSourcePath sourcePath;
sourcePath.source = source;
sourcePath.subdir = subdir;
serverCache[sourcePath] = target;
}
示例8: sqlite3_step
void CQueueStorage::Impl::ReadRemotePaths()
{
if (!selectRemotePathQuery_)
return;
int res;
do
{
res = sqlite3_step(selectRemotePathQuery_);
if (res == SQLITE_ROW)
{
int64_t id = GetColumnInt64(selectRemotePathQuery_, path_table_column_names::id);
wxString remotePathRaw = GetColumnText(selectRemotePathQuery_, path_table_column_names::path);
CServerPath remotePath;
if (id > 0 && !remotePathRaw.empty() && remotePath.SetSafePath(remotePathRaw))
reverseRemotePaths_[id] = remotePath;
}
}
while (res == SQLITE_BUSY || res == SQLITE_ROW);
sqlite3_reset(selectRemotePathQuery_);
}
示例9: Store
void CPathCache::Store(const CServer& server, const CServerPath& target, const CServerPath& source, const wxString subdir/*=_T("")*/)
{
wxASSERT(!target.IsEmpty() && !source.IsEmpty());
tServerCache *pServerCache;
tCacheIterator iter = m_cache.find(server);
if (iter != m_cache.end())
pServerCache = iter->second;
else
{
pServerCache = new tServerCache;
m_cache[server] = pServerCache;
}
tServerCache &serverCache = *pServerCache;
CSourcePath sourcePath;
sourcePath.source = source;
sourcePath.subdir = subdir;
serverCache[sourcePath] = target;
}
示例10: IsSubdirOf
bool CServerPath::IsSubdirOf(const CServerPath &path, bool cmpNoCase) const
{
if (empty() || path.empty())
return false;
if (m_type != path.m_type)
return false;
if (!HasParent())
return false;
if (traits[m_type].prefixmode != 1) {
if (cmpNoCase ) {
if( m_data->m_prefix && !path.m_data->m_prefix ) {
return false;
}
else if( !m_data->m_prefix && path.m_data->m_prefix ) {
return false;
}
else if( m_data->m_prefix && path.m_data->m_prefix && m_data->m_prefix->CmpNoCase(*path.m_data->m_prefix) ) {
return false;
}
}
if (!cmpNoCase && m_data->m_prefix != path.m_data->m_prefix)
return false;
}
// On MVS, dirs like 'FOO.BAR' without trailing dot cannot have
// subdirectories
if (traits[m_type].prefixmode == 1 && !path.m_data->m_prefix)
return false;
tConstSegmentIter iter1 = m_data->m_segments.begin();
tConstSegmentIter iter2 = path.m_data->m_segments.begin();
while (iter1 != m_data->m_segments.end()) {
if (iter2 == path.m_data->m_segments.end())
return true;
if (cmpNoCase) {
if (iter1->CmpNoCase(*iter2))
return false;
}
else if (*iter1 != *iter2)
return false;
++iter1;
++iter2;
}
return false;
}
示例11: MakeDir
int CFileZillaApi::MakeDir(const CServerPath &path)
{
//Check if call allowed
if (!m_bInitialized)
return FZ_REPLY_NOTINITIALIZED;
if (IsConnected()==FZ_REPLY_NOTCONNECTED)
return FZ_REPLY_NOTCONNECTED;
if (IsBusy()==FZ_REPLY_BUSY)
return FZ_REPLY_BUSY;
if (path.IsEmpty() || !path.HasParent())
return FZ_REPLY_INVALIDPARAM;
t_command command;
command.id=FZ_COMMAND_MAKEDIR;
command.path=path;
m_pMainThread->Command(command);
if (m_hOwnerWnd)
return FZ_REPLY_WOULDBLOCK;
else
return m_pMainThread->LastOperationSuccessful()?FZ_REPLY_OK:FZ_REPLY_ERROR;
return FZ_REPLY_ERROR;
}
示例12: DeleteChildren
void CRemoteTreeView::DisplayItem(wxTreeItemId parent, const CDirectoryListing& listing)
{
DeleteChildren(parent);
const wxString path = listing.path.GetPath();
CFilterDialog filter;
for (unsigned int i = 0; i < listing.GetCount(); i++)
{
if (!listing[i].is_dir())
continue;
if (filter.FilenameFiltered(listing[i].name, path, true, -1, false, 0, listing[i].has_date() ? &listing[i].time : 0))
continue;
const wxString& name = listing[i].name;
CServerPath subdir = listing.path;
subdir.AddSegment(name);
CDirectoryListing subListing;
if (m_pState->m_pEngine->CacheLookup(subdir, subListing) == FZ_REPLY_OK)
{
wxTreeItemId child = AppendItem(parent, name, 0, 2, 0);
SetItemImages(child, false);
if (HasSubdirs(subListing, filter))
AppendItem(child, _T(""), -1, -1);
}
else
{
wxTreeItemId child = AppendItem(parent, name, 1, 3, 0);
SetItemImages(child, true);
}
}
SortChildren(parent);
}
示例13: CFilelistStatusBar
bool CSearchDialog::Load()
{
if (!wxDialogEx::Load(m_parent, _T("ID_SEARCH")))
return false;
/* XRCed complains if adding a status bar to a dialog, so do it here instead */
CFilelistStatusBar* pStatusBar = new CFilelistStatusBar(this);
pStatusBar->SetEmptyString(_("No search results"));
GetSizer()->Add(pStatusBar, 0, wxGROW);
if (!CreateListControl(filter_name | filter_size | filter_path | filter_date))
return false;
m_results = new CSearchDialogFileList(this, m_pState, 0);
ReplaceControl(XRCCTRL(*this, "ID_RESULTS", wxWindow), m_results);
m_results->SetFilelistStatusBar(pStatusBar);
const CServerPath path = m_pState->GetRemotePath();
if (!path.IsEmpty())
XRCCTRL(*this, "ID_PATH", wxTextCtrl)->ChangeValue(path.GetPath());
SetCtrlState();
m_pWindowStateManager = new CWindowStateManager(this);
m_pWindowStateManager->Restore(OPTION_SEARCH_SIZE, wxSize(750, 500));
Layout();
LoadConditions();
EditFilter(m_search_filter);
XRCCTRL(*this, "ID_CASE", wxCheckBox)->SetValue(m_search_filter.matchCase);
return true;
}
示例14: wxTreeItemId
void CRemoteTreeView::OnSelectionChanged(wxTreeEvent& event)
{
if (event.GetItem() != m_ExpandAfterList)
m_ExpandAfterList = wxTreeItemId();
if (m_busy)
return;
if (!m_pState->IsRemoteIdle())
{
wxBell();
return;
}
wxTreeItemId item = event.GetItem();
if (!item)
return;
const CServerPath path = GetPathFromItem(item);
wxASSERT(!path.empty());
if (path.empty())
return;
m_pState->ChangeRemoteDir(path);
}
示例15:
CFolderScanItem::CFolderScanItem(CServerItem* parent, bool queued, bool download, const wxString& localPath, const CServerPath& remotePath)
{
m_parent = parent;
m_download = download;
m_localPath = localPath;
m_remotePath = remotePath;
m_queued = queued;
m_remove = false;
m_active = false;
m_count = 0;
t_dirPair pair;
pair.localPath = localPath.c_str();
pair.remotePath.SetSafePath(remotePath.GetSafePath().c_str());
m_dirsToCheck.push_back(pair);
m_defaultFileExistsAction = CFileExistsNotification::unknown;
}