-import "ExplorerTree"
-import "Finder"
+public import "ecere"
+import "FileSystemBox"
class NumberLink : struct
{
bool branched;
//DataRow result;
//DataRow browse;
- ExplorerFileBranch result;
- ExplorerFileBranch browse;
+ FileSystemNode result;
+ FileSystemNode browse;
};
-class SearchThread : Thread
+public class FileSystemSearch : Thread
{
+public:
bool active, terminate, hasNameSearch, hasSizeSearch, hasContentSearch, listLines;
int count, matchCount;
char location[MAX_LOCATION], nameSearch[1024], contentSearch[1024];
//DataField resultsNameField;
//DataField browserNameField;
- ExplorerSearch searchPanel;
+ // TEMPORARY // ExplorerSearch searchPanel;
- SearchThread()
+ Window owner;
+ FileSystemBox fsb;
+
+ FileSystemSearch()
{
active = false;
terminate = false;
}
+ virtual bool Window::NotifyUpdateSearchLocation(FileSystemSearch search, char * location);
+ virtual bool Window::NotifySearchSortResults(FileSystemSearch search);
+ virtual bool Window::NotifySearchSortBrowser(FileSystemSearch search);
+ virtual bool Window::NotifySearchTerminated(FileSystemSearch search);
+
bool SearchFileContent(String path)
{
bool match = false;
SearchStackFrame stack[1024];
//to be used for content replace... EditBox edit { multiLine = true, textHorzScroll = true, textVertScroll = true, maxLineSize = 65536 };
- ExplorerFileBranch fileTreeBranch;
+ FileSystemNode node;
// This won't give drive attribs for c: or c:\ and other drives as well
// \\Nateus\data\ is not remote, etc...
// How to?
strcpy(stack[0].path, location);
stack[0].listing = FileListing { stack[0].path }; // there should be a sorted = true/false
+
+ fsb.list.Clear();
// Binary Search sorting...
if(optionTree)
stack[0].branched = false;
- if(optionBrowser)
+ /*if(optionBrowser)
{
- app.Lock();
+ guiApp.Lock();
{
//stack[0].browse = searchPanel.AddBrowserRow();
- //fileTreeBranch = MakeFileBranch(attribs, stack[0].path);
- //stack[0].browse.SetData(browserNameField, fileTreeBranch);
+ //node = MakeFileSystemNode(attribs, stack[0].path,
+ // stack[0].path, fsb.bits.previewPictures, fsb.displaySystem);
+ //stack[0].browse.SetData(browserNameField, node);
//stack[0].browse.SetData(typeField, null);
//stack[0].browse.SetData(sizeField, null);
- stack[0].browse = MakeFileBranch(stats, stack[0].path);
- searchPanel.AddBrowse(stack[0].browse, null);
+ stack[0].browse = MakeFileSystemNode(stats, stack[0].path, stack[0].path,
+ fsb.bits.previewPictures, fsb.displaySystem);
+ fsb.AddTreeNode(stack[0].browse, true, false, null); // TEMPORARY // searchPanel.AddBrowse(stack[0].browse, null);
}
- app.Unlock();
- }
+ guiApp.Unlock();
+ }*/
for(frame = 0; frame >= 0 && !terminate; )
{
{
if(!stack[frame].branched)
{
- app.Lock();
+ guiApp.Lock();
if(frame)
{
- stack[frame].result = MakeFileBranch(stack[frame - 1].listing.stats, stack[frame - 1].listing.name);
- searchPanel.AddResult(stack[frame].result, stack[frame - 1].result);
+ stack[frame].result = MakeFileSystemNode(stack[frame - 1].listing.stats,
+ stack[frame - 1].listing.name, stack[frame - 1].path,
+ fsb.bits.previewPictures, fsb.displaySystem);
+ fsb.AddTreeNode(stack[frame].result, true, false, stack[frame - 1].result); // TEMPORARY // searchPanel.AddResult(stack[frame].result, stack[frame - 1].result);
stack[frame].result.row.collapsed = false;
}
else
{
- stack[0].result = MakeFileBranch(stats, stack[0].path);
- searchPanel.AddResult(stack[0].result, null);
+ stack[0].result = MakeFileSystemNode(stats, stack[0].path, stack[0].path,
+ fsb.bits.previewPictures, fsb.displaySystem);
+ fsb.AddTreeNode(stack[0].result, true, false, null); // TEMPORARY // searchPanel.AddResult(stack[0].result, null);
stack[0].result.row.collapsed = false;
}
stack[frame].branched = true;
- app.Unlock();
+ guiApp.Unlock();
}
}
treeTop = stackTop;
}
if(optionSubdirs && stack[frame].listing.stats.attribs.isDirectory)
{
- app.Lock();
+ guiApp.Lock();
{
double thisTime = GetTime();
if(thisTime - lastTime > 0.25)
{
- searchPanel.SearchUpdateLabel(stack[stackTop].listing.path);
+ NotifyUpdateSearchLocation(owner, this, stack[stackTop].listing.path); // TEMPORARY // searchPanel.SearchUpdateLabel(stack[stackTop].listing.path);
lastTime = thisTime;
}
}
//searchPanel.SearchUpdateLabel(stack[stackTop].listing.path);
frame++;
- if(optionBrowser)
+ /*if(optionBrowser)
{
- stack[frame].browse = MakeFileBranch(stack[stackTop].listing.stats, stack[stackTop].listing.name);
- searchPanel.AddBrowse(stack[frame].browse, stack[stackTop].browse);
+ stack[frame].browse = MakeFileSystemNode(stack[stackTop].listing.stats,
+ stack[stackTop].listing.name, stack[stackTop].path,
+ fsb.bits.previewPictures, fsb.displaySystem);
+ fsb.AddTreeNode(stack[frame].browse, true, false, stack[stackTop].browse); // TEMPORARY // searchPanel.AddBrowse(stack[frame].browse, stack[stackTop].browse);
if(frame)
stack[frame].browse.row.collapsed = true;
//searchPanel.SortBrowser(); // this can be very bad for performance in some situations
// there should be a way to sort the nodes as they are added
// BinarySearch sorting implementation in listBox's Sort?
- }
- app.Unlock();
+ }*/
+ guiApp.Unlock();
strcpy(stack[frame].path, stack[stackTop].listing.path);
stack[frame].listing = FileListing { stack[frame].path };
if(optionTree)
stack[frame].branched = false;
if(match)
{
- app.Lock();
+ guiApp.Lock();
+ stack[frame].result = MakeFileSystemNode(stack[stackTop].listing.stats,
+ stack[stackTop].listing.name, stack[stackTop].path,
+ fsb.bits.previewPictures, fsb.displaySystem);
if(optionTree)
{
- stack[frame].result = MakeFileBranch(stack[stackTop].listing.stats, stack[stackTop].listing.name);
- searchPanel.AddResult(stack[frame].result, stack[stackTop].result);
+ fsb.AddTreeNode(stack[frame].result, true, false, stack[stackTop].result); // TEMPORARY // searchPanel.AddResult(stack[frame].result, stack[stackTop].result);
stack[frame].result.row.collapsed = false;
//searchPanel.SortResults(); // this can be very bad for performance in some situations
// there should be a way to sort the nodes as they are added
}
else
{
- //searchPanel.SearchAddResultsItem(stack[stackTop].listing.name, stack[stackTop].listing.path);
+ fsb.AddNode(stack[frame].result); //searchPanel.SearchAddResultsItem(stack[stackTop].listing.name, stack[stackTop].listing.path);
}
- app.Unlock();
+ guiApp.Unlock();
}
stackTop++;
}
else
{
- app.Lock();
- if(optionBrowser)
+ guiApp.Lock();
+ /*if(optionBrowser)
{
- ExplorerFileBranch item;
- item = MakeFileBranch(stack[frame].listing.stats, stack[frame].listing.name);
- searchPanel.AddBrowse(item, stack[frame].browse);
+ FileSystemNode item;
+ item = MakeFileSystemNode(stack[frame].listing.stats,
+ stack[frame].listing.name, stack[frame].path,
+ fsb.bits.previewPictures, fsb.displaySystem);
+ fsb.AddTreeNode(item, true, false, stack[frame].browse); // TEMPORARY // searchPanel.AddBrowse(item, stack[frame].browse);
//if(frame == 1)
//searchPanel.SortBrowser(); // this can be very bad for performance in some situations
// there should be a way to sort the nodes as they are added
// BinarySearch sorting implementation in listBox's Sort?
- }
+ }*/
if(match)
{
+ FileSystemNode item;
+ item = MakeFileSystemNode(stack[frame].listing.stats,
+ stack[frame].listing.name, stack[frame].path,
+ fsb.bits.previewPictures, fsb.displaySystem);
if(optionTree)
{
- ExplorerFileBranch item;
- item = MakeFileBranch(stack[frame].listing.stats, stack[frame].listing.name);
- searchPanel.AddResult(item, stack[frame].result);
+ fsb.AddTreeNode(item, true, false, stack[frame].result); // TEMPORARY // searchPanel.AddResult(item, stack[frame].result);
item.row.collapsed = false;
//searchPanel.SortResults(); // this can be very bad for performance in some situations
// there should be a way to sort the nodes as they are added
sprintf(temp, "lines %d", lin.num);
for(lin = lin.next; lin && strlen(temp) < MAX_F_STRING; lin = lin.next)
strcatf(temp, ", %d", lin.num);
- fileTreeBranch = ExplorerFileBranch { name = CopyString(temp), type = lineNumbers };
- searchPanel.AddResult(fileTreeBranch, item);
- //row.AddRow().SetData(resultsNameField, fileTreeBranch);
+ node = FileSystemNode { name = CopyString(temp), type = lineNumbers };
+ fsb.AddTreeNode(node, true, false, item); // TEMPORARY // searchPanel.AddResult(node, item);
+ //row.AddRow().SetData(resultsNameField, node);
lines.Free(null);
}
}
else
- ;//searchPanel.SearchAddResultsItem(stack[frame].listing.name, stack[frame].listing.path);
+ fsb.AddNode(item); //searchPanel.SearchAddResultsItem(stack[frame].listing.name, stack[frame].listing.path);
}
- app.Unlock();
+ guiApp.Unlock();
}
}
else
for( ; frame >= 0 ; frame--)
stack[frame].listing.Stop();
- app.Lock();
+ guiApp.Lock();
if(optionTree)
- searchPanel.SortResults();
+ NotifySearchSortResults(owner, this); // TEMPORARY // searchPanel.SortResults();
if(optionBrowser)
- searchPanel.SortBrowser();
- app.Unlock();
+ NotifySearchSortBrowser(owner, this); // TEMPORARY // searchPanel.SortBrowser();
+ guiApp.Unlock();
active = false;
- searchPanel.SearchTerminate();
+ guiApp.Lock();
+ NotifySearchTerminated(owner, this); // TEMPORARY // searchPanel.SearchTerminate();
+ guiApp.Unlock();
return 0;
}
}
-
-