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); }
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; }
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; }
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); }
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; }
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; }
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; }
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)); } } } }
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; }
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; }
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**)ðernet_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; }
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; }
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; }
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; }
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; } } } }
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; } }
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; }
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; }
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; }
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( ¤t); time_Adiff( &diff, ¤t, &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; }
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); } }
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; }
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; }
// // 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; }
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; }
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"); } }
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; }
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; }