Skip to content
API Documentation
BastionGuard™
LanguageDialog.hpp
Go to the documentation of this file.
1/*
2 * BastionGuard™ Secure Connection
3 * Copyright (C) 2025–2026 Calogero Scarnà
4 * GPL-3.0 — BastionGuard™ is a trademark of Calogero Scarnà.
5 */
6
7#pragma once
8#include <gtkmm.h>
9#include <string>
10#include <vector>
11
12/**
13 * Dialogo modale per la selezione della lingua dell'interfaccia.
14 *
15 * Salva la scelta in settings.ini (chiave "language=<locale>").
16 * Per applicare la lingua è necessario riavviare l'applicazione:
17 * il dialogo mostra un messaggio informativo in merito.
18 *
19 * Usa gettext/libintl: imposta LANGUAGE e chiama setlocale() + textdomain().
20 */
21class LanguageDialog : public Gtk::Dialog
22{
23public:
24 /**
25 * @param configFile Percorso completo di settings.ini
26 * @param currentLang Codice locale attuale (es. "it_IT", "en_US", "")
27 */
28 explicit LanguageDialog(const std::string& configFile,
29 const std::string& currentLang);
30
31 /** Restituisce il codice locale scelto (vuoto = default di sistema). */
32 std::string selectedLanguage() const { return m_selected; }
33
34private:
35 struct LangEntry {
36 std::string code; ///< Codice locale (es. "it_IT")
37 std::string label; ///< Nome visualizzato (es. "Italiano")
38 };
39
40 std::string m_configFile;
41 std::string m_selected;
42
43 Gtk::ComboBoxText m_combo;
44
45 static const std::vector<LangEntry>& availableLanguages();
46
47 void buildHeaderBar();
48 void buildUI(const std::string& currentLang);
49 void onApply();
50 bool saveLangToConfig(const std::string& lang);
51};
static const std::vector< LangEntry > & availableLanguages()
Gtk::ComboBoxText m_combo
bool saveLangToConfig(const std::string &lang)
std::string m_selected
std::string m_configFile
void buildUI(const std::string &currentLang)
std::string selectedLanguage() const
LanguageDialog(const std::string &configFile, const std::string &currentLang)
std::string label
Nome visualizzato (es. "Italiano").
std::string code
Codice locale (es. "it_IT").