[Initng-svn] r4338 - initng-gui/initng-conf-gtk/src
svn at initng.thinktux.net
svn at initng.thinktux.net
Fri Jun 2 10:52:14 CEST 2006
Author: danne
Date: Fri Jun 2 10:52:12 2006
New Revision: 4338
Modified:
initng-gui/initng-conf-gtk/src/callbacks.c
initng-gui/initng-conf-gtk/src/initng-conf-gtk.glade
initng-gui/initng-conf-gtk/src/ngehandler.c
initng-gui/initng-conf-gtk/src/rlparser.c
initng-gui/initng-conf-gtk/src/serviceparser.c
initng-gui/initng-conf-gtk/src/serviceparser.h
Log:
Darn, this list->tree conversion is much work! It's getting better, but it's not stable yet...
Modified: initng-gui/initng-conf-gtk/src/callbacks.c
==============================================================================
--- initng-gui/initng-conf-gtk/src/callbacks.c (original)
+++ initng-gui/initng-conf-gtk/src/callbacks.c Fri Jun 2 10:52:12 2006
@@ -31,7 +31,7 @@
#include "initconf_globals.h"
gboolean cleanup_and_quit() {
-//Add code to clean up stuff and free memory here!!!
+ //Add code to clean up stuff and free memory here!!!
GtkWidget *initconf_app, *dialog, *save_button;
if(!xml)
@@ -135,65 +135,73 @@
GtkWidget *zap_button = glade_xml_get_widget(xml, "zap_button");
GtkWidget *edit_button = glade_xml_get_widget(xml, "edit_button");
GtkTreeSelection *selected = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
- gchar *service_name;
struct s_info *serviceinfo;
gtk_tree_selection_get_selected(selected, &service_model, &service_iter);
- gtk_tree_model_get(service_model, &service_iter, 0, &service_name, 4, &serviceinfo, -1);
+ gtk_tree_model_get(service_model, &service_iter, 4, &serviceinfo, -1);
- gtk_widget_set_sensitive(edit_button, TRUE);
if(serviceinfo) {
- switch(serviceinfo->status_id) {
- case IS_UP:
- gtk_widget_set_sensitive(start_button, FALSE);
- gtk_widget_set_sensitive(stop_button, TRUE);
- gtk_widget_set_sensitive(restart_button, TRUE);
- gtk_widget_set_sensitive(zap_button, TRUE);
- break;
- case IS_DOWN:
- gtk_widget_set_sensitive(start_button, TRUE);
- gtk_widget_set_sensitive(stop_button, FALSE);
- gtk_widget_set_sensitive(restart_button, FALSE);
- gtk_widget_set_sensitive(zap_button, TRUE);
- break;
- case IS_FAILED:
- case IS_STARTING:
- case IS_STOPPING:
- case IS_WAITING:
- gtk_widget_set_sensitive(start_button, FALSE);
- gtk_widget_set_sensitive(stop_button, FALSE);
- gtk_widget_set_sensitive(restart_button, FALSE);
- gtk_widget_set_sensitive(zap_button, TRUE);
- break;
- default:
- gtk_widget_set_sensitive(start_button, TRUE);
- gtk_widget_set_sensitive(stop_button, FALSE);
- gtk_widget_set_sensitive(restart_button, FALSE);
- gtk_widget_set_sensitive(zap_button, FALSE);
- break;
- }
- }
-
- runlevel_model = gtk_tree_view_get_model(runlevel_list);
- if(runlevel_model) {
- gboolean valid = gtk_tree_model_get_iter_first(runlevel_model, &runlevel_iter);
-
- while(valid) {
- gchar *str_data;
- gtk_tree_model_get(runlevel_model, &runlevel_iter, 0, &str_data, -1);
- if(!strcmp(str_data, service_name)) {
+ switch(serviceinfo->status_id) {
+ case IS_UP:
+ gtk_widget_set_sensitive(start_button, FALSE);
+ gtk_widget_set_sensitive(stop_button, TRUE);
+ gtk_widget_set_sensitive(restart_button, TRUE);
+ gtk_widget_set_sensitive(zap_button, TRUE);
+ gtk_widget_set_sensitive(edit_button, TRUE);
+ break;
+ case IS_DOWN:
+ gtk_widget_set_sensitive(start_button, TRUE);
+ gtk_widget_set_sensitive(stop_button, FALSE);
+ gtk_widget_set_sensitive(restart_button, FALSE);
+ gtk_widget_set_sensitive(zap_button, TRUE);
+ gtk_widget_set_sensitive(edit_button, TRUE);
+ break;
+ case IS_FAILED:
+ case IS_STARTING:
+ case IS_STOPPING:
+ case IS_WAITING:
+ gtk_widget_set_sensitive(start_button, FALSE);
+ gtk_widget_set_sensitive(stop_button, FALSE);
+ gtk_widget_set_sensitive(restart_button, FALSE);
+ gtk_widget_set_sensitive(zap_button, TRUE);
+ gtk_widget_set_sensitive(edit_button, TRUE);
+ break;
+ default:
+ gtk_widget_set_sensitive(start_button, TRUE);
+ gtk_widget_set_sensitive(stop_button, FALSE);
+ gtk_widget_set_sensitive(restart_button, FALSE);
+ gtk_widget_set_sensitive(zap_button, FALSE);
+ gtk_widget_set_sensitive(edit_button, TRUE);
+ break;
+ }
+ if(!serviceinfo->file_content) {
+ gtk_widget_set_sensitive(edit_button, FALSE);
+ }
+ runlevel_model = gtk_tree_view_get_model(runlevel_list);
+ if(runlevel_model) {
+ gboolean valid = gtk_tree_model_get_iter_first(runlevel_model, &runlevel_iter);
+
+ while(valid) {
+ gchar *str_data;
+ gtk_tree_model_get(runlevel_model, &runlevel_iter, 0, &str_data, -1);
+ if(!strcmp(serviceinfo->fullname, str_data)) {
+ g_free(str_data);
+ break;
+ }
g_free(str_data);
- break;
+ valid = gtk_tree_model_iter_next(runlevel_model, &runlevel_iter);
}
- g_free(str_data);
- valid = gtk_tree_model_iter_next(runlevel_model, &runlevel_iter);
+ //Only enable the add button if chosen service wasn't already found in runlevel list
+ gtk_widget_set_sensitive(add_button, !valid);
}
-
- //Only enable the add button if chosen service wasn't already found in runlevel list
- gtk_widget_set_sensitive(add_button, !valid);
+ } else {
+ gtk_widget_set_sensitive(start_button, FALSE);
+ gtk_widget_set_sensitive(stop_button, FALSE);
+ gtk_widget_set_sensitive(restart_button, FALSE);
+ gtk_widget_set_sensitive(zap_button, FALSE);
+ gtk_widget_set_sensitive(edit_button, FALSE);
+ gtk_widget_set_sensitive(add_button, FALSE);
}
-
- g_free(service_name);
}
void on_runlevel_list_cursor_changed (GtkTreeView *treeview, gpointer user_data)
@@ -339,13 +347,12 @@
GtkTreeIter serviceiter;
GtkTreeSelection *selected;
GtkTreeModel *servicemodel;
- gchar *servicename;
+ struct s_info *serviceinfo;
selected = gtk_tree_view_get_selection(GTK_TREE_VIEW(service_list));
if(gtk_tree_selection_get_selected(selected, &servicemodel, &serviceiter)) {
- gtk_tree_model_get (servicemodel, &serviceiter, 0, &servicename, -1);
- stop_service(servicename);
- g_free(servicename);
+ gtk_tree_model_get (servicemodel, &serviceiter, 4, &serviceinfo, -1);
+ stop_service(serviceinfo->fullname);
}
}
@@ -356,13 +363,12 @@
GtkTreeIter serviceiter;
GtkTreeSelection *selected;
GtkTreeModel *servicemodel;
- gchar *servicename;
+ struct s_info *serviceinfo;
selected = gtk_tree_view_get_selection(GTK_TREE_VIEW(service_list));
if(gtk_tree_selection_get_selected(selected, &servicemodel, &serviceiter)) {
- gtk_tree_model_get (servicemodel, &serviceiter, 0, &servicename, -1);
- start_service(servicename);
- g_free(servicename);
+ gtk_tree_model_get (servicemodel, &serviceiter, 4, &serviceinfo, -1);
+ start_service(serviceinfo->fullname);
}
}
@@ -373,13 +379,12 @@
GtkTreeIter serviceiter;
GtkTreeSelection *selected;
GtkTreeModel *servicemodel;
- gchar *servicename;
+ struct s_info *serviceinfo;
selected = gtk_tree_view_get_selection(GTK_TREE_VIEW(service_list));
if(gtk_tree_selection_get_selected(selected, &servicemodel, &serviceiter)) {
- gtk_tree_model_get (servicemodel, &serviceiter, 0, &servicename, -1);
- restart_service(servicename);
- g_free(servicename);
+ gtk_tree_model_get (servicemodel, &serviceiter, 4, &serviceinfo, -1);
+ restart_service(serviceinfo->fullname);
}
}
@@ -389,13 +394,12 @@
GtkTreeIter serviceiter;
GtkTreeSelection *selected;
GtkTreeModel *servicemodel;
- gchar *servicename;
+ struct s_info *serviceinfo;
selected = gtk_tree_view_get_selection(GTK_TREE_VIEW(service_list));
if(gtk_tree_selection_get_selected(selected, &servicemodel, &serviceiter)) {
- gtk_tree_model_get(servicemodel, &serviceiter, 0, &servicename, -1);
- zap_service(servicename);
- g_free(servicename);
+ gtk_tree_model_get(servicemodel, &serviceiter, 4, &serviceinfo, -1);
+ zap_service(serviceinfo->fullname);
}
}
@@ -418,8 +422,12 @@
selected = gtk_tree_view_get_selection(GTK_TREE_VIEW(service_list));
if(gtk_tree_selection_get_selected(selected, &servicemodel, &serviceiter)) {
- gtk_tree_model_get(servicemodel, &serviceiter, 0, &servicename, -1);
- service_log(servicename);
+ struct s_info *serviceinfo;
+ gtk_tree_model_get(servicemodel, &serviceiter, 0, &servicename, 4, &serviceinfo, -1);
+ if(serviceinfo)
+ service_log(servicename);
+ else
+ service_log(NULL);
g_free(servicename);
} else {
service_log(NULL);
Modified: initng-gui/initng-conf-gtk/src/initng-conf-gtk.glade
==============================================================================
--- initng-gui/initng-conf-gtk/src/initng-conf-gtk.glade (original)
+++ initng-gui/initng-conf-gtk/src/initng-conf-gtk.glade Fri Jun 2 10:52:12 2006
@@ -899,6 +899,7 @@
<property name="visible">True</property>
<property name="items" translatable="yes">Show all
Show only active
+Show only failed
Show only runlevels</property>
<property name="add_tearoffs">False</property>
<property name="focus_on_click">True</property>
Modified: initng-gui/initng-conf-gtk/src/ngehandler.c
==============================================================================
--- initng-gui/initng-conf-gtk/src/ngehandler.c (original)
+++ initng-gui/initng-conf-gtk/src/ngehandler.c Fri Jun 2 10:52:12 2006
@@ -36,27 +36,15 @@
GtkTreeIter iter;
gchar *str_data;
- //fprintf(stderr, "initial_service_state, service=%s, state=%s\n", service, state);
- gboolean valid = gtk_tree_model_get_iter_first(service_model, &iter);
- while(valid) {
- gtk_tree_model_get(service_model, &iter, 0, &str_data, -1);
- if(str_data && !strcmp(str_data, service)) {
- g_free(str_data);
- break;
- }
- g_free(str_data);
- valid = gtk_tree_model_iter_next(service_model, &iter);
- }
-
- if(!valid) {
+ if(add_node(GTK_TREE_STORE(service_model), &iter, service)) {
struct s_info *serviceinfo = malloc(sizeof(struct s_info));
serviceinfo->startline = NULL;
- add_recursive(GTK_TREE_STORE(service_model), NULL, &iter, service, serviceinfo);
- //gtk_list_store_append (GTK_LIST_STORE(service_model), &iter);
gtk_tree_store_set(GTK_TREE_STORE(service_model), &iter, 1, _("unknown"),
2, NULL, 4, serviceinfo, -1);
serviceinfo->type = UNKNOWN;
serviceinfo->file_content = NULL;
+ serviceinfo->fullname = malloc(strlen(service) + 1);
+ strcpy(serviceinfo->fullname, service);
}
struct s_info *serviceinfo;
Modified: initng-gui/initng-conf-gtk/src/rlparser.c
==============================================================================
--- initng-gui/initng-conf-gtk/src/rlparser.c (original)
+++ initng-gui/initng-conf-gtk/src/rlparser.c Fri Jun 2 10:52:12 2006
@@ -131,18 +131,22 @@
gtk_editable_set_position(GTK_EDITABLE(add_service_name_entry), -1);
glade_xml_signal_autoconnect(xml_add_service);
free(newname);
- }
+ } else {
+ gtk_list_store_append (rlstore, &rliter);
+ gtk_list_store_set (rlstore, &rliter, 0, name, -1);
- gtk_list_store_append (rlstore, &rliter);
- gtk_list_store_set (rlstore, &rliter, 0, name, -1);
-
- runlevel_combo = glade_xml_get_widget(xml, "runlevel_combo");
- choosen_rl = gtk_combo_box_get_active(GTK_COMBO_BOX(runlevel_combo));
+ runlevel_combo = glade_xml_get_widget(xml, "runlevel_combo");
+ choosen_rl = gtk_combo_box_get_active(GTK_COMBO_BOX(runlevel_combo));
- for(i = 0; i < choosen_rl; i++) {
- this_rl_struct = this_rl_struct->next;
+ for(i = 0; i < choosen_rl; i++) {
+ this_rl_struct = this_rl_struct->next;
+ }
+ this_rl_struct->needs_saving = TRUE;
+ GtkWidget *save_button = glade_xml_get_widget(xml, "save_button");
+ GtkWidget *save1 = glade_xml_get_widget(xml, "save1");
+ gtk_widget_set_sensitive(save_button, TRUE);
+ gtk_widget_set_sensitive(save1, TRUE);
}
- this_rl_struct->needs_saving = TRUE;
}
/* Remmove the marked service in the runlevel list from that runlevel */
Modified: initng-gui/initng-conf-gtk/src/serviceparser.c
==============================================================================
--- initng-gui/initng-conf-gtk/src/serviceparser.c (original)
+++ initng-gui/initng-conf-gtk/src/serviceparser.c Fri Jun 2 10:52:12 2006
@@ -44,6 +44,50 @@
return 0;
}
+gboolean is_active(GtkTreeModel *model, GtkTreeIter *iter) {
+ gchar *state;
+ gtk_tree_model_get(model, iter, 2, &state, -1);
+ if(state) {
+ g_free(state);
+ return TRUE;
+ } else {
+ g_free(state);
+ return FALSE;
+ }
+}
+
+gboolean is_failed(GtkTreeModel *model, GtkTreeIter *iter) {
+ gchar *color;
+ gtk_tree_model_get(model, iter, 3, &color, -1);
+ if(color) {
+ if(!strcmp(color, "#FFAAAA")) {
+ g_free(color);
+ return TRUE;
+ } else {
+ g_free(color);
+ }
+ }
+ return FALSE;
+}
+
+gboolean recursive_filter(GtkTreeModel *model, GtkTreeIter *parent_iter,
+ gboolean (*testfunc)(GtkTreeModel*, GtkTreeIter*)) {
+ gchar *state;
+ GtkTreeIter iter;
+
+ if(testfunc(model, parent_iter))
+ return TRUE;
+
+ gboolean valid = gtk_tree_model_iter_children(model, &iter, parent_iter);
+ while(valid) {
+ if(recursive_filter(model, &iter, testfunc)) {
+ return TRUE;
+ }
+ valid = gtk_tree_model_iter_next(model, &iter);
+ }
+ return FALSE;
+}
+
gboolean service_filter(GtkTreeModel *model, GtkTreeIter *iter, gpointer data) {
GtkComboBox *runlevel_filter_combo = GTK_COMBO_BOX(glade_xml_get_widget(xml, "runlevel_filter_combo"));
gint choosen_filter = gtk_combo_box_get_active(GTK_COMBO_BOX(runlevel_filter_combo));
@@ -52,17 +96,10 @@
//Just some example filters to test what can be done
switch(choosen_filter) {
case 1: //Show only active
- gtk_tree_model_get(model, iter, 2, &str_data, -1);
- if(str_data) {
- g_free(str_data);
- return TRUE;
- }
- else {
- g_free(str_data);
- return FALSE;
- }
- break;
- case 2: //Show only runlevels
+ return recursive_filter(model, iter, is_active);
+ case 2: //Show only failed
+ return recursive_filter(model, iter, is_failed);
+ case 3: //Show only runlevels
gtk_tree_model_get(model, iter, 1, &str_data, -1);
if(str_data && !strcmp(str_data, "runlevel")) {
g_free(str_data);
@@ -72,11 +109,9 @@
g_free(str_data);
}
return FALSE;
- break;
default: //Show all (0) or nothing choosen (-1)
return TRUE;
- break;
- }
+ }
}
void servicelist_cleanup() {
@@ -96,10 +131,10 @@
serviceinfo->file_content->references--;
if(serviceinfo->file_content->references == 0) {
if(serviceinfo->file_content->data)
- g_free(serviceinfo->file_content->data);
- if(serviceinfo->file_content->path)
- g_free(serviceinfo->file_content->path);
- g_free(serviceinfo->file_content);
+ g_free(serviceinfo->file_content->data);
+ if(serviceinfo->file_content->path)
+ g_free(serviceinfo->file_content->path);
+ g_free(serviceinfo->file_content);
}
}
g_free(serviceinfo);
@@ -137,28 +172,31 @@
return FALSE;
}
-void add_recursive(GtkTreeStore *store, GtkTreeIter *parent_iter,
- GtkTreeIter *iter, const char *name, struct s_info *serviceinfo) {
- printf("add_recursive (%s)\n", name);
+gboolean add_recursive(GtkTreeStore *store, GtkTreeIter *parent_iter,
+ GtkTreeIter *iter, const char *name) {
char *rest = malloc(strlen(name) + 1);
strcpy(rest, name);
char *tok = path_tokenizer(&rest);
+ gboolean was_added = FALSE;
if(!gtk_tree_model_iter_children(GTK_TREE_MODEL(store), iter, parent_iter) ||
!find_child(store, parent_iter, iter, tok)) { //The node has to be created
+ was_added = TRUE;
gtk_tree_store_prepend(store, iter, parent_iter);
- printf("Inserted node for %s on depth %i\n", tok, gtk_tree_store_iter_depth(store, iter));
gtk_tree_store_set(store, iter, 0, tok, 2, NULL, 4, NULL, -1);
}
- printf("Left to handle: %s\n", rest);
-
- if(rest) { //This is not the last part
- parent_iter = gtk_tree_iter_copy(iter);
- add_recursive(store, parent_iter, iter, rest, serviceinfo);
+ if(rest) {
+ parent_iter = gtk_tree_iter_copy(iter);
+ was_added = add_recursive(store, parent_iter, iter, rest);
gtk_tree_iter_free(parent_iter);
}
free(tok);
+ return was_added;
+}
+
+gboolean add_node(GtkTreeStore *store, GtkTreeIter *iter, const char *name) {
+ return add_recursive(store, NULL, iter, name);
}
void recursive_scan(char* path, GtkTreeStore *store) {
@@ -201,22 +239,20 @@
strcpy(serviceinfo->startline, buffer);
char *tok = strtok(buffer, " ");
tok = strtok(NULL, " ");
- add_recursive(store, NULL, &iter, tok, serviceinfo);
- //gtk_tree_store_prepend (store, &iter, NULL);
+ add_node(store, &iter, tok);
gtk_tree_store_set (store, &iter, 1, "daemon", 2, NULL, 4, serviceinfo, -1);
serviceinfo->fullname = malloc(strlen(tok) + 1);
strcpy(serviceinfo->fullname, tok);
serviceinfo->type = DAEMON;
- serviceinfo->file_content = file_content;
- file_content->references++;
+ serviceinfo->file_content = file_content;
+ file_content->references++;
} else if(strstr(buffer, "service") == buffer) {
serviceinfo = malloc(sizeof(struct s_info));
serviceinfo->startline = malloc(strlen(buffer) + 1);
strcpy(serviceinfo->startline, buffer);
char *tok = strtok(buffer, " ");
tok = strtok(NULL, " ");
- add_recursive(store, NULL, &iter, tok, serviceinfo);
- //gtk_tree_store_prepend (store, &iter, NULL);
+ add_node(store, &iter, tok);
gtk_tree_store_set (store, &iter, 1, "service", 2, NULL, 4, serviceinfo, -1);
serviceinfo->fullname = malloc(strlen(tok) + 1);
strcpy(serviceinfo->fullname, tok);;
@@ -229,8 +265,7 @@
strcpy(serviceinfo->startline, buffer);
char *tok = strtok(buffer, " ");
tok = strtok(NULL, " ");
- add_recursive(store, NULL, &iter, tok, serviceinfo);
- //gtk_tree_store_prepend (store, &iter, NULL);
+ add_node(store, &iter, tok);
gtk_tree_store_set (store, &iter, 1, "virtual", 2, NULL, 4, serviceinfo, -1);
serviceinfo->fullname = malloc(strlen(tok) + 1);
strcpy(serviceinfo->fullname, tok);
@@ -254,8 +289,7 @@
file_content->references = 1;
serviceinfo = malloc(sizeof(struct s_info));
namelist[n]->d_name[strlen(namelist[n]->d_name)-9] = 0;
- add_recursive(store, NULL, &iter, namelist[n]->d_name, serviceinfo);
- //gtk_tree_store_prepend (store, &iter, NULL);
+ add_node(store, &iter, namelist[n]->d_name);
gtk_tree_store_set(store, &iter, 1, "runlevel", 2, NULL, 4, serviceinfo, -1);
serviceinfo->fullname = malloc(strlen(namelist[n]->d_name) + 1);
strcpy(serviceinfo->fullname, namelist[n]->d_name);
@@ -275,10 +309,9 @@
file_content->references = 1;
serviceinfo = malloc(sizeof(struct s_info));
namelist[n]->d_name[strlen(namelist[n]->d_name)-8] = 0;
- add_recursive(store, NULL, &iter, namelist[n]->d_name, serviceinfo);
- //gtk_tree_store_prepend (store, &iter, NULL);
+ add_node(store, &iter, namelist[n]->d_name);
gtk_tree_store_set(store, &iter, 1, "virtual", 2, NULL, 4, serviceinfo, -1);
- serviceinfo->fullname = malloc(strlen(namelist[n]->d_name) + 1);
+ serviceinfo->fullname = malloc(strlen(namelist[n]->d_name) + 1);
strcpy(serviceinfo->fullname, namelist[n]->d_name);
serviceinfo->type = VIRTUALFILE;
serviceinfo->startline = NULL;
@@ -433,29 +466,29 @@
g_free(servicename);
}
-void save_all_services() {
- GtkTreeView *service_list = GTK_TREE_VIEW(glade_xml_get_widget(xml, "service_list"));
- GtkTreeModelSort *sortmodel = GTK_TREE_MODEL_SORT(gtk_tree_view_get_model(service_list));
- GtkTreeModelFilter *filtermodel = GTK_TREE_MODEL_FILTER(gtk_tree_model_sort_get_model(sortmodel));
- GtkTreeModel *model = gtk_tree_model_filter_get_model(filtermodel);
- GtkTreeIter iter;
+gboolean save_service(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data) {
FILE *file;
struct s_info *serviceinfo;
-
- gboolean valid = gtk_tree_model_get_iter_first(model, &iter);
- while(valid) {
- gtk_tree_model_get(model, &iter, 4, &serviceinfo, -1);
- struct s_file_content *file_content = serviceinfo->file_content;
- if(file_content && file_content->needs_saving) {
- file = fopen(file_content->path, "w");
- if (file == NULL)
- break;
+ gtk_tree_model_get(model, iter, 4, &serviceinfo, -1);
+ if(!serviceinfo)
+ return FALSE;
+ struct s_file_content *file_content = serviceinfo->file_content;
+ if(file_content && file_content->needs_saving) {
+ file = fopen(file_content->path, "w");
+ if (file != NULL) {
fputs(file_content->data, file);
file_content->needs_saving = FALSE;
fclose(file);
}
- valid = gtk_tree_model_iter_next(model, &iter);
}
+ return FALSE;
+}
+
+void save_all_services() {
+ GtkTreeView *service_list = GTK_TREE_VIEW(glade_xml_get_widget(xml, "service_list"));
+ GtkTreeModel *model = gtk_tree_view_get_model(service_list);
+
+ gtk_tree_model_foreach(model, save_service, NULL);
}
gint service_sorter(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer user_data) {
Modified: initng-gui/initng-conf-gtk/src/serviceparser.h
==============================================================================
--- initng-gui/initng-conf-gtk/src/serviceparser.h (original)
+++ initng-gui/initng-conf-gtk/src/serviceparser.h Fri Jun 2 10:52:12 2006
@@ -56,7 +56,6 @@
char *fullname; //Full name of service/daemon
};
-void add_recursive(GtkTreeStore *store, GtkTreeIter *parent_iter,
- GtkTreeIter *iter, const char *name, struct s_info *serviceinfo);
+gboolean add_node(GtkTreeStore *store, GtkTreeIter *iter, const char *name);
#endif
More information about the Initng-svn
mailing list