From 2de795e0809cb7ef6b22d4ca20c7d11868c28cf1 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Mon, 24 Apr 2023 16:56:37 +0600 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=BD=D0=B0=D0=BB=D0=B8=D1=87=D0=B8=D1=8F=20webkit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/my_localization.h | 1 + source/ubl-settings-bootloader.cc | 58 +++++++++++++++++++++---------- source/ubl-settings-bootloader.h | 3 ++ 3 files changed, 44 insertions(+), 18 deletions(-) diff --git a/source/my_localization.h b/source/my_localization.h index 4bd86cb..88f8d03 100644 --- a/source/my_localization.h +++ b/source/my_localization.h @@ -61,4 +61,5 @@ #define str_description _("Description") #define str_help_h _("GTK settings bootloader for UBLinux\n""\n""Usage: ubl-settings-bootloader [OPTIONS...]\n""Options:\n"" -h, --help\t Show this help\n"" -V, --version\t Show package version\n"" --lock-help Lock utility help\n"" --lock-save Lock saving local and global configuration\n"" --lock-save-local Lock save global configuration\n"" --lock-save-global Lock load global configuration\n"" --lock-load-global Lock load global configuration\n") #define no_recognized _("Argument not recognized\n") + #endif \ No newline at end of file diff --git a/source/ubl-settings-bootloader.cc b/source/ubl-settings-bootloader.cc index aeb5a52..8ff48dd 100755 --- a/source/ubl-settings-bootloader.cc +++ b/source/ubl-settings-bootloader.cc @@ -89,9 +89,13 @@ void MainWindow::settings(){ btnBoxAboutDialog->set_visible(false); ubl_make_plugs(boxSave,boxButton, socket_ext_id_I, socket_trd_id_I); #ifdef WEBKIT_FOUND - one = WEBKIT_WEB_VIEW( webkit_web_view_new() ); - three = Glib::wrap(GTK_WIDGET(one)); - wndWeb->add(*three); + void *handle=NULL; + handle = dlopen("libwebkit2gtk-4.0.so", RTLD_LAZY); + if (handle) { + one = WEBKIT_WEB_VIEW( webkit_web_view_new() ); + three = Glib::wrap(GTK_WIDGET(one)); + wndWeb->add(*three); + } #endif this->flag_block_gui(); if (this->check_root() == 0) { @@ -423,7 +427,11 @@ void MainWindow::get_builder() { builder->get_widget("entrySecurityLogin", entrySecurityLogin); builder->get_widget("cmbDefaultDonw", cmbDefaultDonw); #ifdef WEBKIT_FOUND - builder->get_widget("wndWeb", wndWeb); + void *handle=NULL; + handle = dlopen("libwebkit2gtk-4.0.so", RTLD_LAZY); + if (handle) { + builder->get_widget("wndWeb", wndWeb); + } #endif builder->get_widget("lblHeadeWndWeb", lblHeadeWndWeb); @@ -918,23 +926,33 @@ void MainWindow::synopsis_show() { void MainWindow::open_browser() { #ifdef WEBKIT_FOUND - webkit_web_view_load_uri(one, link_doc); - wndWeb->show_all(); - #else - string cmd = cmd_xdg + string(_(link_doc)) + " &"; - string buf = ""; - if (geteuid() == 0) { - string response_user = getlogin(); - int size_s = std::snprintf(nullptr, 0, cmd_execute, response_user.c_str(), cmd.c_str()) + 1; - auto size = static_cast(size_s); - std::unique_ptr buf(new char[ size ]); - std::snprintf( buf.get(), size, cmd_execute, response_user.c_str(), cmd.c_str() ); - cmd = std::string( buf.get(), buf.get() + size - 1 ); + void *handle=NULL; + handle = dlopen("libwebkit2gtk-4.0.so", RTLD_LAZY); + if (handle) { + webkit_web_view_load_uri(one, link_doc); + wndWeb->show_all(); + } + else { + this->template_open_browser(); } - obj_process_system.call(cmd, "&"); + #else + this->template_open_browser(); #endif } +void MainWindow::template_open_browser() { + string cmd = cmd_xdg + string(_(link_doc)) + " &"; + string buf = ""; + if (geteuid() == 0) { + string response_user = getlogin(); + int size_s = std::snprintf(nullptr, 0, cmd_execute, response_user.c_str(), cmd.c_str()) + 1; + auto size = static_cast(size_s); + std::unique_ptr buf(new char[ size ]); + std::snprintf( buf.get(), size, cmd_execute, response_user.c_str(), cmd.c_str() ); + cmd = std::string( buf.get(), buf.get() + size - 1 ); + } + index_error = system(cmd.c_str()); +} void MainWindow::info_status_app(string stule) { boxInfo->remove_class("boxInfoMessOK"); boxInfo->remove_class("boxInfoMessError"); @@ -995,7 +1013,11 @@ void MainWindow::info_warning_error(int mess) { } MainWindow::~MainWindow() { #ifdef WEBKIT_FOUND - free(one); + void *handle=NULL; + handle = dlopen("libwebkit2gtk-4.0.so", RTLD_LAZY); + if (handle) { + free(one); + } #endif } diff --git a/source/ubl-settings-bootloader.h b/source/ubl-settings-bootloader.h index ef07669..f8d1b41 100644 --- a/source/ubl-settings-bootloader.h +++ b/source/ubl-settings-bootloader.h @@ -18,6 +18,7 @@ #include "save.h" #include "load.h" #include "ubl-settings-bootloader-cm.h" +#include #ifdef WEBKIT_FOUND #include #endif @@ -152,6 +153,7 @@ class MainWindow : public Gtk::ApplicationWindow { bool flag_blocked_tree_view = false; bool flag_save_block = false; bool flag_open_browser = false; + int index_error = 0; size_t size_kernel = 0; size_t size_IPT = 0; size_t size_OTT = 0; @@ -196,6 +198,7 @@ class MainWindow : public Gtk::ApplicationWindow { void view_add_colums(Gtk::TreeView &treeView); vector read_file_and_view(string file_name ,Gtk::TreeModel::Row &row, Glib::RefPtr list_store_m); void download_local_cfg(); + void template_open_browser(); void download_globl_cfg(); void flag_block_gui(); void info_status_app(string stule);