Re: open an existing file in buffer and write on it




I tried a lot(trying to understand the huge GLib as suggested by
Andrew), but most of the discussion here went way beyond my capability.
So, lets try from fresh.

My code for treeview and editing the treeview column (column Id #1). So,
once the column is edited, its updated by the cell_edited. Now, I need
to put this new_text in the file as well. 
The file that is read is a bibtex file (http://www.bibtex.org/Format/)

GtkWidget *create_view_and_model(void) {
    GtkCellRenderer *cell;
void
cell_edited(GtkCellRendererText *renderer,
    gchar *path,
    gchar *new_text,
    GtkTreeView *treeview);

  store = gtk_list_store_new (NUM_COLS, G_TYPE_STRING, G_TYPE_STRING,
                                                G_TYPE_STRING, 
                                                G_TYPE_STRING, 
                                                G_TYPE_STRING);

  tree = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store));
  gtk_tree_view_set_rules_hint (GTK_TREE_VIEW(tree), TRUE);


/* #1: KEY COLUMN */  
  cell = gtk_cell_renderer_text_new ();
  g_object_set (cell,
                "editable", TRUE,
                NULL);
  g_signal_connect (cell, 
      "edited",G_CALLBACK(cell_edited), 
      tree);
  g_object_set_data (G_OBJECT (cell), 
      "column", GINT_TO_POINTER (COL_BIB_KEY));

  GtkTreeViewColumn *col_key,*col_year,*col_type,*col_auth,*col_pub;
  col_key=gtk_tree_view_column_new_with_attributes (
      "Key", cell,
      "text", COL_BIB_KEY,
      NULL);
  gtk_tree_view_column_set_sort_column_id( col_key, ID_KEY);
  gtk_tree_view_append_column (GTK_TREE_VIEW (tree), col_key);
  gtk_tree_view_column_set_max_width  (col_key,100);


/* #2: TYPE COLUMN */  
  cell = gtk_cell_renderer_text_new ();

  col_type=gtk_tree_view_column_new_with_attributes (
                                               "Type", cell,
                                               "text", COL_BIB_TYPE,
                                               NULL);
  gtk_tree_view_column_set_sort_column_id( col_type, ID_TYPE);
  gtk_tree_view_append_column (GTK_TREE_VIEW (tree), col_type);


/*
Three more such column of treeview
*/

    return tree;
}


/* Apply the changed text to the cell if it is not an empty string. */
void cell_edited(GtkCellRendererText *renderer,
    gchar *path,
    gchar *new_text,
    GtkTreeView *treeview)
{
  guint column;
  GtkTreeIter iter;
  GtkTreeModel *model;
  gpointer columnptr = g_object_get_data(G_OBJECT(renderer), "column");
  column = GPOINTER_TO_UINT(columnptr);


  if (g_ascii_strcasecmp (new_text, "") != 0)
  {
    model = gtk_tree_view_get_model (treeview);
    if (gtk_tree_model_get_iter_from_string (model, &iter, path))
      gtk_list_store_set (GTK_LIST_STORE (model), &iter, column,
new_text, -1);
 }
}
Kindly Help.




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]