Добавлено окно о программе, добавлены функции для выполнения команд

pull/11/head
Igor Belitskiy 3 years ago
parent dd77ed99b3
commit fa533884f4

File diff suppressed because it is too large Load Diff

@ -20,6 +20,11 @@ all: init build
init:
@echo "Initialize ..."; \
version="$$(cat VERSION.md)"; \
version=$${version:8}; \
search="s/string version_application.*$&"; \
replace="string version_application = \"$${version}\";"; \
sed -i -e "$$search/$$replace/gi" source/ubl-settings-bootloader.h; \
echo "-- Build path: ${CMAKE_BUILD_DIR}"
depend:

@ -0,0 +1 @@
VERSION 1.0

@ -41,6 +41,7 @@ MainWindow::MainWindow(Glib::RefPtr<Gtk::Builder> const& builder) {
}
void MainWindow::settings(){
map_cmd_error[""] = "";
this->get_builder();
this->localization();
this->event();
@ -106,8 +107,12 @@ void MainWindow::get_builder(){
builder->get_widget("boxKernel", boxKernel);
builder->get_widget("boxKernel1", boxKernel1);
builder->get_widget("boxKernel2", boxKernel2);
builder->get_widget("aboutWindows", aboutWindows);
builder->get_widget("boxColor", boxColor);
builder->get_widget("aboutWindows", aboutWindows);
builder->get_widget("btnSynopsis", btnSynopsis);
builder->get_widget("btnAbout", btnAbout);
@ -116,6 +121,15 @@ void MainWindow::get_builder(){
}
void MainWindow::localization(){
time_t now = time(0);
tm *ltm = localtime(&now);
unsigned int year = 1900+ ltm->tm_year;
string str_authors = string(gettext("Copyright © UBSoft LLC, 2022 - ")) + to_string(year);
aboutWindows->set_copyright(str_authors);
aboutWindows->set_comments(gettext("Date and Time"));
aboutWindows->set_website(gettext("https://wiki.ublinux.com"));
aboutWindows->set_version(gettext(version_application.c_str()));
aboutWindows->set_website_label(gettext("Project Home Page"));
lblInfoHead->set_text(gettext("Configuring system boot parameters"));
lblHeaderName->set_text(gettext("UBConfig - Loading"));
aboutWindows->set_comments(gettext("Setting bootloader"));
@ -154,6 +168,8 @@ void MainWindow::localization(){
chbconsoleOT->set_label(gettext("console (PC BIOS & console EFI)"));
chbGfxterm->set_label(gettext("gfxterm (Output in graphical mode)"));
chbVgaText->set_label(gettext("chbVgaText"));
btnSynopsis->set_label(gettext("Help"));
btnAbout->set_label(gettext("About"));
//set_label(gettext("Command line parameters:"));
}
@ -164,6 +180,91 @@ void MainWindow::event(){
chbintelMax1->signal_toggled().connect(sigc::mem_fun(*this, &MainWindow::fn_event_intelMax1));
chbintelMax4->signal_toggled().connect(sigc::mem_fun(*this, &MainWindow::fn_event_intelMax4));
signal_configure_event().connect(sigc::mem_fun(*this, &MainWindow::gui_set_orientation), false);
btnSynopsis->signal_activate().connect(sigc::mem_fun(*this, &MainWindow::synopsis_show));
btnAbout->signal_activate().connect([&]() {aboutWindows->show();});
}
void MainWindow::synopsis_show() {
wrapper_system("xdg-open https://wiki.ublinux.ru/ru/home", "&");
}
void MainWindow::wrapper_system(string cmd, string thread_str = "") {
string cmd_new = cmd + " " + thread_str;
int response_cmd = system(cmd_new.c_str());
if (response_cmd != 0) {
index_error += 1;
//this->log_mess_error(cmd);
}
}
struct MainWindow::Result<string> MainWindow::wrapper_call(string cmd) {
struct Result<string> obj_result;
string response = this->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) {
response = response.substr(response.find("=")+1,response.length());
response = response.substr(0,response.find("\n"));
obj_result.response = response;
obj_result.error = 0;
}
else {
obj_result.response = response;
obj_result.error = 1;
index_error += 1;
this->log_mess_error(cmd);
}
}
else {
obj_result.response = response;
obj_result.error = 2;
index_error += 1;
str_cmd_error = cmd;
this->log_mess_error(cmd);
}
}
else {
obj_result.response = response;
obj_result.error = 3;
index_error += 1;
str_cmd_error = cmd;
this->log_mess_error(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()){
str_cmd_error = map_cmd_error[cmd];
}
else {
for ( const auto &map_iter: map_cmd_error ) {
key = map_iter.first;
if (cmd.find(key) != std::string::npos){
str_cmd_error = map_iter.second;
break;
}
}
}
}
void MainWindow::fn_event_intelMax1(){

@ -29,74 +29,91 @@ private:
};
class MainWindow : public Gtk::ApplicationWindow {
public:
MainWindow(BaseObjectType* obj, Glib::RefPtr<Gtk::Builder> const& builder);
MainWindow(Glib::RefPtr<Gtk::Builder> const& builder);
void get_builder();
void add_CSS();
void localization();
void event();
void settings();
void fn_event_intelMax1();
void fn_event_intelMax4();
void get_monitor_size();
bool gui_set_orientation(GdkEventConfigure* configure_event);
public:
Glib::RefPtr<Gtk::Builder> builder;
Gtk::SpinButton *spbSecond;
Gtk::Label *lblInfoSeconds;
Gtk::Label *lblInfoDefaultDonw;
Gtk::Label *lblInfoCommand;
Gtk::Label *lblInfoCommand1;
Gtk::Label *lblInfoCommand2;
Gtk::Label *lblDownloadMenu;
Gtk::Label *lblInfoInputTerminal;
Gtk::Label *lblInfoOutputTerminal;
Gtk::Label *lblHeaderName;
Gtk::Label *lblInfoHead;
Gtk::CheckButton *chbLoadVariantSelectionTimer;
Gtk::CheckButton *chbofConsoleOT;
Gtk::CheckButton *chbSerialOT;
Gtk::CheckButton *chbconsoleOT;
Gtk::CheckButton *chbGfxterm;
Gtk::CheckButton *chbVgaText;
Gtk::CheckButton *chbconsoleIT;
Gtk::CheckButton *chbSerialIT;
Gtk::CheckButton *chbofConsoleIT;
Gtk::CheckButton *chbAtKeyboard;
Gtk::CheckButton *chbUsbKeyboard;
Gtk::CheckButton *chbintelMax4;
Gtk::CheckButton *chbintelMax1;
Gtk::CheckButton *chbSndIntel;
Gtk::CheckButton *chbAhci;
Gtk::CheckButton *chbI915Enable;
Gtk::CheckButton *chbAcpi;
Gtk::CheckButton *chbPlymouth;
Gtk::CheckButton *chbSplash;
Gtk::CheckButton *chbQuiet;
Gtk::CheckButton *chbNоapic;
Gtk::CheckButton *chbNolapic;
Gtk::CheckButton *chbSingle;
Gtk::CheckButton *chbHomodeset;
Gtk::CheckButton *chbLastSelectionWillBecome;
Gtk::Entry *entryKernel;
Gtk::Entry *entryIT;
Gtk::Entry *entryOT;
Gtk::Box *boxOtput1;
Gtk::Box *boxOtput2;
Gtk::Box *boxInput1;
Gtk::Box *boxInput2;
Gtk::Box *boxKernel;
Gtk::Box *boxKernel1;
Gtk::Box *boxKernel2;
Gtk::Box *boxColor;
Gtk::AboutDialog *aboutWindows;
int width;
int heigh;
int screen_width;
int screen_hight;
public:
Glib::RefPtr<Gtk::Builder> builder;
Gtk::SpinButton *spbSecond;
Gtk::Label *lblInfoSeconds;
Gtk::Label *lblInfoDefaultDonw;
Gtk::Label *lblInfoCommand;
Gtk::Label *lblInfoCommand1;
Gtk::Label *lblInfoCommand2;
Gtk::Label *lblDownloadMenu;
Gtk::Label *lblInfoInputTerminal;
Gtk::Label *lblInfoOutputTerminal;
Gtk::Label *lblHeaderName;
Gtk::Label *lblInfoHead;
Gtk::CheckButton *chbLoadVariantSelectionTimer;
Gtk::CheckButton *chbofConsoleOT;
Gtk::CheckButton *chbSerialOT;
Gtk::CheckButton *chbconsoleOT;
Gtk::CheckButton *chbGfxterm;
Gtk::CheckButton *chbVgaText;
Gtk::CheckButton *chbconsoleIT;
Gtk::CheckButton *chbSerialIT;
Gtk::CheckButton *chbofConsoleIT;
Gtk::CheckButton *chbAtKeyboard;
Gtk::CheckButton *chbUsbKeyboard;
Gtk::CheckButton *chbintelMax4;
Gtk::CheckButton *chbintelMax1;
Gtk::CheckButton *chbSndIntel;
Gtk::CheckButton *chbAhci;
Gtk::CheckButton *chbI915Enable;
Gtk::CheckButton *chbAcpi;
Gtk::CheckButton *chbPlymouth;
Gtk::CheckButton *chbSplash;
Gtk::CheckButton *chbQuiet;
Gtk::CheckButton *chbNоapic;
Gtk::CheckButton *chbNolapic;
Gtk::CheckButton *chbSingle;
Gtk::CheckButton *chbHomodeset;
Gtk::CheckButton *chbLastSelectionWillBecome;
Gtk::Entry *entryKernel;
Gtk::Entry *entryIT;
Gtk::Entry *entryOT;
Gtk::Box *boxOtput1;
Gtk::Box *boxOtput2;
Gtk::Box *boxInput1;
Gtk::Box *boxInput2;
Gtk::Box *boxKernel;
Gtk::Box *boxKernel1;
Gtk::Box *boxKernel2;
Gtk::Box *boxColor;
Gtk::AboutDialog *aboutWindows;
Gtk::MenuItem *btnAbout;
Gtk::MenuItem *btnSynopsis;
private:
int width;
int heigh;
int screen_width;
int screen_hight;
string version_application = "1.0";
int index_error = 0;
string str_cmd_error = "";
template<typename Type>
struct Result{
Type response;
int error;
};
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();
void add_CSS();
void localization();
void event();
void settings();
void fn_event_intelMax1();
void fn_event_intelMax4();
void get_monitor_size();
bool gui_set_orientation(GdkEventConfigure* configure_event);
void synopsis_show();
string call(string cmd);
void wrapper_system(string cmd, string thread_str);
struct Result<string> wrapper_call(string cmd);
void log_mess_error(string &cmd);

@ -11,10 +11,10 @@
<property name="icon-name">ubl-settings-datetime</property>
<property name="type-hint">dialog</property>
<property name="urgency-hint">True</property>
<property name="program-name">ubl-settings-bootloader</property>
<property name="version">1.0</property>
<property name="program-name">ubl-settings-datetime</property>
<property name="version">1.2</property>
<property name="copyright" translatable="yes">Copyright © 2023 - UBSoft Software LLC</property>
<property name="comments" translatable="yes">Setting the bootloader</property>
<property name="comments" translatable="yes">ubl-settings-bootloader</property>
<property name="website">https://ublinux.ru/</property>
<property name="website-label" translatable="yes">Project Home Page</property>
<property name="license" translatable="yes">Это приложение распространяется без каких-либо гарантий.
@ -49,6 +49,33 @@
</object>
</child>
</object>
<object class="GtkMenu" id="menu1">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="take-focus">False</property>
<property name="reserve-toggle-size">False</property>
<property name="rect-anchor-dy">4</property>
<child>
<object class="GtkMenuItem" id="btnSynopsis">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Help</property>
<style>
<class name="menuitemtop"/>
</style>
</object>
</child>
<child>
<object class="GtkMenuItem" id="btnAbout">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">About</property>
<style>
<class name="menuitembottom"/>
</style>
</object>
</child>
</object>
<object class="GtkWindow" id="window">
<property name="width-request">750</property>
<property name="height-request">550</property>
@ -1259,9 +1286,14 @@ specified priority</property>
<property name="focus-on-click">False</property>
<property name="receives-default">True</property>
<property name="draw-indicator">True</property>
<property name="popup">menu1</property>
<property name="direction">none</property>
<child>
<placeholder/>
<object class="GtkImage" id="imgSettings">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">open-menu-symbolic</property>
</object>
</child>
</object>
<packing>

@ -5,7 +5,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: ubconfig 1.0\n"
"Project-Id-Version: ubl-settings-bootloader 1.0\n"
"Report-Msgid-Bugs-To: info@ublinux.ru\n"
"POT-Creation-Date: 2020-02-22 23:22+0600\n"
"PO-Revision-Date: 2020-02-22 23:28+0600\n"
@ -114,3 +114,9 @@ msgstr "gfxterm (Вывод в графическом режиме)"
msgid "vga_text (Text output VGA (Coreboot))"
msgstr "vga_text (Текстовый вывод VGA (Coreboot))"
msgid "About"
msgstr "О программе"
msgid "Help"
msgstr "Справка"

Loading…
Cancel
Save