Commit 8109746a authored by claes's avatar claes

*** empty log message ***

parent 6b752c9c
......@@ -257,7 +257,7 @@ static int adminnav_brow_cb( FlowCtx *ctx, flow_tEvent event)
brow_SelectClear( adminnav->brow->ctx);
brow_SetInverse( object, 1);
brow_SelectInsert( adminnav->brow->ctx, object);
if ( !brow_IsVisible( adminnav->brow->ctx, object))
if ( !brow_IsVisible( adminnav->brow->ctx, object, flow_eVisible_Full))
brow_CenterObject( adminnav->brow->ctx, object, 0.25);
if ( node_count)
free( node_list);
......@@ -293,7 +293,7 @@ static int adminnav_brow_cb( FlowCtx *ctx, flow_tEvent event)
brow_SelectClear( adminnav->brow->ctx);
brow_SetInverse( object, 1);
brow_SelectInsert( adminnav->brow->ctx, object);
if ( !brow_IsVisible( adminnav->brow->ctx, object))
if ( !brow_IsVisible( adminnav->brow->ctx, object, flow_eVisible_Full))
brow_CenterObject( adminnav->brow->ctx, object, 0.75);
if ( node_count)
free( node_list);
......@@ -386,7 +386,7 @@ static int adminnav_brow_cb( FlowCtx *ctx, flow_tEvent event)
brow_SelectClear( adminnav->brow->ctx);
brow_SetInverse( object, 1);
brow_SelectInsert( adminnav->brow->ctx, object);
if ( !brow_IsVisible( adminnav->brow->ctx, object))
if ( !brow_IsVisible( adminnav->brow->ctx, object, flow_eVisible_Full))
brow_CenterObject( adminnav->brow->ctx, object, 0.25);
free( node_list);
break;
......
......@@ -180,6 +180,9 @@ XmAnyCallbackStruct *data;
sts = vldh_wind_save( foectx->grectx->wind);
foe_enable_ldh_cb(foectx);
error_msg( sts);
gre_save(foectx->grectx, 0);
NORMAL_CURSOR;
if ( ODD(sts))
......@@ -2952,6 +2955,9 @@ static void foe_exit_save(
foe_disable_ldh_cb(foectx);
sts = vldh_wind_save( foectx->grectx->wind);
error_msg( sts);
gre_save(foectx->grectx, 0);
NORMAL_CURSOR;
if ( sts == VLDH__PLCNOTSAVED )
{
......
......@@ -1848,6 +1848,8 @@ int foe_new_local(
if ( foectx->access == foe_eFuncAccess_Edit)
foe_edit_set_entries ( foectx);
/* Write document headers /CJ 050415 */
gre_init_docobjects( foectx->grectx);
return FOE__SUCCESS;
}
......@@ -2911,7 +2913,7 @@ int foe_print_overview (
if ( EVEN(sts)) return sts;
/* Init the document objects */
gre_init_docobjects( foectx->grectx);
// gre_init_docobjects( foectx->grectx);
doc_count = 0;
node_ptr = nodelist;
......@@ -2977,7 +2979,7 @@ int foe_print_document(
sts = vldh_get_nodes( wind, &node_count, &nodelist);
if ( EVEN(sts)) return sts;
gre_init_docobjects( foectx->grectx);
// gre_init_docobjects( foectx->grectx);
doc_count = 0;
node_ptr = nodelist;
......@@ -3031,7 +3033,7 @@ int foe_print_selected_document(
if ( EVEN(sts)) return sts;
gre_unselect( foectx->grectx);
gre_init_docobjects( foectx->grectx);
// gre_init_docobjects( foectx->grectx);
doc_count = 0;
node_ptr = nodelist;
......@@ -3444,6 +3446,8 @@ static void foe_edit_exit_save(
return;
}
gre_save(foectx->grectx, 0);
/* Change the funktion */
switch( foectx->wanted_function)
{
......
......@@ -1155,6 +1155,9 @@ int gre_undelete(
0);
}
/* Update header /CJ 050415 */
gre_init_docobjects(grectx);
grectx->del_node_count = 0;
grectx->del_con_count = 0;
return GRE__SUCCESS;
......@@ -3084,6 +3087,12 @@ int gre_create_node(
UPDATE_SCREEN
*node = node_object;
/* Update header /CJ 050415 */
if (class == pwr_cClass_Document) {
gre_init_docobjects(grectx);
}
return GRE__SUCCESS;
}
......@@ -3391,6 +3400,9 @@ void gre_paste (
flow_Paste( grectx->flow_ctx);
flow_SetSelectHighlight( grectx->flow_ctx);
/* Update header /CJ 050415 */
gre_init_docobjects(grectx);
}
......@@ -3853,6 +3865,10 @@ int gre_node_update (
gre_message ( grectx, message);
BEEP;
}
/* Update the document headers /CJ 050415 */
gre_init_docobjects( grectx);
return GRE__SUCCESS;
}
......@@ -4163,6 +4179,8 @@ int gre_init_docobjects(
vldh_t_node *node_ptr;
int i;
char *parvalue;
pwr_tTime mod_time;
pwr_tTime *mod_time_ptr;
wind = grectx->wind;
plc = wind->hw.plc;
......@@ -4173,7 +4191,15 @@ int gre_init_docobjects(
sts = vldh_get_nodes( wind, &node_count, &nodelist);
if ( EVEN(sts)) return sts;
/* Loop all nodes once first in order to count documents. /CJ 050415 */
doc_count = 0;
node_ptr = nodelist;
for ( i = 0; i < node_count; i++)
{
if ( vldh_check_document( wind->hw.ldhses, (*node_ptr)->ln.oid)) doc_count++;
node_ptr++;
}
node_ptr = nodelist;
for ( i = 0; i < node_count; i++)
{
......@@ -4181,7 +4207,6 @@ int gre_init_docobjects(
(*node_ptr)->ln.oid))
{
doc_obj = *node_ptr;
doc_count++;
/* System name in annotation nr 0 */
flow_SetAnnotation( doc_obj->hn.node_id, 0, systemname,
......@@ -4223,12 +4248,22 @@ int gre_init_docobjects(
free((char *) parvalue);
}
/* Time in annot 4 */
time_AtoAscii(NULL, time_eFormat_DateAndTime,
timstr, sizeof(timstr));
/* PLC Window's Modified Time in annot 4 */
mod_time_ptr = NULL;
sts = ldh_GetObjectPar( wind->hw.ldhses,
wind->lw.oid,
"DevBody", "Modified",
(char **)&mod_time_ptr, &size);
if (ODD(sts)) {
memcpy(&mod_time, mod_time_ptr, sizeof(mod_time));
free((char *) mod_time_ptr);
mod_time_ptr = &mod_time;
}
time_AtoAscii(mod_time_ptr, time_eFormat_DateAndTime, timstr, sizeof(timstr));
timstr[strlen(timstr) - 6] = '\0';
flow_SetAnnotation( doc_obj->hn.node_id, 4, timstr,
strlen(timstr));
flow_SetAnnotation( doc_obj->hn.node_id, 4, timstr, strlen(timstr));
/* Signature in annotations nr 5 */
sts = ldh_GetObjectPar( wind->hw.ldhses,
......@@ -4432,6 +4467,9 @@ int gre_save( gre_ctx grectx, char *filename)
char fname[200];
int sts;
/* Update document headers before saving flow file /CJ 050415 */
gre_init_docobjects(grectx);
if ( !filename) {
sprintf( fname, "pwrp_load:pwr_%s.flw",
vldh_IdToStr(0, grectx->wind->lw.oid));
......
......@@ -945,7 +945,7 @@ static int nav_brow_cb( FlowCtx *ctx, flow_tEvent event)
brow_SelectClear( nav->brow_ctx);
brow_SetInverse( object, 1);
brow_SelectInsert( nav->brow_ctx, object);
if ( !brow_IsVisible( nav->brow_ctx, object))
if ( !brow_IsVisible( nav->brow_ctx, object, flow_eVisible_Full))
brow_CenterObject( nav->brow_ctx, object, 0.25);
if ( node_count)
free( node_list);
......@@ -987,7 +987,7 @@ static int nav_brow_cb( FlowCtx *ctx, flow_tEvent event)
brow_SelectClear( nav->brow_ctx);
brow_SetInverse( object, 1);
brow_SelectInsert( nav->brow_ctx, object);
if ( !brow_IsVisible( nav->brow_ctx, object))
if ( !brow_IsVisible( nav->brow_ctx, object, flow_eVisible_Full))
brow_CenterObject( nav->brow_ctx, object, 0.75);
if ( node_count)
free( node_list);
......@@ -1079,7 +1079,7 @@ static int nav_brow_cb( FlowCtx *ctx, flow_tEvent event)
brow_SelectClear( nav->brow_ctx);
brow_SetInverse( object, 1);
brow_SelectInsert( nav->brow_ctx, object);
if ( !brow_IsVisible( nav->brow_ctx, object))
if ( !brow_IsVisible( nav->brow_ctx, object, flow_eVisible_Full))
brow_CenterObject( nav->brow_ctx, object, 0.25);
free( node_list);
nav->last_selected = object;
......
......@@ -1158,7 +1158,7 @@ static int pal_brow_cb( FlowCtx *ctx, flow_tEvent event)
brow_SelectClear( pal->brow_ctx);
brow_SetInverse( object, 1);
brow_SelectInsert( pal->brow_ctx, object);
if ( !brow_IsVisible( pal->brow_ctx, object))
if ( !brow_IsVisible( pal->brow_ctx, object, flow_eVisible_Full))
brow_CenterObject( pal->brow_ctx, object, 0.25);
if ( node_count)
free( node_list);
......@@ -1200,7 +1200,7 @@ static int pal_brow_cb( FlowCtx *ctx, flow_tEvent event)
brow_SelectClear( pal->brow_ctx);
brow_SetInverse( object, 1);
brow_SelectInsert( pal->brow_ctx, object);
if ( !brow_IsVisible( pal->brow_ctx, object))
if ( !brow_IsVisible( pal->brow_ctx, object, flow_eVisible_Full))
brow_CenterObject( pal->brow_ctx, object, 0.75);
if ( node_count)
free( node_list);
......@@ -1276,7 +1276,7 @@ static int pal_brow_cb( FlowCtx *ctx, flow_tEvent event)
brow_SelectClear( pal->brow_ctx);
brow_SetInverse( object, 1);
brow_SelectInsert( pal->brow_ctx, object);
if ( !brow_IsVisible( pal->brow_ctx, object))
if ( !brow_IsVisible( pal->brow_ctx, object, flow_eVisible_Full))
brow_CenterObject( pal->brow_ctx, object, 0.25);
free( node_list);
pal->last_selected = object;
......
......@@ -1147,7 +1147,7 @@ int trv_get_objects_hcn (
pwr_tObjid hierobjdid,
pwr_tClassId *classid,
char *name,
int (*backcall)( pwr_tObjid, void *, void *, void *, void *, void *),
int (*backcall)( pwr_sAttrRef *, void *, void *, void *, void *, void *),
void *arg1,
void *arg2,
void *arg3,
......
......@@ -93,7 +93,7 @@ int trv_get_objects_hcn (
pwr_tObjid hierobjdid,
pwr_tClassId *classid,
char *name,
int (*backcall)( pwr_tObjid, void *, void *, void *, void *, void*),
int (*backcall)( pwr_sAttrRef *, void *, void *, void *, void *, void*),
void *arg1,
void *arg2,
void *arg3,
......
......@@ -409,7 +409,7 @@ static void uted_activate_helputils (
XmAnyCallbackStruct *data
)
{
xhelp_help( "utilities", 0, navh_eHelpFile_Base, 0, 1);
xhelp_help( "utilities_refman", 0, navh_eHelpFile_Other, "$pwr_lang/man_dg.dat", 1);
}
static void uted_activate_helppwr_plc (
......@@ -418,7 +418,7 @@ static void uted_activate_helppwr_plc (
XmAnyCallbackStruct *data
)
{
xhelp_help( "help command", 0, navh_eHelpFile_Base, 0, 1);
xhelp_help( "help command", 0, navh_eHelpFile_Other, "$pwr_lang/man_dg.dat", 1);
}
static void uted_activate_batch (
......
......@@ -55,9 +55,9 @@ wb_vrepmem::~wb_vrepmem()
clear();
}
void wb_vrepmem::loadWbl( char *filename, pwr_tStatus *sts)
void wb_vrepmem::loadWbl( char *filename, pwr_tStatus *sts, bool reload)
{
if ( m_erep->refMerepOccupied()) {
if ( !reload && m_erep->refMerepOccupied()) {
*sts = LDH__OTHERSESS;
return;
}
......@@ -1796,7 +1796,7 @@ bool wb_vrepmem::commit(pwr_tStatus *sts)
// Reload to get new template objects
clear();
loadWbl( m_filename, sts);
loadWbl( m_filename, sts, true);
return true;
}
......@@ -1806,7 +1806,7 @@ bool wb_vrepmem::abort(pwr_tStatus *sts)
// Reload
if ( m_classeditor) {
clear();
loadWbl( m_filename, sts);
loadWbl( m_filename, sts, true);
}
return true;
......
......@@ -334,7 +334,7 @@ public:
virtual bool importDocBlock(pwr_tOid oid, size_t size, char *block);
virtual bool importMeta(dbs_sMenv *mep) { return true;}
bool importBuildObject( mem_object *memo);
void loadWbl( char *filename, pwr_tStatus *sts);
void loadWbl( char *filename, pwr_tStatus *sts, bool reload = false);
void freeObject( mem_object *mem);
void clear();
bool classeditorCheck( ldh_eDest dest_code, mem_object *dest, pwr_tCid cid,
......
......@@ -184,7 +184,8 @@ static void watt_activate_exit( Widget w, WAtt *watt, XmAnyCallbackStruct *data)
static void watt_activate_help( Widget w, WAtt *watt, XmAnyCallbackStruct *data)
{
CoXHelp::dhelp( "object editor", 0, navh_eHelpFile_Base, 0, true);
CoXHelp::dhelp( "objecteditor_refman", 0, navh_eHelpFile_Other,
"$pwr_lang/man_dg.dat", true);
}
static void watt_create_msg_label( Widget w, WAtt *watt, XmAnyCallbackStruct *data)
......
......@@ -265,7 +265,7 @@ static int wattnav_brow_cb( FlowCtx *ctx, flow_tEvent event)
brow_SelectClear( wattnav->brow->ctx);
brow_SetInverse( object, 1);
brow_SelectInsert( wattnav->brow->ctx, object);
if ( !brow_IsVisible( wattnav->brow->ctx, object))
if ( !brow_IsVisible( wattnav->brow->ctx, object, flow_eVisible_Full))
brow_CenterObject( wattnav->brow->ctx, object, 0.25);
if ( node_count)
free( node_list);
......@@ -301,7 +301,7 @@ static int wattnav_brow_cb( FlowCtx *ctx, flow_tEvent event)
brow_SelectClear( wattnav->brow->ctx);
brow_SetInverse( object, 1);
brow_SelectInsert( wattnav->brow->ctx, object);
if ( !brow_IsVisible( wattnav->brow->ctx, object))
if ( !brow_IsVisible( wattnav->brow->ctx, object, flow_eVisible_Full))
brow_CenterObject( wattnav->brow->ctx, object, 0.75);
if ( node_count)
free( node_list);
......@@ -398,7 +398,7 @@ static int wattnav_brow_cb( FlowCtx *ctx, flow_tEvent event)
brow_SelectClear( wattnav->brow->ctx);
brow_SetInverse( object, 1);
brow_SelectInsert( wattnav->brow->ctx, object);
if ( !brow_IsVisible( wattnav->brow->ctx, object))
if ( !brow_IsVisible( wattnav->brow->ctx, object, flow_eVisible_Full))
brow_CenterObject( wattnav->brow->ctx, object, 0.25);
free( node_list);
break;
......
......@@ -890,8 +890,9 @@ void wb_wblnode::buildBody( ref_wblnode object)
m_vrep->error( "Bad body name", getFileName(), line_number);
}
first_child = getFirstChild();
if ( first_child)
for ( first_child = getFirstChild();
first_child;
first_child = first_child->getNextSibling())
first_child->buildAttr( object, bix);
next_sibling = getNextSibling();
......@@ -1045,9 +1046,6 @@ void wb_wblnode::buildAttr( ref_wblnode object, pwr_eBix bix)
default:
;
}
next_sibling = getNextSibling();
if ( next_sibling)
next_sibling->buildAttr( object, bix);
}
void wb_wblnode::buildBuff( ref_wblnode object, pwr_eBix bix, pwr_tCid buffer_cid,
......
......@@ -628,6 +628,31 @@ static int wccm_getnodeobject_func(
return 1;
}
static int wccm_getprojectname_func(
void *filectx,
ccm_s_arg *arg_list,
int arg_count,
int *return_decl,
float *return_float,
int *return_int,
char *return_string)
{
int sts;
char projectname[80];
if ( arg_count != 0)
return CCM__ARGMISM;
sts = utl_get_projectname( projectname);
if ( ODD(sts))
strcpy( return_string, projectname);
else
strcpy( return_string, "");
*return_decl = CCM_DECL_STRING;
return 1;
}
/*************************************************************************
*
* Name: wccm_register()
......@@ -675,6 +700,8 @@ int wccm_register(
if ( EVEN(sts)) return sts;
sts = ccm_register_function( "ObjectExist", wccm_objectexist_func);
if ( EVEN(sts)) return sts;
sts = ccm_register_function( "GetProjectName", wccm_getprojectname_func);
if ( EVEN(sts)) return sts;
sts = ccm_create_external_var( "cmd_status", CCM_DECL_INT, 0, 1,
NULL);
......
......@@ -25,6 +25,7 @@
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <Xm/ToggleBG.h>
#include <Xm/ToggleB.h>
#include <Xm/RowColumn.h>
extern "C" {
......@@ -233,7 +234,8 @@ static void wda_activate_prevattr( Widget w, Wda *wda, XmAnyCallbackStruct *data
static void wda_activate_help( Widget w, Wda *wda, XmAnyCallbackStruct *data)
{
CoXHelp::dhelp( "spreadsheet editor", 0, navh_eHelpFile_Base, 0, true);
CoXHelp::dhelp( "spreadsheeteditor_refman", 0, navh_eHelpFile_Other,
"$pwr_lang/man_dg.dat", true);
}
static void wda_create_msg_label( Widget w, Wda *wda, XmAnyCallbackStruct *data)
......@@ -281,6 +283,11 @@ static void wdaclass_create_classvalue( Widget w, Wda *wda, XmAnyCallbackStruct
wda->wdaclass_classvalue = w;
}
static void wdaclass_create_attrobjects( Widget w, Wda *wda, XmAnyCallbackStruct *data)
{
wda->wdaclass_attrobjects = w;
}
static void wdaclass_activate_ok( Widget w, Wda *wda, XmAnyCallbackStruct *data)
{
char *hiername;
......@@ -290,6 +297,7 @@ static void wdaclass_activate_ok( Widget w, Wda *wda, XmAnyCallbackStruct *data)
hiername = XmTextGetString( wda->wdaclass_hiervalue);
classname = XmTextGetString( wda->wdaclass_classvalue);
wda->attrobjects = XmToggleButtonGetState(wda->wdaclass_attrobjects);
if ( strcmp( hiername, "") == 0)
wda->objid = pwr_cNObjid;
......@@ -319,7 +327,7 @@ static void wdaclass_activate_ok( Widget w, Wda *wda, XmAnyCallbackStruct *data)
else {
// Find new attributes
sts = ((WdaNav *)wda->wdanav)->update( wda->objid, wda->classid,
wda->attribute);
wda->attribute, wda->attrobjects);
if ( EVEN(sts))
wow_DisplayError( wda->parent_wid, "Spreadsheet error",
wnav_get_message( sts));
......@@ -548,6 +556,8 @@ void Wda::open_class_dialog()
XmTextSetString( wdaclass_hiervalue, hierstr);
XmTextSetString( wdaclass_classvalue, classstr);
XmToggleButtonSetState( wdaclass_attrobjects,
(Boolean) attrobjects, False);
XtManageChild( wdaclass_dia);
}
......@@ -646,7 +656,7 @@ int Wda::next_attr()
get_next = 1;
else if ( get_next) {
strcpy( attribute, bodydef[j].ParName);
sts = ((WdaNav *)wdanav)->update( objid, classid, attribute);
sts = ((WdaNav *)wdanav)->update( objid, classid, attribute, attrobjects);
free((char *) bodydef);
return WDA__SUCCESS;
}
......@@ -695,7 +705,7 @@ int Wda::prev_attr()
}
else {
strcpy( attribute, prev_attr);
sts = ((WdaNav *)wdanav)->update( objid, classid, attribute);
sts = ((WdaNav *)wdanav)->update( objid, classid, attribute, attrobjects);
free((char *) bodydef);
return WDA__SUCCESS;
}
......@@ -707,7 +717,7 @@ int Wda::prev_attr()
if ( get_last && strcmp( prev_attr, "") != 0) {
strcpy( attribute, prev_attr);
sts = ((WdaNav *)wdanav)->update( objid, classid, attribute);
sts = ((WdaNav *)wdanav)->update( objid, classid, attribute, attrobjects);
return WDA__SUCCESS;
}
return WDA__NOPREVATTR;
......@@ -720,7 +730,7 @@ static void wda_set_attr_cb( void *ctx, char *text)
strcpy( wda->attribute, text);
sts = ((WdaNav *)wda->wdanav)->update( wda->objid, wda->classid,
wda->attribute);
wda->attribute, wda->attrobjects);
if ( EVEN(sts))
wow_DisplayError( wda->parent_wid, "Spreadsheet error",
wnav_get_message( sts));
......@@ -750,7 +760,7 @@ Wda::Wda(
editmode(wa_editmode),
input_open(0), input_multiline(0),
close_cb(0), redraw_cb(0), client_data(0),
set_focus_disabled(0)
set_focus_disabled(0), attrobjects(0)
{
char uid_filename[120] = {"pwr_exe:wb_wda.uid"};
char *uid_filename_p = uid_filename;
......@@ -795,7 +805,8 @@ Wda::Wda(
{"wdaclass_activate_ok",(caddr_t)wdaclass_activate_ok },
{"wdaclass_activate_cancel",(caddr_t)wdaclass_activate_cancel },
{"wdaclass_create_hiervalue",(caddr_t)wdaclass_create_hiervalue },
{"wdaclass_create_classvalue",(caddr_t)wdaclass_create_classvalue }
{"wdaclass_create_classvalue",(caddr_t)wdaclass_create_classvalue },
{"wdaclass_create_attrobjects",(caddr_t)wdaclass_create_attrobjects }
};
static int reglist_num = (sizeof reglist / sizeof reglist[0]);
......
......@@ -61,6 +61,7 @@ class Wda {
Widget wdaclass_dia;
Widget wdaclass_hiervalue;
Widget wdaclass_classvalue;
Widget wdaclass_attrobjects;
Widget wdaattr_dia;
int input_open;
int input_multiline;
......@@ -75,6 +76,7 @@ class Wda {
XtIntervalId focus_timerid;
static char value_recall[30][160];
int value_current_recall;
int attrobjects;
void message( char severity, char *message);
void set_prompt( char *prompt);
......
......@@ -48,7 +48,7 @@ extern "C" {
static char null_str[] = "";
static int wdanav_init_brow_cb( FlowCtx *fctx, void *client_data);
static int wdanav_attr_found_cb( pwr_tObjid objid, void *a1, void *a2,
static int wdanav_attr_found_cb( pwr_sAttrRef *aref, void *a1, void *a2,
void *a3, void *a4, void *a5);
void WdaNav::message( char sev, char *text)
......@@ -85,7 +85,7 @@ WdaNav::WdaNav(
advanced_user(wa_advanced_user),
display_objectname(wa_display_objectname), bypass(0),
trace_started(0), message_cb(NULL), utility(wa_utility),
displayed(0)
displayed(0), attrobjects(0)
{
strcpy( name, wa_name);
strcpy( attribute, wa_attribute);
......@@ -248,7 +248,7 @@ static int wdanav_brow_cb( FlowCtx *ctx, flow_tEvent event)
brow_SelectClear( wdanav->brow->ctx);
brow_SetInverse( object, 1);
brow_SelectInsert( wdanav->brow->ctx, object);
if ( !brow_IsVisible( wdanav->brow->ctx, object))
if ( !brow_IsVisible( wdanav->brow->ctx, object, flow_eVisible_Full))
brow_CenterObject( wdanav->brow->ctx, object, 0.25);
if ( node_count)
free( node_list);
......@@ -284,7 +284,7 @@ static int wdanav_brow_cb( FlowCtx *ctx, flow_tEvent event)
brow_SelectClear( wdanav->brow->ctx);
brow_SetInverse( object, 1);
brow_SelectInsert( wdanav->brow->ctx, object);
if ( !brow_IsVisible( wdanav->brow->ctx, object))
if ( !brow_IsVisible( wdanav->brow->ctx, object, flow_eVisible_Full))
brow_CenterObject( wdanav->brow->ctx, object, 0.75);
if ( node_count)
free( node_list);
......@@ -378,7 +378,7 @@ static int wdanav_brow_cb( FlowCtx *ctx, flow_tEvent event)
brow_SelectClear( wdanav->brow->ctx);
brow_SetInverse( object, 1);
brow_SelectInsert( wdanav->brow->ctx, object);
if ( !brow_IsVisible( wdanav->brow->ctx, object))
if ( !brow_IsVisible( wdanav->brow->ctx, object, flow_eVisible_Full))
brow_CenterObject( wdanav->brow->ctx, object, 0.25);
free( node_list);
break;
......@@ -724,10 +724,16 @@ int WdaNav::get_attr()
classid_vect[0] = classid;
classid_vect[1] = 0;
if ( !attrobjects) {
trv_get_objects_hcn( ldhses, objid, classid_vect, NULL, wdanav_attr_found_cb,
(void *)this, (void *) &bodydef[j], (void *) body,
NULL, NULL);
}
else {
trv_get_attrobjects( ldhses, objid, classid_vect, NULL, trv_eDepth_Deep,
wdanav_attr_found_cb, (void *)this, (void *) &bodydef[j],
(void *) body, NULL, NULL);
}
free((char *) bodydef);
brow_ResetNodraw( brow->ctx);
......@@ -735,17 +741,33 @@ int WdaNav::get_attr()
return WDA__SUCCESS;
}
static int wdanav_attr_found_cb( pwr_tObjid objid, void *a1, void *a2,
static int wdanav_attr_found_cb( pwr_sAttrRef *aref, void *a1, void *a2,
void *a3, void *a4, void *a5)
{
WdaNav *wdanav = (WdaNav *) a1;
ldh_sParDef *bodydef = (ldh_sParDef *) a2;
char *body = (char *) a3;
pwr_tObjid objid = aref->Objid;
char *name;
char *s;
pwr_tAName aname;
pwr_tStatus sts;
int size;
sts = ldh_AttrRefToName( wdanav->ldhses, aref, ldh_eName_Aref, &name, &size);
if ( EVEN(sts)) return sts;
if ( !(s = strchr( name, '.')))
strcpy( aname, bodydef[0].ParName);
else {
strcpy( aname, s+1);
strcat( aname, ".");
strcat( aname, bodydef[0].ParName);
}
if ( bodydef[0].Par->Output.Info.Elements <= 1)
new WItemAttr( wdanav->brow, wdanav->ldhses, objid, NULL,
flow_eDest_IntoLast, bodydef[0].ParName,
flow_eDest_IntoLast, aname,
bodydef[0].Par->Output.Info.Type,
bodydef[0].Par->Output.TypeRef,
bodydef[0].Par->Output.Info.Size,
......@@ -753,7 +775,7 @@ static int wdanav_attr_found_cb( pwr_tObjid objid, void *a1, void *a2,
body, 1);
else
new WItemAttrArray( wdanav->brow, wdanav->ldhses, objid, NULL,
flow_eDest_IntoLast, bodydef[0].ParName,
flow_eDest_IntoLast, aname,
bodydef[0].Par->Output.Info.Elements,
bodydef[0].Par->Output.Info.Type,
bodydef[0].Par->Output.TypeRef,
......@@ -854,7 +876,7 @@ int WdaNav::find_by_objid( pwr_tObjid oi, brow_tObject *object)
}
int WdaNav::update( pwr_tObjid new_objid, pwr_tClassId new_classid,
char *new_attribute)
char *new_attribute, int new_attrobjects)
{
int sts;
int keep_select;
......@@ -866,7 +888,8 @@ int WdaNav::update( pwr_tObjid new_objid, pwr_tClassId new_classid,
if ( cdh_ObjidIsEqual( objid, new_objid) &&
classid == new_classid &&
strcmp( attribute, new_attribute) == 0)
strcmp( attribute, new_attribute) == 0 &&
attrobjects == new_attrobjects)
return WDA__SUCCESS;
if ( cdh_ObjidIsEqual( objid, new_objid) &&
......@@ -890,6 +913,7 @@ int WdaNav::update( pwr_tObjid new_objid, pwr_tClassId new_classid,
objid = new_objid;
classid = new_classid;
strcpy( attribute, new_attribute);
attrobjects = new_attrobjects;
brow_SetNodraw( brow->ctx);
brow_DeleteAll( brow->ctx);
......@@ -907,7 +931,7 @@ int WdaNav::update( pwr_tObjid new_objid, pwr_tClassId new_classid,
}
else {
// Scroll to top position
if ( brow_GetFirst( brow->ctx, &object))
if ( ODD( brow_GetFirst( brow->ctx, &object)))
brow_CenterObject( brow->ctx, object, 0.0);
}
......
......@@ -74,6 +74,7 @@ class WdaNav {
void (*change_value_cb)( void *);
wb_eUtility utility;
int displayed;
int attrobjects;
void start_trace( pwr_tObjid Objid, char *object_str);
int set_attr_value( brow_tObject node, char *name, char *value_str);
......@@ -91,7 +92,7 @@ class WdaNav {
{ this->editmode = editmode; this->ldhses = ldhses;};
int select_by_name( char *name);
int update( pwr_tObjid new_objid, pwr_tClassId new_classid,
char *new_attribute);
char *new_attribute, int new_attrobjects);
int find_by_objid( pwr_tObjid oi, brow_tObject *object);
int print( char *filename);
};
......
......@@ -1253,7 +1253,7 @@ static int wnav_brow_cb( FlowCtx *ctx, flow_tEvent event)
brow_SetInverse( object, 1);
brow_SelectInsert( wnav->brow->ctx, object);
}
if ( !brow_IsVisible( wnav->brow->ctx, object))
if ( !brow_IsVisible( wnav->brow->ctx, object, flow_eVisible_Full))
brow_CenterObject( wnav->brow->ctx, object, 0.25);
if ( node_count)
free( node_list);
......@@ -1330,7 +1330,7 @@ static int wnav_brow_cb( FlowCtx *ctx, flow_tEvent event)
brow_SetInverse( object, 1);
brow_SelectInsert( wnav->brow->ctx, object);
}
if ( !brow_IsVisible( wnav->brow->ctx, object))
if ( !brow_IsVisible( wnav->brow->ctx, object, flow_eVisible_Full))
brow_CenterObject( wnav->brow->ctx, object, 0.75);
if ( node_count)
free( node_list);
......@@ -1523,7 +1523,7 @@ static int wnav_brow_cb( FlowCtx *ctx, flow_tEvent event)
brow_SelectClear( wnav->brow->ctx);
brow_SetInverse( object, 1);
brow_SelectInsert( wnav->brow->ctx, object);
if ( !brow_IsVisible( wnav->brow->ctx, object))
if ( !brow_IsVisible( wnav->brow->ctx, object, flow_eVisible_Full))
brow_CenterObject( wnav->brow->ctx, object, 0.25);
free( node_list);
wnav->last_selected = object;
......
......@@ -154,7 +154,14 @@ extern "C" {
#include "xnav_bitmap_object18.h"
#include "xnav_bitmap_object20.h"
#include "xnav_bitmap_object24.h"
#include "xnav_bitmap_attrref8.h"
#include "xnav_bitmap_attrref10.h"
#include "xnav_bitmap_attrref12.h"
#include "xnav_bitmap_attrref14.h"
#include "xnav_bitmap_attrref16.h"
#include "xnav_bitmap_attrref18.h"
#include "xnav_bitmap_attrref20.h"
#include "xnav_bitmap_attrref24.h"
#include "xnav_bitmap_attrxref12.h"
#include "xnav_bitmap_ref_err12.h"
#include "xnav_bitmap_crossref_err12.h"
......@@ -710,12 +717,34 @@ void WNavBrow::allocate_pixmaps()
brow_AllocAnnotPixmap( ctx, &pixmap_data, &pixmap_object);
for ( i = 0; i < 9; i++)
{
i = 0;
pixmap_data[i].width =xnav_bitmap_attrref8_width;
pixmap_data[i].height =xnav_bitmap_attrref8_height;
pixmap_data[i++].bits = (char *)xnav_bitmap_attrref8_bits;
pixmap_data[i].width =xnav_bitmap_attrref10_width;
pixmap_data[i].height =xnav_bitmap_attrref10_height;
pixmap_data[i++].bits = (char *)xnav_bitmap_attrref10_bits;
pixmap_data[i].width =xnav_bitmap_attrref12_width;
pixmap_data[i].height =xnav_bitmap_attrref12_height;
pixmap_data[i].bits = (char *)xnav_bitmap_attrref12_bits;
}
pixmap_data[i++].bits = (char *)xnav_bitmap_attrref12_bits;
pixmap_data[i].width =xnav_bitmap_attrref14_width;
pixmap_data[i].height =xnav_bitmap_attrref14_height;
pixmap_data[i++].bits = (char *)xnav_bitmap_attrref14_bits;
pixmap_data[i].width =xnav_bitmap_attrref16_width;
pixmap_data[i].height =xnav_bitmap_attrref16_height;
pixmap_data[i++].bits = (char *)xnav_bitmap_attrref16_bits;
pixmap_data[i].width =xnav_bitmap_attrref18_width;
pixmap_data[i].height =xnav_bitmap_attrref18_height;
pixmap_data[i++].bits = (char *)xnav_bitmap_attrref18_bits;
pixmap_data[i].width =xnav_bitmap_attrref20_width;
pixmap_data[i].height =xnav_bitmap_attrref20_height;
pixmap_data[i++].bits = (char *)xnav_bitmap_attrref20_bits;
pixmap_data[i].width =xnav_bitmap_attrref20_width;
pixmap_data[i].height =xnav_bitmap_attrref20_height;
pixmap_data[i++].bits = (char *)xnav_bitmap_attrref20_bits;
pixmap_data[i].width =xnav_bitmap_attrref24_width;
pixmap_data[i].height =xnav_bitmap_attrref24_height;
pixmap_data[i++].bits = (char *)xnav_bitmap_attrref24_bits;
brow_AllocAnnotPixmap( ctx, &pixmap_data, &pixmap_attrref);
......
......@@ -1069,6 +1069,11 @@ WItemAttr::WItemAttr(
dest, dest_code, (void *) this, 1, &node);
brow_SetAnnotPixmap( node, 0, brow->pixmap_ref);
break;
case pwr_eType_AttrRef:
brow_CreateNode( brow->ctx, attr_name, nc,
dest, dest_code, (void *) this, 1, &node);
brow_SetAnnotPixmap( node, 0, brow->pixmap_attrref);
break;
case pwr_eType_Enum:
brow_CreateNode( brow->ctx, attr_name, nc,
dest, dest_code, (void *) this, 1, &node);
......
......@@ -148,7 +148,7 @@ static int wpkgnav_brow_cb( FlowCtx *ctx, flow_tEvent event)
brow_SelectClear( wpkgnav->brow->ctx);
brow_SetInverse( object, 1);
brow_SelectInsert( wpkgnav->brow->ctx, object);
if ( !brow_IsVisible( wpkgnav->brow->ctx, object))
if ( !brow_IsVisible( wpkgnav->brow->ctx, object, flow_eVisible_Full))
brow_CenterObject( wpkgnav->brow->ctx, object, 0.25);
if ( node_count)
free( node_list);
......@@ -184,7 +184,7 @@ static int wpkgnav_brow_cb( FlowCtx *ctx, flow_tEvent event)
brow_SelectClear( wpkgnav->brow->ctx);
brow_SetInverse( object, 1);
brow_SelectInsert( wpkgnav->brow->ctx, object);
if ( !brow_IsVisible( wpkgnav->brow->ctx, object))
if ( !brow_IsVisible( wpkgnav->brow->ctx, object, flow_eVisible_Full))
brow_CenterObject( wpkgnav->brow->ctx, object, 0.75);
if ( node_count)
free( node_list);
......@@ -262,7 +262,7 @@ static int wpkgnav_brow_cb( FlowCtx *ctx, flow_tEvent event)
brow_SelectClear( wpkgnav->brow->ctx);
brow_SetInverse( object, 1);
brow_SelectInsert( wpkgnav->brow->ctx, object);
if ( !brow_IsVisible( wpkgnav->brow->ctx, object))
if ( !brow_IsVisible( wpkgnav->brow->ctx, object, flow_eVisible_Full))
brow_CenterObject( wpkgnav->brow->ctx, object, 0.25);
free( node_list);
break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment