Spaces:
Sleeping
Sleeping
File size: 5,583 Bytes
bc1666b 3aa83be bc1666b 6e630eb 3aa83be 3ceecc5 6e630eb 8ebdfd9 4c70eb3 0da5dab 8ebdfd9 bc1666b 6e630eb a53b184 0da5dab a53b184 0da5dab a53b184 0da5dab d1485ec a53b184 d1485ec 4da3aca 7fcfc57 a53b184 7fcfc57 4da3aca d1485ec a53b184 d1485ec 4c70eb3 0da5dab a53b184 0da5dab 4c70eb3 6e630eb a53b184 0da5dab a53b184 0da5dab bc1666b a53b184 bc1666b a53b184 bc1666b a53b184 bc1666b a53b184 bc1666b a53b184 bc1666b a53b184 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 |
# app.py
import streamlit as st
from streamlit_option_menu import option_menu
from utils.functions import (
get_phone_info,
simple_checks,
analyze_message,
init_stats_file,
update_stats,
add_to_history
)
import os
# 1. Konfiguracja strony - musi by膰 pierwszym poleceniem Streamlit
st.set_page_config(
page_title="馃摫 Detektor Fa艂szywych Wiadomo艣ci SMS",
page_icon="馃摫",
layout="wide",
initial_sidebar_state="collapsed" # Ukrycie sidebar domy艣lnie
)
# 2. Inicjalizacja pliku statystyk
init_stats_file()
# 3. Definiowanie t艂umacze艅
translations = {
'Polish': {
'menu_analysis_sms': 'Analiza SMS',
'menu_about': 'O Projekcie',
'menu_education': 'Edukacja',
'menu_statistics': 'Statystyki',
'menu_contact': 'Kontakt',
'language_select': 'Wybierz j臋zyk',
'separator': '---'
# ... dodaj inne t艂umaczenia
},
'German': {
'menu_analysis_sms': 'SMS-Analyse',
'menu_about': '脺ber das Projekt',
'menu_education': 'Bildung',
'menu_statistics': 'Statistiken',
'menu_contact': 'Kontakt',
'language_select': 'Sprache ausw盲hlen',
'separator': '---'
# ... dodaj inne t艂umaczenia
},
'English': {
'menu_analysis_sms': 'SMS Analysis',
'menu_about': 'About the Project',
'menu_education': 'Education',
'menu_statistics': 'Statistics',
'menu_contact': 'Contact',
'language_select': 'Select Language',
'separator': '---'
# ... dodaj inne t艂umaczenia
}
}
# 4. Language selection
if 'language' not in st.session_state:
st.session_state.language = 'Polish'
def set_language():
st.session_state.language = st.session_state.language_select
# Wy艣wietlenie wyboru j臋zyka na g贸rze aplikacji
st.radio(
translations['Polish']['language_select'],
('Polish', 'German', 'English'),
key='language_select',
index=['Polish', 'German', 'English'].index(st.session_state.language),
on_change=set_language
)
selected_language = st.session_state.language
# 5. Fetch translated menu options
menu_keys = ['menu_analysis_sms', 'menu_about', 'menu_education', 'menu_statistics', 'menu_contact']
menu_options = [translations[selected_language][key] for key in menu_keys]
# 6. Dodanie niestandardowego CSS do wzmocnienia styl贸w menu
custom_css = """
<style>
/* Stylizacja poziomego menu */
.streamlit-option-menu {
display: flex;
justify-content: center;
align-items: center;
background-color: var(--st-secondary-background-color);
padding: 10px 0;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
/* Pod艣wietlenie wybranej zak艂adki */
.streamlit-option-menu .selected {
background-color: #02ab21 !important; /* Zielone t艂o dla wybranej zak艂adki */
color: #ffffff !important; /* Bia艂y tekst dla wybranej zak艂adki */
}
/* Efekt hover dla element贸w menu */
.streamlit-option-menu .menu-item:hover {
background-color: #02ab21 !important; /* Zielone t艂o podczas hover */
color: #ffffff !important; /* Bia艂y tekst podczas hover */
}
/* Zmiana koloru ikon w menu */
.streamlit-option-menu .menu-item .icon {
color: inherit !important;
}
/* Responsywno艣膰 */
@media (max-width: 768px) {
.streamlit-option-menu {
flex-direction: column;
}
.streamlit-option-menu .menu-item {
margin: 5px 0;
width: 100%;
text-align: center;
}
}
</style>
"""
st.markdown(custom_css, unsafe_allow_html=True)
# 7. Tworzenie poziomego menu w kontenerze
with st.container():
selected = option_menu(
menu_title=None, # Brak tytu艂u menu
options=menu_options,
icons=["shield-check", "info-circle", "book", "bar-chart", "envelope"],
menu_icon=None, # Usuni臋cie ikony menu
default_index=0,
orientation="horizontal",
styles={
"container": {"padding": "0!important", "background-color": "transparent"},
"icon": {"color": "inherit", "font-size": "18px"},
"nav-link": {
"font-size": "16px",
"text-align": "center",
"margin": "0px",
"--hover-color": "transparent" # Hover kontrolowany przez niestandardowy CSS
},
"nav-link-selected": {
"background-color": "transparent", # T艂o kontrolowane przez niestandardowy CSS
"color": "inherit"
},
}
)
# 8. Dodanie separatora
st.markdown("---") # Dodaje poziom膮 lini臋
# 9. Importowanie i wywo艂ywanie modu艂贸w dla ka偶dej zak艂adki
if selected == translations[selected_language]['menu_analysis_sms']:
from pages.Analysis import show_analysis
show_analysis(selected_language)
elif selected == translations[selected_language]['menu_about']:
from pages.About import main as show_about
show_about(selected_language)
elif selected == translations[selected_language]['menu_education']:
from pages.Education import main as show_education
show_education(selected_language)
elif selected == translations[selected_language]['menu_statistics']:
from pages.Statistics import main as show_statistics
show_statistics(selected_language)
elif selected == translations[selected_language]['menu_contact']:
from pages.Contact import main as show_contact
show_contact(selected_language)
|