void Instance_FormClosed(object sender, FormClosedEventArgs e) { this.Instance = null; SuperPuTTY.ReportStatus("Closed {0}", this.Name); }
public SessionDataStartInfo ToSessionStartInfo() { SessionDataStartInfo ssi = null; if (this.SessionId != null) { // first try to resolve by sessionId SessionData session = SuperPuTTY.GetSessionById(this.SessionId); if (session == null) { Log.WarnFormat("Session from command line not found, id={0}", this.SessionId); } else { ssi = new SessionDataStartInfo { Session = session, UseScp = this.UseScp }; } } else if (this.Host != null || this.PuttySession != null) { // Host or puttySession provided string sessionName; if (this.Host != null) { // Decode URL type host spec, if provided (e.g. ssh://localhost:2020) HostConnectionString connStr = new HostConnectionString(this.Host); this.Host = connStr.Host; this.Protocol = connStr.Protocol.GetValueOrDefault(this.Protocol.GetValueOrDefault(ConnectionProtocol.SSH)); this.Port = connStr.Port.GetValueOrDefault(this.Port.GetValueOrDefault(dlgEditSession.GetDefaultPort(this.Protocol.GetValueOrDefault()))); sessionName = this.Host; } else { // no host provided so assume sss sessionName = this.PuttySession; } ssi = new SessionDataStartInfo { Session = new SessionData { Host = this.Host, SessionName = sessionName, SessionId = SuperPuTTY.MakeUniqueSessionId(SessionData.CombineSessionIds("CLI", this.Host)), Port = this.Port.GetValueOrDefault(22), Proto = this.Protocol.GetValueOrDefault(ConnectionProtocol.SSH), Username = this.UserName, Password = this.Password, PuttySession = this.PuttySession }, UseScp = this.UseScp }; } if (ssi == null) { Log.WarnFormat("Could not determine session or host to connect. SessionId or Host or PuttySession must be provided"); } return(ssi); }
private void buttonOk_Click(object sender, EventArgs e) { List <string> errors = new List <string>(); if (string.IsNullOrEmpty(textBoxFilezillaLocation.Text) || File.Exists(textBoxFilezillaLocation.Text)) { SuperPuTTY.Settings.FileZillaExe = textBoxFilezillaLocation.Text; } if (string.IsNullOrEmpty(textBoxWinSCPLocation.Text) || File.Exists(textBoxWinSCPLocation.Text)) { SuperPuTTY.Settings.WinSCPExe = textBoxWinSCPLocation.Text; } if (string.IsNullOrEmpty(textBoxPscpLocation.Text) || File.Exists(textBoxPscpLocation.Text)) { SuperPuTTY.Settings.PscpExe = textBoxPscpLocation.Text; } if (string.IsNullOrEmpty(textBoxVNCLocation.Text) || File.Exists(textBoxVNCLocation.Text)) { SuperPuTTY.Settings.VNCExe = textBoxVNCLocation.Text; } string settingsDir = textBoxSettingsFolder.Text; if (string.IsNullOrEmpty(settingsDir) || !Directory.Exists(settingsDir)) { errors.Add("Settings Folder must be set to valid directory"); } else { SuperPuTTY.Settings.SettingsFolder = settingsDir; } if (comboBoxLayouts.SelectedValue != null) { SuperPuTTY.Settings.DefaultLayoutName = (string)comboBoxLayouts.SelectedValue; } if (!string.IsNullOrEmpty(textBoxPuttyLocation.Text) && File.Exists(textBoxPuttyLocation.Text)) { SuperPuTTY.Settings.PuttyExe = textBoxPuttyLocation.Text; } else { errors.Insert(0, "PuTTY is required to properly use this application."); } string mintty = textBoxMinttyLocation.Text; if (!string.IsNullOrEmpty(mintty) && File.Exists(mintty)) { SuperPuTTY.Settings.MinttyExe = mintty; } if (errors.Count == 0) { SuperPuTTY.Settings.SingleInstanceMode = checkSingleInstanceMode.Checked; SuperPuTTY.Settings.RestrictContentToDocumentTabs = checkConstrainPuttyDocking.Checked; SuperPuTTY.Settings.MultipleTabCloseConfirmation = checkConfirmTabClose.Checked; SuperPuTTY.Settings.RestoreWindowLocation = checkRestoreWindow.Checked; SuperPuTTY.Settings.ExitConfirmation = checkExitConfirmation.Checked; SuperPuTTY.Settings.ExpandSessionsTreeOnStartup = checkExpandTree.Checked; SuperPuTTY.Settings.EnableControlTabSwitching = checkEnableControlTabSwitching.Checked; SuperPuTTY.Settings.EnableKeyboadShortcuts = checkEnableKeyboardShortcuts.Checked; SuperPuTTY.Settings.MinimizeToTray = checkMinimizeToTray.Checked; SuperPuTTY.Settings.TabTextBehavior = (string)comboBoxTabText.SelectedItem; SuperPuTTY.Settings.TabSwitcher = comboBoxTabSwitching.SelectedItem.GetType().FullName; SuperPuTTY.Settings.SessionsTreeShowLines = checkSessionsTreeShowLines.Checked; SuperPuTTY.Settings.SessionsTreeFont = btnFont.Font; SuperPuTTY.Settings.WindowActivator = (string)comboBoxActivatorType.SelectedItem; SuperPuTTY.Settings.Opacity = (double)numericUpDownOpacity.Value / 100.0; SuperPuTTY.Settings.SessionsSearchMode = (string)comboSearchMode.SelectedItem; SuperPuTTY.Settings.QuickSelectorCaseSensitiveSearch = checkQuickSelectorCaseSensitiveSearch.Checked; SuperPuTTY.Settings.ShowDocumentIcons = checkShowDocumentIcons.Checked; SuperPuTTY.Settings.DockingRestrictFloatingWindows = checkRestrictFloatingWindows.Checked; SuperPuTTY.Settings.SessionsShowSearch = checkSessionsShowSearch.Checked; SuperPuTTY.Settings.PuttyPanelShowNewSessionMenu = checkPuttyEnableNewSessionMenu.Checked; SuperPuTTY.Settings.AutoUpdateCheck = checkBoxCheckForUpdates.Checked; SuperPuTTY.Settings.PscpHomePrefix = textBoxHomeDirPrefix.Text; SuperPuTTY.Settings.PscpRootHomePrefix = textBoxRootDirPrefix.Text; SuperPuTTY.Settings.SessiontreeShowFoldersFirst = checkSessionTreeFoldersFirst.Checked; SuperPuTTY.Settings.PersistCommandBarHistory = checkBoxPersistTsHistory.Checked; SuperPuTTY.Settings.SaveCommandHistoryDays = (int)numericUpDown1.Value; SuperPuTTY.Settings.AllowPlainTextPuttyPasswordArg = checkBoxAllowPuttyPWArg.Checked; SuperPuTTY.Settings.PuttyDefaultParameters = textBoxPuttyDefaultParameters.Text; // save shortcuts KeyboardShortcut[] shortcuts = new KeyboardShortcut[Shortcuts.Count]; Shortcuts.CopyTo(shortcuts, 0); SuperPuTTY.Settings.UpdateFromShortcuts(shortcuts); SuperPuTTY.Settings.Save(); // @TODO - move this to a better place...maybe event handler after opening if (OrigSettingsFolder != SuperPuTTY.Settings.SettingsFolder) { SuperPuTTY.LoadLayouts(); SuperPuTTY.LoadSessions(); } else if (OrigDefaultLayoutName != SuperPuTTY.Settings.DefaultLayoutName) { SuperPuTTY.LoadLayouts(); } DialogResult = DialogResult.OK; } else { StringBuilder sb = new StringBuilder(); foreach (string s in errors) { sb.Append(s).AppendLine().AppendLine(); } if (MessageBox.Show(sb.ToString(), LocalizedText.dlgFindPutty_buttonOk_Click_MessageBox_Errors, MessageBoxButtons.RetryCancel, MessageBoxIcon.Question) == DialogResult.Cancel) { DialogResult = DialogResult.Cancel; } } }
/// <summary> /// Open a directory listing on the selected nodes host to allow dropping files /// for drag + drop copy. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void fileBrowserToolStripMenuItem_Click(object sender, EventArgs e) { SessionData session = (SessionData)treeView1.SelectedNode.Tag; SuperPuTTY.OpenScpSession(session); }
/// <summary> /// Create/Update a session entry /// </summary> /// <param name="sender">The toolstripmenuitem control that was clicked</param> /// <param name="e">An Empty EventArgs object</param> private void CreateOrEditSessionToolStripMenuItem_Click(object sender, EventArgs e) { SessionData session = null; TreeNode node = null; TreeNode nodeRef = nodeRoot; string title = null; if (sender is ToolStripMenuItem menuItem) { bool isFolderNode = IsFolderNode(treeView1.SelectedNode); if (menuItem.Text.ToLower().Equals("new") || isFolderNode) { session = new SessionData(); nodeRef = isFolderNode ? treeView1.SelectedNode : treeView1.SelectedNode.Parent; title = "Create New Session"; } else if (menuItem == createLikeToolStripMenuItem) { // copy as session = (SessionData)((SessionData)treeView1.SelectedNode.Tag).Clone(); session.SessionId = SuperPuTTY.MakeUniqueSessionId(session.SessionId); session.SessionName = SessionData.GetSessionNameFromId(session.SessionId); nodeRef = treeView1.SelectedNode.Parent; title = "Create New Session Like " + session.OldName; } else { // edit, session node selected // We make a clone of the session since we do not want to directly edit the real object. session = (SessionData)((SessionData)treeView1.SelectedNode.Tag).Clone(); node = treeView1.SelectedNode; nodeRef = node.Parent; title = "Edit Session: " + session.SessionName; } } EditSessionDialog form = new EditSessionDialog(session, treeView1.ImageList) { Text = title }; form.SessionNameValidator += delegate(string txt, out string error) { bool IsValid = ValidateSessionNameChange(nodeRef, node, txt, out error); return(IsValid); }; if (form.ShowDialog(this) == DialogResult.OK) { /* "node" will only be assigned if we're editing an existing session entry */ if (node == null) { // get the path up to the ref (parent) node if (nodeRoot != nodeRef) { UpdateSessionId(nodeRef, session); session.SessionId = SessionData.CombineSessionIds(session.SessionId, session.SessionName); } SuperPuTTY.AddSession(session); // find new node and select it TreeNode nodeNew = nodeRef.Nodes[session.SessionName]; if (nodeNew != null) { treeView1.SelectedNode = nodeNew; } } else { SessionData RealSession = (SessionData)treeView1.SelectedNode.Tag; RealSession.CopyFrom(session); RealSession.SessionName = session.SessionName; treeView1.SelectedNode = node; } //treeView1.ExpandAll(); SuperPuTTY.SaveSessions(); } }
public void SessionPropertyChanged(SessionData Session, String PropertyName) { if (Session == null) { return; } if (PropertyName == "SessionName" || PropertyName == "ImageKey") { TreeNode Node = FindSessionNode(Session.SessionId); if (Node == null) { // It is possible that the session id was changed before the // session name. In this case, we check to see if we // can find a node with the old session id that is also associated // to the session data. Node = FindSessionNode(Session.OldSessionId); if (Node == null || Node.Tag != Session) { return; } } Node.Text = Session.SessionName; Node.Name = Session.SessionName; Node.ImageKey = Session.ImageKey; Node.SelectedImageKey = Session.ImageKey; bool IsSelectedSession = treeView1.SelectedNode == Node; ResortNodes(); if (IsSelectedSession) { // Re-selecting the node since it will be unselected when sorting. treeView1.SelectedNode = Node; } } else if (PropertyName == "SessionId") { TreeNode Node = FindSessionNode(Session.OldSessionId); if (Node == null) { // It is possible that the session name was changed before the // session id. In this case, we check to see if we // can find a node with the current session id that is also associated // to the session data. Node = FindSessionNode(Session.SessionId); if (Node == null || Node.Tag != Session) { return; } } try { isRenamingNode = true; SuperPuTTY.RemoveSession(Session.OldSessionId); SuperPuTTY.AddSession(Session); } finally { isRenamingNode = false; } } }