Example #1
0
        public override UserControl GetPreview(WorkFlowView view)
        {
            var model = new LiveviewViewModel();

            foreach (var element in view.Elements)
            {
                switch (element.Properties["Position"].Value)
                {
                case "Left":
                    model.LeftElements.Add(element.Instance.GetControl(element));
                    break;

                case "BottomLeft":
                    model.BottomLeftElements.Add(element.Instance.GetControl(element));
                    break;

                case "BottomRight":
                    model.BottomRightElements.Add(element.Instance.GetControl(element));
                    break;
                }
            }
            model.View = view;
            var res = new LiveViewUI();

            res.DataContext = model;
            WorkflowManager.Execute(view.GetEventCommands("Load"));
            return(res);
        }
Example #2
0
        public override UserControl GetPreview(WorkFlowView view, Context context)
        {
            WorkflowManager.Execute(view.GetEventCommands("Load"), context);
            var model = new StartScreenViewModel();

            foreach (var element in view.Elements)
            {
                switch (element.Properties["Position"].Value)
                {
                case "Center":
                    model.CenterElements.Add(element.Instance.GetControl(element, context));
                    break;

                case "BottomLeft":
                    model.BottomLeftElements.Add(element.Instance.GetControl(element, context));
                    break;

                case "BottomRight":
                    model.BottomRightElements.Add(element.Instance.GetControl(element, context));
                    break;

                case "Background":
                    model.BackGroundElements.Add(element.Instance.GetControl(element, context));
                    break;
                }
            }
            var res = new StartScreenView();

            res.DataContext = model;
            return(res);
        }
Example #3
0
        public override UserControl GetPreview(WorkFlowView view)
        {
            var model = new StartSctreenViewModel();

            foreach (var element in view.Elements)
            {
                switch (element.Properties["Position"].Value)
                {
                case "Center":
                    model.CenterElements.Add(element.Instance.GetControl(element));
                    break;

                case "BottomLeft":
                    model.BottomLeftElements.Add(element.Instance.GetControl(element));
                    break;

                case "BottomRight":
                    model.BottomRightElements.Add(element.Instance.GetControl(element));
                    break;
                }
            }
            model.BorderColor      = view.Properties["BorderColor"].Value;
            model.BorderBackground = view.Properties["BorderBackground"].Value;
            model.BorderThickness  = view.Properties["BorderThickness"].ToInt();
            model.CornerRadius     = view.Properties["CornerRadius"].ToInt();
            var res = new StartScreenView();

            res.DataContext = model;
            return(res);
        }
 private void DeleteView(WorkFlowView flowView)
 {
     if (flowView != null)
     {
         CurrentWorkFlow.Views.Remove(flowView);
         if (CurrentWorkFlow.Views.Count > 0)
         {
             SelectedView = CurrentWorkFlow.Views[CurrentWorkFlow.Views.Count - 1];
         }
     }
 }
Example #5
0
        public override WorkFlowView CreateView()
        {
            WorkFlowView view = new WorkFlowView();

            view.Properties.Items.Add(new CustomProperty()
            {
                Name         = "ViewTitle",
                PropertyType = CustomPropertyType.String
            });
            return(view);
        }
Example #6
0
        private void NewView(PluginInfo pluginInfo)
        {
            IViewPlugin  plugin = WorkflowManager.Instance.GetViewPlugin(pluginInfo.Class);
            WorkFlowView view   = plugin.CreateView();

            view.Instance   = plugin;
            view.PluginInfo = pluginInfo;
            view.Name       = pluginInfo.Name;
            view.Parent     = CurrentWorkFlow;
            CurrentWorkFlow.Views.Add(view);
            SelectedView = view;
        }
