public VisualElement Build(InspectorContext <AndroidSettings> context)
        {
            var root = new VisualElement();

            context.DoDefaultGui(root, nameof(AndroidSettings.PackageName));
            context.DoDefaultGui(root, nameof(AndroidSettings.TargetArchitectures));

            var minApiPopup = new PopupField <int>(
                ObjectNames.NicifyVariableName(nameof(AndroidSettings.MinAPILevel)),
                AndroidSettings.s_AndroidCodeNames.Keys.ToList(),
                0,
                value => AndroidSettings.s_AndroidCodeNames[value],
                value => AndroidSettings.s_AndroidCodeNames[value])
            {
                bindingPath = nameof(AndroidSettings.MinAPILevel)
            };

            root.contentContainer.Add(minApiPopup);

            m_TargetApiPopup = new PopupField <int>(
                ObjectNames.NicifyVariableName(nameof(AndroidSettings.TargetAPILevel)),
                AndroidSettings.s_AndroidCodeNames.Keys.ToList(),
                0,
                value => AndroidSettings.s_AndroidCodeNames[value],
                value => AndroidSettings.s_AndroidCodeNames[value])
            {
                bindingPath = nameof(AndroidSettings.TargetAPILevel)
            };
            root.contentContainer.Add(m_TargetApiPopup);

            return(root);
        }
Пример #2
0
        /// <summary>
        /// Initializes this instance of the Glimpse runtime.
        /// </summary>
        /// <returns>
        ///   <c>true</c> if system initialized successfully, <c>false</c> otherwise
        /// </returns>
        public bool Initialize()
        {
            CreateAndStartGlobalExecutionTimer(Configuration.FrameworkProvider.HttpRequestStore);

            var logger = Configuration.Logger;
            var policy = GetRuntimePolicy(RuntimeEvent.Initialize);

            if (policy == RuntimePolicy.Off)
            {
                return(false);
            }

            // Double checked lock to ensure thread safety. http://en.wikipedia.org/wiki/Double_checked_locking_pattern
            if (!IsInitialized)
            {
                lock (LockObj)
                {
                    if (!IsInitialized)
                    {
                        var messageBroker = Configuration.MessageBroker;

                        var tabsThatRequireSetup = Configuration.Tabs.Where(tab => tab is ITabSetup).Select(tab => tab);
                        foreach (ITabSetup tab in tabsThatRequireSetup)
                        {
                            var key = CreateKey(tab);
                            try
                            {
                                var setupContext = new TabSetupContext(logger, messageBroker, () => GetTabStore(key));
                                tab.Setup(setupContext);
                            }
                            catch (Exception exception)
                            {
                                logger.Error(Resources.InitializeTabError, exception, key);
                            }
                        }

                        var inspectorContext = new InspectorContext(logger, Configuration.ProxyFactory, messageBroker, Configuration.TimerStrategy, Configuration.RuntimePolicyStrategy);

                        foreach (var inspector in Configuration.Inspectors)
                        {
                            try
                            {
                                inspector.Setup(inspectorContext);
                                logger.Debug(Resources.GlimpseRuntimeInitializeSetupInspector, inspector.GetType());
                            }
                            catch (Exception exception)
                            {
                                logger.Error(Resources.InitializeInspectorError, exception, inspector.GetType());
                            }
                        }

                        PersistMetadata();

                        IsInitialized = true;
                    }
                }
            }

            return(policy != RuntimePolicy.Off);
        }
Пример #3
0
        protected override void OnUpdate(InspectorContext <GlobalObjectId> context)
        {
            var id        = context.Data;
            var defaultId = new GlobalObjectId();

            m_Field.SetValueWithoutNotify(id.assetGUID == defaultId.assetGUID
                ? null
                : GlobalObjectId.GlobalObjectIdentifierToObjectSlow(context.Data));
        }
    private void Inspect(InspectorContext context)
    {
        IEnumerable <IEntityInspector> inspectors = GetEntityInspectors(context.Entry);

        foreach (IEntityInspector inspector in inspectors)
        {
            inspector.Inspect(context);
        }
    }
Пример #5
0
        public VisualElement Build(InspectorContext <DirectoryInfo> context)
        {
            m_TextField = new TextField(context.PrettyName);
            m_TextField.RegisterValueChangedCallback(evt =>
            {
                context.Data = new DirectoryInfo(evt.newValue);
            });

            return(m_TextField);
        }
Пример #6
0
 protected override void OnChanged(InspectorContext <GUID> context, ChangeEvent <Object> evt)
 {
     if (null != evt.newValue && evt.newValue)
     {
         context.Data = new GUID(AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(evt.newValue)));
     }
     else
     {
         context.Data = default;
     }
 }
Пример #7
0
 protected override void OnChanged(InspectorContext <GlobalObjectId> context, ChangeEvent <Object> evt)
 {
     if (null != evt.newValue && evt.newValue)
     {
         context.Data = GlobalObjectId.GetGlobalObjectIdSlow(evt.newValue);
     }
     else
     {
         context.Data = default;
     }
 }
