[Initng-svn] r3669 - initng-gui/initconf/src
svn at initng.thinktux.net
svn at initng.thinktux.net
Tue Apr 4 14:53:25 CEST 2006
Author: danne
Date: Tue Apr 4 14:53:24 2006
New Revision: 3669
Modified:
initng-gui/initconf/src/callbacks.c
initng-gui/initconf/src/ngehandler.c
initng-gui/initconf/src/serviceparser.c
initng-gui/initconf/src/serviceparser.h
Log:
(hopefully) got rid of all g_object_set_data and g_object_get_data crap. Now looking at services looks again...
Modified: initng-gui/initconf/src/callbacks.c
==============================================================================
--- initng-gui/initconf/src/callbacks.c (original)
+++ initng-gui/initconf/src/callbacks.c Tue Apr 4 14:53:24 2006
@@ -131,10 +131,12 @@
GtkWidget *restart_button = glade_xml_get_widget(xml, "restart_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, 3, &status_id, -1);
- switch(status_id) {
+ gtk_tree_model_get(service_model, &service_iter, 0, &service_name, 4, &serviceinfo, -1);
+
+ switch(serviceinfo->status_id) {
case IS_UP:
gtk_widget_set_sensitive(start_button, FALSE);
gtk_widget_set_sensitive(stop_button, TRUE);
@@ -158,7 +160,7 @@
gtk_widget_set_sensitive(stop_button, FALSE);
gtk_widget_set_sensitive(restart_button, FALSE);
break;
- }
+ }
runlevel_model = gtk_tree_view_get_model(runlevel_list);
if(runlevel_model) {
@@ -218,13 +220,14 @@
void on_service_list_row_activated (GtkTreeView *treeview, GtkTreePath *path,
GtkTreeViewColumn *column, gpointer user_data)
{
- GtkWidget *initconf_show_service, *initconf_app;
+ GtkWidget *initconf_show_service;
+ GladeXML *xml_service = glade_xml_new(FILENAME, "initconf_show_service", NULL);
+ if(!xml_service)
+ xml_service = glade_xml_new(SECONDARY_FILENAME, "initconf_show_service", NULL);
- initconf_show_service = glade_xml_get_widget(xml, "initconf_show_service");
- initconf_app = glade_xml_get_widget(xml, "initconf_app");
- g_object_set_data(G_OBJECT(initconf_show_service), "initconf_app", initconf_app);
+ initconf_show_service = glade_xml_get_widget(xml_service, "initconf_show_service");
- load_service(initconf_show_service, GTK_WIDGET(treeview));
+ load_service(initconf_show_service, GTK_WIDGET(treeview), xml_service);
gtk_widget_show(initconf_show_service);
}
Modified: initng-gui/initconf/src/ngehandler.c
==============================================================================
--- initng-gui/initconf/src/ngehandler.c (original)
+++ initng-gui/initconf/src/ngehandler.c Tue Apr 4 14:53:24 2006
@@ -18,6 +18,7 @@
*/
#include "ngehandler.h"
+#include "serviceparser.h"
#include <string.h>
#include <gnome.h>
@@ -28,7 +29,6 @@
void service_change(nge_event *e, char *service, e_is is, char *state) {
gdk_threads_enter();
- GtkWidget *initconf_app = GTK_WIDGET(e->user_data);
GtkTreeView *service_list = GTK_TREE_VIEW(glade_xml_get_widget(xml, "service_list"));
GtkTreeModelFilter *filtermodel = GTK_TREE_MODEL_FILTER(gtk_tree_view_get_model(service_list));
GtkTreeModel *service_model = gtk_tree_model_filter_get_model(filtermodel);
@@ -39,27 +39,30 @@
gchar *str_data;
gtk_tree_model_get(service_model, &iter, 0, &str_data, -1);
if(!strcmp(str_data, service)) {
- gtk_list_store_set(GTK_LIST_STORE(service_model), &iter, 2, state, 3, is, -1);
+ struct s_info *serviceinfo;
+ gtk_tree_model_get(service_model, &iter, 4, &serviceinfo, -1);
+ serviceinfo->status_id = is;
+ gtk_list_store_set(GTK_LIST_STORE(service_model), &iter, 2, state, -1);
switch(is) {
case IS_UP:
- gtk_list_store_set(GTK_LIST_STORE(service_model), &iter, 4, "#00FF00", -1);
+ gtk_list_store_set(GTK_LIST_STORE(service_model), &iter, 3, "#00FF00", -1);
break;
case IS_DOWN:
- gtk_list_store_set(GTK_LIST_STORE(service_model), &iter, 4, "#0000FF", -1);
+ gtk_list_store_set(GTK_LIST_STORE(service_model), &iter, 3, "#0000FF", -1);
break;
case IS_FAILED:
- gtk_list_store_set(GTK_LIST_STORE(service_model), &iter, 4, "#FF0000", -1);
+ gtk_list_store_set(GTK_LIST_STORE(service_model), &iter, 3, "#FF0000", -1);
break;
case IS_STARTING:
- gtk_list_store_set(GTK_LIST_STORE(service_model), &iter, 4, "#FFFF00", -1);
+ gtk_list_store_set(GTK_LIST_STORE(service_model), &iter, 3, "#FFFF00", -1);
break;
case IS_STOPPING:
- gtk_list_store_set(GTK_LIST_STORE(service_model), &iter, 4, "#00FFFF", -1);
+ gtk_list_store_set(GTK_LIST_STORE(service_model), &iter, 3, "#00FFFF", -1);
break;
case IS_WAITING:
- gtk_list_store_set(GTK_LIST_STORE(service_model), &iter, 4, "#FF00FF", -1);
+ gtk_list_store_set(GTK_LIST_STORE(service_model), &iter, 3, "#FF00FF", -1);
break;
- }
+ }
break;
}
g_free(str_data);
@@ -69,6 +72,7 @@
fprintf(stderr, "Service %s not found in service list!\n", service);
}
+ //TODO: Is there a way of not refiltering entire list every time?
gtk_tree_model_filter_refilter(filtermodel);
gdk_flush();
gdk_threads_leave();
@@ -84,18 +88,6 @@
e.service_state_change = &service_change;
e.initial_service_state = &service_change;
-/*
- e.connect = &connected;
- e.disconnect = &disconnected;
- e.system_state_change = &sys_state;
- e.initial_system_state = &sys_state;
- e.service_output = &service_output;
- e.err_msg = &err_msg;
- e.ping = &ping;
-*/
-
- e.user_data = args;
-
/* open correct socket */
ngeclient_open_socket(&e, NGE_REAL);
Modified: initng-gui/initconf/src/serviceparser.c
==============================================================================
--- initng-gui/initconf/src/serviceparser.c (original)
+++ initng-gui/initconf/src/serviceparser.c Tue Apr 4 14:53:24 2006
@@ -51,8 +51,7 @@
switch(choosen_filter) {
case 1: //Show only active
gtk_tree_model_get(model, iter, 2, &str_data, -1);
- if(strcmp(str_data, "")) {
- g_free(str_data);
+ if(str_data) {
return TRUE;
}
else {
@@ -74,7 +73,7 @@
default: //Show all (0) or nothing choosen (-1)
return TRUE;
break;
- }
+ }
}
void recursive_scan(char* path, GtkListStore *store) {
@@ -109,11 +108,10 @@
char *tok = strtok(buffer, " ");
tok = strtok(NULL, " ");
gtk_list_store_prepend (store, &iter);
- gtk_list_store_set (store, &iter, 0, tok, 1, "daemon", 2, "", -1);
+ gtk_list_store_set (store, &iter, 0, tok, 1, "daemon", 2, NULL, 4, serviceinfo, -1);
serviceinfo->name = tok;
serviceinfo->type = DAEMON;
serviceinfo->path = fullpath;
- g_object_set_data(G_OBJECT(store), tok, serviceinfo);
} else if(strstr(buffer, "service") == buffer) {
serviceinfo = malloc(sizeof(struct s_info));
serviceinfo->startline = malloc(strlen(buffer) + 1);
@@ -121,11 +119,10 @@
char *tok = strtok(buffer, " ");
tok = strtok(NULL, " ");
gtk_list_store_prepend (store, &iter);
- gtk_list_store_set (store, &iter, 0, tok, 1, "service", 2, "", -1);
+ gtk_list_store_set (store, &iter, 0, tok, 1, "service", 2, NULL, 4, serviceinfo, -1);
serviceinfo->name = tok;
serviceinfo->type = SERVICE;
serviceinfo->path = fullpath;
- g_object_set_data(G_OBJECT(store), tok, serviceinfo);
} else if(strstr(buffer, "virtual") == buffer) {
serviceinfo = malloc(sizeof(struct s_info));
serviceinfo->startline = malloc(strlen(buffer) + 1);
@@ -133,11 +130,10 @@
char *tok = strtok(buffer, " ");
tok = strtok(NULL, " ");
gtk_list_store_prepend (store, &iter);
- gtk_list_store_set (store, &iter, 0, tok, 1, "virtual", 2, "", -1);
+ gtk_list_store_set (store, &iter, 0, tok, 1, "virtual", 2, NULL, 4, serviceinfo, -1);
serviceinfo->name = tok;
serviceinfo->type = VIRTUAL;
serviceinfo->path = fullpath;
- g_object_set_data(G_OBJECT(store), tok, serviceinfo);
}
}
fclose(file);
@@ -146,12 +142,12 @@
serviceinfo = malloc(sizeof(struct s_info));
namelist[n]->d_name[strlen(namelist[n]->d_name)-9] = 0;
gtk_list_store_prepend (store, &iter);
- gtk_list_store_set(store, &iter, 0, namelist[n]->d_name, 1, "runlevel", 2, "", -1);
+ gtk_list_store_set(store, &iter, 0, namelist[n]->d_name, 1, "runlevel",
+ 2, NULL, 4, serviceinfo, -1);
serviceinfo->name = namelist[n]->d_name;
serviceinfo->type = RUNLEVEL;
serviceinfo->path = fullpath;
serviceinfo->startline = NULL;
- g_object_set_data(G_OBJECT(store), namelist[n]->d_name, serviceinfo);
}
free(namelist[n]);
}
@@ -159,31 +155,32 @@
}
}
-void load_service(GtkWidget *initconf_show_service, GtkWidget *treeview) {
+void load_service(GtkWidget *initconf_show_service, GtkWidget *treeview,
+ GladeXML *xml_service) {
GtkWidget *service_textview;
GtkTextBuffer *buffer;
GtkTreeSelection *selected;
GtkTreeIter iter;
GtkTreeModel *model;
- gchar *servicename, *filename;
+ gchar *servicename;
struct stat buff;
FILE *file;
gchar res;
int depth = 1;
- service_textview = glade_xml_get_widget(xml, "service_textview");
+ service_textview = glade_xml_get_widget(xml_service, "service_textview");
buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(service_textview));
selected = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
gtk_tree_selection_get_selected(selected, &model, &iter);
- gtk_tree_model_get (model, &iter, 0, &servicename, -1);
- struct s_info *serviceinfo = g_object_get_data(G_OBJECT(model), servicename);
- filename = serviceinfo->path;
+ gtk_tree_model_get(model, &iter, 0, &servicename, -1);
+ struct s_info *serviceinfo;
+ gtk_tree_model_get(model, &iter, 4, &serviceinfo, -1);
- if(lstat(filename, &buff)<0)
+ if(lstat(serviceinfo->path, &buff)<0)
perror("Strange fault!");
- file = fopen(filename, "rt");
+ file = fopen(serviceinfo->path, "rt");
if (file == NULL)
return;
@@ -218,37 +215,31 @@
GtkWidget *service_list;
GtkTreeModel *servicemodel, *filtermodel;
GtkListStore *servicestore = gtk_list_store_new (5, G_TYPE_STRING, G_TYPE_STRING,
- G_TYPE_STRING, G_TYPE_UINT,
- G_TYPE_STRING);
+ G_TYPE_STRING, G_TYPE_STRING,
+ G_TYPE_POINTER);
service_list = glade_xml_get_widget(xml, "service_list");
gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(service_list),
-1, "name",
GTK_CELL_RENDERER(gtk_cell_renderer_text_new()),
"text", 0,
- "foreground", 4, NULL);
+ "foreground", 3, NULL);
gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(service_list),
-1, "function",
GTK_CELL_RENDERER(gtk_cell_renderer_text_new()),
"text", 1,
- "foreground", 4, NULL);
+ "foreground", 3, NULL);
gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(service_list),
-1, "state",
GTK_CELL_RENDERER(gtk_cell_renderer_text_new()),
"text", 2,
- "foreground", 4, NULL);
+ "foreground", 3, NULL);
gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(service_list),
- -1, "state_id",
+ -1, "color",
GTK_CELL_RENDERER(gtk_cell_renderer_text_new()),
"text", 3, NULL);
gtk_tree_view_column_set_visible(gtk_tree_view_get_column(GTK_TREE_VIEW(service_list),
3), FALSE);
- gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(service_list),
- -1, "color",
- GTK_CELL_RENDERER(gtk_cell_renderer_text_new()),
- "text", 4, NULL);
- gtk_tree_view_column_set_visible(gtk_tree_view_get_column(GTK_TREE_VIEW(service_list),
- 4), FALSE);
recursive_scan(BASEDIR, servicestore);
servicemodel = GTK_TREE_MODEL(servicestore);
filtermodel = gtk_tree_model_filter_new(servicemodel, NULL);
Modified: initng-gui/initconf/src/serviceparser.h
==============================================================================
--- initng-gui/initconf/src/serviceparser.h (original)
+++ initng-gui/initconf/src/serviceparser.h Tue Apr 4 14:53:24 2006
@@ -20,10 +20,15 @@
#ifndef SERVICE_PARSER_H
#define SERVICE_PARSER_H
+#include <gnome.h>
+#include <glade/glade.h>
+#include "ngehandler.h"
+
gboolean service_filter(GtkTreeModel *model, GtkTreeIter *iter, gpointer data);
void populate_service_list();
-void load_service(GtkWidget *initconf_show_service, GtkWidget *treeview);
+void load_service(GtkWidget *initconf_show_service, GtkWidget *treeview,
+ GladeXML *xml_service);
enum {
RUNLEVEL = 0,
@@ -37,6 +42,7 @@
char *name;
char type;
char *startline;
+ e_is status_id;
};
#endif
More information about the Initng-svn
mailing list