Example #7
0
        public override WorkFlowView CreateView()
        {
            WorkFlowView view = new WorkFlowView();

            view.Properties.Items.Add(new CustomProperty()
            {
                Name         = "ViewTitle",
                PropertyType = CustomPropertyType.String
            });
            view.Events.Add(new CommandCollection("Load"));
            view.Events.Add(new CommandCollection("UnLoad"));
            return(view);
        }
        public WorkFlowViewElement CreateElement(WorkFlowView view)
        {
            WorkFlowViewElement element = new WorkFlowViewElement();

            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "(Name)",
                PropertyType = CustomPropertyType.String
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Position",
                PropertyType = CustomPropertyType.ValueList,
                ValueList    = view.Instance.GetPositions(),
                Value        = view.Instance.GetPositions()[0]
            });

            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Width",
                PropertyType = CustomPropertyType.Number,
                RangeMin     = 0,
                RangeMax     = 9999,
                Value        = "150"
            });

            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Height",
                PropertyType = CustomPropertyType.Number,
                RangeMin     = 0,
                RangeMax     = 9999,
                Value        = "5"
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Margins",
                PropertyType = CustomPropertyType.Number,
                RangeMin     = 0,
                RangeMax     = 9999,
                Value        = "5"
            });
            //element.Properties.Items.Add(new CustomProperty()
            //{
            //    Name = "Orientation",
            //    PropertyType = CustomPropertyType.ValueList,
            //    ValueList = new List<string>() { "Horizontal", "Vertical" },
            //    Value = "Horizontal"
            //});
            return(element);
        }
Example #9
0
        public WorkFlowViewElement CreateElement(WorkFlowView view)
        {
            WorkFlowViewElement element = new WorkFlowViewElement();

            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "(Name)",
                PropertyType = CustomPropertyType.String
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Position",
                PropertyType = CustomPropertyType.ValueList,
                ValueList    = view.Instance.GetPositions(),
                Value        = view.Instance.GetPositions()[0]
            });

            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Width",
                PropertyType = CustomPropertyType.Number,
                RangeMin     = 0,
                RangeMax     = 9999,
                Value        = "0"
            });

            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Height",
                PropertyType = CustomPropertyType.Number,
                RangeMin     = 0,
                RangeMax     = 9999,
                Value        = "0"
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Margins",
                PropertyType = CustomPropertyType.Number,
                RangeMin     = 0,
                RangeMax     = 9999,
                Value        = "0"
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "ImageFile",
                PropertyType = CustomPropertyType.File,
            });
            return(element);
        }
Example #10
0
        public override UserControl GetPreview(WorkFlowView view, Context context)
        {
            var model = new LiveviewViewModel();

            foreach (var element in view.Elements)
            {
                switch (element.Properties["Position"].Value)
                {
                case "Left":
                    model.LeftElements.Add(element.Instance.GetControl(element, context));
                    break;

                case "BottomLeft":
                    model.BottomLeftElements.Add(element.Instance.GetControl(element, context));
                    break;

                case "BottomRight":
                    model.BottomRightElements.Add(element.Instance.GetControl(element, context));
                    break;

                case "Background":
                    model.BackGroundElements.Add(element.Instance.GetControl(element, context));
                    break;

                case "PreviewRight":
                    model.PreviewRight.Add(element.Instance.GetControl(element, context));
                    break;
                }
            }
            model.View            = view;
            model.FileListVisible = view.Properties["FileListVisible"].ToBool(context);
            model.ShowFocusArea   = view.Properties["ShowFocusArea"].ToBool(context);

            model.Preview = !view.Properties["NoPreview"].ToBool(context);
            var res = new LiveViewUI();

            res.DataContext = model;
            WorkflowManager.ExecuteAsync(view.GetEventCommands("Load"), WorkflowManager.Instance.Context);
            return(res);
        }
Example #11
0
        public override WorkFlowView CreateView()
        {
            WorkFlowView view = new WorkFlowView();

            view.Properties.Items.Add(new CustomProperty()
            {
                Name         = "ViewTitle",
                PropertyType = CustomPropertyType.String
            });
            view.Properties.Items.Add(new CustomProperty()
            {
                Name         = "BorderColor",
                PropertyType = CustomPropertyType.Color,
                Value        = "Transparent"
            });
            view.Properties.Items.Add(new CustomProperty()
            {
                Name         = "BorderBackground",
                PropertyType = CustomPropertyType.Color,
                Value        = "Transparent"
            });
            view.Properties.Items.Add(new CustomProperty()
            {
                Name         = "BorderThickness",
                PropertyType = CustomPropertyType.Number,
                Value        = "0",
                RangeMax     = 100
            });
            view.Properties.Items.Add(new CustomProperty()
            {
                Name         = "CornerRadius",
                PropertyType = CustomPropertyType.Number,
                Value        = "0",
                RangeMax     = 90
            });


            return(view);
        }
