From: Rejean Loyer Date: Sat, 10 Sep 2011 03:35:56 +0000 (-0400) Subject: libede: FileSystemBox: added filesOnly option X-Git-Url: https://ecere.com/cgi-bin/gitweb.cgi?p=ede;a=commitdiff_plain;h=8cfd06c4acf7adbed6c07e4ce6e2b2438937d451;hp=dc0ee90d20d82b8be76f88dd803d041d34432957 libede: FileSystemBox: added filesOnly option --- diff --git a/libede/src/FileSystemBox.ec b/libede/src/FileSystemBox.ec index b73a3d3..69d71eb 100644 --- a/libede/src/FileSystemBox.ec +++ b/libede/src/FileSystemBox.ec @@ -457,7 +457,7 @@ static FileSystemNode MakeFileSystemNode(const FileStats stats, const char * fil class FileSystemBoxBits { - bool foldersOnly:1, details:1, treeBranches:1, previewPictures:1; + bool foldersOnly:1, filesOnly:1, details:1, treeBranches:1, previewPictures: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; @@ -500,7 +500,8 @@ public: //isset { return path && path[0]; } } - property bool foldersOnly { set { bits.foldersOnly = value; } get { return bits.foldersOnly; } }; + property bool foldersOnly { set { bits.foldersOnly = value; bits.filesOnly = !value; } get { return bits.foldersOnly; } }; + property bool filesOnly { set { bits.filesOnly = value; bits.foldersOnly = !value; } get { return bits.filesOnly; } }; property bool previewPictures { set { bits.previewPictures = value; } get { return bits.previewPictures; } }; property char * extensions { set { delete extensions; if(value && value[0]) extensions = CopyString(value); } get { return extensions; } } property bool details { set { bits.details = value; } get { return bits.details; } }; @@ -795,7 +796,9 @@ private: list.Clear(); while(listing.Find()) { - if(!bits.foldersOnly || listing.stats.attribs.isDirectory) + if((!bits.foldersOnly && !bits.filesOnly) || + (bits.foldersOnly && listing.stats.attribs.isDirectory) || + (bits.filesOnly && !listing.stats.attribs.isDirectory/*listing.stats.attribs.isFile*/)) // TOCHECK: isFile broken? { FileSystemNode node = MakeFileSystemNode(listing.stats, listing.name, listing.path, bits.previewPictures, displaySystem); DataRow row = list.AddRow(); @@ -889,7 +892,9 @@ private: while(listing.Find()) { - if(!bits.foldersOnly || listing.stats.attribs.isDirectory) + if((!bits.foldersOnly && !bits.filesOnly) || + (bits.foldersOnly && listing.stats.attribs.isDirectory) || + (bits.filesOnly && !listing.stats.attribs.isDirectory/*listing.stats.attribs.isFile*/)) // TOCHECK: isFile broken? { FileSystemNode child = MakeFileSystemNode(listing.stats, listing.name, listing.path, bits.previewPictures, displaySystem); AddTreeNode(child, true, false, node); @@ -928,7 +933,9 @@ private: FileListing listing { path, extensions = extensions }; while(listing.Find()) { - if(!bits.foldersOnly || listing.stats.attribs.isDirectory) + if((!bits.foldersOnly && !bits.filesOnly) || + (bits.foldersOnly && listing.stats.attribs.isDirectory) || + (bits.filesOnly && !listing.stats.attribs.isDirectory/*listing.stats.attribs.isFile*/)) // TOCHECK: isFile broken? { FileSystemNode child = MakeFileSystemNode(listing.stats, listing.name, listing.path, bits.previewPictures, displaySystem); AddTreeNode(child, true, false, parent); diff --git a/tests/libede/fileSystemBoxTestApp/FileSystemBoxTestApp.ec b/tests/libede/fileSystemBoxTestApp/FileSystemBoxTestApp.ec index 2f6d75a..3ef0a97 100644 --- a/tests/libede/fileSystemBoxTestApp/FileSystemBoxTestApp.ec +++ b/tests/libede/fileSystemBoxTestApp/FileSystemBoxTestApp.ec @@ -14,6 +14,7 @@ class FileSystemBoxTestWindow : Window TabControl tabControl { this, background = activeBorder, anchor = { left = 4, top = 4, right = 4, bottom = 4 } }; FileListTab fileListTab { tabControl }; + JustFilesTab justFilesTab { tabControl }; FolderListTab folderListTab { tabControl }; FileTreeTab fileTreeTab { tabControl }; FolderTreeTab folderTreeTab { tabControl }; @@ -42,6 +43,18 @@ class FileListTab : TestTab }; } +class JustFilesTab : TestTab +{ + text = "JustFiles"; + + FileSystemBox box + { + this; + filesOnly = true; + anchor = { left = 4, top = 4, right = 4, bottom = 4 }; + }; +} + class FolderListTab : TestTab { text = "FolderList";