void WdaGtk::class_activate_ok( GtkWidget *w, gpointer data) { WdaGtk *wda = (WdaGtk *)data; char *hiername; char *classname; char *utf8; int sts; pwr_tClassId new_classid; utf8 = gtk_editable_get_chars( GTK_EDITABLE(wda->wdaclass_hiervalue), 0, -1); hiername = g_convert( utf8, -1, "ISO8859-1", "UTF-8", NULL, NULL, NULL); g_free( utf8); utf8 = gtk_editable_get_chars( GTK_EDITABLE(wda->wdaclass_classvalue), 0, -1); classname = g_convert( utf8, -1, "ISO8859-1", "UTF-8", NULL, NULL, NULL); g_free( utf8); wda->attrobjects = (int) gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(wda->wdaclass_attrobjects)); if ( strcmp( hiername, "") == 0) wda->objid = pwr_cNObjid; else { sts = ldh_NameToObjid( wda->ldhses, &wda->objid, hiername); if ( EVEN(sts)) { CoWowGtk ww(wda->wdaclass_dia); ww.DisplayError( "Hierarchy object error", wnav_get_message( sts)); return; } } sts = ldh_ClassNameToId( wda->ldhses, &new_classid, classname); g_free( classname); g_free( hiername); if ( EVEN(sts)) { CoWowGtk ww(wda->wdaclass_dia); ww.DisplayError( "Class error", wnav_get_message( sts)); return; } g_object_set( wda->wdaclass_dia, "visible", FALSE, NULL); if ( wda->classid != new_classid) { // Enter attribute wda->classid = new_classid; wda->open_attr_dialog(); } else { // Find new attributes sts = ((WdaNav *)wda->wdanav)->update( wda->objid, wda->classid, wda->attribute, wda->attrobjects); if ( EVEN(sts)) { CoWowGtk ww(wda->wdaclass_dia); ww.DisplayError( "Spreadsheet error", wnav_get_message( sts)); } } }
void WdaMotif::class_activate_ok( Widget w, WdaMotif *wda, XmAnyCallbackStruct *data) { char *hiername; char *classname; int sts; pwr_tClassId new_classid; hiername = XmTextGetString( wda->wdaclass_hiervalue); classname = XmTextGetString( wda->wdaclass_classvalue); wda->attrobjects = XmToggleButtonGetState(wda->wdaclass_attrobjects); if ( strcmp( hiername, "") == 0) wda->objid = pwr_cNObjid; else { sts = ldh_NameToObjid( wda->ldhses, &wda->objid, hiername); if ( EVEN(sts)) { CoWowMotif ww(wda->wdaclass_dia); ww.DisplayError( "Hierarchy object error", wnav_get_message( sts)); return; } } sts = ldh_ClassNameToId( wda->ldhses, &new_classid, classname); if ( EVEN(sts)) { CoWowMotif ww(wda->wdaclass_dia); ww.DisplayError( "Class error", wnav_get_message( sts)); return; } XtUnmanageChild( wda->wdaclass_dia); if ( wda->classid != new_classid) { // Enter attribute wda->classid = new_classid; wda->open_attr_dialog(); } else { // Find new attributes sts = ((WdaNav *)wda->wdanav)->update( wda->objid, wda->classid, wda->attribute, wda->attrobjects); if ( EVEN(sts)) wda->wow->DisplayError( "Spreadsheet error", wnav_get_message( sts)); } }
static pwr_tStatus SetDefaults ( ldh_sMenuCall *ip ) { pwr_tStatus sts; pwr_tOName Name; pwr_tObjid Object; int size; sts = ldh_ObjidToName(ip->PointedSession, ip->Pointed.Objid, ldh_eName_Hierarchy, Name, sizeof(Name), &size); if (EVEN(sts)) return sts; strncat(Name, "-Defaults", sizeof(Name)); sts = ldh_NameToObjid(ip->PointedSession, &Object, Name); if (EVEN(sts)) return sts; ip->wtt->watt_new( ip->Pointed); return sts; }
static pwr_tStatus OpenTemplate ( ldh_sMenuCall *ip ) { pwr_tStatus sts; pwr_tOName Name; pwr_tObjid Template; pwr_sAttrRef Aref; int size; sts = ldh_ObjidToName(ip->PointedSession, ip->Pointed.Objid, ldh_eName_Default, Name, sizeof(Name), &size); if (EVEN(sts)) return sts; strncat(Name, "-Template", sizeof(Name)); sts = ldh_NameToObjid(ip->PointedSession, &Template, Name); if (EVEN(sts)) return sts; Aref = cdh_ObjidToAref( Template); ip->wtt->watt_new( Aref); return sts; }
static pwr_tStatus PostAdopt ( ldh_tSesContext Session, pwr_tObjid Card, /* current card object */ pwr_tObjid Channel, pwr_tClassId Class /* class of child to adopt */ ) { pwr_tStatus sts; pwr_sClass_Do_HVDO32 RCard; pwr_sdClass_Do_HVDO32 DCard; pwr_sClass_ChanDo ChanDo; pwr_tUInt32 MaxChan; pwr_tUInt32 Chan; pwr_tString80 NewName; pwr_tString80 Description; pwr_tString80 Identity; pwr_tString80 DefName; pwr_sObject DefBody; pwr_tObjid DefObject; int i; if (Class != pwr_cClass_ChanDo) return PWRB__CHANCLASS; sts = ldh_ReadObjectBody(Session, Card, "RtBody", &RCard, sizeof(RCard)); if (EVEN(sts)) return sts; sts = ldh_ReadObjectBody(Session, Card, "DevBody", &DCard, sizeof(DCard)); if (EVEN(sts)) return sts; MaxChan = co_min(32, RCard.MaxNoOfChannels); for (i = 0, Chan = 1; i < (int)MaxChan; i++, Chan <<= 1) { if ((DCard.ChannelAllocation & Chan) == 0) break; } if (i >= (int)MaxChan) return PWRB__ALOCHAN; /* allocate new channel */ DCard.ChannelAllocation |= Chan; sts = ldh_SetObjectBody(Session, Card, "DevBody", (char *)&DCard, sizeof(DCard)); if (EVEN(sts)) return sts; /* change attributes of channel NOTE ! this should be done by a method of the channel object, but is not implemented in this version of PROVIEW/R. */ switch (Class) { case pwr_cClass_ChanDo: sts = ldh_ReadObjectBody(Session, Channel, "RtBody", &ChanDo, sizeof(ChanDo)); if (EVEN(sts)) return sts; if (ChanDo.Description[0] != '\0') { sprintf(Description, ChanDo.Description, i); if (strlen(Description) <= sizeof(ChanDo.Description) - 1) { strcpy(ChanDo.Description, Description); } } if (ChanDo.Identity[0] != '\0') { sprintf(Identity, ChanDo.Identity, i); if (strlen(Identity) <= sizeof(ChanDo.Identity) - 1) { strcpy(ChanDo.Identity, Identity); } } ChanDo.Number = i; sts = ldh_SetObjectBody(Session, Channel, "RtBody", (char *)&ChanDo, sizeof(ChanDo)); strcpy(DefName, "pwrb:Class-ChanDo-Defaults"); break; } /* change name of channel */ sts = ldh_NameToObjid(Session, &DefObject, DefName); if (EVEN(sts)) return PWRB__SUCCESS; sts = ldh_ReadObjectBody(Session, DefObject, "SysBody", &DefBody, sizeof(DefBody)); if (DefBody.Name[0] != '\0') { sprintf(NewName, DefBody.Name, i+1); NewName[31] = '\0'; sts = ldh_SetObjectName(Session, Channel, NewName); } return PWRB__SUCCESS; }
int wnav_crr_name_to_objid_cb( void *ctx, char *name, pwr_tObjid *objid) { CrrCtx *cctx = (CrrCtx *)ctx; return ldh_NameToObjid( cctx->ldhses, objid, name); }
/************************************************************************* * * Name: trace_getm8() * * Type int * * Type Parameter IOGF Description * tra_ctx tractx I trace context * tra_t_tranode *tranode_ptr I pointer to the tranode to fill up. * int *nb_ptr IO pointer to the nb of tra nodes to create. * irrelevant for this method * * Description: * Tracemethod for a aanalyseobject which refers to a parameter to another * object trough the connection between the analyse node and this other object. * Notice: This method does not create an additionnal tranode. So nb_ptr * is irrelevant. **************************************************************************/ pwr_tStatus trace_get_attr_con( WGre *gre, vldh_t_con con, const char *debug_par, char *object_str, char *attr_str, flow_eTraceType *trace_type) { vldh_t_node conn_node; pwr_tStatus sts; pwr_tClassId cid; ldh_sParDef *bodydef; int i ,rows; int found; pwr_eType par_type; pwr_tObjid objdid; /* Get the object and parameter that is connected to the source object */ sts = gcg_get_connected_parameter( con->hc.source_node, con->lc.source_point, &conn_node, object_str, attr_str); if ( EVEN(sts)) return sts; /* Get the trace type */ sts = ldh_NameToObjid( conn_node->hn.wind->hw.ldhses, &objdid, object_str); sts = ldh_GetObjectClass( conn_node->hn.wind->hw.ldhses, objdid, &cid); sts = ldh_GetObjectBodyDef( conn_node->hn.wind->hw.ldhses, cid, "RtBody", 1, &bodydef, &rows); if( EVEN(sts) ) return sts; found = 0; for ( i = 0; i < rows; i++) { if ( strcmp(bodydef[i].ParName, attr_str) == 0) { found = 1; break; } } if ( !found ) { free((char *) bodydef); return TRA__NOPAR; } par_type = bodydef[i].Par->Param.Info.Type; switch( par_type) { case pwr_eType_Boolean: *trace_type = flow_eTraceType_Boolean; break; case pwr_eType_Int32: *trace_type = flow_eTraceType_Int32; break; case pwr_eType_Float32: *trace_type = flow_eTraceType_Float32; break; default: *trace_type = flow_eTraceType_Int32; break; } return TRA__SUCCESS; }
static pwr_tStatus ConfigFc ( ldh_sMenuCall *ip ) { int sts; pwr_tOName name; pwr_tOName pname; pwr_tObjName oname; int size; pwr_tCid cid; pwr_tTid tid; unsigned int flags; pwr_tInt32 int_val; pwr_tObjid oid; pwr_tObjid coid; int plcconnect = 0; int plctemplate = 0; char str[80]; pwr_sMenuButton mb; sts = ldh_GetChild(ip->PointedSession, ip->Pointed.Objid, &oid); if ( ODD(sts)) { ip->wnav->wow->DisplayError( "Error", "ClassDef is already configured\n Object has child"); return 0; } /* If argument is PlcConnect, configure a connected function object i.e. an $Intern named PlcConnnect, a PlcConnect MenuRef, and connectmethod 10 */ sts = ldh_ReadObjectBody(ip->PointedSession, ip->ItemList[ip->ChosenItem].MenuObject, "SysBody", &mb, sizeof(pwr_sMenuButton)); if ( strcmp(mb.MethodArguments[0], "PlcConnect") == 0) { plcconnect = 1; plctemplate = 1; } else if ( strcmp(mb.MethodArguments[0], "CCode") == 0) { plcconnect = 0; plctemplate = 0; } else if ( strcmp(mb.MethodArguments[0], "PlcConnectCCode") == 0) { plcconnect = 1; plctemplate = 0; } else { plcconnect = 0; plctemplate = 1; } sts = ldh_ObjidToName( ip->PointedSession, ip->Pointed.Objid, ldh_eName_Hierarchy, pname, sizeof(pname), &size); if ( EVEN(sts)) return sts; sts = ldh_ObjidToName( ip->PointedSession, ip->Pointed.Objid, ldh_eName_Object, oname, sizeof(oname), &size); if ( EVEN(sts)) return sts; sts = ldh_CreateObject( ip->PointedSession, &oid, "RtBody", pwr_eClass_ObjBodyDef, ip->Pointed.Objid, ldh_eDest_IntoFirst); if ( plcconnect) { // Create PlcConnect attribute strcpy( name, pname); strcat( name, "-"); strcat( name, "RtBody"); sts = ldh_NameToObjid( ip->PointedSession, &oid, name); if ( EVEN(sts)) return sts; sts = ldh_CreateObject( ip->PointedSession, &coid, "PlcConnect", pwr_eClass_Intern, oid, ldh_eDest_IntoLast); if ( ODD(sts)) { tid = pwr_eType_AttrRef; sts = ldh_SetObjectPar(ip->PointedSession, coid, "SysBody", "TypeRef", (char *)&tid, sizeof(tid)); if ( EVEN(sts)) return sts; } if ( !plctemplate) { // Create PlcConnectP attribute sts = ldh_CreateObject( ip->PointedSession, &coid, "PlcConnectP", pwr_eClass_Intern, oid, ldh_eDest_IntoLast); if ( ODD(sts)) { tid = pwr_eType_Char; sts = ldh_SetObjectPar(ip->PointedSession, coid, "SysBody", "TypeRef", (char *)&tid, sizeof(tid)); if ( EVEN(sts)) return sts; flags = PWR_MASK_INVISIBLE | PWR_MASK_POINTER | PWR_MASK_PRIVATE; sts = ldh_SetObjectPar(ip->PointedSession, coid, "SysBody", "Flags", (char *)&flags, sizeof(flags)); if ( EVEN(sts)) return sts; } } } sts = ldh_CreateObject( ip->PointedSession, &oid, "DevBody", pwr_eClass_ObjBodyDef, ip->Pointed.Objid, ldh_eDest_IntoLast); if ( EVEN(sts)) { // The object already exist } strcpy( name, pname); strcat( name, "-"); strcat( name, "DevBody"); sts = ldh_NameToObjid( ip->PointedSession, &oid, name); if ( EVEN(sts)) return sts; sts = ldh_CreateObject( ip->PointedSession, &oid, "PlcNode", pwr_eClass_Buffer, oid, ldh_eDest_IntoLast); if ( ODD(sts)) { cid = pwr_eClass_PlcNode; sts = ldh_SetObjectPar(ip->PointedSession, oid, "SysBody", "Class", (char *)&cid, sizeof(cid)); if ( EVEN(sts)) return sts; } sts = ldh_CreateObject( ip->PointedSession, &oid, "GraphPlcNode", pwr_eClass_GraphPlcNode, ip->Pointed.Objid, ldh_eDest_IntoLast); if ( ODD(sts)) { if ( plctemplate) { pwr_tCid scid[2]; scid[0] = pwr_cClass_windowplc; scid[1] = 0; int_val = 1; sts = ldh_SetObjectPar(ip->PointedSession, oid, "SysBody", "subwindows", (char *)&int_val, sizeof(int_val)); if ( EVEN(sts)) return sts; sts = ldh_SetObjectPar(ip->PointedSession, oid, "SysBody", "subwindow_class[0]", (char *)scid, sizeof(scid)); if ( EVEN(sts)) return sts; } int_val = 1; sts = ldh_SetObjectPar(ip->PointedSession, oid, "SysBody", "segname_annotation", (char *)&int_val, sizeof(int_val)); if ( EVEN(sts)) return sts; if ( plctemplate) int_val = 58; else if ( plcconnect) int_val = 35; else int_val = 4; sts = ldh_SetObjectPar(ip->PointedSession, oid, "SysBody", "compmethod", (char *)&int_val, sizeof(int_val)); if ( EVEN(sts)) return sts; if ( plcconnect) { int_val = 10; sts = ldh_SetObjectPar(ip->PointedSession, oid, "SysBody", "connectmethod", (char *)&int_val, sizeof(int_val)); if ( EVEN(sts)) return sts; } int_val = 2; sts = ldh_SetObjectPar(ip->PointedSession, oid, "SysBody", "executeordermethod", (char *)&int_val, sizeof(int_val)); if ( EVEN(sts)) return sts; oname[15] = 0; sts = ldh_SetObjectPar(ip->PointedSession, oid, "SysBody", "objname", oname, sizeof(pwr_tString16)); if ( EVEN(sts)) return sts; sts = ldh_SetObjectPar(ip->PointedSession, oid, "SysBody", "graphname", oname, sizeof(pwr_tString16)); if ( EVEN(sts)) return sts; } if ( plcconnect) { sts = ldh_CreateObject( ip->PointedSession, &oid, "RtXtt", pwr_eClass_RtMenu, ip->Pointed.Objid, ldh_eDest_IntoLast); strcpy( name, pname); strcat( name, "-"); strcat( name, "RtXtt"); sts = ldh_NameToObjid( ip->PointedSession, &oid, name); if ( EVEN(sts)) return sts; sts = ldh_CreateObject( ip->PointedSession, &oid, "PlcConnect", pwr_eClass_MenuRef, oid, ldh_eDest_IntoLast); if ( ODD(sts)) { strcpy( str, "PlcConnect"); sts = ldh_SetObjectPar(ip->PointedSession, oid, "SysBody", "ButtonName", str, sizeof(pwr_tString40)); if ( EVEN(sts)) return sts; sts = ldh_SetObjectPar(ip->PointedSession, oid, "SysBody", "RefAttribute", str, sizeof(pwr_tString40)); if ( EVEN(sts)) return sts; } } if ( plctemplate) { sts = ldh_CreateObject( ip->PointedSession, &oid, "Code", pwr_cClass_PlcTemplate, ip->Pointed.Objid, ldh_eDest_IntoLast); } return PWRS__SUCCESS; }