/// <summary> /// Event handler for mod delete button /// </summary> private async void modDeleteButton_Click(object sender, RoutedEventArgs e) { var gameDirectory = new DirectoryInfo(Properties.Settings.Default.FFXIV_Directory); var modding = new Modding(gameDirectory); if ((ModListTreeView.SelectedItem as Category).ParentCategory.Name.Equals("ModPacks")) { if (FlexibleMessageBox.Show( UIMessages.DeleteModPackMessage, UIMessages.DeleteModPackTitle, MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == System.Windows.Forms.DialogResult.Yes) { var progress = await this.ShowProgressAsync(UIMessages.ModPack_Delete, UIMessages.PleaseStandByMessage); await modding.DeleteModPack((ModListTreeView.SelectedItem as Category).Name); (DataContext as ModListViewModel).RemoveModPack(); await progress.CloseAsync(); } } else { var enumerable = ModItemList.SelectedItems as IEnumerable; var selectedItems = enumerable.OfType <ModListViewModel.ModListModel>().ToArray(); foreach (var selectedModItem in selectedItems) { await modding.DeleteMod(selectedModItem.ModItem.fullPath); (DataContext as ModListViewModel).RemoveItem(selectedModItem, (Category)ModListTreeView.SelectedItem); } } }
/// <summary> /// Event handler for mod delete button /// </summary> private void modDeleteButton_Click(object sender, RoutedEventArgs e) { var gameDirectory = new DirectoryInfo(Properties.Settings.Default.FFXIV_Directory); var modding = new Modding(gameDirectory); if ((ModListTreeView.SelectedItem as Category).ParentCategory.Name.Equals("ModPacks")) { if (FlexibleMessageBox.Show( "Caution: This will delete all the mods for the currently selected Mod Pack.\n\nThis process is not reversible, do you want to continue?", "Mod Pack Deletion Warning.", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == System.Windows.Forms.DialogResult.Yes) { modding.DeleteModPack((ModListTreeView.SelectedItem as Category).Name); (DataContext as ModListViewModel).RemoveModPack(); } } else { var enumerable = ModItemList.SelectedItems as IEnumerable; var selectedItems = enumerable.OfType <ModListViewModel.ModListModel>().ToArray(); foreach (var selectedModItem in selectedItems) { modding.DeleteMod(selectedModItem.ModItem.fullPath); (DataContext as ModListViewModel).RemoveItem(selectedModItem, (Category)ModListTreeView.SelectedItem); } } }
public async Task DisableMod() { _view.SaveButton.IsEnabled = false; _view.CancelButton.IsEnabled = false; _view.DisableButton.IsEnabled = false; _view.DisableButton.Content = UIStrings.Working_Ellipsis; var files = new List <string>(); // If we're disabling from the Edit Multi menu, diable all variant versions as well. if (_mode == MaterialEditorMode.EditMulti) { var sameModelItems = await _item.GetSharedModelItems(); var itemType = ItemType.GetPrimaryItemType(_item); // Find all the variant materials foreach (var item in sameModelItems) { var variantPath = await _mtrl.GetMtrlPath(item, _material.GetRace(), _material.GetMaterialIdentifier(), itemType); files.Add(variantPath.Folder + "/" + variantPath.File); } } else { // Just disabling this one. files.Add(_material.MTRLPath); } files = files.Distinct().ToList(); foreach (var file in files) { var modEntry = await _modding.TryGetModEntry(file); if (!modEntry.enabled) { continue; } // If the file is a custom addition, and not a modification. if (modEntry.source != XivStrings.TexTools) { await _modding.DeleteMod(file); } else { await _modding.ToggleModStatus(file, false); } } _view.Close(false); }
/// <summary> /// Event handler for mod delete button /// </summary> private async void modDeleteButton_Click(object sender, RoutedEventArgs e) { var gameDirectory = new DirectoryInfo(Properties.Settings.Default.FFXIV_Directory); var modding = new Modding(gameDirectory); await LockUi("Deleting Mod", "Please wait...", this); try { if ((ModListTreeView.SelectedItem as Category).ParentCategory.Name.Equals("ModPacks")) { if (FlexibleMessageBox.Show( UIMessages.DeleteModPackMessage, UIMessages.DeleteModPackTitle, MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == System.Windows.Forms.DialogResult.Yes) { await modding.DeleteModPack((ModListTreeView.SelectedItem as Category).Name); (DataContext as ModListViewModel).RemoveModPack(); } } else { var enumerable = ModItemList.SelectedItems as IEnumerable; var selectedItems = enumerable.OfType <ModListViewModel.ModListModel>().ToArray(); foreach (var selectedModItem in selectedItems) { await modding.DeleteMod(selectedModItem.ModItem.fullPath); (DataContext as ModListViewModel).RemoveItem(selectedModItem, (Category)ModListTreeView.SelectedItem); } } } catch (Exception Ex) { FlexibleMessageBox.Show("Unable to delete Mod or Modpack.\n\nError: " + Ex.Message, "Mod Delete Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { await UnlockUi(this); } }
public async Task DisableMod() { _view.SaveButton.IsEnabled = false; _view.CancelButton.IsEnabled = false; _view.DisableButton.IsEnabled = false; _view.DisableButton.Content = UIStrings.Working_Ellipsis; var files = new HashSet <string>(); var root = _item.GetRoot(); if (root == null || !Imc.UsesImc(root)) { // This is the only copy of the material we know how to find. files.Add(_material.MTRLPath); } else { var imc = new Imc(XivCache.GameInfo.GameDirectory); var info = await imc.GetFullImcInfo(_item); var entries = info.GetAllEntries(root.Info.Slot); var materialSets = entries.Select(x => x.MaterialSet).ToHashSet(); var extract = new Regex("(v[0-9]{4})"); var rep = extract.Match(_material.MTRLPath).Groups[1].Value; // Remove the material in all of the referenced material sets. foreach (var setId in materialSets) { var newPath = _material.MTRLPath.Replace(rep, "v" + setId.ToString().PadLeft(4, '0')); files.Add(newPath); } } try { foreach (var file in files) { var modEntry = await _modding.TryGetModEntry(file); if (modEntry == null) { continue; } // If the file is a custom addition, and not a modification. if (modEntry.IsCustomFile()) { await _modding.DeleteMod(file); } else { await _modding.ToggleModStatus(file, false); } } } catch (Exception ex) { FlexibleMessageBox.Show("Unable to delete Mod.\n\nError: " + ex.Message, "Mod Delete Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } _view.Close(false); }