134 lines
4.9 KiB
Python
134 lines
4.9 KiB
Python
import logging.config
|
|
|
|
import yaml
|
|
from fasthtml import serve
|
|
|
|
from myfasthtml.controls.CommandsDebugger import CommandsDebugger
|
|
from myfasthtml.controls.Dropdown import Dropdown
|
|
from myfasthtml.controls.FileUpload import FileUpload
|
|
from myfasthtml.controls.InstancesDebugger import InstancesDebugger
|
|
from myfasthtml.controls.Keyboard import Keyboard
|
|
from myfasthtml.controls.Layout import Layout
|
|
from myfasthtml.controls.TabsManager import TabsManager
|
|
from myfasthtml.controls.TreeView import TreeView, TreeNode
|
|
from myfasthtml.controls.helpers import Ids, mk
|
|
from myfasthtml.core.instances import UniqueInstance
|
|
from myfasthtml.icons.carbon import volume_object_storage
|
|
from myfasthtml.icons.fluent_p2 import key_command16_regular
|
|
from myfasthtml.icons.fluent_p3 import folder_open20_regular
|
|
from myfasthtml.myfastapp import create_app
|
|
|
|
with open('logging.yaml', 'r') as f:
|
|
config = yaml.safe_load(f)
|
|
|
|
# At the top of your script or module
|
|
logging.config.dictConfig(config)
|
|
|
|
app, rt = create_app(protect_routes=True,
|
|
mount_auth_app=True,
|
|
pico=False,
|
|
vis=True,
|
|
title="MyFastHtml",
|
|
live=True,
|
|
base_url="http://localhost:5003")
|
|
|
|
|
|
def create_sample_treeview(parent):
|
|
"""
|
|
Create a sample TreeView with a file structure for testing.
|
|
|
|
Args:
|
|
parent: Parent instance for the TreeView
|
|
|
|
Returns:
|
|
TreeView: Configured TreeView instance with sample data
|
|
"""
|
|
tree_view = TreeView(parent, _id="-treeview")
|
|
|
|
# Create sample file structure
|
|
projects = TreeNode(label="Projects", type="folder")
|
|
tree_view.add_node(projects)
|
|
|
|
myfasthtml = TreeNode(label="MyFastHtml", type="folder")
|
|
tree_view.add_node(myfasthtml, parent_id=projects.id)
|
|
|
|
app_py = TreeNode(label="app.py", type="file")
|
|
tree_view.add_node(app_py, parent_id=myfasthtml.id)
|
|
|
|
readme = TreeNode(label="README.md", type="file")
|
|
tree_view.add_node(readme, parent_id=myfasthtml.id)
|
|
|
|
src_folder = TreeNode(label="src", type="folder")
|
|
tree_view.add_node(src_folder, parent_id=myfasthtml.id)
|
|
|
|
controls_py = TreeNode(label="controls.py", type="file")
|
|
tree_view.add_node(controls_py, parent_id=src_folder.id)
|
|
|
|
documents = TreeNode(label="Documents", type="folder")
|
|
tree_view.add_node(documents, parent_id=projects.id)
|
|
|
|
notes = TreeNode(label="notes.txt", type="file")
|
|
tree_view.add_node(notes, parent_id=documents.id)
|
|
|
|
todo = TreeNode(label="todo.md", type="file")
|
|
tree_view.add_node(todo, parent_id=documents.id)
|
|
|
|
# Expand all nodes to show the full structure
|
|
#tree_view.expand_all()
|
|
|
|
return tree_view
|
|
|
|
|
|
@rt("/")
|
|
def index(session):
|
|
session_instance = UniqueInstance(session=session, _id=Ids.UserSession)
|
|
layout = Layout(session_instance, "Testing Layout")
|
|
layout.footer_left.add("Goodbye World")
|
|
|
|
tabs_manager = TabsManager(layout, _id=f"-tabs_manager")
|
|
add_tab = tabs_manager.commands.add_tab
|
|
btn_show_right_drawer = mk.button("show",
|
|
command=layout.commands.toggle_drawer("right"),
|
|
id="btn_show_right_drawer_id")
|
|
|
|
instances_debugger = InstancesDebugger(layout)
|
|
btn_show_instances_debugger = mk.label("Instances",
|
|
icon=volume_object_storage,
|
|
command=add_tab("Instances", instances_debugger),
|
|
id=instances_debugger.get_id())
|
|
|
|
commands_debugger = CommandsDebugger(layout)
|
|
btn_show_commands_debugger = mk.label("Commands",
|
|
icon=key_command16_regular,
|
|
command=add_tab("Commands", commands_debugger),
|
|
id=commands_debugger.get_id())
|
|
|
|
btn_file_upload = mk.label("Upload",
|
|
icon=folder_open20_regular,
|
|
command=add_tab("File Open", FileUpload(layout, _id="-file_upload")),
|
|
id="file_upload_id")
|
|
|
|
btn_popup = mk.label("Popup",
|
|
command=add_tab("Popup", Dropdown(layout, "Content", button="button", _id="-dropdown")))
|
|
|
|
# Create TreeView with sample data
|
|
tree_view = create_sample_treeview(layout)
|
|
|
|
layout.header_left.add(tabs_manager.add_tab_btn())
|
|
layout.header_right.add(btn_show_right_drawer)
|
|
layout.left_drawer.add(btn_show_instances_debugger, "Debugger")
|
|
layout.left_drawer.add(btn_show_commands_debugger, "Debugger")
|
|
layout.left_drawer.add(btn_file_upload, "Test")
|
|
layout.left_drawer.add(btn_popup, "Test")
|
|
layout.left_drawer.add(tree_view, "TreeView")
|
|
layout.set_main(tabs_manager)
|
|
keyboard = Keyboard(layout, _id="-keyboard").add("ctrl+o",
|
|
add_tab("File Open", FileUpload(layout, _id="-file_upload")))
|
|
keyboard.add("ctrl+n", add_tab("File Open", FileUpload(layout, _id="-file_upload")))
|
|
return layout, keyboard
|
|
|
|
|
|
if __name__ == "__main__":
|
|
# debug_routes(app)
|
|
serve(port=5003)
|