示例#1
0
        public void Initialize()
        {
            MappingRegistry = new MappingRegistry();
            Mapper = new Mapper(MappingRegistry);

            Serializer = new Serializer();
            TLSerializerRegistration.Register(Serializer);
            MappingRegistry.RegisterDefaultInstance<Serializer>(Serializer);

            History = new TLHistory(Serializer);
            MappingRegistry.RegisterDefaultInstance<ICommandHistory>(History);
        }
示例#2
0
        public override DataObject Serialize(object data, bool persistType = false)
        {
            var node        = new JObject();
            var dataType    = data.GetType();
            var typeMapping = MappingRegistry.GetMappingFor(dataType);

            Serialize(typeMapping.InternalMappings, data, node);

            if (persistType)
            {
                var typeElement = new JProperty(TypeField, dataType.GetPersistableName());
                node.Add(typeElement);
            }

            var temporaryObject = ConvertJTokenToObject(node);

            using (var writer = new StringWriter())
            {
                _yamlSerializer.Serialize(writer, temporaryObject);
                var output = writer.ToString();
                return(new DataObject(output));
            }
        }
示例#3
0
        public Solution(Uri location, MappingRegistry registry)
            : base(Path.GetFileName(location.LocalPath), location, true)
        {
            FRegistry = registry;
            Mapper    = new ModelMapper(this, registry);

            // Do not allow rename on add. Rename triggers save/delete in case of PersistentIDContainer.
            Projects = new EditableIDList <IProject>("Projects", false);
            Add(Projects);

            ProjectContentRegistry = new ProjectContentRegistry();
            var tempPath = Shell.TempPath.ConcatPath("ProjectContentRegistry");

            if (!Directory.Exists(tempPath))
            {
                Directory.CreateDirectory(tempPath);
            }
            ProjectContentRegistry.ActivatePersistence(tempPath);

            Projects.Added   += Projects_Added;
            Projects.Removed += Projects_Removed;

            OnRootingChanged(RootingAction.Rooted);
        }
示例#4
0
 protected override void InitializeMappingRegistry(MappingRegistry registry)
 {
     registry.RegisterDefaultInstance <ILabelEditor>(this);
 }
