Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import os | |
| import time | |
| import ngrok | |
| from dotenv import load_dotenv | |
| load_dotenv(".env.local") | |
| def new_file(file_name): | |
| # print(file_explorer) | |
| new_file_path = os.path.join(os.getcwd(), "dev", file_name) | |
| open(new_file_path, "w") | |
| def set_current_file(file): | |
| if file is None: | |
| return "" | |
| file_content = "" | |
| with open(file) as f: | |
| file_content = f.read() | |
| return file_content | |
| def update_file(current_file, editor_content): | |
| with open(current_file, "w") as f: | |
| f.write(editor_content) | |
| return current_file, editor_content, "" | |
| with gr.Blocks(css="footer {visibility: hidden}") as demo: | |
| with gr.Row(): | |
| with gr.Column() as c: | |
| file_explorer = gr.FileExplorer(file_count="single", root_dir="dev") | |
| new_file_name = gr.Textbox(label="New File Name") | |
| new_file_button = gr.Button( | |
| "Create New File (After creating a new file, you must refresh the page to see the changes.)" | |
| ) | |
| with gr.Column(): | |
| code_display = gr.Code( | |
| "Select a file to start", | |
| language="python", | |
| label="Code Display (Displays file's current state, cannot edit this.)", | |
| ) | |
| code_editor = gr.Code( | |
| "", | |
| language="python", | |
| label="Code Editor (Enter the updated code to put in the file here.)", | |
| ) | |
| update_button = gr.Button("Update File") | |
| file_explorer.change(set_current_file, file_explorer, code_display) | |
| update_button.click( | |
| update_file, | |
| [file_explorer, code_editor], | |
| [file_explorer, code_display, code_editor], | |
| ) | |
| new_file_button.click(new_file, new_file_name) | |
| # with gr.Row(): | |
| # save_button = gr.Button("Save Current File") | |
| if __name__ == "__main__": | |
| demo.queue() | |
| listener = ngrok.forward(9000, authtoken_from_env=True) | |
| print(f"Ingress established at {listener.url()}") | |
| demo.launch(server_port=9000) | |