Добавлено функция чтения .csv файлов

pull/11/head
Igor Belitskiy 3 years ago
parent 8d7d35ead5
commit f3965cf6ee

@ -15,6 +15,8 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissin
-fstack-clash-protection -fcf-protection -g")
set(SOURCE_FILES
util.h
util.cc
ubl-util-standard.h
ubl-util-standard.c
main.cc

@ -70,22 +70,42 @@ void MainWindow::settings(){
this->localization();
this->add_CSS();
this->event();
btnBoxAboutDialog->set_visible(false);
ubl_make_plugs(boxSave,boxButton, socket_ext_id_I, socket_trd_id_I);
if (this->check_root() == 0) {
this->add_colums(treeViewKernel, columns_Kernel);
this->add_colums(treeViewIPT, columns_IPT);
this->add_colums(treeViewOTT, columns_OTT);
this->add_cell(treeViewKernel, columns_Kernel, true, "name", "text");
}
else{
boxWidgetAll->set_sensitive(false);
btnLoad->set_sensitive(false);
boxSave->set_sensitive(false);
imgInfo->set("/usr/share/icons/hicolor/scalable/status/warning.svg");
imgInfo->set("/usr/share/icons/hicolor/scalable/status/ru.ublinux.ubl-settings-bootloader.warning.svg");
info_status_app("boxInfoMessError");
lblWarning->set_text(_("The program must be run as root"));
}
}
void MainWindow::add_colums(Gtk::TreeView *treeView, ModelColumns *m_columns) {
treeView->append_column(_("Active"), m_columns->check_button);
treeView->append_column(_("Option"), m_columns->name);
treeView->append_column(_("Description"), m_columns->description);
}
void MainWindow::add_cell(Gtk::TreeView *tree_view, ModelColumns *m_colum, bool flag_chk_btn, string name, string desc) {
cout << flag_chk_btn << endl;
Glib::RefPtr<Gtk::ListStore> list_store;
list_store = Gtk::ListStore::create(*m_colum);
tree_view->set_model(list_store);
Gtk::TreeModel::Row row = *(list_store->append());
row[m_colum->check_button] = "flag_chk_btn";
row[m_colum->name] = name;
row[m_colum->description] = desc;
}
void MainWindow::get_monitor_size(){
@ -213,7 +233,8 @@ void MainWindow::download_local_cfg(){
void MainWindow::synopsis_show() {
wrapper_system("xdg-open https://wiki.ublinux.ru/ru/home", "&");
string cmd = "xdg-open " + string(_("https://wiki.ublinux.com/ru/Программное_обеспечениерограммы_и_утилиты/Все/")) + app_name;
wrapper_system(cmd, "&");
}
void MainWindow::wrapper_system(string cmd, string thread_str = "") {
@ -235,7 +256,7 @@ void MainWindow::info_status_app(string stule) {
void MainWindow::info_warning_error(int mess) {
if (index_error > 0) {
info_status_app("boxInfoMessError");
imgInfo->set("/usr/share/icons/hicolor/scalable/status/warning.svg");
imgInfo->set("/usr/share/icons/hicolor/scalable/status/ru.ublinux.ubl-settings-bootloader.warning.svg");
index_error = 0;
string mess_error = "";
if (mess == 0) {
@ -262,7 +283,7 @@ void MainWindow::info_warning_error(int mess) {
}
else {
info_status_app("boxInfoMessOK");
imgInfo->set("/usr/share/icons/hicolor/scalable/status/checked.svg");
imgInfo->set("/usr/share/icons/hicolor/scalable/status/ru.ublinux.ubl-settings-bootloader.checked.svg");
if (mess == 0) {
lblWarning->set_text(_("Local configuration downloaded successfully"));
}
@ -283,7 +304,7 @@ void MainWindow::info_warning_error(int mess) {
struct MainWindow::Result<string> MainWindow::wrapper_call(string cmd) {
struct Result<string> obj_result;
string response = this->call(cmd);
string response = call(cmd);
if ((response.find("(null)") == std::string::npos) && (response.length() != 0 )) {
if (response.find("=") != std::string::npos) {
if (response.find("\n") != std::string::npos) {
@ -317,24 +338,6 @@ struct MainWindow::Result<string> MainWindow::wrapper_call(string cmd) {
return obj_result;
}
string MainWindow::call(string cmd) {
FILE *fp;
int status;
char path[PATH_MAX] = {0};
fp = popen(cmd.c_str(), "r");
if (fp == NULL) {
exit(1);
}
while (fgets(path, PATH_MAX, fp) != NULL) {
break;
}
status = pclose(fp);
if (status == -1) {
exit(1);
}
return path;
}
void MainWindow::log_mess_error(string &cmd){
string key = "";
if (map_cmd_error.find(cmd) != map_cmd_error.end()){

@ -11,6 +11,7 @@
#include <libintl.h>
#include <glibmm/i18n.h>
#include "ubl-util-standard.c"
#include "util.h"
using namespace std;
extern string path_app;
@ -33,6 +34,17 @@ private:
class MainWindow : public Gtk::ApplicationWindow {
public:
class ModelColumns : public Gtk::TreeModel::ColumnRecord {
public:
ModelColumns() {add(check_button), add(name); add(description); }
//Gtk::TreeModelColumn<Gtk::CheckButton> check_button;
Gtk::TreeModelColumn<Glib::ustring> check_button;
Gtk::TreeModelColumn<Glib::ustring> name;
Gtk::TreeModelColumn<Glib::ustring> description;
};
ModelColumns *columns_Kernel;
ModelColumns *columns_IPT;
ModelColumns *columns_OTT;
Glib::RefPtr<Gtk::Builder> builder;
Gtk::SpinButton *spbSecond;
Gtk::Label *lblInfoSeconds;
@ -76,7 +88,6 @@ class MainWindow : public Gtk::ApplicationWindow {
Gtk::TreeView *treeViewIPT;
Gtk::TreeView *treeViewOTT;
private:
int width;
int heigh;
int screen_width;
@ -91,7 +102,6 @@ class MainWindow : public Gtk::ApplicationWindow {
};
std::map <string, string> map_cmd_error;
public:
MainWindow(BaseObjectType* obj, Glib::RefPtr<Gtk::Builder> const& builder);
MainWindow(Glib::RefPtr<Gtk::Builder> const& builder);
void get_builder();
@ -103,27 +113,20 @@ class MainWindow : public Gtk::ApplicationWindow {
void fn_event_intelMax4();
void get_monitor_size();
void synopsis_show();
string call(string cmd);
void add_cell(Gtk::TreeView *tree_view, ModelColumns *m_colum, bool flag_chk_btn, string name, string desc);
void wrapper_system(string cmd, string thread_str);
struct Result<string> wrapper_call(string cmd);
void log_mess_error(string &cmd);
void save_global_local_cfg();
void save_local_cfg();
void add_colums(Gtk::TreeView *treeView, ModelColumns *m_columns);
void save_global_cfg();
void download_local_cfg();
void download_globl_cfg();
void info_status_app(string stule);
void info_warning_error(int mess);
int check_root();
class ModelColumns : public Gtk::TreeModel::ColumnRecord
{
public:
ModelColumns() {add(name); add(description); }
//ModelColumns() {add(checkbox); add(name); add(description); }
//Gtk::TreeModelColumn<Gtk::CheckButton> checkbox;
Gtk::TreeModelColumn<Glib::ustring> name;
Gtk::TreeModelColumn<Glib::ustring> description;
};
};
class SettingsPlug : public Gtk::Plug{

@ -0,0 +1,41 @@
#include "util.h"
std::array<std::vector<std::string>, 2> read_csv(const std::string& filename) {
std::array<std::vector<std::string>, 2> array_vectors;
std::vector<std::string> vec_option;
std::vector<std::string> vec_opcision;
std::ifstream file(filename);
std::string line;
char delimiter = ',';
getline(file, line);
while (std::getline(file, line)) {
std::stringstream stream(line);
std::string option;
std::string opcision;
getline(stream, option, delimiter);
getline(stream, opcision, delimiter);
vec_option.push_back(option);
vec_opcision.push_back(opcision);
}
array_vectors[0] = vec_option;
array_vectors[1] = vec_opcision;
return array_vectors;
}
std::string call(std::string cmd) {
FILE *fp;
int status;
char path[PATH_MAX] = {0};
fp = popen(cmd.c_str(), "r");
if (fp == NULL) {
exit(1);
}
while (fgets(path, PATH_MAX, fp) != NULL) {
break;
}
status = pclose(fp);
if (status == -1) {
exit(1);
}
return path;
}

@ -0,0 +1,13 @@
#include <stdio.h>
#include <iostream>
#include <sstream>
#include <fstream>
#include <string>
#include <array>
#include <vector>
#include <linux/limits.h>
std::array<std::vector<std::string>, 2> read_csv(const std::string& filename);
std::string call(std::string cmd);

@ -16,6 +16,18 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "Active"
msgstr "Активно"
msgid "Option"
msgstr "Опция"
msgid "Description"
msgstr "Описание"
msgid "https://wiki.ublinux.com/ru/Программное_обеспечениерограммы_и_утилиты/Все/"
msgstr "https://wiki.ublinux.ru/ru/Программное_обеспечениерограммы_и_утилиты/Все/"
msgid "Configuring the boot loader settings"
msgstr "Настройка параметров загрузчика системы"

Loading…
Cancel
Save