Example #12
0
 private void Instance_Message(object sender, MessageEventArgs e)
 {
     switch (e.Name)
     {
     case Messages.ShowView:
         WorkFlowView view = Workflow.GetView((string)e.Param);
         if (view != null)
         {
             if (Contents.DataContext != null)
             {
                 // dispose old view if was loaded
                 var obj = Contents.DataContext as IDisposable;
                 if (obj != null)
                 {
                     obj.Dispose();
                 }
             }
             Contents = view.Instance.GetPreview(view);
         }
         break;
     }
 }
        private void ShowView(string viewName)
        {
            if (string.IsNullOrWhiteSpace(viewName))
            {
                return;
            }

            _preView     = _currentView;
            _currentView = viewName;
            WorkFlowView view = Workflow.GetView(viewName);

            if (view != null)
            {
                Title = view.Properties["ViewTitle"]?.Value;
                if (Contents?.DataContext != null)
                {
                    // dispose old view if was loaded
                    var obj = Contents.DataContext as IDisposable;
                    obj?.Dispose();
                }
                Contents = view.Instance.GetPreview(view, WorkflowManager.Instance.Context);
            }
        }
Example #14
0
        public override WorkFlowView CreateView()
        {
            WorkFlowView view = new WorkFlowView();

            view.Properties.Items.Add(new CustomProperty()
            {
                Name         = "(Name)",
                PropertyType = CustomPropertyType.String
            });
            view.Properties.Items.Add(new CustomProperty()
            {
                Name         = "ViewTitle",
                PropertyType = CustomPropertyType.String
            });
            view.Properties.Items.Add(new CustomProperty()
            {
                Name         = "FileListVisible",
                PropertyType = CustomPropertyType.Bool,
                Value        = "True"
            });
            view.Properties.Items.Add(new CustomProperty()
            {
                Name         = "NoPreview",
                PropertyType = CustomPropertyType.Bool,
                Value        = "False"
            });
            view.Properties.Items.Add(new CustomProperty()
            {
                Name         = "ShowFocusArea",
                PropertyType = CustomPropertyType.Bool,
                Value        = "True"
            });
            view.Events.Add(new CommandCollection("Load"));
            view.Events.Add(new CommandCollection("UnLoad"));
            return(view);
        }
