public void StartComic(Comic comic) { var arguments = Comic.ExecutionString.CreateExecutionArguments(Profile.ExecutionArguments, comic); if (this.Type == Application.Viewer) { var viewer = new Viewer.MainWindow(arguments.ToArray()) { Top = Support.Helper.RestrictToRange(Properties.Settings.Default.ViewerTop, 0, null), Left = Support.Helper.RestrictToRange(Properties.Settings.Default.ViewerLeft, 0, null), Height = Support.Helper.RestrictToRange(Properties.Settings.Default.ViewerHeight, 200, null), Width = Support.Helper.RestrictToRange(Properties.Settings.Default.ViewerWidth, 200, null) }; var conn = SQL.Database.DatabaseConnection.ForCurrentProfile(); viewer.GoToIndex(conn.GetProgress(comic)); var customContextMenuItems = new List <object>(); var loveItem = new System.Windows.Controls.MenuItem { Header = "Love" }; loveItem.Click += ((o, e) => comic.Loved = !comic.Loved); var dislikeItem = new System.Windows.Controls.MenuItem() { Header = "Dislike" }; dislikeItem.Click += ((o, e) => comic.Disliked = !comic.Disliked); var thumbnailItem = new System.Windows.Controls.MenuItem() { Header = "Set Thumbnail as Current Image" }; thumbnailItem.Click += ((o, e) => { // This also needs to be more generic comic.ThumbnailSource = viewer.CurrentImage; comic.Save(); comic.GenerateThumbnail(); App.ComicsWindow.RefreshComics(); }); customContextMenuItems.Add(loveItem); customContextMenuItems.Add(dislikeItem); customContextMenuItems.Add(thumbnailItem); viewer.CustomContextMenuItems = customContextMenuItems; viewer.Closing += ((sender, e) => { Properties.Settings.Default.ViewerTop = viewer.Top; Properties.Settings.Default.ViewerLeft = viewer.Left; Properties.Settings.Default.ViewerHeight = viewer.ActualHeight; Properties.Settings.Default.ViewerWidth = viewer.ActualWidth; conn.SetProgress(comic, viewer.CurrentImageIndex); }); viewer.Show(); } else { if (!File.Exists(this.Path)) { MessageBox.Show("Startup application doesn't exist!", "Warning", MessageBoxButton.OK, MessageBoxImage.Warning); return; } Process.Start(this.Path, string.Join(" ", arguments.Select(p => "\"" + p + "\""))); } }