Commit Graph

14 Commits

Author SHA1 Message Date
Ell
3b0040c043 app, libgimp*, modules: don't use g_type_class_add_private() ...
... and G_TYPE_INSTANCE_GET_PRIVATE()

g_type_class_add_private() and G_TYPE_INSTANCE_GET_PRIVATE() were
deprecated in GLib 2.58.  Instead, use
G_DEFINE_[ABSTRACT_]TYPE_WITH_PRIVATE(), and
G_ADD_PRIVATE[_DYNAMIC](), and the implictly-defined
foo_get_instance_private() functions, all of which are available in
the GLib versions we depend on.

This commit only covers types registered using one of the
G_DEFINE_FOO() macros (i.e., most types), but not types with a
custom registration function, of which we still have a few -- GLib
currently only provides a (non-deprecated) public API for adding a
private struct using the G_DEFINE_FOO() macros.

Note that this commit was 99% auto-generated (because I'm not
*that* crazy :), so if there are any style mismatches... we'll have
to live with them for now.
2018-09-18 14:39:56 -04:00
549d880847 app: display extension long description in the details widget.
AppStream spec says it can only contain <p>, <ol> and <ul> markups.
Unfortunately these are not pango markups (nor is there any equivalent).
So I just use newlines and spaces until I figure out anything fancier.

That's all still quite ugly, but whatever, I'm still in the start.
2018-08-07 18:22:47 +02:00
a4e0a8f96e app: extensions can now install themes. 2018-08-07 15:51:54 +02:00
7d611e713c app: extensions can now install splashes.
Not the most useful type of extensions per-se, but a lot of people seem
to appreciate creating and installing new splashes. Let's make it easy
to install as extensions.
Note that extension splashes are cumulative. So if you enabled several
splash extensions at once, an image would be chosen in random amongst
all of them.
2018-08-07 15:51:54 +02:00
d68a68c54d app: add "running" property to extension.
And connect to this property in the extension manager to allow dynamic
reload when starting/stopping an extension. It doesn't work yet for
extensions with plug-ins but works with other kinds of data.
2018-07-18 12:08:57 +02:00
02aec4c3d6 app: serialize and deserialize extensionrc from GimpExtensionManager.
We only save the active state of extensions so that we can reload all
extensions same as they were at previous exit. All other data are saved
as per-extension metadata and should not be saved in the rc file.

If an extension is not listed in extensionrc, we run it by default if
this is a system extension (so that new core extensions by the GIMP team
are run when installed after an updated), but not when they are
user-installed extensions.
2018-07-17 19:45:51 +02:00
5f700549e7 Change the license URL from http://www.gnu.org/licenses/ to https:// 2018-07-11 23:29:46 +02:00
20b399e9bf app: add some GimpExtension and GimpExtensionManager API.
To be used in the next commit.
I keep the GUI and core changes well separated in different commits so
that the core is easy to cherry-pick even though I will have to have
different GUI code.
2018-07-07 16:10:50 +02:00
b9b8676cb8 app: use GIMP_VERSION for version comparison.
GIMP_APP_VERSION does not include the micro version.
Also make version comparison with org.gimp.GIMP mandatory to force good
practice. This way, extension makers will have to advertize the version
of GIMP it works for, which will make a sane ecosystem of working
extensions only (hopefully!).
2018-07-07 16:10:50 +02:00
4ac9543f72 app: extensions can now contain plug-ins. 2018-07-03 00:23:32 +02:00
a8f1a18b11 app: fix parent check for extension files.
I realize that g_file_has_parent() is only looking for the direct
parent. I want to look for any ancester, so I loop through parents (with
a limit to avoid infinite looping with symlinks and such).
2018-07-03 00:21:19 +02:00
87b17944e9 app: adding extension requirement support.
This is quite important since it will allow extensions to support only
some versions of GIMP (not trying to run a plug-in made for an
older/newer libgimp API for instance, or using new features, etc.).

It will also allow extensions to add dependencies to other extensions.
2018-07-02 23:39:25 +02:00
a8a0408eb6 app: extensions can now bundle various data.
Extensions work for brushes, dynamics, MyPaint brushes, patterns,
gradients, palettes and tool presets.
More to come, but this is a first and working proof-of-concept.
2018-07-02 21:16:14 +02:00
b70424b20a app: add base classes for the extension manager.
Right now it only loads AppStream data, which is completely useless, yet
is a base of a managed extension system. Having proper metadata is what
will allow to actually know what is installed.
This is only the first draft.

Note that I am not adding the extension path into GimpCoreConfig on
purpose, since the point is not to have people manage their extension
directories manually anymore.
The extensions will be loaded from the build-time system path or the
config directory, and that's all.
What will probably be stored in the config though will be the remote
repositories URLs (allowing third-party extension repositories).
2018-07-02 21:16:14 +02:00