parent
							
								
									47bdc83fd7
								
							
						
					
					
						commit
						bc73285ea3
					
				| @ -0,0 +1 @@ | ||||
| .vscode/ | ||||
| @ -0,0 +1,157 @@ | ||||
| #!/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
 | ||||
| FILE_VERSION = VERSION.md | ||||
| DEPENDS = /bin/cmake | ||||
| PREFIX ?= /usr | ||||
| PKGNAME = $(MAKEFILE_DIR) | ||||
| #PKGNAME = ubl-settings-manager
 | ||||
| 
 | ||||
| default_target: all | ||||
| 
 | ||||
| .PHONY: all init depend debug prepare check build uninstall install clean up_ver help | ||||
| 
 | ||||
| all: init build | ||||
| 
 | ||||
| init: | ||||
| 	@echo "Initialize ..."; \
 | ||||
| 	sed -r "s/(version_application = ).*/\1\"$$(grep 'VERSION' ${FILE_VERSION} | cut -d" " -f2)\";/" -i source/ubl-settings-quotas.cc; \
 | ||||
| 	echo "-- Build path: ${CMAKE_BUILD_DIR}" | ||||
| 
 | ||||
| depend: | ||||
| 	@echo "Check depends ..." | ||||
| 	@for FILE_DEPEND in $(DEPENDS); do \
 | ||||
| 	    if [ ! -f $${FILE_DEPEND} ]; then \
 | ||||
| 		echo "ERROR: Depend '$${FILE_DEPEND}' not found !"; \
 | ||||
| 		exit 1; \
 | ||||
| 	    fi; \
 | ||||
| 	done; \
 | ||||
| 	echo "Check depends: OK" | ||||
| #	$(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
 | ||||
| 
 | ||||
| debug: | ||||
| 	@echo "Debug ..." | ||||
| 	if [ ! -d ${CMAKE_BUILD_DIR} ]; then \
 | ||||
| 	    $(CMAKE_COMMAND) -S${CMAKE_SOURCE_DIR} -B${CMAKE_BUILD_DIR} -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX="${PREFIX}"; \
 | ||||
| 	fi; \
 | ||||
| 	echo "Debug: OK" | ||||
| 
 | ||||
| prepare: | ||||
| 	@echo "Prepare ..."; \
 | ||||
| 	if [ ! -d ${CMAKE_BUILD_DIR} ]; then \
 | ||||
| 	    $(CMAKE_COMMAND) -S${CMAKE_SOURCE_DIR} -B${CMAKE_BUILD_DIR} -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="${PREFIX}"; \
 | ||||
| 	fi; \
 | ||||
| 	echo "Prepare: OK" | ||||
| 
 | ||||
| check: | ||||
| 	@echo "Check ..."; \
 | ||||
| 	if [ -f ${CMAKE_BUILD_DIR}/${PKGNAME} ]; then \
 | ||||
| 	    echo "Check: OK"; \
 | ||||
| 	else \
 | ||||
| 	    echo "Check: ${CMAKE_BUILD_DIR}/${PKGNAME} not found !"; \
 | ||||
| 	    exit 1; \
 | ||||
| 	fi | ||||
| 
 | ||||
| build: depend prepare | ||||
| 	@echo "Build ..."; \
 | ||||
| 	make --directory=${CMAKE_BUILD_DIR}; \
 | ||||
| 	echo "Build: OK" | ||||
| 
 | ||||
| uninstall: | ||||
| 	@echo "Uninstall ..." | ||||
| 	@for FILE_PO in $(wildcard *.po); do \
 | ||||
