cawUi.cpp,cawUiDecl.h : Added 'meter' implementation.
This commit is contained in:
parent
d72e26caaf
commit
3ae48f3fc5
@ -60,7 +60,7 @@ namespace caw {
|
|||||||
rc_t rc = kOkRC;
|
rc_t rc = kOkRC;
|
||||||
if((rc = uiCreateCheck(p->ioH, uuid_ref, widgetListUuId, nullptr, kCheckWidgetId, kInvalidId, nullptr, nullptr )) != kOkRC )
|
if((rc = uiCreateCheck(p->ioH, uuid_ref, widgetListUuId, nullptr, kCheckWidgetId, kInvalidId, nullptr, nullptr )) != kOkRC )
|
||||||
{
|
{
|
||||||
rc = cwLogError(rc,"Check box widget create failed on '%s'.",cwStringNullGuard(ui_var->label));
|
rc = cwLogError(rc,"Check box widget create failed on '%s:%i'.",cwStringNullGuard(ui_var->label),ui_var->label_sfx_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
@ -72,7 +72,7 @@ namespace caw {
|
|||||||
|
|
||||||
if((rc = uiCreateNumb( p->ioH, uuid_ref, widgetListUuId, nullptr, appId, kInvalidId, nullptr, nullptr, min_val, max_val, step, dec_pl )) != kOkRC )
|
if((rc = uiCreateNumb( p->ioH, uuid_ref, widgetListUuId, nullptr, appId, kInvalidId, nullptr, nullptr, min_val, max_val, step, dec_pl )) != kOkRC )
|
||||||
{
|
{
|
||||||
rc = cwLogError(rc,"Integer widget create failed on '%s'.",cwStringNullGuard(ui_var->label));
|
rc = cwLogError(rc,"Integer widget create failed on '%s:%i'.",cwStringNullGuard(ui_var->label),ui_var->label_sfx_id);
|
||||||
goto errLabel;
|
goto errLabel;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -80,12 +80,26 @@ namespace caw {
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
rc_t _create_string_widgets( ui_t* p, unsigned widgetListUuId, const flow::ui_var_t* ui_var, unsigned& uuid_ref )
|
rc_t _create_string_widget( ui_t* p, unsigned widgetListUuId, const flow::ui_var_t* ui_var, unsigned& uuid_ref )
|
||||||
{
|
{
|
||||||
rc_t rc = kOkRC;
|
rc_t rc = kOkRC;
|
||||||
if((rc = uiCreateStr( p->ioH, uuid_ref, widgetListUuId, nullptr, kStringWidgetId, kInvalidId, nullptr, nullptr )) != kOkRC )
|
if((rc = uiCreateStr( p->ioH, uuid_ref, widgetListUuId, nullptr, kStringWidgetId, kInvalidId, nullptr, nullptr )) != kOkRC )
|
||||||
{
|
{
|
||||||
rc = cwLogError(rc,"String widget create failed on '%s'.",cwStringNullGuard(ui_var->label));
|
rc = cwLogError(rc,"String widget create failed on '%s:%i'.",cwStringNullGuard(ui_var->label),ui_var->label_sfx_id);
|
||||||
|
goto errLabel;
|
||||||
|
}
|
||||||
|
|
||||||
|
errLabel:
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
|
rc_t _create_meter_widget( ui_t* p, unsigned widgetListUuId, const flow::ui_var_t* ui_var, unsigned& uuid_ref, double min_val, double max_val )
|
||||||
|
{
|
||||||
|
rc_t rc = kOkRC;
|
||||||
|
|
||||||
|
if((rc = uiCreateProg(p->ioH, uuid_ref, widgetListUuId, nullptr, kMeterWidgetId, kInvalidId, nullptr, nullptr, min_val, max_val )) != kOkRC )
|
||||||
|
{
|
||||||
|
rc = cwLogError(rc,"Meter widget create failed on '%s:%i'.",cwStringNullGuard(ui_var->label),ui_var->label_sfx_id);
|
||||||
goto errLabel;
|
goto errLabel;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -104,18 +118,87 @@ namespace caw {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
errLabel:
|
errLabel:
|
||||||
return rc;
|
return rc;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rc_t _get_widget_type_id( const flow::ui_var_t* ui_var, unsigned& widget_type_id_ref )
|
||||||
|
{
|
||||||
|
rc_t rc = kOkRC;
|
||||||
|
unsigned value_type_flag = ui_var->value_tid & flow::kTypeMask;
|
||||||
|
const object_t* cfg = nullptr;
|
||||||
|
const object_t* ui_cfg = nullptr;
|
||||||
|
const char* widget_type_label = nullptr;
|
||||||
|
|
||||||
|
idLabelPair_t typeA[] = {
|
||||||
|
{ kMeterWidgetId, "meter" },
|
||||||
|
{ kInvalidId, nullptr }
|
||||||
|
};
|
||||||
|
|
||||||
|
widget_type_id_ref = kInvalidId;
|
||||||
|
|
||||||
|
switch( value_type_flag )
|
||||||
|
{
|
||||||
|
case flow::kBoolTFl: widget_type_id_ref = kCheckWidgetId; break;
|
||||||
|
case flow::kIntTFl: widget_type_id_ref = kIntWidgetId; break;
|
||||||
|
case flow::kUIntTFl: widget_type_id_ref = kUIntWidgetId; break;
|
||||||
|
case flow::kFloatTFl: widget_type_id_ref = kFloatWidgetId; break;
|
||||||
|
case flow::kDoubleTFl: widget_type_id_ref = kDoubleWidgetId; break;
|
||||||
|
case flow::kStringTFl: widget_type_id_ref = kStringWidgetId; break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// get the proc desc 'vars' dict.
|
||||||
|
if((rc = ui_var->ui_proc->proc->class_desc->cfg->getv_opt("vars",cfg)) != kOkRC )
|
||||||
|
{
|
||||||
|
rc = cwLogError(rc,"Error parsing proc desc. 'vars'.");
|
||||||
|
goto errLabel;
|
||||||
|
}
|
||||||
|
|
||||||
|
// locate this 'var' in the var-list
|
||||||
|
if((cfg = cfg->find(ui_var->label)) == nullptr )
|
||||||
|
{
|
||||||
|
rc = cwLogError(rc,"Error locating 'var' '%s' on proc desc.",ui_var->label);
|
||||||
|
goto errLabel;
|
||||||
|
}
|
||||||
|
|
||||||
|
// get the 'ui' record for this var
|
||||||
|
if((rc = cfg->getv_opt("ui",ui_cfg)) != kOkRC )
|
||||||
|
{
|
||||||
|
rc = cwLogError(rc,"Error parsing variable 'ui' cfg.");
|
||||||
|
goto errLabel;
|
||||||
|
}
|
||||||
|
|
||||||
|
// if a 'ui' record was found
|
||||||
|
if( ui_cfg != nullptr )
|
||||||
|
{
|
||||||
|
// get the type of this 'ui' widget
|
||||||
|
if((rc = ui_cfg->getv("type",widget_type_label)) != kOkRC )
|
||||||
|
{
|
||||||
|
rc = cwLogError(rc,"Error parsing variable 'ui' type cfg.");
|
||||||
|
goto errLabel;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
if((widget_type_id_ref = labelToId(typeA,widget_type_label,kInvalidId)) == kInvalidId )
|
||||||
|
{
|
||||||
|
rc = cwLogError(rc,"An unknown widget type '%s' was encountered.",widget_type_label);
|
||||||
|
goto errLabel;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
errLabel:
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
rc_t _create_var_ui( ui_t* p, unsigned parentListUuId, const flow::ui_var_t* ui_var, unsigned var_idx )
|
rc_t _create_var_ui( ui_t* p, unsigned parentListUuId, const flow::ui_var_t* ui_var, unsigned var_idx )
|
||||||
{
|
{
|
||||||
|
|
||||||
rc_t rc = kOkRC;
|
rc_t rc = kOkRC;
|
||||||
unsigned widgetListUuId = kInvalidId;
|
unsigned widgetListUuId = kInvalidId;
|
||||||
unsigned varUuId = kInvalidId;
|
unsigned varUuId = kInvalidId;
|
||||||
unsigned value_type_flag = 0;
|
unsigned widget_type_id = kInvalidId;
|
||||||
unsigned widget_uuId = kInvalidId;
|
unsigned widget_uuId = kInvalidId;
|
||||||
|
|
||||||
// insert the var panel
|
// insert the var panel
|
||||||
@ -128,20 +211,25 @@ namespace caw {
|
|||||||
if( ui_var == nullptr )
|
if( ui_var == nullptr )
|
||||||
goto errLabel;
|
goto errLabel;
|
||||||
|
|
||||||
value_type_flag = ui_var->value_tid & flow::kTypeMask;
|
// get the type of this widget
|
||||||
|
if((rc= _get_widget_type_id( ui_var, widget_type_id )) != kOkRC )
|
||||||
|
{
|
||||||
|
goto errLabel;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
varUuId = uiFindElementUuId( p->ioH, parentListUuId, kVarPanelId, var_idx );
|
varUuId = uiFindElementUuId( p->ioH, parentListUuId, kVarPanelId, var_idx );
|
||||||
widgetListUuId = uiFindElementUuId( p->ioH, varUuId, kWidgetListId, kInvalidId );
|
widgetListUuId = uiFindElementUuId( p->ioH, varUuId, kWidgetListId, kInvalidId );
|
||||||
|
|
||||||
//printf("%i %i %i\n",var_idx, varUuId,widgetListUuId);
|
//printf("%i %i %i\n",var_idx, varUuId,widgetListUuId);
|
||||||
|
|
||||||
switch( value_type_flag )
|
switch( widget_type_id )
|
||||||
{
|
{
|
||||||
case flow::kBoolTFl:
|
case kCheckWidgetId:
|
||||||
rc = _create_bool_widgets(p,widgetListUuId,ui_var,widget_uuId);
|
rc = _create_bool_widgets(p,widgetListUuId,ui_var,widget_uuId);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case flow::kIntTFl:
|
case kIntWidgetId:
|
||||||
{
|
{
|
||||||
int min_val = std::numeric_limits<int>::min();
|
int min_val = std::numeric_limits<int>::min();
|
||||||
int max_val = std::numeric_limits<int>::max();
|
int max_val = std::numeric_limits<int>::max();
|
||||||
@ -149,7 +237,7 @@ namespace caw {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case flow::kUIntTFl:
|
case kUIntWidgetId:
|
||||||
{
|
{
|
||||||
unsigned min_val = 0;
|
unsigned min_val = 0;
|
||||||
unsigned max_val = std::numeric_limits<unsigned>::max();
|
unsigned max_val = std::numeric_limits<unsigned>::max();
|
||||||
@ -157,7 +245,7 @@ namespace caw {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case flow::kFloatTFl:
|
case kFloatWidgetId:
|
||||||
{
|
{
|
||||||
float min_val = std::numeric_limits<float>::min();
|
float min_val = std::numeric_limits<float>::min();
|
||||||
float max_val = std::numeric_limits<float>::max();
|
float max_val = std::numeric_limits<float>::max();
|
||||||
@ -165,7 +253,7 @@ namespace caw {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case flow::kDoubleTFl:
|
case kDoubleWidgetId:
|
||||||
{
|
{
|
||||||
double min_val = std::numeric_limits<float>::min();
|
double min_val = std::numeric_limits<float>::min();
|
||||||
double max_val = std::numeric_limits<float>::max();
|
double max_val = std::numeric_limits<float>::max();
|
||||||
@ -173,12 +261,21 @@ namespace caw {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case flow::kStringTFl:
|
case kStringWidgetId:
|
||||||
rc = _create_string_widgets(p,widgetListUuId,ui_var,widget_uuId);
|
rc = _create_string_widget(p,widgetListUuId,ui_var,widget_uuId);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case kMeterWidgetId:
|
||||||
|
{
|
||||||
|
double min_val = -100.0;
|
||||||
|
double max_val = 0;
|
||||||
|
rc = _create_meter_widget(p,widgetListUuId,ui_var,widget_uuId,min_val,max_val);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
const char* type_label;
|
const char* type_label;
|
||||||
if((type_label = flow::value_type_flag_to_label(value_type_flag)) != nullptr )
|
if((type_label = flow::value_type_flag_to_label(value_type_flag)) != nullptr )
|
||||||
cwLogWarning("No UI widgets for type:%s",type_label);
|
cwLogWarning("No UI widgets for type:%s",type_label);
|
||||||
@ -186,7 +283,7 @@ namespace caw {
|
|||||||
{
|
{
|
||||||
cwLogError(kInvalidArgRC,"The value type flag: 0x%x is not known. No UI widget was created.",value_type_flag);
|
cwLogError(kInvalidArgRC,"The value type flag: 0x%x is not known. No UI widget was created.",value_type_flag);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
goto errLabel;
|
goto errLabel;
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -200,6 +297,9 @@ namespace caw {
|
|||||||
if( ui_var->desc_flags & flow::kInitVarDescFl )
|
if( ui_var->desc_flags & flow::kInitVarDescFl )
|
||||||
uiClearEnable(p->ioH, widget_uuId );
|
uiClearEnable(p->ioH, widget_uuId );
|
||||||
|
|
||||||
|
if((rc = set_variable_user_id( p->ioFlowH, ui_var, widget_uuId )) != kOkRC )
|
||||||
|
goto errLabel;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ namespace caw {
|
|||||||
kFloatWidgetId,
|
kFloatWidgetId,
|
||||||
kDoubleWidgetId,
|
kDoubleWidgetId,
|
||||||
kStringWidgetId,
|
kStringWidgetId,
|
||||||
|
kMeterWidgetId,
|
||||||
|
|
||||||
|
|
||||||
kPgmBaseSelId,
|
kPgmBaseSelId,
|
||||||
|
Loading…
Reference in New Issue
Block a user