Commit 11ef0ffc authored by Claes Sjofors's avatar Claes Sjofors

Ge editor, search object added, and link error in a ge graph also prints object name

parent bf62527f
......@@ -5127,6 +5127,7 @@ save <link>gecmd_save
scale <link>gecmd_scale
<t>scale currentobject <link>gecmd_scale_current
<t>scale selectedobject <link>gecmd_scale_selected
search object <link>gecmd_search_object
select <link>gecmd_select
<t>select currentobject <link>gecmd_select_currentobject
<t>select clear <link>gecmd_select_clear
......@@ -5488,6 +5489,24 @@ Scale the selected object.
/y <t>y coordinate for the reference point of the scaling.
</topic>
<topic>gecmd_search_object
search object
Search for an object.
The found object is selected after the search.
<b>Syntax
<c>ge> search object /name=
/name <t>Object name.
</topic>
<topic>gecmd_select_clear <style>function
select clear
Clear the select list.
</topic>
<topic>gecmd_select <style>function
select
</topic>
......
......@@ -5080,6 +5080,7 @@ save <link>gecmd_save
scale <link>gecmd_scale
<t>scale currentobject <link>gecmd_scale_current
<t>scale selectedobject <link>gecmd_scale_selected
search object <link>gecmd_search_object
select <link>gecmd_select
<t>select currentobject <link>gecmd_select_currentobject
<t>select clear <link>gecmd_select_clear
......@@ -5409,6 +5410,18 @@ Skalar om utvalt objekt.
/y <t>y-koordinat för skalningens referenspunkt.
</topic>
<topic>gecmd_search_object
search object
Sök efter ett objekt.
När sökningen är gjord väljs det hittade objektet ut.
<b>Syntax
<c>ge> search object /name=
/name <t>Objeksnamn.
</topic>
<topic>gecmd_select <style>function
select
</topic>
......
......@@ -414,6 +414,11 @@ void GeGtk::activate_change_name(GtkWidget *w, gpointer gectx)
((Ge *)gectx)->activate_change_name();
}
void GeGtk::activate_search_object(GtkWidget *w, gpointer gectx)
{
((Ge *)gectx)->activate_search_object();
}
void GeGtk::activate_preview_start(GtkWidget *w, gpointer gectx)
{
((Ge *)gectx)->activate_preview_start();
......@@ -1875,7 +1880,11 @@ GeGtk::GeGtk( void *x_parent_ctx,
g_signal_connect( edit_change_name, "activate",
G_CALLBACK(activate_change_name), this);
GtkWidget *edit_objattr_store = gtk_menu_item_new_with_mnemonic( "O_bject Attributes Store");
GtkWidget *edit_search_object = gtk_menu_item_new_with_mnemonic( "_Search Object");
g_signal_connect( edit_search_object, "activate",
G_CALLBACK(activate_search_object), this);
GtkWidget *edit_objattr_store = gtk_menu_item_new_with_mnemonic( "_Object Attributes Store");
g_signal_connect( edit_objattr_store, "activate",
G_CALLBACK(activate_objattr_store), this);
gtk_widget_add_accelerator( edit_objattr_store, "activate", accel_g,
......@@ -1905,6 +1914,7 @@ GeGtk::GeGtk( void *x_parent_ctx,
gtk_menu_shell_append(GTK_MENU_SHELL(edit_menu), edit_create_subgraph);
gtk_menu_shell_append(GTK_MENU_SHELL(edit_menu), edit_change_text);
gtk_menu_shell_append(GTK_MENU_SHELL(edit_menu), edit_change_name);
gtk_menu_shell_append(GTK_MENU_SHELL(edit_menu), edit_search_object);
gtk_menu_shell_append(GTK_MENU_SHELL(edit_menu), edit_objattr_store);
gtk_menu_shell_append(GTK_MENU_SHELL(edit_menu), edit_objattr_recall);
gtk_menu_shell_append(GTK_MENU_SHELL(edit_menu), edit_command);
......
......@@ -131,6 +131,7 @@ class GeGtk : public Ge {
static void activate_create_subgraph(GtkWidget *w, gpointer gectx);
static void activate_change_text( GtkWidget *w, gpointer gectx);
static void activate_change_name( GtkWidget *w, gpointer gectx);
static void activate_search_object( GtkWidget *w, gpointer gectx);
static void activate_preview_start( GtkWidget *w, gpointer gectx);
static void activate_preview_stop( GtkWidget *w, gpointer gectx);
static void activate_delete( GtkWidget *w, gpointer gectx);
......
......@@ -762,6 +762,21 @@ void Ge::activate_change_name()
graph->change_select_name();
}
void Ge::search_object_cb( void *ge_ctx, void *data, char *name)
{
Ge *gectx = (Ge *)ge_ctx;
int sts;
sts = gectx->graph->search_object( name);
if ( EVEN(sts))
gectx->message( 'E', "No such object");
}
void Ge::activate_search_object()
{
wow->CreateInputDialog( this, "Search Object", "Object name", search_object_cb, 0, 80, 0, 0);
}
void Ge::activate_preview_start()
{
int sts;
......
......@@ -160,6 +160,7 @@ class Ge {
void activate_change_text();
void activate_change_name();
void activate_search_object();
void activate_preview_start();
void activate_preview_stop();
void activate_delete();
......@@ -332,6 +333,7 @@ class Ge {
static int create_modal_dialog_cb( void *ge_ctx, const char *title, const char *text,
const char *button1, const char *button2, const char *button3,
const char *image);
static void search_object_cb( void *ge_ctx, void *data, char *name);
};
#endif
......@@ -2179,7 +2179,7 @@ int GeDigLowColor::connect( grow_tObject object, glow_sTraceData *trace_data)
p = (pwr_tBoolean *) dyn->graph->localdb_ref_or_create( parsed_name, attr_type);
break;
case graph_eDatabase_Gdh:
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size);
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size, object);
if ( EVEN(sts)) return sts;
break;
default: ;
......@@ -2458,7 +2458,7 @@ int GeDigColor::connect( grow_tObject object, glow_sTraceData *trace_data)
get_bit( parsed_name, attr_type, &bitmask);
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size);
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size, object);
a_typeid = attr_type;
if ( EVEN(sts)) return sts;
......@@ -2636,7 +2636,7 @@ int GeDigWarning::connect( grow_tObject object, glow_sTraceData *trace_data)
a_typeid = attr_type;
get_bit( parsed_name, attr_type, &bitmask);
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size);
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size, object);
if ( EVEN(sts)) return sts;
trace_data->p = &pdummy;
......@@ -2803,7 +2803,7 @@ int GeDigError::connect( grow_tObject object, glow_sTraceData *trace_data)
a_typeid = attr_type;
get_bit( parsed_name, attr_type, &bitmask);
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size);
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size, object);
if ( EVEN(sts)) return sts;
trace_data->p = &pdummy;
......@@ -3019,7 +3019,7 @@ int GeDigFlash::connect( grow_tObject object, glow_sTraceData *trace_data)
a_typeid = attr_type;
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size);
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size, object);
if ( EVEN(sts)) return sts;
trace_data->p = &pdummy;
......@@ -3284,7 +3284,7 @@ int GeInvisible::connect( grow_tObject object, glow_sTraceData *trace_data)
else {
switch ( db) {
case graph_eDatabase_Gdh:
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size);
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size, object);
if ( EVEN(sts)) return sts;
break;
case graph_eDatabase_Local:
......@@ -3467,7 +3467,7 @@ int GeDigTextColor::connect( grow_tObject object, glow_sTraceData *trace_data)
get_bit( parsed_name, attr_type, &bitmask);
a_typeid = attr_type;
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size);
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size, object);
if ( EVEN(sts)) return sts;
trace_data->p = &pdummy;
......@@ -3619,7 +3619,7 @@ int GeDigBorder::connect( grow_tObject object, glow_sTraceData *trace_data)
get_bit( parsed_name, attr_type, &bitmask);
a_typeid = attr_type;
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size);
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size, object);
if ( EVEN(sts)) return sts;
trace_data->p = &pdummy;
......@@ -3822,7 +3822,7 @@ int GeDigText::connect( grow_tObject object, glow_sTraceData *trace_data)
get_bit( parsed_name, attr_type, &bitmask);
a_typeid = attr_type;
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size);
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size, object);
if ( EVEN(sts)) return sts;
trace_data->p = &pdummy;
......@@ -4077,7 +4077,7 @@ int GeValue::connect( grow_tObject object, glow_sTraceData *trace_data)
default: ;
}
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, &p, &subid, attr_size);
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, &p, &subid, attr_size, object);
if ( EVEN(sts)) return sts;
if ( attr_type != 0)
annot_typeid = attr_type;
......@@ -5272,7 +5272,7 @@ int GeAnalogColor::connect( grow_tObject object, glow_sTraceData *trace_data)
}
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&e->p,
&e->subid, e->size);
&e->subid, e->size, object);
if ( EVEN(sts)) return sts;
trace_data->p = &pdummy;
......@@ -5558,7 +5558,7 @@ int GeRotate::connect( grow_tObject object, glow_sTraceData *trace_data)
if ( strcmp( parsed_name,"") == 0)
return 1;
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size);
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size, object);
if ( EVEN(sts)) return sts;
trace_data->p = &pdummy;
......@@ -5824,7 +5824,7 @@ int GeMove::connect( grow_tObject object, glow_sTraceData *trace_data)
&inverted, &move_x_type, &move_x_size);
if ( strcmp( parsed_name,"") != 0) {
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&move_x_p,
&move_x_subid, move_x_size);
&move_x_subid, move_x_size, object);
if ( EVEN(sts)) return sts;
}
move_y_size = 4;
......@@ -5834,7 +5834,7 @@ int GeMove::connect( grow_tObject object, glow_sTraceData *trace_data)
&inverted, &move_y_type, &move_y_size);
if ( strcmp( parsed_name,"") != 0) {
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&move_y_p,
&move_y_subid, move_y_size);
&move_y_subid, move_y_size, object);
if ( EVEN(sts)) return sts;
}
scale_x_size = 4;
......@@ -5844,7 +5844,7 @@ int GeMove::connect( grow_tObject object, glow_sTraceData *trace_data)
&inverted, &scale_x_type, &scale_x_size);
if ( strcmp( parsed_name,"") != 0) {
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&scale_x_p,
&scale_x_subid, scale_x_size);
&scale_x_subid, scale_x_size, object);
if ( EVEN(sts)) return sts;
}
scale_y_size = 4;
......@@ -5854,7 +5854,7 @@ int GeMove::connect( grow_tObject object, glow_sTraceData *trace_data)
&inverted, &scale_y_type, &scale_y_size);
if ( strcmp( parsed_name,"") != 0) {
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&scale_y_p,
&scale_y_subid, scale_y_size);
&scale_y_subid, scale_y_size, object);
if ( EVEN(sts)) return sts;
}
trace_data->p = &pdummy;
......@@ -6149,7 +6149,7 @@ int GeAnalogShift::connect( grow_tObject object, glow_sTraceData *trace_data)
return 1;
}
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size);
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size, object);
if ( EVEN(sts)) return sts;
trace_data->p = &pdummy;
......@@ -6316,7 +6316,7 @@ int GeDigShift::connect( grow_tObject object, glow_sTraceData *trace_data)
switch ( db) {
case graph_eDatabase_Gdh:
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size);
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size, object);
if ( EVEN(sts)) return sts;
break;
case graph_eDatabase_Ccm:
......@@ -6489,7 +6489,7 @@ int GeDigFourShift::connect( grow_tObject object, glow_sTraceData *trace_data)
switch ( db1) {
case graph_eDatabase_Gdh:
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p1, &subid1, size1);
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p1, &subid1, size1, object);
if ( EVEN(sts)) return sts;
break;
case graph_eDatabase_Ccm:
......@@ -6510,7 +6510,7 @@ int GeDigFourShift::connect( grow_tObject object, glow_sTraceData *trace_data)
switch ( db2) {
case graph_eDatabase_Gdh:
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p2, &subid2, size2);
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p2, &subid2, size2, object);
if ( EVEN(sts)) return sts;
break;
case graph_eDatabase_Ccm:
......@@ -6532,7 +6532,7 @@ int GeDigFourShift::connect( grow_tObject object, glow_sTraceData *trace_data)
switch ( db3) {
case graph_eDatabase_Gdh:
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p3, &subid3, size3);
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p3, &subid3, size3, object);
if ( EVEN(sts)) return sts;
break;
case graph_eDatabase_Ccm:
......@@ -6735,7 +6735,7 @@ int GeScrollingText::connect( grow_tObject object, glow_sTraceData *trace_data)
switch ( db) {
case graph_eDatabase_Gdh:
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size);
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size, object);
if ( EVEN(sts)) return sts;
break;
case graph_eDatabase_Ccm:
......@@ -7091,7 +7091,7 @@ int GeDigBackgroundColor::connect( grow_tObject object, glow_sTraceData *trace_d
get_bit( parsed_name, attr_type, &bitmask);
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size);
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size, object);
a_typeid = attr_type;
if ( EVEN(sts)) return sts;
......@@ -7245,7 +7245,7 @@ int GeAnimation::connect( grow_tObject object, glow_sTraceData *trace_data)
get_bit( parsed_name, attr_type, &bitmask);
a_typeid = attr_type;
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size);
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size, object);
if ( EVEN(sts)) return sts;
trace_data->p = &pdummy;
......@@ -7574,7 +7574,7 @@ int GeBar::connect( grow_tObject object, glow_sTraceData *trace_data)
switch ( db) {
case graph_eDatabase_Gdh:
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p,
&subid, attr_size);
&subid, attr_size, object);
if ( EVEN(sts)) return sts;
bar_typeid = attr_type;
break;
......@@ -7594,7 +7594,7 @@ int GeBar::connect( grow_tObject object, glow_sTraceData *trace_data)
if ( strcmp(parsed_name, "") != 0 &&
attr_type == pwr_eType_Float32) {
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&min_value_p,
&min_value_subid, attr_size);
&min_value_subid, attr_size, object);
}
max_value_p = 0;
......@@ -7603,7 +7603,7 @@ int GeBar::connect( grow_tObject object, glow_sTraceData *trace_data)
if ( strcmp(parsed_name, "") != 0 &&
attr_type == pwr_eType_Float32) {
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&max_value_p,
&max_value_subid, attr_size);
&max_value_subid, attr_size, object);
}
trace_data->p = &pdummy;
......@@ -7841,7 +7841,7 @@ int GeTrend::connect( grow_tObject object, glow_sTraceData *trace_data)
switch ( db1) {
case graph_eDatabase_Gdh:
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p1,
&subid1, attr_size);
&subid1, attr_size, object);
if ( EVEN(sts)) return sts;
trend_typeid1 = attr_type;
break;
......@@ -7864,7 +7864,7 @@ int GeTrend::connect( grow_tObject object, glow_sTraceData *trace_data)
switch ( db2) {
case graph_eDatabase_Gdh:
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p2,
&subid2, attr_size);
&subid2, attr_size, object);
if ( EVEN(sts)) return sts;
trend_typeid2 = attr_type;
break;
......@@ -7889,7 +7889,7 @@ int GeTrend::connect( grow_tObject object, glow_sTraceData *trace_data)
if ( strcmp(parsed_name, "") != 0 &&
attr_type == pwr_eType_Float32) {
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&min_value1_p,
&min_value_subid1, attr_size);
&min_value_subid1, attr_size, object);
}
max_value1_p = 0;
dyn->parse_attr_name( maxvalue_attr1, parsed_name,
......@@ -7897,7 +7897,7 @@ int GeTrend::connect( grow_tObject object, glow_sTraceData *trace_data)
if ( strcmp(parsed_name, "") != 0 &&
attr_type == pwr_eType_Float32) {
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&max_value1_p,
&max_value_subid1, attr_size);
&max_value_subid1, attr_size, object);
}
min_value2_p = 0;
dyn->parse_attr_name( minvalue_attr2, parsed_name,
......@@ -7905,7 +7905,7 @@ int GeTrend::connect( grow_tObject object, glow_sTraceData *trace_data)
if ( strcmp(parsed_name, "") != 0 &&
attr_type == pwr_eType_Float32) {
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&min_value2_p,
&min_value_subid2, attr_size);
&min_value_subid2, attr_size, object);
}
max_value2_p = 0;
dyn->parse_attr_name( maxvalue_attr2, parsed_name,
......@@ -7913,7 +7913,7 @@ int GeTrend::connect( grow_tObject object, glow_sTraceData *trace_data)
if ( strcmp(parsed_name, "") != 0 &&
attr_type == pwr_eType_Float32) {
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&max_value2_p,
&max_value_subid2, attr_size);
&max_value_subid2, attr_size, object);
}
hold_p = 0;
......@@ -7923,7 +7923,7 @@ int GeTrend::connect( grow_tObject object, glow_sTraceData *trace_data)
switch ( hold_db) {
case graph_eDatabase_Gdh:
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&hold_p,
&hold_subid, attr_size);
&hold_subid, attr_size, object);
if ( EVEN(sts)) return sts;
break;
case graph_eDatabase_Local:
......@@ -8367,7 +8367,7 @@ int GeXY_Curve::connect( grow_tObject object, glow_sTraceData *trace_data)
if ( strcmp( parsed_name,"") != 0) {
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&update_p,
&update_subid, attr_size);
&update_subid, attr_size, object);
if ( EVEN(sts)) return sts;
}
......@@ -8377,7 +8377,7 @@ int GeXY_Curve::connect( grow_tObject object, glow_sTraceData *trace_data)
if ( strcmp(parsed_name, "") != 0 &&
(attr_type == pwr_eType_Int32 || attr_type == pwr_eType_UInt32)) {
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&noofpoints_p,
&noofpoints_subid, attr_size);
&noofpoints_subid, attr_size, object);
}
x_min_value_p = 0;
......@@ -8386,7 +8386,7 @@ int GeXY_Curve::connect( grow_tObject object, glow_sTraceData *trace_data)
if ( strcmp(parsed_name, "") != 0 &&
attr_type == pwr_eType_Float32) {
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&x_min_value_p,
&x_min_value_subid, attr_size);
&x_min_value_subid, attr_size, object);
}
x_max_value_p = 0;
dyn->parse_attr_name( x_maxvalue_attr, parsed_name,
......@@ -8394,7 +8394,7 @@ int GeXY_Curve::connect( grow_tObject object, glow_sTraceData *trace_data)
if ( strcmp(parsed_name, "") != 0 &&
attr_type == pwr_eType_Float32) {
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&x_max_value_p,
&x_max_value_subid, attr_size);
&x_max_value_subid, attr_size, object);
}
y_min_value_p = 0;
......@@ -8403,7 +8403,7 @@ int GeXY_Curve::connect( grow_tObject object, glow_sTraceData *trace_data)
if ( strcmp(parsed_name, "") != 0 &&
attr_type == pwr_eType_Float32) {
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&y_min_value_p,
&y_min_value_subid, attr_size);
&y_min_value_subid, attr_size, object);
}
y_max_value_p = 0;
dyn->parse_attr_name( y_maxvalue_attr, parsed_name,
......@@ -8411,7 +8411,7 @@ int GeXY_Curve::connect( grow_tObject object, glow_sTraceData *trace_data)
if ( strcmp(parsed_name, "") != 0 &&
attr_type == pwr_eType_Float32) {
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&y_max_value_p,
&y_max_value_subid, attr_size);
&y_max_value_subid, attr_size, object);
}
trace_data->p = &pdummy;
......@@ -9069,7 +9069,7 @@ int GeTable::connect( grow_tObject object, glow_sTraceData *trace_data)
switch ( db[i]) {
case graph_eDatabase_Gdh:
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p[i],
&subid[i], col_size);
&subid[i], col_size, object);
if ( EVEN(sts)) return sts;
type_id[i] = attr_type;
break;
......@@ -9109,7 +9109,7 @@ int GeTable::connect( grow_tObject object, glow_sTraceData *trace_data)
strcat( name, &parsed_name[7]);
type_id[i] = attr_type;
sts = dyn->graph->ref_object_info( dyn->cycle, name, (void **)&headerref_p[i][j],
&headerref_subid[i][j], size[i]);
&headerref_subid[i][j], size[i], object);
if ( EVEN(sts)) return sts;
}
}
......@@ -9170,7 +9170,7 @@ int GeTable::connect( grow_tObject object, glow_sTraceData *trace_data)
switch ( sel_db[i]) {
case graph_eDatabase_Gdh:
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&sel_p[i],
&sel_subid[i], sel_elements[i] * sizeof(pwr_tBoolean));
&sel_subid[i], sel_elements[i] * sizeof(pwr_tBoolean), object);
if ( EVEN(sts)) return sts;
break;
default:
......@@ -9915,7 +9915,7 @@ int GeStatusColor::connect( grow_tObject object, glow_sTraceData *trace_data)
if ( strcmp( parsed_name,"") == 0)
return 1;
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size);
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size, object);
if ( EVEN(sts)) return sts;
trace_data->p = &pdummy;
......@@ -10212,7 +10212,7 @@ int GePie::connect( grow_tObject object, glow_sTraceData *trace_data)
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p[i],
&subid[i], asize);
&subid[i], asize, object);
if ( EVEN(sts)) return sts;
trace_data->p = &pdummy;
......@@ -10455,7 +10455,7 @@ int GeBarChart::connect( grow_tObject object, glow_sTraceData *trace_data)
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p[i],
&subid[i], bars * asize);
&subid[i], bars * asize, object);
if ( EVEN(sts)) return sts;
trace_data->p = &pdummy;
......@@ -10622,7 +10622,7 @@ int GeAxis::connect( grow_tObject object, glow_sTraceData *trace_data)
switch ( db) {
case graph_eDatabase_Gdh:
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&min_value_p,
&min_value_subid, attr_size);
&min_value_subid, attr_size, object);
break;
case graph_eDatabase_Local:
min_value_p = (pwr_tFloat32 *) dyn->graph->localdb_ref_or_create( parsed_name, attr_type_min);
......@@ -10633,13 +10633,13 @@ int GeAxis::connect( grow_tObject object, glow_sTraceData *trace_data)
break;
case pwr_eType_Int32:
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&imin_value_p,
&min_value_subid, attr_size);
&min_value_subid, attr_size, object);
min_found = 1;
break;
case pwr_eType_Time:
case pwr_eType_DeltaTime:
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&tmin_value_p,
&min_value_subid, attr_size);
&min_value_subid, attr_size, object);
min_found = 1;
break;
default: ;
......@@ -10656,7 +10656,7 @@ int GeAxis::connect( grow_tObject object, glow_sTraceData *trace_data)
switch ( db) {
case graph_eDatabase_Gdh:
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&max_value_p,
&max_value_subid, attr_size);
&max_value_subid, attr_size, object);
case graph_eDatabase_Local:
max_value_p = (pwr_tFloat32 *) dyn->graph->localdb_ref_or_create( parsed_name, attr_type_max);
default:
......@@ -10666,13 +10666,13 @@ int GeAxis::connect( grow_tObject object, glow_sTraceData *trace_data)
break;
case pwr_eType_Int32:
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&imax_value_p,
&max_value_subid, attr_size);
&max_value_subid, attr_size, object);
max_found = 1;
break;
case pwr_eType_Time:
case pwr_eType_DeltaTime:
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&tmax_value_p,
&max_value_subid, attr_size);
&max_value_subid, attr_size, object);
max_found = 1;
break;
default: ;
......@@ -11359,7 +11359,7 @@ int GeDigSound::connect( grow_tObject object, glow_sTraceData *trace_data)
get_bit( parsed_name, attr_type, &bitmask);
a_typeid = attr_type;
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size);
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size, object);
if ( EVEN(sts)) return sts;
trace_data->p = &pdummy;
......@@ -11567,7 +11567,7 @@ int GeFillLevel::connect( grow_tObject object, glow_sTraceData *trace_data)
if ( strcmp( parsed_name,"") == 0)
return 1;
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size);
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size, object);
if ( EVEN(sts)) return sts;
trace_data->p = &pdummy;
......@@ -11595,7 +11595,7 @@ int GeFillLevel::connect( grow_tObject object, glow_sTraceData *trace_data)
if ( strcmp(parsed_name, "") != 0 &&
attr_type == pwr_eType_Float32) {
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&min_value_p,
&min_value_subid, attr_size);
&min_value_subid, attr_size, object);
}
max_value_p = 0;
......@@ -11604,7 +11604,7 @@ int GeFillLevel::connect( grow_tObject object, glow_sTraceData *trace_data)
if ( strcmp(parsed_name, "") != 0 &&
attr_type == pwr_eType_Float32) {
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&max_value_p,
&max_value_subid, attr_size);
&max_value_subid, attr_size, object);
}
return 1;
}
......@@ -11849,7 +11849,7 @@ int GeDigCommand::connect( grow_tObject object, glow_sTraceData *trace_data)
get_bit( parsed_name, attr_type, &bitmask);
a_typeid = attr_type;
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size);
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size, object);
if ( EVEN(sts)) return sts;
......@@ -13622,7 +13622,7 @@ int GeRadioButton::connect( grow_tObject object, glow_sTraceData *trace_data)
switch ( db) {
case graph_eDatabase_Gdh:
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size);
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size, object);
if ( EVEN(sts)) return sts;
break;
case graph_eDatabase_Ccm:
......@@ -14868,7 +14868,7 @@ int GeSlider::connect( grow_tObject object, glow_sTraceData *trace_data)
default:
return 1;
}
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size);
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&p, &subid, size, object);
if ( EVEN(sts)) return sts;
trace_data->p = &pdummy;
......@@ -14932,7 +14932,7 @@ int GeSlider::connect( grow_tObject object, glow_sTraceData *trace_data)
if ( strcmp(parsed_name, "") != 0 &&
a_type == pwr_eType_Float32) {
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&min_value_p,
&min_value_subid, a_size);
&min_value_subid, a_size, object);
}
max_value_p = 0;
......@@ -14941,7 +14941,7 @@ int GeSlider::connect( grow_tObject object, glow_sTraceData *trace_data)
if ( strcmp(parsed_name, "") != 0 &&
a_type == pwr_eType_Float32) {
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&max_value_p,
&max_value_subid, a_size);
&max_value_subid, a_size, object);
}
insensitive_p = 0;
......@@ -14952,7 +14952,7 @@ int GeSlider::connect( grow_tObject object, glow_sTraceData *trace_data)
switch ( insensitive_db) {
case graph_eDatabase_Gdh:
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&insensitive_p,
&insensitive_subid, a_size);
&insensitive_subid, a_size, object);
break;
case graph_eDatabase_Local:
insensitive_p = (pwr_tBoolean *) dyn->graph->localdb_ref_or_create( parsed_name, a_type);
......@@ -15403,7 +15403,7 @@ int GeFastCurve::connect( grow_tObject object, glow_sTraceData *trace_data)
// Subscribe to object
strcpy( attr_name, parsed_name);
strcat( attr_name, ".New");
sts = dyn->graph->ref_object_info( dyn->cycle, attr_name, (void **)&new_p, &subid, sizeof(pwr_tBoolean));
sts = dyn->graph->ref_object_info( dyn->cycle, attr_name, (void **)&new_p, &subid, sizeof(pwr_tBoolean), object);
if ( EVEN(sts)) return sts;
memcpy( &time_buff, &fp.TimeBuffer, sizeof(time_buff));
......@@ -16941,7 +16941,7 @@ int GeOptionMenu::connect( grow_tObject object, glow_sTraceData *trace_data)
size = attr_size;
switch ( db) {
case graph_eDatabase_Gdh:
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, &p, &subid, attr_size);
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, &p, &subid, attr_size, object);
if ( EVEN(sts)) return sts;
if ( attr_type != 0)
type_id = attr_type;
......@@ -16981,7 +16981,7 @@ int GeOptionMenu::connect( grow_tObject object, glow_sTraceData *trace_data)
db = dyn->parse_attr_name( update_attribute, parsed_name,
&inverted, &attr_type, &attr_size);
if ( strcmp( parsed_name,"") != 0) {
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&update_p, &update_subid, attr_size);
sts = dyn->graph->ref_object_info( dyn->cycle, parsed_name, (void **)&update_p, &update_subid, attr_size, object);
if ( EVEN(sts)) return sts;
}
}
......
......@@ -4990,7 +4990,8 @@ int Graph::get_reference_name( char *name, char *tname)
}
int Graph::ref_object_info( glow_eCycle cycle, char *name, void **data,
pwr_tSubid *subid, unsigned int size, bool now)
pwr_tSubid *subid, unsigned int size, grow_tObject object,
bool now)
{
pwr_tAName aname;
pwr_tStatus sts;
......@@ -5005,7 +5006,7 @@ int Graph::ref_object_info( glow_eCycle cycle, char *name, void **data,
if ( !now) {
GraphRef gr( aname, subid, size, cycle, data);
GraphRef gr( aname, subid, size, cycle, object, data);
reflist.push_back(gr);
}
else {
......@@ -5069,9 +5070,13 @@ int Graph::ref_object_info_all()
if ( reflist[i].m_cycle == cycle[j]) {
*reflist[i].m_data = oref[refcnt].adrs;
*reflist[i].m_id = refid[refcnt];
if ( EVEN(sts) && cdh_RefIdIsNull( refid[refcnt]))
printf( "** %s\n", reflist[i].m_name);
if ( EVEN(sts) && cdh_RefIdIsNull( refid[refcnt])) {
char oname[80] = "";
if ( reflist[i].m_object != 0)
grow_GetObjectName( reflist[i].m_object, oname);
printf( "** %s, %s\n", oname, reflist[i].m_name);
}
refcnt++;
}
}
......@@ -5533,6 +5538,24 @@ int Graph::get_colortheme_colors( char *file, double **colors, int *size) {
return grow_GetColorThemeColors( file, colors, size);
}
int Graph::search_object( char *name)
{
int sts;
grow_tObject object;
grow_SelectClear( grow->ctx);
sts = grow_FindObjectByName( grow->ctx, name, &object);
if ( EVEN(sts)) return sts;
grow_SelectClear( grow->ctx);
grow_SetHighlight( object, 1);
grow_SelectInsert( grow->ctx, object);
if ( !grow_IsVisible( grow->ctx, object, glow_eVisible_Partial))
grow_CenterObject( grow->ctx, object);
return 1;
}
static void graph_free_dyn( grow_tObject object)
{
......
......@@ -347,14 +347,15 @@ class GraphGbl {
class GraphRef {
public:
GraphRef( pwr_tAName name, pwr_tRefId *id, int size, glow_eCycle cycle, void **data) :
m_id(id), m_size(size), m_cycle(cycle), m_data(data) {
GraphRef( pwr_tAName name, pwr_tRefId *id, int size, glow_eCycle cycle, grow_tObject object, void **data) :
m_id(id), m_size(size), m_cycle(cycle), m_object(object), m_data(data) {
strcpy( m_name, name);
}
pwr_tAName m_name;
pwr_tRefId *m_id;
int m_size;
glow_eCycle m_cycle;
grow_tObject m_object;
void **m_data;
};
......@@ -1267,7 +1268,8 @@ class Graph {
\param size Size of the attribute.
*/
int ref_object_info( glow_eCycle cycle, char *name, void **data,
pwr_tSubid *subid, unsigned int size, bool now = false);
pwr_tSubid *subid, unsigned int size, grow_tObject object,
bool now = false);
//! Subscribe all stored subscriptions.
int ref_object_info_all();
......@@ -1376,6 +1378,12 @@ class Graph {
*/
int export_plcfo( char *filename);
//! Search on object.
/*!
\param name Object name.
*/
int search_object( char *name);
//! Store in journal file.
int journal_store( journal_eAction a, grow_tObject o) {
if (journal) return journal->store( a, o);
......
......@@ -119,6 +119,8 @@ static int graph_build_func( void *client_data,
void *client_flag);
static int graph_customcolor_func( void *client_data,
void *client_flag);
static int graph_search_func( void *client_data,
void *client_flag);
dcli_tCmdTable graph_command_table[] = {
{
......@@ -246,6 +248,11 @@ dcli_tCmdTable graph_command_table[] = {
&graph_customcolor_func,
{"dcli_arg", "/FILE", "/LIGHTNESS", "/ISDEFAULT", ""}
},
{
"SEARCH",
&graph_search_func,
{"dcli_arg", "dcli_arg2", "/NAME", ""}
},
{"",}};
static void graph_store_graph( Graph *graph)
......@@ -440,6 +447,39 @@ static int graph_customcolor_func(void *client_data,
return GE__SUCCESS;
}
static int graph_search_func(void *client_data,
void *client_flag)
{
Graph *graph = (Graph *)client_data;
char arg1_str[80];
int arg1_sts;
int sts;
arg1_sts = dcli_get_qualifier( "dcli_arg1", arg1_str, sizeof(arg1_str));
if ( cdh_NoCaseStrncmp( arg1_str, "OBJECT", strlen( arg1_str)) == 0) {
// Command is "SEARCH OBJECT"
char name_str[80];
sts = dcli_get_qualifier( "/NAME", name_str, sizeof(name_str));
if ( EVEN(sts))
sts = dcli_get_qualifier( "dcli_arg2", name_str, sizeof(name_str));
if ( EVEN( sts)) {
graph->message('E', "Syntax error");
return GE__SYNTAX;
}
sts = graph->search_object( name_str);
if ( EVEN( sts))
graph->message('E', "No such object");
}
else {
graph->message('E', "Syntax error");
return GE__SYNTAX;
}
return GE__SUCCESS;
}
static int graph_exit_func(void *client_data,
void *client_flag)
{
......
......@@ -719,13 +719,13 @@ static int graph_object_dx( Graph *graph, pwr_sAttrRef *arp)
strcat( aname, ".ConvMask1");
graph->ref_object_info( glow_eCycle_Slow, aname, (void **)&od->conv_p, &od->conv_subid,
sizeof(pwr_tBoolean), true);
sizeof(pwr_tBoolean), 0, true);
strcpy( aname, card_name);
strcat( aname, ".InvMask1");
graph->ref_object_info( glow_eCycle_Slow, aname, (void **)&od->inv_p, &od->inv_subid,
sizeof(pwr_tBoolean), true);
sizeof(pwr_tBoolean), 0, true);
od->mask = 1 << chan_idx;
}
......@@ -734,13 +734,13 @@ static int graph_object_dx( Graph *graph, pwr_sAttrRef *arp)
strcat( aname, ".ConvMask2");
graph->ref_object_info( glow_eCycle_Slow, aname, (void **)&od->conv_p, &od->conv_subid,
sizeof(pwr_tBoolean), true);
sizeof(pwr_tBoolean), 0, true);
strcpy( aname, card_name);
strcat( aname, ".InvMask2");
graph->ref_object_info( glow_eCycle_Slow, aname, (void **)&od->inv_p, &od->inv_subid,
sizeof(pwr_tBoolean), true);
sizeof(pwr_tBoolean), 0, true);
od->mask = 1 << (chan_idx - 16);
}
......@@ -762,13 +762,13 @@ static int graph_object_dx( Graph *graph, pwr_sAttrRef *arp)
strcat( aname, ".TestMask1");
graph->ref_object_info( glow_eCycle_Slow, aname, (void **)&od->test_p, &od->test_subid,
sizeof(pwr_tBoolean), true);
sizeof(pwr_tBoolean), 0, true);
strcpy( aname, card_name);
strcat( aname, ".InvMask1");
graph->ref_object_info( glow_eCycle_Slow, aname, (void **)&od->inv_p, &od->inv_subid,
sizeof(pwr_tBoolean), true);
sizeof(pwr_tBoolean), 0, true);
od->mask = 1 << chan_idx;
}
......@@ -777,13 +777,13 @@ static int graph_object_dx( Graph *graph, pwr_sAttrRef *arp)
strcat( aname, ".TestMask2");
graph->ref_object_info( glow_eCycle_Slow, aname, (void **)&od->test_p, &od->test_subid,
sizeof(pwr_tBoolean), true);
sizeof(pwr_tBoolean), 0, true);
strcpy( aname, card_name);
strcat( aname, ".InvMask2");
graph->ref_object_info( glow_eCycle_Slow, aname, (void **)&od->inv_p, &od->inv_subid,
sizeof(pwr_tBoolean), true);
sizeof(pwr_tBoolean), 0, true);
od->mask = 1 << (chan_idx - 16);
}
......@@ -805,21 +805,21 @@ static int graph_object_dx( Graph *graph, pwr_sAttrRef *arp)
strcpy( aname, chan_name);
strcat( aname, ".ConversionOn");
graph->ref_object_info( glow_eCycle_Slow, aname, (void **)&od->conv_p, &od->conv_subid,
sizeof(pwr_tBoolean), true);
sizeof(pwr_tBoolean), 0, true);
}
strcpy( aname, chan_name);
strcat( aname, ".InvertOn");
graph->ref_object_info( glow_eCycle_Slow, aname, (void **)&od->inv_p, &od->inv_subid,
sizeof(pwr_tBoolean), true);
sizeof(pwr_tBoolean), 0, true);
if ( od->cid == pwr_cClass_Do) {
strcpy( aname, chan_name);
strcat( aname, ".TestOn");
graph->ref_object_info( glow_eCycle_Slow, aname, (void **)&od->test_p, &od->test_subid,
sizeof(pwr_tBoolean), true);
sizeof(pwr_tBoolean), 0, true);
if ( od->local_conv_p)
*od->local_conv_p = 1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment