From fef1f3a235e870834cf7334d8968d136ad625c4a Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Thu, 8 Jun 2023 16:54:14 +0600 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D1=87=D0=B0=D1=81=D1=82=D1=8C=20=D0=BB=D0=B8=D0=BC=D0=B8=D1=82?= =?UTF-8?q?=D0=BE=D0=B2=20=D0=B4=D0=BB=D1=8F=20=D1=80=D0=B5=D0=B4=D0=B0?= =?UTF-8?q?=D0=BA=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=B8=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=BA=D0=B2=D0=BE=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/my_device.c | 24 +++++- source/my_device.h | 3 + source/ubl-settings-resourcequota.c | 4 +- source/view_add.c | 103 +++++++++++++++++--------- source/view_add.h | 10 ++- source/view_edit.c | 110 +++++++++++++++++++--------- source/view_edit.h | 9 ++- 7 files changed, 190 insertions(+), 73 deletions(-) diff --git a/source/my_device.c b/source/my_device.c index a10d499..ed6d4fd 100644 --- a/source/my_device.c +++ b/source/my_device.c @@ -38,10 +38,32 @@ void device_disk_parsed() { } free(disk); } + philos_free_string_array(&responce, size); } 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]); } -} \ No newline at end of file +} + +size_t get_resurs_total(char* cmd) { + int size = 0; + size_t size_memory = 0; + char **responce = yon_config_load(cmd, &size); + for (int index = 0; index < size; index++ ) { + char* mem_size_kb = yon_char_divide_search(responce[index], "\n", -1); + size_memory = atoll(mem_size_kb); + free(mem_size_kb); + } + philos_free_string_array(&responce, size); + return size_memory; +} + +float get_size_pow_memory(size_t size_memory, int size) { + float res = size_memory; + for (size_t index = 0; index < size; index++) { + res = res/1024; + } + return res; +} diff --git a/source/my_device.h b/source/my_device.h index 4b695a0..67d2211 100644 --- a/source/my_device.h +++ b/source/my_device.h @@ -16,5 +16,8 @@ typedef struct { void device_disk_parsed(); device_config* get_device_cfg(); void device_fill_disk(GtkWidget* combo_box_text); +size_t get_mem_total(); +float get_size_pow_memory(size_t size_memory, int size); +size_t get_resurs_total(char* cmd); #endif \ No newline at end of file diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index c089412..2c01b5e 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -713,9 +713,9 @@ void wrapper_edit_show() { edit_set_soft(main_config.soft_raw_limit[index], main_config.soft_raw_limit_size[index]); edit_set_write_device(main_config.i_o_limit_write[index], main_config.i_o_limit_write_size[index]); edit_set_read_device(main_config.i_o_limit_read[index], main_config.i_o_limit_read_size[index]); - edit_event(get_widget_edit()); edit_init_windows(); edit_set_limit_swap(main_config.swap[index], main_config.swap_size[index]); + edit_event(get_widget_edit()); // edit_set_select_device(main_config.cpu_limit[index]); g_signal_connect(G_OBJECT(get_widget_edit()->btnSaveEditSave), "clicked", G_CALLBACK(main_edit_btn_save), NULL); } @@ -723,6 +723,7 @@ void wrapper_edit_show() { void main_edit_btn_save() { if (tree_view_edit(main_config.size_tree_view)) { + edit_init_windows(); add_on_destroy_subwindow(get_widget_edit()->Window); } } @@ -1009,6 +1010,7 @@ void main_localization(main_window *widgets) { } int main(int argc, char *argv[]){ + // printf("%f\n", get_size_pow_memory(get_mem_total(), 3)); local=setlocale(LC_ALL, ""); textdomain (LocaleName); config_init(); diff --git a/source/view_add.c b/source/view_add.c index 41c9f69..c9a2ec3 100644 --- a/source/view_add.c +++ b/source/view_add.c @@ -51,19 +51,47 @@ add_window *add_setup_window(char* glade_path) { void add_init_windows() { if (gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbxAddQuotaLevel2)) != -1) { gtk_widget_set_sensitive(add_widgets->boxBlockGui, 1); - add_set_active_widgets(add_widgets->chkSoftRestrictionAdd, add_widgets->spiSevereRestrictionAdd, add_widgets->cmSevereRestrictionAdd); - add_set_active_widgets(add_widgets->chkSevereRestrictionAdd, add_widgets->spinSevereRestrictionAdd, add_widgets->cmbSevereRestrictionAdd); - add_set_active_widgets(add_widgets->chkPaddingFLAdd, add_widgets->spinPaddingFLAdd, add_widgets->cmbPaddingFLAdd); - add_set_active_widgets(add_widgets->chkCPULimitAdd, add_widgets->spinCPULimitAdd, add_widgets->lblCPULimitAdd); - add_set_active_widgets_device_io(add_widgets->chbAddWrite, add_widgets->spinAddWrite, add_widgets->cbtAddWrite); - add_set_active_widgets_device_io(add_widgets->chbAddRead, add_widgets->spinAddRead, add_widgets->cbtAddRead); + gtk_widget_set_sensitive(add_widgets->btnSaveAddSave, 1); + add_set_active_widgets(add_widgets->chkSoftRestrictionAdd, add_widgets->spiSevereRestrictionAdd, add_widgets->cmSevereRestrictionAdd, 0 , CMD_RAW); + add_set_active_widgets(add_widgets->chkSevereRestrictionAdd, add_widgets->spinSevereRestrictionAdd, add_widgets->cmbSevereRestrictionAdd,0 , CMD_RAW); + add_set_active_widgets(add_widgets->chkPaddingFLAdd, add_widgets->spinPaddingFLAdd, add_widgets->cmbPaddingFLAdd,0 , CMD_SWAP); + add_set_active_widgets(add_widgets->chkCPULimitAdd, add_widgets->spinCPULimitAdd, add_widgets->lblCPULimitAdd,1 , CMD_CPU); + //add_set_active_widgets_device_io(add_widgets->chbAddWrite, add_widgets->spinAddWrite, add_widgets->cbtAddWrite); + //add_set_active_widgets_device_io(add_widgets->chbAddRead, add_widgets->spinAddRead, add_widgets->cbtEditRead); add_generate_cmd(); } else { gtk_widget_set_sensitive(add_widgets->boxBlockGui, 0); + gtk_widget_set_sensitive(add_widgets->btnSaveAddSave, 0); + add_generate_cmd(); } } +void add_set_spin_adjustment(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, size_t value) { + gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); + if (active != -1) { + GtkAdjustment* adjustment = NULL; + adjustment = gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(spin)); + gtk_adjustment_set_lower(adjustment, 0.0); + gtk_adjustment_set_page_increment(adjustment, 1.0); + if (combo == NULL) { + gtk_adjustment_set_upper(adjustment, (gdouble)(value*100)); + } + else { + int index = gtk_combo_box_get_active(GTK_COMBO_BOX(combo)); + if (index == 0) { + float pow_mem_size = get_size_pow_memory(value, index); + gtk_adjustment_set_upper(adjustment, (gdouble)value); + } + else if (index == -1) {} + else { + float pow_mem_size = get_size_pow_memory(value, index); + gtk_adjustment_set_upper(adjustment, (gdouble)pow_mem_size); + } + + } + } +} void add_event(add_window *widgets) { g_signal_connect(G_OBJECT(widgets->btnAddCancel),"clicked",G_CALLBACK(add_on_destroy_subwindow),NULL); g_signal_connect(G_OBJECT(widgets->Window), "destroy", G_CALLBACK(add_destroy), NULL); @@ -76,18 +104,18 @@ void add_event(add_window *widgets) { g_signal_connect(G_OBJECT(widgets->cbxAddQuotaObj),"changed",G_CALLBACK(add_update_combo_box), NULL); g_signal_connect(G_OBJECT(widgets->cbxAddQuotaLevel2),"changed",G_CALLBACK(add_init_windows), 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); + g_signal_connect(G_OBJECT(widgets->spiSevereRestrictionAdd),"change-value",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinSevereRestrictionAdd),"change-value",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinPaddingFLAdd),"change-value",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinCPULimitAdd),"change-value",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinAddRead),"change-value",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinAddWrite),"change-value",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->cmSevereRestrictionAdd),"changed",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->cmbSevereRestrictionAdd),"changed",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->cmbPaddingFLAdd),"changed",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->cbtAddRead),"changed",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->cbtAddWrite),"changed",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->cbtAddDevice),"changed",G_CALLBACK(add_init_windows), NULL); } @@ -102,32 +130,40 @@ void add_destroy(GtkWidget *self) { add_widgets = NULL; } -void add_set_active_widgets_device_io(GtkWidget *self, GtkWidget *entry, GtkWidget *label) { +void add_set_active_widgets_device_io(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, char* cmd) { int menu_id = gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddDevice)); if (menu_id != -1) { - gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self)); - gtk_widget_set_sensitive(entry, active); - gtk_widget_set_sensitive(label, active); + gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); + gtk_widget_set_sensitive(spin, active); + gtk_widget_set_sensitive(combo, active); if (active == 0) { - gtk_spin_button_set_digits(GTK_SPIN_BUTTON(entry), 0); + gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0); } } else { - gtk_widget_set_sensitive(entry, 0); - gtk_widget_set_sensitive(label, 0); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(self), 0); - gtk_spin_button_set_digits(GTK_SPIN_BUTTON(entry), 0); + gtk_widget_set_sensitive(spin, 0); + gtk_widget_set_sensitive(combo, 0); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), 0); + gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0); } + add_set_spin_adjustment(check, spin, combo, get_resurs_total(cmd)); } -void add_set_active_widgets(GtkWidget *self, GtkWidget *entry, GtkWidget *label) { - gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self)); - gtk_widget_set_sensitive(entry, active); - gtk_widget_set_sensitive(label, active); +void add_set_active_widgets(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, int flag_cpu, char* cmd) { + gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); + gtk_widget_set_sensitive(spin, active); + gtk_widget_set_sensitive(combo, active); if (active == 0) { - gtk_spin_button_set_digits(GTK_SPIN_BUTTON(entry), 0); + gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0); + } + if (flag_cpu == 0) { + add_set_spin_adjustment(check, spin, combo, get_resurs_total(cmd)); + } + else { + add_set_spin_adjustment(check, spin, NULL, get_resurs_total(cmd)); } } + void add_localization(add_window *widgets) { } @@ -146,12 +182,13 @@ void add_show(GtkWidget *self, char* glade_path) { if (add_widgets != NULL) { add_update_combo_box(); gtk_widget_show_all(add_widgets->Window); - + add_init_windows(); } else { add_setup_window(glade_path); add_update_combo_box(); gtk_widget_show_all(add_widgets->Window); + add_init_windows(); } } diff --git a/source/view_add.h b/source/view_add.h index 5ffbaa2..3516e7a 100644 --- a/source/view_add.h +++ b/source/view_add.h @@ -13,6 +13,11 @@ #include #include "my_device.h" + +#define CMD_CPU "lscpu | grep \"CPU(s):\" |grep -oE \"[0-9]{1,}\"" +#define CMD_SWAP "grep '^Swap' /proc/meminfo | grep \"SwapTotal\" |grep -oE \"[0-9]{1,}\"" +#define CMD_RAW "cat /proc/meminfo | grep \"MemTotal\" |grep -oE \"[0-9]{1,}\"" + static char* CMD_GET_GROUP; static char* CMD_GET_SLICE_SERVICE; // Переменные @@ -60,7 +65,7 @@ void add_on_destroy_subwindow(GtkWidget *self); add_window *get_widget_add(); void add_show(GtkWidget *self, char* glade_path); void add_destroy(GtkWidget *self); -void add_set_active_widgets(GtkWidget *self, GtkWidget *entry, GtkWidget *label); +void add_set_active_widgets(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, int flag_cpu, char* cmd); void add_init_windows(); void add_update_combo_box(); char* add_get_select_device(); @@ -80,9 +85,10 @@ int add_get_limit_cpu_size(); int add_get_limit_swap_size(); int add_get_quota_object_size(); -void add_set_active_widgets_device_io(GtkWidget *self, GtkWidget *entry, GtkWidget *label); +void add_set_active_widgets_device_ioadd_set_active_widgets_device_io(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, char* cmd); void add_get_cmd_group(char* cmd_get_group); char* add_get_select_device_to_level_2(); void add_generate_cmd(); void add_get_systemd_cgls(char* cmd_systemd_cgls); +void add_set_spin_adjustment(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, size_t value); #endif \ No newline at end of file diff --git a/source/view_edit.c b/source/view_edit.c index 61b5a11..872573f 100644 --- a/source/view_edit.c +++ b/source/view_edit.c @@ -52,18 +52,18 @@ void edit_event(edit_window *widgets) { 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->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); + g_signal_connect(G_OBJECT(widgets->spiSevereRestrictionEdit),"value-changed",G_CALLBACK(edit_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinSevereRestrictionEdit),"value-changed",G_CALLBACK(edit_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinPaddingFLEdit),"value-changed",G_CALLBACK(edit_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinCPULimitEdit),"value-changed",G_CALLBACK(edit_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinEditRead),"value-changed",G_CALLBACK(edit_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinEditWrite),"value-changed",G_CALLBACK(edit_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->cmSevereRestrictionEdit),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), widgets->spiSevereRestrictionEdit); + g_signal_connect(G_OBJECT(widgets->cmbSevereRestrictionEdit),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), widgets->spinSevereRestrictionEdit); + g_signal_connect(G_OBJECT(widgets->cmbPaddingFLEdit),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), widgets->spinPaddingFLEdit); + g_signal_connect(G_OBJECT(widgets->cbtEditRead),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), widgets->spinEditRead); + g_signal_connect(G_OBJECT(widgets->cbtEditWrite),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), widgets->spinEditWrite); + g_signal_connect(G_OBJECT(widgets->cbtEditDevice),"changed",G_CALLBACK(edit_init_windows), NULL); } void edit_destroy(GtkWidget *self) { @@ -93,45 +93,86 @@ void edit_show(GtkWidget *self, char* glade_path) { } } +void wrapper_edit_init_windows_size_memory(GtkWidget *spin) { + if (spin != NULL) { + // gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0); + } + edit_init_windows(); +} void edit_init_windows() { - 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->chkPaddingFLEdit, edit_widgets->spinPaddingFLEdit, edit_widgets->cmbPaddingFLEdit); - edit_set_active_widgets(edit_widgets->chkCPULimitEdit, edit_widgets->spinCPULimitEdit, edit_widgets->lblCPULimitEdit); - edit_set_active_widgets_device_io(edit_widgets->chbEditWrite, edit_widgets->spinEditWrite, edit_widgets->cbtEditWrite); - edit_set_active_widgets_device_io(edit_widgets->chbEditRead, edit_widgets->spinEditRead, edit_widgets->cbtEditRead); + edit_set_active_widgets(edit_widgets->chkSoftRestrictionEdit, edit_widgets->spiSevereRestrictionEdit, edit_widgets->cmSevereRestrictionEdit,0 ,CMD_RAW); + edit_set_active_widgets(edit_widgets->chkSevereRestrictionEdit, edit_widgets->spinSevereRestrictionEdit, edit_widgets->cmbSevereRestrictionEdit,0 , CMD_RAW); + edit_set_active_widgets(edit_widgets->chkPaddingFLEdit, edit_widgets->spinPaddingFLEdit, edit_widgets->cmbPaddingFLEdit,0 , CMD_SWAP); + edit_set_active_widgets(edit_widgets->chkCPULimitEdit, edit_widgets->spinCPULimitEdit, edit_widgets->lblCPULimitEdit,1 ,CMD_CPU); + //edit_set_active_widgets_device_io(edit_widgets->chbEditWrite, edit_widgets->spinEditWrite, edit_widgets->cbtEditWrite); + //edit_set_active_widgets_device_io(edit_widgets->chbEditRead, edit_widgets->spinEditRead, edit_widgets->cbtEditRead); edit_generate_cmd(); } -void edit_set_active_widgets(GtkWidget *self, GtkWidget *entry, GtkWidget *label) { - gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self)); - gtk_widget_set_sensitive(entry, active); - gtk_widget_set_sensitive(label, active); +void edit_set_active_widgets(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, int flag_cpu, char* cmd) { + gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); + gtk_widget_set_sensitive(spin, active); + gtk_widget_set_sensitive(combo, active); if (active == 0) { - gtk_spin_button_set_digits(GTK_SPIN_BUTTON(entry), 0); + gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0); + } + if (flag_cpu == 0) { + edit_set_spin_adjustment(check, spin, combo, get_resurs_total(cmd)); + } + else { + edit_set_spin_adjustment(check, spin, NULL, get_resurs_total(cmd)); } + } -void edit_set_active_widgets_device_io(GtkWidget *self, GtkWidget *entry, GtkWidget *label) { + +void edit_set_active_widgets_device_io(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, char* cmd) { int menu_id = gtk_combo_box_get_active(GTK_COMBO_BOX(edit_widgets->cbtEditDevice)); if (menu_id != -1) { - gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self)); - gtk_widget_set_sensitive(entry, active); - gtk_widget_set_sensitive(label, active); + gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); + gtk_widget_set_sensitive(spin, active); + gtk_widget_set_sensitive(combo, active); if (active == 0) { - gtk_spin_button_set_digits(GTK_SPIN_BUTTON(entry), 0); + gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0); } } else { - gtk_widget_set_sensitive(entry, 0); - gtk_widget_set_sensitive(label, 0); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(self), 0); - gtk_spin_button_set_digits(GTK_SPIN_BUTTON(entry), 0); + gtk_widget_set_sensitive(spin, 0); + gtk_widget_set_sensitive(combo, 0); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), 0); + gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0); + } + edit_set_spin_adjustment(check, spin, combo, get_resurs_total(cmd)); +} + +void edit_set_spin_adjustment(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, size_t value) { + gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); + if (active != -1) { + GtkAdjustment* adjustment = NULL; + adjustment = gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(spin)); + gtk_adjustment_set_lower(adjustment, 0.0); + gtk_adjustment_set_page_increment(adjustment, 1.0); + if (combo == NULL) { + gtk_adjustment_set_upper(adjustment, (gdouble)(value*100)); + } + else { + int index = gtk_combo_box_get_active(GTK_COMBO_BOX(combo)); + if (index == 0) { + float pow_mem_size = get_size_pow_memory(value, index); + gtk_adjustment_set_upper(adjustment, (gdouble)value); + } + else if (index == -1) {} + else { + float pow_mem_size = get_size_pow_memory(value, index); + printf("%f\n", pow_mem_size); + gtk_adjustment_set_upper(adjustment, (gdouble)pow_mem_size); + } + + } } - - } + char* edit_get_select_device() { char* text = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(edit_widgets->cbtEditDevice)); if (text != NULL) { @@ -248,6 +289,7 @@ void edit_temp_set(char* str_value, int pow_mem, GtkWidget* cheek, GtkWidget* sp } } void edit_generate_cmd() { + char* str_cmd = " "; char* split_simvol = g_malloc0(sizeof(char)*2); int size_bite = 0; diff --git a/source/view_edit.h b/source/view_edit.h index 83e6052..29c1e8f 100644 --- a/source/view_edit.h +++ b/source/view_edit.h @@ -13,6 +13,9 @@ #include #include "my_device.h" +#define CMD_CPU "lscpu | grep \"CPU(s):\" |grep -oE \"[0-9]{1,}\"" +#define CMD_SWAP "grep '^Swap' /proc/meminfo | grep \"SwapTotal\" |grep -oE \"[0-9]{1,}\"" +#define CMD_RAW "cat /proc/meminfo | grep \"MemTotal\" |grep -oE \"[0-9]{1,}\"" // Переменные typedef struct { GtkWidget* Window; @@ -55,7 +58,8 @@ edit_window *get_widget_edit(); void edit_show(GtkWidget *self, char* glade_path); void edit_destroy(GtkWidget *self); void edit_init_windows(); -void edit_set_active_widgets(GtkWidget *self, GtkWidget *entry, GtkWidget *label); +void wrapper_edit_init_windows_size_memory(GtkWidget *spin); +void edit_set_active_widgets(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, int flag_cpu, char* cmd); char* edit_get_select_device(); char* edit_get_read_device(); char* edit_get_write_device(); @@ -80,5 +84,6 @@ int edit_get_soft_size(); int edit_get_hard_size(); int edit_get_limit_cpu_size(); int edit_get_limit_swap_size(); -void edit_set_active_widgets_device_io(GtkWidget *self, GtkWidget *entry, GtkWidget *label); +void edit_set_active_widgets_device_io(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, char* cmd); +void edit_set_spin_adjustment(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, size_t value); #endif \ No newline at end of file