diff --git a/source/main.cc b/source/main.cc index fb22901..59f3253 100644 --- a/source/main.cc +++ b/source/main.cc @@ -33,17 +33,19 @@ int main(int argc, char* argv[]) { system(cmd.c_str()); return 0; } + //setlocale(LC_ALL, ''); + bind_textdomain_codeset(app_name.c_str(), "UTF-8"); + textdomain(app_name.c_str()); + bindtextdomain(app_name.c_str(), path_locale.c_str()); auto app = Gtk::Application::create(argc, argv, "org.gtkmm.example.plug"); auto builder = Gtk::Builder::create_from_file(path_glade + "ubl-settings-datetime.glade"); + if (argc>1){ str_argv_1 = argv[1]; } if ((str_argv_1=="--help" || str_argv_1=="--lock-datetime") || (str_argv_1=="--lock-timezone" || str_argv_1=="--lock-ntp") || (str_argv_1=="--lock-update" || argc==1)){ cout << 2222 << endl; - //setlocale(LC_ALL, "."); - //bindtextdomain(app_name.c_str(), "."); - //textdomain(app_name.c_str()); - //textdomain(app_name); + for (int i=0; isignal_changed().connect(sigc::mem_fun(*this, &MainWindow::enter_zone)); _cbZoneGlob->signal_changed().connect(sigc::mem_fun(*this, &MainWindow::enter_zone_glob)); _txtNtpServer->signal_focus_out_event().connect(sigc::mem_fun(*this, &MainWindow::focus_ntp)); + //_btnMessClose->signal_day_selected_double_click().connect(sigc::mem_fun(*this, &MainWindow::close_calendar)); } void MainWindow::gui_mess_close(){ _mess_dchp->hide(); } - +void MainWindow::close_calendar(){ + _popCalendar->hide(); +} bool MainWindow::focus_ntp(GdkEventFocus* event){ if (event!=NULL){} @@ -280,6 +284,7 @@ void MainWindow::get_config(){ string str_filling_zon = read_reg_zon_cfg.substr(read_reg_zon_cfg.find("/")+1,read_reg_zon_cfg.length()); str_filling_zon = str_filling_zon.substr(0,str_filling_zon.find("\n")); string str_zone_check = ""; + cout << str_filling_zon << endl; this->append_region_zone(str_filling_reg,str_filling_zon); } else { @@ -523,51 +528,46 @@ void MainWindow::update_calendar(){ string date = str_day + '.' + str_month + '.' + to_string(year1); _txtDate->set_text(date); } -/* -void MainWindow::read_file(){ - string cmd_reg = "find /usr/share/zoneinfo/* -maxdepth 0 -type d -not \\( -name posix -o -name right \\) -printf \"%f\n\""; - string str_reg_all = this->call(cmd_reg); - cout << 222 << endl; - cout << 222 << endl; - cout << str_reg_all << endl; - - char delim = '\n'; - vector vector_reg=this->split(str_reg_all, delim); - - string str_zone_all = ""; - string cmd_zone = ""; - string key_reg = ""; - for (const auto &str_reg : vector_reg){ - cmd_zone = "find /usr/share/zoneinfo/"+str_reg+"/* -type f -printf \"%f\n\" | sort -u"; - str_zone_all=this->call(cmd_zone); - vector vector_zone = this->split(str_zone_all, delim); - vector zone; - zone.push_back(""); - for (const auto &str_zone : vector_zone){ - zone.push_back(string(gettext(str_zone.c_str()))); - } - - key_reg = string(gettext(key_reg.c_str())); - time_reg_map.insert({str_reg, zone}); - } -} -*/ + void MainWindow::read_file(){ std::string line; + namespace fs = std::filesystem; - for (const auto & entry : fs::directory_iterator(path_reg)){ + for (const auto & entry : fs::directory_iterator("/usr/share/zoneinfo/")){ std::ifstream in(entry.path()); // окрываем файл для чтения if (in.is_open()) { - vector zone; - zone.push_back(""); - while (getline(in, line)) - { - zone.push_back(string(gettext(line.c_str()))); - } string key_reg = entry.path().filename().string(); - key_reg = string(gettext(key_reg.c_str())); - time_reg_map.insert({key_reg, zone}); + + string path_dir = "/usr/share/zoneinfo/"+key_reg; + if (fs::is_directory(path_dir)){ + vector zone; + zone.push_back(""); + for (const auto & entry_zone : fs::directory_iterator(path_dir)){ + std::ifstream in1(entry_zone.path()); // окрываем файл для чтения + if (in1.is_open()) + { + + string key_zone = entry_zone.path().filename().string(); + if (key_zone.length()!=0 || key_zone!=" "){ + zone.push_back(string(gettext(key_zone.c_str()))); + } + } + in1.close(); + } + + key_reg = string(gettext(key_reg.c_str())); + time_reg_map.insert({key_reg, zone}); + + + + while (getline(in, line)) + { + + } + + + } } in.close(); } diff --git a/source/ubl_settings_datetime.h b/source/ubl_settings_datetime.h index b277a72..289f1f0 100644 --- a/source/ubl_settings_datetime.h +++ b/source/ubl_settings_datetime.h @@ -28,6 +28,7 @@ extern string path_app; extern string path_glade; extern string app_name; extern string path_reg; +extern string path_locale; extern bool flag_datetime; extern bool flag_timezone; extern bool flag_ntp; @@ -60,6 +61,7 @@ public: MainWindow(BaseObjectType* obj, Glib::RefPtr const& builder); MainWindow(Glib::RefPtr const& builder); virtual ~MainWindow() = default; + void close_calendar(); void settings(); void flag_block_gui(); void add_CSS();