Commit 8f318dbc authored by Claes Sjofors's avatar Claes Sjofors

Wb create cross, simulation and graph options. Also in wb settings

parent a302eef9
...@@ -104,9 +104,9 @@ static pwr_tStatus Configure ( ...@@ -104,9 +104,9 @@ static pwr_tStatus Configure (
delete ctx->attr; delete ctx->attr;
return 1; return 1;
} }
ctx->attr->close_cb = xtt_pndevice_close_cb; ctx->attr->close_cb = pndevice_close_cb;
ctx->attr->save_cb = xtt_pndevice_save_cb; ctx->attr->save_cb = pndevice_save_cb;
ctx->attr->help_cb = xtt_pndevice_help_cb; ctx->attr->help_cb = pndevice_help_cb;
if ( ODD(sts)) if ( ODD(sts))
sts = pndevice_init( ctx); sts = pndevice_init( ctx);
......
...@@ -9205,7 +9205,10 @@ Command create crossreferencefiles ...@@ -9205,7 +9205,10 @@ Command create crossreferencefiles
Create files for displaying crossreferences in xtt and rtt for Create files for displaying crossreferences in xtt and rtt for
the current volume. the current volume.
<B>wtt> create crossreferencefiles <B>wtt> create crossreferencefiles [/graph] [/simulation]
/graph <t>Search Ge graphs for cross references.
/simulation <t>Add cross references in simulation objects.
</TOPIC> </TOPIC>
<TOPIC> create flowfiles <style> function <TOPIC> create flowfiles <style> function
......
...@@ -1606,6 +1606,7 @@ set advanceduser<t>Set advanced user <LINK> set advanceduser ...@@ -1606,6 +1606,7 @@ set advanceduser<t>Set advanced user <LINK> set advanceduser
set display<t>Set format of display for selected attribute <LINK> set display set display<t>Set format of display for selected attribute <LINK> set display
set folder <t>Set a folder in a tabbed window. <LINK> set folder set folder <t>Set a folder in a tabbed window. <LINK> set folder
set parameter<t>Set the value of an attribute <LINK> set parameter set parameter<t>Set the value of an attribute <LINK> set parameter
set signal <t>Set invert, conversion and test for signals. <LINK> set signal
set subwindow<t>View a graph in a Ge window object. <LINK> set subwindow set subwindow<t>View a graph in a Ge window object. <LINK> set subwindow
set graph <t>Handling of a graph <LINK> set graph set graph <t>Handling of a graph <LINK> set graph
setup <t>Xtt setup <LINK> setup setup <t>Xtt setup <LINK> setup
...@@ -1737,6 +1738,30 @@ Set a folder in a tabbed window object. ...@@ -1737,6 +1738,30 @@ Set a folder in a tabbed window object.
/index= <t>index of tab to set. Starting from 0. /index= <t>index of tab to set. Starting from 0.
</TOPIC> </TOPIC>
<TOPIC> set signal <style> function
Command set signal
Set invert, conversion, test and testvalue for a signal.
Conversion can be set on Di, Ii and Ai,
Invert can be set on Di and Do.
Test can be set on Do, Ao and Io.
Testvalue can be set on Do.
<B>xtt> set signal conversion /on [/name=]
<B>xtt> set signal conversion /off [/name=]
<B>xtt> set signal invert /on [/name=]
<B>xtt> set signal invert /off [/name=]
<B>xtt> set signal test /on [/name=]
<B>xtt> set signal test /off [/name=]
<B>xtt> set signal testvalue /on [/name=]
<B>xtt> set signal testvalue /off [/name=]
/name <t>Signal name. If not supplied the currently selected signal is used.
/on <t>Set signal entity on.
/off <t>Set signal entity off.
</TOPIC>
<TOPIC> set subwindow <style> function <TOPIC> set subwindow <style> function
Command set subwindow Command set subwindow
......
...@@ -9091,7 +9091,10 @@ Kommando create crossreferencefiles ...@@ -9091,7 +9091,10 @@ Kommando create crossreferencefiles
Skapa filer för att visa korsreferenser i xtt och rtt för aktuell volym. Skapa filer för att visa korsreferenser i xtt och rtt för aktuell volym.
<B>wtt> create crossreferencefiles <B>wtt> create crossreferencefiles [/graph] [/simulation]
/graph <t>Leta efter korsreferenser i Ge grafer.
/simulation <t>Addera referenser i simuleringsobjekt.
</TOPIC> </TOPIC>
<TOPIC> create flowfiles <style> function <TOPIC> create flowfiles <style> function
......
...@@ -1621,6 +1621,7 @@ set advanceduser<t>S ...@@ -1621,6 +1621,7 @@ set advanceduser<t>S
set display<t>Sätt format for visning av utvalt attribut <LINK> set display set display<t>Sätt format for visning av utvalt attribut <LINK> set display
set folder <t>Aktivera en flik i ett flikfönster. <LINK> set folder set folder <t>Aktivera en flik i ett flikfönster. <LINK> set folder
set parameter<t>Sätt värdet på ett attribut <LINK> set parameter set parameter<t>Sätt värdet på ett attribut <LINK> set parameter
set signal <t>Sätt invert, conversion och test på signaler. <LINK> set signal
set subwindow<t>Visa in graf i ett Ge window objekt. <LINK> set subwindow set subwindow<t>Visa in graf i ett Ge window objekt. <LINK> set subwindow
set graph <t>Hantering av graf. <LINK> set graph set graph <t>Hantering av graf. <LINK> set graph
setup <t>Xtt konfigurering <LINK> setup setup <t>Xtt konfigurering <LINK> setup
...@@ -1752,6 +1753,31 @@ Aktivera en flik i ett flikf ...@@ -1752,6 +1753,31 @@ Aktivera en flik i ett flikf
/index= <t>Index på filken som ska aktiveras. Indexeringen startar från 0. /index= <t>Index på filken som ska aktiveras. Indexeringen startar från 0.
</TOPIC> </TOPIC>
<TOPIC> set signal <style> function
Command set signal
Sätt invert, conversion, test och testvalue för en signal.
Conversion kan sättas på Di, Ii och Ai,
Invert kan sättas på Di och Do.
Test kan sättas på Do, Ao och Io.
Testvalue kan sättas på Do.
<B>xtt> set signal conversion /on [/name=]
<B>xtt> set signal conversion /off [/name=]
<B>xtt> set signal invert /on [/name=]
<B>xtt> set signal invert /off [/name=]
<B>xtt> set signal test /on [/name=]
<B>xtt> set signal test /off [/name=]
<B>xtt> set signal testvalue /on [/name=]
<B>xtt> set signal testvalue /off [/name=]
/name <t>Signalnamn. Om signalnamnet ej är angivet används den
<t>utvalda signalen.
/on <t>Sätt entitet till.
/off <t>Set entitet från.
</TOPIC>
<TOPIC> set subwindow <style> function <TOPIC> set subwindow <style> function
Command set subwindow Command set subwindow
......
...@@ -1984,6 +1984,8 @@ void WttGtk::update_options_form() ...@@ -1984,6 +1984,8 @@ void WttGtk::update_options_form()
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(build_force_w), build_force ? TRUE : FALSE); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(build_force_w), build_force ? TRUE : FALSE);
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(build_debug_w), build_debug ? TRUE : FALSE); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(build_debug_w), build_debug ? TRUE : FALSE);
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(build_crossref_w), build_crossref ? TRUE : FALSE); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(build_crossref_w), build_crossref ? TRUE : FALSE);
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(build_crossrefsim_w), build_crossref_sim ? TRUE : FALSE);
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(build_crossrefgraph_w), build_crossref_graph ? TRUE : FALSE);
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(build_manual_w), build_manual ? TRUE : FALSE); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(build_manual_w), build_manual ? TRUE : FALSE);
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(build_nocopy_w), build_nocopy ? TRUE : FALSE); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(build_nocopy_w), build_nocopy ? TRUE : FALSE);
} }
...@@ -2008,17 +2010,21 @@ void WttGtk::set_options() ...@@ -2008,17 +2010,21 @@ void WttGtk::set_options()
build_force = (int) gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(build_force_w)); build_force = (int) gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(build_force_w));
build_debug = (int) gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(build_debug_w)); build_debug = (int) gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(build_debug_w));
build_crossref = (int) gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(build_crossref_w)); build_crossref = (int) gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(build_crossref_w));
build_crossref_sim = (int) gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(build_crossrefsim_w));
build_crossref_graph = (int) gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(build_crossrefgraph_w));
build_manual = (int) gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(build_manual_w)); build_manual = (int) gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(build_manual_w));
build_nocopy = (int) gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(build_nocopy_w)); build_nocopy = (int) gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(build_nocopy_w));
wnav->set_options( enable_comment, show_class, show_alias, wnav->set_options( enable_comment, show_class, show_alias,
show_descrip, show_objref, show_objxref, show_descrip, show_objref, show_objxref,
show_attrref, show_attrxref, build_force, build_debug, show_attrref, show_attrxref, build_force, build_debug,
build_crossref, build_manual, build_nocopy); build_crossref, build_crossref_sim, build_crossref_graph,
build_manual, build_nocopy);
wnavnode->set_options( enable_comment, show_class, show_alias, wnavnode->set_options( enable_comment, show_class, show_alias,
show_descrip, show_objref, show_objxref, show_descrip, show_objref, show_objxref,
show_attrref, show_attrxref, build_force, build_debug, show_attrref, show_attrxref, build_force, build_debug,
build_crossref, build_manual, build_nocopy); build_crossref, build_crossref_sim, build_crossref_graph,
build_manual, build_nocopy);
} }
...@@ -3084,7 +3090,8 @@ WttGtk::WttGtk( ...@@ -3084,7 +3090,8 @@ WttGtk::WttGtk(
wnav->get_options( &enable_comment, &show_class, &show_alias, wnav->get_options( &enable_comment, &show_class, &show_alias,
&show_descrip, &show_objref, &show_objxref, &show_descrip, &show_objref, &show_objxref,
&show_attrref, &show_attrxref, &build_force, &build_debug, &show_attrref, &show_attrxref, &build_force, &build_debug,
&build_crossref, &build_manual, &build_nocopy); &build_crossref, &build_crossref_sim, &build_crossref_graph,
&build_manual, &build_nocopy);
if ( wbctx && volid) { if ( wbctx && volid) {
wnav->volume_attached( wbctx, ldhses, 0); wnav->volume_attached( wbctx, ldhses, 0);
...@@ -3217,6 +3224,8 @@ void WttGtk::create_options_dialog() ...@@ -3217,6 +3224,8 @@ void WttGtk::create_options_dialog()
build_force_w = gtk_check_button_new_with_label( "Force"); build_force_w = gtk_check_button_new_with_label( "Force");
build_debug_w = gtk_check_button_new_with_label( "Debug"); build_debug_w = gtk_check_button_new_with_label( "Debug");
build_crossref_w = gtk_check_button_new_with_label( "Crossreference"); build_crossref_w = gtk_check_button_new_with_label( "Crossreference");
build_crossrefsim_w = gtk_check_button_new_with_label( " Simulation");
build_crossrefgraph_w = gtk_check_button_new_with_label( " Graph");
build_manual_w = gtk_check_button_new_with_label( "Manual"); build_manual_w = gtk_check_button_new_with_label( "Manual");
build_nocopy_w = gtk_check_button_new_with_label( "Disable Copy"); build_nocopy_w = gtk_check_button_new_with_label( "Disable Copy");
...@@ -3225,6 +3234,8 @@ void WttGtk::create_options_dialog() ...@@ -3225,6 +3234,8 @@ void WttGtk::create_options_dialog()
gtk_box_pack_start( GTK_BOX(build_vbox), build_force_w, FALSE, FALSE, 7); gtk_box_pack_start( GTK_BOX(build_vbox), build_force_w, FALSE, FALSE, 7);
gtk_box_pack_start( GTK_BOX(build_vbox), build_debug_w, FALSE, FALSE, 7); gtk_box_pack_start( GTK_BOX(build_vbox), build_debug_w, FALSE, FALSE, 7);
gtk_box_pack_start( GTK_BOX(build_vbox), build_crossref_w, FALSE, FALSE, 7); gtk_box_pack_start( GTK_BOX(build_vbox), build_crossref_w, FALSE, FALSE, 7);
gtk_box_pack_start( GTK_BOX(build_vbox), build_crossrefsim_w, FALSE, FALSE, 7);
gtk_box_pack_start( GTK_BOX(build_vbox), build_crossrefgraph_w, FALSE, FALSE, 7);
gtk_box_pack_start( GTK_BOX(build_vbox), build_manual_w, FALSE, FALSE, 7); gtk_box_pack_start( GTK_BOX(build_vbox), build_manual_w, FALSE, FALSE, 7);
gtk_box_pack_start( GTK_BOX(build_vbox), build_nocopy_w, FALSE, FALSE, 7); gtk_box_pack_start( GTK_BOX(build_vbox), build_nocopy_w, FALSE, FALSE, 7);
......
...@@ -98,6 +98,8 @@ class WttGtk : public Wtt { ...@@ -98,6 +98,8 @@ class WttGtk : public Wtt {
GtkWidget *build_force_w; GtkWidget *build_force_w;
GtkWidget *build_debug_w; GtkWidget *build_debug_w;
GtkWidget *build_crossref_w; GtkWidget *build_crossref_w;
GtkWidget *build_crossrefsim_w;
GtkWidget *build_crossrefgraph_w;
GtkWidget *build_manual_w; GtkWidget *build_manual_w;
GtkWidget *build_nocopy_w; GtkWidget *build_nocopy_w;
GtkWidget *menu_save_w; GtkWidget *menu_save_w;
......
...@@ -40,12 +40,15 @@ ...@@ -40,12 +40,15 @@
class wb_build_opt class wb_build_opt
{ {
public: public:
wb_build_opt() : force(0), debug(0), crossref(0), manual(0), nocopy(0) {} wb_build_opt() : force(0), debug(0), crossref(0), crossref_sim(0), crossref_graph(0),
manual(0), nocopy(0) {}
int force; int force;
int debug; int debug;
int crossref; int crossref;
int crossref_sim;
int crossref_graph;
int manual; int manual;
int nocopy; int nocopy;
}; };
#endif #endif
\ No newline at end of file
...@@ -266,7 +266,7 @@ wb_crrgen::~wb_crrgen() ...@@ -266,7 +266,7 @@ wb_crrgen::~wb_crrgen()
tree_DeleteTable(&sts, m_signal_th); tree_DeleteTable(&sts, m_signal_th);
} }
void wb_crrgen::load( pwr_tStatus *rsts, int sim) void wb_crrgen::load( pwr_tStatus *rsts, int sim, int graph)
{ {
pwr_tStatus sts; pwr_tStatus sts;
...@@ -323,206 +323,248 @@ void wb_crrgen::load( pwr_tStatus *rsts, int sim) ...@@ -323,206 +323,248 @@ void wb_crrgen::load( pwr_tStatus *rsts, int sim)
} }
} }
// Ge references if ( graph) {
for ( wb_object o = m_sp->object( pwr_cClass_XttGraph); o; o = o.next()) { // Ge references
pwr_tString80 action; for ( wb_object o = m_sp->object( pwr_cClass_XttGraph); o; o = o.next()) {
pwr_tFileName fname; pwr_tString80 action;
char line[512]; pwr_tFileName fname;
char linep[2][512]; char line[512];
int tag; char linep[2][512];
int nr; int tag;
char *s; int nr;
char *s;
wb_attribute a = m_sp->attribute( o.oid(), "RtBody", "Action");
wb_attribute a = m_sp->attribute( o.oid(), "RtBody", "Action");
a.value( action);
if ( strstr( action, ".pwg")) { a.value( action);
sprintf( fname, "$pwrp_exe/%s", cdh_Low(action)); if ( strstr( action, ".pwg")) {
sprintf( fname, "$pwrp_exe/%s", cdh_Low(action));
dcli_translate_filename( fname, fname);
dcli_translate_filename( fname, fname);
ifstream fpg( fname);
if ( !fpg) ifstream fpg( fname);
continue; if ( !fpg)
while ( fpg.getline( line, sizeof(line))) {
nr = dcli_parse( line , " ", "", (char *)linep,
sizeof( linep) / sizeof( linep[0]), sizeof( linep[0]), 0);
if ( nr != 2)
continue; continue;
nr = sscanf( linep[0], "%d", &tag); while ( fpg.getline( line, sizeof(line))) {
if ( nr != 1) nr = dcli_parse( line , " ", "", (char *)linep,
continue; sizeof( linep) / sizeof( linep[0]), sizeof( linep[0]), 0);
if ( nr != 2)
switch ( tag) { continue;
case ge_eSave_DigLowColor_attribute:
case ge_eSave_DigColor_attribute: nr = sscanf( linep[0], "%d", &tag);
case ge_eSave_DigError_attribute: if ( nr != 1)
case ge_eSave_DigWarning_attribute: continue;
case ge_eSave_Invisible_attribute:
case ge_eSave_DigBorder_attribute: switch ( tag) {
case ge_eSave_DigText_attribute: case ge_eSave_DigLowColor_attribute:
case ge_eSave_ValueInput_minvalue_attr: case ge_eSave_DigColor_attribute:
case ge_eSave_ValueInput_maxvalue_attr: case ge_eSave_DigError_attribute:
case ge_eSave_Rotate_attribute: case ge_eSave_DigWarning_attribute:
case ge_eSave_Move_move_x_attribute: case ge_eSave_Invisible_attribute:
case ge_eSave_Move_move_y_attribute: case ge_eSave_DigBorder_attribute:
case ge_eSave_Move_scale_x_attribute: case ge_eSave_DigText_attribute:
case ge_eSave_Move_scale_y_attribute: case ge_eSave_Value_decimals_attr:
case ge_eSave_AnalogShift_attribute: case ge_eSave_ValueInput_minvalue_attr:
case ge_eSave_DigShift_attribute: case ge_eSave_ValueInput_maxvalue_attr:
case ge_eSave_Animation_attribute: case ge_eSave_Rotate_attribute:
case ge_eSave_Bar_attribute: case ge_eSave_Move_move_x_attribute:
case ge_eSave_Bar_minvalue_attr: case ge_eSave_Move_move_y_attribute:
case ge_eSave_Bar_maxvalue_attr: case ge_eSave_Move_scale_x_attribute:
case ge_eSave_Trend_attribute1: case ge_eSave_Move_scale_y_attribute:
case ge_eSave_Trend_attribute2: case ge_eSave_AnalogShift_attribute:
case ge_eSave_Trend_minvalue_attr1: case ge_eSave_DigShift_attribute:
case ge_eSave_Trend_maxvalue_attr1: case ge_eSave_Animation_attribute:
case ge_eSave_Trend_minvalue_attr2: case ge_eSave_Bar_attribute:
case ge_eSave_Trend_maxvalue_attr2: case ge_eSave_Bar_minvalue_attr:
case ge_eSave_DigFlash_attribute: case ge_eSave_Bar_maxvalue_attr:
case ge_eSave_FillLevel_attribute: case ge_eSave_Trend_attribute1:
case ge_eSave_FillLevel_minvalue_attr: case ge_eSave_Trend_attribute2:
case ge_eSave_FillLevel_maxvalue_attr: case ge_eSave_Trend_minvalue_attr1:
case ge_eSave_Table_attribute1: case ge_eSave_Trend_maxvalue_attr1:
case ge_eSave_Table_sel_attribute1: case ge_eSave_Trend_minvalue_attr2:
case ge_eSave_StatusColor_attribute: case ge_eSave_Trend_maxvalue_attr2:
case ge_eSave_DigSound_attribute: case ge_eSave_Trend_mark1_attr:
case ge_eSave_XY_Curve_x_attr: case ge_eSave_Trend_mark2_attr:
case ge_eSave_XY_Curve_y_attr: case ge_eSave_DigFlash_attribute:
case ge_eSave_XY_Curve_y_minvalue_attr: case ge_eSave_FillLevel_attribute:
case ge_eSave_XY_Curve_y_maxvalue_attr: case ge_eSave_FillLevel_minvalue_attr:
case ge_eSave_XY_Curve_x_minvalue_attr: case ge_eSave_FillLevel_maxvalue_attr:
case ge_eSave_XY_Curve_x_maxvalue_attr: case ge_eSave_Table_attribute1:
case ge_eSave_DigCommand_attribute: case ge_eSave_Table_sel_attribute1:
case ge_eSave_Slider_minvalue_attr: case ge_eSave_StatusColor_attribute:
case ge_eSave_Slider_maxvalue_attr: case ge_eSave_DigSound_attribute:
case ge_eSave_Slider_insensitive_attr: case ge_eSave_XY_Curve_x_attr:
case ge_eSave_AnalogColor_attribute: case ge_eSave_XY_Curve_y_attr:
case ge_eSave_DigSound_soundobject: case ge_eSave_XY_Curve_y_minvalue_attr:
case ge_eSave_PopupMenu_ref_object: { case ge_eSave_XY_Curve_y_maxvalue_attr:
if ( ( s = strchr( linep[1], '#'))) case ge_eSave_XY_Curve_x_minvalue_attr:
*s = 0; case ge_eSave_XY_Curve_x_maxvalue_attr:
case ge_eSave_XY_Curve_x_mark1_attr:
if ( linep[1][0] == '!') case ge_eSave_XY_Curve_x_mark2_attr:
strcpy( &linep[1][0], &linep[1][1]); case ge_eSave_XY_Curve_y_mark1_attr:
case ge_eSave_XY_Curve_y_mark2_attr:
wb_attribute al = m_sp->attribute(linep[1]); case ge_eSave_Pie_attribute1:
if (!al) case ge_eSave_Pie_attribute2:
break; case ge_eSave_Pie_attribute3:
case ge_eSave_Pie_attribute4:
case ge_eSave_Pie_attribute5:
case ge_eSave_Pie_attribute6:
case ge_eSave_Pie_attribute7:
case ge_eSave_Pie_attribute8:
case ge_eSave_Pie_attribute9:
case ge_eSave_Pie_attribute10:
case ge_eSave_Pie_attribute11:
case ge_eSave_Pie_attribute12:
case ge_eSave_BarChart_attribute1:
case ge_eSave_BarChart_attribute2:
case ge_eSave_BarChart_attribute3:
case ge_eSave_BarChart_attribute4:
case ge_eSave_BarChart_attribute5:
case ge_eSave_BarChart_attribute6:
case ge_eSave_BarChart_attribute7:
case ge_eSave_BarChart_attribute8:
case ge_eSave_BarChart_attribute9:
case ge_eSave_BarChart_attribute10:
case ge_eSave_BarChart_attribute11:
case ge_eSave_BarChart_attribute12:
case ge_eSave_Axis_minvalue_attr:
case ge_eSave_Axis_maxvalue_attr:
case ge_eSave_DigFourShift_attribute1:
case ge_eSave_DigFourShift_attribute2:
case ge_eSave_DigFourShift_attribute3:
case ge_eSave_ScrollingText_attribute:
case ge_eSave_DigBackgroundColor_attribute:
case ge_eSave_DigSwap_attribute:
case ge_eSave_DigScript_attribute:
case ge_eSave_DigCommand_attribute:
case ge_eSave_Slider_minvalue_attr:
case ge_eSave_Slider_maxvalue_attr:
case ge_eSave_Slider_insensitive_attr:
case ge_eSave_AnalogColor_attribute:
case ge_eSave_DigSound_soundobject:
case ge_eSave_PopupMenu_ref_object: {
if ( ( s = strchr( linep[1], '#')))
*s = 0;
if ( linep[1][0] == '!')
strcpy( &linep[1][0], &linep[1][1]);
wb_attribute al = m_sp->attribute(linep[1]);
if (!al)
break;
int len = strlen(linep[1]); int len = strlen(linep[1]);
if ( len > 12 && if ( len > 12 &&
cdh_NoCaseStrcmp( &linep[1][len - 12], ".ActualValue") == 0) { cdh_NoCaseStrcmp( &linep[1][len - 12], ".ActualValue") == 0) {
linep[1][len - 12] = 0; linep[1][len - 12] = 0;
al = m_sp->attribute(linep[1]); al = m_sp->attribute(linep[1]);
if ( !al) if ( !al)
break;
}
switch ( al.tid()) {
case pwr_cClass_Di:
case pwr_cClass_Do:
case pwr_cClass_Dv:
case pwr_cClass_Ai:
case pwr_cClass_Ao:
case pwr_cClass_Av:
case pwr_cClass_Co:
case pwr_cClass_Ii:
case pwr_cClass_Io:
case pwr_cClass_Iv:
case pwr_cClass_Sv:
case pwr_cClass_ATv:
case pwr_cClass_DTv: {
sCrrKey key;
key.target = al.aref();
key.reference = cdh_ObjidToAref( o.oid());
key.type = crrgen_eType_Read;
tree_Insert(&sts, m_signal_th, &key);
break; break;
} }
switch ( al.tid()) { default: {
case pwr_cClass_Di: sCrrKey key;
case pwr_cClass_Do:
case pwr_cClass_Dv: key.target = al.aref();
case pwr_cClass_Ai: key.reference = cdh_ObjidToAref( o.oid());
case pwr_cClass_Ao: key.type = crrgen_eType_Read;
case pwr_cClass_Av: tree_Insert(&sts, m_object_th, &key);
case pwr_cClass_Co: }
case pwr_cClass_Ii: }
case pwr_cClass_Io:
case pwr_cClass_Iv:
case pwr_cClass_Sv:
case pwr_cClass_ATv:
case pwr_cClass_DTv: {
sCrrKey key;
key.target = al.aref();
key.reference = cdh_ObjidToAref( o.oid());
key.type = crrgen_eType_Read;
tree_Insert(&sts, m_signal_th, &key);
break; break;
} }
default: { case ge_eSave_Value_attribute:
sCrrKey key; case ge_eSave_SetDig_attribute:
case ge_eSave_ResetDig_attribute:
key.target = al.aref(); case ge_eSave_ToggleDig_attribute:
key.reference = cdh_ObjidToAref( o.oid()); case ge_eSave_StoDig_attribute:
key.type = crrgen_eType_Read; case ge_eSave_IncrAnalog_attribute:
tree_Insert(&sts, m_object_th, &key); case ge_eSave_RadioButton_attribute:
} case ge_eSave_Slider_attribute:
} case ge_eSave_OptionMenu_attribute:
break; case ge_eSave_SetValue_attribute: {
} if ( ( s = strchr( linep[1], '#')))
case ge_eSave_Value_attribute: *s = 0;
case ge_eSave_SetDig_attribute:
case ge_eSave_ResetDig_attribute: if ( linep[1][0] == '!')
case ge_eSave_ToggleDig_attribute: strcpy( &linep[1][0], &linep[1][1]);
case ge_eSave_StoDig_attribute:
case ge_eSave_IncrAnalog_attribute: wb_attribute al = m_sp->attribute(linep[1]);
case ge_eSave_RadioButton_attribute: if (!al)
case ge_eSave_Slider_attribute: break;
case ge_eSave_OptionMenu_attribute: {
if ( ( s = strchr( linep[1], '#')))
*s = 0;
if ( linep[1][0] == '!')
strcpy( &linep[1][0], &linep[1][1]);
wb_attribute al = m_sp->attribute(linep[1]);
if (!al)
break;
int len = strlen(linep[1]); int len = strlen(linep[1]);
if ( len > 12 && if ( len > 12 &&
cdh_NoCaseStrcmp( &linep[1][len - 12], ".ActualValue") == 0) { cdh_NoCaseStrcmp( &linep[1][len - 12], ".ActualValue") == 0) {
linep[1][len - 12] = 0; linep[1][len - 12] = 0;
al = m_sp->attribute(linep[1]); al = m_sp->attribute(linep[1]);
if ( !al) if ( !al)
break;
}
switch ( al.tid()) {
case pwr_cClass_Di:
case pwr_cClass_Do:
case pwr_cClass_Dv:
case pwr_cClass_Ai:
case pwr_cClass_Ao:
case pwr_cClass_Av:
case pwr_cClass_Co:
case pwr_cClass_Ii:
case pwr_cClass_Io:
case pwr_cClass_Iv:
case pwr_cClass_Sv:
case pwr_cClass_ATv:
case pwr_cClass_DTv: {
sCrrKey key;
key.target = al.aref();
key.reference = cdh_ObjidToAref( o.oid());
key.type = crrgen_eType_Write;
tree_Insert(&sts, m_signal_th, &key);
break; break;
} }
switch ( al.tid()) { default: {
case pwr_cClass_Di: sCrrKey key;
case pwr_cClass_Do:
case pwr_cClass_Dv: key.target = al.aref();
case pwr_cClass_Ai: key.reference = cdh_ObjidToAref( o.oid());
case pwr_cClass_Ao: key.type = crrgen_eType_Write;
case pwr_cClass_Av: tree_Insert(&sts, m_object_th, &key);
case pwr_cClass_Co: }
case pwr_cClass_Ii: }
case pwr_cClass_Io:
case pwr_cClass_Iv:
case pwr_cClass_Sv:
case pwr_cClass_ATv:
case pwr_cClass_DTv: {
sCrrKey key;
key.target = al.aref();
key.reference = cdh_ObjidToAref( o.oid());
key.type = crrgen_eType_Write;
tree_Insert(&sts, m_signal_th, &key);
break; break;
} }
default: { default: ;
sCrrKey key;
key.target = al.aref();
key.reference = cdh_ObjidToAref( o.oid());
key.type = crrgen_eType_Write;
tree_Insert(&sts, m_object_th, &key);
} }
}
break;
}
default: ;
} }
fpg.close();
} }
fpg.close();
} }
} }
*rsts = 1; *rsts = 1;
} }
...@@ -720,4 +762,4 @@ void wb_crrgen::write_code( pwr_tStatus *rsts) ...@@ -720,4 +762,4 @@ void wb_crrgen::write_code( pwr_tStatus *rsts)
fpc.close(); fpc.close();
*rsts = 1; *rsts = 1;
} }
\ No newline at end of file
...@@ -53,9 +53,9 @@ class wb_crrgen { ...@@ -53,9 +53,9 @@ class wb_crrgen {
public: public:
wb_crrgen( wb_session *sp); wb_crrgen( wb_session *sp);
~wb_crrgen(); ~wb_crrgen();
void load( pwr_tStatus *sts, int sim = 0); void load( pwr_tStatus *sts, int sim = 0, int graph = 0);
void write( pwr_tStatus *sts); void write( pwr_tStatus *sts);
void write_code( pwr_tStatus *rsts); void write_code( pwr_tStatus *rsts);
}; };
#endif #endif
\ No newline at end of file
...@@ -2314,6 +2314,12 @@ int WNav::setup() ...@@ -2314,6 +2314,12 @@ int WNav::setup()
new WItemLocal( this, "Build.CrossReferences", "setup_build_cross", new WItemLocal( this, "Build.CrossReferences", "setup_build_cross",
pwr_eType_Int32, sizeof( gbl.build.crossref), 0, 1, pwr_eType_Int32, sizeof( gbl.build.crossref), 0, 1,
(void *) &gbl.build.crossref, NULL, flow_eDest_IntoLast); (void *) &gbl.build.crossref, NULL, flow_eDest_IntoLast);
new WItemLocal( this, "Build.CrossReferences.Graph", "setup_build_cross_graph",
pwr_eType_Int32, sizeof( gbl.build.crossref_graph), 0, 1,
(void *) &gbl.build.crossref_graph, NULL, flow_eDest_IntoLast);
new WItemLocal( this, "Build.CrossReferences.Sim", "setup_build_cross_sim",
pwr_eType_Int32, sizeof( gbl.build.crossref_sim), 0, 1,
(void *) &gbl.build.crossref_sim, NULL, flow_eDest_IntoLast);
new WItemLocal( this, "Build.Manual", "setup_build_manual", new WItemLocal( this, "Build.Manual", "setup_build_manual",
pwr_eType_Int32, sizeof( gbl.build.manual), 0, 1, pwr_eType_Int32, sizeof( gbl.build.manual), 0, 1,
(void *) &gbl.build.manual, NULL, flow_eDest_IntoLast); (void *) &gbl.build.manual, NULL, flow_eDest_IntoLast);
...@@ -2348,7 +2354,8 @@ int WNavGbl::symbolfile_exec( void *wnav) ...@@ -2348,7 +2354,8 @@ int WNavGbl::symbolfile_exec( void *wnav)
void WNav::set_options( int ena_comment, int sh_class, int sh_alias, int sh_descrip, void WNav::set_options( int ena_comment, int sh_class, int sh_alias, int sh_descrip,
int sh_objref, int sh_objxref, int sh_attrref, int sh_attrxref, int sh_objref, int sh_objxref, int sh_attrref, int sh_attrxref,
int bu_force, int bu_debug, int bu_crossref, int bu_manual, int bu_nocopy) int bu_force, int bu_debug, int bu_crossref, int bu_crossrefsim,
int bu_crossrefgraph, int bu_manual, int bu_nocopy)
{ {
gbl.enable_comment = ena_comment; gbl.enable_comment = ena_comment;
gbl.show_class = sh_class; gbl.show_class = sh_class;
...@@ -2361,6 +2368,8 @@ void WNav::set_options( int ena_comment, int sh_class, int sh_alias, int sh_desc ...@@ -2361,6 +2368,8 @@ void WNav::set_options( int ena_comment, int sh_class, int sh_alias, int sh_desc
gbl.build.force = bu_force; gbl.build.force = bu_force;
gbl.build.debug = bu_debug; gbl.build.debug = bu_debug;
gbl.build.crossref = bu_crossref; gbl.build.crossref = bu_crossref;
gbl.build.crossref_sim = bu_crossrefsim;
gbl.build.crossref_graph = bu_crossrefgraph;
gbl.build.manual = bu_manual; gbl.build.manual = bu_manual;
gbl.build.nocopy = bu_nocopy; gbl.build.nocopy = bu_nocopy;
ldh_refresh( pwr_cNObjid); ldh_refresh( pwr_cNObjid);
...@@ -2368,7 +2377,8 @@ void WNav::set_options( int ena_comment, int sh_class, int sh_alias, int sh_desc ...@@ -2368,7 +2377,8 @@ void WNav::set_options( int ena_comment, int sh_class, int sh_alias, int sh_desc
void WNav::get_options( int *ena_comment, int *sh_class, int *sh_alias, int *sh_descrip, void WNav::get_options( int *ena_comment, int *sh_class, int *sh_alias, int *sh_descrip,
int *sh_objref, int *sh_objxref, int *sh_attrref, int *sh_attrxref, int *sh_objref, int *sh_objxref, int *sh_attrref, int *sh_attrxref,
int *bu_force, int *bu_debug, int *bu_crossref, int *bu_manual, int *bu_nocopy) int *bu_force, int *bu_debug, int *bu_crossref, int *bu_crossrefsim,
int *bu_crossrefgraph, int *bu_manual, int *bu_nocopy)
{ {
*ena_comment = gbl.enable_comment; *ena_comment = gbl.enable_comment;
*sh_class = gbl.show_class; *sh_class = gbl.show_class;
...@@ -2381,6 +2391,8 @@ void WNav::get_options( int *ena_comment, int *sh_class, int *sh_alias, int *sh_ ...@@ -2381,6 +2391,8 @@ void WNav::get_options( int *ena_comment, int *sh_class, int *sh_alias, int *sh_
*bu_force = gbl.build.force; *bu_force = gbl.build.force;
*bu_debug = gbl.build.debug; *bu_debug = gbl.build.debug;
*bu_crossref = gbl.build.crossref; *bu_crossref = gbl.build.crossref;
*bu_crossrefsim = gbl.build.crossref_sim;
*bu_crossrefgraph = gbl.build.crossref_graph;
*bu_manual = gbl.build.manual; *bu_manual = gbl.build.manual;
*bu_nocopy = gbl.build.nocopy; *bu_nocopy = gbl.build.nocopy;
} }
...@@ -2450,6 +2462,16 @@ int WNav::save_settnings( ofstream& fp) ...@@ -2450,6 +2462,16 @@ int WNav::save_settnings( ofstream& fp)
else else
fp << " set nobuildcrossref /local" << endl; fp << " set nobuildcrossref /local" << endl;
if ( gbl.build.crossref_sim)
fp << " set buildcrossrefsim /local" << endl;
else
fp << " set nobuildcrossrefsim /local" << endl;
if ( gbl.build.crossref_graph)
fp << " set buildcrossrefgraph /local" << endl;
else
fp << " set nobuildcrossrefgraph /local" << endl;
if ( gbl.build.manual) if ( gbl.build.manual)
fp << " set buildmanual /local" << endl; fp << " set buildmanual /local" << endl;
else else
...@@ -3723,4 +3745,4 @@ char *wnav_get_message( int sts) ...@@ -3723,4 +3745,4 @@ char *wnav_get_message( int sts)
static char msg[256]; static char msg[256];
return msg_GetMsg( sts, msg, sizeof(msg)); return msg_GetMsg( sts, msg, sizeof(msg));
} }
\ No newline at end of file
...@@ -414,10 +414,12 @@ class WNav : public WUtility{ ...@@ -414,10 +414,12 @@ class WNav : public WUtility{
void collapse(); void collapse();
void set_options( int ena_comment, int sh_class, int sh_alias, int sh_descrip, void set_options( int ena_comment, int sh_class, int sh_alias, int sh_descrip,
int sh_objref, int sh_objxref, int sh_attrref, int sh_attrxref, int sh_objref, int sh_objxref, int sh_attrref, int sh_attrxref,
int bu_force, int bu_debug, int bu_crossref, int bu_manual, int bu_nocopy); int bu_force, int bu_debug, int bu_crossref, int bu_crossrefsim,
int bu_crossrefgraph, int bu_manual, int bu_nocopy);
void get_options( int *ena_comment, int *sh_class, int *sh_alias, int *sh_descrip, void get_options( int *ena_comment, int *sh_class, int *sh_alias, int *sh_descrip,
int *sh_objref, int *sh_objxref, int *sh_attrref, int *sh_attrxref, int *sh_objref, int *sh_objxref, int *sh_attrref, int *sh_attrxref,
int *bu_force, int *bu_debug, int *bu_crossref, int *bu_manual, int *bu_nocopy); int *bu_force, int *bu_debug, int *bu_crossref, int *bu_crossrefsim,
int *bu_crossrefgraph, int *bu_manual, int *bu_nocopy);
int save_settnings( ofstream& fp); int save_settnings( ofstream& fp);
int node_to_objid( brow_tNode node, pwr_tObjid *objid); int node_to_objid( brow_tNode node, pwr_tObjid *objid);
int unselect_objid( pwr_tObjid objid); int unselect_objid( pwr_tObjid objid);
...@@ -478,4 +480,4 @@ void wnav_attrvalue_to_string( ldh_tSesContext ldhses, int type_id, ...@@ -478,4 +480,4 @@ void wnav_attrvalue_to_string( ldh_tSesContext ldhses, int type_id,
void *value_ptr, char **buff, int *len); void *value_ptr, char **buff, int *len);
char *wnav_get_message( int sts); char *wnav_get_message( int sts);
#endif #endif
\ No newline at end of file
...@@ -314,7 +314,7 @@ dcli_tCmdTable wnav_command_table[] = { ...@@ -314,7 +314,7 @@ dcli_tCmdTable wnav_command_table[] = {
"/NAME", "/IDENTITY", "/FILES", "/OUT", "/IGNORE", "/NAME", "/IDENTITY", "/FILES", "/OUT", "/IGNORE",
"/DIRECTORY", "/DATABASE", "/SERVER", "/DIRECTORY", "/DATABASE", "/SERVER",
"/PLCPGM", "/HIERARCHY", "/FROM_PLCPGM", "/TEMPLATE", "/PLCPGM", "/HIERARCHY", "/FROM_PLCPGM", "/TEMPLATE",
"/SIMULATION", "/RTONLY", "/DEPENDENCY", "/DESCRIPTION", ""} "/SIMULATION", "/GRAPH", "/RTONLY", "/DEPENDENCY", "/DESCRIPTION", ""}
}, },
{ {
"NEW", "NEW",
...@@ -1328,6 +1328,34 @@ static int wnav_set_func( void *client_data, ...@@ -1328,6 +1328,34 @@ static int wnav_set_func( void *client_data,
else else
wnav->gbl.build.crossref = 0; wnav->gbl.build.crossref = 0;
} }
else if ( cdh_NoCaseStrncmp( arg1_str, "BUILDCROSSREFSIM", strlen( arg1_str)) == 0)
{
if ( EVEN( dcli_get_qualifier( "/LOCAL", 0, 0)))
(wnav->gbl_command_cb)( wnav->parent_ctx, "SET BUILDCROSSREFSIM");
else
wnav->gbl.build.crossref_sim = 1;
}
else if ( cdh_NoCaseStrncmp( arg1_str, "NOBUILDCROSSREFSIM", strlen( arg1_str)) == 0)
{
if ( EVEN( dcli_get_qualifier( "/LOCAL", 0, 0)))
(wnav->gbl_command_cb)( wnav->parent_ctx, "SET NOBUILDCROSSREFSIM");
else
wnav->gbl.build.crossref_sim = 0;
}
else if ( cdh_NoCaseStrncmp( arg1_str, "BUILDCROSSREFGRAPH", strlen( arg1_str)) == 0)
{
if ( EVEN( dcli_get_qualifier( "/LOCAL", 0, 0)))
(wnav->gbl_command_cb)( wnav->parent_ctx, "SET BUILDCROSSREFGRAPH");
else
wnav->gbl.build.crossref_graph = 1;
}
else if ( cdh_NoCaseStrncmp( arg1_str, "NOBUILDCROSSREFGRAPH", strlen( arg1_str)) == 0)
{
if ( EVEN( dcli_get_qualifier( "/LOCAL", 0, 0)))
(wnav->gbl_command_cb)( wnav->parent_ctx, "SET NOBUILDCROSSREFGRAPH");
else
wnav->gbl.build.crossref_graph = 0;
}
else if ( cdh_NoCaseStrncmp( arg1_str, "BUILDMANUAL", strlen( arg1_str)) == 0) else if ( cdh_NoCaseStrncmp( arg1_str, "BUILDMANUAL", strlen( arg1_str)) == 0)
{ {
if ( EVEN( dcli_get_qualifier( "/LOCAL", 0, 0))) if ( EVEN( dcli_get_qualifier( "/LOCAL", 0, 0)))
...@@ -4259,10 +4287,11 @@ static int wnav_create_func( void *client_data, ...@@ -4259,10 +4287,11 @@ static int wnav_create_func( void *client_data,
if ( EVEN(sts)) return sts; if ( EVEN(sts)) return sts;
int simulate = ODD( dcli_get_qualifier( "/SIMULATION", 0, 0)); int simulate = ODD( dcli_get_qualifier( "/SIMULATION", 0, 0));
int graph = ODD( dcli_get_qualifier( "/GRAPH", 0, 0));
wb_crrgen crrgen( (wb_session *)wnav->ldhses); wb_crrgen crrgen( (wb_session *)wnav->ldhses);
crrgen.load( &sts, simulate); crrgen.load( &sts, simulate, graph);
crrgen.write( &sts); crrgen.write( &sts);
crrgen.write_code( &sts); crrgen.write_code( &sts);
} }
...@@ -7825,4 +7854,4 @@ int WNav::check_new_volumename( char *vname) ...@@ -7825,4 +7854,4 @@ int WNav::check_new_volumename( char *vname)
return WNAV__VOLNAMEEXIST; return WNAV__VOLNAMEEXIST;
else else
return WNAV__SUCCESS; return WNAV__SUCCESS;
} }
\ No newline at end of file
...@@ -186,6 +186,8 @@ class Wtt : public WUtility { ...@@ -186,6 +186,8 @@ class Wtt : public WUtility {
int build_force; int build_force;
int build_debug; int build_debug;
int build_crossref; int build_crossref;
int build_crossref_sim;
int build_crossref_graph;
int build_manual; int build_manual;
int build_nocopy; int build_nocopy;
int wnav_mapped; int wnav_mapped;
......
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