[beryl-commits] r1527 - branches/beryl-settings-using-groups/src

quinn at server.beryl-project.org quinn at server.beryl-project.org
Mon Dec 4 05:41:01 CET 2006


Author: quinn
Date: 2006-12-04 05:40:04 +0100 (Mon, 04 Dec 2006)
New Revision: 1527

Modified:
   branches/beryl-settings-using-groups/src/main.c
Log:
beryl-setting-branch:
-initial support for per-group/per-subgroup


Modified: branches/beryl-settings-using-groups/src/main.c
===================================================================
--- branches/beryl-settings-using-groups/src/main.c	2006-12-04 03:56:39 UTC (rev 1526)
+++ branches/beryl-settings-using-groups/src/main.c	2006-12-04 04:40:04 UTC (rev 1527)
@@ -1265,7 +1265,7 @@
         GtkScrolledWindow * win;
         GtkWidget * vbox;
         SETOptionWidgets * widgets = o->private_ptr;
-        if (!o->parent->name && strcmp(o->name,"a_active_plugins")==0)
+        if (!o->parent->name && strcmp(o->name,"active_plugins")==0)
         {
             return;
         }
@@ -1369,8 +1369,55 @@
     GSList * settings = beryl_settings_plugin_get_settings(beryl_settings_context_find_plugin(context,group));
     g_slist_foreach(settings,(GFunc)do_if_action_group,&z);
 }
-void do_page(gchar * group,GFunc func,gchar * label, GtkWidget * notebook)
+void do_any(GSList * s, SETGroupWidget * z)
 {
+    g_slist_foreach(s,do_if_toggle_group,z);
+    g_slist_foreach(s,do_if_bell_group,z);
+    g_slist_foreach(s,do_if_string_choice_group,z);
+    g_slist_foreach(s,do_if_option_list_group,z);
+    g_slist_foreach(s,do_if_numeric_group,z);
+    g_slist_foreach(s,do_if_command_string_group,z);
+    g_slist_foreach(s,do_if_simple_string_group,z);
+    g_slist_foreach(s,do_if_file_string_group,z);
+    g_slist_foreach(s,do_if_color_group,z);
+    g_slist_foreach(s,do_if_key_group,z);
+    g_slist_foreach(s,do_if_button_group,z);
+    g_slist_foreach(s,do_if_edge_group,z);
+    g_slist_foreach(s,do_if_non_file_string_list_group,z);
+    /*do_page(group,(GFunc)do_if_choice_option_group,_("Choices"),notebook);
+    do_page(group,(GFunc)do_if_numeric_group,_("Numeric Values"),notebook);
+    do_page(group,(GFunc)do_if_command_string_group,_("Commands"),notebook);
+    do_page(group,(GFunc)do_if_simple_string_group,_("Strings"),notebook);
+    do_page(group,(GFunc)do_if_file_string_group,_("Filenames"),notebook);
+    do_page(group,(GFunc)do_if_color_group,_("Colors"),notebook);
+    do_page(group,(GFunc)do_if_key_group,_("Keyboard"),notebook);
+    do_page(group,(GFunc)do_if_button_group,_("Mouse"),notebook);
+    do_page(group,(GFunc)do_if_edge_group,_("Screen Edges & Corners"),notebook);
+    do_page(group,(GFunc)do_if_non_file_string_list_group,_("String Lists"),notebook);*/
+}
+void do_subgroup(BerylSettingsSubGroup * group, SETGroupWidget * z)
+{
+    GtkWidget * n, * m;
+    n = z->widget;
+    if (strcmp(beryl_settings_subgroup_get_name(group),""))
+    {
+	m = gtk_frame_new(beryl_settings_subgroup_get_name(group));
+	gtk_box_pack_start(GTK_BOX(n),m,FALSE,FALSE,0);
+	z->widget = gtk_vbox_new(FALSE,2);
+    }
+    do_any(beryl_settings_subgroup_get_settings(group),z);
+    //g_slist_foreach(beryl_settings_subgroup_get_settings(group),do_any,z);
+    z->widget=n;
+}
+struct _NoteGroup
+{
+    gchar * group;
+    GtkWidget * notebook;
+};
+void do_page(BerylSettingsGroup * g, struct _NoteGroup *ng)
+{
+    gchar * group = ng->group;
+    GtkWidget * notebook=ng->notebook;
     SETGroupWidget z;
     GtkWidget * scrol = gtk_scrolled_window_new(NULL,NULL);
     gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrol)
@@ -1381,28 +1428,29 @@
     z.widget=vbox;
     z.hasany=FALSE;
     if (strcmp(group,"_")==0) group=NULL;
-    GSList * settings = beryl_settings_plugin_get_settings(beryl_settings_context_find_plugin(context,group));
-    g_slist_foreach(settings,func,&z);
+    //GSList * settings = beryl_settings_plugin_get_settings(beryl_settings_context_find_plugin(context,group));
+    GSList * subgroups = beryl_settings_group_get_subgroups(g);
+    g_slist_foreach(subgroups,do_subgroup,&z);
     gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrol),vbox);
     if (z.hasany)
         gtk_notebook_append_page(GTK_NOTEBOOK(notebook),
-                scrol,gtk_label_new(label));
+                scrol,gtk_label_new(beryl_settings_group_get_name(g)));
 }
 void do_option_page(gchar * group, GtkWidget * notebook)
 {
     //load_options_for(group);
     //okay now we can lay out a notebook
+    struct _NoteGroup ng;
+    ng.group=group;
+    ng.notebook=notebook;
     gtk_notebook_set_scrollable(GTK_NOTEBOOK(notebook),TRUE);
-    do_page(group,(GFunc)do_if_choice_option_group,_("Choices"),notebook);
-    do_page(group,(GFunc)do_if_numeric_group,_("Numeric Values"),notebook);
-    do_page(group,(GFunc)do_if_command_string_group,_("Commands"),notebook);
-    do_page(group,(GFunc)do_if_simple_string_group,_("Strings"),notebook);
-    do_page(group,(GFunc)do_if_file_string_group,_("Filenames"),notebook);
-    do_page(group,(GFunc)do_if_color_group,_("Colors"),notebook);
-    do_page(group,(GFunc)do_if_key_group,_("Keyboard"),notebook);
-    do_page(group,(GFunc)do_if_button_group,_("Mouse"),notebook);
-    do_page(group,(GFunc)do_if_edge_group,_("Screen Edges & Corners"),notebook);
-    do_page(group,(GFunc)do_if_non_file_string_list_group,_("String Lists"),notebook);
+    BerylSettingsPlugin * p;
+    if (!strcmp(group,"_"))
+	p=beryl_settings_context_find_plugin(context,NULL);
+    else
+	p=beryl_settings_context_find_plugin(context,group);
+    g_slist_foreach(beryl_settings_plugin_get_groups(p),
+	    do_page,&ng);
     setup_actions(group);
     //gtk_notebook_append_page(GTK_NOTEBOOK(notebook),
     //        do_page(group,(GFunc)do_if_undefined_group),gtk_label_new("Unhandled"));




More information about the commits mailing list