Spaces:
Sleeping
Sleeping
| # code_editor.py | |
| import streamlit as st | |
| import streamlit_ace as st_ace | |
| from utils import execute_code | |
| def render_code_editor(selected_lang, ace_theme, editor_key, default_snippet): | |
| st.subheader("Editor") | |
| code = st_ace.st_ace( | |
| value=st.session_state.code, | |
| placeholder=f"Start typing your {selected_lang} code…", | |
| language=selected_lang.lower() if selected_lang != "C++" else "c_cpp", | |
| theme=ace_theme, | |
| keybinding="vscode", | |
| font_size=14, | |
| min_lines=20, | |
| show_gutter=True, | |
| wrap=True, | |
| auto_update=True, | |
| key=editor_key | |
| ) | |
| if code != st.session_state.code: | |
| st.session_state.code = code | |
| user_input = st.text_area( | |
| label="📥 Input (stdin)", | |
| value=st.session_state.stdin, | |
| placeholder="Enter input() values here, one per line", | |
| height=100, | |
| key="stdin_input" | |
| ) | |
| if user_input != st.session_state.stdin: | |
| st.session_state.stdin = user_input | |
| if st.button("▶️ Run"): | |
| out, err, exc = execute_code( | |
| code=st.session_state.code, | |
| stdin=st.session_state.stdin, | |
| language=selected_lang | |
| ) | |
| st.session_state.code_output = out | |
| st.session_state.error_output = err or exc | |
| if st.session_state.get("code_output"): | |
| st.text_area("Output", st.session_state.code_output, height=120) | |
| if st.session_state.get("error_output"): | |
| st.error(st.session_state.error_output) | |