Commit Graph

190 Commits

Author SHA1 Message Date
Michael Natterer eee29e6793 app: some formatting cleanup in the file dialog widgets
and remove "Gimp*" parameter from gimp_save,export_dialog_set_image(),
the dialog already knows its Gimp.
2016-01-06 14:10:36 +01:00
Michael Natterer 865bb627e0 app: set the name of the open dialog again in file_open_dialog_show()
so we get back the "Open Image as Layers" window title. Seems it was
gone since I broke it in 2008.
2016-01-06 05:12:03 +01:00
Michael Natterer 5455b8bfd0 app: move some stuff out of app/file/
file-procedure.[ch] is gone and its functions moved to
GimpPlugInManager where they belong (the manager keeps around the
lists of load, save and export procedures).

Utility functions from file-utils.[ch] that have nothing to do with
image files moved to core/gimp-utils.[ch].
2016-01-03 23:38:08 +01:00
Michael Natterer 2c19689518 app: clean up XCF compat code in file_save_cmd_callback()
Add local boolean "compat_possible" to make it more obvious what the
compat logic does.
2015-10-30 16:46:38 +01:00
Jehan b17e1b1cfc app: split GimpFileDialog into Gimp(Open|Save|Export)Dialog subclasses.
The code refactoring allows better readability which will allow in turn
to add more complex specific features making good use of the save/export
split concept.
2015-09-02 20:05:01 +02:00
Jehan 9d9f30e7c0 app: warning message when compat mode set yet cannot be applied.
This would typically happen if the compat mode was set earlier through
the save dialog, then later changes in the image render it inapplicable.
When this happens, we unset the compat mode, and saves without error,
but still emit a warning for the user to know the compatibility got
dropped.
2015-09-01 19:36:40 +02:00
Jehan 55bdd4e817 app: check the XCF compat mode is still possible before saving.
Even if you saved previously in compatibility mode, you may have used
new features since, which would cancel the compat mode flag.
2015-09-01 16:06:29 +02:00
Jehan bdece29d8c app: keep track of compatibility mode on an image.
If one explicitly enables the compatibility mode, one expects this to
be applied on following saves of the same image as well.
2015-09-01 15:20:28 +02:00
Michael Natterer d3600ab379 app: add File -> Copy Image Location 2015-02-17 13:33:10 +01:00
Michael Natterer e448cc3173 libgimpbase, app: implement File -> Show in File Manager
Add gimp_file_show_in_file_manager() to libgimpbase and a menu item
in app which shows the image's file (if any) in the file manager.

Implemented calling the org.freedesktop.FileManager1 interface
and dropped snippets found on stackoverflow for somebody to
turn into working code for OSX and Windows.
2015-02-16 18:40:26 +01:00
Michael Natterer 950f753ede Bug 736907 - Compat mode for XCF
- add gimp_image_get,get_xcf_compat_mode()
- add a compat toggle to GimpFileDialog which is shown and sensitive
  only for a save (not export), and if the image structure allows
  to save an old version at all. The button also has a tooltip
  which explains why it is sensitive and what it does
- add "gboolean xcf_compat" to file_save_dialog_save_image()
- in file_save_dialog_save_image(), call image_set_xcf_compat_mode(TRUE)
  only around the call to file_save() and set it to FALSE after saving
- in xcf_save_invoker(), honor the image's XCF compat flag and save an
  RLE-compressed XCF if possible

The above is very convoluted and doesn't pass the "xcf_compat" boolean
directly because we can't change the parameters of gimp-xcf-save, and
because the gimp-xcf-save might be called indirectly.
2014-10-20 22:54:11 +02:00
Michael Natterer 39f7401703 app: change Gimp->default_folder from being a path to a GFile
Also fix GimpFileDialog to actually start with that folder, and not in
its parent folder.
2014-07-09 20:12:05 +02:00
Michael Natterer c2f7ec7b16 app: port file-actions and file-commands from URI to GFile 2014-07-08 01:19:39 +02:00
Michael Natterer ff6ea69569 app: change the image's various URIs to GFiles
which gets rid of a lot of temporarily added GFile code again because
we don't need to convert between URI and GFile any longer.
2014-07-07 23:58:11 +02:00
Michael Natterer 0f8d84d5e9 app: port all file_open() and file_save() functions to GFile 2014-07-07 23:58:11 +02:00
Michael Natterer 3dbae5e4d9 Bug 727854 - Export file type should not be based on filename extension
Keep the export proc acound in the image (just as we keep around
the save proc), and use it when exporting again.
2014-07-02 14:24:02 +02:00
Michael Natterer 65a65947d9 app, libgimp: replace GTK_STOCK_FOO by icon names
unless it's a stock ID used for an action button, will address that
later.
2014-05-11 22:49:22 +02:00
Michael Natterer 7f23fbec34 app: add screen and monitor to all display and image window constructors
so they appear on the proper monitor as well.
2014-05-02 20:21:41 +02:00
Michael Natterer 843866e7e7 app: make things behave more reasonable with multiple monitors
There is now a preference option that determines whether windows
should be opened on the same monitor as before. It should be disabled
when the machine gets monitors plugged/unplugged dynamically ("laptop")
and enabled when there is a static multi-monitor setup ("wokstation").
This is merely the current simplistic policy on top of the newly added
underlying infrastructure:

