g_object_get_data changed data association
dear sir or madam, i am developing applications with GTK+ and have some problem, following is some digest of my code. = store = gtk_list_store_new(NUMS_MAX_FORCE, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); g_object_set_data(G_OBJECT(window), staad_max_force_store, store); printf(## start store memory=%p\n, g_object_get_data(G_OBJECT(window), staad_max_force_store)); printf(## is store=%d\n, GTK_IS_LIST_STORE(store)); printf(## name store=%s\n, G_OBJECT_TYPE_NAME(store)); = i install a list store by above codes. then i want to update the list store somewhere later. = /* for debug */ if(g_object_get_data(G_OBJECT(widget), staad_max_force_store) == NULL) printf(NULL\n); else { printf(store memory=%p\n, g_object_get_data(G_OBJECT(widget), staad_max_force_store)); printf(## name store=%s\n, G_OBJECT_TYPE_NAME(g_object_get_data(G_OBJECT(widget), staad_max_force_store))); } while(curr_data) { i = 0; curr_item = curr_data-content; while(curr_item) { gtk_list_store_append(store, iter); if(++i == 1) { gtk_list_store_set(store, iter, MAX_FORCE_MEM_NUM, (local1 = char_to_utf8 (curr_data-mem_num)), MAX_FORCE_ITEM, (local2 = char_to_utf8 (curr_item-item)), MAX_FORCE_FX, (local3 = char_to_utf8 (curr_item-FX)), MAX_FORCE_FY, (local4 = char_to_utf8 (curr_item-FY)), MAX_FORCE_FZ, (local5 = char_to_utf8 (curr_item-FZ)), MAX_FORCE_MX, (local6 = char_to_utf8 (curr_item-MX)), MAX_FORCE_MY, (local7 = char_to_utf8 (curr_item-MY)), MAX_FORCE_MZ, (local8 = char_to_utf8 (curr_item-MZ)), -1); g_free(local8); } else gtk_list_store_set(store, iter, MAX_FORCE_ITEM, (local1 = char_to_utf8 (curr_item-item)), MAX_FORCE_FX, (local2 = char_to_utf8 (curr_item-FX)), MAX_FORCE_FY, (local3 = char_to_utf8 (curr_item-FY)), MAX_FORCE_FZ, (local4 = char_to_utf8 (curr_item-FZ)), MAX_FORCE_MX, (local5 = char_to_utf8 (curr_item-MX)), MAX_FORCE_MY, (local6 = char_to_utf8 (curr_item-MY)), MAX_FORCE_MZ, (local7 = char_to_utf8 (curr_item-MZ)), -1); g_free(local1); g_free(local2); g_free(local3); g_free(local4); g_free(local5); g_free(local6); g_free(local7); curr_item = curr_item-next; } curr_data = curr_data-next; } = after using g_object_get_data(G_OBJECT(widget), staad_max_force_store), i hope to get the store i defined at the beginning. but in fact i didn't get the list store, but something else -- instead of a list store. of course, the store can't be updated. from my debug info, the data gotten from g_object_get_data(G_OBJECT(widget), staad_max_force_store) has the same memory address with that defined g_object_set_data(G_OBJECT(window), staad_max_force_store, store);, but G_OBJECT_TYPE_NAME(store) changed. so, i would like to know if there is hint to be used for g_object_get_data and g_object_set_data. what could be the problem? p.s.: in my program, there is public area -- a gtkbox to be used by all sub-program. if i always run the above sub-program, the problem mentioned above won't come up. but, if i run the above sub-program first, then change to another sub-program, and later i come back to the above sub-program, the above problem comes up. during this process, i used gtk_widget_destroy to destroy the widget of the first sub-program in the public area and build the widget for the next coming sub-program. i am wondering if the gtk_widget_destroy disturbs the data associations table. i think my question is a little confusing because i could not describe the question clearly enough. i do hope you could read my words above and try to give me some suggestion. thanks a lot. looking forward to your reply. best regards, wu yu _ Keep your kids safer online with Windows Live Family Safety. http://www.windowslive.com/family_safety/overview.html?ocid=TXT_TAGLM_WL_family_safety_072008 ___ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
Re: XML and treeviews
Couldn't you just add another row in the TreeStore for the closing tag? If root is 0 and node is 0:0, then inserting a row after node with parent root would be 0:1. The problem doing it in this way is that I've to attach an handler to every collapse/expand event and I've to show/hide a line for each of those events, I can do it but I thought there was a cleaner solution like an attribute of the CellRenderer to change the indent level of a given column item. -- Ing. Gabriele Greco, DARTS Engineering Tel: +39-0105761240 Fax: +39-0105760224 s-mail: Via G.T. Invrea 14 - 16129 GENOVA (ITALY) ___ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
Re: g_object_get_data changed data association
Hi, Check that your list store is properly refcounted, is there any reason why the list store may have been destroyed previous to this call ? Cheers, -Tristan On Fri, Jul 25, 2008 at 10:41 AM, YU WU [EMAIL PROTECTED] wrote: dear sir or madam, i am developing applications with GTK+ and have some problem, following is some digest of my code. = store = gtk_list_store_new(NUMS_MAX_FORCE, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); g_object_set_data(G_OBJECT(window), staad_max_force_store, store); printf(## start store memory=%p\n, g_object_get_data(G_OBJECT(window), staad_max_force_store)); printf(## is store=%d\n, GTK_IS_LIST_STORE(store)); printf(## name store=%s\n, G_OBJECT_TYPE_NAME(store)); = i install a list store by above codes. then i want to update the list store somewhere later. = /* for debug */ if(g_object_get_data(G_OBJECT(widget), staad_max_force_store) == NULL) printf(NULL\n); else { printf(store memory=%p\n, g_object_get_data(G_OBJECT(widget), staad_max_force_store)); printf(## name store=%s\n, G_OBJECT_TYPE_NAME(g_object_get_data(G_OBJECT(widget), staad_max_force_store))); } while(curr_data) { i = 0; curr_item = curr_data-content; while(curr_item) { gtk_list_store_append(store, iter); if(++i == 1) { gtk_list_store_set(store, iter, MAX_FORCE_MEM_NUM, (local1 = char_to_utf8 (curr_data-mem_num)), MAX_FORCE_ITEM, (local2 = char_to_utf8 (curr_item-item)), MAX_FORCE_FX, (local3 = char_to_utf8 (curr_item-FX)), MAX_FORCE_FY, (local4 = char_to_utf8 (curr_item-FY)), MAX_FORCE_FZ, (local5 = char_to_utf8 (curr_item-FZ)), MAX_FORCE_MX, (local6 = char_to_utf8 (curr_item-MX)), MAX_FORCE_MY, (local7 = char_to_utf8 (curr_item-MY)), MAX_FORCE_MZ, (local8 = char_to_utf8 (curr_item-MZ)), -1); g_free(local8); } else gtk_list_store_set(store, iter, MAX_FORCE_ITEM, (local1 = char_to_utf8 (curr_item-item)), MAX_FORCE_FX, (local2 = char_to_utf8 (curr_item-FX)), MAX_FORCE_FY, (local3 = char_to_utf8 (curr_item-FY)), MAX_FORCE_FZ, (local4 = char_to_utf8 (curr_item-FZ)), MAX_FORCE_MX, (local5 = char_to_utf8 (curr_item-MX)), MAX_FORCE_MY, (local6 = char_to_utf8 (curr_item-MY)), MAX_FORCE_MZ, (local7 = char_to_utf8 (curr_item-MZ)), -1); g_free(local1); g_free(local2); g_free(local3); g_free(local4); g_free(local5); g_free(local6); g_free(local7); curr_item = curr_item-next; } curr_data = curr_data-next; } = after using g_object_get_data(G_OBJECT(widget), staad_max_force_store), i hope to get the store i defined at the beginning. but in fact i didn't get the list store, but something else -- instead of a list store. of course, the store can't be updated. from my debug info, the data gotten from g_object_get_data(G_OBJECT(widget), staad_max_force_store) has the same memory address with that defined g_object_set_data(G_OBJECT(window), staad_max_force_store, store);, but G_OBJECT_TYPE_NAME(store) changed. so, i would like to know if there is hint to be used for g_object_get_data and g_object_set_data. what could be the problem? p.s.: in my program, there is public area -- a gtkbox to be used by all sub-program. if i always run the above sub-program, the problem mentioned above won't come up. but, if i run the above sub-program first, then change to another sub-program, and later i come back to the above sub-program, the above problem comes up. during this process, i used gtk_widget_destroy to destroy the widget of the first sub-program in the public area and build the widget for the next coming sub-program. i am wondering if the gtk_widget_destroy disturbs the data associations table. i think my question is a little confusing because i could not describe the question clearly enough. i do hope you could read my words above and try to give me some suggestion. thanks a lot. looking forward to your reply. best regards, wu yu _ Keep your kids safer online with Windows Live Family Safety. http://www.windowslive.com/family_safety/overview.html?ocid=TXT_TAGLM_WL_family_safety_072008 ___ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list ___ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list