Changeset 1620


Ignore:
Timestamp:
Jun 10, 2010, 5:52:30 PM (12 years ago)
Author:
kopal
Message:
  • connectors now may only connect from output to InputConnection
  • view is disabled when editor is executing now
  • connector now has "lastData" which stores last used data
  • minwidth, minheight of an VisualElementModel can only be >=50 now
Location:
trunk/CrypPlugins/WorkspaceManager
Files:
7 edited

Legend:

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

    r1617 r1620  
    229229                    }
    230230                }
     231                foreach (ConnectionModel connectionModel in workspaceModel.AllConnectionModels)
     232                {
     233                    if (connectionModel.GuiNeedsUpdate)
     234                    {
     235                        if (connectionModel.UpdateableView != null)
     236                        {
     237                            connectionModel.UpdateableView.update();
     238                        }
     239                    }
     240                }
    231241            }
    232242            , null);
     
    263273            while (this.executionEngine.IsRunning)
    264274            {
    265                 yield return Timeout(10, HandleCheckExecutable);
     275                yield return Timeout(1, HandleCheckExecutable);
    266276            }
    267277        }
     
    353363                    PropertyInfo propertyInfo = pluginModel.Plugin.GetType().GetProperty(connectorModel.PropertyName);
    354364                    propertyInfo.SetValue(pluginModel.Plugin, connectorModel.Data, null);
     365                    connectorModel.HasLastData = true;
     366                    connectorModel.LastData = connectorModel.Data;
    355367                    connectorModel.Data = null;
    356368                    connectorModel.HasData = false;
  • trunk/CrypPlugins/WorkspaceManager/Model/ConnectorModel.cs

    r1608 r1620  
    3636
    3737        [NonSerialized]
     38        private bool hasLastData = false;
     39
     40        [NonSerialized]
    3841        private object data;
    3942
     43        [NonSerialized]
     44        private object lastData;
     45       
    4046        /// <summary>
    4147        /// The PluginModel this Connector belongs to
     
    115121            {
    116122                data = value;
     123            }
     124        }
     125
     126        /// <summary>
     127        /// Does this Connector currently provides last Data?
     128        /// </summary>
     129        /// <returns></returns>
     130        public bool HasLastData
     131        {
     132            get
     133            {
     134                return hasLastData;
     135            }
     136
     137            set
     138            {
     139                hasLastData = value;
     140            }
     141        }
     142
     143        /// <summary>
     144        /// LastData of this Connector
     145        /// </summary>
     146        public object LastData
     147        {
     148            get
     149            {
     150                return lastData;
     151            }
     152
     153            set
     154            {
     155                lastData = value;
    117156            }
    118157        }
     
    140179               
    141180                foreach (ConnectionModel connectionModel in this.OutputConnections)
    142                 {
    143                     /*while (connectionModel.To.HasData && WorkspaceModel.WorkspaceManagerEditor.isExecuting())
    144                     {
    145                         Thread.Sleep(5);
    146                     }*/
     181                {                   
    147182                    connectionModel.To.Data = sender.GetType().GetProperty(propertyChangedEventArgs.PropertyName).GetValue(sender, null);
    148183                    connectionModel.To.HasData = true;
  • trunk/CrypPlugins/WorkspaceManager/Model/VisualElementModel.cs

    r1617 r1620  
    5050        public Point Position { get; set; }
    5151
     52        private double minWidth=50;
    5253        /// <summary>
    5354        /// Minimum Width of this VisualElementModel
    5455        /// </summary>
    55         public double MinWidth { get; set; }
     56        public double MinWidth
     57        {
     58            get { return minWidth; }
     59            set
     60            {
     61                if (value > 50)
     62                {
     63                    minWidth = value;
     64                };
     65            }
     66        }
    5667
     68        private double minHeight = 50;
    5769        /// <summary>
    5870        /// Minimum Height of this VisualElementModel
    5971        /// </summary>
    60         public double MinHeight { get; set; }
     72        public double MinHeight
     73        {
     74            get{ return minHeight; }
     75            set
     76            {
     77                if (value > 50)
     78                {
     79                    minHeight = value;
     80                };
     81            }
     82        }
    6183
    6284        /// <summary>
  • trunk/CrypPlugins/WorkspaceManager/Model/WorkspaceModel.cs

    r1617 r1620  
    2121using System.Windows;
    2222using Cryptool.PluginBase;
     23using System.Runtime.Serialization.Formatters.Soap;
    2324
    2425namespace WorkspaceManager.Model
     
    3031    public class WorkspaceModel
    3132    {
     33        [NonSerialized]
     34        private WorkspaceManager workspaceManagerEditor;
     35
    3236        /// <summary>
    3337        /// The surrounding WorkspaceManagerEditor
    34         /// </summary>
    35         public WorkspaceManager WorkspaceManagerEditor { get; set; }
     38        /// </summary>       
     39        public WorkspaceManager WorkspaceManagerEditor {
     40            get{
     41                return workspaceManagerEditor;
     42            }
     43            set{
     44                this.workspaceManagerEditor = value;
     45            }
     46        }
    3647
    3748        /// <summary>
     
    8394            pluginModel.Plugin.OnPluginStatusChanged += pluginModel.PluginStatusChanged;
    8495            this.AllPluginModels.Add(pluginModel);
     96            this.WorkspaceManagerEditor.HasChanges = true;
    8597            return pluginModel;
    8698        }
     
    115127            connectionModel.ConnectionType = connectionType;
    116128            this.AllConnectionModels.Add(connectionModel);
     129            this.WorkspaceManagerEditor.HasChanges = true;
    117130            return connectionModel;
    118131        }
     
    142155                pluginModel.Plugin.Dispose();
    143156                pluginModel.onDelete();
     157                this.WorkspaceManagerEditor.HasChanges = true;
    144158                return this.AllPluginModels.Remove(pluginModel);
    145159            }           
     
    170184                }
    171185                connectorModel.onDelete();
     186                this.WorkspaceManagerEditor.HasChanges = true;
    172187                return this.AllConnectorModels.Remove(connectorModel);
    173188            }
     
    188203            connectionModel.To.InputConnection = null;
    189204            connectionModel.onDelete();
     205            this.WorkspaceManagerEditor.HasChanges = true;
    190206            return this.AllConnectionModels.Remove(connectionModel);
    191207        }
     
    221237            connectionModel.To = connectorModel;
    222238            connectorModel.InputConnection = connectionModel;
     239            this.WorkspaceManagerEditor.HasChanges = true;
    223240            return true;
    224241        }
     
    234251        public static bool compatibleConnectors(ConnectorModel connectorModelA, ConnectorModel connectorModelB)
    235252        {
     253            if (!connectorModelA.Outgoing || connectorModelB.Outgoing || connectorModelB.InputConnection != null)
     254            {
     255                return false;
     256            }
     257
    236258            if (connectorModelA.ConnectorType.Equals(connectorModelB.ConnectorType)
    237259                || connectorModelA.ConnectorType.BaseType.Equals(connectorModelB.ConnectorType))
     
    243265                return false;
    244266            }
    245         }
    246 
    247         /// <summary>
    248         /// Checks wether a Connection and a Connector are compatible to be connected
    249         /// They are compatible if their types are equal or the base type of the connection
    250         /// is equal to the type of the connector
    251         /// </summary>
    252         /// <param name="connectionModel"></param>
    253         /// <param name="connectorModel"></param>
    254         /// <returns></returns>
    255         public static bool compatibleConnectors(ConnectionModel connectionModel, ConnectorModel connectorModel)
    256         {
    257             if (connectionModel.ConnectionType.Equals(connectorModel.ConnectorType)
    258                 || connectionModel.ConnectionType.BaseType.Equals(connectorModel.ConnectorType))
    259             {
    260                 return true;
    261             }
    262             else
    263             {
    264                 return false;
    265             }
    266         }
    267 
    268         /// <summary>
    269         /// Checks wether a Connection and a Connector are compatible to be connected
    270         /// They are compatible if their types are equal or the base type of the connection
    271         /// is equal to the type of the connector
    272         /// </summary>
    273         /// <param name="connectorModel"></param>
    274         /// <param name="connectionModel"></param>
    275         /// <returns></returns>
    276         public static bool compatibleConnectors(ConnectorModel connectorModel, ConnectionModel connectionModel)
    277         {
    278             return compatibleConnectors(connectionModel, connectorModel);
    279         }
     267        }       
    280268    }
    281269}
  • trunk/CrypPlugins/WorkspaceManager/View/Container/WorkSpaceEditorView.xaml.cs

    r1617 r1620  
    6868
    6969        void PluginDelete(object sender, PluginContainerViewDeleteViewEventArgs e)
    70         {
    71             /*for(int i = 0; i< e.container.ConnectorViewList.Count; i++)
    72             {
    73                 for(int j = 0; j< e.container.ConnectorViewList[i].Model.OutputConnections.Count; j++)
    74                 {
    75                     Model.deleteConnectionModel(e.container.ConnectorViewList[i].Model.OutputConnections[j]);
    76                     for (int n = 0; n < ConnectionList.Count; n++)
    77                     {
    78                         if (ConnectionList[n].Model == e.container.ConnectorViewList[i].Model.OutputConnections[j] ||
    79                             ConnectionList[n].Model == e.container.ConnectorViewList[i].Model.InputConnection)
    80                             root.Children.Remove(ConnectionList[n]);
    81                     }
    82                 }
    83                 Model.deleteConnectionModel(e.container.ConnectorViewList[i].Model.InputConnection);
    84             }*/
     70        {           
    8571            Model.deletePluginModel(e.container.Model);
    8672            root.Children.Remove(e.container);
     
    127113            if (sender is ConnectionModel)
    128114            {
    129                 if (((ConnectionModel)sender).UpdateableView != null)
    130                 {
     115                if(((ConnectionModel)sender).UpdateableView != null){
    131116                    UIElement uielement = (UIElement)((ConnectionModel)sender).UpdateableView;
    132117                    root.Children.Remove(uielement);
     
    175160        void shape_OnConnectorMouseLeftButtonDown(object sender, ConnectorViewEventArgs e)
    176161        {
    177             if (selectedConnector != null && e.connector.Model.ConnectorType.Name == selectedConnector.Model.ConnectorType.Name)
     162            if (selectedConnector != null && WorkspaceModel.compatibleConnectors(selectedConnector.Model, e.connector.Model))
    178163            {
    179164                this.root.Children.Remove(dummyLine);
     
    184169            }
    185170
    186             if (selectedConnector == null)
     171            if (selectedConnector == null && e.connector.Model.Outgoing)
    187172            {
    188173                this.root.Children.Add(dummyLine);
  • trunk/CrypPlugins/WorkspaceManager/WorkspaceManager.cs

    r1617 r1620  
    3232using WorkspaceManager.View.Converter;
    3333using System.Windows;
     34using System.Windows.Threading;
     35using System.Threading;
    3436
    3537//Disable warnings for unused or unassigned fields and events:
     
    309311
    310312        /// <summary>
    311         /// The Presentatio of this editor
     313        /// The Presentation of this editor
    312314        /// </summary>
    313315        public System.Windows.Controls.UserControl Presentation
     
    347349            {
    348350                GuiLogMessage("Execute Model now!", NotificationLevel.Info);
    349                 executing = true;               
     351                executing = true;
     352
     353                //Get the gui Thread
     354                this.WorkspaceManagerEditorView.Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
     355                {
     356                    this.WorkspaceManagerEditorView.root.IsEnabled = false;   
     357                }
     358                , null);
    350359                ExecutionEngine.Execute(WorkspaceModel);
    351360            }
     
    387396                GuiLogMessage("Executing stopped by User!", NotificationLevel.Info);
    388397                ExecutionEngine.Stop();
     398                //Get the gui Thread
     399                this.WorkspaceManagerEditorView.Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
     400                {
     401                    this.WorkspaceManagerEditorView.root.IsEnabled = true;
     402                }
     403                , null);
    389404            }
    390405            catch (Exception ex)
  • trunk/CrypPlugins/WorkspaceManager/WorkspaceManager.csproj

    r1617 r1620  
    161161    </Page>
    162162  </ItemGroup>
    163   <ItemGroup>
    164     <Folder Include="Controller\" />
    165   </ItemGroup>
     163  <ItemGroup />
    166164  <ItemGroup>
    167165    <EmbeddedResource Include="Resources\Attributes.resx">
Note: See TracChangeset for help on using the changeset viewer.