diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 214188b..f65cf35 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -191,7 +191,9 @@ main_window *setup_window(){ void main_update_dispatcher() { int second = gtk_spin_button_get_value(GTK_SPIN_BUTTON(widgets->spinUpdateDispatcher)); char *cmd = "systemd-cgtop"; - // yon_terminal_integrated_launch(widgets->vteDispatcher, cmd, NULL, NULL); + GtkWidget* parent=gtk_widget_get_parent(widgets->vteDispatcher); + gtk_container_remove(GTK_CONTAINER(parent),widgets->vteDispatcher); + yon_terminal_integrated_launch(parent, cmd, NULL, NULL); } diff --git a/source/ubl-utils.c b/source/ubl-utils.c index ec125cf..b443d5e 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -819,16 +819,25 @@ static render_data render; * после завершения работы терминала вызывается функция [endwork_function] с аргументом [endwork_function_argument]. */ void yon_terminal_integrated_launch(GtkWidget *place_to_show, char* command, void *endwork_function, void* endwork_function_argument){ + char **commands=new_arr(char*,2); + gchar **envp = g_get_environ(); + commands[0]=(gchar *)g_strdup(g_environ_getenv(envp, "SHELL")); + commands[1]=NULL; + char **env=new_arr(char*,2); + env[0]=""; + env[1]=NULL; GtkWidget *terminal = vte_terminal_new(); vte_terminal_set_size(VTE_TERMINAL(terminal),10,15); VtePty *pty = vte_pty_new_sync(VTE_PTY_DEFAULT,NULL,NULL); vte_terminal_set_pty(VTE_TERMINAL(terminal),pty); + gtk_container_add(GTK_CONTAINER(place_to_show),terminal); char *install_command=yon_char_unite("tput cup 0 0 && tput ed; ",command," ; sleep 5;exit 0","\n",NULL); - g_signal_connect(G_OBJECT(terminal), "child-exited", G_CALLBACK(on_terminal_done), widgets); + if(endwork_function) + g_signal_connect(G_OBJECT(terminal), "child-exited", G_CALLBACK(endwork_function), endwork_function_argument); vte_terminal_spawn_async(VTE_TERMINAL(terminal), VTE_PTY_DEFAULT, NULL, - install_command, + commands, NULL, 0, NULL, NULL, @@ -836,10 +845,10 @@ void yon_terminal_integrated_launch(GtkWidget *place_to_show, char* command, voi -1, NULL, NULL, - NULL); + install_command); vte_pty_spawn_async(pty, NULL, - install_command, + commands, NULL, 0, NULL, NULL, @@ -847,11 +856,11 @@ void yon_terminal_integrated_launch(GtkWidget *place_to_show, char* command, voi -1, NULL, NULL, - NULL); + install_command); vte_terminal_set_scrollback_lines(VTE_TERMINAL(terminal), 100); vte_terminal_set_scroll_on_output(VTE_TERMINAL(terminal), TRUE); vte_terminal_set_scroll_on_keystroke(VTE_TERMINAL(terminal), TRUE); - gtk_widget_show_all(widgets->TerminalRevealer); + gtk_widget_show_all(terminal); } #endif diff --git a/source/ubl-utils.h b/source/ubl-utils.h index 7f266f4..fc1ce42 100644 --- a/source/ubl-utils.h +++ b/source/ubl-utils.h @@ -10,6 +10,7 @@ #include #include #include +#include #include "ubl-settings-resourcequota-cm.h" #ifdef WEBKIT_FOUND diff --git a/source/view_add.c b/source/view_add.c index 9dcb074..5232056 100644 --- a/source/view_add.c +++ b/source/view_add.c @@ -25,6 +25,15 @@ add_window *add_setup_window(char* glade_path) { add_widgets->chkSoftRestrictionAdd = yon_gtk_builder_get_widget(builder,"chkSoftRestrictionAdd"); add_widgets->spiSevereRestrictionAdd = yon_gtk_builder_get_widget(builder,"spiSevereRestrictionAdd"); add_widgets->cmSevereRestrictionAdd = yon_gtk_builder_get_widget(builder,"cmSevereRestrictionAdd"); + + add_widgets->chbAddRead = yon_gtk_builder_get_widget(builder,"chbAddRead"); + add_widgets->spinAddRead = yon_gtk_builder_get_widget(builder,"spinAddRead"); + add_widgets->cbtAddRead = yon_gtk_builder_get_widget(builder,"cbtAddRead"); + + add_widgets->spinAddWrite = yon_gtk_builder_get_widget(builder,"spinAddWrite"); + add_widgets->chbAddWrite = yon_gtk_builder_get_widget(builder,"chbAddWrite"); + add_widgets->cbtAddWrite = yon_gtk_builder_get_widget(builder,"cbtAddWrite"); + add_event(add_widgets); add_init_windows(); add_localization(add_widgets); @@ -38,6 +47,8 @@ void add_init_windows() { 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(add_widgets->chbAddWrite, add_widgets->spinAddWrite, add_widgets->cbtAddWrite); + add_set_active_widgets(add_widgets->chbAddRead, add_widgets->spinAddRead, add_widgets->cbtAddRead); } void add_event(add_window *widgets) { @@ -47,6 +58,9 @@ void add_event(add_window *widgets) { g_signal_connect(G_OBJECT(widgets->chkSevereRestrictionAdd), "toggled", G_CALLBACK(add_init_windows), NULL); g_signal_connect(G_OBJECT(widgets->chkPaddingFLAdd), "toggled", G_CALLBACK(add_init_windows), NULL); g_signal_connect(G_OBJECT(widgets->chkCPULimitAdd), "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); + } void add_destroy(GtkWidget *self) { diff --git a/source/view_add.h b/source/view_add.h index 30364ef..7e84477 100644 --- a/source/view_add.h +++ b/source/view_add.h @@ -18,6 +18,14 @@ typedef struct { GtkWidget* btnSaveAddSave; GtkWidget* btnAddCancel; + GtkWidget* chbAddRead; + GtkWidget* spinAddRead; + GtkWidget* cbtAddRead; + + GtkWidget* chbAddWrite; + GtkWidget* spinAddWrite; + GtkWidget* cbtAddWrite; + GtkWidget* chkSoftRestrictionAdd; GtkWidget* spiSevereRestrictionAdd; GtkWidget* cmSevereRestrictionAdd; diff --git a/source/view_edit.c b/source/view_edit.c index 897386f..93aab53 100644 --- a/source/view_edit.c +++ b/source/view_edit.c @@ -25,6 +25,14 @@ edit_window *edit_setup_window(char* glade_path){ edit_widgets->chkSoftRestrictionEdit = yon_gtk_builder_get_widget(builder,"chkSoftRestrictionEdit"); edit_widgets->spiSevereRestrictionEdit = yon_gtk_builder_get_widget(builder,"spiSevereRestrictionEdit"); edit_widgets->cmSevereRestrictionEdit = yon_gtk_builder_get_widget(builder,"cmSevereRestrictionEdit"); + + edit_widgets->chbEditRead = yon_gtk_builder_get_widget(builder,"chbEditRead"); + edit_widgets->spinEditRead = yon_gtk_builder_get_widget(builder,"spinEditRead"); + edit_widgets->cbtEditRead = yon_gtk_builder_get_widget(builder,"cbtEditRead"); + + edit_widgets->spinEditWrite = yon_gtk_builder_get_widget(builder,"spinEditWrite"); + edit_widgets->chbEditWrite = yon_gtk_builder_get_widget(builder,"chbEditWrite"); + edit_widgets->cbtEditWrite = yon_gtk_builder_get_widget(builder,"cbtEditWrite"); edit_event(edit_widgets); edit_init_windows(); edit_localization(edit_widgets); @@ -39,6 +47,8 @@ void edit_event(edit_window *widgets) { g_signal_connect(G_OBJECT(widgets->chkSevereRestrictionEdit), "toggled", G_CALLBACK(edit_init_windows), NULL); g_signal_connect(G_OBJECT(widgets->chkPaddingFLEdit), "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->chbEditWrite), "toggled", G_CALLBACK(edit_init_windows), NULL); } void edit_destroy(GtkWidget *self) { @@ -74,6 +84,8 @@ void edit_init_windows() { 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(edit_widgets->chbEditWrite, edit_widgets->spinEditWrite, edit_widgets->cbtEditWrite); + edit_set_active_widgets(edit_widgets->chbEditRead, edit_widgets->spinEditRead, edit_widgets->cbtEditRead); } void edit_set_active_widgets(GtkWidget *self, GtkWidget *entry, GtkWidget *label) { diff --git a/source/view_edit.h b/source/view_edit.h index 6a02f56..a41d048 100644 --- a/source/view_edit.h +++ b/source/view_edit.h @@ -18,6 +18,14 @@ typedef struct { GtkWidget* btnSaveEditSave; GtkWidget* btnEditCancel; + GtkWidget* chbEditRead; + GtkWidget* spinEditRead; + GtkWidget* cbtEditRead; + + GtkWidget* chbEditWrite; + GtkWidget* spinEditWrite; + GtkWidget* cbtEditWrite; + GtkWidget* chkSoftRestrictionEdit; GtkWidget* spiSevereRestrictionEdit; GtkWidget* cmSevereRestrictionEdit; diff --git a/ubl-settings-resourcequota.glade b/ubl-settings-resourcequota.glade index 8532f60..e87d568 100644 --- a/ubl-settings-resourcequota.glade +++ b/ubl-settings-resourcequota.glade @@ -1115,7 +1115,7 @@ limit - + True True True @@ -1126,7 +1126,7 @@ limit 5 5 - + True False @@ -2433,7 +2433,7 @@ limit True False - + True True False @@ -2441,11 +2441,11 @@ limit 5 5 5 - 5 + 4 5 True - + True True @@ -2458,7 +2458,7 @@ limit - + True False 5 @@ -2525,7 +2525,7 @@ limit True False - + True True False @@ -2537,7 +2537,7 @@ limit 5 True - + True True @@ -2550,7 +2550,7 @@ limit - + True False 5 @@ -3436,7 +3436,7 @@ limit True False - + True True False @@ -3444,11 +3444,11 @@ limit 5 5 5 - 5 + 4 5 True - + True True @@ -3461,7 +3461,7 @@ limit - + True False 5 @@ -3528,7 +3528,7 @@ limit True False - + True True False @@ -3540,7 +3540,7 @@ limit 5 True - + True True @@ -3553,10 +3553,11 @@ limit - + True False 5 + 5 5 5 5