Beispiel #1
0
 public static SearchSave Load(string filename)
 {
     try
     {
         var ret = new SearchSave();
         var bf = new BinaryFormatter();
         using (var fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.None))
         {
             ret = (SearchSave)bf.Deserialize(fs);
         }
         ret.FileName = filename;
         ret.Name = new FileInfo(ret.FileName).Name;
         return ret;
     }
     catch (Exception e)
     {
         Log.Warn("Load Error " + filename, e);
         TopMostMessageBox.Show(
             "There was an error loading your search. Please consult the log files.",
             "Error",
             MessageBoxButton.OK,
             MessageBoxImage.Error);
     }
     return null;
 }
Beispiel #2
0
 public static SearchSave Load(string filename)
 {
     try
     {
         var ret = new SearchSave();
         var bf  = new BinaryFormatter();
         using (var fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.None))
         {
             ret = (SearchSave)bf.Deserialize(fs);
         }
         ret.FileName = filename;
         ret.Name     = new FileInfo(ret.FileName).Name;
         return(ret);
     }
     catch (Exception e)
     {
         Log.Warn("Load Error " + filename, e);
         TopMostMessageBox.Show(
             "There was an error loading your search. Please consult the log files.",
             "Error",
             MessageBoxButton.OK,
             MessageBoxImage.Error);
     }
     return(null);
 }
Beispiel #3
0
        private void LoadSearchClick(object sender, RoutedEventArgs e)
        {
            if ((SubscriptionModule.Get().IsSubscribed ?? false) == false)
            {
                var res =
                    TopMostMessageBox.Show(
                        "Bummer. This is a subscriber only feature...If you would like to enable this, please visit http://www.octgn.net and subscribe, I know I would!"
                        + Environment.NewLine + "Would you like to go there now?",
                        "Oh No!",
                        MessageBoxButton.YesNo,
                        MessageBoxImage.Exclamation);
                if (res == MessageBoxResult.Yes)
                {
                    var url = SubscriptionModule.Get().GetSubscribeUrl(new SubType()
                    {
                        Description = "", Name = ""
                    });
                    if (url != null)
                    {
                        Program.LaunchUrl(url);
                    }
                }
                return;
            }
            if (!IsGameLoaded)
            {
                return;
            }
            var save = SearchSave.Load();

            if (save == null)
            {
                return;
            }

            var ctrl = new SearchControl(Game, save)
            {
                SearchIndex = Searches.Count == 0 ? 1 : Searches.Max(x => x.SearchIndex) + 1
            };

            ctrl.CardAdded    += AddResultCard;
            ctrl.CardRemoved  += RemoveResultCard;
            ctrl.CardSelected += CardSelected;
            LoadFonts(ctrl.resultsGrid);
            Searches.Add(ctrl);
            searchTabs.SelectedIndex = Searches.Count - 1;
        }
Beispiel #4
0
        public static SearchSave Create(SearchControl control)
        {
            var ss = new SearchSave();
            ss.GameId = control.Game.Id;
            ss.Name = control.SearchName.Clone() as string;
            ss.FileName = control.FileName.Clone() as string;

            // Load filters
            var generator = control.filterList.ItemContainerGenerator;
            for (int i = 0; i < control.filterList.Items.Count; i++)
            {
                var container = generator.ContainerFromIndex(i);
                var filterCtrl = (FilterControl)VisualTreeHelper.GetChild(container, 0);
                ss.AddFilter(filterCtrl);
            }
            return ss;
        }
