First up, sorry about taking ages to respond. There's just been a lot happening.
As for your idea, it's intriguing. I kind of feel like this could be implemented as a sufficiently complex set of git refspecs, but obviously that would need to be done for all version control systems. I'm not sure whether this would be something for Meld proper... if we had a plugin architecture (as you say below) it feels like a perfect fit for this.
I'll plan on just making my own fork for now. I'll try to incorporate anything that makes sense in base Meld, like adding patches under diffs or having a read-only-by-default option.
We *kind of* have this already in the way we treat diffs from version control (and read-only files). I'm not sure how we'd extend it further, but maybe?
I think ideally I'd make a plugin, but plugin support seems very difficult to add, and so it's probably not worth it. (If I'm wrong about this, let me know. I'd be willing to do the work to add plugin support if it's not too difficult, though that'd still entail some guidance and help with code on your part.) Other than plugin support, I haven't run across anything that needs changing to make my stuff easier, but I'll let you know.
I'd love to add plugin support, but honestly it's likely to be a large amount of work, particularly given the hooks you'd need for this. I haven't spent a lot of time on it, but libpeas looks promising for adding plugin support with some UI support, but I really think that adding the appropriate hook points might be very tricky.
I am having trouble using Glade. It says, "Failed to load [path]\meld\resources\ui\appwindow.ui. The following required catalogs are unavailable: meld.ui.gladesupport.", and when I open new-diff-tab I get "Unable to create object with type MeldFileChooserDialog". I see there's a \meld\ui\gladesupport.py, but I don't know how to use it or if that's what I need.
So this is harder in current master, and I haven't looked at fixing it yet. However, from a 3.20 checkout you should be able to do something like:
PYTHONPATH=./ GLADE_CATALOG_SEARCH_PATH=./meld/ui/ GLADE_MODULE_SEARCH_PATH=./ glade data/ui/filediff.ui
and *most* of the widgets should work. You may have to go back in afterwards and fix things that glade has replaced with placeholders. I'm also not confident that those search paths are correct... I do this rarely enough that it's trial and error. I typically hand-edit the .ui files, but I realise that's less than ideal.
I've made an attempt to allow all of our widgets to have a sane empty render state in glade, but that routinely breaks because it's tricky to maintain given actual application state management, and because it's not typically that important. Patches to fix these are always welcome, but it's also tricky because most of our widgets (somewhat unfortunately) connect to application-global config.
Thanks for the help, and for all the dev on Meld. It was the best differ I found to base this off of.
Thanks for the kind words, and again I'm sorry about my slackness in replying. Good luck with your project!
cheers,
Kai