Example #15
0
        public RespuestaServicio <WorkFlowView> nextEstatus(int IdSubcategoria, int IdEstatusActual, bool Cancelado)
        {
            RespuestaServicio <WorkFlowView> respuesta = new RespuestaServicio <WorkFlowView>();

            Estatus estatus = db.Estatus.Find(IdEstatusActual);
            var     _next   = new WorkFlowView();

            if (estatus == null)
            {
                _next = db.WorkFlows
                        .Where(w => (w.IdSubCategoria == IdSubcategoria))
                        .OrderBy(w => w.Id)
                        .Select(w => new WorkFlowView
                {
                    Id                  = w.Id,
                    IdSubCategoria      = w.IdSubCategoria,
                    IdSubArea           = w.IdSubArea,
                    Inicial             = w.Inicial,
                    Siguiente           = w.Siguiente,
                    Anterior            = w.Anterior,
                    Cancelado           = w.Cancelado,
                    AlertaProveedor     = w.AlertaProveedor,
                    IdSubAreaANotificar = w.IdSubAreaANotificar,
                    EstatusInicial      = new EstatusView
                    {
                        Id     = w.EstatusInicial.Id,
                        Nombre = w.EstatusInicial.Nombre
                    },
                    EstatusAnterior = new EstatusView
                    {
                        Id     = w.EstatusAnterior.Id,
                        Nombre = w.EstatusAnterior.Nombre
                    },
                    EstatusSiguiente = new EstatusView
                    {
                        Id     = w.EstatusSiguiente.Id,
                        Nombre = w.EstatusSiguiente.Nombre
                    }
                })
                        .FirstOrDefault();
            }
            else
            {
                _next = db.WorkFlows
                        .Where(w => (w.IdSubCategoria == IdSubcategoria) && (w.EstatusInicial.Id == IdEstatusActual) && (w.Cancelado == Cancelado))
                        .Select(w => new WorkFlowView {
                    Id                  = w.Id,
                    IdSubCategoria      = w.IdSubCategoria,
                    IdSubArea           = w.IdSubArea,
                    Inicial             = w.Inicial,
                    Siguiente           = w.Siguiente,
                    Anterior            = w.Anterior,
                    Cancelado           = w.Cancelado,
                    AlertaProveedor     = w.AlertaProveedor,
                    IdSubAreaANotificar = w.IdSubAreaANotificar,
                    EstatusInicial      = new EstatusView
                    {
                        Id     = w.EstatusInicial.Id,
                        Nombre = w.EstatusInicial.Nombre
                    },
                    EstatusAnterior = new EstatusView
                    {
                        Id     = w.EstatusAnterior.Id,
                        Nombre = w.EstatusAnterior.Nombre
                    },
                    EstatusSiguiente = new EstatusView
                    {
                        Id     = w.EstatusSiguiente.Id,
                        Nombre = w.EstatusSiguiente.Nombre
                    }
                })
                        .FirstOrDefault();
            }

            if (_next != null)
            {
                respuesta.Respuesta = _next;
            }
            else
            {
                respuesta.Mensaje = "WorkFlow inexistente";
            }

            return(respuesta);
        }
        public WorkFlowViewElement CreateElement(WorkFlowView view)
        {
            WorkFlowViewElement element = new WorkFlowViewElement();

            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "(Name)",
                PropertyType = CustomPropertyType.String
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Caption",
                PropertyType = CustomPropertyType.String
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Property",
                PropertyType = CustomPropertyType.ValueList,
                ValueList    =
                {
                    "Mode",
                    "CompressionSetting",
                    "ExposureCompensation",
                    "ExposureMeteringMode",
                    "FNumber",
                    "IsoNumber",
                    "ShutterSpeed",
                    "WhiteBalance",
                    "FocusMode"
                },
                Value = "Mode"
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Orientation",
                PropertyType = CustomPropertyType.ValueList,
                ValueList    = { "Horizontal", "Vertical" },
                Value        = "Vertical"
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Position",
                PropertyType = CustomPropertyType.ValueList,
                ValueList    = view.Instance.GetPositions(),
                Value        = view.Instance.GetPositions()[0]
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Width",
                PropertyType = CustomPropertyType.Number,
                RangeMin     = 0,
                RangeMax     = 9999,
                Value        = "150"
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "LabelWidth",
                PropertyType = CustomPropertyType.Number,
                RangeMin     = 0,
                RangeMax     = 9999,
                Value        = "150"
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Height",
                PropertyType = CustomPropertyType.Number,
                RangeMin     = 0,
                RangeMax     = 9999,
                Value        = "0"
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Margins",
                PropertyType = CustomPropertyType.Number,
                RangeMin     = 0,
                RangeMax     = 9999,
                Value        = "2"
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "FontSize",
                PropertyType = CustomPropertyType.Number,
                RangeMin     = 6,
                RangeMax     = 400,
                Value        = "15"
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "BackgroundColor",
                PropertyType = CustomPropertyType.Color,
                Value        = "Transparent"
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "ForegroundColor",
                PropertyType = CustomPropertyType.Color,
                Value        = "Transparent"
            });
            return(element);
        }
