Example #1
0
        private void MainForm_Shown(object sender, EventArgs args)
        {
            if ((sender == null) || (args == null))
            {
                Logging.LogNullError(nameof(sender) + " || " + nameof(args));
                return;
            }

            Tutorial.OnAction(Tutorial.EPhase.Shown);
        }
Example #2
0
        private void MainForm_HelpButtonClicked(object sender, CancelEventArgs e)
        {
            if ((sender == null) || (e == null))
            {
                return;
            }

            e.Cancel = true;
            Tutorial.OnAction(Tutorial.EPhase.Help);
            Process.Start("https://github.com/JustArchi/ArchiSteamFarm/wiki/Configuration");
            Tutorial.OnAction(Tutorial.EPhase.HelpFinished);
        }
Example #3
0
        private void MainForm_HelpButtonClicked(object sender, CancelEventArgs args)
        {
            if ((sender == null) || (args == null))
            {
                Logging.LogNullError(nameof(sender) + " || " + nameof(args));
                return;
            }

            args.Cancel = true;
            Tutorial.OnAction(Tutorial.EPhase.Help);
            Process.Start("https://github.com/" + SharedInfo.GithubRepo + "/wiki/Configuration");
            Tutorial.OnAction(Tutorial.EPhase.HelpFinished);
        }
Example #4
0
        private void MainForm_Load(object sender, EventArgs args)
        {
            if ((sender == null) || (args == null))
            {
                Logging.LogNullError(nameof(sender) + " || " + nameof(args));
                return;
            }

            GlobalConfig globalConfig = GlobalConfig.Load(Path.Combine(SharedInfo.ConfigDirectory, SharedInfo.GlobalConfigFileName));

            if (!string.IsNullOrEmpty(globalConfig.CurrentCulture))
            {
                try {
                    // GetCultureInfo() would be better but we can't use it for specifying neutral cultures such as "en"
                    CultureInfo culture = CultureInfo.CreateSpecificCulture(globalConfig.CurrentCulture);
                    CultureInfo.DefaultThreadCurrentCulture = CultureInfo.DefaultThreadCurrentUICulture = culture;
                } catch (CultureNotFoundException) {
                    Logging.LogGenericErrorWithoutStacktrace(CGStrings.ErrorInvalidCurrentCulture);
                }
            }

            ASFTab = new ConfigPage(globalConfig);
            MainTab.TabPages.Add(ASFTab);

            foreach (string configFile in Directory.EnumerateFiles(SharedInfo.ConfigDirectory, "*.json"))
            {
                string botName = Path.GetFileNameWithoutExtension(configFile);
                switch (botName)
                {
                case SharedInfo.ASF:
                case "example":
                case "minimal":
                    continue;
                }

                MainTab.TabPages.Add(new ConfigPage(BotConfig.Load(configFile)));
                Tutorial.Enabled = false;
            }

            MainTab.TabPages.AddRange(new[] { RemoveTab, RenameTab, NewTab });
            Tutorial.OnAction(Tutorial.EPhase.Start);
        }
Example #5
0
        protected override void OnPropertyValueChanged(PropertyValueChangedEventArgs args)
        {
            if (args == null)
            {
                Logging.LogNullError(nameof(args));
                return;
            }

            base.OnPropertyValueChanged(args);
            ASFConfig.Save();

            BotConfig botConfig = ASFConfig as BotConfig;

            if (botConfig != null)
            {
                if (!botConfig.Enabled)
                {
                    return;
                }

                Tutorial.OnAction(Tutorial.EPhase.BotEnabled);
                if (!string.IsNullOrEmpty(botConfig.SteamLogin) && !string.IsNullOrEmpty(botConfig.SteamPassword))
                {
                    Tutorial.OnAction(Tutorial.EPhase.BotReady);
                }
                return;
            }

            GlobalConfig globalConfig = ASFConfig as GlobalConfig;

            if (globalConfig == null)
            {
                return;
            }

            if (globalConfig.SteamOwnerID != 0)
            {
                Tutorial.OnAction(Tutorial.EPhase.GlobalConfigReady);
            }
        }
