Hello,

+1 on the need for vanilla path management (https://github.com/pure-data/pure-data/pull/150)

Like Seb, I also made similar objects, [mainpath] and [root], as part of my personal library https://github.com/fdch/fd_lib

[mainpath] gives the canvas full path and handles path names relative to it. It also fetches all files in a given directory (using dirent.h)

[root] gives out the root canvas name, which is useful both for regular pd messages and tcl related messages. 




fdch.github.io/tv



On Oct 7, 2017, at 7:00 PM, Seb Shader via Pd-list <pd-list@lists.iem.at> wrote:

Hello,
    I've made a [rootinfo] object in my library that gives the path, name, and relative level of the root canvas.
I also have a [makerpath] object that is supposed to take paths relative to the root canvas and transform them into absolute paths but it doesn't seem to work
correctly... I will update it tonight though.

available here https://github.com/sebshader/shadylib
might be in deken for linux and OS X.. not sure (thought the updated abstraction will only be on Github)

-Seb


-----Original Message-----
From: Jérôme Abel <abel.jerome@free.fr>
To: pd-list <pd-list@iem.at>
Sent: Sat, Oct 7, 2017 7:35 am
Subject: [PD] Best way to make file paths relative to the parent patch ?

Hi,

To explain myself, i have to describe a practical example (http://reso-nance.org/public/pd-malinette/test-paths.png) :
- you write an [audio-sampler] abstraction in "abs" directory, which load soundfiles
- you write a "main.pd" patch where you put this abstraction in the project directory
- you want to load the "data/snare.wav" sound file with a message connected to the abstraction

Result : the context of the abstraction is in "abs" directory, so it can't find "data/snare.wav" (there is no "abs/data/snare.wav" file), instead we have to write "../data/snare.wav" relative to the abstraction and not the parent patch.

A common solution to deal with that is to add [ggee/getdir 1]  inside the abstraction, to get the absolute path of the file starting from the upper level (parent patch). But if the abstraction is inside another abstraction, it has to be [ggee/getdir 2] and so on ...  But how find the right depths of the abstraction ? The abstraction doesn't know his context of use.

I think I will put a [ggee/getdir 10] or greater to be sure to get the parent patch level, but maybe someone has another solution, a vanilla solution ?


Related PR :


+
j.



_______________________________________________ Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list
_______________________________________________
Pd-list@lists.iem.at mailing list
UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list