fix and reload project in repo

pull/17/head
Igor Belitskiy 3 years ago
parent 870a8706a8
commit 0786348b63

5
.gitignore vendored

@ -3,3 +3,8 @@ ubl-settings-datetime.glade~
test.cpp
ubl-settings-datetime
a.out
compile/
source/**/ubl_settings_datetime
source/**/main.o
source/**/ubl_settings_datetime.o
reg/

@ -1,16 +1,19 @@
#!/usr/bin/make -f
#!/usr/bin/make -f
#SHELL := /bin/bash
MAKEFILE_FILEPATH := $(abspath $(lastword $(MAKEFILE_LIST)))
MAKEFILE_DIR := $(notdir $(patsubst %/,%,$(dir $(MAKEFILE_FILEPATH))))
MAKEFILE_PATH := $(dir $(MAKEFILE_FILEPATH))
CMAKE_COMMAND = cmake
#CMAKE_SOURCE_DIR = $(MAKEFILE_PATH)source
#CMAKE_BUILD_DIR = $(MAKEFILE_PATH)compile
CMAKE_SOURCE_DIR = ./source
CMAKE_BUILD_DIR = ./compile
DEPENDS = cmake
PKGNAME = $(MAKEFILE_DIR)
#PKGNAME = ubl-settings-datetime
#PKGNAME = $(MAKEFILE_DIR)
PKGNAME = ubl-settings-datetime
default_target: all
all: init build
@ -55,7 +58,6 @@ build: depend prepare
@echo "Build ..."; \
make --directory=${CMAKE_BUILD_DIR}; \
echo "Build: OK"
# 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
uninstall:
@echo "Uninstall ..."
@ -102,11 +104,12 @@ install: check uninstall
@install -Dm755 -t /usr/bin/ ${CMAKE_BUILD_DIR}/${PKGNAME}
@install -Dm644 -t /usr/share/applications/ ${PKGNAME}.desktop
@install -Dm644 -t /usr/share/polkit-1/actions/ ru.ublinux.pkexec.${PKGNAME}.exec.policy
@install -dm755 /usr/share/${PKGNAME}/{ui,images,reg}
@install -dm755 /usr/share/${PKGNAME}/{ui,images,css}
@install -Dm644 -t /usr/share/${PKGNAME}/ui/ ${PKGNAME}.glade
@install -Dm644 -t /usr/share/${PKGNAME}/css/ style.css
@install -Dm644 -t /usr/share/${PKGNAME}/images/ ${PKGNAME}.svg
@install -Dm644 -t /usr/share/${PKGNAME}/images/ ${PKGNAME}.png
@cp -afr reg/* /usr/share/${PKGNAME}/reg/
@install -Dm644 -t /usr/share/${PKGNAME}/images/ bg_top.png
@gtk-update-icon-cache -fiq /usr/share/icons/hicolor/
@update-desktop-database --quiet 2>/dev/null
@touch /usr/share/applications

@ -1,8 +1,4 @@
# ubl-settings-datetime
# Настройки даты и времени
![alt text](screenshot/screenshot.png)
- [ ] Локализация
- [x] Makefile
- [ ] Парсинг TimeZone C++

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

@ -0,0 +1,123 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-01-25 12:51+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: ubl-settings-datetime.glade:7
msgid "Внимание!"
msgstr ""
#: ubl-settings-datetime.glade:45
msgid "Введите DHCP !"
msgstr ""
#: ubl-settings-datetime.glade:62
msgid "OK"
msgstr ""
#. Date and Time Settings
#: ubl-settings-datetime.glade:84
msgctxt "Settings the date and time"
msgid "Настройки даты и времени"
msgstr ""
#. Setting the date and time
#: ubl-settings-datetime.glade:125 ubl-settings-datetime.glade:531
msgctxt "Setting the date and time"
msgid "Настройка даты и времени"
msgstr ""
#. Time
#: ubl-settings-datetime.glade:204
msgctxt "Time"
msgid "Время"
msgstr ""
#: ubl-settings-datetime.glade:238
msgid ":"
msgstr ""
#. Date
#: ubl-settings-datetime.glade:287
msgctxt "Date"
msgid "Дата"
msgstr ""
#. Date of
#. Format: DD.MM.YYYY
#: ubl-settings-datetime.glade:302
msgctxt ""
"Date of\n"
"Format: DD.MM.YYYY"
msgid ""
"Дата\n"
"Формат: ДД.ММ.ГГГГ"
msgstr ""
#. Interactive date picker
#: ubl-settings-datetime.glade:321
msgctxt "Interactive date picker"
msgid "Интерактивный выбор даты"
msgstr ""
#. time zone
#: ubl-settings-datetime.glade:364
msgctxt "time zone"
msgid "Часовой пояс"
msgstr ""
#. Region
#: ubl-settings-datetime.glade:389 ubl-settings-datetime.glade:396
#: ubl-settings-datetime.glade:687
msgctxt "Region"
msgid "Регион"
msgstr ""
#. Zone
#: ubl-settings-datetime.glade:426 ubl-settings-datetime.glade:433
#: ubl-settings-datetime.glade:721
msgctxt "Zone"
msgid "Зона"
msgstr ""
#: ubl-settings-datetime.glade:501
msgid "Синхронизировать"
msgstr ""
#. Automatic time synchronization
#: ubl-settings-datetime.glade:580
msgctxt "Automatic time synchronization"
msgid "Автоматическая синхронизация времени"
msgstr ""
#. Synchronize via NTP
#: ubl-settings-datetime.glade:591
msgctxt "Synchronize via NTP"
msgid "Синхронизировать через NTP"
msgstr ""
#. Time zone
#: ubl-settings-datetime.glade:655
msgctxt "Time zone"
msgid "Часовой пояс"
msgstr ""
#. Setting date and time in global configuration
#: ubl-settings-datetime.glade:776
msgctxt "Setting date and time in global configuration"
msgid "Настройка даты и времени в глобальной конфигурации"
msgstr ""

@ -1,54 +0,0 @@
(UTC +00) Lome
(UTC +00) Bissau
(UTC +00) Sao_Tome
(UTC +00) Abidjan
(UTC +00) Accra
(UTC +00) Banjul
(UTC +00) Conakry
(UTC +00) Ouagadougou
(UTC +00) Nouakchott
(UTC +00) Timbuktu
(UTC +00) Dakar
(UTC +00) Monrovia
(UTC +00) Freetown
(UTC +00) Bamako
(UTC +01) El_Aaiun
(UTC +01) Lagos
(UTC +01) Porto-Novo
(UTC +01) Algiers
(UTC +01) Douala
(UTC +01) Brazzaville
(UTC +01) Libreville
(UTC +01) Casablanca
(UTC +01) Niamey
(UTC +01) Tunis
(UTC +01) Luanda
(UTC +01) Malabo
(UTC +01) Ceuta
(UTC +01) Kinshasa
(UTC +01) Bangui
(UTC +01) Ndjamena
(UTC +02) Juba
(UTC +02) Maseru
(UTC +02) Khartoum
(UTC +02) Lubumbashi
(UTC +02) Tripoli
(UTC +02) Mbabane
(UTC +02) Kigali
(UTC +02) Gaborone
(UTC +02) Windhoek
(UTC +02) Maputo
(UTC +02) Cairo
(UTC +02) Johannesburg
(UTC +02) Bujumbura
(UTC +02) Lusaka
(UTC +02) Harare
(UTC +02) Blantyre
(UTC +03) Djibouti
(UTC +03) Dar_es_Salaam
(UTC +03) Kampala
(UTC +03) Addis_Ababa
(UTC +03) Mogadishu
(UTC +03) Asmera
(UTC +03) Asmara
(UTC +03) Nairobi

@ -1,147 +0,0 @@
(UTC -10) Atka
(UTC -10) Adak
(UTC -09) Anchorage
(UTC -09) Metlakatla
(UTC -09) Juneau
(UTC -09) Sitka
(UTC -09) Nome
(UTC -09) Yakutat
(UTC -08) Tijuana
(UTC -08) Santa_Isabel
(UTC -08) Vancouver
(UTC -08) Ensenada
(UTC -08) Los_Angeles
(UTC -07) Ciudad_Juarez
(UTC -07) Dawson
(UTC -07) Hermosillo
(UTC -07) Phoenix
(UTC -07) Whitehorse
(UTC -07) Edmonton
(UTC -07) Creston
(UTC -07) Inuvik
(UTC -07) Mazatlan
(UTC -07) Shiprock
(UTC -07) Yellowknife
(UTC -07) Fort_Nelson
(UTC -07) Denver
(UTC -07) Boise
(UTC -07) Dawson_Creek
(UTC -07) Cambridge_Bay
(UTC -06) North_Dakota
(UTC -06) Knox_IN
(UTC -06) Costa_Rica
(UTC -06) Menominee
(UTC -06) El_Salvador
(UTC -06) Regina
(UTC -06) Guatemala
(UTC -06) Resolute
(UTC -06) Monterrey
(UTC -06) Chicago
(UTC -06) Winnipeg
(UTC -06) Indiana
(UTC -06) Rankin_Inlet
(UTC -06) Merida
(UTC -06) Tegucigalpa
(UTC -06) Managua
(UTC -06) Belize
(UTC -06) Rainy_River
(UTC -06) Bahia_Banderas
(UTC -06) Ojinaga
(UTC -06) Chihuahua
(UTC -06) Swift_Current
(UTC -06) Mexico_City
(UTC -06) Matamoros
(UTC -05) Jamaica
(UTC -05) Montreal
(UTC -05) Havana
(UTC -05) Grand_Turk
(UTC -05) Iqaluit
(UTC -05) Louisville
(UTC -05) Guayaquil
(UTC -05) Lima
(UTC -05) Coral_Harbour
(UTC -05) Detroit
(UTC -05) Port-au-Prince
(UTC -05) Fort_Wayne
(UTC -05) Eirunepe
(UTC -05) Indianapolis
(UTC -05) Rio_Branco
(UTC -05) Cancun
(UTC -05) Nipigon
(UTC -05) Toronto
(UTC -05) Panama
(UTC -05) Indiana
(UTC -05) New_York
(UTC -05) Kentucky
(UTC -05) Pangnirtung
(UTC -05) Thunder_Bay
(UTC -05) Bogota
(UTC -05) Cayman
(UTC -05) Atikokan
(UTC -05) Porto_Acre
(UTC -05) Nassau
(UTC -04) Anguilla
(UTC -04) Guadeloupe
(UTC -04) Puerto_Rico
(UTC -04) Porto_Velho
(UTC -04) Guyana
(UTC -04) Lower_Princes
(UTC -04) St_Lucia
(UTC -04) Port_of_Spain
(UTC -04) Dominica
(UTC -04) Manaus
(UTC -04) Thule
(UTC -04) St_Vincent
(UTC -04) St_Barthelemy
(UTC -04) Grenada
(UTC -04) Marigot
(UTC -04) Goose_Bay
(UTC -04) Martinique
(UTC -04) La_Paz
(UTC -04) Cuiaba
(UTC -04) Tortola
(UTC -04) Virgin
(UTC -04) Santo_Domingo
(UTC -04) Antigua
(UTC -04) Curacao
(UTC -04) Barbados
(UTC -04) Blanc-Sablon
(UTC -04) Aruba
(UTC -04) Kralendijk
(UTC -04) Montserrat
(UTC -04) Campo_Grande
(UTC -04) Caracas
(UTC -04) St_Thomas
(UTC -04) Glace_Bay
(UTC -04) St_Kitts
(UTC -04) Moncton
(UTC -04) Boa_Vista
(UTC -04) Halifax
(UTC -03) Buenos_Aires
(UTC -03) Santarem
(UTC -03) Araguaina
(UTC -03) Belem
(UTC -03) St_Johns
(UTC -03) Nuuk
(UTC -03) Cordoba
(UTC -03) Catamarca
(UTC -03) Rosario
(UTC -03) Jujuy
(UTC -03) Montevideo
(UTC -03) Punta_Arenas
(UTC -03) Cayenne
(UTC -03) Sao_Paulo
(UTC -03) Santiago
(UTC -03) Paramaribo
(UTC -03) Miquelon
(UTC -03) Godthab
(UTC -03) Maceio
(UTC -03) Fortaleza
(UTC -03) Argentina
(UTC -03) Mendoza
(UTC -03) Recife
(UTC -03) Bahia
(UTC -03) Asuncion
(UTC -02) Noronha
(UTC -01) Scoresbysund
(UTC +00) Danmarkshavn

@ -1,12 +0,0 @@
(UTC -03) Rothera
(UTC -03) Palmer
(UTC +00) Troll
(UTC +03) Syowa
(UTC +05) Mawson
(UTC +06) Vostok
(UTC +07) Davis
(UTC +10) DumontDUrville
(UTC +11) Casey
(UTC +11) Macquarie
(UTC +13) McMurdo
(UTC +13) South_Pole

@ -1 +0,0 @@
(UTC +01) Longyearbyen

@ -1,99 +0,0 @@
(UTC +02) Beirut
(UTC +02) Famagusta
(UTC +02) Nicosia
(UTC +02) Hebron
(UTC +02) Tel_Aviv
(UTC +02) Jerusalem
(UTC +02) Gaza
(UTC +03) Amman
(UTC +03) Bahrain
(UTC +03) Tehran
(UTC +03) Baghdad
(UTC +03) Istanbul
(UTC +03) Kuwait
(UTC +03) Riyadh
(UTC +03) Qatar
(UTC +03) Damascus
(UTC +03) Aden
(UTC +04) Yerevan
(UTC +04) Baku
(UTC +04) Dubai
(UTC +04) Kabul
(UTC +04) Muscat
(UTC +04) Tbilisi
(UTC +05) Kathmandu
(UTC +05) Samarkand
(UTC +05) Ashgabat
(UTC +05) Karachi
(UTC +05) Katmandu
(UTC +05) Calcutta
(UTC +05) Tashkent
(UTC +05) Yekaterinburg
(UTC +05) Oral
(UTC +05) Dushanbe
(UTC +05) Atyrau
(UTC +05) Aqtobe
(UTC +05) Aqtau
(UTC +05) Qyzylorda
(UTC +05) Ashkhabad
(UTC +05) Colombo
(UTC +05) Kolkata
(UTC +06) Dhaka
(UTC +06) Thimphu
(UTC +06) Rangoon
(UTC +06) Kashgar
(UTC +06) Qostanay
(UTC +06) Almaty
(UTC +06) Urumqi
(UTC +06) Yangon
(UTC +06) Dacca
(UTC +06) Thimbu
(UTC +06) Omsk
(UTC +06) Bishkek
(UTC +07) Ho_Chi_Minh
(UTC +07) Phnom_Penh
(UTC +07) Vientiane
(UTC +07) Bangkok
(UTC +07) Krasnoyarsk
(UTC +07) Novokuznetsk
(UTC +07) Barnaul
(UTC +07) Jakarta
(UTC +07) Saigon
(UTC +07) Hovd
(UTC +07) Novosibirsk
(UTC +07) Tomsk
(UTC +07) Pontianak
(UTC +08) Harbin
(UTC +08) Chungking
(UTC +08) Ulan_Bator
(UTC +08) Brunei
(UTC +08) Singapore
(UTC +08) Choibalsan
(UTC +08) Chongqing
(UTC +08) Macau
(UTC +08) Ujung_Pandang
(UTC +08) Manila
(UTC +08) Kuala_Lumpur
(UTC +08) Makassar
(UTC +08) Kuching
(UTC +08) Macao
(UTC +08) Shanghai
(UTC +08) Taipei
(UTC +08) Ulaanbaatar
(UTC +08) Irkutsk
(UTC +08) Hong_Kong
(UTC +09) Khandyga
(UTC +09) Seoul
(UTC +09) Jayapura
(UTC +09) Chita
(UTC +09) Pyongyang
(UTC +09) Yakutsk
(UTC +09) Tokyo
(UTC +09) Dili
(UTC +10) Vladivostok
(UTC +10) Ust-Nera
(UTC +11) Srednekolymsk
(UTC +11) Sakhalin
(UTC +11) Magadan
(UTC +12) Anadyr
(UTC +12) Kamchatka

@ -1,12 +0,0 @@
(UTC -04) Bermuda
(UTC -03) Stanley
(UTC -02) South_Georgia
(UTC -01) Cape_Verde
(UTC -01) Azores
(UTC +00) Faeroe
(UTC +00) Faroe
(UTC +00) St_Helena
(UTC +00) Reykjavik
(UTC +00) Canary
(UTC +00) Madeira
(UTC +01) Jan_Mayen

@ -1,23 +0,0 @@
(UTC +08) Perth
(UTC +08) Eucla
(UTC +08) West
(UTC +09) Darwin
(UTC +09) North
(UTC +10) Yancowinna
(UTC +10) South
(UTC +10) Lindeman
(UTC +10) Broken_Hill
(UTC +10) Adelaide
(UTC +10) Queensland
(UTC +10) Brisbane
(UTC +11) Victoria
(UTC +11) Hobart
(UTC +11) ACT
(UTC +11) Tasmania
(UTC +11) LHI
(UTC +11) Currie
(UTC +11) Canberra
(UTC +11) Sydney
(UTC +11) Melbourne
(UTC +11) Lord_Howe
(UTC +11) NSW

@ -1,4 +0,0 @@
(UTC -05) Acre
(UTC -04) West
(UTC -03) East
(UTC -02) DeNoronha

@ -1,2 +0,0 @@
(UTC -05) EasterIsland
(UTC -03) Continental

@ -1,64 +0,0 @@
(UTC +00) Jersey
(UTC +00) Dublin
(UTC +00) Belfast
(UTC +00) Guernsey
(UTC +00) London
(UTC +00) Lisbon
(UTC +00) Isle_of_Man
(UTC +01) Ljubljana
(UTC +01) Stockholm
(UTC +01) Skopje
(UTC +01) Oslo
(UTC +01) Sarajevo
(UTC +01) Tirane
(UTC +01) Zagreb
(UTC +01) Vienna
(UTC +01) Andorra
(UTC +01) Madrid
(UTC +01) Podgorica
(UTC +01) Copenhagen
(UTC +01) Monaco
(UTC +01) Belgrade
(UTC +01) Budapest
(UTC +01) Brussels
(UTC +01) Amsterdam
(UTC +01) Berlin
(UTC +01) Zurich
(UTC +01) Bratislava
(UTC +01) Prague
(UTC +01) Malta
(UTC +01) Rome
(UTC +01) Luxembourg
(UTC +01) Vaduz
(UTC +01) Paris
(UTC +01) Warsaw
(UTC +01) Vatican
(UTC +01) Busingen
(UTC +01) Gibraltar
(UTC +01) San_Marino
(UTC +02) Sofia
(UTC +02) Vilnius
(UTC +02) Helsinki
(UTC +02) Mariehamn
(UTC +02) Riga
(UTC +02) Bucharest
(UTC +02) Kyiv
(UTC +02) Kiev
(UTC +02) Athens
(UTC +02) Zaporozhye
(UTC +02) Tallinn
(UTC +02) Kaliningrad
(UTC +02) Uzhgorod
(UTC +02) Chisinau
(UTC +02) Nicosia
(UTC +02) Tiraspol
(UTC +03) Simferopol
(UTC +03) Istanbul
(UTC +03) Moscow
(UTC +03) Kirov
(UTC +03) Minsk
(UTC +03) Volgograd
(UTC +04) Ulyanovsk
(UTC +04) Samara
(UTC +04) Astrakhan
(UTC +04) Saratov

@ -1,11 +0,0 @@
(UTC +03) Comoro
(UTC +03) Antananarivo
(UTC +03) Mayotte
(UTC +04) Mauritius
(UTC +04) Reunion
(UTC +04) Mahe
(UTC +05) Maldives
(UTC +05) Kerguelen
(UTC +06) Chagos
(UTC +06) Cocos
(UTC +07) Christmas

@ -1,3 +0,0 @@
(UTC -08) BajaNorte
(UTC -07) BajaSur
(UTC -06) General

@ -1,12 +0,0 @@
(UTC -11) Samoa
(UTC -10) Aleutian
(UTC -10) Hawaii
(UTC -09) Alaska
(UTC -08) Pacific
(UTC -07) Mountain
(UTC -07) Arizona
(UTC -06) Indiana-Starke
(UTC -06) Central
(UTC -05) East-Indiana
(UTC -05) Michigan
(UTC -05) Eastern

@ -7,7 +7,7 @@
<vendor>UBLinux</vendor>
<vendor_url>https://ublinux.ru</vendor_url>
<action id="ru.ublinux.pkexec.ubl-settings-datetime.exec">
<action id="org.freedesktop.policykit.ubl-settings-datetime.pkexec.policy.run">
<description>Run "Time date settings" as root</description>
<description xml:lang="ru">Запуск настройки даты и времени" с правами root</description>
<message>Authentication is required to run the time date settings</message>

@ -9,11 +9,12 @@ link_directories(${GTK_LIBRARY_DIRS})
add_definitions(${GTK_CFLAGS_OTHER})
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always -std=c++2a")
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -fdiagnostics-color=always")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always")
set(SOURCE_FILES
ubl-settings-datetime.cpp)
main.cc
ubl-settings-datetime.cc
ubl-settings-datetime.h)
set(LIBRARIES
${GTK_LIBRARIES}

@ -0,0 +1,90 @@
#include <gtkmm/window.h>
#include <cstddef>
#include <cstdlib>
#include <memory>
#include <gtkmm.h>
#include <ostream>
#include <string>
#include <ctime>
#include <vector>
#include <map>
#include <fstream>
#include <filesystem>
#include <glibmm/i18n.h>
#include <stdio.h>
#include <gtkmm/plug.h>
#include <gtkmm/stock.h>
#include <unistd.h>
#include <sys/types.h>
#include <stdio.h>
#include <iostream>
#include "ubl-settings-datetime.h"
int main(int argc, char* argv[]) {
string str_argv="";
string str_cmd_argv = "";
for (int i=1; i<argc; i++){
str_cmd_argv+= to_string(*argv[i]) + " ";
}
if (geteuid()!=0){
string cmd = "pkexec " + app_name + " " + str_cmd_argv ;
system(cmd.c_str());
return 0;
}
setlocale(LC_ALL, "");
bindtextdomain("ubl-settings-datetime", "/usr/share/locale/");
bind_textdomain_codeset("ubl-settings-datetime", "UTF-8");
textdomain("ubl-settings-datetime");
if (argc>1){
str_argv = argv[1];
}
if ((str_argv.find("--lock")!=std::string::npos || argc==1)){
int len_argv = 1;
auto app = Gtk::Application::create(len_argv, argv, "org.gtkmm.example.plug");
auto builder = Gtk::Builder::create_from_file(path_glade + "ubl-settings-datetime.glade");
builder->set_translation_domain(app_name);
for (int i=0; i<argc; i++){
str_argv = argv[i];
if (str_argv=="--help"){
help();
return 1;
}
else if (str_argv=="--lock-datetime"){
flag_datetime=true;
}
else if (str_argv=="--lock-timezone"){
flag_timezone=true;
}
else if (str_argv=="--lock-ntp"){
flag_ntp=true;
}
else if (str_argv=="--lock-update"){
flag_update=true;
}
}
MainWindow* wnd = nullptr;
builder->get_widget_derived("window", wnd);
auto r = app->run(*wnd);
delete wnd;
return r;
}
else{
auto app = Gtk::Application::create(argc, argv, "org.gtkmm.example.plug");
auto builder = Gtk::Builder::create_from_file(path_glade + "ubl-settings-datetime.glade");
builder->set_translation_domain(app_name);
Glib::init();
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, builder};
plug.show();
app->run(plug);
return 0;
}
}

@ -0,0 +1,677 @@
#include <gtkmm/window.h>
#include <stddef.h>
#include <cstddef>
#include <cstdlib>
#include <iostream>
#include <memory>
#include <gtkmm.h>
#include <ostream>
#include <string>
#include <ctime>
#include <vector>
#include <map>
#include <fstream>
#include <filesystem>
#include <glibmm/i18n.h>
#include <stdio.h>
#include <gtkmm/plug.h>
#include <gtkmm/stock.h>
#include <unistd.h>
#include <sys/types.h>
#include <stdio.h>
#include <string>
#include <sstream>
#include <vector>
#include "ubl-settings-datetime.h"
using namespace std;
string path_app= "/usr/bin/";
string path_glade= "/usr/share/ubl-settings-datetime/ui/";
string app_name = "ubl-settings-datetime";
string path_locale = "/usr/share/locale/";
string path_css = "/usr/share/ubl-settings-datetime/css/style.css";
bool flag_datetime = false;
bool flag_timezone = false;
bool flag_ntp = false;
bool flag_update = false;
CmdArgParser::CmdArgParser(const std::string& p_name, const std::string& p_description, const std::string& p_help)
: Glib::OptionGroup{p_name, p_description, p_help}
{
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");
add_entry(socketIDArg, m_socketID);
}
::Window CmdArgParser::GetSocketID() const {
return m_socketID;
}
MainWindow::MainWindow(BaseObjectType* obj, Glib::RefPtr<Gtk::Builder> const& builder)
: Gtk::ApplicationWindow(obj)
, builder{builder} {
this->settings();
}
MainWindow::MainWindow(Glib::RefPtr<Gtk::Builder> const& builder) {
this->builder = builder;
this->settings();
}
void MainWindow::settings(){
year=0, month=0, day=0;
this->get_builder();
this->lacalization();
_numTimeHrs->set_range(0,23);
_numTimeMin->set_range(0,59);
_numTimeHrs->set_increments(1.0,1.0);
_numTimeMin->set_increments(1.0,1.0);
this->get_config();
this->flag_block_gui();
this->event();
this->parse_text_date();
}
void MainWindow::lacalization(){
_txtDate->set_tooltip_text(gettext("Date of\nFormat: DD.MM.YYYY"));
_lblSynchronizebChkGLob->set_text(gettext("Synchronize via NTP"));
_cbDhcp->append(gettext("DHCP"));
_cbDhcp->append(gettext("Manually"));
_lblDateTimeSetting->set_text(gettext("Local Configuration"));
_lblHead->set_text(gettext("Settings the date and time"));
_lblTime->set_text(gettext("Time"));
_lblData->set_text(gettext("Date"));
_lblTimeZone->set_text(gettext("Time zone"));
_lblReg->set_text(gettext("Region"));
_lblZone->set_text(gettext("Zone"));
_lblRegGlob->set_text(gettext("Region"));
_lblZone1Glob->set_text(gettext("Zone"));
_lblTimeZoneGlob->set_text(gettext("Time zone"));
_lblSynchronizeBtn->set_text(gettext("Apply local date and time settings"));
_lblDateTimeSettingGlob->set_text(gettext("Global customization"));
this->set_title(gettext("ubl-settings-datetime"));
_mess_dchp->set_title(gettext("Warning!"));
_lblTimeBios->set_text(gettext("Synchronize hardware time"));
_lblSynchronizebChk->set_text(gettext("Synchronize via NTP"));
}
void MainWindow::flag_block_gui(){
if (flag_datetime==true){
//_numTimeHrs->set_sensitive(false);
//_numTimeMin->set_sensitive(false);
//_txtDate->set_sensitive(false);
_btnUpdateDateTime->set_sensitive(false);
}
if (flag_timezone==true){
_cbRegion->set_sensitive(false);
_cbZone->set_sensitive(false);
_cbRegionGlob->set_sensitive(false);
_cbZoneGlob->set_sensitive(false);
//_btnChooseDate->set_sensitive(false);
_cbDhcp->set_sensitive(false);
}
if (flag_ntp==true){
_cbxSynchronizeNtpGlob->set_sensitive(false);
_cbDhcp->set_sensitive(false);
_txtNtpServer->set_sensitive(false);
_cbxSynchronizeNtp->set_sensitive(false);
}
if (flag_update==true){
_lblDateTimeSettingGlob->set_sensitive(false);
_lblSynchronizebChkGLob->set_sensitive(false);
_cbxSynchronizeNtpGlob->set_sensitive(false);
_lblTimeZoneGlob->set_sensitive(false);
_lblRegGlob->set_sensitive(false);
_cbRegionGlob->set_sensitive(false);
_lblZone1Glob->set_sensitive(false);
_cbZoneGlob->set_sensitive(false);
_txtNtpServer->set_sensitive(false);
_cbDhcp->set_sensitive(false);
}
}
void MainWindow::add_CSS(){
Glib::RefPtr<Gtk::CssProvider> cssProvider = Gtk::CssProvider::create();
cssProvider->load_from_path(path_css);
Glib::RefPtr<Gtk::StyleContext> styleContext = Gtk::StyleContext::create();
Glib::RefPtr<Gdk::Screen> screen = Gdk::Screen::get_default();//get default screen
styleContext->add_provider_for_screen(screen, cssProvider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);//add provider for screen in all application
Glib::RefPtr<Gtk::StyleContext> context = _boxColor->get_style_context();
Glib::RefPtr<Gtk::StyleContext> context_lbl_head = _lblHead->get_style_context();
context->add_class("cssboxColor1");
context_lbl_head->add_class("textHead");
}
void MainWindow::get_builder(){
builder->get_widget("boxColor", _boxColor);
builder->get_widget("btnUpdateDateTime", _btnUpdateDateTime);
builder->get_widget("btnChooseDate", _btnChooseDate);
builder->get_widget("btnMessClose", _btnMessClose);
builder->get_widget("cbxSynchronizeNtpGlob", _cbxSynchronizeNtpGlob);
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);
builder->get_widget("lblMessage", _lblMessage);
builder->get_widget("lblDateTimeSetting",_lblDateTimeSetting);
builder->get_widget("lblHead",_lblHead);
builder->get_widget("lblTime",_lblTime);
builder->get_widget("lblData",_lblData);
builder->get_widget("lblTimeZone",_lblTimeZone);
builder->get_widget("lblReg",_lblReg);
builder->get_widget("lblZone",_lblZone);
builder->get_widget("lblRegGlob",_lblRegGlob);
builder->get_widget("lblZone1Glob",_lblZone1Glob);
builder->get_widget("lblTimeZoneGlob",_lblTimeZoneGlob);
builder->get_widget("lblSynchronizebChk",_lblSynchronizebChk);
builder->get_widget("lblSynchronizebChkGLob",_lblSynchronizebChkGLob);
builder->get_widget("lblSynchronizeBtn",_lblSynchronizeBtn);
builder->get_widget("lblDateTimeSettingGlob",_lblDateTimeSettingGlob);
builder->get_widget("lblTimeBios",_lblTimeBios);
builder->get_widget("btnHardwareTime",_btnHardwareTime);
builder->get_widget("cbxSynchronizeNtp",_cbxSynchronizeNtp);
this->add_CSS();
}
void MainWindow::event(){
_cbxSynchronizeNtp->signal_toggled().connect(sigc::mem_fun(*this, &MainWindow::set_ntp_toggle));
_btnHardwareTime->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::hardware_clock));
_btnMessClose->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::gui_mess_close));
//_cldrDate->signal_day_selected().connect(sigc::mem_fun(*this, &MainWindow::get_calendar));
_cbxSynchronizeNtpGlob->signal_toggled().connect(sigc::mem_fun(*this, &MainWindow::set_ntp_toggle_glob));
_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::event_entry_cbDhcp));
_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_focus_out_event().connect(sigc::mem_fun(*this, &MainWindow::focus_ntp));
_cldrDate->signal_day_selected_double_click().connect(sigc::mem_fun(*this, &MainWindow::get_calendar));
}
void MainWindow::set_ntp_toggle(){
bool flag = _cbxSynchronizeNtp->get_active();
if (flag_ntp==true){
}
else {
_numTimeHrs->set_sensitive(!flag);
_numTimeMin->set_sensitive(!flag);
_btnChooseDate->set_sensitive(!flag);
_txtDate->set_sensitive(!flag);
_lblTimeBios->set_sensitive(!flag);
}
string cmd = "";
if (flag==false){
cmd="systemctl --now disable systemd-timesyncd.service ntpd.service";
system(cmd.c_str());
}
else {
cmd = "systemctl --now enable systemd-timesyncd.service";
system(cmd.c_str());
}
}
void MainWindow::hardware_clock(){
string cmd = "hwclock --systohc";
system(cmd.c_str());
}
void MainWindow::gui_mess_close(){
_mess_dchp->hide();
}
bool MainWindow::focus_ntp(GdkEventFocus* event){
if (event!=NULL){}
if (_txtNtpServer->get_text()=="" || _txtNtpServer->get_text()==" "){
_lblMessage->set_text(gettext("Enter DHCP !"));
_mess_dchp->show();
}
else{
string cmd = "";
cmd = "/usr/bin/ubconfig set network NTPSERVERS=" + _txtNtpServer->get_text();
this->call(cmd.c_str());
}
return true;
}
void MainWindow::event_entry_cbDhcp(){
Glib::ustring str_dhcp = _cbDhcp->get_active_text();
if (str_dhcp.length()!=0){
if (str_dhcp=="DHCP"){
string cmd = "/usr/bin/ubconfig set network NTPSERVERS=dhcp";
system(cmd.c_str());
_txtNtpServer->set_sensitive(false);
_cbDhcp->set_active(0);
_txtNtpServer->set_text("");
}
else{
string str_dhcp = this->call("/usr/bin/ubconfig get network NTPSERVERS");
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"){
_txtNtpServer->set_text(str_dhcp);
}
_txtNtpServer->set_sensitive(true);
_cbDhcp->set_active(1);
}
}
}
else{
string cmd = "/usr/bin/ubconfig set network NTPSERVERS=dhcp";
system(cmd.c_str());
_cbDhcp->set_active(0);
}
}
void MainWindow::get_calendar(){
string str_month = "";
string str_day = "";
_cldrDate->get_date(year, month, day);
if (month <10){
str_month = "0"+to_string(month+1);
}
else{
str_month = to_string(month+1);
}
if (day <10){
str_day = "0"+to_string(day);
}
else{
str_day = to_string(day);
}
string date = str_day + '.' + str_month + '.' + to_string(year);
_txtDate->set_text(date);
_popCalendar->hide();
}
void MainWindow::calendar_show(){
if (year==0){
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);
}
else{
_cldrDate->select_month(month,year);
_cldrDate->select_day(day);
}
_popCalendar->show();
}
void MainWindow::enry_dhcp_mess(){
string str_dhcp = this->call("/usr/bin/ubconfig get network NTPSERVERS");
if ((str_dhcp!="") && (str_dhcp!="(null)")){
_cbxSynchronizeNtpGlob->set_active(1);
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);
}
else{
if (str_dhcp==""){
_lblMessage->set_text(gettext("Enter DHCP !"));
_mess_dchp->show();
}
else{
_cbDhcp->set_active(1);
_txtNtpServer->set_text(str_dhcp);
}
}
this->set_ntp_toggle_glob();
}
else{
_cbxSynchronizeNtpGlob->set_active(0);
_cbDhcp->set_sensitive(0);
_txtNtpServer->set_sensitive(0);
}
}
void MainWindow::get_config(){
this->read_file();
this->update_hour_minute();
this->update_calendar();
this->enry_dhcp_mess();
string str_ntp = this->call("systemctl status ntpd.service systemd-timesyncd.service | grep \"Active: active\"");
if (str_ntp.length()<50) {
_cbxSynchronizeNtp->set_active(false);
_numTimeHrs->set_sensitive(true);
_numTimeMin->set_sensitive(true);
_btnChooseDate->set_sensitive(true);
_txtDate->set_sensitive(true);
_lblTimeBios->set_sensitive(true);
}
else{
_cbxSynchronizeNtp->set_active(true);
_numTimeHrs->set_sensitive(false);
_numTimeMin->set_sensitive(false);
_btnChooseDate->set_sensitive(false);
_txtDate->set_sensitive(false);
_lblTimeBios->set_sensitive(false);
}
string read_reg_zon_cfg = this->call("/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 MainWindow::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 = "rm -f /etc/localtime";
system(cmd.c_str());
string cmd1 = "ln -s /usr/share/zoneinfo/" + str_region + "/" + str_zone+" /etc/localtime";
system(cmd1.c_str());
}
else{
str_zone="";
str_region="";
}
}
void MainWindow::parse_text_date(){
string data = _txtDate->get_text();
if (data.length()==10){
string day = data.substr(0,2);
string month1 = data.substr(3,2);
string year = data.substr(6,data.length());
}
}
void MainWindow::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 = "/usr/bin/ubconfig set clock ZONE=" +str_region_glob +"/" + str_zoneGlob;
system(cmd.c_str());
}
else{
str_zoneGlob="";
str_region_glob="";
}
}
void MainWindow::set_ntp_toggle_glob(){
bool flag = _cbxSynchronizeNtp->get_active();
if (flag==true){
system("/usr/bin/ubconfig remove network NTPSERVERS")
}
else{
}
}
void MainWindow::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 MainWindow::call(string cmd){
FILE *fp;
int status;
char path[PATH_MAX];
fp = popen(cmd.c_str(), "r");
if (fp == NULL){
exit(1);
}
while (fgets(path, PATH_MAX, fp) != NULL){
printf("%s", path);
break;
}
status = pclose(fp);
if (status == -1) {
exit(1);
}
else {
}
return path;
}
void MainWindow::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 MainWindow::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 MainWindow::update_time_date(){
//this->enter_zone();
bool flag = _cbxSynchronizeNtpGlob->get_active();
string cmd = "";
if ((year!=0) && (month !=0) && (day !=0)){
string str_month = "";
string str_day = "";
month+=2;
if (month <10){
str_month = "0"+to_string(month);
}
else{
str_month = to_string(month);
}
if (day <10){
str_day = "0"+to_string(day);
}
else{
str_day = to_string(day);
}
string str_data = "";
str_data = str_day+"." + str_month+"." + to_string(year);
string str_data_entry = _txtDate->get_text();
if (str_data==str_data_entry){
cmd = "date +%Y%m%d -s \"" + to_string(year)+
str_month+str_day+"\"";
system(cmd.c_str());
_txtDate->set_text(str_data);
year=0;
month=0;
day=0;
}
else{
this->post_entry_data();
}
}
else{
this->post_entry_data();
}
if (flag==false){
hour = _numTimeHrs->get_value_as_int();
minute = _numTimeMin->get_value_as_int();
time_t now = time(0);
tm *ltm = localtime(&now);
cmd = "date +%T -s \""+
to_string(hour) + ":" + to_string(minute)
+ ":" + to_string(ltm->tm_sec) +"\"";
system(cmd.c_str());
}
cmd = "hwclock --systohc";
system(cmd.c_str());
}
void MainWindow::post_entry_data(){
string cmd = "";
string data = _txtDate->get_text();
if (data.length()==10){
string str_day = data.substr(0,2);
string str_month = data.substr(3,2);
string str_year = data.substr(6,data.length());
cmd = "date +%Y%m%d -s \"" + str_year+
str_month+str_day+"\"";
string str_error_clock = this->call(cmd);
size_t index = str_error_clock.find("date: ");
if (index==std::string::npos){
}
}
else{
_lblMessage->set_text(gettext("Incorrect date format"));
_mess_dchp->show();
}
}
void MainWindow::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 MainWindow::update_calendar(){
time_t now = time(0);
tm *ltm = localtime(&now);
int year1 = 1900 + (int)ltm->tm_year;
string str_month = "";
string str_day = "";
unsigned int month, day;
month=ltm->tm_mon+1;
day=ltm->tm_mday;
if (month <=10){
str_month = "0"+to_string(month);
}
else{
str_month = to_string(month);
}
if (day <10){
str_day = "0"+to_string(day);
}
else{
str_day = to_string(day);
}
string date = str_day + '.' + str_month + '.' + to_string(year1);
_txtDate->set_text(date);
}
void MainWindow::read_file(){
std::string line;
namespace fs = std::filesystem;
for (const auto & entry : fs::directory_iterator("/usr/share/zoneinfo/")){
std::ifstream in(entry.path()); // окрываем файл для чтения
if (in.is_open()){
string key_reg = entry.path().filename().string();
string path_dir = "/usr/share/zoneinfo/"+key_reg;
if (fs::is_directory(path_dir)){
if (key_reg!="Pacific"){
if (key_reg!="posix"){
if (key_reg!="Etc"){
if (key_reg!="right"){
vector<string> 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});
}}}}
}
}
in.close();
}
}
vector<std::string> MainWindow::split(const std::string &s, char delim){
std::stringstream ss(s);
std::string item;
std::vector<std::string> elems;
while (std::getline(ss, item, delim)) {
elems.push_back(item);
}
return elems;
}
SettingsPlug::SettingsPlug(::Window p_socketID, Glib::RefPtr<Gtk::Builder> builder)
: Gtk::Plug{p_socketID}
{
builder->get_widget("plugBox", plugBox);
plugBox->get_parent()->remove(*plugBox);
add(*plugBox);
show_all_children();
}
void help(){
g_print("Usage: ubl-settings-datetime [--lock-timezone] [--lock-ntp] [--lock-datetime] [--lock-update]\n");
g_print("Options:\n");
g_print(" --lock-timezone Disable timezone field editing\n");
g_print(" --lock-ntp Disable ntp field editing\n");
g_print(" --lock-datetime Disable datetime field editing\n");
g_print(" --lock-update Disable save changes\n");
cout << "Параметры командной строки --lock-datetime\n --lock-timezone\n --lock-ntp\n --lock-update\n" << endl;
}

@ -1,684 +0,0 @@
#include <gtkmm/window.h>
#include <cstddef>
#include <cstdlib>
#include <iostream>
#include <memory>
#include <gtkmm.h>
#include <ostream>
#include <string>
#include <ctime>
#include <vector>
#include <map>
#include <fstream>
#include <filesystem>
#include <libintl.h>
#include <locale.h>
#include <stdio.h>
#include <gtkmm/plug.h>
#include <gtkmm/stock.h>
#include <unistd.h>
#include <sys/types.h>
#include <stdio.h>
using namespace std;
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<Gtk::Builder> const& builder)
: Gtk::ApplicationWindow(obj)
, builder{builder}
{
this->settings();
}
MainWindow(Glib::RefPtr<Gtk::Builder> 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);
_numTimeHrs->set_increments(1.0,1.0);
_numTimeMin->set_increments(1.0,1.0);
_txtDate->set_sensitive(false);
this->get_config();
this->flag_block_gui();
this->event();
}
void flag_block_gui(){
if (flag_datetime==true){
_numTimeHrs->set_sensitive(false);
_numTimeMin->set_sensitive(false);
}
else if (flag_timezone==true){
_cbRegion->set_sensitive(false);
_cbZone->set_sensitive(false);
_cbRegionGlob->set_sensitive(false);
_cbZoneGlob->set_sensitive(false);
_btnChooseDate->set_sensitive(false);
}
else if (flag_ntp==true){
_cbxSynchronizeNtp->set_sensitive(false);
_cbDhcp->set_sensitive(false);
_txtNtpServer->set_sensitive(false);
}
else if (flag_update==true){
_btnUpdateDateTime->set_sensitive(false);
}
}
void add_CSS(){
Glib::RefPtr<Gtk::CssProvider> cssProvider = Gtk::CssProvider::create();
cssProvider->load_from_path("style.css");
Glib::RefPtr<Gtk::StyleContext> styleContext = Gtk::StyleContext::create();
Glib::RefPtr<Gdk::Screen> screen = Gdk::Screen::get_default();//get default screen
styleContext->add_provider_for_screen(screen, cssProvider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);//add provider for screen in all application
Glib::RefPtr<Gtk::StyleContext> context = _btnUpdateDateTime->get_style_context();
context->add_class("myButton");
}
void get_builder(){
builder->set_translation_domain(app_name);
builder->get_widget("btnUpdateDateTime", _btnUpdateDateTime);
builder->get_widget("btnChooseDate", _btnChooseDate);
builder->get_widget("btnMessClose", _btnMessClose);
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);
//this->add_CSS();
}
void event(){
_btnMessClose->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::gui_mess_close));
_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::event_entry_cbDhcp));
_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_focus_out_event().connect(sigc::mem_fun(*this, &MainWindow::focus_ntp));
//_txtNtpServer->grab_focus();
}
void gui_mess_close(){
_mess_dchp->hide();
}
bool focus_ntp(GdkEventFocus* event){
if (_txtNtpServer->get_text()=="" || _txtNtpServer->get_text()==" "){
_mess_dchp->show();
}
else{
string cmd = "";
cmd = "/usr/bin/ubconfig set network NTPSERVERS=" + _txtNtpServer->get_text();
this->call(cmd.c_str());
}
return true;
}
void event_entry_cbDhcp(){
Glib::ustring str_dhcp = _cbDhcp->get_active_text();
if (str_dhcp.length()!=0){
if (str_dhcp=="DHCP"){
string cmd = "/usr/bin/ubconfig set network NTPSERVERS=dhcp";
system(cmd.c_str());
_txtNtpServer->set_sensitive(false);
_cbDhcp->set_active(0);
_txtNtpServer->set_text("");
}
else{
string str_dhcp = this->call("/usr/bin/ubconfig get network NTPSERVERS");
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"){
_txtNtpServer->set_text(str_dhcp);
}
_txtNtpServer->set_sensitive(true);
_cbDhcp->set_active(1);
}
}
}
else{
string cmd = "/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 str_month = "";
string str_day = "";
month+=1;
if (month <10){
str_month = "0"+to_string(month);
}
else{
str_month = to_string(month);
}
if (day <10){
str_day = "0"+to_string(day);
}
else{
str_day = to_string(day);
}
string date = str_day + '.' + str_month + '.' + 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 enry_dhcp_mess(){
string str_dhcp = this->call("/usr/bin/ubconfig get network NTPSERVERS");
if ((str_dhcp!="") && (str_dhcp!="(null)")){
_cbxSynchronizeNtp->set_active(1);
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();
}
else{
_cbxSynchronizeNtp->set_active(0);
_cbDhcp->set_sensitive(0);
_txtNtpServer->set_sensitive(0);
}
}
void get_config(){
this->read_file();
this->update_hour_minute();
this->update_calendar();
//this->event_entry_cbDhcp();
this->enry_dhcp_mess();
string str_ntp = this->call("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("/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 = "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 = "/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();
if (flag_datetime==true){
}
else {
_numTimeHrs->set_sensitive(!flag);
_numTimeMin->set_sensitive(!flag);
_btnChooseDate->set_sensitive(!flag);
}
//_txtDate->set_sensitive(!flag);
//_btnUpdateDateTime->set_sensitive(!flag);
if (flag==false){
system("systemctl --now disable systemd-timesyncd.service ntpd.service");
}
else {
system("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 = "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;
day=ltm->tm_mday;
}
string str_month = "";
string str_day = "";
if (month <10){
str_month = "0"+to_string(month+1);
}
else{
str_month = to_string(month);
}
if (day <10){
str_day = "0"+to_string(day);
}
else{
str_day = to_string(day);
}
string cmd1 = "date --set=\"" +to_string(year)+
str_month+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 str_month = "";
string str_day = "";
unsigned int month, day;
month=ltm->tm_mon+1;
day=ltm->tm_mday;
if (month <=10){
str_month = "0"+to_string(month);
}
else{
str_month = to_string(month);
}
if (day <10){
str_day = "0"+to_string(day);
}
else{
str_day = to_string(day);
}
string date = str_day + '.' + str_month + '.' + to_string(year);
_txtDate->set_text(date);
}
void read_file(){
std::string line;
namespace fs = std::filesystem;
for (const auto & entry : fs::directory_iterator("/usr/share/ubl-settings-datetime/reg/")){
std::ifstream in(entry.path()); // окрываем файл для чтения
if (in.is_open())
{
vector<string> 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:
Glib::RefPtr<Gtk::Builder> builder;
Gtk::Button *_btnUpdateDateTime;
Gtk::Button *_btnChooseDate;
Gtk::Button *_btnMessClose;
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 <string, vector<string>> time_reg_map;
};
class SettingsPlug : public Gtk::Plug
{
public:
Gtk::Window *window;
SettingsPlug(::Window p_socketID, Glib::RefPtr<Gtk::Builder> 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(){
g_print("Usage: ubl-settings-datetime [--lock-timezone] [--lock-ntp] [--lock-datetime] [--lock-update]\n");
g_print("Options:\n");
g_print(" --lock-timezone Disable timezone field editing\n");
g_print(" --lock-ntp Disable ntp field editing\n");
g_print(" --lock-datetime Disable datetime field editing\n");
g_print(" --lock-update Disable save changes\n");
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;
//app_name=to_string(*argv[0]);
//app_name=app_name.substr(1, app_name.length());
string str_cmd_argv = "";
for (int i=1; i<argc; i++){
str_cmd_argv+= to_string(*argv[i]) + " ";
}
if (geteuid()!=0){
// string cmd = "pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY " + path_app + app_name + " " + str_cmd_argv ;
string cmd = "pkexec " + app_name + " " + str_cmd_argv ;
system(cmd.c_str());
return 0;
}
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){
//setlocale(LC_ALL, ".");
//bindtextdomain(app_name.c_str(), ".");
//textdomain(app_name.c_str());
//textdomain(app_name);
int index=1;
cout << argv[0] << endl;
for (int i=0; i<argc; i++){
if (argv[i]=="--help"){
help();
}
else if (strcmp (argv[i], "--lock-datetime")==0){
flag_datetime=true;
}
else if (strcmp (argv[i], "--lock-timezone")==0){
flag_timezone=true;
}
else if (strcmp (argv[i], "--lock-ntp")==0){
flag_ntp=true;
}
else if (strcmp (argv[i], "--lock-update")==0){
flag_update=true;
}
}
MainWindow* wnd = nullptr;
builder->get_widget_derived("window", wnd);
auto r = app->run(*wnd);
delete wnd;
return r;
}
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);
::Window socketID = parser.GetSocketID();
// Handle plug:
SettingsPlug plug{socketID, builder};
plug.show();
app->run(plug);
}
}

@ -0,0 +1,141 @@
#ifndef UBL_SETTINGS_DATETIME_H
#define UBL_SETTINGS_DATETIME_H
#include <gtkmm/window.h>
#include <stddef.h>
#include <cstddef>
#include <cstdlib>
#include <iostream>
#include <memory>
#include <gtkmm.h>
#include <ostream>
#include <string>
#include <ctime>
#include <vector>
#include <map>
#include <fstream>
#include <filesystem>
#include <glibmm/i18n.h>
#include <stdio.h>
#include <gtkmm/plug.h>
#include <gtkmm/stock.h>
#include <unistd.h>
#include <sys/types.h>
#include <stdio.h>
using namespace std;
extern string path_app;
extern string path_glade;
extern string app_name;
extern string path_locale;
extern string path_css;
extern bool flag_datetime;
extern bool flag_timezone;
extern bool flag_ntp;
extern bool flag_update;
class CmdArgParser : public Glib::OptionGroup
{
public:
CmdArgParser(const std::string& p_name, const std::string& p_description, const std::string& p_help);
::Window GetSocketID() const;
private:
int m_socketID = 0;
};
class MainWindow : public Gtk::ApplicationWindow {
public:
MainWindow(BaseObjectType* obj, Glib::RefPtr<Gtk::Builder> const& builder);
MainWindow(Glib::RefPtr<Gtk::Builder> const& builder);
virtual ~MainWindow() = default;
void post_entry_data();
void lacalization();
void settings();
void flag_block_gui();
void add_CSS();
void get_builder();
void event();
void gui_mess_close();
bool focus_ntp(GdkEventFocus* event);
void event_entry_cbDhcp();
void get_calendar();
void calendar_show();
void enry_dhcp_mess();
void get_config();
void enter_zone();
void enter_zone_glob();
void set_ntp_toggle();
void append_region_zone(string region, string zone);
string call(string cmd);
void append_zone();
void append_zone_glob();
void update_time_date();
void update_hour_minute();
void update_calendar();
void read_file();
void parse_text_date();
void hardware_clock();
void set_ntp_toggle_glob();
vector<std::string> split(const std::string &s, char delim);
private:
Glib::RefPtr<Gtk::Builder> builder;
Gtk::Button *_btnUpdateDateTime;
Gtk::Button *_btnChooseDate;
Gtk::Button *_btnMessClose;
Gtk::ComboBoxText *_cbDhcp;
Gtk::SpinButton *_numTimeHrs;
Gtk::SpinButton *_numTimeMin;
Gtk::CheckButton *_cbxSynchronizeNtpGlob;
Gtk::Box *_boxColor;
Gtk::Entry *_txtDate;
Gtk::ComboBoxText *_cbRegion;
Gtk::ComboBoxText *_cbRegionGlob;
Gtk::ComboBoxText *_cbZone;
Gtk::ComboBoxText *_cbZoneGlob;
Gtk::Entry *_txtNtpServer;
Gtk::Window *_mess_dchp;
Gtk::Popover *_popCalendar;
Gtk::Calendar *_cldrDate;
Gtk::Label *_lblMessage;
Gtk::Label *_lblDateTimeSetting;
Gtk::Label *_lblHead;
Gtk::Label *_lblTime;
Gtk::Label *_lblData;
Gtk::Label *_lblTimeZone;
Gtk::Label *_lblReg;
Gtk::Label *_lblZone;
Gtk::Label *_lblRegGlob;
Gtk::Label *_lblZone1Glob;
Gtk::Label *_lblTimeZoneGlob;
Gtk::Label *_lblSynchronizebChk;
Gtk::Label *_lblSynchronizebChkGLob;
Gtk::Label *_lblSynchronizeBtn;
Gtk::Label *_lblDateTimeSettingGlob;
Gtk::Label *_lblTimeBios;
Gtk::Button *_btnHardwareTime;
Gtk::CheckButton *_cbxSynchronizeNtp;
std::map <string, vector<string>> time_reg_map;
unsigned int year=0;
unsigned int month=0;
unsigned int day=0;
int hour;
int minute;
string str_region="";
string str_region_glob="";
string str_txtDate;
string str_txtNtpServer;
string str_zone="";
string str_zoneGlob;
};
class SettingsPlug : public Gtk::Plug
{
public:
Gtk::Window *window;
SettingsPlug(::Window p_socketID, Glib::RefPtr<Gtk::Builder> builder);
private:
Gtk::Widget *plugBox;
Gtk::Widget *parent;
};
void help();
#endif

@ -0,0 +1,6 @@
.cssboxColor1{
background: url("/usr/share/ubl-settings-datetime/images/bg_top.png") no-repeat;
}
.textHead{
text-shadow: 1px 1px #ffffff;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save