Skip to content

Commit

Permalink
Setting all color stuff as method of TTUiInfo class
Browse files Browse the repository at this point in the history
  • Loading branch information
theod committed Oct 30, 2013
1 parent 6043679 commit 936c7b3
Show file tree
Hide file tree
Showing 6 changed files with 185 additions and 154 deletions.
5 changes: 5 additions & 0 deletions Jamoma/misc/JamomaConfiguration.xml
Expand Up @@ -19,6 +19,10 @@

<entry App="clear" TT="Clear"/>
<entry App="copy" TT="Copy"/>
<entry App="color/contentBackground" TT="ColorContentBackground"/>
<entry App="color/toolbarBackground" TT="ColorToolbarBackground"/>
<entry App="color/toolbarText" TT="ColorToolbarText"/>
<entry App="color/border" TT="ColorBorder"/>
<entry App="dec" TT="Dec"/>
<entry App="namespace/build" TT="DirectoryBuild"/>
<entry App="namespace/observe" TT="DirectoryObserve"/>
Expand All @@ -30,6 +34,7 @@
<entry App="mix" TT="Mix"/>
<entry App="move" TT="Move"/>
<entry App="new" TT="New"/>
<entry App="panel" TT="Panel"/>
<entry App="recall" TT="Recall"/>
<entry App="reference/open" TT="ReferenceOpen"/>
<entry App="refresh" TT="Refresh"/>
Expand Down
122 changes: 121 additions & 1 deletion source/j.ui/TTUiInfo.cpp
Expand Up @@ -19,7 +19,8 @@
#define thisTTClassName "UiInfo"
#define thisTTClassTags "ui info"

TT_MODULAR_CONSTRUCTOR
TT_MODULAR_CONSTRUCTOR,
mFreeze(NO)
{
TT_ASSERT("Correct number of args to create TTUiInfo", arguments.size() == 1);

Expand All @@ -28,6 +29,13 @@ TT_MODULAR_CONSTRUCTOR
mObject = (t_ui*)(TTPtr(arguments[0]));

addAttributeWithGetterAndSetter(Size, kTypeLocalValue);
addAttributeWithSetter(Freeze, kTypeBoolean);

addMessageWithArguments(ColorContentBackground);
addMessageWithArguments(ColorToolbarBackground);
addMessageWithArguments(ColorToolbarText);
addMessageWithArguments(ColorBorder);
addMessage(Panel);
}


Expand Down Expand Up @@ -60,4 +68,116 @@ TTErr TTUiInfo::getSize(TTValue& value)
value.append(TTUInt32(mObject->box.b_presentation_rect.height));

return kTTErrNone;
}

TTErr TTUiInfo::setFreeze(const TTValue& newValue)
{
long argc = 0;
AtomPtr argv = NULL;
TTNodePtr modelNode;
TTErr err;

mFreeze = newValue;

// get the TTContainer object of the view patch
err = JamomaDirectory->getTTNode(mObject->viewAddress, &modelNode);

if (!err) {

if (modelNode->getObject()) {

jamoma_ttvalue_to_Atom(mFreeze, &argc, &argv);

// set freeze attribute to all j.remote (on 3 levels only as we don't have the // operator)
jamoma_container_send(TTContainerPtr(modelNode->getObject()), gensym("*.*:freeze"), argc, argv);
jamoma_container_send(TTContainerPtr(modelNode->getObject()), gensym("*.*/*.*:freeze"), argc, argv);
jamoma_container_send(TTContainerPtr(modelNode->getObject()), gensym("*.*/*.*/*.*:freeze"), argc, argv);

return kTTErrNone;
}
}

return kTTErrGeneric;
}

TTErr TTUiInfo::ColorContentBackground(const TTValue& inputValue, TTValue& outputValue)
{
long argc = 0;
AtomPtr argv = NULL;

jamoma_ttvalue_to_Atom(inputValue, &argc, &argv);

// Colors default to "0". If default value is passed, we avoid setting the color, in order to stick to object defaults.
if (argc > 1) {

object_attr_setvalueof(mObject, _sym_bgcolor, argc, argv);
return kTTErrNone;
}

return kTTErrGeneric;
}

TTErr TTUiInfo::ColorToolbarBackground(const TTValue& inputValue, TTValue& outputValue)
{
long argc = 0;
AtomPtr argv = NULL;

jamoma_ttvalue_to_Atom(inputValue, &argc, &argv);

if (argc > 1) {

object_attr_setvalueof(mObject, gensym("headercolor"), argc, argv);
return kTTErrNone;
}

return kTTErrGeneric;
}

