Commit graph

42393 commits

Author SHA1 Message Date
Michael Natterer
101aee560c app: derive GimpFont from GimpData
(cherry picked from commit 4d3c715990)
2018-06-03 20:47:58 +02:00
Michael Natterer
91e8515227 app: change all GimpCoreConfig data paths to GIMP_CONFIG_PARAM_CONFIRM
so they can be changed without restart (see previous commit).

(cherry picked from commit 5280d7a277)
2018-06-03 20:47:49 +02:00
Michael Natterer
0c04d3784b app: make GimpDataFactory properly derivable
Virtualize a lot of functions and move their code into the default
implementation. Also connect to changes of the "path" property and
reload data automatically when the path changes. Add "wait" method
which is by default empty but is to be implemented by fonts.

(cherry picked from commit 01e4104236)
2018-06-03 20:47:35 +02:00
Jordi Mas
1a16ca7757 Update Catalan translation 2018-06-03 20:12:10 +02:00
Ell
65f1895d4d app: strengthen gimp_async_set_{wait,cancel}()
Make sure gimp_async_set_wait() and gimp_async_set_cancel() work
correctly, even if the set changes in nontrivial ways as a result
of waiting-on/canceling individual operations.  This is purely
theoretic right now, but why not.

(cherry picked from commit ec5f4d03fa)
2018-06-03 10:05:10 -04:00
Ell
b6ecaad275 plug-ins: increase input precision in guides-new-percent.scm
Increase the percision of the "position" property of
guides-new-percent.scm to two decimal places.  Currently, it only
accepts integers, which limits its accuracy to 100px.

(cherry picked from commit 8e6a5298c1)
2018-06-01 10:53:51 -04:00
Ell
357c3d4b6b libgimpwidgets: add exponentiation support to eevl
Add support for exponentiation (using the ^ operator) to eevl.
This is occasionally useful, e.g., in geometrically-derived
quantities involving square roots.

(cherry picked from commit 8d35299410)
2018-06-01 10:53:51 -04:00
Michael Natterer
52e3eb32f3 Use g_set_object() in a lot of places, and splrinkle some g_clear_object()
This is mostly core code which we want to keep in sync with master as
long as possible, so I picked this one even though not strictly
neccessary.

(cherry picked from commit 1b7d63cce9)
2018-06-01 13:14:47 +02:00
Daniel Mustieles
2037b170f6 Update Spanish translation 2018-06-01 10:53:55 +00:00
Alan Mortensen
8aed405fde Updated Danish translation of gimp-script-fu 2018-05-31 13:59:51 +02:00
Alan Mortensen
c4c5177df0 Updated Danish translation of gimp-plug-ins 2018-05-31 13:59:50 +02:00
Ell
129a2c6179 app: hide container-editor busy box when clearing async-set binding
(cherry picked from commit e5e998e9c5)
2018-05-31 05:01:27 -04:00
Anders Jonsson
2296d39bf5 Update Swedish translation 2018-05-30 17:11:12 +00:00
Ell
7c72d8cfa1 app: restore font list in async callback, not async-set notify handler
When font loading is finished, restore the font list in the
corresponding async completion callback, and not in the
"notify::empty" signal handler of the fonts async set

This solves a problem arising when gimp_fonts_wait() is called
*inside* a "notify::empty" signal handler, emitted when reloading
fonts (causing the "empty" property of the fonts async set to
switch from TRUE to FALSE):  When the wait is over, "empty" will
switch back from FALSE to TRUE, however, since the "notify" signal
is non-recursive, the corresponding handler will not be called,
gimp_fonts_wait() will return *before* the font list is restored,
and the caller will see an empty font list.  This can happen under
certain circumstances when reloading fonts while the text tool is
active.

(cherry picked from commit 0e19f159f5)
2018-05-30 12:58:47 -04:00
Anders Jonsson
35d2d52fe2 Update Swedish translation 2018-05-30 16:51:30 +00:00
Alan Mortensen
58ec8189d4 Updated Danish translation 2018-05-30 17:13:08 +02:00
Rodrigo
e7d92e623f Update Spanish translation 2018-05-30 13:12:20 +00:00
Jehan
3c986695a0 authors: adding Simon Müller who did some nice patches on the Win32...
... screenshot plug-in.

(cherry picked from commit 75b226775e)
2018-05-30 12:15:40 +02:00
Jehan
0da0f8ff46 plug-ins: renaming Win32 implementation files to follow namespacing.
(cherry picked from commit ff6d7a7550)
2018-05-30 12:15:33 +02:00
Gil Eliyahu
1a5b28b51d Issue #1458 - Small border on side of single-window screenshot on...
... Windows.

Reviewer note (Jehan): I have not built on Windows because I need to
refresh my crossbuild environment, but it looks sane enough, and Gil
previously did good patches. I push as-is, hoping it still builds fine
on Windows. :-)

