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)