| 	    LANG=$${FILE_PO##*_};LANG=$${LANG%.*}; \
 | ||||
| 	    FILE_MO=$${FILE_PO##*/}; FILE_MO="$${FILE_MO%_*.po}.mo"; \
 | ||||
| 	    PATH_FILE_MO="${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \
 | ||||
| 	    $(RM) "$${PATH_FILE_MO}"; \
 | ||||
| 	done | ||||
| 	@for SIZE in 16x16 32x32 48x48 scalable; do \
 | ||||
| 	    $(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}/apps/com.ublinux.${PKGNAME}.svg"; \
 | ||||
| 	    $(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}/apps/com.ublinux.${PKGNAME}.png"; \
 | ||||
| 	done | ||||
| 	@for FILE_SVG in $(wildcard *.svg); do \
 | ||||
| 	    for SIZE in 16x16 32x32 48x48 scalable; do \
 | ||||
| 	        $(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}/status/$${FILE_SVG%.*}".{svg,png,jpg}; \
 | ||||
| 	    done; \
 | ||||
| 	done | ||||
| 	@$(RM) "${DESTDIR}${PREFIX}/bin/${PKGNAME}" | ||||
| 	@$(RM) "${DESTDIR}${PREFIX}/share/applications/${PKGNAME}.desktop" | ||||
| 	@$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/com.ublinux.${PKGNAME}.svg" | ||||
| 	@$(RM) -rd "${DESTDIR}${PREFIX}/share/${PKGNAME}" | ||||
| 	@if [ -z ${DESTDIR} ]; then \
 | ||||
| 	    [ -d "${DESTDIR}${PREFIX}/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}${PREFIX}/share/icons/hicolor/" &>/dev/null || true; \
 | ||||
| 	    update-desktop-database --quiet &>/dev/null || true; \
 | ||||
| 	    [ -d "${DESTDIR}${PREFIX}/share/applications" ] && touch "${DESTDIR}${PREFIX}/share/applications" &>/dev/null || true; \
 | ||||
| 	fi | ||||
| 	@echo "Uninstall: OK" | ||||
| 
 | ||||
| install: check uninstall | ||||
| 	@echo "Install ..." | ||||
| 	@for FILE_PO in $(wildcard *.po); do \
 | ||||
| 		LANG=$${FILE_PO##*_};LANG=$${LANG%.*}; \
 | ||||
| 		install -dm755 "${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES"; \
 | ||||
| 		FILE_MO=$${FILE_PO##*/}; FILE_MO="$${FILE_MO%_*.po}.mo"; \
 | ||||
| 		PATH_FILE_MO="${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \
 | ||||
| 		echo "$${FILE_PO}"; \
 | ||||
| 		msgfmt "$${FILE_PO}" -v -f -o "$${PATH_FILE_MO}"; \
 | ||||
| 	done | ||||
| 	@for SIZE in 16 32 48; do \
 | ||||
| 		install -dm755 "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps"; \
 | ||||
| 		rsvg-convert -w $${SIZE} -h $${SIZE} -f svg --keep-image-data "com.ublinux.${PKGNAME}.svg" -o "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/com.ublinux.${PKGNAME}.svg"; \
 | ||||
| 	done | ||||
| 	@install -dm755 "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps" | ||||
| 	@install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/" "com.ublinux.${PKGNAME}.svg" | ||||
| 	@install -Dm755 -t "${DESTDIR}${PREFIX}/bin/" "${CMAKE_BUILD_DIR}/${PKGNAME}" | ||||
| 	@install -dm755 "${DESTDIR}/etc/xdg" | ||||
| 	@install -dm755 "${DESTDIR}${PREFIX}/share/applications" | ||||
| 	@install -Dm644 -t "${DESTDIR}${PREFIX}/share/applications/" "${PKGNAME}.desktop" | ||||
| 	@install -dm755 "${DESTDIR}${PREFIX}/share/${PKGNAME}"/{ui,css,images} | ||||
| 	@install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/ui/" "${PKGNAME}.glade" | ||||
| 	@install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/css/" "${PKGNAME}.css" | ||||
| 	@install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/ui/" "${PKGNAME}-banner.png" | ||||
| 	@install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/status/" "com.ublinux.ubl-settings-quotas.checked.svg" | ||||
| 	@install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/status/" "com.ublinux.ubl-settings-quotas.warning.svg" | ||||
| 	@if [ -z ${DESTDIR} ]; then \
 | ||||
| 	    [ -d "${DESTDIR}${PREFIX}/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}${PREFIX}/share/icons/hicolor/" &>/dev/null || true; \
 | ||||
| 	    update-desktop-database --quiet &>/dev/null || true; \
 | ||||
| 	    [ -d "${DESTDIR}${PREFIX}/share/applications" ] && touch "${DESTDIR}${PREFIX}/share/applications" &>/dev/null || true; \
 | ||||
| 	fi | ||||
| 	@echo "Install: OK" | ||||
| 
 | ||||
| clean: | ||||
| 	@echo "Clean ..." | ||||
| 	@$(RM) -rd ${CMAKE_BUILD_DIR} | ||||
| 	@if [ -d ${CMAKE_BUILD_DIR} ]; then \
 | ||||
| 	    echo "Clean: error, compile directory exist ${CMAKE_BUILD_DIR}"; \
 | ||||
| 	else \
 | ||||
| 	    echo "Clean: OK"; \
 | ||||
| 	fi | ||||
| 
 | ||||
| up_ver: | ||||
| 	@CURRENT=$$(grep 'VERSION' ${FILE_VERSION} | cut -d" "  -f2); \
 | ||||
| 	MAJOR=$$(cut -d. -f1 <<< $${CURRENT}); \
 | ||||
| 	MINOR=$$(cut -d. -f2 <<< $${CURRENT}); \
 | ||||
| 	VER="$${MAJOR}.$$(($${MINOR}+1))"; \
 | ||||
| 	sed "s/VERSION *[[:digit:]]*.*/VERSION $${VER}/" -i ${FILE_VERSION}; \
 | ||||
| 	echo "Updated version to VERSION.md: $${CURRENT} to $${VER}" | ||||
| 
 | ||||
| help: | ||||
| 	@echo "The following are some of the valid targets for this Makefile:"; \
 | ||||
| 	echo "... all (the default if no target is provided)"; \
 | ||||
| 	echo "... init"; \
 | ||||
| 	echo "... debug"; \
 | ||||
| 	echo "... prepare"; \
 | ||||
| 	echo "... compile"; \
 | ||||
| 	echo "... install"; \
 | ||||
| 	echo "... uninstall"; \
 | ||||
| 	echo "... clean"; \
 | ||||
| 	echo "... up_ver" | ||||
| @ -1,2 +1,44 @@ | ||||
| # ubl-settings-quotas | ||||
| # Настройки квот | ||||
| [RU] Утилита для настройки квот  | ||||
| 
 | ||||
| Utility for setting the date and time  | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| # Build | ||||
| In order to build ubl-settings-quotas you will need: | ||||
| 
 | ||||
| - CMake | ||||
| - C compiler | ||||
| - GTK+ 3 & dependencies | ||||
| 
 | ||||
| Once you have all the necessary dependencies, you can use: | ||||
| ```sh | ||||
| $ make | ||||
| ``` | ||||
| 
 | ||||
| # Installation | ||||
| After a successful build, just use: | ||||
| ```sh | ||||
| $ sudo make install clean | ||||
| ``` | ||||
| 
 | ||||
| # Uninstallation | ||||
| After a successful build, just use: | ||||
| ```sh | ||||
| $ sudo make uninstall | ||||
| ``` | ||||
| # Usage | ||||
| ```sh | ||||
| $ ubl-settings-quotas --help | ||||
| GTK settings quotas for UBLinux | ||||
| 
 | ||||
| Usage:  ubl-settings-quotas [OPTIONS...] | ||||
| Options: | ||||
|   -h, --help		         Show this help | ||||
|   -V, --version	  	     Show package version | ||||
| 
 | ||||
| $ ubl-settings-quotas --version | ||||
| ubl-settings-quotas version: x.xx | ||||
| ``` | ||||
|  | ||||
| @ -0,0 +1 @@ | ||||
| VERSION 1.0 | ||||
| After Width: | Height: | Size: 7.4 KiB | 
| After Width: | Height: | Size: 210 KiB | 
| After Width: | Height: | Size: 2.1 KiB | 
| After Width: | Height: | Size: 141 KiB | 
| @ -0,0 +1,33 @@ | ||||
| cmake_minimum_required(VERSION 3.7) | ||||
| project(ubl-settings-quotas) | ||||
| 
 | ||||
| find_package(PkgConfig REQUIRED) | ||||
| 
 | ||||
| pkg_check_modules(GTK REQUIRED gtkmm-3.0) | ||||
| include_directories(${GTK_INCLUDE_DIRS}) | ||||
| link_directories(${GTK_LIBRARY_DIRS}) | ||||
| add_definitions(${GTK_CFLAGS_OTHER}) | ||||
| find_package(ICU REQUIRED COMPONENTS uc dt in io) | ||||
| 
 | ||||
| #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 \ | ||||
| 	-O2 -pipe -fno-plt -fexceptions \ | ||||
|         -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security \ | ||||
|         -fstack-clash-protection -fcf-protection -g") | ||||
| 
 | ||||
| set(SOURCE_FILES | ||||
|         util.h | ||||
|         util.cc | ||||
|         ubl-util-standard.h | ||||
|         ubl-util-standard.c | ||||
|         ubl-settings-quotas.h  | ||||
|         ubl-settings-quotas.cc  | ||||
|         main.cc)  | ||||
| 
 | ||||
| set(LIBRARIES | ||||
|         ${GTK_LIBRARIES} | ||||
|         pthread) | ||||
| 
 | ||||
| add_executable(ubl-settings-quotas ${SOURCE_FILES}) | ||||
| target_link_libraries(ubl-settings-quotas ${LIBRARIES} ${ICU_LIBRARIES}) | ||||
| install(TARGETS ubl-settings-quotas DESTINATION bin) | ||||
| @ -0,0 +1,76 @@ | ||||
| #include "ubl-settings-quotas.h" | ||||
| 
 | ||||
| 
 | ||||
| void pars_flag(int index_start, int argc, char* argv[]); | ||||
| 
 | ||||
| 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 (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()); | ||||
|     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); | ||||
|         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); | ||||
|         return 0; | ||||
|     } | ||||
|     else if (str_argv.find("-") != 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); | ||||
|         pars_flag(1, argc, argv); | ||||
|         MainWindow* wnd = nullptr; | ||||
|         builder->get_widget_derived("MainWindow", wnd); | ||||
|         auto r = app->run(*wnd); | ||||
|         delete wnd; | ||||
|         return r; | ||||
|     } | ||||
|      | ||||
| } | ||||
| void pars_flag(int index_start, int argc, char* argv[]) { | ||||
|     string str_argv = ""; | ||||
|     for (int i = index_start; i<argc; i++){ | ||||
|         str_argv = argv[i]; | ||||
|         if (str_argv == "--help" || str_argv == "-h"){ | ||||
|             help(); | ||||
|             exit(1); | ||||
|         } | ||||
|         else if (str_argv == "--version" || str_argv == "-v"){ | ||||
|             string version = string(gettext("ubl-settings-quotas version: ")) + version_application + "\n"; | ||||
|             cout << version.c_str(); | ||||
|             exit(1); | ||||
|         } | ||||
|         else{ | ||||
|             if (index_start == 1){ | ||||
|                cout << (gettext("Argument not recognized\n")) << endl; | ||||
|             } | ||||
|         } | ||||
|              | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,224 @@ | ||||
| 
 | ||||
| #include "ubl-settings-quotas.h" | ||||
| using namespace std; | ||||
| 
 | ||||
| const string path_app = "/usr/bin/"; | ||||
| const string path_glade = "/usr/share/ubl-settings-quotas/ui/ubl-settings-quotas.glade"; | ||||
| const string app_name = "ubl-settings-quotas"; | ||||
| const string path_locale = "/usr/share/locale/"; | ||||
| const string path_css = "/usr/share/ubl-settings-quotas/css/ubl-settings-quotas.css"; | ||||
| const string path_img_head_background = "/usr/share/ubl-settings-quotas/ui/ubl-settings-quotas-banner.png"; | ||||
| 
 | ||||
| int socket_ext_id_I = 0; | ||||
| int socket_trd_id_I = 0; | ||||
| string version_application = "1.0"; | ||||
| 
 | ||||
| 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_flags(Glib::OptionEntry::FLAG_IN_MAIN); | ||||
|     socketIDArg.set_description("Settings manager socket"); | ||||
|     Glib::OptionEntry socketExtId; | ||||
|     socketExtId.set_long_name("socket-ext-id"); | ||||
|     socketExtId.set_flags(Glib::OptionEntry::FLAG_IN_MAIN); | ||||
|     socketExtId.set_description("Settings manager secondary socket"); | ||||
|     Glib::OptionEntry socketTrdId; | ||||
|     socketTrdId.set_long_name("socket-trd-id"); | ||||
|     socketTrdId.set_flags(Glib::OptionEntry::FLAG_IN_MAIN); | ||||
|     socketTrdId.set_description("Settings manager secondary socket"); | ||||
|     add_entry(socketIDArg, m_socketID); | ||||
|     add_entry(socketExtId, socket_ext_id_I); | ||||
|     add_entry(socketTrdId, socket_trd_id_I); | ||||
| } | ||||
| ::Window CmdArgParser::GetSocketID() const{ | ||||
|     return m_socketID; | ||||
| } | ||||
| 
 | ||||
| MainWindow::MainWindow(BaseObjectType* obj, Glib::RefPtr<Gtk::Builder> const& builder) | ||||
|     : Gtk::ApplicationWindow(obj), builder{builder} { | ||||
|         this->builder = builder; | ||||
|         this->settings();   | ||||
| } | ||||
| 
 | ||||
| MainWindow::MainWindow(Glib::RefPtr<Gtk::Builder> const& builder) { | ||||
|     this->builder =  builder; | ||||
|     this->settings(); | ||||
| } | ||||
| 
 | ||||
| void MainWindow::settings() { | ||||
|     this->get_builder(); | ||||
|     this->lacalization(); | ||||
|     this->add_CSS(); | ||||
|     btnBoxAboutDialog->set_visible(false); | ||||
|     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); | ||||
|     if (geteuid() == 0) { | ||||
|     } | ||||
|     else { | ||||
|         boxFuncs->set_sensitive(false); | ||||
|         btnSave->set_sensitive(false); | ||||
|         btnLoad->set_sensitive(false); | ||||
|         imgInfo->set_from_icon_name("com.ublinux.ubl-settings-datetime.warning", Gtk::ICON_SIZE_MENU); | ||||
|         info_status_app("boxInfoMessError"); | ||||
|         lblWarning->set_text(gettext("The program must be run as root")); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void MainWindow::lacalization() { | ||||
|     time_t now = time(0); | ||||
|     tm *ltm = localtime(&now); | ||||
|     unsigned int year = 1900+ ltm->tm_year; | ||||
|     string str_authors = string(gettext("Copyright © UBSoft LLC, 2022 - ")) + to_string(year);  | ||||
|     aboutWindows->set_copyright(str_authors); | ||||
|     aboutWindows->set_comments(gettext("Date and Time")); | ||||
|     aboutWindows->set_website(gettext("https://wiki.ublinux.com")); | ||||
|     aboutWindows->set_version(gettext(version_application.c_str())); | ||||
|     aboutWindows->set_website_label(gettext("Project Home Page")); | ||||
|     generalTabLabel->set_text(gettext("General settings")); | ||||
|     GroupsTabLabel->set_text(gettext("Groups")); | ||||
|     UsersTabLabel->set_text(gettext("Users")); | ||||
|     generalDeviceLabel->set_text(gettext("Device:")); | ||||
|     generalFileSystemLabel->set_text(gettext("File system:")); | ||||
|     generalGroupsFrameLabel->set_text(gettext("quotas for groups")); | ||||
|     generalGroupsEnableCheck->set_label(gettext("Enable")); | ||||
|     generalUsersEnableCheck->set_label(gettext("Enable")); | ||||
|     generalUsersFrameLabel->set_label(gettext("quotas for users")); | ||||
|     generalGroupsSizeLabel->set_text(gettext("Excess size delay period")); | ||||
|     generalGroupsFilesLabel->set_text(gettext("Excess files delay period")); | ||||
|     generalUsersSizeLabel->set_text(gettext("Excess size delay period")); | ||||
|     generalUsersFilesLabel->set_text(gettext("Excess files delay period")); | ||||
|     generalGroupsSizeWeeksLabel->set_text(gettext("weeks")); | ||||
|     generalGroupsFilesWeeksLabel->set_text(gettext("weeks")); | ||||
|     generalUsersSizeWeeksLabel->set_text(gettext("weeks")); | ||||
|     generalUsersFilesWeeksLabel->set_text(gettext("weeks")); | ||||
|     generalGroupsSizeDaysLabel->set_text(gettext("days")); | ||||
|     generalGroupsFilesDaysLabel->set_text(gettext("days")); | ||||
|     generalUsersSizeDaysLabel->set_text(gettext("days")); | ||||
|     generalUsersFilesDaysLabel->set_text(gettext("days")); | ||||
|     generalGroupsSizeHoursLabel->set_text(gettext("hours")); | ||||
|     generalGroupsFilesHoursLabel->set_text(gettext("hours")); | ||||
|     generalUsersSizeHoursLabel->set_text(gettext("hours")); | ||||
|     generalUsersFilesHoursLabel->set_text(gettext("hours")); | ||||
|     generalGroupsSizeMinutesLabel->set_text(gettext("minutes")); | ||||
|     generalGroupsFilesMinutesLabel->set_text(gettext("minutes")); | ||||
|     generalUsersSizeMinutesLabel->set_text(gettext("minutes")); | ||||
|     generalUsersFilesMinutesLabel->set_text(gettext("minutes")); | ||||
|     lblLoad->set_text(gettext("Load")); | ||||
|     lblSave->set_text(gettext("Save"));     | ||||
| } | ||||
| 
 | ||||
| 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
 | ||||
|     HeadBackgroundImage->set(path_img_head_background); | ||||
|     //Glib::RefPtr<Gtk::StyleContext> headerTopic_css = headerTopic->get_style_context();
 | ||||
|     Glib::RefPtr<Gtk::StyleContext> boxButton_css = boxButton->get_style_context(); | ||||
|     Glib::RefPtr<Gtk::StyleContext> boxSave_css = boxSave->get_style_context(); | ||||
|     Glib::RefPtr<Gtk::StyleContext> headerBar_css = headerBar->get_style_context(); | ||||
|     if (socket_trd_id_I == 0 && socket_ext_id_I == 0){ | ||||
|         boxButton_css->add_class("bkim_no_plug"); | ||||
|         boxSave_css->add_class("bkim_no_plug"); | ||||
|     } | ||||
|      | ||||
|     //headerTopic_css->add_class("textHead");
 | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| void MainWindow::get_builder() { | ||||
|     builder->set_translation_domain(path_app); | ||||
|     builder->get_widget("headerTopic", headerTopic); | ||||
|     builder->get_widget("boxButton", boxButton); | ||||
|     builder->get_widget("boxSave", boxSave); | ||||
|     builder->get_widget("aboutWindows", aboutWindows); | ||||
|     builder->get_widget("HeadOverlay", HeadOverlay); | ||||
|     builder->get_widget("headerBar", headerBar); | ||||
|     builder->get_widget("boxFuncs", boxFuncs); | ||||
|     builder->get_widget("btnLoad", btnLoad); | ||||
|     builder->get_widget("btnSave", btnSave); | ||||
|     builder->get_widget("btnBoxAboutDialog", btnBoxAboutDialog); | ||||
|     builder->get_widget("HeadBackgroundImage", HeadBackgroundImage); | ||||
|     builder->get_widget("imgInfo", imgInfo); | ||||
|     builder->get_widget("lblWarning", lblWarning); | ||||
|     builder->get_widget("boxInfoError", boxInfoError); | ||||
|     builder->get_widget("imgInfo", imgInfo); | ||||
|     builder->get_widget("generalTabLabel", generalTabLabel); | ||||
|     builder->get_widget("GroupsTabLabel", GroupsTabLabel); | ||||
|     builder->get_widget("UsersTabLabel", UsersTabLabel); | ||||
|     builder->get_widget("generalDeviceLabel", generalDeviceLabel); | ||||
|     builder->get_widget("generalGroupsFrameLabel", generalGroupsFrameLabel); | ||||
|     builder->get_widget("generalGroupsSizeLabel", generalGroupsSizeLabel); | ||||
|     builder->get_widget("generalGroupsFilesLabel", generalGroupsFilesLabel); | ||||
|     builder->get_widget("generalUsersFrameLabel", generalUsersFrameLabel); | ||||
|     builder->get_widget("generalUsersSizeLabel", generalUsersSizeLabel); | ||||
|     builder->get_widget("generalUsersFilesLabel", generalUsersFilesLabel); | ||||
|     builder->get_widget("generalGroupsSizeWeeksLabel", generalGroupsSizeWeeksLabel); | ||||
|     builder->get_widget("generalGroupsFilesWeeksLabel", generalGroupsFilesWeeksLabel); | ||||
|     builder->get_widget("generalUsersSizeWeeksLabel", generalUsersSizeWeeksLabel); | ||||
|     builder->get_widget("generalUsersFilesWeeksLabel", generalUsersFilesWeeksLabel); | ||||
|     builder->get_widget("generalGroupsSizeDaysLabel", generalGroupsSizeDaysLabel); | ||||
|     builder->get_widget("generalGroupsFilesDaysLabel", generalGroupsFilesDaysLabel); | ||||
|     builder->get_widget("generalUsersSizeDaysLabel", generalUsersSizeDaysLabel); | ||||
|     builder->get_widget("generalUsersFilesDaysLabel", generalUsersFilesDaysLabel); | ||||
|     builder->get_widget("generalGroupsSizeHoursLabel", generalGroupsSizeHoursLabel); | ||||
|     builder->get_widget("generalGroupsFilesHoursLabel", generalGroupsFilesHoursLabel); | ||||
|     builder->get_widget("generalUsersSizeHoursLabel", generalUsersSizeHoursLabel); | ||||
|     builder->get_widget("generalUsersFilesHoursLabel", generalUsersFilesHoursLabel); | ||||
|     builder->get_widget("generalGroupsSizeMinutesLabel", generalGroupsSizeMinutesLabel); | ||||
|     builder->get_widget("generalGroupsFilesMinutesLabel", generalGroupsFilesMinutesLabel); | ||||
|     builder->get_widget("generalUsersSizeMinutesLabel", generalUsersSizeMinutesLabel); | ||||
|     builder->get_widget("generalUsersFilesMinutesLabel", generalUsersFilesMinutesLabel); | ||||
|     builder->get_widget("generalFileSystemLabel", generalFileSystemLabel); | ||||
|     builder->get_widget("generalGroupsEnableCheck", generalGroupsEnableCheck); | ||||
|     builder->get_widget("generalUsersEnableCheck", generalUsersEnableCheck); | ||||
|     builder->get_widget("lblLoad", lblLoad); | ||||
|     builder->get_widget("lblSave", lblSave); | ||||
|     builder->get_widget("btnSettings", btnSettings); | ||||
| } | ||||
| 
 | ||||
| void MainWindow::event() { | ||||
|     btnLoadGlob->signal_activate().connect([&]() {}); | ||||
|     btnLoadLocal->signal_activate().connect([&]() {}); | ||||
|     btnSynopsis->signal_activate().connect([&]() {}); | ||||
|     btnAbout->signal_activate().connect([&]() {}); | ||||
|     btnSaveLocalGlob->signal_activate().connect([&]() {}); | ||||
|     btnSaveGlob->signal_activate().connect([&]() {}); | ||||
|     btnSaveLocal->signal_activate().connect([&]() {}); | ||||
| } | ||||
| 
 | ||||
| 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->add_class(stule); | ||||
| } | ||||
| 
 | ||||
| SettingsPlug::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(); | ||||
| } | ||||
| 
 | ||||
| void help() { | ||||
|     string version = string(gettext("ubl-settings-quotas version: ")) + version_application + "\n"; | ||||
|     cout << version.c_str(); | ||||
|     string help; | ||||
|     help = "GTK settings quotas. for UBLinux\n\n" | ||||
|            "Usage:  ubl-settings-quotas [OPTIONS...]\n" | ||||
|            "Options:\n" | ||||
|            "  -h, --help	 Show this help\n" | ||||
|            "  -V, --version	         Show package version\n"; | ||||
|     cout << gettext(help.c_str()); | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| @ -0,0 +1,117 @@ | ||||
| #ifndef UBL_SETTINGS_QUOTAS_H | ||||
| #define UBL_SETTINGS_QUOTAS_H | ||||
| #include <gtkmm/window.h> | ||||
| #include <glibmm/i18n.h> | ||||
| #include <gtkmm/plug.h> | ||||
| #include <gtkmm/stock.h> | ||||
| #include <gtkmm.h> | ||||
| 
 | ||||
| #include "ubl-util-standard.c" | ||||
| #include "util.h" | ||||
| 
 | ||||
| 
 | ||||
| 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 int socket_ext_id_I; | ||||
| extern int socket_trd_id_I; | ||||
| extern string version_application; | ||||
| 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: | ||||
|         Glib::RefPtr<Gtk::Builder> builder; | ||||
|         template<typename Type> | ||||
|         struct Result{ | ||||
|             Type response; | ||||
|             int error; | ||||
|         }; | ||||
|         Gtk::Label *headerTopic; | ||||
|         Gtk::AboutDialog *aboutWindows; | ||||
|         Gtk::Overlay *HeadOverlay; | ||||
|         Gtk::HeaderBar *headerBar; | ||||
|         Gtk::Box *boxSave; | ||||
|         Gtk::Box *boxButton; | ||||
|         Gtk::Box *boxFuncs; | ||||
|         Gtk::MenuButton *btnSave; | ||||
|         Gtk::MenuButton *btnLoad; | ||||
|         Gtk::MenuButton *btnSettings; | ||||
|         Gtk::ButtonBox *btnBoxAboutDialog; | ||||
|         Gtk::Image *HeadBackgroundImage; | ||||
|         Gtk::Image *imgInfo; | ||||
|         Gtk::Box *boxInfoError; | ||||
|         Gtk::Label *lblWarning; | ||||
|         Gtk::Label *generalTabLabel; | ||||
|         Gtk::Label *UsersTabLabel; | ||||
|         Gtk::Label *GroupsTabLabel; | ||||
|         Gtk::Label *generalDeviceLabel; | ||||
|         Gtk::Label *generalGroupsFrameLabel; | ||||
|         Gtk::Label *generalGroupsSizeLabel; | ||||
|         Gtk::Label *generalGroupsFilesLabel; | ||||
|         Gtk::Label *generalUsersFrameLabel; | ||||
|         Gtk::Label *generalUsersSizeLabel; | ||||
|         Gtk::Label *generalUsersFilesLabel; | ||||
|         Gtk::Label *generalGroupsSizeWeeksLabel; | ||||
|         Gtk::Label *generalGroupsFilesWeeksLabel; | ||||
|         Gtk::Label *generalUsersSizeWeeksLabel; | ||||
|         Gtk::Label *generalUsersFilesWeeksLabel; | ||||
|         Gtk::Label *generalGroupsSizeDaysLabel; | ||||
|         Gtk::Label *generalGroupsFilesDaysLabel; | ||||
|         Gtk::Label *generalUsersSizeDaysLabel; | ||||
|         Gtk::Label *generalUsersFilesDaysLabel; | ||||
|         Gtk::Label *generalGroupsSizeHoursLabel; | ||||
|         Gtk::Label *generalGroupsFilesHoursLabel; | ||||
|         Gtk::Label *generalUsersSizeHoursLabel; | ||||
|         Gtk::Label *generalUsersFilesHoursLabel; | ||||
|         Gtk::Label *generalGroupsSizeMinutesLabel; | ||||
|         Gtk::Label *generalGroupsFilesMinutesLabel; | ||||
|         Gtk::Label *generalUsersSizeMinutesLabel; | ||||
|         Gtk::Label *generalUsersFilesMinutesLabel; | ||||
|         Gtk::Label *generalFileSystemLabel; | ||||
|         Gtk::Label *lblLoad; | ||||
|         Gtk::Label *lblSave; | ||||
|         Gtk::CheckButton *generalGroupsEnableCheck; | ||||
|         Gtk::CheckButton *generalUsersEnableCheck; | ||||
|         Gtk::MenuItem *btnLoadGlob; | ||||
|         Gtk::MenuItem *btnLoadLocal; | ||||
|         Gtk::MenuItem *btnSynopsis; | ||||
|         Gtk::MenuItem *btnAbout; | ||||
|         Gtk::MenuItem *btnSaveLocalGlob; | ||||
|         Gtk::MenuItem *btnSaveGlob; | ||||
|         Gtk::MenuItem *btnSaveLocal; | ||||
|     public: | ||||
|         MainWindow(BaseObjectType* obj, Glib::RefPtr<Gtk::Builder> const& builder); | ||||
|         MainWindow(Glib::RefPtr<Gtk::Builder> const& builder); | ||||
|         void settings(); | ||||
|         void lacalization(); | ||||
|         void add_CSS(); | ||||
|         void get_builder(); | ||||
|         void event(); | ||||
|         void info_status_app(string stule); | ||||
|      | ||||
|          | ||||
| }; | ||||
| 
 | ||||
| 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,91 @@ | ||||
| #include "ubl-util-standard.h" | ||||
| #ifndef __cplusplus | ||||
| #ifndef UBL_GET_STANDARD_UI | ||||
| #define UBL_GET_STANDARD_UI | ||||
| 
 | ||||
| 
 | ||||
| inline returnstruct *ubl_make_plugs(GtkWidget *LeftWidget, GtkWidget *RightWidget, int left_plug_id, int right_plug_id){ | ||||
|     returnstruct *ret=(returnstruct*)malloc(sizeof(returnstruct*)); | ||||
|     if (left_plug_id>0&&LeftWidget){ | ||||
|         GtkWidget *plug=gtk_plug_new(left_plug_id); | ||||
|         GtkWidget *toplug=LeftWidget; | ||||
|         if (gtk_widget_get_parent(GTK_WIDGET(toplug))){ | ||||
|             g_object_ref(G_OBJECT(toplug)); | ||||
|             GtkWidget *parent=gtk_widget_get_parent(toplug); | ||||
|             gtk_container_remove(GTK_CONTAINER(parent),toplug); | ||||
|             gtk_container_add(GTK_CONTAINER(plug),GTK_WIDGET(toplug)); | ||||
|         } else  | ||||
|             gtk_container_add(GTK_CONTAINER(plug),GTK_WIDGET(toplug)); | ||||
|         gtk_widget_show(GTK_WIDGET(plug)); | ||||
|         ret->plugLeft=plug; | ||||
|     } | ||||
|     if (right_plug_id>0&&RightWidget){ | ||||
|         GtkWidget *plug=gtk_plug_new(right_plug_id); | ||||
|         GtkWidget *toplug=RightWidget; | ||||
|         if (gtk_widget_get_parent(GTK_WIDGET(toplug))){ | ||||
|             g_object_ref(G_OBJECT(toplug)); | ||||
|             GtkWidget *parent=gtk_widget_get_parent(toplug); | ||||
|             gtk_container_remove(GTK_CONTAINER(parent),toplug); | ||||
|             gtk_container_add(GTK_CONTAINER(plug),GTK_WIDGET(toplug)); | ||||
|         } else  | ||||
|             gtk_container_add(GTK_CONTAINER(plug),GTK_WIDGET(toplug)); | ||||
|         gtk_widget_show(GTK_WIDGET(plug)); | ||||
|         ret->plugRight=plug; | ||||
|     } | ||||
|     return ret; | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
| 
 | ||||
| #else | ||||
| 
 | ||||
| 
 | ||||
| inline void ubl_make_plugs(Gtk::Widget *LeftWidget, Gtk::Widget *RightWidget, int left_plug_id, int right_plug_id){ | ||||
|     if (left_plug_id>0&&LeftWidget){ | ||||
|         GtkWidget *plug=gtk_plug_new(left_plug_id); | ||||
|         GtkWidget *toplug=GTK_WIDGET(LeftWidget->gobj()); | ||||
|         {GdkScreen *screen = gtk_widget_get_screen(plug); | ||||
|         gtk_widget_set_app_paintable(plug,TRUE); | ||||
|         GdkVisual *colormap = gdk_screen_get_rgba_visual(screen); | ||||
|         gtk_widget_set_visual(plug, colormap);} | ||||
|         {GdkScreen *screen = gtk_widget_get_screen(toplug); | ||||
|         gtk_widget_set_app_paintable(toplug,TRUE); | ||||
|         GdkVisual *colormap = gdk_screen_get_rgba_visual(screen); | ||||
|         gtk_widget_set_visual(toplug, colormap);} | ||||
|         if (gtk_widget_get_parent(GTK_WIDGET(toplug))){ | ||||
|             g_object_ref(G_OBJECT(toplug)); | ||||
|             GtkWidget *parent=gtk_widget_get_parent(toplug); | ||||
|             gtk_container_remove(GTK_CONTAINER(parent),toplug); | ||||
|             gtk_container_add(GTK_CONTAINER(plug),GTK_WIDGET(toplug)); | ||||
|         } else  | ||||
|             gtk_container_add(GTK_CONTAINER(plug),GTK_WIDGET(toplug)); | ||||
|         gtk_widget_show(GTK_WIDGET(plug)); | ||||
|         gtk_style_context_add_class(gtk_widget_get_style_context(plug),"bkim"); | ||||
|         gtk_style_context_add_class(gtk_widget_get_style_context(toplug),"bkim"); | ||||
|         gtk_style_context_add_class(gtk_widget_get_style_context(plug),"primary-toolbar"); | ||||
|     } | ||||
|     if (right_plug_id>0&&RightWidget){ | ||||
|         GtkWidget *plug=gtk_plug_new(right_plug_id); | ||||
|         GtkWidget *toplug=GTK_WIDGET(RightWidget->gobj()); | ||||
|         {GdkScreen *screen = gtk_widget_get_screen(plug); | ||||
|         gtk_widget_set_app_paintable(plug,TRUE); | ||||
|         GdkVisual *colormap = gdk_screen_get_rgba_visual(screen); | ||||
|         gtk_widget_set_visual(plug, colormap);} | ||||
|         {GdkScreen *screen = gtk_widget_get_screen(toplug); | ||||
|         gtk_widget_set_app_paintable(toplug,TRUE); | ||||
|         GdkVisual *colormap = gdk_screen_get_rgba_visual(screen); | ||||
|         gtk_widget_set_visual(toplug, colormap);} | ||||
|         if (gtk_widget_get_parent(GTK_WIDGET(toplug))){ | ||||
|             g_object_ref(G_OBJECT(toplug)); | ||||
|             GtkWidget *parent=gtk_widget_get_parent(toplug); | ||||
|             gtk_container_remove(GTK_CONTAINER(parent),toplug); | ||||
|             gtk_container_add(GTK_CONTAINER(plug),GTK_WIDGET(toplug)); | ||||
|         } else  | ||||
|             gtk_container_add(GTK_CONTAINER(plug),GTK_WIDGET(toplug)); | ||||
|         gtk_widget_show(GTK_WIDGET(plug)); | ||||
|         gtk_style_context_add_class(gtk_widget_get_style_context(plug),"bkim"); | ||||
|         gtk_style_context_add_class(gtk_widget_get_style_context(toplug),"bkim"); | ||||
|         gtk_style_context_add_class(gtk_widget_get_style_context(plug),"primary-toolbar"); | ||||
|     } | ||||
| } | ||||
| #endif | ||||
| @ -0,0 +1,20 @@ | ||||
| #ifndef __cplusplus | ||||
| #include <gtk/gtk.h> | ||||
| #include <gtk/gtkx.h> | ||||
| 
 | ||||
| typedef struct { | ||||
|     GtkWidget *plugLeft; | ||||
|     GtkWidget *plugRight; | ||||
| 
 | ||||
| 
 | ||||
| } returnstruct; | ||||
| static returnstruct *ubl_make_plugs(GtkWidget *LeftWidget, GtkWidget *RightWidget, int left_plug_id, int right_plug_id); | ||||
| #else | ||||
| #include <gtkmm.h> | ||||
| #include <gtkmm/stock.h> | ||||
| #include <gtkmm/window.h> | ||||
| #include <gtkmm/plug.h> | ||||
| 
 | ||||
| 
 | ||||
| static void ubl_make_plugs(Gtk::Widget *LeftWidget, Gtk::Widget *RightWidget, int left_plug_id, int right_plug_id); | ||||
| #endif | ||||
| @ -0,0 +1,41 @@ | ||||
| #include <stdio.h> | ||||
| #include <iostream> | ||||
| #include <sstream> | ||||
| #include <fstream> | ||||
| #include <string> | ||||
| #include <array> | ||||
| #include <vector> | ||||
| #include <linux/limits.h> | ||||
| #include <sys/types.h> | ||||
| #include <pwd.h> | ||||
| #include <unistd.h> | ||||
| #include <sys/types.h> | ||||
| #include <iostream> | ||||
| #include <map> | ||||
| #include <string> | ||||
| #include <array> | ||||
| #include <vector> | ||||
| #include <fstream> | ||||
| #include <filesystem> | ||||
| #include <stdio.h> | ||||
| #include <map> | ||||
| #include <pwd.h> | ||||
| 
 | ||||
| using namespace std; | ||||
| 
 | ||||
| 
 | ||||
| struct Passwd { | ||||
|     string user; | ||||
|     int uid; | ||||
| }; | ||||
| 
 | ||||
| std::array<std::vector<std::string>, 5> read_csv(const std::string& filename); | ||||
| std::string call(std::string cmd); | ||||
| vector<int> find_all(string &str_ntp, string substr); | ||||
| void str_remove(std::string& source, std::string to_remove); | ||||
| void str_replace_all(string &str_base, string str_find, string str_replace); | ||||
| std::vector<std::string> split(std::string text, char delim); | ||||
| unsigned short read_uid_min_max(string filename, string search); | ||||
| vector <string> pars_users(); | ||||
| string read_passwd(string username); | ||||
| int synopsis_show(string str_link); | ||||
| After Width: | Height: | Size: 33 KiB | 
| @ -0,0 +1,149 @@ | ||||
| .textHead{ | ||||
|   text-shadow: 2px 2px @theme_bg_color; | ||||
|   color: @theme_text_color; | ||||
| } | ||||
| .boxInfoMessError{ | ||||
|   background-color: #ea9999; | ||||
| } | ||||
| .boxInfoMessOK{ | ||||
|   background-color: #f3f0ac; | ||||
| } | ||||
| .bannerbackground { | ||||
|   background-color: #404040; | ||||
| } | ||||
| .textHead{ | ||||
|   text-shadow: 1px 1px #ffffff; | ||||
| } | ||||
| .view_app { | ||||
|   background-color: @theme_bg_color; | ||||
| } | ||||
| .view_app.view.cell:selected { | ||||
|   background-color:@theme_selected_bg_color; | ||||
| 	color:@theme_selected_text_color; | ||||
| 	transition: 10ms ease-out; | ||||
|   border-radius: 3px; | ||||
| } | ||||
| #GnomeIcon{ | ||||
|   border-style:solid; | ||||
|   border-bottom-width: 1px; | ||||
|   border-image: linear-gradient(90deg, alpha(@theme_text_color,0.4) 55%, alpha(@theme_bg_color, 0) 100%); | ||||
|   border-image-slice: 1; | ||||
| } | ||||
| 
 | ||||
| #SepIcon{ | ||||
|   background-color: alpha(@theme_text_color, 0.6); | ||||
| } | ||||
| 
 | ||||
