[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