private void Index_Load(object sender, EventArgs e) { ColumnSorter.InitListView(listView1); ColumnSorter.InitListView(listView2); List <HitomiTagdata> tags = new List <HitomiTagdata>(); tags.AddRange(HitomiData.Instance.tagdata_collection.female); tags.AddRange(HitomiData.Instance.tagdata_collection.male); tags.AddRange(HitomiData.Instance.tagdata_collection.tag); List <Tuple <string, string, int> > tag_e2k = new List <Tuple <string, string, int> >(); foreach (var tag in tags) { string k_try = KoreanTag.TagMap(tag.Tag); if (k_try != tag.Tag) { if (k_try.Contains(":")) { tag_e2k.Add(new Tuple <string, string, int>(tag.Tag, k_try.Split(':')[1], tag.Count)); } else { tag_e2k.Add(new Tuple <string, string, int>(tag.Tag, k_try, tag.Count)); } } } tag_e2k.Sort((a, b) => b.Item3.CompareTo(a.Item3)); List <ListViewItem> lvi = new List <ListViewItem>(); for (int i = 0; i < tag_e2k.Count; i++) { lvi.Add(new ListViewItem(new string[] { (i + 1).ToString(), tag_e2k[i].Item1, tag_e2k[i].Item2, tag_e2k[i].Item3.ToString() })); } listView1.Items.AddRange(lvi.ToArray()); List <Tuple <string, string, int> > series_e2k = new List <Tuple <string, string, int> >(); foreach (var tag in HitomiData.Instance.tagdata_collection.series) { string k_try = KoreanSeries.SeriesMap(tag.Tag); if (k_try != tag.Tag) { series_e2k.Add(new Tuple <string, string, int>(tag.Tag, k_try, tag.Count)); } } series_e2k.Sort((a, b) => b.Item3.CompareTo(a.Item3)); List <ListViewItem> lvi2 = new List <ListViewItem>(); for (int i = 0; i < series_e2k.Count; i++) { lvi2.Add(new ListViewItem(new string[] { (i + 1).ToString(), series_e2k[i].Item1, series_e2k[i].Item2, series_e2k[i].Item3.ToString() })); } listView2.Items.AddRange(lvi2.ToArray()); }
private void ZipViewerElements_Loaded(object sender, RoutedEventArgs e) { if (loaded) { return; } loaded = true; if (offline_mode == false && !File.Exists(zip_file_name)) { Title.Text = $"파일을 찾을 수 없음"; Artist.Text = zip_file_name; return; } set_rateeffect(); Task.Run(() => { try { Application.Current.Dispatcher.BeginInvoke(new Action( delegate { Title.Text = model.Title; Artist.Text = model.Artists != null ? model.Artists[0] : ""; ImageCount.Text = $"{model.Pages} Pages"; bool seperator = false; if (model.Artists != null) { var stack = new StackPanel { Orientation = Orientation.Horizontal }; stack.Children.Add(new PackIcon { Kind = PackIconKind.Artist, Opacity = .56 }); stack.Children.Add(new TextBlock { Margin = new Thickness(8, 0, 0, 0), VerticalAlignment = VerticalAlignment.Center, Text = "작가 목록" }); var menu_item = new MenuItem { Header = stack }; foreach (var artist in model.Artists) { var item = new MenuItem { Header = new TextBlock { Text = artist }, Tag = $"artist:{artist.Replace(' ', '_')}" }; item.Click += subitem_click; menu_item.Items.Add(item); } seperator = true; Menu.Items.Add(new Separator { Margin = new Thickness(4, 0, 4, 0), Background = Brushes.Gray }); Menu.Items.Add(menu_item); } if (model.Groups != null) { var stack = new StackPanel { Orientation = Orientation.Horizontal }; stack.Children.Add(new PackIcon { Kind = PackIconKind.UserGroup, Opacity = .56 }); stack.Children.Add(new TextBlock { Margin = new Thickness(8, 0, 0, 0), VerticalAlignment = VerticalAlignment.Center, Text = "그룹 목록" }); var menu_item = new MenuItem { Header = stack }; foreach (var group in model.Groups) { var item = new MenuItem { Header = new TextBlock { Text = group }, Tag = $"group:{group.Replace(' ', '_')}" }; item.Click += subitem_click; menu_item.Items.Add(item); } if (!seperator) { seperator = true; Menu.Items.Add(new Separator { Margin = new Thickness(8, 0, 8, 0), Background = Brushes.Gray }); } Menu.Items.Add(menu_item); } if (model.Series != null) { var stack = new StackPanel { Orientation = Orientation.Horizontal }; stack.Children.Add(new PackIcon { Kind = PackIconKind.Book, Opacity = .56 }); stack.Children.Add(new TextBlock { Margin = new Thickness(8, 0, 0, 0), VerticalAlignment = VerticalAlignment.Center, Text = "시리즈 목록" }); var menu_item = new MenuItem { Header = stack }; foreach (var series in model.Series) { MenuItem item = null; if (KoreanSeries.SeriesMap(series) == series) { item = new MenuItem { Header = new TextBlock { Text = series }, Tag = $"series:{series.Replace(' ', '_')}" } } ; else { item = new MenuItem { Header = new TextBlock { Text = $"{series} ({KoreanSeries.SeriesMap(series)})" }, Tag = $"series:{series.Replace(' ', '_')}" } }; item.Click += subitem_click; menu_item.Items.Add(item); } if (!seperator) { seperator = true; Menu.Items.Add(new Separator { Margin = new Thickness(8, 0, 8, 0), Background = Brushes.Gray }); } Menu.Items.Add(menu_item); } if (model.Tags != null) { var stack = new StackPanel { Orientation = Orientation.Horizontal }; stack.Children.Add(new PackIcon { Kind = PackIconKind.Tag, Opacity = .56 }); stack.Children.Add(new TextBlock { Margin = new Thickness(8, 0, 0, 0), VerticalAlignment = VerticalAlignment.Center, Text = "태그 목록" }); var menu_item = new MenuItem { Header = stack }; foreach (var tag in model.Tags) { MenuItem item = null; if (KoreanTag.TagMap(tag) == tag) { item = new MenuItem { Header = new TextBlock { Text = tag }, Tag = $"{(tag.StartsWith("female:") || tag.StartsWith("male:") ? tag.Replace(' ', '_') : $"tag:{tag.Replace(' ', '_')}")}" } } ; else if (KoreanTag.TagMap(tag).Contains(':')) { item = new MenuItem { Header = new TextBlock { Text = $"{tag} ({KoreanTag.TagMap(tag).Split(':')[1]})" }, Tag = $"{(tag.StartsWith("female:") || tag.StartsWith("male:") ? tag.Replace(' ', '_') : $"tag:{tag.Replace(' ', '_')}")}" } } ; else { item = new MenuItem { Header = new TextBlock { Text = $"{tag} ({KoreanTag.TagMap(tag)})" }, Tag = $"{(tag.StartsWith("female:") || tag.StartsWith("male:") ? tag.Replace(' ', '_') : $"tag:{tag.Replace(' ', '_')}")}" } }; item.Click += subitem_click; menu_item.Items.Add(item); } if (!seperator) { seperator = true; Menu.Items.Add(new Separator { Margin = new Thickness(8, 0, 8, 0), Background = Brushes.Gray }); } Menu.Items.Add(menu_item); } })); if (offline_mode == false) { zipFile = ZipFile.Open(zip_file_name, ZipArchiveMode.Read); var zipEntry = !zipFile.Entries[0].Name.EndsWith(".json") ? zipFile.Entries[0] : zipFile.Entries[1]; zipStream = zipEntry.Open(); Application.Current.Dispatcher.BeginInvoke(new Action( delegate { var bitmap = new BitmapImage(); bitmap.BeginInit(); bitmap.DecodePixelWidth = 250; bitmap.CacheOption = BitmapCacheOption.OnLoad; bitmap.StreamSource = zipStream; bitmap.EndInit(); bitmap.DownloadCompleted += Bitmap_DownloadCompleted; Image.Source = bitmap; })); } else if (download_thumbnail) { var thumbnail = HitomiCommon.HitomiThumbnail + HitomiParser.ParseGalleryBlock(Koromo_Copy.Net.NetCommon.DownloadString( $"{HitomiCommon.HitomiGalleryBlock}{model.Id}.html")).Thumbnail; Application.Current.Dispatcher.BeginInvoke(new Action( delegate { var bitmap = new BitmapImage(); bitmap.BeginInit(); bitmap.UriSource = new Uri(thumbnail); bitmap.DecodePixelWidth = 240; bitmap.CacheOption = BitmapCacheOption.OnLoad; bitmap.EndInit(); //bitmap.DownloadCompleted += Bitmap_DownloadCompleted; Image.Source = bitmap; })); } } catch (Exception ex) { Monitor.Instance.Push(ex.Message); Monitor.Instance.Push(ex.StackTrace); } });
private void SearchMaterialElements_Loaded(object sender, RoutedEventArgs e) { if (init) { return; } init = true; Task.Run(() => { HitomiArticle ha = Article as HitomiArticle; try { ha.Thumbnail = HitomiCommon.HitomiThumbnail + HitomiParser.ParseGalleryBlock(Koromo_Copy.Net.NetCommon.DownloadString( $"{HitomiCommon.HitomiGalleryBlock}{ha.Magic}.html")).Thumbnail; ha.ImagesLink = HitomiParser.GetImageLink(Koromo_Copy.Net.NetCommon.DownloadString(HitomiCommon.GetImagesLinkAddress(ha.Magic))); } catch { ha.IsUnstable = true; var har = HCommander.GetArticleData(Convert.ToInt32(ha.Magic)); if (!har.HasValue) { MessageBox.Show($"{ha.Magic}를 찾을 수 없습니다. 이 항목은 히요비, 이헨, 익헨 어디에도 없었습니다. 프로그램 제작자에게 문의하세요.", "Koromo copy", MessageBoxButton.OK, MessageBoxImage.Error); return; } ha.UnstableModel = har.Value; ha.Thumbnail = ha.UnstableModel.Thumbnail; ha.ImagesLink = new List <string>(); } Application.Current.Dispatcher.BeginInvoke(new Action( delegate { try { if (ha.IsUnstable && ha.UnstableModel.ArticleType == HArticleType.EXHentai) { var image = NetCommon.GetExHentaiClient().DownloadData(new Uri(ha.UnstableModel.Thumbnail)); using (var ms = new System.IO.MemoryStream(image)) { BitmapImage.BeginInit(); if (Settings.Instance.Model.LowQualityImage) { BitmapImage.DecodePixelWidth = 100; } BitmapImage.CacheOption = BitmapCacheOption.OnLoad; BitmapImage.StreamSource = ms; BitmapImage.EndInit(); } } else { BitmapImage.BeginInit(); BitmapImage.UriSource = new Uri(ha.Thumbnail); if (Settings.Instance.Model.LowQualityImage) { BitmapImage.DecodePixelWidth = 100; } BitmapImage.EndInit(); BitmapImage.DownloadCompleted += B_DownloadCompleted; } } catch (Exception ex) { Monitor.Instance.Push("[SME Error] " + ex.Message + "\r\n" + ex.StackTrace); } ImageCount.Text = ha.ImagesLink.Count + " Pages"; Image.Source = BitmapImage; if (ha.Artists != null && ha.Artists[0].ToUpper() != "N/A") { var stack = new StackPanel { Orientation = Orientation.Horizontal }; stack.Children.Add(new PackIcon { Kind = PackIconKind.Artist, Opacity = .56 }); stack.Children.Add(new TextBlock { Margin = new Thickness(8, 0, 0, 0), VerticalAlignment = VerticalAlignment.Center, Text = "작가 목록" }); var menu_item = new MenuItem { Header = stack }; foreach (var artist in ha.Artists) { var item = new MenuItem { Header = new TextBlock { Text = artist }, Tag = $"artist:{artist.Replace(' ', '_')}" }; item.Click += MenuItem_Click; menu_item.Items.Add(item); } Menu.Items.Add(menu_item); } if (ha.Groups != null && ha.Groups[0].ToUpper() != "N/A") { var stack = new StackPanel { Orientation = Orientation.Horizontal }; stack.Children.Add(new PackIcon { Kind = PackIconKind.UserGroup, Opacity = .56 }); stack.Children.Add(new TextBlock { Margin = new Thickness(8, 0, 0, 0), VerticalAlignment = VerticalAlignment.Center, Text = "그룹 목록" }); var menu_item = new MenuItem { Header = stack }; foreach (var group in ha.Groups) { var item = new MenuItem { Header = new TextBlock { Text = group }, Tag = $"group:{group.Replace(' ', '_')}" }; item.Click += MenuItem_Click; menu_item.Items.Add(item); } Menu.Items.Add(menu_item); } if (ha.Series != null) { var stack = new StackPanel { Orientation = Orientation.Horizontal }; stack.Children.Add(new PackIcon { Kind = PackIconKind.Book, Opacity = .56 }); stack.Children.Add(new TextBlock { Margin = new Thickness(8, 0, 0, 0), VerticalAlignment = VerticalAlignment.Center, Text = "시리즈 목록" }); var menu_item = new MenuItem { Header = stack }; foreach (var series in ha.Series) { MenuItem item = null; if (KoreanSeries.SeriesMap(series) == series) { item = new MenuItem { Header = new TextBlock { Text = series }, Tag = $"series:{series.Replace(' ', '_')}" } } ; else { item = new MenuItem { Header = new TextBlock { Text = $"{series} ({KoreanSeries.SeriesMap(series)})" }, Tag = $"series:{series.Replace(' ', '_')}" } }; item.Click += MenuItem_Click; menu_item.Items.Add(item); } Menu.Items.Add(menu_item); } if (ha.Tags != null) { var stack = new StackPanel { Orientation = Orientation.Horizontal }; stack.Children.Add(new PackIcon { Kind = PackIconKind.Tag, Opacity = .56 }); stack.Children.Add(new TextBlock { Margin = new Thickness(8, 0, 0, 0), VerticalAlignment = VerticalAlignment.Center, Text = "태그 목록" }); var menu_item = new MenuItem { Header = stack }; foreach (var tag in ha.Tags) { MenuItem item = null; if (KoreanTag.TagMap(tag) == tag) { item = new MenuItem { Header = new TextBlock { Text = tag }, Tag = $"{(tag.StartsWith("female:") || tag.StartsWith("male:") ? tag.Replace(' ', '_') : $"tag:{tag.Replace(' ', '_')}")}" } } ; else if (KoreanTag.TagMap(tag).Contains(':')) { item = new MenuItem { Header = new TextBlock { Text = $"{tag} ({KoreanTag.TagMap(tag).Split(':')[1]})" }, Tag = $"{(tag.StartsWith("female:") || tag.StartsWith("male:") ? tag.Replace(' ', '_') : $"tag:{tag.Replace(' ', '_')}")}" } } ; else { item = new MenuItem { Header = new TextBlock { Text = $"{tag} ({KoreanTag.TagMap(tag)})" }, Tag = $"{(tag.StartsWith("female:") || tag.StartsWith("male:") ? tag.Replace(' ', '_') : $"tag:{tag.Replace(' ', '_')}")}" } }; item.Click += MenuItem_Click; menu_item.Items.Add(item); } Menu.Items.Add(menu_item); } })); });
private void Index_Loaded(object sender, RoutedEventArgs e) { if (!SearchSpace.Instance.IsMetadataLoaded || loaded) { return; } loaded = true; List <HitomiTagdata> tags = new List <HitomiTagdata>(); tags.AddRange(HitomiIndex.Instance.tagdata_collection.female); tags.AddRange(HitomiIndex.Instance.tagdata_collection.male); tags.AddRange(HitomiIndex.Instance.tagdata_collection.tag); List <Tuple <string, string, int> > tag_e2k = new List <Tuple <string, string, int> >(); foreach (var tag in tags) { string k_try = KoreanTag.TagMap(tag.Tag); if (k_try != tag.Tag) { if (k_try.Contains(":")) { tag_e2k.Add(new Tuple <string, string, int>(tag.Tag, k_try.Split(':')[1], tag.Count)); } else { tag_e2k.Add(new Tuple <string, string, int>(tag.Tag, k_try, tag.Count)); } } } tag_e2k.Sort((a, b) => b.Item3.CompareTo(a.Item3)); var tagdx = KoreanTagList.DataContext as ToolIndexDataGridViewModel; for (int i = 0; i < tag_e2k.Count; i++) { tagdx.Items.Add(new ToolIndexDataGridItemViewModel { 인덱스 = (i + 1).ToString(), 영어 = tag_e2k[i].Item1, 한국어 = tag_e2k[i].Item2, 카운트 = tag_e2k[i].Item3.ToString() }); } List <Tuple <string, string, int> > series_e2k = new List <Tuple <string, string, int> >(); foreach (var tag in HitomiIndex.Instance.tagdata_collection.series) { string k_try = KoreanSeries.SeriesMap(tag.Tag); if (k_try != tag.Tag) { series_e2k.Add(new Tuple <string, string, int>(tag.Tag, k_try, tag.Count)); } } series_e2k.Sort((a, b) => b.Item3.CompareTo(a.Item3)); var seriesdx = KoreanSeriesList.DataContext as ToolIndexDataGridViewModel; for (int i = 0; i < series_e2k.Count; i++) { seriesdx.Items.Add(new ToolIndexDataGridItemViewModel { 인덱스 = (i + 1).ToString(), 영어 = series_e2k[i].Item1, 한국어 = series_e2k[i].Item2, 카운트 = series_e2k[i].Item3.ToString() }); } }
private void contextMenuStrip1_Opening(object sender, System.ComponentModel.CancelEventArgs e) { string[] artist = Article.Artists?.Select(x => x.Trim()).ToArray(); string[] group = Article.Groups?.Select(x => x.Trim()).ToArray(); string[] series = Article.Series?.Select(x => x.Trim()).ToArray(); string[] character = Article.Characters?.Select(x => x.Trim()).ToArray(); string[] tag = Article.Tags?.Select(x => x.Trim()).ToArray(); (contextMenuStrip1.Items[1] as ToolStripMenuItem).DropDownItems.Clear(); if (artist != null) { (contextMenuStrip1.Items[1] as ToolStripMenuItem).DropDownItems.AddRange(artist.Select(x => new ToolStripMenuItem(x, null, Artist_Click)).ToArray()); } (contextMenuStrip1.Items[2] as ToolStripMenuItem).DropDownItems.Clear(); if (group != null) { (contextMenuStrip1.Items[2] as ToolStripMenuItem).DropDownItems.AddRange(group.Select(x => new ToolStripMenuItem(x, null, Group_Click)).ToArray()); } (contextMenuStrip1.Items[3] as ToolStripMenuItem).DropDownItems.Clear(); if (series != null) { (contextMenuStrip1.Items[3] as ToolStripMenuItem).DropDownItems.AddRange(series.Select(x => { string ko = KoreanSeries.SeriesMap(x); if (ko != x) { return(new ToolStripMenuItem($"{x} ({ko})", null, Series_Click)); } else { return(new ToolStripMenuItem($"{x}", null, Series_Click)); } }).ToArray()); } (contextMenuStrip1.Items[4] as ToolStripMenuItem).DropDownItems.Clear(); if (character != null) { (contextMenuStrip1.Items[4] as ToolStripMenuItem).DropDownItems.AddRange(character.Select(x => new ToolStripMenuItem(x, null, Character_Click)).ToArray()); } (contextMenuStrip1.Items[5] as ToolStripMenuItem).DropDownItems.Clear(); if (tag != null) { (contextMenuStrip1.Items[5] as ToolStripMenuItem).DropDownItems.AddRange(tag.Select(x => { string ko = KoreanTag.TagMap(x); if (ko != x) { if (ko.Contains(':')) { return(new ToolStripMenuItem($"{x} ({ko.Split(':')[1]})", null, Tag_Click)); } else { return(new ToolStripMenuItem($"{x} ({ko})", null, Tag_Click)); } } else { return(new ToolStripMenuItem($"{x}", null, Tag_Click)); } }).ToArray()); } }