public void UpdateListView(CASCFolder baseEntry, NoFlickerListView fileList, string filter) { Wildcard wildcard = new Wildcard(filter, false, RegexOptions.IgnoreCase); // Sort baseEntry.Entries = baseEntry.EntriesMirror.Where(v => v.Value is CASCFolder || (v.Value is CASCFile && wildcard.IsMatch(v.Value.Name))). OrderBy(v => v.Value, Sorter).ToDictionary(pair => pair.Key, pair => pair.Value); // Update fileList.Tag = baseEntry; fileList.VirtualListSize = 0; fileList.VirtualListSize = baseEntry.Entries.Count; if (fileList.VirtualListSize > 0) { fileList.EnsureVisible(0); fileList.SelectedIndex = 0; fileList.FocusedItem = fileList.Items[0]; } }
public void UpdateListView(CASCFolder baseEntry, NoFlickerListView fileList, string filter) { Wildcard wildcard = new Wildcard(filter, false, RegexOptions.IgnoreCase); // Sort _displayedEntries = baseEntry.Entries.Where(v => v.Value is CASCFolder || (v.Value is CASCFile && wildcard.IsMatch(v.Value.Name))). OrderBy(v => v.Value, Sorter).Select(kv => kv.Value).ToList(); _currentFolder = baseEntry; // Update fileList.VirtualListSize = 0; fileList.VirtualListSize = _displayedEntries.Count; if (fileList.VirtualListSize > 0) { fileList.EnsureVisible(0); fileList.SelectedIndex = 0; fileList.FocusedItem = fileList.Items[0]; } }
static void Main(string[] args) { if (args.Length != 4) { Console.WriteLine("Invalid arguments count!"); Console.WriteLine("Usage: CASCConsole <pattern> <destination> <localeFlags> <contentFlags>"); return; } Console.WriteLine("Settings:"); Console.WriteLine(" WowPath: {0}", Settings.Default.StoragePath); Console.WriteLine(" OnlineMode: {0}", Settings.Default.OnlineMode); Console.WriteLine("Loading..."); BackgroundWorkerEx bgLoader = new BackgroundWorkerEx(); bgLoader.ProgressChanged += BgLoader_ProgressChanged; CASCConfig config = Settings.Default.OnlineMode ? CASCConfig.LoadOnlineStorageConfig(Settings.Default.Product, "us") : CASCConfig.LoadLocalStorageConfig(Settings.Default.StoragePath); CASCHandler cascHandler = CASCHandler.OpenStorage(config, bgLoader); string pattern = args[0]; string dest = args[1]; LocaleFlags locale = (LocaleFlags)Enum.Parse(typeof(LocaleFlags), args[2]); ContentFlags content = (ContentFlags)Enum.Parse(typeof(ContentFlags), args[3]); cascHandler.Root.LoadListFile(Path.Combine(Environment.CurrentDirectory, "listfile.txt"), bgLoader); CASCFolder root = cascHandler.Root.SetFlags(locale, content); Console.WriteLine("Loaded."); Console.WriteLine("Extract params:", pattern, dest, locale); Console.WriteLine(" Pattern: {0}", pattern); Console.WriteLine(" Destination: {0}", dest); Console.WriteLine(" LocaleFlags: {0}", locale); Console.WriteLine(" ContentFlags: {0}", content); Wildcard wildcard = new Wildcard(pattern, true, RegexOptions.IgnoreCase); foreach (var file in root.GetFiles()) { if (wildcard.IsMatch(file.FullName)) { Console.Write("Extracting '{0}'...", file.FullName); try { cascHandler.SaveFileTo(file.FullName, dest); Console.WriteLine(" Ok!"); } catch (Exception exc) { Console.WriteLine(" Error!"); Logger.WriteLine(exc.Message); } } } Console.WriteLine("Extracted."); }