Make Save/Save As "dummy proof" (like GIMP 2.8)?

I wanted a quick jpeg to send my in-progress drawing to a friend, but I was a dummy and I clicked “Save as” instead of “Export”. I didn’t notice my folly for a few hours, so all my layers were being flattened every time I hit save. When I finally closed the document, all the layers went “poof”. So I had an hours-old .ora file, and a jpg. Not the end of the world, I suppose-- I probably would have flattened pretty soon anyways.

I used to get frustrated that The GIMP refused to let you “Save As” a non-gimp format; forcing you to use Export or use the Save as JPG/PNG shortcuts-- but now I realize how clever that is; to save dummies like me. A lot of people hated the Gimp 2.8 behavior, so maybe if nothing else perhaps we could pop up a warning like “Your document contains features that are not compatible with the chosen destination format. Please select another format to avoid data loss”. Thoughts?

I agree with you. I still find Gimp’s behavior a little inconvenient at times, but i understand why they changed it.

It’s probably a good idea to say *something*! I might tweak the wording though :smile:

When libreoffice pops up this message when saving for Word, it can be a bit irritating I have this suspicion that everybody just clicks through it too. But maybe it’s OK when considering layered formats vs non-layered?

It doesn’t have to be a dialog. We have the option of giving the user a transient message using the statusbar, or maybe using an on-canvas fading message box at the bottom if you’re in fullscreen mode. We could use a GtkInfoBar too, which is more invasive.

It might be nice to require a click one time and if they continue to press ctrl-s it won’t pester them again until they work on a new document? I worry that a repeated fading message might be annoying for compulsive savers (although one has to wonder why someone would be worried about losing data and also using a lossy format). Status bar would be fine, but full screen would be a problem huh. It’s definitely a balancing act between being annoying and being helpful :slight_smile:

I agree that wording is pretty bland. Something short and sweet would be better. :slight_smile:

Yeah I agree with briend on this. Save should default to saving as Open Raster instead. It can be annoying since it’s not normal, but after a while I got used to it on GImp. Plus I remember a few times it saved my bacon as well.

Another thing to think about is how to use Save As and Export as well. I never really understood why we have these when they all do basically the same thing. In a perfect world this how I would set up our Save and Export functions:

Save: Open Raster (ORA)
Save As: JPEG, PNG, BMP, ect.
Export: KRA(Krita), XCF(GIMP), PDF, PSD(Photshop), ZIP(packaged PNGs), ect.

That way each save option has a specific purpose in MyPaint. Plus Export would be perfect to use for the plugin system where someone could write a compatibly matrix and Export to other packaged file formats such as Krita and Gimp or haven forbid Photoshop.

Hmm. I don’t think Save As should be some limited form of exporting, that seems more confusing. I think we should either keep the current way and add a dialog/warning-- OR, just make it exactly like GIMP. I think users would appreciate the consistency between the applications.

I just loaded up Photoshop to see how it handles this. I know, I know :wink: If you start off as PNG file, you can keep saving it with ctrl-S without any prompts-- UNTIL you add a layer and try to save again. Then it pops up a Save As dialog with Photoshop as the selected format. If you select PNG again it says “File must be saved as a copy with this selection”. So, in other words, Photoshop will not let you be a dummy, but it doesn’t really tell you why or what it is that is preventing the save (in this case, layers).

Looking at the GIMP menu, I can really see the logic behind each one, as much as it pains me to see so many items!

Save-- Save your image in the native format (you won’t lose anything– it is the save command)
Save As-- Save your image in the native format, as a new name (fork?)
Save a Copy-- Save your image in the native format, as a new name, but keep working on the original. (backup?)
Save as JPG-- A quick shortcut instead of export dialog
Save as PNG-- A quick shortcut instead of export dialog
Overwrite (filename.xxx)-- Save/export the document if you are being a dummy and not using the native format :slight_smile:
Export-- Export a copy to another format but continue working in the current format

I would say we don’t really need a shortcut for JPG and PNG but the rest make a lot sense. :slight_smile:

i’ve always thought of “save as” being the same thing as “save”, except saving as a new file, so i think save as should also be ora. Save As typically changes the name of the working file, so that any changes made since the last Save won’t impact the original file.

Save A Copy seems like a good thing to include…i rarely use it in Gimp, but i imagine there are many people who use it frequently.

Export seems to me like a catch-all for non-native formats…i see no logical reason to have separate menu items for jpg/png if they’re already included in Export.

So what pieces of the code do we need to change in order to do this?

I’ve seen the Twitter feedback. Oh my. Who knew this one specific area was such a hostile issue? It doesn’t fill me with enthusiasm for changing anything TBH.

Right now I don’t want to change anything that MyPaint does here beyond adding some notification to the user that their layers were squashed into one. It should be possible for the user to turn off any dialogs or toasts we use for some period of time, but I’m not sure which timescale feels right to me. What we could do:

  • For the duration of the current document’s work (until the next New or successful Open, within a MyPaint session). User choice: “Yeah, that’s what I want to do for this one”.
  • For the current MyPaint session (until MyPaint is launched again). User story: “Yeah, that’s how I’m working right now”.
  • Forever (at least, until the user turns the warnings back on in menus or prefs). User story: “Heck, this thing’s irritating, I always know what I’m doing OK?”

My ideals are a) simplicity of operation b) clarity about what has been done c) actually doing what the user told the program to do even if that’s a bit odd d) not losing the user’s data, e) not making the user feel stupid later for something they did (rude.) Those are in no particular order, though c. would be the one I’d drop first if I was trying to make them all fit.

I’m open to suggestion, but bringing another program’s war here wouldn’t be welcome.

Big stumbling block to using text: MyPaint might not be translated for the user’s language. Icons might help. 64x64+ symbolic icon for “MyPaint merged your stuff (and you may not want that)”, anyone? :slight_smile:

How about always saving an ORA in addition to the format the user has selected, unless s/he selected ORA?

That could also be a bit annoying… maybe a checkbox in the Save As dialogue “save ORA backup”, which will have to be unchecked if the ORA isn’t wanted. Option to permanently uncheck it in the user preferences.

A bit more than a notification or icon though. Feel free to ignore this idea. :slight_smile:

Honestly, I wouldn’t let that one overzealous twitter user sway you one way or the other since that was really uncalled on both their ends despite their intentions. Plus we should focus on what our users want here and not what users want on Twitter and other social media. It’s good to spread the word and get some metrics, but don’t let it be the definitive answer.

With that said. I agree it seems more fitting to warn the user that it will merge all layers if it’s being saved as other than an ORA.

Also adding those Save As PNG, JPEG ect. shortcuts that GIMP has in their file menu seem pretty useful.

GIMP style is OK so long as there’s a command-line exporter.

If Save As cannot save as anything but ORA, then some people are going to develop a habit of saving ORA even if they ultimately need an image in another format. So it would be wise to implement and document a way of exporting ORA to a merged PNG from the command line. This way, if someone uses the program to create graphics for a video game, the user can write a makefile to run an export whenever the ORA has changed.

What’s a makefile? A makefile is a script for GNU Make, which is a tool to run commands that transform source files into other formats whenever the source files have changed. Make is commonly used to build executable programs from source code, but it can also be used to convert images in one format into another format. First, a user of Make creates a makefile stating which files need to be created and what command is used to convert each type of file to another type. Then Make determines which commands need to be run by comparing the modification date of each target file to those of its corresponding source files. This works so long as there is a command-line converter, but it’s a lot harder if only GUI tools are available.

So what is needed? This answer on Stack Overflow claims that every ORA file is a zipfile that contains a PNG export under the name mergedimage.png. Info-ZIP UnZip, a popular command-line zipfile extraction tool, offers the -p switch to extract a file to standard output. This allows extracting the file under a different name, as mentioned in this answer on Super User. Mention how to pull this file out in the manual, possibly in an advanced section:

unzip -p "My Image.ora" mergedimage.png > "My Image.png"