Example #17
0
        public WorkFlowViewElement CreateElement(WorkFlowView view)
        {
            WorkFlowViewElement element = new WorkFlowViewElement();

            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "(Name)",
                PropertyType = CustomPropertyType.String
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Caption",
                PropertyType = CustomPropertyType.String
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Enabled",
                PropertyType = CustomPropertyType.Variable
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Position",
                PropertyType = CustomPropertyType.ValueList,
                ValueList    = view.Instance.GetPositions(),
                Value        = view.Instance.GetPositions()[0]
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Style",
                PropertyType = CustomPropertyType.ValueList,
                ValueList    = { "Default", "Rounded" },
                Value        = "Default"
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Icon",
                PropertyType = CustomPropertyType.Icon,
                Value        = "(None)"
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Width",
                PropertyType = CustomPropertyType.Number,
                RangeMin     = 0,
                RangeMax     = 9999,
                Value        = "150"
            });

            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Height",
                PropertyType = CustomPropertyType.Number,
                RangeMin     = 0,
                RangeMax     = 9999,
                Value        = "50"
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Margins",
                PropertyType = CustomPropertyType.Number,
                RangeMin     = 0,
                RangeMax     = 9999,
                Value        = "5"
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "FontSize",
                PropertyType = CustomPropertyType.Number,
                RangeMin     = 6,
                RangeMax     = 400,
                Value        = "15"
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "BackgroundColor",
                PropertyType = CustomPropertyType.Color,
                Value        = "Transparent"
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "ForegroundColor",
                PropertyType = CustomPropertyType.Color,
                Value        = "Transparent"
            });
            element.Events.Add(new CommandCollection("Click"));
            return(element);
        }
Example #18
0
 public virtual UserControl GetPreview(WorkFlowView view, Context context)
 {
     throw new NotImplementedException();
 }
        public WorkFlowViewElement CreateElement(WorkFlowView view)
        {
            WorkFlowViewElement element = new WorkFlowViewElement();

            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "(Name)",
                PropertyType = CustomPropertyType.String
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Caption",
                PropertyType = CustomPropertyType.String
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Position",
                PropertyType = CustomPropertyType.ValueList,
                ValueList    = view.Instance.GetPositions(),
                Value        = view.Instance.GetPositions()[0]
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Width",
                PropertyType = CustomPropertyType.Number,
                RangeMin     = 0,
                RangeMax     = 9999,
                Value        = "150"
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "LabelWidth",
                PropertyType = CustomPropertyType.Number,
                RangeMin     = 0,
                RangeMax     = 9999,
                Value        = "0"
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "FontSize",
                PropertyType = CustomPropertyType.Number,
                RangeMin     = 6,
                RangeMax     = 400,
                Value        = "15"
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Height",
                PropertyType = CustomPropertyType.Number,
                RangeMin     = 0,
                RangeMax     = 9999,
                Value        = "35"
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Orientation",
                PropertyType = CustomPropertyType.ValueList,
                ValueList    = new List <string>()
                {
                    "Horizontal", "Vertical"
                },
                Value = "Horizontal"
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Margins",
                PropertyType = CustomPropertyType.Number,
                RangeMin     = 0,
                RangeMax     = 9999,
                Value        = "5"
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Variable",
                PropertyType = CustomPropertyType.Variable,
                Value        = ""
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Minimum",
                PropertyType = CustomPropertyType.Number,
                RangeMin     = int.MinValue,
                RangeMax     = int.MaxValue,
                Value        = "-100"
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Maximum",
                PropertyType = CustomPropertyType.Number,
                RangeMin     = int.MinValue,
                RangeMax     = int.MaxValue,
                Value        = "100"
            });

            return(element);
        }
