Re: Get column no. of edited cell.
On 06/02/13 00:27, Arnel A. Borja wrote: On Sunday, 02 June, 2013 01:44 AM, dE wrote: I've set the editable property of GtkCellRenderer to true, and set the call back for the edited signal. This particular signal tells the node/row in which the edit has occurred, but not the column/filed. How can I get that? Thanks! Use a different renderer for each column. Then check in the edited signal which renderer was edited. I'm trying this out, but isnt this also possible with gtk_tree_view_get_cursor clubbed with gtk_tree_view_column_get_sort_column_id. Cause I'm getting segfault with -- gtk_tree_view_get_cursor ( detect_object ( DataDisplay, build_object ), tree_path, focus_column ); Where -- GtkTreeViewColumn **focus_column; GtkTreePath **tree_path; ___ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
Re: Get column no. of edited cell.
Another possibility would be to use g_object_set_data to give the renderer a column number, and g_object_get_data in the handler. On 2 June 2013 07:15, dE de.tec...@gmail.com wrote: On 06/02/13 00:27, Arnel A. Borja wrote: On Sunday, 02 June, 2013 01:44 AM, dE wrote: I've set the editable property of GtkCellRenderer to true, and set the call back for the edited signal. This particular signal tells the node/row in which the edit has occurred, but not the column/filed. How can I get that? Thanks! Use a different renderer for each column. Then check in the edited signal which renderer was edited. I'm trying this out, but isnt this also possible with gtk_tree_view_get_cursor clubbed with gtk_tree_view_column_get_sort_** column_id. Cause I'm getting segfault with -- gtk_tree_view_get_cursor ( detect_object ( DataDisplay, build_object ), tree_path, focus_column ); Where -- GtkTreeViewColumn **focus_column; GtkTreePath **tree_path; __**_ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org https://mail.gnome.org/**mailman/listinfo/gtk-app-**devel-listhttps://mail.gnome.org/mailman/listinfo/gtk-app-devel-list ___ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
Re: Get column no. of edited cell.
On 06/02/13 12:49, Arnel A. Borja wrote: On Sunday, 02 June, 2013 02:15 PM, dE wrote: I'm trying this out, but isnt this also possible with gtk_tree_view_get_cursor clubbed with gtk_tree_view_column_get_sort_column_id. Cause I'm getting segfault with -- gtk_tree_view_get_cursor ( detect_object ( DataDisplay, build_object ), tree_path, focus_column ); Where -- GtkTreeViewColumn **focus_column; GtkTreePath **tree_path; This is what the documentation says about the parameters of gtk_tree_view_get_cursor (https://developer.gnome.org/gtk3/stable/GtkTreeView.html#gtk-tree-view-get-cursor): /| tree_view|/ : A GtkTreeView /|path|/ : A pointer to be filled with the current cursor path, orNULL.*[**out**]*[transfer full][allow-none] /|focus_column|/: A pointer to be filled with the current focus column, orNULL.*[**out**]*[transfer full][allow-none] Noticed the [out] in path and focus column? That means you have to pass the pointers to a (GtkTreeViewColumn *) variable and a (GtkTreePath *) variable, instead of passing a (GtkTreeViewColumn **) variable and a (GtkTreePath **) variable. You may do something like this then: GtkTreeViewColumn *focus_column; GtkTreePath *tree_path; gtk_tree_view_get_cursor ( detect_object ( DataDisplay, build_object ), tree_path, focus_column ); Now focus_column and tree_path contains the currently focused column and path to its row, respectively. Yes, now it works. Thanks! However, it appears that this is not something suitable for the task, since this particular event edited (GtkCellRender) is triggered after the editing has finished. As a result, I get -1 with gtk_tree_view_column_get_sort_column_id (focus_column). So I've tried out your original technique, but I'm having some issues there -- I'm comparing the passed over GtkCellRenderer * with all renderers as such -- while ( mod_renderer != *(renderer + i) ) i++; Where mod_renderer is the passed over GtkCellRenderer and renderer is -- GtkCellRenderer **renderer; and allocated memory via -- GtkCellRenderer **renderer = g_malloc (sizeof (GtkCellRenderer*) * 2); renderer[0] = gtk_cell_renderer_text_new (); renderer[1] = gtk_cell_renderer_text_new (); I'm getting sefault in the while loop. ___ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
Re: Get column no. of edited cell.
On Sunday, 02 June, 2013 03:44 PM, dE wrote: Referring to -- https://developer.gnome.org/gtk3/3.7/GtkCellRenderer.html I didn't get any such field. It'll be a breakthrough if it's there. That function is in GObject, because GtkCellRenderer is a descendant of GObject. See Object Hierarchy in https://developer.gnome.org/gtk3/3.7/GtkCellRenderer.htm, then click GObject. ___ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
Ctrl key, event state value, XIM vs IBus
Hi, I have a program that connects to the key pressed event. I am getting different event-state value for Ctrl, depending on the input method. - XIM gives 4 - IBus gives 33554436 is this how it is meant to be? How should I process it? GDK_CONTROL_MASK catches only the XIM value (Same for Alt) ___ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
Re: Get column no. of edited cell.
On Sunday, 02 June, 2013 03:35 PM, dE wrote: On 06/02/13 12:49, Arnel A. Borja wrote: On Sunday, 02 June, 2013 02:15 PM, dE wrote: I'm trying this out, but isnt this also possible with gtk_tree_view_get_cursor clubbed with gtk_tree_view_column_get_sort_column_id. Cause I'm getting segfault with -- gtk_tree_view_get_cursor ( detect_object ( DataDisplay, build_object ), tree_path, focus_column ); Where -- GtkTreeViewColumn **focus_column; GtkTreePath **tree_path; This is what the documentation says about the parameters of gtk_tree_view_get_cursor (https://developer.gnome.org/gtk3/stable/GtkTreeView.html#gtk-tree-view-get-cursor): /| tree_view|/ : A GtkTreeView /|path|/ : A pointer to be filled with the current cursor path, orNULL.*[**out**]*[transfer full][allow-none] /|focus_column|/: A pointer to be filled with the current focus column, orNULL.*[**out**]*[transfer full][allow-none] Noticed the [out] in path and focus column? That means you have to pass the pointers to a (GtkTreeViewColumn *) variable and a (GtkTreePath *) variable, instead of passing a (GtkTreeViewColumn **) variable and a (GtkTreePath **) variable. You may do something like this then: GtkTreeViewColumn *focus_column; GtkTreePath *tree_path; gtk_tree_view_get_cursor ( detect_object ( DataDisplay, build_object ), tree_path, focus_column ); Now focus_column and tree_path contains the currently focused column and path to its row, respectively. Yes, now it works. Thanks! However, it appears that this is not something suitable for the task, since this particular event edited (GtkCellRender) is triggered after the editing has finished. As a result, I get -1 with gtk_tree_view_column_get_sort_column_id (focus_column). So I've tried out your original technique, but I'm having some issues there -- I'm comparing the passed over GtkCellRenderer * with all renderers as such -- while ( mod_renderer != *(renderer + i) ) i++; Where mod_renderer is the passed over GtkCellRenderer and renderer is -- GtkCellRenderer **renderer; and allocated memory via -- GtkCellRenderer **renderer = g_malloc (sizeof (GtkCellRenderer*) * 2); renderer[0] = gtk_cell_renderer_text_new (); renderer[1] = gtk_cell_renderer_text_new (); I'm getting sefault in the while loop. Your comparing a GtkCellRenderer and a GtkCellRendererText here. Try casting like this: while (GTK_CELL_RENDERER (mod_renderer) != GTK_CELL_RENDERER (renderer[i])) i++; Or just store them as GtkCellRendererText: GtkCellRendererText **renderer = g_malloc (sizeof (GtkCellRendererText*) * 2); renderer[0] = gtk_cell_renderer_text_new (); renderer[1] = gtk_cell_renderer_text_new (); But still, this is quite dangerous, since mod_renderer may really not in renderer. You may use if/else blocks: /* mod_renderer and renderer[i] should be GtkCellRendererText */ if (mod_renderer == renderer[0]) { /* renderer[0] edited */ } else if (mod_renderer == renderer[1]) { /* renderer[1] edited */ } Though usually when I want to do something like this, I would connect to each cell renderer, with each one have their own callback. Something like this: renderer1 = gtk_cell_renderer_text_new (); g_signal_connect (renderer1, edited, on_renderer1_edited, my_data); renderer2 = gtk_cell_renderer_text_new (); g_signal_connect (renderer2, edited, on_renderer2_edited, my_data); Then I'll just do what I need to do inside the two callbacks. You may also want to read this tutorial about GtkTreeView's: http://scentric.net/tutorial/ ___ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
Re: Get column no. of edited cell.
On 06/02/13 14:30, Arnel A. Borja wrote: On Sunday, 02 June, 2013 03:35 PM, dE wrote: On 06/02/13 12:49, Arnel A. Borja wrote: On Sunday, 02 June, 2013 02:15 PM, dE wrote: I'm trying this out, but isnt this also possible with gtk_tree_view_get_cursor clubbed with gtk_tree_view_column_get_sort_column_id. Cause I'm getting segfault with -- gtk_tree_view_get_cursor ( detect_object ( DataDisplay, build_object ), tree_path, focus_column ); Where -- GtkTreeViewColumn **focus_column; GtkTreePath **tree_path; This is what the documentation says about the parameters of gtk_tree_view_get_cursor (https://developer.gnome.org/gtk3/stable/GtkTreeView.html#gtk-tree-view-get-cursor): /| tree_view|/ : A GtkTreeView /|path|/ : A pointer to be filled with the current cursor path, orNULL.*[**out**]*[transfer full][allow-none] /|focus_column|/: A pointer to be filled with the current focus column, orNULL.*[**out**]*[transfer full][allow-none] Noticed the [out] in path and focus column? That means you have to pass the pointers to a (GtkTreeViewColumn *) variable and a (GtkTreePath *) variable, instead of passing a (GtkTreeViewColumn **) variable and a (GtkTreePath **) variable. You may do something like this then: GtkTreeViewColumn *focus_column; GtkTreePath *tree_path; gtk_tree_view_get_cursor ( detect_object ( DataDisplay, build_object ), tree_path, focus_column ); Now focus_column and tree_path contains the currently focused column and path to its row, respectively. Yes, now it works. Thanks! However, it appears that this is not something suitable for the task, since this particular event edited (GtkCellRender) is triggered after the editing has finished. As a result, I get -1 with gtk_tree_view_column_get_sort_column_id (focus_column). So I've tried out your original technique, but I'm having some issues there -- I'm comparing the passed over GtkCellRenderer * with all renderers as such -- while ( mod_renderer != *(renderer + i) ) i++; Where mod_renderer is the passed over GtkCellRenderer and renderer is -- GtkCellRenderer **renderer; and allocated memory via -- GtkCellRenderer **renderer = g_malloc (sizeof (GtkCellRenderer*) * 2); renderer[0] = gtk_cell_renderer_text_new (); renderer[1] = gtk_cell_renderer_text_new (); I'm getting sefault in the while loop. Your comparing a GtkCellRenderer and a GtkCellRendererText here. Try casting like this: while (GTK_CELL_RENDERER (mod_renderer) != GTK_CELL_RENDERER (renderer[i])) i++; Or just store them as GtkCellRendererText: GtkCellRendererText **renderer = g_malloc (sizeof (GtkCellRendererText*) * 2); renderer[0] = gtk_cell_renderer_text_new (); renderer[1] = gtk_cell_renderer_text_new (); But still, this is quite dangerous, since mod_renderer may really not in renderer. You may use if/else blocks: /* mod_renderer and renderer[i] should be GtkCellRendererText */ if (mod_renderer == renderer[0]) { /* renderer[0] edited */ } else if (mod_renderer == renderer[1]) { /* renderer[1] edited */ } Though usually when I want to do something like this, I would connect to each cell renderer, with each one have their own callback. Something like this: renderer1 = gtk_cell_renderer_text_new (); g_signal_connect (renderer1, edited, on_renderer1_edited, my_data); renderer2 = gtk_cell_renderer_text_new (); g_signal_connect (renderer2, edited, on_renderer2_edited, my_data); Then I'll just do what I need to do inside the two callbacks. You may also want to read this tutorial about GtkTreeView's: http://scentric.net/tutorial/ YES GOT IT!! It was g_object_get/set_data. Although I did view that tutorial, but not in that much detail. Thank you so much!! ___ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
GtkBox vs GtkGrid
Am I missing something? If I use GtkBox it seems that once I add a child I can't get access to it's address any more (GtkWidget *) So if I create a box with some things in it in glade I really can't do much with them. (Other than giving them specific names and using the builder object to look them up) GtkGrid seems to have more functions... maybe that would be better to use... tom ___ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list