private ToolStripDropDown CreateProfileCommandMenus(IProfileConfig profile) { var commandMenus = new ToolStripDropDown { LayoutStyle = ToolStripLayoutStyle.Table }; var columnCount = profile.MenusConfig.Menus.Count(); ((TableLayoutSettings)commandMenus.LayoutSettings).ColumnCount = columnCount; var maxRowCount = profile.MenusConfig.Menus.Max(m => m.MenuItems.Count()); var r = 0; var menus = profile.MenusConfig.Menus.ToArray(); // -- profile name row commandMenus.Items.Add(CreateDisabledMenuItem(profile.ProfileName)); for (var c = 0; c < columnCount - 1; ++c) { commandMenus.Items.Add(CreateDisabledMenuItem()); } // -- // -- blank row for (var c = 0; c < columnCount; ++c) { commandMenus.Items.Add(CreateDisabledMenuItem()); } // -- // -- menu titles for (var c = 0; c < columnCount; ++c) { var m = menus[c]; commandMenus.Items.Add(CreateDisabledMenuItem(m.Title)); } // -- // -- menu items while (r < maxRowCount) { for (var c = 0; c < columnCount; ++c) { var m = menus[c]; var menuItems = m.MenuItems.ToArray(); if (r < menuItems.Length) { var cmdConfig = menuItems[r]; var cmdItem = CreateCommandItem(profile.PathDirsConfig, profile.WorkingDir, cmdConfig); commandMenus.Items.Add(cmdItem); } else { commandMenus.Items.Add(CreateDisabledMenuItem()); } } ++r; } // -- // -- blank row for (var c = 0; c < columnCount; ++c) { commandMenus.Items.Add(CreateDisabledMenuItem()); } // -- // -- edit profile row for (var c = 0; c < columnCount - 1; ++c) { commandMenus.Items.Add(CreateDisabledMenuItem()); } commandMenus.Items.Add(CreateEditProfileMenuItem(profile)); // -- return commandMenus; }
private void OnEditProfile(IProfileConfig profile) { if (!File.Exists(_configData.EditorProgramPath)) throw new ApplicationException(String.Format( "Editor Program Path {0} not found", _configData.EditorProgramPath)); Process.Start(_configData.EditorProgramPath, "\"" + profile.ProfileFilePath + "\""); }
private ToolStripMenuItem CreateEditProfileMenuItem(IProfileConfig profile) { return new ToolStripMenuItem("Edit Profile...", Images.XmlFile, (s, e) => OnEditProfile(profile)); }