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
|
# 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