class FileSystemBoxBits
{
- bool foldersOnly:1, filesOnly:1, details:1, treeBranches:1, previewPictures:1, navigateFolders:1;
+ bool foldersOnly:1, filesOnly:1, details:1, treeBranches:1, previewPictures:1, navigateFolders:1, autoLoad:1;
//bool header:1, freeSelect:1, fullRowSelect:1, multiSelect:1, autoScroll:1, alwaysHL : 1, moveRows:1, resizable:1;
//bool moveFields:1, clearHeader:1, alwaysEdit:1, collapse:1, treeBranch:1, rootCollapse:1, heightSet:1;
//bool sortable:1, noDragging:1, fillLastField:1, expandOnAdd:1;
};
property bool navigateFolders { set { bits.navigateFolders = value; bits.filesOnly = !value; } get { return bits.navigateFolders; } };
property bool multiSelect { set { list.multiSelect = value; } get { return list.multiSelect; } };
+ property bool autoLoad { set { bits.autoLoad = value; } get { return bits.autoLoad; } };
property FileSystemNode node
{
InitFileIcons();
list.AddField(nameField);
+ bits.autoLoad = true;
}
~FileSystemBox()
{
bool OnPostCreate()
{
- Load();
+ if(bits.autoLoad)
+ Load();
return true;
}
bool NotifyDoubleClick(ListBox listBox, int x, int y, Modifiers mods)
{
+ bool result = !(selection && selection.type.isFolder && bits.navigateFolders);
OpenNode();
- return false;
+ return result;
}
bool NotifyKeyDown(ListBox listBox, DataRow row, Key key, unichar ch)
{
bool result;
if(selection && selection.type.isFolder && bits.navigateFolders)
- {
property::path = selection.path;
- result = true;
- }
- else
- result = NotifyNodeOpen(this.master, this, selection);
+ result = NotifyNodeOpen(this.master, this, selection);
return result;
}
(bits.filesOnly && listing.stats.attribs.isFile))
{
FileSystemNode node = MakeFileSystemNode(listing.stats, listing.name, listing.path, bits.previewPictures, displaySystem);
- DataRow row = list.AddRow();
- row.tag = (int)node;
- row.SetData(nameField, node);
- if(bits.details)
- {
- row.SetData(typeField, node.extension);
- row.SetData(sizeField, (void *)node.stats.size);
- }
+ AddNode(node);
}
}
list.Sort(nameField, 1);
parent.childrenLoaded = true;
}
+ void AddNode(FileSystemNode node)
+ {
+ DataRow row = list.AddRow();
+ row.tag = (int)node;
+ row.SetData(nameField, node);
+ if(bits.details)
+ {
+ row.SetData(typeField, node.extension);
+ row.SetData(sizeField, (void *)node.stats.size);
+ }
+ }
+
void AddTreeNode(FileSystemNode node, bool loaded, bool addLoader, FileSystemNode addTo)
{
DataRow row = (addTo && addTo.row) ? addTo.row.AddRow() : list.AddRow();
row.tag = (int)node;
node.row = row;
row.SetData(null, node);
+ if(bits.details)
+ {
+ row.SetData(typeField, node.extension);
+ row.SetData(sizeField, (void *)node.stats.size);
+ }
node.loaded = loaded;
if(addLoader)
}
}
else
+ {
/*#ifdef __WIN32__
strcpy(outputPath, "/");
#else*/
- strcpy(outputPath, name);
+ //strcpy(outputPath, name);
+ strcpy(outputPath, path);
+ PathCat(outputPath, name);
//#endif
-
+ }
}
bool IsChildOf(FileSystemNode node)
}
return node;
}*/
-static FileSystemNode MakeFileSystemNode(const FileStats stats,
+
+FileSystemNode MakeFileSystemNode(const FileStats stats,
const char * fileName, const char * filePath,
const bool previewPicture, const DisplaySystem displaySystem)
{