示例#5
0
        public ProjectExplorerPlugin(
            [Config("Hide unused projects", IsSingle = true, DefaultValue = 1.0)] IDiffSpread <bool> showUnloadedProjectsIn,
            [Config("Build configuration", IsSingle = true)] IDiffSpread <BuildConfiguration> buildConfigIn,
            ISolution solution,
            ILogger logger,
            IHDEHost hdeHost)
        {
            try
            {
                FRootNode = hdeHost.RootNode;

                Solution = solution;
                FLogger  = logger;

                FHideUnusedProjectsIn          = showUnloadedProjectsIn;
                FHideUnusedProjectsIn.Changed += new SpreadChangedEventHander <bool>(FHideUnusedProjectsIn_Changed);
                FBuildConfigIn          = buildConfigIn;
                FBuildConfigIn.Changed += FBuildConfigIn_Changed;

                FMappingRegistry = new MappingRegistry();
                FMappingRegistry.RegisterDefaultMapping <INamed, DefaultNameProvider>();
                FMappingRegistry.RegisterDefaultMapping <IParent, DefaultParentProvider>();
                // Do not allow drag'n drop except for references.
//				FMappingRegistry.RegisterDefaultMapping<IDraggable, DefaultDragDropProvider>();
                FMappingRegistry.RegisterDefaultMapping <IMenuEntry, DefaultContextMenuProvider>();
                FMappingRegistry.RegisterDefaultMapping <AddMenuEntry, DefaultAddMenuEntry>();
                FMappingRegistry.RegisterDefaultInstance(FLogger);
                FMappingRegistry.RegisterDefaultInstance(FRootNode);

                if (showUnloadedProjectsIn[0])
                {
                    FMappingRegistry.RegisterMapping <ISolution, SolutionViewProvider>();
                }
                else
                {
                    FMappingRegistry.RegisterMapping <ISolution, LoadedProjectsSolutionViewProvider>();
                }
                FMappingRegistry.RegisterMapping <IEditableIDList <IReference>, DefaultDragDropProvider>();

                FMappingRegistry.RegisterMapping <IProject, ProjectViewProvider>();
                // Do not enumerate IDocument
                FMappingRegistry.RegisterInstance <IDocument, IEnumerable>(Empty.Enumerable);
                FMappingRegistry.RegisterMapping <MsBuildProject, MsBuildProjectViewProvider>();
                FMappingRegistry.RegisterMapping <FXProject, FXProjectViewProvider>();
                FMappingRegistry.RegisterMapping <FXProject, IMenuEntry, FXProjectMenuProvider>();
                FMappingRegistry.RegisterMapping <IProject, IDescripted, DescriptedProjectViewProvider>();
                // Allow drag drop only in MsBuildProject
                FMappingRegistry.RegisterMapping <MsBuildProject, IDroppable, DefaultDragDropProvider>();
                FMappingRegistry.RegisterMapping <IReference, ReferenceViewProvider>();
                FMappingRegistry.RegisterMapping <PersistentIDContainer, PersistentNameProvider>();
                FMappingRegistry.RegisterMapping <IReference, IDescripted, ReferenceViewProvider>();

                InitializeComponent();

                FBuildConfigComboBox.Items.AddRange((object[])Enum.GetNames(typeof(BuildConfiguration)));
                FBuildConfigComboBox.SelectedIndex = 0;

                FHideUnusedProjectsCheckBox.CheckedChanged += FHideUnusedProjectsCheckBox_CheckedChanged;
                FTreeViewer.DoubleClick += FTreeViewer_DoubleClick;

                FTreeViewer.Registry = FMappingRegistry;
                FTreeViewer.Input    = Solution;

                // Workaround because config pins do not send changed on reload :/
                FHideUnusedProjectsIn.Sync();
                FBuildConfigIn.Sync();
            }
            catch (Exception e)
            {
                logger.Log(e);
                throw e;
            }
        }
示例#6
0
 protected override void InitializeMappingRegistry(MappingRegistry registry)
 {
     registry.RegisterDefaultInstance <ICamera>(this);
 }
示例#7
0
        public HDEHost()
        {
            // Set vvvv.exe path
            ExePath = Path.GetFullPath(Path.Combine(Path.GetDirectoryName((typeof(HDEHost).Assembly.Location)), @"..\.."));

            //add repository paths from commandline
            //from commandline
            var repoArg = "/package-repositories";

            var packageRepositories = AssemblyLoader.ParseCommandLine(repoArg);

            //from args.txt
            var argsFile = Path.Combine(ExePath, "args.txt");

            if (File.Exists(argsFile))
            {
                var args         = File.ReadAllText(argsFile).Trim('\r', '\n', ' ').Split(' ');
                var sourcesIndex = Array.IndexOf(args, repoArg);
                if (sourcesIndex >= 0 && args.Length > sourcesIndex + 1)
                {
                    var sourcesString = args[sourcesIndex + 1].Trim('"');
                    var repoPaths     = sourcesString.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
                    for (int i = 0; i < repoPaths.Length; i++)
                    {
                        repoPaths[i] = repoPaths[i].Trim('"', '\\');
                    }

                    packageRepositories = packageRepositories.Union(repoPaths).ToArray();
                }
            }

            //make relative paths absolute
            for (int i = 0; i < packageRepositories.Length; i++)
            {
                if (Path.IsPathRooted(packageRepositories[i]))
                {
                    packageRepositories[i] = Path.Combine(ExePath, packageRepositories[i]);
                }
            }

            AssemblyLoader.AddPackageRepositories(packageRepositories);

            //the built-in one
            if (Directory.Exists(PacksPath))
            {
                AssemblyLoader.AddPackageRepository(PacksPath);
            }
            //the one where the user is supposed to install packages
            if (Directory.Exists(UserPacksPatch))
            {
                AssemblyLoader.AddPackageRepository(UserPacksPatch);
            }


            // Set name to vvvv thread for easier debugging.
            Thread.CurrentThread.Name = "vvvv";

            // Create a windows forms sync context (FileSystemWatcher runs asynchronously).
            SynchronizationContext.SetSynchronizationContext(new MySynchronizationContext());

            // Register at least one ICommandHistory for top level element ISolution
            var mappingRegistry = new MappingRegistry();

            mappingRegistry.RegisterMapping <ISolution, ICommandHistory, CommandHistory>(MapInstantiation.PerInstanceAndItsChilds);

            var location = Shell.CallerPath.ConcatPath(@"..\..\lib\nodes\plugins").ConcatPath("Solution.sln");

            Solution = new Solution(location, mappingRegistry);

            EnumManager.SetHDEHost(this);

            Logger = new DefaultLogger();

            IORegistry = new IORegistry();

            // Will tell Windows Forms that a message loop is indeed running
            Application.RegisterMessageLoop(IsSendingMessages);
        }
