Commit 5007cbff authored by Claes Sjofors's avatar Claes Sjofors

Popup menu on attributes. Methods HelpClass, InsertSelectedObject and ChangeValue added.

parent 10ba5acd
......@@ -207,6 +207,214 @@ SObject pwrs:Class
Attr MethodName = "$Attribute-AnteMove"
EndBody
EndObject
Object ConfiguratorPasnn $Menu
Object Pointed $Menu
Object HelpClass $MenuButton
Body SysBody
Attr ButtonName = "Help Class"
Attr MethodName = "$Attribute-HelpClass"
Attr FilterName = "$Attribute-HelpClassFilter"
EndBody
EndObject
EndObject
EndObject
Object ConfiguratorPascn $Menu
Object Pointed $Menu
Object HelpClass $MenuButton
Body SysBody
Attr ButtonName = "Help Class"
Attr MethodName = "$Attribute-HelpClass"
Attr FilterName = "$Attribute-HelpClassFilter"
EndBody
EndObject
EndObject
EndObject
Object ConfiguratorPasos $Menu
Object Pointed $Menu
Object HelpClass $MenuButton
Body SysBody
Attr ButtonName = "Help Class"
Attr MethodName = "$Attribute-HelpClass"
Attr FilterName = "$Attribute-HelpClassFilter"
EndBody
EndObject
EndObject
EndObject
Object ConfiguratorPasas $Menu
Object Pointed $Menu
Object HelpClass $MenuButton
Body SysBody
Attr ButtonName = "Help Class"
Attr MethodName = "$Attribute-HelpClass"
Attr FilterName = "$Attribute-HelpClassFilter"
EndBody
EndObject
Object ChangeValue $MenuButton
Body SysBody
Attr ButtonName = "ChangeValue"
Attr MethodName = "$Attribute-ChangeValue"
Attr FilterName = "$Attribute-ChangeValueFilter"
EndBody
EndObject
EndObject
EndObject
Object ConfiguratorPason $Menu
Object Pointed $Menu
Object InsertSelectedObject $MenuButton
Body SysBody
Attr ButtonName = "Insert Selected Object"
Attr MethodName = "$Attribute-InsertSelectedObject"
Attr FilterName = "$Attribute-InsertSelectedObjectFilter"
EndBody
EndObject
Object HelpClass $MenuButton
Body SysBody
Attr ButtonName = "Help Class"
Attr MethodName = "$Attribute-HelpClass"
Attr FilterName = "$Attribute-HelpClassFilter"
EndBody
EndObject
EndObject
EndObject
Object ConfiguratorPasan $Menu
Object Pointed $Menu
Object InsertSelectedObject $MenuButton
Body SysBody
Attr ButtonName = "Insert Selected Object"
Attr MethodName = "$Attribute-InsertSelectedObject"
Attr FilterName = "$Attribute-InsertSelectedObjectFilter"
EndBody
EndObject
Object HelpClass $MenuButton
Body SysBody
Attr ButtonName = "Help Class"
Attr MethodName = "$Attribute-HelpClass"
Attr FilterName = "$Attribute-HelpClassFilter"
EndBody
EndObject
EndObject
EndObject
Object ConfiguratorPasmn $Menu
Object Pointed $Menu
Object HelpClass $MenuButton
Body SysBody
Attr ButtonName = "Help Class"
Attr MethodName = "$Attribute-HelpClass"
Attr FilterName = "$Attribute-HelpClassFilter"
EndBody
EndObject
EndObject
EndObject
Object ConfiguratorPasms $Menu
Object Pointed $Menu
Object HelpClass $MenuButton
Body SysBody
Attr ButtonName = "Help Class"
Attr MethodName = "$Attribute-HelpClass"
Attr FilterName = "$Attribute-HelpClassFilter"
EndBody
EndObject
EndObject
EndObject
Object NavigatorPasnn $Menu
Object Pointed $Menu
Object HelpClass $MenuButton
Body SysBody
Attr ButtonName = "Help Class"
Attr MethodName = "$Attribute-HelpClass"
Attr FilterName = "$Attribute-HelpClassFilter"
EndBody
EndObject
EndObject
EndObject
Object NavigatorPasos $Menu
Object Pointed $Menu
Object HelpClass $MenuButton
Body SysBody
Attr ButtonName = "Help Class"
Attr MethodName = "$Attribute-HelpClass"
Attr FilterName = "$Attribute-HelpClassFilter"
EndBody
EndObject
EndObject
EndObject
Object NavigatorPason $Menu
Object Pointed $Menu
Object HelpClass $MenuButton
Body SysBody
Attr ButtonName = "Help Class"
Attr MethodName = "$Attribute-HelpClass"
Attr FilterName = "$Attribute-HelpClassFilter"
EndBody
EndObject
EndObject
EndObject
Object NavigatorPasas $Menu
Object Pointed $Menu
Object HelpClass $MenuButton
Body SysBody
Attr ButtonName = "Help Class"
Attr MethodName = "$Attribute-HelpClass"
Attr FilterName = "$Attribute-HelpClassFilter"
EndBody
EndObject
EndObject
EndObject
Object NavigatorPasan $Menu
Object Pointed $Menu
Object HelpClass $MenuButton
Body SysBody
Attr ButtonName = "Help Class"
Attr MethodName = "$Attribute-HelpClass"
Attr FilterName = "$Attribute-HelpClassFilter"
EndBody
EndObject
EndObject
EndObject
Object NavigatorPasmn $Menu
Object Pointed $Menu
Object HelpClass $MenuButton
Body SysBody
Attr ButtonName = "Help Class"
Attr MethodName = "$Attribute-HelpClass"
Attr FilterName = "$Attribute-HelpClassFilter"
EndBody
EndObject
EndObject
EndObject
Object NavigatorPasms $Menu
Object Pointed $Menu
Object HelpClass $MenuButton
Body SysBody
Attr ButtonName = "Help Class"
Attr MethodName = "$Attribute-HelpClass"
Attr FilterName = "$Attribute-HelpClassFilter"
EndBody
EndObject
EndObject
EndObject
Object ConfiguratorPxsxx $Menu
Object Pointed $Menu
Object HelpClass $MenuButton
Body SysBody
Attr ButtonName = "Help Class"
Attr MethodName = "$Attribute-HelpClass"
Attr FilterName = "$Attribute-HelpClassFilter"
EndBody
EndObject
EndObject
EndObject
Object NavigatorPxsxx $Menu
Object Pointed $Menu
Object HelpClass $MenuButton
Body SysBody
Attr ButtonName = "Help Class"
Attr MethodName = "$Attribute-HelpClass"
Attr FilterName = "$Attribute-HelpClassFilter"
EndBody
EndObject
EndObject
EndObject
EndObject
EndSObject
......
......@@ -127,4 +127,7 @@
090306 cs wb Crossreferences on Co signals added.
090306 cs plc Default include in ra_plc_user.h added.
090507 cs adm In projectlist, the project name in a ProjectReg is changed, also the path is changed.
090507 cs wb Bugfix in directory wizard, for nodenames containing '-' NodeConfig object was not configured correctly.
\ No newline at end of file
090507 cs wb Bugfix in directory wizard, for nodenames containing '-' NodeConfig object was not configured correctly.
090515 cs wtt Ctrl/Doubleclick MB1 to insert selected object into an objid attribute also works on attrref attributes.
090515 cs wtt Popup menu on attributes. Methods HelpClass, InsertSelectedObject and ChangeValue added.
090515 cs wtt Bugfix in ConnectGraph method for PlantHier objects.
\ No newline at end of file
......@@ -20,9 +20,14 @@
/* wb_c_attribute.c -- work bench methods of the Attribute class. */
#include <string.h>
#include "pwr.h"
#include "co_api.h"
#include "wb_pwrs.h"
#include "wb_pwrs_msg.h"
#include "wb_ldh.h"
#include "wb_wtt.h"
#include "wb_session.h"
#include "wb_attribute.h"
static pwr_tStatus AnteCreate (
ldh_tSesContext Session,
......@@ -55,9 +60,173 @@ static pwr_tStatus AnteMove (
return PWRS__SUCCESS;
}
//
// Help for class of an object in wnav
//
static pwr_tStatus HelpClass( ldh_sMenuCall *ip)
{
pwr_tStatus sts;
int size;
pwr_tObjName cname;
pwr_tObjName vname;
pwr_tCmd cmd;
pwr_tTid tid;
pwr_tVid vid;
pwr_tObjName attr;
pwr_tAName oname;
char *namep;
char *s;
pwr_tAttrRef aref;
sts = ldh_GetAttrRefTid( ip->PointedSession, &ip->Pointed, &tid);
if ( EVEN(sts)) return sts;
if ( cdh_tidIsCid( tid)) {
sts = ldh_ClassIdToName( ip->PointedSession, tid, cname, sizeof(cname), &size);
if ( EVEN(sts)) return sts;
strcpy( attr, "");
}
else {
sts = ldh_AttrRefToName( ip->PointedSession, &ip->Pointed, ldh_eName_VolPath, &namep, &size);
if ( EVEN(sts)) return sts;
strcpy( oname, namep);
if ( (s = strrchr( oname, '.'))) {
strcpy( attr, s+1);
*s = 0;
}
else
return 0;
sts = ldh_NameToAttrRef( ip->PointedSession, oname, &aref);
if ( EVEN(sts)) return sts;
sts = ldh_GetAttrRefTid( ip->PointedSession, &aref, &tid);
if ( EVEN(sts)) return sts;
if ( !cdh_tidIsCid( tid))
return 0;
sts = ldh_ClassIdToName( ip->PointedSession, tid, cname, sizeof(cname), &size);
if ( EVEN(sts)) return sts;
}
if ( (s = strrchr( attr, '[')))
*s = 0;
vid = cdh_CidToVid(tid);
if ( cdh_cManufactClassVolMin <= vid && vid <= cdh_cManufactClassVolMax) {
/* Get help file for this volume */
sts = ldh_VolumeIdToName( ldh_SessionToWB(ip->PointedSession), vid, vname, sizeof(vname), &size);
if ( EVEN(sts)) return sts;
cdh_ToLower( vname, vname);
if ( strcmp( attr, "") == 0)
sprintf( cmd, "help %s /helpfile=\"$pwr_exe/%s/%s_xtthelp.dat\"/strict", cname,
lng_get_language_str(), vname);
else
sprintf( cmd, "help %s /helpfile=\"$pwr_exe/%s/%s_xtthelp.dat\"/bookmark=%s/strict", cname,
lng_get_language_str(), vname, attr);
ip->wnav->command( cmd);
return 1;
}
if ( cname[0] == '$') {
if ( strcmp( attr, "") == 0)
sprintf( cmd, "help %s /strict", &cname[1]);
else
sprintf( cmd, "help %s /bookmark=%s /strict", &cname[1], attr);
}
else {
if ( strcmp( attr, "") == 0)
sprintf( cmd, "help %s /strict", cname);
else
sprintf( cmd, "help %s /bookmark=%s/strict", cname, attr);
}
ip->wnav->command( cmd);
return 1;
}
static pwr_tStatus HelpClassFilter( ldh_sMenuCall *ip)
{
return 1;
}
//
// Set the selected objid or attrref as value
//
static pwr_tStatus InsertSelectedObject( ldh_sMenuCall *ip)
{
wb_session *sp = (wb_session *)ip->PointedSession;
wb_attribute a_pointed = sp->attribute( &ip->Pointed);
if ( !a_pointed) return a_pointed.sts();
switch ( a_pointed.tid()) {
case pwr_eType_Objid:
sp->writeAttribute( a_pointed, &ip->Selected->Objid);
if ( EVEN(sp->sts())) return sp->sts();
break;
case pwr_eType_AttrRef:
sp->writeAttribute( a_pointed, ip->Selected);
if ( EVEN(sp->sts())) return sp->sts();
break;
default:
return 0;
}
return 1;
}
static pwr_tStatus InsertSelectedObjectFilter( ldh_sMenuCall *ip)
{
wb_session *sp = (wb_session *)ip->PointedSession;
wb_attribute a_pointed = sp->attribute( &ip->Pointed);
if ( !a_pointed) return a_pointed.sts();
switch ( a_pointed.tid()) {
case pwr_eType_Objid:
case pwr_eType_AttrRef:
if ( ip->Pointed.Flags.b.Array)
return 0;
break;
default:
return 0;
}
return 1;
}
//
// Change value of pointed and selected attribute
//
static pwr_tStatus ChangeValue( ldh_sMenuCall *ip)
{
ip->wtt->keep_input_open = 1;
ip->wtt->open_change_value();
ip->wtt->disable_focus();
return 1;
}
static pwr_tStatus ChangeValueFilter( ldh_sMenuCall *ip)
{
return 1;
}
pwr_dExport pwr_BindMethods($Attribute) = {
pwr_BindMethod(AnteCreate),
pwr_BindMethod(AnteMove),
pwr_BindMethod(HelpClass),
pwr_BindMethod(HelpClassFilter),
pwr_BindMethod(InsertSelectedObject),
pwr_BindMethod(InsertSelectedObjectFilter),
pwr_BindMethod(ChangeValue),
pwr_BindMethod(ChangeValueFilter),
pwr_NullMethod
};
......
......@@ -67,37 +67,7 @@
pwr_dImport pwr_BindClasses(System);
pwr_dImport pwr_BindClasses(Base);
#if NOT_YET_IMPLEMENTED
static ldh_sMenuItem ldh_lMenuItem[100];
static int ldh_gLog_a = 0;
static int ldh_gLog_b = 0;
static int ldh_gLog_c = 0;
static struct {
pwr_tString32 Name;
ldh_eUtility Value;
} ldh_lUtility[] = {
{"__", ldh_eUtility__},
{"Navigator", ldh_eUtility_Navigator},
{"Configurator", ldh_eUtility_Configurator},
{"-", ldh_eUtility_}
};
static struct {
pwr_tString32 Name;
pwr_tChar Char;
ldh_eMenuSet Value;
} ldh_lMenuSet[] = {
{"__", '\0', ldh_eMenuSet__},
{"Attribute", 'a', ldh_eMenuSet_Attribute},
{"Class", 'c', ldh_eMenuSet_Class},
{"Many", 'm', ldh_eMenuSet_Many},
{"None", 'n', ldh_eMenuSet_None},
{"Object", 'o', ldh_eMenuSet_Object},
{"-", '\0', ldh_eMenuSet_}
};
#endif
/*
Open a db volume.
*/
......
......@@ -51,7 +51,7 @@ static struct {
{"None", 'n', ldh_eMenuSet_None},
{"Object", 'o', ldh_eMenuSet_Object},
{"ObjectAttr", 'o', ldh_eMenuSet_ObjectAttr},
{"Array", 'y', ldh_eMenuSet_Array},
{"Array", 'a', ldh_eMenuSet_Array},
{"-", '\0', ldh_eMenuSet_}
};
......@@ -637,6 +637,32 @@ pwr_tStatus wb_session::getMenu( ldh_sMenuCall *ip)
o->unref();
break;
}
case ldh_eMenuSet_Attribute:
case ldh_eMenuSet_Array: {
sprintf(Menu, "pwrs:Class-$Attribute-%s-Pointed", MenuFolder);
wb_cdrep *cdrep = m_vrep->merep()->cdrep( &sts, pwr_eClass_Param);
if ( EVEN(sts)) return sts;
wb_orep *o = m_vrep->erep()->object( &sts, Menu);
if ( EVEN(sts)) return sts;
o->ref();
Object = o->oid();
void *o_menu_body;
wb_orep *o_menu = cdrep->menuFirst( &sts, o, &o_menu_body);
while ( ODD(sts)) {
o_menu->ref();
getAllMenuItems( ip, &Item, cdrep, o_menu, o_menu_body, 0, &nItems, 0);
wb_orep *prev = o_menu;
o_menu = cdrep->menuAfter( &sts, o_menu, &o_menu_body);
prev->unref();
}
delete cdrep;
o->unref();
break;
}
case ldh_eMenuSet_Class: {
sprintf(Menu, "pwrs:Class-$Object-%s-Pointed", MenuFolder);
......
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