[Glade-users] toggle buttons in a list view

Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

Hello List,

I've got most of the methods worked out for dealing with a tree/list
view, but I'm having trouble toggling a check button in the list. A
quick pointer on this would be very much appreciated.

I set up a column in my list view, called "At boot" and connect a signal
like this:

/* "At boot" column */
renderer =3D gtk_cell_renderer_toggle_new ();
column =3D gtk_tree_view_column_new_with_attributes ("At boot?",=20
                                                   "active", CONN_BOOT,
g_object_set (renderer, "activatable", TRUE, NULL);
g_signal_connect (renderer, "toggled",=20
                  G_CALLBACK (boot_toggled_callback),=20
gtk_tree_view_append_column (list_tree, column);
/* end "At boot" column */

Then I have a callback function that looks like this:

void boot_toggled_callback (GtkCellRendererToggle * cell,
                            gchar                 * path_string,
                            gpointer                data)
        GtkTreeIter iter;
        gint active;
        gchar * name;

        /* Convert from path to iter: */
        if (gtk_tree_model_get_iter_from_string (GTK_TREE_MODEL (conn_store),
                                                 path_string)) {

                /* Get attributes from the list entry */
                gtk_tree_model_get (GTK_TREE_MODEL (conn_store), &iter,=20
                                    CONN_BOOT, &active,=20
                                    CONN_NAME, &name,=20

        } else {
                g_print ("Couldn't set iter from path\n");

        /* Print something out to verify that we have selected out info from
           the correct entry in the list (this works and the name of the entry=09
           and the state of the toggle is printed correctly)=20
        g_print ("Name of connection is %s and active is %d\n", name, active);

        if (active) {
                gtk_cell_renderer_toggle_set_active (cell, FALSE);
                g_print ("Boot toggled inactive\n");
        else {
                /* This call fails and does not set the cell active */
                gtk_cell_renderer_toggle_set_active (cell, TRUE);
                g_print ("Boot toggled active\n");

/* End of callback */

Now, if I get the value of the cell pointer to print out, it is always
the same, no matter which line I click in my list, so I think that I am
not correctly referring to my toggle cell entry. Can anyone help me
toggle my check box?


Seb James

Hypercube Systems Ltd 'Embedded Linux Solutions'
35 Walkley Crescent Road, Sheffield, S6 5BA
Tel: 0845 4580277  Web: www.hypercubesystems.co.uk
gpg key: http://www.hypercubesystems.co.uk/ssl/seb.gpg.asc

Content-Type: application/pgp-signature; name=signature.asc
Content-Description: This is a digitally signed message part

Version: GnuPG v1.2.6 (GNU/Linux)



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