Пример #8
0
        void LoadModule(string path, InspectorContext context)
        {
            Dictionary <Assembly, string> instanciableTypes = new Dictionary <Assembly, string> ();

            Console.WriteLine("Loading {0}...", path);
            foreach (var file in Directory.EnumerateFiles(path, "*.dll"))
            {
                var fileName = Path.GetFileName(file);
                Console.WriteLine("[{0}] Found.", fileName);
                try
                {
                    var assembly = Assembly.LoadFile(file);
                    instanciableTypes.Add(assembly, file);
                }
                catch (Exception ex)
                {
                    Console.WriteLine("[{0}] Error loading.", fileName);
                    //Console.WriteLine(ex);
                }
            }

            foreach (var assemblyTypes in instanciableTypes)
            {
                try
                {
                    var interfaceType = typeof(IInspectorTabModule);
                    var types         = assemblyTypes.Key.GetTypes()
                                        .Where(interfaceType.IsAssignableFrom);

                    Console.WriteLine("[{0}] Loaded.", assemblyTypes.Value);
                    foreach (var type in types)
                    {
                        Console.WriteLine("[{0}] Creating instance {1}", assemblyTypes.Key, type);
                        try
                        {
                            if (Activator.CreateInstance(type) is IInspectorTabModule element)
                            {
                                context.Modules.Add(element);
                            }
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex);
                        }
                        Console.WriteLine("[{0}] Loaded", type);
                    }
                }
                catch (Exception ex)
                {
                }
            }
        }
        public VisualElement Build(InspectorContext <ClassicScriptingSettings> context)
        {
            var root = new VisualElement();

            context.DoDefaultGui(root, nameof(ClassicScriptingSettings.ScriptingBackend));
            context.DoDefaultGui(root, nameof(ClassicScriptingSettings.Il2CppCompilerConfiguration));
            context.DoDefaultGui(root, nameof(ClassicScriptingSettings.UseIncrementalGC));

            m_ScriptingBackend            = root.Q <EnumField>(nameof(ClassicScriptingSettings.ScriptingBackend));
            m_Il2CppCompilerConfiguration = root.Q <VisualElement>(nameof(ClassicScriptingSettings.Il2CppCompilerConfiguration));

            return(root);
        }
Пример #10
0
        public VisualElement Build(InspectorContext <BuildTarget> context)
        {
            m_TargetPopup = new PopupField <BuildTarget>(GetAvailableTargets(), 0, GetDisplayName, GetDisplayName)
            {
                label = context.PrettyName
            };

            m_TargetPopup.RegisterValueChangedCallback(evt =>
            {
                context.Data = evt.newValue;
            });
            return(m_TargetPopup);
        }
Пример #11
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            BreezeConfig.RegisterBreeze();

            Database.SetInitializer(new InspectorContext.ContextInitializer());
            var context = new InspectorContext();
            context.Database.Initialize(true);
        }
Пример #12
0
        public void SetPropertiesOnConstruct()
        {
            var loggerMock  = new Mock <ILogger>();
            var factoryMock = new Mock <IProxyFactory>();
            var brokerMock  = new Mock <IMessageBroker>();
            var timerMock   = new Mock <IExecutionTimer>();

            var context = new InspectorContext(loggerMock.Object, factoryMock.Object, brokerMock.Object, () => timerMock.Object, () => RuntimePolicy.On);

            Assert.NotNull(context);
            Assert.Equal(loggerMock.Object, context.Logger);
            Assert.Equal(factoryMock.Object, context.ProxyFactory);
            Assert.Equal(brokerMock.Object, context.MessageBroker);
            Assert.Equal(timerMock.Object, context.TimerStrategy());
        }
Пример #13
0
        void Initialize()
        {
            NSApplication.SharedApplication.SetAutomaticCustomizeTouchBarMenuItemEnabled(true);
            touchbar = new NSTouchBar();
            service  = ToolbarService.Current;
            context  = InspectorContext.Current;

            if (context.Manager == null)
            {
                var inspectorDelegate = new MacInspectorDelegate();
                inspectorDelegate.InitializeManager(context, service);
            }

            context.FocusedViewChanged += Context_FocusedViewChanged;
        }
Пример #14
0
        public VisualElement Build(InspectorContext <T> context)
        {
            m_Field = new ObjectField(context.PrettyName)
            {
                allowSceneObjects = false
            };

            var asset = context.Attributes.GetAttribute <AssetGuidAttribute>();

            Assert.IsTrue(typeof(UnityEngine.Object).IsAssignableFrom(asset.Type));
            m_Field.objectType = asset.Type;

            m_Field.RegisterValueChangedCallback(evt => OnChanged(context, evt));
            return(m_Field);
        }
