Code_editor / code_editor.py
vsj0702's picture
Create code_editor.py
aba525f verified
raw
history blame
1.51 kB
# 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)