예제 #1
0
        private void NewCSharpFromClipboard()
        {
            string code = clipboardService.GetText();

            if (!string.IsNullOrEmpty(code))
            {
                NewCore(DocumentType.CSharp, code);
            }
        }
예제 #2
0
 private Result CreateTemplateLink(string shortCut, string description)
 {
     return(new Result {
         Title = $"Save template '{shortCut}'",
         SubTitle = _clipboardService.GetText()?.Replace(Environment.NewLine, " ↵ "),
         IcoPath = @"icon.png",
         Action = context => {
             var text = _clipboardService.GetText();
             _storage.Set(shortCut, LinkType.ClipboardTemplate, text, description);
             return true;
         }
     });
 }
예제 #3
0
        public string Run(string code, string template, Dictionary <string, string> variables)
        {
            using (Py.GIL())
            {
                using (var scope = Py.CreateScope())
                {
                    scope.Set("result", "");
                    scope.Set("template", template);

                    using (var pyVariables = new PyDict())
                    {
                        foreach (var variable in variables)
                        {
                            pyVariables[variable.Key] = variable.Value.ToPython();
                        }

                        scope.Set("variables", pyVariables);

                        scope.Set("get_clipboard_text", (Func <string>)(() => _clipboardService.GetText()));
                        scope.Set("set_clipboard_text", (Action <string>)((text) => _clipboardService.SetText(text)));

                        scope.Exec(code);

                        return(scope.Get <string>("result"));
                    }
                }
            }
        }
        public void DownloadImage()
        {
            var clipboardText = _clipboardService.GetText();

            try
            {
                if (!IsImageUrl(clipboardText))
                {
                    throw new Exception("Link not contains image.");
                }

                GetImageStart(clipboardText);

                var message = new NotificationMessage(ViewsManager.NotificationOpenWindow);
                Messenger.Default.Send(message);
            }
            catch (Exception ex)
            {
                //TODO: get system notification
                var message = new BallonNotificationMessage(ex.Message)
                {
                    Title = "DOWNLOAD ERROR"
                };
                Messenger.Default.Send(message);
            }
        }
예제 #5
0
        private void ExecuteAddPodcastCommand(object parameter)
        {
            var dataObject = parameter as IDataObject;

            var newPodcast = (dataObject != null)
                                 ? CreateNewPodcast(_dataObjectUriExtractor.GetUri(dataObject))
                                 : CreateNewPodcast(_clipboardService.GetText());

            var newPodcastViewModel = new PodcastViewModel(newPodcast);

            if (EditPodcast(newPodcastViewModel))
            {
                Podcasts.Add(newPodcastViewModel);
            }
        }
예제 #6
0
        public void LinkTemplate()
        {
            const string template = @"Select * from player";

            _clipboard.GetText().Returns(template);
            _saveParser.TryParse("link -t SelectAllPlayers".AsQuery(), out var results)
            .Should()
            .BeTrue();

            results.Should().HaveCount(1);
            var link = results.Single();

            link.Title.Should().Be("Save template 'SelectAllPlayers'");
            link.SubTitle.Should().Be(template);
            link.Action(new ActionContext());
            _storage.Received(1).Set("SelectAllPlayers", LinkType.ClipboardTemplate, template, Arg.Any <string>());
        }
