diff --git a/Makefile b/Makefile index aae2afb..fdce4f1 100644 --- a/Makefile +++ b/Makefile @@ -46,8 +46,8 @@ depend: exit 1; \ fi; \ done; \ - $(CMAKE_UI_COMMAND) -S$(CMAKE_UI_SOURCE_DIR) -B${CMAKE_UI_BUILD_DIR} --check-build-system CMakeFiles/Makefile.cmake 1 || exit 1; \ - $(CMAKE_UTILS_COMMAND) -S$(CMAKE_UTILS_SOURCE_DIR) -B${CMAKE_UTILS_BUILD_DIR} --check-build-system CMakeFiles/Makefile.cmake 1 || exit 1; \ + $(CMAKE_UI_COMMAND) -DCMAKE_INSTALL_PREFIX=/usr -S$(CMAKE_UI_SOURCE_DIR) -B${CMAKE_UI_BUILD_DIR} --check-build-system CMakeFiles/Makefile.cmake 1 || exit 1; \ + $(CMAKE_UTILS_COMMAND) -DCMAKE_INSTALL_PREFIX=/usr -S$(CMAKE_UTILS_SOURCE_DIR) -B${CMAKE_UTILS_BUILD_DIR} --check-build-system CMakeFiles/Makefile.cmake 1 || exit 1; \ echo "Check depends: OK" debug: @@ -60,28 +60,37 @@ debug: prepare: @echo "Prepare ..."; \ if [ ! -d ${CMAKE_UI_BUILD_DIR} ]; then \ - $(CMAKE_UI_COMMAND) -S${CMAKE_UI_SOURCE_DIR} -B${CMAKE_UI_BUILD_DIR} -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="${PREFIX}"; \ - $(CMAKE_UTILS_COMMAND) -S${CMAKE_UTILS_SOURCE_DIR} -B${CMAKE_UTILS_BUILD_DIR} -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="${PREFIX}"; \ + $(CMAKE_UI_COMMAND) -DCMAKE_INSTALL_PREFIX=/usr -S${CMAKE_UI_SOURCE_DIR} -B${CMAKE_UI_BUILD_DIR} -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="${PREFIX}"; \ + $(CMAKE_UTILS_COMMAND) -DCMAKE_INSTALL_PREFIX=/usr -S${CMAKE_UTILS_SOURCE_DIR} -B${CMAKE_UTILS_BUILD_DIR} -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="${PREFIX}"; \ fi; \ echo "Prepare: OK" check: @echo "Check ..."; \ - if [ -f ${CMAKE_UI_BUILD_DIR}/lib${PKGNAME}.so ]; then \ + if [ -f ${CMAKE_UTILS_BUILD_DIR}/libubl-utils.so ]; then \ echo "Check: OK"; \ else \ - echo "Check: ${CMAKE_UI_BUILD_DIR}/lib${PKGNAME}.so not found !"; \ + echo "Check: ${CMAKE_UI_BUILD_DIR}/libubl-utils.so not found !"; \ exit 1; \ fi -build: depend prepare +build: depend prepare build-utils @echo "Build ..."; \ - $(MAKE_COMMAND) --directory=${CMAKE_UI_BUILD_DIR}; \ - $(MAKE_COMMAND) --directory=${CMAKE_UTILS_BUILD_DIR}; \ sed -r "s/^(string version_application).*/\1;/" -i ${FILE_VER}; \ echo "Build: OK" -uninstall: +build-ui: + @cd ./ubl-utils; \ + $(MAKE_COMMAND) --directory=${CMAKE_UI_BUILD_DIR}; \ + cd ../ + + +build-utils: + @cd ./source; \ + $(MAKE_COMMAND) --directory=${CMAKE_UTILS_BUILD_DIR}; \ + cd ../ + +uninstall: uninstall-ui uninstall-util @echo "Uninstall ..." @for FILE_PO in $(wildcard *.po); do \ LANG=$${FILE_PO##*_};LANG=$${LANG%.*}; \ @@ -98,10 +107,6 @@ uninstall: $(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}/status/$${FILE_SVG%.*}".{svg,png,jpg}; \ done; \ done - @$(RM) -r /usr/local/lib/libubl-utils.so* - @$(RM) -r /usr/local/lib/libublsettings-ui.a* - @$(RM) -r /usr/local/include/*ubl-utils.h* - @$(RM) -r /usr/local/include/*ublsettings-ui.h* @$(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}${PKGIDENT}.policy" @@ -112,7 +117,17 @@ uninstall: fi @echo "Uninstall: OK" -install: check uninstall +uninstall-ui: + @echo "Uninstall ..."; \ + $(RM) -r /usr/local/lib/libublsettings-ui.a*; \ + $(RM) -r /usr/local/include/*ublsettings-ui.h* + +uninstall-util: + @echo "Uninstall ..."; \ + $(RM) -r /usr/local/lib/libubl-utils.so*; \ + $(RM) -r /usr/local/include/*ubl-utils.h* + +install: check install-util build-ui install-ui @echo "Install ..." @for FILE_PO in $(wildcard *.po); do \ LANG=$${FILE_PO##*_};LANG=$${LANG%.*}; \ @@ -128,9 +143,7 @@ install: check uninstall done @install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/" "com.ublinux.${PKGNAME}.svg" @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"; \ - $(MAKE_COMMAND) install --directory=${CMAKE_UI_BUILD_DIR}; \ - $(MAKE_COMMAND) install --directory=${CMAKE_UTILS_BUILD_DIR} + @install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.warning.svg" @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; \ @@ -138,6 +151,13 @@ install: check uninstall fi @echo "Install: OK" + +install-ui: uninstall-ui + @$(MAKE_COMMAND) install --directory=${CMAKE_UI_BUILD_DIR} + +install-util: uninstall-util + @$(MAKE_COMMAND) install --directory=${CMAKE_UTILS_BUILD_DIR} + clean: @echo "Clean ..." @$(RM) -rd ${CMAKE_UI_BUILD_DIR} diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 042a36a..a4d96b7 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -62,19 +62,22 @@ add_custom_target( 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") + -fstack-clash-protection -fcf-protection -g") add_library(${PROJECT_NAME} SHARED ublsettings-ui.c - ublsettings-ui.h) + ublsettings-ui.h + ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}) set(LIBRARIES -${GTK_LIBRARIES} -${WEBKIT_LIBRARIES} -# ${VTE291_LIBRARIES} -pthread) + ${GTK_LIBRARIES} + ${WEBKIT_LIBRARIES} + ${VTE291_LIBRARIES} + ubl-utils + pthread) + message(${CMAKE_INSTALL_LIBDIR}) target_include_directories(${PROJECT_NAME} PUBLIC ${PROJECT_BINARY_DIR}) target_link_libraries(${PROJECT_NAME} PUBLIC ${LIBRARIES}) diff --git a/source/ublsettings-ui.c b/source/ublsettings-ui.c index 6062e11..2f79476 100644 --- a/source/ublsettings-ui.c +++ b/source/ublsettings-ui.c @@ -165,11 +165,13 @@ int yon_ubl_window_setup(GtkWidget *interface, char *app_name, char *app_descrip app_information.app_locale=locale; } -main_window *yon_ubl_window_init(){ +main_window *yon_ubl_window_init(int argc, char *argv[]){ local=setlocale(LC_ALL, ""); textdomain (app_information.app_locale); + gtk_init(&argc,&argv); + main_window *widgets = setup_window(); yon_ubl_header_setup_resource(widgets->HeadOverlay,widgets->HeadBox,widgets->HeadImage,ui_banner_path); @@ -186,5 +188,7 @@ main_window *yon_ubl_window_init(){ gtk_style_context_add_provider_for_screen(gdk_screen_get_default(), GTK_STYLE_PROVIDER(css), -1); + return widgets; + gtk_main(); } \ No newline at end of file diff --git a/source/ublsettings-ui.h b/source/ublsettings-ui.h index 5936f59..394542c 100644 --- a/source/ublsettings-ui.h +++ b/source/ublsettings-ui.h @@ -25,7 +25,7 @@ #define ui_LocalePath "/usr/share/locale" #define ui_LocaleName "ublsettings-ui" typedef char* string; -string version_application = "0.0"; +string version_application; char *local; @@ -105,5 +105,5 @@ typedef struct { #define SUCCESS_LABEL _("Operation succeeded") #define ROOT_WARNING_LABEL _("Warning! Application was launched without root - root-dependent actions are locked") -main_window *yon_ubl_window_init(); +main_window *yon_ubl_window_init(int argc, char *argv[]); int yon_ubl_window_setup(GtkWidget *interface, char *app_name, char *app_description, char *locale); \ No newline at end of file diff --git a/ubl-utils/CMakeLists.txt b/ubl-utils/CMakeLists.txt index 310149a..4656047 100644 --- a/ubl-utils/CMakeLists.txt +++ b/ubl-utils/CMakeLists.txt @@ -40,6 +40,8 @@ ${WEBKIT_LIBRARIES} # ${VTE291_LIBRARIES} pthread) +message(${CMAKE_INSTALL_LIBDIR}) + target_include_directories(${PROJECT_NAME} PUBLIC ${PROJECT_BINARY_DIR}) target_link_libraries(${PROJECT_NAME} PUBLIC ${LIBRARIES}) diff --git a/ubl-utils/ubl-utils.c b/ubl-utils/ubl-utils.c index 0810a44..de47801 100644 --- a/ubl-utils/ubl-utils.c +++ b/ubl-utils/ubl-utils.c @@ -645,19 +645,18 @@ char **yon_char_parse(char *parameters, int *size, char *divider){ string=malloc(sizeof(char*)); char *paramline=yon_char_new(parameters); char *param; + if (!strstr(parameters,divider)) return NULL; while ((param=yon_char_divide_search(paramline,divider,1))){ + if (strcmp(param,paramline)==0||param[0]=='\0') break; string=realloc(string,sizeof(char*)*i); string[i-1]=yon_char_new(param); i++; - if (strcmp(param,paramline)==0) break; } string=realloc(string,sizeof(char*)*i); string[i-1]=yon_char_new(paramline); i++; - // printf("%d\n",i); *size=i-1; return string; - } /**yon_char_parsed_rip(char **char_string, int *size, int item_to_delete) @@ -1582,7 +1581,7 @@ void yon_terminal_integrated_start(GtkWidget *terminal, char* command, void *end return key; } - /**yon_window_config_add_custom_parameter(GtkWidget *widget, char *param_name, char *widget_property) + /**yon_window_config_add_listener(GtkWidget *widget, char *param_name, char *widget_property, enum YON_TYPE val_type) * [EN] * * [RU] @@ -1616,6 +1615,31 @@ void yon_terminal_integrated_start(GtkWidget *terminal, char* command, void *end yon_dictionary_add_or_create_if_exists_with_data(__yon_main_window_config.deleted_parameters,param->parameter_name,param); } + int yon_window_config_get_parameter(char *section, char *config_parameter, void *return_value, enum YON_TYPE type){ + GError *err=NULL; + switch (type){ + case YON_TYPE_BOOLEAN: + *((int*)return_value) = g_key_file_get_boolean(__yon_window_config_file,section,config_parameter,&err); + if (err) return 0; else return 1; + break; + case YON_TYPE_INT: + *((int*)return_value) = g_key_file_get_integer(__yon_window_config_file,section,config_parameter,&err); + if (err) return 0; else return 1; + break; + case YON_TYPE_STRING: + *((char**)return_value) = g_key_file_get_string(__yon_window_config_file,section,config_parameter,&err); + if (err) return 0; else return 1; + break; + case YON_TYPE_STRING_LIST: + gsize size=0; + *((char***)return_value) = g_key_file_get_string_list(__yon_window_config_file,section,config_parameter,&size,&err); + *((char***)return_value)=yon_remalloc(return_value,size+1); + *((char***)return_value)[size]=NULL; + if (err) return 0; else return 1; + break; + } + } + GtkWidget *yon_ubl_menu_item_about_new(char *buttonname){ GtkWidget *menu_item = gtk_menu_item_new(); gtk_style_context_add_class(gtk_widget_get_style_context(menu_item),"menuitembottom"); diff --git a/ubl-utils/ubl-utils.h b/ubl-utils/ubl-utils.h index 6884893..1e845f1 100644 --- a/ubl-utils/ubl-utils.h +++ b/ubl-utils/ubl-utils.h @@ -15,7 +15,7 @@ #include #include -#include "../utils-compile/ubl-cmake.h" +#include "ubl-cmake.h" #ifdef WEBKIT_FOUND #include #endif @@ -218,6 +218,7 @@ void yon_terminal_integrated_start(GtkWidget *terminal, char* command, void *end enum YON_TYPE{ YON_TYPE_STRING, + YON_TYPE_STRING_LIST, YON_TYPE_INT, YON_TYPE_BOOLEAN, YON_TYPE_OTHER @@ -254,6 +255,8 @@ void yon_window_config_add_custom_parameter(char *param_name, char *section, voi void yon_window_config_erase_custom_parameter(char *param_name, char *section); +int yon_window_config_get_parameter(char *section, char *config_parameter, void *return_value, enum YON_TYPE type); + int yon_gtk_combo_box_fill(GtkWidget *combo, char **parameters,int size); int yon_gtk_combo_box_text_find(GtkWidget *combo_box, char *text_to_find);