示例#1
0
        public void FixtureTearDown()
        {
            context.Dispose();

            EmulationManager.Reset();
            xwtProvider.Dispose();
            TemporaryFilesManager.Instance.OnFileCreated -= HandleTemporaryFileCreated;
            EmulationManager.Instance.EmulationChanged   -= RemovedTemporaryFiles;
        }
示例#2
0
        public Monitor()
        {
            swallowExceptions = ConfigurationManager.Instance.Get(ConfigurationSection, "consume-exceptions-from-command", true);
            breakOnException  = ConfigurationManager.Instance.Get(ConfigurationSection, "break-script-on-exception", true);

            CurrentBindingFlags = BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static;
            Commands            = new HashSet <Command>(new CommandComparer());
            TypeManager.Instance.AutoLoadedType += InitializeAutoCommand;

            this.emulationManager = EmulationManager.Instance;

            pythonRunner = new MonitorPythonEngine(this);
            Quitted     += pythonRunner.Dispose;
            var startingCurrentDirectory = Environment.CurrentDirectory;

            variableCollections = new Dictionary <VariableType, Dictionary <string, Token> >
            {
                { VariableType.Variable, variables },
                { VariableType.Macro, macros },
                { VariableType.Alias, aliases },
            };
            SetBasePath();
            InitCommands();
            emulationManager.CurrentEmulation.MachineAdded   += RegisterResetCommand;
            emulationManager.CurrentEmulation.MachineRemoved += UpdateMonitorPrompt;
            emulationManager.EmulationChanged += () =>
            {
                Token oldOrigin;
                variables.TryGetValue(OriginVariable, out oldOrigin);

                variables.Clear();
                SetVariable(CurrentDirectoryVariable, new PathToken("@" + startingCurrentDirectory), variables);
                if (oldOrigin != null)
                {
                    SetVariable(OriginVariable, oldOrigin, variables);
                }
                macros.Clear();
                aliases.Clear();
                Machine = null;
                emulationManager.CurrentEmulation.MachineAdded += RegisterResetCommand;
                monitorPath.Reset();
            };

            SetVariable(CurrentDirectoryVariable, new PathToken("@" + startingCurrentDirectory), variables);
            CurrentNumberFormat = ConfigurationManager.Instance.Get <NumberModes>(ConfigurationSection, "number-format", NumberModes.Hexadecimal);

            JoinEmulation();
        }