liyoujin2010 / superputty

Automatically exported from code.google.com/p/superputty
MIT License
0 stars 0 forks source link

Fixes and changes #68

Open GoogleCodeExporter opened 8 years ago

GoogleCodeExporter commented 8 years ago
! Going from WindowState Normal to Minimized and back to Normal no longer 
removes the last PuTTY row.
! Close session list after session is opened from list.
! Session list not shown on open if saved tabs exist.
! PuTTY tabs DockAreas limited to DockAreas.Document.
! Move native methods to separate class.
! Change target framework and build files to newer version.
+ Additional items in tab right click menu; new session, PuTTY menu items.
+ Focusing PuTTY also focus SuperPuTTY.
+ Alt key show menu bar.
+ Restore window position on open.
+ Restore tabs on open.
+ Save password.
+ Application use icon loaded from putty.exe.

Original issue reported on code.google.com by john.s.peterson@live.com on 25 Apr 2012 at 9:00

GoogleCodeExporter commented 8 years ago
Since the icon is not included in the program it will not automatically become 
the taskbar pinned icon, a manual edit is required in 
"%AppData%\Microsoft\Internet Explorer\Quick Launch\User Pinned\Taskbar".

Original comment by john.s.peterson@live.com on 25 Apr 2012 at 9:03

GoogleCodeExporter commented 8 years ago
If committing any of these changes please use "--with-revprop svn:author=<my 
Google Code email>" so the commits are tracked for my Ohloh account. Thanks!

Original comment by john.s.peterson@live.com on 25 Apr 2012 at 9:13

GoogleCodeExporter commented 8 years ago
On which version of SuperPutty have these changes been built?

Original comment by breker.c...@gmail.com on 26 Apr 2012 at 1:58

GoogleCodeExporter commented 8 years ago
[deleted comment]
GoogleCodeExporter commented 8 years ago
[deleted comment]
GoogleCodeExporter commented 8 years ago
It says in the patch, "trunk/SuperPutty.sln (revision 52)". Some parts from the 
1.1 and 1.2 branch has also been included, the code related to LoadFromXml, 
ctlPuttyPanel.cs:FromPersistString and ctlPuttyPanel.cs:GetPersistString.

Those are the improvements in the branch versions that interested me the most 
since I believe it's important to automatically save the tabs (and the layout).

Original comment by john.s.peterson@live.com on 27 Apr 2012 at 1:03

GoogleCodeExporter commented 8 years ago
I’ll explain my reasoning for the changes if there are any question or 
objections about them.

! Going from WindowState Normal to Minimized and back to Normal no longer 
removes the last PuTTY row.

Without this fix minimizing and restoring the window back and forth will 
eventually clear the PuTTY window, one row at a time. This occurs in 
ctlApplicationPanel.cs:OnResize. Even if this problem doesn’t occur for some 
reason the resize events I’ve removed are still unnecessary (i.e., if not 
harmful).

! Close session list after session is opened from list.
+ Alt key show menu bar.
! Session list not shown on open if saved tabs exist.

This is part of my goal to not have anything in the working window except the 
PuTTY tabs.

The Alt key show/hide is the reason for the frmSuperPutty.cs:KBHookCallback 
code. Without it pressing Alt with a PuTTY window in focus will not show the 
menu bar.

! PuTTY panel DockAreas limited to DockAreas.Document.

The downside with allowing all DockAreas is that moving the tabs can lead to 
accidentally redocking it (to a top docked or a floating window for example) 
which is annoying if the user never have the intention of redocking it. 
DockAreas.Document should be adequate and logical for the main document (the 
PuTTY windows).

! Move native methods to separate class.

This makes sense in my opinion. For example ctlApplicationPanel.cs has a large 
amount of native code that makes it harder to see what the file does, and it 
makes the other files cleaner too.

! Change target framework and build files to newer version.

I believe this is done in the branch too. Most, if not all, of the code is 
still compatible with .NET 2.0 I believe, if one wanted to switch back for some 
reason, but I think most users have .NET 4.0 installed at least so it makes 
sense to at least use 4.0. The WeifenLuo.WinFormsUI.Docking.dll update should 
be uncontested though, no reason to not update that.

+ Additional items in tab right click menu; new session, PuTTY menu items.

There seems to have been an intention to implement this, but it was never 
implemented for some reason. This implementation is in 
ctlPuttyPanel.cs:puTTYMenuTSMI_Click, the WM_SYSCOMMAND are found at 
windows/window.c:37 in PuTTY.

+ Focusing PuTTY also focus SuperPuTTY.

This refers to focus from mouse click in the window, the code is in 
frmSuperPutty.cs:MHookCallback.

+ Restore window position on open.

This change is found in frmSuperPutty.cs:RestoreSize.

+ Restore tabs on open.

It’s actually restore for the whole layout, in frmSuperPutty.cs:RestoreTabs. 
I argue for the automatic save/restore to registry that I‘ve implemented 
(rather than a save/restore that require manual action. There’s of course no 
downside to be able to save the layout manually (which is not a feature I often 
use in any program and a feature some major programs like VS lack as far as I 
know) but it’s important to save the layout automatically).

+ Save password.

Through the methods Program.cs:EncryptString/DecryptString. The encryption is a 
simple step to not save the password in plain text. It’s obviously a security 
concern to save the password and the user can choose to not save the password 
(leave the password field blank) for critical logins.

+ Application use icon loaded from putty.exe.

I believe it makes sense to use the PuTTY icon if the program is essentially 
considered a PuTTY with tabs.

I’ve also implemented other details for behaviors that are not critical but 
annoying. For example starting PuTTY with ProcessWindowStyle.Hidden (and the 
required ctlApplicationPanel.cs:GetMainWindowHandle because 
m_Process.WaitForInputIdle(); m_AppWin = m_Process.MainWindowHandle; doesn’t 
apply in that case) is to not have the PuTTY windows show (one by one which is 
annoying and potentially interrupting if the user by coincidence clicks on the 
(random and unpredictable) location the window is shown at) until the 
application is started and the windows are docked.

Original comment by john.s.peterson@live.com on 27 Apr 2012 at 1:04

GoogleCodeExporter commented 8 years ago
"|| (Keys)vkCode == Keys.RMenu" should be removed, only Keys.LMenu should be 
used to show the menu.

Original comment by john.s.peterson@live.com on 18 May 2012 at 5:22

GoogleCodeExporter commented 8 years ago
This patch is moved to https://github.com/john-peterson/superputty.

Original comment by john.s.peterson@live.com on 4 Dec 2012 at 6:54