Ignore:
Timestamp:
Aug 13, 2010, 9:52:15 AM (11 years ago)
Author:
kopal
Message:
  • Editor now disables asynchronous PropertyChanged in EventHelpers at startup of ExecutionEngine and enables it at termination
  • now Connector PropertyChanged is used to propagate output data (so next plugins may be executed even if plugin before is running)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/WorkspaceManager/Execution/ExecutionEngine.cs

    r1806 r1809  
    378378            clearInputs();
    379379
    380             //7. Fill all outputs of our plugin
    381             fillOutputs();
    382 
    383             //8. Send start messages to possible executable next plugins
     380            //7. Send execute messages to possible executable next plugins
    384381            runNextPlugins();
    385382        }
     
    389386        /// </summary>
    390387        private void runNextPlugins()
    391         {
    392             foreach (ConnectorModel connectorModel in PluginModel.OutputConnectors)
    393             {
    394                 foreach (ConnectionModel connectionModel in connectorModel.OutputConnections)
    395                 {
    396                     if (mayExecute(connectionModel.To.PluginModel))
    397                     {
    398                         MessageExecution msg_exce = new MessageExecution();
    399                         msg_exce.PluginModel = connectionModel.To.PluginModel;
    400                         connectionModel.To.PluginModel.PluginProtocol.BroadcastMessage(msg_exce);
    401                     }
    402                 }
    403             }
    404 
     388        {           
    405389            foreach (ConnectorModel connectorModel in PluginModel.InputConnectors)
    406390            {
     
    420404            }
    421405        }
    422 
    423         /// <summary>
    424         /// Fill all outputs of the plugin
    425         /// </summary>
    426         private void fillOutputs()
    427         {
    428             foreach (ConnectorModel connectorModel in PluginModel.OutputConnectors)
    429             {
    430                 object data;
    431 
    432                 if (connectorModel.IsDynamic)
    433                 {
    434                     data = connectorModel.PluginModel.Plugin.GetType().GetMethod(connectorModel.DynamicGetterName).Invoke(connectorModel.PluginModel.Plugin, new object[] { connectorModel.PropertyName });
    435                 }
    436                 else
    437                 {
    438                     data = connectorModel.PluginModel.Plugin.GetType().GetProperty(connectorModel.PropertyName).GetValue(connectorModel.PluginModel.Plugin, null);
    439                 }
    440 
    441                 if (data != null)
    442                 {
    443                     foreach (ConnectionModel connectionModel in connectorModel.OutputConnections)
    444                     {
    445                         Data Data = new Data();
    446                         Data.value = data;
    447                         connectionModel.To.Data = Data;
    448                         connectionModel.To.HasData = true;
    449                         connectionModel.Active = true;
    450                         connectionModel.GuiNeedsUpdate = true;
    451                         connectorModel.Data = Data;
    452                     }
    453                 }
    454             }
    455         }
    456 
     406     
    457407        /// <summary>
    458408        /// Delete all input data of inputs of the plugin
Note: See TracChangeset for help on using the changeset viewer.