コード例 #1
0
ファイル: wb_pkg.cpp プロジェクト: Strongc/proview
wb_pkg::wb_pkg( char *nodelist, bool distribute, bool config_only)
{
  if ( nodelist) {
    char node_str[32][20];
    int num;
    
    cdh_ToLower( nodelist, nodelist);
    num = dcli_parse( nodelist, " 	,", "", (char *)node_str,
		     sizeof(node_str)/sizeof(node_str[0]),
		     sizeof(node_str[0]), 0);
    m_allnodes = false;
    
    for ( int i = 0; i < num; i++) {
      pkg_node n( node_str[i]);
      m_nodelist.push_back( n);
    }
  }
  else
    m_allnodes = true;

  readConfig();
  if ( config_only)
    return;

  fetchFiles( distribute);
}
コード例 #2
0
static int find_symbol( char *name, char *value)
{
  static int loaded = 0;
  static char sym_vect[MAXSYMBOLS][80];
  static char value_vect[MAXSYMBOLS][80];
  static int vect_cnt;
  int nr;
  char elemv[3][80];
  int j;
  int		found;

  // Read the file
  if ( !loaded) {
    FILE *fp;
    char line[200];
    pwr_tFileName fname;

    vect_cnt = 0;

    sprintf( fname, "$pwrp_db/pwrp_cnf_websymbols.dat");
    dcli_translate_filename( fname, fname);

    fp = fopen( fname, "r");
    if ( !fp)
      return 0;


    while ( dcli_read_line( line, sizeof( line), fp)) {
      nr = dcli_parse( line, " ", "", (char *)elemv, sizeof( elemv) / sizeof( elemv[0]), 
		       sizeof( elemv[0]), 0);
      if ( nr != 3)
	continue;
      strcpy( sym_vect[vect_cnt], elemv[1]);
      strcpy( value_vect[vect_cnt], elemv[2]);
      vect_cnt++;
    }
    fclose( fp);
    loaded = 1;
  }

  if ( !vect_cnt)
    return 0;

  for ( j = 0; j < vect_cnt; j++) {
    if ( cdh_NoCaseStrcmp( name, sym_vect[j]) == 0) {
      strcpy( value, value_vect[j]);
      found = 1;
      break;
    }
  }
  if ( !found) 
    return 0;

  return 1;
}
コード例 #3
0
ファイル: cnv_setup.cpp プロジェクト: siamect/proview
int CnvSetup::setup(char* filename)
{
  int sts;
  char line[400];
  char line_part[4][80];
  int nr;
  char line_cnt = 0;
  FILE* fp;

  fp = fopen(filename, "r");
  if (!fp)
    return 0;

  while (1) {
    sts = CnvCtx::read_line(line, sizeof(line), fp);
    if (!sts)
      break;
    else {
      line_cnt++;
      str_trim(line, line);
      if (streq(line, ""))
        continue;

      if (line[0] == '!' || line[0] == '#')
        continue;

      nr = dcli_parse(line, " 	=", "", (char*)line_part,
          sizeof(line_part) / sizeof(line_part[0]), sizeof(line_part[0]), 0);

      if (streq(CnvCtx::low(line_part[0]), "group")) {
        if (nr < 2) {
          printf("** Setup syntax error in file %s, line %d\n", filename,
              line_cnt);
          continue;
        }
        if (group_cnt >= (int)(sizeof(groups) / sizeof(groups[0]))) {
          printf("** Max number of groups exceeded in file %s, line %d\n",
              filename, line_cnt);
          continue;
        }
        strcpy(groups[group_cnt], line_part[1]);
        if (nr >= 3)
          strcpy(groups_startpage[group_cnt], line_part[2]);
        else
          strcpy(groups_startpage[group_cnt], "");
        group_cnt++;
      }
    }
  }
  fclose(fp);

  return 1;
}
コード例 #4
0
ファイル: wb_db.cpp プロジェクト: jordibrus/proview
static void get_config( char *name, unsigned int *lk_max_locks, 
			unsigned int *lk_max_objects)
{
  pwr_tFileName fname;
  FILE *fp;
  char line[200];
  char	line_elem[2][100];
  unsigned int max_locks;
  unsigned int max_objects;
  int nr;

  *lk_max_locks = 50000;
  *lk_max_objects = 20000;

  strcpy( fname, name);
  strcat( fname, ".cnf");
  dcli_translate_filename( fname, fname);

  fp = fopen( fname, "r");
  if ( !fp)
    return;

  while ( dcli_read_line( line, sizeof(line), fp)) {
    dcli_trim( line, line);
    if ( line[0] == '#')
      continue;
    if ( strcmp( line, "") == 0)
      continue;
    
    nr = dcli_parse( line, " 	", "",
		(char *) line_elem, sizeof( line_elem)/sizeof( line_elem[0]), 
		sizeof( line_elem[0]), 1);
    if ( nr != 2)
      continue;

    if ( cdh_NoCaseStrcmp( line_elem[0], "lk_max_locks") == 0) {
      nr = sscanf( line_elem[1], "%d", &max_locks);
      if ( nr == 1) {
	*lk_max_locks = max_locks;
	printf( "lk_max_locks.........%d\n", max_locks);
      }
    }
    else if ( cdh_NoCaseStrcmp( line_elem[0], "lk_max_objects") == 0) {
      nr = sscanf( line_elem[1], "%d", &max_objects);
      if ( nr == 1) {
	*lk_max_objects = max_objects;
	printf( "lk_max_objects.......%d\n", max_objects);
      }
    }
  }
  fclose( fp);
}
コード例 #5
0
ファイル: co_cnf.c プロジェクト: ManfredHerrmann/proview
char *cnf_get_value( const char *name, char *value, int size)
{
  FILE *fp;
  char line[400];
  char item_str[2][200];
  static char ret_value[200];
  int nr;  
  int i;


  fp = fopen( cnf_cFile, "r");

  if ( fp) {

    while ( dcli_read_line( line, sizeof( line), fp)) {
      if ( line[0] == '#')
        continue;

      nr = dcli_parse( line, " 	", "", (char *)item_str, 
		sizeof( item_str) / sizeof( item_str[0]), sizeof( item_str[0]), 0);
      if ( nr < 2)
        continue;
    
      if ( cdh_NoCaseStrcmp( name, item_str[0]) == 0) {
        strcpy( ret_value, item_str[1]);
        if ( value)
          strncpy( value, ret_value, size);
        fclose( fp);
        return ret_value;
      }
    }
    fclose( fp);
  }

  /* Find default value */
  for ( i = 0; i < sizeof(default_values)/sizeof(default_values[0]); i++) {
    if ( strcmp( name, default_values[i][0]) == 0) {
      strcpy( ret_value, default_values[i][1]);
      if ( value)
        strncpy( value, ret_value, size);
      return ret_value;
    }
  }
  return NULL;
}
コード例 #6
0
ファイル: co_merge.c プロジェクト: Strongc/proview
static int check_os( char *str, char *os)
{
  char os_vect[10][20];
  int nr;
  int i;
  char os_element[20];

  nr = dcli_parse( str, "||", "", (char *)os_vect, 
                       sizeof( os_vect) / sizeof( os_vect[0]), sizeof( os_vect[0]), 0);

  for ( i = 0; i < nr; i++) {
    dcli_trim( os_element, os_vect[i]);
    if ( cdh_NoCaseStrcmp( os, os_element) == 0)
      return 1;    
  }
	
  return 0;
}
コード例 #7
0
ファイル: xtt_url.cpp プロジェクト: siamect/proview
static int find_symbol(
    char* name, char* value, pwr_sClass_WebBrowserConfig* config)
{
  char sym_array[2][80];
  int nr;
  int i;

  for (i = 0; i < 10; i++) {
    if (!streq(config->URL_Symbols[i], "")) {
      nr = dcli_parse(config->URL_Symbols[i], " 	", "", (char*)sym_array,
          sizeof(sym_array) / sizeof(sym_array[0]), sizeof(sym_array[0]), 0);
      if (nr != 2)
        continue;
      if (streq(sym_array[0], name)) {
        strcpy(value, sym_array[1]);
        return 1;
      }
    }
  }
  return 0;
}
コード例 #8
0
ファイル: xtt_ev.cpp プロジェクト: Strongc/proview
void Ev::create_aliaslist( void *up)
{
  char alias_array[2][80];
  int nr;
  int i, j;
  int alias_size;
  ev_sAlias dum;
  pwr_sClass_OpPlace *userp = (pwr_sClass_OpPlace *)up;
  int listsize = MIN( sizeof(userp->EventSelectList)/sizeof(userp->EventSelectList[0]),
		      sizeof(alias_list)/sizeof(alias_list[0]));
						    
  for ( i = 0, j = 0; i < listsize; i++) {
    strcpy( alias_list[i].Alias, "");
    strcpy( alias_list[i].Object, "");
  }
  for ( i = 0, j = 0; i < listsize; i++) {
    nr = dcli_parse( userp->EventSelectList[i], " 	", "",
	     (char *) alias_array, sizeof( alias_array)/sizeof( alias_array[0]), 
	     sizeof( alias_array[0]), 0);
    if ( nr < 2)
      continue;

    cdh_ToUpper( alias_list[j].Object, alias_array[0]);
    strncpy( alias_list[j].Alias, alias_array[1], sizeof(alias_list[j].Alias));
    alias_list[j].Alias[sizeof(alias_list[j].Alias)-1] = 0;
    j++;
  }
  alias_size = j;

  // Order
  for ( i = alias_size - 1; i > 0; i--) {
    for ( j = 0; j < i; j++) {
      if ( strcmp( alias_list[j].Object, alias_list[j+1].Object) <= 0) {
	memcpy( &dum, &alias_list[j+1], sizeof(dum));
	memcpy( &alias_list[j+1], &alias_list[j], sizeof(dum));
	memcpy( &alias_list[j], &dum, sizeof(dum));
      }
    }
  }
}
コード例 #9
0
static int IsOkConnect (
  ldh_sMenuCall *ip,
  pwr_sMenuButton *mbp
) {
  pwr_tStatus	sts;

  if ( strcmp( mbp->FilterArguments[1], "") != 0) {
    char arg_cid_str[20][32];
    int arg_cid_cnt;
    int i;
    int cid_ok = 0;
    pwr_tCid	cid;
    pwr_tCid	arg_cid;

    // arg 1 holds the allowed class or classes to connect to
    arg_cid_cnt = dcli_parse( mbp->FilterArguments[1], ",", "", (char *) arg_cid_str, 
		sizeof( arg_cid_str) / sizeof( arg_cid_str[0]),
		sizeof( arg_cid_str[0]), 0);


    sts = ldh_GetAttrRefTid( ip->PointedSession, &ip->Selected[0], &cid);
    if ( EVEN(sts)) return 0;

    for ( i = 0; i < arg_cid_cnt; i++) {
      sts = ldh_ClassNameToId( ip->PointedSession, &arg_cid, arg_cid_str[i]);
      if ( EVEN(sts)) return 0;

      if ( cid == arg_cid) {
	cid_ok = 1;
	break;
      }
    }
    if ( !cid_ok)
      return 0;
  }

  return 1;
}
コード例 #10
0
int XttHotkey::read_file()
{
  FILE *fp;
  char line[200];
  int row = 0;
  char p1[2][200];
  char p2[10][200];
  int i, n;
  char *s;

  dcli_translate_filename( m_filename, m_filename);
  fp = fopen( m_filename, "r");
  if ( !fp)
    return 0;

  while ( dcli_read_line( line, sizeof(line), fp)) {
    int mod = 0;
    int keysym;
    char keystr[20] = "";
    char action_arg[200];
    char action_name[200];

    row++;

    dcli_trim( line, line);
    if ( line[0] == 0 || line[0] == '#')
      continue;

    n = dcli_parse( line, ":", "", (char *)p1, 
		    sizeof( p1) / sizeof( p1[0]), sizeof( p1[0]), 0);
    if ( n != 2) {
      printf( "Syntax error, %s, row %d\n", m_filename, row);
      continue;
    }
    dcli_trim( p1[0], p1[0]);
    dcli_trim( p1[1], p1[1]);

    n = dcli_parse(  p1[0], " 	", "", (char *)p2, 
		    sizeof( p2) / sizeof( p2[0]), sizeof( p2[0]), 0);
    if ( n < 1) {
      printf( "Syntax error, %s, row %d\n", m_filename, row);
      continue;
    }
    for ( i = 0; i < n; i++) {
      if ( cdh_NoCaseStrcmp( p2[i], "Control") == 0)
	mod |= ControlMask;
      else if ( cdh_NoCaseStrcmp( p2[i], "Shift") == 0)
	mod |= ShiftMask; 
      else if ( cdh_NoCaseStrcmp( p2[i], "Alt") == 0)
	mod |= Mod1Mask; 
      else if ( cdh_NoCaseStrncmp( p2[i], "<key>", 5) == 0) {
	strcpy( keystr, &p2[i][5]);
      	dcli_trim( keystr, keystr);
      }
      else {
	printf( "Syntax error, %s, row %d\n", m_filename, row);
	break;
      }
    }

    n = dcli_parse(  p1[1], "(", "", (char *)p2, 
		     sizeof( p2) / sizeof( p2[0]), sizeof( p2[0]), 0);
    if ( n < 2) {
      printf( "Syntax error, %s, row %d\n", m_filename, row);
      continue;
    }
    strcpy( action_name, p2[0]);
    dcli_trim( action_name, action_name);
    strcpy( action_arg, p2[1]);
    if ( (s = strrchr( action_arg, ')')))
      *s = 0;
    else {
      printf( "Syntax error, %s, row %d\n", m_filename, row);
      continue;
    }
    keysym = XStringToKeysym( keystr);
    if ( !keysym) {
      printf( "Syntax error, %s, row %d\n", m_filename, row);
      continue;
    }

    HotkeyKey key( mod, keysym, action_name, action_arg);
    m_keys.push_back( key);
  }

  fclose( fp);

  for ( i = 0; i < (int)m_keys.size(); i++) {
    grab_key( m_keys[i].m_keysym, m_keys[i].m_mod);
  }

  return 1;
}
コード例 #11
0
ファイル: wb_c_pndevice.cpp プロジェクト: siamect/proview
static pwr_tStatus generate_viewer_data(device_sCtx* ctx)
{
  pwr_tOid controller;
  pwr_tCid ccid;
  FILE* fp;
  FILE* ofp;
  pwr_tFileName fname;
  char line[500];
  char elemv[3][200];
  int nr;
  char device_text[200];
  char device_name[80];
  char ip_address[80];
  char mac_address[80];
  unsigned int vendor_id = 0;
  unsigned int device_id = 0;
  char* s;
  pwr_tStatus sts;
  pwr_tOid oid;
  char* ethernet_device;
  int size;

  sts = ldh_GetParent(ctx->ldhses, ctx->aref.Objid, &controller);
  if (EVEN(sts))
    return sts;

  sts = ldh_GetObjectClass(ctx->ldhses, controller, &ccid);
  if (ODD(sts) && ccid == pwr_cClass_PnControllerSoftingPNAK) {
    sts = ldh_GetObjectPar(ctx->ldhses, controller, "RtBody", "EthernetDevice",
        (char**)&ethernet_device, &size);
    if (EVEN(sts))
      return sts;

    str_trim(ethernet_device, ethernet_device);
    str_ToLower(ethernet_device, ethernet_device);
    sprintf(fname, "$pwrp_load/pwr_pnviewer_%s.dat", ethernet_device);
    free(ethernet_device);
    dcli_translate_filename(fname, fname);
    ofp = fopen(fname, "w");
    if (!ofp)
      return 0;

    for (sts = ldh_GetChild(ctx->ldhses, controller, &oid); ODD(sts);
         sts = ldh_GetNextSibling(ctx->ldhses, oid, &oid)) {
      sprintf(fname, "$pwrp_load/pwr_pn_%s.xml", cdh_ObjidToFnString(0, oid));
      dcli_translate_filename(fname, fname);

      fp = fopen(fname, "r");
      if (!fp)
        return 0;

      while (dcli_read_line(line, sizeof(line), fp)) {
        str_trim(line, line);
        nr = dcli_parse(line, "=", "", (char*)elemv,
            sizeof(elemv) / sizeof(elemv[0]), sizeof(elemv[0]), 0);
        if (nr != 2)
          continue;

        if (streq(elemv[0], "DeviceText")) {
          strncpy(device_text, elemv[1], sizeof(device_text));
        } else if (streq(elemv[0], "VendorId")) {
          sscanf(elemv[1], "%d", &vendor_id);
        } else if (streq(elemv[0], "DeviceId")) {
          sscanf(elemv[1], "%d", &device_id);
        } else if (streq(elemv[0], "DeviceName")) {
          strncpy(device_name, elemv[1], sizeof(device_name));
        } else if (streq(elemv[0], "IP_Address")) {
          strncpy(ip_address, elemv[1], sizeof(ip_address));
        } else if (streq(elemv[0], "MAC_Address")) {
          strncpy(mac_address, elemv[1], sizeof(mac_address));
          if ((s = strchr(mac_address, '/')))
            *s = 0;
          str_trim(mac_address, mac_address);
          break;
        }
      }
      fclose(fp);

      fprintf(ofp, "\"%s\" \"%s\" \"%s\" \"%s\" %d %d\n", device_text,
          device_name, ip_address, mac_address, vendor_id, device_id);
    }
    fclose(ofp);
  }
  return 1;
}
コード例 #12
0
ファイル: wb_c_object.cpp プロジェクト: jordibrus/proview
static pwr_tStatus configure_object_reset( ldh_sMenuCall *ip, pwr_sAttrRef *aref,
					   pwr_sMenuButton *mb)
{
  pwr_tStatus 	sts;
  pwr_tCid 	cid;
  ldh_sParDef 	*bodydef;
  int 		rows;
  int		i, j;
  pwr_sAttrRef  aaref, daref;
  pwr_tDisableAttr disable = 0;
  char 		vect[10][80];
  int 		vect_cnt;
  int 		skip;
  char		*s;
  
  // Attribute objects in argument 2 are not controlled by the configure method
  if ( mb) {
    vect_cnt = dcli_parse( mb->MethodArguments[2], ",", "", (char *)vect, 
			   sizeof( vect) / sizeof( vect[0]), 
			   sizeof( vect[0]), 0);
    for ( j = 0; j < vect_cnt; j++)
      dcli_trim( vect[j], vect[j]);
  }
  else
    vect_cnt = 0;

  sts = ldh_GetAttrRefTid( ip->PointedSession, aref, &cid);
  if ( EVEN(sts)) return sts;

  sts = ldh_GetObjectBodyDef( ip->PointedSession, cid, "RtBody", 1,
				  &bodydef, &rows);
  if (EVEN(sts)) return sts;

  for ( i = 0; i < rows; i++) {

    // Check if attribute is controlled by this method
    skip = 0;
    if ( mb) {
      // Remove leading Super.
      s = bodydef[i].ParName;
      while ( strncmp( s, "Super.", 6) == 0)
	s += 6;
      for ( j = 0; j < vect_cnt; j++) {
	if ( cdh_NoCaseStrcmp( vect[j], s) == 0) {
	  // This object should not be reset
	  skip = 1;
	  break;
	}
      }
      if ( skip)
	continue;
    }

    if ( bodydef[i].Par->Param.Info.Flags & PWR_MASK_DISABLEATTR) {
      // Enable all attributes
      sts = ldh_ArefANameToAref( ip->PointedSession, aref, bodydef[i].ParName, &aaref);
      if ( EVEN(sts)) return sts;

      daref = cdh_ArefToDisableAref( &aaref);

      sts = ldh_WriteAttribute( ip->PointedSession, &daref, (void *)&disable, 
				sizeof(disable));
      if ( EVEN(sts)) return sts;
    }

    if ( bodydef[i].Par->Param.Info.Flags & PWR_MASK_CLASS) {
      // Reset object attribute
      sts = ldh_ArefANameToAref( ip->PointedSession, aref, bodydef[i].ParName, &aaref);
      if ( EVEN(sts)) return sts;

      sts = configure_object_reset( ip, &aaref, 0);
      if ( EVEN(sts)) return sts;
    }
  }
  free( (char *)bodydef);

  return LDH__SUCCESS;
}
コード例 #13
0
ファイル: wb_c_object.cpp プロジェクト: jordibrus/proview
static pwr_tStatus ConfigureComponent( ldh_sMenuCall *ip) 
{
  pwr_tStatus sts;
  unsigned int disable_mask;
  pwr_sMenuButton   mb;
  pwr_tEnum graph_configuration;
  pwr_sAttrRef aaref;
  char vect[10][80];
  char item[3][80];
  int i;
  int nr;
  int vect_cnt;
  
  sts = ldh_ReadObjectBody(ip->PointedSession, ip->ItemList[ip->ChosenItem].MenuObject,
    "SysBody", &mb, sizeof(pwr_sMenuButton));

  // Reset previoius disable configuration
  configure_object_reset( ip, &ip->Pointed, &mb);

  // Set disable attributes from argument 0
  if ( mb.MethodArguments[0][0] != '(') {
    // Old syntax, eg '7, CircuitBreaker 4, Contactor 5'
    vect_cnt = dcli_parse( mb.MethodArguments[0], ",", "", (char *)vect, 
			   sizeof( vect) / sizeof( vect[0]), 
			   sizeof( vect[0]), 0);
  
    for ( i = 0; i < vect_cnt; i++) {
      nr = dcli_parse( vect[i], " 	", "", (char *)item,
		       sizeof( item) / sizeof( item[0]), 
		       sizeof( item[0]), 0);
      if ( nr == 1) {
	
	if ( sscanf( item[0], "%d", &disable_mask) != 1)
	  graph_configuration = 0;

	sts = configure_object( ip, &ip->Pointed, disable_mask);
	if ( EVEN(sts)) return sts;
      }
      else if ( nr == 2) {
	pwr_tAName aname;
	
	if ( sscanf( item[1], "%d", &disable_mask) != 1)
	  disable_mask = 0;

	strncpy( aname, item[0], sizeof(aname));
	
	sts = ldh_ArefANameToAref( ip->PointedSession, &ip->Pointed, aname, 
				   &aaref);
	if ( ODD(sts)) {
	  sts = configure_object( ip, &aaref, disable_mask);
	  if ( EVEN(sts)) return sts;
	}
      }
    }
  }
  else {
    // New syntax, eg '(7 (CircuitBreaker 4, Contactor 5))'
    char str1[256];
    char *s;

    strncpy( str1, &mb.MethodArguments[0][1], sizeof(str1));
    s = strrchr( str1, ')');
    if ( !s)
      return LDH__COMPSYNTAX;

    *s = 0;
    
    dcli_trim( str1, str1);
    nr = sscanf( str1, "%d", &disable_mask);
    if ( nr != 1)
      return LDH__COMPSYNTAX;

    sts = configure_object( ip, &ip->Pointed, disable_mask);
    if ( EVEN(sts)) return sts;

    sts = configure_attrmask( ip, &ip->Pointed, str1);
    if ( EVEN(sts)) return sts;
  }

  // Set GraphConfiguration from argument 1
  vect_cnt = dcli_parse( mb.MethodArguments[1], ",", "", (char *)vect, 
		   sizeof( vect) / sizeof( vect[0]), 
		   sizeof( vect[0]), 0);
  
  for ( i = 0; i < vect_cnt; i++) {
    nr = dcli_parse( vect[i], " 	", "", (char *)item,
		   sizeof( item) / sizeof( item[0]), 
		   sizeof( item[0]), 0);
    if ( nr == 1) {

      if ( sscanf( item[0], "%d", &graph_configuration) != 1)
	graph_configuration = 0;

      sts = ldh_ArefANameToAref( ip->PointedSession, &ip->Pointed, "GraphConfiguration", 
				 &aaref);
      if ( ODD(sts)) {
	sts = ldh_WriteAttribute( ip->PointedSession, &aaref, (void *)&graph_configuration, 
				  sizeof(graph_configuration));
	if ( EVEN(sts)) return sts;
      }
    }
    else if ( nr == 2) {
      pwr_tAName aname;

      if ( sscanf( item[1], "%d", &graph_configuration) != 1)
	graph_configuration = 0;

      strncpy( aname, item[0], sizeof(aname));
      strncat( aname, ".GraphConfiguration", sizeof(aname));

      sts = ldh_ArefANameToAref( ip->PointedSession, &ip->Pointed, aname, 
				 &aaref);
      if ( ODD(sts)) {
	sts = ldh_WriteAttribute( ip->PointedSession, &aaref, (void *)&graph_configuration, 
				  sizeof(graph_configuration));
	if ( EVEN(sts)) return sts;
      }
    }
  }
  return 1;
}
コード例 #14
0
ファイル: wb_crrgen.cpp プロジェクト: siamect/proview
void wb_crrgen::load(pwr_tStatus* rsts, int sim, int graph)
{
  pwr_tStatus sts;

  for (int i = 0; i < int(sizeof(reflist) / sizeof(reflist[0])); i++) {
    if (!sim && reflist[i].table == crrgen_eTable_SimSignal)
      continue;

    for (wb_object o = m_sp->object(reflist[i].cid); o; o = o.next()) {
      pwr_tAttrRef aref;

      // Skip if in LibHier
      bool in_libhier = false;
      for (wb_object p = o.parent(); p; p = p.parent()) {
        if (p.cid() == pwr_eClass_LibHier) {
          in_libhier = true;
          break;
        }
      }
      if (in_libhier)
        continue;

      wb_attribute a
          = m_sp->attribute(o.oid(), reflist[i].body, reflist[i].attr);

      if (reflist[i].is_oid) {
        // Objid reference
        pwr_tOid oid;
        a.value(&oid);
        aref = cdh_ObjidToAref(oid);
      } else
        // AttrRef reference
        a.value(&aref);

      if (cdh_ObjidIsNotNull(aref.Objid)) {
        sCrrKey key;

        wb_utl::utl_replace_symbol((ldh_tSesContext)m_sp, o.oid(), &aref);

        key.target = aref;
        key.reference = cdh_ObjidToAref(o.oid());
        key.type = reflist[i].type;
        switch (reflist[i].table) {
        case crrgen_eTable_Signal:
        case crrgen_eTable_SimSignal:
          tree_Insert(&sts, m_signal_th, &key);
          break;
        case crrgen_eTable_Object:
          tree_Insert(&sts, m_object_th, &key);
          break;
        default:;
        }
      }
    }
  }

  if (graph) {
    // Ge references
    for (wb_object o = m_sp->object(pwr_cClass_XttGraph); o; o = o.next()) {
      pwr_tString80 action;
      pwr_tFileName fname;
      char line[512];
      char linep[2][512];
      int tag;
      int nr;
      char* s;

      wb_attribute a = m_sp->attribute(o.oid(), "RtBody", "Action");

      a.value(action);
      if (strstr(action, ".pwg")) {
        sprintf(fname, "$pwrp_exe/%s", cdh_Low(action));

        dcli_translate_filename(fname, fname);

        std::ifstream fpg(fname);
        if (!fpg)
          continue;

        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;

          nr = sscanf(linep[0], "%d", &tag);
          if (nr != 1)
            continue;

          switch (tag) {
          case ge_eSave_DigLowColor_attribute:
          case ge_eSave_DigColor_attribute:
          case ge_eSave_DigError_attribute:
          case ge_eSave_DigWarning_attribute:
          case ge_eSave_Invisible_attribute:
          case ge_eSave_DigBorder_attribute:
          case ge_eSave_DigText_attribute:
          case ge_eSave_Value_decimals_attr:
          case ge_eSave_ValueInput_minvalue_attr:
          case ge_eSave_ValueInput_maxvalue_attr:
          case ge_eSave_Rotate_attribute:
          case ge_eSave_Move_move_x_attribute:
          case ge_eSave_Move_move_y_attribute:
          case ge_eSave_Move_scale_x_attribute:
          case ge_eSave_Move_scale_y_attribute:
          case ge_eSave_AnalogShift_attribute:
          case ge_eSave_DigShift_attribute:
          case ge_eSave_Animation_attribute:
          case ge_eSave_Bar_attribute:
          case ge_eSave_Bar_minvalue_attr:
          case ge_eSave_Bar_maxvalue_attr:
          case ge_eSave_Trend_attribute1:
          case ge_eSave_Trend_attribute2:
          case ge_eSave_Trend_minvalue_attr1:
          case ge_eSave_Trend_maxvalue_attr1:
          case ge_eSave_Trend_minvalue_attr2:
          case ge_eSave_Trend_maxvalue_attr2:
          case ge_eSave_Trend_mark1_attr:
          case ge_eSave_Trend_mark2_attr:
          case ge_eSave_DigFlash_attribute:
          case ge_eSave_FillLevel_attribute:
          case ge_eSave_FillLevel_minvalue_attr:
          case ge_eSave_FillLevel_maxvalue_attr:
          case ge_eSave_Table_attribute1:
          case ge_eSave_Table_sel_attribute1:
          case ge_eSave_StatusColor_attribute:
          case ge_eSave_DigSound_attribute:
          case ge_eSave_XY_Curve_x_attr:
          case ge_eSave_XY_Curve_y_attr:
          case ge_eSave_XY_Curve_y_minvalue_attr:
          case ge_eSave_XY_Curve_y_maxvalue_attr:
          case ge_eSave_XY_Curve_x_minvalue_attr:
          case ge_eSave_XY_Curve_x_maxvalue_attr:
          case ge_eSave_XY_Curve_x_mark1_attr:
          case ge_eSave_XY_Curve_x_mark2_attr:
          case ge_eSave_XY_Curve_y_mark1_attr:
          case ge_eSave_XY_Curve_y_mark2_attr:
          case ge_eSave_Pie_attribute1:
          case ge_eSave_Pie_attribute2:
          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]);
            if (len > 12
                && str_NoCaseStrcmp(&linep[1][len - 12], ".ActualValue") == 0) {
              linep[1][len - 12] = 0;
              al = m_sp->attribute(linep[1]);
              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;
            }
            default: {
              sCrrKey key;

              key.target = al.aref();
              key.reference = cdh_ObjidToAref(o.oid());
              key.type = crrgen_eType_Read;
              tree_Insert(&sts, m_object_th, &key);
            }
            }
            break;
          }
          case ge_eSave_Value_attribute:
          case ge_eSave_SetDig_attribute:
          case ge_eSave_ResetDig_attribute:
          case ge_eSave_ToggleDig_attribute:
          case ge_eSave_StoDig_attribute:
          case ge_eSave_IncrAnalog_attribute:
          case ge_eSave_RadioButton_attribute:
          case ge_eSave_Slider_attribute:
          case ge_eSave_OptionMenu_attribute:
          case ge_eSave_SetValue_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]);
            if (len > 12
                && str_NoCaseStrcmp(&linep[1][len - 12], ".ActualValue") == 0) {
              linep[1][len - 12] = 0;
              al = m_sp->attribute(linep[1]);
              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;
            }
            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();
      }
    }
  }

  *rsts = 1;
}
コード例 #15
0
ファイル: xtt_tblnav.cpp プロジェクト: hfuhuang/proview
void TblNav::build_tree()
{
  pwr_tObjName name_array[24];
  pwr_tAName aname;
  int seg;

  for ( int i = 0; i < (int)sevhistobjectlist.size(); i++) {
    TblTreeNode n;

    strcpy( aname, sevhistobjectlist[i].oname);
    strcat( aname, ".");
    strcat( aname, sevhistobjectlist[i].objectattrlist[0].aname);

    seg = dcli_parse( aname, "-", "",
                      (char *) name_array, sizeof( name_array)/sizeof( name_array[0]), 
                      sizeof( name_array[0]), 0);

    if ( tree.size() == 0) {
      // First item
      TblTreeNode n0;
      strcpy( n0.sname, "nonode");
      tree.push_back(n0);

      for ( int j = 0; j < seg; j++) {
        TblTreeNode n;

        n.fth = j;
        tree[j].fch = j + 1;
        strcpy( n.sname, name_array[j]);
        if ( j == seg -1)
          n.item = &sevhistobjectlist[i];
        tree.push_back(n);
      }
    }
    else {
      int idx = 1;
      int last = idx;
      for ( int j = 0; j < seg; j++) {
        int found = 0;
        while ( idx) {
          last = idx;
          if ( strcmp( tree[idx].sname, name_array[j]) == 0) {
            found = 1;
            break;
          }
          idx = tree[idx].fws;
        }
        if ( !found) {
          TblTreeNode n;
          strcpy( n.sname, name_array[j]);
          n.fth = tree[last].fth;
          n.bws = last;   
          tree[last].fws = tree.size();
          if ( j == seg - 1)
            n.item = &sevhistobjectlist[i];
          tree.push_back(n);

          for ( int k = j + 1; k < seg; k++) {
            TblTreeNode n;

            n.fth = tree.size() - 1;
            if ( tree[n.fth].fch == 0)
              tree[n.fth].fch = tree.size();
            strcpy( n.sname, name_array[k]);
            if ( k == seg - 1)
              n.item = &sevhistobjectlist[i];
            tree.push_back(n);
          }
          break;
        }
        if ( tree[idx].fch == 0) {
          TblTreeNode n;
          strcpy( n.sname, name_array[j]);
          n.fth = tree[last].fth;
          n.bws = last;   
          tree[last].fws = tree.size();
          if ( j == seg - 1)
            n.item = &sevhistobjectlist[i];
          tree.push_back(n);
          for ( int k = j + 1; k < seg; k++) {
            TblTreeNode n;

            n.fth = tree.size() - 1;
            if ( tree[n.fth].fch == 0)
              tree[n.fth].fch = tree.size();
            strcpy( n.sname, name_array[k]);
            if ( k == seg - 1)
              n.item = &sevhistobjectlist[i];
            tree.push_back(n);
          }
          break;
        }
        idx = tree[idx].fch;
        last = idx;
      }
    }
  }
}
コード例 #16
0
void wb_pvd_gvl::load( pwr_tStatus *rsts)
{
  char line[200];
  char line_item[6][80];
  int num;
  ifstream is;
  pwr_tFileName fname;
  int line_cnt = 0;
  pwr_tStatus sts;
  int menu_stack[100];
  int menu_cnt = 0;
  char description[80];

  *rsts = LDH__SUCCESS;

  // Create Root object
  procom_obj rootitem;
  strcpy( rootitem.name, "GlobalVolumeList");
  rootitem.cid = pwr_eClass_Hier;
  rootitem.oix = 0; 
  m_list.push_back(rootitem);
  menu_stack[menu_cnt] = rootitem.oix;
  menu_cnt++;

  dcli_translate_filename( fname, "$pwra_db/pwr_volumelist.dat");
  is.open( fname);
  if ( !is) {
    *rsts = LDH__NEWFILE;
    return;
  }

  while ( is.getline( line, sizeof(line))) {
    line_cnt++;
    if ( line[0] == '!') {
      if ( strncmp( line, "!**Menu", 7) == 0) {
	// Add Hier
	char *s = strstr( line, "// ");
	if ( s) {
	  strncpy( description, s+3, sizeof(description));
	  description[sizeof(description)-1] = 0;
	}
	else
	  strcpy( description, "");

	num = dcli_parse( line, " 	", "", (char *)line_item,
		     sizeof(line_item)/sizeof(line_item[0]),
		     sizeof(line_item[0]), 0);
	if ( num < 3) {
	  cout << "Syntax error " << fname << " row " << line_cnt << endl;
	  continue;
	}

	procom_obj plantitem;
	strcpy( plantitem.name, line_item[1]);
	plantitem.cid = pwr_eClass_Hier;
	plantitem.oix = next_oix++;
	plantitem.fthoix = menu_stack[menu_cnt - 1];
	plantitem.bwsoix = m_list[plantitem.fthoix].lchoix;
	plantitem.fwsoix = 0;
	plantitem.body_size = sizeof(pwr_sHier);
	pwr_sHier *plantbody = (pwr_sHier *) calloc( 1, plantitem.body_size); 
	plantitem.body = plantbody;
	strcpy( plantbody->Description, description);

	m_list.push_back(plantitem);

	if ( plantitem.bwsoix != 0)
	  m_list[plantitem.bwsoix].fwsoix = plantitem.oix;
	m_list[plantitem.fthoix].lchoix = plantitem.oix;
	if ( m_list[plantitem.fthoix].fchoix == 0)
	  m_list[plantitem.fthoix].fchoix = plantitem.oix;

	menu_stack[menu_cnt] = plantitem.oix;
	menu_cnt++;
      }
      else if ( strncmp( line, "!**}", 4) == 0) {
	if ( menu_cnt == 0) {
	  cout << "Syntax error " << fname << " row " << line_cnt << endl;
	  continue;
	}
	menu_cnt--;
      }
      continue;
    }
    dcli_trim( line, line);

    num = dcli_parse( line, " 	", "", (char *)line_item,
		     sizeof(line_item)/sizeof(line_item[0]),
		     sizeof(line_item[0]), 0);
    if ( num != 3) {
      cout << "Syntax error " << fname << " row " << line_cnt << endl;
      continue;
    }

    procom_obj volitem;
    strcpy( volitem.name, line_item[0]);
    
    volitem.body_size = sizeof(pwr_sClass_VolumeReg);
    pwr_sClass_VolumeReg *volbody = 
      (pwr_sClass_VolumeReg *) calloc( 1, volitem.body_size);

    volitem.body = volbody;
    strcpy( volbody->Project, line_item[2]);
    sts = cdh_StringToVolumeId( line_item[1], &volbody->VolumeId);
    if ( EVEN(sts)) {
      cout << "Syntax error " << fname << " row " << line_cnt << endl;
      continue;
    }

    volitem.cid = pwr_cClass_VolumeReg;
    volitem.oix = next_oix++;
    volitem.fthoix = menu_stack[menu_cnt - 1];
    volitem.bwsoix = m_list[volitem.fthoix].lchoix;
    volitem.fwsoix = 0;
    strcpy( volbody->Description, line_item[1]);
    for ( int i = strlen(volbody->Description); i < 18; i++)
      strcat( volbody->Description, " ");
    strcat( volbody->Description, line_item[2]);

    m_list.push_back(volitem);

    if ( volitem.bwsoix != 0)
      m_list[volitem.bwsoix].fwsoix = volitem.oix;
    m_list[volitem.fthoix].lchoix = volitem.oix;
    if ( m_list[volitem.fthoix].fchoix == 0)
      m_list[volitem.fthoix].fchoix = volitem.oix;

  }
}
コード例 #17
0
ファイル: co_nav_help.cpp プロジェクト: Strongc/proview
int	NavHelp::get_previous_key( const char *help_key, navh_eHelpFile file_type, const char *file_name,
				   bool strict, char *prev_key)
{
  FILE	*file;
  char	line[200];
  char	key[80];
  char	key_part[4][40];
  char	include_file[80];
  char	subject[80];
  char	subject_part[4][40];
  int	key_nr;
  int	subject_nr;
  int	hit = 0;
  int 	sts;
  int	i;  
  char	*s;
  char  prev[80] = "";

  if ( help_key) {
    cdh_ToLower( key, help_key);
  }

  // Open file
  file = navhelp_open_file( this, file_type, file_name);
  if ( !file) return NAV__NOFILE;

  key_nr = dcli_parse( key, " 	", "", (char *)key_part,
		       sizeof( key_part) / sizeof( key_part[0]), 
		       sizeof( key_part[0]), 0);


  sts = dcli_read_line( line, sizeof( line), file);
  while ( ODD(sts)) {
    if ( cdh_NoCaseStrncmp( line, "<include>", 9) == 0) {      
      help_remove_spaces( &line[9], include_file);
      // Replace symbol for language
      if ( strncmp( include_file, "$pwr_lang/", 10) == 0) {
        char lng_include_file[200];

	sprintf( lng_include_file, "$pwr_exe/%s/%s", Lng::get_language_str(),
		 &include_file[10]);
	strcpy( include_file, lng_include_file);
      }

      if ( !noprop) {
	sts = get_next_key( help_key, navh_eHelpFile_Other, 
			    include_file, strict, prev_key);
	if ( ODD(sts)) {
	  fclose( file);
	  return sts;
	}
      }
      hit = 0;
    }
    if ( cdh_NoCaseStrncmp( line, "<topic>", 7) == 0) {
      if ( (s = strstr( line, "<style>")) || (s = strstr( line, "<STYLE>"))) {
	*s = 0;
      }

      help_remove_spaces( &line[7], subject);
      cdh_ToLower( subject, subject);
      subject_nr = dcli_parse( subject, " 	", "", (char *)subject_part,
                	sizeof( subject_part) / sizeof( subject_part[0]),
			sizeof( subject_part[0]), 0);
      if ( key_nr == subject_nr ) {
	for ( i = 0; i < key_nr; i++) {
	  if ( (!strict && strncmp( subject_part[i], key_part[i], strlen(key_part[i])) == 0) ||
	       (strict && strcmp( subject_part[i], key_part[i]) == 0)) {
	    if ( i == key_nr - 1) {
	      hit = 1;
	      strcpy( prev_key, prev);
	    }
	  }
	  else
	    break;
	}
      }
      if ( hit) 
	break;

      strcpy( prev, subject);
    }
    sts = dcli_read_line( line, sizeof( line), file);
  }
  fclose( file);

  if ( !hit || strcmp( prev, "") == 0)
    return NAV__TOPICNOTFOUND;
  return NAV__SUCCESS;
}
コード例 #18
0
ファイル: co_nav_help.cpp プロジェクト: Strongc/proview
int	NavHelp::help( const char *help_key, const char *help_bookmark, 
		       navh_eHelpFile file_type, const char *file_name, void **book_mark,
		       bool strict)
{
  FILE	*file;
  char	line[200];
  char	text1[200];
  char	text2[200];
  char	text3[200];
  char	key[80];
  char	key_part[4][40];
  char	include_file[80];
  char	subject[80];
  char	subject_part[4][40];
  int	key_nr;
  int	subject_nr;
  int	hit = 0;
  int 	sts;
  int	i;  
  char	link[200];
  char	link_bookmark[80];
  char	link_filename[80];
  char	*link_filename_p;
  int	link_nr;
  char	link_part[4][200];
  char	bookmark[80];
  char	search_bookmark[80];
  char	*s;
  int	header1;
  int	header2;
  int	bold;
  int	code;
  int	horizontal_line;
  int	style = 0;
  char  style_str[80];
  int   image;
  char  imagefile[80];
  int	register_bookmark = 0;
  int	bookmark_found = 0;
  void  *bookmark_node = 0;
  int   index_link;
  void  *node;
  int   print_all;
  char  *bookmark_p;
  lng_eCoding coding = lng_eCoding_ISO8859_1;

  print_all = (help_key == NULL);
  if ( help_key) {
    cdh_ToLower( key, help_key);
    cdh_ToLower( search_bookmark, help_bookmark);
  }

  // Open file
  file = navhelp_open_file( this, file_type, file_name);
  if ( !file) return NAV__NOFILE;
	
  if ( !print_all)
    key_nr = dcli_parse( key, " 	", "", (char *)key_part,
			 sizeof( key_part) / sizeof( key_part[0]), 
			 sizeof( key_part[0]), 0);


  sts = dcli_read_line( line, sizeof( line), file);
  while ( ODD(sts)) {
    if ( cdh_NoCaseStrncmp( line, "<coding>", 8) == 0) {      
      char codingstr[40];

      help_remove_spaces( &line[8], codingstr);
      if ( cdh_NoCaseStrcmp( codingstr, "ISO8859-1") == 0) {
	coding = lng_eCoding_ISO8859_1;
      }
      else if ( cdh_NoCaseStrcmp( codingstr, "UTF-8") == 0) {
	coding = lng_eCoding_UTF_8;
      }
    }
    else if ( cdh_NoCaseStrncmp( line, "<include>", 9) == 0) {      
      help_remove_spaces( &line[9], include_file);

      if ( !noprop || strstr( include_file, "$pwr_lang") == 0) {
	sts = help( help_key, help_bookmark, navh_eHelpFile_Other, 
		    include_file, book_mark, strict);
	if ( ODD(sts) && !print_all) {
	  fclose( file);
	  return sts;
	}
      }

      hit = 0;
    }
    else if ( cdh_NoCaseStrncmp( line, "<chapter>", 9) == 0) {      
      (insert_cb)( parent_ctx, navh_eItemType_Chapter, "",
		   NULL, NULL, NULL, NULL, NULL, navh_eHelpFile_, 0, NULL, coding);
    }
    else if ( cdh_NoCaseStrncmp( line, "</chapter>", 10) == 0) {
      (insert_cb)( parent_ctx, navh_eItemType_EndChapter, "",
		   NULL, NULL, NULL, NULL, NULL, navh_eHelpFile_, 0, NULL, coding);
    }
    else if ( cdh_NoCaseStrncmp( line, "<headerlevel>", 13) == 0) {
      (insert_cb)( parent_ctx, navh_eItemType_HeaderLevel, "",
		   NULL, NULL, NULL, NULL, NULL, navh_eHelpFile_, 0, NULL, coding);
    }
    else if ( cdh_NoCaseStrncmp( line, "</headerlevel>", 14) == 0) {
      (insert_cb)( parent_ctx, navh_eItemType_EndHeaderLevel, "",
		   NULL, NULL, NULL, NULL, NULL, navh_eHelpFile_, 0, NULL, coding);
    }
    else if ( cdh_NoCaseStrncmp( line, "<pagebreak>", 11) == 0) {
      (insert_cb)( parent_ctx, navh_eItemType_PageBreak, "",
		   NULL, NULL, NULL, NULL, NULL, navh_eHelpFile_, 0, NULL, coding);
    }
    else if ( cdh_NoCaseStrncmp( line, "<option>", 8) == 0) {
      char option[80];

      help_remove_spaces( &line[8], option);
      cdh_ToLower( option, option);
      (insert_cb)( parent_ctx, navh_eItemType_Option, option,
		   NULL, NULL, NULL, NULL, NULL, navh_eHelpFile_, 0, NULL, coding);
    }
    else if ( cdh_NoCaseStrncmp( line, "<topic>", 7) == 0) {
      if ( (s = strstr( line, "<style>")) || (s = strstr( line, "<STYLE>"))) {
	style = 1;
	help_remove_spaces( s + 7, style_str);
	*s = 0;
      }

      help_remove_spaces( &line[7], subject);
      cdh_ToLower( subject, subject);
      subject_nr = dcli_parse( subject, " 	", "", (char *)subject_part,
                	sizeof( subject_part) / sizeof( subject_part[0]),
			sizeof( subject_part[0]), 0);
      hit = 0;
      if ( !print_all) {
        if ( key_nr == subject_nr ) {
          for ( i = 0; i < key_nr; i++) {
            if ( (!strict && strncmp( subject_part[i], key_part[i], strlen(key_part[i])) == 0) ||
		 (strict && strcmp( subject_part[i], key_part[i]) == 0)) {
              if ( i == key_nr - 1)
                hit = 1;
            }
            else
              break;
          }
        }
      }
      else {
	if ( cdh_NoCaseStrcmp( subject_part[0], "__documenttitlepage") == 0)
	  (insert_cb)( parent_ctx, navh_eItemType_DocTitlePage, subject,
		       NULL, NULL, NULL, NULL, NULL, navh_eHelpFile_, 0, NULL, coding);
	else if ( cdh_NoCaseStrcmp( subject_part[0], "__documentinfopage") == 0)
	  (insert_cb)( parent_ctx, navh_eItemType_DocInfoPage, subject,
		       NULL, NULL, NULL, NULL, NULL, navh_eHelpFile_, 0, NULL, coding);
	else
	  (insert_cb)( parent_ctx, navh_eItemType_Topic, subject,
		       NULL, NULL, NULL, NULL, NULL, navh_eHelpFile_, 0, NULL, coding);
	if ( style)
	  node = (insert_cb)( parent_ctx, navh_eItemType_Style, style_str,
		      NULL, NULL, NULL, NULL, NULL, navh_eHelpFile_, 0, NULL, coding);
        hit = 1;
      }
    }
    if ( hit)
    {
      sts = dcli_read_line( line, sizeof( line), file);
      (insert_cb)( parent_ctx, navh_eItemType_HelpHeader, line, NULL, NULL, 
		 NULL, NULL, NULL, navh_eHelpFile_, 0, NULL, coding);
      sts = dcli_read_line( line, sizeof( line), file);
      while( ODD(sts))
      {
        bookmark_p = 0;

        if ( strncmp( line, "</topic>", 8) == 0 ||
             strncmp( line, "</TOPIC>", 8) == 0) {
          if ( print_all)
            (insert_cb)( parent_ctx, navh_eItemType_EndTopic, subject,
		      NULL, NULL, NULL, NULL, NULL, navh_eHelpFile_, 0, NULL, coding);
          break;
        }

	// Ignore all other tags
        if ( (s = strstr( line, "<ib>")) || (s = strstr( line, "<IB>"))) {
	  strcpy( text1, s + 4);
          (insert_cb)( parent_ctx, navh_eItemType_HelpBold, 
			    text1,  "", "", "", "", NULL, file_type, 0, NULL, coding);
          sts = dcli_read_line( line, sizeof( line), file);
          continue;
	}
        if ( (s = strstr( line, "<i>")) || (s = strstr( line, "<I>"))) {
	  strcpy( text1, s + 3);
          (insert_cb)( parent_ctx, navh_eItemType_Help, text1,  "", "", "", 
		"", NULL, file_type, 0, bookmark_p, coding);
          sts = dcli_read_line( line, sizeof( line), file);
          continue;
	}
	if ( cdh_NoCaseStrncmp( line, "<option>", 8) == 0) {
	  char option[80];

	  help_remove_spaces( &line[8], option);
	  cdh_ToLower( option, option);
	  (insert_cb)( parent_ctx, navh_eItemType_Option, option,
		      NULL, NULL, NULL, NULL, NULL, navh_eHelpFile_, 0, NULL, coding);
          sts = dcli_read_line( line, sizeof( line), file);
          continue;
	}

        if ( (s = strstr( line, "<link>")) || (s = strstr( line, "<LINK>")))
	{
          help_remove_spaces( s + 6, link);
	  *s = 0;

          link_nr = dcli_parse( link, ",", "", (char *)link_part,
                	sizeof( link_part) / sizeof( link_part[0]),
			sizeof( link_part[0]), 0);
          if ( link_nr == 1)
	  {
	    help_remove_spaces( link_part[0], link);
            strcpy( link_bookmark, "");
            link_filename_p = (char *)file_name;
	  }
          else if ( link_nr == 2)
	  {
	    help_remove_spaces( link_part[0], link);
	    help_remove_spaces( link_part[1], link_bookmark);
            link_filename_p = (char *)file_name;
          }
          else if ( link_nr > 2)
	  {
	    help_remove_spaces( link_part[0], link);
	    help_remove_spaces( link_part[1], link_bookmark);
	    help_remove_spaces( link_part[2], link_filename);
            link_filename_p = link_filename;
          }
	}
        else if ( (s = strstr( line, "<weblink>")) || (s = strstr( line, "<WEBLINK>")))
	{
          help_remove_spaces( s + 9, link);
	  *s = 0;

          link_nr = dcli_parse( link, ",", "", (char *)link_part,
                	sizeof( link_part) / sizeof( link_part[0]),
			sizeof( link_part[0]), 0);
          if ( link_nr == 1)
	  {
	    strcpy( link, "$web:");
	    help_remove_spaces( link_part[0], &link[5]);
            strcpy( link_bookmark, "");
            link_filename_p = (char *)file_name;
	  }
          else if ( link_nr == 2)
	  {
	    strcpy( link, "$web:");
	    help_remove_spaces( link_part[0], &link[5]);
	    help_remove_spaces( link_part[1], link_bookmark);
            link_filename_p = (char *)file_name;
          }
          else if ( link_nr > 2)
	  {
	    strcpy( link, "$web:");
	    help_remove_spaces( link_part[0], &link[5]);
	    help_remove_spaces( link_part[1], link_bookmark);
	    help_remove_spaces( link_part[2], link_filename);
            link_filename_p = link_filename;
          }
	}
        else if ( (s = strstr( line, "<classlink>")) || (s = strstr( line, "<CLASSLINK>")))
	{
          help_remove_spaces( s + 11, link);
	  *s = 0;

          link_nr = dcli_parse( link, ",", "", (char *)link_part,
                	sizeof( link_part) / sizeof( link_part[0]),
			sizeof( link_part[0]), 0);
          if ( link_nr == 1)
	  {
	    strcpy( link, "$class:");
	    help_remove_spaces( link_part[0], &link[7]);
            strcpy( link_bookmark, "");
            link_filename_p = (char *)file_name;
	  }
          else if ( link_nr == 2)
	  {
	    strcpy( link, "$class:");
	    help_remove_spaces( link_part[0], &link[7]);
	    help_remove_spaces( link_part[1], link_bookmark);
            link_filename_p = (char *)file_name;
          }
          else if ( link_nr > 2)
	  {
	    strcpy( link, "$class:");
	    help_remove_spaces( link_part[0], &link[7]);
	    help_remove_spaces( link_part[1], link_bookmark);
	    help_remove_spaces( link_part[2], link_filename);
            link_filename_p = link_filename;
          }
	}
        else
	{
          strcpy( link, "");
          strcpy( link_bookmark, "");
          link_filename_p = link_filename;
	}

        if ( (s = strstr( line, "<bookmark>")) || (s = strstr( line, "<BOOKMARK>")))
	{
          help_remove_spaces( s + 10, bookmark);
	  *s = 0;
	  cdh_ToLower( bookmark, bookmark);
          if ( !bookmark_found && !print_all &&
	       strcmp( search_bookmark, bookmark) == 0)
	  {
            bookmark_found = 1;
	    register_bookmark = 1;
	  }
          if ( print_all)
	    bookmark_p = bookmark;
	}

        if ( (s = strstr( line, "<index>")) || (s = strstr( line, "<INDEX>")))
        {
	  index_link = 1;
          *s = 0;
	}
        else
          index_link = 0;

	image = 0;
        header1 = 0;
        header2 = 0;
        bold = 0;
	code = 0;
	horizontal_line = 0;
	style = 0;
        if ( (s = strstr( line, "<h1>")) || (s = strstr( line, "<H1>")))
        {
          header1 = 1;
          strcpy( text1, s + 4);
        }
        else if ( (s = strstr( line, "<h2>")) || (s = strstr( line, "<H2>")))
        {
          header2 = 1;
          strcpy( text1, s + 4);
        }
        else if ( (s = strstr( line, "<b>")) || (s = strstr( line, "<B>")))
        {
          bold = 1;
          strcpy( text1, s + 3);
        }
        else if ( (s = strstr( line, "<c>")) || (s = strstr( line, "<C>")))
        {
          code = 1;
          strcpy( text1, s + 3);
        }
        else if ( (s = strstr( line, "<hr>")) || (s = strstr( line, "<HR>")))
        {
          horizontal_line = 1;
        }
        else if ( (s = strstr( line, "<image>")) || (s = strstr( line, "<IMAGE>")))
	{
          help_remove_spaces( s + 7, imagefile);
          image = 1;
	}

        else
        {
          strcpy( text1, line);
        }

        if ( (s = strstr( text1, "<t>")) || (s = strstr( text1, "<T>")) )
	{
          strcpy( text2, s + 3);
	  *s = 0;
          if ( (s = strstr( text2, "<t>")) || (s = strstr( text2, "<T>")) )
	  {
            strcpy( text3, s + 3);
	    *s = 0;
	  }
          else
            strcpy( text3, "");
	}
        else
        {
          strcpy( text2, "");
          strcpy( text3, "");
        }
        if ( header1)
	{
          node = (insert_cb)( parent_ctx, navh_eItemType_HeaderLarge,
			      text1, NULL, NULL, NULL, NULL, NULL,
			      navh_eHelpFile_, 0, bookmark_p, coding);
	  if ( register_bookmark)
	  {
	    bookmark_node = node;
	    register_bookmark = 0;
	  }
	}
        else if ( header2)
	{
          node = (insert_cb)( parent_ctx, navh_eItemType_Header, text1,
			      NULL, NULL, NULL, NULL, NULL, 
			      navh_eHelpFile_, 0, bookmark_p, coding);
	  if ( register_bookmark)
	  {
	    bookmark_node = node;
	    register_bookmark = 0;
	  }
	}
	else if ( bold)
	{
          node = (insert_cb)( parent_ctx, navh_eItemType_HelpBold, text1, 
		text2, text3, link, 
		link_bookmark, link_filename_p, file_type, index_link,
		bookmark_p, coding);
	  if ( register_bookmark)
	  {
	    bookmark_node = node;
	    register_bookmark = 0;
	  }
	}
	else if ( code)
	{
          node = (insert_cb)( parent_ctx, navh_eItemType_HelpCode, text1, 
		text2, text3, link, 
		link_bookmark, link_filename_p, file_type, index_link,
		bookmark_p, coding);
	  if ( register_bookmark)
	  {
	    bookmark_node = node;
	    register_bookmark = 0;
	  }
	}
	else if ( horizontal_line) {
	  node = (insert_cb)( parent_ctx, navh_eItemType_HorizontalLine, NULL,
		      NULL, NULL, NULL, NULL, NULL, navh_eHelpFile_, 0, NULL, coding);
	}
        else if ( image)
	{
          node = (insert_cb)( parent_ctx, navh_eItemType_Image,
			      imagefile, NULL, NULL, link, 
			      link_bookmark, link_filename_p, file_type, index_link,
			      bookmark_p, coding);
	  if ( register_bookmark)
	  {
	    bookmark_node = node;
	    register_bookmark = 0;
	  }
	}
	else
	{
          node = (insert_cb)( parent_ctx, navh_eItemType_Help, text1,  text2,
		text3, link, 
		link_bookmark, link_filename_p, file_type, index_link,
		bookmark_p, coding);
	  if ( register_bookmark)
	  {
	    bookmark_node = node;
	    register_bookmark = 0;
	  }
	}
        sts = dcli_read_line( line, sizeof( line), file);
      }

      if ( bookmark_found)
        *book_mark = bookmark_node;
      else
        *book_mark = 0;
      if ( !print_all)
        break;
      else
        hit = 0;
    }
    sts = dcli_read_line( line, sizeof( line), file);
  }
  fclose( file);

  if ( !print_all && !hit)
    return NAV__TOPICNOTFOUND;
  return NAV__SUCCESS;
}
コード例 #19
0
ファイル: xtt_fast.cpp プロジェクト: Strongc/proview
int XttFast::read_export( char *filename)
{
  pwr_tFileName fname;
  FILE *fp;
  char line[200];
  int idx = -1;
  int rowcnt = 0;
  pwr_tStatus sts;
  char line_part[40][20];

  dcli_translate_filename( fname, filename);

  fp = fopen( fname, "r");
  if ( !fp)
    return 0;

  gcd = new GeCurveData( curve_eDataType_DsTrend);

  while( 1) {
    sts = dcli_read_line( line, sizeof(line), fp);
    if ( !sts)
      break;

    if ( line[0] == '#') {
      if ( strncmp( &line[2], "Attribute", 9) == 0) {
	// New attribute
	idx++;
	strncpy( gcd->y_name[idx], &line[12], sizeof(gcd->y_name[idx]));
	gcd->y_data[idx] = (double *) calloc( 1, 8 * max_points);
	gcd->y_axis_type[idx] = curve_eAxis_y;
      }
      else if ( strncmp( &line[2], "Rows", 4) == 0) {
	sscanf( &line[7], "%d", &max_points);
	gcd->rows[0] = max_points;
	gcd->x_data[0] = (double *) calloc( 1, 8 * max_points);
      }
      else if ( strncmp( &line[2], "Columns", 4) == 0) {
	sscanf( &line[10], "%d", &fast_cnt);
      }
    }
    else {
      if ( idx < 0 || fast_cnt != idx + 1)
	continue;

      if ( rowcnt >= max_points)
	continue;

      int nr = dcli_parse( line, " 	", "",
	     (char *) line_part, sizeof( line_part)/sizeof( line_part[0]), 
	     sizeof( line_part[0]), 0);
      if ( nr < fast_cnt + 1)
	return 0;

      sscanf( line_part[0], "%lf", &gcd->x_data[0][rowcnt]);
      for ( int i = 0; i < fast_cnt; i++)
	sscanf( line_part[i+1], "%lf", &gcd->y_data[i][rowcnt]);

      rowcnt++;
    }
  }
  if ( fast_cnt == 0)
    return 0;

  for ( int i = 0; i < fast_cnt; i++)
    gcd->rows[i] = max_points;
  gcd->cols = fast_cnt;
  strcpy( gcd->x_name, "Time");
  gcd->x_axis_type[0] = curve_eAxis_x;

  fclose(fp);

  gcd->select_color( 0);
  gcd->get_borders();
  gcd->get_default_axis();
  
  return 1;
}
コード例 #20
0
ファイル: rt_post.cpp プロジェクト: ManfredHerrmann/proview
pwr_tStatus rt_post::mh_alarm_bc( mh_sMessage *MsgP)
{
  ala_uEvent 	*event = (ala_uEvent *) MsgP;
  int sts;
  char str[256];
  char user[80];
  char group[80];
  char *s;
  pwr_tTime etime, current;
  pwr_tDeltaTime diff;
  int rcvnum;
  char rcv_array[10][80];
  char text[400];

  if ( !post || post->conf->Disable)
    return 1;

  if ( !event->Info.EventFlags & pwr_mEventFlagsMask_Email ||
       !event->Info.EventFlags & pwr_mEventFlagsMask_SMS)
    return 1;

  // Skip events older than 10 minutes
  etime = net_NetTimeToTime( &event->Info.EventTime);
  time_GetTime( &current);
  time_Adiff( &diff, &current, &etime);

  if ( time_DToFloat( 0, &diff) > 600)
    return 1;

  // Check if already handled
  if ( event->Info.EventFlags & pwr_mEventFlagsMask_Email) {
    if ( post->email_check( &event->Info.Id))
      return 1;
    else
      post->email_register( &event->Info.Id);
  }
  

  if ( event->Info.EventFlags & pwr_mEventFlagsMask_SMS) {
    if ( post->sms_check( &event->Info.Id))
      return 1;
    else
      post->sms_register( &event->Info.Id);
  }

  post->replace_symbol( str, event->Msg.Receiver);

  rcvnum = dcli_parse( str, ",", "",
		     (char *) rcv_array, sizeof( rcv_array)/sizeof( rcv_array[0]),
		     sizeof( rcv_array[0]), 0);
  
  for ( int i = 0; i < rcvnum; i++) {

    dcli_trim( str, rcv_array[i]);

    s = strrchr( str, '.');
    if ( s) {
      *s = 0;
      strncpy( group, post->systemgroup, sizeof(group));
      strncat( group, ".", sizeof(group));
      strncat( group, str, sizeof(group));
      strncpy( user, s+1, sizeof(user));
    }
    else {
      strncpy( group, post->systemgroup, sizeof(group));
      strncpy( user, str, sizeof(user));
    }
  
    SystemName *sn = new SystemName( group);
    sts = sn->parse();
    if ( EVEN(sts)) {
      delete sn;
      errh_Error( "Post systemgroup parse error, %m", sts);
      continue;
    }

    SystemList *sl = post->udb->find_system( sn);
    delete sn;
    if ( !sl) {
      errh_Error( "No such system group, %s", group);
      continue;
    }

    UserList *ul = (UserList *) sl->find_user( user);
    if ( !ul) {
      errh_Error( "No such user, %s", user);
      continue;
    }
  
    if ( event->Info.EventFlags & pwr_mEventFlagsMask_Email &&
	 strcmp( post->conf->EmailCmd, "") != 0) {
      char address[40];
      pwr_tCmd cmd;
      
      ul->get_email( address, sizeof(address));
      
      post->format_email_text( MsgP, text, sizeof(text));
      post->format_cmd( cmd,  post->conf->EmailCmd, address, text);

      if ( post->conf->Options & pwr_mPostOptionsMask_Log)
	errh_Info( "Email: %s", cmd);

      system( cmd);
      post->conf->SentEmail++;
      
    }
    if ( event->Info.EventFlags & pwr_mEventFlagsMask_SMS &&
	 strcmp( post->conf->SMS_Cmd, "") != 0) {
      char sms[40];
      pwr_tCmd cmd;
    
      ul->get_sms( sms, sizeof(sms));

      post->format_sms_text( MsgP, text, sizeof(text));
      post->format_cmd( cmd,  post->conf->SMS_Cmd, sms, text);
      
      if ( post->conf->Options & pwr_mPostOptionsMask_Log)
	errh_Info( "SMS: %s", cmd);

      system( cmd);
      post->conf->SentSMS++;
    }
  }
  return 1;
}
コード例 #21
0
ファイル: wb_build.cpp プロジェクト: Strongc/proview
void wb_build::webbrowserconfig( pwr_tOid oid)
{
  pwr_tTime	modtime;
  pwr_tFileName fname;
  pwr_tTime 	ftime;
  pwr_tStatus   fsts;
  FILE 		*fp;
  int		i, j;
  int		found;
  char		line[200];
  pwr_tObjName  vname;

  strncpy( vname, m_session.name(), sizeof(vname));

  wb_object o = m_session.object(oid);
  if ( !o) {
    m_sts = o.sts();
    return;
  }

  modtime = o.modTime();

  sprintf( fname, "$pwrp_db/pwrp_cnf_websymbols.dat");
  dcli_translate_filename( fname, fname);
  fsts = dcli_file_time( fname, &ftime);

  m_sts = PWRB__NOBUILT;
  if ( opt.force || EVEN(fsts) || time_Acomp( &modtime, &ftime) == 1) {
    pwr_sClass_WebBrowserConfig body;
    int url_symbols_size = sizeof(body.URL_Symbols)/sizeof(body.URL_Symbols[0]);
    char sym_vect[MAXSYMBOLS][80];
    char value_vect[MAXSYMBOLS][80];
    char volume_vect[MAXSYMBOLS][80];
    int vect_cnt;
    int nr;
    char elemv[3][80];
    
    wb_attribute a = m_session.attribute( oid, "RtBody", "URL_Symbols");
    if ( !a) {
      m_sts = a.sts();
      return;
    }
    a.value( body.URL_Symbols);
    if ( !a) {
      m_sts = a.sts();
      return;
    }

    // Read the file and merge the symbols of this volume with other symbols in the project
    vect_cnt = 0;
    fp = fopen( fname, "r");
    if ( fp) {
      while ( dcli_read_line( line, sizeof( line), fp)) {
	nr = dcli_parse( line, " ", "", (char *)elemv, sizeof( elemv) / sizeof( elemv[0]), 
			 sizeof( elemv[0]), 0);
	if ( nr != 3)
	  continue;

	// Skip old symbols from this volume
	if ( cdh_NoCaseStrcmp( vname, elemv[0]) == 0)
	  continue;

	strcpy( volume_vect[vect_cnt], elemv[0]);
	strcpy( sym_vect[vect_cnt], elemv[1]);
	strcpy( value_vect[vect_cnt], elemv[2]);
	vect_cnt++;
      }
      fclose( fp);
    }

    for ( i = 0; i < url_symbols_size; i++) {
      nr = dcli_parse( body.URL_Symbols[i], " ", "", (char *)elemv, sizeof( elemv) / sizeof( elemv[0]), 
		       sizeof( elemv[0]), 0);
      if ( nr != 2)
	continue;
      
      found = 0;
      for ( j = 0; j < vect_cnt; j++) {
	if ( cdh_NoCaseStrcmp( elemv[0], sym_vect[j]) == 0) {
	  strcpy( value_vect[j], elemv[1]);
	  found = 1;
	  break;
	}
      }
      if ( !found) {
	// Insert first
	for ( j = MIN(vect_cnt,MAXSYMBOLS-1); j > 0; j--) {
	  strcpy( volume_vect[j], volume_vect[j-1]);
	  strcpy( sym_vect[j], sym_vect[j-1]);
	  strcpy( value_vect[j], value_vect[j-1]);
	}
	strcpy( volume_vect[0], vname);
	strcpy( sym_vect[0], elemv[0]);
	strcpy( value_vect[0], elemv[1]);	
	vect_cnt++;
	if ( vect_cnt > MAXSYMBOLS)
	  vect_cnt = MAXSYMBOLS;
      }
    }

    // Write the file
    fp = fopen( fname, "w");
    if ( !fp) {
      char msg[200];
      sprintf( msg, "Build:    Unable to open file %s", fname);
      MsgWindow::message( 'E', msg, msgw_ePop_No, oid);
      return;
    }

    for ( i = 0; i < vect_cnt; i++)
      fprintf( fp, "%s %s %s\n", volume_vect[i], sym_vect[i], value_vect[i]);
    fclose( fp);
  }
}
コード例 #22
0
int ItemLocalSubGraphs::open_children( SubPalette *subpalette, double x, double y)
{
  double	node_x, node_y;
  int		child_exist;

  brow_GetNodePosition( node, &node_x, &node_y);

  if ( brow_IsOpen( node))
  {
    // Close
    brow_SetNodraw( subpalette->brow->ctx);
    brow_CloseNode( subpalette->brow->ctx, node);
    if ( brow_IsOpen( node) & subpalette_mOpen_Attributes)
      brow_RemoveAnnotPixmap( node, 1);
    if ( brow_IsOpen( node) & subpalette_mOpen_Children)
      brow_SetAnnotPixmap( node, 0, subpalette->brow->pixmap_map);
    brow_ResetOpen( node, subpalette_mOpen_All);
    brow_ResetNodraw( subpalette->brow->ctx);
    brow_Redraw( subpalette->brow->ctx, node_y);
  }
  else
  {
    int			sts;
    char		found_file[120];
    char		fname[120];
    char		dev[80], dir[80], file[80], type[80];
    int			version;
    char		text[80];
    char		*s;
    int			idx;
    char		file_str[5][80];
    int		        nr;
    int                 i;
    vector<LocalFile> fvect;

    // Create some children
    brow_SetNodraw( subpalette->brow->ctx);

    child_exist = 0;

    nr = dcli_parse( filename, ",", "", (char *)file_str,
		sizeof( file_str) / sizeof( file_str[0]), sizeof( file_str[0]), 0);
    for ( i = 0; i < nr; i++) {
      dcli_translate_filename( fname, file_str[i]);
      sts = dcli_search_file( fname, found_file, DCLI_DIR_SEARCH_INIT);
      if ( ODD(sts)) {
	LocalFile f;
	strcpy( f.name, found_file);
	fvect.push_back( f);
      }
      while ( ODD(sts)) {
        sts = dcli_search_file( fname, found_file, DCLI_DIR_SEARCH_NEXT);
        if ( ODD(sts)) {
	  LocalFile f;
	  strcpy( f.name, found_file);
	  fvect.push_back( f);
	}
      }
      dcli_search_file( fname, found_file, DCLI_DIR_SEARCH_END);
    }

    subpalette_sort( fvect);

    for ( i = 0; i < (int) fvect.size(); i++) {
      dcli_parse_filename( fvect[i].name, dev, dir, file, type, &version);
      cdh_ToLower( text, file);
      text[0] = toupper( text[0]);
      
      // Skip next pages in animations
      if ( !((s = strstr( text, "__p")) && sscanf( s+3, "%d", &idx))) {
	new ItemFile( subpalette, text, fvect[i].name, 0, node, flow_eDest_IntoLast);
	child_exist = 1;
      }
    }

    if ( child_exist)
    {
      brow_SetOpen( node, subpalette_mOpen_Children);
      brow_SetAnnotPixmap( node, 0, subpalette->brow->pixmap_openmap);
    }
    brow_ResetNodraw( subpalette->brow->ctx);
    if ( child_exist)
      brow_Redraw( subpalette->brow->ctx, node_y);
  }
  return 1;
}
コード例 #23
0
ファイル: sev_db_tree.cpp プロジェクト: siamect/proview
pwr_tStatus sev_db::tree_update()
{
  int new_item = 0;
  int num;
  pwr_tAName hname;
  pwr_tStatus sts;
  pwr_tOid oid;
  pwr_tCid cid = 0;
  char* s;
  pwr_sClass_SevItem ritem;
  char oname_array[20][pwr_cSizObjName + 1];
  pwr_tObjName itemname;
  char root[] = "pwrNode-sev";

  // Check root object
  sts = gdh_NameToObjid(root, &oid);
  if (EVEN(sts)) {
    sts = gdh_CreateObject(
        root, pwr_eClass_NodeHier, 0, &oid, pwr_cNObjid, 0, pwr_cNObjid);
    if (EVEN(sts))
      return sts;
  }

  for (unsigned int i = 0; i < m_items.size(); i++) {
    if (m_items[i].deleted)
      continue;

    printf("Tree update item %s\n", m_items[i].oname);
    switch (m_items[i].attr[0].type) {
    case pwr_eType_Float32:
    case pwr_eType_Float64:
    case pwr_eType_Int8:
    case pwr_eType_Int16:
    case pwr_eType_Int32:
    case pwr_eType_Int64:
    case pwr_eType_UInt8:
    case pwr_eType_UInt16:
    case pwr_eType_UInt32:
    case pwr_eType_UInt64:
    case pwr_eType_Boolean:
      break;
    default:
      continue;
    }

    new_item = 0;

    if ((s = strchr(m_items[i].oname, ':')))
      s++;
    else
      s = m_items[i].oname;

    num = dcli_parse(s, "-", "", (char*)oname_array,
        sizeof(oname_array) / sizeof(oname_array[0]), sizeof(oname_array[0]),
        0);

    strcpy(hname, root);
    for (int j = 0; j < num; j++) {
      strcat(hname, "-");
      strcat(hname, oname_array[j]);

      if (!new_item)
        sts = gdh_NameToObjid(hname, &oid);
      if (new_item || EVEN(sts)) {
        // Create object
        sts = gdh_CreateObject(
            hname, pwr_eClass_NodeHier, 0, &oid, pwr_cNObjid, 0, pwr_cNObjid);
        if (EVEN(sts))
          return sts;

        new_item = 1;
      }
    }
    sprintf(itemname, "%sItem", m_items[i].attrnum > 1 ? "O" : "");
    strcat(hname, "-");
    strcat(hname, itemname);
    if (!new_item)
      sts = gdh_NameToObjid(hname, &oid);
    if (new_item || EVEN(sts)) {
      switch (m_items[i].attr[0].type) {
      case pwr_eType_Float32:
      case pwr_eType_Float64:
        cid = pwr_cClass_SevItemFloat;
        break;
      case pwr_eType_Int8:
      case pwr_eType_Int16:
      case pwr_eType_Int32:
      case pwr_eType_Int64:
      case pwr_eType_UInt8:
      case pwr_eType_UInt16:
      case pwr_eType_UInt32:
      case pwr_eType_UInt64:
        cid = pwr_cClass_SevItemInt;
        break;
      case pwr_eType_Boolean:
        cid = pwr_cClass_SevItemBoolean;
        break;
      default:;
      }
      sts = gdh_CreateObject(hname, cid, 0, &oid, pwr_cNObjid, 0, pwr_cNObjid);
      if (EVEN(sts))
        return sts;

      memset(&ritem, 0, sizeof(ritem));
      strncpy(ritem.TableName, m_items[i].tablename, sizeof(ritem.TableName));
      strncpy(ritem.ObjectName, m_items[i].oname, sizeof(ritem.ObjectName));
      strncpy(ritem.Attr, m_items[i].attr[0].aname, sizeof(ritem.Attr));
      ritem.AttrType = m_items[i].attr[0].type;
      ritem.NoOfAttr = m_items[i].attrnum;
      ritem.Oid = m_items[i].oid;
      ritem.Id = m_items[i].id;
      ritem.Options = m_items[i].options;
      ritem.Deadband = m_items[i].deadband;
      ritem.ScanTime = m_items[i].scantime;
      ritem.StorageTime = m_items[i].storagetime;
      strncpy(
          ritem.Description, m_items[i].description, sizeof(ritem.Description));

      sts = gdh_SetObjectInfo(hname, &ritem, sizeof(ritem));
      if (EVEN(sts))
        return sts;
    }

    if (!m_items[i].ip) {
      // Get pointer to object
      pwr_tAttrRef aref = cdh_ObjidToAref(oid);
      sts = gdh_DLRefObjectInfoAttrref(
          &aref, (void**)&m_items[i].ip, &m_items[i].refid);
      if (EVEN(sts))
        return sts;
    }
  }
  return SEV__SUCCESS;
}
コード例 #24
0
ファイル: wb_uted_gtk.cpp プロジェクト: Strongc/proview
//
//	Create a new ute window
//
WUtedGtk::WUtedGtk( void	       	*wu_parent_ctx,
		    GtkWidget		*wu_parent_wid,
		    const char	       	*wu_name,
		    const char	       	*wu_iconname,
		    ldh_tWBContext	wu_ldhwb,
		    ldh_tSesContext	wu_ldhses,
		    int	       	wu_editmode,
		    void 	       	(*wu_quit_cb)(void *),
		    pwr_tStatus     	*status) :
  WUted(wu_parent_ctx,wu_name,wu_iconname,wu_ldhwb,wu_ldhses,wu_editmode,wu_quit_cb,
	status), parent_wid(wu_parent_wid), cursor(0)
{
  const int	window_width = 800;
  const int    	window_height = 400;

  memset( &widgets, 0, sizeof(widgets));

  toplevel = (GtkWidget *) g_object_new( GTK_TYPE_WINDOW, 
			   "default-height", window_height,
			   "default-width", window_width,
			   NULL);

  g_signal_connect( toplevel, "delete_event", G_CALLBACK(delete_event), this);
  g_signal_connect( toplevel, "destroy", G_CALLBACK(destroy_event), this);

  CoWowGtk::SetWindowIcon( toplevel);

  GtkAccelGroup *accel_g = (GtkAccelGroup *) g_object_new(GTK_TYPE_ACCEL_GROUP, NULL);
  gtk_window_add_accel_group(GTK_WINDOW(toplevel), accel_g);

  GtkMenuBar *menu_bar = (GtkMenuBar *) g_object_new(GTK_TYPE_MENU_BAR, NULL);

  // File Entry
  GtkWidget *file_close = gtk_image_menu_item_new_from_stock(GTK_STOCK_CLOSE, accel_g);
  g_signal_connect(file_close, "activate", G_CALLBACK(activate_quit), this);

  GtkMenu *file_menu = (GtkMenu *) g_object_new( GTK_TYPE_MENU, NULL);
  gtk_menu_shell_append(GTK_MENU_SHELL(file_menu), file_close);

  GtkWidget *file = gtk_menu_item_new_with_mnemonic("_File");
  gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar), file);
  gtk_menu_item_set_submenu(GTK_MENU_ITEM(file), GTK_WIDGET(file_menu));

  // View Entry
  GtkWidget *view_show_cmd = gtk_menu_item_new_with_mnemonic( "_Show Current Command");
  g_signal_connect( view_show_cmd, "activate", 
		    G_CALLBACK(activate_show_cmd), this);

  GtkMenu *view_menu = (GtkMenu *) g_object_new( GTK_TYPE_MENU, NULL);
  gtk_menu_shell_append(GTK_MENU_SHELL(view_menu), view_show_cmd);

  GtkWidget *view = gtk_menu_item_new_with_mnemonic("_View");
  gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar), view);
  gtk_menu_item_set_submenu(GTK_MENU_ITEM(view), GTK_WIDGET(view_menu));

  // Commands entry
  GtkMenu *commands_menu = (GtkMenu *) g_object_new( GTK_TYPE_MENU, NULL);
  GtkMenu *current_menu = commands_menu;
  
  int j = 0;
  int in_submenu = 0;
  uted_sCommand *next_cmd;
  for ( uted_sCommand *command_ptr = commands; command_ptr->command[0]; command_ptr++) {

    // Build submenu if first command verb is equal to next
    char cmd_verb[5][80];
    int num;
    char next_cmd_verb[5][80];
    int next_num;
    num = dcli_parse( command_ptr->command, " ", "", (char *)cmd_verb, 
		      sizeof( cmd_verb) / sizeof( cmd_verb[0]), sizeof( cmd_verb[0]), 0);

    
    next_cmd = command_ptr + 1;
    int close_submenu = 0;
    if ( next_cmd->command[0]) {
      next_num = dcli_parse( next_cmd->command, " ", "", (char *)next_cmd_verb, 
			     sizeof( next_cmd_verb) / sizeof( next_cmd_verb[0]), 
			     sizeof( next_cmd_verb[0]), 0);

      if ( in_submenu) {
	// Check if time to close menu
	if ( strcmp( cmd_verb[0], next_cmd_verb[0]) != 0) {
	  // Close submenu
	  close_submenu = 1;
	}
      }
      else if ( strcmp( cmd_verb[0], next_cmd_verb[0]) == 0) {
	// Open submenu
	GtkWidget *submenu_item = gtk_menu_item_new_with_label( cmd_verb[0]);
	GtkMenu *submenu = (GtkMenu *) g_object_new( GTK_TYPE_MENU, NULL);
	gtk_menu_item_set_submenu(GTK_MENU_ITEM(submenu_item),
				  GTK_WIDGET(submenu));
	gtk_menu_shell_append(GTK_MENU_SHELL(commands_menu), submenu_item);
	current_menu = submenu;
	in_submenu = 1;
      }
    }
    else if ( in_submenu) {
      // Last command
      close_submenu = 1;
    }


    widgets.optmenubuttons[j] = gtk_menu_item_new();
    widgets.optmenubuttonslabel[j] = gtk_label_new( command_ptr->command);
    gtk_misc_set_alignment( GTK_MISC(widgets.optmenubuttonslabel[j]), 0.0, 0.5);
    gtk_container_add( GTK_CONTAINER(widgets.optmenubuttons[j]), 
		       widgets.optmenubuttonslabel[j]);
    
    g_signal_connect( widgets.optmenubuttons[j], "activate", 
		      G_CALLBACK(activate_command), this);
    gtk_menu_shell_append(GTK_MENU_SHELL(current_menu), widgets.optmenubuttons[j]);

    if ( close_submenu) {
      current_menu = commands_menu;
      in_submenu = 0;
    }

    j++;
  }

  GtkWidget *commands = gtk_menu_item_new_with_mnemonic("_Commands");
  gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar), commands);
  gtk_menu_item_set_submenu(GTK_MENU_ITEM(commands), GTK_WIDGET(commands_menu));

  // Menu Help
  GtkWidget *help_utils = gtk_image_menu_item_new_with_mnemonic("_On Window");
  gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM(help_utils), 
				 gtk_image_new_from_stock( "gtk-help", GTK_ICON_SIZE_MENU));
  g_signal_connect(help_utils, "activate", G_CALLBACK(activate_helputils), this);
  gtk_widget_add_accelerator( help_utils, "activate", accel_g,
			      'h', GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);

  GtkWidget *help_cmd = gtk_menu_item_new_with_mnemonic( "On _Commands");
  g_signal_connect( help_cmd, "activate", 
		    G_CALLBACK(activate_helppwr_plc), this);

  GtkMenu *help_menu = (GtkMenu *) g_object_new( GTK_TYPE_MENU, NULL);
  gtk_menu_shell_append(GTK_MENU_SHELL(help_menu), help_utils);
  gtk_menu_shell_append(GTK_MENU_SHELL(help_menu), help_cmd);

  GtkWidget *help = gtk_menu_item_new_with_mnemonic("_Help");
  gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar), help);
  gtk_menu_item_set_submenu(GTK_MENU_ITEM(help), GTK_WIDGET(help_menu));

  // Qualifier labels, entries and checkboxes
  GtkWidget *qual_box_qual = gtk_vbox_new( FALSE, 0);
  GtkWidget *qual_box_value = gtk_vbox_new( FALSE, 0);
  for ( j = 0; j < 10; j++) {
    widgets.qualifier[j] = gtk_label_new( "Qual");
    gtk_widget_set_size_request( widgets.qualifier[j], 120, 20);
    gtk_misc_set_alignment( GTK_MISC(widgets.qualifier[j]), 0.0, 0.5);
    gtk_box_pack_start( GTK_BOX(qual_box_qual), widgets.qualifier[j], FALSE, FALSE, 5);
    GtkWidget *box = gtk_hbox_new( FALSE, 0);
    widgets.value[j] = gtk_entry_new();
    gtk_widget_set_size_request( widgets.value[j], -1, 20);
    gtk_box_pack_start( GTK_BOX(box), widgets.value[j], TRUE, TRUE, 0);
    widgets.present[j] = gtk_check_button_new();
    gtk_widget_set_size_request( widgets.present[j], -1, 20);
    gtk_box_pack_start( GTK_BOX(box), widgets.present[j], FALSE, FALSE, 0);
    gtk_box_pack_start( GTK_BOX(qual_box_value), box, FALSE, FALSE, 5);
  }

  g_signal_connect( widgets.present[0], "toggled", G_CALLBACK(activate_present1), this);
  g_signal_connect( widgets.present[1], "toggled", G_CALLBACK(activate_present2), this);
  g_signal_connect( widgets.present[2], "toggled", G_CALLBACK(activate_present3), this);
  g_signal_connect( widgets.present[3], "toggled", G_CALLBACK(activate_present4), this);
  g_signal_connect( widgets.present[4], "toggled", G_CALLBACK(activate_present5), this);
  g_signal_connect( widgets.present[5], "toggled", G_CALLBACK(activate_present6), this);
  g_signal_connect( widgets.present[6], "toggled", G_CALLBACK(activate_present7), this);
  g_signal_connect( widgets.present[7], "toggled", G_CALLBACK(activate_present8), this);
  g_signal_connect( widgets.present[8], "toggled", G_CALLBACK(activate_present9), this);
  g_signal_connect( widgets.present[9], "toggled", G_CALLBACK(activate_present10), this);

  // Command label
  GtkWidget *cmdlabel = gtk_label_new( "Command");
  widgets.commandlabel = gtk_label_new( "No command selected");
  gtk_misc_set_alignment( GTK_MISC(widgets.commandlabel), 0.0, 0.5);
  gtk_widget_set_size_request( widgets.commandlabel, 140, -1);

  GtkWidget *vbox_command = gtk_hbox_new( FALSE, 0);
  gtk_box_pack_start( GTK_BOX(vbox_command), cmdlabel, FALSE, FALSE, 10);
  gtk_box_pack_start( GTK_BOX(vbox_command), widgets.commandlabel, FALSE, FALSE, 10);

  // Apply button
  GtkWidget *applybutton = gtk_button_new_with_label( "Apply");
  gtk_widget_set_size_request( applybutton, 70, 25);
  g_signal_connect( applybutton, "clicked", 
  		    G_CALLBACK(activate_ok), this);

  GtkWidget *left_box = gtk_vbox_new( FALSE, 0);
  gtk_box_pack_start( GTK_BOX(left_box), vbox_command, FALSE, FALSE, 10);

  GtkWidget *button_box = gtk_hbox_new( FALSE, 0);
  gtk_box_pack_start( GTK_BOX(button_box), applybutton, FALSE, FALSE, 50);

  GtkWidget *qual_box = gtk_hbox_new( FALSE, 0);
  gtk_box_pack_start( GTK_BOX(qual_box), left_box, FALSE, FALSE, 10);
  gtk_box_pack_start( GTK_BOX(qual_box), gtk_vseparator_new(), FALSE, FALSE, 0);
  gtk_box_pack_start( GTK_BOX(qual_box), qual_box_qual, FALSE, FALSE, 10);
  gtk_box_pack_start( GTK_BOX(qual_box), qual_box_value, TRUE, TRUE, 10);


  // Statusbar
  GtkWidget *statusbar = gtk_hbox_new( FALSE, 0);
  widgets.label = gtk_label_new( "");
  gtk_box_pack_start( GTK_BOX(statusbar), widgets.label, FALSE, FALSE, 20);


  GtkWidget *vbox = gtk_vbox_new( FALSE, 0);
  gtk_box_pack_start( GTK_BOX(vbox), GTK_WIDGET(menu_bar), FALSE, FALSE, 0);
  gtk_box_pack_start( GTK_BOX(vbox), qual_box, TRUE, TRUE, 0);
  gtk_box_pack_start( GTK_BOX(vbox), gtk_hseparator_new(), FALSE, FALSE, 3);
  gtk_box_pack_start( GTK_BOX(vbox), button_box, FALSE, FALSE, 3);
  gtk_box_pack_start( GTK_BOX(vbox), statusbar, FALSE, FALSE, 3);

  gtk_container_add( GTK_CONTAINER(toplevel), vbox);

  gtk_widget_show_all( toplevel);

  batch_sts = UTED_BATCH_CURRSESS;
  reset_qual();
  enable_entries( wu_editmode);

