Локализация вынесена в define, исправлен CMakeLists

pull/3/head
Igor Belitskiy 2 years ago
parent 6703683be3
commit 9dee33eaca

@ -8,6 +8,14 @@ include_directories(${GTK_INCLUDE_DIRS})
link_directories(${GTK_LIBRARY_DIRS})
add_definitions(${GTK_CFLAGS_OTHER})
option(WEBKIT_FOUND "" ON)
if(WEBKIT_FOUND)
PKG_CHECK_MODULES(WEBKIT REQUIRED webkit2gtk-4.0 webkit2gtk-web-extension-4.0)
include_directories(${WEBKIT_INCLUDE_DIRS})
link_directories(${WEBKIT_LIBRARY_DIRS})
add_definitions(${WEBKIT_CFLAGS_OTHER})
endif()
#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 \
@ -45,5 +53,9 @@ set(LIBRARIES
pthread)
add_executable(ubl-settings-diskquota ${SOURCE_FILES})
target_link_libraries(ubl-settings-diskquota ${LIBRARIES} ${ICU_LIBRARIES})
target_link_libraries(ubl-settings-diskquota PUBLIC ${WEBKIT_LIBRARIES} ${LIBRARIES})
target_include_directories(ubl-settings-diskquota PUBLIC
"${PROJECT_BINARY_DIR}"
${WEBKIT_INCLUDE_DIRS}
)
install(TARGETS ubl-settings-diskquota DESTINATION bin)