Пример #15
0
        public void InitializeManager(InspectorContext context, ToolbarService service)
        {
            LoadModules(context);

            var over     = new MacBorderedWindow(CGRect.Empty, NSColor.Green);
            var next     = new MacBorderedWindow(CGRect.Empty, NSColor.Red);
            var previous = new MacBorderedWindow(CGRect.Empty, NSColor.Blue);
            var acc      = new MacAccessibilityWindow(new CGRect(10, 10, 600, 700));
            var ins      = new InspectorWindow(this, new CGRect(10, 10, 600, 700));;
            var tool     = new MacToolbarWindow(this, new CGRect(10, 10, 100, 700));

            tool.ShowToolkit(false);
            var manager = new InspectorManager(this, over, next, previous, acc, ins, tool);

            context.Initialize(manager, false);
            service.SetDelegate(this);
        }
Пример #16
0
        public void LoadModules(InspectorContext context)
        {
            var modules = InspectorContext.Current.ModulesDirectoryPath;

            Console.WriteLine("Loading modules from: {0}", modules);
            if (!Directory.Exists(modules))
            {
                Console.WriteLine("Error: folder not found.");
                return;
            }

            var modulesDirectories = Directory.EnumerateDirectories(modules);

            Console.WriteLine("{0} module/s found.", modulesDirectories.Count());
            foreach (var module in modulesDirectories)
            {
                LoadModule(module, context);
            }
        }
Пример #17
0
        static bool TryGetDrawer <TValue>(
            InspectorVisitor <T> visitor,
            IProperty property,
            PropertyPath propertyPath,
            string propertyName,
            InspectorVisitLevel visitLevel)
        {
            var inspector = CustomInspectorDatabase.GetPropertyDrawer <TValue>(property);

            if (null == inspector)
            {
                return(false);
            }
            var proxy           = new InspectorContext <TValue>(visitor.VisitorContext.Binding, property, propertyPath, propertyName, visitLevel);
            var customInspector = new CustomInspectorElement <TValue>(inspector, proxy);

            visitor.VisitorContext.Parent.contentContainer.Add(customInspector);
            inspector.Update(proxy);
            return(true);
        }
Пример #18
0
        public static async Task Run(string solutionPath)
        {
            var buildHelper = new BuildHelper();
            var solution    = await buildHelper.OpenSolutionAsync(solutionPath);

            var context = await InspectorContext.Create(solution);


            var members = await MemberExtractorVisitor.GetMembers(context, solution);

            var filter = "ProcessOrder";

            Console.WriteLine($"Find the sequence of methods calling '{filter}'\r\n");

            var processOrderMethod = members
                                     .OfType <MethodDeclarationSyntax>()
                                     .Where(m => m.Identifier.ToString().Contains(filter))
                                     .FirstOrDefault();

            // walk the call graph upwards and find the "top" (not referenced) method(s)
            var topMembers = DeclarationUpVisitor.Start(context, processOrderMethod);
            var topMember  = topMembers
                             .OfType <MethodDeclarationSyntax>()
                             .First();

            Console.WriteLine($"The top method we walk down is '{topMember.Identifier.ToString()}'");

            var sequence = CallSequenceVisitor2.Start(context, topMember, _ruleInterfaceIdentifier);
            var str      = string.Join("\r\n", sequence.Select(s => "[" + string.Join(";", s) + "]"));

            Console.WriteLine(str);


            Console.WriteLine("\r\nPress any key to exit");
            Console.ReadKey();
        }
 public InspectorVisitor(BindingContextElement root)
 {
     Context = new InspectorContext(root);
 }
Пример #20
0
 public void Update(InspectorContext <BuildTarget> proxy)
 {
     m_TargetPopup.SetValueWithoutNotify(proxy.Data);
 }
Пример #21
0
 public void Update(InspectorContext <DirectoryInfo> context)
 {
     m_TextField.SetValueWithoutNotify(context.Data.GetRelativePath());
 }
 public void Update(InspectorContext <AndroidSettings> context)
 {
     // Nothing to do.
 }
Пример #23
0
 protected override void OnUpdate(InspectorContext <GUID> context)
 {
     m_Field.SetValueWithoutNotify(AssetDatabase.LoadMainAssetAtPath(AssetDatabase.GUIDToAssetPath(context.Data.ToString())));
 }
Пример #24
0
 protected abstract void OnUpdate(InspectorContext <T> context);
Пример #25
0
 protected abstract void OnChanged(InspectorContext <T> context, ChangeEvent <UnityEngine.Object> evt);
Пример #26
0
 public void Update(InspectorContext <T> context)
 {
     OnUpdate(context);
 }
 public void Update(InspectorContext <ClassicScriptingSettings> context)
 {
     m_Il2CppCompilerConfiguration.SetEnabled((ScriptingImplementation)m_ScriptingBackend.value == ScriptingImplementation.IL2CPP);
 }