Вынес работу с браузером в отдельный файл

pull/13/head
Igor Belitskiy 2 years ago
parent aa5e8a51c5
commit 111a7927cd

@ -23,4 +23,5 @@
#include <glibmm/i18n.h>
#include <map>
#include "ubl-util-standard.c"
#include "ubl-settings-diskquota-cm.h"
#endif

@ -47,11 +47,7 @@ void MainWindow::settings() {
,quotegroupFilesHarLimitLabel);
obj_quotas_sys.set_map_gui(map_gui_cfg);
obj_quotas_ubconfig.set_map_gui(map_gui_cfg);
#ifdef WEBKIT_FOUND
one = WEBKIT_WEB_VIEW( webkit_web_view_new() );
three = Glib::wrap(GTK_WIDGET(one));
wndWeb->add(*three);
#endif
if (geteuid() == 0) {
this->load_system_cfg();
this->load_global_cfg();
@ -234,12 +230,6 @@ void MainWindow::lacalization() {
btnSaveLocal->set_label(save_local);
ProjectTabLabel->set_label(str_projects);
usersProjectLabel->set_text(str_device);
lblhelpHeader->set_text(read_documentation_web);
lblhelpText->set_text(redirected_documentation);
btnReadHelp->set_label(read_online);
btnCancelHelp->set_label(cancel);
chkAlwaysOpenHelp->set_label(always_redirect);
lblwebHeaderName->set_label(name_app);
chbMangSystemFile->set_label(str_quotas_mode);
lblSetDevice->set_text(str_device);
lblQuotasStatus->set_text(str_quota_status);
@ -366,7 +356,6 @@ void MainWindow::get_builder() {
builder->get_widget("groupsDeviceLabel", groupsDeviceLabel);
builder->get_widget("usersDeviceLabel", usersDeviceLabel);
builder->get_widget("headLabel", headLabel);
builder->get_widget("btnLoadGlob", btnLoadGlob);
builder->get_widget("btnLoadLocal", btnLoadLocal);
builder->get_widget("btnSynopsis", btnSynopsis);
@ -429,17 +418,6 @@ void MainWindow::get_builder() {
builder->get_widget("btnFilterProject", btnFilterProject);
builder->get_widget("btnFilterUsers", btnFilterUsers);
builder->get_widget("btnFilterGroups", btnFilterGroups);
#ifdef WEBKIT_FOUND
builder->get_widget("wndWeb", wndWeb);
#endif
builder->get_widget("lblHeadeWndWeb", lblHeadeWndWeb);
builder->get_widget("lblwebHeaderName", lblwebHeaderName);
builder->get_widget("lblhelpText", lblhelpText);
builder->get_widget("lblhelpHeader", lblhelpHeader);
builder->get_widget("chkAlwaysOpenHelp", chkAlwaysOpenHelp);
builder->get_widget("btnReadHelp", btnReadHelp);
builder->get_widget("btnCancelHelp", btnCancelHelp);
builder->get_widget("wndShowWeb", wndShowWeb);
builder->get_widget("chbMangSystemFile", chbMangSystemFile);
builder->get_widget("btnDelGroups", btnDelGroups);
builder->get_widget("btnDelProject", btnDelProject);
@ -460,16 +438,13 @@ void MainWindow::get_builder() {
}
void MainWindow::event() {
btnCancelHelp->signal_clicked().connect([&]() {wndShowWeb->hide();});
chkAlwaysOpenHelp->signal_toggled().connect([&]() {flag_open_browser = true;});
btnReadHelp->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::open_browser));
btnFilterGroups->signal_clicked().connect([&]() {this->filters_show();});
btnFilterUsers->signal_clicked().connect([&]() {this->filters_show();});
btnFilterProject->signal_clicked().connect([&]() {this->filters_show();});
quotegroupSaveButton->signal_clicked().connect([&]() {});
btnLoadGlob->signal_activate().connect([&]() {this->load_global_cfg();});
btnLoadLocal->signal_activate().connect([&]() {this->load_system_cfg();});
btnSynopsis->signal_activate().connect([&]() {this->synopsis_show();});
//btnSynopsis->signal_activate().connect([&]() {this->synopsis_show();});
btnAbout->signal_activate().connect([&]() {aboutWindows->show();});
btnSaveLocalGlob->signal_activate().connect([&]() {this->wrapper_save_all_cfg();});
btnSaveGlob->signal_activate().connect([&]() {this->wrapper_save_global_cfg();});
@ -678,39 +653,6 @@ void MainWindow::wrapper_save_global_cfg() {
}
void MainWindow::synopsis_show() {
if (flag_open_browser == true) {
this->open_browser();
}
else {
wndShowWeb->show_all();
}
}
void MainWindow::open_browser() {
#ifdef WEBKIT_FOUND
webkit_web_view_load_uri(one, link_doc);
wndWeb->show_all();
#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_t>(size_s);
std::unique_ptr<char[]> 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, "");
}
void MainWindow::wrapper_save_system_cfg() {
this->set_data_cfg();
if (this->save_template("boot", "system")) {

@ -10,7 +10,7 @@
#include "system_quotas.h"
#include "ubconfig_quotas.h"
#include <dlfcn.h>
#include "ubl-settings-diskquota-cm.h"
#ifdef WEBKIT_FOUND
#include <webkit2/webkit2.h>
#endif
@ -131,10 +131,6 @@
#define icon_checked "com.ublinux.ubl-settings-diskquota.checked"
#define icon_warning "com.ublinux.ubl-settings-diskquota.warning"
#define link_doc "https://wiki.ublinux.com/ru/Программное_обеспечениерограммы_и_утилиты/Все/ubl-settings-diskquota"
#define cmd_xdg "xdg-open "
#define cmd_execute "su -l %s -c \" DISPLAY=$DISPLAY %s \""
#define path_app "/usr/bin/"
#define path_glade "/usr/share/ubl-settings-diskquota/ui/ubl-settings-diskquota.glade"
#define path_css "/usr/share/ubl-settings-diskquota/css/ubl-settings-diskquota.css"
@ -315,15 +311,6 @@ class MainWindow : public Gtk::ApplicationWindow {
Gtk::Button *btnFilterGroups;
Gtk::Button *btnFilterUsers;
Gtk::Button *btnFilterProject;
Gtk::Label *lblHeadeWndWeb;
Gtk::Label *lblwebHeaderName;
Gtk::Label *lblhelpText;
Gtk::Label *lblhelpHeader;
Gtk::CheckButton *chkAlwaysOpenHelp;
Gtk::Button *btnReadHelp;
Gtk::Button *btnCancelHelp;
Gtk::Window *wndShowWeb;
Gtk::CheckMenuItem *chbMangSystemFile;
Gtk::Button* btnDelGroups;
Gtk::Button* btnDelProject;
@ -363,7 +350,6 @@ class MainWindow : public Gtk::ApplicationWindow {
string save_user_or_group;
string sys_or_ubconfig;
string hw_or_sw = "";
bool flag_open_browser = false;
string mode_quota = "ubconfig";
Glib::RefPtr<Gtk::ListStore> list_store_groups;
Glib::RefPtr<Gtk::ListStore> list_store_users;
@ -391,13 +377,10 @@ class MainWindow : public Gtk::ApplicationWindow {
void remove_template(Glib::RefPtr<Gtk::ListStore>* list_store, const Gtk::TreeModel::iterator* iter, bool& flag_validate_del);
void init_tree_view_general();
void entry_combo_box_temp(Gtk::ComboBoxText *combo_box, Gtk::Label *label);
void synopsis_show();
void fill_in_pow_memory(Gtk::ComboBoxText *cb_text);
void info_status_app(string stule);
void filters_show();
void init_tree_view();
void template_open_browser();
void open_browser();
void del_columns();
void set_add_tv_g_u_p(Gtk::TreeModel::Row &row, Glib::RefPtr<Gtk::ListStore> list_store, struct tv_g_u_p obj_tv_g_u_p);
void load_template(map_str_str* map_temp, string cmd);

@ -12,8 +12,10 @@
class view_filters
{
private:
Glib::RefPtr<Gtk::Builder> const& builder;
string path_glade;
std::map<string, bool> map_filters_flag;
private:
Glib::RefPtr<Gtk::Builder> const& builder;
Gtk::Window *wndFilters;
Gtk::CheckButton *chbFilterName;
Gtk::CheckButton *chbFilterQuotas;
@ -29,7 +31,6 @@ private:
Gtk::Label *lblFiltersHead;
Gtk::Button *btnFiltersSave;
Gtk::Button *btnFiltersCancel;
std::map<string, bool> map_filters_flag;
public:
view_filters(/* args */);
~view_filters();
@ -38,6 +39,7 @@ public:
void get_builder();
void settings();
void show();
private:
void set_map_flag(Gtk::CheckButton* check_button);
void save();
void cancel();

@ -0,0 +1,86 @@
#include "view_open_browser.h"
view_open_browser::view_open_browser(/* args */) {
builder = Gtk::Builder::create_from_file(path_glade);
this->settings();
}
view_open_browser::~view_open_browser() {
}
void settings() {
this->get_builder();
#ifdef WEBKIT_FOUND
one = WEBKIT_WEB_VIEW( webkit_web_view_new() );
three = Glib::wrap(GTK_WIDGET(one));
wndWeb->add(*three);
#endif
this->lacalization();
this->event();
}
void view_open_browser::show() {
wndShowWeb->show();
}
void view_open_browser::get_builder() {
#ifdef WEBKIT_FOUND
builder->get_widget("wndWeb", wndWeb);
#endif
builder->get_widget("lblHeadeWndWeb", lblHeadeWndWeb);
builder->get_widget("lblwebHeaderName", lblwebHeaderName);
builder->get_widget("lblhelpText", lblhelpText);
builder->get_widget("lblhelpHeader", lblhelpHeader);
builder->get_widget("chkAlwaysOpenHelp", chkAlwaysOpenHelp);
builder->get_widget("btnReadHelp", btnReadHelp);
builder->get_widget("btnCancelHelp", btnCancelHelp);
builder->get_widget("wndShowWeb", wndShowWeb);
}
void view_open_browser::lacalization() {
lblwebHeaderName->set_label(name_app);
lblhelpText->set_text(redirected_documentation);
btnReadHelp->set_label(read_online);
btnCancelHelp->set_label(cancel);
chkAlwaysOpenHelp->set_label(always_redirect);
lblhelpHeader->set_text(read_documentation_web);
}
void view_open_browser::event() {
btnCancelHelp->signal_clicked().connect([&]() {wndShowWeb->hide();});
chkAlwaysOpenHelp->signal_toggled().connect([&]() {flag_open_browser = true;});
btnReadHelp->signal_clicked().connect(sigc::mem_fun(*this, &view_open_browser::open_browser));
}
void view_open_browser::show() {
if (flag_open_browser == true) {
this->open_browser();
}
else {
wndShowWeb->show_all();
}
}
void view_open_browser::open_browser() {
#ifdef WEBKIT_FOUND
webkit_web_view_load_uri(one, link_doc);
wndWeb->show_all();
#else
if (this->template_open_browser() != 0) {
}
#endif
}
int view_open_browser::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_t>(size_s);
std::unique_ptr<char[]> 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 );
}
return system(cmd);
}

@ -0,0 +1,34 @@
#include "project_lib.h"
#define link_doc "https://wiki.ublinux.com/ru/Программное_обеспечениерограммы_и_утилиты/Все/ubl-settings-diskquota"
#define cmd_xdg "xdg-open "
#define cmd_execute "su -l %s -c \" DISPLAY=$DISPLAY %s \""
class view_open_browser
{
private:
string path_glade;
bool flag_open_browser = false;
private:
Glib::RefPtr<Gtk::Builder> const& builder;
Gtk::Button *btnReadHelp;
Gtk::Button *btnCancelHelp;
Gtk::Window *wndShowWeb;
Gtk::CheckButton *chkAlwaysOpenHelp;
Gtk::Label *lblwebHeaderName;
Gtk::Label *lblhelpText;
Gtk::Label *lblhelpHeader;
Gtk::Label *lblHeadeWndWeb;
public:
view_open_browser(/* args */);
~view_open_browser();
void lacalization();
void event();
void get_builder();
void settings();
void show();
void synopsis_show();
private:
int template_open_browser();
void open_browser();
};

@ -2842,7 +2842,7 @@
</packing>
</child>
<child>
<object class="GtkComboBoxText">
<object class="GtkComboBoxText" id="cmbSetNameUGP">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>

Loading…
Cancel
Save