Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add action notifications/toast menu system #1489

Closed
EricEzaM opened this issue Sep 10, 2020 · 10 comments · Fixed by godotengine/godot#52940
Closed

Add action notifications/toast menu system #1489

EricEzaM opened this issue Sep 10, 2020 · 10 comments · Fixed by godotengine/godot#52940
Milestone

Comments

@EricEzaM
Copy link

Describe the project you are working on:
Any

Describe the problem or limitation you are having in your project:
Many actions in the editor have no feedback to the user. E.g. Make Subresources Unique

Describe the feature / enhancement and how it helps to overcome the problem or limitation:
Some more obvious way of informing the user of actions in the editor. One option for this is is something like a toast menu. A few other applications use this, like VS Code, Unreal Engine, and some Adobe products.

image
image
image

Describe how your proposal will work, with code, pseudocode, mockups, and/or diagrams:
Just spitballing here, probably best to put it in something like EditorNode, where there would be a method like add_notification or similar.

If this enhancement will not be used often, can it be worked around with a few lines of script?:
Can't be scripted

Is there a reason why this should be core and not an add-on in the asset library?:
As above

@aaronfranke
Copy link
Member

aaronfranke commented Sep 10, 2020

This is subjective, but I find those very annoying in most programs. Also, the Unreal Engine example isn't the same thing, since Godot already has a pop-up notification for when things are loading (the typical one you'll see is "(Re)Importing Assets").

The UI of this can be implemented with a plugin, but I'm wondering if there's a way to intercept Godot's STDOUT and STDERR with a plugin (or somehow get editor events). If not, maybe there could be an API for this, and then this could be implemented as a plugin (ideally a global plugin, but this would depend on Godot having a global plugin system first).

@EricEzaM
Copy link
Author

I mean at this stage I think the main problem it would solve would be just notifying the user of stuff happening. In the example I gave Make Subresources Unique could really just print to the console that it was done, and which ones were made unique. At least then the user would know something happened

@Calinou
Copy link
Member

Calinou commented Sep 10, 2020

Toasts can be useful to make project exporting and asset importing non-blocking, but I think asset importing is blocking by design. If asset importing wasn't blocking, the user could break the scene's state by saving a scene that depends on assets that haven't been imported yet.

Making sub-resources unique should be indicated by printing a message to the Output panel, not a toast. It's not a long operation 🙂

@groud
Copy link
Member

groud commented Sep 11, 2020

I am not against the idea. Some places in the editor might benefit from such a system (like the warnings for children of containers not movable). I'd make it more subtle than in most software though, as, as @aaronfranke pointed out, those can be quite annoying.

@EricEzaM
Copy link
Author

EricEzaM commented Oct 1, 2020

Notes from proposal review meeting

  • Describe exact use cases - find a list of places where this could be used. Add some mockup images.
  • When should it be used? Only for user actionable things? Or just messages in general?
  • Review existing ways of displaying information. Output Log, bespoke Popup dialogs, labels which are scattered around which show/hide depend on some logic, etc.

@EricEzaM
Copy link
Author

Some notes I took a while ago but never posted...

Use Cases:

  • Notifying user of something. "Duplicated nodes share resourses such as collision shapes and scripts. If you wish these to be independent, make resources unique". Then add buttons like 'configure unique resources', "do not show again" on the notification.

  • Removes the need for many editor controls defining their own 'message' dialog. This will unify styling and make it easy to display messages whenever needed.

  • Does not remove use of output log for displaying errors or editor actions, as these can happen often and you don't want spammed notifications. The system should be used for user-actionable notifications, not things which are purely informational like output log entries. Maybe some purely informational notifications? Not sure what they would be but they could be useful in some Scenarios, like in the previous point about removing the many message dialogs declared in various ui containers. Also something like Add Alerts when In-AnimationTree loads fail #1624 would be a purely informational notification.

  • Can replace current progress windows like 'importing assets...'. The creation of the notification can be made to use a custom control which can then be updated as needed (eg with progress bar)

@nathanfranke
Copy link
Contributor

My issue was a duplicate, but I am noting some of the mockups and ideas I had there:

Add some mockup images

Here is a little mock-up I made. The files deleted popup has a little progress bar which denotes when the notification will expire.

image

When should it be used? Only for user actionable things? Or just messages in general?

Messages in general, especially ones that are undo-able

Describe exact use cases

  • Export for Android/X11/etc. progress
  • Importing assets progress (Which should be asynchronous)
  • File deletion, movement(?), renaming(?) (See Support undo-ing file deletion #1830)
  • Minor release updates(?)
    • I am curious to hear input on this one. If a user is running 3.2.0-3.2.2 but 3.2.3 is out, we could show a toast that says "Would you like to update to 3.2.3? Yes / No (Do not remind me again)"
    • I don't think we should obstruct users in 3.2.X about 4.X+ since most major Godot updates feature breaking compatibility.

@Calinou
Copy link
Member

Calinou commented Nov 13, 2020

I am curious to hear input on this one. If a user is running 3.2.0-3.2.2 but 3.2.3 is out, we could show a toast that says "Would you like to update to 3.2.3? Yes / No (Do not remind me again)"

We'd prefer not introducing automatic update checking without explicit consent from the user. This is because Godot would then have to "phone home" to display update notifications.

I'm fine with adding an explicit "Check for updates" menu option in the editor or project manager still.

@aaronfranke
Copy link
Member

aaronfranke commented Nov 13, 2020

@nathanfranke If automatic updates are desired, I think it would be a better idea to download Godot from Steam or Itch :)

Importing assets progress (Which should be asynchronous)

Well, each asset should be able to be imported in parallel, but some functionalities of the editor should be locked until asset importing is done, such as plugins and tool scripts, otherwise we have bugs like godotengine/godot#36713

@EricEzaM
Copy link
Author

EricEzaM commented May 18, 2021

Another use case is removing dialogs such as the saved files dialog as commented in godotengine/godot#48578

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

7 participants