I am the Developer (and packager) of Wallch, which is a C++ application and thus it is not build and packaged with Quickly.
For that reason my answer will include general information about your questions that (should) apply in any case (as far as I know).
Answering your questions, now:
(1)
You can set as your application's dependencies, only the ones that are at the default repositories of Ubuntu. You may not include dependencies from PPAs etc. You can add your dependencies at the debian/control file. An example debian/control file for my application is the following: paste.ubuntu.com/1113694.
As you can see, there are 2 'Depends' fields, in the Build-Depends you have to specify what is essential for building your application. I am pretty sure that Quickly should fill this field automatically. The other packages that are important for running your application should be listed under the Depends field. This is were you have to specify any extra dependencies that you have. What you have to specify is the package-name that the user should download and install (this process is automatic, of course)
(2)
The dependencies, as far as I understand from your question, are separate programs who can run and produce big output files. Now, it really depends where those files are being stored. I would say that:
If your application indirectly creates those big output files, you can select to save them anywhere you like
If the user separately produces these files, then you can let the user from inside your application to select one of these files for processing.
It really depends on how these files are being produced and what they have to do with your application.
If you just create some files and then you want to process them with your application, then you should use the /tmp directory. Run the dependency-program and guide it to generate the files to /tmp and then have your program read and parse the files from there.
(3)
As far as I know (because I participated at this specific contest as well), the structure that Quickly creates lays under /opt/extras.ubuntu.com/programname, where the user doesn't have write permissions. This means that if the user normally opens your application and, from within your application, you have chosen to save your program's files under /opt/extras.ubuntu.com/programname, the user will not be able to save those files. Instead, he will have to run your application with root privileges, which is generally discouraged.
Again, it depends what those files are for. Are those files readable from the user or they are only usable from within your application (something like configuration files)? If the former is true, then you should let the user choose where to save those files. If the latter is true, then you should place those files under ~/.config/ProgramName/
The directory ~/.config/ProgramName is a directory where all applications save their configuration files.
Edit after more requests from comment:
Generally, in your occassion, you should do the following:
- Your program generates files depending on user input (which result into ~/.config/ProgName because they might be reused and should not be deleted)
- The tools you depend on read these files (from ~/.config/ProgName) and generate some other files (who result into /tmp)
- Your program takes the generated files (from the tools) from /tmp and does any calculation/drawing etc... After doing what your application has to do with the final files under /tmp, it would be good to delete them.
As for whether you have read/write permissions at the configuration folder, the user has full read/write permissions in everything under ~/ (your home directory), and thus, everything under ~/.config/ belongs to him as well.
Note that the user has read/write permissions under /tmp, as well.
Tip: You can use the mktemp command so as to generate temp files under /tmp with random name