本文整理汇总了C++中Progress::StepCanceled方法的典型用法代码示例。如果您正苦于以下问题:C++ Progress::StepCanceled方法的具体用法?C++ Progress::StepCanceled怎么用?C++ Progress::StepCanceled使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Progress
的用法示例。
在下文中一共展示了Progress::StepCanceled方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Licenses
void Ide::Licenses()
{
Progress pi;
const Workspace& wspc = IdeWorkspace();
pi.SetTotal(wspc.GetCount());
VectorMap<String, String> license_package;
for(int i = 0; i < wspc.GetCount(); i++) {
String n = wspc[i];
pi.SetText(n);
if(pi.StepCanceled()) return;
String l = LoadFile(SourcePath(n, "Copying"));
if(l.GetCount())
MergeWith(license_package.GetAdd(l), ", ", n);
}
if(license_package.GetCount() == 0) {
Exclamation("No license files ('Copying') have been found.");
return;
}
String qtf;
for(int i = 0; i < license_package.GetCount(); i++) {
bool m = license_package[i].Find(',') >= 0;
qtf << (m ? "Packages [* \1" : "Package [* \1")
<< license_package[i]
<< (m ? "\1] have" : "\1] has")
<< " following licence notice:&"
<< "{{@Y [C1 " << DeQtf(license_package.GetKey(i)) << "]}}&&";
}
ShowQTF(qtf, "Licenses");
}
示例2: Statistics
void Ide::Statistics()
{
Vector< ArrayMap<String, FileStat> > stat;
Progress pi;
const Workspace& wspc = IdeWorkspace();
pi.SetTotal(wspc.GetCount());
Date now = GetSysDate();
for(int i = 0; i < wspc.GetCount(); i++) {
const Package& pk = wspc.GetPackage(i);
String n = wspc[i];
pi.SetText(n);
if(pi.StepCanceled()) return;
ArrayMap<String, FileStat>& pfs = stat.Add();
for(int i = 0; i < pk.GetCount(); i++)
if(!pk[i].separator) {
String file = SourcePath(n, pk[i]);
if(FileExists(file)) {
FileStat& fs = pfs.GetAdd(GetFileExt(file));
int d = minmax(now - FileGetTime(file), 0, 9999);
fs.oldest = max(d, fs.oldest);
fs.newest = min(d, fs.newest);
String data = LoadFile(file);
for(const char *s = data; *s; s++)
if(*s == '\n')
fs.lines++;
fs.len += data.GetCount();
fs.days += d;
fs.count++;
}
}
}
String qtf = "[1 ";
ArrayMap<String, FileStat> all;
String tab = "{{45:20:25:20:35:30:30:30:[email protected] [* ";
String hdr = "]:: [= Files:: Lines:: - avg.:: Length:: - avg.:: Oldest:: Newest:: Avg. age]";
for(int i = 0; i < wspc.GetCount(); i++) {
qtf << tab << DeQtf(wspc[i]) << hdr;
sPut(qtf, stat[i], all);
}
qtf << tab << "All packages" << hdr;
sPut(qtf, all, all);
WithStatLayout<TopWindow> dlg;
CtrlLayoutOK(dlg, "Statistics");
dlg.stat = qtf;
dlg.Sizeable().Zoomable();
dlg.Run();
}
示例3: SearchForFiles
void SearchForFiles(Index<String>& files, String dir, String mask, int readonly, Progress& pi) {
FindFile ff(AppendFileName(dir, "*.*"));
while(ff) {
if(ff.IsFolder() && *ff.GetName() != '.')
SearchForFiles(files, AppendFileName(dir, ff.GetName()), mask, readonly, pi);
else
if(ff.IsFile() && PatternMatchMulti(mask, ff.GetName())) {
if(IsNull(readonly) || !!readonly == !!ff.IsReadOnly()) {
if(pi.StepCanceled()) return;
files.FindAdd(AppendFileName(dir, ff.GetName()));
}
}
ff.Next();
}
}
示例4: DoImportTree
void WorkspaceWork::DoImportTree(const String& dir, const String& mask, bool sep, Progress& pi, int from)
{
String active = GetActivePackage();
if(active.IsEmpty()) return;
FindFile ff(AppendFileName(dir, "*.*"));
Vector<String> dirs, files;
while(ff) {
String p = AppendFileName(dir, ff.GetName());
if(ff.IsFile() && PatternMatchMulti(mask, ff.GetName()))
files.Add(p);
if(ff.IsFolder())
dirs.Add(p);
ff.Next();
}
String relPath(dir.Mid(from)),
absPath = SourcePath(active, relPath);
if(sep && files.GetCount()) {
if(!DirectoryExists(absPath))
if(!RealizeDirectory(absPath))
throw Format("An error occurred while creating the directory:&\1%s", absPath);
Package::File& f = actual.file.Add();
f = relPath;
f.separator = f.readonly = true;
}
Sort(files, &FileOrder_);
Sort(dirs, &FileOrder_);
for(int i = 0; i < files.GetCount(); i++) {
if(pi.StepCanceled())
throw String();
String name = GetFileName(files[i]);
if(FileCopy(files[i], AppendFileName(absPath, name))) {
Package::File& f = actual.file.Add();
f = AppendFileName(relPath, name);
f.separator = f.readonly = false;
}
else
throw Format("An error occurred while copying the file:&\1%s", files[i]);
}
for(int i = 0; i < dirs.GetCount(); i++)
DoImportTree(dirs[i], mask, true, pi, from);
}
示例5: LoadTree
void LoadTree(int parent, const String& path, Progress& pi)
{
pi.SetText(DeFormat(path));
for(FindFile ff(AppendFileName(path, "*.*")); ff; ff.Next()) {
if(pi.StepCanceled())
return;
String n = ff.GetName();
if(n != "." && n != "..") {
edit.Add();
edit.Top() <<= n;
int q;
static int x;
if(++x & 1)
q = tree2.Add(parent, ff.IsFolder() ? CtrlImg::Dir() : CtrlImg::File(),
edit.Top(), 150);
else
q = tree2.Add(parent, ff.IsFolder() ? CtrlImg::Dir() : CtrlImg::File(), n);
if(ff.IsFolder())
LoadTree(q, AppendFileName(path, n), pi);
}
}
}
示例6: DoImport
void WorkspaceWork::DoImport(const String& dir, const String& mask, bool sep, Progress& pi)
{
String active = GetActivePackage();
if(active.IsEmpty()) return;
FindFile ff(AppendFileName(dir, "*.*"));
Vector<String> dirs, files;
while(ff) {
String p = AppendFileName(dir, ff.GetName());
if(ff.IsFile() && PatternMatchMulti(mask, ff.GetName()))
files.Add(p);
if(ff.IsFolder())
dirs.Add(p);
ff.Next();
}
if(sep && files.GetCount()) {
Package::File& f = actual.file.Add();
f = GetFileTitle(dir);
f.separator = f.readonly = true;
}
Sort(files, &FileOrder_);
Sort(dirs, &FileOrder_);
for(int i = 0; i < files.GetCount(); i++) {
if(pi.StepCanceled())
throw String();
String name = GetFileName(files[i]);
if(FileCopy(files[i], SourcePath(active, name))) {
Package::File& f = actual.file.Add();
f = name;
f.separator = f.readonly = false;
}
else
throw Format("An error occurred while copying the file:&\1%s", files[i]);
}
for(int i = 0; i < dirs.GetCount(); i++)
DoImport(dirs[i], mask, true, pi);
}