#endif
private:
-define guiApp = ((GuiApplication)__thisModule); // how to do this in a dll?
+define guiApp = (GuiApplication)((__thisModule).application);
define selectionColor = guiApp.currentSkin.selectionColor; //Color { 10, 36, 106 };
static char * fileIconNames[] =
}
get { return bits.treeBranches; }
};
- property bool navigateFolders { set { bits.navigateFolders = value; bits.foldersOnly = !value; } get { return bits.navigateFolders; } };
+ 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 FileSystemNode node
{
{
if((!bits.foldersOnly && !bits.filesOnly) ||
(bits.foldersOnly && listing.stats.attribs.isDirectory) ||
- (bits.filesOnly && !listing.stats.attribs.isDirectory/*listing.stats.attribs.isFile*/)) // TOCHECK: isFile broken?
+ (bits.filesOnly && listing.stats.attribs.isFile))
{
FileSystemNode node = MakeFileSystemNode(listing.stats, listing.name, listing.path, bits.previewPictures, displaySystem);
DataRow row = list.AddRow();
void LoadTree()
{
+ bool isRoot = !strcmp(path, "/");
//char startPath[MAX_LOCATION];
FileSystemNode parent;
FileSystemNode node;
delete root;
#ifdef __WIN32__
- root = FileSystemNode { type = computer, loaded = true, childrenLoaded = true };
- root.name = rootName;
- AddTreeNode(root, true, false, null);
- #else
- root = MakeFileSystemNode(FileStats { attribs = FileExists(path)}, path, path, bits.previewPictures, displaySystem);
- //root.name = "/";
- root.type = computer;
- AddTreeNode(root, false, true, null);
- #endif
-
- #ifdef __WIN32__
- while(listing.Find())
+ if(isRoot)
{
- int len = strlen(listing.name);
- char info[MAX_LOCATION];
- char name[MAX_LOCATION];
- if(listing.stats.attribs.isDrive &&
- len > 3 && !strncmp(&listing.name[1], ": [", 3))
- {
- strncpy(name, listing.name, 2);
- name[2] = 0;
- strncpy(info, &listing.name[4], len - 5);
- info[len - 5] = 0;
- }
- else
+ root = FileSystemNode { loaded = true, childrenLoaded = true };
+ AddTreeNode(root, true, false, null);
+ while(listing.Find())
{
- strcpy(name, listing.name);
- info[0] = 0;
+ int len = strlen(listing.name);
+ char info[MAX_LOCATION];
+ char name[MAX_LOCATION];
+ if(listing.stats.attribs.isDrive &&
+ len > 3 && !strncmp(&listing.name[1], ": [", 3))
+ {
+ strncpy(name, listing.name, 2);
+ name[2] = 0;
+ strncpy(info, &listing.name[4], len - 5);
+ info[len - 5] = 0;
+ }
+ else
+ {
+ strcpy(name, listing.name);
+ info[0] = 0;
+ }
+
+ parent = MakeFileSystemNode(listing.stats, name, listing.path, bits.previewPictures, displaySystem);
+ if(info[0])
+ parent.info = CopyString(info);
+ parent.loaded = true;
+ AddTreeNode(parent, !listing.stats.attribs.isDirectory, listing.stats.attribs.isDirectory, root);
+ if(!listing.stats.attribs.isDirectory)
+ parent.childrenLoaded = true;
}
- parent = MakeFileSystemNode(listing.stats, name);
- if(info[0])
- parent.info = CopyString(info);
- parent.loaded = true;
- AddTreeNode(parent, !listing.stats.attribs.isDirectory, listing.stats.attribs.isDirectory, root, this);
- if(!listing.stats.attribs.isDirectory)
- parent.childrenLoaded = true;
+ node = FileSystemNode { name = msNetwork, type = network };
+ AddTreeNode(node, false, true, null);
+ node.row.collapsed = true;
}
-
- node = FileSystemNode { name = msNetwork, type = network };
- AddTreeNode(node, false, true, null, this);
- node.row.collapsed = true;
- Sort(nameField, 1);
- SelectRow(root.row);
+ else
#endif
- LoadTreeNode(root);
+ {
+ root = MakeFileSystemNode(FileStats { attribs = FileExists(path)}, path, path, bits.previewPictures, displaySystem);
+ AddTreeNode(root, false, true, null);
+ LoadTreeNode(root);
+ }
+
+ if(isRoot)
+ {
+ root.type = computer;
+ root.name = rootName;
+ }
+
list.Sort(nameField, 1);
+ list.SelectRow(root.row);
}
void LoadTreeNode(FileSystemNode node)
{
FileListing listing { path, extensions = extensions };
if(node.children.count == 1)
- DeleteNode(node.children.first);
+ DeleteNode(node.children.first);
while(listing.Find())
{
- if((!bits.foldersOnly && !bits.filesOnly) ||
+ if(!listing.stats.attribs.isRemovable && ((!bits.foldersOnly && !bits.filesOnly) ||
(bits.foldersOnly && listing.stats.attribs.isDirectory) ||
- (bits.filesOnly && !listing.stats.attribs.isDirectory/*listing.stats.attribs.isFile*/)) // TOCHECK: isFile broken?
+ (bits.filesOnly && listing.stats.attribs.isFile)))
{
FileSystemNode child = MakeFileSystemNode(listing.stats, listing.name, listing.path, bits.previewPictures, displaySystem);
AddTreeNode(child, true, false, node);
{
if((!bits.foldersOnly && !bits.filesOnly) ||
(bits.foldersOnly && listing.stats.attribs.isDirectory) ||
- (bits.filesOnly && !listing.stats.attribs.isDirectory/*listing.stats.attribs.isFile*/)) // TOCHECK: isFile broken?
+ (bits.filesOnly && listing.stats.attribs.isFile))
{
FileSystemNode child = MakeFileSystemNode(listing.stats, listing.name, listing.path, bits.previewPictures, displaySystem);
AddTreeNode(child, true, false, parent);
ExplorerFileItem item { };
- //if(attribs.isFile) // TODO fix this in ecere
+ //if(stats.attribs.isFile) // -- should work now
if(attribs.isDirectory)
{
extension[0] = 0;
}
}
else
-#ifdef __WIN32__
+/*#ifdef __WIN32__
strcpy(outputPath, "/");
-#else
+#else*/
strcpy(outputPath, name);
-#endif
+//#endif
}
//surface.WriteTextDots(alignment, x + textOffset, y + 2, width - textOffset, name, strlen(name));
surface.WriteTextDots(alignment, xStart, y + 2, width, label, len);
- //if(!guiApp.textMode) -- how to do this in a dll?
+ if(!guiApp.textMode)
{
if(displayFlags.current)
{