Open Tape-Worm opened 5 years ago
Hi @Tape-Worm
With regards to more themes, I've actually created 50+ new themes here, I'm in the middle of creating a simplified 'Theme Generator', though it's taking longer than expected :)
I think the merged ribbon would be a suitable idea for the extended toolkit.
I'm not sure if this is where you guys would like to see feature requests, but there's a few things I'd like to see going forward.
Obviously, this is just my critique, so please don't think I'm trashing the library. It's really good, and it's good to see you updating it on the regular, so it'll only get better.
If I had more time, and I wasn't so invested in my project, I'd gladly start on some of this. But alas, time is just not on my side right now.
Regardless, here's a few things:
My current setup uses plug in architecture to load modules into the application. These plug ins can have their own ribbon tabs on my main ribbon. So, naturally, if the plug in isn't loaded, then the tab shouldn't be there. And because of the dynamic nature of this system, I can't reasonably add all the tabs that may be needed (e.g. end users may want their own plug ins, and I very well can't predict their needs).
To get around this limitation, I've had to create a dummy form in my plug in, and expose the ribbon back via that so I can merge the tabs (in my custom merging code, see item number 2) from the dummy into the main ribbon on plug in load. As you can imagine, this is very cumbersome.
If I could host the ribbon on the same user control that gets loaded in by the plug in, it would save me a lot of grief, not to mention a lot of boilerplate code to facilitate communication between the user control and the dummy form.
I know this can be done, as we use the Developer Express ribbon at work, and it can do this easily.
The system I outlined in item number 1 relies on being able to display and use ribbon tabs dynamically. In order to do this, I have to merge the contents of one ribbon into another. I have added code to my application that allows the merging and unmerging of multiple ribbons into the the main ribbon. That code is located here (feel free to use this if it helps).
Again, the DevExpress ribbon has merge/unmerge functionality as well, and it's really handy in scenarios like this where you don't know what you're going to get.
I have these things set up as a separate class right now, but it'd be really nice to have something like this out of the box. Plus, you guys would be able to handle potential issues that I can't account for.
I really like this set of controls. They work very well for my purposes. And I really like that I can theme the controls. But... man, that theming system is cumbersome. I find it incredibly difficult to use and customize.
As an example, I used the krypton tree view. And I found theming that to be very difficult because the items I thought would apply to the tree themes were not at all what I expected, and I had to dig around a lot to find out which theme items I had to modify in order to update state on the nodes and whatnot. Plus, the palette editor didn't have a preview for the tree (this was a while back, it may have changed, but I had to hack in my own tree view to the editor), and it made hunting down the correct items to theme very tedious.
I think more than anything though, is the naming is kind of misleading. I think I had to modify the ListItem theme to affect the nodes on the tree? While it does kind of make sense, it's still not intuitive. Frankly, a theme item for each control supported by Krypton would be much easier (and yet, more difficult for you as it's likely more tedious work) for me as the end user. But at least if I can see TreeViewItem as a theme part, I know to modify that one instinctively. It's also kind of weird to set a theme on a panel by setting it to use the Form theme item. Just kind of feels counter intuitive.