- pass integer monitor numbers around in all places where we already
  pass around a GdkScreen. Pass the "current" monitor to these changed
  APIs, where "current" is either the monitor where the action-triggering
  widget is, or if that is unavailable the monitor where the mouse is.

- add gimp_widget_get_monitor() in order to easily get to the monitor,
  just like gtk_widget_get_screen().

- add screen and monitor parameters in some places that were missed
  before.

- in sessionrc, save all window positions relative to the window's
  monitor, and save the monitor separately, if it's not the screen's
  primary monitor.

- when restoring window positions, use the stored monitor when the new
  prefs options says so (use the screen's primary monitor if there is
  no stored monitor), otherwise use current monitor that is now passed
  around.
2014-05-02 03:01:23 +02:00
Jehan 4b14ed2e5e file-export* labels and actions renamed.
Follows updated save+export specification.
For renamed actions (file-export and file-export-to respectively to
file-export-as and file-export to mimick file-save*), menurc from
GIMP 2.8 will be correctly migrated.
2013-11-18 09:07:32 +13:00
Jehan c7aa623a55 app: clean out a big bunch of leading tabs.
For some unknown reason, most calls to gimp_message_literal() were
indented with tabs.
2013-09-15 04:59:20 +12:00
Michael Natterer b56145626e Bug 706221 - File/Save (As) dialog: add a link to the Export dialog...
...for Non-XCF files.

When the entered extension in save or export is on the other group,
add a link to the warning dialog which allows to jump directly to the
export or save dialog, with the same filename pre-entered.
2013-08-23 20:35:24 +02:00
Michael Natterer af7916b3e6 Bug 689403 - GIMP saves files in strange directories when started from an...
If one single directory is passed on the command line, use it
as default folder for the open/save dialogs.
2012-12-15 00:36:19 +01:00
Jehan 5c6c55e50a Bug 685557 - fix closing and saving a new image.
Current implementation had 2 issues, fixed by this commit:
1/ after the file save dialog is closed, the image would not close.
2/ if you switched the visible tab before saving the new image, it
would save and close the visible tab, instead of the expected one.
2012-11-27 23:57:24 +09:00
Nils Philippsen f6f8079013 app: remove check which hides conditions that should not happen
Remove a GTK_IS_WINDOW() check where this would hide parent widgets
being passed in that don't have a gtk toplevel. This should not happen
and if it does we want to know about it.
2012-11-14 16:43:06 +01:00
Nils Philippsen 1a4087bd5f app: fix marking file dialogs as transient if opened from context menu
GimpDisplayShell isn't a GtkWindow (anymore), therefore use
gtk_widget_get_toplevel() to find the actual toplevel window.
2012-11-14 16:42:05 +01:00
Michael Natterer 220b28677b Bug 676566 - Window title becomes "Untitled" after exporting without saving
Fix this and other issues more globally by moving the logic that
formats the image's display name into the GimpImage object, and return
the properly formatted name, e.g. "Foo.xcf", or "[Foo] (imported)"
from gimp_image_get_display_name().

Also add gimp_image_get_display_path() which returns the full path
instead. Use the two functions for formatting the image title, and
apply various other fixes that make sure the UI always uses the same
string to identify the image.

Call gimp_object_name_changed() whenever the save/export status
changes, so the image's cached display name and path get cleared.
2012-07-17 22:52:49 +02:00
Michael Natterer b0170ee5ea app: don't ask to confirm reverting "Untitled" when the image was imported 2012-07-14 00:11:17 +02:00
Michael Natterer 39c18e9a48 app: make file_save() aware of the difference between overwrite and export
by having two booleans "export_backward" and "export_forward" in the
api instead of just an "export" one that would destroy the "imported
from" state. This change fixes the state of the "Overwrite" menu item,
so it stays visible until the file got either saved or exported to
another filename.