| #iconlabel { | ||||
|   font-size:14px; | ||||
|   font-weight: bold; | ||||
|    | ||||
| } | ||||
| .roundborder * { | ||||
|   border-width:0px; | ||||
|   border-radius:5px; | ||||
| } | ||||
| .noborder { | ||||
|   border: none; | ||||
| } | ||||
| .menu:hover {	 | ||||
|     border-color:alpha(@theme_text_color, 0.01); | ||||
| } | ||||
| .menu {	 | ||||
|     border-color:alpha(@theme_text_color, 0.01); | ||||
| } | ||||
| .menu:hover >* { | ||||
|   border-color:alpha(@theme_text_color, 0.01); | ||||
| } | ||||
| .menuitembottom{ | ||||
|   margin-top:0px; | ||||
|   margin-bottom:3px; | ||||
| } | ||||
| .menuitemmiddle{ | ||||
|   margin-top:0px; | ||||
|   margin-bottom:0px; | ||||
| } | ||||
| 
 | ||||
| .menuitemtop{ | ||||
|   margin-bottom:0px; | ||||
| } | ||||
| .menuitemtop *{ | ||||
|   margin:2px 2px 0 2px; | ||||
|   padding: 5px 10px 3px 5px; | ||||
| } | ||||
| .menuitemmiddle *{ | ||||
|   margin:0 2px 0 2px; | ||||
|   padding: 3px 10px 3px 5px; | ||||
| } | ||||
| .menuitembottom *{ | ||||
|   margin:0 2px 2px 2px; | ||||
|   padding: 3px 10px 5px 5px; | ||||
| } | ||||
| .menuitemtop:hover { | ||||
|   background:@theme_bg_color; | ||||
|   border-color:inherit; | ||||
|   border-left-width:inherit; | ||||
|   border-right-width:inherit; | ||||
| } | ||||
| .menuitemmiddle:hover { | ||||
|   background:@theme_bg_color; | ||||
|   border-color:inherit; | ||||
|   border-left-width:inherit; | ||||
|   border-right-width:inherit; | ||||
| } | ||||
| .menuitembottom:hover { | ||||
|   background:@theme_bg_color; | ||||
|   border-color:inherit; | ||||
|   border-left-width:inherit; | ||||
|   border-right-width:inherit; | ||||
|    | ||||
| } | ||||
| .menuitemtop:hover* { | ||||
|   margin:2px 2px 0 2px; | ||||
|   padding: 5px 10px 3px 5px; | ||||
|   background:@theme_selected_bg_color; | ||||
|   border-radius:2px; | ||||
| } | ||||
| .menuitemmiddle:hover* { | ||||
|   margin:0 2px 0 2px; | ||||
|   padding: 3px 10px 3px 5px; | ||||
|   background:@theme_selected_bg_color; | ||||
|   border-radius:2px; | ||||
| } | ||||
| .menuitembottom:hover* { | ||||
|   margin:0 2px 2px 2px; | ||||
|   padding: 3px 10px 5px 5px; | ||||
|   background:@theme_selected_bg_color; | ||||
|   border-radius:2px; | ||||
| } | ||||
| 
 | ||||
