Streamlining texture application

I’m after a way to streamline the process of applying a texture to a selection of polygons; I’m guessing this should be possible with some python scripting, right?
Currently its quite fiddly to do (obviously blender has a lot of options to select between being such a versatile package).

My ideal setup would be:

[1] you have blender and a file browser window open side by side
[2] you work away in mesh edit mode, and have some polygons selected
[3] you drag a texture image from the file browswer window into the blender work area (OS file drop…)
[4] (bonus) a little dialog box appears offering some options, but default:
[4.1] a new material is created with a plausible default (a nondescript average of the specular/diffuse/metalicity etc parameters that you’d expect for real world surfaces) , with the given texture applied to give it’s surface RGB colour;
[4.2] it is given ‘triplanar mapping’ i.e per face it is projected onto the pair of axes that are most orthogonal to each face’s surface normal, assuming it’s a repeating tiled texture.
[4.3] (bonus) if it looks like it’s not a repeating texture, i.e it doesn’t match at the edges , project 1 unit of it onto the group of polygons guessing the orientation from the average surface normal and current orientation of the screen (that could be offered as an option in the dialog)
[4.4] (bonus) If no polygons were selected, it will drop onto the single polygon under the point at which you dropped the image.
[4.5] ask if you want to switch into a rendering mode that will show this texture, or show a little preview briefly as a popup and continue in the mode you’re in

If it’s impossible to respond to file drag-and-drop, would there be other ways to get a workflow this fast, e.g.
[1] a hotkey that lets you go and select a texture,
[2] a literal file/texture browser window in a blender pane , allowing similar drag-drop

I can code (mostly c++, i’ve used python a bit; I’ve written entire modellers and graphics engines myself in the past) - I’m just after some pointers on where to look to do this within blender, advice on what the best way to do it here are (coding within some big system like this… one doesn’t know what is available already)

I know that there’s another contrasting use for texture drop… setting up reference/guide images for modelling. The little dialogue of step [4] could ask if you want to do that. I would also suggest by default that it could choose based on whether you have polygons selected or not (no selection - drop a guide image. selection - apply a texture)