internal static void Notify_SteamItemUnsubscribed(PublishedFileId_t pfid)
 {
     if (selectedMod != null && selectedMod.Identifier == pfid.ToString())
     {
         selectedMod = null;
     }
 }
        internal static void Notify_ModsListChanged()
        {
            UpdateLoadedMods();
            string selModId = selectedMod.Identifier;

            selectedMod = loadedMods.FirstOrDefault(m => m.Identifier == selModId);
        }
        private static Action CreateModRowActionSteam(ModMetaDataEnhanced mod)
        {
            return(new Action(() => {
                List <FloatMenuOption> options = new List <FloatMenuOption> {
                    new FloatMenuOption("InstallLocal".Translate(), () => Find.WindowStack.Add(new InstallModDialog(mod))),
                    new FloatMenuOption("Rename".ToString(), () => StartRename(mod)),
                    new FloatMenuOptionColorPicker((color) => mod.TextColor = color, MenuOptionPriority.Default, textColors),
                    new FloatMenuOption("OpenWorkshopPage".Translate(), () => { SteamUtility.OpenWorkshopPage(mod.OriginalMetaData.GetPublishedFileId()); }),
                    new FloatMenuOption("Unsubscribe".Translate(), () => { RemoveMod(mod); })
                };

                Find.WindowStack.Add((Window) new FloatMenu(options));
            }));
        }
        private static Action CreateModRowActionLocal(ModMetaDataEnhanced mod)
        {
            return(new Action(() => {
                List <FloatMenuOption> options = new List <FloatMenuOption> {
                    new FloatMenuOption("Rename".ToString(), () => StartRename(mod)),
                    new FloatMenuOptionColorPicker((color) => mod.TextColor = color, MenuOptionPriority.Default, textColors),
                    new FloatMenuOption("OpenDirectory".Translate(), () => HugsLib.Shell.ShellOpenDirectory.Execute(mod.RootDir.FullName))
                };
                if (!mod.Url.NullOrEmpty())
                {
                    options.Add(new FloatMenuOption("OpenWebSite".Translate(), () => Application.OpenURL(mod.Url)));
                }

                if (!mod.IsCoreMod)
                {
                    options.Add(new FloatMenuOption("DeleteLocal".Translate(), () => RemoveMod(mod)));
                }
                Find.WindowStack.Add((Window) new FloatMenu(options));
            }));
        }
 private static void StartRename(ModMetaDataEnhanced mod)
 {
     selectedMod      = mod;
     renameBuf        = selectedMod.Name;
     RenameInProgress = true;
 }
 private static void RemoveMod(ModMetaDataEnhanced mod)
 {
     Find.WindowStack.Add(Dialog_MessageBox.CreateConfirmation("ConfirmUninstall".Translate(mod.Name), (Action)(() => {
         ModController.UnInstallMod(mod);
     }), true, "AreYouSure".Translate()));
 }
        private static void DoModRow(Listing_Standard listing, ModMetaDataEnhanced mod, int index, int reorderableGroup = -1)
        {
            Rect rect = listing.GetRect(26f);

            if (mod.Active && !SearchInProgress)
            {
                ReorderableWidget.Reorderable(reorderableGroup, rect);
            }
            Action clickAction = null;

            if (mod.Source == ContentSource.SteamWorkshop)
            {
                clickAction = CreateModRowActionSteam(mod);
            }
            else
            {
                clickAction = CreateModRowActionLocal(mod);
            }
            ContentSourceUtility.DrawContentSource(rect, mod.Source, clickAction);
            rect.xMin += 28f;
            bool active     = mod.Active;
            bool isSelected = mod.OriginalMetaData == selectedMod.OriginalMetaData;
            Rect rect2      = rect;

            if (mod.Enabled && RenameInProgress == false)
            {
                string text = string.Empty;
                if (mod.Active)
                {
                    text = text + "DragToReorder".Translate() + ".\n\n";
                }
                if (!text.NullOrEmpty())
                {
                    TooltipHandler.TipRegion(rect2, new TipSignal(text, mod.GetHashCode() * 3311));
                }
                Color origColor = GUI.color;
                GUI.color = mod.TextColor;
                if (Widgets.CheckboxLabeledSelectable(rect2, mod.Name, ref isSelected, ref active))
                {
                    selectedMod = mod;
                }
                GUI.color = origColor;

                if (mod.Active && reorderableGroup >= 0)
                {
                    Rect texRect = new Rect(rect2.xMax - 48f + 2f, rect2.y, 24f, 24f);
                    GUI.DrawTexture(texRect, Textures.DragHash);
                }

                if (mod.HasNotifications)
                {
                    Color  notifColour   = Color.gray;
                    string tooltipString = string.Empty;

                    foreach (NotificationBase notification in mod.Notifications)
                    {
                        if (notification.MessageType == NotificationType.Error)
                        {
                            notifColour = Color.red;
                        }
                        else if (notification.MessageType == NotificationType.Warning && notifColour != Color.red)
                        {
                            notifColour = Color.yellow;
                        }

                        tooltipString += notification.MessageText + "\n\n";
                    }

                    Text.Anchor = TextAnchor.MiddleCenter;
                    Text.Font   = GameFont.Medium;
                    GUI.color   = notifColour;

                    Rect dupRect = new Rect(rect2.xMax - 72f + 2f, rect.y, 24f, 24f);
                    Widgets.Label(dupRect, "!");
                    TooltipHandler.ClearTooltipsFrom(dupRect);
                    TooltipHandler.TipRegion(dupRect, tooltipString.Trim());

                    Text.Anchor = TextAnchor.UpperLeft;
                    Text.Font   = GameFont.Small;
                    GUI.color   = Color.white;
                }
                if (mod.Active && !active && mod.Name == ModContentPack.CoreModIdentifier)
                {
                    ModMetaData coreMod = mod.OriginalMetaData;
                    Find.WindowStack.Add(Dialog_MessageBox.CreateConfirmation("ConfirmDisableCoreMod".Translate(), delegate {
                        coreMod.Active = false;
                        truncatedModNamesCache.Clear();
                    }, false, null));
                }
                else
                {
                    mod.Active = active;
                    truncatedModNamesCache.Clear();
                }
            }
            else if (RenameInProgress == true && isSelected)
            {
                renameBuf = Widgets.TextField(rect2, renameBuf);
            }
            else
            {
                GUI.color = Color.gray;
                Widgets.Label(rect2, mod.Name);
            }
            GUI.color = Color.white;
        }
 internal static void PreOpen(this Page_ModsConfig instance)
 {
     loadedMods = new List <ModMetaDataEnhanced>();
     UpdateLoadedMods();
     selectedMod = loadedMods.FirstOrDefault(mod => mod.Identifier == instance.selectedMod.Identifier);
 }
 public InstallModDialog(ModMetaDataEnhanced mod)
 {
     this.curMod = mod;
     this.OnReset();
 }