diff --git a/TGCommandLine/ConfigCommands.cs b/TGCommandLine/ConfigCommands.cs index b9ac1cf6c6..e95c7d482a 100644 --- a/TGCommandLine/ConfigCommands.cs +++ b/TGCommandLine/ConfigCommands.cs @@ -47,7 +47,7 @@ namespace TGCommandLine protected override ExitCode Run(IList parameters) { - var bytes = Server.GetComponent().ReadRaw(parameters[0], parameters.Count > 2 && parameters[2].ToLower() == "--repo", out string error); + var bytes = Server.GetComponent().ReadText(parameters[0], parameters.Count > 2 && parameters[2].ToLower() == "--repo", out string error); if(bytes == null) { OutputProc("Error: " + error); @@ -67,11 +67,11 @@ namespace TGCommandLine } public override string GetArgumentString() { - return " [--repo]"; + return " [--repo]"; } public override string GetHelpText() { - return "Downloads the specified file from the config tree and writes it to out file. --repo will fetch it from the repository instead of the game config"; + return "Downloads the specified file from the static tree and writes it to out file. --repo will fetch it from the repository instead of the Static directory"; } } @@ -87,7 +87,7 @@ namespace TGCommandLine { try { - var res = Server.GetComponent().WriteRaw(parameters[0], File.ReadAllText(parameters[1])); + var res = Server.GetComponent().WriteText(parameters[0], File.ReadAllText(parameters[1])); if (res != null) { OutputProc("Error: " + res); @@ -103,12 +103,12 @@ namespace TGCommandLine public override string GetArgumentString() { - return " [--repo]"; + return " [--repo]"; } public override string GetHelpText() { - return "Uploads the specified file to the config tree from source file"; + return "Uploads the specified file to the static tree from source file"; } } } diff --git a/TGControlPanel/ConfigHelperControls.cs b/TGControlPanel/ConfigHelperControls.cs deleted file mode 100644 index 59f692fffd..0000000000 --- a/TGControlPanel/ConfigHelperControls.cs +++ /dev/null @@ -1,232 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Drawing; -using System.Windows.Forms; -using TGServiceInterface; - -namespace TGControlPanel -{ - class ConfigTextBox : TextBox - { - IList ChangeList; - ConfigSetting Setting; - public ConfigTextBox(ConfigSetting c, IList cl) - { - Setting = c; - ChangeList = cl; - Text = Setting.Value; - Multiline = true; - Width = 560; - Height *= 3; - ScrollBars = ScrollBars.Both; - TextChanged += ConfigTextbox_TextChanged; - } - - private void ConfigTextbox_TextChanged(object sender, EventArgs e) - { - Setting.Value = Text; - if (!ChangeList.Contains(Setting)) - ChangeList.Add(Setting); - } - } - class JobNumeric : NumericUpDown - { - IList ChangeList; - JobSetting Setting; - bool spawn; - public JobNumeric(JobSetting c, IList cl, bool s) - { - spawn = s; - Setting = c; - ChangeList = cl; - Minimum = -1; - Maximum = 10000; - Value = spawn ? c.SpawnPositions : c.TotalPositions; - ValueChanged += JobNumeric_ValueChanged; - } - - private void JobNumeric_ValueChanged(object sender, EventArgs e) - { - if (spawn) - Setting.SpawnPositions = (int)Value; - else - Setting.TotalPositions = (int)Value; - if (!ChangeList.Contains(Setting)) - ChangeList.Add(Setting); - } - } - enum MapNumType - { - MaxPlayers, - MinPlayers, - VoteWeight, - } - class MapNumeric : NumericUpDown - { - IList ChangeList; - MapSetting Setting; - MapNumType type; - public MapNumeric(MapSetting c, IList cl, MapNumType t) - { - type = t; - Setting = c; - ChangeList = cl; - Minimum = -1; - Maximum = 10000; - switch (type) - { - case MapNumType.MaxPlayers: - Value = Setting.MaxPlayers; - break; - case MapNumType.MinPlayers: - Value = Setting.MinPlayers; - break; - case MapNumType.VoteWeight: - DecimalPlaces = 5; - Value = Convert.ToDecimal(Setting.VoteWeight); - break; - } - ValueChanged += MapNumeric_ValueChanged; - } - - private void MapNumeric_ValueChanged(object sender, EventArgs e) - { - switch (type) - { - case MapNumType.MaxPlayers: - Setting.MaxPlayers = (int)Value; - break; - case MapNumType.MinPlayers: - Setting.MinPlayers = (int)Value; - break; - case MapNumType.VoteWeight: - Setting.VoteWeight = (float)Value; - break; - } - if (!ChangeList.Contains(Setting)) - ChangeList.Add(Setting); - } - } - - class ConfigCheckBox : CheckBox - { - IList ChangeList; - ConfigSetting Setting; - public ConfigCheckBox(ConfigSetting c, IList cl) - { - Setting = c; - ChangeList = cl; - Text = "Enabled"; - Font = new Font("Verdana", 8.0f); - ForeColor = Color.FromArgb(248, 248, 242); - Checked = Setting.Value != null; - CheckStateChanged += ConfigCheckBox_CheckStateChanged; - } - - private void ConfigCheckBox_CheckStateChanged(object sender, EventArgs e) - { - Setting.Value = Checked ? "" : null; - if (!ChangeList.Contains(Setting)) - ChangeList.Add(Setting); - } - } - - class MapRadioButton : RadioButton - { - IList ChangeList; - IList AllButtons; - MapSetting Setting; - public MapRadioButton(MapSetting c, IList cl, IList others) - { - ChangeList = cl; - Setting = c; - AllButtons = others; - Font = new Font("Verdana", 8.0f); - ForeColor = Color.FromArgb(248, 248, 242); - Text = "Default"; - AllButtons.Add(this); - if (Setting.Default) - Checked = true; - CheckedChanged += MapRadioButton_CheckedChanged; - } - - private void MapRadioButton_CheckedChanged(object sender, EventArgs e) - { - if (!Checked) - return; - foreach(var I in AllButtons) - if(I != this && I.Checked) - { - I.Checked = false; - I.Setting.Default = false; - if(!ChangeList.Contains(I.Setting)) - ChangeList.Add(I.Setting); - break; - } - Setting.Default = true; - if (!ChangeList.Contains(Setting)) - ChangeList.Add(Setting); - } - } - - class MapCheckBox : CheckBox - { - IList ChangeList; - MapSetting Setting; - public MapCheckBox(MapSetting c, IList cl) - { - Setting = c; - ChangeList = cl; - Text = "Enabled"; - Font = new Font("Verdana", 8.0f); - ForeColor = Color.FromArgb(248, 248, 242); - Checked = Setting.Enabled; - CheckStateChanged += ConfigCheckBox_CheckStateChanged; - } - - private void ConfigCheckBox_CheckStateChanged(object sender, EventArgs e) - { - Setting.Enabled = Checked; - if (!ChangeList.Contains(Setting)) - ChangeList.Add(Setting); - } - } - - class ConfigAddRemoveButton : Button - { - ConfigSetting Setting; - Main main; - TGConfigType type; - bool remove; - public ConfigAddRemoveButton(ConfigSetting c, Main m, TGConfigType t) - { - Setting = c; - main = m; - type = t; - UseVisualStyleBackColor = true; - remove = Setting.ExistsInStatic || !Setting.ExistsInRepo; - Text = remove ? "Remove" : "Add"; - Click += ConfigAddRemoveButton_Click; - } - - private void ConfigAddRemoveButton_Click(object sender, EventArgs e) - { - if (remove) - { - Setting.Values = Setting.DefaultValues; - Setting.Value = null; - } - else - { - Setting.Value = Setting.DefaultValue; - Setting.Values = Setting.DefaultValues; - } - - var Result = Server.GetComponent().SetItem(type, Setting); - if (Result != null) - MessageBox.Show("Error: " + Result); - - main.RefreshCurrentPage(); - } - } -} diff --git a/TGControlPanel/ConfigPage.cs b/TGControlPanel/ConfigPage.cs deleted file mode 100644 index f4e3168dbf..0000000000 --- a/TGControlPanel/ConfigPage.cs +++ /dev/null @@ -1,654 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Drawing; -using System.IO; -using System.Windows.Forms; -using TGServiceInterface; - -namespace TGControlPanel -{ - - partial class Main - { - enum ConfigIndex - { - Config = 0, - Database = 1, - Game = 2, - Jobs = 3, - Maps = 4, - Admins = 5, - } - - IList GeneralChangelist, DatabaseChangelist, GameChangelist; - IList JobsChangelist; - IList MapsChangelist; - - FlowLayoutPanel ConfigConfigFlow, DatabaseConfigFlow, GameConfigFlow, JobsConfigFlow, MapsConfigFlow; - - bool updatingAdminPerms = false; - - FlowLayoutPanel CreateFLP(Control parent) - { - var res = new FlowLayoutPanel() - { - AutoSize = true, - FlowDirection = FlowDirection.TopDown, - }; - AdjustFlow(res, parent); - parent.Controls.Add(res); - return res; - } - void AdjustFlow(FlowLayoutPanel flow, Control parent) - { - flow.MaximumSize = new Size(parent.Width - 90, 9999999); - } - void InitConfigPage() - { - ConfigPanels.SelectedIndex = Properties.Settings.Default.LastConfigPageIndex; - ConfigApply.Enabled = (ConfigIndex)ConfigPanels.SelectedIndex != ConfigIndex.Admins; - ConfigPanels.SelectedIndexChanged += ConfigPanels_SelectedIndexChanged; - - Resize += ReadjustFlow; - - ConfigConfigFlow = CreateFLP(ConfigConfigPanel); - GeneralChangelist = new List(); - - DatabaseConfigFlow = CreateFLP(DatabaseConfigPanel); - DatabaseChangelist = new List(); - - GameConfigFlow = CreateFLP(GameConfigPanel); - GameChangelist = new List(); - - JobsConfigFlow = CreateFLP(JobsConfigPanel); - JobsChangelist = new List(); - - MapsConfigFlow = CreateFLP(MapsConfigPanel); - MapsChangelist = new List(); - - AdminRanksListBox.SelectedIndexChanged += AdminRanksListBox_SelectedIndexChanged; - PermissionsListBox.ItemCheck += AdjustCurrentRankPermissions; - NegativePermissions.ItemCheck += AdjustCurrentRankPermissions; - - LoadConfig(); - } - void LoadConfig() - { - var RepoReady = Server.GetComponent().Exists(); - ConfigPanels.Visible = RepoReady; - ConfigApply.Visible = RepoReady; - ConfigDownload.Visible = RepoReady; - ConfigDownloadRepo.Visible = RepoReady; - ConfigUpload.Visible = RepoReady; - if (!RepoReady) - return; - LoadGenericConfig(TGConfigType.General); - LoadGenericConfig(TGConfigType.Database); - LoadGenericConfig(TGConfigType.Game); - LoadJobsConfig(); - LoadMapsConfig(); - LoadAdminsConfig(); - } - - private void RemoveRankButton_Click(object sender, EventArgs e) - { - var rank = (string)AdminRanksListBox.SelectedItem; - var result = Server.GetComponent().RemoveAdminRank(rank); - if (result != null) - MessageBox.Show("Error: " + result); - LoadRanksList(); - } - - private void AddRankButton_Click(object sender, EventArgs e) - { - var result = Server.GetComponent().SetAdminRank(AddRankTextBox.Text, new Dictionary()); - if (result != null) - MessageBox.Show("Error: " + result); - else - AddRankTextBox.Text = ""; - LoadRanksList(); - } - - private void ApplyAdminRankButton_Click(object sender, EventArgs e) - { - var rank = (string)AdminRanksListBox.SelectedItem; - var admin = (string)AdminsListBox.SelectedItem; - if(rank == null || admin == null) - { - MessageBox.Show("Please select a rank and admin!"); - return; - } - admin = admin.Split(' ')[0]; - var result = Server.GetComponent().Addmin(admin, rank); - if (result != null) - MessageBox.Show("Error: " + result); - LoadAdminsList(); - } - - private void DeadminButton_Click(object sender, EventArgs e) - { - var selectedAdmin = (string)AdminsListBox.SelectedItem; - if(selectedAdmin == null) - { - MessageBox.Show("You must select an admin first!"); - return; - } - var result = Server.GetComponent().Deadmin(selectedAdmin.Split('(')[0].Trim()); - if (result != null) - MessageBox.Show("Error: " + result); - LoadAdminsList(); - } - - private void AddminButton_Click(object sender, EventArgs e) - { - var rank = (string)AdminRanksListBox.SelectedItem; - if(rank == null) - { - MessageBox.Show("You must select a rank first!"); - return; - } - var result = Server.GetComponent().Addmin(AddminTextBox.Text, rank); - if (result != null) - MessageBox.Show("Error: " + result); - else - AddminTextBox.Text = ""; - LoadAdminsList(); - } - private void AdjustCurrentRankPermissions(object sender, ItemCheckEventArgs e) - { - if (updatingAdminPerms) - return; - if (AdminRanksListBox.SelectedIndex == -1) - { - MessageBox.Show("No admin rank selected!"); - return; - } - var perms = new Dictionary(); - for (var I = 0; I < PermissionsListBox.Items.Count; ++I) - { - var negChecked = NegativePermissions.GetItemChecked(I) || (sender == NegativePermissions && e.Index == I && e.NewValue == CheckState.Checked); - var posChecked = PermissionsListBox.GetItemChecked(I) || (sender == PermissionsListBox && e.Index == I && e.NewValue == CheckState.Checked); - var perm = ((string)PermissionsListBox.Items[I]).Split(' ')[0]; - if (posChecked ^ negChecked) - perms.Add(perm, posChecked); - } - - var result = Server.GetComponent().SetAdminRank((string)AdminRanksListBox.SelectedItem, perms); - if (result != null) - MessageBox.Show("Error: " + result); - UpdatePermissionsDisplay(); - } - - private void AdminRanksListBox_SelectedIndexChanged(object sender, EventArgs e) - { - UpdatePermissionsDisplay(); - } - void UpdatePermissionsDisplay() { - var rank = (string)AdminRanksListBox.SelectedItem; - var ranks = Server.GetComponent().AdminRanks(out string error); - if (ranks != null && !ranks.ContainsKey(rank)) - error = "Could not find rank: " + rank + "!"; - if (error != null) - { - MessageBox.Show("Error: " + error); - return; - } - var ourRank = ranks[rank]; - updatingAdminPerms = true; - for (var I = 0; I < PermissionsListBox.Items.Count; ++I) - { - PermissionsListBox.SetItemChecked(I, false); - NegativePermissions.SetItemChecked(I, false); - } - foreach (var I in ourRank) - if (I.Value) - { - for (var J = 0; J < PermissionsListBox.Items.Count; ++J) - if (((string)PermissionsListBox.Items[J]).Split(' ')[0] == I.Key) - PermissionsListBox.SetItemChecked(J, true); - } - else - for (var J = 0; J < PermissionsListBox.Items.Count; ++J) - if (((string)NegativePermissions.Items[J]).Split(' ')[0] == I.Key) - NegativePermissions.SetItemChecked(J, false); - updatingAdminPerms = false; - } - - private void ConfigPanels_SelectedIndexChanged(object sender, EventArgs e) - { - ConfigApply.Enabled = (ConfigIndex)ConfigPanels.SelectedIndex != ConfigIndex.Admins; - Properties.Settings.Default.LastConfigPageIndex = ConfigPanels.SelectedIndex; - } - - void ReadjustFlow(object sender, EventArgs e) - { - AdjustFlow(ConfigConfigFlow, ConfigConfigPanel); - AdjustFlow(GameConfigFlow, GameConfigPanel); - AdjustFlow(DatabaseConfigFlow, DatabaseConfigPanel); - AdjustFlow(JobsConfigFlow, JobsConfigPanel); - AdjustFlow(MapsConfigFlow, MapsConfigPanel); - } - - void LoadGenericConfig(TGConfigType type) - { - FlowLayoutPanel flow; - IList changeList; - switch (type) - { - case TGConfigType.Database: - flow = DatabaseConfigFlow; - changeList = DatabaseChangelist; - break; - case TGConfigType.Game: - flow = GameConfigFlow; - changeList = GameChangelist; - break; - case TGConfigType.General: - flow = ConfigConfigFlow; - changeList = GeneralChangelist; - break; - default: - throw new Exception(String.Format("Invalid TGConfigType {0}", type)); - } - changeList.Clear(); - flow.Controls.Clear(); - flow.SuspendLayout(); - - var Entries = Server.GetComponent().Retrieve(type, out string error); - if (Entries != null) - foreach (var I in Entries) - HandleConfigEntry(I, flow, changeList, type); - else - flow.Controls.Add(new Label() { Text = "Unable to load related config!" }); - - flow.ResumeLayout(); - } - - void ConfigRefresh_Click(object sender, System.EventArgs e) - { - RefreshCurrentPage(); - } - - public void RefreshCurrentPage() - { - if (!ConfigPanels.Visible) - { - LoadConfig(); - return; - } - - switch ((ConfigIndex)ConfigPanels.SelectedIndex) - { - case ConfigIndex.Config: - LoadGenericConfig(TGConfigType.General); - break; - case ConfigIndex.Database: - LoadGenericConfig(TGConfigType.Database); - break; - case ConfigIndex.Game: - LoadGenericConfig(TGConfigType.Game); - break; - case ConfigIndex.Jobs: - LoadJobsConfig(); - break; - case ConfigIndex.Maps: - LoadMapsConfig(); - break; - case ConfigIndex.Admins: - LoadAdminsConfig(); - break; - } - } - - void LoadRanksList() - { - var ranks = Server.GetComponent().AdminRanks(out string error); - AdminRanksListBox.Items.Clear(); - if (ranks == null) - MessageBox.Show("Error: " + error); - else - foreach (var I in ranks) - AdminRanksListBox.Items.Add(I.Key); - if (AdminRanksListBox.Items.Count > 0 && AdminRanksListBox.SelectedIndex == -1) - { - AdminRanksListBox.SelectedIndex = 0; - RemoveRankButton.Enabled = true; - } - else - RemoveRankButton.Enabled = false; - } - - void LoadAdminsList() - { - var admins = Server.GetComponent().Admins(out string error); - AdminsListBox.Items.Clear(); - if (admins == null) - MessageBox.Show("Error: " + error); - else - foreach (var I in admins) - AdminsListBox.Items.Add(String.Format("{0} ({1})", I.Key, I.Value)); - if(AdminsListBox.Items.Count > 0 && AdminsListBox.SelectedIndex == -1) { - AdminsListBox.SelectedIndex = 0; - DeadminButton.Enabled = true; - } - else - DeadminButton.Enabled = false; - } - - void LoadAdminsConfig() - { - var perms = Server.GetComponent().ListPermissions(out string error); - PermissionsListBox.Items.Clear(); - if (perms == null) - MessageBox.Show("Error: " + error); - else - foreach (var I in perms) - { - var formattedDisplay = String.Format("{0} ({1})", I.Key, I.Value); - PermissionsListBox.Items.Add(formattedDisplay); - NegativePermissions.Items.Add(formattedDisplay); - } - LoadRanksList(); - LoadAdminsList(); - } - - void ApplyGenericConfig(IList changelist, TGConfigType type) - { - var Config = Server.GetComponent(); - foreach (var I in changelist) - { - var error = Config.SetItem(type, I); - if (error != null) - { - MessageBox.Show("An error occurred: {1}" + error); - break; - } - } - } - - void ConfigApply_Click(object sender, EventArgs e) - { - switch ((ConfigIndex)ConfigPanels.SelectedIndex) - { - case ConfigIndex.Config: - ApplyGenericConfig(GeneralChangelist, TGConfigType.General); - break; - case ConfigIndex.Database: - ApplyGenericConfig(DatabaseChangelist, TGConfigType.Database); - break; - case ConfigIndex.Game: - ApplyGenericConfig(GameChangelist, TGConfigType.Game); - break; - case ConfigIndex.Jobs: - var Config = Server.GetComponent(); - foreach (var I in JobsChangelist) - Config.SetJob(I); - break; - case ConfigIndex.Maps: - Config = Server.GetComponent(); - foreach (var I in MapsChangelist) - Config.SetMapSettings(I); - break; - case ConfigIndex.Admins: - MessageBox.Show("How were you able to click that???"); - break; - } - RefreshCurrentPage(); - } - - void LoadMapsConfig() - { - MapsConfigFlow.Controls.Clear(); - var Maps = Server.GetComponent().MapSettings(out string error); - if (Maps == null) - { - MapsConfigFlow.Controls.Add(new Label() - { - Text = "Error: " + error, - AutoSize = true, - Font = new Font("Verdana", 10.0f), - ForeColor = Color.FromArgb(248, 248, 242) - }); - return; - } - - MapsConfigFlow.SuspendLayout(); - MapsConfigFlow.Controls.Add(new Label() - { - Text = "Set a player limit to 0 for it to be ignored", - AutoSize = true, - Font = new Font("Verdana", 10.0f), - ForeColor = Color.FromArgb(248, 248, 242) - }); - MapsConfigFlow.Controls.Add(new Label()); - var mapRadios = new List(); - foreach(var M in Maps) - { - var p = new FlowLayoutPanel() { FlowDirection = FlowDirection.LeftToRight, AutoSize = true }; - p.Controls.Add(new Label() - { - Text = M.Name + ":", - AutoSize = true, - Font = new Font("Verdana", 10.0f), - ForeColor = Color.FromArgb(248, 248, 242) - }); - p.Controls.Add(new MapCheckBox(M, MapsChangelist)); - p.Controls.Add(new MapRadioButton(M, MapsChangelist, mapRadios)); - MapsConfigFlow.Controls.Add(p); - p = new FlowLayoutPanel() { FlowDirection = FlowDirection.LeftToRight, AutoSize = true }; - p.Controls.Add(new Label() - { - Text = "Min Players:", - AutoSize = true, - Font = new Font("Verdana", 10.0f), - ForeColor = Color.FromArgb(248, 248, 242) - }); - p.Controls.Add(new MapNumeric(M, MapsChangelist, MapNumType.MinPlayers)); - p.Controls.Add(new Label() - { - Text = "Max Players:", - AutoSize = true, - Font = new Font("Verdana", 10.0f), - ForeColor = Color.FromArgb(248, 248, 242) - }); - p.Controls.Add(new MapNumeric(M, MapsChangelist, MapNumType.MaxPlayers)); - p.Controls.Add(new Label() - { - Text = "Vote Weight:", - AutoSize = true, - Font = new Font("Verdana", 10.0f), - ForeColor = Color.FromArgb(248, 248, 242) - }); - p.Controls.Add(new MapNumeric(M, MapsChangelist, MapNumType.VoteWeight)); - MapsConfigFlow.Controls.Add(p); - MapsConfigFlow.Controls.Add(new Label()); //line break - } - MapsConfigFlow.ResumeLayout(); - } - - void LoadJobsConfig() - { - JobsConfigFlow.Controls.Clear(); - var Jobs = Server.GetComponent().Jobs(out string error); - - if(Jobs == null) - { - JobsConfigFlow.Controls.Add(new Label() - { - Text = "Error: " + error, - AutoSize = true, - Font = new Font("Verdana", 10.0f), - ForeColor = Color.FromArgb(248, 248, 242) - }); - return; - } - JobsConfigFlow.SuspendLayout(); - JobsConfigFlow.Controls.Add(new Label() - { - Text = "Set a value to -1 for infinite positions", - AutoSize = true, - Font = new Font("Verdana", 10.0f), - ForeColor = Color.FromArgb(248, 248, 242) - }); - JobsConfigFlow.Controls.Add(new Label()); - foreach (var J in Jobs) - { - JobsConfigFlow.Controls.Add(new Label() - { - Text = J.Name + ":", - AutoSize = true, - Font = new Font("Verdana", 10.0f), - ForeColor = Color.FromArgb(248, 248, 242) - }); - var p = new FlowLayoutPanel() { FlowDirection = FlowDirection.LeftToRight, AutoSize = true }; - p.Controls.Add(new Label() - { - Text = "Total Positions:", - AutoSize = true, - Font = new Font("Verdana", 10.0f), - ForeColor = Color.FromArgb(248, 248, 242) - }); - p.Controls.Add(new JobNumeric(J, JobsChangelist, false)); - p.Controls.Add(new Label() - { - Text = "Spawn Positions:", - AutoSize = true, - Font = new Font("Verdana", 10.0f), - ForeColor = Color.FromArgb(248, 248, 242) - }); - p.Controls.Add(new JobNumeric(J, JobsChangelist, true)); - JobsConfigFlow.Controls.Add(p); - JobsConfigFlow.Controls.Add(new Label()); //line break - } - JobsConfigFlow.ResumeLayout(); - } - - void ConfigUpload_Click(object sender, EventArgs eva) - { - var ofd = new OpenFileDialog() - { - CheckFileExists = true, - CheckPathExists = true, - DefaultExt = ".txt", - Multiselect = false, - Title = "Config Upload", - ValidateNames = true, - Filter = "Text files (*.txt)|*.txt|PNG files (*.png)|*.png|All files (*.*)|*.*", - AddExtension = false, - SupportMultiDottedExtensions = true, - }; - if (ofd.ShowDialog() != DialogResult.OK) - return; - - var fileToUpload = ofd.FileName; - - var originalFileName = Program.TextPrompt("Config Upload", "Enter the path of the destination file in the config folder:"); - if (originalFileName == null) - return; - - string fileContents = null; - string error = null; - try - { - fileContents = File.ReadAllText(fileToUpload); - } catch (Exception e) - { - error = e.ToString(); - } - if (error == null) - error = Server.GetComponent().WriteRaw(originalFileName, fileContents); - if (error != null) - MessageBox.Show("An error occurred: " + error); - } - - void DownloadConfig(string remotePath, bool repo) - { - if (remotePath == null) - return; - var text = Server.GetComponent().ReadRaw(remotePath, repo, out string error); - if (text != null) - { - - var ofd = new SaveFileDialog() - { - CheckFileExists = false, - CheckPathExists = true, - DefaultExt = ".txt", - Title = "Config Download", - ValidateNames = true, - Filter = "Text files (*.txt)|*.txt|PNG files (*.png)|*.png|All files (*.*)|*.*", - AddExtension = false, - CreatePrompt = false, - OverwritePrompt = true, - SupportMultiDottedExtensions = true, - }; - if (ofd.ShowDialog() != DialogResult.OK) - return; - - try - { - File.WriteAllText(ofd.FileName, text); - return; - } - catch (Exception e) - { - error = e.ToString(); - } - } - MessageBox.Show("An error occurred: " + error); - } - - void ConfigDownload_Click(object sender, EventArgs eva) - { - DownloadConfig(Program.TextPrompt("Config Download", "Enter the path of the source file in the config folder:"), false); - } - - void ConfigDownloadRepo_Click(object sender, EventArgs e) - { - DownloadConfig(Program.TextPrompt("Repo Config Download", "Enter the path of the source file in the repository's config folder:"), true); - } - - void HandleConfigEntry(ConfigSetting setting, FlowLayoutPanel flow, IList changelist, TGConfigType type) - { - flow.Controls.Add(new Label() - { - Text = setting.Name + (setting.ExistsInRepo ? "" : " (Does not exist in repository!)"), - AutoSize = true, - Font = new Font("Verdana", 10.0f), - ForeColor = Color.FromArgb(248, 248, 242) - }); - - if (setting.ExistsInRepo) - flow.Controls.Add(new Label() - { - AutoSize = true, - Font = new Font("Verdana", 8.0f), - ForeColor = Color.FromArgb(248, 248, 242), - Text = setting.Comment - }); - - if (setting.IsMultiKey) - { - flow.Controls.Add(new Label() - { - Text = "MANUAL EDIT REQUIRED!", - AutoSize = true, - Font = new Font("Verdana", 10.0f), - ForeColor = Color.FromArgb(248, 248, 242) - }); - } - else - { - - var IsSwitch = setting.DefaultValue == "" || setting.DefaultValue == null; - - if (!IsSwitch || !setting.ExistsInRepo) - flow.Controls.Add(new ConfigAddRemoveButton(setting, this, type)); - - if (IsSwitch || setting.ExistsInStatic) - flow.Controls.Add(IsSwitch ? (Control)new ConfigCheckBox(setting, changelist) : new ConfigTextBox(setting, changelist)); - } - flow.Controls.Add(new Label()); //line break - } - } -} diff --git a/TGControlPanel/Main.Designer.cs b/TGControlPanel/Main.Designer.cs index df1d9339f7..2020a8b21d 100644 --- a/TGControlPanel/Main.Designer.cs +++ b/TGControlPanel/Main.Designer.cs @@ -28,2046 +28,1649 @@ /// private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Main)); - this.Panels = new System.Windows.Forms.TabControl(); - this.RepoPanel = new System.Windows.Forms.TabPage(); - this.RepoRefreshButton = new System.Windows.Forms.Button(); - this.BackupTagsList = new System.Windows.Forms.ListBox(); - this.ResetRemote = new System.Windows.Forms.Button(); - this.RecloneButton = new System.Windows.Forms.Button(); - this.PythonPathText = new System.Windows.Forms.TextBox(); - this.PythonPathLabel = new System.Windows.Forms.Label(); - this.RepoGenChangelogButton = new System.Windows.Forms.Button(); - this.TestmergeSelector = new System.Windows.Forms.NumericUpDown(); - this.TestMergeListLabel = new System.Windows.Forms.ListBox(); - this.CurrentRevisionLabel = new System.Windows.Forms.Label(); - this.RepoApplyButton = new System.Windows.Forms.Button(); - this.RepoBranchTextBox = new System.Windows.Forms.TextBox(); - this.RepoRemoteTextBox = new System.Windows.Forms.TextBox(); - this.HardReset = new System.Windows.Forms.Button(); - this.UpdateRepoButton = new System.Windows.Forms.Button(); - this.MergePRButton = new System.Windows.Forms.Button(); - this.IdentityLabel = new System.Windows.Forms.Label(); - this.TestMergeListTitle = new System.Windows.Forms.Label(); - this.RemoteNameTitle = new System.Windows.Forms.Label(); - this.BranchNameTitle = new System.Windows.Forms.Label(); - this.CurrentRevisionTitle = new System.Windows.Forms.Label(); - this.CloneRepositoryButton = new System.Windows.Forms.Button(); - this.RepoProgressBarLabel = new System.Windows.Forms.Label(); - this.RepoProgressBar = new System.Windows.Forms.ProgressBar(); - this.BYONDPanel = new System.Windows.Forms.TabPage(); - this.LatestVersionLabel = new System.Windows.Forms.Label(); - this.LatestVersionTitle = new System.Windows.Forms.Label(); - this.StagedVersionLabel = new System.Windows.Forms.Label(); - this.StagedVersionTitle = new System.Windows.Forms.Label(); - this.StatusLabel = new System.Windows.Forms.Label(); - this.VersionLabel = new System.Windows.Forms.Label(); - this.VersionTitle = new System.Windows.Forms.Label(); - this.MinorVersionLabel = new System.Windows.Forms.Label(); - this.MajorVersionLabel = new System.Windows.Forms.Label(); - this.UpdateButton = new System.Windows.Forms.Button(); - this.MinorVersionNumeric = new System.Windows.Forms.NumericUpDown(); - this.MajorVersionNumeric = new System.Windows.Forms.NumericUpDown(); - this.UpdateProgressBar = new System.Windows.Forms.ProgressBar(); - this.ServerPanel = new System.Windows.Forms.TabPage(); - this.AutostartCheckbox = new System.Windows.Forms.CheckBox(); - this.WebclientCheckBox = new System.Windows.Forms.CheckBox(); - this.WorldAnnounceButton = new System.Windows.Forms.Button(); - this.WorldAnnounceField = new System.Windows.Forms.TextBox(); - this.VisibilityTitle = new System.Windows.Forms.Label(); - this.SecuritySelector = new System.Windows.Forms.ComboBox(); - this.SecurityTitle = new System.Windows.Forms.Label(); - this.ResetTestmerge = new System.Windows.Forms.Button(); - this.ServerPathLabel = new System.Windows.Forms.Label(); - this.ServerPathTextbox = new System.Windows.Forms.TextBox(); - this.CompileCancelButton = new System.Windows.Forms.Button(); - this.ProjectPathLabel = new System.Windows.Forms.Label(); - this.projectNameText = new System.Windows.Forms.TextBox(); - this.PortLabel = new System.Windows.Forms.Label(); - this.PortSelector = new System.Windows.Forms.NumericUpDown(); - this.ServerPRLabel = new System.Windows.Forms.Label(); - this.ServerTestmergeInput = new System.Windows.Forms.NumericUpDown(); - this.TestmergeButton = new System.Windows.Forms.Button(); - this.UpdateTestmergeButton = new System.Windows.Forms.Button(); - this.UpdateMergeButton = new System.Windows.Forms.Button(); - this.UpdateHardButton = new System.Windows.Forms.Button(); - this.ServerGRestartButton = new System.Windows.Forms.Button(); - this.ServerGStopButton = new System.Windows.Forms.CheckBox(); - this.ServerRestartButton = new System.Windows.Forms.Button(); - this.ServerStopButton = new System.Windows.Forms.Button(); - this.ServerStartButton = new System.Windows.Forms.Button(); - this.CompilerStatusLabel = new System.Windows.Forms.Label(); - this.CompilerLabel = new System.Windows.Forms.Label(); - this.compileButton = new System.Windows.Forms.Button(); - this.initializeButton = new System.Windows.Forms.Button(); - this.compilerProgressBar = new System.Windows.Forms.ProgressBar(); - this.ServerStatusLabel = new System.Windows.Forms.Label(); - this.ServerStatusTitle = new System.Windows.Forms.Label(); - this.ChatPanel = new System.Windows.Forms.TabPage(); - this.label5 = new System.Windows.Forms.Label(); - this.label4 = new System.Windows.Forms.Label(); - this.label3 = new System.Windows.Forms.Label(); - this.label2 = new System.Windows.Forms.Label(); - this.IRCModesComboBox = new System.Windows.Forms.ComboBox(); - this.label1 = new System.Windows.Forms.Label(); - this.AdminChannelsTextbox = new System.Windows.Forms.TextBox(); - this.WDChannelsTextbox = new System.Windows.Forms.TextBox(); - this.GameChannelsTextbox = new System.Windows.Forms.TextBox(); - this.DevChannelsTextbox = new System.Windows.Forms.TextBox(); - this.ChatRefreshButton = new System.Windows.Forms.Button(); - this.ChatNicknameText = new System.Windows.Forms.TextBox(); - this.ChatNicknameTitle = new System.Windows.Forms.Label(); - this.ChatPortSelector = new System.Windows.Forms.NumericUpDown(); - this.ChatPortTitle = new System.Windows.Forms.Label(); - this.ChatServerText = new System.Windows.Forms.TextBox(); - this.ChatServerTitle = new System.Windows.Forms.Label(); - this.ChatApplyButton = new System.Windows.Forms.Button(); - this.AuthField2Title = new System.Windows.Forms.Label(); - this.AuthField1Title = new System.Windows.Forms.Label(); - this.AuthField2 = new System.Windows.Forms.TextBox(); - this.AuthField1 = new System.Windows.Forms.TextBox(); - this.ChatReconnectButton = new System.Windows.Forms.Button(); - this.ChatStatusLabel = new System.Windows.Forms.Label(); - this.ChatStatusTitle = new System.Windows.Forms.Label(); - this.ChatEnabledCheckbox = new System.Windows.Forms.CheckBox(); - this.ChatProviderSelectorPanel = new System.Windows.Forms.Panel(); - this.DiscordProviderSwitch = new System.Windows.Forms.RadioButton(); - this.IRCProviderSwitch = new System.Windows.Forms.RadioButton(); - this.ChatProviderTitle = new System.Windows.Forms.Label(); - this.ChannelsTitle = new System.Windows.Forms.Label(); - this.ChatAdminsTextBox = new System.Windows.Forms.TextBox(); - this.ChatAdminsTitle = new System.Windows.Forms.Label(); - this.panel1 = new System.Windows.Forms.Panel(); - this.AdminModeSpecial = new System.Windows.Forms.RadioButton(); - this.AdminModeNormal = new System.Windows.Forms.RadioButton(); - this.ConfigPanel = new System.Windows.Forms.TabPage(); - this.ConfigApply = new System.Windows.Forms.Button(); - this.ConfigDownloadRepo = new System.Windows.Forms.Button(); - this.ConfigUpload = new System.Windows.Forms.Button(); - this.ConfigDownload = new System.Windows.Forms.Button(); - this.ConfigRefresh = new System.Windows.Forms.Button(); - this.ConfigPanels = new System.Windows.Forms.TabControl(); - this.ConfigConfigPanel = new System.Windows.Forms.TabPage(); - this.DatabaseConfigPanel = new System.Windows.Forms.TabPage(); - this.GameConfigPanel = new System.Windows.Forms.TabPage(); - this.JobsConfigPanel = new System.Windows.Forms.TabPage(); - this.MapsConfigPanel = new System.Windows.Forms.TabPage(); - this.AdminsPanel = new System.Windows.Forms.TabPage(); - this.NegativePermissionsTitle = new System.Windows.Forms.Label(); - this.NegativePermissions = new System.Windows.Forms.CheckedListBox(); - this.ApplyAdminRankButton = new System.Windows.Forms.Button(); - this.PermissionsListBox = new System.Windows.Forms.CheckedListBox(); - this.PermissionsTItle = new System.Windows.Forms.Label(); - this.RemoveRankButton = new System.Windows.Forms.Button(); - this.AddRankTextBox = new System.Windows.Forms.TextBox(); - this.AddRankButton = new System.Windows.Forms.Button(); - this.AdminRanksListBox = new System.Windows.Forms.ListBox(); - this.RanksTitle = new System.Windows.Forms.Label(); - this.DeadminButton = new System.Windows.Forms.Button(); - this.AddminTextBox = new System.Windows.Forms.TextBox(); - this.AddminButton = new System.Windows.Forms.Button(); - this.AdminsListBox = new System.Windows.Forms.ListBox(); - this.AdminsTitle = new System.Windows.Forms.Label(); - this.ConfigDisabledLabel = new System.Windows.Forms.Label(); - this.RepoBGW = new System.ComponentModel.BackgroundWorker(); - this.BYONDTimer = new System.Windows.Forms.Timer(this.components); - this.ServerTimer = new System.Windows.Forms.Timer(this.components); - this.WorldStatusChecker = new System.ComponentModel.BackgroundWorker(); - this.WorldStatusTimer = new System.Windows.Forms.Timer(this.components); - this.FullUpdateWorker = new System.ComponentModel.BackgroundWorker(); - this.ServerStartBGW = new System.ComponentModel.BackgroundWorker(); - this.Panels.SuspendLayout(); - this.RepoPanel.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.TestmergeSelector)).BeginInit(); - this.BYONDPanel.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.MinorVersionNumeric)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.MajorVersionNumeric)).BeginInit(); - this.ServerPanel.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.PortSelector)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.ServerTestmergeInput)).BeginInit(); - this.ChatPanel.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.ChatPortSelector)).BeginInit(); - this.ChatProviderSelectorPanel.SuspendLayout(); - this.panel1.SuspendLayout(); - this.ConfigPanel.SuspendLayout(); - this.ConfigPanels.SuspendLayout(); - this.AdminsPanel.SuspendLayout(); - this.SuspendLayout(); - // - // Panels - // - this.Panels.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.Panels.Controls.Add(this.RepoPanel); - this.Panels.Controls.Add(this.BYONDPanel); - this.Panels.Controls.Add(this.ServerPanel); - this.Panels.Controls.Add(this.ChatPanel); - this.Panels.Controls.Add(this.ConfigPanel); - this.Panels.Location = new System.Drawing.Point(12, 12); - this.Panels.Name = "Panels"; - this.Panels.SelectedIndex = 0; - this.Panels.Size = new System.Drawing.Size(876, 392); - this.Panels.TabIndex = 3; - // - // RepoPanel - // - this.RepoPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(39)))), ((int)(((byte)(40)))), ((int)(((byte)(34))))); - this.RepoPanel.Controls.Add(this.RepoRefreshButton); - this.RepoPanel.Controls.Add(this.BackupTagsList); - this.RepoPanel.Controls.Add(this.ResetRemote); - this.RepoPanel.Controls.Add(this.RecloneButton); - this.RepoPanel.Controls.Add(this.PythonPathText); - this.RepoPanel.Controls.Add(this.PythonPathLabel); - this.RepoPanel.Controls.Add(this.RepoGenChangelogButton); - this.RepoPanel.Controls.Add(this.TestmergeSelector); - this.RepoPanel.Controls.Add(this.TestMergeListLabel); - this.RepoPanel.Controls.Add(this.CurrentRevisionLabel); - this.RepoPanel.Controls.Add(this.RepoApplyButton); - this.RepoPanel.Controls.Add(this.RepoBranchTextBox); - this.RepoPanel.Controls.Add(this.RepoRemoteTextBox); - this.RepoPanel.Controls.Add(this.HardReset); - this.RepoPanel.Controls.Add(this.UpdateRepoButton); - this.RepoPanel.Controls.Add(this.MergePRButton); - this.RepoPanel.Controls.Add(this.IdentityLabel); - this.RepoPanel.Controls.Add(this.TestMergeListTitle); - this.RepoPanel.Controls.Add(this.RemoteNameTitle); - this.RepoPanel.Controls.Add(this.BranchNameTitle); - this.RepoPanel.Controls.Add(this.CurrentRevisionTitle); - this.RepoPanel.Controls.Add(this.CloneRepositoryButton); - this.RepoPanel.Controls.Add(this.RepoProgressBarLabel); - this.RepoPanel.Controls.Add(this.RepoProgressBar); - this.RepoPanel.Location = new System.Drawing.Point(4, 22); - this.RepoPanel.Name = "RepoPanel"; - this.RepoPanel.Padding = new System.Windows.Forms.Padding(3); - this.RepoPanel.Size = new System.Drawing.Size(868, 366); - this.RepoPanel.TabIndex = 0; - this.RepoPanel.Text = "Repository"; - // - // RepoRefreshButton - // - this.RepoRefreshButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.RepoRefreshButton.Location = new System.Drawing.Point(722, 296); - this.RepoRefreshButton.Name = "RepoRefreshButton"; - this.RepoRefreshButton.Size = new System.Drawing.Size(140, 29); - this.RepoRefreshButton.TabIndex = 35; - this.RepoRefreshButton.Text = "Refresh"; - this.RepoRefreshButton.UseVisualStyleBackColor = true; - this.RepoRefreshButton.Visible = false; - this.RepoRefreshButton.Click += new System.EventHandler(this.RepoRefreshButton_Click); - // - // BackupTagsList - // - this.BackupTagsList.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.BackupTagsList.Items.AddRange(new object[] { - "None"}); - this.BackupTagsList.Location = new System.Drawing.Point(122, 142); - this.BackupTagsList.Name = "BackupTagsList"; - this.BackupTagsList.ScrollAlwaysVisible = true; - this.BackupTagsList.Size = new System.Drawing.Size(535, 95); - this.BackupTagsList.TabIndex = 34; - this.BackupTagsList.Visible = false; - // - // ResetRemote - // - this.ResetRemote.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.ResetRemote.Location = new System.Drawing.Point(722, 81); - this.ResetRemote.Name = "ResetRemote"; - this.ResetRemote.Size = new System.Drawing.Size(140, 29); - this.ResetRemote.TabIndex = 33; - this.ResetRemote.Text = "Reset To Remote"; - this.ResetRemote.UseVisualStyleBackColor = true; - this.ResetRemote.Visible = false; - this.ResetRemote.Click += new System.EventHandler(this.ResetRemote_Click); - // - // RecloneButton - // - this.RecloneButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.RecloneButton.Location = new System.Drawing.Point(722, 212); - this.RecloneButton.Name = "RecloneButton"; - this.RecloneButton.Size = new System.Drawing.Size(140, 29); - this.RecloneButton.TabIndex = 32; - this.RecloneButton.Text = "Reclone"; - this.RecloneButton.UseVisualStyleBackColor = true; - this.RecloneButton.Visible = false; - this.RecloneButton.Click += new System.EventHandler(this.RecloneButton_Click); - // - // PythonPathText - // - this.PythonPathText.Location = new System.Drawing.Point(122, 112); - this.PythonPathText.Name = "PythonPathText"; - this.PythonPathText.Size = new System.Drawing.Size(535, 20); - this.PythonPathText.TabIndex = 31; - this.PythonPathText.Visible = false; - // - // PythonPathLabel - // - this.PythonPathLabel.AutoSize = true; - this.PythonPathLabel.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.PythonPathLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.PythonPathLabel.Location = new System.Drawing.Point(6, 112); - this.PythonPathLabel.Name = "PythonPathLabel"; - this.PythonPathLabel.Size = new System.Drawing.Size(114, 18); - this.PythonPathLabel.TabIndex = 30; - this.PythonPathLabel.Text = "Python Path:"; - this.PythonPathLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.PythonPathLabel.Visible = false; - // - // RepoGenChangelogButton - // - this.RepoGenChangelogButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.RepoGenChangelogButton.Location = new System.Drawing.Point(722, 177); - this.RepoGenChangelogButton.Name = "RepoGenChangelogButton"; - this.RepoGenChangelogButton.Size = new System.Drawing.Size(140, 29); - this.RepoGenChangelogButton.TabIndex = 27; - this.RepoGenChangelogButton.Text = "Generate Changelog"; - this.RepoGenChangelogButton.UseVisualStyleBackColor = true; - this.RepoGenChangelogButton.Visible = false; - this.RepoGenChangelogButton.Click += new System.EventHandler(this.RepoGenChangelogButton_Click); - // - // TestmergeSelector - // - this.TestmergeSelector.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.TestmergeSelector.Location = new System.Drawing.Point(722, 151); - this.TestmergeSelector.Maximum = new decimal(new int[] { - 1000000, - 0, - 0, - 0}); - this.TestmergeSelector.Name = "TestmergeSelector"; - this.TestmergeSelector.Size = new System.Drawing.Size(140, 20); - this.TestmergeSelector.TabIndex = 22; - this.TestmergeSelector.Visible = false; - // - // TestMergeListLabel - // - this.TestMergeListLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.TestMergeListLabel.HorizontalScrollbar = true; - this.TestMergeListLabel.Items.AddRange(new object[] { - "None"}); - this.TestMergeListLabel.Location = new System.Drawing.Point(122, 260); - this.TestMergeListLabel.Name = "TestMergeListLabel"; - this.TestMergeListLabel.ScrollAlwaysVisible = true; - this.TestMergeListLabel.Size = new System.Drawing.Size(535, 95); - this.TestMergeListLabel.TabIndex = 21; - this.TestMergeListLabel.Visible = false; - // - // CurrentRevisionLabel - // - this.CurrentRevisionLabel.AutoSize = true; - this.CurrentRevisionLabel.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.CurrentRevisionLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.CurrentRevisionLabel.Location = new System.Drawing.Point(162, 14); - this.CurrentRevisionLabel.Name = "CurrentRevisionLabel"; - this.CurrentRevisionLabel.Size = new System.Drawing.Size(82, 18); - this.CurrentRevisionLabel.TabIndex = 20; - this.CurrentRevisionLabel.Text = "Unknown"; - this.CurrentRevisionLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.CurrentRevisionLabel.Visible = false; - // - // RepoApplyButton - // - this.RepoApplyButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.RepoApplyButton.Location = new System.Drawing.Point(722, 331); - this.RepoApplyButton.Name = "RepoApplyButton"; - this.RepoApplyButton.Size = new System.Drawing.Size(140, 29); - this.RepoApplyButton.TabIndex = 17; - this.RepoApplyButton.Text = "Apply Changes"; - this.RepoApplyButton.UseVisualStyleBackColor = true; - this.RepoApplyButton.Visible = false; - this.RepoApplyButton.Click += new System.EventHandler(this.RepoApplyButton_Click); - // - // RepoBranchTextBox - // - this.RepoBranchTextBox.Location = new System.Drawing.Point(122, 70); - this.RepoBranchTextBox.Name = "RepoBranchTextBox"; - this.RepoBranchTextBox.Size = new System.Drawing.Size(535, 20); - this.RepoBranchTextBox.TabIndex = 15; - this.RepoBranchTextBox.Visible = false; - // - // RepoRemoteTextBox - // - this.RepoRemoteTextBox.Location = new System.Drawing.Point(122, 44); - this.RepoRemoteTextBox.Name = "RepoRemoteTextBox"; - this.RepoRemoteTextBox.Size = new System.Drawing.Size(535, 20); - this.RepoRemoteTextBox.TabIndex = 14; - this.RepoRemoteTextBox.Visible = false; - // - // HardReset - // - this.HardReset.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.HardReset.Location = new System.Drawing.Point(722, 46); - this.HardReset.Name = "HardReset"; - this.HardReset.Size = new System.Drawing.Size(140, 29); - this.HardReset.TabIndex = 13; - this.HardReset.Text = "Reset To Origin Branch"; - this.HardReset.UseVisualStyleBackColor = true; - this.HardReset.Visible = false; - this.HardReset.Click += new System.EventHandler(this.HardReset_Click); - // - // UpdateRepoButton - // - this.UpdateRepoButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.UpdateRepoButton.Location = new System.Drawing.Point(722, 11); - this.UpdateRepoButton.Name = "UpdateRepoButton"; - this.UpdateRepoButton.Size = new System.Drawing.Size(140, 29); - this.UpdateRepoButton.TabIndex = 12; - this.UpdateRepoButton.Text = "Merge from Remote"; - this.UpdateRepoButton.UseVisualStyleBackColor = true; - this.UpdateRepoButton.Visible = false; - this.UpdateRepoButton.Click += new System.EventHandler(this.UpdateRepoButton_Click); - // - // MergePRButton - // - this.MergePRButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.MergePRButton.Location = new System.Drawing.Point(722, 116); - this.MergePRButton.Name = "MergePRButton"; - this.MergePRButton.Size = new System.Drawing.Size(140, 29); - this.MergePRButton.TabIndex = 11; - this.MergePRButton.Text = "Merge Pull Request"; - this.MergePRButton.UseVisualStyleBackColor = true; - this.MergePRButton.Visible = false; - this.MergePRButton.Click += new System.EventHandler(this.TestMergeButton_Click); - // - // IdentityLabel - // - this.IdentityLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.IdentityLabel.AutoSize = true; - this.IdentityLabel.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.IdentityLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.IdentityLabel.Location = new System.Drawing.Point(6, 142); - this.IdentityLabel.Name = "IdentityLabel"; - this.IdentityLabel.Size = new System.Drawing.Size(116, 18); - this.IdentityLabel.TabIndex = 8; - this.IdentityLabel.Text = "Backup Tags:"; - this.IdentityLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.IdentityLabel.Visible = false; - // - // TestMergeListTitle - // - this.TestMergeListTitle.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.TestMergeListTitle.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.TestMergeListTitle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.TestMergeListTitle.Location = new System.Drawing.Point(6, 260); - this.TestMergeListTitle.Name = "TestMergeListTitle"; - this.TestMergeListTitle.Size = new System.Drawing.Size(110, 41); - this.TestMergeListTitle.TabIndex = 6; - this.TestMergeListTitle.Text = "Active Test Merges:"; - this.TestMergeListTitle.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.TestMergeListTitle.Visible = false; - // - // RemoteNameTitle - // - this.RemoteNameTitle.AutoSize = true; - this.RemoteNameTitle.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.RemoteNameTitle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.RemoteNameTitle.Location = new System.Drawing.Point(6, 46); - this.RemoteNameTitle.Name = "RemoteNameTitle"; - this.RemoteNameTitle.Size = new System.Drawing.Size(78, 18); - this.RemoteNameTitle.TabIndex = 5; - this.RemoteNameTitle.Text = "Remote:"; - this.RemoteNameTitle.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.RemoteNameTitle.Visible = false; - // - // BranchNameTitle - // - this.BranchNameTitle.AutoSize = true; - this.BranchNameTitle.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.BranchNameTitle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.BranchNameTitle.Location = new System.Drawing.Point(6, 72); - this.BranchNameTitle.Name = "BranchNameTitle"; - this.BranchNameTitle.Size = new System.Drawing.Size(70, 18); - this.BranchNameTitle.TabIndex = 4; - this.BranchNameTitle.Text = "Branch:"; - this.BranchNameTitle.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.BranchNameTitle.Visible = false; - // - // CurrentRevisionTitle - // - this.CurrentRevisionTitle.AutoSize = true; - this.CurrentRevisionTitle.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.CurrentRevisionTitle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.CurrentRevisionTitle.Location = new System.Drawing.Point(6, 14); - this.CurrentRevisionTitle.Name = "CurrentRevisionTitle"; - this.CurrentRevisionTitle.Size = new System.Drawing.Size(150, 18); - this.CurrentRevisionTitle.TabIndex = 3; - this.CurrentRevisionTitle.Text = "Current Revision:"; - this.CurrentRevisionTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.CurrentRevisionTitle.Visible = false; - // - // CloneRepositoryButton - // - this.CloneRepositoryButton.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.CloneRepositoryButton.Location = new System.Drawing.Point(311, 191); - this.CloneRepositoryButton.Name = "CloneRepositoryButton"; - this.CloneRepositoryButton.Size = new System.Drawing.Size(229, 34); - this.CloneRepositoryButton.TabIndex = 2; - this.CloneRepositoryButton.Text = "Clone Repository"; - this.CloneRepositoryButton.UseVisualStyleBackColor = true; - this.CloneRepositoryButton.Visible = false; - this.CloneRepositoryButton.Click += new System.EventHandler(this.CloneRepositoryButton_Click); - // - // RepoProgressBarLabel - // - this.RepoProgressBarLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.RepoProgressBarLabel.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.RepoProgressBarLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.RepoProgressBarLabel.Location = new System.Drawing.Point(184, 142); - this.RepoProgressBarLabel.Name = "RepoProgressBarLabel"; - this.RepoProgressBarLabel.Size = new System.Drawing.Size(499, 46); - this.RepoProgressBarLabel.TabIndex = 1; - this.RepoProgressBarLabel.Text = "Searching for Repository..."; - this.RepoProgressBarLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // RepoProgressBar - // - this.RepoProgressBar.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.RepoProgressBar.Location = new System.Drawing.Point(184, 191); - this.RepoProgressBar.Name = "RepoProgressBar"; - this.RepoProgressBar.Size = new System.Drawing.Size(499, 23); - this.RepoProgressBar.Style = System.Windows.Forms.ProgressBarStyle.Marquee; - this.RepoProgressBar.TabIndex = 0; - // - // BYONDPanel - // - this.BYONDPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(39)))), ((int)(((byte)(40)))), ((int)(((byte)(34))))); - this.BYONDPanel.Controls.Add(this.LatestVersionLabel); - this.BYONDPanel.Controls.Add(this.LatestVersionTitle); - this.BYONDPanel.Controls.Add(this.StagedVersionLabel); - this.BYONDPanel.Controls.Add(this.StagedVersionTitle); - this.BYONDPanel.Controls.Add(this.StatusLabel); - this.BYONDPanel.Controls.Add(this.VersionLabel); - this.BYONDPanel.Controls.Add(this.VersionTitle); - this.BYONDPanel.Controls.Add(this.MinorVersionLabel); - this.BYONDPanel.Controls.Add(this.MajorVersionLabel); - this.BYONDPanel.Controls.Add(this.UpdateButton); - this.BYONDPanel.Controls.Add(this.MinorVersionNumeric); - this.BYONDPanel.Controls.Add(this.MajorVersionNumeric); - this.BYONDPanel.Controls.Add(this.UpdateProgressBar); - this.BYONDPanel.Location = new System.Drawing.Point(4, 22); - this.BYONDPanel.Name = "BYONDPanel"; - this.BYONDPanel.Size = new System.Drawing.Size(868, 366); - this.BYONDPanel.TabIndex = 1; - this.BYONDPanel.Text = "BYOND"; - // - // LatestVersionLabel - // - this.LatestVersionLabel.AutoSize = true; - this.LatestVersionLabel.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.LatestVersionLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.LatestVersionLabel.Location = new System.Drawing.Point(425, 93); - this.LatestVersionLabel.Name = "LatestVersionLabel"; - this.LatestVersionLabel.Size = new System.Drawing.Size(82, 18); - this.LatestVersionLabel.TabIndex = 13; - this.LatestVersionLabel.Text = "Unknown"; - this.LatestVersionLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // - // LatestVersionTitle - // - this.LatestVersionTitle.AutoSize = true; - this.LatestVersionTitle.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.LatestVersionTitle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.LatestVersionTitle.Location = new System.Drawing.Point(286, 93); - this.LatestVersionTitle.Name = "LatestVersionTitle"; - this.LatestVersionTitle.Size = new System.Drawing.Size(133, 18); - this.LatestVersionTitle.TabIndex = 12; - this.LatestVersionTitle.Text = "Latest Version:"; - this.LatestVersionTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // StagedVersionLabel - // - this.StagedVersionLabel.AutoSize = true; - this.StagedVersionLabel.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.StagedVersionLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.StagedVersionLabel.Location = new System.Drawing.Point(425, 131); - this.StagedVersionLabel.Name = "StagedVersionLabel"; - this.StagedVersionLabel.Size = new System.Drawing.Size(82, 18); - this.StagedVersionLabel.TabIndex = 11; - this.StagedVersionLabel.Text = "Unknown"; - this.StagedVersionLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.StagedVersionLabel.Visible = false; - // - // StagedVersionTitle - // - this.StagedVersionTitle.AutoSize = true; - this.StagedVersionTitle.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.StagedVersionTitle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.StagedVersionTitle.Location = new System.Drawing.Point(282, 131); - this.StagedVersionTitle.Name = "StagedVersionTitle"; - this.StagedVersionTitle.Size = new System.Drawing.Size(137, 18); - this.StagedVersionTitle.TabIndex = 10; - this.StagedVersionTitle.Text = "Staged version:"; - this.StagedVersionTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.StagedVersionTitle.Visible = false; - // - // StatusLabel - // - this.StatusLabel.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.StatusLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.StatusLabel.Location = new System.Drawing.Point(303, 320); - this.StatusLabel.Name = "StatusLabel"; - this.StatusLabel.Size = new System.Drawing.Size(253, 37); - this.StatusLabel.TabIndex = 9; - this.StatusLabel.Text = "Idle"; - this.StatusLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // VersionLabel - // - this.VersionLabel.AutoSize = true; - this.VersionLabel.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.VersionLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.VersionLabel.Location = new System.Drawing.Point(425, 56); - this.VersionLabel.Name = "VersionLabel"; - this.VersionLabel.Size = new System.Drawing.Size(82, 18); - this.VersionLabel.TabIndex = 8; - this.VersionLabel.Text = "Unknown"; - this.VersionLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // - // VersionTitle - // - this.VersionTitle.AutoSize = true; - this.VersionTitle.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.VersionTitle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.VersionTitle.Location = new System.Drawing.Point(265, 56); - this.VersionTitle.Name = "VersionTitle"; - this.VersionTitle.Size = new System.Drawing.Size(154, 18); - this.VersionTitle.TabIndex = 7; - this.VersionTitle.Text = "Installed Version:"; - this.VersionTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // MinorVersionLabel - // - this.MinorVersionLabel.AutoSize = true; - this.MinorVersionLabel.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.MinorVersionLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.MinorVersionLabel.Location = new System.Drawing.Point(521, 180); - this.MinorVersionLabel.Name = "MinorVersionLabel"; - this.MinorVersionLabel.Size = new System.Drawing.Size(59, 18); - this.MinorVersionLabel.TabIndex = 6; - this.MinorVersionLabel.Text = "Minor:"; - this.MinorVersionLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // MajorVersionLabel - // - this.MajorVersionLabel.AutoSize = true; - this.MajorVersionLabel.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.MajorVersionLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.MajorVersionLabel.Location = new System.Drawing.Point(276, 180); - this.MajorVersionLabel.Name = "MajorVersionLabel"; - this.MajorVersionLabel.Size = new System.Drawing.Size(60, 18); - this.MajorVersionLabel.TabIndex = 5; - this.MajorVersionLabel.Text = "Major:"; - this.MajorVersionLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // UpdateButton - // - this.UpdateButton.Location = new System.Drawing.Point(372, 252); - this.UpdateButton.Name = "UpdateButton"; - this.UpdateButton.Size = new System.Drawing.Size(118, 28); - this.UpdateButton.TabIndex = 3; - this.UpdateButton.Text = "Update"; - this.UpdateButton.UseVisualStyleBackColor = true; - this.UpdateButton.Click += new System.EventHandler(this.UpdateButton_Click); - // - // MinorVersionNumeric - // - this.MinorVersionNumeric.Location = new System.Drawing.Point(490, 210); - this.MinorVersionNumeric.Maximum = new decimal(new int[] { - 10000, - 0, - 0, - 0}); - this.MinorVersionNumeric.Name = "MinorVersionNumeric"; - this.MinorVersionNumeric.Size = new System.Drawing.Size(120, 20); - this.MinorVersionNumeric.TabIndex = 2; - this.MinorVersionNumeric.Value = new decimal(new int[] { - 1381, - 0, - 0, - 0}); - // - // MajorVersionNumeric - // - this.MajorVersionNumeric.Location = new System.Drawing.Point(245, 210); - this.MajorVersionNumeric.Maximum = new decimal(new int[] { - 1000, - 0, - 0, - 0}); - this.MajorVersionNumeric.Name = "MajorVersionNumeric"; - this.MajorVersionNumeric.Size = new System.Drawing.Size(120, 20); - this.MajorVersionNumeric.TabIndex = 1; - this.MajorVersionNumeric.Value = new decimal(new int[] { - 511, - 0, - 0, - 0}); - // - // UpdateProgressBar - // - this.UpdateProgressBar.Location = new System.Drawing.Point(107, 286); - this.UpdateProgressBar.MarqueeAnimationSpeed = 50; - this.UpdateProgressBar.Name = "UpdateProgressBar"; - this.UpdateProgressBar.Size = new System.Drawing.Size(650, 31); - this.UpdateProgressBar.TabIndex = 0; - // - // ServerPanel - // - this.ServerPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(39)))), ((int)(((byte)(40)))), ((int)(((byte)(34))))); - this.ServerPanel.Controls.Add(this.AutostartCheckbox); - this.ServerPanel.Controls.Add(this.WebclientCheckBox); - this.ServerPanel.Controls.Add(this.WorldAnnounceButton); - this.ServerPanel.Controls.Add(this.WorldAnnounceField); - this.ServerPanel.Controls.Add(this.VisibilityTitle); - this.ServerPanel.Controls.Add(this.SecuritySelector); - this.ServerPanel.Controls.Add(this.SecurityTitle); - this.ServerPanel.Controls.Add(this.ResetTestmerge); - this.ServerPanel.Controls.Add(this.ServerPathLabel); - this.ServerPanel.Controls.Add(this.ServerPathTextbox); - this.ServerPanel.Controls.Add(this.CompileCancelButton); - this.ServerPanel.Controls.Add(this.ProjectPathLabel); - this.ServerPanel.Controls.Add(this.projectNameText); - this.ServerPanel.Controls.Add(this.PortLabel); - this.ServerPanel.Controls.Add(this.PortSelector); - this.ServerPanel.Controls.Add(this.ServerPRLabel); - this.ServerPanel.Controls.Add(this.ServerTestmergeInput); - this.ServerPanel.Controls.Add(this.TestmergeButton); - this.ServerPanel.Controls.Add(this.UpdateTestmergeButton); - this.ServerPanel.Controls.Add(this.UpdateMergeButton); - this.ServerPanel.Controls.Add(this.UpdateHardButton); - this.ServerPanel.Controls.Add(this.ServerGRestartButton); - this.ServerPanel.Controls.Add(this.ServerGStopButton); - this.ServerPanel.Controls.Add(this.ServerRestartButton); - this.ServerPanel.Controls.Add(this.ServerStopButton); - this.ServerPanel.Controls.Add(this.ServerStartButton); - this.ServerPanel.Controls.Add(this.CompilerStatusLabel); - this.ServerPanel.Controls.Add(this.CompilerLabel); - this.ServerPanel.Controls.Add(this.compileButton); - this.ServerPanel.Controls.Add(this.initializeButton); - this.ServerPanel.Controls.Add(this.compilerProgressBar); - this.ServerPanel.Controls.Add(this.ServerStatusLabel); - this.ServerPanel.Controls.Add(this.ServerStatusTitle); - this.ServerPanel.Location = new System.Drawing.Point(4, 22); - this.ServerPanel.Name = "ServerPanel"; - this.ServerPanel.Padding = new System.Windows.Forms.Padding(3); - this.ServerPanel.Size = new System.Drawing.Size(868, 366); - this.ServerPanel.TabIndex = 2; - this.ServerPanel.Text = "Server"; - // - // AutostartCheckbox - // - this.AutostartCheckbox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.AutostartCheckbox.AutoSize = true; - this.AutostartCheckbox.Font = new System.Drawing.Font("Verdana", 12F); - this.AutostartCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.AutostartCheckbox.Location = new System.Drawing.Point(754, 16); - this.AutostartCheckbox.Name = "AutostartCheckbox"; - this.AutostartCheckbox.Size = new System.Drawing.Size(104, 22); - this.AutostartCheckbox.TabIndex = 15; - this.AutostartCheckbox.Text = "Autostart"; - this.AutostartCheckbox.UseVisualStyleBackColor = true; - this.AutostartCheckbox.CheckedChanged += new System.EventHandler(this.AutostartCheckbox_CheckedChanged); - // - // WebclientCheckBox - // - this.WebclientCheckBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.WebclientCheckBox.AutoSize = true; - this.WebclientCheckBox.Font = new System.Drawing.Font("Verdana", 12F); - this.WebclientCheckBox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.WebclientCheckBox.Location = new System.Drawing.Point(754, 57); - this.WebclientCheckBox.Name = "WebclientCheckBox"; - this.WebclientCheckBox.Size = new System.Drawing.Size(108, 22); - this.WebclientCheckBox.TabIndex = 42; - this.WebclientCheckBox.Text = "Webclient"; - this.WebclientCheckBox.UseVisualStyleBackColor = true; - this.WebclientCheckBox.CheckedChanged += new System.EventHandler(this.WebclientCheckBox_CheckedChanged); - // - // WorldAnnounceButton - // - this.WorldAnnounceButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.WorldAnnounceButton.Location = new System.Drawing.Point(785, 136); - this.WorldAnnounceButton.Name = "WorldAnnounceButton"; - this.WorldAnnounceButton.Size = new System.Drawing.Size(77, 20); - this.WorldAnnounceButton.TabIndex = 41; - this.WorldAnnounceButton.Text = "Send"; - this.WorldAnnounceButton.UseVisualStyleBackColor = true; - this.WorldAnnounceButton.Click += new System.EventHandler(this.WorldAnnounceButton_Click); - // - // WorldAnnounceField - // - this.WorldAnnounceField.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.WorldAnnounceField.Location = new System.Drawing.Point(566, 136); - this.WorldAnnounceField.Name = "WorldAnnounceField"; - this.WorldAnnounceField.Size = new System.Drawing.Size(213, 20); - this.WorldAnnounceField.TabIndex = 40; - // - // VisibilityTitle - // - this.VisibilityTitle.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.VisibilityTitle.AutoSize = true; - this.VisibilityTitle.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.VisibilityTitle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.VisibilityTitle.Location = new System.Drawing.Point(466, 139); - this.VisibilityTitle.Name = "VisibilityTitle"; - this.VisibilityTitle.Size = new System.Drawing.Size(94, 18); - this.VisibilityTitle.TabIndex = 39; - this.VisibilityTitle.Text = "Announce:"; - this.VisibilityTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // SecuritySelector - // - this.SecuritySelector.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.SecuritySelector.FormattingEnabled = true; - this.SecuritySelector.Items.AddRange(new object[] { - "Trusted", - "Safe", - "Ultrasafe"}); - this.SecuritySelector.Location = new System.Drawing.Point(136, 136); - this.SecuritySelector.Name = "SecuritySelector"; - this.SecuritySelector.Size = new System.Drawing.Size(121, 21); - this.SecuritySelector.TabIndex = 38; - this.SecuritySelector.SelectedIndexChanged += new System.EventHandler(this.SecuritySelector_SelectedIndexChanged); - // - // SecurityTitle - // - this.SecurityTitle.AutoSize = true; - this.SecurityTitle.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.SecurityTitle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.SecurityTitle.Location = new System.Drawing.Point(44, 139); - this.SecurityTitle.Name = "SecurityTitle"; - this.SecurityTitle.Size = new System.Drawing.Size(80, 18); - this.SecurityTitle.TabIndex = 37; - this.SecurityTitle.Text = "Security:"; - this.SecurityTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // ResetTestmerge - // - this.ResetTestmerge.Anchor = System.Windows.Forms.AnchorStyles.Top; - this.ResetTestmerge.Location = new System.Drawing.Point(602, 95); - this.ResetTestmerge.Name = "ResetTestmerge"; - this.ResetTestmerge.Size = new System.Drawing.Size(142, 28); - this.ResetTestmerge.TabIndex = 36; - this.ResetTestmerge.Text = "Reset and Recompile"; - this.ResetTestmerge.UseVisualStyleBackColor = true; - this.ResetTestmerge.Click += new System.EventHandler(this.ResetTestmerge_Click); + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Main)); + this.RepoBGW = new System.ComponentModel.BackgroundWorker(); + this.BYONDTimer = new System.Windows.Forms.Timer(this.components); + this.ServerTimer = new System.Windows.Forms.Timer(this.components); + this.WorldStatusChecker = new System.ComponentModel.BackgroundWorker(); + this.WorldStatusTimer = new System.Windows.Forms.Timer(this.components); + this.FullUpdateWorker = new System.ComponentModel.BackgroundWorker(); + this.ServerStartBGW = new System.ComponentModel.BackgroundWorker(); + this.ChatPanel = new System.Windows.Forms.TabPage(); + this.label5 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.IRCModesComboBox = new System.Windows.Forms.ComboBox(); + this.label1 = new System.Windows.Forms.Label(); + this.AdminChannelsTextbox = new System.Windows.Forms.TextBox(); + this.WDChannelsTextbox = new System.Windows.Forms.TextBox(); + this.GameChannelsTextbox = new System.Windows.Forms.TextBox(); + this.DevChannelsTextbox = new System.Windows.Forms.TextBox(); + this.ChatNicknameText = new System.Windows.Forms.TextBox(); + this.ChatServerText = new System.Windows.Forms.TextBox(); + this.AuthField2 = new System.Windows.Forms.TextBox(); + this.AuthField1 = new System.Windows.Forms.TextBox(); + this.ChatAdminsTextBox = new System.Windows.Forms.TextBox(); + this.ChatRefreshButton = new System.Windows.Forms.Button(); + this.ChatNicknameTitle = new System.Windows.Forms.Label(); + this.ChatPortSelector = new System.Windows.Forms.NumericUpDown(); + this.ChatPortTitle = new System.Windows.Forms.Label(); + this.ChatServerTitle = new System.Windows.Forms.Label(); + this.ChatApplyButton = new System.Windows.Forms.Button(); + this.AuthField2Title = new System.Windows.Forms.Label(); + this.AuthField1Title = new System.Windows.Forms.Label(); + this.ChatReconnectButton = new System.Windows.Forms.Button(); + this.ChatStatusLabel = new System.Windows.Forms.Label(); + this.ChatStatusTitle = new System.Windows.Forms.Label(); + this.ChatEnabledCheckbox = new System.Windows.Forms.CheckBox(); + this.ChatProviderSelectorPanel = new System.Windows.Forms.Panel(); + this.DiscordProviderSwitch = new System.Windows.Forms.RadioButton(); + this.IRCProviderSwitch = new System.Windows.Forms.RadioButton(); + this.ChatProviderTitle = new System.Windows.Forms.Label(); + this.ChannelsTitle = new System.Windows.Forms.Label(); + this.ChatAdminsTitle = new System.Windows.Forms.Label(); + this.panel1 = new System.Windows.Forms.Panel(); + this.AdminModeSpecial = new System.Windows.Forms.RadioButton(); + this.AdminModeNormal = new System.Windows.Forms.RadioButton(); + this.ServerPanel = new System.Windows.Forms.TabPage(); + this.AutostartCheckbox = new System.Windows.Forms.CheckBox(); + this.WebclientCheckBox = new System.Windows.Forms.CheckBox(); + this.WorldAnnounceButton = new System.Windows.Forms.Button(); + this.WorldAnnounceField = new System.Windows.Forms.TextBox(); + this.ServerPathTextbox = new System.Windows.Forms.TextBox(); + this.projectNameText = new System.Windows.Forms.TextBox(); + this.WorldAnnounceLabel = new System.Windows.Forms.Label(); + this.SecuritySelector = new System.Windows.Forms.ComboBox(); + this.SecurityTitle = new System.Windows.Forms.Label(); + this.ResetTestmerge = new System.Windows.Forms.Button(); + this.ServerPathLabel = new System.Windows.Forms.Label(); + this.CompileCancelButton = new System.Windows.Forms.Button(); + this.ProjectPathLabel = new System.Windows.Forms.Label(); + this.PortLabel = new System.Windows.Forms.Label(); + this.PortSelector = new System.Windows.Forms.NumericUpDown(); + this.ServerPRLabel = new System.Windows.Forms.Label(); + this.ServerTestmergeInput = new System.Windows.Forms.NumericUpDown(); + this.TestmergeButton = new System.Windows.Forms.Button(); + this.UpdateTestmergeButton = new System.Windows.Forms.Button(); + this.UpdateMergeButton = new System.Windows.Forms.Button(); + this.UpdateHardButton = new System.Windows.Forms.Button(); + this.ServerGRestartButton = new System.Windows.Forms.Button(); + this.ServerGStopButton = new System.Windows.Forms.CheckBox(); + this.ServerRestartButton = new System.Windows.Forms.Button(); + this.ServerStopButton = new System.Windows.Forms.Button(); + this.ServerStartButton = new System.Windows.Forms.Button(); + this.CompilerStatusLabel = new System.Windows.Forms.Label(); + this.CompilerLabel = new System.Windows.Forms.Label(); + this.compileButton = new System.Windows.Forms.Button(); + this.initializeButton = new System.Windows.Forms.Button(); + this.compilerProgressBar = new System.Windows.Forms.ProgressBar(); + this.ServerStatusLabel = new System.Windows.Forms.Label(); + this.ServerStatusTitle = new System.Windows.Forms.Label(); + this.BYONDPanel = new System.Windows.Forms.TabPage(); + this.LatestVersionLabel = new System.Windows.Forms.Label(); + this.LatestVersionTitle = new System.Windows.Forms.Label(); + this.StagedVersionLabel = new System.Windows.Forms.Label(); + this.StagedVersionTitle = new System.Windows.Forms.Label(); + this.StatusLabel = new System.Windows.Forms.Label(); + this.VersionLabel = new System.Windows.Forms.Label(); + this.VersionTitle = new System.Windows.Forms.Label(); + this.MinorVersionLabel = new System.Windows.Forms.Label(); + this.MajorVersionLabel = new System.Windows.Forms.Label(); + this.UpdateButton = new System.Windows.Forms.Button(); + this.MinorVersionNumeric = new System.Windows.Forms.NumericUpDown(); + this.MajorVersionNumeric = new System.Windows.Forms.NumericUpDown(); + this.UpdateProgressBar = new System.Windows.Forms.ProgressBar(); + this.RepoPanel = new System.Windows.Forms.TabPage(); + this.RepoRefreshButton = new System.Windows.Forms.Button(); + this.BackupTagsList = new System.Windows.Forms.ListBox(); + this.ResetRemote = new System.Windows.Forms.Button(); + this.RecloneButton = new System.Windows.Forms.Button(); + this.PythonPathText = new System.Windows.Forms.TextBox(); + this.RepoBranchTextBox = new System.Windows.Forms.TextBox(); + this.RepoRemoteTextBox = new System.Windows.Forms.TextBox(); + this.PythonPathLabel = new System.Windows.Forms.Label(); + this.RepoGenChangelogButton = new System.Windows.Forms.Button(); + this.TestmergeSelector = new System.Windows.Forms.NumericUpDown(); + this.TestMergeListLabel = new System.Windows.Forms.ListBox(); + this.CurrentRevisionLabel = new System.Windows.Forms.Label(); + this.RepoApplyButton = new System.Windows.Forms.Button(); + this.HardReset = new System.Windows.Forms.Button(); + this.UpdateRepoButton = new System.Windows.Forms.Button(); + this.MergePRButton = new System.Windows.Forms.Button(); + this.IdentityLabel = new System.Windows.Forms.Label(); + this.TestMergeListTitle = new System.Windows.Forms.Label(); + this.RemoteNameTitle = new System.Windows.Forms.Label(); + this.BranchNameTitle = new System.Windows.Forms.Label(); + this.CurrentRevisionTitle = new System.Windows.Forms.Label(); + this.CloneRepositoryButton = new System.Windows.Forms.Button(); + this.RepoProgressBarLabel = new System.Windows.Forms.Label(); + this.RepoProgressBar = new System.Windows.Forms.ProgressBar(); + this.Panels = new System.Windows.Forms.TabControl(); + this.ChatPanel.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.ChatPortSelector)).BeginInit(); + this.ChatProviderSelectorPanel.SuspendLayout(); + this.panel1.SuspendLayout(); + this.ServerPanel.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.PortSelector)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.ServerTestmergeInput)).BeginInit(); + this.BYONDPanel.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.MinorVersionNumeric)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.MajorVersionNumeric)).BeginInit(); + this.RepoPanel.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.TestmergeSelector)).BeginInit(); + this.Panels.SuspendLayout(); + this.SuspendLayout(); // - // ServerPathLabel - // - this.ServerPathLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.ServerPathLabel.AutoSize = true; - this.ServerPathLabel.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.ServerPathLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.ServerPathLabel.Location = new System.Drawing.Point(15, 165); - this.ServerPathLabel.Name = "ServerPathLabel"; - this.ServerPathLabel.Size = new System.Drawing.Size(109, 18); - this.ServerPathLabel.TabIndex = 33; - this.ServerPathLabel.Text = "Server Path:"; - this.ServerPathLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // ServerPathTextbox - // - this.ServerPathTextbox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.ServerPathTextbox.Location = new System.Drawing.Point(136, 163); - this.ServerPathTextbox.Name = "ServerPathTextbox"; - this.ServerPathTextbox.Size = new System.Drawing.Size(296, 20); - this.ServerPathTextbox.TabIndex = 32; - // - // CompileCancelButton - // - this.CompileCancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.CompileCancelButton.Enabled = false; - this.CompileCancelButton.Location = new System.Drawing.Point(737, 302); - this.CompileCancelButton.Name = "CompileCancelButton"; - this.CompileCancelButton.Size = new System.Drawing.Size(69, 31); - this.CompileCancelButton.TabIndex = 31; - this.CompileCancelButton.Text = "Cancel"; - this.CompileCancelButton.UseVisualStyleBackColor = true; - this.CompileCancelButton.Click += new System.EventHandler(this.CompileCancelButton_Click); - // - // ProjectPathLabel - // - this.ProjectPathLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.ProjectPathLabel.AutoSize = true; - this.ProjectPathLabel.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.ProjectPathLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.ProjectPathLabel.Location = new System.Drawing.Point(445, 165); - this.ProjectPathLabel.Name = "ProjectPathLabel"; - this.ProjectPathLabel.Size = new System.Drawing.Size(115, 18); - this.ProjectPathLabel.TabIndex = 30; - this.ProjectPathLabel.Text = "Project Path:"; - this.ProjectPathLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // projectNameText - // - this.projectNameText.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.projectNameText.Location = new System.Drawing.Point(566, 163); - this.projectNameText.Name = "projectNameText"; - this.projectNameText.Size = new System.Drawing.Size(296, 20); - this.projectNameText.TabIndex = 29; - // - // PortLabel - // - this.PortLabel.AutoSize = true; - this.PortLabel.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.PortLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.PortLabel.Location = new System.Drawing.Point(4, 60); - this.PortLabel.Name = "PortLabel"; - this.PortLabel.Size = new System.Drawing.Size(48, 18); - this.PortLabel.TabIndex = 28; - this.PortLabel.Text = "Port:"; - this.PortLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // PortSelector - // - this.PortSelector.Location = new System.Drawing.Point(59, 60); - this.PortSelector.Maximum = new decimal(new int[] { - 65535, - 0, - 0, - 0}); - this.PortSelector.Minimum = new decimal(new int[] { - 1, - 0, - 0, - 0}); - this.PortSelector.Name = "PortSelector"; - this.PortSelector.Size = new System.Drawing.Size(60, 20); - this.PortSelector.TabIndex = 27; - this.PortSelector.Value = new decimal(new int[] { - 1, - 0, - 0, - 0}); - this.PortSelector.ValueChanged += new System.EventHandler(this.PortSelector_ValueChanged); - // - // ServerPRLabel - // - this.ServerPRLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.ServerPRLabel.AutoSize = true; - this.ServerPRLabel.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.ServerPRLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.ServerPRLabel.Location = new System.Drawing.Point(745, 101); - this.ServerPRLabel.Name = "ServerPRLabel"; - this.ServerPRLabel.Size = new System.Drawing.Size(49, 18); - this.ServerPRLabel.TabIndex = 26; - this.ServerPRLabel.Text = "PR#:"; - this.ServerPRLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // ServerTestmergeInput - // - this.ServerTestmergeInput.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.ServerTestmergeInput.Location = new System.Drawing.Point(806, 99); - this.ServerTestmergeInput.Maximum = new decimal(new int[] { - 1000000, - 0, - 0, - 0}); - this.ServerTestmergeInput.Name = "ServerTestmergeInput"; - this.ServerTestmergeInput.Size = new System.Drawing.Size(62, 20); - this.ServerTestmergeInput.TabIndex = 25; - // - // TestmergeButton - // - this.TestmergeButton.Anchor = System.Windows.Forms.AnchorStyles.Top; - this.TestmergeButton.Location = new System.Drawing.Point(454, 95); - this.TestmergeButton.Name = "TestmergeButton"; - this.TestmergeButton.Size = new System.Drawing.Size(142, 28); - this.TestmergeButton.TabIndex = 24; - this.TestmergeButton.Text = "Testmerge"; - this.TestmergeButton.UseVisualStyleBackColor = true; - this.TestmergeButton.Click += new System.EventHandler(this.TestmergeButton_Click); - // - // UpdateTestmergeButton - // - this.UpdateTestmergeButton.Anchor = System.Windows.Forms.AnchorStyles.Top; - this.UpdateTestmergeButton.Location = new System.Drawing.Point(306, 95); - this.UpdateTestmergeButton.Name = "UpdateTestmergeButton"; - this.UpdateTestmergeButton.Size = new System.Drawing.Size(142, 28); - this.UpdateTestmergeButton.TabIndex = 23; - this.UpdateTestmergeButton.Text = "Update and Testmerge"; - this.UpdateTestmergeButton.UseVisualStyleBackColor = true; - this.UpdateTestmergeButton.Click += new System.EventHandler(this.UpdateTestmergeButton_Click); - // - // UpdateMergeButton - // - this.UpdateMergeButton.Anchor = System.Windows.Forms.AnchorStyles.Top; - this.UpdateMergeButton.Location = new System.Drawing.Point(158, 95); - this.UpdateMergeButton.Name = "UpdateMergeButton"; - this.UpdateMergeButton.Size = new System.Drawing.Size(142, 28); - this.UpdateMergeButton.TabIndex = 22; - this.UpdateMergeButton.Text = "Update (KeepTestmerge)"; - this.UpdateMergeButton.UseVisualStyleBackColor = true; - this.UpdateMergeButton.Click += new System.EventHandler(this.UpdateMergeButton_Click); - // - // UpdateHardButton - // - this.UpdateHardButton.Anchor = System.Windows.Forms.AnchorStyles.Top; - this.UpdateHardButton.Location = new System.Drawing.Point(7, 95); - this.UpdateHardButton.Name = "UpdateHardButton"; - this.UpdateHardButton.Size = new System.Drawing.Size(145, 28); - this.UpdateHardButton.TabIndex = 21; - this.UpdateHardButton.Text = "Update (Reset Testmerge)"; - this.UpdateHardButton.UseVisualStyleBackColor = true; - this.UpdateHardButton.Click += new System.EventHandler(this.UpdateHardButton_Click); - // - // ServerGRestartButton - // - this.ServerGRestartButton.Anchor = System.Windows.Forms.AnchorStyles.Top; - this.ServerGRestartButton.Location = new System.Drawing.Point(626, 54); - this.ServerGRestartButton.Name = "ServerGRestartButton"; - this.ServerGRestartButton.Size = new System.Drawing.Size(118, 28); - this.ServerGRestartButton.TabIndex = 20; - this.ServerGRestartButton.Text = "Graceful Restart"; - this.ServerGRestartButton.UseVisualStyleBackColor = true; - this.ServerGRestartButton.Click += new System.EventHandler(this.ServerGRestartButton_Click); - // - // ServerGStopButton - // - this.ServerGStopButton.Anchor = System.Windows.Forms.AnchorStyles.Top; - this.ServerGStopButton.Appearance = System.Windows.Forms.Appearance.Button; - this.ServerGStopButton.Location = new System.Drawing.Point(502, 54); - this.ServerGStopButton.Name = "ServerGStopButton"; - this.ServerGStopButton.Size = new System.Drawing.Size(118, 28); - this.ServerGStopButton.TabIndex = 19; - this.ServerGStopButton.Text = "Graceful Stop"; - this.ServerGStopButton.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.ServerGStopButton.UseVisualStyleBackColor = true; - this.ServerGStopButton.CheckedChanged += new System.EventHandler(this.ServerGStopButton_Checked); - // - // ServerRestartButton - // - this.ServerRestartButton.Anchor = System.Windows.Forms.AnchorStyles.Top; - this.ServerRestartButton.Location = new System.Drawing.Point(378, 54); - this.ServerRestartButton.Name = "ServerRestartButton"; - this.ServerRestartButton.Size = new System.Drawing.Size(118, 28); - this.ServerRestartButton.TabIndex = 18; - this.ServerRestartButton.Text = "Restart"; - this.ServerRestartButton.UseVisualStyleBackColor = true; - this.ServerRestartButton.Click += new System.EventHandler(this.ServerRestartButton_Click); - // - // ServerStopButton - // - this.ServerStopButton.Anchor = System.Windows.Forms.AnchorStyles.Top; - this.ServerStopButton.Location = new System.Drawing.Point(254, 54); - this.ServerStopButton.Name = "ServerStopButton"; - this.ServerStopButton.Size = new System.Drawing.Size(118, 28); - this.ServerStopButton.TabIndex = 17; - this.ServerStopButton.Text = "Stop"; - this.ServerStopButton.UseVisualStyleBackColor = true; - this.ServerStopButton.Click += new System.EventHandler(this.ServerStopButton_Click); - // - // ServerStartButton - // - this.ServerStartButton.Anchor = System.Windows.Forms.AnchorStyles.Top; - this.ServerStartButton.Location = new System.Drawing.Point(130, 54); - this.ServerStartButton.Name = "ServerStartButton"; - this.ServerStartButton.Size = new System.Drawing.Size(118, 28); - this.ServerStartButton.TabIndex = 16; - this.ServerStartButton.Text = "Start"; - this.ServerStartButton.UseVisualStyleBackColor = true; - this.ServerStartButton.Click += new System.EventHandler(this.ServerStartButton_Click); - // - // CompilerStatusLabel - // - this.CompilerStatusLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.CompilerStatusLabel.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.CompilerStatusLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.CompilerStatusLabel.Location = new System.Drawing.Point(110, 271); - this.CompilerStatusLabel.Name = "CompilerStatusLabel"; - this.CompilerStatusLabel.Size = new System.Drawing.Size(618, 28); - this.CompilerStatusLabel.TabIndex = 14; - this.CompilerStatusLabel.Text = "Idle"; - this.CompilerStatusLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // CompilerLabel - // - this.CompilerLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.CompilerLabel.AutoSize = true; - this.CompilerLabel.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.CompilerLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.CompilerLabel.Location = new System.Drawing.Point(379, 203); - this.CompilerLabel.Name = "CompilerLabel"; - this.CompilerLabel.Size = new System.Drawing.Size(80, 18); - this.CompilerLabel.TabIndex = 13; - this.CompilerLabel.Text = "Compiler"; - this.CompilerLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // compileButton - // - this.compileButton.Anchor = System.Windows.Forms.AnchorStyles.Bottom; - this.compileButton.Enabled = false; - this.compileButton.Location = new System.Drawing.Point(456, 240); - this.compileButton.Name = "compileButton"; - this.compileButton.Size = new System.Drawing.Size(159, 28); - this.compileButton.TabIndex = 12; - this.compileButton.Text = "Copy from Repo and Compile"; - this.compileButton.UseVisualStyleBackColor = true; - this.compileButton.Click += new System.EventHandler(this.CompileButton_Click); - // - // initializeButton - // - this.initializeButton.Anchor = System.Windows.Forms.AnchorStyles.Bottom; - this.initializeButton.Enabled = false; - this.initializeButton.Location = new System.Drawing.Point(219, 240); - this.initializeButton.Name = "initializeButton"; - this.initializeButton.Size = new System.Drawing.Size(159, 28); - this.initializeButton.TabIndex = 11; - this.initializeButton.Text = "Initialize Game Folders"; - this.initializeButton.UseVisualStyleBackColor = true; - this.initializeButton.Click += new System.EventHandler(this.InitializeButton_Click); - // - // compilerProgressBar - // - this.compilerProgressBar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.compilerProgressBar.Location = new System.Drawing.Point(110, 302); - this.compilerProgressBar.MarqueeAnimationSpeed = 50; - this.compilerProgressBar.Name = "compilerProgressBar"; - this.compilerProgressBar.Size = new System.Drawing.Size(618, 31); - this.compilerProgressBar.TabIndex = 10; - // - // ServerStatusLabel - // - this.ServerStatusLabel.AutoSize = true; - this.ServerStatusLabel.Font = new System.Drawing.Font("Verdana", 10F); - this.ServerStatusLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.ServerStatusLabel.Location = new System.Drawing.Point(136, 19); - this.ServerStatusLabel.Name = "ServerStatusLabel"; - this.ServerStatusLabel.Size = new System.Drawing.Size(73, 17); - this.ServerStatusLabel.TabIndex = 9; - this.ServerStatusLabel.Text = "Unknown"; - this.ServerStatusLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // ServerStatusTitle - // - this.ServerStatusTitle.AutoSize = true; - this.ServerStatusTitle.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.ServerStatusTitle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.ServerStatusTitle.Location = new System.Drawing.Point(15, 17); - this.ServerStatusTitle.Name = "ServerStatusTitle"; - this.ServerStatusTitle.Size = new System.Drawing.Size(125, 18); - this.ServerStatusTitle.TabIndex = 8; - this.ServerStatusTitle.Text = "Server Status:"; - this.ServerStatusTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // ChatPanel - // - this.ChatPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(39)))), ((int)(((byte)(40)))), ((int)(((byte)(34))))); - this.ChatPanel.Controls.Add(this.label5); - this.ChatPanel.Controls.Add(this.label4); - this.ChatPanel.Controls.Add(this.label3); - this.ChatPanel.Controls.Add(this.label2); - this.ChatPanel.Controls.Add(this.IRCModesComboBox); - this.ChatPanel.Controls.Add(this.label1); - this.ChatPanel.Controls.Add(this.AdminChannelsTextbox); - this.ChatPanel.Controls.Add(this.WDChannelsTextbox); - this.ChatPanel.Controls.Add(this.GameChannelsTextbox); - this.ChatPanel.Controls.Add(this.DevChannelsTextbox); - this.ChatPanel.Controls.Add(this.ChatRefreshButton); - this.ChatPanel.Controls.Add(this.ChatNicknameText); - this.ChatPanel.Controls.Add(this.ChatNicknameTitle); - this.ChatPanel.Controls.Add(this.ChatPortSelector); - this.ChatPanel.Controls.Add(this.ChatPortTitle); - this.ChatPanel.Controls.Add(this.ChatServerText); - this.ChatPanel.Controls.Add(this.ChatServerTitle); - this.ChatPanel.Controls.Add(this.ChatApplyButton); - this.ChatPanel.Controls.Add(this.AuthField2Title); - this.ChatPanel.Controls.Add(this.AuthField1Title); - this.ChatPanel.Controls.Add(this.AuthField2); - this.ChatPanel.Controls.Add(this.AuthField1); - this.ChatPanel.Controls.Add(this.ChatReconnectButton); - this.ChatPanel.Controls.Add(this.ChatStatusLabel); - this.ChatPanel.Controls.Add(this.ChatStatusTitle); - this.ChatPanel.Controls.Add(this.ChatEnabledCheckbox); - this.ChatPanel.Controls.Add(this.ChatProviderSelectorPanel); - this.ChatPanel.Controls.Add(this.ChatProviderTitle); - this.ChatPanel.Controls.Add(this.ChannelsTitle); - this.ChatPanel.Controls.Add(this.ChatAdminsTextBox); - this.ChatPanel.Controls.Add(this.ChatAdminsTitle); - this.ChatPanel.Controls.Add(this.panel1); - this.ChatPanel.Location = new System.Drawing.Point(4, 22); - this.ChatPanel.Name = "ChatPanel"; - this.ChatPanel.Padding = new System.Windows.Forms.Padding(3); - this.ChatPanel.Size = new System.Drawing.Size(868, 366); - this.ChatPanel.TabIndex = 4; - this.ChatPanel.Text = "Chat"; - // - // label5 - // - this.label5.AutoSize = true; - this.label5.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label5.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.label5.Location = new System.Drawing.Point(686, 219); - this.label5.Name = "label5"; - this.label5.Size = new System.Drawing.Size(148, 18); - this.label5.TabIndex = 43; - this.label5.Text = "Game Messages:"; - this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // label4 - // - this.label4.AutoSize = true; - this.label4.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.label4.Location = new System.Drawing.Point(516, 219); - this.label4.Name = "label4"; - this.label4.Size = new System.Drawing.Size(136, 18); - this.label4.TabIndex = 42; - this.label4.Text = "Developer Info:"; - this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // label3 - // - this.label3.AutoSize = true; - this.label3.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.label3.Location = new System.Drawing.Point(686, 61); - this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(135, 18); - this.label3.TabIndex = 41; - this.label3.Text = "Administration:"; - this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // label2 - // - this.label2.AutoSize = true; - this.label2.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.label2.Location = new System.Drawing.Point(516, 61); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(153, 18); - this.label2.TabIndex = 40; - this.label2.Text = "Server Watchdog:"; - this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // IRCModesComboBox - // - this.IRCModesComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.IRCModesComboBox.FormattingEnabled = true; - this.IRCModesComboBox.Items.AddRange(new object[] { + // RepoBGW + // + this.RepoBGW.WorkerReportsProgress = true; + this.RepoBGW.WorkerSupportsCancellation = true; + // + // BYONDTimer + // + this.BYONDTimer.Interval = 1000; + this.BYONDTimer.Tick += new System.EventHandler(this.BYONDTimer_Tick); + // + // ServerTimer + // + this.ServerTimer.Interval = 10000; + this.ServerTimer.Tick += new System.EventHandler(this.ServerTimer_Tick); + // + // WorldStatusChecker + // + this.WorldStatusChecker.WorkerReportsProgress = true; + this.WorldStatusChecker.WorkerSupportsCancellation = true; + this.WorldStatusChecker.DoWork += new System.ComponentModel.DoWorkEventHandler(this.WorldStatusChecker_DoWork); + // + // WorldStatusTimer + // + this.WorldStatusTimer.Interval = 10000; + this.WorldStatusTimer.Tick += new System.EventHandler(this.WorldStatusTimer_Tick); + // + // FullUpdateWorker + // + this.FullUpdateWorker.DoWork += new System.ComponentModel.DoWorkEventHandler(this.FullUpdateWorker_DoWork); + // + // ServerStartBGW + // + this.ServerStartBGW.DoWork += new System.ComponentModel.DoWorkEventHandler(this.ServerStartBGW_DoWork); + // + // ChatPanel + // + this.ChatPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(39)))), ((int)(((byte)(40)))), ((int)(((byte)(34))))); + this.ChatPanel.Controls.Add(this.label5); + this.ChatPanel.Controls.Add(this.label4); + this.ChatPanel.Controls.Add(this.label3); + this.ChatPanel.Controls.Add(this.label2); + this.ChatPanel.Controls.Add(this.IRCModesComboBox); + this.ChatPanel.Controls.Add(this.label1); + this.ChatPanel.Controls.Add(this.AdminChannelsTextbox); + this.ChatPanel.Controls.Add(this.WDChannelsTextbox); + this.ChatPanel.Controls.Add(this.GameChannelsTextbox); + this.ChatPanel.Controls.Add(this.DevChannelsTextbox); + this.ChatPanel.Controls.Add(this.ChatNicknameText); + this.ChatPanel.Controls.Add(this.ChatServerText); + this.ChatPanel.Controls.Add(this.AuthField2); + this.ChatPanel.Controls.Add(this.AuthField1); + this.ChatPanel.Controls.Add(this.ChatAdminsTextBox); + this.ChatPanel.Controls.Add(this.ChatRefreshButton); + this.ChatPanel.Controls.Add(this.ChatNicknameTitle); + this.ChatPanel.Controls.Add(this.ChatPortSelector); + this.ChatPanel.Controls.Add(this.ChatPortTitle); + this.ChatPanel.Controls.Add(this.ChatServerTitle); + this.ChatPanel.Controls.Add(this.ChatApplyButton); + this.ChatPanel.Controls.Add(this.AuthField2Title); + this.ChatPanel.Controls.Add(this.AuthField1Title); + this.ChatPanel.Controls.Add(this.ChatReconnectButton); + this.ChatPanel.Controls.Add(this.ChatStatusLabel); + this.ChatPanel.Controls.Add(this.ChatStatusTitle); + this.ChatPanel.Controls.Add(this.ChatEnabledCheckbox); + this.ChatPanel.Controls.Add(this.ChatProviderSelectorPanel); + this.ChatPanel.Controls.Add(this.ChatProviderTitle); + this.ChatPanel.Controls.Add(this.ChannelsTitle); + this.ChatPanel.Controls.Add(this.ChatAdminsTitle); + this.ChatPanel.Controls.Add(this.panel1); + this.ChatPanel.Location = new System.Drawing.Point(4, 22); + this.ChatPanel.Name = "ChatPanel"; + this.ChatPanel.Padding = new System.Windows.Forms.Padding(3); + this.ChatPanel.Size = new System.Drawing.Size(868, 366); + this.ChatPanel.TabIndex = 4; + this.ChatPanel.Text = "Chat"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label5.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.label5.Location = new System.Drawing.Point(686, 219); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(148, 18); + this.label5.TabIndex = 43; + this.label5.Text = "Game Messages:"; + this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.label4.Location = new System.Drawing.Point(516, 219); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(136, 18); + this.label4.TabIndex = 42; + this.label4.Text = "Developer Info:"; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.label3.Location = new System.Drawing.Point(686, 61); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(135, 18); + this.label3.TabIndex = 41; + this.label3.Text = "Administration:"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.label2.Location = new System.Drawing.Point(516, 61); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(153, 18); + this.label2.TabIndex = 40; + this.label2.Text = "Server Watchdog:"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // IRCModesComboBox + // + this.IRCModesComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.IRCModesComboBox.FormattingEnabled = true; + this.IRCModesComboBox.Items.AddRange(new object[] { "Voice - +", "Halfop - %", "Op - @", "Owner - ~"}); - this.IRCModesComboBox.Location = new System.Drawing.Point(369, 170); - this.IRCModesComboBox.Name = "IRCModesComboBox"; - this.IRCModesComboBox.Size = new System.Drawing.Size(141, 21); - this.IRCModesComboBox.TabIndex = 38; - this.IRCModesComboBox.Visible = false; - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.label1.Location = new System.Drawing.Point(30, 174); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(110, 18); - this.label1.TabIndex = 39; - this.label1.Text = "Admin Auth:"; - this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // AdminChannelsTextbox - // - this.AdminChannelsTextbox.Location = new System.Drawing.Point(689, 82); - this.AdminChannelsTextbox.Multiline = true; - this.AdminChannelsTextbox.Name = "AdminChannelsTextbox"; - this.AdminChannelsTextbox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; - this.AdminChannelsTextbox.Size = new System.Drawing.Size(167, 120); - this.AdminChannelsTextbox.TabIndex = 37; - // - // WDChannelsTextbox - // - this.WDChannelsTextbox.Location = new System.Drawing.Point(516, 82); - this.WDChannelsTextbox.Multiline = true; - this.WDChannelsTextbox.Name = "WDChannelsTextbox"; - this.WDChannelsTextbox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; - this.WDChannelsTextbox.Size = new System.Drawing.Size(167, 120); - this.WDChannelsTextbox.TabIndex = 36; - // - // GameChannelsTextbox - // - this.GameChannelsTextbox.Location = new System.Drawing.Point(689, 240); - this.GameChannelsTextbox.Multiline = true; - this.GameChannelsTextbox.Name = "GameChannelsTextbox"; - this.GameChannelsTextbox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; - this.GameChannelsTextbox.Size = new System.Drawing.Size(167, 120); - this.GameChannelsTextbox.TabIndex = 35; - // - // DevChannelsTextbox - // - this.DevChannelsTextbox.Location = new System.Drawing.Point(516, 240); - this.DevChannelsTextbox.Multiline = true; - this.DevChannelsTextbox.Name = "DevChannelsTextbox"; - this.DevChannelsTextbox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; - this.DevChannelsTextbox.Size = new System.Drawing.Size(167, 120); - this.DevChannelsTextbox.TabIndex = 34; - // - // ChatRefreshButton - // - this.ChatRefreshButton.Location = new System.Drawing.Point(174, 335); - this.ChatRefreshButton.Name = "ChatRefreshButton"; - this.ChatRefreshButton.Size = new System.Drawing.Size(112, 25); - this.ChatRefreshButton.TabIndex = 32; - this.ChatRefreshButton.Text = "Refresh"; - this.ChatRefreshButton.UseVisualStyleBackColor = true; - this.ChatRefreshButton.Click += new System.EventHandler(this.ChatRefreshButton_Click); - // - // ChatNicknameText - // - this.ChatNicknameText.Location = new System.Drawing.Point(174, 251); - this.ChatNicknameText.Name = "ChatNicknameText"; - this.ChatNicknameText.Size = new System.Drawing.Size(151, 20); - this.ChatNicknameText.TabIndex = 31; - // - // ChatNicknameTitle - // - this.ChatNicknameTitle.AutoSize = true; - this.ChatNicknameTitle.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.ChatNicknameTitle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.ChatNicknameTitle.Location = new System.Drawing.Point(30, 250); - this.ChatNicknameTitle.Name = "ChatNicknameTitle"; - this.ChatNicknameTitle.Size = new System.Drawing.Size(94, 18); - this.ChatNicknameTitle.TabIndex = 30; - this.ChatNicknameTitle.Text = "Nickname:"; - this.ChatNicknameTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // ChatPortSelector - // - this.ChatPortSelector.Location = new System.Drawing.Point(174, 225); - this.ChatPortSelector.Maximum = new decimal(new int[] { + this.IRCModesComboBox.Location = new System.Drawing.Point(369, 170); + this.IRCModesComboBox.Name = "IRCModesComboBox"; + this.IRCModesComboBox.Size = new System.Drawing.Size(141, 21); + this.IRCModesComboBox.TabIndex = 38; + this.IRCModesComboBox.Visible = false; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.label1.Location = new System.Drawing.Point(30, 174); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(110, 18); + this.label1.TabIndex = 39; + this.label1.Text = "Admin Auth:"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // AdminChannelsTextbox + // + this.AdminChannelsTextbox.Location = new System.Drawing.Point(689, 82); + this.AdminChannelsTextbox.Multiline = true; + this.AdminChannelsTextbox.Name = "AdminChannelsTextbox"; + this.AdminChannelsTextbox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; + this.AdminChannelsTextbox.Size = new System.Drawing.Size(167, 120); + this.AdminChannelsTextbox.TabIndex = 37; + // + // WDChannelsTextbox + // + this.WDChannelsTextbox.Location = new System.Drawing.Point(516, 82); + this.WDChannelsTextbox.Multiline = true; + this.WDChannelsTextbox.Name = "WDChannelsTextbox"; + this.WDChannelsTextbox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; + this.WDChannelsTextbox.Size = new System.Drawing.Size(167, 120); + this.WDChannelsTextbox.TabIndex = 36; + // + // GameChannelsTextbox + // + this.GameChannelsTextbox.Location = new System.Drawing.Point(689, 240); + this.GameChannelsTextbox.Multiline = true; + this.GameChannelsTextbox.Name = "GameChannelsTextbox"; + this.GameChannelsTextbox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; + this.GameChannelsTextbox.Size = new System.Drawing.Size(167, 120); + this.GameChannelsTextbox.TabIndex = 35; + // + // DevChannelsTextbox + // + this.DevChannelsTextbox.Location = new System.Drawing.Point(516, 240); + this.DevChannelsTextbox.Multiline = true; + this.DevChannelsTextbox.Name = "DevChannelsTextbox"; + this.DevChannelsTextbox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; + this.DevChannelsTextbox.Size = new System.Drawing.Size(167, 120); + this.DevChannelsTextbox.TabIndex = 34; + // + // ChatNicknameText + // + this.ChatNicknameText.Location = new System.Drawing.Point(174, 251); + this.ChatNicknameText.Name = "ChatNicknameText"; + this.ChatNicknameText.Size = new System.Drawing.Size(151, 20); + this.ChatNicknameText.TabIndex = 31; + // + // ChatServerText + // + this.ChatServerText.Location = new System.Drawing.Point(174, 199); + this.ChatServerText.Name = "ChatServerText"; + this.ChatServerText.Size = new System.Drawing.Size(151, 20); + this.ChatServerText.TabIndex = 27; + // + // AuthField2 + // + this.AuthField2.Location = new System.Drawing.Point(174, 309); + this.AuthField2.Name = "AuthField2"; + this.AuthField2.Size = new System.Drawing.Size(151, 20); + this.AuthField2.TabIndex = 22; + // + // AuthField1 + // + this.AuthField1.Location = new System.Drawing.Point(174, 283); + this.AuthField1.Name = "AuthField1"; + this.AuthField1.Size = new System.Drawing.Size(151, 20); + this.AuthField1.TabIndex = 21; + // + // ChatAdminsTextBox + // + this.ChatAdminsTextBox.Location = new System.Drawing.Point(369, 49); + this.ChatAdminsTextBox.Multiline = true; + this.ChatAdminsTextBox.Name = "ChatAdminsTextBox"; + this.ChatAdminsTextBox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; + this.ChatAdminsTextBox.Size = new System.Drawing.Size(141, 311); + this.ChatAdminsTextBox.TabIndex = 10; + // + // ChatRefreshButton + // + this.ChatRefreshButton.Location = new System.Drawing.Point(174, 335); + this.ChatRefreshButton.Name = "ChatRefreshButton"; + this.ChatRefreshButton.Size = new System.Drawing.Size(112, 25); + this.ChatRefreshButton.TabIndex = 32; + this.ChatRefreshButton.Text = "Refresh"; + this.ChatRefreshButton.UseVisualStyleBackColor = true; + this.ChatRefreshButton.Click += new System.EventHandler(this.ChatRefreshButton_Click); + // + // ChatNicknameTitle + // + this.ChatNicknameTitle.AutoSize = true; + this.ChatNicknameTitle.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ChatNicknameTitle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.ChatNicknameTitle.Location = new System.Drawing.Point(30, 250); + this.ChatNicknameTitle.Name = "ChatNicknameTitle"; + this.ChatNicknameTitle.Size = new System.Drawing.Size(94, 18); + this.ChatNicknameTitle.TabIndex = 30; + this.ChatNicknameTitle.Text = "Nickname:"; + this.ChatNicknameTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // ChatPortSelector + // + this.ChatPortSelector.Location = new System.Drawing.Point(174, 225); + this.ChatPortSelector.Maximum = new decimal(new int[] { 65535, 0, 0, 0}); - this.ChatPortSelector.Minimum = new decimal(new int[] { + this.ChatPortSelector.Minimum = new decimal(new int[] { 1, 0, 0, 0}); - this.ChatPortSelector.Name = "ChatPortSelector"; - this.ChatPortSelector.Size = new System.Drawing.Size(151, 20); - this.ChatPortSelector.TabIndex = 29; - this.ChatPortSelector.Value = new decimal(new int[] { + this.ChatPortSelector.Name = "ChatPortSelector"; + this.ChatPortSelector.Size = new System.Drawing.Size(151, 20); + this.ChatPortSelector.TabIndex = 29; + this.ChatPortSelector.Value = new decimal(new int[] { 1, 0, 0, 0}); - // - // ChatPortTitle - // - this.ChatPortTitle.AutoSize = true; - this.ChatPortTitle.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.ChatPortTitle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.ChatPortTitle.Location = new System.Drawing.Point(30, 227); - this.ChatPortTitle.Name = "ChatPortTitle"; - this.ChatPortTitle.Size = new System.Drawing.Size(48, 18); - this.ChatPortTitle.TabIndex = 28; - this.ChatPortTitle.Text = "Port:"; - this.ChatPortTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // ChatServerText - // - this.ChatServerText.Location = new System.Drawing.Point(174, 199); - this.ChatServerText.Name = "ChatServerText"; - this.ChatServerText.Size = new System.Drawing.Size(151, 20); - this.ChatServerText.TabIndex = 27; - // - // ChatServerTitle - // - this.ChatServerTitle.AutoSize = true; - this.ChatServerTitle.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.ChatServerTitle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.ChatServerTitle.Location = new System.Drawing.Point(30, 201); - this.ChatServerTitle.Name = "ChatServerTitle"; - this.ChatServerTitle.Size = new System.Drawing.Size(66, 18); - this.ChatServerTitle.TabIndex = 26; - this.ChatServerTitle.Text = "Server:"; - this.ChatServerTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // ChatApplyButton - // - this.ChatApplyButton.Location = new System.Drawing.Point(56, 335); - this.ChatApplyButton.Name = "ChatApplyButton"; - this.ChatApplyButton.Size = new System.Drawing.Size(112, 25); - this.ChatApplyButton.TabIndex = 25; - this.ChatApplyButton.Text = "Apply"; - this.ChatApplyButton.UseVisualStyleBackColor = true; - this.ChatApplyButton.Click += new System.EventHandler(this.ChatApplyButton_Click); - // - // AuthField2Title - // - this.AuthField2Title.AutoSize = true; - this.AuthField2Title.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.AuthField2Title.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.AuthField2Title.Location = new System.Drawing.Point(30, 311); - this.AuthField2Title.Name = "AuthField2Title"; - this.AuthField2Title.Size = new System.Drawing.Size(45, 18); - this.AuthField2Title.TabIndex = 24; - this.AuthField2Title.Text = "AF2:"; - this.AuthField2Title.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // AuthField1Title - // - this.AuthField1Title.AutoSize = true; - this.AuthField1Title.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.AuthField1Title.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.AuthField1Title.Location = new System.Drawing.Point(30, 285); - this.AuthField1Title.Name = "AuthField1Title"; - this.AuthField1Title.Size = new System.Drawing.Size(45, 18); - this.AuthField1Title.TabIndex = 23; - this.AuthField1Title.Text = "AF1:"; - this.AuthField1Title.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // AuthField2 - // - this.AuthField2.Location = new System.Drawing.Point(174, 309); - this.AuthField2.Name = "AuthField2"; - this.AuthField2.Size = new System.Drawing.Size(151, 20); - this.AuthField2.TabIndex = 22; - // - // AuthField1 - // - this.AuthField1.Location = new System.Drawing.Point(174, 283); - this.AuthField1.Name = "AuthField1"; - this.AuthField1.Size = new System.Drawing.Size(151, 20); - this.AuthField1.TabIndex = 21; - // - // ChatReconnectButton - // - this.ChatReconnectButton.Enabled = false; - this.ChatReconnectButton.Location = new System.Drawing.Point(174, 141); - this.ChatReconnectButton.Name = "ChatReconnectButton"; - this.ChatReconnectButton.Size = new System.Drawing.Size(112, 25); - this.ChatReconnectButton.TabIndex = 18; - this.ChatReconnectButton.Text = "Reconnect"; - this.ChatReconnectButton.UseVisualStyleBackColor = true; - this.ChatReconnectButton.Click += new System.EventHandler(this.ChatReconnectButton_Click); - // - // ChatStatusLabel - // - this.ChatStatusLabel.AutoSize = true; - this.ChatStatusLabel.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.ChatStatusLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.ChatStatusLabel.Location = new System.Drawing.Point(171, 113); - this.ChatStatusLabel.Name = "ChatStatusLabel"; - this.ChatStatusLabel.Size = new System.Drawing.Size(82, 18); - this.ChatStatusLabel.TabIndex = 17; - this.ChatStatusLabel.Text = "Unknown"; - this.ChatStatusLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // ChatStatusTitle - // - this.ChatStatusTitle.AutoSize = true; - this.ChatStatusTitle.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.ChatStatusTitle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.ChatStatusTitle.Location = new System.Drawing.Point(30, 113); - this.ChatStatusTitle.Name = "ChatStatusTitle"; - this.ChatStatusTitle.Size = new System.Drawing.Size(112, 18); - this.ChatStatusTitle.TabIndex = 16; - this.ChatStatusTitle.Text = "Chat Status:"; - this.ChatStatusTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // ChatEnabledCheckbox - // - this.ChatEnabledCheckbox.AutoSize = true; - this.ChatEnabledCheckbox.Font = new System.Drawing.Font("Verdana", 12F); - this.ChatEnabledCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.ChatEnabledCheckbox.Location = new System.Drawing.Point(32, 142); - this.ChatEnabledCheckbox.Name = "ChatEnabledCheckbox"; - this.ChatEnabledCheckbox.Size = new System.Drawing.Size(136, 22); - this.ChatEnabledCheckbox.TabIndex = 15; - this.ChatEnabledCheckbox.Text = "Chat Enabled"; - this.ChatEnabledCheckbox.UseVisualStyleBackColor = true; - // - // ChatProviderSelectorPanel - // - this.ChatProviderSelectorPanel.Controls.Add(this.DiscordProviderSwitch); - this.ChatProviderSelectorPanel.Controls.Add(this.IRCProviderSwitch); - this.ChatProviderSelectorPanel.Location = new System.Drawing.Point(23, 49); - this.ChatProviderSelectorPanel.Name = "ChatProviderSelectorPanel"; - this.ChatProviderSelectorPanel.Size = new System.Drawing.Size(302, 50); - this.ChatProviderSelectorPanel.TabIndex = 14; - // - // DiscordProviderSwitch - // - this.DiscordProviderSwitch.AutoSize = true; - this.DiscordProviderSwitch.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.DiscordProviderSwitch.Location = new System.Drawing.Point(220, 17); - this.DiscordProviderSwitch.Name = "DiscordProviderSwitch"; - this.DiscordProviderSwitch.Size = new System.Drawing.Size(61, 17); - this.DiscordProviderSwitch.TabIndex = 13; - this.DiscordProviderSwitch.TabStop = true; - this.DiscordProviderSwitch.Text = "Discord"; - this.DiscordProviderSwitch.UseVisualStyleBackColor = true; - this.DiscordProviderSwitch.CheckedChanged += new System.EventHandler(this.DiscordProviderSwitch_CheckedChanged); - // - // IRCProviderSwitch - // - this.IRCProviderSwitch.AutoSize = true; - this.IRCProviderSwitch.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.IRCProviderSwitch.Location = new System.Drawing.Point(14, 17); - this.IRCProviderSwitch.Name = "IRCProviderSwitch"; - this.IRCProviderSwitch.Size = new System.Drawing.Size(116, 17); - this.IRCProviderSwitch.TabIndex = 12; - this.IRCProviderSwitch.TabStop = true; - this.IRCProviderSwitch.Text = "Internet Relay Chat"; - this.IRCProviderSwitch.UseVisualStyleBackColor = true; - this.IRCProviderSwitch.CheckedChanged += new System.EventHandler(this.IRCProviderSwitch_CheckedChanged); - // - // ChatProviderTitle - // - this.ChatProviderTitle.AutoSize = true; - this.ChatProviderTitle.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.ChatProviderTitle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.ChatProviderTitle.Location = new System.Drawing.Point(20, 15); - this.ChatProviderTitle.Name = "ChatProviderTitle"; - this.ChatProviderTitle.Size = new System.Drawing.Size(144, 18); - this.ChatProviderTitle.TabIndex = 13; - this.ChatProviderTitle.Text = "Editing Provider:"; - this.ChatProviderTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // ChannelsTitle - // - this.ChannelsTitle.AutoSize = true; - this.ChannelsTitle.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.ChannelsTitle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.ChannelsTitle.Location = new System.Drawing.Point(565, 15); - this.ChannelsTitle.Name = "ChannelsTitle"; - this.ChannelsTitle.Size = new System.Drawing.Size(234, 18); - this.ChannelsTitle.TabIndex = 11; - this.ChannelsTitle.Text = "Listen/Broadcast Channels:"; - this.ChannelsTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // ChatAdminsTextBox - // - this.ChatAdminsTextBox.Location = new System.Drawing.Point(369, 49); - this.ChatAdminsTextBox.Multiline = true; - this.ChatAdminsTextBox.Name = "ChatAdminsTextBox"; - this.ChatAdminsTextBox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; - this.ChatAdminsTextBox.Size = new System.Drawing.Size(141, 311); - this.ChatAdminsTextBox.TabIndex = 10; - // - // ChatAdminsTitle - // - this.ChatAdminsTitle.AutoSize = true; - this.ChatAdminsTitle.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.ChatAdminsTitle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.ChatAdminsTitle.Location = new System.Drawing.Point(366, 15); - this.ChatAdminsTitle.Name = "ChatAdminsTitle"; - this.ChatAdminsTitle.Size = new System.Drawing.Size(75, 18); - this.ChatAdminsTitle.TabIndex = 9; - this.ChatAdminsTitle.Text = "Admins:"; - this.ChatAdminsTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // panel1 - // - this.panel1.Controls.Add(this.AdminModeSpecial); - this.panel1.Controls.Add(this.AdminModeNormal); - this.panel1.Location = new System.Drawing.Point(174, 168); - this.panel1.Name = "panel1"; - this.panel1.Size = new System.Drawing.Size(202, 25); - this.panel1.TabIndex = 15; - // - // AdminModeSpecial - // - this.AdminModeSpecial.AutoSize = true; - this.AdminModeSpecial.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.AdminModeSpecial.Location = new System.Drawing.Point(87, 8); - this.AdminModeSpecial.Name = "AdminModeSpecial"; - this.AdminModeSpecial.Size = new System.Drawing.Size(94, 17); - this.AdminModeSpecial.TabIndex = 13; - this.AdminModeSpecial.TabStop = true; - this.AdminModeSpecial.Text = "Channel Mode"; - this.AdminModeSpecial.UseVisualStyleBackColor = true; - // - // AdminModeNormal - // - this.AdminModeNormal.AutoSize = true; - this.AdminModeNormal.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.AdminModeNormal.Location = new System.Drawing.Point(3, 8); - this.AdminModeNormal.Name = "AdminModeNormal"; - this.AdminModeNormal.Size = new System.Drawing.Size(78, 17); - this.AdminModeNormal.TabIndex = 12; - this.AdminModeNormal.TabStop = true; - this.AdminModeNormal.Text = "Nicknames"; - this.AdminModeNormal.UseVisualStyleBackColor = true; - this.AdminModeNormal.CheckedChanged += new System.EventHandler(this.AdminModeNormal_CheckedChanged); - // - // ConfigPanel - // - this.ConfigPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(39)))), ((int)(((byte)(40)))), ((int)(((byte)(34))))); - this.ConfigPanel.Controls.Add(this.ConfigApply); - this.ConfigPanel.Controls.Add(this.ConfigDownloadRepo); - this.ConfigPanel.Controls.Add(this.ConfigUpload); - this.ConfigPanel.Controls.Add(this.ConfigDownload); - this.ConfigPanel.Controls.Add(this.ConfigRefresh); - this.ConfigPanel.Controls.Add(this.ConfigPanels); - this.ConfigPanel.Controls.Add(this.ConfigDisabledLabel); - this.ConfigPanel.Location = new System.Drawing.Point(4, 22); - this.ConfigPanel.Name = "ConfigPanel"; - this.ConfigPanel.Padding = new System.Windows.Forms.Padding(3); - this.ConfigPanel.Size = new System.Drawing.Size(868, 366); - this.ConfigPanel.TabIndex = 5; - this.ConfigPanel.Text = "Config"; - // - // ConfigApply - // - this.ConfigApply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.ConfigApply.Location = new System.Drawing.Point(782, 26); - this.ConfigApply.Name = "ConfigApply"; - this.ConfigApply.Size = new System.Drawing.Size(63, 22); - this.ConfigApply.TabIndex = 4; - this.ConfigApply.Text = "Apply"; - this.ConfigApply.UseVisualStyleBackColor = true; - this.ConfigApply.Click += new System.EventHandler(this.ConfigApply_Click); - // - // ConfigDownloadRepo - // - this.ConfigDownloadRepo.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.ConfigDownloadRepo.Location = new System.Drawing.Point(782, 110); - this.ConfigDownloadRepo.Name = "ConfigDownloadRepo"; - this.ConfigDownloadRepo.Size = new System.Drawing.Size(63, 22); - this.ConfigDownloadRepo.TabIndex = 8; - this.ConfigDownloadRepo.Text = "DL Repo"; - this.ConfigDownloadRepo.UseVisualStyleBackColor = true; - this.ConfigDownloadRepo.Click += new System.EventHandler(this.ConfigDownloadRepo_Click); - // - // ConfigUpload - // - this.ConfigUpload.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.ConfigUpload.Location = new System.Drawing.Point(782, 138); - this.ConfigUpload.Name = "ConfigUpload"; - this.ConfigUpload.Size = new System.Drawing.Size(63, 22); - this.ConfigUpload.TabIndex = 7; - this.ConfigUpload.Text = "Upload"; - this.ConfigUpload.UseVisualStyleBackColor = true; - this.ConfigUpload.Click += new System.EventHandler(this.ConfigUpload_Click); - // - // ConfigDownload - // - this.ConfigDownload.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.ConfigDownload.Location = new System.Drawing.Point(782, 82); - this.ConfigDownload.Name = "ConfigDownload"; - this.ConfigDownload.Size = new System.Drawing.Size(63, 22); - this.ConfigDownload.TabIndex = 6; - this.ConfigDownload.Text = "Download"; - this.ConfigDownload.UseVisualStyleBackColor = true; - this.ConfigDownload.Click += new System.EventHandler(this.ConfigDownload_Click); - // - // ConfigRefresh - // - this.ConfigRefresh.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.ConfigRefresh.Location = new System.Drawing.Point(782, 54); - this.ConfigRefresh.Name = "ConfigRefresh"; - this.ConfigRefresh.Size = new System.Drawing.Size(63, 22); - this.ConfigRefresh.TabIndex = 5; - this.ConfigRefresh.Text = "Refresh"; - this.ConfigRefresh.UseVisualStyleBackColor = true; - this.ConfigRefresh.Click += new System.EventHandler(this.ConfigRefresh_Click); - // - // ConfigPanels - // - this.ConfigPanels.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + // + // ChatPortTitle + // + this.ChatPortTitle.AutoSize = true; + this.ChatPortTitle.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ChatPortTitle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.ChatPortTitle.Location = new System.Drawing.Point(30, 227); + this.ChatPortTitle.Name = "ChatPortTitle"; + this.ChatPortTitle.Size = new System.Drawing.Size(48, 18); + this.ChatPortTitle.TabIndex = 28; + this.ChatPortTitle.Text = "Port:"; + this.ChatPortTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // ChatServerTitle + // + this.ChatServerTitle.AutoSize = true; + this.ChatServerTitle.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ChatServerTitle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.ChatServerTitle.Location = new System.Drawing.Point(30, 201); + this.ChatServerTitle.Name = "ChatServerTitle"; + this.ChatServerTitle.Size = new System.Drawing.Size(66, 18); + this.ChatServerTitle.TabIndex = 26; + this.ChatServerTitle.Text = "Server:"; + this.ChatServerTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // ChatApplyButton + // + this.ChatApplyButton.Location = new System.Drawing.Point(56, 335); + this.ChatApplyButton.Name = "ChatApplyButton"; + this.ChatApplyButton.Size = new System.Drawing.Size(112, 25); + this.ChatApplyButton.TabIndex = 25; + this.ChatApplyButton.Text = "Apply"; + this.ChatApplyButton.UseVisualStyleBackColor = true; + this.ChatApplyButton.Click += new System.EventHandler(this.ChatApplyButton_Click); + // + // AuthField2Title + // + this.AuthField2Title.AutoSize = true; + this.AuthField2Title.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.AuthField2Title.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.AuthField2Title.Location = new System.Drawing.Point(30, 311); + this.AuthField2Title.Name = "AuthField2Title"; + this.AuthField2Title.Size = new System.Drawing.Size(45, 18); + this.AuthField2Title.TabIndex = 24; + this.AuthField2Title.Text = "AF2:"; + this.AuthField2Title.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // AuthField1Title + // + this.AuthField1Title.AutoSize = true; + this.AuthField1Title.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.AuthField1Title.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.AuthField1Title.Location = new System.Drawing.Point(30, 285); + this.AuthField1Title.Name = "AuthField1Title"; + this.AuthField1Title.Size = new System.Drawing.Size(45, 18); + this.AuthField1Title.TabIndex = 23; + this.AuthField1Title.Text = "AF1:"; + this.AuthField1Title.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // ChatReconnectButton + // + this.ChatReconnectButton.Enabled = false; + this.ChatReconnectButton.Location = new System.Drawing.Point(174, 141); + this.ChatReconnectButton.Name = "ChatReconnectButton"; + this.ChatReconnectButton.Size = new System.Drawing.Size(112, 25); + this.ChatReconnectButton.TabIndex = 18; + this.ChatReconnectButton.Text = "Reconnect"; + this.ChatReconnectButton.UseVisualStyleBackColor = true; + this.ChatReconnectButton.Click += new System.EventHandler(this.ChatReconnectButton_Click); + // + // ChatStatusLabel + // + this.ChatStatusLabel.AutoSize = true; + this.ChatStatusLabel.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ChatStatusLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.ChatStatusLabel.Location = new System.Drawing.Point(171, 113); + this.ChatStatusLabel.Name = "ChatStatusLabel"; + this.ChatStatusLabel.Size = new System.Drawing.Size(82, 18); + this.ChatStatusLabel.TabIndex = 17; + this.ChatStatusLabel.Text = "Unknown"; + this.ChatStatusLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // ChatStatusTitle + // + this.ChatStatusTitle.AutoSize = true; + this.ChatStatusTitle.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ChatStatusTitle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.ChatStatusTitle.Location = new System.Drawing.Point(30, 113); + this.ChatStatusTitle.Name = "ChatStatusTitle"; + this.ChatStatusTitle.Size = new System.Drawing.Size(112, 18); + this.ChatStatusTitle.TabIndex = 16; + this.ChatStatusTitle.Text = "Chat Status:"; + this.ChatStatusTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // ChatEnabledCheckbox + // + this.ChatEnabledCheckbox.AutoSize = true; + this.ChatEnabledCheckbox.Font = new System.Drawing.Font("Verdana", 12F); + this.ChatEnabledCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.ChatEnabledCheckbox.Location = new System.Drawing.Point(32, 142); + this.ChatEnabledCheckbox.Name = "ChatEnabledCheckbox"; + this.ChatEnabledCheckbox.Size = new System.Drawing.Size(136, 22); + this.ChatEnabledCheckbox.TabIndex = 15; + this.ChatEnabledCheckbox.Text = "Chat Enabled"; + this.ChatEnabledCheckbox.UseVisualStyleBackColor = true; + // + // ChatProviderSelectorPanel + // + this.ChatProviderSelectorPanel.Controls.Add(this.DiscordProviderSwitch); + this.ChatProviderSelectorPanel.Controls.Add(this.IRCProviderSwitch); + this.ChatProviderSelectorPanel.Location = new System.Drawing.Point(23, 49); + this.ChatProviderSelectorPanel.Name = "ChatProviderSelectorPanel"; + this.ChatProviderSelectorPanel.Size = new System.Drawing.Size(302, 50); + this.ChatProviderSelectorPanel.TabIndex = 14; + // + // DiscordProviderSwitch + // + this.DiscordProviderSwitch.AutoSize = true; + this.DiscordProviderSwitch.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.DiscordProviderSwitch.Location = new System.Drawing.Point(220, 17); + this.DiscordProviderSwitch.Name = "DiscordProviderSwitch"; + this.DiscordProviderSwitch.Size = new System.Drawing.Size(61, 17); + this.DiscordProviderSwitch.TabIndex = 13; + this.DiscordProviderSwitch.TabStop = true; + this.DiscordProviderSwitch.Text = "Discord"; + this.DiscordProviderSwitch.UseVisualStyleBackColor = true; + this.DiscordProviderSwitch.CheckedChanged += new System.EventHandler(this.DiscordProviderSwitch_CheckedChanged); + // + // IRCProviderSwitch + // + this.IRCProviderSwitch.AutoSize = true; + this.IRCProviderSwitch.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.IRCProviderSwitch.Location = new System.Drawing.Point(14, 17); + this.IRCProviderSwitch.Name = "IRCProviderSwitch"; + this.IRCProviderSwitch.Size = new System.Drawing.Size(116, 17); + this.IRCProviderSwitch.TabIndex = 12; + this.IRCProviderSwitch.TabStop = true; + this.IRCProviderSwitch.Text = "Internet Relay Chat"; + this.IRCProviderSwitch.UseVisualStyleBackColor = true; + this.IRCProviderSwitch.CheckedChanged += new System.EventHandler(this.IRCProviderSwitch_CheckedChanged); + // + // ChatProviderTitle + // + this.ChatProviderTitle.AutoSize = true; + this.ChatProviderTitle.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ChatProviderTitle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.ChatProviderTitle.Location = new System.Drawing.Point(20, 15); + this.ChatProviderTitle.Name = "ChatProviderTitle"; + this.ChatProviderTitle.Size = new System.Drawing.Size(144, 18); + this.ChatProviderTitle.TabIndex = 13; + this.ChatProviderTitle.Text = "Editing Provider:"; + this.ChatProviderTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // ChannelsTitle + // + this.ChannelsTitle.AutoSize = true; + this.ChannelsTitle.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ChannelsTitle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.ChannelsTitle.Location = new System.Drawing.Point(565, 15); + this.ChannelsTitle.Name = "ChannelsTitle"; + this.ChannelsTitle.Size = new System.Drawing.Size(234, 18); + this.ChannelsTitle.TabIndex = 11; + this.ChannelsTitle.Text = "Listen/Broadcast Channels:"; + this.ChannelsTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // ChatAdminsTitle + // + this.ChatAdminsTitle.AutoSize = true; + this.ChatAdminsTitle.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ChatAdminsTitle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.ChatAdminsTitle.Location = new System.Drawing.Point(366, 15); + this.ChatAdminsTitle.Name = "ChatAdminsTitle"; + this.ChatAdminsTitle.Size = new System.Drawing.Size(75, 18); + this.ChatAdminsTitle.TabIndex = 9; + this.ChatAdminsTitle.Text = "Admins:"; + this.ChatAdminsTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel1 + // + this.panel1.Controls.Add(this.AdminModeSpecial); + this.panel1.Controls.Add(this.AdminModeNormal); + this.panel1.Location = new System.Drawing.Point(174, 168); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(202, 25); + this.panel1.TabIndex = 15; + // + // AdminModeSpecial + // + this.AdminModeSpecial.AutoSize = true; + this.AdminModeSpecial.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.AdminModeSpecial.Location = new System.Drawing.Point(87, 8); + this.AdminModeSpecial.Name = "AdminModeSpecial"; + this.AdminModeSpecial.Size = new System.Drawing.Size(94, 17); + this.AdminModeSpecial.TabIndex = 13; + this.AdminModeSpecial.TabStop = true; + this.AdminModeSpecial.Text = "Channel Mode"; + this.AdminModeSpecial.UseVisualStyleBackColor = true; + // + // AdminModeNormal + // + this.AdminModeNormal.AutoSize = true; + this.AdminModeNormal.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.AdminModeNormal.Location = new System.Drawing.Point(3, 8); + this.AdminModeNormal.Name = "AdminModeNormal"; + this.AdminModeNormal.Size = new System.Drawing.Size(78, 17); + this.AdminModeNormal.TabIndex = 12; + this.AdminModeNormal.TabStop = true; + this.AdminModeNormal.Text = "Nicknames"; + this.AdminModeNormal.UseVisualStyleBackColor = true; + this.AdminModeNormal.CheckedChanged += new System.EventHandler(this.AdminModeNormal_CheckedChanged); + // + // ServerPanel + // + this.ServerPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(39)))), ((int)(((byte)(40)))), ((int)(((byte)(34))))); + this.ServerPanel.Controls.Add(this.AutostartCheckbox); + this.ServerPanel.Controls.Add(this.WebclientCheckBox); + this.ServerPanel.Controls.Add(this.WorldAnnounceButton); + this.ServerPanel.Controls.Add(this.WorldAnnounceField); + this.ServerPanel.Controls.Add(this.ServerPathTextbox); + this.ServerPanel.Controls.Add(this.projectNameText); + this.ServerPanel.Controls.Add(this.WorldAnnounceLabel); + this.ServerPanel.Controls.Add(this.SecuritySelector); + this.ServerPanel.Controls.Add(this.SecurityTitle); + this.ServerPanel.Controls.Add(this.ResetTestmerge); + this.ServerPanel.Controls.Add(this.ServerPathLabel); + this.ServerPanel.Controls.Add(this.CompileCancelButton); + this.ServerPanel.Controls.Add(this.ProjectPathLabel); + this.ServerPanel.Controls.Add(this.PortLabel); + this.ServerPanel.Controls.Add(this.PortSelector); + this.ServerPanel.Controls.Add(this.ServerPRLabel); + this.ServerPanel.Controls.Add(this.ServerTestmergeInput); + this.ServerPanel.Controls.Add(this.TestmergeButton); + this.ServerPanel.Controls.Add(this.UpdateTestmergeButton); + this.ServerPanel.Controls.Add(this.UpdateMergeButton); + this.ServerPanel.Controls.Add(this.UpdateHardButton); + this.ServerPanel.Controls.Add(this.ServerGRestartButton); + this.ServerPanel.Controls.Add(this.ServerGStopButton); + this.ServerPanel.Controls.Add(this.ServerRestartButton); + this.ServerPanel.Controls.Add(this.ServerStopButton); + this.ServerPanel.Controls.Add(this.ServerStartButton); + this.ServerPanel.Controls.Add(this.CompilerStatusLabel); + this.ServerPanel.Controls.Add(this.CompilerLabel); + this.ServerPanel.Controls.Add(this.compileButton); + this.ServerPanel.Controls.Add(this.initializeButton); + this.ServerPanel.Controls.Add(this.compilerProgressBar); + this.ServerPanel.Controls.Add(this.ServerStatusLabel); + this.ServerPanel.Controls.Add(this.ServerStatusTitle); + this.ServerPanel.Location = new System.Drawing.Point(4, 22); + this.ServerPanel.Name = "ServerPanel"; + this.ServerPanel.Padding = new System.Windows.Forms.Padding(3); + this.ServerPanel.Size = new System.Drawing.Size(868, 366); + this.ServerPanel.TabIndex = 2; + this.ServerPanel.Text = "Server"; + // + // AutostartCheckbox + // + this.AutostartCheckbox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.AutostartCheckbox.AutoSize = true; + this.AutostartCheckbox.Font = new System.Drawing.Font("Verdana", 12F); + this.AutostartCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.AutostartCheckbox.Location = new System.Drawing.Point(754, 16); + this.AutostartCheckbox.Name = "AutostartCheckbox"; + this.AutostartCheckbox.Size = new System.Drawing.Size(104, 22); + this.AutostartCheckbox.TabIndex = 15; + this.AutostartCheckbox.Text = "Autostart"; + this.AutostartCheckbox.UseVisualStyleBackColor = true; + this.AutostartCheckbox.CheckedChanged += new System.EventHandler(this.AutostartCheckbox_CheckedChanged); + // + // WebclientCheckBox + // + this.WebclientCheckBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.WebclientCheckBox.AutoSize = true; + this.WebclientCheckBox.Font = new System.Drawing.Font("Verdana", 12F); + this.WebclientCheckBox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.WebclientCheckBox.Location = new System.Drawing.Point(754, 57); + this.WebclientCheckBox.Name = "WebclientCheckBox"; + this.WebclientCheckBox.Size = new System.Drawing.Size(108, 22); + this.WebclientCheckBox.TabIndex = 42; + this.WebclientCheckBox.Text = "Webclient"; + this.WebclientCheckBox.UseVisualStyleBackColor = true; + this.WebclientCheckBox.CheckedChanged += new System.EventHandler(this.WebclientCheckBox_CheckedChanged); + // + // WorldAnnounceButton + // + this.WorldAnnounceButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.WorldAnnounceButton.Location = new System.Drawing.Point(785, 136); + this.WorldAnnounceButton.Name = "WorldAnnounceButton"; + this.WorldAnnounceButton.Size = new System.Drawing.Size(77, 20); + this.WorldAnnounceButton.TabIndex = 41; + this.WorldAnnounceButton.Text = "Send"; + this.WorldAnnounceButton.UseVisualStyleBackColor = true; + this.WorldAnnounceButton.Click += new System.EventHandler(this.WorldAnnounceButton_Click); + // + // WorldAnnounceField + // + this.WorldAnnounceField.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.WorldAnnounceField.Location = new System.Drawing.Point(566, 136); + this.WorldAnnounceField.Name = "WorldAnnounceField"; + this.WorldAnnounceField.Size = new System.Drawing.Size(213, 20); + this.WorldAnnounceField.TabIndex = 40; + // + // ServerPathTextbox + // + this.ServerPathTextbox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.ServerPathTextbox.Location = new System.Drawing.Point(136, 163); + this.ServerPathTextbox.Name = "ServerPathTextbox"; + this.ServerPathTextbox.Size = new System.Drawing.Size(296, 20); + this.ServerPathTextbox.TabIndex = 32; + // + // projectNameText + // + this.projectNameText.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.projectNameText.Location = new System.Drawing.Point(566, 163); + this.projectNameText.Name = "projectNameText"; + this.projectNameText.Size = new System.Drawing.Size(296, 20); + this.projectNameText.TabIndex = 29; + // + // WorldAnnounceLabel + // + this.WorldAnnounceLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.WorldAnnounceLabel.AutoSize = true; + this.WorldAnnounceLabel.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.WorldAnnounceLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.WorldAnnounceLabel.Location = new System.Drawing.Point(466, 139); + this.WorldAnnounceLabel.Name = "WorldAnnounceLabel"; + this.WorldAnnounceLabel.Size = new System.Drawing.Size(94, 18); + this.WorldAnnounceLabel.TabIndex = 39; + this.WorldAnnounceLabel.Text = "Announce:"; + this.WorldAnnounceLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // SecuritySelector + // + this.SecuritySelector.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.SecuritySelector.FormattingEnabled = true; + this.SecuritySelector.Items.AddRange(new object[] { + "Trusted", + "Safe", + "Ultrasafe"}); + this.SecuritySelector.Location = new System.Drawing.Point(136, 136); + this.SecuritySelector.Name = "SecuritySelector"; + this.SecuritySelector.Size = new System.Drawing.Size(121, 21); + this.SecuritySelector.TabIndex = 38; + this.SecuritySelector.SelectedIndexChanged += new System.EventHandler(this.SecuritySelector_SelectedIndexChanged); + // + // SecurityTitle + // + this.SecurityTitle.AutoSize = true; + this.SecurityTitle.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.SecurityTitle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.SecurityTitle.Location = new System.Drawing.Point(44, 139); + this.SecurityTitle.Name = "SecurityTitle"; + this.SecurityTitle.Size = new System.Drawing.Size(80, 18); + this.SecurityTitle.TabIndex = 37; + this.SecurityTitle.Text = "Security:"; + this.SecurityTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // ResetTestmerge + // + this.ResetTestmerge.Anchor = System.Windows.Forms.AnchorStyles.Top; + this.ResetTestmerge.Location = new System.Drawing.Point(602, 95); + this.ResetTestmerge.Name = "ResetTestmerge"; + this.ResetTestmerge.Size = new System.Drawing.Size(142, 28); + this.ResetTestmerge.TabIndex = 36; + this.ResetTestmerge.Text = "Reset and Recompile"; + this.ResetTestmerge.UseVisualStyleBackColor = true; + this.ResetTestmerge.Click += new System.EventHandler(this.ResetTestmerge_Click); + // + // ServerPathLabel + // + this.ServerPathLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.ServerPathLabel.AutoSize = true; + this.ServerPathLabel.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ServerPathLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.ServerPathLabel.Location = new System.Drawing.Point(15, 165); + this.ServerPathLabel.Name = "ServerPathLabel"; + this.ServerPathLabel.Size = new System.Drawing.Size(109, 18); + this.ServerPathLabel.TabIndex = 33; + this.ServerPathLabel.Text = "Server Path:"; + this.ServerPathLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // CompileCancelButton + // + this.CompileCancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.CompileCancelButton.Enabled = false; + this.CompileCancelButton.Location = new System.Drawing.Point(737, 302); + this.CompileCancelButton.Name = "CompileCancelButton"; + this.CompileCancelButton.Size = new System.Drawing.Size(69, 31); + this.CompileCancelButton.TabIndex = 31; + this.CompileCancelButton.Text = "Cancel"; + this.CompileCancelButton.UseVisualStyleBackColor = true; + this.CompileCancelButton.Click += new System.EventHandler(this.CompileCancelButton_Click); + // + // ProjectPathLabel + // + this.ProjectPathLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.ProjectPathLabel.AutoSize = true; + this.ProjectPathLabel.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ProjectPathLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.ProjectPathLabel.Location = new System.Drawing.Point(445, 165); + this.ProjectPathLabel.Name = "ProjectPathLabel"; + this.ProjectPathLabel.Size = new System.Drawing.Size(115, 18); + this.ProjectPathLabel.TabIndex = 30; + this.ProjectPathLabel.Text = "Project Path:"; + this.ProjectPathLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // PortLabel + // + this.PortLabel.AutoSize = true; + this.PortLabel.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.PortLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.PortLabel.Location = new System.Drawing.Point(4, 60); + this.PortLabel.Name = "PortLabel"; + this.PortLabel.Size = new System.Drawing.Size(48, 18); + this.PortLabel.TabIndex = 28; + this.PortLabel.Text = "Port:"; + this.PortLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // PortSelector + // + this.PortSelector.Location = new System.Drawing.Point(59, 60); + this.PortSelector.Maximum = new decimal(new int[] { + 65535, + 0, + 0, + 0}); + this.PortSelector.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.PortSelector.Name = "PortSelector"; + this.PortSelector.Size = new System.Drawing.Size(60, 20); + this.PortSelector.TabIndex = 27; + this.PortSelector.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.PortSelector.ValueChanged += new System.EventHandler(this.PortSelector_ValueChanged); + // + // ServerPRLabel + // + this.ServerPRLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.ServerPRLabel.AutoSize = true; + this.ServerPRLabel.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ServerPRLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.ServerPRLabel.Location = new System.Drawing.Point(745, 101); + this.ServerPRLabel.Name = "ServerPRLabel"; + this.ServerPRLabel.Size = new System.Drawing.Size(49, 18); + this.ServerPRLabel.TabIndex = 26; + this.ServerPRLabel.Text = "PR#:"; + this.ServerPRLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // ServerTestmergeInput + // + this.ServerTestmergeInput.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.ServerTestmergeInput.Location = new System.Drawing.Point(806, 99); + this.ServerTestmergeInput.Maximum = new decimal(new int[] { + 1000000, + 0, + 0, + 0}); + this.ServerTestmergeInput.Name = "ServerTestmergeInput"; + this.ServerTestmergeInput.Size = new System.Drawing.Size(62, 20); + this.ServerTestmergeInput.TabIndex = 25; + // + // TestmergeButton + // + this.TestmergeButton.Anchor = System.Windows.Forms.AnchorStyles.Top; + this.TestmergeButton.Location = new System.Drawing.Point(454, 95); + this.TestmergeButton.Name = "TestmergeButton"; + this.TestmergeButton.Size = new System.Drawing.Size(142, 28); + this.TestmergeButton.TabIndex = 24; + this.TestmergeButton.Text = "Testmerge"; + this.TestmergeButton.UseVisualStyleBackColor = true; + this.TestmergeButton.Click += new System.EventHandler(this.TestmergeButton_Click); + // + // UpdateTestmergeButton + // + this.UpdateTestmergeButton.Anchor = System.Windows.Forms.AnchorStyles.Top; + this.UpdateTestmergeButton.Location = new System.Drawing.Point(306, 95); + this.UpdateTestmergeButton.Name = "UpdateTestmergeButton"; + this.UpdateTestmergeButton.Size = new System.Drawing.Size(142, 28); + this.UpdateTestmergeButton.TabIndex = 23; + this.UpdateTestmergeButton.Text = "Update and Testmerge"; + this.UpdateTestmergeButton.UseVisualStyleBackColor = true; + this.UpdateTestmergeButton.Click += new System.EventHandler(this.UpdateTestmergeButton_Click); + // + // UpdateMergeButton + // + this.UpdateMergeButton.Anchor = System.Windows.Forms.AnchorStyles.Top; + this.UpdateMergeButton.Location = new System.Drawing.Point(158, 95); + this.UpdateMergeButton.Name = "UpdateMergeButton"; + this.UpdateMergeButton.Size = new System.Drawing.Size(142, 28); + this.UpdateMergeButton.TabIndex = 22; + this.UpdateMergeButton.Text = "Update (KeepTestmerge)"; + this.UpdateMergeButton.UseVisualStyleBackColor = true; + this.UpdateMergeButton.Click += new System.EventHandler(this.UpdateMergeButton_Click); + // + // UpdateHardButton + // + this.UpdateHardButton.Anchor = System.Windows.Forms.AnchorStyles.Top; + this.UpdateHardButton.Location = new System.Drawing.Point(7, 95); + this.UpdateHardButton.Name = "UpdateHardButton"; + this.UpdateHardButton.Size = new System.Drawing.Size(145, 28); + this.UpdateHardButton.TabIndex = 21; + this.UpdateHardButton.Text = "Update (Reset Testmerge)"; + this.UpdateHardButton.UseVisualStyleBackColor = true; + this.UpdateHardButton.Click += new System.EventHandler(this.UpdateHardButton_Click); + // + // ServerGRestartButton + // + this.ServerGRestartButton.Anchor = System.Windows.Forms.AnchorStyles.Top; + this.ServerGRestartButton.Location = new System.Drawing.Point(626, 54); + this.ServerGRestartButton.Name = "ServerGRestartButton"; + this.ServerGRestartButton.Size = new System.Drawing.Size(118, 28); + this.ServerGRestartButton.TabIndex = 20; + this.ServerGRestartButton.Text = "Graceful Restart"; + this.ServerGRestartButton.UseVisualStyleBackColor = true; + this.ServerGRestartButton.Click += new System.EventHandler(this.ServerGRestartButton_Click); + // + // ServerGStopButton + // + this.ServerGStopButton.Anchor = System.Windows.Forms.AnchorStyles.Top; + this.ServerGStopButton.Appearance = System.Windows.Forms.Appearance.Button; + this.ServerGStopButton.Location = new System.Drawing.Point(502, 54); + this.ServerGStopButton.Name = "ServerGStopButton"; + this.ServerGStopButton.Size = new System.Drawing.Size(118, 28); + this.ServerGStopButton.TabIndex = 19; + this.ServerGStopButton.Text = "Graceful Stop"; + this.ServerGStopButton.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.ServerGStopButton.UseVisualStyleBackColor = true; + this.ServerGStopButton.CheckedChanged += new System.EventHandler(this.ServerGStopButton_Checked); + // + // ServerRestartButton + // + this.ServerRestartButton.Anchor = System.Windows.Forms.AnchorStyles.Top; + this.ServerRestartButton.Location = new System.Drawing.Point(378, 54); + this.ServerRestartButton.Name = "ServerRestartButton"; + this.ServerRestartButton.Size = new System.Drawing.Size(118, 28); + this.ServerRestartButton.TabIndex = 18; + this.ServerRestartButton.Text = "Restart"; + this.ServerRestartButton.UseVisualStyleBackColor = true; + this.ServerRestartButton.Click += new System.EventHandler(this.ServerRestartButton_Click); + // + // ServerStopButton + // + this.ServerStopButton.Anchor = System.Windows.Forms.AnchorStyles.Top; + this.ServerStopButton.Location = new System.Drawing.Point(254, 54); + this.ServerStopButton.Name = "ServerStopButton"; + this.ServerStopButton.Size = new System.Drawing.Size(118, 28); + this.ServerStopButton.TabIndex = 17; + this.ServerStopButton.Text = "Stop"; + this.ServerStopButton.UseVisualStyleBackColor = true; + this.ServerStopButton.Click += new System.EventHandler(this.ServerStopButton_Click); + // + // ServerStartButton + // + this.ServerStartButton.Anchor = System.Windows.Forms.AnchorStyles.Top; + this.ServerStartButton.Location = new System.Drawing.Point(130, 54); + this.ServerStartButton.Name = "ServerStartButton"; + this.ServerStartButton.Size = new System.Drawing.Size(118, 28); + this.ServerStartButton.TabIndex = 16; + this.ServerStartButton.Text = "Start"; + this.ServerStartButton.UseVisualStyleBackColor = true; + this.ServerStartButton.Click += new System.EventHandler(this.ServerStartButton_Click); + // + // CompilerStatusLabel + // + this.CompilerStatusLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.CompilerStatusLabel.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.CompilerStatusLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.CompilerStatusLabel.Location = new System.Drawing.Point(110, 271); + this.CompilerStatusLabel.Name = "CompilerStatusLabel"; + this.CompilerStatusLabel.Size = new System.Drawing.Size(618, 28); + this.CompilerStatusLabel.TabIndex = 14; + this.CompilerStatusLabel.Text = "Idle"; + this.CompilerStatusLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // CompilerLabel + // + this.CompilerLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.CompilerLabel.AutoSize = true; + this.CompilerLabel.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.CompilerLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.CompilerLabel.Location = new System.Drawing.Point(379, 203); + this.CompilerLabel.Name = "CompilerLabel"; + this.CompilerLabel.Size = new System.Drawing.Size(80, 18); + this.CompilerLabel.TabIndex = 13; + this.CompilerLabel.Text = "Compiler"; + this.CompilerLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // compileButton + // + this.compileButton.Anchor = System.Windows.Forms.AnchorStyles.Bottom; + this.compileButton.Enabled = false; + this.compileButton.Location = new System.Drawing.Point(456, 240); + this.compileButton.Name = "compileButton"; + this.compileButton.Size = new System.Drawing.Size(159, 28); + this.compileButton.TabIndex = 12; + this.compileButton.Text = "Copy from Repo and Compile"; + this.compileButton.UseVisualStyleBackColor = true; + this.compileButton.Click += new System.EventHandler(this.CompileButton_Click); + // + // initializeButton + // + this.initializeButton.Anchor = System.Windows.Forms.AnchorStyles.Bottom; + this.initializeButton.Enabled = false; + this.initializeButton.Location = new System.Drawing.Point(219, 240); + this.initializeButton.Name = "initializeButton"; + this.initializeButton.Size = new System.Drawing.Size(159, 28); + this.initializeButton.TabIndex = 11; + this.initializeButton.Text = "Initialize Game Folders"; + this.initializeButton.UseVisualStyleBackColor = true; + this.initializeButton.Click += new System.EventHandler(this.InitializeButton_Click); + // + // compilerProgressBar + // + this.compilerProgressBar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.compilerProgressBar.Location = new System.Drawing.Point(110, 302); + this.compilerProgressBar.MarqueeAnimationSpeed = 50; + this.compilerProgressBar.Name = "compilerProgressBar"; + this.compilerProgressBar.Size = new System.Drawing.Size(618, 31); + this.compilerProgressBar.TabIndex = 10; + // + // ServerStatusLabel + // + this.ServerStatusLabel.AutoSize = true; + this.ServerStatusLabel.Font = new System.Drawing.Font("Verdana", 10F); + this.ServerStatusLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.ServerStatusLabel.Location = new System.Drawing.Point(136, 19); + this.ServerStatusLabel.Name = "ServerStatusLabel"; + this.ServerStatusLabel.Size = new System.Drawing.Size(73, 17); + this.ServerStatusLabel.TabIndex = 9; + this.ServerStatusLabel.Text = "Unknown"; + this.ServerStatusLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // ServerStatusTitle + // + this.ServerStatusTitle.AutoSize = true; + this.ServerStatusTitle.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ServerStatusTitle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.ServerStatusTitle.Location = new System.Drawing.Point(15, 17); + this.ServerStatusTitle.Name = "ServerStatusTitle"; + this.ServerStatusTitle.Size = new System.Drawing.Size(125, 18); + this.ServerStatusTitle.TabIndex = 8; + this.ServerStatusTitle.Text = "Server Status:"; + this.ServerStatusTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // BYONDPanel + // + this.BYONDPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(39)))), ((int)(((byte)(40)))), ((int)(((byte)(34))))); + this.BYONDPanel.Controls.Add(this.LatestVersionLabel); + this.BYONDPanel.Controls.Add(this.LatestVersionTitle); + this.BYONDPanel.Controls.Add(this.StagedVersionLabel); + this.BYONDPanel.Controls.Add(this.StagedVersionTitle); + this.BYONDPanel.Controls.Add(this.StatusLabel); + this.BYONDPanel.Controls.Add(this.VersionLabel); + this.BYONDPanel.Controls.Add(this.VersionTitle); + this.BYONDPanel.Controls.Add(this.MinorVersionLabel); + this.BYONDPanel.Controls.Add(this.MajorVersionLabel); + this.BYONDPanel.Controls.Add(this.UpdateButton); + this.BYONDPanel.Controls.Add(this.MinorVersionNumeric); + this.BYONDPanel.Controls.Add(this.MajorVersionNumeric); + this.BYONDPanel.Controls.Add(this.UpdateProgressBar); + this.BYONDPanel.Location = new System.Drawing.Point(4, 22); + this.BYONDPanel.Name = "BYONDPanel"; + this.BYONDPanel.Size = new System.Drawing.Size(868, 366); + this.BYONDPanel.TabIndex = 1; + this.BYONDPanel.Text = "BYOND"; + // + // LatestVersionLabel + // + this.LatestVersionLabel.AutoSize = true; + this.LatestVersionLabel.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.LatestVersionLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.LatestVersionLabel.Location = new System.Drawing.Point(425, 93); + this.LatestVersionLabel.Name = "LatestVersionLabel"; + this.LatestVersionLabel.Size = new System.Drawing.Size(82, 18); + this.LatestVersionLabel.TabIndex = 13; + this.LatestVersionLabel.Text = "Unknown"; + this.LatestVersionLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // LatestVersionTitle + // + this.LatestVersionTitle.AutoSize = true; + this.LatestVersionTitle.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.LatestVersionTitle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.LatestVersionTitle.Location = new System.Drawing.Point(286, 93); + this.LatestVersionTitle.Name = "LatestVersionTitle"; + this.LatestVersionTitle.Size = new System.Drawing.Size(133, 18); + this.LatestVersionTitle.TabIndex = 12; + this.LatestVersionTitle.Text = "Latest Version:"; + this.LatestVersionTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // StagedVersionLabel + // + this.StagedVersionLabel.AutoSize = true; + this.StagedVersionLabel.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.StagedVersionLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.StagedVersionLabel.Location = new System.Drawing.Point(425, 131); + this.StagedVersionLabel.Name = "StagedVersionLabel"; + this.StagedVersionLabel.Size = new System.Drawing.Size(82, 18); + this.StagedVersionLabel.TabIndex = 11; + this.StagedVersionLabel.Text = "Unknown"; + this.StagedVersionLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.StagedVersionLabel.Visible = false; + // + // StagedVersionTitle + // + this.StagedVersionTitle.AutoSize = true; + this.StagedVersionTitle.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.StagedVersionTitle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.StagedVersionTitle.Location = new System.Drawing.Point(282, 131); + this.StagedVersionTitle.Name = "StagedVersionTitle"; + this.StagedVersionTitle.Size = new System.Drawing.Size(137, 18); + this.StagedVersionTitle.TabIndex = 10; + this.StagedVersionTitle.Text = "Staged version:"; + this.StagedVersionTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.StagedVersionTitle.Visible = false; + // + // StatusLabel + // + this.StatusLabel.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.StatusLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.StatusLabel.Location = new System.Drawing.Point(303, 320); + this.StatusLabel.Name = "StatusLabel"; + this.StatusLabel.Size = new System.Drawing.Size(253, 37); + this.StatusLabel.TabIndex = 9; + this.StatusLabel.Text = "Idle"; + this.StatusLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // VersionLabel + // + this.VersionLabel.AutoSize = true; + this.VersionLabel.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.VersionLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.VersionLabel.Location = new System.Drawing.Point(425, 56); + this.VersionLabel.Name = "VersionLabel"; + this.VersionLabel.Size = new System.Drawing.Size(82, 18); + this.VersionLabel.TabIndex = 8; + this.VersionLabel.Text = "Unknown"; + this.VersionLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // VersionTitle + // + this.VersionTitle.AutoSize = true; + this.VersionTitle.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.VersionTitle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.VersionTitle.Location = new System.Drawing.Point(265, 56); + this.VersionTitle.Name = "VersionTitle"; + this.VersionTitle.Size = new System.Drawing.Size(154, 18); + this.VersionTitle.TabIndex = 7; + this.VersionTitle.Text = "Installed Version:"; + this.VersionTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // MinorVersionLabel + // + this.MinorVersionLabel.AutoSize = true; + this.MinorVersionLabel.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.MinorVersionLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.MinorVersionLabel.Location = new System.Drawing.Point(521, 180); + this.MinorVersionLabel.Name = "MinorVersionLabel"; + this.MinorVersionLabel.Size = new System.Drawing.Size(59, 18); + this.MinorVersionLabel.TabIndex = 6; + this.MinorVersionLabel.Text = "Minor:"; + this.MinorVersionLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // MajorVersionLabel + // + this.MajorVersionLabel.AutoSize = true; + this.MajorVersionLabel.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.MajorVersionLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.MajorVersionLabel.Location = new System.Drawing.Point(276, 180); + this.MajorVersionLabel.Name = "MajorVersionLabel"; + this.MajorVersionLabel.Size = new System.Drawing.Size(60, 18); + this.MajorVersionLabel.TabIndex = 5; + this.MajorVersionLabel.Text = "Major:"; + this.MajorVersionLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // UpdateButton + // + this.UpdateButton.Location = new System.Drawing.Point(372, 252); + this.UpdateButton.Name = "UpdateButton"; + this.UpdateButton.Size = new System.Drawing.Size(118, 28); + this.UpdateButton.TabIndex = 3; + this.UpdateButton.Text = "Update"; + this.UpdateButton.UseVisualStyleBackColor = true; + this.UpdateButton.Click += new System.EventHandler(this.UpdateButton_Click); + // + // MinorVersionNumeric + // + this.MinorVersionNumeric.Location = new System.Drawing.Point(490, 210); + this.MinorVersionNumeric.Maximum = new decimal(new int[] { + 10000, + 0, + 0, + 0}); + this.MinorVersionNumeric.Name = "MinorVersionNumeric"; + this.MinorVersionNumeric.Size = new System.Drawing.Size(120, 20); + this.MinorVersionNumeric.TabIndex = 2; + this.MinorVersionNumeric.Value = new decimal(new int[] { + 1381, + 0, + 0, + 0}); + // + // MajorVersionNumeric + // + this.MajorVersionNumeric.Location = new System.Drawing.Point(245, 210); + this.MajorVersionNumeric.Maximum = new decimal(new int[] { + 1000, + 0, + 0, + 0}); + this.MajorVersionNumeric.Name = "MajorVersionNumeric"; + this.MajorVersionNumeric.Size = new System.Drawing.Size(120, 20); + this.MajorVersionNumeric.TabIndex = 1; + this.MajorVersionNumeric.Value = new decimal(new int[] { + 511, + 0, + 0, + 0}); + // + // UpdateProgressBar + // + this.UpdateProgressBar.Location = new System.Drawing.Point(107, 286); + this.UpdateProgressBar.MarqueeAnimationSpeed = 50; + this.UpdateProgressBar.Name = "UpdateProgressBar"; + this.UpdateProgressBar.Size = new System.Drawing.Size(650, 31); + this.UpdateProgressBar.TabIndex = 0; + // + // RepoPanel + // + this.RepoPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(39)))), ((int)(((byte)(40)))), ((int)(((byte)(34))))); + this.RepoPanel.Controls.Add(this.RepoRefreshButton); + this.RepoPanel.Controls.Add(this.BackupTagsList); + this.RepoPanel.Controls.Add(this.ResetRemote); + this.RepoPanel.Controls.Add(this.RecloneButton); + this.RepoPanel.Controls.Add(this.PythonPathText); + this.RepoPanel.Controls.Add(this.RepoBranchTextBox); + this.RepoPanel.Controls.Add(this.RepoRemoteTextBox); + this.RepoPanel.Controls.Add(this.PythonPathLabel); + this.RepoPanel.Controls.Add(this.RepoGenChangelogButton); + this.RepoPanel.Controls.Add(this.TestmergeSelector); + this.RepoPanel.Controls.Add(this.TestMergeListLabel); + this.RepoPanel.Controls.Add(this.CurrentRevisionLabel); + this.RepoPanel.Controls.Add(this.RepoApplyButton); + this.RepoPanel.Controls.Add(this.HardReset); + this.RepoPanel.Controls.Add(this.UpdateRepoButton); + this.RepoPanel.Controls.Add(this.MergePRButton); + this.RepoPanel.Controls.Add(this.IdentityLabel); + this.RepoPanel.Controls.Add(this.TestMergeListTitle); + this.RepoPanel.Controls.Add(this.RemoteNameTitle); + this.RepoPanel.Controls.Add(this.BranchNameTitle); + this.RepoPanel.Controls.Add(this.CurrentRevisionTitle); + this.RepoPanel.Controls.Add(this.CloneRepositoryButton); + this.RepoPanel.Controls.Add(this.RepoProgressBarLabel); + this.RepoPanel.Controls.Add(this.RepoProgressBar); + this.RepoPanel.Location = new System.Drawing.Point(4, 22); + this.RepoPanel.Name = "RepoPanel"; + this.RepoPanel.Padding = new System.Windows.Forms.Padding(3); + this.RepoPanel.Size = new System.Drawing.Size(868, 366); + this.RepoPanel.TabIndex = 0; + this.RepoPanel.Text = "Repository"; + // + // RepoRefreshButton + // + this.RepoRefreshButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.RepoRefreshButton.Location = new System.Drawing.Point(722, 296); + this.RepoRefreshButton.Name = "RepoRefreshButton"; + this.RepoRefreshButton.Size = new System.Drawing.Size(140, 29); + this.RepoRefreshButton.TabIndex = 35; + this.RepoRefreshButton.Text = "Refresh"; + this.RepoRefreshButton.UseVisualStyleBackColor = true; + this.RepoRefreshButton.Visible = false; + this.RepoRefreshButton.Click += new System.EventHandler(this.RepoRefreshButton_Click); + // + // BackupTagsList + // + this.BackupTagsList.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.BackupTagsList.Items.AddRange(new object[] { + "None"}); + this.BackupTagsList.Location = new System.Drawing.Point(122, 142); + this.BackupTagsList.Name = "BackupTagsList"; + this.BackupTagsList.ScrollAlwaysVisible = true; + this.BackupTagsList.Size = new System.Drawing.Size(535, 95); + this.BackupTagsList.TabIndex = 34; + this.BackupTagsList.Visible = false; + // + // ResetRemote + // + this.ResetRemote.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.ResetRemote.Location = new System.Drawing.Point(722, 81); + this.ResetRemote.Name = "ResetRemote"; + this.ResetRemote.Size = new System.Drawing.Size(140, 29); + this.ResetRemote.TabIndex = 33; + this.ResetRemote.Text = "Reset To Remote"; + this.ResetRemote.UseVisualStyleBackColor = true; + this.ResetRemote.Visible = false; + this.ResetRemote.Click += new System.EventHandler(this.ResetRemote_Click); + // + // RecloneButton + // + this.RecloneButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.RecloneButton.Location = new System.Drawing.Point(722, 212); + this.RecloneButton.Name = "RecloneButton"; + this.RecloneButton.Size = new System.Drawing.Size(140, 29); + this.RecloneButton.TabIndex = 32; + this.RecloneButton.Text = "Reclone"; + this.RecloneButton.UseVisualStyleBackColor = true; + this.RecloneButton.Visible = false; + this.RecloneButton.Click += new System.EventHandler(this.RecloneButton_Click); + // + // PythonPathText + // + this.PythonPathText.Location = new System.Drawing.Point(122, 112); + this.PythonPathText.Name = "PythonPathText"; + this.PythonPathText.Size = new System.Drawing.Size(535, 20); + this.PythonPathText.TabIndex = 31; + this.PythonPathText.Visible = false; + // + // RepoBranchTextBox + // + this.RepoBranchTextBox.Location = new System.Drawing.Point(122, 70); + this.RepoBranchTextBox.Name = "RepoBranchTextBox"; + this.RepoBranchTextBox.Size = new System.Drawing.Size(535, 20); + this.RepoBranchTextBox.TabIndex = 15; + this.RepoBranchTextBox.Visible = false; + // + // RepoRemoteTextBox + // + this.RepoRemoteTextBox.Location = new System.Drawing.Point(122, 44); + this.RepoRemoteTextBox.Name = "RepoRemoteTextBox"; + this.RepoRemoteTextBox.Size = new System.Drawing.Size(535, 20); + this.RepoRemoteTextBox.TabIndex = 14; + this.RepoRemoteTextBox.Visible = false; + // + // PythonPathLabel + // + this.PythonPathLabel.AutoSize = true; + this.PythonPathLabel.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.PythonPathLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.PythonPathLabel.Location = new System.Drawing.Point(6, 112); + this.PythonPathLabel.Name = "PythonPathLabel"; + this.PythonPathLabel.Size = new System.Drawing.Size(114, 18); + this.PythonPathLabel.TabIndex = 30; + this.PythonPathLabel.Text = "Python Path:"; + this.PythonPathLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.PythonPathLabel.Visible = false; + // + // RepoGenChangelogButton + // + this.RepoGenChangelogButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.RepoGenChangelogButton.Location = new System.Drawing.Point(722, 177); + this.RepoGenChangelogButton.Name = "RepoGenChangelogButton"; + this.RepoGenChangelogButton.Size = new System.Drawing.Size(140, 29); + this.RepoGenChangelogButton.TabIndex = 27; + this.RepoGenChangelogButton.Text = "Generate Changelog"; + this.RepoGenChangelogButton.UseVisualStyleBackColor = true; + this.RepoGenChangelogButton.Visible = false; + this.RepoGenChangelogButton.Click += new System.EventHandler(this.RepoGenChangelogButton_Click); + // + // TestmergeSelector + // + this.TestmergeSelector.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.TestmergeSelector.Location = new System.Drawing.Point(722, 151); + this.TestmergeSelector.Maximum = new decimal(new int[] { + 1000000, + 0, + 0, + 0}); + this.TestmergeSelector.Name = "TestmergeSelector"; + this.TestmergeSelector.Size = new System.Drawing.Size(140, 20); + this.TestmergeSelector.TabIndex = 22; + this.TestmergeSelector.Visible = false; + // + // TestMergeListLabel + // + this.TestMergeListLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.TestMergeListLabel.HorizontalScrollbar = true; + this.TestMergeListLabel.Items.AddRange(new object[] { + "None"}); + this.TestMergeListLabel.Location = new System.Drawing.Point(122, 260); + this.TestMergeListLabel.Name = "TestMergeListLabel"; + this.TestMergeListLabel.ScrollAlwaysVisible = true; + this.TestMergeListLabel.Size = new System.Drawing.Size(535, 95); + this.TestMergeListLabel.TabIndex = 21; + this.TestMergeListLabel.Visible = false; + // + // CurrentRevisionLabel + // + this.CurrentRevisionLabel.AutoSize = true; + this.CurrentRevisionLabel.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.CurrentRevisionLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.CurrentRevisionLabel.Location = new System.Drawing.Point(162, 14); + this.CurrentRevisionLabel.Name = "CurrentRevisionLabel"; + this.CurrentRevisionLabel.Size = new System.Drawing.Size(82, 18); + this.CurrentRevisionLabel.TabIndex = 20; + this.CurrentRevisionLabel.Text = "Unknown"; + this.CurrentRevisionLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.CurrentRevisionLabel.Visible = false; + // + // RepoApplyButton + // + this.RepoApplyButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.RepoApplyButton.Location = new System.Drawing.Point(722, 331); + this.RepoApplyButton.Name = "RepoApplyButton"; + this.RepoApplyButton.Size = new System.Drawing.Size(140, 29); + this.RepoApplyButton.TabIndex = 17; + this.RepoApplyButton.Text = "Apply Changes"; + this.RepoApplyButton.UseVisualStyleBackColor = true; + this.RepoApplyButton.Visible = false; + this.RepoApplyButton.Click += new System.EventHandler(this.RepoApplyButton_Click); + // + // HardReset + // + this.HardReset.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.HardReset.Location = new System.Drawing.Point(722, 46); + this.HardReset.Name = "HardReset"; + this.HardReset.Size = new System.Drawing.Size(140, 29); + this.HardReset.TabIndex = 13; + this.HardReset.Text = "Reset To Origin Branch"; + this.HardReset.UseVisualStyleBackColor = true; + this.HardReset.Visible = false; + this.HardReset.Click += new System.EventHandler(this.HardReset_Click); + // + // UpdateRepoButton + // + this.UpdateRepoButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.UpdateRepoButton.Location = new System.Drawing.Point(722, 11); + this.UpdateRepoButton.Name = "UpdateRepoButton"; + this.UpdateRepoButton.Size = new System.Drawing.Size(140, 29); + this.UpdateRepoButton.TabIndex = 12; + this.UpdateRepoButton.Text = "Merge from Remote"; + this.UpdateRepoButton.UseVisualStyleBackColor = true; + this.UpdateRepoButton.Visible = false; + this.UpdateRepoButton.Click += new System.EventHandler(this.UpdateRepoButton_Click); + // + // MergePRButton + // + this.MergePRButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.MergePRButton.Location = new System.Drawing.Point(722, 116); + this.MergePRButton.Name = "MergePRButton"; + this.MergePRButton.Size = new System.Drawing.Size(140, 29); + this.MergePRButton.TabIndex = 11; + this.MergePRButton.Text = "Merge Pull Request"; + this.MergePRButton.UseVisualStyleBackColor = true; + this.MergePRButton.Visible = false; + this.MergePRButton.Click += new System.EventHandler(this.TestMergeButton_Click); + // + // IdentityLabel + // + this.IdentityLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.IdentityLabel.AutoSize = true; + this.IdentityLabel.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.IdentityLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.IdentityLabel.Location = new System.Drawing.Point(6, 142); + this.IdentityLabel.Name = "IdentityLabel"; + this.IdentityLabel.Size = new System.Drawing.Size(116, 18); + this.IdentityLabel.TabIndex = 8; + this.IdentityLabel.Text = "Backup Tags:"; + this.IdentityLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.IdentityLabel.Visible = false; + // + // TestMergeListTitle + // + this.TestMergeListTitle.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.TestMergeListTitle.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.TestMergeListTitle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.TestMergeListTitle.Location = new System.Drawing.Point(6, 260); + this.TestMergeListTitle.Name = "TestMergeListTitle"; + this.TestMergeListTitle.Size = new System.Drawing.Size(110, 41); + this.TestMergeListTitle.TabIndex = 6; + this.TestMergeListTitle.Text = "Active Test Merges:"; + this.TestMergeListTitle.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.TestMergeListTitle.Visible = false; + // + // RemoteNameTitle + // + this.RemoteNameTitle.AutoSize = true; + this.RemoteNameTitle.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.RemoteNameTitle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.RemoteNameTitle.Location = new System.Drawing.Point(6, 46); + this.RemoteNameTitle.Name = "RemoteNameTitle"; + this.RemoteNameTitle.Size = new System.Drawing.Size(78, 18); + this.RemoteNameTitle.TabIndex = 5; + this.RemoteNameTitle.Text = "Remote:"; + this.RemoteNameTitle.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.RemoteNameTitle.Visible = false; + // + // BranchNameTitle + // + this.BranchNameTitle.AutoSize = true; + this.BranchNameTitle.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.BranchNameTitle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.BranchNameTitle.Location = new System.Drawing.Point(6, 72); + this.BranchNameTitle.Name = "BranchNameTitle"; + this.BranchNameTitle.Size = new System.Drawing.Size(70, 18); + this.BranchNameTitle.TabIndex = 4; + this.BranchNameTitle.Text = "Branch:"; + this.BranchNameTitle.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.BranchNameTitle.Visible = false; + // + // CurrentRevisionTitle + // + this.CurrentRevisionTitle.AutoSize = true; + this.CurrentRevisionTitle.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.CurrentRevisionTitle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.CurrentRevisionTitle.Location = new System.Drawing.Point(6, 14); + this.CurrentRevisionTitle.Name = "CurrentRevisionTitle"; + this.CurrentRevisionTitle.Size = new System.Drawing.Size(150, 18); + this.CurrentRevisionTitle.TabIndex = 3; + this.CurrentRevisionTitle.Text = "Current Revision:"; + this.CurrentRevisionTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.CurrentRevisionTitle.Visible = false; + // + // CloneRepositoryButton + // + this.CloneRepositoryButton.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.ConfigPanels.Controls.Add(this.ConfigConfigPanel); - this.ConfigPanels.Controls.Add(this.DatabaseConfigPanel); - this.ConfigPanels.Controls.Add(this.GameConfigPanel); - this.ConfigPanels.Controls.Add(this.JobsConfigPanel); - this.ConfigPanels.Controls.Add(this.MapsConfigPanel); - this.ConfigPanels.Controls.Add(this.AdminsPanel); - this.ConfigPanels.Location = new System.Drawing.Point(-4, 0); - this.ConfigPanels.Name = "ConfigPanels"; - this.ConfigPanels.SelectedIndex = 0; - this.ConfigPanels.Size = new System.Drawing.Size(876, 370); - this.ConfigPanels.TabIndex = 0; - // - // ConfigConfigPanel - // - this.ConfigConfigPanel.AutoScroll = true; - this.ConfigConfigPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(39)))), ((int)(((byte)(40)))), ((int)(((byte)(34))))); - this.ConfigConfigPanel.Location = new System.Drawing.Point(4, 22); - this.ConfigConfigPanel.Name = "ConfigConfigPanel"; - this.ConfigConfigPanel.Padding = new System.Windows.Forms.Padding(3); - this.ConfigConfigPanel.Size = new System.Drawing.Size(868, 344); - this.ConfigConfigPanel.TabIndex = 0; - this.ConfigConfigPanel.Text = "General"; - // - // DatabaseConfigPanel - // - this.DatabaseConfigPanel.AutoScroll = true; - this.DatabaseConfigPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(39)))), ((int)(((byte)(40)))), ((int)(((byte)(34))))); - this.DatabaseConfigPanel.Location = new System.Drawing.Point(4, 22); - this.DatabaseConfigPanel.Name = "DatabaseConfigPanel"; - this.DatabaseConfigPanel.Padding = new System.Windows.Forms.Padding(3); - this.DatabaseConfigPanel.Size = new System.Drawing.Size(868, 344); - this.DatabaseConfigPanel.TabIndex = 1; - this.DatabaseConfigPanel.Text = "Database"; - // - // GameConfigPanel - // - this.GameConfigPanel.AutoScroll = true; - this.GameConfigPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(39)))), ((int)(((byte)(40)))), ((int)(((byte)(34))))); - this.GameConfigPanel.Location = new System.Drawing.Point(4, 22); - this.GameConfigPanel.Name = "GameConfigPanel"; - this.GameConfigPanel.Padding = new System.Windows.Forms.Padding(3); - this.GameConfigPanel.Size = new System.Drawing.Size(868, 344); - this.GameConfigPanel.TabIndex = 2; - this.GameConfigPanel.Text = "Game"; - // - // JobsConfigPanel - // - this.JobsConfigPanel.AutoScroll = true; - this.JobsConfigPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(39)))), ((int)(((byte)(40)))), ((int)(((byte)(34))))); - this.JobsConfigPanel.Location = new System.Drawing.Point(4, 22); - this.JobsConfigPanel.Name = "JobsConfigPanel"; - this.JobsConfigPanel.Padding = new System.Windows.Forms.Padding(3); - this.JobsConfigPanel.Size = new System.Drawing.Size(868, 344); - this.JobsConfigPanel.TabIndex = 3; - this.JobsConfigPanel.Text = "Jobs"; - // - // MapsConfigPanel - // - this.MapsConfigPanel.AutoScroll = true; - this.MapsConfigPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(39)))), ((int)(((byte)(40)))), ((int)(((byte)(34))))); - this.MapsConfigPanel.Location = new System.Drawing.Point(4, 22); - this.MapsConfigPanel.Name = "MapsConfigPanel"; - this.MapsConfigPanel.Padding = new System.Windows.Forms.Padding(3); - this.MapsConfigPanel.Size = new System.Drawing.Size(868, 344); - this.MapsConfigPanel.TabIndex = 4; - this.MapsConfigPanel.Text = "Maps"; - // - // AdminsPanel - // - this.AdminsPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(39)))), ((int)(((byte)(40)))), ((int)(((byte)(34))))); - this.AdminsPanel.Controls.Add(this.NegativePermissionsTitle); - this.AdminsPanel.Controls.Add(this.NegativePermissions); - this.AdminsPanel.Controls.Add(this.ApplyAdminRankButton); - this.AdminsPanel.Controls.Add(this.PermissionsListBox); - this.AdminsPanel.Controls.Add(this.PermissionsTItle); - this.AdminsPanel.Controls.Add(this.RemoveRankButton); - this.AdminsPanel.Controls.Add(this.AddRankTextBox); - this.AdminsPanel.Controls.Add(this.AddRankButton); - this.AdminsPanel.Controls.Add(this.AdminRanksListBox); - this.AdminsPanel.Controls.Add(this.RanksTitle); - this.AdminsPanel.Controls.Add(this.DeadminButton); - this.AdminsPanel.Controls.Add(this.AddminTextBox); - this.AdminsPanel.Controls.Add(this.AddminButton); - this.AdminsPanel.Controls.Add(this.AdminsListBox); - this.AdminsPanel.Controls.Add(this.AdminsTitle); - this.AdminsPanel.Location = new System.Drawing.Point(4, 22); - this.AdminsPanel.Name = "AdminsPanel"; - this.AdminsPanel.Padding = new System.Windows.Forms.Padding(3); - this.AdminsPanel.Size = new System.Drawing.Size(868, 344); - this.AdminsPanel.TabIndex = 5; - this.AdminsPanel.Text = "Admins"; - // - // NegativePermissionsTitle - // - this.NegativePermissionsTitle.AutoSize = true; - this.NegativePermissionsTitle.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.NegativePermissionsTitle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.NegativePermissionsTitle.Location = new System.Drawing.Point(269, 151); - this.NegativePermissionsTitle.Name = "NegativePermissionsTitle"; - this.NegativePermissionsTitle.Size = new System.Drawing.Size(192, 18); - this.NegativePermissionsTitle.TabIndex = 31; - this.NegativePermissionsTitle.Text = "Negative Permissions:"; - this.NegativePermissionsTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // NegativePermissions - // - this.NegativePermissions.FormattingEnabled = true; - this.NegativePermissions.HorizontalScrollbar = true; - this.NegativePermissions.Location = new System.Drawing.Point(272, 172); - this.NegativePermissions.Name = "NegativePermissions"; - this.NegativePermissions.Size = new System.Drawing.Size(240, 109); - this.NegativePermissions.TabIndex = 30; - // - // ApplyAdminRankButton - // - this.ApplyAdminRankButton.Location = new System.Drawing.Point(272, 292); - this.ApplyAdminRankButton.Name = "ApplyAdminRankButton"; - this.ApplyAdminRankButton.Size = new System.Drawing.Size(240, 46); - this.ApplyAdminRankButton.TabIndex = 29; - this.ApplyAdminRankButton.Text = "Apply Selected Rank to Selected Admin"; - this.ApplyAdminRankButton.UseVisualStyleBackColor = true; - this.ApplyAdminRankButton.Click += new System.EventHandler(this.ApplyAdminRankButton_Click); - // - // PermissionsListBox - // - this.PermissionsListBox.FormattingEnabled = true; - this.PermissionsListBox.HorizontalScrollbar = true; - this.PermissionsListBox.Location = new System.Drawing.Point(272, 29); - this.PermissionsListBox.Name = "PermissionsListBox"; - this.PermissionsListBox.Size = new System.Drawing.Size(240, 109); - this.PermissionsListBox.TabIndex = 28; - // - // PermissionsTItle - // - this.PermissionsTItle.AutoSize = true; - this.PermissionsTItle.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.PermissionsTItle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.PermissionsTItle.Location = new System.Drawing.Point(269, 8); - this.PermissionsTItle.Name = "PermissionsTItle"; - this.PermissionsTItle.Size = new System.Drawing.Size(113, 18); - this.PermissionsTItle.TabIndex = 27; - this.PermissionsTItle.Text = "Permissions:"; - this.PermissionsTItle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // RemoveRankButton - // - this.RemoveRankButton.Location = new System.Drawing.Point(9, 292); - this.RemoveRankButton.Name = "RemoveRankButton"; - this.RemoveRankButton.Size = new System.Drawing.Size(240, 20); - this.RemoveRankButton.TabIndex = 26; - this.RemoveRankButton.Text = "Remove Selected"; - this.RemoveRankButton.UseVisualStyleBackColor = true; - this.RemoveRankButton.Click += new System.EventHandler(this.RemoveRankButton_Click); - // - // AddRankTextBox - // - this.AddRankTextBox.Location = new System.Drawing.Point(9, 318); - this.AddRankTextBox.Name = "AddRankTextBox"; - this.AddRankTextBox.Size = new System.Drawing.Size(184, 20); - this.AddRankTextBox.TabIndex = 25; - // - // AddRankButton - // - this.AddRankButton.Location = new System.Drawing.Point(199, 318); - this.AddRankButton.Name = "AddRankButton"; - this.AddRankButton.Size = new System.Drawing.Size(50, 20); - this.AddRankButton.TabIndex = 24; - this.AddRankButton.Text = "Add"; - this.AddRankButton.UseVisualStyleBackColor = true; - this.AddRankButton.Click += new System.EventHandler(this.AddRankButton_Click); - // - // AdminRanksListBox - // - this.AdminRanksListBox.FormattingEnabled = true; - this.AdminRanksListBox.Location = new System.Drawing.Point(9, 30); - this.AdminRanksListBox.Name = "AdminRanksListBox"; - this.AdminRanksListBox.Size = new System.Drawing.Size(240, 251); - this.AdminRanksListBox.TabIndex = 23; - // - // RanksTitle - // - this.RanksTitle.AutoSize = true; - this.RanksTitle.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.RanksTitle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.RanksTitle.Location = new System.Drawing.Point(6, 8); - this.RanksTitle.Name = "RanksTitle"; - this.RanksTitle.Size = new System.Drawing.Size(64, 18); - this.RanksTitle.TabIndex = 22; - this.RanksTitle.Text = "Ranks:"; - this.RanksTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // DeadminButton - // - this.DeadminButton.Location = new System.Drawing.Point(536, 292); - this.DeadminButton.Name = "DeadminButton"; - this.DeadminButton.Size = new System.Drawing.Size(240, 20); - this.DeadminButton.TabIndex = 21; - this.DeadminButton.Text = "Remove Selected"; - this.DeadminButton.UseVisualStyleBackColor = true; - this.DeadminButton.Click += new System.EventHandler(this.DeadminButton_Click); - // - // AddminTextBox - // - this.AddminTextBox.Location = new System.Drawing.Point(536, 318); - this.AddminTextBox.Name = "AddminTextBox"; - this.AddminTextBox.Size = new System.Drawing.Size(184, 20); - this.AddminTextBox.TabIndex = 20; - // - // AddminButton - // - this.AddminButton.Location = new System.Drawing.Point(726, 318); - this.AddminButton.Name = "AddminButton"; - this.AddminButton.Size = new System.Drawing.Size(50, 20); - this.AddminButton.TabIndex = 19; - this.AddminButton.Text = "Add"; - this.AddminButton.UseVisualStyleBackColor = true; - this.AddminButton.Click += new System.EventHandler(this.AddminButton_Click); - // - // AdminsListBox - // - this.AdminsListBox.FormattingEnabled = true; - this.AdminsListBox.Location = new System.Drawing.Point(536, 30); - this.AdminsListBox.Name = "AdminsListBox"; - this.AdminsListBox.Size = new System.Drawing.Size(240, 251); - this.AdminsListBox.TabIndex = 13; - // - // AdminsTitle - // - this.AdminsTitle.AutoSize = true; - this.AdminsTitle.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.AdminsTitle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.AdminsTitle.Location = new System.Drawing.Point(533, 8); - this.AdminsTitle.Name = "AdminsTitle"; - this.AdminsTitle.Size = new System.Drawing.Size(75, 18); - this.AdminsTitle.TabIndex = 12; - this.AdminsTitle.Text = "Admins:"; - this.AdminsTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // ConfigDisabledLabel - // - this.ConfigDisabledLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + this.CloneRepositoryButton.Location = new System.Drawing.Point(311, 191); + this.CloneRepositoryButton.Name = "CloneRepositoryButton"; + this.CloneRepositoryButton.Size = new System.Drawing.Size(229, 34); + this.CloneRepositoryButton.TabIndex = 2; + this.CloneRepositoryButton.Text = "Clone Repository"; + this.CloneRepositoryButton.UseVisualStyleBackColor = true; + this.CloneRepositoryButton.Visible = false; + this.CloneRepositoryButton.Click += new System.EventHandler(this.CloneRepositoryButton_Click); + // + // RepoProgressBarLabel + // + this.RepoProgressBarLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.ConfigDisabledLabel.AutoSize = true; - this.ConfigDisabledLabel.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.ConfigDisabledLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); - this.ConfigDisabledLabel.Location = new System.Drawing.Point(225, 160); - this.ConfigDisabledLabel.Name = "ConfigDisabledLabel"; - this.ConfigDisabledLabel.Size = new System.Drawing.Size(428, 18); - this.ConfigDisabledLabel.TabIndex = 14; - this.ConfigDisabledLabel.Text = "Configuration is disabled until repository is set up!"; - this.ConfigDisabledLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // RepoBGW - // - this.RepoBGW.WorkerReportsProgress = true; - this.RepoBGW.WorkerSupportsCancellation = true; - // - // BYONDTimer - // - this.BYONDTimer.Interval = 1000; - this.BYONDTimer.Tick += new System.EventHandler(this.BYONDTimer_Tick); - // - // ServerTimer - // - this.ServerTimer.Interval = 10000; - this.ServerTimer.Tick += new System.EventHandler(this.ServerTimer_Tick); - // - // WorldStatusChecker - // - this.WorldStatusChecker.WorkerReportsProgress = true; - this.WorldStatusChecker.WorkerSupportsCancellation = true; - this.WorldStatusChecker.DoWork += new System.ComponentModel.DoWorkEventHandler(this.WorldStatusChecker_DoWork); - // - // WorldStatusTimer - // - this.WorldStatusTimer.Interval = 10000; - this.WorldStatusTimer.Tick += new System.EventHandler(this.WorldStatusTimer_Tick); - // - // FullUpdateWorker - // - this.FullUpdateWorker.DoWork += new System.ComponentModel.DoWorkEventHandler(this.FullUpdateWorker_DoWork); - // - // ServerStartBGW - // - this.ServerStartBGW.DoWork += new System.ComponentModel.DoWorkEventHandler(this.ServerStartBGW_DoWork); - // - // Main - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(39)))), ((int)(((byte)(40)))), ((int)(((byte)(34))))); - this.ClientSize = new System.Drawing.Size(900, 415); - this.Controls.Add(this.Panels); - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.Name = "Main"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "/tg/station 13 Server Control Panel"; - this.Panels.ResumeLayout(false); - this.RepoPanel.ResumeLayout(false); - this.RepoPanel.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.TestmergeSelector)).EndInit(); - this.BYONDPanel.ResumeLayout(false); - this.BYONDPanel.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.MinorVersionNumeric)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.MajorVersionNumeric)).EndInit(); - this.ServerPanel.ResumeLayout(false); - this.ServerPanel.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.PortSelector)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.ServerTestmergeInput)).EndInit(); - this.ChatPanel.ResumeLayout(false); - this.ChatPanel.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.ChatPortSelector)).EndInit(); - this.ChatProviderSelectorPanel.ResumeLayout(false); - this.ChatProviderSelectorPanel.PerformLayout(); - this.panel1.ResumeLayout(false); - this.panel1.PerformLayout(); - this.ConfigPanel.ResumeLayout(false); - this.ConfigPanel.PerformLayout(); - this.ConfigPanels.ResumeLayout(false); - this.AdminsPanel.ResumeLayout(false); - this.AdminsPanel.PerformLayout(); - this.ResumeLayout(false); + this.RepoProgressBarLabel.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.RepoProgressBarLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(242))))); + this.RepoProgressBarLabel.Location = new System.Drawing.Point(184, 142); + this.RepoProgressBarLabel.Name = "RepoProgressBarLabel"; + this.RepoProgressBarLabel.Size = new System.Drawing.Size(499, 46); + this.RepoProgressBarLabel.TabIndex = 1; + this.RepoProgressBarLabel.Text = "Searching for Repository..."; + this.RepoProgressBarLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // RepoProgressBar + // + this.RepoProgressBar.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.RepoProgressBar.Location = new System.Drawing.Point(184, 191); + this.RepoProgressBar.Name = "RepoProgressBar"; + this.RepoProgressBar.Size = new System.Drawing.Size(499, 23); + this.RepoProgressBar.Style = System.Windows.Forms.ProgressBarStyle.Marquee; + this.RepoProgressBar.TabIndex = 0; + // + // Panels + // + this.Panels.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.Panels.Controls.Add(this.RepoPanel); + this.Panels.Controls.Add(this.BYONDPanel); + this.Panels.Controls.Add(this.ServerPanel); + this.Panels.Controls.Add(this.ChatPanel); + this.Panels.Location = new System.Drawing.Point(12, 12); + this.Panels.Name = "Panels"; + this.Panels.SelectedIndex = 0; + this.Panels.Size = new System.Drawing.Size(876, 392); + this.Panels.TabIndex = 3; + // + // Main + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(39)))), ((int)(((byte)(40)))), ((int)(((byte)(34))))); + this.ClientSize = new System.Drawing.Size(900, 415); + this.Controls.Add(this.Panels); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "Main"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "/tg/station 13 Server Control Panel"; + this.ChatPanel.ResumeLayout(false); + this.ChatPanel.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.ChatPortSelector)).EndInit(); + this.ChatProviderSelectorPanel.ResumeLayout(false); + this.ChatProviderSelectorPanel.PerformLayout(); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.ServerPanel.ResumeLayout(false); + this.ServerPanel.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.PortSelector)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.ServerTestmergeInput)).EndInit(); + this.BYONDPanel.ResumeLayout(false); + this.BYONDPanel.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.MinorVersionNumeric)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.MajorVersionNumeric)).EndInit(); + this.RepoPanel.ResumeLayout(false); + this.RepoPanel.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.TestmergeSelector)).EndInit(); + this.Panels.ResumeLayout(false); + this.ResumeLayout(false); } #endregion - private System.Windows.Forms.TabControl Panels; private System.ComponentModel.BackgroundWorker RepoBGW; - private System.Windows.Forms.TabPage BYONDPanel; - private System.Windows.Forms.TabPage ServerPanel; - private System.Windows.Forms.Button UpdateButton; - private System.Windows.Forms.NumericUpDown MinorVersionNumeric; - private System.Windows.Forms.NumericUpDown MajorVersionNumeric; - private System.Windows.Forms.ProgressBar UpdateProgressBar; - private System.Windows.Forms.Label MajorVersionLabel; - private System.Windows.Forms.Label MinorVersionLabel; - private System.Windows.Forms.Label VersionLabel; - private System.Windows.Forms.Label VersionTitle; - private System.Windows.Forms.Label StatusLabel; private System.Windows.Forms.Timer BYONDTimer; - private System.Windows.Forms.Label StagedVersionLabel; - private System.Windows.Forms.Label StagedVersionTitle; - private System.Windows.Forms.TabPage ChatPanel; - private System.Windows.Forms.TabPage ConfigPanel; - private System.Windows.Forms.Label ServerStatusTitle; - private System.Windows.Forms.Button compileButton; - private System.Windows.Forms.Button initializeButton; - private System.Windows.Forms.ProgressBar compilerProgressBar; - private System.Windows.Forms.Label ServerStatusLabel; private System.Windows.Forms.Timer ServerTimer; - private System.Windows.Forms.Label CompilerLabel; - private System.Windows.Forms.Label CompilerStatusLabel; private System.ComponentModel.BackgroundWorker WorldStatusChecker; private System.Windows.Forms.Timer WorldStatusTimer; - private System.Windows.Forms.CheckBox AutostartCheckbox; - private System.Windows.Forms.Button ServerGRestartButton; - private System.Windows.Forms.CheckBox ServerGStopButton; - private System.Windows.Forms.Button ServerRestartButton; - private System.Windows.Forms.Button ServerStopButton; - private System.Windows.Forms.Button ServerStartButton; - private System.Windows.Forms.Label ServerPRLabel; - private System.Windows.Forms.NumericUpDown ServerTestmergeInput; - private System.Windows.Forms.Button TestmergeButton; - private System.Windows.Forms.Button UpdateTestmergeButton; - private System.Windows.Forms.Button UpdateMergeButton; - private System.Windows.Forms.Button UpdateHardButton; private System.ComponentModel.BackgroundWorker FullUpdateWorker; - private System.Windows.Forms.TabControl ConfigPanels; - private System.Windows.Forms.TabPage ConfigConfigPanel; - private System.Windows.Forms.Button ConfigRefresh; - private System.Windows.Forms.Button ConfigApply; - private System.Windows.Forms.Button ConfigDownload; - private System.Windows.Forms.Button ConfigUpload; - private System.Windows.Forms.Button ConfigDownloadRepo; - private System.Windows.Forms.TabPage DatabaseConfigPanel; - private System.Windows.Forms.TabPage GameConfigPanel; - private System.Windows.Forms.Label PortLabel; - private System.Windows.Forms.NumericUpDown PortSelector; - private System.Windows.Forms.Label ProjectPathLabel; - private System.Windows.Forms.TextBox projectNameText; - private System.Windows.Forms.Label ServerPathLabel; - private System.Windows.Forms.TextBox ServerPathTextbox; - private System.Windows.Forms.Label LatestVersionLabel; - private System.Windows.Forms.Label LatestVersionTitle; - private System.Windows.Forms.Label ChannelsTitle; + private System.ComponentModel.BackgroundWorker ServerStartBGW; + private System.Windows.Forms.TabPage ChatPanel; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.ComboBox IRCModesComboBox; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox AdminChannelsTextbox; + private System.Windows.Forms.TextBox WDChannelsTextbox; + private System.Windows.Forms.TextBox GameChannelsTextbox; + private System.Windows.Forms.TextBox DevChannelsTextbox; + private System.Windows.Forms.TextBox ChatNicknameText; + private System.Windows.Forms.TextBox ChatServerText; + private System.Windows.Forms.TextBox AuthField2; + private System.Windows.Forms.TextBox AuthField1; private System.Windows.Forms.TextBox ChatAdminsTextBox; - private System.Windows.Forms.Label ChatAdminsTitle; + private System.Windows.Forms.Button ChatRefreshButton; + private System.Windows.Forms.Label ChatNicknameTitle; + private System.Windows.Forms.NumericUpDown ChatPortSelector; + private System.Windows.Forms.Label ChatPortTitle; + private System.Windows.Forms.Label ChatServerTitle; + private System.Windows.Forms.Button ChatApplyButton; + private System.Windows.Forms.Label AuthField2Title; + private System.Windows.Forms.Label AuthField1Title; + private System.Windows.Forms.Button ChatReconnectButton; private System.Windows.Forms.Label ChatStatusLabel; private System.Windows.Forms.Label ChatStatusTitle; private System.Windows.Forms.CheckBox ChatEnabledCheckbox; @@ -2075,51 +1678,73 @@ private System.Windows.Forms.RadioButton DiscordProviderSwitch; private System.Windows.Forms.RadioButton IRCProviderSwitch; private System.Windows.Forms.Label ChatProviderTitle; - private System.Windows.Forms.Button ChatReconnectButton; - private System.Windows.Forms.Label AuthField2Title; - private System.Windows.Forms.Label AuthField1Title; - private System.Windows.Forms.TextBox AuthField2; - private System.Windows.Forms.TextBox AuthField1; - private System.Windows.Forms.Button ChatApplyButton; - private System.Windows.Forms.NumericUpDown ChatPortSelector; - private System.Windows.Forms.Label ChatPortTitle; - private System.Windows.Forms.TextBox ChatServerText; - private System.Windows.Forms.Label ChatServerTitle; - private System.Windows.Forms.TextBox ChatNicknameText; - private System.Windows.Forms.Label ChatNicknameTitle; - private System.Windows.Forms.Button ChatRefreshButton; - private System.Windows.Forms.TabPage JobsConfigPanel; - private System.Windows.Forms.TabPage MapsConfigPanel; - private System.Windows.Forms.TabPage AdminsPanel; - private System.Windows.Forms.TextBox AddminTextBox; - private System.Windows.Forms.Button AddminButton; - private System.Windows.Forms.ListBox AdminsListBox; - private System.Windows.Forms.Label AdminsTitle; - private System.Windows.Forms.Button DeadminButton; - private System.Windows.Forms.ListBox AdminRanksListBox; - private System.Windows.Forms.Label RanksTitle; - private System.Windows.Forms.Button RemoveRankButton; - private System.Windows.Forms.TextBox AddRankTextBox; - private System.Windows.Forms.Button AddRankButton; - private System.Windows.Forms.Button ApplyAdminRankButton; - private System.Windows.Forms.CheckedListBox PermissionsListBox; - private System.Windows.Forms.Label PermissionsTItle; - private System.Windows.Forms.CheckedListBox NegativePermissions; - private System.Windows.Forms.Label NegativePermissionsTitle; - private System.Windows.Forms.Label ConfigDisabledLabel; + private System.Windows.Forms.Label ChannelsTitle; + private System.Windows.Forms.Label ChatAdminsTitle; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.RadioButton AdminModeSpecial; + private System.Windows.Forms.RadioButton AdminModeNormal; + private System.Windows.Forms.TabPage ServerPanel; + private System.Windows.Forms.CheckBox AutostartCheckbox; + private System.Windows.Forms.CheckBox WebclientCheckBox; + private System.Windows.Forms.Button WorldAnnounceButton; + private System.Windows.Forms.TextBox WorldAnnounceField; + private System.Windows.Forms.TextBox ServerPathTextbox; + private System.Windows.Forms.TextBox projectNameText; + private System.Windows.Forms.Label WorldAnnounceLabel; + private System.Windows.Forms.ComboBox SecuritySelector; + private System.Windows.Forms.Label SecurityTitle; private System.Windows.Forms.Button ResetTestmerge; + private System.Windows.Forms.Label ServerPathLabel; + private System.Windows.Forms.Button CompileCancelButton; + private System.Windows.Forms.Label ProjectPathLabel; + private System.Windows.Forms.Label PortLabel; + private System.Windows.Forms.NumericUpDown PortSelector; + private System.Windows.Forms.Label ServerPRLabel; + private System.Windows.Forms.NumericUpDown ServerTestmergeInput; + private System.Windows.Forms.Button TestmergeButton; + private System.Windows.Forms.Button UpdateTestmergeButton; + private System.Windows.Forms.Button UpdateMergeButton; + private System.Windows.Forms.Button UpdateHardButton; + private System.Windows.Forms.Button ServerGRestartButton; + private System.Windows.Forms.CheckBox ServerGStopButton; + private System.Windows.Forms.Button ServerRestartButton; + private System.Windows.Forms.Button ServerStopButton; + private System.Windows.Forms.Button ServerStartButton; + private System.Windows.Forms.Label CompilerStatusLabel; + private System.Windows.Forms.Label CompilerLabel; + private System.Windows.Forms.Button compileButton; + private System.Windows.Forms.Button initializeButton; + private System.Windows.Forms.ProgressBar compilerProgressBar; + private System.Windows.Forms.Label ServerStatusLabel; + private System.Windows.Forms.Label ServerStatusTitle; + private System.Windows.Forms.TabPage BYONDPanel; + private System.Windows.Forms.Label LatestVersionLabel; + private System.Windows.Forms.Label LatestVersionTitle; + private System.Windows.Forms.Label StagedVersionLabel; + private System.Windows.Forms.Label StagedVersionTitle; + private System.Windows.Forms.Label StatusLabel; + private System.Windows.Forms.Label VersionLabel; + private System.Windows.Forms.Label VersionTitle; + private System.Windows.Forms.Label MinorVersionLabel; + private System.Windows.Forms.Label MajorVersionLabel; + private System.Windows.Forms.Button UpdateButton; + private System.Windows.Forms.NumericUpDown MinorVersionNumeric; + private System.Windows.Forms.NumericUpDown MajorVersionNumeric; + private System.Windows.Forms.ProgressBar UpdateProgressBar; private System.Windows.Forms.TabPage RepoPanel; + private System.Windows.Forms.Button RepoRefreshButton; + private System.Windows.Forms.ListBox BackupTagsList; private System.Windows.Forms.Button ResetRemote; private System.Windows.Forms.Button RecloneButton; private System.Windows.Forms.TextBox PythonPathText; + private System.Windows.Forms.TextBox RepoBranchTextBox; + private System.Windows.Forms.TextBox RepoRemoteTextBox; private System.Windows.Forms.Label PythonPathLabel; private System.Windows.Forms.Button RepoGenChangelogButton; private System.Windows.Forms.NumericUpDown TestmergeSelector; private System.Windows.Forms.ListBox TestMergeListLabel; private System.Windows.Forms.Label CurrentRevisionLabel; private System.Windows.Forms.Button RepoApplyButton; - private System.Windows.Forms.TextBox RepoBranchTextBox; - private System.Windows.Forms.TextBox RepoRemoteTextBox; private System.Windows.Forms.Button HardReset; private System.Windows.Forms.Button UpdateRepoButton; private System.Windows.Forms.Button MergePRButton; @@ -2131,28 +1756,6 @@ private System.Windows.Forms.Button CloneRepositoryButton; private System.Windows.Forms.Label RepoProgressBarLabel; private System.Windows.Forms.ProgressBar RepoProgressBar; - private System.Windows.Forms.ListBox BackupTagsList; - private System.Windows.Forms.ComboBox SecuritySelector; - private System.Windows.Forms.Label SecurityTitle; - private System.Windows.Forms.Label VisibilityTitle; - private System.ComponentModel.BackgroundWorker ServerStartBGW; - private System.Windows.Forms.Button RepoRefreshButton; - private System.Windows.Forms.ComboBox IRCModesComboBox; - private System.Windows.Forms.TextBox AdminChannelsTextbox; - private System.Windows.Forms.TextBox WDChannelsTextbox; - private System.Windows.Forms.TextBox GameChannelsTextbox; - private System.Windows.Forms.TextBox DevChannelsTextbox; - private System.Windows.Forms.Panel panel1; - private System.Windows.Forms.RadioButton AdminModeSpecial; - private System.Windows.Forms.RadioButton AdminModeNormal; - private System.Windows.Forms.Label label5; - private System.Windows.Forms.Label label4; - private System.Windows.Forms.Label label3; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.Button WorldAnnounceButton; - private System.Windows.Forms.TextBox WorldAnnounceField; - private System.Windows.Forms.Button CompileCancelButton; - private System.Windows.Forms.CheckBox WebclientCheckBox; + private System.Windows.Forms.TabControl Panels; } } diff --git a/TGControlPanel/Main.cs b/TGControlPanel/Main.cs index f117674801..18cade4c7d 100644 --- a/TGControlPanel/Main.cs +++ b/TGControlPanel/Main.cs @@ -10,12 +10,11 @@ namespace TGControlPanel { InitializeComponent(); Panels.SelectedIndexChanged += Panels_SelectedIndexChanged; - Panels.SelectedIndex += Properties.Settings.Default.LastPageIndex; + Panels.SelectedIndex += Math.Min(Properties.Settings.Default.LastPageIndex, Panels.TabCount - 1); InitRepoPage(); InitBYONDPage(); InitServerPage(); LoadChatPage(); - InitConfigPage(); } private void Main_Resize(object sender, EventArgs e) diff --git a/TGControlPanel/TGControlPanel.csproj b/TGControlPanel/TGControlPanel.csproj index a643b30a5c..ff533121a0 100644 --- a/TGControlPanel/TGControlPanel.csproj +++ b/TGControlPanel/TGControlPanel.csproj @@ -53,12 +53,6 @@ Form - - Component - - - Form - Form diff --git a/TGS3.json b/TGS3.json new file mode 100644 index 0000000000..a6e21bf294 --- /dev/null +++ b/TGS3.json @@ -0,0 +1,58 @@ +{ + "documentation": [ + "Place this file in the root of your repo in order to configure TGS3 per repository options", + "This file is not required, it merely configures changelog generation, static directories, and .dlls", + "All keys except the ones below are ignored by the service" + ], + "changelog": { + "script": "path/to/changelog/generator.py", + "arguments": "space delimited \"script arguments\"", + "pip_dependancies": [ + "optional", + "list", + "of", + "pip", + "install", + "packages" + ] + }, + "synchronize_paths": [ + "list", + "of", + "regex", + "paths", + "to", + "stage", + "for", + "git", + "commit" + ], + "static_directories": [ + "list", + "of", + "directories", + "that", + "should", + "not", + "be", + "changed", + "with", + "repo", + "updates", + "et al" + ], + "dlls": [ + "list", + "of", + ".dlls", + "that", + "your", + "game", + "uses", + "these", + "will", + "be", + "handled", + "properly" + ] +} \ No newline at end of file diff --git a/TGServerService/Compiler.cs b/TGServerService/Compiler.cs index 43fb196608..f6fad6f544 100644 --- a/TGServerService/Compiler.cs +++ b/TGServerService/Compiler.cs @@ -22,8 +22,6 @@ namespace TGServerService #endregion const string StaticDirs = "Static"; - const string StaticDataDir = StaticDirs + "/data"; - const string StaticConfigDir = StaticDirs + "/config"; const string StaticBackupDir = "Static_BACKUP"; const string LibMySQLFile = "/libmysql.dll"; @@ -40,9 +38,6 @@ namespace TGServerService const string InterfaceDLLName = "TGServiceInterface.dll"; - List copyExcludeList = new List { ".git", "data", "config", "libmysql.dll" }; //shit we handle - List deleteExcludeList = new List { "data", "config", "libmysql.dll" }; //shit we handle - object CompilerLock = new object(); TGCompilerStatus compilerCurrentStatus; string lastCompilerError; @@ -130,32 +125,37 @@ namespace TGServerService return TGCompilerStatus.Uninitialized; } + void CleanGameFolderList(string GameDir, IList theList) + { + foreach (var I in theList) + { + var the_path = Path.Combine(GameDir, I); + if (Directory.Exists(the_path)) + Directory.Delete(the_path); + } + } + //we need to remove symlinks before we can recursively delete void CleanGameFolder() { if (Directory.Exists(Path.Combine(GameDirA, InterfaceDLLName))) Directory.Delete(Path.Combine(GameDirA, InterfaceDLLName)); - if (Directory.Exists(GameDirA + LibMySQLFile)) - Directory.Delete(GameDirA + LibMySQLFile); - - if (Directory.Exists(GameDirA + "/data")) - Directory.Delete(GameDirA + "/data"); - - if (Directory.Exists(GameDirA + "/config")) - Directory.Delete(GameDirA + "/config"); + var Config = LoadRepoConfig(); + if (Config != null) + { + CleanGameFolderList(GameDirA, Config.StaticDirectoryPaths); + CleanGameFolderList(GameDirA, Config.DLLPaths); + } if (Directory.Exists(Path.Combine(GameDirB, InterfaceDLLName))) Directory.Delete(Path.Combine(GameDirB, InterfaceDLLName)); - if (Directory.Exists(GameDirB + LibMySQLFile)) - Directory.Delete(GameDirB + LibMySQLFile); - - if (Directory.Exists(GameDirB + "/data")) - Directory.Delete(GameDirB + "/data"); - - if (Directory.Exists(GameDirB + "/config")) - Directory.Delete(GameDirB + "/config"); + if (Config != null) + { + CleanGameFolderList(GameDirB, Config.StaticDirectoryPaths); + CleanGameFolderList(GameDirB, Config.DLLPaths); + } if (Directory.Exists(GameDirLive)) Directory.Delete(GameDirLive); @@ -194,14 +194,14 @@ namespace TGServerService Directory.CreateDirectory(GameDirA); Directory.CreateDirectory(GameDirB); - CreateSymlink(GameDirA + "/data", StaticDataDir); - CreateSymlink(GameDirB + "/data", StaticDataDir); + var Config = LoadRepoConfig(); - CreateSymlink(GameDirA + "/config", StaticConfigDir); - CreateSymlink(GameDirB + "/config", StaticConfigDir); - - CreateSymlink(GameDirA + LibMySQLFile, StaticDirs + LibMySQLFile); - CreateSymlink(GameDirB + LibMySQLFile, StaticDirs + LibMySQLFile); + if (Config != null) { + foreach (var I in Config.StaticDirectoryPaths) + CreateSymlink(Path.Combine(GameDirA, I), Path.Combine(StaticDirs, I)); + foreach (var I in Config.DLLPaths) + CreateSymlink(Path.Combine(GameDirA, I), Path.Combine(StaticDirs, I)); + } CreateSymlink(Path.Combine(GameDirA, InterfaceDLLName), Path.Combine(StaticDirs, InterfaceDLLName)); CreateSymlink(Path.Combine(GameDirB, InterfaceDLLName), Path.Combine(StaticDirs, InterfaceDLLName)); @@ -316,16 +316,33 @@ namespace TGServerService var resurrectee = GetStagingDir(); - Program.DeleteDirectory(resurrectee, true, deleteExcludeList); + var Config = LoadRepoConfig(); + var deleteExcludeList = new List(); + if (Config != null) + { + deleteExcludeList.AddRange(Config.StaticDirectoryPaths); + deleteExcludeList.AddRange(Config.DLLPaths); + Program.DeleteDirectory(resurrectee, true, deleteExcludeList); + } Directory.CreateDirectory(resurrectee + "/.git/logs"); - if (!Directory.Exists(resurrectee + "/config")) - CreateSymlink(resurrectee + "/config", StaticConfigDir); - if (!Directory.Exists(resurrectee + "/data")) - CreateSymlink(resurrectee + "/data", StaticDataDir); - if (!File.Exists(resurrectee + LibMySQLFile)) - CreateSymlink(resurrectee + LibMySQLFile, StaticDirs + LibMySQLFile); + if (Config != null) + { + foreach (var I in Config.StaticDirectoryPaths) + { + var the_path = Path.Combine(resurrectee, I); + if (!Directory.Exists(the_path)) + CreateSymlink(Path.Combine(resurrectee, I), Path.Combine(StaticDirs, I)); + } + foreach (var I in Config.DLLPaths) + { + var the_path = Path.Combine(resurrectee, I); + if (!File.Exists(the_path)) + CreateSymlink(the_path, Path.Combine(StaticDirs, I)); + } + } + if (!File.Exists(Path.Combine(resurrectee, InterfaceDLLName))) CreateSymlink(Path.Combine(resurrectee, InterfaceDLLName), Path.Combine(StaticDirs, InterfaceDLLName)); @@ -354,7 +371,8 @@ namespace TGServerService } try { - Program.CopyDirectory(RepoPath, resurrectee, copyExcludeList); + deleteExcludeList.Add(".git"); + Program.CopyDirectory(RepoPath, resurrectee, deleteExcludeList); //just the tip const string GitLogsDir = "/.git/logs"; Program.CopyDirectory(RepoPath + GitLogsDir, resurrectee + GitLogsDir); diff --git a/TGServerService/Config.cs b/TGServerService/Config.cs index 90660180eb..11d0f5c2ce 100644 --- a/TGServerService/Config.cs +++ b/TGServerService/Config.cs @@ -11,475 +11,7 @@ namespace TGServerService //knobs and such partial class TGStationServer : ITGConfig { - const string ConfigPostfix = "/config.txt"; - const string DBConfigPostfix = "/dbconfig.txt"; - const string GameConfigPostfix = "/game_options.txt"; - - const string AdminRanksConfig = StaticConfigDir + "/admin_ranks.txt"; - const string AdminRanksRepo = RepoConfig + "/admin_ranks.txt"; - const string AdminConfig = StaticConfigDir + "/admins.txt"; - const string InteropConfig = StaticConfigDir + "/server_to_tool_bridge_port.txt"; - const string MapConfig = StaticConfigDir + "/maps.txt"; - const string JobsConfig = StaticConfigDir + "/jobs.txt"; - - const string TitleImagesConfig = StaticConfigDir + "/title_screens/images"; - object configLock = new object(); //for atomic reads/writes - - //Write out the admin assoiciations to admins.txt - string WriteMins(IDictionary current_mins) - { - string outText = ""; - foreach (var I in current_mins) - outText += I.Key + " = " + I.Value + "\r\n"; - - try - { - lock (configLock) - { - File.WriteAllText(AdminConfig, outText); - } - return null; - } - catch (Exception e) - { - return e.ToString(); - } - } - - //public api - public string Addmin(string ckey, string rank) - { - var Aranks = AdminRanks(out string error); - if (Aranks != null) - { - if (Aranks.Keys.Contains(rank)) - { - var current_mins = Admins(out error); - if (current_mins != null) - { - current_mins[ckey] = rank; - return WriteMins(current_mins); - } - return error; - } - return "Rank " + rank + " does not exist"; - } - return error; - } - - //public api - public IDictionary> AdminRanks(out string error) - { - - try - { - List fileLines; - lock (configLock) - { - fileLines = new List(File.ReadAllLines(AdminRanksConfig)); - } - - var result = new Dictionary>(); - IDictionary previousPermissions = new Dictionary(); - foreach (var L in fileLines) - { - if (L.Length > 0 && L[0] == '#') - continue; - - var splits = L.Split('='); - - if (splits.Length < 2) //??? - continue; - - var rank = splits[0].Trim(); - - var tmp = new List(splits); - tmp.RemoveAt(0); - splits = String.Join(" ", tmp).Split(' '); - - var asList = new List(splits); - asList.RemoveAt(0); - - var perms = ProcessPermissions(asList, previousPermissions); - result.Add(rank, perms); - previousPermissions = perms; - } - error = null; - return result; - } - catch (Exception e) - { - error = e.ToString(); - return null; - } - } - - //same thing the proc in admin_ranks.dm does, properly calculates string permission sets and returns them as an enum - IDictionary ProcessPermissions(IList text, IDictionary previousPermissions) - { - IDictionary permissions = new Dictionary(); - foreach(var E in text) - { - var trimmed = E.Trim(); - - if (trimmed.Length == 0) - continue; - - bool adding; - switch (trimmed[0]) - { - case '-': - adding = false; - trimmed = trimmed.Substring(1); - break; - case '+': - adding = true; - trimmed = trimmed.Substring(1); - break; - default: - adding = true; - break; - } - - if (trimmed.Length == 0) - continue; - - var perms = StringToPermission(trimmed, previousPermissions, adding); - - if(perms != null) - foreach(var perm in perms) - { - if(!permissions.ContainsKey(perm.Key)) - permissions.Add(perm); - else - { - var wasAdded = permissions[perm.Key]; - if (wasAdded == perm.Value) - continue; - //cancel each other out - permissions.Remove(perm.Key); - } - } - - } - return permissions; - } - - //basic conversion - IDictionary StringToPermission(string permstring, IDictionary oldpermissions, bool adding) - { - switch (permstring.Trim().ToUpper()) - { - case "@": - case "PREV": - return oldpermissions; - default: - return new Dictionary { { permstring, adding } }; - } - } - - //public api - public IDictionary Admins(out string error) - { - try - { - List fileLines; - lock (configLock) - { - fileLines = new List(File.ReadAllLines(AdminConfig)); - } - - var mins = new Dictionary(); - foreach (var L in fileLines) - { - var trimmed = L.Trim(); - if (L.Length == 0 || L[0] == '#') - continue; - - var splits = L.Split('='); - - if (splits.Length != 2) - continue; - var key = splits[0].Trim(); - if (!mins.ContainsKey(key)) - mins.Add(key, splits[1].Trim()); - //don't care about dupes - } - error = null; - return mins; - } - catch (Exception e) - { - error = e.ToString(); - return null; - } - } - - //public api - public string Deadmin(string admin) - { - var current_mins = Admins(out string error); - if (current_mins != null) - { - if (current_mins.ContainsKey(admin)) - { - current_mins.Remove(admin); - return WriteMins(current_mins); - } - return null; - } - return error; - } - - //public api - public IList Jobs(out string error) - { - try - { - IList lines; - lock (configLock) - { - lines = File.ReadAllLines(JobsConfig); - } - - IList results = new List(); - - foreach (var L in lines) - { - var trimmed = L.Trim(); - if (trimmed.Length == 0 || trimmed[0] == '#') - continue; - - var splits = trimmed.Split('='); - - if (splits.Length < 2) - continue; - - var countSplits = splits[1].Split(','); - if (countSplits.Length < 2) - continue; - - int total, spawn; - try - { - total = Convert.ToInt32(countSplits[0]); - spawn = Convert.ToInt32(countSplits[1]); - } - catch - { - continue; - } - - results.Add(new JobSetting() - { - Name = splits[0], - TotalPositions = total, - SpawnPositions = spawn, - }); - } - - error = null; - return results; - } - catch (Exception e) - { - error = e.ToString(); - return null; - } - } - - //public api - public ushort InteropPort(out string error) - { - try - { - error = null; - lock (configLock) - { - return Convert.ToUInt16(File.ReadAllText(InteropConfig)); - } - } - catch (Exception e) - { - error = e.ToString(); - return 0; - } - } - - //TGConfigType to the right path, Repo or static - string ConfigTypeToPath(TGConfigType type, bool repo) - { - var path = repo ? RepoConfig : StaticConfigDir; - switch (type) - { - case TGConfigType.Database: - return path + DBConfigPostfix; - case TGConfigType.Game: - return path + GameConfigPostfix; - case TGConfigType.General: - return path + ConfigPostfix; - default: - throw new Exception("Bad TGConfigType: " + type); - } - } - - string TranslateConfigComment(string input) - { - //https://github.com/tgstation/tgstation/pull/27632#discussion_r118389053 - return input - .Replace("uncomment", "activate") - .Replace("Uncomment", "Activate") - .Replace("commented out", "deactivated") - .Replace("comment this out", "deactivate") - .Replace("Comment this out", "Deactivate") - .Replace("uncommenting", "activating") - .Replace("Uncommenting", "Activating") - .Replace("uncommented", "activated"); - } - - //public api - public IList Retrieve(TGConfigType type, out string error) - { - try - { - IList RepoConfigData, StaticConfigData; - var repolocked = false; - if (!Monitor.TryEnter(RepoLock)) - repolocked = true; - try - { - if (!repolocked && RepoBusy) - repolocked = true; - if (repolocked) - { - error = "Repo locked!"; - return null; - } - - lock (configLock) - { - RepoConfigData = new List(File.ReadAllLines(ConfigTypeToPath(type, true))); - StaticConfigData = new List(File.ReadAllLines(ConfigTypeToPath(type, false))); - } - } - finally - { - Monitor.Exit(RepoLock); - } - - //## designates an option comment - //# designates a commented out option - - IDictionary repoConfig = new Dictionary(); - IList results = new List(); - - ConfigSetting currentSetting = new ConfigSetting(); - - foreach (var I in RepoConfigData) - { - var trimmed = I.Trim(); - if (trimmed.Length == 0) - continue; - var commented = trimmed[0] == '#'; - if (commented) - { - if (trimmed.Length == 1) - continue; - - if (trimmed[1] == '#') - { - //comment line - if (currentSetting.Comment == null) - currentSetting.Comment = TranslateConfigComment(trimmed.Substring(2).Trim()); - else - currentSetting.Comment += "\r\n" + TranslateConfigComment(trimmed.Substring(2).Trim()); - continue; - } - if (trimmed.Length == 2) - continue; - trimmed = trimmed.Substring(1).Trim(); - } - var splits = new List(trimmed.Split(' ')); - currentSetting.Name = splits.First().ToUpper(); - splits.RemoveAt(0); - var value = String.Join(" ", splits); - if (commented && value == "") - value = null; - currentSetting.ExistsInRepo = true; - - //multi-keying - if (repoConfig.Keys.Contains(currentSetting.Name)) - { - currentSetting = repoConfig[currentSetting.Name]; - if (!currentSetting.IsMultiKey) - { - currentSetting.IsMultiKey = true; - currentSetting.DefaultValues = new List { currentSetting.DefaultValue, value }; - currentSetting.DefaultValue = null; - } - else - currentSetting.DefaultValues.Add(value); - } - else - { - currentSetting.DefaultValue = value; - repoConfig.Add(currentSetting.Name, currentSetting); - results.Add(currentSetting); - } - currentSetting = new ConfigSetting(); - } - //gather the stuff from our config - foreach (var I in StaticConfigData) - { - - var trimmed = I.Trim(); - if (trimmed.Length == 0) - continue; - var commented = trimmed[0] == '#'; - if (trimmed.Length < 3 || trimmed[1] == '#' || commented) - continue; - if (commented) - trimmed = trimmed.Substring(1).Trim(); - var splits = new List(trimmed.Split(' ')); - var name = splits[0].ToUpper(); - if (!repoConfig.Keys.Contains(name)) - { - currentSetting = new ConfigSetting() - { - Comment = "SETTING DOES NOT EXIST IN REPOSITORY", - Name = name - }; - //don't support multikeying here - results.Add(currentSetting); - } - else if (commented) - continue; - else - currentSetting = repoConfig[name]; - currentSetting.ExistsInStatic = true; - splits.RemoveAt(0); - var value = String.Join(" ", splits); - if (currentSetting.IsMultiKey) - { - if (currentSetting.Values == null) - currentSetting.Values = new List { value }; - else - currentSetting.Values.Add(value); - } - else - currentSetting.Value = value; - } - error = null; - return results; - } - catch (Exception e) - { - error = e.ToString(); - return null; - } - } - //public api public string ServerDirectory() { @@ -487,232 +19,42 @@ namespace TGServerService } //public api - public string SetItem(TGConfigType type, ConfigSetting newSetting) - { - try - { - var entries = Retrieve(type, out string error); - if (entries == null) - return error; - - //serialize it - var asStrings = new List(); - bool somethingChanged = false; - foreach (var I in entries) - { - if (newSetting.Name == I.Name) - { - somethingChanged = true; - if (newSetting.Value == null && newSetting.Values == null) //unset - continue; - I.Value = newSetting.Value; - I.Values = newSetting.Values; - I.IsMultiKey = newSetting.IsMultiKey; - } - else if (!I.ExistsInStatic) - continue; - if (I.IsMultiKey) - foreach (var J in I.Values) - asStrings.Add((I.Name + " " + J).Trim()); - else - asStrings.Add((I.Name + " " + I.Value).Trim()); - } - - if (!somethingChanged) - return null; - - //write it out - lock (configLock) - { - File.WriteAllLines(ConfigTypeToPath(type, false), asStrings); - } - - return null; - } - catch (Exception e) - { - return e.ToString(); - } - } - - //public api - public string SetJob(JobSetting job) - { - try - { - var entries = Jobs(out string error); - if (entries == null) - return error; - - var lines = new List(); - foreach (var J in entries) - { - var thingToUse = J.Name == job.Name ? job : J; - lines.Add(String.Format("{0}={1},{2}", thingToUse.Name, thingToUse.TotalPositions, thingToUse.SpawnPositions)); - } - - lock (configLock) - { - File.WriteAllLines(JobsConfig, lines); - } - return null; - } - catch (Exception e) - { - return e.ToString(); - } - } - - public IList MapSettings(out string error) - { - try - { - IList lines; - lock (configLock) - { - lines = File.ReadAllLines(MapConfig); - } - - MapSetting currentMap = null, lastDefaultMap = null; - IList results = new List(); - foreach(var L in lines) - { - var trimmed = L.Trim(); - if (trimmed.Length == 0 || trimmed[0] == '#') - continue; - var splits = trimmed.Split(' '); - switch (splits[0].ToLower()) - { - case "map": - if (splits.Length < 2) - continue; - currentMap = new MapSetting() - { - Name = splits[1], //defaults in game - Enabled = true, - VoteWeight = 1, - }; - break; - case "endmap": - if (currentMap != null) - results.Add(currentMap); - currentMap = null; - break; - case "minplayer": - case "minplayers": - if (splits.Length < 2) - continue; - if (currentMap != null) - try - { - currentMap.MinPlayers = Convert.ToInt32(splits[1]); - } - catch { - continue; - } - break; - case "maxplayer": - case "maxplayers": - if (splits.Length < 2) - continue; - if (currentMap != null) - try - { - currentMap.MaxPlayers = Convert.ToInt32(splits[1]); - } - catch - { - continue; - } - break; - case "weight": - case "voteweight": - if (splits.Length < 2) - continue; - if (currentMap != null) - try - { - currentMap.VoteWeight = float.Parse(splits[1]); - } - catch - { - continue; - } - break; - case "default": - case "defaultmap": - if (currentMap == null) - continue; - if (lastDefaultMap != null) - lastDefaultMap.Default = false; - currentMap.Default = true; - lastDefaultMap = currentMap; - break; - case "disabled": - if (currentMap == null) - continue; - currentMap.Enabled = false; - break; - } - } - error = null; - return results; - } - catch (Exception e) - { - error = e.ToString(); - return null; - } - } - - public string SetMapSettings(MapSetting newSetting) - { - try - { - var entries = MapSettings(out string error); - if (entries == null) - return error; - - IList asStrings = new List(); - foreach (var I in entries) - { - var entryToUse = I.Name == newSetting.Name ? newSetting : I; - - asStrings.Add("map " + entryToUse.Name); - if (!entryToUse.Enabled) - asStrings.Add("\tdisabled"); - if (entryToUse.MinPlayers > 0) - asStrings.Add(String.Format("\tminplayers {0}", entryToUse.MinPlayers)); - if (entryToUse.MaxPlayers > 0) - asStrings.Add(String.Format("\tmaxplayers {0}", entryToUse.MaxPlayers)); - if (entryToUse.VoteWeight != 1) - asStrings.Add(String.Format("\tvoteweight {0}", entryToUse.VoteWeight)); - if (entryToUse.Default) - asStrings.Add("\tdefault"); - asStrings.Add("endmap"); - } - - lock (configLock) - { - File.WriteAllLines(MapConfig, asStrings); - } - - return null; - } - catch (Exception e) - { - return e.ToString(); - } - } [OperationBehavior(Impersonation = ImpersonationOption.Required)] - public string ReadRaw(string configRelativePath, bool repo, out string error) + public string ReadText(string staticRelativePath, bool repo, out string error) { try { - var configDir = repo ? RepoConfig : StaticConfigDir; - var path = configDir + "/" + configRelativePath; - lock (configLock) { + var configDir = repo ? RepoPath : StaticDirs; + + var path = Path.Combine(configDir, staticRelativePath); + lock (configLock) + { var di1 = new DirectoryInfo(configDir); + if (repo) + { + //ensure we aren't trying to read anything outside the static dirs + var Config = LoadRepoConfig(); + if (Config == null) + { + error = "Unable to load static directory configuration"; + return null; + } + var Found = false; + foreach (var I in Config.StaticDirectoryPaths) + { + if (di1.FullName == new DirectoryInfo(Path.Combine(RepoPath, I)).FullName) + { + Found = true; + break; + } + } + if (!Found) + { + error = "File is not in a configured static directory!"; + return null; + } + } + var di2 = new DirectoryInfo(new FileInfo(path).Directory.FullName); var good = false; @@ -728,7 +70,7 @@ namespace TGServerService if (!good) { - error = "Cannot read above config directory!"; + error = "Cannot read above static directories!"; return null; } @@ -743,14 +85,14 @@ namespace TGServerService } } [OperationBehavior(Impersonation = ImpersonationOption.Required)] - public string WriteRaw(string configRelativePath, string data) + public string WriteText(string staticRelativePath, string data) { try { - var path = StaticConfigDir + "/" + configRelativePath; + var path = Path.Combine(StaticDirs, staticRelativePath); lock (configLock) { - var di1 = new DirectoryInfo(StaticConfigDir); + var di1 = new DirectoryInfo(StaticDirs); var destdir = new FileInfo(path).Directory.FullName; var di2 = new DirectoryInfo(destdir); @@ -766,7 +108,7 @@ namespace TGServerService } if (!good) - return "Cannot write above config directory!"; + return "Cannot write above static directories!"; Directory.CreateDirectory(destdir); File.WriteAllText(path, data); return null; @@ -777,118 +119,5 @@ namespace TGServerService return e.ToString(); } } - - public string SetTitleImage(string filename, byte[] data) - { - try - { - lock (configLock) - { - var path = StaticConfigDir + TitleImagesConfig + "/" + filename; - File.WriteAllBytes(path, data); - return null; - } - } - catch (Exception e) - { - return e.ToString(); - } - } - - public IDictionary ListPermissions(out string error) - { - try - { - IList lines; - lock (configLock) - { - lines = new List(File.ReadAllLines(AdminRanksRepo)); - } - IDictionary res = new Dictionary(); - - var inKeywordsBlock = false; - foreach(var I in lines) - { - var trimmed = I.Trim(); - if (trimmed.Length == 0 || trimmed[0] != '#') - continue; - - var splits = trimmed.Substring(1).Trim().Split(' '); - - if (splits[0] == "BEGIN_KEYWORDS") - inKeywordsBlock = true; - else if (splits[0] == "END_KEYWORDS") - inKeywordsBlock = false; - else if (inKeywordsBlock) - { - var key = splits[0]; - if (key.Length < 2 || key[0] != '+') //bad format - continue; - key = key.Substring(1); - - string description = ""; - bool found = false; - foreach (var J in splits) - if (found) - description += J + " "; - else if (J.Length == 1 && J[0] == '=') - found = true; - res.Add(key, description); - } - } - error = null; - return res; - } - catch (Exception e) - { - error = e.ToString(); - return null; - } - } - string WriteAdminRanks(IDictionary> ranks) - { - try - { - var lines = new List(); - foreach (var I in ranks) - { - var line = I.Key + " ="; - foreach (var J in I.Value) - line += " " + (J.Value ? "+" : "-") + J.Key; - lines.Add(line); - } - lock (configLock) - { - File.WriteAllLines(AdminRanksConfig, lines); - } - return null; - } - catch (Exception e) - { - return e.ToString(); - } - } - public string RemoveAdminRank(string rank) - { - var ranks = AdminRanks(out string error); - if (ranks == null) - return error; - if (!ranks.ContainsKey(rank)) - return "Given rank does not exist!"; - ranks.Remove(rank); - return WriteAdminRanks(ranks); - } - - public string SetAdminRank(string rankName, IDictionary permissions) - { - var ranks = AdminRanks(out string error); - if (ranks == null) - return error; - if (ranks.ContainsKey(rankName)) - ranks[rankName] = permissions; - else - ranks.Add(rankName, permissions); - return WriteAdminRanks(ranks); - } } } diff --git a/TGServerService/DreamDaemon.cs b/TGServerService/DreamDaemon.cs index a0c10da0ef..825f8a5c41 100644 --- a/TGServerService/DreamDaemon.cs +++ b/TGServerService/DreamDaemon.cs @@ -38,7 +38,6 @@ namespace TGServerService //Only need 1 proc instance void InitDreamDaemon() { - UpdateInterfaceDll(false); var Reattach = Properties.Settings.Default.ReattachToDD; if (Reattach) try @@ -374,7 +373,7 @@ namespace TGServerService return; //Copy the interface dll to the static dir var InterfacePath = Assembly.GetAssembly(typeof(DDInteropCallHolder)).Location; - File.Copy(InterfacePath, targetPath, true); + Program.CopyFileForceDirectories(InterfacePath, targetPath, true); } //used by Start and Watchdog to start a DD instance diff --git a/TGServerService/InterfaceBase.cs b/TGServerService/InterfaceBase.cs index 83fb9a0642..6728d5c78f 100644 --- a/TGServerService/InterfaceBase.cs +++ b/TGServerService/InterfaceBase.cs @@ -18,6 +18,7 @@ namespace TGServerService { FindTheDroidsWereLookingFor(); InitChat(); + InitRepo(); InitByond(); InitCompiler(); InitDreamDaemon(); diff --git a/TGServerService/Program.cs b/TGServerService/Program.cs index 922ab55e7d..8a1fdff9f1 100644 --- a/TGServerService/Program.cs +++ b/TGServerService/Program.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using System.IO; using System.Security.Cryptography; -using System.Text; namespace TGServerService { @@ -12,6 +11,16 @@ namespace TGServerService //Everything in this file is just generic helpers + public static void CopyFileForceDirectories(string source, string dest, bool overwrite) + { + try + { + Directory.CreateDirectory(Path.GetDirectoryName(dest)); + } + catch { } //we don't care if the above errors + File.Copy(source, dest, overwrite); //if this throws errors thats all we care about + } + //http://stackoverflow.com/questions/1701457/directory-delete-doesnt-work-access-denied-error-but-under-windows-explorer-it public static void DeleteDirectory(string path, bool ContentsOnly = false, IList excludeRoot = null) { @@ -30,6 +39,7 @@ namespace TGServerService di.Delete(true); } } + static void NormalizeAndDelete(DirectoryInfo dir, IList excludeRoot) { foreach (var subDir in dir.GetDirectories()) diff --git a/TGServerService/Repository.cs b/TGServerService/Repository.cs index 3e6e266bce..2e378ec579 100644 --- a/TGServerService/Repository.cs +++ b/TGServerService/Repository.cs @@ -14,8 +14,7 @@ namespace TGServerService partial class TGStationServer : ITGRepository, IDisposable { const string RepoPath = "Repository"; - const string RepoConfig = RepoPath + "/config"; - const string RepoData = RepoPath + "/data"; + const string RepoTGS3SettingsPath = RepoPath + "/TGS3.json"; const string RepoErrorUpToDate = "Already up to date!"; const string SSHPushRemote = "ssh_push_target"; const string PrivateKeyPath = "RepoKey/private_key.txt"; @@ -30,6 +29,80 @@ namespace TGServerService Repository Repo; int currentProgress = -1; + /// + /// Repo specific information about the installation + /// Requires RepoLock and !RepoBusy to be instantiated + /// + class RepoConfig + { + public RepoConfig() + { + if (!File.Exists(RepoTGS3SettingsPath)) + return; + var rawdata = File.ReadAllText(RepoTGS3SettingsPath); + var Deserializer = new JavaScriptSerializer(); + var json = Deserializer.Deserialize>(rawdata); + try + { + var details = (IDictionary)json["changelog"]; + PathToChangelogPy = (string)details["script"]; + ChangelogPyArguments = (string)details["arguments"]; + ChangelogSupport = true; + try + { + PipDependancies = (IList)details["pip_dependancies"]; + } + catch { } + try + { + ChangelogPathsToStage = (IList)details["synchronize_paths"]; + } + catch { } + } + catch { + ChangelogSupport = false; + } + try + { + StaticDirectoryPaths = (IList)json["static_directories"]; + } + catch { } + try + { + DLLPaths = (IList)json["dlls"]; + } + catch { } + } + public readonly bool ChangelogSupport; + public readonly string PathToChangelogPy; + public readonly string ChangelogPyArguments; + public readonly IList PipDependancies = new List(); + public readonly IList ChangelogPathsToStage = new List(); + public readonly IList StaticDirectoryPaths = new List(); + public readonly IList DLLPaths = new List(); + } + + RepoConfig _CurrentRepoConfig; + + void InitRepo() + { + if(Exists()) + UpdateInterfaceDll(false); + } + + RepoConfig LoadRepoConfig() + { + if (_CurrentRepoConfig == null) + lock (RepoLock) + { + if (RepoBusy) + return null; + if (LoadRepo() == null) + _CurrentRepoConfig = new RepoConfig(); + } + return _CurrentRepoConfig; + } + //public api public bool OperationInProgress() { @@ -155,12 +228,8 @@ namespace TGServerService //create an ssh remote for pushing Repo.Network.Remotes.Add(SSHPushRemote, RepoURL.Replace("git://", "ssh://").Replace("https://", "ssh://")); - lock (configLock) - { - Program.CopyDirectory(RepoConfig, StaticConfigDir); - } - Program.CopyDirectory(RepoData, StaticDataDir, null, true); - File.Copy(RepoPath + LibMySQLFile, StaticDirs + LibMySQLFile, true); + InitialConfigureRepository(); + SendMessage("REPO: Clone complete!", ChatMessageType.DeveloperInfo); TGServerService.WriteInfo("Repository {0}:{1} successfully cloned", TGServerService.EventID.RepoClone); } @@ -185,6 +254,48 @@ namespace TGServerService } } + void InitialConfigureRepository() + { + Directory.CreateDirectory(StaticDirs); + UpdateInterfaceDll(false); + var Config = new RepoConfig(); //RepoBusy is set if we're here + foreach(var I in Config.StaticDirectoryPaths) + { + try + { + var source = Path.Combine(RepoPath, I); + var dest = Path.Combine(StaticDirs, I); + if (Directory.Exists(source)) + Program.CopyDirectory(source, dest); + else + Directory.CreateDirectory(dest); + } + catch + { + TGServerService.WriteWarning("Could not setup static directory: " + I, TGServerService.EventID.RepoConfigurationFail); + } + } + foreach(var I in Config.DLLPaths) + { + try + { + var source = Path.Combine(RepoPath, I); + if (!File.Exists(source)) + { + TGServerService.WriteWarning("Could not find DLL: " + I, TGServerService.EventID.RepoConfigurationFail); + continue; + } + var dest = Path.Combine(StaticDirs, I); + Program.CopyFileForceDirectories(source, dest, false); + } + catch + { + TGServerService.WriteWarning("Could not setup static DLL: " + I, TGServerService.EventID.RepoConfigurationFail); + } + } + _CurrentRepoConfig = Config; + } + //kicks off the cloning thread //public api public string Setup(string RepoURL, string BranchName) @@ -324,6 +435,7 @@ namespace TGServerService Commands.Checkout(Repo, sha, Opts); var res = ResetNoLock(null); UpdateSubmodules(); + _CurrentRepoConfig = new RepoConfig(); SendMessage("REPO: Checkout complete!", ChatMessageType.DeveloperInfo); TGServerService.WriteInfo("Repo checked out " + sha, TGServerService.EventID.RepoCheckout); return res; @@ -391,6 +503,7 @@ namespace TGServerService if (res != null) throw new Exception(res); UpdateSubmodules(); + _CurrentRepoConfig = new RepoConfig(); TGServerService.WriteInfo("Repo merge updated to " + originBranch.Tip.Sha, TGServerService.EventID.RepoMergeUpdate); return null; } @@ -497,6 +610,7 @@ namespace TGServerService lock (RepoLock) { var res = LoadRepo() ?? ResetNoLock(trackedBranch ? (Repo.Head.TrackedBranch ?? Repo.Head) : Repo.Head); + _CurrentRepoConfig = new RepoConfig(); if (res == null) { SendMessage(String.Format("REPO: Hard reset to {0}branch", trackedBranch ? "tracked " : ""), ChatMessageType.DeveloperInfo); @@ -604,6 +718,7 @@ namespace TGServerService if (Result == null) try { + _CurrentRepoConfig = new RepoConfig(); UpdateSubmodules(); } catch (Exception e) @@ -727,9 +842,12 @@ namespace TGServerService public string PushChangelog() { - if (!SSHAuth()) + var Config = LoadRepoConfig(); + if (Config == null) + return "Error reading changelog configuration"; + if(!Config.ChangelogSupport || !SSHAuth()) return null; - return LocalIsRemote() ? Commit() ?? Push() : "Can't push changelog: HEAD does not match tracked remote branch"; + return LocalIsRemote() ? Commit(Config) ?? Push() : "Can't push changelog: HEAD does not match tracked remote branch"; } FetchOptions GenerateFetchOptions() @@ -781,7 +899,7 @@ namespace TGServerService } } - string Commit() + string Commit(RepoConfig Config) { lock (RepoLock) { @@ -791,8 +909,8 @@ namespace TGServerService try { // Stage the file - Commands.Stage(Repo, "html/changelog.html"); - Commands.Stage(Repo, "html/changelogs/*"); + foreach(var I in Config.ChangelogPathsToStage) + Commands.Stage(Repo, I); var status = Repo.RetrieveStatus(); var sum = status.Added.Count() + status.Removed.Count() + status.Modified.Count(); @@ -878,9 +996,19 @@ namespace TGServerService //impl proc just for single level recursion public string GenerateChangelogImpl(out string error, bool recurse = false) { - const string ChangelogPy = RepoPath + "/tools/ss13_genchangelog.py"; - const string ChangelogHtml = RepoPath + "/html/changelog.html"; - const string ChangelogDir = RepoPath + "/html/changelogs"; + var RConfig = LoadRepoConfig(); + if (RConfig == null) + { + error = null; + return "Error loading changelog config!"; + } + if (!RConfig.ChangelogSupport) + { + error = null; + return null; + } + + string ChangelogPy = Path.Combine(RepoPath, RConfig.PathToChangelogPy); if (!Exists()) { error = "Repo does not exist!"; @@ -899,23 +1027,13 @@ namespace TGServerService error = "Missing changelog generation script!"; return null; } - if (!File.Exists(ChangelogHtml)) - { - error = "Missing changelog html!"; - return null; - } - if (!Directory.Exists(ChangelogDir)) - { - error = "Missing auto changelog directory!"; - return null; - } var Config = Properties.Settings.Default; var PythonFile = Config.PythonPath + "/python.exe"; if (!File.Exists(PythonFile)) { - error = "Cannot locate python 2.7!"; + error = "Cannot locate python!"; return null; } try @@ -925,7 +1043,7 @@ namespace TGServerService using (var python = new Process()) { python.StartInfo.FileName = PythonFile; - python.StartInfo.Arguments = String.Format("{0} {1} {2}", ChangelogPy, ChangelogHtml, ChangelogDir); + python.StartInfo.Arguments = String.Format("{0} {1}", ChangelogPy, RConfig.ChangelogPyArguments); python.StartInfo.UseShellExecute = false; python.StartInfo.RedirectStandardOutput = true; python.Start(); @@ -939,7 +1057,7 @@ namespace TGServerService } if (exitCode != 0) { - if (recurse) + if (recurse || RConfig.PipDependancies.Count == 0) { error = "Script failed!"; return result; @@ -947,12 +1065,11 @@ namespace TGServerService //update pip deps and try again string PipFile = Config.PythonPath + "/scripts/pip.exe"; - bool runningBSoup = false; - while (true) + foreach(var I in RConfig.PipDependancies) using (var pip = new Process()) { pip.StartInfo.FileName = PipFile; - pip.StartInfo.Arguments = !runningBSoup ? "install PyYaml" : "install beautifulsoup4"; + pip.StartInfo.Arguments = "install " + I; pip.StartInfo.UseShellExecute = false; pip.StartInfo.RedirectStandardOutput = true; pip.Start(); @@ -966,11 +1083,6 @@ namespace TGServerService error = "Script and pip failed!"; return result; } - - if (runningBSoup) - break; - else - runningBSoup = true; } //and recurse return GenerateChangelogImpl(out error, true); diff --git a/TGServerService/ServerService.cs b/TGServerService/ServerService.cs index 3241c4c295..061b922d9b 100644 --- a/TGServerService/ServerService.cs +++ b/TGServerService/ServerService.cs @@ -80,6 +80,7 @@ namespace TGServerService PreactionFail = 6900, InteropCallException = 7000, APIVersionMismatch = 7100, + RepoConfigurationFail = 7200, } static TGServerService ActiveService; //So everyone else can write to our eventlog diff --git a/TGServiceInterface/Config.cs b/TGServiceInterface/Config.cs index bd9f21abc2..a06dcdaec3 100644 --- a/TGServiceInterface/Config.cs +++ b/TGServiceInterface/Config.cs @@ -4,160 +4,6 @@ using System.ServiceModel; namespace TGServiceInterface { - /// - /// The type of string -> string config being modified - /// - public enum TGConfigType - { - /// - /// dbconfig.txt - /// - Database, - /// - /// game_options.txt - /// - Game, - /// - /// config.txt - /// - General, - } - - /// - /// Map configuration settings - /// - [DataContract] - public class MapSetting - { - /// - /// The name of the map - /// - [DataMember] - public string Name { get; set; } - /// - /// If this is the default voted map - /// - [DataMember] - public bool Default { get; set; } - /// - /// The voteweight of the map - /// - [DataMember] - public float VoteWeight { get; set; } - /// - /// The minimum number of players to run this map - /// - [DataMember] - public int MinPlayers { get; set; } - /// - /// The maximum number of players to run this map - /// - [DataMember] - public int MaxPlayers { get; set; } - /// - /// If the map is enabled - /// - [DataMember] - public bool Enabled { get; set; } - } - - /// - /// Used for white/blacklisting certain map files - /// - [DataContract] - public class MapEnabled - { - /// - /// The file name of the map - /// - [DataMember] - public string Filename { get; set; } - /// - /// True if the map is enabled, false otherwise - /// - [DataMember] - public bool Enabled { get; set; } - } - - /// - /// Game configuration setting - /// - [DataContract] - public class ConfigSetting - { - /// - /// The setting name - /// - [DataMember] - public string Name { get; set; } - /// - /// Comments above the setting - /// - [DataMember] - public string Comment { get; set; } - /// - /// True if this setting exists in the current configuration - /// - [DataMember] - public bool ExistsInStatic { get; set; } - /// - /// True if this setting exists in the repo's config - /// - [DataMember] - public bool ExistsInRepo { get; set; } - /// - /// True if this value appears more than once in either config - /// - [DataMember] - public bool IsMultiKey { get; set; } - /// - /// Value of the setting - /// null means unset, empty string means flag - /// - [DataMember] - public string Value { get; set; } - /// - /// For when the first word of the config setting can be repeated many times - /// Usually null - /// - [DataMember] - public List Values { get; set; } - /// - /// Value of the setting in the repo - /// null means unset, empty string means flag - /// - [DataMember] - public string DefaultValue { get; set; } - /// - /// For when the first word of the config setting can be repeated many times - /// Usually null - /// - [DataMember] - public List DefaultValues { get; set; } - } - /// - /// Setting for job populations - /// - [DataContract] - public class JobSetting - { - /// - /// The name of the job - /// - [DataMember] - public string Name { get; set; } - /// - /// Number of total positions for this job, -1 for infinite - /// - [DataMember] - public int TotalPositions { get; set; } - /// - /// Number of positions for this job when the game starts, -1 for infinite - /// - [DataMember] - public int SpawnPositions { get; set; } - } - /// /// For modifying the in game config /// Most if not all of these will not apply until the next server reboot @@ -165,114 +11,6 @@ namespace TGServiceInterface [ServiceContract] public interface ITGConfig { - /// - /// Gets the config settings of some config - /// - /// The type of config to retrieve - /// null on success, error message on failure - /// The list of configs on success or null on failure - [OperationContract] - IList Retrieve(TGConfigType type, out string error); - - /// - /// Sets a config setting of some config - /// - /// The type of config to retrieve - /// The updated config setting, only name and value fields are read - /// null on success, error message on failure - [OperationContract] - string SetItem(TGConfigType type, ConfigSetting newSetting); - - /// - /// List the permissions as defined in the repo's admin_ranks.txt - /// - /// null on success, error message on failure - /// Dictionary of permission strings -> description on success, null on failure - [OperationContract] - IDictionary ListPermissions(out string error); - - /// - /// Get the configured admin ranks - /// - /// null on success, error message on failure - /// A dictionary of rank -> permissions -> +/- on success, null on failure - [OperationContract] - IDictionary> AdminRanks(out string error); - - /// - /// Deletes the given admin rank - /// - /// The rank to delete - /// null on success, error message on failure - [OperationContract] - string RemoveAdminRank(string rank); - - /// - /// Adds or update an admin rank - /// - /// The name of the added rank - /// The permissions of the added rank - /// null on success, error message on failure - [OperationContract] - string SetAdminRank(string rankName, IDictionary permissions); - - /// - /// List the admins - /// - /// null on success, error message on failure - /// a dictionary of ckey -> admin rank on success, null on failure - [OperationContract] - IDictionary Admins(out string error); - - /// - /// Add or modify a ckey's admin status - /// - /// The byond ckey to modify - /// The rank of the admin - /// null on success, error message on failure - [OperationContract] - string Addmin(string ckey, string rank); - - /// - /// Remove the admin status of a ckey - /// - /// The ckey to deadmin - /// - [OperationContract] - string Deadmin(string admin); - - /// - /// List the job population limits - /// - /// null on success, error message on failure - /// A list of JobSettings - [OperationContract] - IList Jobs(out string error); - - /// - /// Set the population limits for a job - /// - /// The population limits - /// null on success, error on failure - [OperationContract] - string SetJob(JobSetting job); - - /// - /// Lists game map settings - /// - /// null on success, error on failure - /// The list of MapSettings - [OperationContract] - IList MapSettings(out string error); - - /// - /// Sets a game map's settings - /// - /// The new setting for the map - /// null on success, error on failure - [OperationContract] - string SetMapSettings(MapSetting newSetting); - /// /// Return the directory of the server on the host machine /// @@ -280,24 +18,15 @@ namespace TGServiceInterface [OperationContract] string ServerDirectory(); - /// - /// Upload a titlescreen image - /// - /// The name of the file saved in config/title_screens/images - /// The bytes of the file, null will delete the file - /// null on success, error message on failure - [OperationContract] - string SetTitleImage(string filename, byte[] data); - /// /// For when you really just need to see the raw data of the config /// - /// The path from the configDir. E.g. config.txt - /// if true, the file will be read + /// The path from the Static dir. E.g. config/config.txt + /// if true, the file will be read from the repository instead of the static dir /// null on success, error message on failure /// The full text of the file on success, null on failure [OperationContract] - string ReadRaw(string configRelativePath, bool repo, out string error); + string ReadText(string staticRelativePath, bool repo, out string error); /// /// For when you really just need to set the raw data of the config @@ -306,6 +35,6 @@ namespace TGServiceInterface /// The full text of the config file /// null on success, error message on failure [OperationContract] - string WriteRaw(string configRelativePath, string data); + string WriteText(string staticRelativePath, string data); } } diff --git a/TGStationServer3.sln b/TGStationServer3.sln index 5d14e44608..48358be2aa 100644 --- a/TGStationServer3.sln +++ b/TGStationServer3.sln @@ -73,6 +73,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DMAPI", "DMAPI", "{9032B448 DMAPI\server_tools.dm = DMAPI\server_tools.dm DMAPI\st_commands.dm = DMAPI\st_commands.dm DMAPI\st_interface.dm = DMAPI\st_interface.dm + TGS3.json = TGS3.json EndProjectSection EndProject Global