Beispiel #5
0
        public static SearchSave Create(SearchControl control)
        {
            var ss = new SearchSave();

            ss.GameId   = control.Game.Id;
            ss.Name     = control.SearchName.Clone() as string;
            ss.FileName = control.FileName.Clone() as string;

            // Load filters
            var generator = control.filterList.ItemContainerGenerator;

            for (int i = 0; i < control.filterList.Items.Count; i++)
            {
                var container  = generator.ContainerFromIndex(i);
                var filterCtrl = (FilterControl)VisualTreeHelper.GetChild(container, 0);
                ss.AddFilter(filterCtrl);
            }
            return(ss);
        }
        private void SaveSearchAsClick(object sender, RoutedEventArgs e)
        {
            if ((SubscriptionModule.Get().IsSubscribed ?? false) == false)
            {
                var res =
                    TopMostMessageBox.Show(
                        "This feature is only for subscribers. Please visit http://www.octgn.net for subscription information."
                        + Environment.NewLine + "Would you like to go there now?",
                        "Oh No!",
                        MessageBoxButton.YesNo,
                        MessageBoxImage.Exclamation);
                if (res == MessageBoxResult.Yes)
                {
                    var url = SubscriptionModule.Get().GetSubscribeUrl(new SubType()
                    {
                        Description = "", Name = ""
                    });
                    if (url != null)
                    {
                        Program.LaunchUrl(url);
                    }
                }
                return;
            }
            // Grab the selected search tab
            if (searchTabs.SelectedItem == null)
            {
                return;
            }
            if (!IsGameLoaded)
            {
                return;
            }
            var search = searchTabs.SelectedItem as SearchControl;
            var save   = SearchSave.Create(search);

            if (save.SaveAs())
            {
                search.FileName   = save.FileName;
                search.SearchName = save.Name;
            }
        }
        private void LoadSearchClick(object sender, RoutedEventArgs e)
        {
            if ((SubscriptionModule.Get().IsSubscribed ?? false) == false)
            {
                var res =
                    TopMostMessageBox.Show(
                        "This feature is only for subscribers. Please visit http://www.octgn.net for subscription information."
                        + Environment.NewLine + "Would you like to go there now?",
                        "Oh No!",
                        MessageBoxButton.YesNo,
                        MessageBoxImage.Exclamation);
                if (res == MessageBoxResult.Yes)
                {
                    var url = SubscriptionModule.Get().GetSubscribeUrl(new SubType()
                    {
                        Description = "", Name = ""
                    });
                    if (url != null)
                    {
                        Program.LaunchUrl(url);
                    }
                }
                return;
            }
            if (!IsGameLoaded)
            {
                return;
            }
            var save = SearchSave.Load();

            if (save == null)
            {
                return;
            }

            var game = GameManager.Get().GetById(save.GameId);

            if (game == null)
            {
                TopMostMessageBox.Show("You don't have the game for this search installed", "Oh No", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            else if (Game.Id != save.GameId)
            {
                TopMostMessageBox.Show(
                    "This search is for the game " + game.Name + ". You currently have the game " + Game.Name
                    + " loaded so you can not load this search.", "Oh No", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            var ctrl = new SearchControl(Game, save)
            {
                SearchIndex = Searches.Count == 0 ? 1 : Searches.Max(x => x.SearchIndex) + 1
            };

            ctrl.CardAdded    += AddResultCard;
            ctrl.CardRemoved  += RemoveResultCard;
            ctrl.CardSelected += CardSelected;
            LoadFonts(ctrl.resultsGrid);
            Searches.Add(ctrl);
            searchTabs.SelectedIndex = Searches.Count - 1;
        }
Beispiel #8
0
        // Why are we poluting the code with snide comments instead of fixing the problem or making a generic TODO (V)_V
        // Actually, the more that I think about it, the more I think that the first comment is actually a bad idea. (V)_V
        public SearchControl(DataNew.Entities.Game loadedGame, SearchSave save)
        {
            NumMod = "";
            var game = GameManager.Get().GetById(save.GameId);
            if (game == null)
            {
                TopMostMessageBox.Show("You don't have the game for this search installed", "Oh No", MessageBoxButton.OK, MessageBoxImage.Error);
                save = null;
            }
            else if (loadedGame.Id != save.GameId)
            {
                TopMostMessageBox.Show(
                    "This search is for the game " + game.Name + ". You currently have the game " + loadedGame.Name
                    + " loaded so you can not load this search.", "Oh No", MessageBoxButton.OK, MessageBoxImage.Error);
                save = null;
            }
            Game = loadedGame;
            InitializeComponent();
            filtersList.ItemsSource =
                Enumerable.Repeat<object>("First", 1).Union(
                    Enumerable.Repeat<object>(new SetPropertyDef(Game.Sets()), 1).Union(
                        game.AllProperties().Where(p => !p.Hidden)));
            this.GenerateColumns(game);
            FileName = "";
            if (save != null)
            {

                this.SearchName = save.Name;
                this.FileName = save.FileName;
                // Load filters
                foreach (var filter in save.Filters)
                {
                    DataNew.Entities.PropertyDef prop;
                    if (filter.IsSetProperty)
                    {
                        prop = filtersList.Items.OfType<SetPropertyDef>().First();
                    }
                    else
                    {
                        prop =
                            loadedGame.CustomProperties.FirstOrDefault(
                                x => x.Name.Equals(filter.PropertyName, StringComparison.InvariantCultureIgnoreCase));
                    }
                    if (prop == null) continue;

                    filterList.Items.Add(prop);
                }
                this.Loaded += (sender, args) =>
                    {
                        var generator = filterList.ItemContainerGenerator;
                        for (int i = 0; i < filterList.Items.Count; i++)
                        {
                            DependencyObject container = generator.ContainerFromIndex(i);
                            var filterCtrl = (FilterControl)VisualTreeHelper.GetChild(container, 0);
                            var filter = save.Filters[i];
                            filterCtrl.SetFromSave(Game, filter);
                        }
                        this.RefreshSearch(SearchButton, null);
                    };
            }
            this.UpdateDataGrid(game.AllCards().ToDataTable(Game).DefaultView);
            UpdateCount();
        }
Beispiel #9
0
        public SearchControl(DataNew.Entities.Game loadedGame, SearchSave save)
        {
            NumMod = "";
            var game = GameManager.Get().GetById(save.GameId);

            if (game == null)
            {
                TopMostMessageBox.Show("You don't have the game for this search installed", "Oh No", MessageBoxButton.OK, MessageBoxImage.Error);
                save = null;
            }
            else if (loadedGame.Id != save.GameId)
            {
                TopMostMessageBox.Show(
                    "This search is for the game " + game.Name + ". You currently have the game " + loadedGame.Name
                    + " loaded so you can not load this search.", "Oh No", MessageBoxButton.OK, MessageBoxImage.Error);
                save = null;
            }
            Game = loadedGame;
            InitializeComponent();
            filtersList.ItemsSource =
                Enumerable.Repeat <object>("First", 1)
                .Union(Enumerable.Repeat <object>(new SetPropertyDef(Game.Sets()), 1))
                .Union(game.AllProperties().Where(p => !p.Hidden));
            this.GenerateColumns(game);
            FileName = "";
            if (save != null)
            {
                this.SearchName = save.Name;
                this.FileName   = save.FileName;
                // Load filters
                foreach (var filter in save.Filters)
                {
                    DataNew.Entities.PropertyDef prop;
                    if (filter.IsSetProperty)
                    {
                        prop = filtersList.Items.OfType <SetPropertyDef>().First();
                    }
                    else
                    {
                        prop = loadedGame.AllProperties().FirstOrDefault(
                            x => x.Name.Equals(filter.PropertyName, StringComparison.InvariantCultureIgnoreCase));
                    }
                    if (prop == null)
                    {
                        continue;
                    }

                    filterList.Items.Add(prop);
                }

                RoutedEventHandler loadedEvent = null;

                loadedEvent = (sender, args) => {
                    this.Loaded -= loadedEvent;

                    var generator = filterList.ItemContainerGenerator;
                    for (int i = 0; i < filterList.Items.Count; i++)
                    {
                        DependencyObject container = generator.ContainerFromIndex(i);
                        var filterCtrl             = (FilterControl)VisualTreeHelper.GetChild(container, 0);
                        var filter = save.Filters[i];
                        filterCtrl.SetFromSave(Game, filter);
                    }
                    this.RefreshSearch(SearchButton, null);
                };

                this.Loaded += loadedEvent;
            }
            this.UpdateDataGrid(game.AllCards(true).ToDataTable(Game).DefaultView);
            UpdateCount();
        }