From 803ba9c2c28e6d91582cf04be573be68abbd2422 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 19 Jul 2023 09:48:59 +0600 Subject: [PATCH 01/12] Added glade, css and banner files to bin, Makefile updates --- .gitignore | 1 + Makefile | 44 +++++-------- com.ublinux.ubl-settings-manager.policy | 24 +++++++ gresource.xml | 12 ++++ source/CMakeLists.txt | 66 ++++++++++++++++--- ...ubl-settings-manager.h.in => ubl-cmake.in} | 0 source/ubl-settings-manager-cm.h | 1 - source/ubl-settings-manager.c | 20 +++--- source/ubl-settings-manager.h | 11 ++-- 9 files changed, 124 insertions(+), 55 deletions(-) create mode 100644 com.ublinux.ubl-settings-manager.policy create mode 100644 gresource.xml rename source/{ubl-settings-manager.h.in => ubl-cmake.in} (100%) delete mode 100644 source/ubl-settings-manager-cm.h diff --git a/.gitignore b/.gitignore index 3885a3f..87de55e 100644 --- a/.gitignore +++ b/.gitignore @@ -16,4 +16,5 @@ images/ locale/ ui/ ubl-settings-manager_ru.pos +ubl-settings-manager_ru.po~ deleted \ No newline at end of file diff --git a/Makefile b/Makefile index e166a62..649dc53 100644 --- a/Makefile +++ b/Makefile @@ -8,23 +8,25 @@ MAKEFILE_PATH := $(dir $(MAKEFILE_FILEPATH)) CMAKE_COMMAND = cmake CMAKE_SOURCE_DIR = $(MAKEFILE_PATH)source CMAKE_BUILD_DIR = $(MAKEFILE_PATH)compile -#CMAKE_SOURCE_DIR = ./source -#CMAKE_BUILD_DIR = ./compile -FILE_VERSION = VERSION.md DEPENDS = /bin/cmake -PREFIX ?= /usr +PREFIX ?= /usr/local PKGNAME = $(MAKEFILE_DIR) -#PKGNAME = ubl-settings-manager +FILE_VER = source/${PKGNAME}.h default_target: all -.PHONY: all init depend debug prepare check build uninstall install clean up_ver help +.PHONY: all init depend debug prepare check build uninstall install clean help all: init build init: @echo "Initialize ..."; \ - sed -r "s/(version_application = ).*/\1\"$$(grep 'VERSION' ${FILE_VERSION} | cut -d" " -f2)\";/" -i source/ubl-settings-manager.h; \ + if [ -d ".git" ]; then \ + LATEST_TAG=$$(git describe --abbrev=0 --tags | sed 's/^v//'); \ + else \ + LATEST_TAG="Development"; \ + fi; \ + sed -r "s/^(string version_application).*/\1 = \"$${LATEST_TAG}\";/" -i ${FILE_VER}; \ echo "-- Build path: ${CMAKE_BUILD_DIR}" depend: @@ -35,8 +37,8 @@ depend: exit 1; \ fi; \ done; \ + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B${CMAKE_BUILD_DIR} --check-build-system CMakeFiles/Makefile.cmake 1 || exit 1; \ echo "Check depends: OK" -# $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 debug: @echo "Debug ..." @@ -63,7 +65,8 @@ check: build: depend prepare @echo "Build ..."; \ - make --directory=${CMAKE_BUILD_DIR}; \ + $(MAKE_COMMAND) --directory=${CMAKE_BUILD_DIR}; \ + sed -r "s/^(string version_application).*/\1;/" -i ${FILE_VER}; \ echo "Build: OK" uninstall: @@ -87,7 +90,7 @@ uninstall: @$(RM) "${DESTDIR}/etc/xdg/${PKGNAME}/${PKGNAME}.conf" @$(RM) "${DESTDIR}${PREFIX}/share/applications/${PKGNAME}.desktop" @$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/com.ublinux.${PKGNAME}.svg" - @$(RM) -rd "${DESTDIR}${PREFIX}/share/${PKGNAME}" + @$(RM) "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}.policy" @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; \ @@ -109,18 +112,12 @@ install: check uninstall install -dm755 "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps"; \ rsvg-convert -w $${SIZE} -h $${SIZE} -f svg --keep-image-data "com.ublinux.${PKGNAME}.svg" -o "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/com.ublinux.${PKGNAME}.svg"; \ done - @install -dm755 "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/" "com.ublinux.${PKGNAME}.svg" + @install -Dm644 -t "${DESTDIR}/usr/share/polkit-1/actions/" "com.ublinux.${PKGNAME}.policy" @install -Dm755 -t "${DESTDIR}${PREFIX}/bin/" "${CMAKE_BUILD_DIR}/${PKGNAME}" - @install -dm755 "${DESTDIR}/etc/xdg" @install -Dm744 -t "${DESTDIR}/etc/xdg/${PKGNAME}/" "${PKGNAME}.conf" - @install -dm755 "${DESTDIR}${PREFIX}/share/applications" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/applications/" "${PKGNAME}.desktop" - @install -dm755 "${DESTDIR}${PREFIX}/share/${PKGNAME}"/{ui,css,images} - @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/ui/" "${PKGNAME}.glade" - @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/css/" "${PKGNAME}.css" - @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/images/" "ublinux-logo.svg" - @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/images/" "${PKGNAME}-banner.png" + @sed -e 's+/usr/bin+${PREFIX}/bin+g' -i ${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}.policy @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; \ @@ -137,14 +134,6 @@ clean: echo "Clean: OK"; \ fi -up_ver: - @CURRENT=$$(grep 'VERSION' ${FILE_VERSION} | cut -d" " -f2); \ - MAJOR=$$(cut -d. -f1 <<< $${CURRENT}); \ - MINOR=$$(cut -d. -f2 <<< $${CURRENT}); \ - VER="$${MAJOR}.$$(($${MINOR}+1))"; \ - sed "s/VERSION *[[:digit:]]*.*/VERSION $${VER}/" -i ${FILE_VERSION}; \ - echo "Updated version to VERSION.md: $${CURRENT} to $${VER}" - help: @echo "The following are some of the valid targets for this Makefile:"; \ echo "... all (the default if no target is provided)"; \ @@ -154,5 +143,4 @@ help: echo "... compile"; \ echo "... install"; \ echo "... uninstall"; \ - echo "... clean"; \ - echo "... up_ver" + echo "... clean" \ No newline at end of file diff --git a/com.ublinux.ubl-settings-manager.policy b/com.ublinux.ubl-settings-manager.policy new file mode 100644 index 0000000..63fd4eb --- /dev/null +++ b/com.ublinux.ubl-settings-manager.policy @@ -0,0 +1,24 @@ + + + + + UBLinux + https://ublinux.ru + + + Run ubl-settings-manager as root + Запуск утилиты ubl-settings-manager с правами root + Authentication is required to run ubl-settings-manager + Требуется авторизация для запуска утилиты ubl-settings-manager с правами root + + auth_admin + auth_admin + auth_admin + + /usr/bin/ubl-settings-manager + true + + + diff --git a/gresource.xml b/gresource.xml new file mode 100644 index 0000000..a6b8179 --- /dev/null +++ b/gresource.xml @@ -0,0 +1,12 @@ + + + + ubl-settings-manager.glade + + + ubl-settings-manager.css + + + ubl-settings-manager-banner.png + + \ No newline at end of file diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 8caec66..19ec51d 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -8,10 +8,14 @@ include_directories(${GTK_INCLUDE_DIRS}) link_directories(${GTK_LIBRARY_DIRS}) add_definitions(${GTK_CFLAGS_OTHER}) -option(WEBKIT_FOUND "No" OFF) +#pkg_check_modules(VTE291 REQUIRED vte-2.91) +#include_directories(${VTE291_INCLUDE_DIRS}) +#link_directories(${VTE291_LIBRARY_DIRS}) +#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) @@ -20,7 +24,42 @@ if(WEBKIT_LIBRARIES_FOUND) add_definitions(${WEBKIT_CFLAGS_OTHER}) endif() -configure_file(ubl-settings-manager.h.in ubl-settings-manager-cm.h) +configure_file(ubl-cmake.in ubl-cmake.h) + +file(COPY ${CMAKE_CURRENT_BINARY_DIR}/ubl-cmake.h DESTINATION ./) + +set(GRESOURCE_C resources.c) +set(GRESOURCE_XML gresource.xml) + +find_program(GLIB_COMPILE_RESOURCES NAMES glib-compile-resources REQUIRED) +add_custom_target(GLADE ubl-settings-manager.glade) + +set(DEPENDFILES + ../ubl-settings-manager.glade + ../gresource.xml + ../ubl-settings-manager-banner.png + ../ubl-settings-manager.css + ) + +file(COPY ${DEPENDFILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) + +add_custom_command( + OUTPUT ${GRESOURCE_C} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMAND ${GLIB_COMPILE_RESOURCES} + ARGS + --generate-source + --target=${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C} + ${GRESOURCE_XML} + VERBATIM + MAIN_DEPENDENCY ${GRESOURCE_XML} + DEPENDS + ${GLADE} +) +add_custom_target( + 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") @@ -28,20 +67,27 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissin -O2 -pipe -fno-plt -fexceptions \ -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security \ -fstack-clash-protection -fcf-protection") + set(SOURCE_FILES ubl-settings-manager.c ubl-settings-manager.h - ubl-settings-manager-cm.h) + ${CMAKE_CURRENT_BINARY_DIR}/ubl-cmake.h + ) set(LIBRARIES ${GTK_LIBRARIES} + ${WEBKIT_LIBRARIES} +# ${VTE291_LIBRARIES} pthread) -add_executable(ubl-settings-manager ${SOURCE_FILES}) -target_link_libraries(ubl-settings-manager PUBLIC ${WEBKIT_LIBRARIES} ${LIBRARIES}) -target_include_directories(ubl-settings-manager PUBLIC - "${PROJECT_BINARY_DIR}" - ${WEBKIT_INCLUDE_DIRS} - ) -install(TARGETS ubl-settings-manager DESTINATION bin) \ No newline at end of file + +add_executable(${PROJECT_NAME} ${SOURCE_FILES} ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}) +target_link_libraries(${PROJECT_NAME} PUBLIC ${LIBRARIES}) +target_include_directories(${PROJECT_NAME} PUBLIC ${PROJECT_BINARY_DIR}) +set_source_files_properties( + ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C} + PROPERTIES GENERATED TRUE +) +install(TARGETS ${PROJECT_NAME} DESTINATION bin) +add_dependencies(${PROJECT_NAME} dummy-resource) \ No newline at end of file diff --git a/source/ubl-settings-manager.h.in b/source/ubl-cmake.in similarity index 100% rename from source/ubl-settings-manager.h.in rename to source/ubl-cmake.in diff --git a/source/ubl-settings-manager-cm.h b/source/ubl-settings-manager-cm.h deleted file mode 100644 index 26a7931..0000000 --- a/source/ubl-settings-manager-cm.h +++ /dev/null @@ -1 +0,0 @@ -#define WEBKIT_FOUND diff --git a/source/ubl-settings-manager.c b/source/ubl-settings-manager.c index 3525b5d..44b4114 100644 --- a/source/ubl-settings-manager.c +++ b/source/ubl-settings-manager.c @@ -140,7 +140,7 @@ void on_ButtonOpenHelp_activated(GtkWidget *button, GtkBuilder *builder){ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder,"AlwaysOpenHelpCheckbox")))) { #ifdef WEBKIT_FOUND - GtkBuilder *web_builder=gtk_builder_new_from_file(GladePath); + GtkBuilder *web_builder=gtk_builder_new_from_resource(GladePath); GtkWidget *browser=GTK_WIDGET(gtk_builder_get_object(web_builder,"Web_Window")); GtkWidget *web_place=GTK_WIDGET(gtk_builder_get_object(web_builder,"Web_Place")); GtkWidget *WebView=webkit_web_view_new(); @@ -173,7 +173,7 @@ void on_CancelHelpButton_activated(GtkWidget *button,GtkBuilder *builder){ void on_ReadHelpButton_activated(GtkWidget *button, GtkBuilder *builder){ #ifdef WEBKIT_FOUND - GtkBuilder *web_builder=gtk_builder_new_from_file(GladePath); + GtkBuilder *web_builder=gtk_builder_new_from_resource(GladePath); GtkWidget *browser=GTK_WIDGET(gtk_builder_get_object(web_builder,"Web_Window")); GtkWidget *web_place=GTK_WIDGET(gtk_builder_get_object(web_builder,"Web_Place")); GtkWidget *WebView=webkit_web_view_new(); @@ -657,7 +657,7 @@ void on_double_click_changed(GtkWidget *Switch, gboolean state, dictionary *widg } void on_about(GtkWidget *button, GtkBuilder *buildr){ - GtkBuilder *builder = gtk_builder_new_from_file(GladePath); + GtkBuilder *builder = gtk_builder_new_from_resource(GladePath); GtkWidget *AboutButtons = GTK_WIDGET(gtk_builder_get_object(builder,"AboutButtons")); GtkWidget *AboutHeadLabel = GTK_WIDGET(gtk_builder_get_object(builder,"aboutHeadLabel")); GtkWidget *About = GTK_WIDGET(gtk_builder_get_object(builder, "ublAbloutWindow")); @@ -1142,7 +1142,7 @@ void yon_set_default_sections(dictionary *section){ IVGraphicals *yon_create_single_section_IV(char *name,char *cats){ IVGraphicals *IVG = malloc(sizeof(IVGraphicals)); GtkWidget *box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); - GtkBuilder *builder = gtk_builder_new_from_file(GladePath); + GtkBuilder *builder = gtk_builder_new_from_resource(GladePath); GtkWidget *iv = GTK_WIDGET(gtk_builder_get_object(builder,"iconTemplate")); gtk_widget_show(iv); GtkWidget *label = gtk_label_new(_(name)); @@ -1869,7 +1869,7 @@ int main(int argc, char *argv[]){ int *size=malloc(sizeof(int)); apps *applist=find_apps(size); sort_apps(applist,*size); - GtkBuilder *builder=gtk_builder_new_from_file(GladePath); + GtkBuilder *builder=gtk_builder_new_from_resource(GladePath); actionWidgets *widg=(actionWidgets*)widgets->first->data; char *theme; if (main_config.WindowTheme==1){ theme="Gnome"; @@ -1945,18 +1945,18 @@ int main(int argc, char *argv[]){ if (main_config.WindowTheme==1) gtk_widget_hide(widg->MenuItemAboutSystem); GtkWidget *banner = GTK_WIDGET(gtk_builder_get_object(widg->builder,"MainBanner")); - gtk_image_set_from_pixbuf(GTK_IMAGE(banner),gdk_pixbuf_new_from_file(AppBannerPath,NULL)); + gtk_image_set_from_pixbuf(GTK_IMAGE(banner),gdk_pixbuf_new_from_resource(AppBannerPath,NULL)); banner = GTK_WIDGET(gtk_builder_get_object(widg->builder,"GnomeBanner")); - gtk_image_set_from_pixbuf(GTK_IMAGE(banner),gdk_pixbuf_new_from_file(AppBannerPath,NULL)); + gtk_image_set_from_pixbuf(GTK_IMAGE(banner),gdk_pixbuf_new_from_resource(AppBannerPath,NULL)); banner = GTK_WIDGET(gtk_builder_get_object(widg->builder,"loaderBanner")); - gtk_image_set_from_pixbuf(GTK_IMAGE(banner),gdk_pixbuf_new_from_file(AppBannerPath,NULL)); + gtk_image_set_from_pixbuf(GTK_IMAGE(banner),gdk_pixbuf_new_from_resource(AppBannerPath,NULL)); banner = GTK_WIDGET(gtk_builder_get_object(widg->builder,"GnomeInfoLogo")); - gtk_image_set_from_pixbuf(GTK_IMAGE(banner),gdk_pixbuf_new_from_file_at_scale(ublinux_logo,512,512,1,NULL)); + gtk_image_set_from_pixbuf(GTK_IMAGE(banner),gtk_icon_info_load_icon(gtk_icon_theme_lookup_icon_for_scale(gtk_icon_theme_get_default(), AppIconPath,512,1,GTK_ICON_LOOKUP_FORCE_SVG),NULL)); banner = GTK_WIDGET(gtk_builder_get_object(widg->builder,"settingsIcon")); GtkIconTheme *icthm=gtk_icon_theme_get_default(); gtk_image_set_from_pixbuf(GTK_IMAGE(banner),gtk_icon_info_load_icon(gtk_icon_theme_lookup_icon_for_scale(icthm, AppIconPath,yon_get_icon_size(*main_config.currentThemeIconSize),1,GTK_ICON_LOOKUP_FORCE_SVG),NULL)); GtkCssProvider *css=gtk_css_provider_new(); - gtk_css_provider_load_from_path(css,CssPath,NULL); + gtk_css_provider_load_from_resource(css,CssPath,NULL); gtk_style_context_add_provider_for_screen(gdk_screen_get_default(), GTK_STYLE_PROVIDER(css), -1); diff --git a/source/ubl-settings-manager.h b/source/ubl-settings-manager.h index 5de5932..04d1de1 100644 --- a/source/ubl-settings-manager.h +++ b/source/ubl-settings-manager.h @@ -5,7 +5,7 @@ #include #include #include -#include "ubl-settings-manager-cm.h" +#include "ubl-cmake.h" #ifdef WEBKIT_FOUND #include #endif @@ -17,21 +17,20 @@ #define cmdVersionText yon_char_get_augumented(yon_char_get_augumented(_("Version: "),version_application),"\n") #define cmdHelpText yon_char_get_augumented(yon_char_get_augumented(_("ubl-settings-manager version: "),version_application),_("\nGTK settings manager for UBLinux\nUsage: ubl-settings-manager [OPTIONS...]\nOptions:\n -h, --help Show this help\n -V, --version Show package version\n --lock-settings Lock menu settings\n")) -#define GladePath "/usr/share/ubl-settings-manager/ui/ubl-settings-manager.glade" -#define CssPath "/usr/share/ubl-settings-manager/css/ubl-settings-manager.css" +#define GladePath "/com/ublinux/ui/ubl-settings-manager.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" #define AppIconPath "com.ublinux.ubl-settings-manager" -#define AppBannerPath "/usr/share/ubl-settings-manager/images/ubl-settings-manager-banner.png" +#define AppBannerPath "/com/ublinux/images/ubl-settings-manager-banner.png" #define DesktopPath "/usr/share/applications/" #define IconPicturesPath "/usr/share/icons/hicolor/scalable/apps/" -#define ublinux_logo "/usr/share/ubl-settings-manager/images/ublinux-logo.svg" #define LocalePath "/usr/share/locale" #define LocaleName "ubl-settings-manager" #define ubl_settings_infoPath "ubl-settings-info" #define ubl_settings_infoPathLaunch "ubl-settings-info --socket-id=" typedef char* string; -string version_application = "1.4"; +string version_application; #define UBL_SETTINGS_MANAGER_TITLE _("UBLinux Settings Manager") #define UBL_SETTINGS_MANAGER_ABOUT_TITLE _("About UBLinux Settings Manager") -- 2.35.1 From 0d1ff86c63366d719b4a89626155dd1503caedc2 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 19 Jul 2023 10:02:16 +0600 Subject: [PATCH 02/12] reverting --- Makefile | 150 ++++++++++++++++++---------------- source/CMakeLists.txt | 78 ++---------------- source/ubl-settings-manager.h | 81 +++--------------- 3 files changed, 97 insertions(+), 212 deletions(-) diff --git a/Makefile b/Makefile index 649dc53..32ef201 100644 --- a/Makefile +++ b/Makefile @@ -6,51 +6,48 @@ MAKEFILE_DIR := $(notdir $(patsubst %/,%,$(dir $(MAKEFILE_FILEPATH)))) MAKEFILE_PATH := $(dir $(MAKEFILE_FILEPATH)) CMAKE_COMMAND = cmake -CMAKE_SOURCE_DIR = $(MAKEFILE_PATH)source -CMAKE_BUILD_DIR = $(MAKEFILE_PATH)compile -DEPENDS = /bin/cmake -PREFIX ?= /usr/local +#CMAKE_SOURCE_DIR = $(MAKEFILE_PATH)source +#CMAKE_BUILD_DIR = $(MAKEFILE_PATH)compile +CMAKE_SOURCE_DIR = ./source +CMAKE_BUILD_DIR = ./compile +DEPENDS = cmake PKGNAME = $(MAKEFILE_DIR) -FILE_VER = source/${PKGNAME}.h +#PKGNAME = ubl-settings-manager +pkgdir = default_target: all -.PHONY: all init depend debug prepare check build uninstall install clean help - all: init build init: @echo "Initialize ..."; \ - if [ -d ".git" ]; then \ - LATEST_TAG=$$(git describe --abbrev=0 --tags | sed 's/^v//'); \ - else \ - LATEST_TAG="Development"; \ - fi; \ - sed -r "s/^(string version_application).*/\1 = \"$${LATEST_TAG}\";/" -i ${FILE_VER}; \ - echo "-- Build path: ${CMAKE_BUILD_DIR}" - + version="$$(cat VERSION.md)"; \ + version=$${version:8}; \ + search="s/char *version_application.*$&"; \ + replace="char *version_application = \"$${version}\";"; \ + sed -i -e "$$search/$$replace/gi" source/ubl-settings-manager.h; \ + echo "-- Build path: ${CMAKE_BUILD_DIR}" + depend: - @echo "Check depends ..." - @for FILE_DEPEND in $(DEPENDS); do \ - if [ ! -f $${FILE_DEPEND} ]; then \ - echo "ERROR: Depend '$${FILE_DEPEND}' not found !"; \ - exit 1; \ - fi; \ - done; \ - $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B${CMAKE_BUILD_DIR} --check-build-system CMakeFiles/Makefile.cmake 1 || exit 1; \ + @echo "Check depends ..."; \ + if [ ! -f /bin/cmake ]; then \ + echo "-- Depend 'cmake' not found !"; \ + exit 1; \ + fi; \ echo "Check depends: OK" +# $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 debug: @echo "Debug ..." if [ ! -d ${CMAKE_BUILD_DIR} ]; then \ - $(CMAKE_COMMAND) -S${CMAKE_SOURCE_DIR} -B${CMAKE_BUILD_DIR} -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX="${PREFIX}"; \ + cmake -S${CMAKE_SOURCE_DIR} -B${CMAKE_BUILD_DIR} -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX="/usr"; \ fi; \ echo "Debug: OK" prepare: @echo "Prepare ..."; \ if [ ! -d ${CMAKE_BUILD_DIR} ]; then \ - $(CMAKE_COMMAND) -S${CMAKE_SOURCE_DIR} -B${CMAKE_BUILD_DIR} -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="${PREFIX}"; \ + cmake -S${CMAKE_SOURCE_DIR} -B${CMAKE_BUILD_DIR} -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="/usr"; \ fi; \ echo "Prepare: OK" @@ -65,64 +62,75 @@ check: build: depend prepare @echo "Build ..."; \ - $(MAKE_COMMAND) --directory=${CMAKE_BUILD_DIR}; \ - sed -r "s/^(string version_application).*/\1;/" -i ${FILE_VER}; \ + make --directory=${CMAKE_BUILD_DIR}; \ echo "Build: OK" uninstall: @echo "Uninstall ..." - @for FILE_PO in $(wildcard *.po); do \ - LANG=$${FILE_PO##*_};LANG=$${LANG%.*}; \ - FILE_MO=$${FILE_PO##*/}; FILE_MO="$${FILE_MO%_*.po}.mo"; \ - PATH_FILE_MO="${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \ - $(RM) "$${PATH_FILE_MO}"; \ - done @for SIZE in 16x16 32x32 48x48 scalable; do \ - $(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}/apps/com.ublinux.${PKGNAME}.svg"; \ - $(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}/apps/com.ublinux.${PKGNAME}.png"; \ + $(RM) "/usr/share/icons/hicolor/$${SIZE}/apps/${PKGNAME}.svg"; \ + $(RM) "/usr/share/"${pkgname}"/images/${PKGNAME}.png"; \ done @for FILE_SVG in $(wildcard *.svg); do \ for SIZE in 16x16 32x32 48x48 scalable; do \ - $(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}/status/$${FILE_SVG%.*}".{svg,png,jpg}; \ + $(RM) "/usr/share/icons/hicolor/$${SIZE}/status/$${FILE_SVG%.*}".{svg,png,jpg}; \ done; \ done - @$(RM) "${DESTDIR}${PREFIX}/bin/${PKGNAME}" - @$(RM) "${DESTDIR}/etc/xdg/${PKGNAME}/${PKGNAME}.conf" - @$(RM) "${DESTDIR}${PREFIX}/share/applications/${PKGNAME}.desktop" - @$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/com.ublinux.${PKGNAME}.svg" - @$(RM) "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}.policy" - @if [ -z ${DESTDIR} ]; then \ - [ -d "${DESTDIR}${PREFIX}/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}${PREFIX}/share/icons/hicolor/" &>/dev/null || true; \ - update-desktop-database --quiet &>/dev/null || true; \ - [ -d "${DESTDIR}${PREFIX}/share/applications" ] && touch "${DESTDIR}${PREFIX}/share/applications" &>/dev/null || true; \ - fi + @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="/usr/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \ + $(RM) "/usr/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \ + done + @$(RM) "/usr/bin/${PKGNAME}" + @$(RM) "/usr/share/applications/${PKGNAME}.desktop" + @$(RM) "/usr/share/icons/hicolor/scalable/apps/${PKGNAME}.png" + @$(RM) "/usr/share/icons/hicolor/scalable/apps/${PKGNAME}.svg" + @$(RM) "/usr/share/icons/hicolor/scalable/apps/ubl-settings-manager.svg" + @$(RM) "/usr/share/${PKGNAME}/ui/ublinux-logo.svg" + @$(RM) "/usr/share/${PKGNAME}/ui/${PKGNAME}.glade" + @$(RM) "/usr/share/${PKGNAME}/css/${PKGNAME}.css" + @$(RM) "/usr/share/${PKGNAME}/ui/${PKGNAME}-banner.png" + @$(RM) "/usr/share/${PKGNAME}/css/${PKGNAME}.css" + @$(RM) "/usr/share/${PKGNAME}/css/${PKGNAME}.css" + @$(RM) "/usr/share/${PKGNAME}/css/${PKGNAME}.css" + @$(RM) -d "/usr/share/${PKGNAME}/css" + @$(RM) -d "/usr/share/${PKGNAME}/ui" + @$(RM) -d "/usr/share/${PKGNAME}" + @$(RM) "/etc/ubconfig-main.conf" + @gtk-update-icon-cache -fiq /usr/share/icons/hicolor/ &>/dev/null + @update-desktop-database --quiet 2>/dev/null + @touch /usr/share/applications @echo "Uninstall: OK" install: check uninstall @echo "Install ..." @for FILE_PO in $(wildcard *.po); do \ LANG=$${FILE_PO##*_};LANG=$${LANG%.*}; \ - install -dm755 "${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES"; \ + install -dm755 /usr/share/locale/$${LANG}/LC_MESSAGES; \ FILE_MO=$${FILE_PO##*/}; FILE_MO="$${FILE_MO%_*.po}.mo"; \ - PATH_FILE_MO="${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \ - echo "$${FILE_PO}"; \ + PATH_FILE_MO="/usr/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \ + echo $${FILE_PO}; \ msgfmt "$${FILE_PO}" -v -f -o "$${PATH_FILE_MO}"; \ done @for SIZE in 16 32 48; do \ - install -dm755 "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps"; \ - rsvg-convert -w $${SIZE} -h $${SIZE} -f svg --keep-image-data "com.ublinux.${PKGNAME}.svg" -o "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/com.ublinux.${PKGNAME}.svg"; \ + install -dm755 /usr/share/icons/hicolor/$${SIZE}x$${SIZE}/apps; \ + rsvg-convert -w $${SIZE} -h $${SIZE} -f svg --keep-image-data ${PKGNAME}.svg -o "/usr/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/${PKGNAME}.svg"; \ done - @install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/" "com.ublinux.${PKGNAME}.svg" - @install -Dm644 -t "${DESTDIR}/usr/share/polkit-1/actions/" "com.ublinux.${PKGNAME}.policy" - @install -Dm755 -t "${DESTDIR}${PREFIX}/bin/" "${CMAKE_BUILD_DIR}/${PKGNAME}" - @install -Dm744 -t "${DESTDIR}/etc/xdg/${PKGNAME}/" "${PKGNAME}.conf" - @install -Dm644 -t "${DESTDIR}${PREFIX}/share/applications/" "${PKGNAME}.desktop" - @sed -e 's+/usr/bin+${PREFIX}/bin+g' -i ${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}.policy - @if [ -z ${DESTDIR} ]; then \ - [ -d "${DESTDIR}${PREFIX}/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}${PREFIX}/share/icons/hicolor/" &>/dev/null || true; \ - update-desktop-database --quiet &>/dev/null || true; \ - [ -d "${DESTDIR}${PREFIX}/share/applications" ] && touch "${DESTDIR}${PREFIX}/share/applications" &>/dev/null || true; \ - fi + @install -Dm644 -t /usr/share/icons/hicolor/scalable/apps/ ${PKGNAME}.svg + @install -Dm755 -t /usr/bin/ ${CMAKE_BUILD_DIR}/${PKGNAME} + @install -Dm644 -t /usr/share/applications/ ${PKGNAME}.desktop + @install -Dm755 /usr/share/${PKGNAME}/ -d ui + @install -Dm755 /usr/share/${PKGNAME}/ -d css + @install -Dm644 -t /usr/share/${PKGNAME}/ui/ ${PKGNAME}.glade + @install -Dm644 -t /usr/share/${PKGNAME}/css/ ${PKGNAME}.css + @install -Dm644 -t /usr/share/${PKGNAME}/ui/ ublinux-logo.svg + @install -Dm644 -t /etc/ ubconfig-main.conf + @chmod 766 /etc/ubconfig-main.conf + @install -Dm644 -t /usr/share/${PKGNAME}/ui/ ${PKGNAME}-banner.png + @gtk-update-icon-cache -fiq /usr/share/icons/hicolor/ &>/dev/null + @update-desktop-database --quiet 2>/dev/null + @touch /usr/share/applications @echo "Install: OK" clean: @@ -135,12 +143,12 @@ clean: fi help: - @echo "The following are some of the valid targets for this Makefile:"; \ - echo "... all (the default if no target is provided)"; \ - echo "... init"; \ - echo "... debug"; \ - echo "... prepare"; \ - echo "... compile"; \ - echo "... install"; \ - echo "... uninstall"; \ - echo "... clean" \ No newline at end of file + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... init" + @echo "... debug" + @echo "... prepare" + @echo "... compile" + @echo "... install" + @echo "... uninstall" + @echo "... clean" diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 19ec51d..6279e9e 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -8,86 +8,18 @@ include_directories(${GTK_INCLUDE_DIRS}) link_directories(${GTK_LIBRARY_DIRS}) add_definitions(${GTK_CFLAGS_OTHER}) -#pkg_check_modules(VTE291 REQUIRED vte-2.91) -#include_directories(${VTE291_INCLUDE_DIRS}) -#link_directories(${VTE291_LIBRARY_DIRS}) -#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}) - add_definitions(${WEBKIT_CFLAGS_OTHER}) -endif() - -configure_file(ubl-cmake.in ubl-cmake.h) - -file(COPY ${CMAKE_CURRENT_BINARY_DIR}/ubl-cmake.h DESTINATION ./) - -set(GRESOURCE_C resources.c) -set(GRESOURCE_XML gresource.xml) - -find_program(GLIB_COMPILE_RESOURCES NAMES glib-compile-resources REQUIRED) -add_custom_target(GLADE ubl-settings-manager.glade) - -set(DEPENDFILES - ../ubl-settings-manager.glade - ../gresource.xml - ../ubl-settings-manager-banner.png - ../ubl-settings-manager.css - ) - -file(COPY ${DEPENDFILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) - -add_custom_command( - OUTPUT ${GRESOURCE_C} - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMAND ${GLIB_COMPILE_RESOURCES} - ARGS - --generate-source - --target=${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C} - ${GRESOURCE_XML} - VERBATIM - MAIN_DEPENDENCY ${GRESOURCE_XML} - DEPENDS - ${GLADE} -) -add_custom_target( - 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 \ - -O2 -pipe -fno-plt -fexceptions \ - -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security \ - -fstack-clash-protection -fcf-protection") - +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always -lm") set(SOURCE_FILES ubl-settings-manager.c - ubl-settings-manager.h - ${CMAKE_CURRENT_BINARY_DIR}/ubl-cmake.h - ) + ubl-settings-manager.h) set(LIBRARIES ${GTK_LIBRARIES} - ${WEBKIT_LIBRARIES} -# ${VTE291_LIBRARIES} pthread) -add_executable(${PROJECT_NAME} ${SOURCE_FILES} ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}) -target_link_libraries(${PROJECT_NAME} PUBLIC ${LIBRARIES}) -target_include_directories(${PROJECT_NAME} PUBLIC ${PROJECT_BINARY_DIR}) -set_source_files_properties( - ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C} - PROPERTIES GENERATED TRUE -) -install(TARGETS ${PROJECT_NAME} DESTINATION bin) -add_dependencies(${PROJECT_NAME} dummy-resource) \ No newline at end of file +add_executable(ubl-settings-manager ${SOURCE_FILES}) +target_link_libraries(ubl-settings-manager ${LIBRARIES}) +install(TARGETS ubl-settings-manager DESTINATION bin) \ No newline at end of file diff --git a/source/ubl-settings-manager.h b/source/ubl-settings-manager.h index 04d1de1..b6bb96f 100644 --- a/source/ubl-settings-manager.h +++ b/source/ubl-settings-manager.h @@ -3,58 +3,24 @@ #include #include -#include -#include -#include "ubl-cmake.h" -#ifdef WEBKIT_FOUND -#include -#endif -#define UBLINUX_WIKI_COMMAND "xdg-open https://wiki.ublinux.ru/ru/Программное_обеспечение/Программы_и_утилиты/Все/ubl-settings-manager" -#define UBLINUX_WIKI_LINK " https://wiki.ublinux.ru/ru/Программное_обеспечение/Программы_и_утилиты/Все/ubl-settings-manager" -#define check_web2kit_command "ldconfig -p |grep webkit2" - -#define cmdVersionText yon_char_get_augumented(yon_char_get_augumented(_("Version: "),version_application),"\n") -#define cmdHelpText yon_char_get_augumented(yon_char_get_augumented(_("ubl-settings-manager version: "),version_application),_("\nGTK settings manager for UBLinux\nUsage: ubl-settings-manager [OPTIONS...]\nOptions:\n -h, --help Show this help\n -V, --version Show package version\n --lock-settings Lock menu settings\n")) -#define GladePath "/com/ublinux/ui/ubl-settings-manager.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" -#define AppIconPath "com.ublinux.ubl-settings-manager" -#define AppBannerPath "/com/ublinux/images/ubl-settings-manager-banner.png" +#define GladePath "/usr/share/ubl-settings-manager/ui/ubl-settings-manager.glade" +#define CssPath "/usr/share/ubl-settings-manager/css/ubl-settings-manager.css" +#define GlobalConfigPath "/etc/ubconfig-main.conf" +#define UserConfigPath "/.config/ubl-settings-manager/ubconfig-main.conf" +#define AppIconPath "ubl-settings-manager" +#define AppBannerPath "/usr/share/ubl-settings-manager/ui/ubl-settings-manager-banner.png" #define DesktopPath "/usr/share/applications/" #define IconPicturesPath "/usr/share/icons/hicolor/scalable/apps/" +#define ErrIconPicturePath "/usr/share/icons/Faenza/emblems/32/emblem-important.png" +#define ublinux_logo "/usr/share/ubl-settings-manager/ui/ublinux-logo.svg" #define LocalePath "/usr/share/locale" #define LocaleName "ubl-settings-manager" +#define LogoPath "/usr/share/icons/hicolor/scalable/apps/ubl-settings-manager.svg" #define ubl_settings_infoPath "ubl-settings-info" #define ubl_settings_infoPathLaunch "ubl-settings-info --socket-id=" -typedef char* string; -string version_application; - -#define UBL_SETTINGS_MANAGER_TITLE _("UBLinux Settings Manager") -#define UBL_SETTINGS_MANAGER_ABOUT_TITLE _("About UBLinux Settings Manager") -#define ABOUT_PROJECT_HOME_PAGE_LABEL _("Project Home Page") -#define ABOUT_PROJECT_COMMENTS_LABEL _("Settings manager for UBLinux") -#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 ABOUT_LABEL _("About...") -#define DOCUMENTATION_LABEL _("Documentation") -#define SETTINGS_LABEL _("Settings") -#define ALWAYS_REDIRECT_LABEL _("Always redirect") -#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 WINDOW_THEME_LABEL _("Window theme") -#define ICON_SIZE_LABEL _("Icon size") -#define BACK_TO_ALL_SETTINGS_LABEL _("All settings") - +char *version_application = "1.3"; typedef struct apps{ char *Name; @@ -114,12 +80,6 @@ typedef struct { char *lastUser; int changed; int fullscreen; - int lock_settings; - int GnomeDoubleClick; - int MainDoubleClick; - int *currentDoubleClick; - dictionary *SettingsSections; - int BannerHidden; } config; typedef struct { @@ -177,7 +137,7 @@ typedef struct { GtkWidget *GnomePaned; GtkWidget *GnomeInfoLabel; GtkWidget *workingwindow; - GtkWidget *settingsSectionsSettingsButton; + // GtkWidget *settingsSectionsSettingsButton; GtkWidget *SectionSettingsWindow; GtkWidget *SectionSettingsPack; dictionary *SettingsSections; @@ -199,13 +159,6 @@ typedef struct { apps *applist; GtkWidget *icvpack; GtkWidget *infoWarningWindow; - GtkWidget *infoWarningButton; - GtkWidget *infoWarningLabel; - GtkWidget *BannerRevealer; - GtkWidget *Revealer; - GtkWidget *settingsDoubleClickSwitch; - GtkWidget *settingsDoubleClickLabel; - GtkWidget *BackToSettingsLabel; } actionWidgets; @@ -244,13 +197,11 @@ void sort_apps(apps *applist,int size); apps *find_apps(int *sizef); int check_categories(apps app, char *catstocheck); int setup_config(); -void update_double_clicks(dictionary *widgetsD); -void yon_icv_resize_item(dictionary *icdict, GtkWidget *paned); dictionary *yon_theme_new(dictionary **widgetss, GtkBuilder *builder, char *theme_id, apps *applist, int appsize); char *yon_char_get_augumented(char *source, char *append); char *yon_cut(char *source, int size, int startpos); int yon_set_sections(IconSection *section); -void yon_set_default_sections(dictionary *section); +void yon_set_default_sections(dictionary **section); char *yon_char_divide_search(char *source, char* dividepos, int delete_divider); char *yon_char_divide(char *source, int dividepos); dictionary *yon_section_new(dictionary *section, char *section_name, char *categories); @@ -258,12 +209,6 @@ void yon_switch_theme(dictionary **dict, dictionary *newone); dictionary *yon_dictionary_find(dictionary **dict, char *key); void yon_segment_show(actionWidgets *widgets, SectionSettingSegment *sgm); dictionary *yon_dictionary_create_empty(); -dictionary *yon_dictionary_rip(dictionary *dict); -dictionary *yon_dictionary_get_last(dictionary *dict); -dictionary *yon_dictionary_switch_places(dictionary *dict,int aim); -dictionary *yon_dictionary_create_with_data(char *key, void *data); -dictionary *yon_dictionary_create_with_data_connected(dictionary *dict, char *key, void *data); -dictionary *yon_dictionary_connect(dictionary *old, dictionary *toconnect); SectionSettingSegment *yon_create_section_setting(char *name, char *categories); void yon_segments_show(actionWidgets *widgets); void yon_segments_hide(actionWidgets *widgets); @@ -271,6 +216,7 @@ void yon_dictionary_make_first(dictionary *dict); dictionary *yon_create_icon_section_list(dictionary *sections); int yon_show_icon_views(dictionary *IVS,actionWidgets *widgets); void yon_icon_size_convert(int mode); +void on_about_system(GtkWidget *button, actionWidgets *widgets); char *yon_char_new(char *chr); int launch(thread_output *thread); float yon_time_average(dictionary *times); @@ -278,6 +224,5 @@ void yon_time_reg_for_average(dictionary *listofregs, int size, time_t tm); void yon_dictionary_switch_to_last(dictionary **dict); dictionary *yon_dictionary_create_conneced(dictionary *targetdict); int yon_get_icon_size(int size); -char *yon_char_from_int(int int_to_convert); #endif \ No newline at end of file -- 2.35.1 From d2579e5315b2eb529a3f959825657a49a112a1b1 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 19 Jul 2023 10:03:52 +0600 Subject: [PATCH 03/12] reverting --- Makefile | 156 +++++++++++++++++----------------- source/CMakeLists.txt | 6 +- source/ubl-settings-manager.h | 35 +++++--- 3 files changed, 108 insertions(+), 89 deletions(-) diff --git a/Makefile b/Makefile index 32ef201..b66026b 100644 --- a/Makefile +++ b/Makefile @@ -6,48 +6,49 @@ MAKEFILE_DIR := $(notdir $(patsubst %/,%,$(dir $(MAKEFILE_FILEPATH)))) MAKEFILE_PATH := $(dir $(MAKEFILE_FILEPATH)) CMAKE_COMMAND = cmake -#CMAKE_SOURCE_DIR = $(MAKEFILE_PATH)source -#CMAKE_BUILD_DIR = $(MAKEFILE_PATH)compile -CMAKE_SOURCE_DIR = ./source -CMAKE_BUILD_DIR = ./compile -DEPENDS = cmake +CMAKE_SOURCE_DIR = $(MAKEFILE_PATH)source +CMAKE_BUILD_DIR = $(MAKEFILE_PATH)compile +#CMAKE_SOURCE_DIR = ./source +#CMAKE_BUILD_DIR = ./compile +FILE_VERSION = VERSION.md +DEPENDS = /bin/cmake +PREFIX ?= /usr PKGNAME = $(MAKEFILE_DIR) #PKGNAME = ubl-settings-manager -pkgdir = default_target: all +.PHONY: all init depend debug prepare check build uninstall install clean up_ver help + all: init build init: @echo "Initialize ..."; \ - version="$$(cat VERSION.md)"; \ - version=$${version:8}; \ - search="s/char *version_application.*$&"; \ - replace="char *version_application = \"$${version}\";"; \ - sed -i -e "$$search/$$replace/gi" source/ubl-settings-manager.h; \ - echo "-- Build path: ${CMAKE_BUILD_DIR}" - + sed -r "s/(version_application = ).*/\1\"$$(grep 'VERSION' ${FILE_VERSION} | cut -d" " -f2)\";/" -i source/ubl-settings-manager.h; \ + echo "-- Build path: ${CMAKE_BUILD_DIR}" + depend: - @echo "Check depends ..."; \ - if [ ! -f /bin/cmake ]; then \ - echo "-- Depend 'cmake' not found !"; \ - exit 1; \ - fi; \ + @echo "Check depends ..." + @for FILE_DEPEND in $(DEPENDS); do \ + if [ ! -f $${FILE_DEPEND} ]; then \ + echo "ERROR: Depend '$${FILE_DEPEND}' not found !"; \ + exit 1; \ + fi; \ + done; \ echo "Check depends: OK" # $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 debug: @echo "Debug ..." if [ ! -d ${CMAKE_BUILD_DIR} ]; then \ - cmake -S${CMAKE_SOURCE_DIR} -B${CMAKE_BUILD_DIR} -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX="/usr"; \ + $(CMAKE_COMMAND) -S${CMAKE_SOURCE_DIR} -B${CMAKE_BUILD_DIR} -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX="${PREFIX}"; \ fi; \ echo "Debug: OK" prepare: @echo "Prepare ..."; \ if [ ! -d ${CMAKE_BUILD_DIR} ]; then \ - cmake -S${CMAKE_SOURCE_DIR} -B${CMAKE_BUILD_DIR} -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="/usr"; \ + $(CMAKE_COMMAND) -S${CMAKE_SOURCE_DIR} -B${CMAKE_BUILD_DIR} -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="${PREFIX}"; \ fi; \ echo "Prepare: OK" @@ -67,70 +68,64 @@ 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}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \ + $(RM) "$${PATH_FILE_MO}"; \ + done @for SIZE in 16x16 32x32 48x48 scalable; do \ - $(RM) "/usr/share/icons/hicolor/$${SIZE}/apps/${PKGNAME}.svg"; \ - $(RM) "/usr/share/"${pkgname}"/images/${PKGNAME}.png"; \ + $(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}/apps/com.ublinux.${PKGNAME}.svg"; \ + $(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}/apps/com.ublinux.${PKGNAME}.png"; \ done @for FILE_SVG in $(wildcard *.svg); do \ for SIZE in 16x16 32x32 48x48 scalable; do \ - $(RM) "/usr/share/icons/hicolor/$${SIZE}/status/$${FILE_SVG%.*}".{svg,png,jpg}; \ + $(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}/status/$${FILE_SVG%.*}".{svg,png,jpg}; \ done; \ done - @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="/usr/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \ - $(RM) "/usr/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \ - done - @$(RM) "/usr/bin/${PKGNAME}" - @$(RM) "/usr/share/applications/${PKGNAME}.desktop" - @$(RM) "/usr/share/icons/hicolor/scalable/apps/${PKGNAME}.png" - @$(RM) "/usr/share/icons/hicolor/scalable/apps/${PKGNAME}.svg" - @$(RM) "/usr/share/icons/hicolor/scalable/apps/ubl-settings-manager.svg" - @$(RM) "/usr/share/${PKGNAME}/ui/ublinux-logo.svg" - @$(RM) "/usr/share/${PKGNAME}/ui/${PKGNAME}.glade" - @$(RM) "/usr/share/${PKGNAME}/css/${PKGNAME}.css" - @$(RM) "/usr/share/${PKGNAME}/ui/${PKGNAME}-banner.png" - @$(RM) "/usr/share/${PKGNAME}/css/${PKGNAME}.css" - @$(RM) "/usr/share/${PKGNAME}/css/${PKGNAME}.css" - @$(RM) "/usr/share/${PKGNAME}/css/${PKGNAME}.css" - @$(RM) -d "/usr/share/${PKGNAME}/css" - @$(RM) -d "/usr/share/${PKGNAME}/ui" - @$(RM) -d "/usr/share/${PKGNAME}" - @$(RM) "/etc/ubconfig-main.conf" - @gtk-update-icon-cache -fiq /usr/share/icons/hicolor/ &>/dev/null - @update-desktop-database --quiet 2>/dev/null - @touch /usr/share/applications + @$(RM) "${DESTDIR}${PREFIX}/bin/${PKGNAME}" + @$(RM) "${DESTDIR}${PREFIX}/etc/xdg/${PKGNAME}/${PKGNAME}.conf" + @$(RM) "${DESTDIR}${PREFIX}/share/applications/${PKGNAME}.desktop" + @$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/com.ublinux.${PKGNAME}.svg" + @$(RM) -rd "${DESTDIR}${PREFIX}/share/${PKGNAME}" + @if [ -z ${DESTDIR} ]; then \ + [ -d "${DESTDIR}${PREFIX}/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}${PREFIX}/share/icons/hicolor/" &>/dev/null || true; \ + update-desktop-database --quiet &>/dev/null || true; \ + [ -d "${DESTDIR}${PREFIX}/share/applications" ] && touch "${DESTDIR}${PREFIX}/share/applications" &>/dev/null || true; \ + fi @echo "Uninstall: OK" install: check uninstall @echo "Install ..." @for FILE_PO in $(wildcard *.po); do \ LANG=$${FILE_PO##*_};LANG=$${LANG%.*}; \ - install -dm755 /usr/share/locale/$${LANG}/LC_MESSAGES; \ + install -dm755 "${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES"; \ FILE_MO=$${FILE_PO##*/}; FILE_MO="$${FILE_MO%_*.po}.mo"; \ - PATH_FILE_MO="/usr/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \ - echo $${FILE_PO}; \ + PATH_FILE_MO="${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \ + echo "$${FILE_PO}"; \ msgfmt "$${FILE_PO}" -v -f -o "$${PATH_FILE_MO}"; \ done @for SIZE in 16 32 48; do \ - install -dm755 /usr/share/icons/hicolor/$${SIZE}x$${SIZE}/apps; \ - rsvg-convert -w $${SIZE} -h $${SIZE} -f svg --keep-image-data ${PKGNAME}.svg -o "/usr/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/${PKGNAME}.svg"; \ + install -dm755 "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps"; \ + rsvg-convert -w $${SIZE} -h $${SIZE} -f svg --keep-image-data "com.ublinux.${PKGNAME}.svg" -o "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/com.ublinux.${PKGNAME}.svg"; \ done - @install -Dm644 -t /usr/share/icons/hicolor/scalable/apps/ ${PKGNAME}.svg - @install -Dm755 -t /usr/bin/ ${CMAKE_BUILD_DIR}/${PKGNAME} - @install -Dm644 -t /usr/share/applications/ ${PKGNAME}.desktop - @install -Dm755 /usr/share/${PKGNAME}/ -d ui - @install -Dm755 /usr/share/${PKGNAME}/ -d css - @install -Dm644 -t /usr/share/${PKGNAME}/ui/ ${PKGNAME}.glade - @install -Dm644 -t /usr/share/${PKGNAME}/css/ ${PKGNAME}.css - @install -Dm644 -t /usr/share/${PKGNAME}/ui/ ublinux-logo.svg - @install -Dm644 -t /etc/ ubconfig-main.conf - @chmod 766 /etc/ubconfig-main.conf - @install -Dm644 -t /usr/share/${PKGNAME}/ui/ ${PKGNAME}-banner.png - @gtk-update-icon-cache -fiq /usr/share/icons/hicolor/ &>/dev/null - @update-desktop-database --quiet 2>/dev/null - @touch /usr/share/applications + @install -dm755 "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps" + @install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/" "com.ublinux.${PKGNAME}.svg" + @install -Dm755 -t "${DESTDIR}${PREFIX}/bin/" "${CMAKE_BUILD_DIR}/${PKGNAME}" + @install -dm755 "${DESTDIR}${PREFIX}/etc/xdg" + @install -Dm744 -t "${DESTDIR}${PREFIX}/etc/xdg/${PKGNAME}/" "${PKGNAME}.conf" + @install -dm755 "${DESTDIR}${PREFIX}/share/applications" + @install -Dm644 -t "${DESTDIR}${PREFIX}/share/applications/" "${PKGNAME}.desktop" + @install -dm755 "${DESTDIR}${PREFIX}/share/${PKGNAME}"/{ui,css,images} + @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/ui/" "${PKGNAME}.glade" + @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/css/" "${PKGNAME}.css" + @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/images/" "ublinux-logo.svg" + @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/images/" "${PKGNAME}-banner.png" + @if [ -z ${DESTDIR} ]; then \ + [ -d "${DESTDIR}${PREFIX}/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}${PREFIX}/share/icons/hicolor/" &>/dev/null || true; \ + update-desktop-database --quiet &>/dev/null || true; \ + [ -d "${DESTDIR}${PREFIX}/share/applications" ] && touch "${DESTDIR}${PREFIX}/share/applications" &>/dev/null || true; \ + fi @echo "Install: OK" clean: @@ -142,13 +137,22 @@ clean: echo "Clean: OK"; \ fi +up_ver: + @CURRENT=$$(grep 'VERSION' ${FILE_VERSION} | cut -d" " -f2); \ + MAJOR=$$(cut -d. -f1 <<< $${CURRENT}); \ + MINOR=$$(cut -d. -f2 <<< $${CURRENT}); \ + VER="$${MAJOR}.$$(($${MINOR}+1))"; \ + sed "s/VERSION *[[:digit:]]*.*/VERSION $${VER}/" -i ${FILE_VERSION}; \ + echo "Updated version to VERSION.md: $${CURRENT} to $${VER}" + help: - @echo "The following are some of the valid targets for this Makefile:" - @echo "... all (the default if no target is provided)" - @echo "... init" - @echo "... debug" - @echo "... prepare" - @echo "... compile" - @echo "... install" - @echo "... uninstall" - @echo "... clean" + @echo "The following are some of the valid targets for this Makefile:"; \ + echo "... all (the default if no target is provided)"; \ + echo "... init"; \ + echo "... debug"; \ + echo "... prepare"; \ + echo "... compile"; \ + echo "... install"; \ + echo "... uninstall"; \ + echo "... clean"; \ + echo "... up_ver" diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 6279e9e..1859049 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -9,7 +9,11 @@ link_directories(${GTK_LIBRARY_DIRS}) add_definitions(${GTK_CFLAGS_OTHER}) #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always -std=c++2a") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always -lm") +#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 \ + -O2 -pipe -fno-plt -fexceptions \ + -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security \ + -fstack-clash-protection -fcf-protection") set(SOURCE_FILES ubl-settings-manager.c diff --git a/source/ubl-settings-manager.h b/source/ubl-settings-manager.h index b6bb96f..af8076c 100644 --- a/source/ubl-settings-manager.h +++ b/source/ubl-settings-manager.h @@ -3,24 +3,26 @@ #include #include +#include - +#define cmdVersionText yon_char_get_augumented(yon_char_get_augumented(_("Version: "),version_application),"\n") +#define cmdHelpText yon_char_get_augumented(yon_char_get_augumented(_("ubl-settings-manager version: "),version_application),_("\nGTK settings manager for UBLinux\nUsage: ubl-settings-manager [OPTIONS...]\nOptions:\n -h, --help Show this help\n -V, --version Show package version\n --lock-settings Lock menu settings\n")) #define GladePath "/usr/share/ubl-settings-manager/ui/ubl-settings-manager.glade" #define CssPath "/usr/share/ubl-settings-manager/css/ubl-settings-manager.css" -#define GlobalConfigPath "/etc/ubconfig-main.conf" -#define UserConfigPath "/.config/ubl-settings-manager/ubconfig-main.conf" -#define AppIconPath "ubl-settings-manager" -#define AppBannerPath "/usr/share/ubl-settings-manager/ui/ubl-settings-manager-banner.png" +#define GlobalConfigPath "/etc/xdg/ubl-settings-manager/ubl-settings-manager.conf" +#define UserConfigPath "/.config/ubl-settings-manager/ubl-settings-manager.conf" +#define AppIconPath "com.ublinux.ubl-settings-manager" +#define AppBannerPath "/usr/share/ubl-settings-manager/images/ubl-settings-manager-banner.png" #define DesktopPath "/usr/share/applications/" #define IconPicturesPath "/usr/share/icons/hicolor/scalable/apps/" -#define ErrIconPicturePath "/usr/share/icons/Faenza/emblems/32/emblem-important.png" -#define ublinux_logo "/usr/share/ubl-settings-manager/ui/ublinux-logo.svg" +#define ublinux_logo "/usr/share/ubl-settings-manager/images/ublinux-logo.svg" #define LocalePath "/usr/share/locale" #define LocaleName "ubl-settings-manager" -#define LogoPath "/usr/share/icons/hicolor/scalable/apps/ubl-settings-manager.svg" #define ubl_settings_infoPath "ubl-settings-info" #define ubl_settings_infoPathLaunch "ubl-settings-info --socket-id=" -char *version_application = "1.3"; +typedef char* string; +string version_application = "1.2"; + typedef struct apps{ char *Name; @@ -80,6 +82,8 @@ typedef struct { char *lastUser; int changed; int fullscreen; + int lock_settings; + dictionary *SettingsSections; } config; typedef struct { @@ -137,7 +141,7 @@ typedef struct { GtkWidget *GnomePaned; GtkWidget *GnomeInfoLabel; GtkWidget *workingwindow; - // GtkWidget *settingsSectionsSettingsButton; + GtkWidget *settingsSectionsSettingsButton; GtkWidget *SectionSettingsWindow; GtkWidget *SectionSettingsPack; dictionary *SettingsSections; @@ -159,6 +163,8 @@ typedef struct { apps *applist; GtkWidget *icvpack; GtkWidget *infoWarningWindow; + GtkWidget *infoWarningButton; + GtkWidget *infoWarningLabel; } actionWidgets; @@ -197,11 +203,12 @@ void sort_apps(apps *applist,int size); apps *find_apps(int *sizef); int check_categories(apps app, char *catstocheck); int setup_config(); +void yon_icv_resize_item(dictionary *icdict, GtkWidget *paned); dictionary *yon_theme_new(dictionary **widgetss, GtkBuilder *builder, char *theme_id, apps *applist, int appsize); char *yon_char_get_augumented(char *source, char *append); char *yon_cut(char *source, int size, int startpos); int yon_set_sections(IconSection *section); -void yon_set_default_sections(dictionary **section); +void yon_set_default_sections(dictionary *section); char *yon_char_divide_search(char *source, char* dividepos, int delete_divider); char *yon_char_divide(char *source, int dividepos); dictionary *yon_section_new(dictionary *section, char *section_name, char *categories); @@ -209,6 +216,11 @@ void yon_switch_theme(dictionary **dict, dictionary *newone); dictionary *yon_dictionary_find(dictionary **dict, char *key); void yon_segment_show(actionWidgets *widgets, SectionSettingSegment *sgm); dictionary *yon_dictionary_create_empty(); +dictionary *yon_dictionary_rip(dictionary *dict); +dictionary *yon_dictionary_get_last(dictionary *dict); +dictionary *yon_dictionary_switch_places(dictionary *dict,int aim); +dictionary *yon_dictionary_create_with_data(char *key, void *data); +dictionary *yon_dictionary_create_with_data_connected(dictionary *dict, char *key, void *data); SectionSettingSegment *yon_create_section_setting(char *name, char *categories); void yon_segments_show(actionWidgets *widgets); void yon_segments_hide(actionWidgets *widgets); @@ -216,7 +228,6 @@ void yon_dictionary_make_first(dictionary *dict); dictionary *yon_create_icon_section_list(dictionary *sections); int yon_show_icon_views(dictionary *IVS,actionWidgets *widgets); void yon_icon_size_convert(int mode); -void on_about_system(GtkWidget *button, actionWidgets *widgets); char *yon_char_new(char *chr); int launch(thread_output *thread); float yon_time_average(dictionary *times); -- 2.35.1 From 284165f8db8d3935b3ebfb07abed285639397dfc Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 19 Jul 2023 10:09:58 +0600 Subject: [PATCH 04/12] reverting --- Makefile | 48 +++++++++-------------- source/CMakeLists.txt | 72 +++++++++++++++++++++++++++++++++-- source/ubl-settings-manager.h | 54 +++++++++++++++++++++++--- 3 files changed, 135 insertions(+), 39 deletions(-) diff --git a/Makefile b/Makefile index b66026b..649dc53 100644 --- a/Makefile +++ b/Makefile @@ -8,23 +8,25 @@ MAKEFILE_PATH := $(dir $(MAKEFILE_FILEPATH)) CMAKE_COMMAND = cmake CMAKE_SOURCE_DIR = $(MAKEFILE_PATH)source CMAKE_BUILD_DIR = $(MAKEFILE_PATH)compile -#CMAKE_SOURCE_DIR = ./source -#CMAKE_BUILD_DIR = ./compile -FILE_VERSION = VERSION.md DEPENDS = /bin/cmake -PREFIX ?= /usr +PREFIX ?= /usr/local PKGNAME = $(MAKEFILE_DIR) -#PKGNAME = ubl-settings-manager +FILE_VER = source/${PKGNAME}.h default_target: all -.PHONY: all init depend debug prepare check build uninstall install clean up_ver help +.PHONY: all init depend debug prepare check build uninstall install clean help all: init build init: @echo "Initialize ..."; \ - sed -r "s/(version_application = ).*/\1\"$$(grep 'VERSION' ${FILE_VERSION} | cut -d" " -f2)\";/" -i source/ubl-settings-manager.h; \ + if [ -d ".git" ]; then \ + LATEST_TAG=$$(git describe --abbrev=0 --tags | sed 's/^v//'); \ + else \ + LATEST_TAG="Development"; \ + fi; \ + sed -r "s/^(string version_application).*/\1 = \"$${LATEST_TAG}\";/" -i ${FILE_VER}; \ echo "-- Build path: ${CMAKE_BUILD_DIR}" depend: @@ -35,8 +37,8 @@ depend: exit 1; \ fi; \ done; \ + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B${CMAKE_BUILD_DIR} --check-build-system CMakeFiles/Makefile.cmake 1 || exit 1; \ echo "Check depends: OK" -# $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 debug: @echo "Debug ..." @@ -63,7 +65,8 @@ check: build: depend prepare @echo "Build ..."; \ - make --directory=${CMAKE_BUILD_DIR}; \ + $(MAKE_COMMAND) --directory=${CMAKE_BUILD_DIR}; \ + sed -r "s/^(string version_application).*/\1;/" -i ${FILE_VER}; \ echo "Build: OK" uninstall: @@ -84,10 +87,10 @@ uninstall: done; \ done @$(RM) "${DESTDIR}${PREFIX}/bin/${PKGNAME}" - @$(RM) "${DESTDIR}${PREFIX}/etc/xdg/${PKGNAME}/${PKGNAME}.conf" + @$(RM) "${DESTDIR}/etc/xdg/${PKGNAME}/${PKGNAME}.conf" @$(RM) "${DESTDIR}${PREFIX}/share/applications/${PKGNAME}.desktop" @$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/com.ublinux.${PKGNAME}.svg" - @$(RM) -rd "${DESTDIR}${PREFIX}/share/${PKGNAME}" + @$(RM) "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}.policy" @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; \ @@ -109,18 +112,12 @@ install: check uninstall install -dm755 "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps"; \ rsvg-convert -w $${SIZE} -h $${SIZE} -f svg --keep-image-data "com.ublinux.${PKGNAME}.svg" -o "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/com.ublinux.${PKGNAME}.svg"; \ done - @install -dm755 "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/" "com.ublinux.${PKGNAME}.svg" + @install -Dm644 -t "${DESTDIR}/usr/share/polkit-1/actions/" "com.ublinux.${PKGNAME}.policy" @install -Dm755 -t "${DESTDIR}${PREFIX}/bin/" "${CMAKE_BUILD_DIR}/${PKGNAME}" - @install -dm755 "${DESTDIR}${PREFIX}/etc/xdg" - @install -Dm744 -t "${DESTDIR}${PREFIX}/etc/xdg/${PKGNAME}/" "${PKGNAME}.conf" - @install -dm755 "${DESTDIR}${PREFIX}/share/applications" + @install -Dm744 -t "${DESTDIR}/etc/xdg/${PKGNAME}/" "${PKGNAME}.conf" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/applications/" "${PKGNAME}.desktop" - @install -dm755 "${DESTDIR}${PREFIX}/share/${PKGNAME}"/{ui,css,images} - @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/ui/" "${PKGNAME}.glade" - @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/css/" "${PKGNAME}.css" - @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/images/" "ublinux-logo.svg" - @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/images/" "${PKGNAME}-banner.png" + @sed -e 's+/usr/bin+${PREFIX}/bin+g' -i ${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}.policy @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; \ @@ -137,14 +134,6 @@ clean: echo "Clean: OK"; \ fi -up_ver: - @CURRENT=$$(grep 'VERSION' ${FILE_VERSION} | cut -d" " -f2); \ - MAJOR=$$(cut -d. -f1 <<< $${CURRENT}); \ - MINOR=$$(cut -d. -f2 <<< $${CURRENT}); \ - VER="$${MAJOR}.$$(($${MINOR}+1))"; \ - sed "s/VERSION *[[:digit:]]*.*/VERSION $${VER}/" -i ${FILE_VERSION}; \ - echo "Updated version to VERSION.md: $${CURRENT} to $${VER}" - help: @echo "The following are some of the valid targets for this Makefile:"; \ echo "... all (the default if no target is provided)"; \ @@ -154,5 +143,4 @@ help: echo "... compile"; \ echo "... install"; \ echo "... uninstall"; \ - echo "... clean"; \ - echo "... up_ver" + echo "... clean" \ No newline at end of file diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 1859049..19ec51d 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -8,22 +8,86 @@ include_directories(${GTK_INCLUDE_DIRS}) link_directories(${GTK_LIBRARY_DIRS}) add_definitions(${GTK_CFLAGS_OTHER}) +#pkg_check_modules(VTE291 REQUIRED vte-2.91) +#include_directories(${VTE291_INCLUDE_DIRS}) +#link_directories(${VTE291_LIBRARY_DIRS}) +#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}) + add_definitions(${WEBKIT_CFLAGS_OTHER}) +endif() + +configure_file(ubl-cmake.in ubl-cmake.h) + +file(COPY ${CMAKE_CURRENT_BINARY_DIR}/ubl-cmake.h DESTINATION ./) + +set(GRESOURCE_C resources.c) +set(GRESOURCE_XML gresource.xml) + +find_program(GLIB_COMPILE_RESOURCES NAMES glib-compile-resources REQUIRED) +add_custom_target(GLADE ubl-settings-manager.glade) + +set(DEPENDFILES + ../ubl-settings-manager.glade + ../gresource.xml + ../ubl-settings-manager-banner.png + ../ubl-settings-manager.css + ) + +file(COPY ${DEPENDFILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) + +add_custom_command( + OUTPUT ${GRESOURCE_C} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMAND ${GLIB_COMPILE_RESOURCES} + ARGS + --generate-source + --target=${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C} + ${GRESOURCE_XML} + VERBATIM + MAIN_DEPENDENCY ${GRESOURCE_XML} + DEPENDS + ${GLADE} +) +add_custom_target( + 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 \ -O2 -pipe -fno-plt -fexceptions \ -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security \ -fstack-clash-protection -fcf-protection") + set(SOURCE_FILES ubl-settings-manager.c - ubl-settings-manager.h) + ubl-settings-manager.h + ${CMAKE_CURRENT_BINARY_DIR}/ubl-cmake.h + ) set(LIBRARIES ${GTK_LIBRARIES} + ${WEBKIT_LIBRARIES} +# ${VTE291_LIBRARIES} pthread) -add_executable(ubl-settings-manager ${SOURCE_FILES}) -target_link_libraries(ubl-settings-manager ${LIBRARIES}) -install(TARGETS ubl-settings-manager DESTINATION bin) \ No newline at end of file +add_executable(${PROJECT_NAME} ${SOURCE_FILES} ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}) +target_link_libraries(${PROJECT_NAME} PUBLIC ${LIBRARIES}) +target_include_directories(${PROJECT_NAME} PUBLIC ${PROJECT_BINARY_DIR}) +set_source_files_properties( + ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C} + PROPERTIES GENERATED TRUE +) +install(TARGETS ${PROJECT_NAME} DESTINATION bin) +add_dependencies(${PROJECT_NAME} dummy-resource) \ No newline at end of file diff --git a/source/ubl-settings-manager.h b/source/ubl-settings-manager.h index af8076c..04d1de1 100644 --- a/source/ubl-settings-manager.h +++ b/source/ubl-settings-manager.h @@ -4,24 +4,56 @@ #include #include #include +#include +#include "ubl-cmake.h" +#ifdef WEBKIT_FOUND +#include +#endif + +#define UBLINUX_WIKI_COMMAND "xdg-open https://wiki.ublinux.ru/ru/Программное_обеспечение/Программы_и_утилиты/Все/ubl-settings-manager" +#define UBLINUX_WIKI_LINK " https://wiki.ublinux.ru/ru/Программное_обеспечение/Программы_и_утилиты/Все/ubl-settings-manager" + +#define check_web2kit_command "ldconfig -p |grep webkit2" #define cmdVersionText yon_char_get_augumented(yon_char_get_augumented(_("Version: "),version_application),"\n") #define cmdHelpText yon_char_get_augumented(yon_char_get_augumented(_("ubl-settings-manager version: "),version_application),_("\nGTK settings manager for UBLinux\nUsage: ubl-settings-manager [OPTIONS...]\nOptions:\n -h, --help Show this help\n -V, --version Show package version\n --lock-settings Lock menu settings\n")) -#define GladePath "/usr/share/ubl-settings-manager/ui/ubl-settings-manager.glade" -#define CssPath "/usr/share/ubl-settings-manager/css/ubl-settings-manager.css" +#define GladePath "/com/ublinux/ui/ubl-settings-manager.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" #define AppIconPath "com.ublinux.ubl-settings-manager" -#define AppBannerPath "/usr/share/ubl-settings-manager/images/ubl-settings-manager-banner.png" +#define AppBannerPath "/com/ublinux/images/ubl-settings-manager-banner.png" #define DesktopPath "/usr/share/applications/" #define IconPicturesPath "/usr/share/icons/hicolor/scalable/apps/" -#define ublinux_logo "/usr/share/ubl-settings-manager/images/ublinux-logo.svg" #define LocalePath "/usr/share/locale" #define LocaleName "ubl-settings-manager" #define ubl_settings_infoPath "ubl-settings-info" #define ubl_settings_infoPathLaunch "ubl-settings-info --socket-id=" typedef char* string; -string version_application = "1.2"; +string version_application; + +#define UBL_SETTINGS_MANAGER_TITLE _("UBLinux Settings Manager") +#define UBL_SETTINGS_MANAGER_ABOUT_TITLE _("About UBLinux Settings Manager") +#define ABOUT_PROJECT_HOME_PAGE_LABEL _("Project Home Page") +#define ABOUT_PROJECT_COMMENTS_LABEL _("Settings manager for UBLinux") +#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 ABOUT_LABEL _("About...") +#define DOCUMENTATION_LABEL _("Documentation") +#define SETTINGS_LABEL _("Settings") +#define ALWAYS_REDIRECT_LABEL _("Always redirect") +#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 WINDOW_THEME_LABEL _("Window theme") +#define ICON_SIZE_LABEL _("Icon size") +#define BACK_TO_ALL_SETTINGS_LABEL _("All settings") typedef struct apps{ @@ -83,7 +115,11 @@ typedef struct { int changed; int fullscreen; int lock_settings; + int GnomeDoubleClick; + int MainDoubleClick; + int *currentDoubleClick; dictionary *SettingsSections; + int BannerHidden; } config; typedef struct { @@ -165,6 +201,11 @@ typedef struct { GtkWidget *infoWarningWindow; GtkWidget *infoWarningButton; GtkWidget *infoWarningLabel; + GtkWidget *BannerRevealer; + GtkWidget *Revealer; + GtkWidget *settingsDoubleClickSwitch; + GtkWidget *settingsDoubleClickLabel; + GtkWidget *BackToSettingsLabel; } actionWidgets; @@ -203,6 +244,7 @@ void sort_apps(apps *applist,int size); apps *find_apps(int *sizef); int check_categories(apps app, char *catstocheck); int setup_config(); +void update_double_clicks(dictionary *widgetsD); void yon_icv_resize_item(dictionary *icdict, GtkWidget *paned); dictionary *yon_theme_new(dictionary **widgetss, GtkBuilder *builder, char *theme_id, apps *applist, int appsize); char *yon_char_get_augumented(char *source, char *append); @@ -221,6 +263,7 @@ dictionary *yon_dictionary_get_last(dictionary *dict); dictionary *yon_dictionary_switch_places(dictionary *dict,int aim); dictionary *yon_dictionary_create_with_data(char *key, void *data); dictionary *yon_dictionary_create_with_data_connected(dictionary *dict, char *key, void *data); +dictionary *yon_dictionary_connect(dictionary *old, dictionary *toconnect); SectionSettingSegment *yon_create_section_setting(char *name, char *categories); void yon_segments_show(actionWidgets *widgets); void yon_segments_hide(actionWidgets *widgets); @@ -235,5 +278,6 @@ void yon_time_reg_for_average(dictionary *listofregs, int size, time_t tm); void yon_dictionary_switch_to_last(dictionary **dict); dictionary *yon_dictionary_create_conneced(dictionary *targetdict); int yon_get_icon_size(int size); +char *yon_char_from_int(int int_to_convert); #endif \ No newline at end of file -- 2.35.1 From 158b0443136e6434af136ef05f1de50dda526cf5 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 19 Jul 2023 10:10:41 +0600 Subject: [PATCH 05/12] reverting --- Makefile | 146 ------------------ source/CMakeLists.txt | 93 ----------- source/ubl-settings-manager.h | 283 ---------------------------------- 3 files changed, 522 deletions(-) delete mode 100644 Makefile delete mode 100644 source/CMakeLists.txt delete mode 100644 source/ubl-settings-manager.h diff --git a/Makefile b/Makefile deleted file mode 100644 index 649dc53..0000000 --- a/Makefile +++ /dev/null @@ -1,146 +0,0 @@ -#!/usr/bin/make -f - -#SHELL := /bin/bash -MAKEFILE_FILEPATH := $(abspath $(lastword $(MAKEFILE_LIST))) -MAKEFILE_DIR := $(notdir $(patsubst %/,%,$(dir $(MAKEFILE_FILEPATH)))) -MAKEFILE_PATH := $(dir $(MAKEFILE_FILEPATH)) - -CMAKE_COMMAND = cmake -CMAKE_SOURCE_DIR = $(MAKEFILE_PATH)source -CMAKE_BUILD_DIR = $(MAKEFILE_PATH)compile -DEPENDS = /bin/cmake -PREFIX ?= /usr/local -PKGNAME = $(MAKEFILE_DIR) -FILE_VER = source/${PKGNAME}.h - -default_target: all - -.PHONY: all init depend debug prepare check build uninstall install clean help - -all: init build - -init: - @echo "Initialize ..."; \ - if [ -d ".git" ]; then \ - LATEST_TAG=$$(git describe --abbrev=0 --tags | sed 's/^v//'); \ - else \ - LATEST_TAG="Development"; \ - fi; \ - sed -r "s/^(string version_application).*/\1 = \"$${LATEST_TAG}\";/" -i ${FILE_VER}; \ - echo "-- Build path: ${CMAKE_BUILD_DIR}" - -depend: - @echo "Check depends ..." - @for FILE_DEPEND in $(DEPENDS); do \ - if [ ! -f $${FILE_DEPEND} ]; then \ - echo "ERROR: Depend '$${FILE_DEPEND}' not found !"; \ - exit 1; \ - fi; \ - done; \ - $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B${CMAKE_BUILD_DIR} --check-build-system CMakeFiles/Makefile.cmake 1 || exit 1; \ - echo "Check depends: OK" - -debug: - @echo "Debug ..." - if [ ! -d ${CMAKE_BUILD_DIR} ]; then \ - $(CMAKE_COMMAND) -S${CMAKE_SOURCE_DIR} -B${CMAKE_BUILD_DIR} -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX="${PREFIX}"; \ - fi; \ - echo "Debug: OK" - -prepare: - @echo "Prepare ..."; \ - if [ ! -d ${CMAKE_BUILD_DIR} ]; then \ - $(CMAKE_COMMAND) -S${CMAKE_SOURCE_DIR} -B${CMAKE_BUILD_DIR} -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="${PREFIX}"; \ - fi; \ - echo "Prepare: OK" - -check: - @echo "Check ..."; \ - if [ -f ${CMAKE_BUILD_DIR}/${PKGNAME} ]; then \ - echo "Check: OK"; \ - else \ - echo "Check: ${CMAKE_BUILD_DIR}/${PKGNAME} not found !"; \ - exit 1; \ - fi - -build: depend prepare - @echo "Build ..."; \ - $(MAKE_COMMAND) --directory=${CMAKE_BUILD_DIR}; \ - sed -r "s/^(string version_application).*/\1;/" -i ${FILE_VER}; \ - echo "Build: OK" - -uninstall: - @echo "Uninstall ..." - @for FILE_PO in $(wildcard *.po); do \ - LANG=$${FILE_PO##*_};LANG=$${LANG%.*}; \ - FILE_MO=$${FILE_PO##*/}; FILE_MO="$${FILE_MO%_*.po}.mo"; \ - PATH_FILE_MO="${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \ - $(RM) "$${PATH_FILE_MO}"; \ - done - @for SIZE in 16x16 32x32 48x48 scalable; do \ - $(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}/apps/com.ublinux.${PKGNAME}.svg"; \ - $(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}/apps/com.ublinux.${PKGNAME}.png"; \ - done - @for FILE_SVG in $(wildcard *.svg); do \ - for SIZE in 16x16 32x32 48x48 scalable; do \ - $(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}/status/$${FILE_SVG%.*}".{svg,png,jpg}; \ - done; \ - done - @$(RM) "${DESTDIR}${PREFIX}/bin/${PKGNAME}" - @$(RM) "${DESTDIR}/etc/xdg/${PKGNAME}/${PKGNAME}.conf" - @$(RM) "${DESTDIR}${PREFIX}/share/applications/${PKGNAME}.desktop" - @$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/com.ublinux.${PKGNAME}.svg" - @$(RM) "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}.policy" - @if [ -z ${DESTDIR} ]; then \ - [ -d "${DESTDIR}${PREFIX}/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}${PREFIX}/share/icons/hicolor/" &>/dev/null || true; \ - update-desktop-database --quiet &>/dev/null || true; \ - [ -d "${DESTDIR}${PREFIX}/share/applications" ] && touch "${DESTDIR}${PREFIX}/share/applications" &>/dev/null || true; \ - fi - @echo "Uninstall: OK" - -install: check uninstall - @echo "Install ..." - @for FILE_PO in $(wildcard *.po); do \ - LANG=$${FILE_PO##*_};LANG=$${LANG%.*}; \ - install -dm755 "${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES"; \ - FILE_MO=$${FILE_PO##*/}; FILE_MO="$${FILE_MO%_*.po}.mo"; \ - PATH_FILE_MO="${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \ - echo "$${FILE_PO}"; \ - msgfmt "$${FILE_PO}" -v -f -o "$${PATH_FILE_MO}"; \ - done - @for SIZE in 16 32 48; do \ - install -dm755 "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps"; \ - rsvg-convert -w $${SIZE} -h $${SIZE} -f svg --keep-image-data "com.ublinux.${PKGNAME}.svg" -o "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/com.ublinux.${PKGNAME}.svg"; \ - done - @install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/" "com.ublinux.${PKGNAME}.svg" - @install -Dm644 -t "${DESTDIR}/usr/share/polkit-1/actions/" "com.ublinux.${PKGNAME}.policy" - @install -Dm755 -t "${DESTDIR}${PREFIX}/bin/" "${CMAKE_BUILD_DIR}/${PKGNAME}" - @install -Dm744 -t "${DESTDIR}/etc/xdg/${PKGNAME}/" "${PKGNAME}.conf" - @install -Dm644 -t "${DESTDIR}${PREFIX}/share/applications/" "${PKGNAME}.desktop" - @sed -e 's+/usr/bin+${PREFIX}/bin+g' -i ${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}.policy - @if [ -z ${DESTDIR} ]; then \ - [ -d "${DESTDIR}${PREFIX}/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}${PREFIX}/share/icons/hicolor/" &>/dev/null || true; \ - update-desktop-database --quiet &>/dev/null || true; \ - [ -d "${DESTDIR}${PREFIX}/share/applications" ] && touch "${DESTDIR}${PREFIX}/share/applications" &>/dev/null || true; \ - fi - @echo "Install: OK" - -clean: - @echo "Clean ..." - @$(RM) -rd ${CMAKE_BUILD_DIR} - @if [ -d ${CMAKE_BUILD_DIR} ]; then \ - echo "Clean: error, compile directory exist ${CMAKE_BUILD_DIR}"; \ - else \ - echo "Clean: OK"; \ - fi - -help: - @echo "The following are some of the valid targets for this Makefile:"; \ - echo "... all (the default if no target is provided)"; \ - echo "... init"; \ - echo "... debug"; \ - echo "... prepare"; \ - echo "... compile"; \ - echo "... install"; \ - echo "... uninstall"; \ - echo "... clean" \ No newline at end of file diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt deleted file mode 100644 index 19ec51d..0000000 --- a/source/CMakeLists.txt +++ /dev/null @@ -1,93 +0,0 @@ -cmake_minimum_required(VERSION 3.7) -project(ubl-settings-manager) - -find_package(PkgConfig REQUIRED) - -pkg_check_modules(GTK REQUIRED gtk+-3.0) -include_directories(${GTK_INCLUDE_DIRS}) -link_directories(${GTK_LIBRARY_DIRS}) -add_definitions(${GTK_CFLAGS_OTHER}) - -#pkg_check_modules(VTE291 REQUIRED vte-2.91) -#include_directories(${VTE291_INCLUDE_DIRS}) -#link_directories(${VTE291_LIBRARY_DIRS}) -#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}) - add_definitions(${WEBKIT_CFLAGS_OTHER}) -endif() - -configure_file(ubl-cmake.in ubl-cmake.h) - -file(COPY ${CMAKE_CURRENT_BINARY_DIR}/ubl-cmake.h DESTINATION ./) - -set(GRESOURCE_C resources.c) -set(GRESOURCE_XML gresource.xml) - -find_program(GLIB_COMPILE_RESOURCES NAMES glib-compile-resources REQUIRED) -add_custom_target(GLADE ubl-settings-manager.glade) - -set(DEPENDFILES - ../ubl-settings-manager.glade - ../gresource.xml - ../ubl-settings-manager-banner.png - ../ubl-settings-manager.css - ) - -file(COPY ${DEPENDFILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) - -add_custom_command( - OUTPUT ${GRESOURCE_C} - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMAND ${GLIB_COMPILE_RESOURCES} - ARGS - --generate-source - --target=${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C} - ${GRESOURCE_XML} - VERBATIM - MAIN_DEPENDENCY ${GRESOURCE_XML} - DEPENDS - ${GLADE} -) -add_custom_target( - 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 \ - -O2 -pipe -fno-plt -fexceptions \ - -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security \ - -fstack-clash-protection -fcf-protection") - - -set(SOURCE_FILES - ubl-settings-manager.c - ubl-settings-manager.h - ${CMAKE_CURRENT_BINARY_DIR}/ubl-cmake.h - ) - -set(LIBRARIES - ${GTK_LIBRARIES} - ${WEBKIT_LIBRARIES} -# ${VTE291_LIBRARIES} - pthread) - - -add_executable(${PROJECT_NAME} ${SOURCE_FILES} ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}) -target_link_libraries(${PROJECT_NAME} PUBLIC ${LIBRARIES}) -target_include_directories(${PROJECT_NAME} PUBLIC ${PROJECT_BINARY_DIR}) -set_source_files_properties( - ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C} - PROPERTIES GENERATED TRUE -) -install(TARGETS ${PROJECT_NAME} DESTINATION bin) -add_dependencies(${PROJECT_NAME} dummy-resource) \ No newline at end of file diff --git a/source/ubl-settings-manager.h b/source/ubl-settings-manager.h deleted file mode 100644 index 04d1de1..0000000 --- a/source/ubl-settings-manager.h +++ /dev/null @@ -1,283 +0,0 @@ -#ifndef UBL_SETTINGS_MANAGER -#define UBL_SETTINGS_MANAGER - -#include -#include -#include -#include -#include "ubl-cmake.h" -#ifdef WEBKIT_FOUND -#include -#endif - -#define UBLINUX_WIKI_COMMAND "xdg-open https://wiki.ublinux.ru/ru/Программное_обеспечение/Программы_и_утилиты/Все/ubl-settings-manager" -#define UBLINUX_WIKI_LINK " https://wiki.ublinux.ru/ru/Программное_обеспечение/Программы_и_утилиты/Все/ubl-settings-manager" - -#define check_web2kit_command "ldconfig -p |grep webkit2" - -#define cmdVersionText yon_char_get_augumented(yon_char_get_augumented(_("Version: "),version_application),"\n") -#define cmdHelpText yon_char_get_augumented(yon_char_get_augumented(_("ubl-settings-manager version: "),version_application),_("\nGTK settings manager for UBLinux\nUsage: ubl-settings-manager [OPTIONS...]\nOptions:\n -h, --help Show this help\n -V, --version Show package version\n --lock-settings Lock menu settings\n")) -#define GladePath "/com/ublinux/ui/ubl-settings-manager.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" -#define AppIconPath "com.ublinux.ubl-settings-manager" -#define AppBannerPath "/com/ublinux/images/ubl-settings-manager-banner.png" -#define DesktopPath "/usr/share/applications/" -#define IconPicturesPath "/usr/share/icons/hicolor/scalable/apps/" -#define LocalePath "/usr/share/locale" -#define LocaleName "ubl-settings-manager" -#define ubl_settings_infoPath "ubl-settings-info" -#define ubl_settings_infoPathLaunch "ubl-settings-info --socket-id=" -typedef char* string; -string version_application; - -#define UBL_SETTINGS_MANAGER_TITLE _("UBLinux Settings Manager") -#define UBL_SETTINGS_MANAGER_ABOUT_TITLE _("About UBLinux Settings Manager") -#define ABOUT_PROJECT_HOME_PAGE_LABEL _("Project Home Page") -#define ABOUT_PROJECT_COMMENTS_LABEL _("Settings manager for UBLinux") -#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 ABOUT_LABEL _("About...") -#define DOCUMENTATION_LABEL _("Documentation") -#define SETTINGS_LABEL _("Settings") -#define ALWAYS_REDIRECT_LABEL _("Always redirect") -#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 WINDOW_THEME_LABEL _("Window theme") -#define ICON_SIZE_LABEL _("Icon size") -#define BACK_TO_ALL_SETTINGS_LABEL _("All settings") - - -typedef struct apps{ - char *Name; - int Type; - char *Categories; - char *Exec; - char *Icon; - int Pluggable; - int DualPluggable; - } apps; - -typedef struct { - char *command; - int *exitcode; -} thread_output; - -typedef struct dictionary { - char *key; - void *data; - struct dictionary *next; - struct dictionary *prev; - struct dictionary *first; -} dictionary; - -typedef struct IVGrapgicals{ - char *sectionName; - char *categories; - GtkListStore *LV; - GtkWidget *Box; - GtkWidget *IV; - GtkWidget *label; - GtkWidget *sep; - GtkCellRendererPixbuf *iconRender; -} IVGraphicals; - -typedef struct IconSection{ - char *section; - char *categories; -} IconSection; - -typedef struct { - int windowWidth; - int windowHeight; - int windowPosX; - int windowPosY; - int WindowTheme; - char *curThemeName; - int Mainiconsize; - int Gnomeiconsize; - int iconSegmentSize; - dictionary *sections; - int MainlabelSize; - int GnomelabelSize; - int *currentThemeLabelSize; - int *currentThemeIconSize; - int labelDensity; - char *lastUser; - int changed; - int fullscreen; - int lock_settings; - int GnomeDoubleClick; - int MainDoubleClick; - int *currentDoubleClick; - dictionary *SettingsSections; - int BannerHidden; -} config; - -typedef struct { - GtkWidget *MainFrame; - GtkWidget *MainBox; - GtkWidget *ElemBox; - GtkWidget *DragButtonBox; - GtkWidget *DragUpButton; - GtkWidget *DragDownButton; - GtkWidget *NameBox; - GtkWidget *CategoriesBox; - GtkWidget *OptionBox; - GtkWidget *NameEntry; - GtkWidget *NameLabel; - GtkWidget *CategoriesEntry; - GtkWidget *CategoriesLabel; - GtkWidget *EditButtonBox; - GtkWidget *EditButtonAccept; - GtkWidget *EditButtonCancel; - GtkWidget *ButtonEdit; - GtkWidget *ButtonDelete; - GtkWidget *DeleditBox; -} SectionSettingSegment; - -typedef struct { - GtkBuilder *builder; - GtkWidget *window; - dictionary *ICSys; - GtkWidget *DesktopBasic; - GtkWidget *DesktopSocket; - GtkWidget *ButtonBackToMain; - GtkWidget *DialogOpenDocumentation; - GtkWidget *CancelHelpButton; - GtkWidget *ReadHelpButton; - GtkWidget *AlwaysOpenDocumentation; - GtkWidget *helpHeader; - GtkWidget *helpText; - GtkWidget *appSettings; - GtkWidget *SettingsWindow; - GtkWidget *settingsSizeSlider; - GtkWidget *settingsSizeInfoLabel; - GtkWidget *settingsThemeChooser; - GtkWidget *settingsCancel; - GtkWidget *settingsAccept; - GtkWidget *settingsIcon; - GtkWidget *socket; - GtkWidget *socketplace; - GtkWidget *HideWhileLaunch; - GtkWidget *MenuItemSettings; - GtkWidget *MenuItemDocumentation; - GtkWidget *MenuItemAboutSystem; - GtkWidget *LabelTitle; - GtkWidget *settingsSubmenuLabelSize; - GtkWidget *settingsSubmenuLabelTheme; - GtkWidget *GnomePaned; - GtkWidget *GnomeInfoLabel; - GtkWidget *workingwindow; - GtkWidget *settingsSectionsSettingsButton; - GtkWidget *SectionSettingsWindow; - GtkWidget *SectionSettingsPack; - dictionary *SettingsSections; - GtkWidget *SectionSettingAddButton; - GtkWidget *SectionSettingAddNameEntry; - GtkWidget *SectionSettingAddCategoriesEntry; - GtkWidget *SectionSettingsClearEntryButton; - GtkWidget *SectionSettingsSaveButton; - GtkWidget *SectionSettingsCloseButton; - GtkWidget *GnomeInfoDetailsLabel; - GtkWidget *CautionWindow; - GtkWidget *CautionUnderstandButton; - GtkWidget *socketbuttonplace; - GtkWidget *socketbutton; - GtkWidget *Overlay; - GtkWidget *ThirdSocketPlace; - GtkWidget *ThirdSocket; - int appssize; - apps *applist; - GtkWidget *icvpack; - GtkWidget *infoWarningWindow; - GtkWidget *infoWarningButton; - GtkWidget *infoWarningLabel; - GtkWidget *BannerRevealer; - GtkWidget *Revealer; - GtkWidget *settingsDoubleClickSwitch; - GtkWidget *settingsDoubleClickLabel; - GtkWidget *BackToSettingsLabel; - -} actionWidgets; - -typedef enum { - ACTIONWIDGETS, - ICONSECTION, - IVGRAPHICALS, - OTHER - -} DICT_TYPE; - -void on_plug_added(GtkSocket* self, actionWidgets *builder); -void on_plug_removed(GtkSocket* self, actionWidgets *widgets); -void on_Item_activated(GtkIconView* self, GtkTreePath* path, actionWidgets *applist); -void on_gnome_Item_activated(GtkIconView* self, GtkTreePath* path, actionWidgets *applist); -void on_item_selection_changed(GtkIconView *IV, actionWidgets *widgets); -void on_ButtonOpenHelp_activated(GtkWidget *button, GtkBuilder *builder); -void on_backToSettingsButton_clicked(GtkWidget *button,actionWidgets *sctb); -void on_CancelHelpButton_activated(GtkWidget *button,GtkBuilder *builder); -void on_ReadHelpButton_activated(GtkWidget *button, GtkBuilder *builder); -int launch_app_with_arguments(char *name, char *args); -int launch_app(char *name); -int py_launch_app(char *name,char *args); -int on_settings_accept(GtkWidget *button, dictionary **widgetsDs); -void on_paned_move(GtkPaned* self, GtkScrollType* scroll_type, actionWidgets *widgets); -int on_settingsOpen(GtkWidget *button, actionWidgets *widgets); -int on_settings_icon_size_changed(GtkWidget* self, actionWidgets *widgets); -int on_settings_cancel(GtkWidget *button, actionWidgets *widgets); -apps *get_app_by_name(apps *applist,char *name, int size); -int reload_list(IVGraphicals *section); -int load_apps(IVGraphicals *section, apps *applist, int size); -int load_apps_with_clear(IVGraphicals *section, apps *applist, int size); -int hide_if_unfound(dictionary *widgetsDc); -GtkWidget *create_socket(actionWidgets *builder); -void sort_apps(apps *applist,int size); -apps *find_apps(int *sizef); -int check_categories(apps app, char *catstocheck); -int setup_config(); -void update_double_clicks(dictionary *widgetsD); -void yon_icv_resize_item(dictionary *icdict, GtkWidget *paned); -dictionary *yon_theme_new(dictionary **widgetss, GtkBuilder *builder, char *theme_id, apps *applist, int appsize); -char *yon_char_get_augumented(char *source, char *append); -char *yon_cut(char *source, int size, int startpos); -int yon_set_sections(IconSection *section); -void yon_set_default_sections(dictionary *section); -char *yon_char_divide_search(char *source, char* dividepos, int delete_divider); -char *yon_char_divide(char *source, int dividepos); -dictionary *yon_section_new(dictionary *section, char *section_name, char *categories); -void yon_switch_theme(dictionary **dict, dictionary *newone); -dictionary *yon_dictionary_find(dictionary **dict, char *key); -void yon_segment_show(actionWidgets *widgets, SectionSettingSegment *sgm); -dictionary *yon_dictionary_create_empty(); -dictionary *yon_dictionary_rip(dictionary *dict); -dictionary *yon_dictionary_get_last(dictionary *dict); -dictionary *yon_dictionary_switch_places(dictionary *dict,int aim); -dictionary *yon_dictionary_create_with_data(char *key, void *data); -dictionary *yon_dictionary_create_with_data_connected(dictionary *dict, char *key, void *data); -dictionary *yon_dictionary_connect(dictionary *old, dictionary *toconnect); -SectionSettingSegment *yon_create_section_setting(char *name, char *categories); -void yon_segments_show(actionWidgets *widgets); -void yon_segments_hide(actionWidgets *widgets); -void yon_dictionary_make_first(dictionary *dict); -dictionary *yon_create_icon_section_list(dictionary *sections); -int yon_show_icon_views(dictionary *IVS,actionWidgets *widgets); -void yon_icon_size_convert(int mode); -char *yon_char_new(char *chr); -int launch(thread_output *thread); -float yon_time_average(dictionary *times); -void yon_time_reg_for_average(dictionary *listofregs, int size, time_t tm); -void yon_dictionary_switch_to_last(dictionary **dict); -dictionary *yon_dictionary_create_conneced(dictionary *targetdict); -int yon_get_icon_size(int size); -char *yon_char_from_int(int int_to_convert); - -#endif \ No newline at end of file -- 2.35.1 From e00f09c817571c21c2cf7ce5b0016a70850395e2 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 19 Jul 2023 10:17:43 +0600 Subject: [PATCH 06/12] Updated Makefile --- .gitignore | 3 +- Makefile | 46 ++++++++-------------- source/CMakeLists.txt | 72 +++++++++++++++++++++++++++++++++-- source/ubl-settings-manager.h | 2 +- 4 files changed, 87 insertions(+), 36 deletions(-) diff --git a/.gitignore b/.gitignore index 87de55e..866564b 100644 --- a/.gitignore +++ b/.gitignore @@ -17,4 +17,5 @@ locale/ ui/ ubl-settings-manager_ru.pos ubl-settings-manager_ru.po~ -deleted \ No newline at end of file +deleted +compile/ \ No newline at end of file diff --git a/Makefile b/Makefile index b66026b..8fe8775 100644 --- a/Makefile +++ b/Makefile @@ -8,23 +8,25 @@ MAKEFILE_PATH := $(dir $(MAKEFILE_FILEPATH)) CMAKE_COMMAND = cmake CMAKE_SOURCE_DIR = $(MAKEFILE_PATH)source CMAKE_BUILD_DIR = $(MAKEFILE_PATH)compile -#CMAKE_SOURCE_DIR = ./source -#CMAKE_BUILD_DIR = ./compile -FILE_VERSION = VERSION.md DEPENDS = /bin/cmake -PREFIX ?= /usr +PREFIX ?= /usr/local PKGNAME = $(MAKEFILE_DIR) -#PKGNAME = ubl-settings-manager +FILE_VER = source/${PKGNAME}.h default_target: all -.PHONY: all init depend debug prepare check build uninstall install clean up_ver help +.PHONY: all init depend debug prepare check build uninstall install clean help all: init build init: @echo "Initialize ..."; \ - sed -r "s/(version_application = ).*/\1\"$$(grep 'VERSION' ${FILE_VERSION} | cut -d" " -f2)\";/" -i source/ubl-settings-manager.h; \ + if [ -d ".git" ]; then \ + LATEST_TAG=$$(git describe --abbrev=0 --tags | sed 's/^v//'); \ + else \ + LATEST_TAG="Development"; \ + fi; \ + sed -r "s/^(string version_application).*/\1 = \"$${LATEST_TAG}\";/" -i ${FILE_VER}; \ echo "-- Build path: ${CMAKE_BUILD_DIR}" depend: @@ -35,8 +37,8 @@ depend: exit 1; \ fi; \ done; \ + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B${CMAKE_BUILD_DIR} --check-build-system CMakeFiles/Makefile.cmake 1 || exit 1; \ echo "Check depends: OK" -# $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 debug: @echo "Debug ..." @@ -63,7 +65,8 @@ check: build: depend prepare @echo "Build ..."; \ - make --directory=${CMAKE_BUILD_DIR}; \ + $(MAKE_COMMAND) --directory=${CMAKE_BUILD_DIR}; \ + sed -r "s/^(string version_application).*/\1;/" -i ${FILE_VER}; \ echo "Build: OK" uninstall: @@ -84,10 +87,9 @@ uninstall: done; \ done @$(RM) "${DESTDIR}${PREFIX}/bin/${PKGNAME}" - @$(RM) "${DESTDIR}${PREFIX}/etc/xdg/${PKGNAME}/${PKGNAME}.conf" @$(RM) "${DESTDIR}${PREFIX}/share/applications/${PKGNAME}.desktop" @$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/com.ublinux.${PKGNAME}.svg" - @$(RM) -rd "${DESTDIR}${PREFIX}/share/${PKGNAME}" + @$(RM) "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}.policy" @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; \ @@ -109,18 +111,11 @@ install: check uninstall install -dm755 "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps"; \ rsvg-convert -w $${SIZE} -h $${SIZE} -f svg --keep-image-data "com.ublinux.${PKGNAME}.svg" -o "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/com.ublinux.${PKGNAME}.svg"; \ done - @install -dm755 "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/" "com.ublinux.${PKGNAME}.svg" + @install -Dm644 -t "${DESTDIR}/usr/share/polkit-1/actions/" "com.ublinux.${PKGNAME}.policy" @install -Dm755 -t "${DESTDIR}${PREFIX}/bin/" "${CMAKE_BUILD_DIR}/${PKGNAME}" - @install -dm755 "${DESTDIR}${PREFIX}/etc/xdg" - @install -Dm744 -t "${DESTDIR}${PREFIX}/etc/xdg/${PKGNAME}/" "${PKGNAME}.conf" - @install -dm755 "${DESTDIR}${PREFIX}/share/applications" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/applications/" "${PKGNAME}.desktop" - @install -dm755 "${DESTDIR}${PREFIX}/share/${PKGNAME}"/{ui,css,images} - @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/ui/" "${PKGNAME}.glade" - @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/css/" "${PKGNAME}.css" - @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/images/" "ublinux-logo.svg" - @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/images/" "${PKGNAME}-banner.png" + @sed -e 's+/usr/bin+${PREFIX}/bin+g' -i ${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}.policy @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; \ @@ -137,14 +132,6 @@ clean: echo "Clean: OK"; \ fi -up_ver: - @CURRENT=$$(grep 'VERSION' ${FILE_VERSION} | cut -d" " -f2); \ - MAJOR=$$(cut -d. -f1 <<< $${CURRENT}); \ - MINOR=$$(cut -d. -f2 <<< $${CURRENT}); \ - VER="$${MAJOR}.$$(($${MINOR}+1))"; \ - sed "s/VERSION *[[:digit:]]*.*/VERSION $${VER}/" -i ${FILE_VERSION}; \ - echo "Updated version to VERSION.md: $${CURRENT} to $${VER}" - help: @echo "The following are some of the valid targets for this Makefile:"; \ echo "... all (the default if no target is provided)"; \ @@ -154,5 +141,4 @@ help: echo "... compile"; \ echo "... install"; \ echo "... uninstall"; \ - echo "... clean"; \ - echo "... up_ver" + echo "... clean" \ No newline at end of file diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 1859049..d03616d 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -8,22 +8,86 @@ include_directories(${GTK_INCLUDE_DIRS}) link_directories(${GTK_LIBRARY_DIRS}) add_definitions(${GTK_CFLAGS_OTHER}) +pkg_check_modules(VTE291 REQUIRED vte-2.91) +include_directories(${VTE291_INCLUDE_DIRS}) +link_directories(${VTE291_LIBRARY_DIRS}) +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}) + add_definitions(${WEBKIT_CFLAGS_OTHER}) +endif() + +configure_file(ubl-cmake.in ubl-cmake.h) + +file(COPY ${CMAKE_CURRENT_BINARY_DIR}/ubl-cmake.h DESTINATION ./) + +set(GRESOURCE_C resources.c) +set(GRESOURCE_XML gresource.xml) + +find_program(GLIB_COMPILE_RESOURCES NAMES glib-compile-resources REQUIRED) +add_custom_target(GLADE ubl-settings-manager.glade) + +set(DEPENDFILES + ../ubl-settings-manager.glade + ../gresource.xml + ../ubl-settings-manager-banner.png + ../ubl-settings-manager.css + ) + +file(COPY ${DEPENDFILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) + +add_custom_command( + OUTPUT ${GRESOURCE_C} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMAND ${GLIB_COMPILE_RESOURCES} + ARGS + --generate-source + --target=${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C} + ${GRESOURCE_XML} + VERBATIM + MAIN_DEPENDENCY ${GRESOURCE_XML} + DEPENDS + ${GLADE} +) +add_custom_target( + 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 \ -O2 -pipe -fno-plt -fexceptions \ -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security \ -fstack-clash-protection -fcf-protection") + set(SOURCE_FILES ubl-settings-manager.c - ubl-settings-manager.h) + ubl-settings-manager.h + ${CMAKE_CURRENT_BINARY_DIR}/ubl-cmake.h + ) set(LIBRARIES ${GTK_LIBRARIES} + ${WEBKIT_LIBRARIES} + ${VTE291_LIBRARIES} pthread) -add_executable(ubl-settings-manager ${SOURCE_FILES}) -target_link_libraries(ubl-settings-manager ${LIBRARIES}) -install(TARGETS ubl-settings-manager DESTINATION bin) \ No newline at end of file +add_executable(${PROJECT_NAME} ${SOURCE_FILES} ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}) +target_link_libraries(${PROJECT_NAME} PUBLIC ${LIBRARIES}) +target_include_directories(${PROJECT_NAME} PUBLIC ${PROJECT_BINARY_DIR}) +set_source_files_properties( + ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C} + PROPERTIES GENERATED TRUE +) +install(TARGETS ${PROJECT_NAME} DESTINATION bin) +add_dependencies(${PROJECT_NAME} dummy-resource) \ No newline at end of file diff --git a/source/ubl-settings-manager.h b/source/ubl-settings-manager.h index af8076c..ee01f90 100644 --- a/source/ubl-settings-manager.h +++ b/source/ubl-settings-manager.h @@ -21,7 +21,7 @@ #define ubl_settings_infoPath "ubl-settings-info" #define ubl_settings_infoPathLaunch "ubl-settings-info --socket-id=" typedef char* string; -string version_application = "1.2"; +string version_application; typedef struct apps{ -- 2.35.1 From da77940652eb52e76eaa3569d557f8f0c26dcfaf Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 19 Jul 2023 10:18:27 +0600 Subject: [PATCH 07/12] Updated header file --- source/ubl-settings-manager.h | 52 ++++++++++++++++++++++++++++++++--- 1 file changed, 48 insertions(+), 4 deletions(-) diff --git a/source/ubl-settings-manager.h b/source/ubl-settings-manager.h index ee01f90..04d1de1 100644 --- a/source/ubl-settings-manager.h +++ b/source/ubl-settings-manager.h @@ -4,18 +4,27 @@ #include #include #include +#include +#include "ubl-cmake.h" +#ifdef WEBKIT_FOUND +#include +#endif + +#define UBLINUX_WIKI_COMMAND "xdg-open https://wiki.ublinux.ru/ru/Программное_обеспечение/Программы_и_утилиты/Все/ubl-settings-manager" +#define UBLINUX_WIKI_LINK " https://wiki.ublinux.ru/ru/Программное_обеспечение/Программы_и_утилиты/Все/ubl-settings-manager" + +#define check_web2kit_command "ldconfig -p |grep webkit2" #define cmdVersionText yon_char_get_augumented(yon_char_get_augumented(_("Version: "),version_application),"\n") #define cmdHelpText yon_char_get_augumented(yon_char_get_augumented(_("ubl-settings-manager version: "),version_application),_("\nGTK settings manager for UBLinux\nUsage: ubl-settings-manager [OPTIONS...]\nOptions:\n -h, --help Show this help\n -V, --version Show package version\n --lock-settings Lock menu settings\n")) -#define GladePath "/usr/share/ubl-settings-manager/ui/ubl-settings-manager.glade" -#define CssPath "/usr/share/ubl-settings-manager/css/ubl-settings-manager.css" +#define GladePath "/com/ublinux/ui/ubl-settings-manager.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" #define AppIconPath "com.ublinux.ubl-settings-manager" -#define AppBannerPath "/usr/share/ubl-settings-manager/images/ubl-settings-manager-banner.png" +#define AppBannerPath "/com/ublinux/images/ubl-settings-manager-banner.png" #define DesktopPath "/usr/share/applications/" #define IconPicturesPath "/usr/share/icons/hicolor/scalable/apps/" -#define ublinux_logo "/usr/share/ubl-settings-manager/images/ublinux-logo.svg" #define LocalePath "/usr/share/locale" #define LocaleName "ubl-settings-manager" #define ubl_settings_infoPath "ubl-settings-info" @@ -23,6 +32,29 @@ typedef char* string; string version_application; +#define UBL_SETTINGS_MANAGER_TITLE _("UBLinux Settings Manager") +#define UBL_SETTINGS_MANAGER_ABOUT_TITLE _("About UBLinux Settings Manager") +#define ABOUT_PROJECT_HOME_PAGE_LABEL _("Project Home Page") +#define ABOUT_PROJECT_COMMENTS_LABEL _("Settings manager for UBLinux") +#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 ABOUT_LABEL _("About...") +#define DOCUMENTATION_LABEL _("Documentation") +#define SETTINGS_LABEL _("Settings") +#define ALWAYS_REDIRECT_LABEL _("Always redirect") +#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 WINDOW_THEME_LABEL _("Window theme") +#define ICON_SIZE_LABEL _("Icon size") +#define BACK_TO_ALL_SETTINGS_LABEL _("All settings") + typedef struct apps{ char *Name; @@ -83,7 +115,11 @@ typedef struct { int changed; int fullscreen; int lock_settings; + int GnomeDoubleClick; + int MainDoubleClick; + int *currentDoubleClick; dictionary *SettingsSections; + int BannerHidden; } config; typedef struct { @@ -165,6 +201,11 @@ typedef struct { GtkWidget *infoWarningWindow; GtkWidget *infoWarningButton; GtkWidget *infoWarningLabel; + GtkWidget *BannerRevealer; + GtkWidget *Revealer; + GtkWidget *settingsDoubleClickSwitch; + GtkWidget *settingsDoubleClickLabel; + GtkWidget *BackToSettingsLabel; } actionWidgets; @@ -203,6 +244,7 @@ void sort_apps(apps *applist,int size); apps *find_apps(int *sizef); int check_categories(apps app, char *catstocheck); int setup_config(); +void update_double_clicks(dictionary *widgetsD); void yon_icv_resize_item(dictionary *icdict, GtkWidget *paned); dictionary *yon_theme_new(dictionary **widgetss, GtkBuilder *builder, char *theme_id, apps *applist, int appsize); char *yon_char_get_augumented(char *source, char *append); @@ -221,6 +263,7 @@ dictionary *yon_dictionary_get_last(dictionary *dict); dictionary *yon_dictionary_switch_places(dictionary *dict,int aim); dictionary *yon_dictionary_create_with_data(char *key, void *data); dictionary *yon_dictionary_create_with_data_connected(dictionary *dict, char *key, void *data); +dictionary *yon_dictionary_connect(dictionary *old, dictionary *toconnect); SectionSettingSegment *yon_create_section_setting(char *name, char *categories); void yon_segments_show(actionWidgets *widgets); void yon_segments_hide(actionWidgets *widgets); @@ -235,5 +278,6 @@ void yon_time_reg_for_average(dictionary *listofregs, int size, time_t tm); void yon_dictionary_switch_to_last(dictionary **dict); dictionary *yon_dictionary_create_conneced(dictionary *targetdict); int yon_get_icon_size(int size); +char *yon_char_from_int(int int_to_convert); #endif \ No newline at end of file -- 2.35.1 From 5ac504ca144e5c49f93c185b363d6c75eb766aec Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 19 Jul 2023 10:19:15 +0600 Subject: [PATCH 08/12] Fixed css error --- source/ubl-settings-manager.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/ubl-settings-manager.c b/source/ubl-settings-manager.c index 44b4114..6fbb9d0 100644 --- a/source/ubl-settings-manager.c +++ b/source/ubl-settings-manager.c @@ -1956,7 +1956,7 @@ int main(int argc, char *argv[]){ GtkIconTheme *icthm=gtk_icon_theme_get_default(); gtk_image_set_from_pixbuf(GTK_IMAGE(banner),gtk_icon_info_load_icon(gtk_icon_theme_lookup_icon_for_scale(icthm, AppIconPath,yon_get_icon_size(*main_config.currentThemeIconSize),1,GTK_ICON_LOOKUP_FORCE_SVG),NULL)); GtkCssProvider *css=gtk_css_provider_new(); - gtk_css_provider_load_from_resource(css,CssPath,NULL); + gtk_css_provider_load_from_resource(css,CssPath); gtk_style_context_add_provider_for_screen(gdk_screen_get_default(), GTK_STYLE_PROVIDER(css), -1); -- 2.35.1 From 8a002006f48d8034d742f440c9a5c114d2a379ef Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 19 Jul 2023 10:25:24 +0600 Subject: [PATCH 09/12] resized documentation windo --- ubl-settings-manager.glade | 1 - 1 file changed, 1 deletion(-) diff --git a/ubl-settings-manager.glade b/ubl-settings-manager.glade index 7ee155a..a726395 100644 --- a/ubl-settings-manager.glade +++ b/ubl-settings-manager.glade @@ -151,7 +151,6 @@ False False 450 - 250 dialog-question-symbolic -- 2.35.1 From 3cd1cdf5356937a231835cff40f3ae0c262e2c23 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 19 Jul 2023 11:30:22 +0600 Subject: [PATCH 10/12] .desktop changes, localisation changes --- Makefile | 6 ++--- source/ubl-settings-manager.c | 23 ------------------- ubl-settings-manager.desktop | 6 ++--- ubl-settings-manager.glade | 42 +++++++++++++++++------------------ ubl-settings-manager_ru.po | 9 ++++---- 5 files changed, 30 insertions(+), 56 deletions(-) diff --git a/Makefile b/Makefile index 8fe8775..4da746e 100644 --- a/Makefile +++ b/Makefile @@ -74,7 +74,7 @@ uninstall: @for FILE_PO in $(wildcard *.po); do \ LANG=$${FILE_PO##*_};LANG=$${LANG%.*}; \ FILE_MO=$${FILE_PO##*/}; FILE_MO="$${FILE_MO%_*.po}.mo"; \ - PATH_FILE_MO="${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \ + PATH_FILE_MO="${DESTDIR}/usr/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \ $(RM) "$${PATH_FILE_MO}"; \ done @for SIZE in 16x16 32x32 48x48 scalable; do \ @@ -101,9 +101,9 @@ install: check uninstall @echo "Install ..." @for FILE_PO in $(wildcard *.po); do \ LANG=$${FILE_PO##*_};LANG=$${LANG%.*}; \ - install -dm755 "${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES"; \ + install -dm755 "${DESTDIR}/usr/share/locale/$${LANG}/LC_MESSAGES"; \ FILE_MO=$${FILE_PO##*/}; FILE_MO="$${FILE_MO%_*.po}.mo"; \ - PATH_FILE_MO="${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \ + PATH_FILE_MO="${DESTDIR}/usr/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \ echo "$${FILE_PO}"; \ msgfmt "$${FILE_PO}" -v -f -o "$${PATH_FILE_MO}"; \ done diff --git a/source/ubl-settings-manager.c b/source/ubl-settings-manager.c index 6fbb9d0..65aaf82 100644 --- a/source/ubl-settings-manager.c +++ b/source/ubl-settings-manager.c @@ -1808,29 +1808,6 @@ dictionary *yon_theme_new(dictionary **widgetss, GtkBuilder *builder, char *them } gtk_widget_hide_on_delete(curWidgets->window); g_signal_connect(G_OBJECT(curWidgets->window), "destroy", G_CALLBACK(yon_main_quit), curWidgets); - gtk_label_set_text(GTK_LABEL(gtk_builder_get_object(builder,"MainHeaderNameLabel")),UBL_SETTINGS_MANAGER_TITLE); - gtk_label_set_text(GTK_LABEL(gtk_builder_get_object(builder,"sectionsHeaderNameLabel")),UBL_SETTINGS_MANAGER_TITLE); - gtk_label_set_text(GTK_LABEL(gtk_builder_get_object(builder,"GnomeHeaderNameLabel")),UBL_SETTINGS_MANAGER_TITLE); - gtk_label_set_text(GTK_LABEL(gtk_builder_get_object(builder,"settingsHeaderNameLabel")),UBL_SETTINGS_MANAGER_TITLE); - gtk_label_set_text(GTK_LABEL(gtk_builder_get_object(builder,"webHeaderNameLabel")),UBL_SETTINGS_MANAGER_TITLE); - gtk_label_set_text(GTK_LABEL(gtk_builder_get_object(builder,"warningHeaderNameLabel")),UBL_SETTINGS_MANAGER_TITLE); - gtk_label_set_text(GTK_LABEL(gtk_builder_get_object(builder,"LoaderHeaderNameLabel")),UBL_SETTINGS_MANAGER_TITLE); - gtk_label_set_text(GTK_LABEL(curWidgets->settingsSubmenuLabelSize),ICON_SIZE_LABEL); - gtk_label_set_text(GTK_LABEL(curWidgets->settingsSubmenuLabelTheme),WINDOW_THEME_LABEL); - gtk_label_set_text(GTK_LABEL(curWidgets->helpHeader),REDIRECTION_LABEL); - gtk_label_set_text(GTK_LABEL(curWidgets->helpText),REDIRECTION_COMMENT_LABEL); - gtk_button_set_label(GTK_BUTTON(curWidgets->ReadHelpButton),READ_ONLINE_LABEL); - gtk_button_set_label(GTK_BUTTON(curWidgets->CancelHelpButton),CANCEL_LABEL); - gtk_button_set_label(GTK_BUTTON(curWidgets->settingsCancel),CLOSE_LABEL); - gtk_button_set_label(GTK_BUTTON(curWidgets->settingsAccept),SAVE_AND_APPLY_LABEL); - gtk_button_set_label(GTK_BUTTON(curWidgets->SectionSettingsSaveButton),APPLY_LABEL); - gtk_button_set_label(GTK_BUTTON(curWidgets->AlwaysOpenDocumentation),ALWAYS_REDIRECT_LABEL); - gtk_menu_item_set_label(GTK_MENU_ITEM(curWidgets->MenuItemSettings),SETTINGS_LABEL); - gtk_menu_item_set_label(GTK_MENU_ITEM(curWidgets->MenuItemDocumentation),DOCUMENTATION_LABEL); - gtk_menu_item_set_label(GTK_MENU_ITEM(curWidgets->MenuItemAboutSystem),ABOUT_LABEL); - gtk_button_set_label(GTK_BUTTON(curWidgets->CautionUnderstandButton),UNDERSTOOD_LABEL); - gtk_button_set_label(GTK_BUTTON(curWidgets->settingsSectionsSettingsButton),SECTIONS_MANAGEMENT_LABEL); - gtk_label_set_text(GTK_LABEL(curWidgets->settingsDoubleClickLabel),DOUBLE_CLICK_SELECTION_LABEL); return widgets; } diff --git a/ubl-settings-manager.desktop b/ubl-settings-manager.desktop index 8038835..e0d1b2e 100644 --- a/ubl-settings-manager.desktop +++ b/ubl-settings-manager.desktop @@ -1,11 +1,11 @@ [Desktop Entry] Encoding=UTF-8 Name=ubl-settings-manager -Name[ru]=Менеджер настроек UBLinux +Name[ru]=Диспетчер настроек UBLinux GenericName=ubl-settings-manager -GenericName[ru]=Менеджер настроек UBLinux +GenericName[ru]=Диспетчер настроек UBLinux Comment=ubl-settings-manager -Comment[ru]=Менеджер управления настройками UBLinux +Comment[ru]=Графический диспетчер настроек UBLinux Type=Application Exec=ubl-settings-manager Icon=com.ublinux.ubl-settings-manager diff --git a/ubl-settings-manager.glade b/ubl-settings-manager.glade index a726395..816c617 100644 --- a/ubl-settings-manager.glade +++ b/ubl-settings-manager.glade @@ -1,6 +1,6 @@ - + @@ -46,7 +46,7 @@ 25 20 20 - Changing the theme is not available due to the small screen resolution! + Changing the theme is not available due to the small screen resolution! True 0 @@ -90,7 +90,7 @@ True False - UBLinux Settings + UBLinux Settings Manager @@ -189,7 +189,7 @@ start 10 5 - Would you like to read documentation in the Web? + Would you like to read documentation in the Web? True 0 @@ -210,10 +210,9 @@ True False start - start 15 10 - You will be redirected to documentation website where documentation is translated and supported by community. + You will be redirected to documentation site, where user help pages are translated and supported by community. True 0 - True + False True 1 - Always redirect to online documentation + Always redirect True True False end - 5 - 10 True