From c1fb310f561a71ea49a86ef8b50f33310363281e Mon Sep 17 00:00:00 2001 From: amid Date: Fri, 20 Jan 2023 21:31:06 +0600 Subject: [PATCH] Merge commit from Igor1 --- .gitignore | 6 + Makefile | 108 ++-- README.md | 6 + main.cpp | 477 ------------------ ...icykit.ubl-settings-datetime.pkexec.policy | 12 +- reg/locali111 | 69 --- screen_app.png | Bin 0 -> 35649 bytes UBTime.cpp => ubl-settings-datetime.cpp | 190 +++++-- ubl-settings-datetime.desktop | 12 + ..._time.glade => ubl-settings-datetime.glade | 4 +- ublinux-logo.png => ubl-settings-datetime.png | Bin messages.pot => ubl-settings-datetime.po | 12 - ...-settings.svg => ubl-settings-datetime.svg | 0 13 files changed, 225 insertions(+), 671 deletions(-) create mode 100644 .gitignore delete mode 100644 main.cpp rename org.freedesktop.policykit.UBTime.pkexec.policy => org.freedesktop.policykit.ubl-settings-datetime.pkexec.policy (51%) delete mode 100644 reg/locali111 create mode 100644 screen_app.png rename UBTime.cpp => ubl-settings-datetime.cpp (83%) create mode 100644 ubl-settings-datetime.desktop rename ubconfig_date_time.glade => ubl-settings-datetime.glade (99%) rename ublinux-logo.png => ubl-settings-datetime.png (100%) rename messages.pot => ubl-settings-datetime.po (99%) rename ublinux-datetime-settings.svg => ubl-settings-datetime.svg (100%) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0611a0e --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +UBTime +main.cpp +ubl-settings-datetime.glade~ +test.cpp +ubl-settings-datetime +a.out \ No newline at end of file diff --git a/Makefile b/Makefile index 5161b99..9ca9003 100644 --- a/Makefile +++ b/Makefile @@ -1,61 +1,71 @@ #!/usr/bin/make -f -pkgname="ubconfig" +pkgname=ubl-settings-datetime -all: uninstall build check install clean +all: uninstall init build check install clean + +init: + mkdir -p /usr/share/${pkgname}/{images,ui,reg}/; uninstall: - pkgname="ubconfig" - for size in 16 32 48; do - rm -f "/usr/share/icons/hicolor/${size}x${size}/apps/ublinux-${pkgname}.svg" - rm -f "/usr/share/icons/hicolor/${size}x${size}/apps/hide_pass_icon.svg" - rm -f "/usr/share/icons/hicolor/${size}x${size}/apps/show_pass_icon.svg" - done - for file_po in *.po; do - lang=${file_po##*_};lang=${lang%.*} - file_mo=${file_po##*/}; file_mo="${file_mo%_*.po}.mo" - path_file_mo="/usr/share/locale/${lang}/LC_MESSAGES/${file_mo}" - rm -f "/usr/share/locale/${lang}/LC_MESSAGES/${file_mo}" - done - rm -f /usr/bin/"${pkgname}" - rm -f /usr/bin/"${pkgname}".gtk - rm -f /usr/share/"${pkgname}"/ui/"${pkgname}".glade - rm -f /usr/share/applications/"${pkgname}".desktop - rm -f /usr/share/"${pkgname}"/css/style.css - rm -f /usr/share/"${pkgname}"/images/side_img_ubc_v_dark.png - rm -f /usr/share/"${pkgname}"/images/side_img_ubc_v_light.png - rm -f /usr/share/polkit-1/actions/org.freedesktop.policykit."${pkgname}".pkexec.policy + @for size in 16 32 48; do \ + rm -f "/usr/share/icons/hicolor/$${size}x$${size}/apps/ublinux-datetime-settings.svg"; \ + rm -f "/usr/share/icons/hicolor/$${size}x$${size}/apps/ublinux-datetime-settings.png"; \ + done; + @for file_po in *.po; do \ + lang=$${file_po##*_};lang=$${lang%.*}; \ + file_mo=$${file_po##*/}; file_mo="$${file_mo%_*.po}.mo"; \ + path_file_mo="/usr/share/locale/$${lang}/LC_MESSAGES/$${file_mo}"; \ + rm -f "/usr/share/locale/$${lang}/LC_MESSAGES/$${file_mo}"; \ + done; + rm -f /usr/bin/${pkgname}; \ + rm -rf /usr/bin/${pkgname}/reg; \ + rm -f /usr/share/${pkgname}/ui/${pkgname}.glade; \ + rm -f /usr/share/applications/${pkgname}.desktop; \ + rm -f /usr/share/${pkgname}/images/ublinux-datetime-settings.svg; \ + rm -f /usr/share/${pkgname}/images/ublinux-datetime-settings.png; \ + rm -f /usr/share/polkit-1/actions/org.freedesktop.policykit.${pkgname}.pkexec.policy; \ build: - echo "Build" + echo "Build"; \ + g++ -O2 -std=c++20 -lstdc++ -o ubl-settings-datetime ubl-settings-datetime.cpp `pkg-config --cflags --libs gtkmm-3.0` -Wl,-export-dynamic -g; \ check: - echo "Check" + echo "Check"; \ install: - for size in 16 32 48; do - install -dm755 /usr/share/icons/hicolor/${size}x${size}/apps - rsvg-convert -w ${size} -h ${size} -f svg --keep-image-data "ublinux-${pkgname}.svg" -o "/usr/share/icons/hicolor/${size}x${size}/apps/ublinux-${pkgname}.svg" - rsvg-convert -w ${size} -h ${size} -f svg --keep-image-data "hide_pass_icon.svg" -o "/usr/share/icons/hicolor/${size}x${size}/apps/hide_pass_icon.svg" - rsvg-convert -w ${size} -h ${size} -f svg --keep-image-data "show_pass_icon.svg" -o "/usr/share/icons/hicolor/${size}x${size}/apps/show_pass_icon.svg" - done - for file_po in *.po; do - lang=${file_po##*_};lang=${lang%.*} - install -dm755 /usr/share/locale/${lang}/LC_MESSAGES - file_mo=${file_po##*/}; file_mo="${file_mo%_*.po}.mo" - path_file_mo="/usr/share/locale/${lang}/LC_MESSAGES/${file_mo}" - msgfmt "${file_po}" -v -f -o "${path_file_mo}" - done - install -vDm0755 "${pkgname}" -t /usr/bin/ - install -vDm0755 "${pkgname}".gtk -t /usr/bin/ - install -vDm0644 "${pkgname}".glade -t /usr/share/"${pkgname}"/ui/ - install -vDm0644 "${pkgname}".desktop -t /usr/share/applications/ - install -vDm0644 style.css -t /usr/share/"${pkgname}"/css/ - install -vDm0644 side_img_ubc_v_dark.png -t /usr/share/"${pkgname}"/images/ - install -vDm0644 side_img_ubc_v_light.png -t /usr/share/"${pkgname}"/images/ - install -vDm0644 org.freedesktop.policykit."${pkgname}".pkexec.policy -t /usr/share/polkit-1/actions/ - - + @for size in 16 32 48; do \ + install -dm755 /usr/share/icons/hicolor/$${size}x$${size}/apps; \ + rsvg-convert -w $$size -h $$size -f svg --keep-image-data ${pkgname}.svg -o "/usr/share/icons/hicolor/$${size}x$${size}/apps/$${pkgname}.svg"; \ + done; + @for file_po in *.po; do \ + lang=$${file_po##*_};lang=$${lang%.*}; \ + install -dm755 /usr/share/locale/$${lang}/LC_MESSAGES; \ + file_mo=$${file_po##*/}; file_mo="$${file_mo%_*.po}.mo"; \ + path_file_mo="/usr/share/locale/$${lang}/LC_MESSAGES/$${file_mo}"; \ + echo $$file_po; \ + msgfmt "$${file_po}" -v -f -o "$${path_file_mo}"; \ + done; + install -vDm0755 ${pkgname} -t /usr/bin/; \ + install -vDm0644 ${pkgname}.glade -t /usr/share/${pkgname}/ui/; \ + install -vDm0644 ${pkgname}.desktop -t /usr/share/applications/; \ + install -vDm0644 ubl-settings-datetime.svg -t /usr/share/icons/hicolor/scalable/apps/ + install -vDm0644 ubl-settings-datetime.svg -t /usr/share/${pkgname}/images/; \ + install -vDm0644 ubl-settings-datetime.png -t /usr/share/${pkgname}/images/; \ + install -vDm0644 org.freedesktop.policykit.${pkgname}.pkexec.policy -t /usr/share/polkit-1/actions/; + install -vDm0644 reg/Africa -t /usr/share/${pkgname}/reg/; \ + install -vDm0644 reg/America -t /usr/share/${pkgname}/reg/; \ + install -vDm0644 reg/Antarctica -t /usr/share/${pkgname}/reg/; \ + install -vDm0644 reg/Arctic -t /usr/share/${pkgname}/reg/; \ + install -vDm0644 reg/Asia -t /usr/share/${pkgname}/reg/; \ + install -vDm0644 reg/Atlantic -t /usr/share/${pkgname}/reg/; \ + install -vDm0644 reg/Australia -t /usr/share/${pkgname}/reg/; \ + install -vDm0644 reg/Brazil -t /usr/share/${pkgname}/reg/; \ + install -vDm0644 reg/Chile -t /usr/share/${pkgname}/reg/; \ + install -vDm0644 reg/Europe -t /usr/share/${pkgname}/reg/; \ + install -vDm0644 reg/Indian -t /usr/share/${pkgname}/reg/; \ + install -vDm0644 reg/Mexico -t /usr/share/${pkgname}/reg/; \ + install -vDm0644 reg/US -t /usr/share/${pkgname}/reg/; clean: - echo "Clean" - + echo "Clean"; + \ No newline at end of file diff --git a/README.md b/README.md index 8ab6612..ccab309 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,8 @@ # ubl-settings-datetime +![alt text](screen_app.png) + +- [ ] Локализация +- [x] Makefile +- [ ] Парсинг TimeZone C++ + diff --git a/main.cpp b/main.cpp deleted file mode 100644 index 4b06858..0000000 --- a/main.cpp +++ /dev/null @@ -1,477 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace std; -class MainWindow; - -class MainWindow { -public: - MainWindow(Glib::RefPtr const& builder) - { - this->builder = builder; - this->get_builder(); - _numTimeHrs->set_range(0,23); - _numTimeMin->set_range(0,59); - _numTimeHrs->set_increments(1.0,1.0); - _numTimeMin->set_increments(1.0,1.0); - _txtDate->set_sensitive(false); - this->get_config(); - this->event(); - - - } - - virtual ~MainWindow() = default; - // Функция вызывается btnUpdateDate для обновления времени - void get_builder(){ - builder->get_widget("btnUpdateDateTime", _btnUpdateDateTime); - builder->get_widget("btnChooseDate", _btnChooseDate); - builder->get_widget("cbxSynchronizeNtp", _cbxSynchronizeNtp); - builder->get_widget("popCalendar", _popCalendar); - builder->get_widget("numTimeHrs", _numTimeHrs); - builder->get_widget("numTimeMin", _numTimeMin); - builder->get_widget("cbDhcp", _cbDhcp); - builder->get_widget("txtDate", _txtDate); - builder->get_widget("cbRegion", _cbRegion); - builder->get_widget("cbRegionGlob", _cbRegionGlob); - builder->get_widget("cbZone", _cbZone); - builder->get_widget("cbZoneGlob", _cbZoneGlob); - builder->get_widget("txtNtpServer", _txtNtpServer); - builder->get_widget("cldrDate", _cldrDate); - builder->get_widget("mess_dchp", _mess_dchp); - - } - void event(){ - _cldrDate->signal_day_selected().connect(sigc::mem_fun(*this, &MainWindow::get_calendar)); - _cbxSynchronizeNtp->signal_toggled().connect(sigc::mem_fun(*this, &MainWindow::set_ntp_toggle)); - _btnUpdateDateTime->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::update_time_date)); - _btnChooseDate->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::calendar_show)); - _cbDhcp->signal_changed().connect(sigc::mem_fun(*this, &MainWindow::get_ghcp)); - _cbRegion->signal_changed().connect(sigc::mem_fun(*this, &MainWindow::append_zone)); - _cbRegionGlob->signal_changed().connect(sigc::mem_fun(*this, &MainWindow::append_zone_glob)); - _cbZone->signal_changed().connect(sigc::mem_fun(*this, &MainWindow::enter_zone)); - _cbZoneGlob->signal_changed().connect(sigc::mem_fun(*this, &MainWindow::enter_zone_glob)); - _txtNtpServer->signal_activate().connect(sigc::mem_fun(*this, &MainWindow::A));; - } - - void focus_ntp(){ - - } - void A(){ - cout << "A" << endl; - //_txtNtpServer->signal_focus_out_event().connect(sigc::mem_fun(*this, &MainWindow::focus_ntp)); - } - - - - - void enry_dhcp_mess(){} - - void get_ghcp(){ - Glib::ustring str_dhcp = _cbDhcp->get_active_text(); - if (str_dhcp.length()!=0){ - if (str_dhcp=="DHCP"){ - string cmd = "sudo /usr/bin/ubconfig set network NTPSERVERS=dhcp"; - system(cmd.c_str()); - //_txtNtpServer->set_active(false); - _cbDhcp->set_active(0); - } - else{ - string cmd = "sudo /usr/bin/ubconfig set network NTPSERVERS=" + _txtNtpServer->get_text(); - //_txtNtpServer->set_active(true); - system(cmd.c_str()); - _cbDhcp->set_active(1); - } - } - else{ - string cmd = "sudo /usr/bin/ubconfig set network NTPSERVERS=dhcp"; - system(cmd.c_str()); - //_txtNtpServer->set_sensitive(false); - _cbDhcp->set_active(0); - } - } - - void get_calendar(){ - _cldrDate->get_date(year, month, day); - string date = to_string(day) + ':' + to_string(month+1) + ':' + to_string(year); - _txtDate->set_text(date); - } - - - void calendar_show(){ - time_t now = time(0); - tm *ltm = localtime(&now); - unsigned int y=1900+ ltm->tm_year; - unsigned int m=ltm->tm_mon; - unsigned int d=ltm->tm_mday; - - - _cldrDate->select_month(m,y); - _cldrDate->select_day(d); - _popCalendar->show(); - } - - void get_config(){ - this->read_file(); - this->update_hour_minute(); - this->update_calendar(); - this->get_ghcp(); - string str_dhcp = this->call("sudo /usr/bin/ubconfig get network NTPSERVERS"); - cout << str_dhcp << endl; - if ((str_dhcp!="") && (str_dhcp!="(null)")){ - str_dhcp = str_dhcp.substr(str_dhcp.find("=")+1,str_dhcp.length()); - str_dhcp = str_dhcp.substr(0,str_dhcp.find("\n")); - if (str_dhcp=="dhcp"){ - _cbDhcp->set_active(0); - //_txtNtpServer->set_sensitive(false); - //_cbxSynchronizeNtp->set_sensitive(true); - } - else{ - if (str_dhcp==""){ - _mess_dchp->show(); - } - else{ - _cbDhcp->set_active(1); - //_txtNtpServer->set_sensitive(true); - //_cbxSynchronizeNtp->set_sensitive(false); - _txtNtpServer->set_text(str_dhcp); - } - } - - - //_cbxDhcp->set_active(true); - this->set_ntp_toggle(); - } - string str_ntp = this->call("sudo systemctl status ntpd.service systemd-timesyncd.service | grep \"Active: active\""); - if (str_ntp.length()<50) { - _cbxSynchronizeNtp->set_active(false); - } - else{ - _cbxSynchronizeNtp->set_active(true); - } - - string read_reg_zon_cfg = this->call("sudo /usr/bin/ubconfig get clock ZONE"); - if ((read_reg_zon_cfg != "") && (read_reg_zon_cfg !="(null)")){ - read_reg_zon_cfg = read_reg_zon_cfg.substr(read_reg_zon_cfg.find("=")+1,read_reg_zon_cfg.length()); - read_reg_zon_cfg = read_reg_zon_cfg.substr(0,read_reg_zon_cfg.find("\n")); - string str_filling_reg = read_reg_zon_cfg.substr(0,read_reg_zon_cfg.find("/")); - 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 = ""; - this->append_region_zone(str_filling_reg,str_filling_zon); - } - else { - this->append_region_zone("Asia","Omsk"); - - } - - } - - void enter_zone(){ - Glib::ustring zone_text = _cbZone->get_active_text(); - Glib::ustring reg_text = _cbRegion->get_active_text(); - if(!(zone_text.empty()) && !(reg_text.empty())){ - str_zone=zone_text.substr(zone_text.find(") ")+2,zone_text.length()); - str_region=reg_text; - string cmd = "sudo timedatectl set-timezone '" + str_region +"/" + str_zone+"'"; - system(cmd.c_str()); - } - else{ - str_zone=""; - str_region=""; - } - } - - void enter_zone_glob(){ - Glib::ustring zone_text = _cbZoneGlob->get_active_text(); - Glib::ustring reg_text = _cbRegionGlob->get_active_text(); - if(!(zone_text.empty()) && !(reg_text.empty())){ - str_zoneGlob = zone_text.substr(zone_text.find(") ")+2,zone_text.length()); - str_region_glob = reg_text; - string cmd = "sudo /usr/bin/ubconfig set clock ZONE=" +str_region_glob +"/" + str_zoneGlob; - system(cmd.c_str()); - } - else{ - str_zoneGlob=""; - str_region_glob=""; - } - } - - void set_ntp_toggle(){ - bool flag = _cbxSynchronizeNtp->get_active(); - _numTimeHrs->set_sensitive(!flag); - _numTimeMin->set_sensitive(!flag); - //_txtDate->set_sensitive(!flag); - _btnChooseDate->set_sensitive(!flag); - //_btnUpdateDateTime->set_sensitive(!flag); - if (flag==false){ - system("sudo systemctl --now disable systemd-timesyncd.service ntpd.service"); - } - else { - system("sudo systemctl --now enable systemd-timesyncd.service"); - } - - } - - void append_region_zone(string region, string zone){ - int index = 0; - for ( const auto &text : time_reg_map ) { - _cbRegion->append(text.first); - _cbRegionGlob->append(text.first); - if (text.first == region){ - _cbRegionGlob->set_active(index); - _cbRegion->set_active(index); - - } - index+=1; - } - index = 0; - string cheek_zone = ""; - for (const auto &_str_zone : time_reg_map.at(region)){ - _cbZone->append(_str_zone); - _cbZoneGlob->append(_str_zone); - if (_str_zone!=""){ - cheek_zone = _str_zone.substr(_str_zone.find(") ")+2,_str_zone.length()); - if (cheek_zone == zone){ - _cbZone->set_active(index); - _cbZoneGlob->set_active(index); - } - } - index+=1; - } - } - string call(string cmd){ - FILE *fp; - int status; - char path[PATH_MAX]; - fp = popen(cmd.c_str(), "r"); - if (fp == NULL){ - //return ""; - } - - while (fgets(path, PATH_MAX, fp) != NULL){ - printf("%s", path); - break; - - } - - status = pclose(fp); - if (status == -1) { - //return ""; - } - else { - //return ""; - } - return path; - } - - void append_zone(){ - Glib::ustring text = _cbRegion->get_active_text(); - _cbZone->remove_all(); - - if(!(text.empty())){ - str_region = text; - for (const auto &_str_zone : time_reg_map.at(str_region)){ - _cbZone->append(_str_zone); - } - } - - } - - void append_zone_glob(){ - Glib::ustring text = _cbRegionGlob->get_active_text(); - _cbZoneGlob->remove_all(); - if(!(text.empty())){ - str_region_glob = text; - for (const auto &_str_zone : time_reg_map.at(str_region_glob)){ - _cbZoneGlob->append(_str_zone); - } - } - - } - void update_time_date(){ - this->enter_zone(); - bool flag = _cbxSynchronizeNtp->get_active(); - if (flag==false){ - hour = _numTimeHrs->get_value_as_int(); - minute = _numTimeMin->get_value_as_int(); - time_t now = time(0); - tm *ltm = localtime(&now); - string cmd = "sudo timedatectl set-time \""+ - to_string(hour) + ":" + to_string(minute) - + ":" + to_string(ltm->tm_sec) +"\""; - system(cmd.c_str()); - if ((year==0) && (month == 0) && (day == 0)){ - time_t now = time(0); - tm *ltm = localtime(&now); - year=1900+ ltm->tm_year; - month=ltm->tm_mon+1; - day=ltm->tm_mday; - } - string str_mount = ""; - string str_day = ""; - if (month <10){ - str_mount = "0"+to_string(month+1); - } - else{ - str_mount = to_string(month+1); - } - if (day <10){ - str_day = "0"+to_string(day); - } - else{ - str_day = to_string(day); - } - string cmd1 = "sudo date --set=\"" +to_string(year)+ - str_mount+str_day + " " +to_string(hour) + ":" + - to_string(minute)+"\""; - system(cmd1.c_str()); - } - - - } - void update_hour_minute(){ - time_t now = time(0); - tm *ltm = localtime(&now); - _numTimeHrs->set_value(ltm->tm_hour); - _numTimeMin->set_value(ltm->tm_min); - } - - void update_calendar(){ - time_t now = time(0); - tm *ltm = localtime(&now); - int year = 1900 + (int)ltm->tm_year; - string date = to_string(ltm->tm_mday) + ':' + to_string(ltm->tm_mon+1) + ':' + to_string(year); - _txtDate->set_text(date); - } - void read_file(){ - std::string line; - namespace fs = std::filesystem; - for (const auto & entry : fs::directory_iterator(path_file)){ - 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}); - } - in.close(); - } - } - -private: - string path_file="reg/"; - Glib::RefPtr builder; - Gtk::Button *_btnUpdateDateTime; - Gtk::Button *_btnChooseDate; - Gtk::ComboBoxText *_cbDhcp; - Gtk::SpinButton *_numTimeHrs; - Gtk::SpinButton *_numTimeMin; - Gtk::CheckButton *_cbxSynchronizeNtp; - - Gtk::Entry *_txtDate; - Gtk::ComboBoxText *_cbRegion; - Gtk::ComboBoxText *_cbRegionGlob; - Gtk::ComboBoxText *_cbZone; - Gtk::ComboBoxText *_cbZoneGlob; - Gtk::Entry *_txtNtpServer; - Gtk::MessageDialog *_mess_dchp; - Gtk::Popover *_popCalendar; - Gtk::Calendar *_cldrDate; - unsigned int year, month, day; - int hour; - int minute; - string str_region=""; - string str_region_glob=""; - string str_txtDate; - string str_txtNtpServer; - string str_zone=""; - string str_zoneGlob; - std::map > time_reg_map; - -}; - -class WrapperMainWindow : public Gtk::ApplicationWindow { - public: - WrapperMainWindow(BaseObjectType* obj, Glib::RefPtr const& builder) - : Gtk::ApplicationWindow(obj) - , builder{builder} - { - MainWindow MainWindow(builder); - } - virtual ~WrapperMainWindow() = default; - - private: - Glib::RefPtr builder; -}; -/* -class PlugMainWindow : public Gtk::Plug -{ - -public: - - SettingsPlug(::Window p_socketID) - : Gtk::Plug{p_socketID} - { - - } - void get_builder(Glib::RefPtr const& builder) - { - this->builder = builder; - } - private: - Glib::RefPtr builder; -} -*/ -int main(int argc, char* argv[]) { - string app_name = "main"; - //setlocale(LC_ALL, ""); - //bindtextdomain(app_name, "/usr/share/locale"); - //textdomain(app_name); - auto app = Gtk::Application::create(argc, argv, "de.engelmarkus.example"); - auto builder = Gtk::Builder::create_from_file("ubconfig_date_time.glade"); - - Glib::OptionContext context; - /*CmdArgParser parser{ - "Socket ID", - "Command line argument for socket ID communication.", - "No help available, sorry" - }*/ - - - //context.set_main_group(parser); - //context.parse(argc, argv); - - //::Window socketID = parser.GetSocketID(); - //SettingsPlug plug{socketID}; - //plug.show(); - - WrapperMainWindow * wnd = nullptr; - - builder->get_widget_derived("window", wnd); - - auto r = app->run(*wnd); - - delete wnd; - - return r; -} \ No newline at end of file diff --git a/org.freedesktop.policykit.UBTime.pkexec.policy b/org.freedesktop.policykit.ubl-settings-datetime.pkexec.policy similarity index 51% rename from org.freedesktop.policykit.UBTime.pkexec.policy rename to org.freedesktop.policykit.ubl-settings-datetime.pkexec.policy index 7c1f2be..eb3e5c8 100644 --- a/org.freedesktop.policykit.UBTime.pkexec.policy +++ b/org.freedesktop.policykit.ubl-settings-datetime.pkexec.policy @@ -7,17 +7,17 @@ UBSoft https://ublinux.ru - - Run UBConfig as root - Запуск UBTime с правами root - Authentication is required to run the UBConfig - Требуется авторизация для запуска UBTime с правами root + + Run ubl-settings-datetime as root + Запуск ubl-settings-datetime с правами root + Authentication is required to run the ubl-settings-datetime + Требуется авторизация для запуска ubl-settings-datetime с правами root auth_admin auth_admin auth_admin - /usr/bin/UBTime + /home/superadmin/Документы/Проект/ubconfig_new/ubl-settings-datetime/ true diff --git a/reg/locali111 b/reg/locali111 deleted file mode 100644 index f14d13c..0000000 --- a/reg/locali111 +++ /dev/null @@ -1,69 +0,0 @@ -msgid "Ok" -msgstr "Oк" - -msgid "Enter DHCP" -msgstr "Введите DHCP" - -msgid "UBconfig - Дата и время" -msgstr "UBconfig - Дата и время" - -msgid "Setting the date and time" -msgstr "Настройка даты и времени" - -msgid "Time" -msgstr "Время" - -msgid "Clock" -msgstr "Часы" - -msgid "Minutes" -msgstr "Минуты" - -msgid "Date" -msgstr "Дата" - -msgid "" -msgstr "" - -msgid "Interactive date picker" -msgstr "Интерактивный выбор даты" - -msgid "Change zone setting" -msgstr "Изменить параметр зоны" - -msgid "time zone" -msgstr "Временная зона" - -msgid "Region" -msgstr "Регион" - -msgid "Zone" -msgstr "Зона" - -msgid "Update date and time" -msgstr "Обновить дату и время" - -msgid "Synchronize via NTP" -msgstr "Синхронизировать через NTP" - -msgid "Automatic time synchronization" -msgstr "Автоматическая синхронизация времени" - -msgid "Synchronization method" -msgstr "Способ синхронизации" - -msgid "DHCP" -msgstr "DHCP" - -msgid "Manually" -msgstr "Вручную" - -msgid "" -msgstr "" - -msgid "Time zone" -msgstr "Временная зона" - -msgid "Setting date and time in global configuration" -msgstr "Настройка даты и времени в глобальной конфигурации" - diff --git a/screen_app.png b/screen_app.png new file mode 100644 index 0000000000000000000000000000000000000000..39c88a4f9edcc2d975aea96ed69d7e5a5063a2a2 GIT binary patch literal 35649 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 Z61VXH?IEN`bocfR using namespace std; -string path_app= "/home/superadmin/Документы/Проект/ubconfig_new/Ubconfig_date_time/"; -string app_name = "UBTime"; +string path_app= "/usr/bin/"; +string path_glade= "/usr/share/ubl-settings-datetime/ui/"; +string app_name = "ubl-settings-datetime"; bool flag_datetime = false; bool flag_timezone = false; bool flag_ntp = false; bool flag_update = false; + +class CmdArgParser : public Glib::OptionGroup +{ + +public: + + CmdArgParser(const std::string& p_name, const std::string& p_description, const std::string& p_help) + : Glib::OptionGroup{p_name, p_description, p_help} + { + // Define the 'socket ID' argument options: + Glib::OptionEntry socketIDArg; + socketIDArg.set_long_name("socket-id"); + socketIDArg.set_short_name('s'); + socketIDArg.set_flags(Glib::OptionEntry::FLAG_IN_MAIN); + socketIDArg.set_description("Settings manager socket"); + + // Register it in the parser. It value will be recorded in m_socketID for later usage. + add_entry(socketIDArg, m_socketID); + } + + // Override this to handle errors. I skipped it for simplicity. + // void on_error(Glib::OptionContext& context, const Glib::Error& error) override; + + ::Window GetSocketID() const + { + return m_socketID; + } + +private: + + int m_socketID = 0; + +}; + + + class MainWindow : public Gtk::ApplicationWindow { public: MainWindow(BaseObjectType* obj, Glib::RefPtr const& builder) : Gtk::ApplicationWindow(obj) , builder{builder} { - path_file+="reg/"; + this->settings(); + + } + MainWindow(Glib::RefPtr const& builder) { + this->builder = builder; + this->settings(); + } + + virtual ~MainWindow() = default; + + void settings(){ this->get_builder(); _numTimeHrs->set_range(0,23); _numTimeMin->set_range(0,59); @@ -44,11 +91,8 @@ public: this->get_config(); this->flag_block_gui(); this->event(); - } - virtual ~MainWindow() = default; - void flag_block_gui(){ if (flag_datetime==true){ _numTimeHrs->set_sensitive(false); @@ -174,7 +218,7 @@ public: _cldrDate->get_date(year, month, day); string str_month = ""; string str_day = ""; - month=month+1; + month+=1; if (month <10){ str_month = "0"+to_string(month); } @@ -416,7 +460,7 @@ public: time_t now = time(0); tm *ltm = localtime(&now); year=1900+ ltm->tm_year; - month=ltm->tm_mon+1; + month=ltm->tm_mon; day=ltm->tm_mday; } string str_month = ""; @@ -425,7 +469,7 @@ public: str_month = "0"+to_string(month+1); } else{ - str_month = to_string(month+1); + str_month = to_string(month); } if (day <10){ str_day = "0"+to_string(day); @@ -475,7 +519,7 @@ public: void read_file(){ std::string line; namespace fs = std::filesystem; - for (const auto & entry : fs::directory_iterator(path_file)){ + for (const auto & entry : fs::directory_iterator("/usr/share/ubl-settings-datetime/reg/")){ std::ifstream in(entry.path()); // окрываем файл для чтения if (in.is_open()) { @@ -494,7 +538,6 @@ public: } private: - string path_file=path_app; Glib::RefPtr builder; Gtk::Button *_btnUpdateDateTime; Gtk::Button *_btnChooseDate; @@ -526,12 +569,37 @@ private: }; +class SettingsPlug : public Gtk::Plug +{ + +public: + Gtk::Window *window; + SettingsPlug(::Window p_socketID, Glib::RefPtr builder) + : Gtk::Plug{p_socketID} + { + + //MainWindow* wnd = nullptr; + //builder->get_widget_derived("window", wnd); + builder->get_widget("plugBox", plugBox); + plugBox->get_parent()->remove(*plugBox); + add(*plugBox); + + show_all_children(); + } + +private: + + Gtk::Widget *plugBox; + Gtk::Widget *parent; +}; + void help(){ cout << "Параметры командной строки --lock-datetime\n --lock-timezone\n --lock-ntp\n --lock-update\n" << endl; } int main(int argc, char* argv[]) { + //path_app=filesystem::current_path(); //path_app+="/"; //cout << *argv[0] << endl; @@ -541,59 +609,69 @@ int main(int argc, char* argv[]) { for (int i=1; iget_widget_derived("window", wnd); + auto r = app->run(*wnd); + + delete wnd; + return r; } - - - //Glib::OptionContext context; - /*CmdArgParser parser{ - "Socket ID", - "Command line argument for socket ID communication.", - "No help available, sorry" - }*/ - + else{ + Glib::init(); + setlocale(LC_ALL, ""); + Glib::OptionContext context; + + CmdArgParser parser{ + "Socket ID", + "Command line argument for socket ID communication.", + "No help available, sorry" + }; - //context.set_main_group(parser); - //context.parse(argc, argv); + context.set_main_group(parser); + context.parse(argc, argv); - //::Window socketID = parser.GetSocketID(); - //SettingsPlug plug{socketID}; - //plug.show(); - MainWindow* wnd = nullptr; - builder->get_widget_derived("window", wnd); - auto r = app->run(*wnd); + ::Window socketID = parser.GetSocketID(); - delete wnd; + // Handle plug: + SettingsPlug plug{socketID, builder}; + plug.show(); + + app->run(plug); + + } - return r; + } \ No newline at end of file diff --git a/ubl-settings-datetime.desktop b/ubl-settings-datetime.desktop new file mode 100644 index 0000000..ec87043 --- /dev/null +++ b/ubl-settings-datetime.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Type=Application +Exec=ubl-settings-datetime +Icon=ubl-settings-datetime +Comment=Time setting app +Comment[ru]=Приложение для настройки времени +Terminal=false +Name=Time setting +Name[ru]=Настройка времени +GenericName=Time setting app +GenericName[ru]=Настройка времени +Categories=XFCE;GTK;Settings;DesktopSettings;X-XFCE-SettingsDialog;X-XFCE-SystemSettings; \ No newline at end of file diff --git a/ubconfig_date_time.glade b/ubl-settings-datetime.glade similarity index 99% rename from ubconfig_date_time.glade rename to ubl-settings-datetime.glade index 796c316..acb6aeb 100644 --- a/ubconfig_date_time.glade +++ b/ubl-settings-datetime.glade @@ -87,7 +87,7 @@ False UBconfig - Дата и время - ublinux-logo.png + ../../../../../../usr/share/ubl-settings-datetime/images/ubl-settings-datetime.png True @@ -108,7 +108,7 @@ 5 6 6 - ublinux-logo.png + ../../../../../../usr/share/ubl-settings-datetime/images/ubl-settings-datetime.png False diff --git a/ublinux-logo.png b/ubl-settings-datetime.png similarity index 100% rename from ublinux-logo.png rename to ubl-settings-datetime.png diff --git a/messages.pot b/ubl-settings-datetime.po similarity index 99% rename from messages.pot rename to ubl-settings-datetime.po index 5aac87c..b74586b 100644 --- a/messages.pot +++ b/ubl-settings-datetime.po @@ -850,9 +850,6 @@ msgstr "" msgid "Panama" msgstr "" -msgid "Indiana" -msgstr "" - msgid "New_York" msgstr "" @@ -1165,9 +1162,6 @@ msgstr "" msgid "Famagusta" msgstr "" -msgid "Nicosia" -msgstr "" - msgid "Hebron" msgstr "" @@ -1192,9 +1186,6 @@ msgstr "" msgid "Baghdad" msgstr "" -msgid "Istanbul" -msgstr "" - msgid "Kuwait" msgstr "" @@ -1540,9 +1531,6 @@ msgstr "" msgid "Acre" msgstr "" -msgid "West" -msgstr "" - msgid "East" msgstr "" diff --git a/ublinux-datetime-settings.svg b/ubl-settings-datetime.svg similarity index 100% rename from ublinux-datetime-settings.svg rename to ubl-settings-datetime.svg -- 2.35.1