diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index dcea2da..70a95a8 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -275,20 +275,19 @@ void main_cbx_2_event() { void tree_view_select(GtkWidget *self, main_window *widgets) { GtkTreeIter iter; - char *name; - GtkTreeModel *list_s=GTK_TREE_MODEL(main_config.list); + GtkTreeModel *model = GTK_TREE_MODEL(main_config.list); GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->treeViewMain)); - if (gtk_tree_selection_get_selected(selection, &list_s, &iter)){ - int installed=0; - gtk_tree_model_get(gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->treeViewMain)),&iter,0,&installed,-1); - if (installed==1){ - gtk_widget_set_sensitive(widgets->btnAdd,0); - gtk_widget_set_sensitive(widgets->btnDelQuotas,1); - } else { - gtk_widget_set_sensitive(widgets->btnAdd,1); - gtk_widget_set_sensitive(widgets->btnDelQuotas,0); - } + if(gtk_tree_selection_get_selected(selection, &model, &iter)) { + gtk_widget_set_sensitive(widgets->btnAdd,1); + gtk_widget_set_sensitive(widgets->btnDelQuotas,1); + gtk_widget_set_sensitive(widgets->btnEdit,1); + } + else { + gtk_widget_set_sensitive(widgets->btnAdd,1); + gtk_widget_set_sensitive(widgets->btnDelQuotas,0); + gtk_widget_set_sensitive(widgets->btnEdit,0); } + } void tree_view_add(int index) { @@ -341,7 +340,7 @@ int tree_view_edit() { 5,main_config.cpu_limit[index], 6,main_config.i_o_limit_read[index], 7,main_config.i_o_limit_write[index],-1); - return 0; + return 1; } else { return 0; @@ -386,7 +385,7 @@ void main_event(main_window *widgets) { g_signal_connect(G_OBJECT(widgets->cbtMainInfo),"changed",G_CALLBACK(main_update_information), NULL); g_signal_connect(G_OBJECT(widgets->cbtMainInfoLevel2),"changed",G_CALLBACK(main_cbx_2_event), NULL); g_signal_connect(G_OBJECT(widgets->btnDelQuotas), "clicked", G_CALLBACK(tree_view_del_line), widgets); - //g_signal_connect(G_OBJECT(widgets->treeViewMain), "cursor-changed", G_CALLBACK(tree_view_select), widgets); + g_signal_connect(G_OBJECT(widgets->treeViewMain), "cursor-changed", G_CALLBACK(tree_view_select), widgets); /* g_signal_connect(G_OBJECT(widgets->LoadGlobalMenuItem),"activate",G_CALLBACK(),NULL); g_signal_connect(G_OBJECT(widgets->LoadLocalMenuItem),"activate",G_CALLBACK(),NULL); @@ -438,10 +437,8 @@ void tree_view_del_line() { if(gtk_tree_selection_get_selected(selection, &model, &iter)) { char* str_iter = gtk_tree_model_get_string_from_iter(model, &iter); index = atoi(str_iter); - printf("%d\n",main_config.size_tree_view); main_config.type_quota = yon_char_parsed_shrink(main_config.type_quota, &main_config.size_tree_view,index); main_config.size_tree_view++; - printf("%d\n",main_config.size_tree_view); main_config.quota_volume = yon_char_parsed_shrink(main_config.quota_volume, &main_config.size_tree_view,index); main_config.size_tree_view++; main_config.soft_raw_limit = yon_char_parsed_shrink(main_config.soft_raw_limit, &main_config.size_tree_view,index); @@ -467,7 +464,6 @@ void tree_view_del_line() { } void main_fill_tree_view_after_remove() { - printf("%d\n",main_config.size_tree_view); for (int index= 0; index < main_config.size_tree_view; index++) { GtkTreeIter iter; gtk_list_store_append(main_config.list,&iter); @@ -565,10 +561,7 @@ int main(int argc, char *argv[]){ exit(0); } } - gtk_init(&argc,&argv); - - main_window *widgets = setup_window(); main_update_information(); filters_init_flag(); @@ -576,6 +569,7 @@ int main(int argc, char *argv[]){ add_setup_window(glade_path); edit_setup_window(glade_path); main_localization(widgets); + tree_view_select(NULL, widgets); event_all(widgets); main_event(widgets); diff --git a/source/ubl-utils.c b/source/ubl-utils.c index 6aa2d5a..ac2ca3c 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -391,6 +391,28 @@ config_str philos_list_user(int* size) { endpwent(); return str_users; } +config_str philos_list_group(int* size) { + char* str_uid_min = "UID_MIN"; + char* str_uid_max = "UID_MAX"; + unsigned short uid_min = philos_read_uid_min_max(file_source_login_min_max, str_uid_min); + unsigned short uid_max = philos_read_uid_min_max(file_source_login_min_max, str_uid_max); + config_str str_users = malloc(1); + while (1) { + errno = 0; // so we can distinguish errors from no more entries + struct passwd* entry = getpwent(); + if (!entry) { + if (errno) { + return str_users; + } + break; + } + if ((entry->pw_uid >= uid_min && entry->pw_uid < uid_max) || entry->pw_uid == 0) { + str_users = yon_char_parsed_append(str_users, size, entry->pw_name); + } + } + endpwent(); + return str_users; +} unsigned short philos_read_uid_min_max(char* filename, char* search) { int uid = 0; diff --git a/source/ubl-utils.h b/source/ubl-utils.h index 8965527..b804295 100644 --- a/source/ubl-utils.h +++ b/source/ubl-utils.h @@ -149,6 +149,7 @@ config_str yon_char_parsed_append(config_str parsed, int *size, char *string); // parsing functions config_str philos_list_user(int* size); +config_str philos_list_group(int* size); unsigned short philos_read_uid_min_max(char* filename, char* search); apps *yon_apps_scan_and_parse_desktops(int *sizef); diff --git a/ubl-settings-resourcequota.glade b/ubl-settings-resourcequota.glade index e37dc5f..87dd138 100644 --- a/ubl-settings-resourcequota.glade +++ b/ubl-settings-resourcequota.glade @@ -3510,6 +3510,7 @@ limit adjustment2 natural UTF-8 + 1024 True False