{ "cells": [ { "cell_type": "markdown", "id": "5119f197-19da-488e-a15f-5c478f55cbef", "metadata": {}, "source": [ "# AutoDisplay" ] }, { "cell_type": "markdown", "id": "03047eb4-67ea-4453-b08b-44296528c8f4", "metadata": {}, "source": [ "## Render a list of files" ] }, { "cell_type": "code", "execution_count": 1, "id": "cd1a6c89-b5c1-4234-99e8-ad4a93036de8", "metadata": {}, "outputs": [], "source": [ "%run __init__.py\n", "%load_ext lab_black" ] }, { "cell_type": "code", "execution_count": 10, "id": "d1307a87-a12c-4f53-8c31-e383eca373e3", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "9c4a68b48cee48ceb3c58ee89c54396e", "version_major": 2, "version_minor": 0 }, "text/plain": [ "VBox(children=(VBox(children=(HBox(), HBox())), VBox(children=(DisplayObject(children=(HBox(children=(Valid(va…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from ipyautoui.test_schema import TestAutoLogic\n", "from ipyautoui import AutoUi, AutoDisplay\n", "from ipyautoui.autodisplay import DisplayPath\n", "from ipyautoui.constants import load_test_constants\n", "from IPython.display import display\n", "import pathlib\n", "\n", "tests_constants = load_test_constants()\n", "DIR_FILETYPES = load_test_constants().DIR_FILETYPES\n", "paths = list(pathlib.Path(DIR_FILETYPES).glob(\"*.*\"))\n", "ad = AutoDisplay.from_paths(paths, display_showhide=False)\n", "display(ad)" ] }, { "cell_type": "code", "execution_count": 12, "id": "7c1ff2ee-ce52-417e-bea1-fe75a728fdcf", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "33e1a4b41ddd46acb87e0148420f63a8", "version_major": 2, "version_minor": 0 }, "text/plain": [ "DisplayPath(children=(HBox(children=(Valid(value=True, disabled=True, layout=Layout(height='25px', width='20px…" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d = DisplayPath(paths[0])\n", "d" ] }, { "cell_type": "code", "execution_count": 17, "id": "d80cb315-a37e-4d11-9a1c-c815c22aa643", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "adsf\n" ] } ], "source": [ "import maplocal\n", "\n", "if maplocal.maplocal_openlocal_exists():\n", " from maplocal import openlocal as open_path\n", " from maplocal import maplocal as make_new_path\n", "else:\n", " print(\"adsf\")" ] }, { "cell_type": "code", "execution_count": 19, "id": "5c761bbe-d5d4-4887-bcc4-ebf7104382ce", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "maplocal.maplocal_openlocal_exists" ] }, { "cell_type": "code", "execution_count": 16, "id": "d06f80ed-4567-465d-bc87-3333bb6ed92f", "metadata": {}, "outputs": [ { "ename": "FileNotFoundError", "evalue": "[Errno 2] No such file or directory: 'xdg-open'", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn[16], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43md\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdisplay_actions\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mopen_file\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", "File \u001b[0;32m~/ipyautoui/src/ipyautoui/_utils.py:37\u001b[0m, in \u001b[0;36mopen_path\u001b[0;34m(path)\u001b[0m\n\u001b[1;32m 34\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01msys\u001b[39;00m\n\u001b[1;32m 36\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m sys\u001b[38;5;241m.\u001b[39mplatform \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mlinux\u001b[39m\u001b[38;5;124m\"\u001b[39m:\n\u001b[0;32m---> 37\u001b[0m \u001b[43msubprocess\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcall\u001b[49m\u001b[43m(\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mxdg-open\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpath\u001b[49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 38\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 39\u001b[0m subprocess\u001b[38;5;241m.\u001b[39mcall([\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mexplorer.exe\u001b[39m\u001b[38;5;124m\"\u001b[39m, path])\n", "File \u001b[0;32m~/mambaforge/envs/ipyautoui-dev/lib/python3.9/subprocess.py:349\u001b[0m, in \u001b[0;36mcall\u001b[0;34m(timeout, *popenargs, **kwargs)\u001b[0m\n\u001b[1;32m 341\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mcall\u001b[39m(\u001b[38;5;241m*\u001b[39mpopenargs, timeout\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 342\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Run command with arguments. Wait for command to complete or\u001b[39;00m\n\u001b[1;32m 343\u001b[0m \u001b[38;5;124;03m timeout, then return the returncode attribute.\u001b[39;00m\n\u001b[1;32m 344\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 347\u001b[0m \u001b[38;5;124;03m retcode = call([\"ls\", \"-l\"])\u001b[39;00m\n\u001b[1;32m 348\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 349\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[43mPopen\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mpopenargs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mas\u001b[39;00m p:\n\u001b[1;32m 350\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 351\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m p\u001b[38;5;241m.\u001b[39mwait(timeout\u001b[38;5;241m=\u001b[39mtimeout)\n", "File \u001b[0;32m~/mambaforge/envs/ipyautoui-dev/lib/python3.9/subprocess.py:951\u001b[0m, in \u001b[0;36mPopen.__init__\u001b[0;34m(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, creationflags, restore_signals, start_new_session, pass_fds, user, group, extra_groups, encoding, errors, text, umask)\u001b[0m\n\u001b[1;32m 947\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtext_mode:\n\u001b[1;32m 948\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstderr \u001b[38;5;241m=\u001b[39m io\u001b[38;5;241m.\u001b[39mTextIOWrapper(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstderr,\n\u001b[1;32m 949\u001b[0m encoding\u001b[38;5;241m=\u001b[39mencoding, errors\u001b[38;5;241m=\u001b[39merrors)\n\u001b[0;32m--> 951\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_execute_child\u001b[49m\u001b[43m(\u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mexecutable\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpreexec_fn\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mclose_fds\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 952\u001b[0m \u001b[43m \u001b[49m\u001b[43mpass_fds\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcwd\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43menv\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 953\u001b[0m \u001b[43m \u001b[49m\u001b[43mstartupinfo\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcreationflags\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mshell\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 954\u001b[0m \u001b[43m \u001b[49m\u001b[43mp2cread\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mp2cwrite\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 955\u001b[0m \u001b[43m \u001b[49m\u001b[43mc2pread\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mc2pwrite\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 956\u001b[0m \u001b[43m \u001b[49m\u001b[43merrread\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43merrwrite\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 957\u001b[0m \u001b[43m \u001b[49m\u001b[43mrestore_signals\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 958\u001b[0m \u001b[43m \u001b[49m\u001b[43mgid\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mgids\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43muid\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mumask\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 959\u001b[0m \u001b[43m \u001b[49m\u001b[43mstart_new_session\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 960\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m:\n\u001b[1;32m 961\u001b[0m \u001b[38;5;66;03m# Cleanup if the child failed starting.\u001b[39;00m\n\u001b[1;32m 962\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m f \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mfilter\u001b[39m(\u001b[38;5;28;01mNone\u001b[39;00m, (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstdin, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstdout, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstderr)):\n", "File \u001b[0;32m~/mambaforge/envs/ipyautoui-dev/lib/python3.9/subprocess.py:1821\u001b[0m, in \u001b[0;36mPopen._execute_child\u001b[0;34m(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session)\u001b[0m\n\u001b[1;32m 1819\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m errno_num \u001b[38;5;241m!=\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[1;32m 1820\u001b[0m err_msg \u001b[38;5;241m=\u001b[39m os\u001b[38;5;241m.\u001b[39mstrerror(errno_num)\n\u001b[0;32m-> 1821\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m child_exception_type(errno_num, err_msg, err_filename)\n\u001b[1;32m 1822\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m child_exception_type(err_msg)\n", "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'xdg-open'" ] } ], "source": [ "d.display_actions.open_file()" ] }, { "cell_type": "code", "execution_count": null, "id": "dd826619-3193-4bd3-a7fc-6b80e8f8c136", "metadata": {}, "outputs": [], "source": [ "order=['exists', 'openpreview', 'name', 'openfile', 'openfile']" ] }, { "cell_type": "code", "execution_count": 7, "id": "9aaa814d-34bf-40f9-b435-37706d2eb8d9", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['exists', 'openpreview', 'name', 'openfile', 'openfile']" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "list(ad.order) + [\"openfile\"]" ] }, { "cell_type": "markdown", "id": "20380660-7a99-42d1-b31a-25f0e0a87401", "metadata": {}, "source": [ "## Create a custom renderer" ] }, { "cell_type": "code", "execution_count": 9, "id": "7b833bf5-5c24-4e38-8d2e-393558dde75e", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "f5a7194b74a142bba4c2340b8db44071", "version_major": 2, "version_minor": 0 }, "text/plain": [ "VBox(children=(VBox(children=(HBox(), HBox())), VBox(children=(DisplayObject(children=(HBox(children=(Valid(va…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from ipyautoui.test_schema import TestAutoLogic\n", "\n", "user_file_renderers = AutoUi.create_autodisplay_map(\n", " ext=\".aui.json\", schema=TestAutoLogic\n", ")\n", "\n", "test_ui = AutoDisplay.from_paths(\n", " paths=[tests_constants.PATH_TEST_AUI],\n", " renderers=user_file_renderers,\n", " display_showhide=False,\n", ")\n", "\n", "display(test_ui)" ] }, { "cell_type": "code", "execution_count": null, "id": "9d7e3a4e-b7f9-4ff6-a9de-bb10e49851a0", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.16" }, "vscode": { "interpreter": { "hash": "8ada13db5691318db95c45469f21e1a7752ab0a7ab2e35f607cb2aeb67fe81be" } } }, "nbformat": 4, "nbformat_minor": 5 }