I'm having a problem accessing data in a GtkList.
I created the widgets and callbacks with Glade and
added code to access the data. Here is a short
description of what the code is doing.
The GtkList shm_list_widget is created inside the dataset_window.
The shm_list_widget is loaded in load_shm_list_widget().
The selected items in shm_list_widget should be accessed in
on_shm_list_widget_selection_changed(), but I keep on getting
item_str = NULL when I try to access the data with
gtk_object_get_data().
Can anybody tell me what I'm doing wrong?????
The relevant code is:
static const gchar *ShmListKey = "ShmListKey";
static const gchar *ShmListKey = "ShmItemKey";
static GtkWidget *SHM_list_widget = NULL;
/*-------------------------------------------------------------------------
-- void load_shm_list_widget(): Loads the GtkList shm_list_widget
-- void open_dataset_window(): Opens the Data Set Developer window
---------------------------------------------------------------------------*
/
void load_shm_list_widget(GtkWidget *tgt_window, FILE *fp)
{
GtkWidget *local_shm_list = NULL;
GList *gl_list = NULL;
int i=0, knt=0;
static int list_loaded = FALSE;
gchar line[LNSZ], cbuff[20];
gint lknt = 0;
line[0] = 0x0; cbuff[0] = 0x0;
/*----------------------------------------------------------
-- Create GtkListItem local_shm_list
------------------------------------------------------------*/
if( local_shm_list == NULL )
local_shm_list = gtk_list_item_new();
/*-------------------------------------------------------------
-- Attach to the shared memory list (shm_list) in the tgt_window
---------------------------------------------------------------*/
SHM_list_widget = lookup_widget(tgt_window, "shm_list_widget");
/*----------------------------------------------------------
-- Check if the ***.univ file was previously read.
------------------------------------------------------------*/
if( list_loaded == FALSE )
{
for(;;)
{
clean_str(20, cbuff);
for(i=0; i < 19; i++) cbuff[i] = univ[knt].name[i];
local_shm_list = gtk_list_item_new_with_label(cbuff);
gl_list = g_list_append(gl_list, local_shm_list);
gtk_widget_show(local_shm_list);
gtk_object_set_data(GTK_OBJECT(local_shm_list), ShmListKey, "Shm
Segment");
knt++;
lknt++;
if( univ[knt].name[0] == NULL) break;
}
} /* End of section to load data from univ file */
list_loaded = TRUE;
gtk_list_append_items(GTK_LIST(SHM_list_widget), gl_list);
} /* End of check for previously loaded ***.univ file */
return;
} /* End of load_shm_list_widget() */
static void open_dataset_window(GtkWidget *dc_topLevel)
{
/*-------------------------------------------------------------
-- Create window if necessary
---------------------------------------------------------------*/
if( open_dataset_win == NULL )
open_dataset_win = create_dataset_window();
/*-------------------------------------------------------------
-- We save a pointer to the main window inside the file
-- selection's data list, so we can get it easily in the callbacks.
---------------------------------------------------------------*/
gtk_object_set_data (GTK_OBJECT (open_dataset_win), DataSetKey,
dc_topLevel);
gtk_widget_show (open_dataset_win);
gdk_window_raise (open_dataset_win->window);
/*------------------------------------------------------------------------
-- If the ***.univ file was loaded, show the data in the shm_list_widget
---------------------------------------------------------------------------*
/
if( univ[0].name[0] != NULL )
load_shm_list_widget(open_dataset_win, NULL);
}
/*-------------------------------------------------------------------------
-- Called from gtk_signal_connect() with list = shm_list_widget
-- user_data = NULL
-- on_shm_list_widget_selection_change():
---------------------------------------------------------------------------*
/
void on_shm_list_widget_selection_changed(GtkList *list, gpointer user_data)
{
GtkList *temp_list;
GList *dlist;
gchar *item_str = NULL;
temp_list = list;
dlist = GTK_LIST(temp_list)->selection;
if( dlist == NULL ) return;
item_str = gtk_object_get_data(dlist->data, ShmItemKey);
g_print("Selected string: %s \n", item_str);
g_print("Selection:%d \n", &dlist->data);
return;
}
Cheers.....
Rick Esquibel
Embedded Software/Engineer
5000 E. McDowell Road
Mesa, AZ 85215-9797
(480) 891-8423
[EMAIL PROTECTED]
_______________________________________________
Glade-devel maillist - [EMAIL PROTECTED]
http://lists.helixcode.com/mailman/listinfo/glade-devel