[commit] r1840 - in trunk: Install SDK/Decorator Examples
GMESRC Repository Notifications
gme-commit at list.isis.vanderbilt.edu
Fri Feb 24 09:53:46 CST 2012
Author: ksmyth
Date: Fri Feb 24 09:53:46 2012
New Revision: 1840
Log:
Add a sample C# decorator to installer
Added:
trunk/SDK/Decorator Examples/SampleDecorator.cs
Modified:
trunk/Install/GME_SDK.wxs
Modified: trunk/Install/GME_SDK.wxs
==============================================================================
--- trunk/Install/GME_SDK.wxs Fri Feb 24 09:53:35 2012 (r1839)
+++ trunk/Install/GME_SDK.wxs Fri Feb 24 09:53:46 2012 (r1840)
@@ -1300,6 +1300,12 @@
</Component>
</DirectoryRef>
+ <DirectoryRef Id="INSTALLDIR_SDK_DECORATOREXAMPLES">
+ <Component>
+ <File Source="..\SDK\Decorator Examples\SampleDecorator.cs" />
+ </Component>
+ </DirectoryRef>
+
<DirectoryRef Id="INSTALLDIR_SDK_DOTNET">
<Component Id="CSharpComponentWizard.exe" Guid="DB3B2614-7590-4F6D-8BCA-AEB8EB9A47FC">
<File Id="CSharpComponentWizard.exe" Source="..\SDK\DotNet\CSharpComponentWizard\bin\Release\CSharpComponentWizard.exe"/>
Added: trunk/SDK/Decorator Examples/SampleDecorator.cs
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ trunk/SDK/Decorator Examples/SampleDecorator.cs Fri Feb 24 09:53:46 2012 (r1840)
@@ -0,0 +1,233 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Runtime.InteropServices;
+using System.Drawing;
+
+// This sample decorator draws the label and a black outline
+// You must change the ProgId and Guid below
+// (To generate a new Guid in Visual Studio, select Tools>Create Guid, Select format 5 and press Copy)
+
+namespace GMEDecorator
+{
+ [Guid("7A5231C3-ED23-4E4F-906F-E2EE67D5B62F"),
+ ProgId("MGA.SampleDecorator"),
+ ClassInterface(ClassInterfaceType.AutoDual)]
+ [ComVisible(true)]
+ public class Decorator : GME.IMgaElementDecorator
+ {
+ #region IMgaElementDecorator Members
+
+ public void Destroy()
+ {
+ this.MgaObject = null;
+ this.Project = null;
+ this.MetaPart = null;
+ }
+
+ public void DragEnter(out uint dropEffect, ulong pCOleDataObject, uint keyState, int pointx, int pointy, ulong transformHDC)
+ {
+ dropEffect = 0;
+ }
+
+ public void DragOver(out uint dropEffect, ulong pCOleDataObject, uint keyState, int pointx, int pointy, ulong transformHDC)
+ {
+ dropEffect = 0;
+ }
+
+ public void Draw(uint hdc)
+ {
+ Graphics g;
+ unchecked { g = Graphics.FromHdc((IntPtr)(int)hdc); }
+ using (g)
+ {
+ g.DrawRectangle(new Pen(Color.Black), Position);
+ g.DrawString(Label, LabelFont, new SolidBrush(Color.Black), new PointF(LabelLocation.Left, LabelLocation.Top));
+ }
+ }
+
+ public void DrawEx(uint hdc, ulong gdip)
+ {
+ Draw(hdc);
+ }
+
+ public void Drop(ulong pCOleDataObject, uint dropEffect, int pointx, int pointy, ulong transformHDC)
+ {
+ }
+
+ public void DropFile(ulong hDropInfo, int pointx, int pointy, ulong transformHDC)
+ {
+ }
+
+ public void GetFeatures(out uint features)
+ {
+ features = 0;
+ }
+
+ public string Label
+ {
+ get;
+ set;
+ }
+
+ public Font LabelFont
+ {
+ get { return new Font("Arial", 12); }
+ }
+
+ public Rectangle LabelLocation { get; set; }
+ public void GetLabelLocation(out int sx, out int sy, out int ex, out int ey)
+ {
+ sx = LabelLocation.Left;
+ sy = LabelLocation.Top;
+ ex = LabelLocation.Width;
+ ey = LabelLocation.Height;
+ }
+
+ public void GetLocation(out int sx, out int sy, out int ex, out int ey)
+ {
+ sx = Position.Left;
+ sy = Position.Top;
+ ex = Position.Width;
+ ey = Position.Height;
+ }
+
+ public void GetMnemonic(out string mnemonic)
+ {
+ throw new NotImplementedException();
+ }
+
+ public void GetParam(string Name, out object value)
+ {
+ throw new NotImplementedException();
+ }
+
+ public void GetPortLocation(GME.MGA.MgaFCO fco, out int sx, out int sy, out int ex, out int ey)
+ {
+ throw new NotImplementedException();
+ }
+
+ public GME.MGA.MgaFCOs GetPorts()
+ {
+ return (GME.MGA.MgaFCOs)Activator.CreateInstance(Type.GetTypeFromProgID("MGA.MgaFCOs"));
+ }
+
+ public void GetPreferredSize(out int sizex, out int sizey)
+ {
+ // TODO
+ sizex = 150;
+ sizey = 150;
+ }
+
+ public void Initialize(GME.MGA.MgaProject p, GME.MGA.Meta.MgaMetaPart meta, GME.MGA.MgaFCO obj)
+ {
+ InitializeEx(p, meta, obj, null, 0);
+ }
+
+ //GME.MGA.MgaProject
+ public GME.MGA.MgaProject Project { get; set; }
+ public GME.MGA.Meta.MgaMetaPart MetaPart { get; set; }
+ // Object is null when the decorator is drawing an element in the Part Browser
+ public GME.MGA.MgaFCO MgaObject { get; set; }
+ IntPtr parentHwnd;
+ SizeF LabelSize;
+ public void InitializeEx(GME.MGA.MgaProject p, GME.MGA.Meta.MgaMetaPart meta, GME.MGA.MgaFCO obj, GME.IMgaCommonDecoratorEvents eventSink, ulong parentWnd)
+ {
+ Project = p;
+ MetaPart = meta;
+ MgaObject = obj;
+ unchecked { parentHwnd = (IntPtr)(int)parentWnd; }
+
+ if (MgaObject != null)
+ Label = MgaObject.Name;
+ else
+ Label = MetaPart.DisplayedName;
+ using (Graphics g = Graphics.FromHwnd(parentHwnd))
+ {
+ LabelSize = g.MeasureString(Label, LabelFont);
+ }
+ }
+
+ public void MenuItemSelected(uint menuItemId, uint nFlags, int pointx, int pointy, ulong transformHDC)
+ {
+ }
+
+ public void MouseLeftButtonDoubleClick(uint nFlags, int pointx, int pointy, ulong transformHDC)
+ {
+ }
+
+ public void MouseLeftButtonDown(uint nFlags, int pointx, int pointy, ulong transformHDC)
+ {
+ }
+
+ public void MouseLeftButtonUp(uint nFlags, int pointx, int pointy, ulong transformHDC)
+ {
+ }
+
+ public void MouseMiddleButtonDoubleClick(uint nFlags, int pointx, int pointy, ulong transformHDC)
+ {
+ }
+
+ public void MouseMiddleButtonDown(uint nFlags, int pointx, int pointy, ulong transformHDC)
+ {
+ }
+
+ public void MouseMiddleButtonUp(uint nFlags, int pointx, int pointy, ulong transformHDC)
+ {
+ }
+
+ public void MouseMoved(uint nFlags, int pointx, int pointy, ulong transformHDC)
+ {
+ }
+
+ public void MouseRightButtonDoubleClick(uint nFlags, int pointx, int pointy, ulong transformHDC)
+ {
+ }
+
+ public void MouseRightButtonDown(ulong hCtxMenu, uint nFlags, int pointx, int pointy, ulong transformHDC)
+ {
+ }
+
+ public void MouseRightButtonUp(uint nFlags, int pointx, int pointy, ulong transformHDC)
+ {
+ }
+
+ public void MouseWheelTurned(uint nFlags, int distance, int pointx, int pointy, ulong transformHDC)
+ {
+ }
+
+ public void OperationCanceled()
+ {
+ }
+
+ public void SaveState()
+ {
+ }
+
+ public void SetActive(bool isActive)
+ {
+ }
+
+ public System.Drawing.Rectangle Position { get; set; }
+ public void SetLocation(int sx, int sy, int ex, int ey)
+ {
+ Position = new System.Drawing.Rectangle(sx, sy, ex - sx - 1, ey - sy - 1);
+ LabelLocation = new Rectangle(Position.Left + (Position.Width / 2) - ((int)LabelSize.Width / 2),
+ Position.Bottom + 5,
+ (int)LabelSize.Width,
+ (int)LabelSize.Height + 5);
+ }
+
+ public void SetParam(string Name, object value)
+ {
+ }
+
+ public bool Selected { get; set; }
+ public void SetSelected(bool isSelected)
+ {
+ Selected = isSelected;
+ }
+
+ #endregion
+ }
+}
More information about the gme-commit
mailing list