Example #1
0
        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);
        }
Example #3
0
        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);
        }