示例#8
0
        public CodeEditorPlugin(IHDEHost host, INode node, ISolution solution, ILogger logger)
        {
            FHDEHost   = host;
            FNode      = node;
            FSolution  = solution;
            FLogger    = logger;
            FErrorList = new ViewableCollection <object>();

            if (CompletionIcons.Images.Count == 0)
            {
                var resources = new ComponentResourceManager(typeof(CodeEditorPlugin));
                CompletionIcons.TransparentColor = System.Drawing.Color.Transparent;
                CompletionIcons.Images.Add((System.Drawing.Bitmap)resources.GetObject("Icons.16x16.Class"));
                CompletionIcons.Images.Add((System.Drawing.Bitmap)resources.GetObject("Icons.16x16.Method"));
                CompletionIcons.Images.Add((System.Drawing.Bitmap)resources.GetObject("Icons.16x16.Property"));
                CompletionIcons.Images.Add((System.Drawing.Bitmap)resources.GetObject("Icons.16x16.Field"));
                CompletionIcons.Images.Add((System.Drawing.Bitmap)resources.GetObject("Icons.16x16.Enum"));
                CompletionIcons.Images.Add((System.Drawing.Bitmap)resources.GetObject("Icons.16x16.NameSpace"));
                CompletionIcons.Images.Add((System.Drawing.Bitmap)resources.GetObject("Icons.16x16.Event"));

                var path     = Path.GetFullPath(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), @"..\..\thirdparty"));
                var provider = new SD.FileSyntaxModeProvider(path);
                SD.HighlightingManager.Manager.AddSyntaxModeFileProvider(provider);
            }

            SuspendLayout();

            FCodeEditorForm                     = new Form();
            FCodeEditorForm.Location            = new Point(0, 0);
            FCodeEditorForm.TopLevel            = false;
            FCodeEditorForm.TopMost             = false;
            FCodeEditorForm.Dock                = DockStyle.Fill;
            FCodeEditorForm.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            FCodeEditorForm.AutoScaleMode       = System.Windows.Forms.AutoScaleMode.Font;
            FCodeEditorForm.BackColor           = System.Drawing.Color.Silver;
            FCodeEditorForm.ClientSize          = new System.Drawing.Size(881, 476);
            FCodeEditorForm.ControlBox          = false;
            FCodeEditorForm.FormBorderStyle     = System.Windows.Forms.FormBorderStyle.None;
            FCodeEditorForm.MaximizeBox         = false;
            FCodeEditorForm.MinimizeBox         = false;
            FCodeEditorForm.ShowIcon            = false;
            FCodeEditorForm.ShowInTaskbar       = false;
            FCodeEditorForm.SizeGripStyle       = System.Windows.Forms.SizeGripStyle.Hide;
            FCodeEditorForm.TopMost             = true;
            FCodeEditorForm.Show();

            FEditor      = new CodeEditor(FCodeEditorForm, FLogger);
            FEditor.Dock = DockStyle.Fill;
            FCodeEditorForm.Controls.Add(FEditor);

            FErrorTableViewer              = new TableViewer();
            FErrorTableViewer.Dock         = DockStyle.Bottom;
            FErrorTableViewer.TabIndex     = 0;
            FErrorTableViewer.DoubleClick += FErrorTableViewerDoubleClick;
            FErrorTableViewer.AutoSize     = true;
            FErrorTableViewer.AutoSizeMode = AutoSizeMode.GrowAndShrink;
            FErrorTableViewer.MaximumSize  = new Size(0, 100);

            Controls.Add(FCodeEditorForm);
            Controls.Add(FErrorTableViewer);

            ResumeLayout(false);
            PerformLayout();

            var registry = new MappingRegistry();

            registry.RegisterDefaultMapping <IEnumerable <Column>, ErrorCollectionColumnProvider>();
            registry.RegisterMapping <CompilerError, IEnumerable <ICell>, ErrorCellProvider>();
            registry.RegisterMapping <RuntimeError, IEnumerable <ICell>, RuntimeErrorCellProvider>();

            FErrorTableViewer.Registry = registry;
            FErrorTableViewer.Input    = FErrorList;

            FEditor.LinkClicked += FEditor_LinkClicked;
        }
