Unopinionated, minimalist, reusable, slightly configurable, general-purpose file-dialog.
Project description
Universal File Dialog
Install & Get Started:
pip install Ufd
or
git clone https://github.com/emboiko/Ufd.git
or
Download the .zip here
Import:
from Ufd import Ufd
Construct:
dialog = Ufd(**Kwargs)
result = dialog()
or specify a bunch of options:
dialog = Ufd(
title="My Dialog",
icon="path/to/some_icon.ico",
show_hidden=True,
multiselect=False
select_dirs=False
)
result = dialog()
Ufd's full constructor signature looks like this:
def __init__(
self,
title:str="Universal File Dialog",
icon:str="",
show_hidden:bool=False,
include_files:bool=True,
multiselect:bool=True,
select_dirs:bool=True,
select_files:bool=True,
unix_delimiter:bool=True,
stdout:bool=False
):
title
: str: Window title
icon
: str: Path to your custom icon.ico file
show_hidden
: bool: Include hidden file(s) or folder(s) in treeview
include_files
: bool: Include file(s) in treeview
multiselect
: bool: File-list multiselect support, returns a list either way
select_dirs
: bool: File-list shows directories (folder-browser)
select_files
: bool: File-list shows files (file-browser)
unix_delimiter
: bool: Return paths delimited with "/" or "\"
stdout
: bool: Print a newline delimited list of the dialog selection to stdout before returning (Useful if you aren't calling the dialog from a Python)
Ufd still has several [boolean constructor parameters] options & behavioral tweaks in development that will optionally restrict / expand upon its behavior to match the context in which it is used.
Using Ufd without Python
Ufd.exe is a Windows binary compiled with PyInstaller for x64 systems. (dist_win64/Ufd/Ufd.exe
)
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
int main(int argc, char *argv[]) {
system("C:/Programming/Python/Projects/Ufd/dist/Ufd/ufd.exe stdout=True > paths.txt");
std::ifstream inFile("paths.txt");
std::vector<std::string> results;
std::string result;
while (getline(inFile, result)) results.push_back(result);
inFile.close();
std::remove("paths.txt");
for (std::string path : results) std::cout << path << "\n";
std::cin.ignore();
return 0;
}
Why should I use Ufd?
- It's easy
- No external dependencies
- Ufd doesn't care what kind of dialog it's serving as. You get to deal with any ambiguities in your own way.
Want to select 3 directories and 2 files from the same dialog, and have their paths returned as a list?
dialog = Ufd()
result = dialog()
>> result
>> ["C:some_dir/dir1", "C:some_dir/dir2", "C:some_dir/dir3", "C:some_dir/file1.ext", "C:some_dir/file2.ext"]
Or if you'd prefer to corral the user into selecting a single file:
dialog = Ufd(multiselect=False, select_dirs=False)
result = dialog()
>> result
>> ["C:some_dir/file1.ext"]
Tips & Tricks:
- Drill through the treeview with
<Doubleclick>
,<Enter>
, and/or ArrowKeys. - Treeview supports single-select via
<Doubleclick>
or the submit button. - Navigate the listbox on the right with the mouse or arrow keys. Multiselect is supported with
<Shift>
(span) &<Ctrl>
(individuals), or by clicking + dragging the mouse. Select all with<Ctrl+A>
as expected. Confirm selection in the listbox with<Enter>
or the submit button. - Cancelling via
<Ctrl-w>
, the cancel button, or the window manager will both return an empty list from the dialog.
Todo
- Tree only mode
- Treeview x_scroll
- Listbox Filter
- Listbox Navigation
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file Ufd-0.0.13.tar.gz
.
File metadata
- Download URL: Ufd-0.0.13.tar.gz
- Upload date:
- Size: 112.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8b95b971c307df55be8d7bbb77a640962bcc9746a181155ef6aa96f56237b2b1 |
|
MD5 | 13d66a9926750863e2a5112373104a8d |
|
BLAKE2b-256 | cf4334f131651304721a2ee97e6934646480dc7b3e02f68bb32e9e764d52b8c5 |
File details
Details for the file Ufd-0.0.13-py3-none-any.whl
.
File metadata
- Download URL: Ufd-0.0.13-py3-none-any.whl
- Upload date:
- Size: 43.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8aa1f37cb8c7d45f051c97c95295889d8bc775498af992b1fa825a7e7df6148b |
|
MD5 | 253c630722a58ab2c482e256349a185d |
|
BLAKE2b-256 | e81cfd8181aeb46b97ef7e3953744161636ee021a862f5fafef898ddb23207b9 |