diff --git a/.gitignore b/.gitignore
index f3b220d..1e99be8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,3 +4,5 @@ ubl-settings-update
ubl-settings-update_ru.po~
build/
compile/
+terminal-commands/
+.install.sh
\ No newline at end of file
diff --git a/Makefile b/Makefile
index 0a510ff..6aa0e4e 100644
--- a/Makefile
+++ b/Makefile
@@ -8,23 +8,26 @@ 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
+PKGIDENT=$(subst /,-,${PREFIX})
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-update.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 +38,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 +66,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:
@@ -71,7 +75,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 +90,7 @@ uninstall:
@$(RM) "${DESTDIR}${PREFIX}/bin/${PKGNAME}"
@$(RM) "${DESTDIR}${PREFIX}/share/applications/${PKGNAME}.desktop"
@$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/com.ublinux.${PKGNAME}.svg"
- @$(RM) -rd "${DESTDIR}${PREFIX}/share/${PKGNAME}/images/${PKGNAME}-banner.png"
- @$(RM) -rd "${DESTDIR}${PREFIX}/share/${PKGNAME}"
- @$(RM) "${DESTDIR}${PREFIX}/share/polkit-1/actions/com.ublinux.${PKGNAME}.policy"
+ @$(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 +102,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,21 +112,16 @@ 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 -dm755 "${DESTDIR}${PREFIX}/share/polkit-1/actions"
- @install -Dm644 -t "${DESTDIR}${PREFIX}/share/polkit-1/actions/" "com.ublinux.${PKGNAME}.policy"
+ @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"
+ @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}/etc/xdg"
- @install -dm755 "${DESTDIR}${PREFIX}/share/applications"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/applications/" "${PKGNAME}.desktop"
- @install -dm755 "${DESTDIR}${PREFIX}/share/${PKGNAME}"/{ui,css,images}
- @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/ui/" "${PKGNAME}.glade"
- @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/css/" "${PKGNAME}.css"
- @install -dm755 -d "${DESTDIR}${PREFIX}/share/${PKGNAME}/images"
- @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/images/" "${PKGNAME}-banner.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}/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; \
@@ -141,14 +138,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)"; \
@@ -158,5 +147,4 @@ help:
echo "... compile"; \
echo "... install"; \
echo "... uninstall"; \
- echo "... clean"; \
- echo "... up_ver"
+ echo "... clean"
\ No newline at end of file
diff --git a/gresource.xml b/gresource.xml
new file mode 100644
index 0000000..abb260e
--- /dev/null
+++ b/gresource.xml
@@ -0,0 +1,12 @@
+
+
+
+ ubl-settings-update.glade
+
+
+ ubl-settings-update.css
+
+
+ ubl-settings-update-banner.png
+
+
\ No newline at end of file
diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt
index 3c31c40..b72b52e 100644
--- a/source/CMakeLists.txt
+++ b/source/CMakeLists.txt
@@ -19,8 +19,42 @@ if(WEBKIT_LIBRARIES_FOUND)
add_definitions(${WEBKIT_CFLAGS_OTHER})
endif()
-configure_file(ubl-settings-update.h.in ubl-settings-cmake.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-update.glade)
+
+set(DEPENDFILES
+ ../ubl-settings-update.glade
+ ../gresource.xml
+ ../ubl-settings-update-banner.png
+ ../ubl-settings-update.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,13 +62,16 @@ 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-update.c
ubl-settings-update.h
+ ubl-strings.h
ubl-utils.h
ubl-utils.c
- ubl-settings-cmake.h)
+ ${CMAKE_CURRENT_BINARY_DIR}/ubl-cmake.h
+ )
set(LIBRARIES
${GTK_LIBRARIES}
@@ -42,7 +79,12 @@ set(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})
-install(TARGETS ubl-settings-update DESTINATION bin)
\ No newline at end of file
+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-update.h.in b/source/ubl-cmake.in
similarity index 100%
rename from source/ubl-settings-update.h.in
rename to source/ubl-cmake.in
diff --git a/source/ubl-settings-update.c b/source/ubl-settings-update.c
index 21fbd5d..f1edb13 100644
--- a/source/ubl-settings-update.c
+++ b/source/ubl-settings-update.c
@@ -13,7 +13,7 @@ void yon_open_browser(GtkWidget *self, char *link){
void on_open_documentation_confirmation(GtkWidget *self, char *link){
if (main_config.always_open_documentation==0){
- GtkBuilder *builder = gtk_builder_new_from_file(glade_path);
+ GtkBuilder *builder = gtk_builder_new_from_resource(glade_path);
documentation_confirmation_window *widgets = malloc(sizeof(documentation_confirmation_window));
widgets->Window = yon_gtk_builder_get_widget(builder,"helpConfirmationWindow");
widgets->AcceptButton = yon_gtk_builder_get_widget(builder,"ReadHelpButton");
@@ -45,7 +45,7 @@ void on_link(GtkWidget *self, char* uri, gpointer user_data){
}
void on_about(){
- GtkBuilder *builder=gtk_builder_new_from_file(glade_path);
+ GtkBuilder *builder=gtk_builder_new_from_resource(glade_path);
GtkWidget *window=yon_gtk_builder_get_widget(builder,"AboutWindow");
GtkWidget *title=yon_gtk_builder_get_widget(builder,"headerAboutTopic");
GtkWidget *hideButtonBox=yon_gtk_builder_get_widget(builder,"buttonBoxHide");
@@ -96,7 +96,7 @@ void on_repo_window_open_edit(GtkWidget *self, GtkWidget *tree){
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(tree)),&model,&iter)){
repo_window *widgets=NULL;
widgets=malloc(sizeof(repo_window));
- widgets->builder= gtk_builder_new_from_file(glade_path);
+ widgets->builder= gtk_builder_new_from_resource(glade_path);
widgets->window=yon_gtk_builder_get_widget(widgets->builder, "RepoWindow");
widgets->repoTypeLabel=yon_gtk_builder_get_widget(widgets->builder, "repoAdressLabel");
@@ -135,7 +135,7 @@ void on_repo_window_open_edit(GtkWidget *self, GtkWidget *tree){
repo_window *on_repo_window_open_create(GtkWidget *self){
repo_window *widgets=NULL;
widgets=malloc(sizeof(repo_window));
- widgets->builder= gtk_builder_new_from_file(glade_path);
+ widgets->builder= gtk_builder_new_from_resource(glade_path);
widgets->window=yon_gtk_builder_get_widget(widgets->builder, "RepoWindow");
widgets->repoTypeLabel=yon_gtk_builder_get_widget(widgets->builder, "repoAdressLabel");
@@ -181,7 +181,7 @@ void init(GtkListStore *list){
main_window *setup_window(){
main_window *widgets=NULL;
widgets=malloc(sizeof(main_window));
- widgets->builder=gtk_builder_new_from_file(glade_path);
+ widgets->builder=gtk_builder_new_from_resource(glade_path);
widgets->window=yon_gtk_builder_get_widget(widgets->builder,"MainWindow");
widgets->HeaderTopic=yon_gtk_builder_get_widget(widgets->builder,"headerTopic");
@@ -398,7 +398,7 @@ int main(int argc, char *argv[]){
main_window *widgets = setup_window();
yon_ubl_status_box_render(render,LOCAL_LOAD_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE);
GtkCssProvider *css=gtk_css_provider_new();
- gtk_css_provider_load_from_path(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);
diff --git a/source/ubl-settings-update.h b/source/ubl-settings-update.h
index 06ed59a..0433de7 100644
--- a/source/ubl-settings-update.h
+++ b/source/ubl-settings-update.h
@@ -8,24 +8,24 @@
#include
#include
#include
-#include "ubl-settings-cmake.h"
+#include "../compile/ubl-cmake.h"
#ifdef WEBKIT_FOUND
#include
#endif
-#include "ubl-settings-update-strings.h"
+#include "ubl-strings.h"
#define WIKI_LINK "https://wiki.ublinux.ru/ru/Программное_обеспечение/Программы_и_утилиты/Все/ubl-settings-update"
#define _(String) gettext(String)
-#define glade_path "/usr/share/ubl-settings-update/ui/ubl-settings-update.glade"
-#define image_path "/usr/share/ubl-settings-update/images/ubl-settings-update-banner.png"
-#define CssPath "/usr/share/ubl-settings-update/css/ubl-settings-update.css"
+#define glade_path "/com/ublinux/ui/ubl-settings-update.glade"
+#define image_path "/com/ublinux/images/ubl-settings-update-banner.png"
+#define CssPath "/com/ublinux/css/ubl-settings-update.css"
#define LocalePath "/usr/share/locale"
#define LocaleName "ubl-settings-update"
typedef char* string;
-string version_application = "1.2";
+string version_application;
char *local;
diff --git a/source/ubl-settings-update-strings.h b/source/ubl-strings.h
similarity index 100%
rename from source/ubl-settings-update-strings.h
rename to source/ubl-strings.h
diff --git a/source/ubl-utils.c b/source/ubl-utils.c
index 1565aa3..ba72538 100644
--- a/source/ubl-utils.c
+++ b/source/ubl-utils.c
@@ -1,6 +1,6 @@
#include "ubl-utils.h"
-#include "ubl-settings-cmake.h"
+#include "../compile/ubl-cmake.h"
#ifdef WEBKIT_FOUND
#include
#endif