LINUX.ORG.RU

GtkTreeView


0

0

Вот вообщем так как в gtk+-2.0 GtkCList оказался deprecated - приходиться разбираться в сабже.

Вообщем все с ним понятно, создал модель для сабжа, создал рендереры - все добавил все значения - все правильно - отображаеться на ура - собственно только вот одна беда - там есть рендерер который должен а-ля checkbox-ов отображать, так вот он их отображает но проблема в том что они не активны почему то - те изменять их никак, только если вносить значения TRUE - а мне их собственно в гуе надо менять - вот они гады и не меняються - кто сталкивался с данным косяком? как победить?

Если надо код - могу выложить сюда же.

да вот код - без него напряг ответить будет - где косяк ?

/* some enum for list */
enum
{
    NUMBER_COLUMN,
	TEXT_COLUMN,
	CHECKED_COLUMN,
	N_COLUMNS
};

/*Create the model for test*/

GtkListStore* new_test_model(void)
{
    GtkListStore *model=NULL;
    GtkTreeIter iter;
    int i;
    /*new model*/
    model=gtk_list_store_new(N_COLUMNS,G_TYPE_INT,G_TYPE_STRING,G_TYPE_BOOLEAN);
    /*fill it*/
    for(i=0;i<10;i++)
    {
	gtk_list_store_append(model,&iter);
	/*set values*/
	gtk_list_store_set(model, &iter,NUMBER_COLUMN,i,TEXT_COLUMN,"test",CHECKED_COLUMN,FALSE,-1);

    }
    return model;
}

GtkWidget* new_test_view(void)
{
    GtkListStore *list_model=new_test_model();
    GtkWidget *list=NULL;
    GtkCellRenderer *renderer;
    GtkTreeViewColumn *column;
    /*so create widget*/
    list=gtk_tree_view_new_with_model(GTK_TREE_MODEL(list_model));
    /*create renderers*/
    /*number column renderer*/
    renderer=gtk_cell_renderer_text_new();
    column=gtk_tree_view_column_new_with_attributes("Number",renderer,&quo
t;text",NUMBER_COLUMN,NULL);
    gtk_tree_view_append_column(GTK_TREE_VIEW(list),column);
    /*text column renderer*/
    renderer=gtk_cell_renderer_text_new();
    column=gtk_tree_view_column_new_with_attributes("My text",renderer,"text",TEXT_COLUMN,NULL);
    gtk_tree_view_append_column(GTK_TREE_VIEW(list),column);
    /*checked column rebderer*/
    renderer=gtk_cell_renderer_toggle_new();
    column=gtk_tree_view_column_new_with_attributes("Number",renderer,&quo
t;active",CHECKED_COLUMN,NULL);
    gtk_tree_view_append_column(GTK_TREE_VIEW(list),column);
    /*show widget*/
    gtk_widget_show(list);
    return list;
}

вот собственно потом Я пихаю получившийся виджет в контейнер - в моем случае это scrolled window - и все вижу отлично, только проблема такая - чек баттоны не измнеяються при нажатии - в чем проблема - какой атрибут выставлять еще должен что ли?

alphex_kaanoken ★★★
() автор топика
Ответ на: комментарий от alphex_kaanoken

Я совсем не спец в программировании под GTK (да и в объектном - тоже). Но есть некая непонятность: в листинге у тебя часть кода в "&quote" ушло. Попробуй соответствющие символы переписать - возможно, что компилер попросту неправильно воспринимает эти символы и компилит с ошибками.

R00T
()
Ответ на: комментарий от R00T

да не код верный - там вся фитча в том что Я немного недогуглировал а именно не напоролся на некий мануал - http://scentric.net/tutorial/sec-editable-cells-toggle.html там написано примерно следующее - мол если вы хотите чтобы оно было релактируемым то вешайте на него некий вызов, при котором вы сами будете менять тип, те надо повесить вызов и написать простую ф-цию - которая смотрит значение - если оно FALSE то делает TRUE и соотвественно наоборот - вообщем все ясно - называеться захотел Я слишком просто все - а вот фигу - так вот надо делать - ща приделаю и посмотрю что там как.

alphex_kaanoken ★★★
() автор топика
Ответ на: комментарий от alphex_kaanoken

> ща приделаю и посмотрю что там как.

Ну смотри. Вообще это реализовано в многих примерах, хотя бы тот же gtk-demo :)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.