(cherry picked from commit 2caa400a96)
2018-05-30 12:15:27 +02:00
Piotr Drąg
51f15e0b78 Update Polish translation 2018-05-30 10:47:17 +02:00
Ell
476742b93d app: more cleanup
(cherry picked from commit e806a92c49)
2018-05-30 03:02:05 -04:00
Ell
b16ea49ca1 app: code cleanup in previous commits
(cherry picked from commit c27316093e)
2018-05-30 02:23:03 -04:00
Michael Natterer
93c337896c Issue #1520 - GIMP 2.10 Crashes when trying to convert 8bit colour...
...mode image to 1 bit.

Don't try to remove unused colors from the mono black/white palette,

(cherry picked from commit 0ff95b66b7)
2018-05-30 02:19:39 +02:00
Ell
05d30d95e1 app: fix linking of test-config
(cherry picked from commit e75bdf3acf)
2018-05-29 17:08:04 -04:00
Ell
bbf3cd6a27 po: update POTFILES.in
(cherry picked from commit 987afcd6d2)
2018-05-29 16:35:43 -04:00
Ell
081867de1e app: fix gui_wait() cleanup
(cherry picked from commit 5a66d6cc74)
2018-05-29 16:35:43 -04:00
Ell
7f18eb467e pdb: change image freeze/thaw procs to "Since: 2.10.2" 2018-05-29 16:07:48 -04:00
Ell
c7779b51b0 app: use gimp_wait() to wait for histogram in threshold and levels tools
In the threshold and levels tools, use gimp_wait() to wait for
histogram calculation to complete before applying auto-adjustment,
so that a message is displayed in the meantime.  Allow the
operation to be canceled, in which case we simply abort the auto-
adjustment, but let the histogram calculation continue.
2018-05-29 16:07:48 -04:00
Ell
0d5b09bb4b app, pdb: wait for fonts to load before dependent operations
Use gimp_fonts_wait(), added in the previous commit, to wait for
fonts to finish loading before operations that depend on font
availability.  In particular, this includes font- and text-related
PDB functions, and text-layer rendering.
2018-05-29 16:07:48 -04:00
Ell
f6fe8939cc app: add gimp_fonts_wait()
... which waits for font-loading to complete, using gimp_wait() to
show a message while waiting.

Note that we don't currently allow the wait to be canceled, since
it may have unpredictable effects on plug-ins, but the interface is
such that the wait might not complete, so calling code should be
prepared for that.
2018-05-29 16:07:48 -04:00
Ell
4527390cd6 app: add gimp_wait()
Add a GimpGui::wait() virtual function, and a corresponding
gimp_wait() function.  The function takes an object implementing
the GimpWaitable interface, and a printf-style message, and waits
for the object to become ready, displaying the message as
indication in the meantime.  The default implementation simply
prints the message to STDERR.

Implement the function in gui-vtable, using the busy-dialog plug-
in added in the previous commit, to display the message in a
dialog.  Additionally, if the object implements the GimpCancelable
interface, provide a "cancel" button in the dialog, which, when
pressed, causes gimp_cancelable_cancel() to be called on the
object.  Note that the function keeps waiting on the object even
after requesting cancelation; GimpTriviallyCancelableWaitable can
be used to stop the wait once cancelation has been requested.
2018-05-29 16:07:48 -04:00
Ell
f542d839f5 plug-ins: add busy-dialog plug-in
This plug-in is used internally to show an interactive dialog in a
separate process, while the main process is blocking waiting for an
operation to complete.  The dialog shows a custom message in a
GimpBusyBox, and potentially a "cancel" button, allowing the
operation to be canceled.  Communication with the main process is
performed through a pair of file descriptors, passed to the plug-in
as arguments.
2018-05-29 16:07:48 -04:00
Ell
de1084986c libgimpbase, libgimp, app: pass icon theme dir to plug-ins through config
Pass the current icon theme directory to plug-ins through the
config message, and add a gimp_icon_theme_dir() libgimp function
for retrieving it.  Note that we already have a similar
gimp_icon_get_theme_dir() PDB function, which we keep around, since
it can be used to dynamically query for the current icon dir,
unlike the former, and since it returns a dynamically-allocated
string, while the rest of the config-related functions return
statically allocated strings.

Use the new function, instead of gimp_get_icon_theme_dir(), in
gimp_ui_init().  This allows gimp_ui_init() to run without making
any PDB calls.  Consequently, this allows us to start plug-ins that
call gimp_ui_init() without entering the main loop in the main app.
We're going to add a plug-in that displays an interactive dialog
while the main app is blocking waiting for an operation to
complete, and we need to be able to start the plug-in without
entering the main loop, to avoid the possibility of arbitrary code
being executed during the wait.

