Ejemplo n.º 1
0
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));
    }
  }

}
Ejemplo n.º 2
0
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));
  }

}
Ejemplo n.º 3
0
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;
}
Ejemplo n.º 4
0
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;
}
Ejemplo n.º 5
0
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;
}
Ejemplo n.º 6
0
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);
}
Ejemplo n.º 7
0
/*************************************************************************
*
* 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;
}
Ejemplo n.º 8
0
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;
}