コード例 #1
0
        private void UpdateGroupClick(object sender, RoutedEventArgs e)
        {
            if ((GroupListView.SelectedItem as PhrasesGroup) == null)
            {
                MessageBox.Show("Select any group", "Fail", MessageBoxButton.OK, MessageBoxImage.Warning);
                return;
            }

            PhrasesGroup oldGroup = (PhrasesGroup)GroupListView.SelectedItem;

            _groupWindow = new GroupAddWindow((newGroup)
                                              => GroupAddUpdateRequirement(newGroup, oldGroup), oldGroup);

            bool?result = _groupWindow.ShowDialog();

            if (result == null || !result.Value)
            {
                return;
            }

            oldGroup.GroupName    = _groupWindow.Group.GroupName;
            oldGroup.GroupTheme   = _groupWindow.Group.GroupTheme;
            oldGroup.FromLanguage = _groupWindow.Group.FromLanguage;
            oldGroup.ToLanguage   = _groupWindow.Group.ToLanguage;

            UpdateGridViewColumnsSize(GroupGridViewColumns);
        }
コード例 #2
0
        public GroupAddWindow(Predicate <PhrasesGroup> requirement, PhrasesGroup group = null)
        {
            InitializeComponent();

            _requirement = requirement;

            if (group == null)
            {
                Title = "New Group";
            }
            else
            {
                Title = $"Edit Group {group.GroupName}";
                Group = new PhrasesGroup(group.GroupName, group.GroupTheme, group.ToLanguage, group.FromLanguage);
                UpdateFields();
            }
        }
コード例 #3
0
        private void RemovePhraseClick(object sender, RoutedEventArgs e)
        {
            PhrasesGroup phrasesGroup = (PhrasesGroup)GroupListView.SelectedItem;

            //Check is not necessary, because the button is not clickable while the selected one is null
            if (PhrasesListBox.SelectedItems.Count == 0)
            {
                MessageBox.Show("Select phrase for remove", "Fail", MessageBoxButton.OK, MessageBoxImage.Warning);
                return;
            }

            Phrase[] phrases = PhrasesListBox.SelectedItems.Cast <Phrase>().ToArray();

            foreach (Phrase phrase in phrases)
            {
                phrasesGroup.RemovePhrase(phrase);
            }
        }
コード例 #4
0
        private bool GroupAddUpdateRequirement(PhrasesGroup newGroup, PhrasesGroup oldGroup = null)
        {
            if (newGroup.FromLanguage.Equals(newGroup.ToLanguage))
            {
                MessageBox.Show("The languages are the same", "Fail", MessageBoxButton.OK, MessageBoxImage.Warning);
                return(false);
            }

            return(_wallpaperController.PhrasesGroups.All <PhrasesGroup>(delegate(PhrasesGroup j)
            {
                if (j.GroupName != newGroup.GroupName || j == oldGroup)
                {
                    return true;
                }

                MessageBox.Show($"Group {newGroup.GroupName} already exist!", "Fail", MessageBoxButton.OK, MessageBoxImage.Warning);
                return false;
            }));
        }
コード例 #5
0
        private void SubmitButtonClick(object sender, RoutedEventArgs e)
        {
            if (!CheckFieldsOnValide())
            {
                MessageBox.Show("Please fill in all required fields.", "Failed attempt",
                                MessageBoxButton.OK, MessageBoxImage.Warning);
                return;
            }

            Language fromLanguage = (Language)groupFromLanguage.SelectedItem;
            Language toLanguage   = (Language)groupToLanguage.SelectedItem;

            Group = new PhrasesGroup(groupName.Text, groupTheme.SelectedItem as string, toLanguage, fromLanguage);

            bool?result = _requirement?.Invoke(Group);

            if (result.HasValue && result.Value)
            {
                DialogResult = true;
            }
        }
