All, I've been working at this for several days now and I'm hoping someone can guide me down the right path (although I'm not opposed to just being given the answer). Let me say TIA now and I apologize if I've included too much code, error messages, etc.
Thanks, Andrew I have one treeview that displays system information. Clicking a row in this treeview causes a second listview to be populated with the components that comprise the selected system assembly. For example, if Motherboard were selected in treeview 'sys_tree', then the listview 'part_tree' would be populated with microprocessor, etc. The first time I select an item in the 'sys_tree' treeview, the 'part_tree' listview populates and all is well. The second, and subsequent, selections in the 'sys_tree' treeview don't populate the 'part_tree' listview. The following is thrown in the terminal. (reliafree:32523): Gtk-CRITICAL **: gtk_tree_model_get_iter: assertion `GTK_IS_TREE_MODEL (tree_model)' failed (reliafree:32523): Gtk-CRITICAL **: gtk_tree_model_get_value: assertion `GTK_IS_TREE_MODEL (tree_model)' failed (reliafree:32523): GLib-GObject-CRITICAL **: g_object_set_property: assertion `G_IS_VALUE (value)' failed (reliafree:32523): GLib-GObject-CRITICAL **: g_value_unset: assertion `G_IS_VALUE (value)' failed (reliafree:32523): Gtk-CRITICAL **: gtk_tree_model_get_value: assertion `GTK_IS_TREE_MODEL (tree_model)' failed (reliafree:32523): GLib-GObject-CRITICAL **: g_object_set_property: assertion `G_IS_VALUE (value)' failed (reliafree:32523): GLib-GObject-CRITICAL **: g_value_unset: assertion `G_IS_VALUE (value)' failed (reliafree:32523): Gtk-CRITICAL **: gtk_tree_model_get_value: assertion `GTK_IS_TREE_MODEL (tree_model)' failed (reliafree:32523): GLib-GObject-CRITICAL **: g_object_set_property: assertion `G_IS_VALUE (value)' failed (reliafree:32523): GLib-GObject-CRITICAL **: g_value_unset: assertion `G_IS_VALUE (value)' failed (reliafree:32523): Gtk-CRITICAL **: gtk_tree_model_get_value: assertion `GTK_IS_TREE_MODEL (tree_model)' failed (reliafree:32523): GLib-GObject-CRITICAL **: g_object_set_property: assertion `G_IS_VALUE (value)' failed (reliafree:32523): GLib-GObject-CRITICAL **: g_value_unset: assertion `G_IS_VALUE (value)' failed (reliafree:32523): Gtk-CRITICAL **: gtk_tree_model_get_value: assertion `GTK_IS_TREE_MODEL (tree_model)' failed (reliafree:32523): GLib-GObject-CRITICAL **: g_object_set_property: assertion `G_IS_VALUE (value)' failed (reliafree:32523): GLib-GObject-CRITICAL **: g_value_unset: assertion `G_IS_VALUE (value)' failed (reliafree:32523): Gtk-CRITICAL **: gtk_tree_model_get_value: assertion `GTK_IS_TREE_MODEL (tree_model)' failed (reliafree:32523): GLib-GObject-CRITICAL **: g_object_set_property: assertion `G_IS_VALUE (value)' failed (reliafree:32523): GLib-GObject-CRITICAL **: g_value_unset: assertion `G_IS_VALUE (value)' failed (reliafree:32523): Gtk-CRITICAL **: gtk_tree_model_get_iter: assertion `GTK_IS_TREE_MODEL (tree_model)' failed (reliafree:32523): Gtk-CRITICAL **: gtk_tree_row_reference_new_proxy: assertion `GTK_IS_TREE_MODEL (model)' failed (reliafree:32523): Gtk-CRITICAL **: gtk_tree_model_get_iter: assertion `GTK_IS_TREE_MODEL (tree_model)' failed (reliafree:32523): Gtk-CRITICAL **: gtk_tree_model_get_value: assertion `GTK_IS_TREE_MODEL (tree_model)' failed (reliafree:32523): GLib-GObject-CRITICAL **: g_object_set_property: assertion `G_IS_VALUE (value)' failed (reliafree:32523): GLib-GObject-CRITICAL **: g_value_unset: assertion `G_IS_VALUE (value)' failed (reliafree:32523): Gtk-CRITICAL **: gtk_tree_model_get_value: assertion `GTK_IS_TREE_MODEL (tree_model)' failed (reliafree:32523): GLib-GObject-CRITICAL **: g_object_set_property: assertion `G_IS_VALUE (value)' failed (reliafree:32523): GLib-GObject-CRITICAL **: g_value_unset: assertion `G_IS_VALUE (value)' failed (reliafree:32523): Gtk-CRITICAL **: gtk_tree_model_get_value: assertion `GTK_IS_TREE_MODEL (tree_model)' failed (reliafree:32523): GLib-GObject-CRITICAL **: g_object_set_property: assertion `G_IS_VALUE (value)' failed (reliafree:32523): GLib-GObject-CRITICAL **: g_value_unset: assertion `G_IS_VALUE (value)' failed (reliafree:32523): Gtk-CRITICAL **: gtk_tree_model_get_value: assertion `GTK_IS_TREE_MODEL (tree_model)' failed (reliafree:32523): GLib-GObject-CRITICAL **: g_object_set_property: assertion `G_IS_VALUE (value)' failed (reliafree:32523): GLib-GObject-CRITICAL **: g_value_unset: assertion `G_IS_VALUE (value)' failed (reliafree:32523): Gtk-CRITICAL **: gtk_tree_model_get_value: assertion `GTK_IS_TREE_MODEL (tree_model)' failed (reliafree:32523): GLib-GObject-CRITICAL **: g_object_set_property: assertion `G_IS_VALUE (value)' failed (reliafree:32523): GLib-GObject-CRITICAL **: g_value_unset: assertion `G_IS_VALUE (value)' failed (reliafree:32523): Gtk-CRITICAL **: gtk_tree_model_get_value: assertion `GTK_IS_TREE_MODEL (tree_model)' failed (reliafree:32523): GLib-GObject-CRITICAL **: g_object_set_property: assertion `G_IS_VALUE (value)' failed (reliafree:32523): GLib-GObject-CRITICAL **: g_value_unset: assertion `G_IS_VALUE (value)' failed (reliafree:32523): Gtk-CRITICAL **: gtk_tree_model_get_value: assertion `GTK_IS_TREE_MODEL (tree_model)' failed (reliafree:32523): GLib-GObject-CRITICAL **: g_object_set_property: assertion `G_IS_VALUE (value)' failed (reliafree:32523): GLib-GObject-CRITICAL **: g_value_unset: assertion `G_IS_VALUE (value)' failed (reliafree:32523): Gtk-CRITICAL **: gtk_tree_model_get_value: assertion `GTK_IS_TREE_MODEL (tree_model)' failed (reliafree:32523): GLib-GObject-CRITICAL **: g_object_set_property: assertion `G_IS_VALUE (value)' failed (reliafree:32523): GLib-GObject-CRITICAL **: g_value_unset: assertion `G_IS_VALUE (value)' failed (reliafree:32523): Gtk-CRITICAL **: gtk_tree_model_get_value: assertion `GTK_IS_TREE_MODEL (tree_model)' failed (reliafree:32523): GLib-GObject-CRITICAL **: g_object_set_property: assertion `G_IS_VALUE (value)' failed (reliafree:32523): GLib-GObject-CRITICAL **: g_value_unset: assertion `G_IS_VALUE (value)' failed (reliafree:32523): Gtk-CRITICAL **: gtk_tree_model_get_iter: assertion `GTK_IS_TREE_MODEL (tree_model)' failed (reliafree:32523): Gtk-CRITICAL **: gtk_tree_model_unref_node: assertion `GTK_IS_TREE_MODEL (tree_model)' failed (reliafree:32523): Gtk-CRITICAL **: gtk_tree_model_iter_next: assertion `GTK_IS_TREE_MODEL (tree_model)' failed (reliafree:32523): GLib-GObject-WARNING **: instance with invalid (NULL) class pointer (reliafree:32523): GLib-GObject-CRITICAL **: g_signal_handlers_disconnect_matched: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed (reliafree:32523): GLib-GObject-WARNING **: instance with invalid (NULL) class pointer (reliafree:32523): GLib-GObject-CRITICAL **: g_signal_handlers_disconnect_matched: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed (reliafree:32523): GLib-GObject-WARNING **: instance with invalid (NULL) class pointer (reliafree:32523): GLib-GObject-CRITICAL **: g_signal_handlers_disconnect_matched: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed (reliafree:32523): GLib-GObject-WARNING **: instance with invalid (NULL) class pointer (reliafree:32523): GLib-GObject-CRITICAL **: g_signal_handlers_disconnect_matched: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed (reliafree:32523): GLib-GObject-WARNING **: instance with invalid (NULL) class pointer (reliafree:32523): GLib-GObject-CRITICAL **: g_signal_handlers_disconnect_matched: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed (reliafree:32523): GLib-GObject-CRITICAL **: g_object_unref: assertion `G_IS_OBJECT (object)' failed Using gdb, I've found that they're not being thrown until the program returns to the main loop function g_main_loop_run in gmain.c at (lines 2880-2881) while (loop->is_running) g_main_context_iterate (loop->context, TRUE, TRUE, self); and then only after 2 or 3 dozen loops. This is the callback function for the system treeview: ****************************** CODE ****************************** void system_tree_clicked_cb( GtkTreeView *tree, GdkEventButton *butt ) { GtkTreeIter iter; GtkTreePath *path; GtkTreeSelection *selection; SELECTED_TREE = 1; switch ( butt->button ) { case (1): selection = gtk_tree_view_get_selection( GTK_TREE_VIEW( sys_tree ) ); if (gtk_tree_selection_get_selected( selection, NULL, &iter )) { path = gtk_tree_model_get_path( GTK_TREE_MODEL( sys_store ), &iter ); /* Get the selected item's information from the tree. */ if (gtk_tree_model_get_iter( GTK_TREE_MODEL( sys_store ), &iter, path ) ) { read_system_tree( GTK_TREE_MODEL( sys_store ), &path, &iter, NULL ); if ( ! populate_system_general_tab( pSystemItem ) ) { printf("Error populating the general tab for Assembly %d.\n", pSystemItem.assemblyID ); } if ( ! populate_part_tree( pSystemItem.assemblyID ) ) { printf("Error populating the parts list for Assembly %d.\n", pSystemItem.assemblyID ); } } } break; <SNIP> (Just the other three buttons that are unused ATM) } return; } *************************** END CODE *************************** This is the function that retrieves the components from the MySQL database and populates the listview: ****************************** CODE ****************************** gboolean populate_part_tree( gint id ) { GtkTreeIter iter; gchar query[60]; MYSQL_RES *result; MYSQL_ROW row=NULL; gtk_list_store_clear( GTK_LIST_STORE ( part_store ) ); switch ( SELECTED_TREE ) { case (1): sprintf( query,"SELECT * FROM PARTS WHERE AssemblyID=%u \ ORDER BY PartID", id ); break; default: printf( "Error: Unknown tree selected!\n" ); break; } mysql_real_query( &mysqlconn, query, (unsigned int)strlen( query ) ); result = mysql_store_result( &mysqlconn ); if( result ) { printf( "Selected %lu rows for parts list.\n", (unsigned long)mysql_affected_rows( &mysqlconn ) ); } else { fprintf( stderr, "Error %d: %s\n", mysql_errno( &mysqlconn ), mysql_error( &mysqlconn ) ); return FALSE; } if( mysql_num_rows( result ) == 0 ) { gtk_list_store_append( GTK_LIST_STORE( part_store ), &iter ); gtk_list_store_set( GTK_LIST_STORE( part_store ), &iter, COLUMN_PN, "Part Num", COLUMN_REFDES, "Ref Des", COLUMN_CLASS, "Class", COLUMN_SUBCLASS, "Subclass", COLUMN_QUANT, (gint) 1, COLUMN_HR, (gdouble) 0.0, COLUMN_ID, (gint) 0, -1); } else { while ( ( row = mysql_fetch_row( result ) ) ) { gtk_list_store_append ( GTK_LIST_STORE( part_store ), &iter ); gtk_list_store_set( GTK_LIST_STORE( part_store ), &iter, COLUMN_PN, row[6], COLUMN_REFDES, row[7], COLUMN_CLASS, row[3], COLUMN_SUBCLASS, row[4], COLUMN_QUANT, atoi( row[19] ), COLUMN_HR, atof( row[34] ), COLUMN_ID, atoi( row[0] ), -1); } } mysql_free_result( result ); part_model = GTK_TREE_MODEL( part_store ); gtk_tree_view_set_model( GTK_TREE_VIEW( part_tree ), part_model ); g_object_unref( part_model ); gtk_tree_view_expand_all( GTK_TREE_VIEW( part_tree ) ); return TRUE; *************************** END CODE ************************** These are the applicable sections from the Glade file for the two treeviews. Let me know if you need more. ****************************** CODE ***************************** <widget class="GtkScrolledWindow" id="system_tree_scroll_window"> <property name="width_request">600</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="shadow_type">GTK_SHADOW_IN</property> <child> <widget class="GtkTreeView" id="tree_System"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="tooltip" translatable="yes">Indentured display of the currently selected system tree...</property> <property name="enable_tree_lines">True</property> </widget> </child> </widget> <SNIP> <widget class="GtkScrolledWindow" id="part_list_scroll_window"> <property name="width_request">250</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="shadow_type">GTK_SHADOW_IN</property> <child> <widget class="GtkTreeView" id="tree_Parts"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="tooltip" translatable="yes">List of parts for the currently selected assembly in the system tree ...</property> <property name="enable_grid_lines">GTK_TREE_VIEW_GRID_LINES_HORIZONTAL</property> </widget> *************************** END CODE ************************** -- Andrew "Weibullguy" Rowland Reliability & Safety Engineer [EMAIL PROTECTED] http://webpages.charter.net/weibullguy http://reliafree.sourceforge.net
_______________________________________________ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list