-
Notifications
You must be signed in to change notification settings - Fork 1
Notes
#Potential issues
-
Parsing OpenWith options might crash for an initial install for empty text. Needs to be tested.Fixed X2.
#Missing
-
Configuration checkbox for prefix tabs.Now a tab title behaviour. -
Configuration GUI for open with.It is simple but works. - C# doc for methods and classes. Last step.
#Ideal
- Some despaghettification of the class structure.
- Comments for private items.
#Objective
To improve performance or to make it easier to improve performance.
To modify the core data model for sessions to allow multiple sources in the tree that can be updated in real time or manually by right clicking and reloading.
These changes will allow an extensible tree structure. A user will be able to right click and create a new source folder which will include sources from another
I have taken a more fundamental and integrated approach to this rather than relying on importers that overlay the existing system. This approach does not prohibit the simpler approach and allows more flexibility.
#Status
This branch is buildable and relatively stable but should not be used other than for testing purposes. The file formats are subject to change without warning and without backwards compatibility.
An XML File source has been implemented experimentally as a prototype to help determine requirements for class structure, GUI and user interaction.
The next step is to implement a read only file source from a network that can be live updated. Although it will be possible to reload the root each time I specifically will make it live update compatible because more complex live sources might need this. The whole root reloading for small changes is not going to be very user friendly.
http://www.codeproject.com/Articles/16113/Retreiving-a-list-of-network-computer-names-using
I will use this.
Upstream master is continually integrated into this branch.
#Problematic issues Moving or deleting a session should trigger an update in layouts.
However this appears to be deeply embedded in a third party library. To open all layout files and update each time is excessive.
Each session could use a globally unique id rather than an id space per node. This is easy to implement and falls in line with future changes. It is less flexible for highly dynamic trees with mixed origins. It is also slower as it requires a full tree search to locate a node. Right now it works similarly to MIB and SNMP.
It is possible to iterate all layouts, load into a scope instance, modify the persist string accordingly and to put the layout back.
I think that this problem has always existed with remove and rename. I can't see any provisions for this in the original version so I do not think it should be fixed now.
There is a slight behaviour change. A rename should not invalidate and item in layouts. On the other hand restoring an item by name will cause it to reactivate in the original but not in the new.
Sources and circular references needs some decisions to be made.
- Multiple session panels, for each source is a possible simplification or a root node for each. I like my one giant outrageously flexible tree to rule them all though but this approach deserves strong consideration. A root node per source is the easiest to implement at this stage.
- I've used a Guid in one case. A constraint on type and source string can also work for the most part. There is no guaranteed way to always eliminate circular references.
- Circular references are less problematic without automatic loading or with control over automatic loading but this can get fairly complex. If everything except the root is manually loaded the user can load sources in a circular fashion until their hearts content. This makes some weird problems though with modifying one loaded instance with the others representing the old state.
- Have various rules about what sources can be loaded within other sources. This can also be tricky.
#Recommendation
- Propose future plan for a 2.* or 3.* release which removes any legacy elements (backwards compatibility, etc) at best providing importers.
#Features I will add once stable
- A network folder that is has a read only property for the treeview and a remote unique id property. This takes data from a streaming TCP service. This will be my own personal thing but will also to test the feasibility and help provide an initial pattern.
#Other bugs/issues that I know of and may or may not fix
- Hotkeys not registering when the putty window is focused. This is problematic for quick switching.
- In some situations the putty window steals focus when it shouldn't.
- The full path text doesn't fit into the open sessions dialog and it is not resizable.
- DataView for open session crashes with a large number of sessions due to stack overflow. To reproduce you have to go to the bottom of the list and choose an item.
- Sometimes the puttypanel still have the border. This suddenly started happening a lot so I might have damaged it.
Other bugs I will likely leave for others to fix/investigate (can be registered as issues):
- Drop down menu for open tabs gets too big.
- Putty can be expensive for the CPU/GUI when it has a lot of activity (could test with playing a libcaca movie). It should be confirmed whether or not putty can reduce load when out of view (open separately, play libcaca until slow then minimise and see if there is a difference) and if so if it does this with superputty with tests (same but instead of minimise make not shown in tab). However I think the GUI performance problems are largely solved now.
#Other possible future features:
Included with my thoughts (+ means I think it should be done, - means I think it should not be done or not done until later, ~ means its 50/50).
- Connect N times. + Should be easy.
- Ability to export config files for other apps, perhaps on a per folder basis. ~ Might be better as a personal plugin.
- Encrypted config with single password. + Should be easy and other users want it.
- Manage pageant/etc. - A bat script can manage.
- Replace pageant with single password solution. ~ Depends how easy the pageant protocol is to copy.
- Allow the sessions list to be shown (cloned) as many times as the user likes so that different filters can be used. ~ It is not essential but could be easy.
- More advanced send commands filters using switch session like filter. ~ Also not essential. This kind of thing should be scripted.
- WPF? - Wont improve much.
- Tab groups? - A lot of work, small improvement. Would be better to think about when the software is more stable.
- Application panel groups? - Same as tab groups.
- Live sessions in tree, etc? - Same as tab groups (potential scope creep at this stage).
- In built SSH capability. - A lot of work, small improvement, also replacing scripts.
- Add copy host/port/both to keyboard. + Easy to do. Helps fill the gap.
- Multi select in treesession. - Feature creep at this stage.
- Ability to dock preferences window. ~ Depends if it is easy.
- Openwith to be able to dock. + If time permits.
- Option to create dock grids. ~ If time is available. How to implement can vary. Might be a layouts related issue.
- Evil: Allow any window/application to be dragged into a dock. - Changes the scope of the application into a window manager.