[Initng-svn] r3656 - initng-gui/initconf/src

svn at initng.thinktux.net svn at initng.thinktux.net
Mon Apr 3 15:07:28 CEST 2006


Author: danne
Date: Mon Apr  3 15:07:27 2006
New Revision: 3656

Modified:
   initng-gui/initconf/src/callbacks.c
   initng-gui/initconf/src/ngehandler.c
   initng-gui/initconf/src/rlparser.c
Log:
Continued work on enabling/disabling buttons as appropriate. Also did some commenting.


Modified: initng-gui/initconf/src/callbacks.c
==============================================================================
--- initng-gui/initconf/src/callbacks.c	(original)
+++ initng-gui/initconf/src/callbacks.c	Mon Apr  3 15:07:27 2006
@@ -115,29 +115,25 @@
 void on_remove_button_clicked (GtkButton *button, gpointer user_data)
 {
   remove_from_rl();
+  gtk_widget_set_sensitive(GTK_WIDGET(button), FALSE);
 }
 
 void on_service_list_cursor_changed (GtkTreeView *treeview, gpointer user_data)
 {
-  GtkWidget *runlevel_combo;
-  GtkTreeIter iter;
-
-  runlevel_combo = glade_xml_get_widget(xml, "runlevel_combo");
-
-  if(gtk_combo_box_get_active_iter(GTK_COMBO_BOX(runlevel_combo), &iter)) {
-    GtkWidget *add_button = glade_xml_get_widget(xml, "add_button");
-    gtk_widget_set_sensitive(add_button, TRUE);
-  }
+  GtkTreeView *runlevel_list = GTK_TREE_VIEW(glade_xml_get_widget(xml, "runlevel_list"));;
+  GtkTreeIter service_iter, runlevel_iter;
+  GtkTreeModel *service_model, *runlevel_model;
+  GtkWidget *add_button = glade_xml_get_widget(xml, "add_button");
 
   gint status_id;
   GtkWidget *start_button = glade_xml_get_widget(xml, "start_button");
   GtkWidget *stop_button = glade_xml_get_widget(xml, "stop_button");
   GtkWidget *restart_button = glade_xml_get_widget(xml, "restart_button");
   GtkTreeSelection *selected = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
-  GtkTreeModel *model;
+  gchar *service_name;
 
-  gtk_tree_selection_get_selected(selected, &model, &iter);
-  gtk_tree_model_get(model, &iter, 3, &status_id, -1);
+  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) {
   case IS_UP:
     gtk_widget_set_sensitive(start_button, FALSE);
@@ -175,6 +171,27 @@
     gtk_widget_set_sensitive(restart_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)) {
+	g_free(str_data);
+	break;
+      }
+      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);
+  }
+
+  g_free(service_name);
 }
 
 void on_runlevel_list_cursor_changed (GtkTreeView *treeview, gpointer user_data)

Modified: initng-gui/initconf/src/ngehandler.c
==============================================================================
--- initng-gui/initconf/src/ngehandler.c	(original)
+++ initng-gui/initconf/src/ngehandler.c	Mon Apr  3 15:07:27 2006
@@ -39,8 +39,8 @@
     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, -1);
-      gtk_list_store_set(GTK_LIST_STORE(service_model), &iter, 3, is, -1);
+      gtk_list_store_set(GTK_LIST_STORE(service_model), &iter, 2, state, 3, is, -1);
+      //gtk_list_store_set(GTK_LIST_STORE(service_model), &iter, 3, is, -1);
       break;
     }
     g_free(str_data);

Modified: initng-gui/initconf/src/rlparser.c
==============================================================================
--- initng-gui/initconf/src/rlparser.c	(original)
+++ initng-gui/initconf/src/rlparser.c	Mon Apr  3 15:07:27 2006
@@ -32,6 +32,8 @@
 
 #define BASEDIR "/etc/initng"
 
+/* Add a new runlevel. Ask the user of the name and create the new (empty)
+   entry in the runlevel combo box */
 void new_runlevel(const gchar *rl_name) {
   struct rl_struct *this_rl_struct = malloc(sizeof(struct rl_struct));
   GtkWidget *runlevel_combo;
@@ -54,6 +56,7 @@
   runlevel_struct = this_rl_struct;
 }
 
+/* Save all changes made to (all) runlevels */
 void save_rl() {
   struct rl_struct *this_rl_struct = runlevel_struct;
   GtkWidget *save_button, *save1;
@@ -96,6 +99,7 @@
   gtk_widget_set_sensitive(save1, FALSE);
 }
 
+/* Add the marked service in the service list to the active runlevel */
 void add_to_rl() {
   GtkWidget *runlevel_list, *service_list;
   GtkTreeIter rliter, serviceiter;
@@ -133,6 +137,7 @@
   }
 }
 
+/* Remmove the marked service in the runlevel list from that runlevel */
 void remove_from_rl() {
   GtkWidget *runlevel_list;
   GtkTreeIter iter;
@@ -162,7 +167,7 @@
   }
 }
 
-
+/* Check which files are runlevels */
 int rlfilefilter(const struct dirent* entry) {
   if(!fnmatch("*.runlevel", entry->d_name, 0))
     return 1;
@@ -170,6 +175,8 @@
     return 0;
 }
 
+/* Update the runlevel list with the runlevel that's active in the
+   runlevel combo */
 void update_rllist(GtkWidget *runlevel_combo) {
   gchar *chosenrl = gtk_combo_box_get_active_text(GTK_COMBO_BOX(runlevel_combo));
   gint choosen_rl = gtk_combo_box_get_active(GTK_COMBO_BOX(runlevel_combo));
@@ -214,8 +221,6 @@
       }
     }
 
-    //gtk_widget_set_sensitive(add_button, TRUE);
-
     fclose(file);
     free(buffer);  
   }
@@ -223,6 +228,7 @@
                           GTK_TREE_MODEL(this_rl_struct->store));
 }
 
+/* Populate the runlevel combo with all runlevels found */
 void populate_runlevel_combo() {
   GtkWidget *runlevel_combo;
   runlevel_struct = malloc(sizeof(struct rl_struct));


More information about the Initng-svn mailing list