[gme-users] Passing user data in for events.
Peter Volgyesi
peter.volgyesi at vanderbilt.edu
Wed Dec 7 08:52:17 CST 2005
I suggest to use the registry feature (FCOs and folders have their own
registry trees) as a workaround. This is also a hack and only a bit nicer
(?).
--
Peter Volgyesi
Vanderbilt University, ISIS
> -----Original Message-----
> From: gme-users-bounces at list.isis.vanderbilt.edu
> [mailto:gme-users-bounces at list.isis.vanderbilt.edu] On Behalf
> Of Daniel Waddington
> Sent: Wednesday, December 07, 2005 7:39 AM
> To: A list for GME users to share thoughts and discuss bugs and fixes.
> Subject: Re: [gme-users] Passing user data in for events.
>
> Thanks Peter,
>
> Any idea how I can easily pass a string through with the
> event. I am currently using the projects version field - mega hack!!!
>
> Daniel.
>
> On Dec 6, 2005, at 5:05 PM, Peter Volgyesi wrote:
>
> > Daniel,
> >
> > The current implementation of the MGA library does not pass the
> > associated value to add-ons (it passes a null value). So,
> this feature
> > can be used only with "regular" territory based event
> handlers at this
> > moment (interpreters, plug-ins). Do you really use/need the add-on
> > interface on the receiver side ?
> >
> > If you have the source code of GME you can check out the relevant C+
> > + code
> > in MgaFCO.cpp (gme/mga folder) in HRESULT FCO::objrwnotify() (line
> > 813):
> >
> > COMTHROW(t->handler->ObjectEvent(tt, mmask, nil));
> >
> > Sorry for the bad news.
> >
> > --
> > Peter Volgyesi
> > Vanderbilt University, ISIS
> >
> >> -----Original Message-----
> >> From: gme-users-bounces at list.isis.vanderbilt.edu
> >> [mailto:gme-users-bounces at list.isis.vanderbilt.edu] On Behalf Of
> >> Daniel Waddington
> >> Sent: Monday, December 05, 2005 8:06 AM
> >> To: A list for GME users to share thoughts and discuss bugs and
> >> fixes.
> >> Subject: Re: [gme-users] Passing user data in for events.
> >>
> >> Hi Zoli,
> >>
> >> I check the variant at the client side before SendEvent by
> checking
> >> CurrentAssociation; it seems to set up fine. On the
> receiver (GME)
> >> side, the object raising the event in objectEventPerformed is
> >> definitely the "Root Folder" object, but VARIANT v is always empty.
> >> I checked the associated value with f->getFolderI()-
> >>> get_CurrentAssociation(&var), but this is also empty.
> >>
> >> Any ideas how I can proceed? I wonder if it is some .NET
> COM wrapper
> >> thing that is screwing something up??
> >>
> >> Thanks,
> >> Daniel.
> >>
> >> On Dec 2, 2005, at 6:56 PM, Zoltan Molnar wrote:
> >>
> >>> I tried in a Raw COM interpreter (not /CLR compiled
> >> project), and it
> >>> goes on the "Equal branch".
> >>>
> >>> Br,Zoli
> >>>
> >>> STDMETHODIMP RawComponent::InvokeEx( IMgaProject
> *project, IMgaFCO
> >>> *currentobj,
> >>>
> >>> IMgaFCOs *selectedobjs, long param) {
> >>> COMTRY {
> >>> if(interactive) {
> >>> CComBSTR projname;
> >>> CComBSTR focusname = "<nothing>";
> >>> CComPtr<IMgaTerritory> terr;
> >>> COMTHROW(project->CreateTerritory(NULL, &terr));
> >>> COMTHROW(project->BeginTransaction(terr));
> >>> try {
> >>> COMTHROW(project->get_Name(&projname));
> >>>
> >>> CComPtr<IMgaFolder> fld;
> >>> COMTHROW( project->get_RootFolder( &fld));
> >>> if( fld)
> >>> {
> >>> CComBSTR var( L"EXTRADATA");
> >>> CComVariant var2( var);
> >>> //fld->Associate( var2);
> >>> terr->Associate( fld, var2);
> >>>
> >>> CComVariant extr_var2;
> >>> fld->get_CurrentAssociation(
> >>> &extr_var2);
> >>> CComBSTR extr_var;
> >>> extr_var2.CopyTo( &extr_var);
> >>>
> >>> if( extr_var && extr_var.Length() ==
> >>> var.Length() && extr_var.operator ==( var))
> >>> {
> >>> int i = 0;
> >>> ++i;
> >>> AfxMessageBox( "Equal,
> so it is working");
> >>> }
> >>> else
> >>> AfxMessageBox( "Not
> equal. It is NOT working !!!");
> >>> }
> >>> COMTHROW(project->CommitTransaction());
> >>> } catch(...) { project->AbortTransaction(); throw;
> >>> }
> >>>
> >>> }
> >>> } COMCATCH(;);
> >>> }
> >>>
> >>>> -----Original Message-----
> >>>> From: gme-users-bounces at list.isis.vanderbilt.edu
> >>>> [mailto:gme-users-bounces at list.isis.vanderbilt.edu] On Behalf Of
> >>>> Daniel Waddington
> >>>> Sent: Friday, December 02, 2005 2:39 PM
> >>>> To: gme-users
> >>>> Subject: Re: [gme-users] Passing user data in for events.
> >>>>
> >>>>
> >>>> Zoli,
> >>>>
> >>>> I did try this and VARIANT v is still empty - do I need to do
> >>>> something else to get hold of it?
> >>>>
> >>>> Thanks,
> >>>> Daniel.
> >>>>
> >>>> Zoltan Molnar wrote:
> >>>>> Please try to use
> >>>>>
> >>>>> gme.RootFolder.Associate( filename);
> >>>>>
> >>>>> Instead of
> >>>>>
> >>>>>
> >>>>>> terr.Associate((MGALib.MgaObject)gme.RootFolder,filename);
> >>>>>
> >>>>>
> >>>>> Br, Zoli
> >>>>>
> >>>>>
> >>>>>> -----Original Message-----
> >>>>>> From: gme-users-bounces at list.isis.vanderbilt.edu
> >>>>>> [mailto:gme-users-bounces at list.isis.vanderbilt.edu] On
> Behalf Of
> >>>>>> Daniel Waddington
> >>>>>> Sent: Friday, December 02, 2005 2:10 PM
> >>>>>> To: gme-users
> >>>>>> Subject: [gme-users] Passing user data in for events.
> >>>>>>
> >>>>>>
> >>>>>> Hi,
> >>>>>>
> >>>>>> I am using a .NET object to trigger an event on a Root Folder
> >>>>>> object through the IMgaProject interface. But I can't
> >> seem to get
> >>>>>> the VARIANT param filled in on the AddOn side (which
> is handling
> >>>>>> the event).
> >>>>>>
> >>>>>> this is what I do...
> >>>>>>
> >>>>>> gme.BeginTransaction
> >>>>>> (terr,MGALib.transactiontype_enum,.TRANSACTION_GENERAL);
> >>>>>> gme.CreateTerritory(null, out terr, null);
> >>>>>>
> >>>>>> string userdata = "hello";
> >>>>>> terr.Associate((MGALib.MgaObject)gme.RootFolder,filename);
> >>>>>>
> >>>>>> gme.RootFolder.SendEvent(0x00010000);
> >>>>>> gme.CommitTransaction();
> >>>>>>
> >>>>>> But on the other side the variant is empty. What am I do wrong?
> >>>>>>
> >>>>>> Thanks,
> >>>>>> Daniel.
> >>>>>>
> >>>> _______________________________________________
> >>>> gme-users mailing list
> >>>> gme-users at list.isis.vanderbilt.edu
> >>>> http://list.isis.vanderbilt.edu/mailman/listinfo/gme-users
> >>>>
> >>> _______________________________________________
> >>> gme-users mailing list
> >>> gme-users at list.isis.vanderbilt.edu
> >>> http://list.isis.vanderbilt.edu/mailman/listinfo/gme-users
> >>
> >> ===============================
> >> Dr. Daniel G. Waddington
> >> Lockheed Martin ATL
> >> 3 Executive Campus, 6th Floor
> >> Cherry Hill, NJ 08002
> >> Tel:856 792 9740
> >> ===============================
> >>
> >>
> >>
> >>
> >> _______________________________________________
> >> gme-users mailing list
> >> gme-users at list.isis.vanderbilt.edu
> >> http://list.isis.vanderbilt.edu/mailman/listinfo/gme-users
> >
> > _______________________________________________
> > gme-users mailing list
> > gme-users at list.isis.vanderbilt.edu
> > http://list.isis.vanderbilt.edu/mailman/listinfo/gme-users
>
> ===============================
> Dr. Daniel G. Waddington
> Lockheed Martin ATL
> 3 Executive Campus, 6th Floor
> Cherry Hill, NJ 08002
> Tel:856 792 9740
> ===============================
>
>
>
>
> _______________________________________________
> gme-users mailing list
> gme-users at list.isis.vanderbilt.edu
> http://list.isis.vanderbilt.edu/mailman/listinfo/gme-users
More information about the gme-users
mailing list