This also reverts commit a4beeecf2b, so
Ctrl-S is always invokable even if invisible.
2012-05-18 18:57:58 +02:00
Michael Natterer 0a68527edc app: move the GimpWindowStrategy interface from display/ to widgets/ 2012-01-30 23:33:21 +01:00
Michael Natterer 325bce54a7 app: port dockable showing to using GimpWindowStrategy API
so it works right in SWM. Fixed actions/, tools/, and app/ for now.
2012-01-30 23:24:44 +01:00
Martin Nordholts 1c0115ec95 Fix some warnings 2011-07-05 22:13:18 +02:00
Martin Nordholts c73bdc0971 app: Make 'Export to' fall back to 'Export...'
Make 'Export to' always sensitive (as long as there is an image at
all). And make it fall back to 'Export...' if no export target has
been set yet. Note that it is not necessarily visible at all times,
sometimes 'Overwrite' shadows it. It shall still be invokable though.

Reference:
[Gimp-developer] Isn't this behaviour unintuative?
http://lists.xcf.berkeley.edu/lists/gimp-developer/2011-June/026885.html
2011-06-30 23:45:25 +02:00
Mukund Sivaraman 24ac01bfa9 app: Fix corruption while in use of imported uri 2011-05-07 05:52:31 +05:30
Martin Nordholts 366cddc856 app: gimp_image_get/set_imported/exported/save_a_copy_uri()
Add more proper core API for GimpImage URI management.
2011-02-02 22:28:46 +01:00
Martin Nordholts 8d61a61c0e app: Remove GIMP_FILE_EXPORT_TO_URI_KEY
Remove GIMP_FILE_EXPORT_TO_URI_KEY which is always identical to
GIMP_FILE_EXPORT_URI_KEY.
2011-02-02 22:28:46 +01:00
Martin Nordholts 480d6e0cf2 app: Add and use gimp_image_get_uri() 2011-01-26 08:19:39 +01:00
Martin Nordholts ac773489e4 app: gimp_image_get_uri() -> gimp_image_get_uri_or_untitled() 2011-01-26 07:55:14 +01:00
Martin Nordholts d7dc2dc1ab app: Make tooltips in the toolbox work again
We need to be able to pass a GimpUIManager to
gimp_dialog_factory_dialog_new(), so make that possible. Also make
sure to set ui_manager in gimp_dialog_factory_dialog_new_internal()
when we create both a dock window and a dock, so tooltips works in
toolboxes created from scratch.
2010-05-16 12:19:18 +02:00
Martin Nordholts 11b1300b6f app: Introduce gimp_dialog_factory_get_singleton()
Instead of including dialogs/dialogs.h everywhere, introduce
gimp_dialog_factory_get_singleton(). The dialog factory singleton is
still initialized by dialogs.c though.

Right now the assumption is that we never will have another dialog
factory instance around. There were so many problems before when we
had four of them, so let's just keep one of them around.
2010-02-28 23:23:24 +01:00
Michael Natterer c5b856f16f Use gimp_display_get_image() instead of display->image 2009-10-06 19:20:44 +02:00
Michael Natterer d1ded0617f More gimp_display_get_shell() instead of display->shell 2009-10-05 19:58:03 +02:00
Michael Natterer a3558e3cb8 Remove GIMP_OBJECT() casts when calling gimp_object_get_name() 2009-08-31 22:47:18 +02:00
Martin Nordholts 957cf2cfa9 app: Always use gimp_object_get_name()
Begin to consider GimpObject::name as private and always use
gimp_object_get_name(). Change gimp_object_get_name() to take an
untyped pointer so we don't have to do so awfully many casts. There is
a runtime check for the type inside the function anyway.
2009-08-29 12:41:29 +02:00
Martin Nordholts c4601b298d app: Make 'Overwrite foo.png' work
In File -> Overwrite, we need to use the import source as the export
URI since there is no explicit export target given yet.
2009-07-05 09:28:52 +02:00
Martin Nordholts c181f4eb05 app: Add and use gimp_image_is_dirty() 2009-07-03 21:11:21 +02:00
Martin Nordholts c23370c3af app: Emit the GimpImage::exported signal when image is exported 2009-05-16 13:02:55 +02:00
Martin Nordholts d3353f721b app: Rename 'Save as Template' to 'Create Template'
Rename 'Save as Template' to 'Create Template' in the File menu.
2009-05-16 09:48:22 +02:00
Martin Nordholts 7a771a09d3 app: Implement 'File -> Export to'
Handle 'Export to' by finding a file proc based on the import URI and
then save back to that location using the proc.
2009-05-16 09:48:22 +02:00
Martin Nordholts 10226ae453 app: Show the Export Image dialog on File -> Export...
Create a export dialog constructor in the dialog factory and invoke it
on File -> Export
2009-05-16 09:48:12 +02:00