diff -ru planner-0.14.4.orig/src/planner-conf-gconf.c planner-0.14.4/src/planner-conf-gconf.c --- planner-0.14.4.orig/src/planner-conf-gconf.c 2008-07-22 14:41:47.000000000 +0100 +++ planner-0.14.4/src/planner-conf-gconf.c 2010-01-13 09:50:33.000000000 +0000 @@ -110,6 +110,28 @@ return ret_val; } +gint +planner_conf_get_int_with_default (const gchar *key, gint def, GError **error) +{ + GConfClient *client; + GConfValue *val; + gchar *full_key; + gint ret_val = def; + + client = conf_get_gconf_client (); + + full_key = conf_get_key (key); + val = gconf_client_get (client, key, error); + + if (val != NULL) + { + ret_val = gconf_value_get_int (val); + gconf_value_free (val); + } + + return ret_val; +} + gboolean planner_conf_set_bool (const gchar *key, gboolean value, GError **error) { diff -ru planner-0.14.4.orig/src/planner-conf.h planner-0.14.4/src/planner-conf.h --- planner-0.14.4.orig/src/planner-conf.h 2008-07-22 14:41:47.000000000 +0100 +++ planner-0.14.4/src/planner-conf.h 2010-01-13 09:50:27.000000000 +0000 @@ -40,5 +40,9 @@ gint value, GError **error); +gint planner_conf_get_int_with_default (const gchar *key, + gint def, + GError **error); + #endif /* __PLANNER_CONF_H__ */ diff -ru planner-0.14.4.orig/src/planner-gantt-model.c planner-0.14.4/src/planner-gantt-model.c --- planner-0.14.4.orig/src/planner-gantt-model.c 2008-07-22 14:41:47.000000000 +0100 +++ planner-0.14.4/src/planner-gantt-model.c 2010-01-12 16:59:44.000000000 +0000 @@ -653,6 +653,8 @@ return G_TYPE_LONG; case COL_COMPLETE: return G_TYPE_INT; + case COL_NOTE: + return G_TYPE_BOOLEAN; default: return G_TYPE_INVALID; } @@ -794,6 +796,7 @@ gint duration; const gchar *name; const gchar *cached_str; + const gchar *note = NULL; g_return_if_fail (iter != NULL); @@ -894,6 +897,13 @@ break; + case COL_NOTE: + g_value_init (value, G_TYPE_BOOLEAN); + g_object_get (task, "note", ¬e, NULL); + g_value_set_boolean (value, note && strlen(note)); + + break; + default: g_warning ("Bad column %d requested", column); } diff -ru planner-0.14.4.orig/src/planner-gantt-model.h planner-0.14.4/src/planner-gantt-model.h --- planner-0.14.4.orig/src/planner-gantt-model.h 2008-07-22 14:41:47.000000000 +0100 +++ planner-0.14.4/src/planner-gantt-model.h 2010-01-12 16:59:44.000000000 +0000 @@ -61,6 +61,7 @@ COL_COST, COL_ASSIGNED_TO, COL_COMPLETE, + COL_NOTE, NUM_COLS }; diff -ru planner-0.14.4.orig/src/planner-gantt-view.c planner-0.14.4/src/planner-gantt-view.c --- planner-0.14.4.orig/src/planner-gantt-view.c 2010-01-12 15:36:55.000000000 +0000 +++ planner-0.14.4/src/planner-gantt-view.c 2010-01-12 16:59:44.000000000 +0000 @@ -635,6 +635,7 @@ * xgettext:no-c-format */ COL_COMPLETE, _("% Complete"), + COL_NOTE, _("Notes"), -1); priv->tree = tree; diff -ru planner-0.14.4.orig/src/planner-resource-view.c planner-0.14.4/src/planner-resource-view.c --- planner-0.14.4.orig/src/planner-resource-view.c 2009-04-07 19:15:08.000000000 +0100 +++ planner-0.14.4/src/planner-resource-view.c 2010-01-12 16:59:44.000000000 +0000 @@ -186,6 +186,11 @@ GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer data); +static void resource_view_note_data_func (GtkTreeViewColumn *tree_column, + GtkCellRenderer *cell, + GtkTreeModel *tree_model, + GtkTreeIter *iter, + gpointer data); static void resource_view_popup_menu (GtkWidget *widget, PlannerView *view); static void resource_view_edit_resource_cb (GtkAction *action, @@ -1374,6 +1379,26 @@ G_CALLBACK (resource_view_cell_cost_edited), view); + /* Note */ + cell = gtk_cell_renderer_pixbuf_new (); + + col = gtk_tree_view_column_new_with_attributes (_("Notes"), + cell, NULL); + gtk_tree_view_column_set_resizable (col, TRUE); + + gtk_tree_view_column_set_cell_data_func (col, cell, + resource_view_note_data_func, + NULL, NULL); + g_object_set_data (G_OBJECT (col), + "data-func", resource_view_note_data_func); + g_object_set_data (G_OBJECT (col), "id", "note"); + + gtk_tree_view_append_column (tree_view, col); + g_signal_connect (col, + "notify::width", + G_CALLBACK (resource_view_column_notify_width_cb), + view); + /* project = planner_window_get_project (view->main_window); properties = mrp_project_get_properties_from_type (project, @@ -2326,6 +2351,32 @@ } static void +resource_view_note_data_func (GtkTreeViewColumn *tree_column, + GtkCellRenderer *cell, + GtkTreeModel *tree_model, + GtkTreeIter *iter, + gpointer data) +{ + MrpResource *resource; + gchar *note; + + gtk_tree_model_get (tree_model, iter, COL_RESOURCE, &resource, -1); + + g_object_get (resource, "note", ¬e, NULL); + if (note && strlen(note)) { + g_object_set (cell, + "stock-id", GTK_STOCK_INFO, + "xalign", 0.0, + NULL); + } + else { + g_object_set (cell, + "stock-id", NULL, + NULL); + } +} + +static void resource_view_property_data_func (GtkTreeViewColumn *tree_column, GtkCellRenderer *cell, GtkTreeModel *model, diff -ru planner-0.14.4.orig/src/planner-task-tree.c planner-0.14.4/src/planner-task-tree.c --- planner-0.14.4.orig/src/planner-task-tree.c 2010-01-12 15:36:55.000000000 +0000 +++ planner-0.14.4/src/planner-task-tree.c 2010-01-12 16:59:44.000000000 +0000 @@ -141,6 +141,11 @@ GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer data); +static void task_tree_note_data_func (GtkTreeViewColumn *tree_column, + GtkCellRenderer *cell, + GtkTreeModel *tree_model, + GtkTreeIter *iter, + gpointer data); static void task_tree_row_activated_cb (GtkTreeView *tree, GtkTreePath *path, GtkTreeViewColumn *col, @@ -1695,6 +1700,35 @@ } static void +task_tree_note_data_func (GtkTreeViewColumn *tree_column, + GtkCellRenderer *cell, + GtkTreeModel *tree_model, + GtkTreeIter *iter, + gpointer data) +{ + PlannerTaskTree *tree = data; + MrpTask *task; + gchar *note; + + gtk_tree_model_get (tree_model, iter, + COL_TASK, &task, + -1); + + g_object_get (task, "note", ¬e, NULL); + if (note && strlen(note)) { + g_object_set (cell, + "stock-id", GTK_STOCK_INFO, + "xalign", 0.0, + NULL); + } + else { + g_object_set (cell, + "stock-id", NULL, + NULL); + } +} + +static void task_tree_name_edited (GtkCellRendererText *cell, gchar *path_string, gchar *new_text, @@ -2562,6 +2596,23 @@ g_object_set_data (G_OBJECT (col), "id", "assigned_to"); break; + case COL_NOTE: + cell = gtk_cell_renderer_pixbuf_new (); + col = gtk_tree_view_column_new_with_attributes (title, + cell, + NULL); + gtk_tree_view_column_set_resizable (col, TRUE); + gtk_tree_view_column_set_min_width (col, 50); + gtk_tree_view_column_set_cell_data_func (col, + cell, + task_tree_note_data_func, + GTK_TREE_VIEW (tree), + NULL); + g_object_set_data (G_OBJECT (col), + "data-func", task_tree_note_data_func); + g_object_set_data (G_OBJECT (col), "id", "note"); + break; + default: g_assert_not_reached (); } diff -ru planner-0.14.4.orig/src/planner-task-view.c planner-0.14.4/src/planner-task-view.c --- planner-0.14.4.orig/src/planner-task-view.c 2008-08-03 13:45:16.000000000 +0100 +++ planner-0.14.4/src/planner-task-view.c 2010-01-12 16:59:44.000000000 +0000 @@ -378,6 +378,7 @@ * xgettext:no-c-format */ COL_COMPLETE, _("% Complete"), + COL_NOTE, _("Notes"), -1); g_object_unref (model); diff -ru planner-0.14.4.orig/src/planner-view.c planner-0.14.4/src/planner-view.c --- planner-0.14.4.orig/src/planner-view.c 2008-08-02 20:59:09.000000000 +0100 +++ planner-0.14.4/src/planner-view.c 2010-01-13 09:51:06.000000000 +0000 @@ -227,7 +227,8 @@ key = g_strdup_printf ("/%s/columns/%s/order", planner_view_get_name (view), id); - order = planner_conf_get_int (key, NULL); + order = planner_conf_get_int_with_default (key, g_list_position(columns, l), NULL); + g_object_set_data (G_OBJECT (column), "order", GINT_TO_POINTER (order)); g_free (key);