public void EditSelectedProject(ErrorPanel Panel) { int TabIdx = TabControl.FindTabIndex(Panel); if (TabIdx != -1) { EditSelectedProject(TabIdx, Panel.SelectedProject); } }
public void EditSelectedProject(int TabIdx) { object TabData = TabControl.GetTabData(TabIdx); if (TabData is WorkspaceControl) { WorkspaceControl Workspace = (WorkspaceControl)TabData; EditSelectedProject(TabIdx, Workspace.SelectedProject); } else if (TabData is ErrorPanel) { ErrorPanel Error = (ErrorPanel)TabData; EditSelectedProject(TabIdx, Error.SelectedProject); } }
private void CreateErrorPanel(int ReplaceTabIdx, UserSelectedProjectSettings Project, string Message) { Log.WriteLine(Message ?? "Unknown error"); ErrorPanel ErrorPanel = new ErrorPanel(Project); ErrorPanel.Parent = TabPanel; ErrorPanel.BorderStyle = BorderStyle.FixedSingle; ErrorPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250))))); ErrorPanel.Location = new Point(0, 0); ErrorPanel.Dock = DockStyle.Fill; ErrorPanel.Hide(); string SummaryText = String.Format("Unable to open '{0}'.", Project.ToString()); int NewContentWidth = Math.Max(TextRenderer.MeasureText(SummaryText, ErrorPanel.Font).Width, 400); if (!String.IsNullOrEmpty(Message)) { NewContentWidth = Math.Max(NewContentWidth, TextRenderer.MeasureText(Message, ErrorPanel.Font).Width); } ErrorPanel.SetContentWidth(NewContentWidth); List <StatusLine> Lines = new List <StatusLine>(); StatusLine SummaryLine = new StatusLine(); SummaryLine.AddText(SummaryText); Lines.Add(SummaryLine); if (!String.IsNullOrEmpty(Message)) { Lines.Add(new StatusLine() { LineHeight = 0.5f }); foreach (string MessageLine in Message.Split('\n')) { StatusLine ErrorLine = new StatusLine(); ErrorLine.AddText(MessageLine); ErrorLine.LineHeight = 0.8f; Lines.Add(ErrorLine); } } Lines.Add(new StatusLine() { LineHeight = 0.5f }); StatusLine ActionLine = new StatusLine(); ActionLine.AddLink("Retry", FontStyle.Bold | FontStyle.Underline, () => { BeginInvoke(new MethodInvoker(() => { TryOpenProject(Project, TabControl.FindTabIndex(ErrorPanel)); })); }); ActionLine.AddText(" | "); ActionLine.AddLink("Settings", FontStyle.Bold | FontStyle.Underline, () => { BeginInvoke(new MethodInvoker(() => { EditSelectedProject(ErrorPanel); })); }); ActionLine.AddText(" | "); ActionLine.AddLink("Close", FontStyle.Bold | FontStyle.Underline, () => { BeginInvoke(new MethodInvoker(() => { TabControl.RemoveTab(TabControl.FindTabIndex(ErrorPanel)); })); }); Lines.Add(ActionLine); ErrorPanel.Set(Lines, null, null, null); string NewProjectName = "Unknown"; if (Project.Type == UserSelectedProjectType.Client && Project.ClientPath != null) { NewProjectName = Project.ClientPath.Substring(Project.ClientPath.LastIndexOf('/') + 1); } if (Project.Type == UserSelectedProjectType.Local && Project.LocalPath != null) { NewProjectName = Project.LocalPath.Substring(Project.LocalPath.LastIndexOfAny(new char[] { '/', '\\' }) + 1); } string NewTabName = String.Format("Error: {0}", NewProjectName); if (ReplaceTabIdx == -1) { int TabIdx = TabControl.InsertTab(-1, NewTabName, ErrorPanel); TabControl.SelectTab(TabIdx); } else { TabControl.InsertTab(ReplaceTabIdx + 1, NewTabName, ErrorPanel); TabControl.RemoveTab(ReplaceTabIdx); TabControl.SelectTab(ReplaceTabIdx); } UpdateProgress(); }
private void CreateErrorPanel(int ReplaceTabIdx, string ProjectFileName, string Message) { Log.WriteLine(Message); ErrorPanel ErrorPanel = new ErrorPanel(ProjectFileName); ErrorPanel.Parent = TabPanel; ErrorPanel.BorderStyle = BorderStyle.FixedSingle; ErrorPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250))))); ErrorPanel.Location = new Point(0, 0); ErrorPanel.Size = new Size(TabPanel.Width, TabPanel.Height); ErrorPanel.Anchor = AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Bottom; ErrorPanel.Hide(); string SummaryText = String.Format("Unable to open '{0}'.", ProjectFileName); int NewContentWidth = Math.Max(Math.Max(TextRenderer.MeasureText(SummaryText, ErrorPanel.Font).Width, TextRenderer.MeasureText(Message, ErrorPanel.Font).Width), 400); ErrorPanel.SetContentWidth(NewContentWidth); List <StatusLine> Lines = new List <StatusLine>(); StatusLine SummaryLine = new StatusLine(); SummaryLine.AddText(SummaryText); Lines.Add(SummaryLine); Lines.Add(new StatusLine() { LineHeight = 0.5f }); StatusLine ErrorLine = new StatusLine(); ErrorLine.AddText(Message); Lines.Add(ErrorLine); Lines.Add(new StatusLine() { LineHeight = 0.5f }); StatusLine ActionLine = new StatusLine(); ActionLine.AddLink("Close", FontStyle.Bold | FontStyle.Underline, () => { BeginInvoke(new MethodInvoker(() => { TabControl.RemoveTab(TabControl.FindTabIndex(ErrorPanel)); })); }); ActionLine.AddText(" | "); ActionLine.AddLink("Retry", FontStyle.Bold | FontStyle.Underline, () => { BeginInvoke(new MethodInvoker(() => { TryOpenProject(ProjectFileName, TabControl.FindTabIndex(ErrorPanel)); })); }); ActionLine.AddText(" | "); ActionLine.AddLink("Open another...", FontStyle.Bold | FontStyle.Underline, () => { BeginInvoke(new MethodInvoker(() => { BrowseForProject(TabControl.FindTabIndex(ErrorPanel)); })); }); Lines.Add(ActionLine); ErrorPanel.Set(Lines); string NewTabName = "Error: " + Path.GetFileName(ProjectFileName); if (ReplaceTabIdx == -1) { int TabIdx = TabControl.InsertTab(-1, NewTabName, ErrorPanel); TabControl.SelectTab(TabIdx); } else { TabControl.InsertTab(ReplaceTabIdx + 1, NewTabName, ErrorPanel); TabControl.RemoveTab(ReplaceTabIdx); TabControl.SelectTab(ReplaceTabIdx); } UpdateProgress(); }