From ba8ade76715c6befde1d230d93ec091826b104fd Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 21 Apr 2023 18:02:34 +0000 Subject: [PATCH] Added 'Documentation' button in menus which opens documentation web page in browser or with its own window if user has webkit2gtk library installed --- source/CMakeLists.txt | 26 +++++++++++++-- source/ubl-settings-manager.c | 24 ++++++++++++-- source/ubl-settings-manager.h | 7 ++++ ubl-settings-manager.glade | 60 +++++++++++++++++++++++++++++++++++ 4 files changed, 112 insertions(+), 5 deletions(-) diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 1859049..9b284b8 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -7,6 +7,22 @@ pkg_check_modules(GTK REQUIRED gtk+-3.0) include_directories(${GTK_INCLUDE_DIRS}) link_directories(${GTK_LIBRARY_DIRS}) add_definitions(${GTK_CFLAGS_OTHER}) +option(WEBKIT_FOUND "No" OFF) + +find_library(WEBKIT_LIBRARIES_FOUND webkit2gtk-4.0 webkit2gtk-web-extension-4.0) +message("${WEBKIT_LIBRARIES_FOUND}") +if(WEBKIT_LIBRARIES_FOUND) + option(WEBKIT_FOUND "Yes" ON) + message("Webkit is located at ${WEBKIT_LIBRARIES_FOUND}") + 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-settings-manager.h.in ubl-settings-manager-cm.h) #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") @@ -17,13 +33,17 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissin set(SOURCE_FILES ubl-settings-manager.c - ubl-settings-manager.h) + ubl-settings-manager.h + ubl-settings-manager-cm.h) set(LIBRARIES ${GTK_LIBRARIES} pthread) - add_executable(ubl-settings-manager ${SOURCE_FILES}) -target_link_libraries(ubl-settings-manager ${LIBRARIES}) +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 diff --git a/source/ubl-settings-manager.c b/source/ubl-settings-manager.c index 06eb850..220a475 100644 --- a/source/ubl-settings-manager.c +++ b/source/ubl-settings-manager.c @@ -136,7 +136,16 @@ void on_item_selection_changed(GtkIconView *IV, actionWidgets *widgets){ void on_ButtonOpenHelp_activated(GtkWidget *button, GtkBuilder *builder){ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder,"AlwaysOpenHelpCheckbox")))) { - if(system("xdg-open http://ublinux.com")){}; + #ifdef WEBKIT_FOUND + GtkBuilder *web_builder=gtk_builder_new_from_file(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(); + webkit_web_view_load_uri(WEBKIT_WEB_VIEW(WebView),UBLINUX_WIKI_LINK); + gtk_box_pack_start(GTK_BOX(web_place),WebView,1,1,0); + #else + if(system(UBLINUX_WIKI_COMMAND)){}; + #endif } else { GtkWidget *window = GTK_WIDGET(gtk_builder_get_object(builder,"HelpSureWindow")); @@ -159,7 +168,17 @@ void on_CancelHelpButton_activated(GtkWidget *button,GtkBuilder *builder){ }; void on_ReadHelpButton_activated(GtkWidget *button, GtkBuilder *builder){ - if(system("xdg-open http://ublinux.com")){}; + #ifdef WEBKIT_FOUND + GtkBuilder *web_builder=gtk_builder_new_from_file(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(); + webkit_web_view_load_uri(WEBKIT_WEB_VIEW(WebView),UBLINUX_WIKI_LINK); + gtk_box_pack_start(GTK_BOX(web_place),WebView,1,1,0); + gtk_widget_show_all(browser); + #else + if(system(UBLINUX_WIKI_COMMAND)){}; + #endif GtkWidget *window = GTK_WIDGET(gtk_builder_get_object(builder,"HelpSureWindow")); gtk_widget_hide(window); }; @@ -1763,6 +1782,7 @@ dictionary *yon_theme_new(dictionary **widgetss, GtkBuilder *builder, char *them g_signal_connect(G_OBJECT(curWidgets->MenuItemDocumentation), "activate", G_CALLBACK(on_about), curWidgets->builder); //on_ButtonOpenHelp_activated g_signal_connect(G_OBJECT(curWidgets->MenuItemSettings), "activate", G_CALLBACK(on_settingsOpen), curWidgets); g_signal_connect(G_OBJECT(curWidgets->BannerRevealer), "clicked", G_CALLBACK(on_reveal_banner), curWidgets); + g_signal_connect(G_OBJECT(curWidgets->MenuItemAboutSystem), "activate", G_CALLBACK(on_ButtonOpenHelp_activated), curWidgets->builder); if (gnld==0){ gnld=1; diff --git a/source/ubl-settings-manager.h b/source/ubl-settings-manager.h index d748bac..361413b 100644 --- a/source/ubl-settings-manager.h +++ b/source/ubl-settings-manager.h @@ -4,6 +4,13 @@ #include #include #include +#include "ubl-settings-manager-cm.h" +#ifdef WEBKIT_FOUND +#include +#endif + +#define UBLINUX_WIKI_COMMAND "xdg-open http://ublinux.com" +#define UBLINUX_WIKI_LINK " http://ublinux.ru" #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")) diff --git a/ubl-settings-manager.glade b/ubl-settings-manager.glade index de0e853..fa7c0b0 100644 --- a/ubl-settings-manager.glade +++ b/ubl-settings-manager.glade @@ -388,6 +388,66 @@ + + 800 + 558 + False + 800 + 558 + ubconfig-gui + + + True + False + vertical + + + + + + + + True + False + True + + + True + False + True + + + True + False + UBLinux Settings Web View + + + + + + True + True + 0 + + + + + + + True + False + 32 + com.ublinux.ubl-settings-manager + 5 + + + + + + True False