Spaces:
Sleeping
Sleeping
Bug fix
Browse files- code_editor.py +38 -32
code_editor.py
CHANGED
|
@@ -31,44 +31,50 @@ def render_code_editor(ace_theme):
|
|
| 31 |
|
| 32 |
# ββ File Upload βββββββββββββββββββββββββββββ
|
| 33 |
uploaded_file = st.file_uploader("π€ Upload file", type=["py", "cpp", "c", "java", "js", "cs", "txt"])
|
| 34 |
-
|
| 35 |
-
if "file_uploaded" not in st.session_state:
|
| 36 |
-
st.session_state.file_uploaded = False
|
| 37 |
|
| 38 |
-
if uploaded_file
|
| 39 |
if uploaded_file.size > 10 * 1024 * 1024:
|
| 40 |
st.error("π« File too large. Max allowed is 10MB.")
|
| 41 |
else:
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
|
| 52 |
-
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
|
| 56 |
-
|
| 57 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 58 |
|
| 59 |
# ββ Reset Language if Needed βββββββββββββββββ
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
|
| 64 |
-
|
| 65 |
-
|
| 66 |
-
|
| 67 |
-
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
| 72 |
|
| 73 |
# ββ Code Editor βββββββββββββββββββββββββββββ
|
| 74 |
code = st_ace.st_ace(
|
|
|
|
| 31 |
|
| 32 |
# ββ File Upload βββββββββββββββββββββββββββββ
|
| 33 |
uploaded_file = st.file_uploader("π€ Upload file", type=["py", "cpp", "c", "java", "js", "cs", "txt"])
|
|
|
|
|
|
|
|
|
|
| 34 |
|
| 35 |
+
if uploaded_file:
|
| 36 |
if uploaded_file.size > 10 * 1024 * 1024:
|
| 37 |
st.error("π« File too large. Max allowed is 10MB.")
|
| 38 |
else:
|
| 39 |
+
file_content = uploaded_file.read().decode("utf-8", errors="ignore")
|
| 40 |
+
filename = uploaded_file.name
|
| 41 |
+
|
| 42 |
+
# Detect change: file name or content changed
|
| 43 |
+
prev_name = st.session_state.get("uploaded_file_name")
|
| 44 |
+
prev_content = st.session_state.get("uploaded_file_content")
|
| 45 |
+
|
| 46 |
+
if file_content != prev_content or filename != prev_name:
|
| 47 |
+
ext = Path(filename).suffix.lower()
|
| 48 |
+
detected_lang = EXT_LANG_MAP.get(ext)
|
| 49 |
+
|
| 50 |
+
st.session_state.uploaded_file_name = filename
|
| 51 |
+
st.session_state.uploaded_file_content = file_content
|
| 52 |
+
|
| 53 |
+
if detected_lang:
|
| 54 |
+
st.session_state.language = detected_lang
|
| 55 |
+
st.session_state.prev_language = detected_lang
|
| 56 |
+
st.session_state.code = file_content
|
| 57 |
+
st.toast(f"β
Auto-switched to {detected_lang}", icon="π")
|
| 58 |
+
st.rerun()
|
| 59 |
+
elif ext == ".txt":
|
| 60 |
+
st.session_state.code = file_content
|
| 61 |
+
st.toast("π Loaded text file", icon="π")
|
| 62 |
+
else:
|
| 63 |
+
st.error("β Unsupported file format.")
|
| 64 |
|
| 65 |
# ββ Reset Language if Needed βββββββββββββββββ
|
| 66 |
+
selected_lang = st.session_state.language
|
| 67 |
+
default_code = DEFAULT_SNIPPETS[selected_lang]
|
| 68 |
+
previous_lang = st.session_state.get("prev_language")
|
| 69 |
+
|
| 70 |
+
if (
|
| 71 |
+
st.session_state.get("code") is None
|
| 72 |
+
or st.session_state.code.strip() == ""
|
| 73 |
+
or selected_lang != previous_lang
|
| 74 |
+
or st.session_state.code.strip() == DEFAULT_SNIPPETS.get(previous_lang, "")
|
| 75 |
+
):
|
| 76 |
+
st.session_state.code = default_code
|
| 77 |
+
st.session_state.prev_language = selected_lang
|
| 78 |
|
| 79 |
# ββ Code Editor βββββββββββββββββββββββββββββ
|
| 80 |
code = st_ace.st_ace(
|