本文整理汇总了C++中wxString::Last方法的典型用法代码示例。如果您正苦于以下问题:C++ wxString::Last方法的具体用法?C++ wxString::Last怎么用?C++ wxString::Last使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类wxString
的用法示例。
在下文中一共展示了wxString::Last方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DisplayShares
void CLocalListView::DisplayShares(wxString computer)
{
// Cast through a union to avoid warning about breaking strict aliasing rule
union
{
SHARE_INFO_1* pShareInfo;
LPBYTE pShareInfoBlob;
} si;
DWORD read, total;
DWORD resume_handle = 0;
if (computer.Last() == '\\')
computer.RemoveLast();
int j = m_fileData.size();
int share_count = 0;
int res = 0;
do
{
const wxWX2WCbuf buf = computer.wc_str(wxConvLocal);
res = NetShareEnum((wchar_t*)(const wchar_t*)buf, 1, &si.pShareInfoBlob, MAX_PREFERRED_LENGTH, &read, &total, &resume_handle);
if (res != ERROR_SUCCESS && res != ERROR_MORE_DATA)
break;
SHARE_INFO_1* p = si.pShareInfo;
for (unsigned int i = 0; i < read; i++, p++)
{
if (p->shi1_type != STYPE_DISKTREE)
continue;
CLocalFileData data;
data.flags = normal;
data.name = p->shi1_netname;
#ifdef __WXMSW__
data.label = data.name;
#endif
data.dir = true;
data.icon = -2;
data.size = -1;
m_fileData.push_back(data);
m_indexMapping.push_back(j++);
share_count++;
}
NetApiBufferFree(si.pShareInfo);
}
while (res == ERROR_MORE_DATA);
if (m_pFilelistStatusBar)
m_pFilelistStatusBar->SetDirectoryContents(0, share_count, 0, false, 0);
}
示例2: GetIntegerField
wxString CFormat::GetIntegerField(const wxChar* fieldType)
{
const wxString field = GetCurrentField();
if (field.IsEmpty()) {
// Invalid or missing field ...
return field;
}
// Drop type and length
wxString newField = field;
while (isalpha(newField.Last())) {
newField.RemoveLast();
}
// Set the correct integer type
newField += fieldType;
switch ((wxChar)field.Last()) {
case wxT('o'): // Unsigned octal
case wxT('x'): // Unsigned hexadecimal integer
case wxT('X'): // Unsigned hexadecimal integer (capital letters)
// Override the default type
newField.Last() = field.Last();
case wxT('d'): // Signed decimal integer
case wxT('i'): // Signed decimal integer
case wxT('u'): // Unsigned decimal integer
return newField;
default:
wxFAIL_MSG(wxT("Integer value passed to non-integer format string: ") + m_format);
SetCurrentField(field);
return wxEmptyString;
}
}
示例3: RecursiveCopy
bool CState::RecursiveCopy(wxString source, wxString target)
{
if (source == _T(""))
return false;
if (target == _T(""))
return false;
if (target.Last() != wxFileName::GetPathSeparator())
target += wxFileName::GetPathSeparator();
if (source.Last() == wxFileName::GetPathSeparator())
source.RemoveLast();
if (source + wxFileName::GetPathSeparator() == target)
return false;
if (target.Len() > source.Len() && source == target.Left(source.Len()) && target[source.Len()] == wxFileName::GetPathSeparator())
return false;
int pos = source.Find(wxFileName::GetPathSeparator(), true);
if (pos == -1 || pos == (int)source.Len() - 1)
return false;
std::list<wxString> dirsToVisit;
dirsToVisit.push_back(source.Mid(pos + 1) + wxFileName::GetPathSeparator());
source = source.Left(pos + 1);
// Process any subdirs which still have to be visited
while (!dirsToVisit.empty())
{
wxString dirname = dirsToVisit.front();
dirsToVisit.pop_front();
wxMkdir(target + dirname);
wxDir dir;
if (!dir.Open(source + dirname))
continue;
wxString file;
for (bool found = dir.GetFirst(&file); found; found = dir.GetNext(&file))
{
if (file == _T(""))
{
wxGetApp().DisplayEncodingWarning();
continue;
}
if (wxFileName::DirExists(source + dirname + file))
{
const wxString subDir = dirname + file + wxFileName::GetPathSeparator();
dirsToVisit.push_back(subDir);
}
else
wxCopyFile(source + dirname + file, target + dirname + file);
}
}
return true;
}
示例4: FixConfigPath
wxString wxSTEditorOptions::FixConfigPath(const wxString& path, bool add_sep)
{
if (add_sep && (!path.Length() || (path.Last() != wxT('/'))))
return path + wxT("/");
if (!add_sep && path.Length() && (path.Last() == wxT('/')))
return path.Mid(0, path.Length()-1);
return path;
}
示例5: cbResolveSymLinkedDirPath
bool cbResolveSymLinkedDirPath(wxString& dirpath)
{
#ifdef _WIN32
return false;
#else
if (dirpath.Last() == wxFILE_SEP_PATH)
dirpath.RemoveLast();
struct stat fileStats;
if (lstat(dirpath.mb_str(wxConvUTF8), &fileStats) != 0)
return false;
// If the path is a symbolic link, then try to resolve it.
// This is needed to prevent infinite loops, when a folder is pointing to itself or its parent folder.
if (S_ISLNK(fileStats.st_mode))
{
char buffer[4096];
int result = readlink(dirpath.mb_str(wxConvUTF8), buffer, WXSIZEOF(buffer) - 1);
if (result != -1)
{
buffer[result] = '\0'; // readlink() doesn't NUL-terminate the buffer
wxString pathStr(buffer, wxConvUTF8);
wxFileName fileName = wxFileName::DirName(pathStr);
// If this is a relative symbolic link, we need to make it absolute.
if (!fileName.IsAbsolute())
{
wxFileName dirNamePath;
if (dirpath.Last() == wxFILE_SEP_PATH)
dirNamePath = wxFileName::DirName(dirpath);
else
dirNamePath = wxFileName::DirName(dirpath + wxFILE_SEP_PATH);
dirNamePath.RemoveLastDir();
// Make the new filename absolute relative to the parent folder.
fileName.MakeAbsolute(dirNamePath.GetFullPath());
}
wxString fullPath = fileName.GetFullPath();
if (fullPath.Last() == wxT('.')) // this case should be handled because of a bug in wxWidgets
fullPath.RemoveLast();
if (fullPath.Last() == wxFILE_SEP_PATH)
fullPath.RemoveLast();
dirpath = fullPath;
return true;
}
}
return false;
#endif // _WIN32
}
示例6: BeginFindFiles
bool CLocalFileSystem::BeginFindFiles(wxString path, bool dirs_only)
{
EndFindFiles();
m_dirs_only = dirs_only;
#ifdef __WXMSW__
if (path.Last() != '/' && path.Last() != '\\') {
m_find_path = path + _T("\\");
path += _T("\\*");
}
else {
m_find_path = path;
path += '*';
}
m_hFind = FindFirstFileEx(path, FindExInfoStandard, &m_find_data, dirs_only ? FindExSearchLimitToDirectories : FindExSearchNameMatch, 0, 0);
if (m_hFind == INVALID_HANDLE_VALUE) {
m_found = false;
return false;
}
m_found = true;
return true;
#else
if (path != _T("/") && path.Last() == '/')
path.RemoveLast();
const wxCharBuffer s = path.fn_str();
m_dir = opendir(s);
if (!m_dir)
return false;
const wxCharBuffer p = path.fn_str();
const int len = strlen(p);
m_raw_path = new char[len + 2048 + 2];
m_buffer_length = len + 2048 + 2;
strcpy(m_raw_path, p);
if (len > 1)
{
m_raw_path[len] = '/';
m_file_part = m_raw_path + len + 1;
}
else
m_file_part = m_raw_path + len;
return true;
#endif
}
示例7: GetFileType
enum CLocalFileSystem::local_fileType CLocalFileSystem::GetFileType(const wxString& path)
{
#ifdef __WXMSW__
DWORD result = GetFileAttributes(path);
if (result == INVALID_FILE_ATTRIBUTES)
return unknown;
if (result & FILE_ATTRIBUTE_DIRECTORY)
return dir;
return file;
#else
if (path.Last() == wxFileName::GetPathSeparator() && path != wxFileName::GetPathSeparator())
{
wxString tmp = path;
tmp.RemoveLast();
return GetFileType(tmp);
}
wxStructStat buf;
int result = wxLstat(path, &buf);
if (result)
return unknown;
#ifdef S_ISLNK
if (S_ISLNK(buf.st_mode))
return link;
#endif
if (S_ISDIR(buf.st_mode))
return dir;
return file;
#endif
}
示例8: ChompPathDelim
/* ------------------------------------------------------------------------------
function ChompPathDelim(const Path: string): string;
------------------------------------------------------------------------------ */
wxString ChompPathDelim(wxString const & Path)
{
if ((Path.Length() != 0) && (Path.Last() == PathDelim))
return LeftStr(Path, Length(Path) - 1);
else
return Path;
}
示例9: AppendExtension
wxString wxFileDialogBase::AppendExtension(const wxString &filePath,
const wxString &extensionList)
{
// strip off path, to avoid problems with "path.bar/foo"
wxString fileName = filePath.AfterLast(wxFILE_SEP_PATH);
// if fileName is of form "foo.bar" it's ok, return it
int idx_dot = fileName.Find(wxT('.'), true);
if ((idx_dot != wxNOT_FOUND) && (idx_dot < (int)fileName.length() - 1))
return filePath;
// get the first extension from extensionList, or all of it
wxString ext = extensionList.BeforeFirst(wxT(';'));
// if ext == "foo" or "foo." there's no extension
int idx_ext_dot = ext.Find(wxT('.'), true);
if ((idx_ext_dot == wxNOT_FOUND) || (idx_ext_dot == (int)ext.length() - 1))
return filePath;
else
ext = ext.AfterLast(wxT('.'));
// if ext == "*" or "bar*" or "b?r" or " " then its not valid
if ((ext.Find(wxT('*')) != wxNOT_FOUND) ||
(ext.Find(wxT('?')) != wxNOT_FOUND) ||
(ext.Strip(wxString::both).empty()))
return filePath;
// if fileName doesn't have a '.' then add one
if (filePath.Last() != wxT('.'))
ext = wxT(".") + ext;
return filePath + ext;
}
示例10: ExplodeMessage
void SjLogGui::ExplodeMessage(const wxString& all___, unsigned long& severity, unsigned long& time, wxString& msg, wxString& scope)
{
wxString temp;
// get and strip severity
temp = all___.BeforeFirst(wxT('|'));
temp.ToULong(&severity);
msg = all___.AfterFirst(wxT('|'));
// get and strip time
temp = msg.BeforeFirst(wxT('|'));
temp.ToULong(&time);
msg = msg.AfterFirst(wxT('|'));
// now "msg" is message and optional scope enclosured by "[]"
scope.Empty();
int p = msg.Find(wxT('['), true/*from end*/);
if( p!=-1 )
{
scope = msg.Mid(p+1);
if( scope.Len()>=1 && scope.Last()==wxT(']') )
{
scope = scope.Left(scope.Len()-1);
msg = msg.Left(p).Trim();
}
}
// some finalizing translations (some stuff is logged before the translation system is available)
if( msg.StartsWith(wxT("Loading "), &temp) )
{
msg.Printf(_("Loading %s"), temp.c_str());
}
}
示例11: GetMatches
void MANFrame::GetMatches(const wxString &keyword, std::vector<wxString> *files_found)
{
if (m_dirsVect.empty() || keyword.IsEmpty())
{
return;
}
for (std::vector<wxString>::iterator i = m_dirsVect.begin(); i != m_dirsVect.end(); ++i)
{
wxArrayString files;
if (keyword.Last() == _T('*'))
{
wxDir::GetAllFiles(*i, &files, keyword);
}
else
{
wxDir::GetAllFiles(*i, &files, keyword + _T("*"));
}
for (size_t j = 0; j < files.GetCount(); ++j)
{
files_found->push_back(files[j]);
}
}
}
示例12: ExtractKeyName
wxRegKey::StdKey wxRegKey::ExtractKeyName(wxString& strKey)
{
wxString strRoot = strKey.BeforeFirst(REG_SEPARATOR);
size_t ui;
for ( ui = 0; ui < nStdKeys; ui++ ) {
if ( strRoot.CmpNoCase(aStdKeys[ui].szName) == 0 ||
strRoot.CmpNoCase(aStdKeys[ui].szShortName) == 0 ) {
break;
}
}
if ( ui == nStdKeys ) {
wxFAIL_MSG(wxT("invalid key prefix in wxRegKey::ExtractKeyName."));
ui = HKCR;
}
else {
strKey = strKey.After(REG_SEPARATOR);
if ( !strKey.empty() && strKey.Last() == REG_SEPARATOR )
strKey.Truncate(strKey.Len() - 1);
}
return (StdKey)ui;
}
示例13: wxT
extern bool
wxGetDirectoryTimes(const wxString& dirname,
FILETIME *ftAccess, FILETIME *ftCreate, FILETIME *ftMod)
{
#ifdef __WXWINCE__
// FindFirst() is going to fail
wxASSERT_MSG( !dirname.empty(),
wxT("incorrect directory name format in wxGetDirectoryTimes") );
#else
// FindFirst() is going to fail
wxASSERT_MSG( !dirname.empty() && dirname.Last() != wxT('\\'),
wxT("incorrect directory name format in wxGetDirectoryTimes") );
#endif
FIND_STRUCT fs;
FIND_DATA fd = FindFirst(dirname, &fs);
if ( !IsFindDataOk(fd) )
{
return false;
}
*ftAccess = fs.ftLastAccessTime;
*ftCreate = fs.ftCreationTime;
*ftMod = fs.ftLastWriteTime;
FindClose(fd);
return true;
}
示例14: CheckSubdirStatus
bool CLocalTreeView::CheckSubdirStatus(wxTreeItemId& item, const wxString& path)
{
wxTreeItemIdValue value;
wxTreeItemId child = GetFirstChild(item, value);
static const wxLongLong size(-1);
#ifdef __WXMAC__
// By default, OS X has a list of servers mounted into /net,
// listing that directory is slow.
if (GetItemParent(item) == GetRootItem() && (path == _T("/net") || path == _T("/net/")))
{
CFilterManager filter;
const int attributes = S_IRUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH;
if (!filter.FilenameFiltered(_T("localhost"), path, true, size, true, attributes))
{
if (!child)
AppendItem(item, _T(""));
return true;
}
}
#endif
if (child)
{
if (GetItemText(child) != _T(""))
return false;
CTreeItemData* pData = (CTreeItemData*)GetItemData(child);
if (pData)
{
bool wasLink;
int attributes;
enum CLocalFileSystem::local_fileType type;
if (path.Last() == CLocalFileSystem::path_separator)
type = CLocalFileSystem::GetFileInfo(path + pData->m_known_subdir, wasLink, 0, 0, &attributes);
else
type = CLocalFileSystem::GetFileInfo(path + CLocalFileSystem::path_separator + pData->m_known_subdir, wasLink, 0, 0, &attributes);
if (type == CLocalFileSystem::dir)
{
CFilterManager filter;
if (!filter.FilenameFiltered(pData->m_known_subdir, path, true, size, true, attributes))
return true;
}
}
}
wxString sub = HasSubdir(path);
if (sub != _T(""))
{
wxTreeItemId subItem = AppendItem(item, _T(""));
SetItemData(subItem, new CTreeItemData(sub));
}
else if (child)
Delete(child);
return true;
}
示例15: Log
void ScriptConsole::Log(const wxString& msg)
{
txtConsole->AppendText(msg);
if (msg.Last() != _T('\n'))
txtConsole->AppendText(_T('\n'));
// txtConsole->ScrollLines(-1);
Manager::ProcessPendingEvents();
}