LMMS / LMMS/lmms

Use native file dialogs everywhere

Open
#5,240 11 comments 5 reactions 0 assignees View on GitHub
gui
Dominant language
C++
Stars
10.4k
Forks
1.3k
Avg merge
2d 13h
Merged PRs (30d)
7

Description

Mainly for consistency with the rest of the interface, we currently [use themed file dialogs everywhere](https://github.com/LMMS/lmms/pull/4298), instead of native, but unlike native, they

- are slower
- aren't familiar to users,
- don't have bookmarks and quick access,
- don't have thumbnails,
- require more code (4 files & 413 SLOC).

@Wallacoloo once wrote:

> we should use OS-native dialogs instead of custom-themed ones (because, say, the gtk file chooser includes previews for image types whereas custom dialogs don't, or because OS-native file choosers include user-bookmarked locations, whereas custom dialogs don't, ...).

That being said, switching to native file dialogs everywhere has some implications.
Class `VersionedSaveDialog` has some added features that can't be implemented in native file dialogs:

1. *Increment/Decrement version number*
2. *Save options*

![VersionedSaveDialog](https://user-images.githubusercontent.com/25503477/66723835-fbda5c80-edeb-11e9-8533-948ffd5f97f2.png)

No. 1 is useless, as users just manually change the filename, so it should be removed.
I don't know what to do about No. 2, though. :thought_balloon:

---

Related: #3792, specifically: https://github.com/LMMS/lmms/issues/3792#issuecomment-439078098.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reading the VersionedSaveDialog implementation and the discussion in related issue #3792. Determine how native file dialogs can replace the themed dialogs across the application, including how the remaining save options should work. Done means native dialogs are used everywhere and the obsolete version increment/decrement behavior is removed or otherwise resolved.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
desktop
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.