| .workingbg, #workingbg { | ||||
|   background-color:@theme_base_color; | ||||
| } | ||||
| .workingbg.view.cell:selected { | ||||
|   background-color:@theme_selected_bg_color; | ||||
| } | ||||
| .workingbg.view.cell:hover { | ||||
|   background-color:darker(@theme_selected_bg_color); | ||||
|   color:@theme_selected_text_color; | ||||
|   border-radius:3px; | ||||
| } | ||||
| .bkim { | ||||
|   transition: 200ms ease-out; | ||||
|       background-image: none; | ||||
| } | ||||
| .noborder{ | ||||
| border:none; | ||||
| } | ||||
| 
 | ||||
| .bkim{ | ||||
| opacity:0.99; | ||||
| border:none; | ||||
| } | ||||
| 
 | ||||
| .bkim_no_plug{ | ||||
| background-color: transparent; | ||||
| opacity:0.99; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| @ -0,0 +1,15 @@ | ||||
| [Desktop Entry] | ||||
| Encoding=UTF-8 | ||||
| Name=ubl-settings-quotas | ||||
| Name[ru]=Настройки квот | ||||
| GenericName=ubl-settings-quotas | ||||
| GenericName[ru]=Настройки квот | ||||
| Comment=ubl-settings-quotas | ||||
| Comment[ru]=Приложение для управления настройками квот | ||||
| Type=Application | ||||
| Exec=ubl-settings-quotas | ||||
| Icon=com.ublinux.ubl-settings-quotas | ||||
| Terminal=false | ||||
| X-XfcePluggable=true | ||||
| X-UBLPluggable=true | ||||
| Categories=XFCE;GTK;Settings;DesktopSettings;X-XFCE-SettingsDialog;X-XFCE-SystemSettings; | ||||
											
												
													File diff suppressed because it is too large
													Load Diff
												
											
										
									
								
											
												
													File diff suppressed because it is too large
													Load Diff
												
											
										
									
								
					Loading…
					
					
				
		Reference in new issue
	
	