import streamlit as st
import logging
from ..database.database_oldFromV2 import manage_file_contents, delete_file, get_user_files
from ..utils.widget_utils import generate_unique_key

logger = logging.getLogger(__name__)



def display_semantic_interface(lang_code, nlp_models, t):
    st.subheader(t['semantic_title'])

    text_input = st.text_area(
        t['warning_message'],
        height=150,
        key=generate_unique_key("semantic", "text_area")
    )

    if st.button(
        t['results_title'],
        key=generate_unique_key("semantic", "analyze_button")
    ):
        if text_input:
            # Aquí iría tu lógica de análisis morfosintáctico
            # Por ahora, solo mostraremos un mensaje de placeholder
            st.info(t['analysis_placeholder'])
        else:
            st.warning(t['no_text_warning'])


'''
def display_semantic_interface(lang_code, nlp_models, t):
    st.title("Semantic Analysis")

    tab1, tab2 = st.tabs(["File Management", "Analysis"])

    with tab1:
        display_file_management(lang_code, t)

    with tab2:
        # Aquí irá el código para el análisis semántico (lo implementaremos después)
        st.write("Semantic analysis section will be implemented here.")

def display_file_management(lang_code, t):
    st.header("File Management")

    # File Upload Section
    st.subheader("Upload New File")
    uploaded_file = st.file_uploader(
        "Choose a file to upload",
        type=['txt', 'pdf', 'docx', 'doc', 'odt'],
        key=generate_unique_key('semantic', 'file_uploader')
    )
    if uploaded_file is not None:
        file_contents = uploaded_file.getvalue().decode('utf-8')
        if manage_file_contents(st.session_state.username, uploaded_file.name, file_contents, 'semantic'):
            st.success(f"File {uploaded_file.name} uploaded and saved successfully")
        else:
            st.error("Error uploading file")

    st.markdown("---")


    # File Management Section
    st.subheader("Manage Uploaded Files")
    user_files = get_user_files(st.session_state.username, 'semantic')
    if user_files:
        for file in user_files:
            col1, col2 = st.columns([3, 1])
            with col1:
                st.write(file['file_name'])
            with col2:
                if st.button("Delete", key=f"delete_{file['file_name']}", help=f"Delete {file['file_name']}"):
                    try:
                        logger.info(f"Attempting to delete file: {file['file_name']} for user: {st.session_state.username}")
                        if delete_file(st.session_state.username, file['file_name'], 'semantic'):
                            st.success(f"File {file['file_name']} deleted successfully")
                            logger.info(f"File {file['file_name']} deleted successfully for user: {st.session_state.username}")
                            st.rerun()
                        else:
                            st.error(f"Error deleting file {file['file_name']}")
                            logger.error(f"Failed to delete file {file['file_name']} for user: {st.session_state.username}")
                    except Exception as e:
                        st.error(f"An error occurred while deleting file {file['file_name']}: {str(e)}")
                        logger.exception(f"Exception occurred while deleting file {file['file_name']} for user: {st.session_state.username}")

    else:
        st.info("No files uploaded yet.")

if __name__ == "__main__":
    # This is just for testing purposes
    class MockTranslation(dict):
        def __getitem__(self, key):
            return key

    display_semantic_interface('en', {}, MockTranslation())

    '''