Example #20
0
        public WorkFlowViewElement CreateElement(WorkFlowView view)
        {
            WorkFlowViewElement element = new WorkFlowViewElement();

            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Text",
                PropertyType = CustomPropertyType.String
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Position",
                PropertyType = CustomPropertyType.ValueList,
                ValueList    = view.Instance.GetPositions(),
                Value        = view.Instance.GetPositions()[0]
            });

            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Width",
                PropertyType = CustomPropertyType.Number,
                RangeMin     = 0,
                RangeMax     = 9999,
                Value        = "150"
            });

            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Height",
                PropertyType = CustomPropertyType.Number,
                RangeMin     = 0,
                RangeMax     = 9999,
                Value        = "50"
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Margins",
                PropertyType = CustomPropertyType.Number,
                RangeMin     = 0,
                RangeMax     = 9999,
                Value        = "5"
            });

            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "FontSize",
                PropertyType = CustomPropertyType.Number,
                RangeMin     = 6,
                RangeMax     = 400,
                Value        = "15"
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "BackgroundColor",
                PropertyType = CustomPropertyType.Color,
                Value        = "Transparent"
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "ForegroundColor",
                PropertyType = CustomPropertyType.Color,
                Value        = "Transparent"
            });
            return(element);
        }
        public WorkFlow Load(Stream myFileStream)
        {
            XmlSerializer mySerializer =
                new XmlSerializer(typeof(WorkFlow));
            WorkFlow flow = (WorkFlow)mySerializer.Deserialize(myFileStream);

            WorkFlow resflow = Instance.CreateWorkFlow();

            resflow.Id          = flow.Id;
            resflow.Name        = flow.Name;
            resflow.Description = flow.Description;
            resflow.Version     = flow.Version;
            resflow.Properties.CopyValuesFrom(flow.Properties);

            foreach (Variable variable in flow.Variables.Items)
            {
                if (resflow.Variables[variable.Name] != null)
                {
                    resflow.Variables[variable.Name].Value = variable.Value;
                }
                else
                {
                    resflow.Variables.Items.Add(variable);
                }
            }

            foreach (var flowEvent in flow.Events)
            {
                IEventPlugin plugin = Instance.GetEventPlugin(flowEvent.PluginInfo.Class);

                WorkFlowEvent event_ = plugin.CreateEvent();
                event_.Parent     = resflow;
                event_.Instance   = plugin;
                event_.PluginInfo = flowEvent.PluginInfo;
                event_.Name       = flowEvent.Name;
                event_.Properties.CopyValuesFrom(flowEvent.Properties);
                LoadPluginInfo(event_.PluginInfo);

                foreach (var flowCommand in flowEvent.CommandCollection.Items)
                {
                    IWorkflowCommand commandPlugin = Instance.GetCommandPlugin(flowCommand.PluginInfo.Class);
                    var wCommand = commandPlugin.CreateCommand();
                    wCommand.Instance   = commandPlugin;
                    wCommand.PluginInfo = flowCommand.PluginInfo;
                    wCommand.Name       = flowCommand.Name;
                    wCommand.Properties.CopyValuesFrom(flowCommand.Properties);
                    event_.CommandCollection.Items.Add(wCommand);
                    LoadPluginInfo(flowCommand.PluginInfo);
                }
                resflow.Events.Add(event_);
            }

            foreach (var _view in flow.Views)
            {
                IViewPlugin  plugin = Instance.GetViewPlugin(_view.PluginInfo.Class);
                WorkFlowView view   = plugin.CreateView();
                view.Parent     = resflow;
                view.Instance   = plugin;
                view.PluginInfo = _view.PluginInfo;
                view.Name       = _view.Name;
                view.Properties.CopyValuesFrom(_view.Properties);
                LoadPluginInfo(view.PluginInfo);
                foreach (var viewElement in _view.Elements)
                {
                    IViewElementPlugin  elementplugin = Instance.GetElementPlugin(viewElement.PluginInfo.Class);
                    WorkFlowViewElement element       = elementplugin.CreateElement(view);
                    element.Parent     = view;
                    element.Instance   = elementplugin;
                    element.PluginInfo = viewElement.PluginInfo;
                    element.Name       = viewElement.Name;
                    element.Properties.CopyValuesFrom(viewElement.Properties);
                    view.Elements.Add(element);
                    LoadPluginInfo(element.PluginInfo);
                    foreach (var commandCollection in element.Events)
                    {
                        CommandCollection loadedcommand = null;
                        foreach (var collection in viewElement.Events)
                        {
                            if (collection.Name == commandCollection.Name)
                            {
                                loadedcommand = collection;
                            }
                        }
                        if (loadedcommand != null)
                        {
                            foreach (var flowCommand in loadedcommand.Items)
                            {
                                IWorkflowCommand commandPlugin =
                                    Instance.GetCommandPlugin(flowCommand.PluginInfo.Class);
                                var wCommand = commandPlugin.CreateCommand();
                                wCommand.Instance   = commandPlugin;
                                wCommand.PluginInfo = flowCommand.PluginInfo;
                                wCommand.Name       = flowCommand.Name;
                                wCommand.Properties.CopyValuesFrom(flowCommand.Properties);
                                commandCollection.Items.Add(wCommand);
                                LoadPluginInfo(wCommand.PluginInfo);
                            }
                        }
                    }
                }
                foreach (var commandCollection in view.Events)
                {
                    CommandCollection loadedcommand = null;
                    foreach (var collection in _view.Events)
                    {
                        if (collection.Name == commandCollection.Name)
                        {
                            loadedcommand = collection;
                        }
                    }
                    if (loadedcommand != null)
                    {
                        foreach (var flowCommand in loadedcommand.Items)
                        {
                            IWorkflowCommand commandPlugin = Instance.GetCommandPlugin(flowCommand.PluginInfo.Class);
                            var wCommand = commandPlugin.CreateCommand();
                            wCommand.Instance   = commandPlugin;
                            wCommand.PluginInfo = flowCommand.PluginInfo;
                            wCommand.Name       = flowCommand.Name;
                            wCommand.Properties.CopyValuesFrom(flowCommand.Properties);
                            commandCollection.Items.Add(wCommand);
                            LoadPluginInfo(wCommand.PluginInfo);
                        }
                    }
                }
                resflow.Views.Add(view);
            }
            LoadVariables(resflow);
            return(resflow);
        }
        public WorkFlowViewElement CreateElement(WorkFlowView view)
        {
            WorkFlowViewElement element = new WorkFlowViewElement();

            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "(Name)",
                PropertyType = CustomPropertyType.String
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Caption",
                PropertyType = CustomPropertyType.String
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Variable",
                PropertyType = CustomPropertyType.Variable,
                Value        = ""
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "ValueList",
                PropertyType = CustomPropertyType.String,
                Value        = ""
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "ValueListVariable",
                PropertyType = CustomPropertyType.Variable,
                Value        = ""
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Orientation",
                PropertyType = CustomPropertyType.ValueList,
                ValueList    = { "Horizontal", "Vertical" },
                Value        = "Vertical"
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Position",
                PropertyType = CustomPropertyType.ValueList,
                ValueList    = view.Instance.GetPositions(),
                Value        = view.Instance.GetPositions()[0]
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Width",
                PropertyType = CustomPropertyType.Number,
                RangeMin     = 0,
                RangeMax     = 9999,
                Value        = "150"
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "LabelWidth",
                PropertyType = CustomPropertyType.Number,
                RangeMin     = 0,
                RangeMax     = 9999,
                Value        = "150"
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Height",
                PropertyType = CustomPropertyType.Number,
                RangeMin     = 0,
                RangeMax     = 9999,
                Value        = "0"
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Margins",
                PropertyType = CustomPropertyType.Number,
                RangeMin     = 0,
                RangeMax     = 9999,
                Value        = "2"
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "FontSize",
                PropertyType = CustomPropertyType.Number,
                RangeMin     = 6,
                RangeMax     = 400,
                Value        = "15"
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "BackgroundColor",
                PropertyType = CustomPropertyType.Color,
                Value        = "Transparent"
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "ForegroundColor",
                PropertyType = CustomPropertyType.Color,
                Value        = "Transparent"
            });
            element.Properties.Items.Add(new CustomProperty()
            {
                Name         = "Editable",
                PropertyType = CustomPropertyType.Bool,
                Value        = "True"
            });
            return(element);
        }