示例#9
0
        public HDEHost()
        {
            // Set vvvv.exe path
            ExePath = Path.GetFullPath(Path.Combine(Path.GetDirectoryName((typeof(HDEHost).Assembly.Location)), @"..\.."));

            //add repository paths from commandline
            //from commandline
            var repoArg             = "/package-repositories";
            var packageRepositories = AssemblyProbing.ParseCommandLine(repoArg);

            //from args.txt
            var argsFile = Path.Combine(ExePath, "args.txt");

            if (File.Exists(argsFile))
            {
                var args      = File.ReadAllText(argsFile);
                var repoPaths = args.Split(new string[] { "\r", "\r\n", "\n" }, StringSplitOptions.RemoveEmptyEntries)
                                .Where(l => l.StartsWith(repoArg))
                                .SelectMany(r => r.Substring(repoArg.Length + 1).Trim('"').Split(';'));

                packageRepositories = packageRepositories.Union(repoPaths).ToArray();
            }

            AssemblyProbing.AddPackageRepositories(packageRepositories);

            //the built-in one
            AssemblyProbing.AddPackageRepository(PacksPath);
            //the one where the user is supposed to install packages
            AssemblyProbing.AddPackageRepository(UserPacksPatch);


            // Set name to vvvv thread for easier debugging.
            Thread.CurrentThread.Name = "vvvv";

            // Create a windows forms sync context (FileSystemWatcher runs asynchronously).
            var context = SynchronizationContext.Current;

            if (context == null)
            {
                // We need to create a user control to get a sync context.
                var control = new UserControl();
                context = SynchronizationContext.Current;
                control.Dispose();

                Debug.Assert(context != null, "SynchronizationContext not set.");
            }

            // Register at least one ICommandHistory for top level element ISolution
            var mappingRegistry = new MappingRegistry();

            mappingRegistry.RegisterMapping <ISolution, ICommandHistory, CommandHistory>(MapInstantiation.PerInstanceAndItsChilds);

            var location = Shell.CallerPath.ConcatPath(@"..\..\lib\nodes\plugins").ConcatPath("Solution.sln");

            Solution = new Solution(location, mappingRegistry);

            EnumManager.SetHDEHost(this);

            Logger = new DefaultLogger();

            IORegistry = new IORegistry();

            // Will tell Windows Forms that a message loop is indeed running
            Application.RegisterMessageLoop(IsSendingMessages);
        }
示例#10
0
 //set mapper
 public void CreateMapper(MappingRegistry registry)
 {
     Mapper = new ModelMapper(this, registry);
 }
示例#11
0
 //set mapper
 public void CreateMapper(MappingRegistry registry)
 {
     Mapper = new ModelMapper(this, registry);
 }
示例#12
0
 public static void Register()
 {
     MappingRegistry.RegisterMap <sourcemodels.BasketItemCreateModel, targetmodels.BasketItemChangeModel>();
     MappingRegistry.RegisterMap <sourcemodels.BasketItemChangeModel, targetmodels.BasketItemChangeModel>();
 }
示例#13
0
 /// <summary>
 /// Hook to register mappings in the registry.
 /// </summary>
 protected virtual void InitializeMappingRegistry(MappingRegistry registry)
 {
 }