diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 34ed8ce..be4d54f 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -8,6 +8,18 @@ include_directories(${GTK_INCLUDE_DIRS}) link_directories(${GTK_LIBRARY_DIRS}) add_definitions(${GTK_CFLAGS_OTHER}) +find_library(WEBKIT_LIBRARIES_FOUND webkit2gtk-4.0 webkit2gtk-web-extension-4.0) + +if(DEFINED WEBKIT_LIBRARIES_FOUND) + option(WEBKIT_FOUND "is webkit found" ON) + message("WEBKIT 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() + + pkg_check_modules(WEBKIT REQUIRED webkit2gtk-4.0 webkit2gtk-web-extension-4.0) include_directories(${WEBKIT_INCLUDE_DIRS}) link_directories(${WEBKIT_LIBRARY_DIRS}) diff --git a/source/my_cmd.h b/source/my_cmd.h index 43d9705..34c7867 100644 --- a/source/my_cmd.h +++ b/source/my_cmd.h @@ -10,6 +10,6 @@ #define global_remove "ubconfig --target global remove boot " #define system_remove "ubconfig --target system remove boot " #define link_doc "https://wiki.ublinux.com/ru/Программное_обеспечение/Программы_и_утилиты/Все/ubl-settings-bootloader" -#define other_user "su -l {} -c \" DISPLAY=$DISPLAY {} \"" - +#define cmd_xdg "xdg-open " +#define cmd_execute "su -l %s -c \" DISPLAY=$DISPLAY %s \"" #endif \ No newline at end of file diff --git a/source/ubl-settings-bootloader.cc b/source/ubl-settings-bootloader.cc index 0cfab96..a3fa4e0 100755 --- a/source/ubl-settings-bootloader.cc +++ b/source/ubl-settings-bootloader.cc @@ -90,9 +90,11 @@ void MainWindow::settings(){ overHead->add_overlay(*boxWidget); btnBoxAboutDialog->set_visible(false); ubl_make_plugs(boxSave,boxButton, socket_ext_id_I, socket_trd_id_I); - one = WEBKIT_WEB_VIEW( webkit_web_view_new() ); - three = Glib::wrap(GTK_WIDGET(one)); - wndWeb->add(*three); + #ifdef WEBKIT_FOUND + 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) { spbSecond->set_range(1, 60); @@ -422,7 +424,9 @@ void MainWindow::get_builder() { builder->get_widget("entryPasswordProtecc", entryPasswordProtecc); builder->get_widget("entrySecurityLogin", entrySecurityLogin); builder->get_widget("cmbDefaultDonw", cmbDefaultDonw); + #ifdef WEBKIT_FOUND builder->get_widget("wndWeb", wndWeb); + #endif builder->get_widget("lblHeadeWndWeb", lblHeadeWndWeb); } @@ -886,8 +890,23 @@ void MainWindow::set_row(Glib::RefPtr &list_store, int size, std } void MainWindow::synopsis_show() { - webkit_web_view_load_uri(one, link_doc); - wndWeb->show_all(); + #ifdef WEBKIT_FOUND + webkit_web_view_load_uri(one, link_doc); + wndWeb->show_all(); + #else + string cmd = cmd_xdg + string(gettext(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 ); + } + obj_process_system.call(cmd, "&"); + #endif + } @@ -950,7 +969,9 @@ void MainWindow::info_warning_error(int mess) { } } MainWindow::~MainWindow() { - free(one); + #ifdef WEBKIT_FOUND + free(one); + #endif } void MainWindow::add_CSS(){ Glib::RefPtr cssProvider = Gtk::CssProvider::create(); diff --git a/source/ubl-settings-bootloader.h b/source/ubl-settings-bootloader.h index 16ffb81..38bd07c 100644 --- a/source/ubl-settings-bootloader.h +++ b/source/ubl-settings-bootloader.h @@ -17,7 +17,10 @@ #include "util.h" #include "save.h" #include "load.h" +#ifdef WEBKIT_FOUND #include +#endif + #include "my_process.h" using namespace std; @@ -114,9 +117,12 @@ class MainWindow : public Gtk::ApplicationWindow { Glib::RefPtr list_store_kernel; Glib::RefPtr list_store_IPT; Glib::RefPtr list_store_OTT; - Gtk::Window *wndWeb; - Gtk::Widget *three; - WebKitWebView *one; + #ifdef WEBKIT_FOUND + Gtk::Window *wndWeb; + Gtk::Widget *three; + WebKitWebView *one; + #endif + void set_entry_to_tree_view(Glib::RefPtr &list_store, Gtk::Entry &entry, std::vector &vec_Option, int size); Gtk::TreeModel::Row row_kernel; Gtk::TreeModel::Row row_IPT; diff --git a/ubl-settings-bootloader_ru.po b/ubl-settings-bootloader_ru.po index eeb6861..3073ef9 100644 --- a/ubl-settings-bootloader_ru.po +++ b/ubl-settings-bootloader_ru.po @@ -366,9 +366,9 @@ msgstr "" #: source/ubl-settings-bootloader.cc:860 source/ubl-settings-bootloader.cc:400 msgid "" -"https://wiki.ublinux.com/ru/Программное_обеспечение/Программы_и_утилиты/Все/" +"https://wiki.ublinux.com/ru/Программное_обеспечение/Программы_и_утилиты/Все/ubl-settings-bootloader" msgstr "" -"https://wiki.ublinux.ru/ru/Программное_обеспечение/Программы_и_утилиты/Все/" +"https://wiki.ublinux.ru/ru/Программное_обеспечение/Программы_и_утилиты/Все/ubl-settings-bootloader" msgid "i915.enable_dc=0 (Disable GPU power management)" msgstr "i915.enable_dc=0 (Отключите управление питанием GPU)"