[commit] r2011 - in trunk/SDK/DotNet/CSharpComponentWizard/Templates: . CSharpAddon

GMESRC Repository Notifications gme-commit at list.isis.vanderbilt.edu
Tue Aug 14 14:27:26 CDT 2012


Author: ksmyth
Date: Tue Aug 14 14:27:25 2012
New Revision: 2011

Log:
Set up GMEConsole. Disable Addon during xme import and library attach

Modified:
   trunk/SDK/DotNet/CSharpComponentWizard/Templates/CSharpAddon.zip
   trunk/SDK/DotNet/CSharpComponentWizard/Templates/CSharpAddon/MyAddon.cs
   trunk/SDK/DotNet/CSharpComponentWizard/Templates/rezip.sh

Modified: trunk/SDK/DotNet/CSharpComponentWizard/Templates/CSharpAddon.zip
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/SDK/DotNet/CSharpComponentWizard/Templates/CSharpAddon/MyAddon.cs
==============================================================================
--- trunk/SDK/DotNet/CSharpComponentWizard/Templates/CSharpAddon/MyAddon.cs	Tue Aug 14 14:27:08 2012	(r2010)
+++ trunk/SDK/DotNet/CSharpComponentWizard/Templates/CSharpAddon/MyAddon.cs	Tue Aug 14 14:27:25 2012	(r2011)
@@ -19,6 +19,8 @@
 
         private MgaAddOn addon;
         private bool componentEnabled = true;
+        private bool handleEvents = true;
+        GMEConsole GMEConsole { get; set; }
 
         // Event handlers for addons
         #region MgaEventSink members
@@ -26,9 +28,37 @@
         {
             if (@event == globalevent_enum.GLOBALEVENT_CLOSE_PROJECT)
             {
+                if (GMEConsole != null)
+                {
+                    if (GMEConsole.gme != null)
+                    {
+                        Marshal.FinalReleaseComObject(GMEConsole.gme);
+                    }
+                    GMEConsole = null;
+                }
                 Marshal.FinalReleaseComObject(addon);
                 addon = null;
             }
+            if (@event == globalevent_enum.APPEVENT_XML_IMPORT_BEGIN)
+            {
+                handleEvents = false;
+                addon.EventMask = 0;
+            }
+            else if (@event == globalevent_enum.APPEVENT_XML_IMPORT_END)
+            {
+                unchecked { addon.EventMask = (uint)ComponentConfig.eventMask; }
+                handleEvents = true;
+            }
+            else if (@event == globalevent_enum.APPEVENT_LIB_ATTACH_BEGIN)
+            {
+                addon.EventMask = 0;
+                handleEvents = false;
+            }
+            else if (@event == globalevent_enum.APPEVENT_LIB_ATTACH_END)
+            {
+                unchecked { addon.EventMask = (uint)ComponentConfig.eventMask; }
+                handleEvents = true;
+            }
             if (!componentEnabled)
             {
                 return;
@@ -46,15 +76,27 @@
         /// <param name="param">extra information provided for cetertain event types</param>
         public void ObjectEvent(MgaObject subject, uint eventMask, object param)
         {
-            if (!componentEnabled)
+            if (!componentEnabled || !handleEvents)
             {
                 return;
             }
+            if (GMEConsole == null)
+            {
+                GMEConsole = GMEConsole.CreateFromProject(subject.Project);
+            }
 
             // TODO: Handle object events (OR eventMask with the members of objectevent_enum)
             // Warning: Only those events are received that you have subscribed for by setting ComponentConfig.eventMask
 
+            // If the event is OBJEVENT_DESTROYED, most operations on subject will fail
+            //   Safe operations: getting Project, ObjType, ID, MetaRole, Meta, MetaBase, Name, AbsPath
+            //   Operations that will fail: all others, including attribute access and graph navigation
+            //     Try handling OBJEVENT_PRE_DESTROYED if these operations are necessary
+
+            // Be careful not to modify Library objects (check subject.IsLibObject)
+
             // MessageBox.Show(eventMask.ToString());
+            // GMEConsole.Out.WriteLine(subject.Name);
 
         }
 
@@ -62,10 +104,10 @@
 
         #region IMgaComponentEx Members
 
-        public void Initialize(MgaProject p)
+        public void Initialize(MgaProject project)
         {
             // Creating addon
-            p.CreateAddOn(this, out addon);
+            project.CreateAddOn(this, out addon);
             // Setting event mask (see ComponentConfig.eventMask)
             unchecked
             {

Modified: trunk/SDK/DotNet/CSharpComponentWizard/Templates/rezip.sh
==============================================================================
--- trunk/SDK/DotNet/CSharpComponentWizard/Templates/rezip.sh	Tue Aug 14 14:27:08 2012	(r2010)
+++ trunk/SDK/DotNet/CSharpComponentWizard/Templates/rezip.sh	Tue Aug 14 14:27:25 2012	(r2011)
@@ -1 +1 @@
-rm *zip &&  ( cd CSharpInterpreter && /c/Program\ Files\ \(x86\)/7-Zip/7z.exe a -x\!.svn -r ../CSharpInterpreter.zip * )  && ( cd CSharpAddon/ && /c/Program\ Files\ \(x86\)/7-Zip/7z.exe a -x\!.svn -r ../CSharpAddon.zip * )
+rm *zip ;  ( cd CSharpInterpreter && /cygdrive/c/Program\ Files/7-Zip/7z.exe a -x\!.svn -r ../CSharpInterpreter.zip * )  && ( cd CSharpAddon/ && /cygdrive/c/Program\ Files/7-Zip/7z.exe a -x\!.svn -r ../CSharpAddon.zip * )


More information about the gme-commit mailing list