rendered paste body/*
* Call "talk" method
*/
void b_verse_talk(struct VNode *vnode)
{
char text[160];
text[0]='\0';
if(sbutton(text, 0, 160, "Say:")) {
waitcursor(1);
printf("saying %s\n", text);
waitcursor(0);
}
}
/*************************/
else if(te->idcode==ID_VN) {
struct VNode *vnode = (VNode*)te->directdata;
if (vnode->type==V_NT_OBJECT || vnode->type==V_NT_BITMAP) {
char subscribed = 0;
if((vnode->type==V_NT_OBJECT) && (((VObjectData*)vnode->data)->object!=NULL))
subscribed = 1;
if((vnode->type==V_NT_BITMAP) && (((VBitmapData*)vnode->data)->image!=NULL))
subscribed = 1;
if(subscribed==1)
event = pupmenu("VerseNode %t| Unsubscribe %x2");
else {
int has_methods = 0;
if(vnode->methodgroups.first) {
struct VMethodGroup *vmg;
struct VMethod *vm;
for(vmg= vnode->methodgroups.first; vmg; vmg= vmg->next) {
for(vm=vmg->methods.first; vm; vm= vm->next) {
if(strcmp(vm->name, "talk")==0) {
has_methods=1;
break;
}
}
if(has_methods) break;
}
}
if(has_methods)
event = pupmenu("VerseNode %t| Subscribe %x1| Talk %x3");
else
event = pupmenu("VerseNode %t| Subscribe %x1");
}
switch(event) {
case 1:
b_verse_pop_node(vnode);
break;
case 2:
/* Global */
b_verse_unsubscribe(vnode);
break;
case 3:
b_verse_talk(vnode);
break;
}
}
}