Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.

Close

New Plugin KPEnhancedListview

2010-03-27
2013-04-16
1 2 3 > >> (Page 1 of 3)
  • Frank Glaser
    Frank Glaser
    2010-03-27

    KPEnhancedListview

    The plugin was developed for everyone who use various custom fields over and over again and for everyone who wants to edit the entries directly without having to open the EntryForm and the Tabs there.

    1) CustomColumns:
    There are 2 new Tools menu entries: Add and Remove CustomColumns.

    Add CustomColumns:
    Shows a list of all defined user strings. You can select one or more strings You will have shown as CustomColumns.
    Additionally You can define a new string for a new column.

    If You have added the CustomColumns, all matching subitems of the shown entries will be displayed.

    Actually user defined hidden strings will be displayed as plain text!

    Remove CustomColumns:
    Lists all defined CustomColumns, select one or more to remove.

    Actually the CustomColumns are not saved, means every time You restart KeePass there are no extra columns defined.

    CustomColumn sorting is possible.

    2 columns with the same name can not be added.

    2) InlineEditing:
    Has to be enabled in the Tools Menu. Now You can edit the entries directly in the listview.

    F3 edits the selected entries title, with TAB You can go through the subitems.
    A slow double click with the left mouse button (like Windows Explorer), You can directly edit a subitem (A fast double click will execute the KeePass function).
    Enter and Tab and a left click on the listview saves the changes. If there are no changes detected, nothing will be saved.
    Escape, resize or other actions, that cause the InlineEditing lost the focus discard/cancel the changes.
    Mouse wheel Scrolling is allowed during the InlineEditing.

    If a subitem or user string is not defined for the selected entry, it will be created.
    Same if You have defined a new customColumn.

    Following fields display only a read only textbox, so You can copy the content, but not modify it.
    CreationTime, LastAccessTime, LastModificationTime, ExpiryTime, Attachment, Uuid
    All other fields can be edited, also the CustomColums!

    If a multiline field (notes or a user strings) contains several lines it is displayed as a 3 line textbox.
    Actually it is not possible to insert a new line (CopyPaste is working).

    If a KeePass column is marked as hidden (asterisks) it will be displayed as plain text during editing.

    Actually the InlineEditing state is not saved, means every time You restart KeePass the function is off.

    Actually the TAN lists are not tested yet!

    The Plugin is hosted on Google code:
    http://code.google.com/p/kpenhancedlistview/

    There You will find also the download and future updates.

    Suggestions and comments are welcome.
    You can either use the Forum here, the Google Code Issue Tab, or use the contact form [http://kontactr.com/user/frankglaser



    For more screenshots visit Google Code.

    Have fun…
    ](http://kontactr.com/user/frankglaser%3Cbr/%3E%3Cbr/%3Ehttp://3.bp.blogspot.com/_DzNw_GUWhEk/S61bzeJSzKI/AAAAAAAAACE/xNklUyxEF7c/s1600/PreviewMenu_0_9.jpg%3Cbr/%3E%3Cbr/%3Ehttp://3.bp.blogspot.com/_DzNw_GUWhEk/S6urvhJbWGI/AAAAAAAAABQ/vmDdkDzlCRY/s1600/Preview_0_9.jpg%3Cbr/%3E%3Cbr/%3EFor%20more%20screenshots%20visit%20Google%20Code.%3Cbr/%3E%3Cbr/%3EHave%20fun&#8230%3B%3Cbr/%3E)

     
  • Mitch Capper
    Mitch Capper
    2010-03-27

    That plugin looks fantastic.  It is exactly what people have been asking for I am quite happy to see someone wrote this!  

     
  • Dominik Reichl
    Dominik Reichl
    2010-03-27

    Brilliant plugin, thanks a lot for creating it!

    I've added it to the KeePass plugins page: http://keepass.info/plugins.html

    Best regards
    Dominik

     
  • Kev
    Kev
    2010-03-27

    Hi,

    Thanks for the plugin, looks great!

    I have a couple of questions:

    Is it possible for the plugin to "remember" which custom columns are on display so that they don't have to be reselected each startup?

    Would it be possible to have strings that have "In-Memory protection" enabled to be hidden behind asterisks and protected in memory?

    Is the source code available? If not, would it be possible to package the plugin as a .PLGX file instead of a dll so it is compatible with future Keepass versions?

    Sorry to sound as if I am moaning, I think your plugin looks great!

     
  • Frank Glaser
    Frank Glaser
    2010-03-27

    Hi,

    The remember function is planned for future updates.

    For the protected strings, I'm not sure, should I have an option dialog for that? So the user can choose to show or hide the strings. Also the Inline Editing, is it good to show the password or should it be protected?

    You can see the source code on my Google Code project site - Source Tab - Browse …

    A plgx version is a good point, I have it now on my feature list.

    Thx

     
  • Kev
    Kev
    2010-03-27

    Hi,

    Thanks for the quick response! For the protected strings, you could have it so that by default the protected strings have asterisks protecting them, but have an option to make it so they aren't behind asterisks?

    Thanks.

     
  • KeeForm
    KeeForm
    2010-03-27

    Hi Frank, great plugin. I added it to my Plugin Installer http://keepass.info/plugins.html#keeplugini

    Regarding protected customer fields in list view and note view, I believe this is a missing feature in KeePass and I asked Dominik to have a global setting for this. May be you should ask him about it, before you implement it :-)

    I see one potential issue with your (great!) plugin. If a user has a lot of different custom fields (that are not shared too much) then the list could get pretty wide (and empty).

    Cheers,
    Dave

     
  • Frank Glaser
    Frank Glaser
    2010-03-28

    Hi Dave,

    thanks for adding :-)

    I already have an idea of implementing the protected strings. I will look for each entry if it is protected and add it then as **** and one tool menu button to unhide/show them as plain text (Maybe later an option box to select the protected state for each column seperate).

    Regarding your potential issue:
    You are right, but the user can select, which columns he wants to be added to the view.
    If he wants to view all user strings, then yes he may have to scroll a lot :-)

    For me, I have about 5 important additional user strings on ~90% of my entries, always named identical.

    Some additional information:
    KPEnhancedListview needs .NET Framework >= 2.0
    CustomColumns reordering is possible.
    Fast double clicking a CustomColum item copies the text to the clipboard and may minimize KeePass depending on your settings.

    Frank

     
  • KeeForm
    KeeForm
    2010-03-28

    Hi Frank, your idea sounds great. This way I can finally use protected mode for custom fields as well. Right now you have to switch on/off them individually. it would be also great if the fields would be also unprotected in the "notes view". But I guess this is not your area?

    Cheers,
    Dave

     
  • Frank Glaser
    Frank Glaser
    2010-03-28

    It should be no problem to have a switch to unhide the fields in the "notes view".
    Should it be a seperate plugin? (It is no part of the listview) .
    I will take a look on it.

     
  • Dominik Reichl
    Dominik Reichl
    2010-03-28

    For the entry view, I've now added an option to turn off hiding in-memory protected custom strings using asterisks.

    Here's the latest development snapshot for testing:
    http://keepass.info/filepool/KeePass_100328.zip

    Best regards
    Dominik

     
  • Jojo
    Jojo
    2010-03-29

    I added the KPAdvanced Listview add-on so that I could see the EMAIL field I added with the custom Template add-on.

    In experiementing with the Template setup, I had created an EMAIL field AND an EMAIL_ADDR field.

    I first added the EMAIL_ADDR field to the column display.  However, when I realized that was the wrong field, I then added the EMAIL field, which was the correct field.

    I then went to the Tools menu entry to delete the EMAIL_ADDR column. 

    After doing so, an error was generated (which I chose to ignore and did not look at closely).

    However, when I returned to the main displayin KeePass afterwards, I LOST the display of ALL of my entries!

    But they aren't really gone, just invisible. The status bar shows that the entries are there but they do not display.

    I tried closing KeepPass and reopening but that did not solve the problem.

    I finally deleted the KeePass folder and reloaded it from a backup.

    Now everything is back to normal.  Whew…

     
  • Frank Glaser
    Frank Glaser
    2010-03-29

    Hi jojo99,

    no panic…
    I never save changes to the whole database.
    Storing is only done after the InlineEditing function, there the plugin creates a backup of the edited entry and then KeePass does the whole saving part (i.e. when You press the save button).
    But I always advice to do a backup, before playing with new Plugins.

    I will try to investigate Your problem.
    If You can send me the details of the occured error, it will be much easier for me.
    http://kontactr.com/user/frankglaser

    Frank

     
  • Jojo
    Jojo
    2010-03-29

    Frank: I don't have anything to add other than what I wrote already.  Lucky I take regular backups of everything though because I could not find any way to show my data/entries again other than restoring the folder. 

    BTW: Is there a way of removing a plug-in?  Maybe that would have worked.

    Anyway, the only additional info I can offer is a screenshot from the time the error occurred:

    See:
    http://www.fototime.com/A4D2E3EF76C0478/standard.jpg

     
  • Frank Glaser
    Frank Glaser
    2010-03-29

    The screenshot helps.
    The problem occurs, if a column is reordered and then deleted.

    To remove a plugin, normally You just have to delete it from the KeePass folder.

    Thanks

     
  • Jojo
    Jojo
    2010-03-30

    OK, thanks Frank.

    Will give it a try again.

     
  • Frank Glaser
    Frank Glaser
    2010-03-30

    KPEnhancedListview 0.9.0.2 is online

    Add and Remove CustomColumn Dialog: user string list is now sorted

    Fixed column issue
    add and reorder column, switch folders, remove custom column throws exception

    Double click on empty listview area opens new PWEntry form

     
  • KeeForm
    KeeForm
    2010-03-30

    Hi Frank, thanks for updating. I also updated the KeePass plugin installer  (http://keepass.info/plugins.html#keeplugini) to point to the new link. Cheers, Dave

     
  • Jojo
    Jojo
    2010-04-03

    Yo Frank - 9.0.2 still isn't working correctly for me.

    After installing, I added the email field I had previously created to the view.  I see the field at the end of the other fields.  I then dragged the field to where I wanted it positioned in the column display.  Doing this caused an error to be generated.

    See:
    http://www.fototime.com/63BFC031FBF763D/orig.jpg

    and this was the text in the error box:

    ************** Exception Text **************
    System.IndexOutOfRangeException: Index was outside the bounds of the array.
       at KeePass.Forms.MainForm.OnPwListColumnWidthChanged(Object sender, ColumnWidthChangedEventArgs e)
       at System.Windows.Forms.ColumnWidthChangedEventHandler.Invoke(Object sender, ColumnWidthChangedEventArgs e)
       at System.Windows.Forms.ListView.OnColumnWidthChanged(ColumnWidthChangedEventArgs e)
       at System.Windows.Forms.ListView.WmNotify(Message& m)
       at System.Windows.Forms.ListView.WndProc(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

    ************** Loaded Assemblies **************
    mscorlib
        Assembly Version: 2.0.0.0
        Win32 Version: 2.0.50727.3603 (GDR.050727-3600)
        CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll


    KeePass
        Assembly Version: 2.1.0.28189
        Win32 Version: 2.1.0.0
        CodeBase: file:///E:/Program%20Files/Freeware/Passwords/KeePass%20Password%20Safe/KeePass.exe


    System.Windows.Forms
        Assembly Version: 2.0.0.0
        Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
        CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll


    System
        Assembly Version: 2.0.0.0
        Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
        CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll


    System.Drawing
        Assembly Version: 2.0.0.0
        Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
        CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll


    System.Xml
        Assembly Version: 2.0.0.0
        Win32 Version: 2.0.50727.3082 (QFE.050727-3000)
        CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll


    System.Configuration
        Assembly Version: 2.0.0.0
        Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
        CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll


    KeePass.XmlSerializers
        Assembly Version: 2.1.0.28189
        Win32 Version: 2.1.0.28189
        CodeBase: file:///E:/Program%20Files/Freeware/Passwords/KeePass%20Password%20Safe/KeePass.XmlSerializers.DLL


    KPEnhancedListview
        Assembly Version: 2.1.0.37869
        Win32 Version: 0.9.0.2
        CodeBase: file:///E:/Program%20Files/Freeware/Passwords/KeePass%20Password%20Safe/KPEnhancedListview.DLL


    lynATuVM
        Assembly Version: 2.1.0.99
        Win32 Version: 2.1.0.0
        CodeBase: file:///D:/Documents%20and%20Settings/Me%231/Application%20Data/KeePass/PluginCache/jAM9bY709kGwMHlT_2.1.0.28189/lynATuVM.dll


    System.Security
        Assembly Version: 2.0.0.0
        Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
        CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Security/2.0.0.0__b03f5f7f11d50a3a/System.Security.dll


    I closed Keepass and tried again. 

    I again added the same field.  Then tried immediately closing Keepass hoping to avoid the error above.  BUT when I reopened Keepass, the email field was no longer shown in the column display.  I tried this numerous times and always get the same result.  The added field disappears on closing the app and reopening.  However, the error above doesn't occur now if I add and drag the field to the column position I want.

     
  • Frank Glaser
    Frank Glaser
    2010-04-04

    Hi jojo99,
    session saving isn't implemented yet.

    If I understand You correct, the error occurs after dragging a CustomColumn, but You can't reproduce it.

    Frank

     
  • Jojo
    Jojo
    2010-04-04

    Yes, I have not been able to duplicate that error again.

    So without "session saving", this means that every time I startup Keepass, I have to select my custom columns, then drag them to the positions I want in the display?

    When do you anticipate being able to fix this problem?

     
  • Frank Glaser
    Frank Glaser
    2010-04-05

    I'm working on the implementation.

    What I need is a good concept.
    1. Where can I store the information?
    2. What should be stored:
    2a) One global view?
    2b) One view per folder or per database?

     
  • Mitch Capper
    Mitch Capper
    2010-04-05

    1) Store information is keepass entries, use advanced strings. this has the benefit of being mobile (doesn't matter where the DB is it will always work).   Downside is multiple people using the same DB on different computers have to have the same layout.  You could also do registry but I am a huge fan of entry portability (especially as on something like this most  likely everyone using the same DB would want to see the same columns).  The other advantage here is multiple folders can be made to have the same columns by just copying the Entry over.

    2) Column display name, Advanced String Value, Column Order
    One entry per folder.  I think per folder is the way to go as your plugin really probably should focus on a per folder basis.

    One option would be to have a "This folder and subfolder" option that makes the columns apply to the current folder and any child folders,  (unless the child folder overrides its display manually).  With using KeePass entries to figure out how to display a folder you would first check the current folder for an entry called say KPEnhancedListViewData if it doesnt exist check the parent and keep going up to you find one or reach the root.  Once one is found check if it should effect sub folders if so apply the look.

     
  • Dominik Reichl
    Dominik Reichl
    2010-04-05

    If per-entry custom data should be stored, I agree with Mitch (if your data is binary though, you should use the entry Binaries collection). However, I think this isn't really what we want here, because column settings aren't per-entry.

    In order to store custom data in a database, have a look at the CustomData property/collection of the database object. This collection is a simple string dictionary that may freely be used by plugins. If you want to use this and store large hierarchical objects, you need to serialize/deserialize your hierarchical structures to/from a string.

    If you want to remember global settings, you might consider storing them in Program.Config.CustomConfig. Of course you could also write your own configuration engine (especially if there's no easy mapping to strings - CustomConfig is a simple string dictionary), but with CustomConfig you'd get loading, saving and enforcing features for free. CustomConfig has been added for plugins to store global data.

    In both cases (custom string dictionaries of database and application), please use some unique prefix for your plugin's items (for example "KPEnhancedListview_" + your item name).

    Best regards
    Dominik

     
1 2 3 > >> (Page 1 of 3)