#if 0
  Arg		args[20];
  pwr_tStatus	sts;
  int i;
  MrmHierarchy	s_MrmH;
  MrmType	dclass;

  /* DRM database hierarchy related variables */
  static Pixmap icon = 0;
  Dimension	icon_w;
  Dimension	icon_h;

  static Atom	MwmDeleteWind = 0;
  char		uid_filename[200] = {"pwr_exe:wb_uted.uid"};
  char		*uid_filename_p = uid_filename;

  static MrmRegisterArg	reglist[] = {
    /* First the context variable */
    { "uted_ctx", 0 },

    /* Callbacks for the controlled foe widget */
    {"uted_create_adb",(caddr_t)create_adb},
    {"uted_create_quit",(caddr_t)create_quit},
    {"uted_activate_quit",(caddr_t)activate_quit},
    {"uted_create_commandlabel",(caddr_t)create_commandlabel},
    {"uted_create_batchoptmenu",(caddr_t)create_batchoptmenu},
    {"uted_create_batch",(caddr_t)create_batch},
    {"uted_create_currsess",(caddr_t)create_currsess},
    {"uted_create_file_entry",(caddr_t)create_file_entry},
    {"uted_create_label",(caddr_t)create_label},
    {"uted_create_adb",(caddr_t)create_adb},
    {"uted_activate_command",(caddr_t)activate_command},
    {"uted_create_command",(caddr_t)create_command},
    {"uted_activate_batch",(caddr_t)activate_batch},
    {"uted_activate_currsess",(caddr_t)activate_currsess},
    {"uted_activate_ok",(caddr_t)activate_ok},
    {"uted_activate_cancel",(caddr_t)activate_cancel},
    {"uted_activate_show_cmd",(caddr_t)activate_show_cmd},
    {"uted_create_commandwind_button",(caddr_t)create_commandwind_button},
    {"uted_activate_cmd_wind",(caddr_t)activate_cmd_wind},
    {"uted_create_cmd_wind",(caddr_t)create_cmd_wind},
    {"uted_create_timelabel",(caddr_t)create_timelabel},
    {"uted_create_timevalue",(caddr_t)create_timevalue},
    {"uted_create_qualifier1",(caddr_t)create_qualifier1},
    {"uted_create_value1",(caddr_t)create_value1},
    {"uted_activate_present1",(caddr_t)activate_present1},
    {"uted_create_present1",(caddr_t)create_present1},
    {"uted_create_qualifier2",(caddr_t)create_qualifier2},
    {"uted_create_value2",(caddr_t)create_value2},
    {"uted_activate_present2",(caddr_t)activate_present2},
    {"uted_create_present2",(caddr_t)create_present2},
    {"uted_create_qualifier3",(caddr_t)create_qualifier3},
    {"uted_create_value3",(caddr_t)create_value3},
    {"uted_activate_present3",(caddr_t)activate_present3},
    {"uted_create_present3",(caddr_t)create_present3},
    {"uted_create_qualifier4",(caddr_t)create_qualifier4},
    {"uted_create_value4",(caddr_t)create_value4},
    {"uted_activate_present4",(caddr_t)activate_present4},
    {"uted_create_present4",(caddr_t)create_present4},
    {"uted_create_qualifier5",(caddr_t)create_qualifier5},
    {"uted_create_value5",(caddr_t)create_value5},
    {"uted_activate_present5",(caddr_t)activate_present5},
    {"uted_create_present5",(caddr_t)create_present5},
    {"uted_create_qualifier6",(caddr_t)create_qualifier6},
    {"uted_create_value6",(caddr_t)create_value6},
    {"uted_activate_present6",(caddr_t)activate_present6},
    {"uted_create_present6",(caddr_t)create_present6},
    {"uted_create_qualifier7",(caddr_t)create_qualifier7},
    {"uted_create_value7",(caddr_t)create_value7},
    {"uted_activate_present7",(caddr_t)activate_present7},
    {"uted_create_present7",(caddr_t)create_present7},
    {"uted_create_qualifier8",(caddr_t)create_qualifier8},
    {"uted_create_value8",(caddr_t)create_value8},
    {"uted_activate_present8",(caddr_t)activate_present8},
    {"uted_create_present8",(caddr_t)create_present8},
    {"uted_create_qualifier9",(caddr_t)create_qualifier9},
    {"uted_create_value9",(caddr_t)create_value9},
    {"uted_activate_present9",(caddr_t)activate_present9},
    {"uted_create_present9",(caddr_t)create_present9},
    {"uted_create_qualifier10",(caddr_t)create_qualifier10},
    {"uted_create_value10",(caddr_t)create_value10},
    {"uted_activate_present10",(caddr_t)activate_present10},
    {"uted_create_present10",(caddr_t)create_present10},
    {"uted_activate_helputils",(caddr_t)activate_helputils},
    {"uted_activate_helppwr_plc",(caddr_t)activate_helppwr_plc},
    {"uted_commandchanged",(caddr_t)commandchanged},
    {"uted_qbox_cr",(caddr_t)qbox_cr},
    {"uted_qbox_yes_cb",(caddr_t)qbox_yes_cb},
    {"uted_qbox_no_cb",(caddr_t)qbox_no_cb},
    {"uted_qbox_cancel_cb",(caddr_t)qbox_cancel_cb}
  };

  static int	reglist_num = (sizeof reglist / sizeof reglist[0]);

  /*
   * Now start the module creation
   */

  sts = dcli_translate_filename( uid_filename, uid_filename);
  if ( EVEN(sts)) {
    printf( "** pwr_exe is not defined\n");
    exit(0);
  }

  /* set initialization values in context */

  /* Save the context structure in the widget */
  XtSetArg (args[0], XmNuserData, (unsigned int) this);

  /*
   * Create a new widget
   * Open the UID files (the output of the UIL compiler) in the hierarchy
   * Register the items DRM needs to bind for us.
   * Create a new widget
   * Close the hierarchy
   * Compile the additional button translations and augment and add actions
   */ 
  sts = MrmOpenHierarchy( 1, &uid_filename_p, NULL, &s_MrmH);
  if (sts != MrmSUCCESS) printf("can't open hierarchy\n");

  reglist[0].value = (caddr_t) this;

  MrmRegisterNames(reglist, reglist_num);

  if (icon == 0)
    sts = MrmFetchBitmapLiteral(s_MrmH,"icon", 
	      XtScreen(parent_wid), XtDisplay(parent_wid),
	      &icon, &icon_w, &icon_h);

  i=0;
  XtSetArg(args[i],XmNiconName, wu_iconname);  i++;
  XtSetArg(args[i],XmNiconPixmap, icon);  i++;
  XtSetArg(args[i],XmNtitle, name);  i++;
  
  /* SG 11.02.91 Save the id of the top in the context */ 
  parent_wid = XtCreatePopupShell("utilities", 
			       topLevelShellGtkWidgetClass, parent_wid, args, i);

  /* the positioning of a top level can only be define after the creation
      of the widget . So i do it know: 
     SG 24.02.91 use the parameters received x and y 
  */
  i=0;
  XtSetArg(args[i],XmNx,100);i++;
  XtSetArg(args[i],XmNy,100);i++;
  XtSetArg(args[i],XtNallowShellResize,TRUE), i++;
  XtSetValues( parent_wid, args, i);

  /* now that we have a top level we can get the main window */
  sts = MrmFetchGtkWidgetOverride(s_MrmH, "uted_window", parent_wid ,
		name, args, 1,
		&widgets.uted_window, &dclass);
  if (sts != MrmSUCCESS) printf("can't fetch utedit widget\n");

  XtManageChild( widgets.uted_window);

  /* SG 09.02.91 a top level should always be realized ! */
  XtPopup( parent_wid, XtGrabNone );

  /* Ask MRM to fetch the question box */
  i=0;
  if (MrmFetchGtkWidgetOverride(s_MrmH,
			"uted_qbox", 
	     	        widgets.uted_window,
			0,
			args , i,
			&widgets.questionbox, &dclass) != MrmSUCCESS) {
    printf("can't fetch uted_qbox widget\n");
  }

  MrmCloseHierarchy(s_MrmH);

  reset_qual();

  batch_sts = UTED_BATCH_CURRSESS;
  XtSetArg(args[0],XmNsensitive, 0);
  XtSetValues( widgets.timelabel,args,1);
  XtUnmanageChild( widgets.timevalue);
  XtUnmanageChild( widgets.command_window);
  enable_entries( wu_editmode);


  if (MwmDeleteWind == 0)
     MwmDeleteWind = XInternAtom(XtDisplay(parent_wid), "WM_DELETE_WINDOW", FALSE);

  if (MwmDeleteWind != 0)
  {
    XtVaSetValues( parent_wid, XmNdeleteResponse, XmDO_NOTHING, NULL);
    XmAddWMProtocolCallback( parent_wid, MwmDeleteWind, 
       (XtCallbackProc) activate_quit, this);
  }
