From: Thomas L. <ta...@gm...> - 2010-06-07 17:45:39
|
On 7 June 2010 17:56, Stephen Watson <st...@ke...> wrote: > Jim Lesurf <jc...@au...> wrote: > >> In article <gem...@ke...>, Stephen >> Watson <st...@ke...> wrote: >> > Jim Lesurf <jc...@au...> wrote: >> > > I assume that would then work with the normal ROX desktops without >> > > user needing ROX-Clib? >> >> > They would need ROX-Lib instead. >> >> Yes, fair enough. :-) However I think what surprises me here is that so >> far as I can recall ROX-Lib installed without any problems. > > That is the advantage of Python. > >> Yet IIUC CLib >> seems to require even users of developed apps that use it to install a >> 'development' item (pkg-config) which seems absent from a distro as common >> as Xubuntu. > > Only because you're using a source release which requires that you compile > it, the same as if you downloaded a source release of ROX-Filer. Of course > using a binary release has other problems, mainly that I can only produce > binary releases for my version of SuSE. Out of interest, why is it that the ROX-Filer binary seems to work everywhere, but ROX-CLib can only work on SUSE? >> Anyway, thinking about this I feel I do prefer (if it is possible and I > can >> work out how to do it) to use the approach of using python (and ROX-Lib) > to >> provide the drag-and-drop, and have it then call the object I've compiled >> from 'C'. >> >> One reason for this is I want the main code to be easily accessible by >> non-ROX users via a terminal or just issuing the usual sort of <object> >> <variable> command. >> >> Another is that I've played with the python example at >> http://roscidus.com/desktop/Tutorials/Saving >> >> and it works quite nicely for A and B above. So I'm hoping that there is a >> simple way to extract the full pathname of the file created by the >> drag-and-drop and then pass that on to launching the main code. Is there >> not a method for reading this name from the class of object for 'box'. > etc? > > As I recall, the ROX-Lib version expects the call back to create the target > file before returning and throws an exception if it doesn't. You'll need to > catch that if you're deferring file creation to a different process. Note that you may be asked to save to a temporary file (e.g. when transferring data to another program), so it's important not to return until the file is written. Archive shows how to do it, although it's a bit complicated because it supports so many different operations and because it reads and writes at the same time. One quick way to get started would be to add your own format to Archive/formats.py. Each format is just a shell command that produces the output. e.g. this line Archive('zip', "zip -qr - '%s'", 'application/zip'), means that if the user chooses the "create zip" option then we run the command "zip -qr - <name>". You could add your own command here. To add your own code, you have a choice of which method to provide: def save_to_file(self, path): or def save_to_stream(self, stream): In your case, as you need the name, choose the first. -- Dr Thomas Leonard ROX desktop / Zero Install GPG: 9242 9807 C985 3C07 44A6 8B9A AE07 8280 59A5 3CC1 GPG: DA98 25AE CAD0 8975 7CDA BD8E 0713 3F96 CA74 D8BA |