Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project! See Demo


#67 bind abtraction-canvas to full classname

puredata (375)

each abstraction-canvas is bound to a receive-symbol,
based on the abstraction name, which enables you to
send special messages to the canvas (like "vis 1")
e.g. [foo] will be bound to "pd-foo.pd";

however, when the abstraction is created with a
path-name, this is not reflected.
e.g. [foo/bar] will be bound to "pd-bar.pd"

this is unfortunate if you are using multiple
abstractions of the same name within different
directories, like [foo/bar] and [task/bar] (both will
listen to "pd-bar.pd")

the attached patch will modify g_canvas.c and m_class.c
to additionally bind the abstraction's canvas to the
full classname of the abstraction, with "pd-" prepended
in the given example this means, that [foo/bar] will be
bound to "pd-foo/bar" and [task/bar] will be bound to

caveat: no ".pd" is suffixed, since the full classname
does not hold any file-suffixes. i do not consider this
too bad, but who knows.

what for?: i need this for a general framework where
people can write their own modules that will be saved
within a directory; the entry-point to each module is
an abstraction with the same name.


  • Logged In: YES

    a refined patch "bind2classname.pd.diff" now also adds ".pd"
    to the full classname, regardless of what the actual
    file-extension is.
    it uses addfileextent().

    so now [foo/bar] will bind to "pd-foo/bar.pd"

  • Logged In: YES

    as discussed on the list, it should be considered removing
    the compatibility binding to the file-name.
    e.g. [foo/bar] binds to "pd-foo/bar.pd" and [pizza/bar]
    binds to "pd-pizza/bar.pd" but none of them binds to [pd-bar.pd]

    i don't give a patch for this, since the change is simple
    (just remove 1 (or 2) lines), and the decision should be
    made by somebody responsible.

  • Logged In: YES

    I'm still trying to figure out a more general mechanism for
    doing this... a "control" inlet for canvases, or something
    like that.



Cancel   Add attachments