This message ties into an earlier message where I stated I would try out
some code to see if I could change the attributes of text in my
GtkListStore. It works quite nicely. Here's what happens:
1) user selects an item in my GtkTreeView (note: in this case just a
single column view).
2) User clicks a button and the text at that selection turns red!
Here's what I did:
1) I have an enumerated type for the storage model
enum
{
DATA_COLUMN,
MODEL_ATTRIBUTES,
N_COLUMNS
}
2) Created a callback for the the button press:
void on_button_clicked (GtkButton *button, gpointer *userData)
{
do_color_test(gtk_widget_get_toplevel(button));
}
3) now, in the do_color_test routine, I need to do several things:
- get the view
- get the model
- get the current selection
- return the proper iter for the selection
- set the attribute to "red" for the current selection
void do_color_test (GtkWidget *theWindow)
{
GtkWidget *theView = NULL;
GtkListStore *theListStore = NULL;
GtkTreeIter theIter;
GtkTreeModel *theModel = NULL;
GtkTreeSelection *currentSelection;
theView = lookup_widget(theWindow, "atreeview");
theModel = gtk_tree_view_get_model(theView);
if (GTK_IS_LIST_STORE (theModel))
{
theListStore = GTK_LIST_STORE (theModel);
g_print("theModel is a ListStore\n");
}
/* get the current selection from theView */
currentSelection = gtk_tree_view_get_selection(theView);
/* now that we have a selection, get the exact location in theIter
*/
if (!gtk_tree_selection_get_selected(currentSelection, &theListStore,
&theIter))
{
g_print("no current selection!!\n");
}
/* set the color for that row to red */
gtk_list_store_set(theListStore, &theIter, MODEL_ATTRIBUTES, "red",
-1);
}
There are probably more efficient methods of doing this. For example, do
I need to call gtk_tree_view_get_selection at all? Some obvious debug
code can also be elminated but that's the jist of it.
--
.''`. Carl B. Constantine
: :' : duckwing duckwing ca
`. `' GnuPG: 135F FC30 7A02 B0EB 61DB 34E3 3AF1 DC6C 9F7A 3FF8
`- Debian GNU/Linux -- The power of freedom
Attachment:
pgpPH3I60AL1R.pgp
Description: PGP signature