Ejemplo n.º 1
0
        /// <summary>
        /// Create the appropriate designer control.
        /// </summary>
        public IDesignerControl CreateDesigner(IIde ide, IXmlStore store, IXmlModel model, IServiceProvider serviceProvider, IVsTextLines textBuffer)
        {
            var viewModel = new XmlMenuViewModel(store, model, serviceProvider, textBuffer);

            viewModel.Initialize();
            return(new XmlMenuDesignerControl(ide, serviceProvider, viewModel));
        }
Ejemplo n.º 2
0
        /////////////////////////////////////////////////////////
        #region Constructors

        /// <summary>
        /// Initializes a new instance of the <see cref="SolutionPagePresenter"/> class.
        /// </summary>
        /// <param name="view">The view.</param>
        /// <param name="viewModel">The view model.</param>
        /// <param name="model">The model.</param>
        /// <param name="viewStateProvider">A common <see cref="IViewStateProvider"/>.</param>
        /// <param name="fileSystem">The file sytem access.</param>
        /// <param name="systemInterface">The interface for system operations.</param>
        /// <param name="userIOInterface">The user IO interface.</param>
        /// <param name="ide">Information about the current Visual Studio instance.</param>
        /// <exception cref="ArgumentNullException">Any parameter is null.</exception>
        public SolutionPagePresenter([NotNull] ISolutionPageView view,
                                     [NotNull] ISolutionPageViewModel viewModel,
                                     [NotNull] ISolutionPageModel model,
                                     [NotNull] IViewStateProvider viewStateProvider,
                                     [NotNull] IFileSystem fileSystem,
                                     [NotNull] ISystemInterface systemInterface,
                                     [NotNull] IUserIOInterface userIOInterface,
                                     [NotNull] IIde ide)
            : base(view, viewModel)
        {
            ThrowIfNull(model, nameof(model));
            ThrowIfNull(viewStateProvider, nameof(viewStateProvider));
            ThrowIfNull(fileSystem, nameof(fileSystem));
            ThrowIfNull(systemInterface, nameof(systemInterface));
            ThrowIfNull(userIOInterface, nameof(userIOInterface));
            ThrowIfNull(ide, nameof(ide));

            _model             = model;
            _viewStateProvider = viewStateProvider;
            _fileSystem        = fileSystem;
            _systemInterface   = systemInterface;
            _userIOInterface   = userIOInterface;
            _ide           = ide;
            _configuration = _model.LoadConfiguration();
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Start looking for JDWP processes now.
 /// </summary>
 internal static void StartLaunchMonitor(IIde ide, IDevice device, string apkPath, string packageName, int apiLevel, int launchFlags, Action<LauncherStates, string> stateUpdate, CancellationToken token)
 {
     OutputPaneLog.EnsureLoaded(ide);
     var newMonitor = new LaunchMonitor(ide, device, apkPath, packageName, apiLevel, launchFlags, stateUpdate, token);
     monitor = newMonitor;
     newMonitor.Start();
 }
Ejemplo n.º 4
0
        public override ToolStripMenuItem[] CreateMenus(IIde ide)
        {
            var menuItems = new List <Tuple <ToolStripMenuItem, Func <bool> > >();

            var update = Ut.Lambda(() =>
            {
                foreach (var tuple in menuItems)
                {
                    tuple.Item1.Checked = tuple.Item2();
                }
            });

            var createItem = Ut.Lambda((string label, Action action, Func <bool> checkedFunc) =>
            {
                var menuItem = new ToolStripMenuItem(label, null, delegate { action(); update(); });
                menuItems.Add(new Tuple <ToolStripMenuItem, Func <bool> >(menuItem, checkedFunc));
                return(menuItem);
            });

            var ret = Ut.NewArray(
                new ToolStripMenuItem("&Semantics", null,
                                      createItem("Input &numbers line-wise, 0 if not a number", () => { _settings.NumberInputSemantics = NumberInputSemantics.LinewiseLenient; }, () => _settings.NumberInputSemantics == NumberInputSemantics.LinewiseLenient),
                                      createItem("Input n&umbers line-wise, error if not a number", () => { _settings.NumberInputSemantics = NumberInputSemantics.LinewiseStrict; }, () => _settings.NumberInputSemantics == NumberInputSemantics.LinewiseStrict),
                                      createItem("Input nu&mbers by skipping non-numerical text, error at EOF", () => { _settings.NumberInputSemantics = NumberInputSemantics.Minimal; }, () => _settings.NumberInputSemantics == NumberInputSemantics.Minimal),
                                      new ToolStripSeparator(),
                                      createItem("Output &characters as bytes", () => { _settings.OutputSemantics = CharacterSemantics.Bytewise; }, () => _settings.OutputSemantics == CharacterSemantics.Bytewise),
                                      createItem("Output c&haracters as Unicode", () => { _settings.OutputSemantics = CharacterSemantics.Unicode; }, () => _settings.OutputSemantics == CharacterSemantics.Unicode)
                                      )
                );

            update();
            return(ret);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Default ctor
        /// </summary>
        public ApkRunner(IIde ide, string apkPath, string packageName, string activity, bool debuggable, int launchFlags)
        {
            this.ide = ide;
            this.apkPath = apkPath;
            this.packageName = packageName;
            this.activity = activity;
            this.debuggable = debuggable;
            this.launchFlags = launchFlags;
            cancellationTokenSource = new CancellationTokenSource();
            outputPane = ide.CreateDot42OutputPane();
            DeployApk = true;

            // Load package
            try
            {
                var apk = new ApkFile(apkPath);
                if (!apk.Manifest.TryGetMinSdkVersion(out minSdkVersion))
                    minSdkVersion = -1;
            }
            catch (Exception ex)
            {
                minSdkVersion = -1;
                ErrorLog.DumpError(ex);
            }
        }
Ejemplo n.º 6
0
        public override ToolStripMenuItem[] CreateMenus(IIde ide)
        {
            var menuItems = new List<Tuple<ToolStripMenuItem, Func<bool>>>();

            var update = Ut.Lambda(() =>
            {
                foreach (var tuple in menuItems)
                    tuple.Item1.Checked = tuple.Item2();
            });

            var createItem = Ut.Lambda((string label, Action action, Func<bool> checkedFunc) =>
            {
                var menuItem = new ToolStripMenuItem(label, null, delegate { action(); update(); });
                menuItems.Add(new Tuple<ToolStripMenuItem, Func<bool>>(menuItem, checkedFunc));
                return menuItem;
            });

            var ret = Ut.NewArray(
                new ToolStripMenuItem("&Semantics", null,
                    createItem("Input &numbers line-wise, 0 if not a number", () => { _settings.NumberInputSemantics =  NumberInputSemantics.LinewiseLenient; }, () => _settings.NumberInputSemantics == NumberInputSemantics.LinewiseLenient),
                    createItem("Input n&umbers line-wise, error if not a number", () => { _settings.NumberInputSemantics = NumberInputSemantics.LinewiseStrict; }, () => _settings.NumberInputSemantics == NumberInputSemantics.LinewiseStrict),
                    createItem("Input nu&mbers by skipping non-numerical text, error at EOF", () => { _settings.NumberInputSemantics = NumberInputSemantics.Minimal; }, () => _settings.NumberInputSemantics == NumberInputSemantics.Minimal),
                    new ToolStripSeparator(),
                    createItem("Output &characters as bytes", () => { _settings.OutputSemantics = CharacterSemantics.Bytewise; }, () => _settings.OutputSemantics == CharacterSemantics.Bytewise),
                    createItem("Output c&haracters as Unicode", () => { _settings.OutputSemantics = CharacterSemantics.Unicode; }, () => _settings.OutputSemantics == CharacterSemantics.Unicode)
                )
            );
            update();
            return ret;
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Default ctor
        /// </summary>
        public BarRunner(IIde ide, string barPath, string packageName, string activity, bool debuggable, int launchFlags)
        {
            this.ide                = ide;
            this.barPath            = barPath;
            this.packageName        = packageName;
            this.activity           = activity;
            this.debuggable         = debuggable;
            this.launchFlags        = launchFlags;
            cancellationTokenSource = new CancellationTokenSource();
            outputPane              = ide.CreateDot42OutputPane();

            // Load package

            /*try
             * {
             *  var apk = new ApkFile(barPath);
             *  if (!apk.Manifest.TryGetMinSdkVersion(out minSdkVersion))
             *      minSdkVersion = -1;
             * }
             * catch (Exception ex)
             * {
             *  minSdkVersion = -1;
             *  ErrorLog.DumpError(ex);
             * }*/
        }
Ejemplo n.º 8
0
        public override ToolStripMenuItem[] CreateMenus(IIde ide)
        {
            var menuItems = new List<Tuple<ToolStripMenuItem, Func<bool>>>();

            var update = Ut.Lambda(() =>
            {
                foreach (var tuple in menuItems)
                    tuple.Item1.Checked = tuple.Item2();
            });

            var createItem = Ut.Lambda((string label, Action action, Func<bool> checkedFunc) =>
            {
                var menuItem = new ToolStripMenuItem(label, null, delegate { action(); update(); });
                menuItems.Add(new Tuple<ToolStripMenuItem, Func<bool>>(menuItem, checkedFunc));
                return menuItem;
            });

            var ret = Ut.NewArray<ToolStripMenuItem>(
                new ToolStripMenuItem("&Semantics", null,
                    createItem("Input as &numbers", () => { _settings.InputType = IOType.Numbers; }, () => _settings.InputType == IOType.Numbers),
                    createItem("Input as &characters", () => { _settings.InputType = IOType.Characters; }, () => _settings.InputType == IOType.Characters),
                    new ToolStripSeparator(),
                    createItem("Output as nu&mbers", () => { _settings.OutputType = IOType.Numbers; }, () => _settings.OutputType == IOType.Numbers),
                    createItem("Output as c&haracters", () => { _settings.OutputType = IOType.Characters; }, () => _settings.OutputType == IOType.Characters),
                    new ToolStripSeparator(),
                    createItem("Cells are &bytes", () => { _settings.CellType = CellType.Bytes; }, () => _settings.CellType == CellType.Bytes),
                    createItem("Cells are &signed 32-bit integers", () => { _settings.CellType = CellType.Int32s; }, () => _settings.CellType == CellType.Int32s),
                    createItem("Cells are &unsigned 32-bit integers", () => { _settings.CellType = CellType.UInt32s; }, () => _settings.CellType == CellType.UInt32s),
                    createItem("Cells are &arbitrary-size integers", () => { _settings.CellType = CellType.BigInts; }, () => _settings.CellType == CellType.BigInts)
                )
            );
            update();
            return ret;
        }
Ejemplo n.º 9
0
        private CodeChangeHandler(IIde ide)
        {
            this.ide = ide;
            server   = new TcpCommunicatorServer(Constants.DEFAULT_PORT);

            ide.DocumentSaved   += Ide_DocumentSaved;
            ide.DocumentChanged += Ide_DocumentChanged;
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Start looking for JDWP processes now.
        /// </summary>
        internal static void StartLaunchMonitor(IIde ide, IDevice device, string apkPath, string packageName, int apiLevel, int launchFlags, Action <LauncherStates, string> stateUpdate, CancellationToken token)
        {
            OutputPaneLog.EnsureLoaded(ide);
            var newMonitor = new LaunchMonitor(ide, device, apkPath, packageName, apiLevel, launchFlags, stateUpdate, token);

            monitor = newMonitor;
            newMonitor.Start();
        }
Ejemplo n.º 11
0
        private static void updateWatch(IIde ide)
        {
            var env = ide.GetEnvironment() as HexagonyEnv;

            if (env != null)
            {
                env.UpdateWatch();
            }
        }
Ejemplo n.º 12
0
        public static async Task Init(IIde ide, string ideName)
        {
            codeChangeHandler = new CodeChangeHandler(ide);
            if (!await mqttBroker.IsRunning())
            {
                await mqttBroker.StartAsync();
            }

            await mqttClient.ConnectAsync(ideName);
        }
Ejemplo n.º 13
0
        private void RegisterGlobalResources(IResourceProvider resourceProvider, IIde ideAccess,
                                             Dictionary <object, object> resources)
        {
            resourceProvider.Culture = new CultureInfo(ideAccess.LCID);

            foreach (var resource in resources.Where(resource => !Application.Current.Resources.Contains(resource.Key)))
            {
                Application.Current.Resources.Add(resource.Key, resource.Value);
            }
        }
Ejemplo n.º 14
0
        private void updateAnnotationSets(IIde ide)
        {
            _annotationSets.DropDownItems.Clear();
            foreach (var kvp in _settings.MemoryAnnotations)
            {
                var setName = kvp.Key;
                var super   = new ToolStripMenuItem(setName);
                _annotationSets.DropDownItems.Add(super);
                if (setName == _settings.LastMemoryAnnotationSet)
                {
                    super.Checked = true;
                }

                super.DropDownItems.AddRange(Ut.NewArray(
                                                 new ToolStripMenuItem("&Switch to this set", null, delegate
                {
                    _settings.LastMemoryAnnotationSet = setName;
                    updateAnnotationSets(ide);
                    updateWatch(ide);
                })
                {
                    Checked = setName == _settings.LastMemoryAnnotationSet
                },
                                                 new ToolStripMenuItem("&Rename this set...", null, delegate
                {
                    var newName = InputBox.GetLine("Enter new name for this annotation set:", setName, "Rename annotation set", "&OK", "&Cancel");
                    if (newName != null && newName != setName)
                    {
                        _settings.MemoryAnnotations[newName] = _settings.MemoryAnnotations[setName];
                        _settings.MemoryAnnotations.Remove(setName);
                        if (_settings.LastMemoryAnnotationSet == setName)
                        {
                            _settings.LastMemoryAnnotationSet = newName;
                        }
                        updateAnnotationSets(ide);
                    }
                }),
                                                 new ToolStripMenuItem("&Delete this set", null, delegate
                {
                    _settings.MemoryAnnotations.Remove(setName);
                    _settings.LastMemoryAnnotationSet = _settings.MemoryAnnotations.Keys.FirstOrDefault("(default)");
                    if (!_settings.MemoryAnnotations.ContainsKey(_settings.LastMemoryAnnotationSet))
                    {
                        _settings.MemoryAnnotations[_settings.LastMemoryAnnotationSet] = new Dictionary <Direction, Dictionary <PointAxial, string> >();
                    }
                    updateAnnotationSets(ide);
                    updateWatch(ide);
                })
                                                 ));
            }
            _annotationSets.DropDownItems.Add("-");
            _annotationSets.DropDownItems.Add(new ToolStripMenuItem("&Create new annotation set...", null, delegate { createAnnotationSet(false, ide); }));
            _annotationSets.DropDownItems.Add(new ToolStripMenuItem("C&opy current annotation set...", null, delegate { createAnnotationSet(true, ide); }));
        }
Ejemplo n.º 15
0
 /// <summary>
 /// Default ctor
 /// </summary>
 public LaunchMonitor(IIde ide, IDevice device, string apkPath, string packageName, int apiLevel, int launchFlags, Action <LauncherStates, string> stateUpdate, CancellationToken token)
 {
     this.ide         = ide;
     this.device      = device;
     this.apkPath     = apkPath;
     this.packageName = packageName;
     this.apiLevel    = apiLevel;
     this.launchFlags = launchFlags;
     this.stateUpdate = stateUpdate;
     this.token       = token;
     outputPane       = ide.CreateDot42OutputPane();
 }
Ejemplo n.º 16
0
        /// <summary>
        /// Now launch the actualk VS debugger around the given debugger.
        /// </summary>
        internal static void LaunchVsDebugEngine(IIde ide, string apkPath, DebuggerLib.Debugger debugger, int launchFlags, Action<LauncherStates, string> stateUpdate)
        {
            // Save debugger
            var key = Guid.NewGuid();
            lock (debuggersLock)
            {
                debuggers.Add(key, Tuple.Create(debugger, stateUpdate));
            }

            // Now launch the IDE's debug engine
            ide.LaunchDebugEngine(apkPath, debugger, key, launchFlags, stateUpdate);
        }
Ejemplo n.º 17
0
        /////////////////////////////////////////////////////////
        #region Constructors

        /// <summary>
        /// Initializes a new instance of the <see cref="VsoPagePresenter"/> class.
        /// </summary>
        /// <param name="vsVersion">The version of the current Visual Studio instance.</param>
        /// <param name="ide">Information about the current Visual Studio instance.</param>
        /// <param name="view">The view.</param>
        /// <param name="viewModel">The view model.</param>
        /// <exception cref="System.ArgumentNullException">Any parameter is null.</exception>
        public VsoPagePresenter([NotNull] IVisualStudioVersion vsVersion,
                                [NotNull] IIde ide,
                                [NotNull] IVsoPageView view,
                                [NotNull] IVsoPageViewModel viewModel)
            : base(view, viewModel)
        {
            ThrowIfNull(vsVersion, nameof(vsVersion));
            ThrowIfNull(ide, nameof(ide));

            _vsVersion = vsVersion;
            _ide       = ide;
        }
Ejemplo n.º 18
0
        /// <summary>
        /// Now launch the actualk VS debugger around the given debugger.
        /// </summary>
        internal static void LaunchVsDebugEngine(IIde ide, string apkPath, DebuggerLib.Debugger debugger, int launchFlags, Action <LauncherStates, string> stateUpdate)
        {
            // Save debugger
            var key = Guid.NewGuid();

            lock (debuggersLock)
            {
                debuggers.Add(key, Tuple.Create(debugger, stateUpdate));
            }

            // Now launch the IDE's debug engine
            ide.LaunchDebugEngine(apkPath, debugger, key, launchFlags, stateUpdate);
        }
Ejemplo n.º 19
0
        /// <summary>
        /// Default ctor
        /// </summary>
        public DeviceLogControl(IIde ide)
        {
            this.ide = ide;
            HideTextView();

            // Listen for events
            ide.CurrentDeviceChanged    += OnDeviceChanged;
            ide.CurrentProcessIdChanged += OnProcessIdChanged;

            // Initialize
            OnProcessIdChanged(null, null);
            OnDeviceChanged(null, null);
        }
Ejemplo n.º 20
0
        /// <summary>
        /// Default ctor
        /// </summary>
        public DeviceLogControl(IIde ide)
        {
            this.ide = ide;
            HideTextView();

            // Listen for events
            ide.CurrentDeviceChanged += OnDeviceChanged;
            ide.CurrentProcessIdChanged += OnProcessIdChanged;

            // Initialize
            OnProcessIdChanged(null, null);
            OnDeviceChanged(null, null);
        }
Ejemplo n.º 21
0
 /// <summary>
 /// Default ctor
 /// </summary>
 public DeviceSelectionDialog(IIde package, Func<DeviceItem, bool> isCompatible, string targetVersion)
 {
     Icon = Graphics.Icons.App;
     this.package = package;
     this.targetVersion = targetVersion;
     InitializeComponent();
     tbbConnectDevice.Image = Graphics.Icons32.Antenna;
     tbbRefresh.Image = Graphics.Icons32.Refresh;
     devicesListView.IsCompatibleCheck = isCompatible;
     devicesListView.DeviceRemoved += (s, x) => UpdateState();
     devicesListView.DeviceAdded += OnDeviceAdded;
     devicesListView.ItemActivated += OnItemActivated;
     UpdateState();
 }
Ejemplo n.º 22
0
 /// <summary>
 /// Default ctor
 /// </summary>
 public DeviceSelectionDialog(IIde package, Func <DeviceItem, bool> isCompatible, string targetVersion)
 {
     Icon               = Graphics.Icons.App;
     this.package       = package;
     this.targetVersion = targetVersion;
     InitializeComponent();
     tbbConnectDevice.Image            = Graphics.Icons32.Antenna;
     tbbRefresh.Image                  = Graphics.Icons32.Refresh;
     devicesListView.IsCompatibleCheck = isCompatible;
     devicesListView.DeviceRemoved    += (s, x) => UpdateState();
     devicesListView.DeviceAdded      += OnDeviceAdded;
     devicesListView.ItemActivated    += OnItemActivated;
     UpdateState();
 }
Ejemplo n.º 23
0
        private void insertByteArray(IIde ide)
        {
            string @default, selected = ide.GetSelectedText();

            try { @default = ScliptingUtil.DecodeByteArray(selected).ToHex(); }
            catch { @default = ""; }
            var line = InputBox.GetLine("Type a byte array to insert (in hexdump format; two hexadecimal digits per byte):", @default, "Esoteric IDE", "&OK", "&Cancel");

            if (line != null)
            {
                try { ide.InsertText(ScliptingUtil.EncodeByteArray(line.FromHex())); }
                catch { DlgMessage.Show("The text you entered is not valid hexadecimal. Please ensure that you enter an even number of characters 0-9/a-f.", "Esoteric IDE", DlgType.Error, "&OK"); }
            }
        }
Ejemplo n.º 24
0
 private EventHandler checkDebugging(IIde ide, Action <HexagonyEnv> action)
 {
     return((_, __) =>
     {
         var env = ide.GetEnvironment() as HexagonyEnv;
         if (env == null || env.State != ExecutionState.Debugging)
         {
             DlgMessage.Show("Program must be running but stopped in the debugger.", "Error", DlgType.Error);
         }
         else
         {
             action(env);
         }
     });
 }
Ejemplo n.º 25
0
        /////////////////////////////////////////////////////////
        #region Constructors

        public SolutionPagePresenter(SolutionPageControl view)
        {
            _view = view;
            _ide  = GetIde(_view.DataContext);

            _model = new SolutionPageModel();
            var config = _model.LoadConfiguration();

            _vm = new SolutionPageViewModel(config);

            _view.ConnectDataSource(_vm);
            ConnectEventHandler();

            FillDefault();
        }
Ejemplo n.º 26
0
 /// <summary>
 /// Default ctor
 /// </summary>
 public XmlMenuDesignerControl(IIde ide, IServiceProvider serviceProvider, IMenuViewModel viewModel)
 {
     if (ide != null)
     {
         selectionContainer = ide.CreateSelectionContainer(serviceProvider);
     }
     if (viewModel != null)
     {
         DataContext = viewModel;
     }
     InitializeComponent();
     // wait until we're initialized to handle events
     if (viewModel != null)
     {
         viewModel.PropertyChanged += OnViewModelPropertyChanged;
     }
 }
Ejemplo n.º 27
0
 /// <summary>
 /// Default ctor
 /// </summary>
 public XmlMenuDesignerControl(IIde ide, IServiceProvider serviceProvider, IMenuViewModel viewModel)
 {
     if (ide != null)
     {
         selectionContainer = ide.CreateSelectionContainer(serviceProvider);
     }
     if (viewModel != null)
     {
         DataContext = viewModel;
     }
     InitializeComponent();
     // wait until we're initialized to handle events
     if (viewModel != null)
     {
         viewModel.PropertyChanged += OnViewModelPropertyChanged;
     }
 }
Ejemplo n.º 28
0
        public override ToolStripMenuItem[] CreateMenus(IIde ide)
        {
            var menuItems = new List <Tuple <ToolStripMenuItem, Func <bool> > >();

            var ret = Ut.NewArray <ToolStripMenuItem>(
                new ToolStripMenuItem("&Insert", null,
                                      new ToolStripMenuItem("&Word from index", null, (_, __) =>
            {
                var input = InputBox.GetLine("Index to look up?", caption: "Runic");
                if (input == null || !int.TryParse(input, out var ix))
                {
                    return;
                }
                var word = WordDictionary.GetWord(ix);
                if (word == null)
                {
                    DlgMessage.Show($"The specified index is out of range. Valid range is 0–{WordDictionary.List.Length - 1}.", "Runic", DlgType.Error);
                }
                else
                {
                    ide.InsertText(word);
                }
            }),
                                      new ToolStripMenuItem("&Index from word", null, (_, __) =>
            {
                var input = InputBox.GetLine("Word to look up?", caption: "Runic");
                if (input == null)
                {
                    return;
                }
                var index = WordDictionary.GetIndex(input.ToLowerInvariant().Trim());
                if (index == -1)
                {
                    DlgMessage.Show("The specified word is not in the dictionary.", "Runic", DlgType.Error);
                }
                else
                {
                    ide.InsertText(index.ToString());
                }
            })
                                      )
                );

            return(ret);
        }
Ejemplo n.º 29
0
 /// <summary>
 /// Make sure this log is registered.
 /// </summary>
 internal static void EnsureLoaded(IIde ide)
 {
     if (log != null)
         return;
     var outputPane = ide.CreateDebugOutputPane();
     var add = false;
     lock (logLock)
     {
         if (log == null)
         {
             log = new OutputPaneLog(outputPane);
             add = true;
         }
     }
     if (add)
     {
         DLog.AddAdditionalLogger(log);                
     }
 }
Ejemplo n.º 30
0
        public override ToolStripMenuItem[] CreateMenus(IIde ide)
        {
            var inputModes = EnumStrong.GetValues<InputMode>();
            var inputModeItems = new ToolStripMenuItem[inputModes.Length];

            var setInputMode = Ut.Lambda((InputMode mode) =>
            {
                _settings.InputMode = mode;
                for (int i = 0; i < inputModes.Length; i++)
                    inputModeItems[i].Checked = (mode == inputModes[i]);
            });

            var ret = Ut.NewArray(
                new ToolStripMenuItem("&Input semantics", null, Ut.NewArray(
                    (inputModeItems[0] = new ToolStripMenuItem("Encode input as UTF-&8", null, (_, __) => setInputMode(InputMode.Utf8))),
                    (inputModeItems[1] = new ToolStripMenuItem("Encode input as UTF-1&6 (little endian)", null, (_, __) => setInputMode(InputMode.Utf16))),
                    (inputModeItems[2] = new ToolStripMenuItem("Input string is a list of &bytes", null, (_, __) => setInputMode(InputMode.Numbers))))));

            setInputMode(_settings.InputMode);
            return ret;
        }
Ejemplo n.º 31
0
        /// <summary>
        /// Make sure this log is registered.
        /// </summary>
        internal static void EnsureLoaded(IIde ide)
        {
            if (log != null)
            {
                return;
            }
            var outputPane = ide.CreateDebugOutputPane();
            var add        = false;

            lock (logLock)
            {
                if (log == null)
                {
                    log = new OutputPaneLog(outputPane);
                    add = true;
                }
            }
            if (add)
            {
                DLog.AddAdditionalLogger(log);
            }
        }
Ejemplo n.º 32
0
        private void insertInteger(IIde ide)
        {
            string @default, selected = ide.GetSelectedText();

            try
            {
                if (selected.Length == 1 && selected[0] >= 0xbc00 && selected[0] <= 0xd7a3)
                {
                    @default = (0xbbff - selected[0]).ToString();
                }
                else
                {
                    @default = new BigInteger(new byte[] { 0 }.Concat(ScliptingUtil.DecodeByteArray(selected)).Reverse().ToArray()).ToString();
                }
            }
            catch { @default = "0"; }
            var line = InputBox.GetLine("Type an integer to insert (must be greater than −7077):", @default, "Esoteric IDE", "&OK", "&Cancel");

            if (line != null)
            {
                BigInteger i;
                if (BigInteger.TryParse(line, out i) && (i >= -7076))
                {
                    if (i < 0)
                    {
                        ide.InsertText(((char)(0xbbff - i)).ToString());
                    }
                    else
                    {
                        ide.InsertText(ScliptingUtil.EncodeByteArray(i.ToByteArray().Reverse().SkipWhile(b => b == 0).DefaultIfEmpty().ToArray()));
                    }
                }
                else
                {
                    DlgMessage.Show("The integer you typed is not a valid literal integer for Sclipting. Literal integers must be greater than −7077.", "Esoteric IDE", DlgType.Error, "&OK");
                }
            }
        }
Ejemplo n.º 33
0
        /// <summary>
        /// Make sure this log is registered.
        /// </summary>
        internal static void EnsureLoaded(IIde ide, bool vsDebugPane)
        {
            if (log != null)
                return;

            var outputPane = !vsDebugPane ? ide.CreateDot42OutputPane() : ide.CreateDebugOutputPane();

            var add = false;
            lock (logLock)
            {
                if (log == null)
                {
                    log = new OutputPaneLog(outputPane, vsDebugPane?Levels.Info : Levels.Error, vsDebugPane?DContext.VSDebuggerMessage:(DContext?) null);
                    add = true;
                }
            }
            if (add)
            {
                AddAdditionalLogger(log);
                if(vsDebugPane)
                    AddToContext(DContext.VSDebuggerMessage, log);
            }
        }
Ejemplo n.º 34
0
        public override ToolStripMenuItem[] CreateMenus(IIde ide)
        {
            var inputModes     = EnumStrong.GetValues <InputMode>();
            var inputModeItems = new ToolStripMenuItem[inputModes.Length];

            var setInputMode = Ut.Lambda((InputMode mode) =>
            {
                _settings.InputMode = mode;
                for (int i = 0; i < inputModes.Length; i++)
                {
                    inputModeItems[i].Checked = (mode == inputModes[i]);
                }
            });

            var ret = Ut.NewArray(
                new ToolStripMenuItem("&Input semantics", null, Ut.NewArray(
                                          (inputModeItems[0] = new ToolStripMenuItem("Encode input as UTF-&8", null, (_, __) => setInputMode(InputMode.Utf8))),
                                          (inputModeItems[1] = new ToolStripMenuItem("Encode input as UTF-1&6 (little endian)", null, (_, __) => setInputMode(InputMode.Utf16))),
                                          (inputModeItems[2] = new ToolStripMenuItem("Input string is a list of &bytes", null, (_, __) => setInputMode(InputMode.Numbers))))));

            setInputMode(_settings.InputMode);
            return(ret);
        }
Ejemplo n.º 35
0
        public override ToolStripMenuItem[] CreateMenus(IIde ide)
        {
            var menuItems = new List <Tuple <ToolStripMenuItem, Func <bool> > >();

            var update = Ut.Lambda(() =>
            {
                foreach (var tuple in menuItems)
                {
                    tuple.Item1.Checked = tuple.Item2();
                }
            });

            var createItem = Ut.Lambda((string label, Action action, Func <bool> checkedFunc) =>
            {
                var menuItem = new ToolStripMenuItem(label, null, delegate { action(); update(); });
                menuItems.Add(new Tuple <ToolStripMenuItem, Func <bool> >(menuItem, checkedFunc));
                return(menuItem);
            });

            var ret = Ut.NewArray <ToolStripMenuItem>(
                new ToolStripMenuItem("&Semantics", null,
                                      createItem("Input as &numbers", () => { _settings.InputType = IOType.Numbers; }, () => _settings.InputType == IOType.Numbers),
                                      createItem("Input as &characters", () => { _settings.InputType = IOType.Characters; }, () => _settings.InputType == IOType.Characters),
                                      new ToolStripSeparator(),
                                      createItem("Output as nu&mbers", () => { _settings.OutputType = IOType.Numbers; }, () => _settings.OutputType == IOType.Numbers),
                                      createItem("Output as c&haracters", () => { _settings.OutputType = IOType.Characters; }, () => _settings.OutputType == IOType.Characters),
                                      new ToolStripSeparator(),
                                      createItem("Cells are &bytes", () => { _settings.CellType = CellType.Bytes; }, () => _settings.CellType == CellType.Bytes),
                                      createItem("Cells are &signed 32-bit integers", () => { _settings.CellType = CellType.Int32s; }, () => _settings.CellType == CellType.Int32s),
                                      createItem("Cells are &unsigned 32-bit integers", () => { _settings.CellType = CellType.UInt32s; }, () => _settings.CellType == CellType.UInt32s),
                                      createItem("Cells are &arbitrary-size integers", () => { _settings.CellType = CellType.BigInts; }, () => _settings.CellType == CellType.BigInts)
                                      )
                );

            update();
            return(ret);
        }
Ejemplo n.º 36
0
        public override ToolStripMenuItem[] CreateMenus(IIde ide)
        {
            var menuItems = new List <Tuple <ToolStripMenuItem, Func <bool> > >();

            var update = Ut.Lambda(() =>
            {
                foreach (var tuple in menuItems)
                {
                    tuple.Item1.Checked = tuple.Item2();
                }
            });

            var createItem = Ut.Lambda((string label, Action action, Func <bool> checkedFunc) =>
            {
                var menuItem = new ToolStripMenuItem(label, null, delegate { action(); update(); });
                menuItems.Add(new Tuple <ToolStripMenuItem, Func <bool> >(menuItem, checkedFunc));
                return(menuItem);
            });

            var ret = Ut.NewArray <ToolStripMenuItem>(
                new ToolStripMenuItem("&Semantics", null,
                                      createItem("Input as &bytes", () => { _settings.InputType = IOType.Bytes; }, () => _settings.InputType == IOType.Bytes),
                                      createItem("Input as &numbers", () => { _settings.InputType = IOType.Numbers; }, () => _settings.InputType == IOType.Numbers),
                                      new ToolStripSeparator(),
                                      createItem("Output as b&ytes", () => { _settings.OutputType = IOType.Bytes; }, () => _settings.OutputType == IOType.Bytes),
                                      createItem("Output as n&umbers", () => { _settings.OutputType = IOType.Numbers; }, () => _settings.OutputType == IOType.Numbers),
                                      new ToolStripSeparator(),
                                      createItem("No implicit &mirroring", () => { _settings.ImplicitlyMirror = MirrorType.None; }, () => _settings.ImplicitlyMirror == MirrorType.None),
                                      createItem("Implicitly mirror source to the &left (e.g. *|= becomes =|*|=)", () => { _settings.ImplicitlyMirror = MirrorType.Left; }, () => _settings.ImplicitlyMirror == MirrorType.Left),
                                      createItem("Implicitly mirror source to the &right (e.g. *|= becomes *|=|*)", () => { _settings.ImplicitlyMirror = MirrorType.Right; }, () => _settings.ImplicitlyMirror == MirrorType.Right)
                                      )
                );

            update();
            return(ret);
        }
Ejemplo n.º 37
0
        private void createAnnotationSet(bool copyFromCurrent, IIde ide)
        {
            string newName = copyFromCurrent ? _settings.LastMemoryAnnotationSet : null;

            while (true)
            {
                newName = InputBox.GetLine("Enter new name for this annotation set:", newName, "Create new annotation set", "&OK", "&Cancel");
                if (newName == null)
                {
                    break;
                }
                if (!_settings.MemoryAnnotations.ContainsKey(newName))
                {
                    _settings.MemoryAnnotations[newName] = copyFromCurrent
                        ? _settings.MemoryAnnotations[_settings.LastMemoryAnnotationSet].ToDictionary(kvp => kvp.Key, kvp => new Dictionary <PointAxial, string>(kvp.Value))
                        : new Dictionary <Direction, Dictionary <PointAxial, string> >();
                    _settings.LastMemoryAnnotationSet = newName;
                    updateAnnotationSets(ide);
                    updateWatch(ide);
                    return;
                }
                DlgMessage.Show("The specified annotation set name already exists. Annotation set names must be unique.", "Error", DlgType.Error);
            }
        }
Ejemplo n.º 38
0
        private void insertString(IIde ide)
        {
            string @default, selected = ide.GetSelectedText();

            try
            {
                if (selected.Length == 1 && selected[0] >= 0xbc00 && selected[0] <= 0xd7a3)
                {
                    @default = (0xbbff - selected[0]).ToString();
                }
                else
                {
                    @default = ScliptingUtil.DecodeByteArray(selected).FromUtf8().CLiteralEscape();
                }
            }
            catch { @default = "\\n"; }
            var line = InputBox.GetLine("Type a string to insert (in C-escaped format; backslashes must be escaped):", @default, "Esoteric IDE", "&OK", "&Cancel");

            if (line != null)
            {
                try { ide.InsertText(ScliptingUtil.EncodeByteArray(line.CLiteralUnescape().ToUtf8())); }
                catch { DlgMessage.Show("The string you typed is not a valid C-escaped string. Please ensure that your backslashes are escaped.", "Esoteric IDE", DlgType.Error, "&OK"); }
            }
        }
Ejemplo n.º 39
0
 private void insertString(IIde ide)
 {
     string @default, selected = ide.GetSelectedText();
     try
     {
         if (selected.Length == 1 && selected[0] >= 0xbc00 && selected[0] <= 0xd7a3)
             @default = (0xbbff - selected[0]).ToString();
         else
             @default = ScliptingUtil.DecodeByteArray(selected).FromUtf8().CLiteralEscape();
     }
     catch { @default = "\\n"; }
     var line = InputBox.GetLine("Type a string to insert (in C-escaped format; backslashes must be escaped):", @default, "Esoteric IDE", "&OK", "&Cancel");
     if (line != null)
         try { ide.InsertText(ScliptingUtil.EncodeByteArray(line.CLiteralUnescape().ToUtf8())); }
         catch { DlgMessage.Show("The string you typed is not a valid C-escaped string. Please ensure that your backslashes are escaped.", "Esoteric IDE", DlgType.Error, "&OK"); }
 }
Ejemplo n.º 40
0
        public override ToolStripMenuItem[] CreateMenus(IIde ide)
        {
            var mnuInsert = new ToolStripMenuItem("&Insert");
            var groupMenuItems = typeof(InstructionGroup).GetFields(BindingFlags.Public | BindingFlags.Static)
                .ToDictionary(f => (InstructionGroup) f.GetValue(null), f => new ToolStripMenuItem(f.GetCustomAttributes<InstructionGroupAttribute>().First().Label));

            // Stack manipulation instructions
            var miInsertStackInstructionCopyFromBottom = new ToolStripMenuItem("&Copy from bottom");
            var miInsertStackInstructionMoveFromBottom = new ToolStripMenuItem("&Move from bottom");
            var miInsertStackInstructionSwapFromBottom = new ToolStripMenuItem("&Swap from bottom");
            var miInsertStackInstructionCopyFromTop = new ToolStripMenuItem("C&opy from top");
            var miInsertStackInstructionMoveFromTop = new ToolStripMenuItem("Mo&ve from top");
            var miInsertRegexGroupInstruction = new ToolStripMenuItem("Rege&x captured group");

            var miInsertInteger = new ToolStripMenuItem("&Integer...");
            var miInsertString = new ToolStripMenuItem("&String...");
            var miInsertByteArray = new ToolStripMenuItem("Byte &array...");

            miInsertInteger.Click += (_, __) => { insertInteger(ide); };
            miInsertString.Click += (_, __) => { insertString(ide); };
            miInsertByteArray.Click += (_, __) => { insertByteArray(ide); };

            mnuInsert.DropDownItems.AddRange(groupMenuItems.Values.ToArray());
            mnuInsert.DropDownItems.AddRange(new ToolStripItem[] { miInsertInteger, miInsertString, miInsertByteArray });

            foreach (var instr in typeof(Instruction).GetFields(BindingFlags.Static | BindingFlags.Public))
            {
                var attr = instr.GetCustomAttributes<InstructionAttribute>().First();
                var ch = attr.Character;
                groupMenuItems[attr.Group].DropDownItems.Add(new ToolStripMenuItem(
                    "{0} &{1} — {2}{3}".Fmt(ch, attr.Engrish, attr.Description, attr.Type == NodeType.BlockHead ? " █" : ""),
                    null, (_, __) => { ide.InsertText(ch.ToString()); }
                ));
            }

            groupMenuItems[InstructionGroup.StackManipulation].DropDownItems.Add("-");
            groupMenuItems[InstructionGroup.StackManipulation].DropDownItems.AddRange(Ut.NewArray<ToolStripItem>(
                miInsertStackInstructionCopyFromBottom, miInsertStackInstructionMoveFromBottom, miInsertStackInstructionSwapFromBottom,
                miInsertStackInstructionCopyFromTop, miInsertStackInstructionMoveFromTop));

            groupMenuItems[InstructionGroup.ListStringManipulation].DropDownItems.Add("-");
            groupMenuItems[InstructionGroup.ListStringManipulation].DropDownItems.AddRange(ListStringElementNode.GetMenuItems(ide));

            for (var ch = '①'; ch <= '⑳'; ch++)
                miInsertStackInstructionCopyFromBottom.DropDownItems.Add(stackOrRegexMenuItem(ch, ch - '①' + 1, ide));
            for (var ch = '㉑'; ch <= '㉟'; ch++)
                miInsertStackInstructionCopyFromBottom.DropDownItems.Add(stackOrRegexMenuItem(ch, ch - '㉑' + 21, ide));
            for (var ch = '㊱'; ch <= '㊿'; ch++)
                miInsertStackInstructionCopyFromBottom.DropDownItems.Add(stackOrRegexMenuItem(ch, ch - '㊱' + 36, ide));
            for (var ch = '⓵'; ch <= '⓾'; ch++)
                miInsertStackInstructionMoveFromTop.DropDownItems.Add(stackOrRegexMenuItem(ch, ch - '⓵' + 1, ide));
            for (var ch = '❶'; ch <= '❿'; ch++)
                miInsertStackInstructionCopyFromTop.DropDownItems.Add(stackOrRegexMenuItem(ch, ch - '❶' + 1, ide));
            for (var ch = '⓫'; ch <= '⓴'; ch++)
                miInsertStackInstructionCopyFromTop.DropDownItems.Add(stackOrRegexMenuItem(ch, ch - '⓫' + 11, ide));
            for (var ch = '⑴'; ch <= '⒇'; ch++)
                miInsertStackInstructionMoveFromBottom.DropDownItems.Add(stackOrRegexMenuItem(ch, ch - '⑴' + 1, ide));
            for (var ch = '⒈'; ch <= '⒛'; ch++)
                miInsertStackInstructionSwapFromBottom.DropDownItems.Add(stackOrRegexMenuItem(ch, ch - '⒈' + 1, ide));

            groupMenuItems[InstructionGroup.StringManipulation].DropDownItems.Add("-");
            groupMenuItems[InstructionGroup.StringManipulation].DropDownItems.Add(miInsertRegexGroupInstruction);
            for (var ch = 'Ⓐ'; ch <= 'Ⓩ'; ch++)
                miInsertRegexGroupInstruction.DropDownItems.Add(stackOrRegexMenuItem(ch, ch - 'Ⓐ' + 1, ide));

            return Ut.NewArray<ToolStripMenuItem>(mnuInsert);
        }
Ejemplo n.º 41
0
        public override ToolStripMenuItem[] CreateMenus(IIde ide)
        {
            var inputModes = EnumStrong.GetValues<InputMode>();
            var inputModeItems = new ToolStripMenuItem[inputModes.Length];

            var setInputMode = Ut.Lambda((InputMode mode) =>
            {
                _settings.InputMode = mode;
                for (int i = 0; i < inputModes.Length; i++)
                    inputModeItems[i].Checked = (mode == inputModes[i]);
            });

            var ret = Ut.NewArray(
                new ToolStripMenuItem("&Memory visualization", null, Ut.NewArray(

                    // Unused mnemonics: cdefhijkmqruwxy

                    new ToolStripMenuItem("&Background color...", null, delegate { color(ide.GetEnvironment(), _settings.MemoryBackgroundColor, c => { _settings.MemoryBackgroundColor = c; }); }),
                    new ToolStripMenuItem("Grid color (&zeros)...", null, delegate { color(ide.GetEnvironment(), _settings.MemoryGridZeroColor, c => { _settings.MemoryGridZeroColor = c; }); }),
                    new ToolStripMenuItem("&Grid color (non-zeros)...", null, delegate { color(ide.GetEnvironment(), _settings.MemoryGridNonZeroColor, c => { _settings.MemoryGridNonZeroColor = c; }); }),
                    new ToolStripMenuItem("&Pointer color...", null, delegate { color(ide.GetEnvironment(), _settings.MemoryPointerColor, c => { _settings.MemoryPointerColor = c; }); }),
                    new ToolStripMenuItem("&Value font...", null, delegate { font(ide.GetEnvironment(), _settings.MemoryValueFont, Color.CornflowerBlue, f => { _settings.MemoryValueFont = f; _valueColorItem.Enabled = true; }); }),
                    (_valueColorItem = new ToolStripMenuItem("Va&lue color...", null, delegate { color(ide.GetEnvironment(), _settings.MemoryValueFont.Color, c => { _settings.MemoryValueFont = _settings.MemoryValueFont.SetColor(c); }); }) { Enabled = _settings.MemoryValueFont != null }),
                    new ToolStripMenuItem("Ann&otation font...", null, delegate { font(ide.GetEnvironment(), _settings.MemoryAnnotationFont, Color.ForestGreen, f => { _settings.MemoryAnnotationFont = f; _annotationColorItem.Enabled = true; }); }),
                    (_annotationColorItem = new ToolStripMenuItem("Anno&tation color...", null, delegate { color(ide.GetEnvironment(), _settings.MemoryAnnotationFont.Color, c => { _settings.MemoryAnnotationFont = _settings.MemoryAnnotationFont.SetColor(c); }); }) { Enabled = _settings.MemoryAnnotationFont != null }),
                    new ToolStripMenuItem("&Annotate current edge...", null, checkDebugging(ide, env =>
                    {
                        var newAnnotation = InputBox.GetLine("Enter annotation:", env.GetCurrentAnnotation(), "Annotate edge", "&OK", "&Cancel");
                        if (newAnnotation != null)
                        {
                            env.Annotate(newAnnotation);
                            env.UpdateWatch();
                        }
                    })),
                    (_annotationSets = new ToolStripMenuItem("A&nnotation sets")),
                    new ToolStripMenuItem("&Save memory as PNG...", null, checkDebugging(ide, env =>
                    {
                        using (var dlg = new SaveFileDialog { DefaultExt = "png", Filter = "PNG files (*.png)|*.png", OverwritePrompt = true, Title = "Save memory visualization to file" })
                            if (dlg.ShowDialog() == DialogResult.OK)
                                env.SaveMemoryVisualization(dlg.FileName);
                    })))),

                new ToolStripMenuItem("&Source", null, Ut.NewArray(
                    new ToolStripMenuItem("Generate &blank source...", null, delegate
                    {
                        string inputStr = "10";
                        while (true)
                        {
                            inputStr = InputBox.GetLine("Enter size of hexagon:", inputStr, "Generate blank source", "&OK", "&Cancel");
                            if (inputStr == null)
                                return;
                            int input;
                            if (int.TryParse(inputStr, out input))
                            {
                                ide.ReplaceSource(Grid.Parse(new string('.', 3 * input * (input - 1) + 1)).ToString());
                                return;
                            }
                            DlgMessage.Show("Please enter an integer value.", "Error", DlgType.Error);
                        }
                    }),
                    new ToolStripMenuItem("&Layout source", null, delegate { ide.ReplaceSource(Grid.Parse(ide.GetSource()).ToString()); }),
                    new ToolStripMenuItem("&Minify source", null, delegate { ide.ReplaceSource(Regex.Replace(ide.GetSource(), @"[\s`]", "").TrimEnd('.')); }))),

                new ToolStripMenuItem("&Input semantics", null, Ut.NewArray(
                    (inputModeItems[0] = new ToolStripMenuItem("Encode input as UTF-&8", null, (_, __) => setInputMode(InputMode.Utf8))),
                    (inputModeItems[1] = new ToolStripMenuItem("Encode input as UTF-1&6 (little endian)", null, (_, __) => setInputMode(InputMode.Utf16))),
                    (inputModeItems[2] = new ToolStripMenuItem("Input string is a list of &bytes", null, (_, __) => setInputMode(InputMode.Numbers))))));

            updateAnnotationSets(ide);
            setInputMode(_settings.InputMode);
            return ret;
        }
Ejemplo n.º 42
0
 public static ToolStripItem[] GetMenuItems(IIde ide)
 {
     return typeof(ListStringInstruction).GetFields(BindingFlags.Static | BindingFlags.Public)
         .Select((field, fi) =>
         {
             var item = new ToolStripMenuItem(field.GetCustomAttributes<ListStringInstructionAttribute>().First().MenuLabel);
             item.DropDownItems.AddRange(Enumerable.Range(0, 20)
                 .Select(i => new { Ch = Characters[fi * 20 + i], Engrish = Engrish[fi * 20 + i] })
                 .Select(inf => new ToolStripMenuItem("{0} &{1} — {2}".Fmt(inf.Ch, inf.Engrish, new ListStringElementNode(inf.Ch, 0).Explain()), null, (_, __) => { ide.InsertText(inf.Ch.ToString()); }))
                 .ToArray());
             return item;
         })
         .ToArray();
 }
Ejemplo n.º 43
0
 public LogCatWindowControl(IIde ide)
 {
     InitializeComponent();
     controlHost.Child = new DeviceLogControl(ide);
 }
Ejemplo n.º 44
0
 public static void Init(IIde ide)
 {
     Instance = new CodeChangeHandler(ide);
     Instance.server.StartListening();
 }
Ejemplo n.º 45
0
        private void updateAnnotationSets(IIde ide)
        {
            _annotationSets.DropDownItems.Clear();
            foreach (var kvp in _settings.MemoryAnnotations)
            {
                var setName = kvp.Key;
                var super = new ToolStripMenuItem(setName);
                _annotationSets.DropDownItems.Add(super);
                if (setName == _settings.LastMemoryAnnotationSet)
                    super.Checked = true;

                super.DropDownItems.AddRange(Ut.NewArray(
                    new ToolStripMenuItem("&Switch to this set", null, delegate
                    {
                        _settings.LastMemoryAnnotationSet = setName;
                        updateAnnotationSets(ide);
                        updateWatch(ide);
                    })
                    { Checked = setName == _settings.LastMemoryAnnotationSet },
                    new ToolStripMenuItem("&Rename this set...", null, delegate
                    {
                        var newName = InputBox.GetLine("Enter new name for this annotation set:", setName, "Rename annotation set", "&OK", "&Cancel");
                        if (newName != null && newName != setName)
                        {
                            _settings.MemoryAnnotations[newName] = _settings.MemoryAnnotations[setName];
                            _settings.MemoryAnnotations.Remove(setName);
                            if (_settings.LastMemoryAnnotationSet == setName)
                                _settings.LastMemoryAnnotationSet = newName;
                            updateAnnotationSets(ide);
                        }
                    }),
                    new ToolStripMenuItem("&Delete this set", null, delegate
                    {
                        _settings.MemoryAnnotations.Remove(setName);
                        _settings.LastMemoryAnnotationSet = _settings.MemoryAnnotations.Keys.FirstOrDefault("(default)");
                        if (!_settings.MemoryAnnotations.ContainsKey(_settings.LastMemoryAnnotationSet))
                            _settings.MemoryAnnotations[_settings.LastMemoryAnnotationSet] = new Dictionary<Direction, Dictionary<PointAxial, string>>();
                        updateAnnotationSets(ide);
                        updateWatch(ide);
                    })
                ));
            }
            _annotationSets.DropDownItems.Add("-");
            _annotationSets.DropDownItems.Add(new ToolStripMenuItem("&Create new annotation set...", null, delegate { createAnnotationSet(false, ide); }));
            _annotationSets.DropDownItems.Add(new ToolStripMenuItem("C&opy current annotation set...", null, delegate { createAnnotationSet(true, ide); }));
        }
Ejemplo n.º 46
0
 /// <summary>
 /// Create the appropriate designer control.
 /// </summary>
 public IDesignerControl CreateDesigner(IIde ide, IXmlStore store, IXmlModel model, IServiceProvider serviceProvider, IVsTextLines textBuffer)
 {
     var viewModel = new XmlMenuViewModel(store, model, serviceProvider, textBuffer);
     viewModel.Initialize();
     return new XmlMenuDesignerControl(ide, serviceProvider, viewModel);
 }
Ejemplo n.º 47
0
        public override ToolStripMenuItem[] CreateMenus(IIde ide)
        {
            var menuItems = new List<Tuple<ToolStripMenuItem, Func<bool>>>();

            var update = Ut.Lambda(() =>
            {
                foreach (var tuple in menuItems)
                    tuple.Item1.Checked = tuple.Item2();
            });

            var createItem = Ut.Lambda((string label, Action action, Func<bool> checkedFunc) =>
            {
                var menuItem = new ToolStripMenuItem(label, null, delegate { action(); update(); });
                menuItems.Add(new Tuple<ToolStripMenuItem, Func<bool>>(menuItem, checkedFunc));
                return menuItem;
            });

            var ret = Ut.NewArray<ToolStripMenuItem>(
                new ToolStripMenuItem("&Semantics", null,
                    createItem("Input as &bytes", () => { _settings.InputType = IOType.Bytes; }, () => _settings.InputType == IOType.Bytes),
                    createItem("Input as &numbers", () => { _settings.InputType = IOType.Numbers; }, () => _settings.InputType == IOType.Numbers),
                    new ToolStripSeparator(),
                    createItem("Output as b&ytes", () => { _settings.OutputType = IOType.Bytes; }, () => _settings.OutputType == IOType.Bytes),
                    createItem("Output as n&umbers", () => { _settings.OutputType = IOType.Numbers; }, () => _settings.OutputType == IOType.Numbers),
                    new ToolStripSeparator(),
                    createItem("No implicit &mirroring", () => { _settings.ImplicitlyMirror = MirrorType.None; }, () => _settings.ImplicitlyMirror == MirrorType.None),
                    createItem("Implicitly mirror source to the &left (e.g. *|= becomes =|*|=)", () => { _settings.ImplicitlyMirror = MirrorType.Left; }, () => _settings.ImplicitlyMirror == MirrorType.Left),
                    createItem("Implicitly mirror source to the &right (e.g. *|= becomes *|=|*)", () => { _settings.ImplicitlyMirror = MirrorType.Right; }, () => _settings.ImplicitlyMirror == MirrorType.Right)
                )
            );
            update();
            return ret;
        }
Ejemplo n.º 48
0
 /// <summary>
 /// Default ctor
 /// </summary>
 public LaunchMonitor(IIde ide, IDevice device, string apkPath, string packageName, int apiLevel, int launchFlags, Action<LauncherStates, string> stateUpdate, CancellationToken token)
 {
     this.ide = ide;
     this.device = device;
     this.apkPath = apkPath;
     this.packageName = packageName;
     this.apiLevel = apiLevel;
     this.launchFlags = launchFlags;
     this.stateUpdate = stateUpdate;
     this.token = token;
     outputPane = ide.CreateDebugOutputPane();
 }
Ejemplo n.º 49
0
 private static void updateWatch(IIde ide)
 {
     var env = ide.GetEnvironment() as HexagonyEnv;
     if (env != null)
         env.UpdateWatch();
 }
Ejemplo n.º 50
0
 private void insertInteger(IIde ide)
 {
     string @default, selected = ide.GetSelectedText();
     try
     {
         if (selected.Length == 1 && selected[0] >= 0xbc00 && selected[0] <= 0xd7a3)
             @default = (0xbbff - selected[0]).ToString();
         else
             @default = new BigInteger(new byte[] { 0 }.Concat(ScliptingUtil.DecodeByteArray(selected)).Reverse().ToArray()).ToString();
     }
     catch { @default = "0"; }
     var line = InputBox.GetLine("Type an integer to insert (must be greater than −7077):", @default, "Esoteric IDE", "&OK", "&Cancel");
     if (line != null)
     {
         BigInteger i;
         if (BigInteger.TryParse(line, out i) && (i >= -7076))
         {
             if (i < 0)
                 ide.InsertText(((char) (0xbbff - i)).ToString());
             else
                 ide.InsertText(ScliptingUtil.EncodeByteArray(i.ToByteArray().Reverse().SkipWhile(b => b == 0).DefaultIfEmpty().ToArray()));
         }
         else
             DlgMessage.Show("The integer you typed is not a valid literal integer for Sclipting. Literal integers must be greater than −7077.", "Esoteric IDE", DlgType.Error, "&OK");
     }
 }
Ejemplo n.º 51
0
 private EventHandler checkDebugging(IIde ide, Action<HexagonyEnv> action)
 {
     return (_, __) =>
     {
         var env = ide.GetEnvironment() as HexagonyEnv;
         if (env == null || env.State != ExecutionState.Debugging)
             DlgMessage.Show("Program must be running but stopped in the debugger.", "Error", DlgType.Error);
         else
             action(env);
     };
 }
Ejemplo n.º 52
0
 private void insertByteArray(IIde ide)
 {
     string @default, selected = ide.GetSelectedText();
     try { @default = ScliptingUtil.DecodeByteArray(selected).ToHex(); }
     catch { @default = ""; }
     var line = InputBox.GetLine("Type a byte array to insert (in hexdump format; two hexadecimal digits per byte):", @default, "Esoteric IDE", "&OK", "&Cancel");
     if (line != null)
         try { ide.InsertText(ScliptingUtil.EncodeByteArray(line.FromHex())); }
         catch { DlgMessage.Show("The text you entered is not valid hexadecimal. Please ensure that you enter an even number of characters 0-9/a-f.", "Esoteric IDE", DlgType.Error, "&OK"); }
 }
Ejemplo n.º 53
0
        public override ToolStripMenuItem[] CreateMenus(IIde ide)
        {
            var inputModes     = EnumStrong.GetValues <InputMode>();
            var inputModeItems = new ToolStripMenuItem[inputModes.Length];

            var setInputMode = Ut.Lambda((InputMode mode) =>
            {
                _settings.InputMode = mode;
                for (int i = 0; i < inputModes.Length; i++)
                {
                    inputModeItems[i].Checked = (mode == inputModes[i]);
                }
            });

            var ret = Ut.NewArray(
                new ToolStripMenuItem("&Memory visualization", null, Ut.NewArray(

                                          // Unused mnemonics: cdefhijkmqruwxy

                                          new ToolStripMenuItem("&Background color...", null, delegate { color(ide.GetEnvironment(), _settings.MemoryBackgroundColor, c => { _settings.MemoryBackgroundColor = c; }); }),
                                          new ToolStripMenuItem("Grid color (&zeros)...", null, delegate { color(ide.GetEnvironment(), _settings.MemoryGridZeroColor, c => { _settings.MemoryGridZeroColor = c; }); }),
                                          new ToolStripMenuItem("&Grid color (non-zeros)...", null, delegate { color(ide.GetEnvironment(), _settings.MemoryGridNonZeroColor, c => { _settings.MemoryGridNonZeroColor = c; }); }),
                                          new ToolStripMenuItem("&Pointer color...", null, delegate { color(ide.GetEnvironment(), _settings.MemoryPointerColor, c => { _settings.MemoryPointerColor = c; }); }),
                                          new ToolStripMenuItem("&Value font...", null, delegate { font(ide.GetEnvironment(), _settings.MemoryValueFont, Color.CornflowerBlue, f => { _settings.MemoryValueFont = f; _valueColorItem.Enabled = true; }); }),
                                          (_valueColorItem = new ToolStripMenuItem("Va&lue color...", null, delegate { color(ide.GetEnvironment(), _settings.MemoryValueFont.Color, c => { _settings.MemoryValueFont = _settings.MemoryValueFont.SetColor(c); }); })
            {
                Enabled = _settings.MemoryValueFont != null
            }),
                                          new ToolStripMenuItem("Ann&otation font...", null, delegate { font(ide.GetEnvironment(), _settings.MemoryAnnotationFont, Color.ForestGreen, f => { _settings.MemoryAnnotationFont = f; _annotationColorItem.Enabled = true; }); }),
                                          (_annotationColorItem = new ToolStripMenuItem("Anno&tation color...", null, delegate { color(ide.GetEnvironment(), _settings.MemoryAnnotationFont.Color, c => { _settings.MemoryAnnotationFont = _settings.MemoryAnnotationFont.SetColor(c); }); })
            {
                Enabled = _settings.MemoryAnnotationFont != null
            }),
                                          new ToolStripMenuItem("&Annotate current edge...", null, checkDebugging(ide, env =>
            {
                var newAnnotation = InputBox.GetLine("Enter annotation:", env.GetCurrentAnnotation(), "Annotate edge", "&OK", "&Cancel");
                if (newAnnotation != null)
                {
                    env.Annotate(newAnnotation);
                    env.UpdateWatch();
                }
            })),
                                          (_annotationSets = new ToolStripMenuItem("A&nnotation sets")),
                                          new ToolStripMenuItem("&Save memory as PNG...", null, checkDebugging(ide, env =>
            {
                using (var dlg = new SaveFileDialog {
                    DefaultExt = "png", Filter = "PNG files (*.png)|*.png", OverwritePrompt = true, Title = "Save memory visualization to file"
                })
                    if (dlg.ShowDialog() == DialogResult.OK)
                    {
                        env.SaveMemoryVisualization(dlg.FileName);
                    }
            })))),

                new ToolStripMenuItem("&Source", null, Ut.NewArray(
                                          new ToolStripMenuItem("Generate &blank source...", null, delegate
            {
                string inputStr = "10";
                while (true)
                {
                    inputStr = InputBox.GetLine("Enter size of hexagon:", inputStr, "Generate blank source", "&OK", "&Cancel");
                    if (inputStr == null)
                    {
                        return;
                    }
                    int input;
                    if (int.TryParse(inputStr, out input))
                    {
                        ide.ReplaceSource(Grid.Parse(new string('.', 3 * input * (input - 1) + 1)).ToString());
                        return;
                    }
                    DlgMessage.Show("Please enter an integer value.", "Error", DlgType.Error);
                }
            }),
                                          new ToolStripMenuItem("&Layout source", null, delegate { ide.ReplaceSource(Grid.Parse(ide.GetSource()).ToString()); }),
                                          new ToolStripMenuItem("&Minify source", null, delegate { ide.ReplaceSource(Regex.Replace(ide.GetSource(), @"[\s`]", "").TrimEnd('.')); }))),

                new ToolStripMenuItem("&Input semantics", null, Ut.NewArray(
                                          (inputModeItems[0] = new ToolStripMenuItem("Encode input as UTF-&8", null, (_, __) => setInputMode(InputMode.Utf8))),
                                          (inputModeItems[1] = new ToolStripMenuItem("Encode input as UTF-1&6 (little endian)", null, (_, __) => setInputMode(InputMode.Utf16))),
                                          (inputModeItems[2] = new ToolStripMenuItem("Input string is a list of &bytes", null, (_, __) => setInputMode(InputMode.Numbers))))));

            updateAnnotationSets(ide);
            setInputMode(_settings.InputMode);
            return(ret);
        }
Ejemplo n.º 54
0
 private void createAnnotationSet(bool copyFromCurrent, IIde ide)
 {
     string newName = copyFromCurrent ? _settings.LastMemoryAnnotationSet : null;
     while (true)
     {
         newName = InputBox.GetLine("Enter new name for this annotation set:", newName, "Create new annotation set", "&OK", "&Cancel");
         if (newName == null)
             break;
         if (!_settings.MemoryAnnotations.ContainsKey(newName))
         {
             _settings.MemoryAnnotations[newName] = copyFromCurrent
                 ? _settings.MemoryAnnotations[_settings.LastMemoryAnnotationSet].ToDictionary(kvp => kvp.Key, kvp => new Dictionary<PointAxial, string>(kvp.Value))
                 : new Dictionary<Direction, Dictionary<PointAxial, string>>();
             _settings.LastMemoryAnnotationSet = newName;
             updateAnnotationSets(ide);
             updateWatch(ide);
             return;
         }
         DlgMessage.Show("The specified annotation set name already exists. Annotation set names must be unique.", "Error", DlgType.Error);
     }
 }
Ejemplo n.º 55
0
 private static ToolStripItem stackOrRegexMenuItem(char ch, int num, IIde ide)
 {
     return new ToolStripMenuItem("{0} — &{1}".Fmt(ch, num), null, (_, __) => { ide.InsertText(ch.ToString()); });
 }
Ejemplo n.º 56
0
 public LogCatWindowControl(IIde ide)
 {
     InitializeComponent();
     controlHost.Child = new DeviceLogControl(ide);
 }
Ejemplo n.º 57
0
 public virtual ToolStripMenuItem[] CreateMenus(IIde ide)
 {
     return new ToolStripMenuItem[0];
 }