import gradio as gr import modelscope_studio.components.antd as antd import modelscope_studio.components.antdx as antdx import modelscope_studio.components.base as ms def on_file_click(e: gr.EventData): print("file clicked:", e._data["payload"]) def on_folder_click(e: gr.EventData): print("folder clicked:", e._data["payload"]) def on_selected_file_change(e: gr.EventData): print("selected file changed:", e._data["payload"]) with gr.Blocks() as demo: with ms.Application(): with antdx.XProvider(): antd.Divider("Basic Folder Tree") with antdx.Folder(default_expand_all=True) as folder1: with antdx.Folder.TreeNode(title="src", path="/src"): antdx.Folder.TreeNode(title="index.ts", path="/src/index.ts", content="export * from './app';") antdx.Folder.TreeNode( title="app.ts", path="/src/app.ts", content= "// Application entry point\nconsole.log('Hello World');" ) with antdx.Folder.TreeNode(title="components", path="/src/components"): antdx.Folder.TreeNode( title="Button.tsx", path="/src/components/Button.tsx", content= "import React from 'react';\n\nexport const Button = () => ;" ) antdx.Folder.TreeNode( title="Input.tsx", path="/src/components/Input.tsx", content= "import React from 'react';\n\nexport const Input = () => ;" ) with antdx.Folder.TreeNode(title="utils", path="/src/utils"): antdx.Folder.TreeNode( title="helpers.ts", path="/src/utils/helpers.ts", content= "export const add = (a: number, b: number) => a + b;" ) antdx.Folder.TreeNode( title="package.json", path="/package.json", content= '{\n "name": "my-project",\n "version": "1.0.0"\n}') antdx.Folder.TreeNode( title="README.md", path="/README.md", content="# My Project\n\nA sample project.") antd.Divider("Using tree_data Prop") antdx.Folder( default_expand_all=True, tree_data=[{ "title": "project", "path": "/project", "children": [{ "title": "main.py", "path": "/project/main.py", "content": "print('Hello, World!')" }, { "title": "utils.py", "path": "/project/utils.py", "content": "def greet(name):\n return f'Hello, {name}!'" }, { "title": "tests", "path": "/project/tests", "children": [{ "title": "test_main.py", "path": "/project/tests/test_main.py", "content": "import unittest\n\nclass TestMain(unittest.TestCase):\n pass" }] }] }, { "title": "requirements.txt", "path": "/requirements.txt", "content": "gradio\nmodelscope-studio" }]) folder1.file_click(fn=on_file_click) folder1.folder_click(fn=on_folder_click) folder1.selected_file_change(fn=on_selected_file_change) if __name__ == "__main__": demo.queue().launch()