Spaces:
Sleeping
Sleeping
| """ | |
| Reference Tab for QuantumArchitect-MCP | |
| """ | |
| import gradio as gr | |
| import json | |
| # Import required components | |
| from ..ui import ( | |
| mcp_get_gate_info, | |
| mcp_get_algorithm_info, | |
| ) | |
| def add_reference_tab(): | |
| """Add the Reference tab to the Gradio interface.""" | |
| with gr.TabItem("📚 Reference", id="reference"): | |
| gr.Markdown("### Explore quantum gates and algorithms") | |
| with gr.Row(): | |
| with gr.Column(): | |
| with gr.Group(): | |
| gr.Markdown("#### 🔲 Gate Reference") | |
| gr.Markdown("*Click a gate to learn more:*") | |
| with gr.Row(): | |
| gate_btn_h = gr.Button("H", size="sm", elem_id="gate_btn_h") | |
| gate_btn_x = gr.Button("X", size="sm", elem_id="gate_btn_x") | |
| gate_btn_y = gr.Button("Y", size="sm", elem_id="gate_btn_y") | |
| gate_btn_z = gr.Button("Z", size="sm", elem_id="gate_btn_z") | |
| gate_btn_cx = gr.Button("CX", size="sm", elem_id="gate_btn_cx") | |
| gate_btn_rx = gr.Button("RX", size="sm", elem_id="gate_btn_rx") | |
| gate_input = gr.Textbox( | |
| value="h", | |
| label="Gate Name", | |
| elem_id="gate_name_input", | |
| placeholder="h, x, cx, rx, ...", | |
| info="Enter gate name or click above" | |
| ) | |
| gate_btn = gr.Button("🔍 Get Gate Info", variant="primary") | |
| gate_output = gr.JSON(label="Gate Documentation", elem_id="gate_docs") | |
| with gr.Column(): | |
| with gr.Group(): | |
| gr.Markdown("#### 🧮 Algorithm Reference") | |
| gr.Markdown("*Click an algorithm to learn more:*") | |
| with gr.Row(): | |
| algo_btn_bell = gr.Button("Bell State", size="sm", elem_id="algo_btn_bell_state") | |
| algo_btn_qft = gr.Button("QFT", size="sm", elem_id="algo_btn_qft") | |
| algo_btn_grover = gr.Button("Grover", size="sm", elem_id="algo_btn_grover") | |
| algo_input = gr.Textbox( | |
| value="bell_state", | |
| label="Algorithm Name", | |
| elem_id="algo_name_input", | |
| placeholder="bell_state, qft, grover, ...", | |
| info="Enter algorithm name or click above" | |
| ) | |
| algo_btn = gr.Button("🔍 Get Algorithm Info", variant="primary") | |
| algo_output = gr.JSON(label="Algorithm Documentation", elem_id="algo_docs") | |
| # Connect gate buttons to auto-fill input and fetch info | |
| def gate_click_handler(gate_name): | |
| info = json.loads(mcp_get_gate_info(gate_name)) | |
| return gate_name, info | |
| gate_btn_h.click(lambda: gate_click_handler("h"), outputs=[gate_input, gate_output]) | |
| gate_btn_x.click(lambda: gate_click_handler("x"), outputs=[gate_input, gate_output]) | |
| gate_btn_y.click(lambda: gate_click_handler("y"), outputs=[gate_input, gate_output]) | |
| gate_btn_z.click(lambda: gate_click_handler("z"), outputs=[gate_input, gate_output]) | |
| gate_btn_cx.click(lambda: gate_click_handler("cx"), outputs=[gate_input, gate_output]) | |
| gate_btn_rx.click(lambda: gate_click_handler("rx"), outputs=[gate_input, gate_output]) | |
| # Connect algorithm buttons to auto-fill input and fetch info | |
| def algo_click_handler(algo_name): | |
| info = json.loads(mcp_get_algorithm_info(algo_name)) | |
| return algo_name, info | |
| algo_btn_bell.click(lambda: algo_click_handler("bell_state"), outputs=[algo_input, algo_output]) | |
| algo_btn_qft.click(lambda: algo_click_handler("qft"), outputs=[algo_input, algo_output]) | |
| algo_btn_grover.click(lambda: algo_click_handler("grover"), outputs=[algo_input, algo_output]) | |
| gate_btn.click( | |
| lambda g: json.loads(mcp_get_gate_info(g)), | |
| inputs=[gate_input], | |
| outputs=[gate_output], | |
| ) | |
| algo_btn.click( | |
| lambda a: json.loads(mcp_get_algorithm_info(a)), | |
| inputs=[algo_input], | |
| outputs=[algo_output], | |
| ) |