Hello, Thank you for the introduction. No, you didn't scared me, since I was expecting something like that. I think it will take me quite some time to study all I need about VBox components you described before I will be able to start working. Since I moved to my home country and I don't have my laptop here I will start with installing required development software first. When I will have more questions - I will ask you.
Sincerely yours, Byelozyorov Sergiy. On Fri, Feb 27, 2009 at 10:40 PM, Michael Thayer <[email protected]> wrote: > Hello Sergiy, > > Sergiy Byelozyorov wrote: >> Ticket #81 [feature-request] GuestVM addition: file drag-n-drop > [snip] >> I was directed here (see forwarded email or last comment). So what do >> I do first? > Great that you responded so fast, and thanks very much for your > interest! I will start by giving you a quick overview of how we > envisaged the feature (at least in a first version which keeps things as > simple as possible) and pointing you to the bits in the code that would > be of interest to you. I hope that my quick overview doesn't get too > long :) There are two things to implement here: dragging from host to > guest, and from guest to host. They will probably need to be > implemented more or less separately. I will start with the host to > guest, which is probably the easiest. > > The first version of the feature should probably only support file DnD. > The actual file transfer from host to guest will go via a shared > folder. Basically, the VirtualBox application, or rather the main > widget in it, will have to act as a drop target. When a drag action is > started and the cursor enters this widget, the widget should notify an > application running in the guest. The widget and the guest application > will exchange any information needed about the drag and drop process, > and the guest application will initiate a drag action of its own in the > guest to match the host drag action. Communication between host and > guest should probably use the Guest Property feature of VirtualBox, at > least in the first version of the DnD feature. > > The guest to host direction is more complicated, as the guest is not > aware of anything "outside its window". We thought that it could be > implemented as follows. When the GUI notices that the mouse cursor has > been dragged from inside the main widget to outside, it tells the guest > that the mouse cursor has been moved over a special drop area created by > the guest application. This enables the guest application to get > information about the drag process. Guest and host must exchange > necessary information as they did for the other direction. > > The host part would be done in our Qt4 GUI code > (http://www.virtualbox.org/browser/trunk/src/VBox/Frontends/VirtualBox > in our public subversion repository). As Qt4 is cross platform, the > same code would work for all supported hosts (Windows, Linux, Solaris > and Mac OS). Unfortunately, the guest work must be done separately for > each guest that we (or rather you) wish to support. I'm not sure which > systems you are familiar with (Windows, Linux/Solaris, ... OS/2 :) ) > The same code will probably work on Linux and Solaris though. There we > have the difficulty that since we try to use a single binary for all > Linux systems, we can't really rely on any but the most standard guest > libraries, like the C library and the basic X11 ones. In our shared > clipboard code, we used the Xt library as it is slightly (!) higher > level than basic libx11 (see > http://www.virtualbox.org/browser/trunk/src/VBox/Additions/x11/VBoxClient) > and you might want to use that as a basis if you are interested in Linux > guest stuff and if you can bear to look at that code :) (I *will* > rewrite it when I have a bit of free time...) For basic examples of > using the guest property code, you might want to look at VBoxManage > (host side, > http://www.virtualbox.org/browser/trunk/src/VBox/Frontends/VBoxManage) > and VBoxControl (guest side, > http://www.virtualbox.org/browser/trunk/src/VBox/Additions/common/VBoxControl). > The VBoxControl code is cross platform, at least the basic code and the > bits that deal with guest properties. VBoxManage is bit hard going > because of all the COM stuff in there, but that is all over our host > code I'm afraid... > > OK, that ended up being rather long after all... I hope that I haven't > scared you off with that! I would be interested to hear what you have > to say about this. Unfortunately our GUI programmer has already left > for the weekend, so he will probably not be able to comment until > Monday. I really hope that you will have fun with this! > > Look forward to your answer... > > Regards, > > Michael > > _______________________________________________ > vbox-dev mailing list > [email protected] > http://vbox.innotek.de/mailman/listinfo/vbox-dev > _______________________________________________ vbox-dev mailing list [email protected] http://vbox.innotek.de/mailman/listinfo/vbox-dev
