diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 818ac91..f41a7b9 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -515,149 +515,150 @@ void on_apply_filters(GtkWidget *self, dictionary *dict){ on_close_subwindow(self); } -// void on_quota_manual_input(GtkWidget *self, quota_window *window){ -// // g_signal_handlers_block_by_func(G_OBJECT(window)); -// int size=0; -// char *string = yon_char_new((char*)gtk_entry_get_text(GTK_ENTRY(self))); -// config_str rtn = yon_char_parse(string,&size,","); -// if (rtn){ -// for (int i=0; idevices){ -// if (strstr(dict->key,name)){ -// if (!((device_limits*)dict->data)){ -// dict->data = g_malloc0(sizeof(device_limits)); -// ((device_limits*)dict->data)->write=NULL; -// ((device_limits*)dict->data)->read=NULL; -// } -// ((device_limits*)dict->data)->read = value; -// } -// } - -// } else if (strstr(rtn[i],"IOWriteBandwidthMax=")){ -// char *name = yon_char_divide_search(value, " ",-1); -// dictionary *dict; -// for_dictionaries(dict,window->devices){ -// if (strstr(dict->key,name)){ -// if (!((device_limits*)dict->data)){ -// dict->data = g_malloc0(sizeof(device_limits)); -// ((device_limits*)dict->data)->write=NULL; -// ((device_limits*)dict->data)->read=NULL; -// } -// ((device_limits*)dict->data)->write = value; -// } -// } - -// } else return; -// } -// free(value); -// } -// } else { -// char *value = yon_char_new(string); -// yon_char_divide_search(value,"=",-1); -// int size = yon_get_size_request_from_letter(value[strlen(value)-1]); -// if (size!=-1||strstr(string,"CPUQuota=")){ -// // value[strlen(value)-1]='\0'; -// if (strstr(string,"MemoryHigh=")){ -// gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->SoftRestrictionCheck),1); -// gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->SoftRestrictionSpin),strtol(value,NULL,10)); -// gtk_combo_box_set_active(GTK_COMBO_BOX(window->SoftRestrictionCombo),size); -// } else if (strstr(string,"MemoryMax=")){ -// gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->HardRestrictionCheck),1); -// gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->HardRestrictionSpin),strtol(value,NULL,10)); -// gtk_combo_box_set_active(GTK_COMBO_BOX(window->HardRestrictionCombo),size); + } else if (strstr(rtn[i],"MemorySwapMax=")){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->PagingLimitCheck),1); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->PagingLimitSpin),strtol(value,NULL,10)); + gtk_combo_box_set_active(GTK_COMBO_BOX(window->PagingLimitCombo),size); + + } else if (strstr(rtn[i],"CPUQuota=")){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->CpuLimitCheck),1); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(window-> CpuLimitSpin),strtol(value,NULL,10)); + + } else if (strstr(rtn[i],"IOReadBandwidthMax=")){ + char *name = yon_char_divide_search(value, " ",-1); + dictionary *dict; + for_dictionaries(dict,window->devices){ + if (strstr(dict->key,name)){ + if (!((device_limits*)dict->data)){ + dict->data = g_malloc0(sizeof(device_limits)); + ((device_limits*)dict->data)->write=NULL; + ((device_limits*)dict->data)->read=NULL; + } + ((device_limits*)dict->data)->read = value; + } + } + + } else if (strstr(rtn[i],"IOWriteBandwidthMax=")){ + char *name = yon_char_divide_search(value, " ",-1); + dictionary *dict; + for_dictionaries(dict,window->devices){ + if (strstr(dict->key,name)){ + if (!((device_limits*)dict->data)){ + dict->data = g_malloc0(sizeof(device_limits)); + ((device_limits*)dict->data)->write=NULL; + ((device_limits*)dict->data)->read=NULL; + } + ((device_limits*)dict->data)->write = value; + } + } + + } else return; + } + free(value); + } + } else { + char *value = yon_char_new(string); + yon_char_divide_search(value,"=",-1); + int size = yon_get_size_request_from_letter(value[strlen(value)-1]); + if (size!=-1||strstr(string,"CPUQuota=")){ + // value[strlen(value)-1]='\0'; + if (strstr(string,"MemoryHigh=")){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->SoftRestrictionCheck),1); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->SoftRestrictionSpin),strtol(value,NULL,10)); + gtk_combo_box_set_active(GTK_COMBO_BOX(window->SoftRestrictionCombo),size); + } else if (strstr(string,"MemoryMax=")){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->HardRestrictionCheck),1); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->HardRestrictionSpin),strtol(value,NULL,10)); + gtk_combo_box_set_active(GTK_COMBO_BOX(window->HardRestrictionCombo),size); -// } else if (strstr(string,"MemorySwapMax=")){ -// gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->PagingLimitCheck),1); -// gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->PagingLimitSpin),strtol(value,NULL,10)); -// gtk_combo_box_set_active(GTK_COMBO_BOX(window->PagingLimitCombo),size); - -// } else if (strstr(string,"CPUQuota=")){ -// gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->CpuLimitCheck),1); -// gtk_spin_button_set_value(GTK_SPIN_BUTTON(window-> CpuLimitSpin),strtol(value,NULL,10)); - -// } else if (strstr(string,"IOReadBandwidthMax=")){ -// char *name = yon_char_divide_search(value, " ",-1); -// dictionary *dict; -// for_dictionaries(dict,window->devices){ -// if (strstr(dict->key,name)){ -// if (!((device_limits*)dict->data)){ -// dict->data = g_malloc0(sizeof(device_limits)); -// ((device_limits*)dict->data)->write=NULL; -// ((device_limits*)dict->data)->read=NULL; -// } -// ((device_limits*)dict->data)->read = value; -// } -// } - -// } else if (strstr(string,"IOWriteBandwidthMax=")){ -// char *name = yon_char_divide_search(value, " ",-1); -// dictionary *dict; -// for_dictionaries(dict,window->devices){ -// if (strstr(dict->key,name)){ -// if (!((device_limits*)dict->data)){ -// dict->data = g_malloc0(sizeof(device_limits)); -// ((device_limits*)dict->data)->write=NULL; -// ((device_limits*)dict->data)->read=NULL; -// } -// ((device_limits*)dict->data)->write = value; -// } -// } - -// } else return; -// } -// } -// g_signal_handlers_block_by_func(G_OBJECT(window->DeviceLimitCombo),G_CALLBACK(on_device_current_changed),window); -// gtk_combo_box_set_active(GTK_COMBO_BOX(window->DeviceLimitCombo),0); -// g_signal_handlers_unblock_by_func(G_OBJECT(window->DeviceLimitCombo),G_CALLBACK(on_device_current_changed),window); -// if (window->devices->data){ -// if (((device_limits*)window->devices->data)->read&&strcmp(((device_limits*)window->devices->data)->read,"")!=0){ -// char *rd = ((device_limits*)window->devices->data)->read; -// g_signal_handlers_block_by_func(G_OBJECT(window->DeviceLimitReadCheck),G_CALLBACK(on_quota_configuration_update),window); -// gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->DeviceLimitReadCheck),1); -// g_signal_handlers_unblock_by_func(G_OBJECT(window->DeviceLimitReadCheck),G_CALLBACK(on_quota_configuration_update),window); -// gtk_combo_box_set_active(GTK_COMBO_BOX(window->DeviceLimitReadCombo),yon_get_size_request_from_letter(rd[strlen(rd)-1])); -// rd[strlen(rd)-1]='\0'; -// gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->DeviceLimitReadSpin),strtol(((device_limits*)window->devices->data)->read,NULL,10)); -// } -// else ((device_limits*)window->devices->data)->read=NULL; -// if (((device_limits*)window->devices->data)->write&&strcmp(((device_limits*)window->devices->data)->write,"")!=0){ -// gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->DeviceLimitWriteCheck),1); -// gtk_combo_box_set_active(GTK_COMBO_BOX(window->DeviceLimitWriteCombo),yon_get_size_request_from_letter(((device_limits*)window->devices->data)->write[strlen(((device_limits*)window->devices->data)->write)-1])); -// ((device_limits*)window->devices->data)->write[strlen(((device_limits*)window->devices->data)->write)-1]='\0'; -// gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->DeviceLimitWriteSpin),strtol(((device_limits*)window->devices->data)->write,NULL,10)); -// } else ((device_limits*)window->devices->data)->write=NULL; -// } -// } - -// void on_quota_manual_input_focus (GtkWidget *self, GdkEventFocus *event, quota_window *window){ -// on_quota_manual_input(self,window); -// } + } else if (strstr(string,"MemorySwapMax=")){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->PagingLimitCheck),1); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->PagingLimitSpin),strtol(value,NULL,10)); + gtk_combo_box_set_active(GTK_COMBO_BOX(window->PagingLimitCombo),size); + + } else if (strstr(string,"CPUQuota=")){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->CpuLimitCheck),1); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(window-> CpuLimitSpin),strtol(value,NULL,10)); + + } else if (strstr(string,"IOReadBandwidthMax=")){ + char *name = yon_char_divide_search(value, " ",-1); + dictionary *dict; + for_dictionaries(dict,window->devices){ + if (strstr(dict->key,name)){ + if (!((device_limits*)dict->data)){ + dict->data = g_malloc0(sizeof(device_limits)); + ((device_limits*)dict->data)->write=NULL; + ((device_limits*)dict->data)->read=NULL; + } + ((device_limits*)dict->data)->read = value; + break; + } + } + + } else if (strstr(string,"IOWriteBandwidthMax=")){ + char *name = yon_char_divide_search(value, " ",-1); + dictionary *dict; + for_dictionaries(dict,window->devices){ + if (strstr(dict->key,name)){ + if (!((device_limits*)dict->data)){ + dict->data = g_malloc0(sizeof(device_limits)); + ((device_limits*)dict->data)->write=NULL; + ((device_limits*)dict->data)->read=NULL; + } + ((device_limits*)dict->data)->write = value; + } + } + + } else return; + } + } + // g_signal_handlers_block_by_func(G_OBJECT(window->DeviceLimitCombo),G_CALLBACK(on_device_current_changed),window); + // gtk_combo_box_set_active(GTK_COMBO_BOX(window->DeviceLimitCombo),0); + // g_signal_handlers_unblock_by_func(G_OBJECT(window->DeviceLimitCombo),G_CALLBACK(on_device_current_changed),window); + // if (window->devices->data){ + // if (((device_limits*)window->devices->data)->read&&strcmp(((device_limits*)window->devices->data)->read,"")!=0){ + // char *rd = ((device_limits*)window->devices->data)->read; + // g_signal_handlers_block_by_func(G_OBJECT(window->DeviceLimitReadCheck),G_CALLBACK(on_quota_configuration_update),window); + // gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->DeviceLimitReadCheck),1); + // g_signal_handlers_unblock_by_func(G_OBJECT(window->DeviceLimitReadCheck),G_CALLBACK(on_quota_configuration_update),window); + // gtk_combo_box_set_active(GTK_COMBO_BOX(window->DeviceLimitReadCombo),yon_get_size_request_from_letter(rd[strlen(rd)-1])); + // rd[strlen(rd)-1]='\0'; + // gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->DeviceLimitReadSpin),strtol(((device_limits*)window->devices->data)->read,NULL,10)); + // } + // else ((device_limits*)window->devices->data)->read=NULL; + // if (((device_limits*)window->devices->data)->write&&strcmp(((device_limits*)window->devices->data)->write,"")!=0){ + // gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->DeviceLimitWriteCheck),1); + // gtk_combo_box_set_active(GTK_COMBO_BOX(window->DeviceLimitWriteCombo),yon_get_size_request_from_letter(((device_limits*)window->devices->data)->write[strlen(((device_limits*)window->devices->data)->write)-1])); + // ((device_limits*)window->devices->data)->write[strlen(((device_limits*)window->devices->data)->write)-1]='\0'; + // gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->DeviceLimitWriteSpin),strtol(((device_limits*)window->devices->data)->write,NULL,10)); + // } else ((device_limits*)window->devices->data)->write=NULL; + // } +} + +void on_quota_manual_input_focus (GtkWidget *self, GdkEventFocus *event, quota_window *window){ + on_quota_manual_input(self,window); +} void on_filters_opened(GtkWidget *self, main_window *widgets) { GtkBuilder *builder = gtk_builder_new_from_resource(glade_filters_path); @@ -813,8 +814,8 @@ void on_add_open(GtkWidget *self, main_window *widgets){ g_signal_connect(G_OBJECT(window->DeviceLimitReadCheck),"toggled",G_CALLBACK(on_quota_configuration_update),window); g_signal_connect(G_OBJECT(window->DeviceLimitWriteCheck),"toggled",G_CALLBACK(on_quota_configuration_update),window); - // g_signal_connect(G_OBJECT(window->ManualInputEntry),"activate",G_CALLBACK(on_quota_manual_input),window); - // g_signal_connect(G_OBJECT(window->ManualInputEntry),"focus-out-event",G_CALLBACK(on_quota_manual_input_focus),window); + g_signal_connect(G_OBJECT(window->ManualInputEntry),"activate",G_CALLBACK(on_quota_manual_input),window); + g_signal_connect(G_OBJECT(window->ManualInputEntry),"focus-out-event",G_CALLBACK(on_quota_manual_input_focus),window); yon_get_devices(window); dictionary *dict; for_dictionaries(dict,window->devices){