[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