GTK+ Forums Forum Index GTK+ Forums
Discussion forum for GTK+ and Programming. Ask questions, troubleshoot problems, view and post example code, or express your opinions.
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Another TreeView enigma

 
Post new topic   Reply to topic    GTK+ Forums Forum Index -> GTK+ Programming
Author Message
Peter
Familiar Face


Joined: 10 May 2008
Posts: 48

PostPosted: Tue May 13, 2008 5:48 pm    Post subject: Another TreeView enigma Reply with quote

Guys. I have no idea why one code works and the other does not.
It DOES works when: In the tree creation I don't have g_object_unref(store) but all Gtk variable set to static.
It does NOT work when I have g_object_unref(store) in the fuction.
What is going on ?
Peter

Here is the code:
Code: (C)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100

//  THIS WORKS: it does not have g_object_unref(store);
//  and the Gtk.. variables are set to static

void OkSignalTree(GtkWidget *window, int r) {
    static GtkListStore *store;
    static GtkTreeIter iter;
    static GtkWidget *treeview, *scrolled_win;
    static GtkCellRenderer *renderer;
    static GtkTreeViewColumn *column;
    static GtkTreeSelection *selection;
    static GtkTreeModel *model;
    int i, j, R, Ndata, click = 0, n;
    gchar edtext[80];

        treeview = lookup_widget (window, "Signaltree");
        model = gtk_tree_view_get_model (GTK_TREE_VIEW (treeview));
        Ndata = sizeof(SigNames)/sizeof(SigNames[0]);

        if (r==STARTUP) {
            NumSignals = 0;       
            NumSelSignals = 0;

                   
            store = gtk_list_store_new (N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);

          renderer = gtk_cell_renderer_text_new ();
          column = gtk_tree_view_column_new_with_attributes ("Signal", renderer, "text", SIGNAME_COLUMN, NULL);
            gtk_tree_view_column_set_resizable (column, TRUE);
          gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
         
          renderer = gtk_cell_renderer_text_new ();
          column = gtk_tree_view_column_new_with_attributes ("Selected", renderer, "text", SIGUNIT_COLUMN, NULL);
            gtk_tree_view_column_set_resizable (column, TRUE);
          gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);

            selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
            gtk_tree_selection_set_mode ( selection, GTK_SELECTION_MULTIPLE );

      //
                       
{
                // insert content
           
}
        }       
        gtk_tree_view_set_model(GTK_TREE_VIEW(treeview), GTK_TREE_MODEL(store));
        gtk_widget_show_all(treeview);
}




// THIS ONE DOES NOT WORK!!! it has: g_object_unref(store);
// The Gtk varables are not static as in most examples
void BADSignalTree(GtkWidget *window, int r) {
    GtkListStore *store;
    GtkTreeIter iter;
    GtkWidget *treeview, *scrolled_win;
    GtkCellRenderer *renderer;
    GtkTreeViewColumn *column;
    GtkTreeSelection *selection;
    GtkTreeModel *model;
    int i, j, R, Ndata, click = 0, n;
    gchar edtext[80];

        treeview = lookup_widget (window, "Signaltree");
        model = gtk_tree_view_get_model (GTK_TREE_VIEW (treeview));
        Ndata = sizeof(SigNames)/sizeof(SigNames[0]);

        if (r==STARTUP) {
            NumSignals = 0;       
            NumSelSignals = 0;

                   
            store = gtk_list_store_new (N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);

          renderer = gtk_cell_renderer_text_new ();
          column = gtk_tree_view_column_new_with_attributes ("Signal", renderer, "text", SIGNAME_COLUMN, NULL);
            gtk_tree_view_column_set_resizable (column, TRUE);
          gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
         
          renderer = gtk_cell_renderer_text_new ();
          column = gtk_tree_view_column_new_with_attributes ("Selected", renderer, "text", SIGUNIT_COLUMN, NULL);
            gtk_tree_view_column_set_resizable (column, TRUE);
          gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);

            selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
            gtk_tree_selection_set_mode ( selection, GTK_SELECTION_MULTIPLE );

      //
                       
{
                // insert content
           
}
        }       
        gtk_tree_view_set_model(GTK_TREE_VIEW(treeview), GTK_TREE_MODEL(store));
        g_object_unref(store);
        gtk_widget_show_all(treeview);
}


Back to top
Display posts from previous:   
Post new topic   Reply to topic    GTK+ Forums Forum Index -> GTK+ Programming All times are GMT
Page 1 of 1

 


Powered by phpBB © 2001, 2005 phpBB Group
CodeBB 1.0 Beta 2
Protected by Anti-Spam ACP