<br><font size=2 face="sans-serif">Hi Vamshi,</font>
<br>
<br><font size=2 face="sans-serif">I am glad to hear that you are enjoying
playing with GME and I wish you all the best for the project. As for using
the models directly I would recommend using a high-level interface such
as BON2, UDM. These are high-level stl based C++ API's to access, modify
and create models. If you like Java you might want to consider JBON.</font>
<br>
<br><font size=2 face="sans-serif">Thanks,</font>
<br><font size=2 face="sans-serif">Adi<br>
</font>
<br><font size=2 face="sans-serif">-----------------------------------<br>
Aditya Agrawal<br>
Researcher<br>
IBM T. J. Watson<br>
mailto:aagrawa@us.ibm.com<br>
+1 (914) 784-6068 (TL 863)<br>
</font>
<br>
<br><font size=2><tt>gme-users-bounces@list.isis.vanderbilt.edu wrote on
04/22/2005 02:15:22 PM:<br>
<br>
&gt; Thanks a lot for such a responsive and useful list! I must say I'm
<br>
&gt; enjoying tinkering with GME the past few months.<br>
&gt; I'm considering using it to build a prototype <br>
&gt; music-authoring/content-management tool, which supports arbitrarily
<br>
&gt; complex end-user programming/configuration at different abstraction
<br>
&gt; levels (composition level, sensor level, signal level) via <br>
&gt; metaprogramming ... im interested in using Windows.Forms as I would
like <br>
&gt; the GUI to be web based (to facilitate community driven activities
like <br>
&gt; sharing, referencing, composition and specialization of music building
<br>
&gt; blocks a.k.a &quot;licks&quot;). GME and VSTS Team System (esp features
like the <br>
&gt; DSL environment supposedly in the 2005 Beta 2) seemed like good starting
<br>
&gt; points. I haven't had the chance to try VSTS yet, and there is interest
<br>
&gt; in GME here at McGill (I was referred to it by Hans Vangheluwe).<br>
&gt; Would having a web based interface require me to relinquish using
the <br>
&gt; GME GUI altogether and operate at the MGA library level? Or is there
a <br>
&gt; way out?<br>
&gt; Anyway, it's been GReAT so far (sure u'r used to that now :D), thanks
<br>
&gt; for the help and any pointers would be greatly appreciated.<br>
&gt; Thanks!<br>
&gt; -Vamshi<br>
&gt; <br>
&gt; Peter Volgyesi wrote:<br>
&gt; <br>
&gt; &gt;Hi,<br>
&gt; &gt;<br>
&gt; &gt;Although you can implement custom decorators as managed &nbsp;components,
you<br>
&gt; &gt;will encounter several minor problems. &nbsp;Our idl files (type
libraries) are<br>
&gt; &gt;not tested rigorously with managed code. You can overcome many
of the<br>
&gt; &gt;problems by disassembling the generated (tlbimp) wrappers, slighlty
modify<br>
&gt; &gt;them and reassemble again.<br>
&gt; &gt;I've attached the most basic custom decorator I could come up
with. Even for<br>
&gt; &gt;this one, I had to modify the MgaDecorator and Mga wrappers and
change<br>
&gt; &gt; - the MgaFCOs class to have a public (not assembly) constructor<br>
&gt; &gt; - the IMgaDecorator:Draw method to pass the hDC parameter as
an int32 value<br>
&gt; &gt;<br>
&gt; &gt;--<br>
&gt; &gt;Peter Volgyesi<br>
&gt; &gt;ISIS, Vanderbilt University<br>
&gt; &gt;<br>
&gt; &gt; &nbsp;<br>
&gt; &gt;<br>
&gt; &gt;&gt;-----Original Message-----<br>
&gt; &gt;&gt;From: gme-users-bounces@list.isis.vanderbilt.edu <br>
&gt; &gt;&gt;[mailto:gme-users-bounces@list.isis.vanderbilt.edu] On Behalf
<br>
&gt; &gt;&gt;Of Vamshi Raghu<br>
&gt; &gt;&gt;Sent: Thursday, April 21, 2005 4:54 PM<br>
&gt; &gt;&gt;To: gme-users@list.isis.vanderbilt.edu<br>
&gt; &gt;&gt;Subject: [gme-users] Decorators in Windows.Forms.<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;Hi!<br>
&gt; &gt;&gt;Can a decorator be written using &quot;managed&quot; components?
If so, <br>
&gt; &gt;&gt;any pointers to information on where to find out how to <br>
&gt; &gt;&gt;expose the .NET equivalent of a custom control as a COM <br>
&gt; &gt;&gt;component implementing IMgaDecorator? Is there a <br>
&gt; &gt;&gt;gme-developers list or equivalent?<br>
&gt; &gt;&gt;Thanks in advance!<br>
&gt; &gt;&gt;-Vamshi<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;_______________________________________________<br>
&gt; &gt;&gt;gme-users mailing list<br>
&gt; &gt;&gt;gme-users@list.isis.vanderbilt.edu<br>
&gt; &gt;&gt;http://list.isis.vanderbilt.edu/mailman/listinfo/gme-users<br>
&gt; &gt;&gt; &nbsp; &nbsp;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;------------------------------------------------------------------------<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;using System;<br>
&gt; &gt;&gt;using MGADECORATORLib;<br>
&gt; &gt;&gt;using MGALib;<br>
&gt; &gt;&gt;using System.Windows.Forms;<br>
&gt; &gt;&gt;using System.Drawing;<br>
&gt; &gt;&gt;using System.Drawing.Drawing2D;<br>
&gt; &gt;&gt;using System.Drawing.Imaging;<br>
&gt; &gt;&gt;using System.Drawing.Text;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;namespace Decorators<br>
&gt; &gt;&gt;{<br>
&gt; &gt;&gt; &nbsp; /// &lt;summary&gt;<br>
&gt; &gt;&gt; &nbsp; /// Summary description for NETDecorator.<br>
&gt; &gt;&gt; &nbsp; /// &lt;/summary&gt;<br>
&gt; &gt;&gt; &nbsp; public class NETDecorator : IMgaDecorator<br>
&gt; &gt;&gt; &nbsp; {<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;public NETDecorator()<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;{<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; //<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; // TODO: Add constructor logic
here<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; //<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;}<br>
&gt; &gt;&gt; &nbsp; <br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;#region IMgaDecorator Members<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;public void GetLabelLocation(out int
sx, out int sy, out int<br>
&gt; ex, out int ey)<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;{<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; // TODO: &nbsp;Add NETDecorator.GetLabelLocation
implementation<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; sx = 0;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; sy = 0;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; ex = 0;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; ey = 0;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;}<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;public void GetFeatures(out uint features)<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;{<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; // TODO: &nbsp;Add NETDecorator.GetFeatures
implementation<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; features = 0;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;}<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;public void SetLocation(int sx, int sy,
int ex, int ey)<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;{<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; m_sx = sx;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; m_sy = sy;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; m_ex = ex;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; m_ey = ey;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;}<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;public void SetActive(bool isActive)<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;{<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; // TODO: &nbsp;Add NETDecorator.SetActive
implementation<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;}<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;public void SetParam(string Name, object
Value)<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;{<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; // TODO: &nbsp;Add NETDecorator.SetParam
implementation<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;}<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;public void Destroy()<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;{<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; // TODO: &nbsp;Add NETDecorator.Destroy
implementation<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;}<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;public void GetLocation(out int sx, out
int sy, out int ex, <br>
&gt; out int ey)<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;{<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; // TODO: &nbsp;Add NETDecorator.GetLocation
implementation<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; sx = m_sx;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; sy = m_sy;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; ex = m_ex;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; ey = m_ey;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;}<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;public void GetPortLocation(MGADECORATORLib.IMgaFCO
FCO, out<br>
&gt; int sx, out int sy, out int ex, out int ey)<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;{<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; // TODO: &nbsp;Add NETDecorator.GetPortLocation
implementation<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; sx = 0;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; sy = 0;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; ex = 0;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; ey = 0;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;}<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;public void Initialize(MGADECORATORLib.IMgaProject
Project, <br>
&gt; IMgaMetaPart Meta, MGADECORATORLib.IMgaFCO obj)<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;{<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; // TODO: &nbsp;Add NETDecorator.Initialize
implementation<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;}<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;public void GetMnemonic(out string mnemonic)<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;{<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; // TODO: &nbsp;Add NETDecorator.GetMnemonic
implementation<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; mnemonic = &quot;NETDecorator&quot;;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;}<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;public void GetParam(string Name, out
object Value)<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;{<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; // TODO: &nbsp;Add NETDecorator.GetParam
implementation<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; Value = null;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;}<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;public MGADECORATORLib.IMgaFCOs GetPorts()<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;{<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; // TODO: &nbsp;Add NETDecorator.GetPorts
implementation<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; MGADECORATORLib.IMgaFCOs ports
= (MGADECORATORLib.<br>
&gt; IMgaFCOs)new MGALib.MgaFCOsClass();<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; return ports;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;}<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;public void SaveState()<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;{<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; // TODO: &nbsp;Add NETDecorator.SaveState
implementation<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;}<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;public void Draw(System.Int32 hdc)<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;{<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; Graphics g = Graphics.FromHdc((System.IntPtr)hdc);<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; Pen blackPen = new Pen(Color.Black,
3);<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; g.DrawRectangle(blackPen, m_sx,
m_sy, m_ex-m_sx, m_ey-m_sy);<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; g.Dispose();<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;}<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;public void GetPreferredSize(out int
sizex, out int sizey)<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;{<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; // TODO: &nbsp;Add NETDecorator.GetPreferredSize
implementation<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; sizex = 100;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; sizey = 100;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;}<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;#endregion<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;private int m_sx;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;private int m_sy;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;private int m_ex;<br>
&gt; &gt;&gt; &nbsp; &nbsp; &nbsp;private int m_ey;<br>
&gt; &gt;&gt; &nbsp; }<br>
&gt; &gt;&gt;}<br>
&gt; &gt;&gt; &nbsp; &nbsp;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;------------------------------------------------------------------------<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;_______________________________________________<br>
&gt; &gt;&gt;gme-users mailing list<br>
&gt; &gt;&gt;gme-users@list.isis.vanderbilt.edu<br>
&gt; &gt;&gt;http://list.isis.vanderbilt.edu/mailman/listinfo/gme-users<br>
&gt; &gt;&gt; &nbsp; &nbsp;<br>
&gt; &gt;&gt;<br>
&gt; <br>
&gt; <br>
&gt; _______________________________________________<br>
&gt; gme-users mailing list<br>
&gt; gme-users@list.isis.vanderbilt.edu<br>
&gt; http://list.isis.vanderbilt.edu/mailman/listinfo/gme-users<br>
</tt></font>