TTErr TTUiInfo::ColorToolbarText(const TTValue& inputValue, TTValue& outputValue)
{
long argc = 0;
AtomPtr argv = NULL;

jamoma_ttvalue_to_Atom(inputValue, &argc, &argv);

if (argc > 1) {

object_attr_setvalueof(mObject, _sym_textcolor, argc, argv);
return kTTErrNone;
}

return kTTErrGeneric;
}

TTErr TTUiInfo::ColorBorder(const TTValue& inputValue, TTValue& outputValue)
{
long argc = 0;
AtomPtr argv = NULL;

jamoma_ttvalue_to_Atom(inputValue, &argc, &argv);

if (argc > 1) {

object_attr_setvalueof(mObject, gensym("bordercolor"), argc, argv);
mObject->memo_bordercolor = mObject->bordercolor;
return kTTErrNone;
}

return kTTErrGeneric;
}

TTErr TTUiInfo::Panel()
{
t_atom a;

if (mObject->patcher_panel) {

// open ui panel and set title
atom_setsym(&a, gensym((char*)mObject->viewAddress.c_str()));
object_attr_setvalueof(mObject->patcher_panel, _sym_title, 1, &a);
object_method(mObject->patcher_panel, _sym_vis);
return kTTErrNone;
}

return kTTErrGeneric;
}
44 changes: 43 additions & 1 deletion source/j.ui/TTUiInfo.h
Expand Up @@ -26,6 +26,7 @@ class TTMODULAR_EXPORT TTUiInfo : public TTDataObjectBase
TTCLASS_SETUP(TTUiInfo)

TTValue mSize; ///< ATTRIBUTE : the size of the j.ui
TTBoolean mFreeze; ///< ATTRIBUTE : freeze all j.remote

t_ui* mObject; ///< cache the j.ui object

Expand All @@ -38,10 +39,51 @@ class TTMODULAR_EXPORT TTUiInfo : public TTDataObjectBase
TTErr setSize(const TTValue& newValue);

/** Attribute accessor.
@param value current horizontal and a vertical size value
@param value current horizontal and a vertical size value
@return TTErr kTTErrNone
*/
TTErr getSize(TTValue& value);

/** Attribute accessor.
@param newValue a new freeze state
@return TTErr kTTErrNone
*/
TTErr setFreeze(const TTValue& newValue);

/** Set content background color
@param inputValue a new color
@param outputValue nothing
@return TTErr kTTErrNone
*/
TTErr ColorContentBackground(const TTValue& inputValue, TTValue& outputValue);

/** Set toolbar background color
@param inputValue a new color
@param outputValue nothing
@return TTErr kTTErrNone
*/
TTErr ColorToolbarBackground(const TTValue& inputValue, TTValue& outputValue);

/** Set toolbar text color
@param inputValue a new color
@param outputValue nothing
@return TTErr kTTErrNone
*/
TTErr ColorToolbarText(const TTValue& inputValue, TTValue& outputValue);

/** Set border color
@param inputValue a new color
@param outputValue nothing
@return TTErr kTTErrNone
*/
TTErr ColorBorder(const TTValue& inputValue, TTValue& outputValue);

/** Open the ui panel
@param inputValue a new color
@param outputValue nothing
@return TTErr kTTErrNone
*/
TTErr Panel();
};

typedef TTUiInfo* TTUiInfoPtr;
Expand Down
18 changes: 6 additions & 12 deletions source/j.ui/j.ui.cpp
Expand Up @@ -74,14 +74,6 @@ int JAMOMA_EXPORT_MAXOBJ main(void)
class_addmethod(c, (method)ui_modelMessExplorer_callback, "return_modelMessExploration", A_CANT, 0);
class_addmethod(c, (method)ui_modelRetExplorer_callback, "return_modelRetExploration", A_CANT, 0);

class_addmethod(c, (method)ui_view_panel_return, "return_view_panel", A_CANT, 0);

class_addmethod(c, (method)ui_return_color_contentBackground, "return_color_contentBackground", A_CANT, 0);
class_addmethod(c, (method)ui_return_color_toolbarBackground, "return_color_toolbarBackground", A_CANT, 0);
class_addmethod(c, (method)ui_return_color_toolbarText, "return_color_toolbarText", A_CANT, 0);
class_addmethod(c, (method)ui_return_color_border, "return_color_border", A_CANT, 0);
class_addmethod(c, (method)ui_return_ui_freeze, "return_ui_freeze", A_CANT, 0);

