[Glade-users] liststore with GObjects
- From: alexey.kurochkin at pathfinderlwd.com (Alexey Kurochkin)
- Subject: [Glade-users] liststore with GObjects
- Date: Thu, 20 Aug 2009 11:51:47 -0500
On Thu, 2009-08-20 at 12:04 -0400, Tristan Van Berkom wrote:
On Thu, Aug 20, 2009 at 11:54 AM, Alexey
Kurochkin<alexey.kurochkin at pathfinderlwd.com> wrote:
[...]
Yes, note that GObjects in the liststore are be passed by
reference (i.e. the value of an object column is the id/name
of the referred object in the file... the same object can show
up in multiple rows and columns...).
If you mean replacing <col id="0" /> which Glade generates for GObject
column with something like this:
<col id="0">adjustment1</col>
then it does not work. It segfaults... :(
Does it ? try manually placing the adjustment definition /before/ the
liststore definition.
As a liststore can refer to many different types I doubt its a good
policy to force all
reffered objects to be before the liststore, so, if the above formula
successfully
works around the segfault, I would call it a bug in GTK+ (that the
liststore does
not wait for the "finished" signal to resolve referred objects by id).
Nope, the same result. If you care to look, attached is a simple test.
By the way, I have gtk+2.14.5 source here and do not see liststore
implementing anything called "finished", only custom_tag_start and
custom_tag_end.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: list.ui
Type: application/x-designer
Size: 604 bytes
Desc: not available
Url : http://lists.ximian.com/pipermail/glade-users/attachments/20090820/08fa1c93/attachment.bin
-------------- next part --------------
#include <gtk/gtk.h>
int main (int argc, char **argv)
{
GtkBuilder *builder;
GObject *mylist;
GObject *myadj;
GtkTreeIter iter;
gtk_init (&argc, &argv);
builder = gtk_builder_new();
gtk_builder_add_from_file(builder, "list.ui", NULL);
mylist = gtk_builder_get_object(builder,"liststore1");
myadj = gtk_builder_get_object(builder,"adjustment1");
g_object_ref (mylist);
g_object_ref (myadj);
g_object_unref (builder);
if (GTK_IS_LIST_STORE (mylist))
{
g_message ("List created successfully");
if (GTK_IS_ADJUSTMENT (myadj))
g_message ("Adjustment created successfully");
else
g_warning ("Adjustment was not created");
if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (mylist), &iter))
{
GObject *myobj;
gchar *mytext;
do
{
gtk_tree_model_get (GTK_TREE_MODEL (mylist), &iter,
0, &myobj,
1, &mytext,
-1);
if (myobj)
{
g_message ("Object described as %s is %s", mytext, GTK_IS_ADJUSTMENT
(myobj) ? "indeed adjustment" : "actually nonsense");
g_object_unref (myobj);
}
else
g_warning ("Object described as %s is empty", mytext);
g_free (mytext);
} while (gtk_tree_model_iter_next (GTK_TREE_MODEL (mylist), &iter));
}
else
g_warning ("List is empty");
}
else
g_warning ("List was not created at all");
// gtk_main();
return 0;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]