public override void Construct() { base.Construct(); SubscribedItems = Steam.GetSubscribedMods(); this.Padding = new Margin(4, 4, 4, 4); this.Font = "font10"; var top = AddChild(new Widget { Transparent = true, MinimumSize = new Point(0, 32), AutoLayout = AutoLayout.DockTop, Padding = new Margin(2, 2, 2, 2) }); var searchText = top.AddChild(new Gui.Widgets.EditableTextField { PromptText = "Enter text to search for", AutoLayout = AutoLayout.DockLeft, MinimumSize = new Point(256, 0), }) as Gui.Widgets.EditableTextField; var button = top.AddChild(new Gui.Widgets.Button { Text = "Search", Font = "font10", TextHorizontalAlign = HorizontalAlign.Center, TextVerticalAlign = VerticalAlign.Center, Border = "border-button", OnClick = (sender, args) => { if (!Steam.SteamAvailable) { List.ClearItems(); List.AddItem(new Widget() { Text = "Error: Can't connect to steam!", Background = new TileReference("basic", 0), TextColor = new Vector4(0, 0, 0, 1), }); return; } if (!Steam.HasTransactionOfType <UGCQuery>()) { Steam.AddTransaction(new UGCTransactionProcessor { Transaction = new UGCQuery { SearchString = searchText.Text }, StatusMessageDisplay = QueryStatusMessage, OnSuccess = (query) => RefreshList((query.Transaction as UGCQuery).Results) }); } }, AutoLayout = AutoLayout.DockRight }); searchText.OnEnter = (sender) => { button.OnClick.Invoke(button, null); }; QueryStatusMessage = top.AddChild(new Widget { AutoLayout = AutoLayout.DockFill }); List = AddChild(new WidgetListView { ItemHeight = 32, AutoLayout = AutoLayout.DockFill, Border = null, SelectedItemBackgroundColor = new Vector4(0.5f, 0.5f, 0.5f, 1.0f), Padding = new Margin(2, 2, 2, 2) }) as WidgetListView; }
private Gui.Widget BuildLineItemGUI(LineItem Mod, int idx) { var gui = Root.ConstructWidget(new Widget { MinimumSize = new Point(1, 32), Background = new TileReference("basic", 0), TextColor = new Vector4(0, 0, 0, 1), }); var statusMessage = Root.ConstructWidget(new Widget { MinimumSize = new Point(128, 0), AutoLayout = AutoLayout.DockRight }); if (Mod.MetaData.Source == ModSource.LocalDirectory) { gui.AddChild(new Button() { Text = Mod.MetaData.SteamID == 0 ? "Publish mod to Steam" : "Upload update to Steam", AutoLayout = AutoLayout.DockRight, TextColor = new Vector4(0, 0, 0, 1), OnClick = (sender, args) => { sender.OnClick = null; Steam.AddTransaction(new UGCTransactionProcessor { Transaction = new UGCUpload(Mod.MetaData), StatusMessageDisplay = statusMessage }); } }); } else { gui.AddChild(new Button() { Text = "Unsubscribe", AutoLayout = AutoLayout.DockRight, TextColor = new Vector4(0, 0, 0, 1), OnClick = (sender, args) => { sender.OnClick = null; Steam.AddTransaction(new UGCTransactionProcessor { Transaction = new UGCUnsubscribe((Steamworks.PublishedFileId_t)Mod.MetaData.SteamID), StatusMessageDisplay = statusMessage, OnSuccess = (trans) => { OwnerState.MadeSystemChanges(); } }); } }); } gui.AddChild(statusMessage); var toggle = gui.AddChild(new CheckBox { MinimumSize = new Point(128, 32), MaximumSize = new Point(128, 32), Text = Mod.MetaData.Name, Padding = new Margin(2, 2, 2, 2), InteriorMargin = new Margin(2, 2, 2, 2), ToggleOnTextClick = false, AutoLayout = AutoLayout.DockLeft, TextColor = new Vector4(0, 0, 0, 1), }) as CheckBox; gui.AddChild(new Widget { Font = "font8", Text = String.Format("{2} Source: {0}\nDirectory: {1}", Mod.MetaData.Source, Mod.MetaData.Directory, Mod.MetaData.IdentifierString), AutoLayout = AutoLayout.DockLeft, TextColor = new Vector4(0, 0, 0, 1) }); gui.AddChild(new Gui.Widgets.Button { Text = "Move Up", Font = "font10", TextHorizontalAlign = HorizontalAlign.Center, TextVerticalAlign = VerticalAlign.Center, TextColor = Color.Black.ToVector4(), Border = "border-thin", OnClick = (sender, args) => { var select = idx; if (select > 0) { var mod = ModList[select]; ModList.RemoveAt(select); ModList.Insert(select - 1, mod); SaveEnabledList(); OwnerState.MadeSystemChanges(); } }, AutoLayout = AutoLayout.DockRight }); gui.AddChild(new Gui.Widgets.Button { Text = "Move Down", Font = "font10", TextHorizontalAlign = HorizontalAlign.Center, TextVerticalAlign = VerticalAlign.Center, TextColor = Color.Black.ToVector4(), Border = "border-thin", OnClick = (sender, args) => { var select = idx; if (select < ModList.Count - 1) { var mod = ModList[idx]; ModList.RemoveAt(idx); ModList.Insert(idx + 1, mod); SaveEnabledList(); OwnerState.MadeSystemChanges(); } }, AutoLayout = AutoLayout.DockRight }); toggle.SilentSetCheckState(Mod.Enabled); toggle.Tag = Mod; toggle.OnCheckStateChange += (sender) => { (sender.Tag as LineItem).Enabled = (sender as CheckBox).CheckState; SaveEnabledList(); OwnerState.MadeSystemChanges(); }; return(gui); }
private void CreateLineItem(WidgetListView list, SteamUGCDetails_t mod) { var lineItem = Root.ConstructWidget(new Widget { MinimumSize = new Point(1, 32), Background = new TileReference("basic", 0), TextColor = new Vector4(0, 0, 0, 1), InteriorMargin = new Margin(5, 5, 10, 10) }); var statusMessage = Root.ConstructWidget(new Widget { MinimumSize = new Point(128, 0), AutoLayout = AutoLayout.DockRight, TextVerticalAlign = VerticalAlign.Center }); if (!SubscribedItems.Contains(mod.m_nPublishedFileId)) { lineItem.AddChild(new Button() { Font = "font10", Text = "Subscribe", AutoLayout = AutoLayout.DockRight, OnClick = (sender, args) => { if (!Steam.HasTransaction(t => { var subscribe = t as UGCSubscribe; return(subscribe != null && subscribe.FileID == mod.m_nPublishedFileId); })) { sender.Hidden = true; sender.Invalidate(); Steam.AddTransaction(new UGCTransactionProcessor { Transaction = new UGCSubscribe(mod.m_nPublishedFileId), StatusMessageDisplay = statusMessage, OnSuccess = (subscriber) => { SubscribedItems.Add(mod.m_nPublishedFileId); Owner.MadeSystemChanges(); } }); } } }); } else { lineItem.AddChild(new Widget { Font = "font10", Text = "Subscribed!", TextColor = Color.Black.ToVector4(), AutoLayout = AutoLayout.DockRight, TextVerticalAlign = VerticalAlign.Center }); } lineItem.AddChild(statusMessage); var modWidget = lineItem.AddChild(new Widget() { AutoLayout = AutoLayout.DockFill, TextColor = new Vector4(0, 0, 0, 1) }); modWidget.AddChild(new Widget() { Font = "font10", Text = String.Format("{0}", mod.m_rgchTitle), AutoLayout = AutoLayout.DockTop, TextColor = new Vector4(0, 0, 0, 1) }); modWidget.AddChild(new Widget() { Font = "font8", Text = String.Format("by {0}. {1}", SteamFriends.GetFriendPersonaName(new CSteamID(mod.m_ulSteamIDOwner)), mod.m_rgchDescription), AutoLayout = AutoLayout.DockTop, TextColor = new Vector4(0, 0, 0, 1) }); lineItem.Tag = mod; list.AddItem(lineItem); }