#endif
  *status = FOE__SUCCESS;
}
コード例 #25
0
static pwr_tStatus IoConnect (
  ldh_sMenuCall *ip
) {
  pwr_tStatus	    	sts;
  pwr_sMenuButton   	mb;
  pwr_sAttrRef 		aref = ip->Selected[0];
  pwr_sAttrRef	    	PattrRef;
  char			*name_p;
  pwr_tAName   		name;
  int			size;

  sts = ldh_ReadObjectBody(ip->PointedSession,
    ip->ItemList[ip->ChosenItem].MenuObject,
    "SysBody", &mb, sizeof(pwr_sMenuButton));
  if (EVEN(sts)) return sts;

  if ( strcmp( mb.MethodArguments[0], "") != 0) {
    char arg_cid_str[20][32];
    int arg_cid_cnt;
    int i;
    int cid_ok = 0;
    pwr_tCid		cid;
    pwr_tCid		arg_cid;

    // arg 0 holds the allowed class or classes to connect to
    arg_cid_cnt = dcli_parse( mb.MethodArguments[0], ",", "", (char *) arg_cid_str, 
		sizeof( arg_cid_str) / sizeof( arg_cid_str[0]),
		sizeof( arg_cid_str[0]), 0);


    sts = ldh_GetAttrRefTid( ip->PointedSession, &ip->Selected[0], &cid);
    if ( EVEN(sts)) return 0;

    for ( i = 0; i < arg_cid_cnt; i++) {
      sts = ldh_ClassNameToId( ip->PointedSession, &arg_cid, arg_cid_str[i]);
      if ( EVEN(sts)) return 0;

      if ( cid == arg_cid) {
	cid_ok = 1;
	break;
      }
    }
    if ( !cid_ok)
      return 0;
  }

#if 0
  printf( "Here in IoConnect\n");

  wb_session *sp = (wb_session *)ip->PointedSession;

  wb_object o = sp->object( ip->Pointed.Objid);
  if ( !o) return o.sts();

  wb_attribute oa = sp->attribute( &ip->Pointed);
  if ( !oa) return oa.sts();

  replaceClass( sp, oa, &ip->Selected[0]);
#endif

  sts = ldh_AttrRefToName(ip->PointedSession, &ip->Pointed, ldh_eName_VolPath,
			  &name_p, &size);
  if ( ODD(sts)) {
    strcpy( name, name_p);
    strcat( name, ".IoConnect");

    sts = ldh_NameToAttrRef( ip->PointedSession, name, &PattrRef);
    if (ODD(sts))
      sts = ldh_WriteAttribute(ip->PointedSession, &PattrRef, &aref,
			       sizeof(aref));
  }

    
  char msg[500];
  if ( ODD(sts)) {
    pwr_tAName name;
    char *name_p;
    int len;

    sts = ldh_AttrRefToName( ip->PointedSession, &aref, ldh_eName_Hierarchy, 
			     &name_p, &len);
    if ( EVEN(sts))
      cdh_ObjidToString( name, aref.Objid, 1);
    else
      strcpy( name, name_p);
    sprintf( msg, "Io connected to:   %s", name);
    ip->wtt->message( 'I', msg);
  }
  else {
    msg_GetMsg( sts, msg, sizeof(msg));
    ip->wtt->message( 'E', msg);
  }
  return PWRS__SUCCESS;
}
コード例 #26
0
ファイル: wb_pkg.cpp プロジェクト: Strongc/proview
void wb_pkg::readConfig()
{
  char fname[200];
  char line[200];
  char line_item[7][80];
  int num;
  int sts;

  dcli_translate_filename( fname, load_cNameDistribute);
  ifstream is( fname);

  while ( is.getline( line, sizeof(line))) {
    dcli_trim( line, line);
    if ( line[0] == '#' || line[0] == '!')
      continue;

    num = dcli_parse( line, " 	", "", (char *)line_item,
		     sizeof(line_item)/sizeof(line_item[0]),
		     sizeof(line_item[0]), 0);
    if ( !num)
      continue;

    if ( strcmp( cdh_Low(line_item[0]), "node") == 0) {
      pwr_mOpSys opsys;
      int bus;
      pwr_tMask dstatus;
      char bootnode[80];
      pwr_tString80 custom_platform;

      if ( num != 7)
	throw wb_error_str("File corrupt " load_cNameDistribute);

      sts = sscanf( line_item[2], "%d", (int *)&opsys);
      if ( sts != 1)
	throw wb_error_str("File corrupt " load_cNameDistribute);

      sts = sscanf( line_item[3], "%d", &bus);
      if ( sts != 1)
	throw wb_error_str("File corrupt " load_cNameDistribute);

      sts = sscanf( line_item[4], "%d", (int *)&dstatus);
      if ( sts != 1)
	throw wb_error_str("File corrupt " load_cNameDistribute);

      strcpy( bootnode, line_item[5]);
      strcpy( custom_platform, line_item[6]);
	
      if ( m_allnodes) {
	pkg_node node( line_item[1], opsys, bus, dstatus, bootnode, custom_platform);
	m_nodelist.push_back( node);
      }
      else {
	bool found = false;
	for ( int i = 0; i < (int) m_nodelist.size(); i++) {
	  if ( strcmp( m_nodelist[i].name(), cdh_Low(line_item[1])) == 0) {
	    found = true;
	    m_nodelist[i].setOpsys( opsys);
	    m_nodelist[i].setBus( bus);
	    m_nodelist[i].setDStatus( dstatus);
	    m_nodelist[i].setBootnode( bootnode);
	    m_nodelist[i].setCustomPlatform( custom_platform);
	    m_nodelist[i].setValid();
	    break;
	  }
	}
      }
    }
    else if ( strcmp( cdh_Low(line_item[0]), "appl") == 0) {
      if ( !(num == 4 || num == 5))
	throw wb_error_str("File corrupt " load_cNameDistribute);

      char severity = line_item[2][0];
      try {
	pkg_node& n = getNode( line_item[1]);
	if ( num == 4) {
	  pkg_pattern p( line_item[3], "", severity);
	  n.push_back( p);
	}
	else {
	  pkg_pattern p( line_item[3], line_item[4], severity);
	  n.push_back( p);
	}
      } catch ( wb_error &e) {
	continue;
      }
    }
    else if ( strcmp( cdh_Low(line_item[0]), "load") == 0) {
      pwr_tVolumeId *vollist;
      pwr_tString40 *volnamelist;
      int       volcount;
      pwr_tString80 *plclist;
      int	plccount;
      char     	systemname[80];
      char     	systemgroup[80];
      pwr_tTime date;

      if ( !(num == 2))
	throw wb_error_str("File corrupt " load_cNameDistribute);

      try {
        pkg_node &n = getNode( line_item[1]);

	// Add ld_node file
	sprintf( fname, load_cNameNode, load_cDirectory, n.name(), n.bus());
	pkg_pattern pnode( fname, "", 'E');
	n.push_back( pnode);

	// Add bootfile
	sprintf( fname, load_cNameBoot, load_cDirectory, n.name(), n.bus());
	pkg_pattern pboot( fname, "", 'E');
	n.push_back( pboot);

	// Read bootfile, get plc and volumes
	sts = lfu_ReadBootFile( fname, &date, systemname, 
				systemgroup, &vollist, &volnamelist, &volcount, &plclist, &plccount);
	if ( EVEN(sts))
	  throw wb_error_str("Bootfile is corrupt");

	// Add plc
	for ( int j = 0; j < plccount; j++) {
	  pwr_tFileName dir;
	
	  if ( n.opsys() == pwr_mOpSys_CustomBuild && 
	       strcmp( n.customPlatform(), "-") != 0)
	    sprintf( dir, "$pwrp_root/bld/%s/exe/", n.customPlatform());
	  else
	    sprintf( dir, "$pwrp_root/bld/%s/exe/", cdh_OpSysToStr( n.opsys()));
	  sprintf( fname, "%s%s", dir, plclist[j]);
	  sprintf( dir, "$pwrp_exe/");
	  pkg_pattern pplc( fname, dir, 'W');
	  n.push_back( pplc);
	}

	// Add volumes
	for ( int j = 0; j < volcount; j++) {
	  char dir[80];

	  if ( (vollist[j] >= cdh_cManufactClassVolMin && 
		vollist[j] <= cdh_cManufactClassVolMax) ||
	       (vollist[j] >= cdh_cSystemClassVolMin && 
		vollist[j] <= cdh_cSystemClassVolMax)) {
	    // Base volume, skip
	    continue;
	  }	       

	  strcpy( dir, "$pwrp_load/");
	  sprintf( fname, "%s%s.dbs", dir, cdh_Low( (char *)(volnamelist + j))); 
	  n.checkVolume( fname);

	  // Check if there are any rtt-files for Root or Sub Volumes
	  if ( vollist[j] >= cdh_cUserVolMin &&
	       vollist[j] <= cdh_cUserVolMax) {
	    cdh_uVolumeId	vid;
	    vid.pwr = vollist[j];

	    // RttCrr-file
	    strcpy( dir, "$pwrp_load/");
	    sprintf( fname, "%s" load_cNameRttCrr,
		dir, vid.v.vid_3, vid.v.vid_2, vid.v.vid_1, vid.v.vid_0);
	    pkg_pattern rttcrr( fname);
	    n.push_back( rttcrr);

	    // RttCrrObj-file
	    strcpy( dir, "$pwrp_load/");
	    sprintf( fname, "%s" load_cNameRttCrrObj,
		dir, vid.v.vid_3, vid.v.vid_2, vid.v.vid_1, vid.v.vid_0);
	    pkg_pattern rttcrrobj( fname);
	    n.push_back( rttcrrobj);

	    // RttCrrCode-file
	    strcpy( dir, "$pwrp_load/");
	    sprintf( fname, "%s" load_cNameRttCrrCode,
		dir, vid.v.vid_3, vid.v.vid_2, vid.v.vid_1, vid.v.vid_0);
	    pkg_pattern rttcrrcode( fname);
	    n.push_back( rttcrrcode);

	    // RttSignals

	    strcpy( dir, "$pwrp_load/");
	    sprintf( fname, "%s" load_cNameRttSignals,
		dir, vid.v.vid_3, vid.v.vid_2, vid.v.vid_1, vid.v.vid_0);
	    pkg_pattern rttsignals( fname);
	    n.push_back( rttsignals);

	  }
	}

	free( volnamelist);
	free( vollist);

      } catch ( wb_error &e) {
	if  ( e.what() == string("No such node"))
	  continue;
	throw wb_error_str(e.what());
      }
    }
    else if ( strcmp( cdh_Low(line_item[0]), "boot") == 0) {
      // A Sev node, only node and bootfile
      try {
	if ( !(num == 2))
	  throw wb_error_str("File corrupt " load_cNameDistribute);

	pkg_node &n = getNode( line_item[1]);
	// Add ld_node file
	sprintf( fname, load_cNameNode, load_cDirectory, n.name(), n.bus());
	pkg_pattern pnode( fname, "", 'E');
	n.push_back( pnode);
	
	// Add bootfile
	sprintf( fname, load_cNameBoot, load_cDirectory, n.name(), n.bus());
	pkg_pattern pboot( fname, "", 'E');
	n.push_back( pboot);
      } catch ( wb_error &e) {
	if  ( e.what() == string("No such node"))
	  continue;
	throw wb_error_str(e.what());
      }
    }
  }

  is.close();

  // Check that all nodes are valid
  for ( int i = 0; i < (int) m_nodelist.size(); i++) {
    if ( !m_nodelist[i].valid())
      throw wb_error_str( "Unknown node name");
  }
}
コード例 #27
0
static pwr_tStatus Connect (
  ldh_sMenuCall *ip
) {
  pwr_tStatus	    	sts;
  pwr_sMenuButton   	mb;
  pwr_sAttrRef	    	PattrRef;
  pwr_sAttrRef 		aref = ip->Selected[0];


  sts = ldh_ReadObjectBody(ip->PointedSession,
    ip->ItemList[ip->ChosenItem].MenuObject,
    "SysBody", &mb, sizeof(pwr_sMenuButton));
  if (EVEN(sts)) return sts;

  if ( strcmp( mb.MethodArguments[1], "") != 0) {
    char arg_cid_str[20][32];
    int arg_cid_cnt;
    int i;
    int cid_ok = 0;
    pwr_tCid		cid;
    pwr_tCid		arg_cid;

    // arg 1 holds the allowed class or classes to connect to
    arg_cid_cnt = dcli_parse( mb.MethodArguments[1], ",", "", (char *) arg_cid_str, 
		sizeof( arg_cid_str) / sizeof( arg_cid_str[0]),
		sizeof( arg_cid_str[0]), 0);


    sts = ldh_GetAttrRefTid( ip->PointedSession, &ip->Selected[0], &cid);
    if ( EVEN(sts)) return 0;

    for ( i = 0; i < arg_cid_cnt; i++) {
      sts = ldh_ClassNameToId( ip->PointedSession, &arg_cid, arg_cid_str[i]);
      if ( EVEN(sts)) return 0;

      if ( cid == arg_cid) {
	cid_ok = 1;
	break;
      }
    }
    if ( !cid_ok)
      return 0;
  }

  if ( strcmp( mb.MethodArguments[2], "") != 0)
    // Body in MethodArguments 2, probably DevBody
    sts = ldh_SetObjectPar( ip->PointedSession, ip->Pointed.Objid, mb.MethodArguments[2],
		mb.MethodArguments[0], (char *) &ip->Selected[0], sizeof(ip->Selected[0]));
  else {
    char *name_p;
    pwr_tAName name;
    int size;
    pwr_tCid cid;

    // If Selected is a Template object in a classvolume, replace with 
    // symbol $IoConnect
    if ( cdh_IsClassVolume( aref.Objid.vid)) {
      sts = ldh_ObjidToName( ip->PointedSession, aref.Objid, ldh_eName_Object, 
			     name, sizeof(name), &size);
      if ( ODD(sts) &&  strcmp( name, "Template") == 0) {
	sts = ldh_GetObjectClass( ip->PointedSession, aref.Objid, &cid);
	if ( EVEN(sts)) return sts;

	aref.Objid.vid = ldh_cIoConnectVolume;
	aref.Objid.oix = cid;
      }
    }

    // Assume RtBody or SysBody
    sts = ldh_AttrRefToName(ip->PointedSession, &ip->Pointed, ldh_eName_VolPath,
			    &name_p, &size);
    if ( ODD(sts)) {
      strcpy( name, name_p);
      strcat( name, ".");
      strcat( name, mb.MethodArguments[0]);

      sts = ldh_NameToAttrRef( ip->PointedSession, name, &PattrRef);
      if (ODD(sts))
	sts = ldh_WriteAttribute(ip->PointedSession, &PattrRef, &aref,
			     sizeof(aref));
    }
  }

    
  char msg[500];
  if ( ODD(sts)) {
    pwr_tAName name;
    char *name_p;
    int len;

    sts = ldh_AttrRefToName( ip->PointedSession, &aref, ldh_eName_Hierarchy, 
			     &name_p, &len);
    if ( EVEN(sts))
      cdh_ObjidToString( name, aref.Objid, 1);
    else
      strcpy( name, name_p);
    sprintf( msg, "%s connected to:   %s", mb.MethodArguments[0], name);
    ip->wtt->message( 'I', msg);
  }
  else {
    msg_GetMsg( sts, msg, sizeof(msg));
    ip->wtt->message( 'E', msg);
  }
  return PWRS__SUCCESS;
}
コード例 #28
0
static pwr_tStatus ConfigureComponent( ldh_sMenuCall *ip) 
{
  pwr_tStatus sts;
  unsigned int disable_mask;
  pwr_sMenuButton   mb;
  pwr_tEnum graph_configuration;
  pwr_sAttrRef aaref;
  char vect[10][80];
  char item[3][80];
  int i;
  int nr;
  int vect_cnt;
  
  sts = ldh_ReadObjectBody(ip->PointedSession, ip->ItemList[ip->ChosenItem].MenuObject,
    "SysBody", &mb, sizeof(pwr_sMenuButton));

  // Reset previoius disable configuration
  configure_object_reset( ip, &ip->Pointed, &mb);

  // Set disable attributes from argument 0
  vect_cnt = dcli_parse( mb.MethodArguments[0], ",", "", (char *)vect, 
		   sizeof( vect) / sizeof( vect[0]), 
		   sizeof( vect[0]), 0);
  
  for ( i = 0; i < vect_cnt; i++) {
    nr = dcli_parse( vect[i], " 	", "", (char *)item,
		   sizeof( item) / sizeof( item[0]), 
		   sizeof( item[0]), 0);
    if ( nr == 1) {

      if ( sscanf( item[0], "%d", &disable_mask) != 1)
	graph_configuration = 0;

      sts = configure_object( ip, &ip->Pointed, disable_mask);
      if ( EVEN(sts)) return sts;
    }
    else if ( nr == 2) {
      pwr_tAName aname;

      if ( sscanf( item[1], "%d", &disable_mask) != 1)
	disable_mask = 0;

      strcpy( aname, item[0]);

      sts = ldh_ArefANameToAref( ip->PointedSession, &ip->Pointed, aname, 
				 &aaref);
      if ( ODD(sts)) {
	sts = configure_object( ip, &aaref, disable_mask);
	if ( EVEN(sts)) return sts;
      }
    }
  }

  // Set GraphConfiguration from argument 1
  vect_cnt = dcli_parse( mb.MethodArguments[1], ",", "", (char *)vect, 
		   sizeof( vect) / sizeof( vect[0]), 
		   sizeof( vect[0]), 0);
  
  for ( i = 0; i < vect_cnt; i++) {
    nr = dcli_parse( vect[i], " 	", "", (char *)item,
		   sizeof( item) / sizeof( item[0]), 
		   sizeof( item[0]), 0);
    if ( nr == 1) {

      if ( sscanf( item[0], "%d", &graph_configuration) != 1)
	graph_configuration = 0;

      sts = ldh_ArefANameToAref( ip->PointedSession, &ip->Pointed, "GraphConfiguration", 
				 &aaref);
      if ( ODD(sts)) {
	sts = ldh_WriteAttribute( ip->PointedSession, &aaref, (void *)&graph_configuration, 
				  sizeof(graph_configuration));
	if ( EVEN(sts)) return sts;
      }
    }
    else if ( nr == 2) {
      pwr_tAName aname;

      if ( sscanf( item[1], "%d", &graph_configuration) != 1)
	graph_configuration = 0;

      strcpy( aname, item[0]);
      strcat( aname, ".GraphConfiguration");

      sts = ldh_ArefANameToAref( ip->PointedSession, &ip->Pointed, aname, 
				 &aaref);
      if ( ODD(sts)) {
	sts = ldh_WriteAttribute( ip->PointedSession, &aaref, (void *)&graph_configuration, 
				  sizeof(graph_configuration));
	if ( EVEN(sts)) return sts;
      }
    }
  }
  return 1;
}