예제 #7
0
        public PacketFilterDialogViewModel(IClipboardService clipboardService,
                                           IReadOnlyFilterData?filterData)
        {
            this.clipboardService = clipboardService;
            Accept = new DelegateCommand(() => CloseOk?.Invoke());
            Cancel = new DelegateCommand(() => CloseCancel?.Invoke());

            ClearFiltersCommand = new AsyncAutoCommand(async() =>
            {
                ExcludedEntries = "";
                IncludedEntries = "";
                ExcludedOpcodes = "";
                IncludedOpcodes = "";
                ExcludedGuids.Clear();
                IncludedGuids.Clear();
                CommaSeparatedPackets = "";
                HasMaxPacketNumber    = false;
                HasMinPacketNumber    = false;
                MinPacketNumber       = 0;
                MaxPacketNumber       = 0;
            });
            CopyFiltersCommand = new AsyncAutoCommand(async() =>
            {
                var data = new SerializedClipboardData()
                {
                    ExcludedEntries      = GenerateList(excludedEntries, s => uint.TryParse(s, out _), uint.Parse),
                    IncludedEntries      = GenerateList(includedOpcodes, s => uint.TryParse(s, out _), uint.Parse),
                    ExcludedGuids        = ExcludedGuids.Count == 0 ? null : ExcludedGuids.Select(s => s.ToHexWithTypeString()).ToList(),
                    IncludedGuids        = IncludedGuids.Count == 0 ? null : IncludedGuids.Select(s => s.ToHexWithTypeString()).ToList(),
                    ExcludedOpcodes      = GenerateList(excludedOpcodes, _ => true, s => s.ToUpper()),
                    IncludedOpcodes      = GenerateList(includedOpcodes, _ => true, s => s.ToUpper()),
                    ForceIncludedNumbers = GenerateList(commaSeparatedPackets, s => int.TryParse(s, out var x) && x >= 0, int.Parse),
                    MinPacket            = HasMinPacketNumber ? MinPacketNumber : null,
                    MaxPacket            = HasMaxPacketNumber ? MaxPacketNumber : null,
                };
                var serialized = JsonConvert.SerializeObject(data, Formatting.Indented, new JsonSerializerSettings()
                {
                    NullValueHandling = NullValueHandling.Ignore
                });
                clipboardService.SetText(serialized);
            });
            PasteFiltersCommand = new AsyncAutoCommand(async() =>
            {
                var text = await clipboardService.GetText();
                if (string.IsNullOrEmpty(text))
                {
                    return;
                }

                SerializedClipboardData?serialized = null;
                try
                {
                    serialized = JsonConvert.DeserializeObject <SerializedClipboardData>(text);
                }
                catch (Exception _)
                {
                    // ignored
                }

                if (!serialized.HasValue)
                {
                    return;
                }

                HasMinPacketNumber = serialized.Value.MinPacket.HasValue;
                HasMaxPacketNumber = serialized.Value.MaxPacket.HasValue;
                MinPacketNumber    = serialized.Value.MinPacket ?? 0;
                MaxPacketNumber    = serialized.Value.MaxPacket ?? 0;

                if (serialized.Value.ExcludedEntries != null)
                {
                    ExcludedEntries = string.Join(", ", serialized.Value.ExcludedEntries);
                }
                if (serialized.Value.IncludedEntries != null)
                {
                    IncludedEntries = string.Join(", ", serialized.Value.IncludedEntries);
                }
                if (serialized.Value.ExcludedGuids != null)
                {
                    ExcludedGuids.AddRange(serialized.Value.ExcludedGuids.StringToGuids());
                }
                if (serialized.Value.IncludedGuids != null)
                {
                    IncludedGuids.AddRange(serialized.Value.IncludedGuids.StringToGuids());
                }
                if (serialized.Value.ExcludedOpcodes != null)
                {
                    ExcludedOpcodes = string.Join(", ", serialized.Value.ExcludedOpcodes);
                }
                if (serialized.Value.IncludedOpcodes != null)
                {
                    IncludedOpcodes = string.Join(", ", serialized.Value.IncludedOpcodes);
                }
                if (serialized.Value.ForceIncludedNumbers != null)
                {
                    CommaSeparatedPackets = string.Join(", ", serialized.Value.ForceIncludedNumbers);
                }
            });

            if (filterData != null)
            {
                HasMinPacketNumber = filterData.MinPacketNumber.HasValue;
                HasMaxPacketNumber = filterData.MaxPacketNumber.HasValue;
                MinPacketNumber    = filterData.MinPacketNumber ?? 0;
                MaxPacketNumber    = filterData.MaxPacketNumber ?? 0;

                if (filterData.ExcludedEntries != null)
                {
                    ExcludedEntries = string.Join(", ", filterData.ExcludedEntries);
                }
                if (filterData.IncludedEntries != null)
                {
                    IncludedEntries = string.Join(", ", filterData.IncludedEntries);
                }
                if (filterData.ExcludedGuids != null)
                {
                    ExcludedGuids.AddRange(filterData.ExcludedGuids);
                }
                if (filterData.IncludedGuids != null)
                {
                    IncludedGuids.AddRange(filterData.IncludedGuids);
                }
                if (filterData.ExcludedOpcodes != null)
                {
                    ExcludedOpcodes = string.Join(", ", filterData.ExcludedOpcodes);
                }
                if (filterData.IncludedOpcodes != null)
                {
                    IncludedOpcodes = string.Join(", ", filterData.IncludedOpcodes);
                }
                if (filterData.ForceIncludePacketNumbers != null)
                {
                    CommaSeparatedPackets = string.Join(", ", filterData.ForceIncludePacketNumbers);
                }
            }

            DeleteIncludedGuid = new DelegateCommand <UniversalGuid?>(guid =>
            {
                if (guid != null)
                {
                    IncludedGuids.Remove(guid);
                }
            });

            DeleteExcludedGuid = new DelegateCommand <UniversalGuid?>(guid =>
            {
                if (guid != null)
                {
                    ExcludedGuids.Remove(guid);
                }
            });

            AutoDispose(this.ToObservable(o => o.ExcludedEntries).SubscribeAction(_ => RaisePropertyChanged(nameof(EntriesHeader))));
            AutoDispose(this.ToObservable(o => o.IncludedEntries).SubscribeAction(_ => RaisePropertyChanged(nameof(EntriesHeader))));
            AutoDispose(ExcludedGuids.ToCountChangedObservable().SubscribeAction(_ => RaisePropertyChanged(nameof(GuidsHeader))));
            AutoDispose(IncludedGuids.ToCountChangedObservable().SubscribeAction(_ => RaisePropertyChanged(nameof(GuidsHeader))));
            AutoDispose(this.ToObservable(o => o.ExcludedOpcodes).SubscribeAction(_ => RaisePropertyChanged(nameof(OpcodesHeader))));
            AutoDispose(this.ToObservable(o => o.IncludedOpcodes).SubscribeAction(_ => RaisePropertyChanged(nameof(OpcodesHeader))));
        }