Bump the protocol version.
2018-05-29 16:07:48 -04:00
Ell
82b979383c app: show indication during font loading in text tool and font views
While fonts are loading, show a GimpBusyBox with an appropriate
message above the text tool options, and make the options
themselves insensitive, and in font views, such as in the fonts
dialog (through gimp_container_editor_bind_to_async_set(), added in
the previous commit).
2018-05-29 16:07:48 -04:00
Ell
5a156ccc78 app: add gimp_container_editor_bind_to_async_set()
... which takes a GimpAsyncSet and a message, and shows a
GimpBusyBox with that message, instead of the container view, while
the async set is nonempty.

We're going to use this for font-loading indication in font views,
such as in the fonts dialog.
2018-05-29 16:07:48 -04:00
Ell
aa22914568 libgimpwidgets: add GimpBusyBox
GimpBusyBox is used to show a message indicating an operation is in
progress.  It's basically just a spinner and a label, with some
styling.

We're going to use it both in app/ and in a plug-in.
2018-05-29 16:07:48 -04:00
Ell
957cdc23a0 app: disallow editing text layers while fonts are loading
We already avoid rendering text layers while fonts are loading,
showing an appropriate message, but this will soon be replaced with
waiting for the fonts to finish loading.

Instead, don't allow the text tool to start at all while the fonts
are loading (showing an appropriate tool message, and a BAD cursor
modifier), and halt the tool when reloading fonts if it's already
started.
2018-05-29 16:07:48 -04:00
Ell
953ee1dea5 app: use GimpAsyncSet for keeping track of font loading
Replace the boolean fonts_loading member of Gimp with
fonts_async_set, which is a GimpAsyncSet object.  This allows us
to easily respond to the completion of font loading and reloading,
as will be done in the next commits.

Additionally, move the call to FcConfigSetCurrent(), used to
activate the loaded font configuration, from the async thread to
the main thread, just to be on the safe side, and avoid calling
FcInitReinitialize() in gimp_fonts_reset() if font loading is still
in progress, which is unsafe.
2018-05-29 16:07:48 -04:00
Ell
67c8b00595 app: fix indentation in core-types.h 2018-05-29 16:07:48 -04:00
Ell
8fae111509 app: add GimpAsyncSet
GimpAsyncSet represents a dynamic set of running GimpAsync objects.
The objects are automatically removed from the set once they're
synced.

GimpAsyncSet implements the GimpWaitable and GimpCancelable
interfaces, allowing the entire set to be waited-on or canceled.

Additionally, GimpAsyncSet provides an "empty" property, which
indicates whether the set is empty or not.  This allows responding
to the completion of all the GimpAsync objects through the set's
"notify::empty" signal, or drive UI changes through property
bindings.
2018-05-29 16:07:48 -04:00
Ell
5c6ca1f16e app: add GimpTriviallyCancelableWaitable
GimpTriviallyCancelableWaitable is a proxy object for another
GimpWaitable object, implementing both the GimpWaitable interface
and the GimpCancelable interface.  While waiting on the proxy
simply waits on the underlying waitable, canceling the proxy
doesn't affect the underlying waitable, even if it implements
the GimpCancelable interface as well, but rather causes subsequent
wait operations on the proxy to successfully complete immediately.

This essentially causes cancelation to abort only the wait, rather
than the underlying operation.
2018-05-29 16:07:48 -04:00
Ell
7660891d8c app: add GimpUncancelableWaitable
GimpUncancelableWaitable is a simple proxy object for another
GimpWaitable object, implementing only the GimpWaitable interface.
Its main purpose is to mask away the cancelability of an object
implementing both GimpWaitable and GimpCancelable.
2018-05-29 16:07:48 -04:00
Ell
7740f0f830 app: implement GimpWaitable::try_wait() in GimpAsync 2018-05-29 16:07:48 -04:00
Ell
04a7b2c53a app: add GimpWaitable::try_wait() vfunc
... which should never block, but rather return TRUE or FALSE
immediately, depending on whether or not the waitable is ready.
2018-05-29 16:07:48 -04:00
Ell
85a1b1ece7 app: lower thread priority of independent async operations
In gimp_parallel_run_async(), lower the priority of threads
executing independent async operations.  Independent operations
are generally potentially long-standing background tasks, which we
don't want to bog down the rest of the program.

This is currently only implemented on Linux and Windows.
2018-05-29 16:07:48 -04:00
Michael Natterer
dca5d1377d Issue #1521 - First time start: GIMP-Error: Error while parsing templaterc
Don't use deprecated "fill-type" value names in the defailt templaterc.

(cherry picked from commit a0805e460a)
2018-05-29 00:06:46 +02:00
Marco Ciampa
7ebac15391 Updated Italian translation 2018-05-28 23:52:51 +02:00
Anders Jonsson
a0dde2d40f Update Swedish translation 2018-05-28 18:55:02 +00:00
Rodrigo
8c9f492d5f Update Spanish translation 2018-05-28 12:00:40 +00:00