@ -11,9 +11,9 @@ int main(int argc, char** argv) {
if (argc > 1){
str_argv = argv[1];
}
bindtextdomain(app_name.c_str(), "/usr/share/locale/");
bind_textdomain_codeset(app_name.c_str(), "UTF-8");
textdomain(app_name.c_str());
bindtextdomain(app_name, "/usr/share/locale/");
bind_textdomain_codeset(app_name, "UTF-8");
textdomain(app_name);
if (str_argv.find("--socket-id") != std::string::npos) {
auto app = Gtk::Application::create(argc, argv, "org.gtkmm.example.plug");
auto builder = Gtk::Builder::create_from_file(path_glade);

@ -1,13 +1,6 @@
#include "ubl-settings-diskquota.h"
using namespace std;
const string path_app = "/usr/bin/";
const string path_glade = "/usr/share/ubl-settings-diskquota/ui/ubl-settings-diskquota.glade";
const string app_name = "ubl-settings-diskquota";
const string path_locale = "/usr/share/locale/";
const string path_css = "/usr/share/ubl-settings-diskquota/css/ubl-settings-diskquota.css";
const string path_img_head_background = "/usr/share/ubl-settings-diskquota/images/logo-background.png";
int socket_ext_id_I = 0;
int socket_trd_id_I = 0;
@ -58,14 +51,23 @@ void MainWindow::settings() {
boxFuncs->set_sensitive(false);
btnSave->set_sensitive(false);
btnLoad->set_sensitive(false);
imgInfo->set_from_icon_name("com.ublinux.ubl-settings-diskquota.warning", Gtk::ICON_SIZE_MENU);
info_status_app("boxInfoMessError");
lblWarning->set_text(_("The program must be run as root"));
imgInfo->set_from_icon_name(icon_warning, Gtk::ICON_SIZE_MENU);
info_status_app(info_box_error_css);
lblWarning->set_text(program_as_root);
}
Gtk::Widget *boxWidget;
builder->get_widget("boxColor", boxWidget);
HeadOverlay->add_overlay(*boxWidget);
ubl_make_plugs(boxSave, boxButton, socket_ext_id_I, socket_trd_id_I);
#ifdef WEBKIT_FOUND
void *handle=NULL;
handle = dlopen("libwebkit2gtk-4.0.so", RTLD_LAZY);
if (handle) {
one = WEBKIT_WEB_VIEW( webkit_web_view_new() );
three = Glib::wrap(GTK_WIDGET(one));
wndWeb->add(*three);
}
#endif
}
void MainWindow::init_spin_all() {
@ -141,120 +143,120 @@ void MainWindow::init_tree_view() {
this->init_tree_view_general();
}
void MainWindow::init_tree_view_general() {
GeneralQuotasTree->append_column_editable(_("Status"), m_columnsGeneral.status);
GeneralQuotasTree->append_column(_("Quota type"), m_columnsGeneral.type_quotas);
GeneralQuotasTree->append_column(_("Device\nProject"), m_columnsGeneral.device);
GeneralQuotasTree->append_column(_("User"), m_columnsGeneral.user);
GeneralQuotasTree->append_column(_("Group"), m_columnsGeneral.group);
GeneralQuotasTree->append_column(_("Soft limit\n(size)"), m_columnsGeneral.soft_limit_size);
GeneralQuotasTree->append_column(_("Severe\nlimitation\n(size)"), m_columnsGeneral.hard_limit_size);
GeneralQuotasTree->append_column(_("Deferring\na hard\nlimit\n(size)"), m_columnsGeneral.hard_limit_size_delay);
GeneralQuotasTree->append_column(_("Soft limit\n(files)"), m_columnsGeneral.soft_limit_files);
GeneralQuotasTree->append_column(_("Severe\nlimitation\n(files)"), m_columnsGeneral.hard_limit_files);
GeneralQuotasTree->append_column(_("Deferring\na hard\nlimit\n(files)"), m_columnsGeneral.hard_limit_delay);
GeneralQuotasTree->append_column_editable(str_status, m_columnsGeneral.status);
GeneralQuotasTree->append_column(str_quota, m_columnsGeneral.type_quotas);
GeneralQuotasTree->append_column(str_device_project, m_columnsGeneral.device);
GeneralQuotasTree->append_column(str_user, m_columnsGeneral.user);
GeneralQuotasTree->append_column(str_group, m_columnsGeneral.group);
GeneralQuotasTree->append_column(str_tw_soft_limit, m_columnsGeneral.soft_limit_size);
GeneralQuotasTree->append_column(str_tw_severe_limitation, m_columnsGeneral.hard_limit_size);
GeneralQuotasTree->append_column(str_tw_deferring_size, m_columnsGeneral.hard_limit_size_delay);
GeneralQuotasTree->append_column(str_tw_soft_limit_files, m_columnsGeneral.soft_limit_files);
GeneralQuotasTree->append_column(str_tw_severe_limitation_files, m_columnsGeneral.hard_limit_files);
GeneralQuotasTree->append_column(str_tw_severe_limitation_files, m_columnsGeneral.hard_limit_delay);
}
void MainWindow::lacalization() {
time_t now = time(0);
tm *ltm = localtime(&now);
unsigned int year = 1900 + ltm->tm_year;
string str_authors = string(_("Copyright © UBSoft LLC, 2022 - ")) + to_string(year);
string str_authors = string(copyright) + to_string(year);
aboutWindows->set_copyright(str_authors);
aboutWindows->set_comments(_("Setting user quotas"));
aboutWindows->set_website(_("https://wiki.ublinux.com"));
aboutWindows->set_version(gettext(version_application.c_str()));
aboutWindows->set_website_label(_("Project Home Page"));
generalTabLabel->set_text(_("General settings"));
GroupsTabLabel->set_text(_("Groups"));
headerAboutTopic->set_label(_(app_name.c_str()));
headerTopic->set_label(_("ubl-settings-diskquota"));
UsersTabLabel->set_text(_("Users"));
generalGroupsSizeLabel->set_text(_("Excess size delay period"));
generalGroupsFilesLabel->set_text(_("Excess files delay period"));
generalUsersSizeLabel->set_text(_("Excess size delay period"));
generalUsersFilesLabel->set_text(_("Excess files delay period"));
generalGroupsSizeWeeksLabel->set_text(_("weeks"));
generalGroupsFilesWeeksLabel->set_text(_("weeks"));
generalUsersSizeWeeksLabel->set_text(_("weeks"));
generalUsersFilesWeeksLabel->set_text(_("weeks"));
generalGroupsSizeDaysLabel->set_text(_("days"));
generalGroupsFilesDaysLabel->set_text(_("days"));
generalUsersSizeDaysLabel->set_text(_("days"));
generalUsersFilesDaysLabel->set_text(_("days"));
generalGroupsSizeHoursLabel->set_text(_("hours"));
generalGroupsFilesHoursLabel->set_text(_("hours"));
generalUsersSizeHoursLabel->set_text(_("hours"));
generalUsersFilesHoursLabel->set_text(_("hours"));
generalGroupsSizeMinutesLabel->set_text(_("minutes"));
generalGroupsFilesMinutesLabel->set_text(_("minutes"));
generalUsersSizeMinutesLabel->set_text(_("minutes"));
generalUsersFilesMinutesLabel->set_text(_("minutes"));
lblLoad->set_text(_("Load"));
lblSave->set_text(_("Save"));
groupsDeviceLabel->set_label(_("Device:"));
usersDeviceLabel->set_label(_("Device:"));
headLabel->set_label(_("Configuration of disk quotas parameters for system groups and users"));
filtersNameFilterCheckbox->set_label(_("Name"));
filtersQuotasFilterCheckbox->set_label(_("Quotas"));
filtersSizeFilterCheckbox->set_label(_("Size"));
filtersSoftSizeFilterCheckbox->set_label(_("Soft limit (size)"));
filtersHardSizeFilterCheckbox->set_label(_("Hard limit (size)"));
filtersHardSizeDelayFilterCheckbox->set_label(_("Deferring a hard limit (size)"));
filtersHardSizeActivationFilterCheckbox->set_label(_("Hard limit activation time (size)"));
filtersFilesFilterCheckbox->set_label(_("Files"));
filtersSoftFilesFilterCheckbox->set_label(_("Soft Restriction (files)"));
filtersHardFilesFilterCheckbox->set_label(_("Severe limitation (files)"));
filtersHardFilesDelayFilterCheckbox->set_label(_("Deferring a hard limit (files)"));
filtersHardFilesActivationFilterCheckbox->set_label(_("Hard limit (file) activation time"));
quotegroupDeviceLabel->set_text(_("Device:"));
quotegroupDiskQuotasLabel->set_text(_("Disk quotas for this device:"));
quotegroupGroupQuotasLabel->set_text(_("Group quotas for this device:"));
quotegroupSizeFrameLabel->set_text(_("Size"));
quotegroupFilesFrameLabel->set_text(_("Files"));
quotegroupSizeCurrentlyLabel->set_text(_("Currently using:"));
quotegroupSizeSoftLimitLabel->set_text(_("Soft limit"));
quoteSizeHardLimitLabel->set_text(_("Hard limit"));
quoteFilesHardLimitLabel->set_text(_("Hard limit"));
quotegroupFilesSoftLimitLabel->set_text(_("Soft limit"));
quotegroupFilesCurrentlyLabel->set_text(_("Currently using:"));
quoteuserDiskQuotasLabel->set_text(_("Disk quotas for this device:"));
quoteuserDeviceLabel->set_text(_("Device:"));
quoteuserGroupQuotasLabel->set_text(_("User quotas for this device: "));
quoteuserSizeFrameLabel->set_text(_("Size"));
quoteuserSizeCurrentlyLabel->set_text(_("Currently using:"));
quoteuserSizeSoftLimitLabel->set_text(_("Soft limit"));
quoteuserSizeHardLimitLabel1->set_text(_("Hard limit"));
quoteuserFileSystemLabel->set_text(_("File system:"));
quoteuserFilesFrameLabel->set_text(_("Files"));
quoteuserFilesCurrentlyLabel->set_text(_("Currently using: "));
quoteuserFilesSoftLimitLabel->set_text(_("Soft limit"));
quoteFilesHardLimitLabel1->set_text(_("Hard limit"));
quoteuserFilesHarLimitLabel->set_text(_("files"));
quoteuserFilesSoftLimitlabel->set_text(_("files"));
quotegroupFileSystemLabel->set_text(_("File system:"));
btnLoadGlob->set_label(_("Load from global configuration"));
btnLoadLocal->set_label(_("Load from local configuration"));
btnAbout->set_label(_("About"));
btnSynopsis->set_label(_("Help"));
btnSaveLocalGlob->set_label(_("Save to global and local configuration"));
btnSaveGlob->set_label(_("Save to global configuration"));
btnSaveLocal->set_label(_("Save to local configuration"));
lblHeadFiltersWindow->set_label(_("Filters"));
ProjectTabLabel->set_label(_("Projects"));
usersProjectLabel->set_text(_("Device:"));
aboutWindows->set_comments(str_setting_user);
aboutWindows->set_website(website);
aboutWindows->set_version(_(version_application.c_str()));
aboutWindows->set_website_label(project_Home_page);
generalTabLabel->set_text(str_general_settings);
GroupsTabLabel->set_text(str_groups);
headerAboutTopic->set_label(_(app_name));
headerTopic->set_label(name_app);
UsersTabLabel->set_text(str_users);
generalGroupsSizeLabel->set_text(str_excess_size_delay);
generalGroupsFilesLabel->set_text(str_excess_files_delay);
generalUsersSizeLabel->set_text(str_excess_size_delay);
generalUsersFilesLabel->set_text(str_excess_files_delay);
generalGroupsSizeWeeksLabel->set_text(str_weeks);
generalGroupsFilesWeeksLabel->set_text(str_weeks);
generalUsersSizeWeeksLabel->set_text(str_weeks);
generalUsersFilesWeeksLabel->set_text(str_weeks);
generalGroupsSizeDaysLabel->set_text(str_days);
generalGroupsFilesDaysLabel->set_text(str_days);
generalUsersSizeDaysLabel->set_text(str_days);
generalUsersFilesDaysLabel->set_text(str_days);
generalGroupsSizeHoursLabel->set_text(str_hours);
generalGroupsFilesHoursLabel->set_text(str_hours);
generalUsersSizeHoursLabel->set_text(str_hours);
generalUsersFilesHoursLabel->set_text(str_hours);
generalGroupsSizeMinutesLabel->set_text(str_minutes);
generalGroupsFilesMinutesLabel->set_text(str_minutes);
generalUsersSizeMinutesLabel->set_text(str_minutes);
generalUsersFilesMinutesLabel->set_text(str_minutes);
lblLoad->set_text(str_load_local);
lblSave->set_text(str_save_local);
groupsDeviceLabel->set_label(str_device);
usersDeviceLabel->set_label(str_device);
headLabel->set_label(str_lb_head);
filtersNameFilterCheckbox->set_label(str_name);
filtersQuotasFilterCheckbox->set_label(str_quotas);
filtersSizeFilterCheckbox->set_label(str_size);
filtersSoftSizeFilterCheckbox->set_label(str_soft_limit_size);
filtersHardSizeFilterCheckbox->set_label(str_hard_limit_size);
filtersHardSizeDelayFilterCheckbox->set_label(str_deferring_hard_limit_size);
filtersHardSizeActivationFilterCheckbox->set_label(str_hard_activation_size);
filtersFilesFilterCheckbox->set_label(str_files);
filtersSoftFilesFilterCheckbox->set_label(str_soft_restriction_files);
filtersHardFilesFilterCheckbox->set_label(str_severe_limitation_files);
filtersHardFilesDelayFilterCheckbox->set_label(str_deferring_limit_files);
filtersHardFilesActivationFilterCheckbox->set_label(str_hard_limit_time);
quotegroupDeviceLabel->set_text(str_device);
quotegroupDiskQuotasLabel->set_text(str_disk_quotas_device);
quotegroupGroupQuotasLabel->set_text(str_group_quotas_device);
quotegroupSizeFrameLabel->set_text(str_size);
quotegroupFilesFrameLabel->set_text(str_files);
quotegroupSizeCurrentlyLabel->set_text(str_currently_using);
quotegroupSizeSoftLimitLabel->set_text(str_soft_limit);
quoteSizeHardLimitLabel->set_text(str_hard_limit);
quoteFilesHardLimitLabel->set_text(str_hard_limit);
quotegroupFilesSoftLimitLabel->set_text(str_soft_limit);
quotegroupFilesCurrentlyLabel->set_text(str_currently_using);
quoteuserDiskQuotasLabel->set_text(str_disk_quotas_device);
quoteuserDeviceLabel->set_text(str_device);
quoteuserGroupQuotasLabel->set_text(str_user_quotas_device);
quoteuserSizeFrameLabel->set_text(str_size);
quoteuserSizeCurrentlyLabel->set_text(str_currently_using);
quoteuserSizeSoftLimitLabel->set_text(str_soft_limit);
quoteuserSizeHardLimitLabel1->set_text(str_hard_limit);
quoteuserFileSystemLabel->set_text(str_file_system);
quoteuserFilesFrameLabel->set_text(str_files);
quoteuserFilesCurrentlyLabel->set_text(str_currently_using_space);
quoteuserFilesSoftLimitLabel->set_text(str_soft_limit);
quoteFilesHardLimitLabel1->set_text(str_hard_limit);
quoteuserFilesHarLimitLabel->set_text(str_files);
quoteuserFilesSoftLimitlabel->set_text(str_files);
quotegroupFileSystemLabel->set_text(str_file_system);
btnLoadGlob->set_label(load_global);
btnLoadLocal->set_label(load_local);
btnAbout->set_label(str_about_1);
btnSynopsis->set_label(str_help);
btnSaveLocalGlob->set_label(save_all);
btnSaveGlob->set_label(save_global);
btnSaveLocal->set_label(save_local);
lblHeadFiltersWindow->set_label(str_filters);
ProjectTabLabel->set_label(str_projects);
usersProjectLabel->set_text(str_device);
}
void MainWindow::view_add_columns(Gtk::TreeView &treeView) {
treeView.append_column(_("Name"), m_columns.name);
treeView.append_column_editable(_("Quotas"), m_columns.quotas);
treeView.append_column(_("Size"), m_columns.size);
treeView.append_column(_("Soft limit\n(size)"), m_columns.soft_limit_size);
treeView.append_column(_("Severe\nlimitation\n(size)"), m_columns.hard_limit_size);
treeView.append_column(_("Deferring\na hard\nlimit\n(size)"), m_columns.hard_limit_size_delay);
treeView.append_column(_("Files"), m_columns.files);
treeView.append_column(_("Soft limit\n(files)"), m_columns.soft_limit_files);
treeView.append_column(_("Severe\nlimitation\n(files)"), m_columns.hard_limit_files);
treeView.append_column(_("Deferring\na hard\nlimit\n(files)"), m_columns.hard_limit_delay);
treeView.append_column(str_name, m_columns.name);
treeView.append_column_editable(str_quotas, m_columns.quotas);
treeView.append_column(str_size, m_columns.size);
treeView.append_column(str_tw_soft_limit, m_columns.soft_limit_size);
treeView.append_column(str_tw_severe_limitation, m_columns.hard_limit_size);
treeView.append_column(str_tw_deferring_size, m_columns.hard_limit_size_delay);
treeView.append_column(str_files, m_columns.files);
treeView.append_column(str_tw_soft_limit_files, m_columns.soft_limit_files);
treeView.append_column(str_tw_severe_limitation_files, m_columns.hard_limit_files);
treeView.append_column(str_tw_severe_limitation_files, m_columns.hard_limit_delay);
}
void MainWindow::filling_device_combo_box_template(Gtk::ComboBoxText *combo_box, map_str_str &map_device) {
@ -452,8 +454,13 @@ void MainWindow::get_builder() {
builder->get_widget("btnFilterProject", btnFilterProject);
builder->get_widget("btnFilterUsers", btnFilterUsers);
builder->get_widget("btnFilterGroups", btnFilterGroups);
#ifdef WEBKIT_FOUND
void *handle=NULL;
handle = dlopen("libwebkit2gtk-4.0.so", RTLD_LAZY);
if (handle) {
builder->get_widget("wndWeb", wndWeb);
}
#endif
}
@ -580,8 +587,8 @@ void MainWindow::check_limit(Gtk::CheckButton *check_button, Gtk::SpinButton *sp
void MainWindow::info_status_app(string stule) {
Glib::RefPtr<Gtk::StyleContext> boxInfo = boxInfoError->get_style_context();
boxInfo->remove_class("boxInfoMessOK");
boxInfo->remove_class("boxInfoMessError");
boxInfo->remove_class(info_box_ok_css);
boxInfo->remove_class(info_box_error_css);
boxInfo->add_class(stule);
}
@ -654,12 +661,43 @@ void MainWindow::wrapper_save_global_cfg() {
}
void MainWindow::synopsis_show() {
string cmd = "xdg-open " + string(_("https://wiki.ublinux.com/ru/Программное_обеспечениерограммы_и_утилиты/Все/")) + app_name;
if (flag_open_browser == true) {
this->open_browser();
}
else {
wndShowWeb->show_all();
}
}
void MainWindow::open_browser() {
#ifdef WEBKIT_FOUND
void *handle=NULL;
handle = dlopen("libwebkit2gtk-4.0.so", RTLD_LAZY);
if (handle) {
webkit_web_view_load_uri(one, link_doc);
wndWeb->show_all();
}
else {
this->template_open_browser();
}
#else
this->template_open_browser();
#endif
}
void MainWindow::template_open_browser() {
string cmd = cmd_xdg + string(_(link_doc)) + " &";
string buf = "";
if (geteuid() == 0) {
string response_user = getlogin();
cmd = "su -l " + response_user + " -c \" DISPLAY=$DISPLAY " + cmd + " \"";
int size_s = std::snprintf(nullptr, 0, cmd_execute, response_user.c_str(), cmd.c_str()) + 1;
auto size = static_cast<size_t>(size_s);
std::unique_ptr<char[]> buf(new char[ size ]);
std::snprintf( buf.get(), size, cmd_execute, response_user.c_str(), cmd.c_str() );
cmd = std::string( buf.get(), buf.get() + size - 1 );
}
obj_process_system.call(cmd, "&");
obj_process_system.call(cmd, "");
}
void MainWindow::wrapper_save_system_cfg() {
@ -683,27 +721,27 @@ void MainWindow::load_template(map_str_str* map_temp, string str_load) {
void MainWindow::info_warning_error(int mess) {
if (obj_load.get_count_error() > 0 || obj_save.get_count_error() > 0) {
info_status_app("boxInfoMessError");
imgInfo->set_from_icon_name("com.ublinux.ubl-settings-diskquota.warning", Gtk::ICON_SIZE_MENU);
info_status_app(info_box_error_css);
imgInfo->set_from_icon_name(icon_warning, Gtk::ICON_SIZE_MENU);
string mess_error = "";
if (mess == 0) {
mess_error = string(_("Local configuration reading error")) + str_cmd_error;
mess_error = string(local_read_error) + str_cmd_error;
lblWarning->set_text(mess_error);
}
else if (mess == 1) {
mess_error = string(_("Global configuration read error")) + str_cmd_error;
mess_error = string(global_read_error) + str_cmd_error;
lblWarning->set_text(mess_error);
}
else if (mess == 2) {
mess_error = string(_("Local configuration write error")) + str_cmd_error;
mess_error = string(local_write_error) + str_cmd_error;
lblWarning->set_text(mess_error);
}
else if (mess == 3) {
mess_error = string(_("Global configuration write error")) + str_cmd_error;
mess_error = string(global_write_error) + str_cmd_error;
lblWarning->set_text(mess_error);
}
else if (mess == 4) {
mess_error = string(_("Error saved local and global configuration")) + str_cmd_error;
mess_error = string(error_save_all) + str_cmd_error;
lblWarning->set_text(mess_error);
}
str_cmd_error = "";
@ -711,39 +749,43 @@ void MainWindow::info_warning_error(int mess) {
obj_save.set_count_error(0);
}
else {
info_status_app("boxInfoMessOK");
imgInfo->set_from_icon_name("com.ublinux.ubl-settings-diskquota.checked", Gtk::ICON_SIZE_MENU);
info_status_app(info_box_ok_css);
imgInfo->set_from_icon_name(icon_checked, Gtk::ICON_SIZE_MENU);
if (mess == 0) {
lblWarning->set_text(_("Local configuration downloaded successfully"));
lblWarning->set_text(local_load_ok);
}
else if (mess == 1) {
lblWarning->set_text(_("Global configuration downloaded successfully"));
lblWarning->set_text(global_load_ok);
}
else if (mess == 2) {
lblWarning->set_text(_("Local configuration successfully written"));
lblWarning->set_text(local_ok_written);
}
else if (mess == 3) {
lblWarning->set_text(_("Global configuration successfully written"));
lblWarning->set_text(global_ok_written);
}
else if (mess == 4) {
lblWarning->set_text(_("Successfully saved local and global configuration"));
lblWarning->set_text(successfully_save_all);
}
else if (mess == 5) {
lblWarning->set_text(_("Nothing to save!"));
lblWarning->set_text(nothing_save);
}
}
}
MainWindow::~MainWindow() {
#ifdef WEBKIT_FOUND
void *handle=NULL;
handle = dlopen("libwebkit2gtk-4.0.so", RTLD_LAZY);
if (handle) {
free(one);
}
#endif
}
void help() {
string version = string(_("ubl-settings-diskquota version: ")) + version_application + "\n";
string version = string(str_version) + version_application + "\n";
cout << version.c_str();
string help;
help = "GTK settings quotas. for UBLinux\n\n"
"Usage: ubl-settings-diskquota [OPTIONS...]\n"
"Options:\n"
" -h, --help Show this help\n"
" -V, --version Show package version\n";
cout << gettext(help.c_str());
cout << str_help_h;
}

@ -9,16 +9,116 @@
#include "my_device.h"
#include "system_quotas.h"
#include "ubconfig_quotas.h"
#include <dlfcn.h>
#ifdef WEBKIT_FOUND
#include <webkit2/webkit2.h>
#endif
#define copyright _("Copyright © UBSoft LLC, 2022 - ")
#define name_app _("ubl-settings-diskquota")
#define website _("https://wiki.ublinux.com")
#define project_Home_page _("Project Home Page")
#define configuring_system_boot _("Configuring system boot parameters")
#define system_boot _("System boot")
#define str_about _("About ubl-settings-diskquota")
#define command_line_parameters _("Command line parameters:")
#define load_default _("Load default:")
#define seconds _("seconds")
#define download_menu _("Download menu")
#define terminal_for_input _("Terminal for input")
#define terminal_for_output _("Terminal for output")
#define boot_selection_menu_timer _("Boot selection menu timer")
#define str_help _("Help")
#define str_about_1 _("About")
#define str_save_local _("Save")
#define str_load_local _("Load")
#define save_all _("Save to global and local configuration")
#define save_local _("Save local configuration")
#define save_global _("Save global configuration")
#define load_global _("Load global configuration")
#define load_local _("Load local configuration")
#define read_online _("Read online")
#define cancel _("Cancel")
#define local_read_error _("Local configuration reading error")
#define global_read_error _("Global configuration read error")
#define local_write_error _("Local configuration write error")
#define global_write_error _("Global configuration write error")
#define error_save_all _("Error saved local and global configuration")
#define local_load_ok _("Local configuration downloaded successfully")
#define global_load_ok _("Global configuration downloaded successfully")
#define local_ok_written _("Local configuration successfully written")
#define global_ok_written _("Global configuration successfully written")
#define successfully_save_all _("Successfully saved local and global configuration")
#define nothing_save _("Nothing to save!")
#define program_as_root _("The program must be run as root")
#define str_weeks _("weeks")
#define str_days _("days")
#define str_hours _("hours")
#define str_minutes _("minutes")
#define str_device _("Device:")
#define str_setting_user _("Setting user quotas")
#define str_users _("Users")
#define str_groups _("Groups")
#define str_files _("files")
#define str_hard_limit _("Hard limit")
#define str_file_system _("File system:")
#define str_name _("Name")
#define str_size _("Size")
#define str_lb_head _("Configuration of disk quotas parameters for system groups and users")
#define str_soft_limit _("Soft limit")
#define str_currently_using _("Currently using:")
#define str_currently_using_space _("Currently using: ")
#define str_filters _("Filters")
#define str_projects _("Projects")
#define str_quotas _("Quotas")
#define str_help_h _("GTK settings quotas. for UBLinux\n\n""Usage: ubl-settings-diskquota [OPTIONS...]\n""Options:\n"" -h, --help Show this help\n"" -V, --version Show package version\n")
#define str_version _("ubl-settings-diskquota version: ")
#define str_user _("User")
#define str_group _("Group")
#define str_device_project _("Device\nProject")
#define str_quota _("Quota type")
#define str_status _("Status")
#define str_excess_size_delay _("Excess size delay period")
#define str_excess_files_delay _("Excess files delay period")
#define str_disk_quotas_device _("Disk quotas for this device:")
#define str_user_quotas_device _("User quotas for this device: ")
#define str_soft_limit_size _("Soft limit (size)")
#define str_hard_limit_size _("Hard limit (size)")
#define str_deferring_hard_limit_size _("Deferring a hard limit (size)")
#define str_hard_activation_size _("Hard limit activation time (size)")
#define str_soft_restriction_files _("Soft Restriction (files)")
#define str_severe_limitation_files _("Severe limitation (files)")
#define str_deferring_limit_files _("Deferring a hard limit (files)")
#define str_hard_limit_time _("Hard limit (file) activation time")
#define str_group_quotas_device _("Group quotas for this device:")
#define str_general_settings _("General settings")
#define str_tw_soft_limit _("Soft limit\n(size)")
#define str_tw_severe_limitation _("Severe\nlimitation\n(size)")
#define str_tw_deferring_size _("Deferring\na hard\nlimit\n(size)")
#define str_tw_soft_limit_files _("Soft limit\n(files)")
#define str_tw_severe_limitation_files _("Severe\nlimitation\n(files)")
#define str_tw_deferring_limit_files _("Deferring\na hard\nlimit\n(files)")
#define info_box_ok_css "boxInfoMessOK"
#define info_box_error_css "boxInfoMessError"
#define icon_checked "com.ublinux.ubl-settings-diskquota.checked"
#define icon_warning "com.ublinux.ubl-settings-diskquota.warning"
#define link_doc "https://wiki.ublinux.com/ru/Программное_обеспечениерограммы_и_утилиты/Все/ubl-settings-diskquota"
#define cmd_xdg "xdg-open "
#define cmd_execute "su -l %s -c \" DISPLAY=$DISPLAY %s \""
#define path_app "/usr/bin/"
#define path_glade "/usr/share/ubl-settings-diskquota/ui/ubl-settings-diskquota.glade"
#define path_css "/usr/share/ubl-settings-diskquota/css/ubl-settings-diskquota.css"
#define app_name "ubl-settings-diskquota"
#define path_resources "/usr/share/ubl-settings-diskquota"
#define path_img_head_background "/usr/share/ubl-settings-diskquota/images/logo-background.png"
using namespace std;
extern const string path_app;
extern const string path_glade;
extern const string app_name;
extern const string path_locale;
extern const string path_css;
extern const string path_img_head_background;
extern string version_application;
extern int socket_ext_id_I;
@ -208,6 +308,12 @@ class MainWindow : public Gtk::ApplicationWindow {
Gtk::Button *btnFilterUsers;
Gtk::Button *btnFilterProject;
Gtk::ComboBoxText *quotegroupDeviceCombo;
Gtk::Window *wndShowWeb;
#ifdef WEBKIT_FOUND
Gtk::Window *wndWeb;
Gtk::Widget *three;
WebKitWebView *one;
#endif
public:
Lib_save::Save obj_save = Lib_save::Save();
@ -226,9 +332,11 @@ class MainWindow : public Gtk::ApplicationWindow {
string save_user_or_group;
string sys_or_ubconfig;
string hw_or_sw = "";
bool flag_open_browser = false;
public:
MainWindow(BaseObjectType* obj, Glib::RefPtr<Gtk::Builder> const& builder);
MainWindow(Glib::RefPtr<Gtk::Builder> const& builder);
~MainWindow();
void settings();
void lacalization();
void add_CSS();
@ -240,6 +348,8 @@ class MainWindow : public Gtk::ApplicationWindow {
void info_status_app(string stule);
void groupsFilters_show();
void init_tree_view();
void template_open_browser();
void open_browser();
void load_template(map_str_str* map_temp, string str_load);
void info_warning_error(int mess);
void off_quota_system(Gtk::ComboBoxText* combo_box, string quota_type);

Loading…
Cancel
Save