Example #6
0
        private void MainTab_Selected(object sender, TabControlEventArgs args)
        {
            if ((sender == null) || (args == null))
            {
                Logging.LogNullError(nameof(sender) + " || " + nameof(args));
                return;
            }

            if (args.TabPage == RemoveTab)
            {
                ConfigPage configPage = OldTab as ConfigPage;
                if (configPage == null)
                {
                    MainTab.SelectedIndex = -1;
                    return;
                }

                if (configPage == ASFTab)
                {
                    MainTab.SelectedTab = ASFTab;
                    Logging.LogGenericErrorWithoutStacktrace(CGStrings.ErrorCantRemoveGlobalConfig);
                    return;
                }

                MainTab.SelectedTab = configPage;

                if (DialogBox.YesNoBox(CGStrings.Removal, CGStrings.ConfirmRemoval) != DialogResult.Yes)
                {
                    return;
                }

                MainTab.SelectedIndex = 0;
                configPage.ASFConfig.Remove();
                MainTab.TabPages.Remove(configPage);
            }
            else if (args.TabPage == RenameTab)
            {
                ConfigPage configPage = OldTab as ConfigPage;
                if (configPage == null)
                {
                    MainTab.SelectedIndex = -1;
                    return;
                }

                if (configPage == ASFTab)
                {
                    MainTab.SelectedTab = ASFTab;
                    Logging.LogGenericErrorWithoutStacktrace(CGStrings.ErrorCantRenameGlobalConfig);
                    return;
                }

                MainTab.SelectedTab = configPage;

                string input;
                if (DialogBox.InputBox(CGStrings.Rename, CGStrings.UserInputBotName, out input) != DialogResult.OK)
                {
                    return;
                }

                if (string.IsNullOrEmpty(input))
                {
                    Logging.LogGenericErrorWithoutStacktrace(CGStrings.ErrorBotNameEmpty);
                    return;
                }

                // Get rid of any potential whitespaces in bot name
                input = Regex.Replace(input, @"\s+", "");

                configPage.ASFConfig.Rename(input);
                configPage.RefreshText();
            }
            else if (args.TabPage == NewTab)
            {
                ConfigPage configPage = OldTab as ConfigPage;
                if (configPage == null)
                {
                    MainTab.SelectedIndex = -1;
                    return;
                }

                MainTab.SelectedTab = configPage;

                Tutorial.OnAction(Tutorial.EPhase.BotNickname);

                string input;
                if (DialogBox.InputBox(CGStrings.New, CGStrings.UserInputBotName, out input) != DialogResult.OK)
                {
                    return;
                }

                if (string.IsNullOrEmpty(input))
                {
                    Logging.LogGenericErrorWithoutStacktrace(CGStrings.ErrorBotNameEmpty);
                    return;
                }

                // Get rid of any potential whitespaces in bot name
                input = Regex.Replace(input, @"\s+", "");

                if (string.IsNullOrEmpty(input))
                {
                    Logging.LogGenericErrorWithoutStacktrace(CGStrings.ErrorBotNameEmpty);
                    return;
                }

                switch (input)
                {
                case SharedInfo.ASF:
                case "example":
                case "minimal":
                    Logging.LogGenericErrorWithoutStacktrace(CGStrings.ErrorNameReserved);
                    return;
                }

                if (ASFConfig.ASFConfigs.Select(config => Path.GetFileNameWithoutExtension(config.FilePath)).Any(fileNameWithoutExtension => (fileNameWithoutExtension == null) || fileNameWithoutExtension.Equals(input)))
                {
                    Logging.LogGenericErrorWithoutStacktrace(CGStrings.ErrorNameAlreadyUsed);
                    return;
                }

                input = Path.Combine(SharedInfo.ConfigDirectory, input + ".json");

                ConfigPage newConfigPage = new ConfigPage(BotConfig.Load(input));
                MainTab.TabPages.Insert(MainTab.TabPages.Count - ReservedTabs, newConfigPage);
                MainTab.SelectedTab = newConfigPage;
                Tutorial.OnAction(Tutorial.EPhase.BotNicknameFinished);
            }
        }
Example #7
0
        private void MainTab_Selected(object sender, TabControlEventArgs args)
        {
            if ((sender == null) || (args == null))
            {
                Logging.LogNullError(nameof(sender) + " || " + nameof(args));
                return;
            }

            if (args.TabPage == RemoveTab)
            {
                ConfigPage configPage = OldTab as ConfigPage;
                if (configPage == null)
                {
                    MainTab.SelectedIndex = -1;
                    return;
                }

                if (configPage == ASFTab)
                {
                    MainTab.SelectedTab = ASFTab;
                    Logging.LogGenericErrorWithoutStacktrace("You can't remove global config!");
                    return;
                }

                MainTab.SelectedTab = configPage;

                if (DialogBox.YesNoBox("Removal", "Do you really want to remove this config?") != DialogResult.Yes)
                {
                    return;
                }

                MainTab.SelectedIndex = 0;
                configPage.ASFConfig.Remove();
                MainTab.TabPages.Remove(configPage);
            }
            else if (args.TabPage == RenameTab)
            {
                ConfigPage configPage = OldTab as ConfigPage;
                if (configPage == null)
                {
                    MainTab.SelectedIndex = -1;
                    return;
                }

                if (configPage == ASFTab)
                {
                    MainTab.SelectedTab = ASFTab;
                    Logging.LogGenericErrorWithoutStacktrace("You can't rename global config!");
                    return;
                }

                MainTab.SelectedTab = configPage;

                string input;
                if (DialogBox.InputBox("Rename", "Your new bot name:", out input) != DialogResult.OK)
                {
                    return;
                }

                if (string.IsNullOrEmpty(input))
                {
                    Logging.LogGenericErrorWithoutStacktrace("Your bot name is empty!");
                    return;
                }

                // Get rid of any potential whitespaces in bot name
                input = Regex.Replace(input, @"\s+", "");

                configPage.ASFConfig.Rename(input);
                configPage.RefreshText();
            }
            else if (args.TabPage == NewTab)
            {
                ConfigPage configPage = OldTab as ConfigPage;
                if (configPage == null)
                {
                    MainTab.SelectedIndex = -1;
                    return;
                }

                MainTab.SelectedTab = configPage;

                Tutorial.OnAction(Tutorial.EPhase.BotNickname);

                string input;
                if (DialogBox.InputBox("New", "Your new bot name:", out input) != DialogResult.OK)
                {
                    return;
                }

                if (string.IsNullOrEmpty(input))
                {
                    Logging.LogGenericErrorWithoutStacktrace("Your bot name is empty!");
                    return;
                }

                // Get rid of any potential whitespaces in bot name
                input = Regex.Replace(input, @"\s+", "");

                if (string.IsNullOrEmpty(input))
                {
                    Logging.LogGenericErrorWithoutStacktrace("Your bot name is empty!");
                    return;
                }

                switch (input)
                {
                case SharedInfo.ASF:
                case "example":
                case "minimal":
                    Logging.LogGenericErrorWithoutStacktrace("This name is reserved!");
                    return;
                }

                if (ASFConfig.ASFConfigs.Select(config => Path.GetFileNameWithoutExtension(config.FilePath)).Any(fileNameWithoutExtension => (fileNameWithoutExtension == null) || fileNameWithoutExtension.Equals(input)))
                {
                    Logging.LogGenericErrorWithoutStacktrace("Bot with such name exists already!");
                    return;
                }

                input = Path.Combine(SharedInfo.ConfigDirectory, input + ".json");

                ConfigPage newConfigPage = new ConfigPage(BotConfig.Load(input));
                MainTab.TabPages.Insert(MainTab.TabPages.Count - ReservedTabs, newConfigPage);
                MainTab.SelectedTab = newConfigPage;
                Tutorial.OnAction(Tutorial.EPhase.BotNicknameFinished);
            }
            else if (args.TabPage == ASFTab)
            {
                Tutorial.OnAction(Tutorial.EPhase.GlobalConfigOpened);
            }
        }
