Merge pull request 'WIP sections settings' (#75) from YanTheKaller/ubl-settings-manager:master into master

Reviewed-on: #75
pull/76/head
Dmitry Razumov 5 months ago
commit 6516edf879

@ -12,7 +12,6 @@ DEPENDS = /bin/cmake
PREFIX ?= /usr/local
PKGNAME = $(MAKEFILE_DIR)
FILE_VER = source/${PKGNAME}.h
PKGIDENT = $(subst /,-,$(subst /usr,,${PREFIX}))
default_target: all
@ -22,9 +21,9 @@ all: init build
init:
@echo "Initialize ..."; \
if [ -d ".git" ]; then \
if [[ -d ".git" ]]; then \
LATEST_TAG=$$(git describe --abbrev=0 --tags | sed 's/^v//'); \
if [ -z "$${LATEST_TAG}" ]; \
if [[ -z "$${LATEST_TAG}" ]]; \
then \
LATEST_TAG=$$"0.0"; \
echo "$${LATEST_TAG} is empty"; \
@ -38,7 +37,7 @@ init:
depend:
@echo "Check depends ..."
@for FILE_DEPEND in $(DEPENDS); do \
if [ ! -f $${FILE_DEPEND} ]; then \
if [[ ! -f "$${FILE_DEPEND}" ]]; then \
echo "ERROR: Depend '$${FILE_DEPEND}' not found !"; \
exit 1; \
fi; \
@ -48,21 +47,21 @@ depend:
debug:
@echo "Debug ..."
if [ ! -d ${CMAKE_BUILD_DIR} ]; then \
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 \
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 \
if [[ -f "${CMAKE_BUILD_DIR}/${PKGNAME}" ]]; then \
echo "Check: OK"; \
else \
echo "Check: ${CMAKE_BUILD_DIR}/${PKGNAME} not found !"; \
@ -77,10 +76,9 @@ build: depend prepare
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}/usr/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \
@for LANG in $$(find ./locale -iname "*.po" -print | sed -En "s/.+_([[:alpha:]]+)\.po/\1/p" | sort -u); do \
# PATH_FILE_MO="${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES/${PKGNAME}.mo"; \
PATH_FILE_MO="${DESTDIR}/usr/share/locale/$${LANG}/LC_MESSAGES/${PKGNAME}.mo"; \
$(RM) "$${PATH_FILE_MO}"; \
done
@for SIZE in 16x16 32x32 48x48 scalable; do \
@ -92,51 +90,64 @@ uninstall:
$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}/status/$${FILE_SVG%.*}".{svg,png,jpg}; \
done; \
done
@$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/com.ublinux.${PKGNAME}.svg"
@$(RM) "${DESTDIR}${PREFIX}/share/${PKGNAME}"
@$(RM) "${DESTDIR}/etc/xdg/${PKGNAME}/${PKGNAME}.conf"
@$(RM) "${DESTDIR}${PREFIX}/share/applications/${PKGNAME}.desktop"
@for FILE_ICON in $(wildcard icons/*/*.svg); do \
SUB_NAME=$${FILE_ICON#*/}; SUB_NAME=$${SUB_NAME%/*}; \
$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/$${SUB_NAME}/$${FILE_ICON##*/}"; \
done
@$(RM) "${DESTDIR}${PREFIX}/bin/${PKGNAME}"
@$(RM) "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}${PKGIDENT}.policy"
@if [ -z ${DESTDIR} ]; then \
[ -d "${DESTDIR}${PREFIX}/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}${PREFIX}/share/icons/hicolor/" &>/dev/null || true; \
@$(RM) "${DESTDIR}${PREFIX}/share/applications/${PKGNAME}.desktop"
@if [[ "${PREFIX}" == @("/usr"|"/usr/") ]]; then \
$(RM) "${DESTDIR}${PREFIX}/share/polkit-1/actions/com.ublinux.${PKGNAME}.policy"; \
else \
# $(RM) "${DESTDIR}${PREFIX}/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"; \
$(RM) "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"; \
fi
@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; \
[[ -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}/usr/share/locale/$${LANG}/LC_MESSAGES"; \
FILE_MO=$${FILE_PO##*/}; FILE_MO="$${FILE_MO%_*.po}.mo"; \
PATH_FILE_MO="${DESTDIR}/usr/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \
echo "$${FILE_PO}"; \
msgfmt "$${FILE_PO}" -v -f -o "$${PATH_FILE_MO}"; \
@for LANG in $$(find ./locale -iname "*.po" -print | sed -En "s/.+_([[:alpha:]]+)\.po/\1/p" | sort -u); do \
install -dm755 "${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES"; \
# PATH_FILE_MO="${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES/${PKGNAME}.mo"; \
PATH_FILE_MO="${DESTDIR}/usr/share/locale/$${LANG}/LC_MESSAGES/${PKGNAME}.mo"; \
PKGNAME_PO="./locale/${PKGNAME}_$${LANG}.po"; [[ -f "$${PKGNAME_PO}" ]] || PKGNAME_PO= ; \
msgfmt --verbose --use-fuzzy --output-file "$${PATH_FILE_MO}" - < <(msgcat --use-first --no-wrap $${PKGNAME_PO} ./locale/*_$${LANG}.po); \
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"; \
install -dm755 "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps"; \
rsvg-convert -w $${SIZE} -h $${SIZE} -f svg --keep-image-data "icons/apps/com.ublinux.${PKGNAME}.svg" -o "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/com.ublinux.${PKGNAME}.svg"; \
done
@for FILE_ICON in $(wildcard icons/*/*.svg); do \
SUB_NAME=$${FILE_ICON#*/}; SUB_NAME=$${SUB_NAME%/*}; \
install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/$${SUB_NAME}" $${FILE_ICON}; \
done
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/" "com.ublinux.${PKGNAME}.svg"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/images/" "ublinux-logo.svg"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/applications/" "${PKGNAME}.desktop"
@install -Dm644 -t "${DESTDIR}/etc/xdg/${PKGNAME}/" "${PKGNAME}.conf"
@install -Dm755 -t "${DESTDIR}${PREFIX}/bin/" "${CMAKE_BUILD_DIR}/${PKGNAME}"
@install -Dm644 "com.ublinux.${PKGNAME}.policy" "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}${PKGIDENT}.policy"
@sed -e '\|annotate key=|s|/usr/bin|${PREFIX}/bin|' -e '/action id=/s/\.run/${PKGIDENT}\.run/' -i ${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}${PKGIDENT}.policy
@if [ -z ${DESTDIR} ]; then \
[ -d "${DESTDIR}${PREFIX}/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}${PREFIX}/share/icons/hicolor/" &>/dev/null || true; \
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/applications/" "${PKGNAME}.desktop"
@if [[ "${PREFIX}" == @("/usr"|"/usr/") ]]; then \
install -Dm644 -t "${DESTDIR}${PREFIX}/share/polkit-1/actions/" "com.ublinux.${PKGNAME}.policy"; \
else \
# install -Dm644 "com.ublinux.${PKGNAME}.policy" "${DESTDIR}${PREFIX}/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"; \
install -Dm644 "com.ublinux.${PKGNAME}.policy" "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"; \
# sed -e "s+/usr/bin+${PREFIX}/bin+" -e "s+\.run+$${PREFIX//\//-}\.run+g" -i "${DESTDIR}${PREFIX}/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"; \
sed -e "s+/usr/bin+${PREFIX}/bin+" -e "s+\.run+$${PREFIX//\//-}\.run+g" -i "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"; \
fi
@if [[ -z "${DESTDIR}" ]]; then \
ldconfig -n ${DESTDIR}${PREFIX}/lib; \
[[ -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; \
[[ -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 \
@if [[ -d "${CMAKE_BUILD_DIR}" ]]; then \
echo "Clean: error, compile directory exist ${CMAKE_BUILD_DIR}"; \
else \
echo "Clean: OK"; \
@ -148,7 +159,7 @@ help:
echo "... init"; \
echo "... debug"; \
echo "... prepare"; \
echo "... build"; \
echo "... compile"; \
echo "... install"; \
echo "... uninstall"; \
echo "... clean"

@ -6,7 +6,9 @@
<file>ubl-settings-manager-theme-gnome.glade</file>
<file>ubl-settings-manager-theme-gnome-section.glade</file>
<file>ubl-settings-manager-theme-main.glade</file>
<file>ubl-settings-manager-theme-main-section.glade</file>
<file>ubl-settings-manager-settings-sections.glade</file>
<file>ubl-settings-manager-section-element.glade</file>
</gresource>
<gresource prefix="/com/ublinux/css">
<file>ubl-settings-manager.css</file>

Before

Width:  |  Height:  |  Size: 210 KiB

After

Width:  |  Height:  |  Size: 210 KiB

@ -0,0 +1,145 @@
# Language translations for ubl-settings-manager package.
# Copyright (C) 2022, UBTech LLC
# This file is distributed under the same license as the ubl-settings-manager package.
# UBLinux Team <info@ublinux.com>, 2022
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: ubl-settings-manager 1.0\n"
"Report-Msgid-Bugs-To: info@ublinux.com\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-04-21 12:33+0000\n"
"PO-Revision-Date: 2023-01-01 00:00+0600\n"
"Last-Translator: UBLinux Team <info@ublinux.com>\n"
"Language-Team: Russian - UBLinux Team <info@ublinux.com>\n"
"Language: Russian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: source/ubl-strings.h:3
msgid "UBLinux Settings Manager"
msgstr ""
#: source/ubl-strings.h:4
msgid "About UBLinux Settings Manager"
msgstr ""
#: source/ubl-strings.h:6
msgid ""
"https://wiki.ublinux.ru/software/programs_and_utilities/all/ubl-settings-"
"manager"
msgstr ""
#: source/ubl-strings.h:8
msgid "Settings manager for UBLinux"
msgstr ""
#: source/ubl-strings.h:9
msgid "Back to settings"
msgstr ""
#: source/ubl-strings.h:10
msgid "Config loading failed!\n"
msgstr ""
#: source/ubl-strings.h:11
msgid "Double click selection"
msgstr ""
#: source/ubl-strings.h:12
msgid "Sections management"
msgstr ""
#: source/ubl-strings.h:13
msgid "Understood"
msgstr ""
#: source/ubl-strings.h:14
msgid "Settings"
msgstr ""
#: source/ubl-strings.h:15
msgid "Apply"
msgstr ""
#: source/ubl-strings.h:16
msgid "Close"
msgstr ""
#: source/ubl-strings.h:17
msgid "Cancel"
msgstr ""
#: source/ubl-strings.h:18
msgid "About..."
msgstr ""
#: source/ubl-strings.h:19
msgid "Documentation"
msgstr ""
#: source/ubl-strings.h:20
msgid "Window theme"
msgstr ""
#: source/ubl-strings.h:21
msgid "Icon size"
msgstr ""
#: source/ubl-strings.h:22
msgid "All settings"
msgstr ""
#: source/ubl-strings.h:23
msgid "Failed to load theme"
msgstr ""
#: source/ubl-strings.h:24
msgid "Main theme"
msgstr ""
#: source/ubl-strings.h:25
msgid "GNOME theme"
msgstr ""
#: source/ubl-strings.h:26
msgid "Default"
msgstr ""
#: source/ubl-strings.h:27
msgid "Section name"
msgstr ""
#: source/ubl-strings.h:28
msgid "Identifier"
msgstr ""
#: source/ubl-strings.h:29
msgid "Add section"
msgstr ""
#: source/ubl-strings.h:30
msgid "Clear fields"
msgstr ""
#: source/ubl-strings.h:31
msgid "Remove section"
msgstr ""
#: source/ubl-strings.h:32
msgid "Personal"
msgstr ""
#: source/ubl-strings.h:33
msgid "Hardware"
msgstr ""
#: source/ubl-strings.h:34
msgid "System"
msgstr ""
#: source/ubl-strings.h:35
msgid "Misc"
msgstr ""

@ -0,0 +1,146 @@
# Russian translations for ubl-settings-manager package.
# Copyright (C) 2022, UBTech LLC
# This file is distributed under the same license as the ubl-settings-manager package.
# UBLinux Team <info@ublinux.com>, 2022
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: ubl-settings-manager 1.0\n"
"Report-Msgid-Bugs-To: info@ublinux.com\n"
"POT-Creation-Date: 2023-04-21 12:33+0000\n"
"PO-Revision-Date: 2023-01-01 00:00+0600\n"
"Last-Translator: UBLinux Team <info@ublinux.com>\n"
"Language-Team: Russian - UBLinux Team <info@ublinux.com>\n"
"Language: Russian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: source/ubl-strings.h:3
msgid "UBLinux Settings Manager"
msgstr "Диспетчер настроек UBLinux"
#: source/ubl-strings.h:4
msgid "About UBLinux Settings Manager"
msgstr "О приложении Диспетчер настроек UBLinux"
#: source/ubl-strings.h:6
msgid ""
"https://wiki.ublinux.ru/software/programs_and_utilities/all/ubl-settings-"
"manager"
msgstr ""
"https://wiki.ublinux.ru/software/programs_and_utilities/all/ubl-settings-"
"manager"
#: source/ubl-strings.h:8
msgid "Settings manager for UBLinux"
msgstr "Диспетчер настроек UBLinux"
#: source/ubl-strings.h:9
msgid "Back to settings"
msgstr "Назад к настройкам"
#: source/ubl-strings.h:10
msgid "Config loading failed!\n"
msgstr "Ошибка загрузки конфигурации!\n"
#: source/ubl-strings.h:11
msgid "Double click selection"
msgstr "Открывать приложения двойным нажатием"
#: source/ubl-strings.h:12
msgid "Sections management"
msgstr "Настройка разделов"
#: source/ubl-strings.h:13
msgid "Understood"
msgstr "Понятно"
#: source/ubl-strings.h:14
msgid "Settings"
msgstr "Настройки"
#: source/ubl-strings.h:15
msgid "Apply"
msgstr "Применить"
#: source/ubl-strings.h:16
msgid "Close"
msgstr "Закрыть"
#: source/ubl-strings.h:17
msgid "Cancel"
msgstr "Отменить"
#: source/ubl-strings.h:18
msgid "About..."
msgstr "О программе..."
#: source/ubl-strings.h:19
msgid "Documentation"
msgstr "Справка"
#: source/ubl-strings.h:20
msgid "Window theme"
msgstr "Выбор темы"
#: source/ubl-strings.h:21
msgid "Icon size"
msgstr "Размер иконок"
#: source/ubl-strings.h:22
msgid "All settings"
msgstr "Все настройки"
#: source/ubl-strings.h:23
msgid "Failed to load theme"
msgstr "Ошибка загрузки темы"
#: source/ubl-strings.h:24
msgid "Main theme"
msgstr "Основная тема"
#: source/ubl-strings.h:25
msgid "GNOME theme"
msgstr "GNOME тема"
#: source/ubl-strings.h:26
msgid "Default"
msgstr "По умолчанию"
#: source/ubl-strings.h:27
msgid "Section name"
msgstr "Название раздела"
#: source/ubl-strings.h:28
msgid "Identifier"
msgstr "Идентификатор"
#: source/ubl-strings.h:29
msgid "Add section"
msgstr "Добавить раздел"
#: source/ubl-strings.h:30
msgid "Clear fields"
msgstr "Очистить поля"
#: source/ubl-strings.h:31
msgid "Remove section"
msgstr "Удалить раздел"
#: source/ubl-strings.h:32
msgid "Personal"
msgstr "Личные"
#: source/ubl-strings.h:33
msgid "Hardware"
msgstr "Оборудование"
#: source/ubl-strings.h:34
msgid "System"
msgstr "Система"
#: source/ubl-strings.h:35
msgid "Misc"
msgstr "Прочее"

@ -15,7 +15,9 @@ add_definitions(${VTE291_CFLAGS_OTHER})
find_library(WEBKIT_LIBRARIES_FOUND webkit2gtk-4.0 webkit2gtk-web-extension-4.0)
option(WEBKIT_FOUND "No" OFF)
if(WEBKIT_LIBRARIES_FOUND)
option(WEBKIT_FOUND "Yes" ON)
PKG_CHECK_MODULES(WEBKIT REQUIRED webkit2gtk-4.0 webkit2gtk-web-extension-4.0)
include_directories(${WEBKIT_INCLUDE_DIRS})
link_directories(${WEBKIT_LIBRARY_DIRS})
@ -35,6 +37,8 @@ set(DEPENDFILES
../ubl-settings-manager-theme-gnome-section.glade
../ubl-settings-manager-theme-main.glade
../ubl-settings-manager-settings-sections.glade
../ubl-settings-manager-theme-main-section.glade
../ubl-settings-manager-section-element.glade
../gresource.xml
../manager-banner.png
../ubl-settings-manager.css
@ -47,33 +51,39 @@ add_custom_command(
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMAND ${GLIB_COMPILE_RESOURCES}
ARGS
--generate-source
--target=${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}
${GRESOURCE_XML}
--generate-source
--target=${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}
${GRESOURCE_XML}
VERBATIM
MAIN_DEPENDENCY ${GRESOURCE_XML}
DEPENDS
${GLADE}
${GLADE}
)
add_custom_target(
dummy-resource
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}
dummy-resource
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}
)
#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 -lm")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always \
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always \
-O2 -pipe -fno-plt -fexceptions \
-Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security \
-Wformat -Werror=format-security \
-fstack-clash-protection -fcf-protection")
string(FIND "${CMAKE_CXX_FLAGS}" "-D_FORTIFY_SOURCE" FORTIFY_FOUND)
if(FORTIFY_FOUND EQUAL -1)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wp,-D_FORTIFY_SOURCE=2")
endif()
set(SOURCE_FILES
ubl-settings-manager.c
ubl-settings-manager-settings.c
ubl-settings-manager-theme.c
ubl-settings-manager-theme-gnome.c
ubl-settings-manager-theme-main.c
ubl-settings-manager-app-sections.c
ubl-settings-manager-settings-sections.c
ubl-settings-manager-misc.c
ubl-settings-manager.h
ubl-strings.h
)

@ -0,0 +1,69 @@
#include "ubl-settings-manager.h"
void yon_open_browser(GtkWidget *, char *link){
GtkWidget *window = yon_ubl_browser_window_open(link,template_app_information.app_title);
if (window)
gtk_window_set_icon_name(GTK_WINDOW(window),yon_char_append("com.ublinux.",template_app_information.app_tech_name));
}
void on_open_documentation_confirmation(GtkWidget *self, char *link){
if (main_config.always_open_documentation==0){
GtkBuilder *builder = gtk_builder_new_from_resource(ui_glade_path_documentation);
template_documentation_confirmation_window *window = malloc(sizeof(template_documentation_confirmation_window));
window->Window = yon_gtk_builder_get_widget(builder,"helpConfirmationWindow");
window->AcceptButton = yon_gtk_builder_get_widget(builder,"ReadHelpButton");
window->CloseButton = yon_gtk_builder_get_widget(builder,"CancelHelpButton");
window->HeaderLabel = yon_gtk_builder_get_widget(builder,"webHeaderNameLabel");
window->AlwaysOpenCheck = yon_gtk_builder_get_widget(builder,"AlwaysOpenDocumentationCheckbox");
gtk_label_set_text(GTK_LABEL(window->HeaderLabel),TITLE_LABEL);
gtk_window_set_title(GTK_WINDOW(window->Window),TITLE_LABEL);
gtk_window_set_icon_name(GTK_WINDOW(window->Window),yon_char_append("com.ublinux.",template_app_information.app_tech_name));
gtk_widget_show_all(window->Window);
g_signal_connect(G_OBJECT(window->CloseButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(yon_open_browser),yon_char_new(link));
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
} else {
yon_open_browser(self,link);
}
}
/**on_link(GtkWidget *self, char* uri, gpointer user_data)
* [EN]
* Signal for hadnling AboutDialog links.
* Connect to "activate-link" signal.
* [self] is AboutDialog window;
* [uri] is activated link;
* [user_data] is pointer for user data, hasn't used in standard handler;
* [RU]
* Функция для обработки сигнала нажатия на ссылку окна AboutDialog.
* Присоединять к сигналу "activate-link".
* [self] - окно AboutDialog;
* [uri] - ссылка, по которой совершается переход;
* [user_data] - указатель на любые другие данные, не используется в стандартном обработчике;
*/
void on_link(GtkWidget *self, char* uri, gpointer){
gtk_widget_destroy(self);
on_open_documentation_confirmation(self,uri);
}
void on_about(GtkWidget *, char *version_application){
GtkBuilder *builder=gtk_builder_new_from_resource(ui_glade_path_about);
GtkWidget *window=yon_gtk_builder_get_widget(builder,"AboutWindow");
GtkWidget *title=yon_gtk_builder_get_widget(builder,"headerAboutTopic");
GtkWidget *hideButtonBox=yon_gtk_builder_get_widget(builder,"buttonBoxHide");
gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(window),version_application);
gtk_about_dialog_set_logo_icon_name(GTK_ABOUT_DIALOG(window),yon_char_append("com.ublinux.",LocaleName));
gtk_window_set_icon_name(GTK_WINDOW(window),yon_char_append("com.ublinux.",LocaleName));
char *title_str = about_label(TITLE_LABEL);
gtk_about_dialog_set_comments(GTK_ABOUT_DIALOG(window),title_str);
gtk_about_dialog_set_program_name(GTK_ABOUT_DIALOG(window),LocaleName);
gtk_label_set_text(GTK_LABEL(title),title_str);
g_signal_connect(G_OBJECT(window),"activate-link",G_CALLBACK(on_link),NULL);
gtk_widget_set_visible(hideButtonBox,0);
gtk_widget_destroy(hideButtonBox);
gtk_window_set_title(GTK_WINDOW(window),title_str);
gtk_widget_show(window);
free(title_str);
}

@ -0,0 +1,177 @@
#include "ubl-settings-manager.h"
typedef struct {
GtkWidget *Window;
GtkWidget *StatusBox;
GtkWidget *DefaultSwitch;
GtkWidget *SectionsBox;
GtkWidget *NameEntry;
GtkWidget *CategoriesEntry;
GtkWidget *ClearButton;
GtkWidget *AddButton;
GtkWidget *CancelButton;
GtkWidget *SaveButton;
// section_struct *sections;
} settings_section_window;
typedef struct {
GtkWidget *SectionBox;
GtkWidget *NameEntry;
GtkWidget *CategoriesEntry;
GtkWidget *RemoveButton;
// GtkWidget *AcceptButton;
} section_struct;
void yon_section_window_add_default(settings_section_window *window);
void on_section_remove(GtkWidget *,section_struct *section);
void on_section_add(GtkWidget *,settings_section_window *window);
void on_section_clear(GtkWidget *,settings_section_window *window);
void on_sections_save(GtkWidget *,settings_section_window *window);
section_struct *yon_section_new();
settings_section_window *yon_section_window_new();
void on_section_remove(GtkWidget *,section_struct *section){
gtk_widget_destroy(section->SectionBox);
}
section_struct *yon_section_new(){
section_struct *section = malloc(sizeof(section_struct));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_section_element);
section->SectionBox = yon_gtk_builder_get_widget(builder,"SectionBox");
section->NameEntry = yon_gtk_builder_get_widget(builder,"NameEntry");
section->CategoriesEntry = yon_gtk_builder_get_widget(builder,"CategoriesEntry");
section->RemoveButton = yon_gtk_builder_get_widget(builder,"RemoveButton");
// section->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton");
g_object_set_data(G_OBJECT(section->SectionBox),"section",section);
g_signal_connect(G_OBJECT(section->RemoveButton),"clicked",G_CALLBACK(on_section_remove),section);
return section;
}
void on_section_add(GtkWidget *,settings_section_window *window){
const char *cat_name = gtk_entry_get_text(GTK_ENTRY(window->NameEntry));
char *cat_categories = yon_char_new(gtk_entry_get_text(GTK_ENTRY(window->CategoriesEntry)));
if (cat_categories[strlen(cat_categories)-1]!=';') {
char *temp = yon_char_append_c(cat_categories,';');
free(cat_categories);
cat_categories = temp;
}
if (yon_char_is_empty(cat_name)){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),_EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(window->NameEntry);
return;
}
section_struct *section = yon_section_new();
gtk_box_pack_start(GTK_BOX(window->SectionsBox),section->SectionBox,0,0,0);
gtk_entry_set_text(GTK_ENTRY(section->NameEntry),cat_name);
gtk_entry_set_text(GTK_ENTRY(section->CategoriesEntry),cat_categories);
gtk_entry_set_text(GTK_ENTRY(window->NameEntry),"");
gtk_entry_set_text(GTK_ENTRY(window->CategoriesEntry),"");
free(cat_categories);
}
void on_section_clear(GtkWidget *,settings_section_window *window){
gtk_entry_set_text(GTK_ENTRY(window->NameEntry),"");
gtk_entry_set_text(GTK_ENTRY(window->CategoriesEntry),"");
}
void on_sections_save(GtkWidget *,settings_section_window *window){
main_window *widgets = g_object_get_data(G_OBJECT(window->Window),"widgets");
gsize size;
config_str parameters = yon_window_config_get_section(sections_section,&size);
for (gsize i=0;i<size;i++){
yon_window_config_erase_instant_parameter(parameters[i],sections_section);
}
if (!gtk_switch_get_active(GTK_SWITCH(window->DefaultSwitch))){
GList *list = gtk_container_get_children(GTK_CONTAINER(window->SectionsBox));
GList *iter;
for (iter=list;iter;iter=iter->next){
section_struct *section = g_object_get_data(G_OBJECT(iter->data),"section");
char *name = (char*)gtk_entry_get_text(GTK_ENTRY(section->NameEntry));
char *categories = (char*)gtk_entry_get_text(GTK_ENTRY(section->CategoriesEntry));
yon_window_config_add_instant_parameter(name,sections_section,categories,YON_TYPE_STRING);
}
}
on_subwindow_close(window->Window);
yon_interface_update(widgets);
}
void yon_section_window_add_default(settings_section_window *window){
section_struct *cur_section = yon_section_new();
gtk_box_pack_start(GTK_BOX(window->SectionsBox),cur_section->SectionBox,0,0,0);
gtk_entry_set_text(GTK_ENTRY(cur_section->NameEntry),_("Personal"));
gtk_entry_set_text(GTK_ENTRY(cur_section->CategoriesEntry),"X-UBL-SettingsManager;X-UBL-PersonalSettings;");
cur_section = yon_section_new();
gtk_box_pack_start(GTK_BOX(window->SectionsBox),cur_section->SectionBox,0,0,0);
gtk_entry_set_text(GTK_ENTRY(cur_section->NameEntry),_("Hardware"));
gtk_entry_set_text(GTK_ENTRY(cur_section->CategoriesEntry),"X-UBL-SettingsManager;X-UBL-HardwareSettings;");
cur_section = yon_section_new();
gtk_box_pack_start(GTK_BOX(window->SectionsBox),cur_section->SectionBox,0,0,0);
gtk_entry_set_text(GTK_ENTRY(cur_section->NameEntry),_("System"));
gtk_entry_set_text(GTK_ENTRY(cur_section->CategoriesEntry),"X-UBL-SettingsManager;X-UBL-SystemSettings;");
cur_section = yon_section_new();
gtk_box_pack_start(GTK_BOX(window->SectionsBox),cur_section->SectionBox,0,0,0);
gtk_entry_set_text(GTK_ENTRY(cur_section->NameEntry),_("Misc"));
gtk_entry_set_text(GTK_ENTRY(cur_section->CategoriesEntry),"");
}
settings_section_window *yon_section_window_new(){
settings_section_window *window = malloc(sizeof(settings_section_window));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_settings_section);
window->Window = yon_gtk_builder_get_widget(builder,"Window");
window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
window->DefaultSwitch = yon_gtk_builder_get_widget(builder,"DefaultSwitch");
window->SectionsBox = yon_gtk_builder_get_widget(builder,"SectionsBox");
window->NameEntry = yon_gtk_builder_get_widget(builder,"NameEntry");
window->CategoriesEntry = yon_gtk_builder_get_widget(builder,"CategoriesEntry");
window->ClearButton = yon_gtk_builder_get_widget(builder,"ClearButton");
window->AddButton = yon_gtk_builder_get_widget(builder,"AddButton");
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
window->SaveButton = yon_gtk_builder_get_widget(builder,"SaveButton");
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_sections_save),window);
g_signal_connect(G_OBJECT(window->AddButton),"clicked",G_CALLBACK(on_section_add),window);
g_signal_connect(G_OBJECT(window->ClearButton),"clicked",G_CALLBACK(on_section_clear),window);
g_signal_connect(G_OBJECT(window->DefaultSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),window->SectionsBox);
g_signal_connect(G_OBJECT(window->DefaultSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),window->NameEntry);
g_signal_connect(G_OBJECT(window->DefaultSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),window->CategoriesEntry);
g_signal_connect(G_OBJECT(window->DefaultSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),window->AddButton);
g_signal_connect(G_OBJECT(window->DefaultSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),window->ClearButton);
gsize parameters_size;
config_str parameters = NULL;
parameters = yon_window_config_get_section(sections_section,&parameters_size);
if (parameters_size){
for (gsize i=0;i<parameters_size;i++){
char *param;
yon_window_config_get_parameter(sections_section,parameters[i],&param,YON_TYPE_STRING);
section_struct *cur_section = yon_section_new();
gtk_box_pack_start(GTK_BOX(window->SectionsBox),cur_section->SectionBox,0,0,0);
gtk_entry_set_text(GTK_ENTRY(cur_section->NameEntry),parameters[i]);
gtk_entry_set_text(GTK_ENTRY(cur_section->CategoriesEntry),param);
}
} else {
gtk_switch_set_active(GTK_SWITCH(window->DefaultSwitch),1);
yon_section_window_add_default(window);
}
return window;
}
void yon_section_window_open(GtkWidget *, settings_window *settings){
main_window *widgets = g_object_get_data(G_OBJECT(settings->Window),"widgets");
settings_section_window *window = yon_section_window_new();
g_object_set_data(G_OBJECT(window->Window),"widgets",widgets);
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(settings->Window),TITLE_LABEL,icon_path,"sections_window");
}

@ -16,21 +16,22 @@ gboolean on_settings_size_changed(GtkRange* , GtkScrollType* , gdouble value, se
void on_settings_accept(GtkWidget *, settings_window *window){
main_window *widgets = g_object_get_data(G_OBJECT(window->Window),"widgets");
yon_window_config_add_instant_parameter(icon_size_parameter,"Settings",&window->icon_size,YON_TYPE_INT);
yon_window_config_add_instant_parameter(icon_size_parameter,settings_section,&window->icon_size,YON_TYPE_INT);
main_config.apps_icon_size = window->icon_size;
char *cur_theme = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->ThemeCombo));
if (cur_theme)
yon_window_config_add_instant_parameter(theme_parameter,"Settings",cur_theme,YON_TYPE_STRING);
yon_window_config_add_instant_parameter(theme_parameter,settings_section,cur_theme,YON_TYPE_STRING);
int double_click = gtk_switch_get_active(GTK_SWITCH(window->DoubleClickSwitch));
yon_window_config_add_instant_parameter(double_click_parameter,"Settings",&double_click,YON_TYPE_INT);
yon_window_config_add_instant_parameter(double_click_parameter,settings_section,&double_click,YON_TYPE_INT);
yon_interface_update(widgets);
on_subwindow_close(window->Window);
}
settings_window *yon_settings_window_new(){
settings_window *window = malloc(sizeof(settings_window));
memset(window,0,sizeof(window));
memset(window,0,sizeof(settings_window));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_settings);
window->Window = yon_gtk_builder_get_widget(builder,"Window");
window->SizeSlider = yon_gtk_builder_get_widget(builder,"SizeSlider");
@ -47,25 +48,25 @@ settings_window *yon_settings_window_new(){
g_signal_connect(G_OBJECT(window->SizeSlider),"change-value",G_CALLBACK(on_settings_size_changed),window);
int size;
config_str themes = (config_str)g_hash_table_get_keys_as_array(main_config.themes,&size);
config_str themes = (config_str)g_hash_table_get_keys_as_array(main_config.themes,(guint*)&size);
qsort(themes,size,sizeof(char*),yon_char_parsed_compare);
for (int i=0;i<size;i++){
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->ThemeCombo),themes[i],themes[i]);
}
char *theme_id = NULL;
if (yon_window_config_get_parameter("Settings",theme_parameter,&theme_id,YON_TYPE_STRING)){
if (yon_window_config_get_parameter(settings_section,theme_parameter,&theme_id,YON_TYPE_STRING)){
gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->ThemeCombo),theme_id);
} else {
gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->ThemeCombo),GNOME_THEME_LABEL);
}
window->icon_size;
if (!yon_window_config_get_parameter("Settings",icon_size_parameter,&window->icon_size,YON_TYPE_INT)){
if (!yon_window_config_get_parameter(settings_section,icon_size_parameter,&window->icon_size,YON_TYPE_INT)){
window->icon_size=32;
}
gtk_range_set_value(GTK_RANGE(window->SizeSlider),window->icon_size);
on_settings_size_changed(NULL,NULL,window->icon_size,window);
int double_click_activate;
if (!yon_window_config_get_parameter("Settings",double_click_parameter,&double_click_activate,YON_TYPE_BOOLEAN)){
if (!yon_window_config_get_parameter(settings_section,double_click_parameter,&double_click_activate,YON_TYPE_BOOLEAN)){
double_click_activate=0;
}
gtk_switch_set_active(GTK_SWITCH(window->DoubleClickSwitch),double_click_activate);
@ -75,6 +76,7 @@ settings_window *yon_settings_window_new(){
void on_settings_open(GtkWidget *, main_window *widgets){
settings_window *window = yon_settings_window_new();
g_signal_connect(G_OBJECT(window->SectionsConfigurationButton),"clicked",G_CALLBACK(yon_section_window_open),window);
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),TITLE_LABEL,icon_path,"settings_window");
gtk_widget_show(window->Window);
g_object_set_data(G_OBJECT(window->Window),"widgets",widgets);

@ -6,6 +6,10 @@ typedef struct {
app_section *section;
} gnome_section;
gnome_section *yon_gnome_section_new();
void yon_gnome_section_setup_apps(gnome_section *cur_section, const char *target);
void yon_gnome_section_search_show(gnome_section *section, const char *string);
void on_gnome_plug_connected(GtkWidget *,gnome_theme_struct *theme){
gtk_widget_show(theme->SocketBox);
gtk_widget_hide(theme->HideBox);
@ -39,8 +43,8 @@ void on_gnome_activate(GtkWidget *,GtkListBoxRow *self, gnome_theme_struct *them
}
void on_gnome_selected(GtkWidget *self_list,GtkListBoxRow *self, gnome_theme_struct *theme);
void on_gnome_selected(GtkWidget *self_list,GtkListBoxRow *self, gnome_theme_struct *theme){
void on_gnome_selected(GtkWidget *self_list,GtkListBoxRow *, gnome_theme_struct *theme);
void on_gnome_selected(GtkWidget *self_list,GtkListBoxRow *, gnome_theme_struct *theme){
GList *list = gtk_container_get_children(GTK_CONTAINER(theme->AppsTree));
GList *iter;
for (iter=list;iter;iter=iter->next){
@ -53,16 +57,16 @@ void on_gnome_selected(GtkWidget *self_list,GtkListBoxRow *self, gnome_theme_str
}
}
void on_gnome_socket_add(){
}
gnome_section *yon_gnome_section_new(){
gnome_section *cur_section = malloc(sizeof(gnome_section));
memset(cur_section,0,sizeof(cur_section));
memset(cur_section,0,sizeof(gnome_section));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_gnome_section);
cur_section->expander = yon_gtk_builder_get_widget(builder,"MainExpander");
cur_section->AppsList = yon_gtk_builder_get_widget(builder,"AppsList");
int doubleclick=0;
yon_window_config_get_parameter(settings_section,double_click_parameter,&doubleclick,YON_TYPE_BOOLEAN);
gtk_list_box_set_activate_on_single_click(GTK_LIST_BOX(cur_section->AppsList),!doubleclick);
return cur_section;
}
@ -85,6 +89,8 @@ void yon_gnome_section_setup_apps(gnome_section *cur_section, const char *target
gtk_box_pack_start(GTK_BOX(Box),Image,0,0,0);
gtk_box_pack_start(GTK_BOX(Box),Label,0,0,0);
gtk_label_set_xalign(GTK_LABEL(Label),0);
gtk_label_set_line_wrap(GTK_LABEL(Label),1);
gtk_label_set_line_wrap_mode(GTK_LABEL(Label),PANGO_WRAP_WORD);
gtk_list_box_insert(GTK_LIST_BOX(cur_section->AppsList),Row,-1);
g_object_set_data(G_OBJECT(Row),"gnome_section",cur_section);
@ -118,7 +124,6 @@ int yon_gnome_update(gnome_theme_struct *theme){
free(cur_section);
}
int size;
dictionary *cur;
for_dictionaries(cur,main_config.sections){
app_section *section_data = yon_dictionary_get_data(cur,app_section*);
@ -127,6 +132,31 @@ int yon_gnome_update(gnome_theme_struct *theme){
return 1;
}
void yon_gnome_section_search_show(gnome_section *section, const char *string){
GList *list = gtk_container_get_children(GTK_CONTAINER(section->AppsList));
GList *iter;
for (iter=list;iter;iter=iter->next){
apps *cur_app = g_object_get_data(G_OBJECT(iter->data),"apps");
if (yon_char_is_empty(string)||yon_char_check_begins_with(cur_app->Name,(char*)string)){
gtk_widget_show(GTK_WIDGET(iter->data));
} else {
gtk_widget_hide(GTK_WIDGET(iter->data));
}
}
g_list_free(list);
}
void on_gnome_search(GtkWidget *, gnome_theme_struct *theme){
const char *search_string = gtk_entry_get_text(GTK_ENTRY(theme->SearchEntry));
GList *list = gtk_container_get_children(GTK_CONTAINER(theme->AppsTree));
GList *iter;
for (iter=list;iter;iter=iter->next){
gnome_section *cur_section = g_object_get_data(G_OBJECT(iter->data),"gnome_section");
yon_gnome_section_search_show(cur_section,search_string);
}
g_list_free(list);
}
gnome_theme_struct *yon_gnome_theme_new(){
gnome_theme_struct *theme = malloc(sizeof(gnome_theme_struct));
@ -135,6 +165,7 @@ gnome_theme_struct *yon_gnome_theme_new(){
theme->AppsTree = yon_gtk_builder_get_widget(builder,"AppsTree");
theme->SocketBox = yon_gtk_builder_get_widget(builder,"SocketBox");
theme->GnomePaned = yon_gtk_builder_get_widget(builder,"GnomePaned");
theme->SearchEntry = yon_gtk_builder_get_widget(builder,"SearchEntry");
theme->GnomeInfoLogoImage = yon_gtk_builder_get_widget(builder,"GnomeInfoLogoImage");
theme->HideBox = yon_gtk_builder_get_widget(builder,"HideBox");
theme->IconCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"IconCell"));
@ -145,7 +176,7 @@ gnome_theme_struct *yon_gnome_theme_new(){
gtk_box_pack_start(GTK_BOX(theme->SocketBox),theme->Socket,1,1,0);
gtk_widget_show(theme->Socket);
g_signal_connect(G_OBJECT(theme->SocketBox),"add",G_CALLBACK(on_gnome_socket_add),theme);
g_signal_connect(G_OBJECT(theme->SearchEntry),"changed",G_CALLBACK(on_gnome_search),theme);
// gtk_cell_renderer_set_fixed_size(theme->IconCell,main_config.apps_icon_size,main_config.apps_icon_size);
return theme;
}

@ -0,0 +1,203 @@
#include "ubl-settings-manager.h"
typedef struct {
GtkWidget *expander;
GtkWidget *MainLabel;
GtkWidget *AppsList;
app_section *section;
} main_section;
void yon_main_section_setup_apps(main_section *cur_section, const char *target);
main_section *yon_main_section_new();
void yon_main_section_get_max_size(main_section *section, int *ret_width, int *ret_height);
void on_main_plug_connected(GtkWidget *,main_theme_struct *theme){
gtk_widget_show(theme->SocketBox);
gtk_widget_hide(theme->HideBox);
}
void on_main_plug_disconnected(GtkWidget *,main_theme_struct *theme){
gtk_widget_show(theme->HideBox);
gtk_widget_hide(theme->SocketBox);
on_plug_disconnected(GTK_SOCKET(theme->Socket),main_config.widgets);
}
void on_main_selected(GtkWidget* self, main_theme_struct *theme);
void on_main_selected(GtkWidget* self, main_theme_struct *theme){
GList *list = gtk_container_get_children(GTK_CONTAINER(theme->AppsTree));
GList *iter;
for (iter=list;iter;iter=iter->next){
main_section *cur_section = g_object_get_data(G_OBJECT(iter->data),"main_section");
if (cur_section->AppsList != self){
g_signal_handlers_block_by_func(G_OBJECT(cur_section->AppsList),G_CALLBACK(on_main_selected),theme);
GList *flowlist = gtk_flow_box_get_selected_children(GTK_FLOW_BOX(cur_section->AppsList));
if (flowlist){
gtk_flow_box_unselect_child(GTK_FLOW_BOX(cur_section->AppsList),GTK_FLOW_BOX_CHILD(flowlist->data));
g_list_free(flowlist);
}
g_signal_handlers_unblock_by_func(G_OBJECT(cur_section->AppsList),G_CALLBACK(on_main_selected),theme);
}
}
}
void on_main_activate(GtkFlowBox* , GtkFlowBoxChild* child, main_theme_struct *theme){
theme->Socket = GTK_WIDGET(yon_sockets_init(GTK_BOX(theme->SocketBox)));
g_signal_connect(G_OBJECT(theme->Socket),"plug_added",G_CALLBACK(on_main_plug_connected),theme);
g_signal_connect(G_OBJECT(theme->Socket),"destroy",G_CALLBACK(on_main_plug_disconnected),theme);
apps *cur_app = g_object_get_data(G_OBJECT(child),"apps");
char *command = cur_app->Exec;//launch_command(cur_app->Desktop_path);
char *command_args = NULL;
if (cur_app->DualPluggable==1){
char *save_socket = yon_get_save_socket();
char *load_socket = yon_get_load_socket();
char *main_socket_id = yon_char_from_long((long)gtk_socket_get_id(GTK_SOCKET(theme->Socket)));
command_args = launch_args_command(main_socket_id,load_socket,save_socket);
} else if (cur_app->Pluggable){
char *main_socket_id = yon_char_from_long((long)gtk_socket_get_id(GTK_SOCKET(theme->Socket)));
command_args = yon_char_unite("--socket-id=",main_socket_id,NULL);
}
yon_launch_app_with_arguments(command,command_args);
}
// void on_main_socket_add(){
// }
void yon_main_section_setup_apps(main_section *cur_section, const char *target){
if (yon_char_is_empty(target)) return;
apps *cur_app = yon_apps_get((char*)target);
GtkIconInfo *info = gtk_icon_theme_lookup_icon_for_scale(gtk_icon_theme_get_default(), !yon_char_is_empty(cur_app->Icon)?cur_app->Icon:icon_path, main_config.apps_icon_size,1,GTK_ICON_LOOKUP_FORCE_SIZE);
GtkWidget *Image = NULL;
if (info){
Image = gtk_image_new_from_pixbuf(gtk_icon_info_load_icon(info,NULL));
} else {
info = gtk_icon_theme_lookup_icon_for_scale(gtk_icon_theme_get_default(), icon_path, main_config.apps_icon_size,1,GTK_ICON_LOOKUP_FORCE_SIZE);
Image = gtk_image_new_from_pixbuf(gtk_icon_info_load_icon(info,NULL));
}
char *name = yon_char_wrap_to_length_str(cur_app->Name,20);
GtkWidget *Row = gtk_flow_box_child_new();
GtkWidget *Box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5);
GtkWidget *Label = gtk_label_new(name);
GtkWidget *Icon = Image;
gtk_box_pack_start(GTK_BOX(Box),Icon,0,0,0);
gtk_box_pack_start(GTK_BOX(Box),Label,0,0,0);
gtk_container_add(GTK_CONTAINER(Row),Box);
gtk_flow_box_insert(GTK_FLOW_BOX(cur_section->AppsList),Row,-1);
gtk_widget_set_size_request(Row,50,50);
gtk_widget_set_halign(Box,GTK_ALIGN_START);
gtk_widget_set_valign(Box,GTK_ALIGN_CENTER);
gtk_label_set_line_wrap_mode(GTK_LABEL(Label),PANGO_WRAP_WORD);
gtk_label_set_line_wrap(GTK_LABEL(Label),1);
gtk_label_set_xalign(GTK_LABEL(Label),0);
g_object_set_data(G_OBJECT(Row),"main_section",cur_section);
g_object_set_data(G_OBJECT(Row),"apps",cur_app);
g_object_set_data(G_OBJECT(Row),"Label",Label);
gtk_widget_show_all(Row);
}
main_section *yon_main_section_new(){
main_section *cur_section = malloc(sizeof(main_section));
memset(cur_section,0,sizeof(main_section));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_main_section);
cur_section->expander = yon_gtk_builder_get_widget(builder,"MainExpander");
cur_section->MainLabel = yon_gtk_builder_get_widget(builder,"MainLabel");
cur_section->AppsList = yon_gtk_builder_get_widget(builder,"AppsFlow");
g_object_set_data(G_OBJECT(cur_section->expander),"main_section",cur_section);
int doubleclick=0;
yon_window_config_get_parameter(settings_section,double_click_parameter,&doubleclick,YON_TYPE_BOOLEAN);
gtk_flow_box_set_activate_on_single_click(GTK_FLOW_BOX(cur_section->AppsList),!doubleclick);
return cur_section;
}
void yon_main_section_setup(main_theme_struct *theme, app_section *section){
main_section *cur_section = yon_main_section_new();
cur_section->section = section;
gtk_label_set_text(GTK_LABEL(cur_section->MainLabel),section->name);
int app_size;
config_str app_list = yon_apps_get_by_categories(section->categories,section->categories_size,&app_size);
for(int i=0;i<app_size;i++){
yon_main_section_setup_apps(cur_section,app_list[i]);
}
gtk_box_pack_start(GTK_BOX(theme->AppsTree),cur_section->expander,0,0,0);
g_object_set_data(G_OBJECT(cur_section->expander),"main_section",cur_section);
g_signal_connect(G_OBJECT(cur_section->AppsList),"child-activated",G_CALLBACK(on_main_activate),theme);
g_signal_connect(G_OBJECT(cur_section->AppsList),"selected-children-changed",G_CALLBACK(on_main_selected),theme);
}
void yon_main_section_get_max_size(main_section *section, int *ret_width, int *ret_height){
GList *list = gtk_container_get_children(GTK_CONTAINER(section->AppsList));
GList *iter;
for (iter = list; iter;iter=iter->next){
gtk_widget_realize(GTK_WIDGET(iter->data));
int width;
int height;
GtkWidget *Label = g_object_get_data(G_OBJECT(iter->data),"Label");
gtk_widget_get_preferred_width(Label,NULL,&width);
gtk_widget_get_preferred_height(Label,NULL,&height);
if ((*ret_width)<width) (*ret_width) = width;
if ((*ret_height)<height) (*ret_height) = height;
}
}
void yon_main_theme_resize(main_theme_struct *theme){
GList *list = gtk_container_get_children(GTK_CONTAINER(theme->AppsTree));
GList *iter;
int max_width=0;
int max_height=0;
for (iter=list;iter;iter=iter->next){
main_section *section = g_object_get_data(G_OBJECT(iter->data),"main_section");
yon_main_section_get_max_size(section,&max_width,&max_height);
}
for (iter=list;iter;iter=iter->next){
main_section *section = g_object_get_data(G_OBJECT(iter->data),"main_section");
GList *child_list = gtk_container_get_children(GTK_CONTAINER(section->AppsList));
if (child_list){
GtkWidget *Label = g_object_get_data(G_OBJECT(child_list->data),"Label");
gtk_widget_set_size_request(Label,max_width,max_height);
}
}
}
int yon_main_update(main_theme_struct *theme){
GList *list = gtk_container_get_children(GTK_CONTAINER(theme->AppsTree));
GList *iter;
for (iter=list;iter;iter=iter->next){
gtk_widget_destroy(GTK_WIDGET(iter->data));
}
dictionary *cur;
for_dictionaries(cur,main_config.sections){
app_section *section_data = yon_dictionary_get_data(cur,app_section*);
yon_main_section_setup(theme,section_data);
}
yon_main_theme_resize(theme);
return 1;
}
main_theme_struct *yon_main_theme_new(){
main_theme_struct *theme = malloc(sizeof(main_theme_struct));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_main_theme);
theme->MainBox = yon_gtk_builder_get_widget(builder,"MainBox");
theme->AppsTree = yon_gtk_builder_get_widget(builder,"AppsTree");
theme->SocketBox = yon_gtk_builder_get_widget(builder,"SocketBox");
theme->HideBox = yon_gtk_builder_get_widget(builder,"HideBox");
theme->theme_name = yon_char_new(MAIN_THEME_LABEL);
theme->Socket = NULL;
theme->list_update_func = (int(*)(struct main_theme_struct*))yon_main_update;
return theme;
}

@ -2,7 +2,7 @@
theme_struct *yon_theme_update(main_window *widgets){
char *theme_id;
if (!yon_window_config_get_parameter("Settings","theme",&theme_id,YON_TYPE_STRING)){
if (!yon_window_config_get_parameter(settings_section,theme_parameter,&theme_id,YON_TYPE_STRING)){
theme_id = yon_char_new(GNOME_THEME_LABEL);
}
@ -30,32 +30,3 @@ void yon_theme_init(){
g_hash_table_insert(main_config.themes,yon_char_new(GNOME_THEME_LABEL),yon_gnome_theme_new);
g_hash_table_insert(main_config.themes,yon_char_new(MAIN_THEME_LABEL),yon_main_theme_new);
}
void yon_main_update(main_theme_struct *theme){
}
void on_main_activate(){
}
void on_main_socket_add(){
}
main_theme_struct *yon_main_theme_new(){
main_theme_struct *theme = malloc(sizeof(main_theme_struct));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_main_theme);
theme->MainBox = yon_gtk_builder_get_widget(builder,"MainBox");
theme->AppsIconView = yon_gtk_builder_get_widget(builder,"AppsIconView");
theme->SocketBox = yon_gtk_builder_get_widget(builder,"SocketBox");
theme->AppsList = GTK_LIST_STORE(gtk_builder_get_object(builder,"AppsList"));
theme->theme_name = yon_char_new(MAIN_THEME_LABEL);
theme->Socket = NULL;
theme->list_update_func = (int(*)(struct main_theme_struct*))yon_main_update;
g_signal_connect(G_OBJECT(theme->AppsIconView),"item-activated",G_CALLBACK(on_main_activate),theme);
g_signal_connect(G_OBJECT(theme->SocketBox),"add",G_CALLBACK(on_main_socket_add),theme);
return theme;
}

@ -337,13 +337,13 @@ void on_reveal_banner(GtkWidget *, main_window *widgets){
gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->BannerRevealer),0);
gtk_menu_button_set_direction(GTK_MENU_BUTTON(widgets->BannerArrow),GTK_ARROW_RIGHT);
int banner = 1;
yon_window_config_add_instant_parameter(hide_banner_parameter,"Settings",&banner,YON_TYPE_BOOLEAN);
yon_window_config_add_instant_parameter(hide_banner_parameter,settings_section,&banner,YON_TYPE_BOOLEAN);
} else {
gtk_revealer_set_transition_type(GTK_REVEALER(widgets->BannerRevealer),GTK_REVEALER_TRANSITION_TYPE_SLIDE_RIGHT);
gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->BannerRevealer),1);
gtk_menu_button_set_direction(GTK_MENU_BUTTON(widgets->BannerArrow),GTK_ARROW_LEFT);
int banner = 0;
yon_window_config_add_instant_parameter(hide_banner_parameter,"Settings",&banner,YON_TYPE_BOOLEAN);
yon_window_config_add_instant_parameter(hide_banner_parameter,settings_section,&banner,YON_TYPE_BOOLEAN);
}
}
@ -432,18 +432,19 @@ void config_init(){
main_config.double_click=0;
main_config.apps_icon_size=24;
main_config.labelDensity=0;
main_config.themes = g_hash_table_new(g_str_hash,g_str_equal);
yon_theme_init();
};
void yon_config_update(){
if (!yon_window_config_get_parameter("Setings",double_click_parameter,&main_config.double_click,YON_TYPE_INT)){
if (!yon_window_config_get_parameter(settings_section,double_click_parameter,&main_config.double_click,YON_TYPE_INT)){
main_config.double_click=0;
}
if (!yon_window_config_get_parameter("Setings",icon_size_parameter,&main_config.apps_icon_size,YON_TYPE_INT)){
if (!yon_window_config_get_parameter(settings_section,icon_size_parameter,&main_config.apps_icon_size,YON_TYPE_INT)){
main_config.apps_icon_size=24;
}
main_config.themes = g_hash_table_new(g_str_hash,g_str_equal);
yon_theme_init();
}
int yon_char_parsed_compare(const void *a, const void *b){
@ -517,9 +518,9 @@ char *yon_get_load_socket(){
return NULL;
}
void confugure_setings_window(main_window *widgets){
// void confugure_setings_window(main_window *widgets){
}
// }
void yon_interface_update(main_window *widgets){
if (main_config.sections) {
@ -528,39 +529,39 @@ void yon_interface_update(main_window *widgets){
}
gsize size;
config_str section_settings = yon_window_config_get_section("Sections",&size);
config_str section_settings = yon_window_config_get_section(sections_section,&size);
if (size){
for (gsize i=0;i<size;i++){
app_section *cur_section = yon_app_section_new();
cur_section->name = yon_char_new(section_settings[i]);
char *categories = NULL;
yon_window_config_get_parameter("Sections",cur_section->name,&categories,YON_TYPE_STRING);
yon_window_config_get_parameter(sections_section,cur_section->name,&categories,YON_TYPE_STRING);
cur_section->categories = yon_char_parse(categories,&cur_section->categories_size,";");
yon_dictionary_add_or_create_if_exists_with_data(main_config.sections,cur_section->name,cur_section);
}
} else {
{
app_section *cur_section = yon_app_section_new();
cur_section->name = yon_char_new("Personal");
cur_section->name = yon_char_new(_("Personal"));
cur_section->categories = yon_char_parse("X-UBL-SettingsManager;X-UBL-PersonalSettings;",&cur_section->categories_size,";");
yon_dictionary_add_or_create_if_exists_with_data(main_config.sections,cur_section->name,cur_section);
}
{
app_section *cur_section = yon_app_section_new();
cur_section->name = yon_char_new("Hardware");
cur_section->name = yon_char_new(_("Hardware"));
cur_section->categories = yon_char_parse("X-UBL-SettingsManager;X-UBL-HardwareSettings;",&cur_section->categories_size,";");
yon_dictionary_add_or_create_if_exists_with_data(main_config.sections,cur_section->name,cur_section);
}
{
app_section *cur_section = yon_app_section_new();
cur_section->name = yon_char_new("System");
cur_section->name = yon_char_new(_("System"));
cur_section->categories = yon_char_parse("X-UBL-SettingsManager;X-UBL-SystemSettings;",&cur_section->categories_size,";");
yon_dictionary_add_or_create_if_exists_with_data(main_config.sections,cur_section->name,cur_section);
}
{
app_section *cur_section = yon_app_section_new();
cur_section->name = yon_char_new("Misc");
cur_section->name = yon_char_new(_("Misc"));
cur_section->categories = yon_char_parsed_new(&cur_section->categories_size,"",NULL);
yon_dictionary_add_or_create_if_exists_with_data(main_config.sections,cur_section->name,cur_section);
}
@ -599,19 +600,22 @@ main_window *yon_main_window_setup(){
g_signal_connect(G_OBJECT(widgets->MainMenuItemSettings),"activate",G_CALLBACK(on_settings_open),widgets);
g_signal_connect(G_OBJECT(widgets->BannerButton),"clicked",G_CALLBACK(on_reveal_banner),widgets);
g_signal_connect(G_OBJECT(widgets->MainMenuItemDocumentation),"activate",G_CALLBACK(on_open_documentation_confirmation),WIKI_LINK);
g_signal_connect(G_OBJECT(widgets->MainMenuItemAbout),"activate",G_CALLBACK(on_about),version_application);
yon_window_config_setup(GTK_WINDOW(widgets->Window));
char *path = yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL);
yon_window_config_load(path);
free(path);
config_init();
yon_config_update();
{
int banner_hidden = 0;
yon_window_config_get_parameter("Settings",hide_banner_parameter, &banner_hidden,YON_TYPE_BOOLEAN);
yon_window_config_get_parameter(settings_section,hide_banner_parameter, &banner_hidden,YON_TYPE_BOOLEAN);
gtk_revealer_set_transition_type(GTK_REVEALER(widgets->BannerRevealer),!banner_hidden?GTK_REVEALER_TRANSITION_TYPE_SLIDE_LEFT:GTK_REVEALER_TRANSITION_TYPE_SLIDE_RIGHT);
gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->BannerRevealer),!banner_hidden);
gtk_menu_button_set_direction(GTK_MENU_BUTTON(widgets->BannerArrow),!banner_hidden?GTK_ARROW_LEFT:GTK_ARROW_RIGHT);
}
gtk_widget_show(widgets->Window);
yon_interface_update(widgets);
return widgets;
@ -641,8 +645,7 @@ int main(int argc, char *argv[]){
}
}
gtk_init(&argc, &argv);
config_init();
main_window *widgets = yon_main_window_setup();
yon_main_window_setup();
GtkCssProvider *css=gtk_css_provider_new();
gtk_css_provider_load_from_resource(css,CssPath);

@ -36,8 +36,11 @@
#define glade_path "/com/ublinux/ui/ubl-settings-manager.glade"
#define glade_path_gnome_theme "/com/ublinux/ui/ubl-settings-manager-theme-gnome.glade"
#define glade_path_gnome_section "/com/ublinux/ui/ubl-settings-manager-theme-gnome-section.glade"
#define glade_path_main_section "/com/ublinux/ui/ubl-settings-manager-theme-main-section.glade"
#define glade_path_main_theme "/com/ublinux/ui/ubl-settings-manager-theme-main.glade"
#define glade_path_settings "/com/ublinux/ui/ubl-settings-manager-settings.glade"
#define glade_path_settings_section "/com/ublinux/ui/ubl-settings-manager-settings-sections.glade"
#define glade_path_section_element "/com/ublinux/ui/ubl-settings-manager-section-element.glade"
#define CssPath "/com/ublinux/css/ubl-settings-manager.css"
#define GlobalConfigPath "/etc/xdg/ubl-settings-manager/ubl-settings-manager.conf"
#define UserConfigPath "/.config/ubl-settings-manager/ubl-settings-manager.conf"
@ -53,6 +56,9 @@
#define launch_command(target) yon_char_unite("xdg-open ",target,NULL)
#define launch_args_command(main_socket,load_socket,save_socket) yon_char_unite("--socket-id=",main_socket," --socket-ext-id=",save_socket," --socket-trd-id=",load_socket,NULL)
#define settings_section "Settings"
#define sections_section "Sections"
#define double_click_parameter "double_click"
#define icon_size_parameter "icon_size"
#define theme_parameter "theme"
@ -107,14 +113,13 @@ typedef struct {
GtkWidget *DeleditBox;
} SectionSettingSegment;
/// @brief Public fields of theme structs
typedef struct theme_struct {
char *theme_name;
GtkWidget *MainBox; //theme main box, which connects to window
GtkWidget *SocketBox; //main socket box, where socket is being parented to
GtkWidget *HideBox; //box to hide when socket has been connected
int (*list_update_func)(struct theme_struct*); //function to update theme's lits of application
// GtkWidget *AppsTree; //theme application list container
// GtkWidget *Socket;
} theme_struct;
typedef struct gnome_theme_struct {
@ -123,6 +128,7 @@ typedef struct gnome_theme_struct {
GtkWidget *SocketBox;
GtkWidget *HideBox;
int (*list_update_func)(struct gnome_theme_struct*);
GtkWidget *SearchEntry;
GtkWidget *AppsTree;
GtkWidget *Socket;
GtkWidget *GnomePaned;
@ -136,7 +142,7 @@ typedef struct main_theme_struct {
GtkWidget *SocketBox;
GtkWidget *HideBox;
int (*list_update_func)(struct main_theme_struct*);
GtkWidget *AppsIconView;
GtkWidget *AppsTree;
GtkWidget *Socket;
GtkListStore *AppsList;
} main_theme_struct;
@ -206,6 +212,11 @@ typedef struct {
int icon_size;
} settings_window;
void yon_open_browser(GtkWidget *self, char *link);
void on_open_documentation_confirmation(GtkWidget *self, char *link);
void on_link(GtkWidget *self, char* uri, gpointer user_data);
void on_about(GtkWidget *self, char *version_application);
void on_settings_accept(GtkWidget *, settings_window *window);
void yon_theme_init();
theme_struct *yon_theme_update(main_window *widgets);
@ -222,5 +233,25 @@ int yon_char_parsed_compare(const void *a, const void *b);
void yon_interface_update(main_window *widgets);
void on_settings_open(GtkWidget *, main_window *widgets);
void yon_section_window_open(GtkWidget *, settings_window *settings);
void on_reveal_banner(GtkWidget *, main_window *widgets);
void config_init();
void yon_config_update();
void on_back_clicked(GtkWidget *, GtkWidget *socket);
void on_plug_connected(GtkSocket *self, main_window *widgets);
main_window *yon_main_window_setup();
gboolean on_settings_size_changed(GtkRange* , GtkScrollType* , gdouble value, settings_window *window);
settings_window *yon_settings_window_new();
void on_gnome_plug_connected(GtkWidget *,gnome_theme_struct *theme);
void on_gnome_plug_disconnected(GtkWidget *,gnome_theme_struct *theme);
void yon_gnome_section_setup(gnome_theme_struct *theme,app_section *section);
int yon_gnome_update(gnome_theme_struct *theme);
void on_gnome_search(GtkWidget *, gnome_theme_struct *theme);
void on_main_plug_connected(GtkWidget *,main_theme_struct *theme);
void on_main_plug_disconnected(GtkWidget *,main_theme_struct *theme);
void on_main_activate(GtkFlowBox* , GtkFlowBoxChild* child, main_theme_struct *theme);
void yon_main_section_setup(main_theme_struct *theme, app_section *section);
void yon_main_theme_resize(main_theme_struct *theme);
int yon_main_update(main_theme_struct *theme);
#endif

@ -6,21 +6,30 @@
#define WIKI_LINK _("https://wiki.ublinux.ru/software/programs_and_utilities/all/ubl-settings-manager")
#define ABOUT_PROJECT_COMMENTS_LABEL _("Settings manager for UBLinux")
#define BACK_TO_SETTINGS_LABEL _("Back to settings")
#define CONFIG_LOAD_ERROR _("Config loading failed!\n")
#define DOUBLE_CLICK_SELECTION_LABEL _("Double click selection")
#define SECTIONS_MANAGEMENT_LABEL _("Sections management")
#define UNDERSTOOD_LABEL _("Understood")
#define SETTINGS_LABEL _("Settings")
#define APPLY_LABEL _("Apply")
#define SAVE_AND_APPLY_LABEL _("Save and apply")
#define CLOSE_LABEL _("Close")
#define CANCEL_LABEL _("Cancel")
#define READ_ONLINE_LABEL _("Read online")
#define REDIRECTION_COMMENT_LABEL _("You will be redirected to documentation site, where user help pages are translated and supported by community.")
#define REDIRECTION_LABEL _("Would you like to read documentation in the Web?")
#define ABOUT__LABEL _("About...")
#define DOCUMENTATION__LABEL _("Documentation")
#define WINDOW_THEME_LABEL _("Window theme")
#define ICON_SIZE_LABEL _("Icon size")
#define BACK_TO_ALL_SETTINGS_LABEL _("All settings")
#define THEME_ERROR_LABEL _("Failed to load theme")
#define MAIN_THEME_LABEL _("Main theme")
#define GNOME_THEME_LABEL _("GNOME theme")
#define DEFAULT_LABEL _("Default")
#define SECTION_NAME_LABEL _("Section name")
#define IDENTIFIER_LABEL _("Identifier")
#define ADD_SECTION_TOOLTIP_LABEL _("Add section")
#define CLEAR_SECTION_TOOLTIP_LABEL _("Clear fields")
#define REMOVE_SECTION_TOOLTIP_LABEL _("Remove section")
#define PERSONAL_SECTION_LABEL _("Personal")
#define HARDWARE_SECTION_LABEL _("Hardware")
#define SYSTEM_SECTION_LABEL _("System")
#define MISC_SECTION_LABEL _("Misc")

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.40.0 -->
<interface>
<requires lib="gtk+" version="3.24"/>
<object class="GtkImage" id="image2">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="pixel-size">16</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.trash-symbolic</property>
</object>
<object class="GtkBox" id="SectionBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkEntry" id="NameEntry">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="width-chars">15</property>
<property name="truncate-multiline">True</property>
<property name="caps-lock-warning">False</property>
<property name="input-purpose">name</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="CategoriesEntry">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="width-chars">0</property>
<property name="caps-lock-warning">False</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="RemoveButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Remove section</property>
<property name="halign">center</property>
<property name="image">image2</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
</interface>

@ -1,247 +1,239 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 -->
<!-- Generated with glade 3.40.0 -->
<interface domain="ubl-settings-manager">
<requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubl-settings-manager.css -->
<object class="GtkWindow" id="SectionSettingsWindow">
<object class="GtkImage" id="image2">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="pixel-size">16</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.funnel-symbolic</property>
</object>
<object class="GtkImage" id="image4">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="pixel-size">16</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.accept-symbolic</property>
</object>
<object class="GtkImage" id="image6">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.cancel-uncolored-symbolic</property>
</object>
<object class="GtkImage" id="image7">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.accept-symbolic</property>
</object>
<object class="GtkWindow" id="Window">
<property name="width-request">450</property>
<property name="height-request">350</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="default-width">800</property>
<property name="default-height">600</property>
<property name="modal">True</property>
<property name="icon-name">com.ublinux.ubl-settings-manager</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkScrolledWindow">
<object class="GtkBox" id="StatusBox">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<property name="shadow-type">in</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkViewport">
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="spacing">5</property>
<child>
<object class="GtkSwitch" id="DefaultSwitch">
<property name="visible">True</property>
<property name="can-focus">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Default</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkBox">
<object class="GtkViewport">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<child>
<object class="GtkBox" id="SectionSettingsPack">
<object class="GtkBox" id="SectionsBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label-xalign">0.019999999552965164</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="top-padding">5</property>
<property name="bottom-padding">5</property>
<property name="left-padding">5</property>
<property name="right-padding">5</property>
<child>
<object class="GtkFrame">
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="label-xalign">0.019999999552965164</property>
<property name="shadow-type">in</property>
<property name="spacing">5</property>
<child>
<object class="GtkAlignment">
<object class="GtkEntry" id="NameEntry">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="top-padding">3</property>
<property name="bottom-padding">3</property>
<property name="left-padding">5</property>
<property name="right-padding">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkButton" id="SectionSettingsClearEntryButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="halign">center</property>
<property name="margin-right">3</property>
<property name="margin-end">3</property>
<property name="image">image2</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="SectionSettingsAddNameEntry">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="truncate-multiline">True</property>
<property name="caps-lock-warning">False</property>
<property name="placeholder-text" translatable="yes">Section name</property>
<property name="input-purpose">name</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="valign">center</property>
<child>
<object class="GtkButton" id="SectionSettingsAddButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="margin-right">5</property>
<property name="margin-end">5</property>
<property name="image">image4</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">2</property>
<child>
<object class="GtkEntry" id="SectionSettingsAddCategoriesEntry">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="margin-left">5</property>
<property name="margin-right">10</property>
<property name="margin-start">5</property>
<property name="margin-end">10</property>
<property name="caps-lock-warning">False</property>
<property name="placeholder-text" translatable="yes">Identifier</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
</child>
<property name="can-focus">True</property>
<property name="width-chars">15</property>
<property name="truncate-multiline">True</property>
<property name="caps-lock-warning">False</property>
<property name="placeholder-text" translatable="yes">Section name</property>
<property name="input-purpose">name</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child type="label_item">
<placeholder/>
<child>
<object class="GtkEntry" id="CategoriesEntry">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="width-chars">0</property>
<property name="caps-lock-warning">False</property>
<property name="placeholder-text" translatable="yes">Identifier</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="ClearButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Clear fields</property>
<property name="halign">center</property>
<property name="image">image2</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkButton" id="AddButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Add section</property>
<property name="image">image4</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">3</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkButton" id="SectionSettingsSaveButton">
<property name="label" translatable="yes">Save and apply</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="margin-right">5</property>
<property name="margin-end">5</property>
<property name="margin-bottom">5</property>
<property name="image">image7</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="SectionSettingsCloseButton">
<property name="label" translatable="yes">Close</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="margin-right">15</property>
<property name="margin-end">15</property>
<property name="margin-bottom">5</property>
<property name="image">image6</property>
<child type="label_item">
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">1</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
@ -249,11 +241,11 @@
</object>
</child>
<child type="titlebar">
<object class="GtkHeaderBar" id="SettingsBar2">
<object class="GtkHeaderBar">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child type="title">
<object class="GtkLabel" id="sectionsHeaderNameLabel">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">UBLinux Settings Manager</property>
@ -271,29 +263,32 @@
<property name="icon_size">5</property>
</object>
</child>
<child>
<object class="GtkButton" id="CancelButton">
<property name="label" translatable="yes">Cancel</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image6</property>
</object>
<packing>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="SaveButton">
<property name="label" translatable="yes">Apply</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image7</property>
</object>
<packing>
<property name="pack-type">end</property>
<property name="position">2</property>
</packing>
</child>
</object>
</child>
</object>
<object class="GtkImage" id="image2">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="pixel-size">16</property>
<property name="icon-name">user-trash-symbolic</property>
</object>
<object class="GtkImage" id="image4">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="pixel-size">16</property>
<property name="icon-name">object-select-symbolic</property>
</object>
<object class="GtkImage" id="image6">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">process-stop-symbolic</property>
</object>
<object class="GtkImage" id="image7">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">emblem-ok-symbolic</property>
</object>
</interface>

@ -1,7 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 -->
<!-- Generated with glade 3.40.0 -->
<interface domain="ubl-settings-manager">
<requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubl-settings-manager.css -->
<object class="GtkAdjustment" id="adjustment1">
<property name="lower">24</property>
<property name="upper">64</property>
@ -266,7 +267,7 @@
</child>
<child>
<object class="GtkButton" id="CancelButton">
<property name="label" translatable="yes">Close</property>
<property name="label" translatable="yes">Cancel</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>

@ -6,6 +6,8 @@
<object class="GtkExpander" id="MainExpander">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="expanded">True</property>
<property name="label-fill">True</property>
<child>
<object class="GtkListBox" id="AppsList">
<property name="visible">True</property>

@ -25,53 +25,71 @@
<property name="position-set">True</property>
<property name="wide-handle">True</property>
<child>
<object class="GtkScrolledWindow">
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="shadow-type">in</property>
<property name="can-focus">False</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkViewport">
<object class="GtkSearchEntry" id="SearchEntry">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="can-focus">True</property>
<property name="width-chars">0</property>
<property name="primary-icon-name">edit-find-symbolic</property>
<property name="primary-icon-activatable">False</property>
<property name="primary-icon-sensitive">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">True</property>
<child>
<object class="GtkBox">
<object class="GtkViewport">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<property name="shadow-type">none</property>
<child>
<object class="GtkSearchEntry" id="SearchEntry">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="primary-icon-name">edit-find-symbolic</property>
<property name="primary-icon-activatable">False</property>
<property name="primary-icon-sensitive">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox" id="AppsTree">
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<placeholder/>
<object class="GtkBox" id="AppsTree">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
@ -164,6 +182,9 @@
<property name="shrink">True</property>
</packing>
</child>
<style>
<class name="workingbg"/>
</style>
</object>
<packing>
<property name="expand">True</property>

@ -1,60 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 -->
<interface>
<requires lib="gtk+" version="3.24"/>
<object class="GtkListStore" id="liststoreTemplate">
<columns>
<!-- column-name gchararray1 -->
<column type="gchararray"/>
<!-- column-name gfloat1 -->
<column type="gfloat"/>
<!-- column-name gfloat2 -->
<column type="gfloat"/>
<!-- column-name gint1 -->
<column type="gint"/>
<!-- column-name GdkPixbuf1 -->
<column type="GdkPixbuf"/>
<!-- column-name gint2 -->
<column type="gint"/>
</columns>
</object>
<object class="GtkIconView" id="iconTemplate">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="margin">4</property>
<property name="hscroll-policy">natural</property>
<property name="item-orientation">horizontal</property>
<property name="model">liststoreTemplate</property>
<property name="item-width">135</property>
<property name="row-spacing">0</property>
<property name="column-spacing">2</property>
<property name="item-padding">5</property>
<property name="activate-on-single-click">True</property>
<child>
<object class="GtkCellRendererPixbuf" id="iconPic">
<property name="xpad">2</property>
</object>
<attributes>
<attribute name="width">5</attribute>
<attribute name="height">3</attribute>
<attribute name="xalign">1</attribute>
<attribute name="yalign">2</attribute>
<attribute name="pixbuf">4</attribute>
</attributes>
</child>
<child>
<object class="GtkCellRendererText">
<property name="xalign">0</property>
<property name="wrap-mode">word</property>
<property name="wrap-width">130</property>
</object>
<attributes>
<attribute name="height">3</attribute>
<attribute name="text">0</attribute>
</attributes>
</child>
<style>
<class name="workingbg"/>
</style>
</object>
</interface>

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 -->
<interface domain="ubl-settings-manager">
<requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubl-settings-manager.css -->
<object class="GtkListStore" id="List">
<columns>
<!-- column-name Name -->
<column type="gchararray"/>
<!-- column-name Icon -->
<column type="GdkPixbuf"/>
</columns>
</object>
<object class="GtkBox" id="MainExpander">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel" id="MainLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">label</property>
<property name="xalign">0</property>
<attributes>
<attribute name="size" value="13312"/>
</attributes>
<style>
<class name="separatorBottom"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkFlowBox" id="AppsFlow">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="valign">start</property>
<property name="homogeneous">True</property>
<property name="column-spacing">5</property>
<property name="row-spacing">5</property>
<property name="max-children-per-line">15</property>
<property name="selection-mode">browse</property>
<property name="activate-on-single-click">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</interface>

@ -3,7 +3,6 @@
<interface domain="ubl-settings-manager">
<requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubl-settings-manager.css -->
<object class="GtkListStore" id="AppsList"/>
<object class="GtkBox" id="MainBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
@ -15,20 +14,27 @@
<property name="orientation">vertical</property>
<child>
<object class="GtkScrolledWindow">
<property name="width-request">5</property>
<property name="height-request">5</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="resize-mode">immediate</property>
<property name="hscrollbar-policy">never</property>
<property name="vscrollbar-policy">always</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkIconView" id="AppsIconView">
<object class="GtkViewport">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="margin">6</property>
<property name="model">AppsList</property>
<property name="can-focus">False</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<child>
<object class="GtkBox" id="AppsTree">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<placeholder/>
</child>
</object>
</child>
</object>
</child>
</object>
@ -57,7 +63,7 @@
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>

@ -1,22 +0,0 @@
[window]
WindowPosX=0
WindowPosY=0
WindowWidth=800
WindowHeight=600
WindowTheme=0
MainIconSize=3
GnomeIconSize=3
IconSegmentSize=250
MainLabelSize=12
GnomeLabelSize=12
LabelDensity=0
User=
GnomeDoubleClick=false
MainDoubleClick=true
BannerHidden=false
[sections]
Personal=X-UBL-SettingsManager;X-UBL-PersonalSettings;
Hardware=X-UBL-SettingsManager;X-UBL-HardwareSettings;
System=X-UBL-SettingsManager;X-UBL-SystemSettings;
Misc=

@ -10,6 +10,11 @@
border-style: solid;
}
.titlelabel {
color: @theme_bg_color;
}
.nobackground {
background:transparent;
}

@ -3,111 +3,6 @@
<interface domain="ubl-settings-manager">
<requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubl-settings-manager.css -->
<object class="GtkWindow" id="CautionWindow">
<property name="can-focus">False</property>
<property name="resizable">False</property>
<property name="icon-name">dialog-information-symbolic</property>
<property name="deletable">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">center</property>
<property name="valign">start</property>
<property name="margin-start">20</property>
<property name="margin-end">20</property>
<property name="margin-top">20</property>
<property name="margin-bottom">20</property>
<property name="icon-name">dialog-information-symbolic</property>
<property name="icon_size">6</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="CautionLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">center</property>
<property name="valign">start</property>
<property name="margin-start">10</property>
<property name="margin-end">25</property>
<property name="margin-top">20</property>
<property name="margin-bottom">20</property>
<property name="label" translatable="yes">Changing the theme is not available due to the small screen resolution!</property>
<property name="wrap">True</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="CautionUnderstandButton">
<property name="label" translatable="yes">Understood</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
</child>
<child type="titlebar">
<object class="GtkHeaderBar">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child type="title">
<object class="GtkLabel" id="warningHeaderNameLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">UBLinux Settings Manager</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="pixel-size">32</property>
<property name="icon-name">dialog-information-symbolic</property>
<property name="icon_size">5</property>
</object>
</child>
</object>
</child>
</object>
<object class="GtkMenu" id="MainMenu">
<property name="visible">True</property>
<property name="can-focus">False</property>
@ -164,7 +59,6 @@
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
@ -249,9 +143,7 @@
<object class="GtkBox" id="MainBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-bottom">5</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkBox" id="StatusBox">
<property name="visible">True</property>
@ -269,17 +161,11 @@
</child>
<child>
<object class="GtkBox" id="ThemeBox">
<property name="name">Icon</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-end">5</property>
<child>
<placeholder/>
</child>
<style>
<class name="darkborder"/>
<class name="Icon"/>
</style>
</object>
<packing>
<property name="expand">True</property>
@ -346,7 +232,10 @@
<object class="GtkImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.pan-left</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.pan-left-symbolic</property>
<style>
<class name="titlelabel"/>
</style>
</object>
<packing>
<property name="expand">False</property>
@ -355,7 +244,7 @@
</packing>
</child>
<child>
<object class="GtkLabel" id="GnomeBackToSettingsLabel">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Back to settings</property>

@ -1,164 +0,0 @@
# Language translations for ubl-settings-manager package.
# Copyright (C) 2022, UBTech LLC
# This file is distributed under the same license as the ubl-settings-manager package.
# UBLinux Team <info@ublinux.com>, 2022
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: ubl-settings-manager 1.0\n"
"Report-Msgid-Bugs-To: info@ublinux.com\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-04-21 12:33+0000\n"
"PO-Revision-Date: 2023-01-01 00:00+0600\n"
"Last-Translator: UBLinux Team <info@ublinux.com>\n"
"Language-Team: Russian - UBLinux Team <info@ublinux.com>\n"
"Language: Russian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: source/ubl-settings-manager.h:9
msgid ""
"\n"
"GTK settings manager for UBLinux\n"
"Usage: ubl-settings-manager [OPTIONS...]\n"
"Options:\n"
" -h, --help\t\t Show this help\n"
" -V, --version\t \t Show package version\n"
" --lock-settings Lock menu settings\n"
msgstr ""
#: source/ubl-settings-manager.h:27
msgid "About UBLinux Settings Manager"
msgstr ""
#: source/ubl-settings-manager.h:34 source/ubl-settings-manager.c:1685
msgid "About..."
msgstr ""
#: source/ubl-settings-manager.h:37 source/ubl-settings-manager.h:36
#: source/ubl-settings-manager.c:1683
msgid "Always redirect"
msgstr ""
#: source/ubl-settings-manager.h:38 source/ubl-settings-manager.h:37
#: source/ubl-settings-manager.c:1742
msgid "Apply"
msgstr ""
#: source/ubl-settings-manager.h:47 source/ubl-settings-manager.h:46
#: source/ubl-settings-manager.c:1600
msgid "All settings"
msgstr ""
#: source/ubl-settings-manager.h:41 source/ubl-settings-manager.h:40
#: source/ubl-settings-manager.c:1680
msgid "Cancel"
msgstr ""
#: source/ubl-settings-manager.h:40 source/ubl-settings-manager.h:39
#: source/ubl-settings-manager.c:1681
msgid "Close"
msgstr ""
#: source/ubl-settings-manager.h:30
msgid "Config loading failed!\n"
msgstr ""
#: source/ubl-settings-manager.h:35
msgid "Documentation"
msgstr ""
#: source/ubl-settings-manager.h:31 source/ubl-settings-manager.c:1748
msgid "Double click selection"
msgstr ""
#: source/ubl-settings-manager.c:1913 source/ubl-settings-manager.c:1912
#: source/ubl-settings-manager.c:1793
msgid "GNOME theme"
msgstr ""
msgid "Hardware"
msgstr ""
#: source/ubl-settings-manager.h:46 source/ubl-settings-manager.h:45
#: source/ubl-settings-manager.c:1675
msgid "Icon size"
msgstr ""
msgid "Misc"
msgstr ""
msgid "Personal"
msgstr ""
#: source/ubl-settings-manager.h:28 source/ubl-settings-manager.c:636
msgid "Project Home Page"
msgstr ""
#: source/ubl-settings-manager.h:42 source/ubl-settings-manager.h:41
#: source/ubl-settings-manager.c:1679
msgid "Read online"
msgstr ""
#: source/ubl-settings-manager.h:39 source/ubl-settings-manager.h:38
#: source/ubl-settings-manager.c:1682
msgid "Save and apply"
msgstr ""
#: source/ubl-settings-manager.h:32 source/ubl-settings-manager.c:1687
msgid "Sections management"
msgstr ""
#: source/ubl-settings-manager.h:36 source/ubl-settings-manager.h:35
#: source/ubl-settings-manager.c:1684
msgid "Settings"
msgstr ""
#: source/ubl-settings-manager.h:29 source/ubl-settings-manager.c:632
msgid "Settings manager for UBLinux"
msgstr ""
#: source/ubl-settings-manager.c:1912 source/ubl-settings-manager.c:1911
#: source/ubl-settings-manager.c:1792
msgid "Standard theme"
msgstr ""
msgid "System"
msgstr ""
#: source/ubl-settings-manager.h:26 source/ubl-settings-manager.c:633
#: source/ubl-settings-manager.c:1601 source/ubl-settings-manager.c:1615
#: source/ubl-settings-manager.c:1674
msgid "UBLinux Settings Manager"
msgstr ""
#: source/ubl-settings-manager.h:33 source/ubl-settings-manager.c:1686
msgid "Understood"
msgstr ""
#: source/ubl-settings-manager.h:8
msgid "Version: "
msgstr ""
#: source/ubl-settings-manager.h:45 source/ubl-settings-manager.h:44
#: source/ubl-settings-manager.c:1676
msgid "Window theme"
msgstr ""
#: source/ubl-settings-manager.h:44 source/ubl-settings-manager.h:43
#: source/ubl-settings-manager.c:1677
msgid "Would you like to read documentation in the Web?"
msgstr ""
#: source/ubl-settings-manager.h:43 source/ubl-settings-manager.h:42
#: source/ubl-settings-manager.c:1678
msgid ""
"You will be redirected to documentation site, where user help pages are\n"
"translated and supported by community."
msgstr ""
#: source/ubl-settings-manager.h:9
msgid "ubl-settings-manager version: "
msgstr ""

@ -1,172 +0,0 @@
# Russian translations for ubl-settings-manager package.
# Copyright (C) 2022, UBTech LLC
# This file is distributed under the same license as the ubl-settings-manager package.
# UBLinux Team <info@ublinux.com>, 2022
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: ubl-settings-manager 1.0\n"
"Report-Msgid-Bugs-To: info@ublinux.com\n"
"POT-Creation-Date: 2023-04-21 12:33+0000\n"
"PO-Revision-Date: 2023-01-01 00:00+0600\n"
"Last-Translator: UBLinux Team <info@ublinux.com>\n"
"Language-Team: Russian - UBLinux Team <info@ublinux.com>\n"
"Language: Russian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: source/ubl-settings-manager.h:9
msgid ""
"\n"
"GTK settings manager for UBLinux\n"
"Usage: ubl-settings-manager [OPTIONS...]\n"
"Options:\n"
" -h, --help\t\t Show this help\n"
" -V, --version\t \t Show package version\n"
" --lock-settings Lock menu settings\n"
msgstr ""
"\n"
"GTK Менеджер настроек для UBLinux\n"
"Использование: ubl-settings-manager [АРГУМЕНТЫ...]\n"
"Аргументы:\n"
" -h, --help\t\t Показать помощь\n"
" -V, --version\t \t Показать версию пакета\n"
" --lock-settings \t Заблокировать окно настроек\n"
#: source/ubl-settings-manager.h:27
msgid "About UBLinux Settings Manager"
msgstr "О приложении Диспетчер настроек UBLinux"
#: source/ubl-settings-manager.h:34 source/ubl-settings-manager.c:1685
msgid "About..."
msgstr "О программе"
#: source/ubl-settings-manager.h:37 source/ubl-settings-manager.h:36
#: source/ubl-settings-manager.c:1683
msgid "Always redirect"
msgstr "Всегда перенаправлять"
#: source/ubl-settings-manager.h:38 source/ubl-settings-manager.h:37
#: source/ubl-settings-manager.c:1742
msgid "Apply"
msgstr "Применить"
#: source/ubl-settings-manager.h:47 source/ubl-settings-manager.h:46
#: source/ubl-settings-manager.c:1600
msgid "All settings"
msgstr "Все настройки"
#: source/ubl-settings-manager.h:41 source/ubl-settings-manager.h:40
#: source/ubl-settings-manager.c:1680
msgid "Cancel"
msgstr "Отменить"
#: source/ubl-settings-manager.h:40 source/ubl-settings-manager.h:39
#: source/ubl-settings-manager.c:1681
msgid "Close"
msgstr "Закрыть"
#: source/ubl-settings-manager.h:30
msgid "Config loading failed!\n"
msgstr "Ошибка загрузки конфигурации!\n"
#: source/ubl-settings-manager.h:35
msgid "Documentation"
msgstr "Справка"
#: source/ubl-settings-manager.h:31 source/ubl-settings-manager.c:1748
msgid "Double click selection"
msgstr "Открывать приложения двойным нажатием"
#: source/ubl-settings-manager.c:1913 source/ubl-settings-manager.c:1912
#: source/ubl-settings-manager.c:1793
msgid "GNOME theme"
msgstr "GNOME тема"
msgid "Hardware"
msgstr "Оборудование"
#: source/ubl-settings-manager.h:46 source/ubl-settings-manager.h:45
#: source/ubl-settings-manager.c:1675
msgid "Icon size"
msgstr "Размер иконок"
msgid "Misc"
msgstr "Прочее"
msgid "Personal"
msgstr "Личные"
#: source/ubl-settings-manager.h:28 source/ubl-settings-manager.c:636
msgid "Project Home Page"
msgstr "Домашняя страница проекта"
#: source/ubl-settings-manager.h:42 source/ubl-settings-manager.h:41
#: source/ubl-settings-manager.c:1679
msgid "Read online"
msgstr "Прочитать онлайн"
#: source/ubl-settings-manager.h:39 source/ubl-settings-manager.h:38
#: source/ubl-settings-manager.c:1682
msgid "Save and apply"
msgstr "Сохранить и применить"
#: source/ubl-settings-manager.h:32 source/ubl-settings-manager.c:1687
msgid "Sections management"
msgstr "Настройка разделов"
#: source/ubl-settings-manager.h:36 source/ubl-settings-manager.h:35
#: source/ubl-settings-manager.c:1684
msgid "Settings"
msgstr "Настройки"
#: source/ubl-settings-manager.h:29 source/ubl-settings-manager.c:632
msgid "Settings manager for UBLinux"
msgstr "Диспетчер настроек UBLinux"
#: source/ubl-settings-manager.c:1912 source/ubl-settings-manager.c:1911
#: source/ubl-settings-manager.c:1792
msgid "Standard theme"
msgstr "Стандартная тема"
msgid "System"
msgstr "Система"
#: source/ubl-settings-manager.h:26 source/ubl-settings-manager.c:633
#: source/ubl-settings-manager.c:1601 source/ubl-settings-manager.c:1615
#: source/ubl-settings-manager.c:1674
msgid "UBLinux Settings Manager"
msgstr "Диспетчер настроек UBLinux"
#: source/ubl-settings-manager.h:33 source/ubl-settings-manager.c:1686
msgid "Understood"
msgstr "Понятно"
#: source/ubl-settings-manager.h:8
msgid "Version: "
msgstr "Версия: "
#: source/ubl-settings-manager.h:45 source/ubl-settings-manager.h:44
#: source/ubl-settings-manager.c:1676
msgid "Window theme"
msgstr "Выбор темы"
#: source/ubl-settings-manager.h:44 source/ubl-settings-manager.h:43
#: source/ubl-settings-manager.c:1677
msgid "Would you like to read documentation in the Web?"
msgstr "Вы хотите прочитать справку в Сети?"
#: source/ubl-settings-manager.h:43 source/ubl-settings-manager.h:42
#: source/ubl-settings-manager.c:1678
msgid ""
"You will be redirected to documentation site, where user help pages are\n"
"translated and supported by community."
msgstr ""
"Вы будете перенаправлены на сайт с документацией где страницы помощи\n"
"переводятся и поддерживаются сообществом."
#: source/ubl-settings-manager.h:9
msgid "ubl-settings-manager version: "
msgstr "ubl-settings-manager версия: "

@ -1,241 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="360"
height="360"
version="1.0"
id="svg36"
sodipodi:docname="ublinux-dark-glow-sc.svg"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04, custom)"
inkscape:export-filename="/media/Data/ShareMX/temp/archtoub_icons/ublinux.png"
inkscape:export-xdpi="68.26667"
inkscape:export-ydpi="68.26667"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs40">
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Drop Shadow"
id="filter2327-6-3"
x="-0.14509785"
y="-0.44791076"
width="1.2901957"
height="1.8958215">
<feFlood
flood-opacity="0"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood2317-0-6" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="in"
result="composite1"
id="feComposite2319-6-1" />
<feGaussianBlur
in="composite1"
stdDeviation="80"
result="blur"
id="feGaussianBlur2321-2-2" />
<feOffset
dx="0"
dy="0"
result="offset"
id="feOffset2323-6-9" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
result="fbSourceGraphic"
id="feComposite2325-1-3" />
<feColorMatrix
result="fbSourceGraphicAlpha"
in="fbSourceGraphic"
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
id="feColorMatrix2435" />
<feFlood
id="feFlood2437"
flood-opacity="0.698039"
flood-color="rgb(255,255,255)"
result="flood"
in="fbSourceGraphic" />
<feComposite
in2="fbSourceGraphic"
id="feComposite2439"
in="flood"
operator="in"
result="composite1" />
<feGaussianBlur
id="feGaussianBlur2441"
in="composite1"
stdDeviation="159.96"
result="blur" />
<feOffset
id="feOffset2443"
dx="-1.94289e-16"
dy="3.05311e-16"
result="offset" />
<feComposite
in2="offset"
id="feComposite2445"
in="fbSourceGraphic"
operator="over"
result="composite2" />
</filter>
</defs>
<sodipodi:namedview
id="namedview38"
pagecolor="#ffffff"
bordercolor="#999999"
borderopacity="1"
inkscape:pageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="1.0347222"
inkscape:cx="-3.8657719"
inkscape:cy="134.81879"
inkscape:window-width="1920"
inkscape:window-height="1027"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="text4648-6-8-1" />
<g
inkscape:groupmode="layer"
id="layer1"
inkscape:label="Layer 1"
style="display:none">
<g
transform="translate(-201.63,22.962)"
id="g34">
<path
d="m 381.06,24.896 c -8.7636,21.486 -14.055,35.559 -23.813,56.406 5.9823,6.3413 13.325,13.691 25.25,22.031 -12.821,-5.2756 -21.558,-10.535 -28.094,-16.031 -12.487,26.056 -32.08,63.133 -71.781,134.47 31.198,-18.011 55.398,-29.104 77.938,-33.344 -0.96715,-4.1618 -1.5061,-8.6782 -1.4688,-13.375 l 0.0312,-0.96875 c 0.49515,-19.992 10.899,-35.388 23.219,-34.344 12.319,1.0438 21.901,18.133 21.406,38.125 -0.0931,3.7597 -0.50934,7.3639 -1.25,10.719 22.29,4.3659 46.232,15.424 77,33.188 -6.0696,-11.174 -11.514,-21.219 -16.688,-30.812 -8.1493,-6.3162 -16.63,-14.538 -33.969,-23.438 11.918,3.0967 20.474,6.6628 27.125,10.656 -52.602,-97.935 -56.868,-110.95 -74.906,-153.28 z"
fill="#1793d1"
fill-rule="evenodd"
id="path2" />
<text
x="475.51663"
y="207.00311"
fill="#87cdde"
font-family="'DejaVu Sans Mono'"
stroke-width="1px"
style="line-height:0%"
xml:space="preserve"
id="text6"><tspan
x="475.51663"
y="207.00311"
font-size="6.1069px"
style="line-height:1.25"
id="tspan4">TM</tspan></text>
<g
transform="matrix(0.47879,0,0,0.47879,65.332,87.93)"
fill="#ffffff"
fill-rule="evenodd"
id="g16">
<path
d="m 339.97,309.09 c -14.471,-0.0239 -26.481,2.9437 -31.125,4.5625 l -4.7812,25.812 c -0.0116,0.0951 23.795,-6.3486 34.281,-5.9688 17.362,0.62381 18.959,6.6354 18.656,14.75 0.29595,0.47462 -4.4793,-7.3319 -19.5,-7.5938 -18.95,-0.32687 -45.693,6.7095 -45.656,35.312 -0.51086,32.174 24.034,41.639 40.75,41.812 15.028,-0.27364 22.078,-5.6914 25.938,-8.5938 5.0712,-5.3024 10.873,-10.634 16.406,-17.031 -5.2357,9.5128 -9.7747,16.09 -14.5,21.125 v 4.25 l 22.844,-3.8438 0.15625,-62.094 c -0.23141,-8.7884 5.0412,-42.418 -43.469,-42.5 z m -3.2812,54.062 c 9.4689,0.12995 20.328,4.7971 20.344,16.031 0.049,10.218 -12.8,15.712 -21.156,15.625 -8.3598,-0.0868 -19.451,-6.5698 -19.5,-16.531 0.16016,-8.9044 10.46,-15.354 20.312,-15.125 z"
id="path8" />
<path
d="m 398.5,314.83 -0.15505,102.83 26.612,-5.1272 0.0449,-58.302 c 0.006,-8.6809 12.406,-18.825 27.963,-18.663 3.302,-5.9741 9.5087,-21.242 11.021,-24.715 -34.756,-0.0833 -35.199,9.9899 -41.244,14.945 -0.0631,-9.4528 -0.0213,-15.127 -0.0213,-15.127 z"
id="path10" />
<path
d="m 548.27,328.33 c -0.25696,-0.12068 -13.879,-15.934 -41.266,-16.059 -25.652,-0.42638 -54.426,9.519 -54.886,52.533 0.22457,37.819 27.64,52.598 55.031,52.886 29.313,0.30451 40.977,-18.329 41.676,-18.791 -3.4976,-3.0321 -16.598,-16.013 -16.598,-16.013 0,0 -8.1824,11.651 -24.058,11.799 -15.879,0.1512 -29.682,-12.273 -29.878,-29.609 -0.20349,-17.336 12.689,-26.728 29.997,-27.487 14.985,-0.003 23.63,9.6733 23.63,9.6733 z"
id="path12" />
<path
d="m 581.81,278.84 -25.125,5.9062 0.1875,133.94 24.75,-4.4688 0.28125,-63.031 c 0.0529,-6.6093 9.5613,-16.759 25.438,-16.438 15.18,0.15775 18.572,10.118 18.531,11.375 l 0.4375,72.969 24.406,-4.3125 0.0937,-77.375 c 0.1607,-7.4454 -16.308,-23.17 -42.781,-23.281 -12.581,0.0202 -19.548,2.8682 -23.094,4.9688 -6.0666,4.6856 -13,9.1754 -19.812,14.906 6.2981,-8.091 11.586,-13.685 16.75,-17.844 z"
id="path14" />
</g>
<g
transform="matrix(0.70885,0,0.010031,0.70885,96.753,-223.33)"
fill="#1793d1"
fill-rule="evenodd"
id="g28">
<path
d="m 400.68,629.8 7.6817,-1.9158 -0.92851,91.208 -7.7957,1.3243 z"
id="path18" />
<path
d="m 421.1,657.02 6.7506,-2.9867 -0.86808,65.399 -6.4978,1.3392 z m -1.2606,-23.583 5.4717,-4.4153 4.4226,4.9995 -5.4756,4.5322 z"
id="path20" />
<path
d="m 440.44,655.83 7.6776,-1.562 -0.1573,13.672 c -0.007,0.58717 4.4194,-15.274 24.685,-14.921 19.68,0.10952 22.684,15.346 22.529,18.762 l -0.43759,48.078 -6.7304,1.4563 0.63316,-47.489 c 0.0974,-1.3868 -2.8814,-13.114 -16.789,-13.158 -13.905,-0.0404 -23.684,10.1 -23.758,16.579 l -0.48127,41.835 -7.8039,2.0313 z"
id="path22" />
<path
d="m 561.53,720.2 -7.6776,1.5619 0.15737,-13.672 c 0.007,-0.58742 -4.422,15.274 -24.685,14.921 -19.68,-0.10944 -22.684,-15.346 -22.529,-18.762 l 0.43757,-48.079 8.1567,-1.6423 -0.54644,47.49 c -0.0149,1.2968 1.3684,13.3 15.276,13.343 13.905,0.0405 23.766,-8.3736 24.015,-21.044 l 0.43105,-37.469 7.5978,-1.932 z"
id="path24" />
<path
d="m 577.45,655.29 -5.4272,4.2002 20.199,26.933 -22.391,31.116 5.635,4.226 21.044,-28.897 20.878,29.582 5.3273,-4.201 -22.376,-31.629 18.57,-25.578 -5.5319,-4.7343 -16.921,23.668 z"
id="path26" />
</g>
<text
x="550.83258"
y="284.34351"
fill="#87cdde"
font-family="'DejaVu Sans Mono'"
stroke-width="1px"
style="line-height:0%"
xml:space="preserve"
id="text32"><tspan
x="550.83258"
y="284.34351"
font-size="6.3363px"
style="line-height:1.25"
id="tspan30">TM</tspan></text>
</g>
</g>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Layer 2">
<g
id="g866"
style="display:inline"
transform="matrix(2.8604707,0,0,2.8604707,-28.282302,-401.23688)">
<path
sodipodi:type="star"
style="display:inline;fill:#0d597f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.264583;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path9225"
sodipodi:sides="6"
sodipodi:cx="103.70058"
sodipodi:cy="104.69581"
sodipodi:r1="89.197571"
sodipodi:r2="77.247368"
sodipodi:arg1="1.0471976"
sodipodi:arg2="1.5707963"
inkscape:flatsided="true"
inkscape:rounded="0"
inkscape:randomized="0"
transform="matrix(0,0.48761957,-0.48761957,0,123.86572,140.10617)"
d="m 148.29936,181.94317 -89.197572,0 -44.598782,-77.24737 44.598789,-77.247356 89.197575,4e-6 44.59878,77.247362 z" />
<path
d="m 68.071141,169.19256 h 16.33386 c 3.39111,0 5.86851,0.11539 7.43219,0.34611 1.58252,0.23075 3.1462,0.74032 4.69104,1.5287 1.601349,0.82684 2.788229,1.94211 3.560659,3.34582 0.79125,1.38448 1.18689,2.97085 1.18689,4.75912 0,2.07672 -0.53691,3.91307 -1.61078,5.50906 -1.07385,1.57676 -2.590419,2.80742 -4.549739,3.69195 v 0.23074 c 2.750559,0.55764 4.926539,1.71138 6.527889,3.46119 1.6202,1.74981 2.43031,4.0573 2.43031,6.92239 0,2.07672 -0.41448,3.93227 -1.24342,5.56672 -0.8101,1.63445 -1.93104,2.99009 -3.36285,4.06691 -1.65787,1.26908 -3.485299,2.17283 -5.482289,2.71125 -1.97817,0.53841 -4.49323,0.80556 -7.54524,0.80761 l -18.52368,0.0125 -7.65381,-0.005 c -6.160521,0 -10.823301,-1.38471 -13.988341,-4.15412 -3.1462,-2.76939 -4.7193,-6.7445 -4.7193,-11.92538 v -26.87542 h 10.90808 v 26.25285 c 0,2.92012 0.61229,5.09609 1.83685,6.52789 1.22457,1.4318 3.21214,2.14769 5.962711,2.14769 2.71289,0 4.69104,-0.68761 5.93445,-2.06289 1.26225,-1.37529 1.89338,-3.57951 1.88394,-6.64543 z m 22.09875,12.14301 c 0,-0.71147 -0.17897,-1.42295 -0.53692,-2.13441 -0.33911,-0.71146 -0.9514,-1.24025 -1.83686,-1.58638 -0.79125,-0.30766 -1.78033,-0.47111 -2.96722,-0.49033 -1.16805,-0.0384 -2.81651,-0.0576 -4.94537,-0.0576 h -1.01734 v 9.08561 h 1.69556 c 1.7144,0 3.17445,-0.0288 4.38018,-0.0864 1.20573,-0.0577 2.15713,-0.24993 2.85419,-0.57687 0.97966,-0.44226 1.6202,-1.00952 1.92164,-1.70175 0.30143,-0.71148 0.45214,-1.52869 0.45214,-2.45167 z m 2.65637,17.479 c 0,-1.36526 -0.26375,-2.41322 -0.79126,-3.14391 -0.50866,-0.74993 -1.3847,-1.30755 -2.62811,-1.6729 -0.84778,-0.24997 -2.01582,-0.38457 -3.50415,-0.40382 -1.48832,-0.0193 -3.04259,-0.0289 -4.66278,-0.0289 h -2.37378 v 10.70083 h 0.79127 c 3.05199,0 5.23738,-0.009 6.55615,-0.0288 1.31876,-0.0192 2.53391,-0.26918 3.64544,-0.74991 1.13036,-0.48072 1.90279,-1.11526 2.31726,-1.90365 0.43331,-0.80763 0.64996,-1.7306 0.64996,-2.76895 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.8px;line-height:1.25;font-family:Verdana;-inkscape-font-specification:'Verdana Bold';letter-spacing:0px;word-spacing:0px;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.113933;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;enable-background:new"
id="path4640-7-5-9-7"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cscccsccccscccscccsccscscccscccsccssccssscccsccssccss" />
</g>
<g
aria-label="Linux"
transform="matrix(0.05476725,0,0,0.05476725,-46.447362,267.18595)"
id="text4648-6-8-1"
style="font-weight:bold;font-size:1683.65px;line-height:1.25;font-family:'Century Gothic';-inkscape-font-specification:'Century Gothic Bold';letter-spacing:0px;word-spacing:0px;display:inline;fill:#4d4d4d;stroke-width:8.769;filter:url(#filter2327-6-3);enable-background:new">
<path
d="m 2150.1859,55.619904 h 230.1865 V 1045.422 h 335.4147 v 219.4993 h -565.6012 z"
id="path3719" />
<path
d="m 2954.1945,2.1837463 q 59.1908,0 101.1177,42.7489267 42.7489,42.748926 42.7489,103.583937 0,60.01292 -41.9268,102.76184 -41.9269,41.92683 -100.2956,41.92683 -60.0129,0 -102.7618,-42.74892 -41.9269,-43.57102 -41.9269,-105.22813 0,-59.19082 41.9269,-101.117652 41.9268,-41.9268317 101.1176,-41.9268317 z M 2841.5675,370.48219 h 225.254 v 894.43911 h -225.254 z"
id="path3721" />
<path
d="m 3269.8789,370.48219 h 223.6098 v 91.25252 q 76.4548,-64.12339 138.1119,-88.78624 62.4792,-25.48493 127.4247,-25.48493 133.1793,0 226.076,92.8967 78.099,78.9211 78.099,233.47491 V 1264.9213 H 3841.2347 V 872.78207 q 0,-160.30847 -14.7977,-212.92253 -13.9756,-52.61407 -50.1478,-79.74319 -35.35,-27.95122 -87.9641,-27.95122 -68.2339,0 -117.5595,46.0373 -48.5036,45.21521 -67.4118,125.7805 -9.8651,41.92683 -9.8651,181.68293 v 359.25544 h -223.6098 z"
id="path3723" />
<path
d="m 4279.4112,370.48219 h 226.8981 v 430.77764 q 0,125.7805 17.264,175.10618 17.264,48.50359 55.0803,75.63269 38.6385,27.1292 94.5409,27.1292 55.9025,0 94.5409,-26.3071 39.4606,-27.1291 58.3688,-78.92107 13.9756,-38.63846 13.9756,-165.24105 V 370.48219 h 225.2539 v 378.98567 q 0,234.297 -36.9942,320.61694 -45.2152,105.2281 -133.1794,161.9527 -87.9641,55.9024 -223.6098,55.9024 -147.1549,0 -238.4074,-65.7676 -90.4304,-65.7675 -127.4247,-183.3271 -26.307,-81.38737 -26.307,-295.95409 z"
id="path3725" />
<path
d="m 5210.0225,370.48219 h 260.604 l 175.1062,244.16214 177.5724,-244.16214 h 258.1378 l -305.8193,423.37879 343.6356,471.06032 h -260.604 L 5645.7327,971.43344 5435.2764,1264.9213 h -257.3156 l 338.703,-471.06032 z"
id="path3727" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 14 KiB

Loading…
Cancel
Save