File size: 3,512 Bytes
30593ba
1
{"cells": [{"cell_type": "markdown", "id": "302934307671667531413257853548643485645", "metadata": {}, "source": ["# Gradio Demo: file_explorer_component_events"]}, {"cell_type": "code", "execution_count": null, "id": "272996653310673477252411125948039410165", "metadata": {}, "outputs": [], "source": ["!pip install -q gradio "]}, {"cell_type": "code", "execution_count": null, "id": "288918539441861185822528903084949547379", "metadata": {}, "outputs": [], "source": ["# Downloading files from the demo repo\n", "import os\n", "os.mkdir('dir1')\n", "!wget -q -O dir1/bar.txt https://github.com/gradio-app/gradio/raw/main/demo/file_explorer_component_events/dir1/bar.txt\n", "!wget -q -O dir1/foo.txt https://github.com/gradio-app/gradio/raw/main/demo/file_explorer_component_events/dir1/foo.txt\n", "os.mkdir('dir2')\n", "!wget -q -O dir2/baz.png https://github.com/gradio-app/gradio/raw/main/demo/file_explorer_component_events/dir2/baz.png\n", "!wget -q -O dir2/foo.png https://github.com/gradio-app/gradio/raw/main/demo/file_explorer_component_events/dir2/foo.png\n", "os.mkdir('dir3')\n", "!wget -q -O dir3/dir3_foo.txt https://github.com/gradio-app/gradio/raw/main/demo/file_explorer_component_events/dir3/dir3_foo.txt\n", "!wget -q -O dir3/dir4 https://github.com/gradio-app/gradio/raw/main/demo/file_explorer_component_events/dir3/dir4"]}, {"cell_type": "code", "execution_count": null, "id": "44380577570523278879349135829904343037", "metadata": {}, "outputs": [], "source": ["import gradio as gr\n", "from pathlib import Path\n", "\n", "base_root = Path(__file__).parent.resolve()\n", "\n", "with gr.Blocks() as demo:\n", "    with gr.Row():\n", "        dd = gr.Dropdown(label=\"Select File Explorer Root\",\n", "                        value=str(base_root / \"dir1\"),\n", "                        choices=[str(base_root / \"dir1\"), str(base_root / \"dir2\"),\n", "                                 str(base_root / \"dir3\")])\n", "        with gr.Group():\n", "            dir_only_glob = gr.Checkbox(label=\"Show only directories\", value=False)\n", "            ignore_dir_in_glob = gr.Checkbox(label=\"Ignore directories in glob\", value=False)\n", "\n", "    fe = gr.FileExplorer(root=str(base_root / \"dir1\"),\n", "                         glob=\"**/*\", interactive=True)\n", "    textbox = gr.Textbox(label=\"Selected Directory\")\n", "    run = gr.Button(\"Run\")\n", "    \n", "    dir_only_glob.select(lambda s: gr.FileExplorer(glob=\"**/\" if s else \"**/*.*\",\n", "                                                   file_count=\"multiple\",\n", "                                                   root=str(base_root / \"dir3\")) ,\n", "                         inputs=[dir_only_glob], outputs=[fe])\n", "    ignore_dir_in_glob.select(lambda s: gr.FileExplorer(glob=\"**/*\",\n", "                                                        ignore_glob=\"**/\",\n", "                                                        root=str(base_root / \"dir3\")),\n", "                            inputs=[ignore_dir_in_glob], outputs=[fe])            \n", "\n", "    dd.select(lambda s: gr.FileExplorer(root=s), inputs=[dd], outputs=[fe])\n", "    run.click(lambda s: \",\".join(s) if isinstance(s, list) else s, inputs=[fe], outputs=[textbox])\n", "\n", "    with gr.Row():\n", "        a = gr.Textbox(elem_id=\"input-box\")\n", "        a.change(lambda x: x, inputs=[a])\n", "\n", "\n", "if __name__ == \"__main__\":\n", "    demo.launch()"]}], "metadata": {}, "nbformat": 4, "nbformat_minor": 5}