public static List <SessionGroup> Load(string xmlFilePath) { List <SessionGroup> sessionGroups = new List <SessionGroup>(); if (!File.Exists(xmlFilePath)) { return(sessionGroups); } XmlDocument doc = new XmlDocument(); doc.Load(xmlFilePath); XmlNodeList groupNodes = doc.SelectNodes("//groups/descendant::group"); foreach (XmlNode groupNode in groupNodes) { SessionGroup group = new SessionGroup(groupNode.Attributes["name"].Value); foreach (XmlNode sessionNode in groupNode.SelectNodes("session")) { SessionInfo session = new SessionInfo(); session.Type = (SessionType)int.Parse(sessionNode.Attributes["type"].Value); session.Host = sessionNode.Attributes["host"].Value; session.Username = sessionNode.Attributes["username"].Value; group.Sessions.Add(session); } sessionGroups.Add(group); } return(sessionGroups); }
private List <SessionGroup> GetGroupsAndSessions() { List <SessionGroup> sessionGroups = new List <SessionGroup>(); foreach (TreeNode groupNode in sessionsNode.Nodes) { if (!(groupNode.Tag is SessionGroup)) { continue; } SessionGroup group = (SessionGroup)groupNode.Tag; group.Sessions.Clear(); foreach (TreeNode sessionNode in groupNode.Nodes) { if (!(sessionNode.Tag is SessionInfo)) { continue; } group.Sessions.Add((SessionInfo)sessionNode.Tag); } sessionGroups.Add(group); } return(sessionGroups); }
private TreeNode GetSessionGroupTreeNode(SessionGroup group) { foreach (TreeNode node in sessionsNode.Nodes) { if (node.Tag == group) { return(node); } } return(null); }
private void SessionsPanel_Load(object sender, EventArgs e) { // Load MuTTY sessions from configuration sessionsNode = new TreeNode("Sessions"); tvSessions.Nodes.Add(sessionsNode); List <SessionGroup> sessionGroups = Configuration.Load(ConfigFile); foreach (SessionGroup group in sessionGroups) { TreeNode groupNode = new TreeNode(group.Name); groupNode.Tag = group; foreach (SessionInfo session in group.Sessions) { TreeNode sessionNode = new TreeNode(session.GetName()); sessionNode.Tag = session; groupNode.Nodes.Add(sessionNode); } sessionsNode.Nodes.Add(groupNode); } // Add default session group if none exist if (sessionGroups.Count == 0) { SessionGroup defaultGroup = new SessionGroup("Default Group"); TreeNode defaultGroupNode = new TreeNode(defaultGroup.Name); defaultGroupNode.Tag = defaultGroup; sessionsNode.Nodes.Add(defaultGroupNode); } sessionsNode.ExpandAll(); // Try to load existing PuTTY sessions from registry puttySessionsNode = new TreeNode("PuTTY Sessions"); tvSessions.Nodes.Add(puttySessionsNode); List <SessionInfo> existingSessions = TryLoadExistingPuTTYSessions(); foreach (SessionInfo session in existingSessions) { TreeNode node = new TreeNode(session.GetName()); node.Tag = session; puttySessionsNode.Nodes.Add(node); } puttySessionsNode.Expand(); }
private void ShowNewGroupDialog() { SessionGroupOptionsDialog dlg = new SessionGroupOptionsDialog(); dlg.DialogTitle = "New Group"; dlg.OKButtonText = "Add Group"; if (dlg.ShowDialog() == DialogResult.OK) { SessionGroup group = new SessionGroup(dlg.GroupName); TreeNode node = new TreeNode(group.Name); node.Tag = group; sessionsNode.Nodes.Add(node); SaveGroupsAndSessions(); } }
private void btnConnect_Click(object sender, EventArgs e) { if (txtHost.Text.Trim().Length == 0) { MessageBox.Show("Please enter a hostname.", "No hostname", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); return; } Session.Type = (SessionType)cbSessionType.SelectedItem; Session.Host = txtHost.Text; Session.Username = txtUsername.Text; SelectedGroup = (SessionGroup)groupComboBox.SelectedItem; DialogResult = DialogResult.OK; Close(); }
private void DeleteGroupToolStripMenuItem_Click(object sender, EventArgs e) { if (ctxMenuSessionGroup.Tag is TreeNode && ctxMenuSessionGroup.Tag != sessionsNode) { TreeNode node = (TreeNode)ctxMenuSessionGroup.Tag; SessionGroup group = (SessionGroup)node.Tag; if (MessageBox.Show("Do you really want to delete group '" + group.Name + "'?", "Delete group", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes) { return; } node.Remove(); SaveGroupsAndSessions(); } }
private void EditGroupToolStripMenuItem_Click(object sender, EventArgs e) { if (ctxMenuSessionGroup.Tag is TreeNode && ctxMenuSessionGroup.Tag != sessionsNode) { TreeNode groupNode = (TreeNode)ctxMenuSessionGroup.Tag; SessionGroup group = (SessionGroup)groupNode.Tag; SessionGroupOptionsDialog dlg = new SessionGroupOptionsDialog(); dlg.DialogTitle = "Edit Group"; dlg.OKButtonText = "Ok"; dlg.GroupName = group.Name; if (dlg.ShowDialog() == DialogResult.OK) { group.Name = dlg.GroupName; groupNode.Text = dlg.GroupName; SaveGroupsAndSessions(); } } }
private void editSessionCtxMenuItem_Click(object sender, EventArgs e) { if (ctxMenuSession.Tag is TreeNode) { TreeNode node = (TreeNode)ctxMenuSession.Tag; if (!(node.Tag is SessionInfo)) { return; } SessionInfo session = (SessionInfo)node.Tag; if (session.External) { return; } SessionGroup group = (SessionGroup)node.Parent.Tag; SessionOptionsDialog dlg = new SessionOptionsDialog(); dlg.OKButtonText = "Save"; dlg.SessionGroups = GetGroupsAndSessions(); dlg.SelectedGroup = group; dlg.Session = new SessionInfo(session); if (dlg.ShowDialog() == DialogResult.OK) { session.CopyFrom(dlg.Session); node.Text = session.GetName(); if (dlg.SelectedGroup != group) { node.Remove(); TreeNode newGroupNode = GetSessionGroupTreeNode(dlg.SelectedGroup); newGroupNode.Nodes.Add(node); } SaveGroupsAndSessions(); } } }
// If sessionGroup is not given, the first group node found will be pre-selected private void ShowNewSessionDialog(SessionGroup sessionGroup = null) { SessionOptionsDialog dlg = new SessionOptionsDialog(); dlg.OKButtonText = "Add"; dlg.SessionGroups = GetGroupsAndSessions(); dlg.SelectedGroup = (sessionGroup != null ? sessionGroup : dlg.SessionGroups.First()); if (dlg.ShowDialog() == DialogResult.OK) { SessionInfo session = dlg.Session; TreeNode node = new TreeNode(session.GetName()); node.Tag = session; TreeNode groupNode = GetSessionGroupTreeNode(dlg.SelectedGroup); groupNode.Nodes.Add(node); groupNode.Expand(); SaveGroupsAndSessions(); } }