27 EXTRA->modelInfo->get(kTTSym_address, v);
38 if (!JamomaApplication.
send(
"ObjectRegister", args, none)) {
40 EXTRA->presetManager->set(kTTSym_address, modelAdrs);
62 outlet_anything(x->
outlets[dump_out], gensym(
"names"), argc, argv);
78 if (EXTRA->presetManager->valid()) {
89 aTextHandler.
set(kTTSym_object, *EXTRA->presetManager);
92 tterr = aTextHandler.
send(kTTSym_Read, v, none);
96 object_obex_dumpout(
self, _sym_read, argc, argv);
98 object_obex_dumpout(
self, _sym_error, 0, NULL);
121 aTextHandler.
set(kTTSym_object, *EXTRA->presetManager);
124 tterr = aTextHandler.
send(kTTSym_ReadAgain);
128 object_obex_dumpout(
self, _sym_read, 0, NULL);
130 object_obex_dumpout(
self, _sym_error, 0, NULL);
142 char filename[MAX_FILENAME_CHARS];
149 if (EXTRA->filewatcher)
150 filewatcher_stop(EXTRA->filewatcher);
152 if (EXTRA->presetManager->valid()) {
164 aTextHandler.
set(kTTSym_object, *EXTRA->presetManager);
167 tterr = aTextHandler.
send(kTTSym_Write, v, none);
171 object_obex_dumpout(
self, _sym_write, argc, argv);
173 object_obex_dumpout(
self, _sym_error, 0, NULL);
178 if (EXTRA->filewatcher)
179 filewatcher_start(EXTRA->filewatcher);
195 if (EXTRA->filewatcher)
196 filewatcher_stop(EXTRA->filewatcher);
204 aTextHandler.
set(kTTSym_object, *EXTRA->presetManager);
207 tterr = aTextHandler.
send(kTTSym_WriteAgain);
211 object_obex_dumpout(
self, _sym_write, 0, NULL);
213 object_obex_dumpout(
self, _sym_error, 0, NULL);
217 if (EXTRA->filewatcher)
218 filewatcher_start(EXTRA->filewatcher);
225 t_fourcc outtype, filetype =
'TEXT';
226 char fullpath[MAX_PATH_CHARS];
227 char posixpath[MAX_PATH_CHARS];
233 if (EXTRA->attr_presets != kTTSym_none) {
235 textfile = gensym(EXTRA->attr_presets.c_str());
243 return object_error((t_object*)x,
"preset_default : can't get the context of the patcher");
245 if (locatefile_extended((
char*)textfile->s_name, &outvol, &outtype, &filetype, 1)) {
250 path_topathname(outvol, (
char*)textfile->s_name, fullpath);
251 path_nameconform(fullpath, posixpath, PATH_STYLE_NATIVE, PATH_TYPE_BOOT);
253 atom_setsym(&a, gensym(posixpath));
257 atom_setsym(&a, gensym(
"default"));
261 if (EXTRA->filewatcher) {
262 filewatcher_stop(EXTRA->filewatcher);
263 object_free(EXTRA->filewatcher);
266 EXTRA->filewatcher = filewatcher_new((t_object*)x, outvol, (
char*)textfile->s_name);
267 filewatcher_start(EXTRA->filewatcher);
270 object_error((t_object*)x,
"preset_default : can't get the class of the patcher");
276 char fullpath[MAX_PATH_CHARS];
277 char posixpath[MAX_PATH_CHARS];
283 EXTRA->presetManager->get(
"current", v);
285 path_topathname(path, filename, fullpath);
286 path_nameconform(fullpath, posixpath, PATH_STYLE_NATIVE, PATH_TYPE_BOOT);
288 atom_setsym(&a, gensym(posixpath));
307 if (atom_gettype(argv) == A_SYM)
311 EXTRA->presetManager->send(kTTSym_Recall, v, none);
318 char title[MAX_FILENAME_CHARS];
327 *EXTRA->toEdit = *EXTRA->presetManager;
328 EXTRA->presetName = kTTSymEmpty;
332 if (atom_gettype(argv) == A_LONG) {
335 EXTRA->presetManager->get(
"names", v);
338 name = v[atom_getlong(argv)-1];
341 object_error((t_object*)x,
"%d does'nt exist", atom_getlong(argv));
345 else if (atom_gettype(argv) == A_SYM)
346 name =
TTSymbol(atom_getsym(argv)->s_name);
348 if (name != kTTSymEmpty) {
351 EXTRA->presetManager->get(
"presets", v);
357 if (!allPresets->
lookup(name, v)) {
360 *EXTRA->toEdit = v[0];
361 EXTRA->presetName = name;
364 object_error((t_object*)x,
"%s does'nt exist", atom_getsym(argv)->s_name);
372 if (!EXTRA->textEditor) {
374 EXTRA->textEditor = (t_object*)object_new(_sym_nobox, _sym_jed, x, 0);
386 aTextHandler.
set(kTTSym_object, *EXTRA->toEdit);
387 tterr = aTextHandler.
send(kTTSym_Write, (
TTPtr)buffer, none);
392 object_method(EXTRA->textEditor, _sym_settext, buffer->
c_str(), _sym_utf_8);
393 object_attr_setchar(EXTRA->textEditor, gensym(
"scratch"), 1);
395 snprintf(title, MAX_FILENAME_CHARS,
"%s preset editor", x->
patcherClass.
c_str());
396 object_attr_setsym(EXTRA->textEditor, _sym_title, gensym(title));
399 atom_setsym(&a, gensym(
"opened"));
400 object_obex_dumpout(
self, gensym(
"editor"), 1, &a);
413 EXTRA->textEditor = NULL;
434 tterr = aTextHandler.
send(kTTSym_Read, (
TTPtr)EXTRA->text, none);
438 atom_setsym(&a, gensym(
"closed"));
439 object_obex_dumpout(
self, gensym(
"editor"), 1, &a);
442 object_obex_dumpout(
self, _sym_read, 0, NULL);
444 object_obex_dumpout(
self, _sym_error, 0, NULL);
449 EXTRA->textEditor = NULL;
450 *EXTRA->toEdit = *EXTRA->presetManager;
451 EXTRA->presetName = kTTSymEmpty;
459 EXTRA->attr_presets =
TTSymbol(atom_getsym(av)->s_name);
462 EXTRA->attr_presets = kTTSym_none;
476 if (!(*av = (t_atom*)getbytes(
sizeof(t_atom)*(*ac)))) {
478 return MAX_ERR_OUT_OF_MEM;
482 atom_setsym(*av, gensym(EXTRA->attr_presets.c_str()));
void model_preset_read_again(TTPtr self)
TTAddress appendAddress(const TTAddress &toAppend)
Return a new TTAddress with the appended part.
t_max_err model_preset_get_presets(TTPtr self, TTPtr attr, long *ac, t_atom **av)
void model_preset_amenities(TTPtr self)
TTErr send(const TTSymbol aName)
Send a message to this object with no arguments.
TTHandle outlets
an array of outlet
TTErr lookup(const TTSymbol key, TTValue &value)
Find the value for the given key.
TTSymbol patcherClass
the patcher class in which the external is
const char * c_str() const
Return a pointer to the internal C-string.
void model_preset_dorecall(TTPtr self, t_symbol *msg, long argc, t_atom *argv)
The TTAddress class is used to represent a string and efficiently pass and compare that string...
Create and use Jamoma object instances.
size_type size() const noexcept
Return the number of elements.
t_object * patcherPtr
the patcher in which the external is (ignoring subpatcher)
TTHashPtr internals
An hash table to store any internal TTObjectBases (like TTData, TTViewer, ...)
void model_preset_write(TTPtr self, t_symbol *msg, long argc, t_atom *argv)
Maintain a collection of TTValue objects indexed by TTSymbol pointers.
void model_preset_dowrite_again(TTPtr self)
void append(const T &anElementValueToAppend)
Insert a single TTElement at the end.
void * TTPtr
A generic pointer.
void model_preset_read(TTPtr self, t_symbol *msg, long argc, t_atom *argv)
void model_preset_dowrite(TTPtr self, t_symbol *msg, long argc, t_atom *argv)
void model_preset_filechanged(TTPtr self, char *filename, short path)
void model_preset_doread_again(TTPtr self)
TTErr set(const TTSymbol aName, T aValue)
Set an attribute value for an object.
The TTSymbol class is used to represent a string and efficiently pass and compare that string...
void model_preset_default(TTPtr self)
t_max_err model_preset_set_presets(TTPtr self, TTPtr attr, long ac, const t_atom *av)
void model_preset_edclose(TTPtr self, char **text, long size)
const char * c_str() const
Return a pointer to the internal string as a C-string.
std::int32_t TTInt32
32 bit signed integer
j.model / j.view - The main control center of Jamoma model and view patcher
void model_preset_return_names(TTPtr self, t_symbol *msg, long argc, t_atom *argv)
void model_preset_edit(TTPtr self, t_symbol *msg, long argc, const t_atom *argv)
Data Structure for this object.
TTErr
Jamoma Error Codes Enumeration of error codes that might be returned by any of the TTBlue functions a...
TTSymbol patcherContext
the patcher context in which the external is (model, view)
The TTString class is used to represent a string.
void model_preset_doedit(TTPtr self)
WrappedModularInstance * WrappedModularInstancePtr
Pointer to a wrapped instance of our object.
void model_preset_doread(TTPtr self, t_symbol *msg, long argc, t_atom *argv)
[doxygenAppendixC_copyExample]
void model_preset_write_again(TTPtr self)