diff --git a/Makefile b/Makefile index da7bd09..16a820e 100644 --- a/Makefile +++ b/Makefile @@ -9,8 +9,10 @@ CMAKE_COMMAND = cmake CMAKE_SOURCE_DIR = $(MAKEFILE_PATH)source CMAKE_BUILD_DIR = $(MAKEFILE_PATH)compile DEPENDS = /bin/cmake -PREFIX ?= /usr +PREFIX ?= /usr/local PKGNAME = $(MAKEFILE_DIR) +FILE_VER = source/${PKGNAME}.h +PKGIDENT=$(subst /,-,${PREFIX}) default_target: all @@ -21,11 +23,16 @@ all: init build init: @echo "Initialize ..."; \ if [ -d ".git" ]; then \ - LATEST_TAG=$$(git describe --tags | sed 's/^v//'); \ + LATEST_TAG=$$(git describe --abbrev=0 --tags | sed 's/^v//'); \ + if [ -z "$${LATEST_TAG}" ]; \ + then \ + LATEST_TAG=$$"0.0"; \ + echo "$${LATEST_TAG} is empty"; \ + fi; \ else \ - LATEST_TAG="0.0"; \ + LATEST_TAG="Development"; \ fi; \ - sed -r "s/^(string version_application = ).*/\1\"$${LATEST_TAG}\";/" -i source/${PKGNAME}.cc; \ + sed -r "s/^(string version_application).*/\1 = \"$${LATEST_TAG}\";/" -i ${FILE_VER}; \ echo "-- Build path: ${CMAKE_BUILD_DIR}" depend: @@ -64,7 +71,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: @@ -72,7 +80,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 \ @@ -86,9 +94,8 @@ uninstall: done @$(RM) "${DESTDIR}${PREFIX}/bin/${PKGNAME}" @$(RM) "${DESTDIR}${PREFIX}/share/applications/${PKGNAME}.desktop" - @$(RM) "${DESTDIR}${PREFIX}/share/polkit-1/actions/com.ublinux.${PKGNAME}.policy" @$(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}${PKGIDENT}.policy" @if [ -z ${DESTDIR} ]; then \ [ -d "${DESTDIR}${PREFIX}/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}${PREFIX}/share/icons/hicolor/" &>/dev/null || true; \ update-desktop-database --quiet &>/dev/null || true; \ @@ -100,9 +107,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 @@ -110,23 +117,14 @@ 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" + @cp ./com.ublinux.${PKGNAME}.policy ./compile/com.ublinux.${PKGNAME}${PKGIDENT}.policy + @sed -e 's+/usr/bin+${PREFIX}/bin+' -e 's+.run+${PKGIDENT}.run+g' ./compile/com.ublinux.${PKGNAME}${PKGIDENT}.policy -i @install -Dm755 -t "${DESTDIR}${PREFIX}/bin/" "${CMAKE_BUILD_DIR}/${PKGNAME}" - @install -dm755 "${DESTDIR}${PREFIX}/share/applications" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/applications/" "${PKGNAME}.desktop" - @install -dm755 "${DESTDIR}${PREFIX}/share/polkit-1/actions" - @install -Dm644 -t "${DESTDIR}${PREFIX}/share/polkit-1/actions/" "com.ublinux.${PKGNAME}.policy" - @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/" "logo-background.png" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.checked.svg" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.warning.svg" - @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/" grub-cmdline-linux.csv - @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/" grub-terminal-input.csv - @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/" grub-terminal-output.csv - @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/" grub-play.csv + @install -Dm644 -t "${DESTDIR}/usr/share/polkit-1/actions/" "${CMAKE_BUILD_DIR}/com.ublinux.${PKGNAME}${PKGIDENT}.policy" @if [ -z ${DESTDIR} ]; then \ [ -d "${DESTDIR}${PREFIX}/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}${PREFIX}/share/icons/hicolor/" &>/dev/null || true; \ update-desktop-database --quiet &>/dev/null || true; \ @@ -152,4 +150,4 @@ help: echo "... compile"; \ echo "... install"; \ echo "... uninstall"; \ - echo "... clean" + echo "... clean" \ No newline at end of file diff --git a/gresource.xml b/gresource.xml new file mode 100644 index 0000000..a3a837c --- /dev/null +++ b/gresource.xml @@ -0,0 +1,12 @@ + + + + ubl-settings-bootloader.glade + + + ubl-settings-bootloader.css + + + ubl-settings-bootloader-banner.png + + \ No newline at end of file diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 62bfb35..67df707 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.23) +cmake_minimum_required(VERSION 3.7) project(ubl-settings-bootloader) find_package(PkgConfig REQUIRED) @@ -13,6 +13,11 @@ include_directories(${GTKMM30_INCLUDE_DIRS}) link_directories(${GTKMM30_LIBRARY_DIRS}) add_definitions(${GTKMM30_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) @@ -24,18 +29,53 @@ if(WEBKIT_LIBRARIES_FOUND) add_definitions(${WEBKIT_CFLAGS_OTHER}) endif() -configure_file(ubl-settings-bootloader.h.in ubl-settings-bootloader-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-bootloader.glade) + +set(DEPENDFILES + ../ubl-settings-bootloader.glade + ../gresource.xml + ../ubl-settings-bootloader-banner.png + ../ubl-settings-bootloader.css + ) -#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always -std=c++2a -g") +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 menu_os.h menu_os.cc - ubl-settings-bootloader-cm.h ubl-settings-bootloader.h ubl-settings-bootloader.cc save.h @@ -48,15 +88,24 @@ set(SOURCE_FILES util.cc ubl-util-standard.h ubl-util-standard.c - main.cc) + main.cc + ${CMAKE_CURRENT_BINARY_DIR}/ubl-cmake.h) set(LIBRARIES - ${GTK3_LIBRARIES} + ${GTK_LIBRARIES} ${GTKMM30_LIBRARIES} ${WEBKIT_LIBRARIES} +# ${VTE291_LIBRARIES} pthread) -add_executable(${PROJECT_NAME} ${SOURCE_FILES}) + +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) + diff --git a/source/main.cc b/source/main.cc index c28e514..fc2d996 100644 --- a/source/main.cc +++ b/source/main.cc @@ -22,7 +22,7 @@ int main(int argc, char** argv) { textdomain("ubl-settings-bootloader"); if (str_argv.find("--socket-id") != std::string::npos) { auto app = Gtk::Application::create(argc, argv, "org.gtkmm.example.plug"); - auto builder = Gtk::Builder::create_from_file(path_glade); + auto builder = Gtk::Builder::create_from_resource(path_glade); Glib::init(); setlocale(LC_ALL, ""); Glib::OptionContext context; @@ -48,7 +48,7 @@ int main(int argc, char** argv) { else if (str_argv.find("-") != std::string::npos || argc == 1) { int len_argv = 1; auto app = Gtk::Application::create(len_argv, argv, "org.gtkmm.example.plug"); - auto builder = Gtk::Builder::create_from_file(path_glade); + auto builder = Gtk::Builder::create_from_resource(path_glade); pars_flag(1, argc, argv); MainWindow* wnd = nullptr; builder->get_widget_derived("window", wnd); diff --git a/source/menu_os.cc b/source/menu_os.cc index 3d5c578..faee722 100644 --- a/source/menu_os.cc +++ b/source/menu_os.cc @@ -42,7 +42,7 @@ void Menu_os::init() { key = get<0>(tuple_os); vector vec_value = get<1>(tuple_os); map_menu_level_1[key] = new struct_menu_level1; - Glib::RefPtr builder_level_1 = Gtk::Builder::create_from_file(path_glade); + Glib::RefPtr builder_level_1 = Gtk::Builder::create_from_resource(path_glade); builder_level_1->get_widget("lblRevL1", map_menu_level_1[key]->lblRevL1); builder_level_1->get_widget("btnToL2AndLv3", map_menu_level_1[key]->btnToL2AndLv3); builder_level_1->get_widget("boxMenuLevel1", map_menu_level_1[key]->boxMenuLevel1); @@ -74,7 +74,7 @@ void Menu_os::init() { builder_level_1->get_widget("btnToL2AndLv3Image", map_menu_level_1[key]->btnToL2AndLv3Image); } for (string& str_level_3: vec_value) { - auto builder_level_3 = Gtk::Builder::create_from_file(path_glade); + auto builder_level_3 = Gtk::Builder::create_from_resource(path_glade); map_menu_level_1[key]->vec_menu_level_3.push_back(new struct_menu_level_3); builder_level_3->get_widget("btnToL3", map_menu_level_1[key]->vec_menu_level_3[index_l3]->btnToL3); diff --git a/source/ubl-cmake.in b/source/ubl-cmake.in new file mode 100644 index 0000000..17ba454 --- /dev/null +++ b/source/ubl-cmake.in @@ -0,0 +1 @@ +#cmakedefine WEBKIT_FOUND \ No newline at end of file diff --git a/source/ubl-settings-bootloader.cc b/source/ubl-settings-bootloader.cc index 78d173f..5164cfc 100644 --- a/source/ubl-settings-bootloader.cc +++ b/source/ubl-settings-bootloader.cc @@ -64,7 +64,7 @@ int MainWindow::check_root() { // ================================================================= View_edit_add_table::View_edit_add_table() { - builder = Gtk::Builder::create_from_file(path_glade); + builder = Gtk::Builder::create_from_resource(path_glade); this->settings(); } @@ -1542,14 +1542,14 @@ MainWindow::~MainWindow() { void MainWindow::add_CSS() { Glib::RefPtr cssProvider = Gtk::CssProvider::create(); - cssProvider->load_from_path(path_css); + cssProvider->load_from_resource(path_css); Glib::RefPtr styleContext = Gtk::StyleContext::create(); Glib::RefPtr screen = Gdk::Screen::get_default();//get default screen styleContext->add_provider_for_screen(screen, cssProvider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);//add provider for screen in all application Glib::RefPtr boxButton_css = boxButton->get_style_context(); Glib::RefPtr boxSave_css = boxSave->get_style_context(); boxInfo = boxInfoError->get_style_context(); - imgBG->set(path_img_head_background); + imgBG->set_from_resource(path_img_head_background); if (socket_trd_id_I == 0 && socket_ext_id_I == 0) { boxButton_css->add_class("bkim_no_plug"); boxSave_css->add_class("bkim_no_plug"); diff --git a/source/ubl-settings-bootloader.h b/source/ubl-settings-bootloader.h index 399a601..49c2281 100644 --- a/source/ubl-settings-bootloader.h +++ b/source/ubl-settings-bootloader.h @@ -17,7 +17,7 @@ #include "save.h" #include "load.h" #include -#include "ubl-settings-bootloader-cm.h" +#include "../compile/ubl-cmake.h" #include "menu_os.h" #ifdef WEBKIT_FOUND #include @@ -146,11 +146,11 @@ void me_thread(string cmd); #define IPT_csv "grub-terminal-input.csv" #define OTT_csv "grub-terminal-output.csv" #define path_app "/usr/bin/" -#define path_glade "/usr/share/ubl-settings-bootloader/ui/ubl-settings-bootloader.glade" -#define path_css "/usr/share/ubl-settings-bootloader/css/ubl-settings-bootloader.css" +#define path_glade "/com/ublinux/ui/ubl-settings-bootloader.glade" +#define path_css "/com/ublinux/css/ubl-settings-bootloader.css" #define app_name "ubl-settings-bootloader" #define path_resources "/usr/share/ubl-settings-bootloader" -#define path_img_head_background "/usr/share/ubl-settings-bootloader/images/logo-background.png" +#define path_img_head_background "/com/ublinux/images/ubl-settings-bootloader-banner.png" #define cmd_pars_list_os "/usr/lib/ublinux/scripts/grub-functions exec_get_all_menuentry" #define cmd_last_launched_os "/usr/lib/ublinux/scripts/grub-functions exec_get_last_menuentry" #define info_box_ok_css "boxInfoMessOK" diff --git a/ubl-settings-bootloader-banner.png b/ubl-settings-bootloader-banner.png new file mode 100644 index 0000000..8eb67cb Binary files /dev/null and b/ubl-settings-bootloader-banner.png differ