Hi!
I would not call "compiling GIMP" such a difficult task for a seasoned developer. GIMP has always been quite a model in terms of well known good practices and generic logics. 🙂I would look here - https://gitlab.gnome.org/GNOME/gimp - Gimp source code
But even compiling and building this beast under windows is difficult task (I've personally failed)
Now, Gimp UI is built using GTK (btw it means Gimp ToolKit), which (I would say) is deeply connected with program itself. But I can be wrong - it's currently upgraded from GTK2 to GTK3 so maybe devs have in mind that GTK4 is ready and Gimp could be upgraded again in near future and made it more layered (separated core x modules x gui). But that's better question for devs.
GIMP is already quite layered. If you look at app/core/, you have only core code (no include to GTK or other display code in there). Then you have a few other folders with graphics components. Still, all in all, it is obvious that GIMP is very graphical-interfacy since it's one of the main points of such an application (even though it can be — and is — also massively used as a script framework).
Now regarding the original question:
On Tue, Jun 1, 2021, 21:50 Grant Mulholland via gimp-gui-list <gimp-gui-list gnome org> wrote:
Hi, I’m wanting to try and utilize Microsoft’s tools to create a more “native” feel for GIMP on Windows, along the lines of using WPF and (hopefully) the Fluent Design System. Where should I look to utilize GIMP’s functionality in a situation like this?
Which Microsoft tools are you talking about? Do you mean just WPF (apparently a Microsoft toolkit according to this: https://docs.microsoft.com/en-us/dotnet/desktop/wpf/ ?) or do you have a more exhaustive list in mind?
As a general rule:
* We are not against better integration to various platform in general, though we also like to keep common visual traits. If the goal is to completely redo the interface into another GUI toolkit (hence to the point it would barely be recognizable), well you may as well do a new application. 😉
* Code-wise as well, we want to keep code as generic as possible,
for obvious maintenance reasons. Ideally we would not even have
one #ifdef or alike to cater to platform specificities. As I said,
this is not that we don't want integration, but if possible, we
prefer the integration to happen on lower layers so that the
logics code can just focus on… well logics. Of course, we do in
fact have some #ifdef here and there, my point is rather than we
don't want these to be everywhere (⇒ i.e. we don't want spaghetti
code).
* If WPF is really another GUI toolkit, and if your plan is to replace fully GTK by WPF, I am really unsure this could happen. On the other end, maybe GTK could use WPF in some place (as a backend). This would allow GIMP to just use generic GTK code, which would use a native toolkit for actual render. That's one possibility. In such a case, the best way to contribute would be therefore to contribute such code to GTK.
By the way, does using WPF mean using C#? Within GIMP, I would
consider this quite a blocker. Well in a very limited way, well
compartimented Windows-only code, maybe… I don't know, it would
really depend how it is implemented. But really always consider
this is a cross-platform tool which needs to work in a whole lot
of situations, platforms, etc.
(Not sure if this is the right place to ask about this…)
This is definitely the right place to discuss GUI. 🙂
Also to have a better idea of what it means to make use of WPF, could you tell us more of what you had in mind and what it would mean for GIMP (usage and development)?
And what would be the more specific gain? Like "feel more native" is not so accurate as a description to me to know if such a huge workfield is really worth the hassle.
Thanks!
Jehan
_______________________________________________
gimp-gui-list mailing list
gimp-gui-list gnome org
https://mail.gnome.org/mailman/listinfo/gimp-gui-list
_______________________________________________ gimp-gui-list mailing list gimp-gui-list gnome org https://mail.gnome.org/mailman/listinfo/gimp-gui-list
-- ZeMarmot open animation film http://film.zemarmot.net Liberapay: https://liberapay.com/ZeMarmot/ Patreon: https://patreon.com/zemarmot Tipeee: https://www.tipeee.com/zemarmot