From 803ba9c2c28e6d91582cf04be573be68abbd2422 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 19 Jul 2023 09:48:59 +0600 Subject: [PATCH] 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")