Добавлена генерация команды в окнах редактирования и добавления

pull/2/head
Igor Belitskiy 2 years ago
parent 0896120c6a
commit 03e264fbb6

@ -24,7 +24,7 @@ all: init build
init: init:
@echo "Initialize ..."; \ @echo "Initialize ..."; \
sed -r "s/(version_application = ).*/\1\"$$(grep 'VERSION' ${FILE_VERSION} | cut -d" " -f2)\";/" -i source/view/ubl-settings-resourcequota.h; \ sed -r "s/(version_application = ).*/\1\"$$(grep 'VERSION' ${FILE_VERSION} | cut -d" " -f2)\";/" -i source/ubl-settings-resourcequota.h; \
echo "-- Build path: ${CMAKE_BUILD_DIR}" echo "-- Build path: ${CMAKE_BUILD_DIR}"
depend: depend:
@ -96,7 +96,7 @@ uninstall:
@echo "Uninstall: OK" @echo "Uninstall: OK"
install: check uninstall install: check uninstall
@cc source/filters.c source/filters.h source/ubl-settings-resourcequota-cm.h source/view_edit.h source/view_edit.c source/view_add.h source/view_add.c source/ubl-utils.h source/ubl-utils.c source/ubl-strings.h source/ubl-settings-resourcequota.h source/ubl-settings-resourcequota.c -o ubl-settings-resourcequota `pkg-config --cflags --libs gtk+-3.0 vte-2.91 webkit2gtk-4.0 webkit2gtk-web-extension-4.0` -g @cc source/my_device.c source/my_device.h source/filters.c source/filters.h source/ubl-cmake.h source/view_edit.h source/view_edit.c source/view_add.h source/view_add.c source/ubl-utils.h source/ubl-utils.c source/ubl-strings.h source/ubl-settings-resourcequota.h source/ubl-settings-resourcequota.c -o ubl-settings-resourcequota `pkg-config --cflags --libs gtk+-3.0 vte-2.91 webkit2gtk-4.0 webkit2gtk-web-extension-4.0` -g
@echo "Install ..." @echo "Install ..."
@for FILE_PO in $(wildcard *.po); do \ @for FILE_PO in $(wildcard *.po); do \
LANG=$${FILE_PO##*_};LANG=$${LANG%.*}; \ LANG=$${FILE_PO##*_};LANG=$${LANG%.*}; \

@ -24,7 +24,7 @@ if(WEBKIT_LIBRARIES_FOUND)
add_definitions(${WEBKIT_CFLAGS_OTHER}) add_definitions(${WEBKIT_CFLAGS_OTHER})
endif() endif()
configure_file(ubl-settings-resourcequota.h.in ubl-settings-resourcequota-cm.h) configure_file(ubl-cmake.h.in ubl-cmake.h)
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always -std=c++2a") #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always -std=c++2a")
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always -lm") #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always -lm")
@ -36,6 +36,8 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissin
set(SOURCE_FILES set(SOURCE_FILES
ubl-settings-resourcequota.c ubl-settings-resourcequota.c
ubl-settings-resourcequota.h ubl-settings-resourcequota.h
my_device.c
my_device.h
filters.c filters.c
filters.h filters.h
view_add.c view_add.c
@ -45,7 +47,7 @@ set(SOURCE_FILES
ubl-strings.h ubl-strings.h
ubl-utils.h ubl-utils.h
ubl-utils.c ubl-utils.c
ubl-settings-resourcequota-cm.h) ubl-cmake.h)
set(LIBRARIES set(LIBRARIES
${GTK3_LIBRARIES} ${GTK3_LIBRARIES}

@ -0,0 +1,58 @@
#include "my_device.h"
device_config obj_device_config;
device_config* get_device_cfg() {
return &obj_device_config;
}
void device_disk_parsed() {
char* cmd = "lsblk --fs --raw --output PATH,FSTYPE --exclude 7,11,253";
int size = 0;
char** responce = yon_config_load(cmd, &size);
char* disk = NULL;
obj_device_config.size_disk = 0;
char* split_simvol = " ";
for (int index = 1; index < size; index++ ) {
disk = yon_char_divide_search(responce[index], "\n", -1);
if (yon_char_find_count(disk, " ") != 0) {
char* name_disk = yon_char_divide_search(disk, " ", -1);
obj_device_config.name_disk = yon_char_parsed_append(obj_device_config.name_disk, &obj_device_config.size_disk, name_disk);
obj_device_config.size_disk--;
obj_device_config.file_system = yon_char_parsed_append(obj_device_config.file_system, &obj_device_config.size_disk, disk);
obj_device_config.size_disk--;
obj_device_config.mounted = yon_char_parsed_append(obj_device_config.mounted, &obj_device_config.size_disk, "");
obj_device_config.size_disk--;
obj_device_config.type_dick = yon_char_parsed_append(obj_device_config.type_dick, &obj_device_config.size_disk, "");
obj_device_config.size_disk--;
char* description_disk = yon_char_unite(name_disk,
split_simvol,
disk,
NULL);
obj_device_config.description_disk = yon_char_parsed_append(obj_device_config.description_disk, &obj_device_config.size_disk, description_disk);
free(description_disk);
free(name_disk);
}
else {
obj_device_config.name_disk = yon_char_parsed_append(obj_device_config.name_disk, &obj_device_config.size_disk, disk);
obj_device_config.size_disk--;
obj_device_config.file_system = yon_char_parsed_append(obj_device_config.file_system, &obj_device_config.size_disk, "");
obj_device_config.size_disk--;
obj_device_config.mounted = yon_char_parsed_append(obj_device_config.mounted, &obj_device_config.size_disk, "");
obj_device_config.size_disk--;
obj_device_config.type_dick = yon_char_parsed_append(obj_device_config.type_dick, &obj_device_config.size_disk, "");
obj_device_config.size_disk--;
char* description_disk = yon_char_unite(disk,
split_simvol,
NULL);
obj_device_config.description_disk = yon_char_parsed_append(obj_device_config.description_disk, &obj_device_config.size_disk, description_disk);
free(description_disk);
}
}
}
void device_fill_disk(GtkWidget* combo_box_text) {
for (int index = 0; index < obj_device_config.size_disk; index++) {
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_box_text), obj_device_config.description_disk[index]);
}
}

@ -0,0 +1,20 @@
#ifndef MY_DEVICE_H
#define MY_DEVICE_H
#include "ubl-utils.h"
#include <locale.h>
#include <stdio.h>
#include <unistd.h>
typedef struct {
char** name_disk;
char** file_system;
char** mounted;
char** type_dick;
char** description_disk;
int size_disk;
} device_config;
void device_disk_parsed();
device_config* get_device_cfg();
void device_fill_disk(GtkWidget* combo_box_text);
#endif

@ -562,6 +562,7 @@ int main(int argc, char *argv[]){
} }
} }
gtk_init(&argc,&argv); gtk_init(&argc,&argv);
device_disk_parsed();
main_window *widgets = setup_window(); main_window *widgets = setup_window();
main_update_information(); main_update_information();
filters_init_flag(); filters_init_flag();
@ -573,6 +574,7 @@ int main(int argc, char *argv[]){
event_all(widgets); event_all(widgets);
main_event(widgets); main_event(widgets);
yon_ubl_header_setup(widgets->HeadOverlay,widgets->HeadBox,widgets->HeadImage,banner_path); yon_ubl_header_setup(widgets->HeadOverlay,widgets->HeadBox,widgets->HeadImage,banner_path);
if (yon_ubl_status_box_setup(widgets->StatusIcon,widgets->StatusBox,widgets->StatusLabel)) if (yon_ubl_status_box_setup(widgets->StatusIcon,widgets->StatusBox,widgets->StatusLabel))

@ -9,10 +9,11 @@
#include <getopt.h> #include <getopt.h>
#include <libintl.h> #include <libintl.h>
#include <vte/vte.h> #include <vte/vte.h>
#include "ubl-settings-resourcequota-cm.h" #include "ubl-cmake.h"
#include "view_add.h" #include "view_add.h"
#include "filters.h" #include "filters.h"
#include "view_edit.h" #include "view_edit.h"
#include "my_device.h"

@ -391,6 +391,26 @@ config_str philos_list_user(int* size) {
endpwent(); endpwent();
return str_users; return str_users;
} }
char* philos_str_size_pow_byte(GtkWidget *combo_box_text) {
int menu_id = gtk_combo_box_get_active(GTK_COMBO_BOX(combo_box_text));
if (menu_id == 0) {
return "K";
}
else if (menu_id == 1) {
return "M";
}
else if (menu_id == 2) {
return "G";
}
else if (menu_id == 3) {
return "T";
}
else {
return " ";
}
}
config_str philos_list_group(int* size) { config_str philos_list_group(int* size) {
char* str_uid_min = "UID_MIN"; char* str_uid_min = "UID_MIN";
char* str_uid_max = "UID_MAX"; char* str_uid_max = "UID_MAX";
@ -552,7 +572,10 @@ char *yon_char_replace(char *source, char *find, char*replace){
return source; return source;
} }
} }
void philos_split_size_memory(char* str_value, int* size, char* pow_memory) {
// pow_memory = yon_char_new(str_value);
(*size) = atoi(yon_char_divide_search(pow_memory, " ", -1));
}
/**[EN] /**[EN]
* char **yon_char_parse(char *parameters, int *size, char *divider) * char **yon_char_parse(char *parameters, int *size, char *divider)
* Parses string [parameters], divided by [divider], * Parses string [parameters], divided by [divider],

@ -13,7 +13,7 @@
#include <vte/vte.h> #include <vte/vte.h>
#include <pwd.h> #include <pwd.h>
#include <stdbool.h> #include <stdbool.h>
#include "ubl-settings-resourcequota-cm.h" #include "ubl-cmake.h"
#ifdef WEBKIT_FOUND #ifdef WEBKIT_FOUND
#include <webkit2/webkit2.h> #include <webkit2/webkit2.h>
#endif #endif
@ -134,6 +134,8 @@ char *yon_char_from_int(int int_to_convert);
char *yon_char_replace(char *source, char *find, char*replace); char *yon_char_replace(char *source, char *find, char*replace);
void philos_split_size_memory(char* str_value, int* size, char* pow_memory);
char **yon_char_parse(char *parameters, int *size, char *divider); char **yon_char_parse(char *parameters, int *size, char *divider);
char **yon_char_parsed_shrink(char **char_string, int *size, int item_to_delete); char **yon_char_parsed_shrink(char **char_string, int *size, int item_to_delete);
@ -149,8 +151,13 @@ config_str yon_char_parsed_append(config_str parsed, int *size, char *string);
// parsing functions // parsing functions
config_str philos_list_user(int* size); config_str philos_list_user(int* size);
char* philos_str_size_pow_byte(GtkWidget *combo_box_text);
config_str philos_list_group(int* size); config_str philos_list_group(int* size);
unsigned short philos_read_uid_min_max(char* filename, char* search); unsigned short philos_read_uid_min_max(char* filename, char* search);
apps *yon_apps_scan_and_parse_desktops(int *sizef); apps *yon_apps_scan_and_parse_desktops(int *sizef);
void yon_apps_sort(apps *applist, int size); void yon_apps_sort(apps *applist, int size);

@ -2,6 +2,7 @@
add_window *add_widgets = NULL; add_window *add_widgets = NULL;
add_window *add_setup_window(char* glade_path) { add_window *add_setup_window(char* glade_path) {
if (add_widgets == NULL) { if (add_widgets == NULL) {
add_widgets = malloc(sizeof(add_window)); add_widgets = malloc(sizeof(add_window));
@ -10,6 +11,7 @@ add_window *add_setup_window(char* glade_path) {
add_widgets->btnSaveAddSave = yon_gtk_builder_get_widget(builder,"btnSaveAddSave"); add_widgets->btnSaveAddSave = yon_gtk_builder_get_widget(builder,"btnSaveAddSave");
add_widgets->btnAddCancel = yon_gtk_builder_get_widget(builder,"btnAddCancel"); add_widgets->btnAddCancel = yon_gtk_builder_get_widget(builder,"btnAddCancel");
add_widgets->entryAddCmd = yon_gtk_builder_get_widget(builder,"entryAddCmd");
add_widgets->cbxAddQuotaObj = yon_gtk_builder_get_widget(builder,"cbxAddQuotaObj"); add_widgets->cbxAddQuotaObj = yon_gtk_builder_get_widget(builder,"cbxAddQuotaObj");
add_widgets->cbxAddQuotaLevel2 = yon_gtk_builder_get_widget(builder,"cbxAddQuotaLevel2"); add_widgets->cbxAddQuotaLevel2 = yon_gtk_builder_get_widget(builder,"cbxAddQuotaLevel2");
add_widgets->cbtAddDevice = yon_gtk_builder_get_widget(builder,"cbtAddDevice"); add_widgets->cbtAddDevice = yon_gtk_builder_get_widget(builder,"cbtAddDevice");
@ -36,7 +38,8 @@ add_window *add_setup_window(char* glade_path) {
add_widgets->spinAddWrite = yon_gtk_builder_get_widget(builder,"spinAddWrite"); add_widgets->spinAddWrite = yon_gtk_builder_get_widget(builder,"spinAddWrite");
add_widgets->chbAddWrite = yon_gtk_builder_get_widget(builder,"chbAddWrite"); add_widgets->chbAddWrite = yon_gtk_builder_get_widget(builder,"chbAddWrite");
add_widgets->cbtAddWrite = yon_gtk_builder_get_widget(builder,"cbtAddWrite"); add_widgets->cbtAddWrite = yon_gtk_builder_get_widget(builder,"cbtAddWrite");
device_fill_disk(add_widgets->cbtAddDevice);
add_event(add_widgets); add_event(add_widgets);
add_init_windows(); add_init_windows();
add_localization(add_widgets); add_localization(add_widgets);
@ -52,6 +55,7 @@ void add_init_windows() {
add_set_active_widgets(add_widgets->chkCPULimitAdd, add_widgets->spinCPULimitAdd, add_widgets->lblCPULimitAdd); add_set_active_widgets(add_widgets->chkCPULimitAdd, add_widgets->spinCPULimitAdd, add_widgets->lblCPULimitAdd);
add_set_active_widgets(add_widgets->chbAddWrite, add_widgets->spinAddWrite, add_widgets->cbtAddWrite); add_set_active_widgets(add_widgets->chbAddWrite, add_widgets->spinAddWrite, add_widgets->cbtAddWrite);
add_set_active_widgets(add_widgets->chbAddRead, add_widgets->spinAddRead, add_widgets->cbtAddRead); add_set_active_widgets(add_widgets->chbAddRead, add_widgets->spinAddRead, add_widgets->cbtAddRead);
add_generate_cmd();
} }
void add_event(add_window *widgets) { void add_event(add_window *widgets) {
@ -64,7 +68,21 @@ void add_event(add_window *widgets) {
g_signal_connect(G_OBJECT(widgets->chbAddRead), "toggled", G_CALLBACK(add_init_windows), NULL); g_signal_connect(G_OBJECT(widgets->chbAddRead), "toggled", G_CALLBACK(add_init_windows), NULL);
g_signal_connect(G_OBJECT(widgets->chbAddWrite), "toggled", G_CALLBACK(add_init_windows), NULL); g_signal_connect(G_OBJECT(widgets->chbAddWrite), "toggled", G_CALLBACK(add_init_windows), NULL);
g_signal_connect(G_OBJECT(widgets->cbxAddQuotaObj),"changed",G_CALLBACK(add_update_combo_box), NULL); g_signal_connect(G_OBJECT(widgets->cbxAddQuotaObj),"changed",G_CALLBACK(add_update_combo_box), NULL);
}
g_signal_connect(G_OBJECT(widgets->spiSevereRestrictionAdd),"value-changed",G_CALLBACK(add_generate_cmd), NULL);
g_signal_connect(G_OBJECT(widgets->spinSevereRestrictionAdd),"value-changed",G_CALLBACK(add_generate_cmd), NULL);
g_signal_connect(G_OBJECT(widgets->spinPaddingFLAdd),"value-changed",G_CALLBACK(add_generate_cmd), NULL);
g_signal_connect(G_OBJECT(widgets->spinCPULimitAdd),"value-changed",G_CALLBACK(add_generate_cmd), NULL);
g_signal_connect(G_OBJECT(widgets->spinAddRead),"value-changed",G_CALLBACK(add_generate_cmd), NULL);
g_signal_connect(G_OBJECT(widgets->spinAddWrite),"value-changed",G_CALLBACK(add_generate_cmd), NULL);
g_signal_connect(G_OBJECT(widgets->cmSevereRestrictionAdd),"changed",G_CALLBACK(add_generate_cmd), NULL);
g_signal_connect(G_OBJECT(widgets->cmbSevereRestrictionAdd),"changed",G_CALLBACK(add_generate_cmd), NULL);
g_signal_connect(G_OBJECT(widgets->cmbPaddingFLAdd),"changed",G_CALLBACK(add_generate_cmd), NULL);
g_signal_connect(G_OBJECT(widgets->cbtAddRead),"changed",G_CALLBACK(add_generate_cmd), NULL);
g_signal_connect(G_OBJECT(widgets->cbtAddWrite),"changed",G_CALLBACK(add_generate_cmd), NULL);
g_signal_connect(G_OBJECT(widgets->cbtAddDevice),"changed",G_CALLBACK(add_generate_cmd), NULL);
}
void add_destroy(GtkWidget *self) { void add_destroy(GtkWidget *self) {
add_widgets = NULL; add_widgets = NULL;
@ -187,4 +205,74 @@ void add_update_combo_box() {
philos_fill_combo_box_text(add_widgets->cbxAddQuotaLevel2, fill_cmb_2, size); philos_fill_combo_box_text(add_widgets->cbxAddQuotaLevel2, fill_cmb_2, size);
// yon_terminal_integrated_launch(widgets->vteProcesses, cmd, NULL, NULL); // yon_terminal_integrated_launch(widgets->vteProcesses, cmd, NULL, NULL);
} }
} }
void add_generate_cmd() {
char* str_cmd = "";
char* split_simvol = g_malloc0(sizeof(char)*2);
int size_bite = 0;
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chkSoftRestrictionAdd))) {
size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spiSevereRestrictionAdd));
str_cmd = yon_char_unite(str_cmd,
"MemoryHigh=",
yon_char_from_int(size_bite),
philos_str_size_pow_byte(add_widgets->cmSevereRestrictionAdd), NULL);
split_simvol[0] = ',';
split_simvol[1] = '\0';
}
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chkSevereRestrictionAdd))) {
size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinSevereRestrictionAdd));
str_cmd = yon_char_unite(str_cmd, split_simvol,
"MemoryMax=",
yon_char_from_int(size_bite),
philos_str_size_pow_byte(add_widgets->cmbSevereRestrictionAdd), NULL);
split_simvol[0] = ',';
split_simvol[1] = '\0';
}
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chkPaddingFLAdd))) {
size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinPaddingFLAdd));
str_cmd = yon_char_unite(str_cmd, split_simvol,
"MemorySwapMax=",
yon_char_from_int(size_bite),
philos_str_size_pow_byte(add_widgets->cmbPaddingFLAdd), NULL);
split_simvol[0] = ',';
split_simvol[1] = '\0';
}
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chkCPULimitAdd))) {
size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinCPULimitAdd));
str_cmd = yon_char_unite(str_cmd, split_simvol,
"CPUQuota=",
yon_char_from_int(size_bite),
"\%", NULL);
split_simvol[0] = ',';
split_simvol[1] = '\0';
}
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead))) {
int menu_id = gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddDevice));
if (menu_id != -1) {
size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddRead));
str_cmd = yon_char_unite(str_cmd, split_simvol,
"IOReadBandwidthMax=\"",
get_device_cfg()->name_disk[menu_id],
" ",
yon_char_from_int(size_bite),
philos_str_size_pow_byte(add_widgets->cbtAddRead),"\"", NULL);
}
split_simvol[0] = ',';
split_simvol[1] = '\0';
}
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddWrite))) {
int menu_id = gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddDevice));
if (menu_id != -1) {
size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddWrite));
str_cmd = yon_char_unite(str_cmd, split_simvol,
"IOWriteBandwidthMax=\"",
get_device_cfg()->name_disk[menu_id],
" ",
yon_char_from_int(size_bite),
philos_str_size_pow_byte(add_widgets->cbtAddWrite),"\"", NULL);
}
}
gtk_entry_set_text(GTK_ENTRY(add_widgets->entryAddCmd), str_cmd);
free(split_simvol);
}

@ -11,6 +11,7 @@
#include <libintl.h> #include <libintl.h>
#include <getopt.h> #include <getopt.h>
#include <libintl.h> #include <libintl.h>
#include "my_device.h"
// Переменные // Переменные
typedef struct { typedef struct {
@ -18,6 +19,7 @@ typedef struct {
GtkWidget* btnSaveAddSave; GtkWidget* btnSaveAddSave;
GtkWidget* btnAddCancel; GtkWidget* btnAddCancel;
GtkWidget* entryAddCmd;
GtkWidget* chbAddRead; GtkWidget* chbAddRead;
GtkWidget* spinAddRead; GtkWidget* spinAddRead;
GtkWidget* cbtAddRead; GtkWidget* cbtAddRead;
@ -46,7 +48,6 @@ typedef struct {
GtkWidget* cbxAddQuotaObj; GtkWidget* cbxAddQuotaObj;
GtkWidget* cbxAddQuotaLevel2; GtkWidget* cbxAddQuotaLevel2;
} add_window; } add_window;
// Функции // Функции
add_window *add_setup_window(char* glade_path); add_window *add_setup_window(char* glade_path);
void add_event(add_window *widgets); void add_event(add_window *widgets);
@ -67,4 +68,5 @@ char* add_get_limit_cpu();
char* add_get_limit_swap(); char* add_get_limit_swap();
char* add_get_quota_object(); char* add_get_quota_object();
char* add_get_select_device_to_level_2(); char* add_get_select_device_to_level_2();
void add_generate_cmd();
#endif #endif

@ -34,6 +34,8 @@ edit_window *edit_setup_window(char* glade_path){
edit_widgets->spinEditWrite = yon_gtk_builder_get_widget(builder,"spinEditWrite"); edit_widgets->spinEditWrite = yon_gtk_builder_get_widget(builder,"spinEditWrite");
edit_widgets->chbEditWrite = yon_gtk_builder_get_widget(builder,"chbEditWrite"); edit_widgets->chbEditWrite = yon_gtk_builder_get_widget(builder,"chbEditWrite");
edit_widgets->cbtEditWrite = yon_gtk_builder_get_widget(builder,"cbtEditWrite"); edit_widgets->cbtEditWrite = yon_gtk_builder_get_widget(builder,"cbtEditWrite");
edit_widgets->entryEditCmd = yon_gtk_builder_get_widget(builder,"entryEditCmd");
device_fill_disk(edit_widgets->cbtEditDevice);
edit_event(edit_widgets); edit_event(edit_widgets);
edit_init_windows(); edit_init_windows();
edit_localization(edit_widgets); edit_localization(edit_widgets);
@ -50,6 +52,19 @@ void edit_event(edit_window *widgets) {
g_signal_connect(G_OBJECT(widgets->chkCPULimitEdit), "toggled", G_CALLBACK(edit_init_windows), NULL); g_signal_connect(G_OBJECT(widgets->chkCPULimitEdit), "toggled", G_CALLBACK(edit_init_windows), NULL);
g_signal_connect(G_OBJECT(widgets->chbEditRead), "toggled", G_CALLBACK(edit_init_windows), NULL); g_signal_connect(G_OBJECT(widgets->chbEditRead), "toggled", G_CALLBACK(edit_init_windows), NULL);
g_signal_connect(G_OBJECT(widgets->chbEditWrite), "toggled", G_CALLBACK(edit_init_windows), NULL); g_signal_connect(G_OBJECT(widgets->chbEditWrite), "toggled", G_CALLBACK(edit_init_windows), NULL);
g_signal_connect(G_OBJECT(widgets->spiSevereRestrictionEdit),"value-changed",G_CALLBACK(edit_generate_cmd), NULL);
g_signal_connect(G_OBJECT(widgets->spinSevereRestrictionEdit),"value-changed",G_CALLBACK(edit_generate_cmd), NULL);
g_signal_connect(G_OBJECT(widgets->spinPaddingFLEdit),"value-changed",G_CALLBACK(edit_generate_cmd), NULL);
g_signal_connect(G_OBJECT(widgets->spinCPULimitEdit),"value-changed",G_CALLBACK(edit_generate_cmd), NULL);
g_signal_connect(G_OBJECT(widgets->spinEditRead),"value-changed",G_CALLBACK(edit_generate_cmd), NULL);
g_signal_connect(G_OBJECT(widgets->spinEditWrite),"value-changed",G_CALLBACK(edit_generate_cmd), NULL);
g_signal_connect(G_OBJECT(widgets->cmSevereRestrictionEdit),"changed",G_CALLBACK(edit_generate_cmd), NULL);
g_signal_connect(G_OBJECT(widgets->cmbSevereRestrictionEdit),"changed",G_CALLBACK(edit_generate_cmd), NULL);
g_signal_connect(G_OBJECT(widgets->cmbPaddingFLEdit),"changed",G_CALLBACK(edit_generate_cmd), NULL);
g_signal_connect(G_OBJECT(widgets->cbtEditRead),"changed",G_CALLBACK(edit_generate_cmd), NULL);
g_signal_connect(G_OBJECT(widgets->cbtEditWrite),"changed",G_CALLBACK(edit_generate_cmd), NULL);
g_signal_connect(G_OBJECT(widgets->cbtEditDevice),"changed",G_CALLBACK(edit_generate_cmd), NULL);
} }
void edit_destroy(GtkWidget *self) { void edit_destroy(GtkWidget *self) {
@ -81,6 +96,7 @@ void edit_show(GtkWidget *self, char* glade_path) {
} }
void edit_init_windows() { void edit_init_windows() {
edit_generate_cmd();
edit_set_active_widgets(edit_widgets->chkSoftRestrictionEdit, edit_widgets->spiSevereRestrictionEdit, edit_widgets->cmSevereRestrictionEdit); edit_set_active_widgets(edit_widgets->chkSoftRestrictionEdit, edit_widgets->spiSevereRestrictionEdit, edit_widgets->cmSevereRestrictionEdit);
edit_set_active_widgets(edit_widgets->chkSevereRestrictionEdit, edit_widgets->spinSevereRestrictionEdit, edit_widgets->cmbSevereRestrictionEdit); edit_set_active_widgets(edit_widgets->chkSevereRestrictionEdit, edit_widgets->spinSevereRestrictionEdit, edit_widgets->cmbSevereRestrictionEdit);
edit_set_active_widgets(edit_widgets->chkPaddingFLEdit, edit_widgets->spinPaddingFLEdit, edit_widgets->cmbPaddingFLEdit); edit_set_active_widgets(edit_widgets->chkPaddingFLEdit, edit_widgets->spinPaddingFLEdit, edit_widgets->cmbPaddingFLEdit);
@ -159,13 +175,82 @@ void edit_set_hard(char* str_value) {
} }
void edit_set_limit_cpu(char* str_value) { void edit_set_limit_cpu(char* str_value) {
if (str_value != '-') { // Баг char* search = "-";
int i_value = ; if (yon_char_find_count(str_value, search) != 0) {
gtk_spin_button_set_digits(GTK_SPIN_BUTTON(edit_widgets->spinCPULimitEdit), atoi(str_value)); gtk_spin_button_set_digits(GTK_SPIN_BUTTON(edit_widgets->spinCPULimitEdit), atoi(str_value));
} }
} }
void edit_set_limit_swap(char* str_value) { void edit_set_limit_swap(char* str_value) {
}
void edit_generate_cmd() {
char* str_cmd = "";
char* split_simvol = g_malloc0(sizeof(char)*2);
int size_bite = 0;
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(edit_widgets->chkSoftRestrictionEdit))) {
size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spiSevereRestrictionEdit));
str_cmd = yon_char_unite(str_cmd,
"MemoryHigh=",
yon_char_from_int(size_bite),
philos_str_size_pow_byte(edit_widgets->cmSevereRestrictionEdit), NULL);
split_simvol[0] = ',';
split_simvol[1] = '\0';
}
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(edit_widgets->chkSevereRestrictionEdit))) {
size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spinSevereRestrictionEdit));
str_cmd = yon_char_unite(str_cmd, split_simvol,
"MemoryMax=",
yon_char_from_int(size_bite),
philos_str_size_pow_byte(edit_widgets->cmbSevereRestrictionEdit), NULL);
split_simvol[0] = ',';
split_simvol[1] = '\0';
}
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(edit_widgets->chkPaddingFLEdit))) {
size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spinPaddingFLEdit));
str_cmd = yon_char_unite(str_cmd, split_simvol,
"MemorySwapMax=",
yon_char_from_int(size_bite),
philos_str_size_pow_byte(edit_widgets->cmbPaddingFLEdit), NULL);
split_simvol[0] = ',';
split_simvol[1] = '\0';
}
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(edit_widgets->chkCPULimitEdit))) {
size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spinCPULimitEdit));
str_cmd = yon_char_unite(str_cmd, split_simvol,
"CPUQuota=",
yon_char_from_int(size_bite),
"\%", NULL);
split_simvol[0] = ',';
split_simvol[1] = '\0';
}
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(edit_widgets->chbEditRead))) {
int menu_id = gtk_combo_box_get_active(GTK_COMBO_BOX(edit_widgets->cbtEditDevice));
if (menu_id != -1) {
size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spinEditRead));
str_cmd = yon_char_unite(str_cmd, split_simvol,
"IOReadBandwidthMax=\"",
get_device_cfg()->name_disk[menu_id],
" ",
yon_char_from_int(size_bite),
philos_str_size_pow_byte(edit_widgets->cbtEditRead),"\"", NULL);
}
split_simvol[0] = ',';
split_simvol[1] = '\0';
}
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(edit_widgets->chbEditWrite))) {
int menu_id = gtk_combo_box_get_active(GTK_COMBO_BOX(edit_widgets->cbtEditDevice));
if (menu_id != -1) {
size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spinEditWrite));
str_cmd = yon_char_unite(str_cmd, split_simvol,
"IOWriteBandwidthMax=\"",
get_device_cfg()->name_disk[menu_id],
" ",
yon_char_from_int(size_bite),
philos_str_size_pow_byte(edit_widgets->cbtEditWrite),"\"", NULL);
}
}
gtk_entry_set_text(GTK_ENTRY(edit_widgets->entryEditCmd), str_cmd);
free(split_simvol);
}
}

@ -11,13 +11,15 @@
#include <libintl.h> #include <libintl.h>
#include <getopt.h> #include <getopt.h>
#include <libintl.h> #include <libintl.h>
#include "my_device.h"
// Переменные // Переменные
typedef struct { typedef struct {
GtkWidget* Window; GtkWidget* Window;
GtkWidget* btnSaveEditSave; GtkWidget* btnSaveEditSave;
GtkWidget* btnEditCancel; GtkWidget* btnEditCancel;
GtkWidget* entryEditCmd;
GtkWidget* chbEditRead; GtkWidget* chbEditRead;
GtkWidget* spinEditRead; GtkWidget* spinEditRead;
GtkWidget* cbtEditRead; GtkWidget* cbtEditRead;
@ -61,6 +63,7 @@ char* edit_get_soft();
char* edit_get_hard(); char* edit_get_hard();
char* edit_get_limit_cpu(); char* edit_get_limit_cpu();
char* edit_get_limit_swap(); char* edit_get_limit_swap();
void edit_generate_cmd();
void wrapper_edit_show(); void wrapper_edit_show();
void edit_set_select_device(char* str_value); void edit_set_select_device(char* str_value);
void edit_set_read_device(char* str_value); void edit_set_read_device(char* str_value);
@ -69,4 +72,6 @@ void edit_set_soft(char* str_value);
void edit_set_hard(char* str_value); void edit_set_hard(char* str_value);
void edit_set_limit_cpu(char* str_value); void edit_set_limit_cpu(char* str_value);
void edit_set_limit_swap(char* str_value); void edit_set_limit_swap(char* str_value);
#endif #endif

@ -843,6 +843,12 @@
<object class="GtkComboBoxText" id="cbtAddDevice"> <object class="GtkComboBoxText" id="cbtAddDevice">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">True</property>
@ -1124,7 +1130,7 @@
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="left-padding">12</property> <property name="left-padding">12</property>
<child> <child>
<object class="GtkEntry"> <object class="GtkEntry" id="entryAddCmd">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="margin-left">5</property> <property name="margin-left">5</property>
@ -2217,7 +2223,7 @@
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="left-padding">12</property> <property name="left-padding">12</property>
<child> <child>
<object class="GtkEntry"> <object class="GtkEntry" id="entryEditCmd">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="margin-left">5</property> <property name="margin-left">5</property>

Loading…
Cancel
Save