[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r5988 - GNUnet/src/setup/gtk
From: |
gnunet |
Subject: |
[GNUnet-SVN] r5988 - GNUnet/src/setup/gtk |
Date: |
Wed, 19 Dec 2007 22:14:04 -0700 (MST) |
Author: grothoff
Date: 2007-12-19 22:14:04 -0700 (Wed, 19 Dec 2007)
New Revision: 5988
Removed:
GNUnet/src/setup/gtk/gconf.c
Log:
dead
Deleted: GNUnet/src/setup/gtk/gconf.c
===================================================================
--- GNUnet/src/setup/gtk/gconf.c 2007-12-20 05:04:48 UTC (rev 5987)
+++ GNUnet/src/setup/gtk/gconf.c 2007-12-20 05:14:04 UTC (rev 5988)
@@ -1,619 +0,0 @@
-/*
- This file is part of GNUnet.
- (C) 2005, 2006 Christian Grothoff (and other contributing authors)
-
- GNUnet is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 2, or (at your
- option) any later version.
-
- GNUnet is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with GNUnet; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-*/
-/**
- * @brief GNUnet Setup
- * @file setup/gtk/gconf.c
- * @author Nils Durner
- * @author Christian Grothoff
- */
-
-#include "gnunet_setup_lib.h"
-#include "glade_support.h"
-#include "gconf.h"
-#include "platform.h"
-
-/**
- * @brief definition of the entries in the main model for
- * the setup tree
- */
-enum
-{
- SETUP_SECTION,
- SETUP_OPTION,
- SETUP_TREENODE,
- SETUP_ZERO,
- SETUP_FALSE,
- SETUP_TRUE,
- SETUP_DWIDTH,
- SETUP_HWIDTH,
- SETUP_WRAP,
- SETUP_EDIT_BGCOLOR,
- SETUP_DEFAULT_VALUE,
- SETUP_TEXT_VALUE,
- SETUP_COMBO_MODEL,
- SETUP_TEXT_VIS,
- SETUP_COMBO_VIS,
- SETUP_DESCRIPTION,
- SETUP_HELPTEXT,
- SETUP_NUM,
-};
-
-static GtkListStore *no_model;
-
-static struct GNUNET_GC_Configuration *cfg;
-
-static struct GNUNET_GE_Context *ectx;
-
-static const char *cfg_filename;
-
-static void
-addToTree (GtkTreeStore * model, GtkTreeIter * parent,
- struct GNUNET_GNS_TreeNode *pos)
-{
- GtkTreeIter it;
- GtkTreeIter it2;
- int i;
- int j;
- int k;
- GtkListStore *cmodel;
- char defStr[128];
- char valStr[128];
- char *tmp;
- size_t tmpl;
-
- if (!pos->visible)
- return;
- gtk_tree_store_append (model, &it, parent);
- gtk_tree_store_set (model,
- &it,
- SETUP_SECTION, pos->section,
- SETUP_OPTION, pos->option,
- SETUP_TREENODE, pos,
- SETUP_ZERO, 0,
- SETUP_FALSE, FALSE,
- SETUP_TRUE, TRUE,
- SETUP_DWIDTH, 120,
- SETUP_HWIDTH, 400,
- SETUP_WRAP, PANGO_WRAP_WORD_CHAR,
- SETUP_EDIT_BGCOLOR, "yellow",
- SETUP_DEFAULT_VALUE, "",
- SETUP_TEXT_VALUE, "",
- SETUP_COMBO_MODEL, no_model,
- SETUP_TEXT_VIS, FALSE,
- SETUP_COMBO_VIS, FALSE,
- SETUP_DESCRIPTION, pos->description,
- SETUP_HELPTEXT, pos->help, -1);
- switch (pos->type & GNUNET_GNS_KIND_MASK)
- {
- case GNUNET_GNS_KIND_NODE:
- i = 0;
- while (pos->children[i] != NULL)
- {
- addToTree (model, &it, pos->children[i]);
- i++;
- }
- break;
- case GNUNET_GNS_KIND_LEAF:
- switch (pos->type & GNUNET_GNS_TYPE_MASK)
- {
- case GNUNET_GNS_TYPE_BOOLEAN:
- cmodel = gtk_list_store_new (1, G_TYPE_STRING);
- gtk_list_store_insert_with_values (cmodel, &it2, -1, 0, "YES", -1);
- gtk_list_store_insert_with_values (cmodel, &it2, -1, 0, "NO", -1);
- gtk_tree_store_set (model,
- &it,
- SETUP_COMBO_MODEL, cmodel,
- SETUP_COMBO_VIS, TRUE,
- SETUP_DEFAULT_VALUE,
- pos->value.Boolean.def ? "YES" : "NO",
- SETUP_TEXT_VALUE,
- pos->value.Boolean.val ? "YES" : "NO", -1);
- break;
- case GNUNET_GNS_TYPE_STRING:
- cmodel = gtk_list_store_new (1, G_TYPE_STRING);
- gtk_tree_store_set (model,
- &it,
- SETUP_DEFAULT_VALUE, pos->value.String.def,
- SETUP_TEXT_VALUE, pos->value.String.val,
- SETUP_COMBO_MODEL, cmodel, -1);
- i = 0;
- while (pos->value.String.legalRange[i] != NULL)
- {
- gtk_list_store_insert_with_values (cmodel,
- &it2,
- -1,
- 0,
- pos->value.String.
- legalRange[i], -1);
- i++;
- }
- gtk_tree_store_set (model,
- &it,
- SETUP_TEXT_VIS, TRUE,
- SETUP_COMBO_VIS, TRUE, -1);
- break;
- case GNUNET_GNS_TYPE_MULTIPLE_CHOICE:
- cmodel = gtk_list_store_new (1, G_TYPE_STRING);
- gtk_tree_store_set (model,
- &it,
- SETUP_DEFAULT_VALUE, pos->value.String.def,
- SETUP_TEXT_VALUE, pos->value.String.val,
- SETUP_COMBO_MODEL, cmodel, -1);
- i = 0;
- j = 1;
- tmpl = 2;
- while (pos->value.String.legalRange[i] != NULL)
- {
- tmpl += strlen (pos->value.String.legalRange[i]) + 1;
- i++;
- j *= 2;
- }
- tmp = GNUNET_malloc (tmpl);
- /* For now, only allow multiple choice for less than 12 entries...
- (10 are needed for applications!) */
- if (i < 12)
- {
- while (--j >= 0)
- {
- tmp[0] = '\0';
- for (k = 0; k < i; k++)
- {
- if ((j & (1 << k)) == 0)
- continue;
- strcat (tmp, pos->value.String.legalRange[k]);
- strcat (tmp, " ");
- }
- if (strlen (tmp) > 0)
- tmp[strlen (tmp) - 1] = '\0';
- gtk_list_store_insert_with_values (cmodel,
- &it2, -1, 0, tmp, -1);
- }
- }
- else
- {
- fprintf (stderr,
- "Too many choices in multiple choice for `%s': %d\n",
- pos->option, i);
- GNUNET_GE_BREAK (NULL, 0);
- }
- GNUNET_free (tmp);
- gtk_tree_store_set (model,
- &it,
- SETUP_TEXT_VIS, TRUE,
- SETUP_COMBO_VIS, TRUE, -1);
- break;
- case GNUNET_GNS_TYPE_SINGLE_CHOICE:
- cmodel = gtk_list_store_new (1, G_TYPE_STRING);
- gtk_tree_store_set (model,
- &it,
- SETUP_DEFAULT_VALUE, pos->value.String.def,
- SETUP_TEXT_VALUE, pos->value.String.val,
- SETUP_COMBO_MODEL, cmodel, -1);
- i = 0;
- while (pos->value.String.legalRange[i] != NULL)
- {
- gtk_list_store_insert_with_values (cmodel,
- &it2,
- -1,
- 0,
- pos->value.String.
- legalRange[i], -1);
- i++;
- }
- gtk_tree_store_set (model, &it, SETUP_COMBO_VIS, TRUE, -1);
- break;
- case GNUNET_GNS_TYPE_DOUBLE:
- cmodel = gtk_list_store_new (1, G_TYPE_STRING);
- GNUNET_snprintf (defStr, 128, "%f", pos->value.Double.def);
- GNUNET_snprintf (valStr, 128, "%f", pos->value.Double.val);
- gtk_list_store_insert_with_values (cmodel, &it2, -1, 0, valStr, -1);
- if (0 != strcmp (valStr, defStr))
- {
- gtk_list_store_insert_with_values (cmodel,
- &it2, -1, 0, valStr, -1);
- }
- gtk_tree_store_set (model,
- &it,
- SETUP_DEFAULT_VALUE, defStr,
- SETUP_TEXT_VALUE, valStr,
- SETUP_COMBO_VIS, TRUE,
- SETUP_TEXT_VIS, TRUE,
- SETUP_COMBO_MODEL, cmodel, -1);
- break;
- case GNUNET_GNS_TYPE_UINT64:
- cmodel = gtk_list_store_new (1, G_TYPE_STRING);
- GNUNET_snprintf (defStr, 128, "%llu", pos->value.UInt64.def);
- GNUNET_snprintf (valStr, 128, "%llu", pos->value.UInt64.val);
- gtk_list_store_insert_with_values (cmodel, &it2, -1, 0, valStr, -1);
- if (0 != strcmp (valStr, defStr))
- {
- gtk_list_store_insert_with_values (cmodel,
- &it2, -1, 0, valStr, -1);
- }
- gtk_tree_store_set (model,
- &it,
- SETUP_DEFAULT_VALUE, defStr,
- SETUP_COMBO_VIS, TRUE,
- SETUP_TEXT_VALUE, valStr,
- SETUP_TEXT_VIS, TRUE,
- SETUP_COMBO_MODEL, cmodel, -1);
- break;
- default:
- GNUNET_GE_ASSERT (NULL, 0);
- gtk_tree_store_remove (model, &it);
- return;
- }
- break;
- case GNUNET_GNS_KIND_ROOT:
- default:
- GNUNET_GE_ASSERT (NULL, 0);
- gtk_tree_store_remove (model, &it);
- return;
- }
-}
-
-typedef struct
-{
- unsigned int size;
- char **paths;
-} CR_Context;
-
-static void
-collectRows (GtkTreeView * tree_view, GtkTreePath * path, gpointer user_data)
-{
- CR_Context *ctx = user_data;
-
- GNUNET_array_grow (ctx->paths, ctx->size, ctx->size + 1);
- ctx->paths[ctx->size - 1] = gtk_tree_path_to_string (path);
-}
-
-static void
-updateTreeModel (struct GNUNET_GNS_Context *gns)
-{
- GtkWidget *treeView;
- GtkTreeStore *model;
- struct GNUNET_GNS_TreeNode *tree;
- CR_Context crCTX;
- GtkTreePath *path;
- int i;
-
- /* create new model */
- model = gtk_tree_store_new (SETUP_NUM, G_TYPE_STRING, /* section */
- G_TYPE_STRING, /* option */
- G_TYPE_POINTER, /* node */
- G_TYPE_INT, /* always 0 */
- G_TYPE_BOOLEAN, /* always FALSE */
- G_TYPE_BOOLEAN, /* always TRUE */
- G_TYPE_INT, /* dwidth */
- G_TYPE_INT, /* hwidth */
- G_TYPE_INT, /* wrap */
- G_TYPE_STRING, /* edit bg color */
- G_TYPE_STRING, /* default value */
- G_TYPE_STRING, /* current text value */
- GTK_TYPE_LIST_STORE, /* combo model */
- G_TYPE_BOOLEAN, /* text visible? */
- G_TYPE_BOOLEAN, /* combo visible? */
- G_TYPE_STRING, /* description */
- G_TYPE_STRING); /* help text */
-
- tree = GNUNET_GNS_get_tree_root (gns);
- i = 0;
- while (tree->children[i] != NULL)
- {
- addToTree (model, NULL, tree->children[i]);
- i++;
- }
- /* capture paths that are currently expanded */
- crCTX.size = 0;
- crCTX.paths = NULL;
- treeView = lookup_widget ("configTreeView");
- gtk_tree_view_map_expanded_rows (GTK_TREE_VIEW (treeView),
- &collectRows, &crCTX);
- /* update model */
- gtk_tree_view_set_model (GTK_TREE_VIEW (treeView), GTK_TREE_MODEL (model));
- g_object_unref (model);
- /* restore expanded paths */
- for (i = 0; i < crCTX.size; i++)
- {
- path = gtk_tree_path_new_from_string (crCTX.paths[i]);
- gtk_tree_view_expand_row (GTK_TREE_VIEW (treeView), path, FALSE);
- gtk_tree_path_free (path);
- free (crCTX.paths[i]);
- }
- GNUNET_array_grow (crCTX.paths, crCTX.size, 0);
-}
-
-static void
-editedTextHandler (GtkCellRendererToggle * rdner,
- gchar * path, gchar * new_value, gpointer user_data)
-{
- struct GNUNET_GNS_Context *gns = user_data;
- GtkTreePath *gtk_path;
- GtkTreeIter iter;
- GtkWidget *treeView;
- GtkTreeModel *model;
- char *section;
- char *option;
-
- treeView = lookup_widget ("configTreeView");
- model = gtk_tree_view_get_model (GTK_TREE_VIEW (treeView));
- gtk_path = gtk_tree_path_new_from_string (path);
- if (TRUE != gtk_tree_model_get_iter (model, &iter, gtk_path))
- {
- GNUNET_GE_BREAK (ectx, 0);
- gtk_tree_path_free (gtk_path);
- return;
- }
- gtk_tree_path_free (gtk_path);
- gtk_tree_model_get (model,
- &iter,
- SETUP_SECTION, §ion, SETUP_OPTION, &option, -1);
- GNUNET_GC_set_configuration_value_string (cfg, ectx, section, option,
- new_value);
- updateTreeModel (gns);
- free (section);
- free (option);
-}
-
-static void
-initTreeView (struct GNUNET_GNS_Context *gns)
-{
- GtkWidget *treeView;
- GtkTreeViewColumn *column;
- GtkCellRenderer *renderer;
- int col;
-
- treeView = lookup_widget ("configTreeView");
-
-
- renderer = gtk_cell_renderer_text_new ();
- col = gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeView),
- -1,
- _("Description"),
- renderer,
- "text",
- SETUP_DESCRIPTION,
- "wrap-width",
- SETUP_DWIDTH,
- "wrap-mode", SETUP_WRAP,
- NULL);
- column = gtk_tree_view_get_column (GTK_TREE_VIEW (treeView), col - 1);
- gtk_tree_view_column_set_resizable (column, TRUE);
-
-
- renderer = gtk_cell_renderer_combo_new ();
- g_signal_connect (renderer, "edited", G_CALLBACK (&editedTextHandler), gns);
- col = gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeView),
- -1,
- _("Value"),
- renderer,
- "text", SETUP_TEXT_VALUE,
- "visible",
- SETUP_COMBO_VIS, "model",
- SETUP_COMBO_MODEL,
- "text-column",
- SETUP_ZERO, "has-entry",
- SETUP_TEXT_VIS,
- "background",
- SETUP_EDIT_BGCOLOR,
- "background-set",
- SETUP_TRUE, "editable",
- SETUP_TRUE, "wrap-width",
- SETUP_DWIDTH,
- "wrap-mode", SETUP_WRAP,
- NULL);
- column = gtk_tree_view_get_column (GTK_TREE_VIEW (treeView), col - 1);
- gtk_tree_view_column_set_resizable (column, TRUE);
-
-
- renderer = gtk_cell_renderer_text_new ();
- col = gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeView),
- -1,
- _("Default"),
- renderer,
- "text",
- SETUP_DEFAULT_VALUE,
- "wrap-width",
- SETUP_DWIDTH,
- "wrap-mode", SETUP_WRAP,
- NULL);
- column = gtk_tree_view_get_column (GTK_TREE_VIEW (treeView), col - 1);
- gtk_tree_view_column_set_resizable (column, TRUE);
-
-
- renderer = gtk_cell_renderer_text_new ();
- col = gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeView),
- -1,
- _("Help"),
- renderer,
- "text", SETUP_HELPTEXT,
- "wrap-width",
- SETUP_HWIDTH,
- "wrap-mode", SETUP_WRAP,
- NULL);
- column = gtk_tree_view_get_column (GTK_TREE_VIEW (treeView), col - 1);
- gtk_tree_view_column_set_resizable (column, TRUE);
-
-
- renderer = gtk_cell_renderer_text_new ();
- col = gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeView),
- -1,
- _("Section"),
- renderer,
- "text", SETUP_SECTION,
- NULL);
- column = gtk_tree_view_get_column (GTK_TREE_VIEW (treeView), col - 1);
- gtk_tree_view_column_set_resizable (column, TRUE);
-
-
- renderer = gtk_cell_renderer_text_new ();
- col = gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeView),
- -1,
- _("Option"),
- renderer,
- "text", SETUP_OPTION,
- NULL);
- column = gtk_tree_view_get_column (GTK_TREE_VIEW (treeView), col - 1);
- gtk_tree_view_column_set_resizable (column, TRUE);
-}
-
-
-/**
- * User requested save manually. Save configuration.
- */
-void
-on_saveButton_activatesetup_gtk ()
-{
- GtkWidget *dialog;
-
- if (0 == GNUNET_GC_write_configuration (cfg, cfg_filename))
- {
- dialog = gtk_message_dialog_new (NULL,
- GTK_DIALOG_MODAL,
- GTK_MESSAGE_INFO,
- GTK_BUTTONS_OK,
- _("Configuration saved."));
- gtk_dialog_run (GTK_DIALOG (dialog));
- gtk_widget_destroy (dialog);
- }
- else
- {
- dialog = gtk_message_dialog_new (NULL,
- GTK_DIALOG_MODAL,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_OK,
- _("Failed to save configuration."));
- gtk_dialog_run (GTK_DIALOG (dialog));
- gtk_widget_destroy (dialog);
- }
-}
-
-
-/**
- * User clicked to close window. Check if configuration
- * needs saving and possibly save configuration or do not
- * exit.
- *
- * @return TRUE to NOT exit (i.e. user hits cancel on save
GNUNET_YES/GNUNET_NO/CANCEL).
- */
-gboolean
-on_main_window_delete_eventsetup_gtk ()
-{
- GtkWidget *dialog;
- gint ret;
-
- if (GNUNET_GC_test_dirty (cfg))
- {
- dialog = gtk_message_dialog_new (NULL,
- GTK_DIALOG_MODAL,
- GTK_MESSAGE_QUESTION,
- GTK_BUTTONS_YES_NO,
- _("Configuration changed. Save?"));
- ret = gtk_dialog_run (GTK_DIALOG (dialog));
- gtk_widget_destroy (dialog);
- switch (ret)
- {
- case GTK_RESPONSE_YES:
- if (0 != GNUNET_GC_write_configuration (cfg, cfg_filename))
- {
- dialog = gtk_message_dialog_new (NULL,
- GTK_DIALOG_MODAL,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_OK,
- _
- ("Error saving
configuration."));
- gtk_dialog_run (GTK_DIALOG (dialog));
- gtk_widget_destroy (dialog);
- }
- return FALSE;
- case GTK_RESPONSE_NO:
- return FALSE;
- case GTK_RESPONSE_CANCEL:
- default:
- return TRUE;
- }
- }
- return FALSE;
-}
-
-/**
- * We're really exiting. Final cleanup code (in GTK).
- */
-void
-gtk_main_quitsetup_gtk ()
-{
- gtk_main_quit ();
-}
-
-
-
-int
-gconf_main_post_init (struct GNUNET_PluginHandle *self,
- struct GNUNET_GE_Context *e,
- struct GNUNET_GC_Configuration *c,
- struct GNUNET_GNS_Context *gns,
- const char *filename, int is_daemon)
-{
- GtkWidget *mainWindow;
-
- cfg = c;
- ectx = e;
- cfg_filename = filename;
- no_model = gtk_list_store_new (1, G_TYPE_STRING);
- setLibrary (self);
- mainWindow = get_xml ("setupWindow");
- updateTreeModel (gns);
- initTreeView (gns);
- gtk_window_maximize (GTK_WINDOW (mainWindow));
- gtk_widget_show (mainWindow);
- gdk_threads_enter ();
-#ifdef WINDOWS
- SetCursor (LoadCursor (NULL, IDC_ARROW));
-#endif
- gtk_main ();
- gdk_threads_leave ();
- destroyMainXML ();
- setLibrary (NULL);
- g_object_unref (G_OBJECT (no_model));
- no_model = NULL;
- return 0;
-}
-
-
-/* Main */
-int
-gconf_mainsetup_gtk (int argc,
- const char **argv,
- struct GNUNET_PluginHandle *self,
- struct GNUNET_GE_Context *ectx,
- struct GNUNET_GC_Configuration *cfg,
- struct GNUNET_GNS_Context *gns,
- const char *filename, int is_daemon)
-{
- g_thread_init (NULL);
- gtk_init (&argc, (char ***) &argv);
-#if ENABLE_NLS
- bind_textdomain_codeset (PACKAGE, "UTF-8"); /* for gtk */
-#endif
-#ifdef WINDOWS
- FreeConsole ();
-#endif
- return gconf_main_post_init (self, ectx, cfg, gns, filename, is_daemon);
-}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r5988 - GNUnet/src/setup/gtk,
gnunet <=