John, 

I did my app studing example found with wikbook did for Vikram Ambrose follow 
link:  http://en.wikibooks.org/wiki/GTK%2B_By_Example/Tree_View/DnD

I did test with this examples  change it into many configuretions like 
liststores, treestores and combination of boths.  I am programming into C pure 
not in Python.  But I can understand the similarity between languages.

My problem is a little bit difficult. 

When I was studing these examples I saw vikram plan this app with initial 
conditions that he knew and into this example gtktreemodel won´t change(can not 
be exchanged or column change). But in my app the program will read a data base 
file get a query, work with this query to fulfill a treestore and a list store 
too. The treestore will store a structure (like building material) and 
liststore will store each material individual. When I wanna build some house 
(for example) I need to pick each material in a liststore with dnd and copy to 
a place into another gtktreeview with treestore I will start my construction 
place first the basement, put walls, put ceiling and others. Into gtk program I 
will give me a list of material inside a liststore and a treestore that will 
receive a copy of this materials but showing the parent  relationship. After a 
built a new structure I will save it into data base file again. Many other 
things will be done with this structure like time to build, price and others.

When I start my searchs into internet I found I few material about this 
conditions. Most part of material explains basic dnd app with inicial 
conditions and gtktreeview/gtktreemodel and stores aren´t change in run time 
execution.

After long time with gtk docs I understood one thing. Gtk drag and drop isn´t a 
simple copy/move method! It´s to professionals. Into my case I am a beginner! 
But to become a professional I need to start like a beginner than let´s go. 

To explain my doubt detailed I need you see into link above example of dnd with 
to gtktreeview to understand it. 

There, Vikram plains source and dest into main function like I read in your 
link. Creates a public var with targets that dnd will can change between source 
and destiny widget. Creates a struct that will receive data copied from 
gtktreemodel.  He connects two signals into this example drag_get and 
drag_receive. 

In drag_get it collects selected line , read data of each column and stores 
this data into a temp var struct that he creates at begin of this app. And 
finaly it inform to gtk_selection_data_set this temporary var struct to fulfill 
selection of source widget. 

In drag_receive it copy data from selectiondata struct to a temporary var 
struct and populates other tree/liststore with this datas. This sequence of 
procedures is easy to understand.

I followed this procedure but to become this function general to my case I need 
to work with a generic var which can receive any kind of data and that can be 
created in run time execution. Gtk, Gdk and Glib offer many type of generic 
variables and structures that hold data. I chose gvalue and gvaluearray to hold 
this data. Function gtk_tree_model_get_value holds a GValues that is stored 
into treestore or listore. Another benefit to work gvalue is low level 
definition of var type It is near of glib runtime and you can become 
interprocess very easy to exchange data to another apps out of gtk. 

The problem is into drag-get signal  after I fulfill gvaluearray with data. 
After this I need to attach (copy pointer) to selectiondata structure and I did 
like I sent into first email. But when I take it into drag-received signal. 
Struct is copied but data not. I have a gvaluearray that show the quantity of 
data but when I try to access data they are not there. 

I don´t know what is wrong. All times I used memcpy function it works fine but 
in this case it´s not working. I don´t know if this problem is in drag-get  or 
in drag-received handler. I search in internet about 
Problems to copy structures with variable array like members of a structure in 
runtime. And there are few doc´s too and this could be one solution. But I 
never did some code with this functionality. Another solution is a more 
experience programmer analise my code and discover what I´m doing wrong.

I will appreciate a lot your help.

Thank you.

Ubirajara.





-----Mensagem original-----
De: gtk-app-devel-list [mailto:gtk-app-devel-list-boun...@gnome.org] Em nome de 
John Coppens
Enviada em: segunda-feira, 23 de março de 2015 15:06
Para: gtk-app-devel-list@gnome.org
Assunto: Re: gtktreeview problem.

On Mon, 23 Mar 2015 12:50:28 +0000
Ubirajara Marques da Cruz <birac...@cemig.com.br> wrote:

> Into ON_DRAG_RECEIVED signal when I copy selection data with memcpy I have a 
> surprise. Gtk selection has the same structure but data is empty. And only 
> one data is copied and it is wrong. It is a genum.

Maybe this tutorial I wrote a few years ago might be of help. It copies one 
cell of a TreeView to a list, but the mechanism is the same. There are quite a 
few steps involved, however...

http://jcoppens.com/soft/howto/pygtk_dnd/index.en.php

(The code is in Python, but all the steps are also needed in C or C++)

John
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

As informações contidas nesta mensagem e nos arquivos anexados sao para uso 
exclusivo do destinatario aqui indicado e podem conter assuntos comerciais, de 
propriedade intelectual ou outras informações confidenciais, protegidas pelas 
leis aplicaveis.
Caso não seja o destinatario correto, por favor, notifique o remetente.
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to