godotengine / godot-proposals

Godot Improvement Proposals (GIPs)
MIT License
1.12k stars 69 forks source link

Add features and API for simultaneous working with multiple projects #1486

Open me2beats opened 4 years ago

me2beats commented 4 years ago

Describe the project you are working on: gdscript plugins

Describe the problem or limitation you are having in your project:

I often keep several projects open at the same time in order to conveniently compare project settings, or copy certain parts of the code from one project to another.

but often I have to use an external OS tools, such as file explorer/ file manager, in order to copy scenes and resources from one project to another. And sometimes it is not as convenient as if I could do it entirely in godot editor or using plugins.

Describe the feature / enhancement and how it helps to overcome the problem or limitation:

the solution would be to create a system that would make it more convenient to work with several projects at the same time, without the need to access OS tools such as file explorer, file managers, etc.

Describe how your proposal will work, with code, pseudocode, mockups, and/or diagrams:

  1. Changes in the interface, adding new menu items and actions:

    1.1. I think it would be convenient to add project tabs between which the user can switch, thereby selecting the current project, just like the user selects the current scene using the scene tabs. 1.2. in the main menu (Scene, Project, Debug ...) the Project section could be revised. for example, actions could be added:

    • open project
    • close project
    • open project in new tab

    1.3. opening the Project Manager may not close the current project, as projects can be added to a new tab.

    1.4 it would be convenient to add actions such as:

    in filesystem right-click context menu:

    • copy (to copy selected resources)
    • cut (to copy selected resources and remove them from current project after them will be successfully pasted to another project)
    • paste (to paste resources in current project dir

      somewhere:

    • search in opened projects
  2. Adding an API for creating plugins that interact with multiple open projects:

first API methods that come to mind:

as soon as the user gets the proj value (for example using get_project() ), he can get the project scenes and work with them, as well as doing all the same things that are available when creating plugins.

as a result, all this would make it more convenient to work with several projects at the same time, and getting rid of routine actions which plugins could do instead of a user

If this enhancement will not be used often, can it be worked around with a few lines of script?: I don't think so

Is there a reason why this should be core and not an add-on in the asset library?: The current plugins API is not enough to implement this with plugins elegantly and organically

aaronfranke commented 4 years ago

I think it would be convenient to add project tabs between which the user can switch, thereby selecting the current project, just like the user selects the current scene using the scene tabs.

This is not really feasible with the way Godot is designed.

Adding an API for creating plugins that interact with multiple open projects:

You could have a plugin that interacts with some kind of running program or local server, and if that isn't running then the program would start it. This would require a lot of work on the plugin developer's end (definitely not "elegantly and organically" as you put it), but it would allow you to have interoperability between multiple open projects.

I don't think there needs to be a core feature like this, it seems incredibly niche and unnecessary.

me2beats commented 2 years ago

I still find the idea nice but I think I need to rewrite it a bit to make it not so messy. The main goal of the proposal is to be able to quickly and intuitively copy things from one project to another, such as:

me2beats commented 2 years ago

The idea is inspired by super powerful DAW Cocos Reaper where you can open multiple projects (project tabs), select audio tracks or audio items or effects then Ctrl+C then switch to another project then press Ctrl+V — and the things are copied

Pigzinzspace commented 2 years ago

even the usual drag and drop and copying through the clipboard, folders from the window of one project to the window of another project would greatly improve the situation.