35 #define EXTRA ((t_extra*)x->extra)
144 void score_eventStatusCallback(
const TTValue& baton,
const TTValue& value);
145 void score_processStartedCallback(
const TTValue& baton,
const TTValue& value);
146 void score_processEndedCallback(
const TTValue& baton,
const TTValue& value);
148 void score_doreport(
TTPtr self, t_symbol *msg,
long argc, t_atom *argv);
151 extern "C" void JAMOMA_EXPORT_MAXOBJ setup_j0x2escore(
void)
153 ModularSpec *spec =
new ModularSpec;
166 eclass_addmethod(c->pdClass, (method)
score_assist,
"assist", A_CANT, 0L);
167 eclass_addmethod(c->pdClass, (method)
score_filechanged,
"filechanged", A_CANT, 0);
169 eclass_addmethod(c->pdClass, (method)
score_read,
"read", A_GIMME, 0);
170 eclass_addmethod(c->pdClass, (method)
score_write,
"write", A_GIMME, 0);
171 eclass_addmethod(c->pdClass, (method)
score_edit,
"edit", A_GIMME, 0);
173 eclass_addmethod(c->pdClass, (method)
score_read_again,
"read/again", A_NULL, 0);
174 eclass_addmethod(c->pdClass, (method)
score_write_again,
"write/again", A_NULL, 0);
180 long attrstart = attr_args_offset(argc, argv);
195 EXTRA->eventStatusCallback =
new TTObject(
"callback");
196 EXTRA->eventStatusCallback->set(
"baton",
TTPtr(
self));
197 EXTRA->eventStatusCallback->set(
"function",
TTPtr(&score_eventStatusCallback));
198 EXTRA->eventStatusCallback->set(
"notification",
TTSymbol(
"EventStatusChanged"));
200 EXTRA->processStartedCallback =
new TTObject(
"callback");
201 EXTRA->processStartedCallback->set(
"baton",
TTPtr(
self));
202 EXTRA->processStartedCallback->set(
"function",
TTPtr(&score_processEndedCallback));
203 EXTRA->processStartedCallback->set(
"notification",
TTSymbol(
"ProcessEnded"));
205 EXTRA->processEndedCallback =
new TTObject(
"callback");
206 EXTRA->processEndedCallback->set(
"baton",
TTPtr(
self));
207 EXTRA->processEndedCallback->set(
"function",
TTPtr(&score_processStartedCallback));
208 EXTRA->processEndedCallback->set(
"notification",
TTSymbol(
"ProcessStarted"));
210 EXTRA->xmlHandler =
new TTObject(kTTSym_XmlHandler);
211 EXTRA->textHandler =
new TTObject(kTTSym_TextHandler);
213 EXTRA->textEditor = NULL;
214 EXTRA->filewatcher = NULL;
220 if (attrstart && argv)
221 attr_args_process(x, argc, argv);
247 strcpy(dst,
"input");
252 strcpy(dst,
"dumpout");
261 atom_setsym(&a, gensym(filename));
282 TTErr err = EXTRA->xmlHandler->send(kTTSym_Read, userpath);
286 object_obex_dumpout(
self, _sym_read, argc, argv);
288 object_obex_dumpout(
self, _sym_error, 0, NULL);
300 t_fourcc outtype, filetype =
'TEXT';
301 char filepath[MAX_FILENAME_CHARS];
303 strncpy(filepath, userpath.
c_str(), MAX_FILENAME_CHARS);
304 if (locatefile_extended((
char*)filepath, &outvol, &outtype, &filetype, 0))
354 TTErr err = EXTRA->xmlHandler->send(kTTSym_ReadAgain);
358 object_obex_dumpout(
self, _sym_read, 0, NULL);
360 object_obex_dumpout(
self, _sym_error, 0, NULL);
382 char filename[MAX_FILENAME_CHARS];
383 snprintf(filename, MAX_FILENAME_CHARS,
"untitled.score");
388 TTErr err = EXTRA->xmlHandler->send(kTTSym_Write, userpath);
392 object_obex_dumpout(
self, _sym_write, argc, argv);
394 object_obex_dumpout(
self, _sym_error, 0, NULL);
406 t_fourcc outtype, filetype =
'TEXT';
407 char filepath[MAX_FILENAME_CHARS];
409 strncpy(filepath, userpath.
c_str(), MAX_FILENAME_CHARS);
438 TTErr err = EXTRA->xmlHandler->send(kTTSym_WriteAgain);
442 object_obex_dumpout(
self, _sym_write, 0, NULL);
444 object_obex_dumpout(
self, _sym_error, 0, NULL);
458 char title[MAX_FILENAME_CHARS];
464 if (atom_gettype(argv) == A_SYM)
472 for (TTElementIter it = events.begin(); it != events.end(); it++)
476 event.get(
"name", name);
478 if (name ==
TTSymbol(atom_getsym(argv)->s_name))
481 event.
get(
"state", state);
482 EXTRA->textHandler->set(kTTSym_object, state);
489 pd_error((t_object*)x,
"%s event does'nt exist", atom_getsym(argv)->s_name);
539 EXTRA->textEditor = NULL;
551 TTErr err = EXTRA->textHandler->send(kTTSym_Read, (
TTPtr)EXTRA->text);
557 object_obex_dumpout(
self, _sym_error, 0, NULL);
562 atom_setsym(&a, gensym(
"closed"));
563 object_obex_dumpout(
self, gensym(
"editor"), 1, &a);
568 EXTRA->textEditor = NULL;
571 void score_eventStatusCallback(
const TTValue& baton,
const TTValue& value)
585 event.
get(
"name", v);
589 event.
get(
"status", v);
593 if (status == kTTSym_eventWaiting) status =
TTSymbol(
"waiting");
594 else if (status == kTTSym_eventPending) status =
TTSymbol(
"pending");
595 else if (status == kTTSym_eventHappened) status =
TTSymbol(
"happened");
596 else if (status == kTTSym_eventDisposed) status =
TTSymbol(
"disposed");
599 atom_setsym(report, gensym((
char*)name.
c_str()));
600 atom_setsym(report+1, gensym((
char*)status.
c_str()));
601 score_doreport(x, gensym(
"event"), 2, report);
604 void score_processStartedCallback(
const TTValue& baton,
const TTValue& value)
618 process.
get(
"name", v);
622 atom_setsym(report, gensym((
char*)name.
c_str()));
623 atom_setsym(report+1, gensym(
"started"));
624 score_doreport(x, gensym(
"process"), 2, report);
627 void score_processEndedCallback(
const TTValue& baton,
const TTValue& value)
641 process.
get(
"name", v);
645 atom_setsym(report, gensym((
char*)name.
c_str()));
646 atom_setsym(report+1, gensym(
"ended"));
647 score_doreport(x, gensym(
"process"), 2, report);
650 void score_doreport(
TTPtr self, t_symbol *msg,
long argc, t_atom *argv)
652 object_obex_dumpout(
self, msg, argc, argv);
bool TTBoolean
Boolean flag, same as Boolean on the Mac.
void score_assist(TTPtr self, void *b, long msg, long arg, char *dst)
Display assist messages for inlets and outlets in Max.
void WrappedScoreClass_new(TTPtr self, long argc, t_atom *argv)
Constructor: Initiate the wrapped object instance.
TTErr send(const TTSymbol aName)
Send a message to this object with no arguments.
void score_filechanged(TTPtr self, char *filename, short path)
void score_edclose(TTPtr self, char **text, long size)
Create and use Jamoma object instances.
size_type size() const noexcept
Return the number of elements.
void * extra
used to keep very specific things
void score_edit(TTPtr self, t_symbol *msg, long argc, t_atom *argv)
void score_doedit(TTPtr self)
void WrapTTScoreClass(WrappedClassPtr c)
Set up what methods (Max messages) that the wrapped class is to respond to.
void WrappedScoreClass_free(TTPtr self)
Deconstructor: Destroy the object and free memory assigned to it.
void score_read_again(TTPtr self)
void * TTPtr
A generic pointer.
TTErr get(const TTSymbol aName, T &aReturnedValue) const
Get an attribute value for an object.
TTMODULAR_EXPORT TTApplicationManagerPtr TTModularApplicationManager
Export a pointer to a TTApplicationManager instance.
TTErr registerObserverForNotifications(const TTObject &anObservingObject)
Register an observer.
The TTSymbol class is used to represent a string and efficiently pass and compare that string...
void get(const TTUInt16 index, T &returnedElementValue) const
DEPRECATED.
void score_dowrite_again(TTPtr self)
TTObject wrappedObject
The instance of the Jamoma object we are wrapping.
void score_doread_again(TTPtr self)
Individual items found in a TTValue.
const char * c_str() const
Return a pointer to the internal string as a C-string.
Wraps Jamoma Core classes as objects for PureData.
void score_write(TTPtr self, t_symbol *msg, long argc, t_atom *argv)
void score_read(TTPtr self, t_symbol *msg, long argc, 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...
std::uint32_t TTUInt32
32 bit unsigned integer
void score_dowrite(TTPtr self, t_symbol *msg, long argc, t_atom *argv)
void score_doread(TTPtr self, t_symbol *msg, long argc, t_atom *argv)
The TTString class is used to represent a string.
TTBoolean valid() const
Determine if the object contained by this TTObject is truly ready for use.
void score_write_again(TTPtr self)
WrappedModularInstance * WrappedModularInstancePtr
Pointer to a wrapped instance of our object.
[doxygenAppendixC_copyExample]
TTErr wrapTTModularClassAsPdClass(TTSymbol &ttblueClassName, const char *pdClassName, WrappedClassPtr *c, ModularSpec *specificities)
Wrap a Jamoma class as a Pd class.