class_addmethod(c, (method)ui_return_model_address, "return_model_address", A_CANT, 0);

class_addmethod(c, (method)ui_return_model_init, "return_model_init", A_CANT, 0);
Expand Down Expand Up @@ -213,13 +205,15 @@ t_ui* ui_new(t_symbol *s, long argc, t_atom *argv)
x->textEditor = NULL;
x->textHandler = NULL;
x->state = NULL;


x->patcher_panel = NULL;

attr_dictionary_process(x, d); // handle attribute args

// The following must be deferred because we have to interrogate our box,
// and our box is not yet valid until we have finished instantiating the object.
// Trying to use a loadbang method instead is also not fully successful (as of Max 5.0.6)
defer_low((ObjectPtr)x, (method)ui_data_create_all, NULL, 0, 0);
defer_low((ObjectPtr)x, (method)ui_register_info, NULL, 0, 0);

// The following must be deferred because we have to interrogate our box,
// and our box is not yet valid until we have finished instantiating the object.
Expand Down Expand Up @@ -261,7 +255,7 @@ void ui_free(t_ui *x)
}
}

ui_data_destroy_all(x);
ui_unregister_info(x);
ui_viewer_destroy_all(x);
ui_receiver_destroy_all(x);
}
Expand Down Expand Up @@ -932,7 +926,7 @@ void ui_mousedown(t_ui *x, t_object *patcherview, t_pt px, long modifiers)
}
}
else if (x->has_panel && px.x >= x->rect_panel.x && px.x <= (x->rect_panel.x + x->rect_panel.width))
ui_data_send(x, TTSymbol("panel"), none);
x->uiInfo->sendMessage(TTSymbol("Panel"));

else if (x->has_preview && px.x >= x->rect_preview.x && px.x <= (x->rect_preview.x + x->rect_preview.width)) {
if (x->selection) {
Expand Down
13 changes: 4 additions & 9 deletions source/j.ui/j.ui.h
Expand Up @@ -172,11 +172,13 @@ void ui_refmenu_do(t_ui *x, t_object *patcherview, t_pt px, long modifiers);
void ui_refmenu_qfn(t_ui *x);
void ui_refmenu_build(t_ui *x);

// prototypes: TTUiInfo registration
void ui_register_info(t_ui* obj);
void ui_unregister_info(t_ui* obj);

// prototypes: internal TTData and TTViewer
void ui_data_create(t_ui *obj, TTObjectBasePtr *returnedData, SymbolPtr aCallbackMethod, TTSymbol service, TTSymbol name, TTBoolean deferlow = NO);
void ui_data_create_all(t_ui* obj);
void ui_data_destroy(t_ui *obj, TTSymbol name);
void ui_data_destroy_all(t_ui* obj);
void ui_data_send(t_ui *obj, TTSymbol name, TTValue v);
void ui_data_interface(t_ui *x, TTSymbol name);

Expand All @@ -197,13 +199,6 @@ void ui_modelParamExplorer_callback(TTPtr self, SymbolPtr msg, AtomCount argc,
void ui_modelRetExplorer_callback(TTPtr self, SymbolPtr msg, AtomCount argc, AtomPtr argv);

void ui_view_panel_attach(TTPtr self, t_symbol *msg, long argc, t_atom *argv);
void ui_view_panel_return(TTPtr self, SymbolPtr msg, AtomCount argc, AtomPtr argv);

void ui_return_color_contentBackground(TTPtr self, SymbolPtr msg, AtomCount argc, AtomPtr argv);
void ui_return_color_toolbarBackground(TTPtr self, SymbolPtr msg, AtomCount argc, AtomPtr argv);
void ui_return_color_toolbarText(TTPtr self, SymbolPtr msg, AtomCount argc, AtomPtr argv);
void ui_return_color_border(TTPtr self, SymbolPtr msg, AtomCount argc, AtomPtr argv);
void ui_return_ui_freeze(TTPtr self, SymbolPtr msg, AtomCount argc, AtomPtr argv);

void ui_return_model_address(TTPtr self, SymbolPtr msg, AtomCount argc, AtomPtr argv);
void ui_return_model_init(TTPtr self, SymbolPtr msg, AtomCount argc, AtomPtr argv);
Expand Down

0 comments on commit 936c7b3

Please sign in to comment.