Example #8
0
        private void MainTab_Selected(object sender, TabControlEventArgs e)
        {
            if (sender == null || e == null)
            {
                return;
            }

            if (e.TabPage == RemoveTab)
            {
                ConfigPage configPage = OldTab as ConfigPage;
                if (configPage == null)
                {
                    MainTab.SelectedIndex = -1;
                    return;
                }

                if (configPage == ASFTab)
                {
                    MainTab.SelectedTab = ASFTab;
                    Logging.LogGenericError("You can't remove global config!");
                    return;
                }

                MainTab.SelectedTab = configPage;

                if (DialogBox.YesNoBox("Removal", "Do you really want to remove this config?") != DialogResult.Yes)
                {
                    return;
                }

                MainTab.SelectedIndex = 0;
                configPage.ASFConfig.Remove();
                MainTab.TabPages.Remove(configPage);
            }
            else if (e.TabPage == RenameTab)
            {
                ConfigPage configPage = OldTab as ConfigPage;
                if (configPage == null)
                {
                    MainTab.SelectedIndex = -1;
                    return;
                }

                if (configPage == ASFTab)
                {
                    MainTab.SelectedTab = ASFTab;
                    Logging.LogGenericError("You can't rename global config!");
                    return;
                }

                MainTab.SelectedTab = configPage;

                string input;
                if (DialogBox.InputBox("Rename", "Your new bot name:", out input) != DialogResult.OK)
                {
                    return;
                }

                if (string.IsNullOrEmpty(input))
                {
                    Logging.LogGenericError("Your bot name is empty!");
                    return;
                }

                configPage.ASFConfig.Rename(input);
                configPage.RefreshText();
            }
            else if (e.TabPage == NewTab)
            {
                ConfigPage configPage = OldTab as ConfigPage;
                if (configPage == null)
                {
                    MainTab.SelectedIndex = -1;
                    return;
                }

                MainTab.SelectedTab = configPage;

                Tutorial.OnAction(Tutorial.EPhase.BotNickname);

                string input;
                if (DialogBox.InputBox("New", "Your new bot name:", out input) != DialogResult.OK)
                {
                    return;
                }

                if (string.IsNullOrEmpty(input))
                {
                    Logging.LogGenericError("Your bot name is empty!");
                    return;
                }

                foreach (ASFConfig config in ASFConfig.ASFConfigs)
                {
                    if (Path.GetFileNameWithoutExtension(config.FilePath).Equals(input))
                    {
                        Logging.LogGenericError("Bot with such name exists already!");
                        return;
                    }
                }

                input = Path.Combine(Program.ConfigDirectory, input + ".json");

                ConfigPage newConfigPage = new ConfigPage(BotConfig.Load(input));
                MainTab.TabPages.Insert(MainTab.TabPages.Count - ReservedTabs, newConfigPage);
                MainTab.SelectedTab = newConfigPage;
                Tutorial.OnAction(Tutorial.EPhase.BotNicknameFinished);
            }
            else if (e.TabPage == ASFTab)
            {
                Tutorial.OnAction(Tutorial.EPhase.GlobalConfigOpened);
            }
        }