コード例 #6
0
        private void AddPhraseClick(object sender, RoutedEventArgs e)
        {
            PhrasesGroup selectedGroup = GroupListView.SelectedItem as PhrasesGroup;

            if (selectedGroup == null)
            {
                return;
            }

            string phrasesFullText = new TextRange(PhrasesRichTextBox.Document.ContentStart,
                                                   PhrasesRichTextBox.Document.ContentEnd)
                                     .Text;

            string[] phrases = phrasesFullText.Split('\n');
            foreach (var phrase in phrases)
            {
                if (phrase.Trim() != String.Empty)
                {
                    selectedGroup.AddPhrase(phrase.Trim());
                }
            }

            PhrasesRichTextBox.Document.Blocks.Clear();
        }
コード例 #7
0
        public async Task Start(Action <Wallpaper, Phrase> callBack = null)
        {
            if (IsRunning)
            {
                return;
            }

            _userWallpaper = WinAPI.GetWallpaper();
            _userStyle     = WinAPI.GetWallpaperStyle();

            if (Wallpapers.Count == 0)
            {
                MessageBox.Show("List of wallpapers is empty", "Failed attempt", MessageBoxButton.OK, MessageBoxImage.Warning);
                return;
            }
            if (Wallpapers.All(i => i.IsFixed == false))
            {
                MessageBox.Show("Select a phrase display point of any wallpaper", "Failed attempt",
                                MessageBoxButton.OK, MessageBoxImage.Warning);
                return;
            }
            if (PhrasesGroups.Count == 0 || PhrasesGroups.All(i => i.Phrases.Count == 0) || !PhrasesGroups.Any(i => i.IsEnabled))
            {
                MessageBox.Show("List of phrases is empty", "Failed attempt", MessageBoxButton.OK, MessageBoxImage.Warning);
                return;
            }

            _currentWallpaperIndex = 0;
            _currentPhraseIndex    = 0;

            PhrasesGroup phrasesGroup = null;

            try
            {
                foreach (PhrasesGroup group in PhrasesGroups)
                {
                    if (!group.IsEnabled)
                    {
                        continue;
                    }

                    phrasesGroup = group;
                    await phrasesGroup.TranslateRequireded(_translator);
                }
            }
            catch (GoogleTranslateIPBannedException e)
            {
                MessageBox.Show($"You have been banned on https://translate.google.{_translator.Domain}.\n" +
                                $"Try to use a proxy or wait a few hours.", "Oops!", MessageBoxButton.OK, MessageBoxImage.Error);
                Easy.Logger.Log4NetService.Instance.GetLogger <Wallpaper>().Info(e);
                //TODO: PROXY
            }
            catch (Exception e)
            {
                Easy.Logger.Log4NetService.Instance.GetLogger <WallpaperController>().Error(e);
                MessageBox.Show($"An error occurred while trying to translate a group \"{phrasesGroup.GroupName}\"\n" +
                                "Group was disabled.", "Translation Fail",
                                MessageBoxButton.OK, MessageBoxImage.Error);
                phrasesGroup.IsEnabled = false;
            }


            _tempPhrases = PhraseUpdateOrder == UpdateOrder.Randomly
                                ? PhrasesGroups.GetShuffledPhrases()
                                : (from grp in PhrasesGroups where grp.IsEnabled from phrase in grp.Phrases select phrase).ToArray();

            if (_tempPhrases.Length == 0)
            {
                MessageBox.Show("Run is stopped", "Failed attempt", MessageBoxButton.OK, MessageBoxImage.Stop);
                return;
            }

            _tempWallpapers = WallpaperUpdateOrder == UpdateOrder.Randomly
                                ? Wallpapers.OrderBy(i => _random.Next()).ToArray()
                                : (from wallpaper in Wallpapers where wallpaper.IsFixed select wallpaper).ToArray();

            _callBack = callBack;
            _timer.Change(TimeSpan.Zero, UpdateFrequency);
            IsRunning = true;
        }