[gimp] icons, tools: start grouping icons by their usage.



commit d2db539591b823331b4304f4ce26327eab27c885
Author: Jehan <jehan girinstud io>
Date:   Sat Jan 29 00:21:40 2022 +0100

    icons, tools: start grouping icons by their usage.
    
    There are some clear and obvious groups in the icons. For instance, the
    Preferences icons are one of them. Looking up the code, we only use them
    in 16px (in Preferences side menu) and 48px (in Preferences page
    headers). Until now, we were storing in other unrelated size (22px) and
    also the lists per-sizes were not consistent. Some icons were missing
    here, other there.
    
    With this new organization, the Preferences icons are listed in a single
    file, ensuring usage and contents consistency. Also it allows to install
    them only for the needed sizes (note that it is possible that they might
    be needed in different size, for instance with custom themes; but we
    can't just randomly distribute icons in all sizes; or to be more
    accurate, this is exactly why we encourage rather the SVG/scalable
    icons, so if some people explicitly go for raster icons, they also get
    the drawbacks which come with).
    
    Last note: it may be possible that some icons end up in different
    "semantic" icon group. This is not a problem with this new organization
    as my scripts handle duplicates gracefully.

 icons/Color/icon-list.mk         | 231 ++++++++++++++++++---------------------
 icons/Color/meson.build          | 108 ++++++++++++------
 icons/Symbolic/icon-list.mk      | 231 ++++++++++++++++++---------------------
 icons/Symbolic/meson.build       | 111 +++++++++++++------
 icons/icon-lists/bitmap_16.list  |  25 -----
 icons/icon-lists/bitmap_22.list  |  39 -------
 icons/icon-lists/bitmap_48.list  |  40 -------
 icons/icon-lists/prefs.list      |  56 ++++++++++
 icons/icon-lists/scalable.list   |  40 -------
 tools/generate-icon-makefiles.py |  30 ++++-
 10 files changed, 443 insertions(+), 468 deletions(-)
---
diff --git a/icons/Color/icon-list.mk b/icons/Color/icon-list.mk
index 8f43274f17..a8fd126c91 100644
--- a/icons/Color/icon-list.mk
+++ b/icons/Color/icon-list.mk
@@ -212,46 +212,6 @@ scalable_images = \
        scalable/gimp-pivot-west.svg                            \
        scalable/gimp-plugin.svg                                \
        scalable/gimp-portrait.svg                              \
-       scalable/gimp-prefs-color-management.svg                \
-       scalable/gimp-prefs-controllers.svg                     \
-       scalable/gimp-prefs-default-comment.svg                 \
-       scalable/gimp-prefs-default-grid.svg                    \
-       scalable/gimp-prefs-display.svg                         \
-       scalable/gimp-prefs-folders.svg                         \
-       scalable/gimp-prefs-folders-brushes.svg                 \
-       scalable/gimp-prefs-folders-dynamics.svg                \
-       scalable/gimp-prefs-folders-environ.svg                 \
-       scalable/gimp-prefs-folders-fonts.svg                   \
-       scalable/gimp-prefs-folders-gradients.svg               \
-       scalable/gimp-prefs-folders-icon-themes.svg             \
-       scalable/gimp-prefs-folders-interp.svg                  \
-       scalable/gimp-prefs-folders-modules.svg                 \
-       scalable/gimp-prefs-folders-mypaint-brushes.svg         \
-       scalable/gimp-prefs-folders-palettes.svg                \
-       scalable/gimp-prefs-folders-patterns.svg                \
-       scalable/gimp-prefs-folders-plug-ins.svg                \
-       scalable/gimp-prefs-folders-scripts.svg                 \
-       scalable/gimp-prefs-folders-themes.svg                  \
-       scalable/gimp-prefs-folders-tool-plug-ins.svg           \
-       scalable/gimp-prefs-folders-tool-presets.svg            \
-       scalable/gimp-prefs-folders-tools.svg                   \
-       scalable/gimp-prefs-help-system.svg                     \
-       scalable/gimp-prefs-icon-theme.svg                      \
-       scalable/gimp-prefs-image-title.svg                     \
-       scalable/gimp-prefs-image-windows.svg                   \
-       scalable/gimp-prefs-image-windows-appearance.svg        \
-       scalable/gimp-prefs-image-windows-snapping.svg          \
-       scalable/gimp-prefs-import-export.svg                   \
-       scalable/gimp-prefs-input-devices.svg                   \
-       scalable/gimp-prefs-interface.svg                       \
-       scalable/gimp-prefs-new-image.svg                       \
-       scalable/gimp-prefs-playground.svg                      \
-       scalable/gimp-prefs-session.svg                         \
-       scalable/gimp-prefs-system-resources.svg                \
-       scalable/gimp-prefs-theme.svg                           \
-       scalable/gimp-prefs-tool-options.svg                    \
-       scalable/gimp-prefs-toolbox.svg                         \
-       scalable/gimp-prefs-window-management.svg               \
        scalable/gimp-quick-mask-off.svg                        \
        scalable/gimp-quick-mask-on.svg                         \
        scalable/gimp-reset.svg                                 \
@@ -361,7 +321,46 @@ scalable_images = \
        scalable/gimp-wilber.svg                                \
        scalable/gimp-wilber-eek.svg                            \
        scalable/gimp-wilber-outline.svg                        \
-       scalable/gimp-zoom-follow-window.svg
+       scalable/gimp-zoom-follow-window.svg                    \
+       \
+       scalable/gimp-prefs-color-management.svg                \
+       \
+       scalable/gimp-prefs-controllers.svg                     \
+       scalable/gimp-prefs-default-grid.svg                    \
+       scalable/gimp-prefs-display.svg                         \
+       scalable/gimp-prefs-folders.svg                         \
+       scalable/gimp-prefs-help-system.svg                     \
+       scalable/gimp-prefs-icon-theme.svg                      \
+       scalable/gimp-prefs-image-title.svg                     \
+       scalable/gimp-prefs-image-windows.svg                   \
+       scalable/gimp-prefs-image-windows-appearance.svg        \
+       scalable/gimp-prefs-image-windows-snapping.svg          \
+       scalable/gimp-prefs-import-export.svg                   \
+       scalable/gimp-prefs-input-devices.svg                   \
+       scalable/gimp-prefs-interface.svg                       \
+       scalable/gimp-prefs-new-image.svg                       \
+       scalable/gimp-prefs-playground.svg                      \
+       scalable/gimp-prefs-system-resources.svg                \
+       scalable/gimp-prefs-theme.svg                           \
+       scalable/gimp-prefs-tool-options.svg                    \
+       scalable/gimp-prefs-toolbox.svg                         \
+       scalable/gimp-prefs-window-management.svg               \
+       \
+       scalable/gimp-prefs-folders-brushes.svg                 \
+       scalable/gimp-prefs-folders-dynamics.svg                \
+       scalable/gimp-prefs-folders-environ.svg                 \
+       scalable/gimp-prefs-folders-fonts.svg                   \
+       scalable/gimp-prefs-folders-gradients.svg               \
+       scalable/gimp-prefs-folders-icon-themes.svg             \
+       scalable/gimp-prefs-folders-interp.svg                  \
+       scalable/gimp-prefs-folders-modules.svg                 \
+       scalable/gimp-prefs-folders-mypaint-brushes.svg         \
+       scalable/gimp-prefs-folders-palettes.svg                \
+       scalable/gimp-prefs-folders-patterns.svg                \
+       scalable/gimp-prefs-folders-plug-ins.svg                \
+       scalable/gimp-prefs-folders-scripts.svg                 \
+       scalable/gimp-prefs-folders-themes.svg                  \
+       scalable/gimp-prefs-folders-tool-presets.svg
 
 icons12_images = \
        12/gimp-attach.png                                      \
@@ -546,31 +545,6 @@ icons16_images = \
        16/gimp-pattern.png                                     \
        16/gimp-plugin.png                                      \
        16/gimp-portrait.png                                    \
-       16/gimp-prefs-folders-brushes.png                       \
-       16/gimp-prefs-folders-dynamics.png                      \
-       16/gimp-prefs-folders-environ.png                       \
-       16/gimp-prefs-folders-fonts.png                         \
-       16/gimp-prefs-folders-gradients.png                     \
-       16/gimp-prefs-folders-icon-themes.png                   \
-       16/gimp-prefs-folders-interp.png                        \
-       16/gimp-prefs-folders-modules.png                       \
-       16/gimp-prefs-folders-mypaint-brushes.png               \
-       16/gimp-prefs-folders-palettes.png                      \
-       16/gimp-prefs-folders-patterns.png                      \
-       16/gimp-prefs-folders-plug-ins.png                      \
-       16/gimp-prefs-folders-scripts.png                       \
-       16/gimp-prefs-folders-themes.png                        \
-       16/gimp-prefs-folders-tool-plug-ins.png                 \
-       16/gimp-prefs-folders-tool-presets.png                  \
-       16/gimp-prefs-folders-tools.png                         \
-       16/gimp-prefs-icon-theme.png                            \
-       16/gimp-prefs-image-windows.png                         \
-       16/gimp-prefs-import-export.png                         \
-       16/gimp-prefs-interface.png                             \
-       16/gimp-prefs-playground.png                            \
-       16/gimp-prefs-theme.png                                 \
-       16/gimp-prefs-toolbox.png                               \
-       16/gimp-prefs-window-management.png                     \
        16/gimp-reset.png                                       \
        16/gimp-reshow-filter.png                               \
        16/gimp-resize.png                                      \
@@ -665,7 +639,48 @@ icons16_images = \
        16/gimp-user-manual.png                                 \
        16/gimp-video.png                                       \
        16/gimp-web.png                                         \
-       16/gimp-wilber.png
+       16/gimp-wilber.png                                      \
+       \
+       16/gimp-prefs-color-management.png                      \
+       \
+       16/gimp-prefs-controllers.png                           \
+       16/gimp-prefs-default-grid.png                          \
+       16/gimp-prefs-display.png                               \
+       16/gimp-prefs-folders.png                               \
+       16/gimp-prefs-help-system.png                           \
+       16/gimp-prefs-icon-theme.png                            \
+       16/gimp-prefs-image-title.png                           \
+       16/gimp-prefs-image-windows.png                         \
+       16/gimp-prefs-image-windows-appearance.png              \
+       16/gimp-prefs-image-windows-snapping.png                \
+       16/gimp-prefs-import-export.png                         \
+       16/gimp-prefs-input-devices.png                         \
+       16/gimp-prefs-interface.png                             \
+       16/gimp-prefs-new-image.png                             \
+       16/gimp-prefs-playground.png                            \
+       16/gimp-prefs-system-resources.png                      \
+       16/gimp-prefs-theme.png                                 \
+       16/gimp-prefs-tool-options.png                          \
+       16/gimp-prefs-toolbox.png                               \
+       16/gimp-prefs-window-management.png                     \
+       \
+       16/gimp-prefs-folders-brushes.png                       \
+       16/gimp-prefs-folders-dynamics.png                      \
+       16/gimp-prefs-folders-environ.png                       \
+       16/gimp-prefs-folders-fonts.png                         \
+       16/gimp-prefs-folders-gradients.png                     \
+       16/gimp-prefs-folders-icon-themes.png                   \
+       16/gimp-prefs-folders-interp.png                        \
+       16/gimp-prefs-folders-modules.png                       \
+       16/gimp-prefs-folders-mypaint-brushes.png               \
+       16/gimp-prefs-folders-palettes.png                      \
+       16/gimp-prefs-folders-patterns.png                      \
+       16/gimp-prefs-folders-plug-ins.png                      \
+       16/gimp-prefs-folders-scripts.png                       \
+       16/gimp-prefs-folders-themes.png                        \
+       16/gimp-prefs-folders-tool-presets.png                  \
+       \
+       16/gimp-wilber-eek.png
 
 icons18_images = \
        18/gimp-color-picker-black.png                          \
@@ -694,45 +709,6 @@ icons22_images = \
        22/gimp-path.png                                        \
        22/gimp-paths.png                                       \
        22/gimp-portrait.png                                    \
-       22/gimp-prefs-color-management.png                      \
-       22/gimp-prefs-controllers.png                           \
-       22/gimp-prefs-default-grid.png                          \
-       22/gimp-prefs-display.png                               \
-       22/gimp-prefs-folders.png                               \
-       22/gimp-prefs-folders-brushes.png                       \
-       22/gimp-prefs-folders-dynamics.png                      \
-       22/gimp-prefs-folders-environ.png                       \
-       22/gimp-prefs-folders-fonts.png                         \
-       22/gimp-prefs-folders-gradients.png                     \
-       22/gimp-prefs-folders-icon-themes.png                   \
-       22/gimp-prefs-folders-interp.png                        \
-       22/gimp-prefs-folders-modules.png                       \
-       22/gimp-prefs-folders-mypaint-brushes.png               \
-       22/gimp-prefs-folders-palettes.png                      \
-       22/gimp-prefs-folders-patterns.png                      \
-       22/gimp-prefs-folders-plug-ins.png                      \
-       22/gimp-prefs-folders-scripts.png                       \
-       22/gimp-prefs-folders-themes.png                        \
-       22/gimp-prefs-folders-tool-plug-ins.png                 \
-       22/gimp-prefs-folders-tool-presets.png                  \
-       22/gimp-prefs-folders-tools.png                         \
-       22/gimp-prefs-help-system.png                           \
-       22/gimp-prefs-icon-theme.png                            \
-       22/gimp-prefs-image-title.png                           \
-       22/gimp-prefs-image-windows.png                         \
-       22/gimp-prefs-image-windows-appearance.png              \
-       22/gimp-prefs-image-windows-snapping.png                \
-       22/gimp-prefs-import-export.png                         \
-       22/gimp-prefs-input-devices.png                         \
-       22/gimp-prefs-interface.png                             \
-       22/gimp-prefs-new-image.png                             \
-       22/gimp-prefs-playground.png                            \
-       22/gimp-prefs-session.png                               \
-       22/gimp-prefs-system-resources.png                      \
-       22/gimp-prefs-theme.png                                 \
-       22/gimp-prefs-tool-options.png                          \
-       22/gimp-prefs-toolbox.png                               \
-       22/gimp-prefs-window-management.png                     \
        22/gimp-tool-preset.png                                 \
        22/gimp-wilber.png
 
@@ -914,29 +890,15 @@ icons48_images = \
        48/gimp-image.png                                       \
        48/gimp-layer-mask.png                                  \
        48/gimp-layer.png                                       \
+       48/gimp-text-layer.png                                  \
+       48/gimp-wilber.png                                      \
+       \
        48/gimp-prefs-color-management.png                      \
+       \
        48/gimp-prefs-controllers.png                           \
-       48/gimp-prefs-default-comment.png                       \
        48/gimp-prefs-default-grid.png                          \
        48/gimp-prefs-display.png                               \
        48/gimp-prefs-folders.png                               \
-       48/gimp-prefs-folders-brushes.png                       \
-       48/gimp-prefs-folders-dynamics.png                      \
-       48/gimp-prefs-folders-environ.png                       \
-       48/gimp-prefs-folders-fonts.png                         \
-       48/gimp-prefs-folders-gradients.png                     \
-       48/gimp-prefs-folders-icon-themes.png                   \
-       48/gimp-prefs-folders-interp.png                        \
-       48/gimp-prefs-folders-modules.png                       \
-       48/gimp-prefs-folders-mypaint-brushes.png               \
-       48/gimp-prefs-folders-palettes.png                      \
-       48/gimp-prefs-folders-patterns.png                      \
-       48/gimp-prefs-folders-plug-ins.png                      \
-       48/gimp-prefs-folders-scripts.png                       \
-       48/gimp-prefs-folders-themes.png                        \
-       48/gimp-prefs-folders-tool-plug-ins.png                 \
-       48/gimp-prefs-folders-tool-presets.png                  \
-       48/gimp-prefs-folders-tools.png                         \
        48/gimp-prefs-help-system.png                           \
        48/gimp-prefs-icon-theme.png                            \
        48/gimp-prefs-image-title.png                           \
@@ -948,14 +910,29 @@ icons48_images = \
        48/gimp-prefs-interface.png                             \
        48/gimp-prefs-new-image.png                             \
        48/gimp-prefs-playground.png                            \
-       48/gimp-prefs-session.png                               \
        48/gimp-prefs-system-resources.png                      \
        48/gimp-prefs-theme.png                                 \
        48/gimp-prefs-tool-options.png                          \
        48/gimp-prefs-toolbox.png                               \
        48/gimp-prefs-window-management.png                     \
-       48/gimp-text-layer.png                                  \
-       48/gimp-wilber.png
+       \
+       48/gimp-prefs-folders-brushes.png                       \
+       48/gimp-prefs-folders-dynamics.png                      \
+       48/gimp-prefs-folders-environ.png                       \
+       48/gimp-prefs-folders-fonts.png                         \
+       48/gimp-prefs-folders-gradients.png                     \
+       48/gimp-prefs-folders-icon-themes.png                   \
+       48/gimp-prefs-folders-interp.png                        \
+       48/gimp-prefs-folders-modules.png                       \
+       48/gimp-prefs-folders-mypaint-brushes.png               \
+       48/gimp-prefs-folders-palettes.png                      \
+       48/gimp-prefs-folders-patterns.png                      \
+       48/gimp-prefs-folders-plug-ins.png                      \
+       48/gimp-prefs-folders-scripts.png                       \
+       48/gimp-prefs-folders-themes.png                        \
+       48/gimp-prefs-folders-tool-presets.png                  \
+       \
+       48/gimp-wilber-eek.png
 
 icons64_images = \
        64/gimp-frame.png                                       \
diff --git a/icons/Color/meson.build b/icons/Color/meson.build
index b14549c0db..3e8bcfe36b 100644
--- a/icons/Color/meson.build
+++ b/icons/Color/meson.build
@@ -1,53 +1,97 @@
 
 if have_vector_icons
-  source_icons = {
-    'scalable':         [ 'scalable', 'scalable', '.svg' ],
-    'bitmap_64-system': [ '64x64',    '64',       '.png' ],
-    'bitmap_64-always': [ '64x64',    '64',       '.png' ],
-  }
+  install_icons = [
+    {
+      'outdir': 'scalable',
+      'indir':  'scalable',
+      'suffix': '.svg',
+      'files':  [ 'scalable', 'prefs', ],
+    },
+    {
+      'outdir': '64x64',
+      'indir':  '64',
+      'suffix': '.png',
+      'files':  [ 'bitmap_64-always', 'bitmap_64-system', ],
+    },
+  ]
 else
-  sizes = [ '12', '16', '18', '20', '22', '24', '32',
-            '48', '64', '96', '128', '192', '256' ]
-
-  foreach size : sizes
-    icon_list = '../icon-lists/bitmap_@0@.list'.format(size)
-    cmd = run_command('python3', '-c',
-                      'print(",".join([line.strip() for line in open("@0@") if line.strip() != 
""]))'.format(icon_list),
-                      check: true)
-    source_icons = cmd.stdout().strip().split(',')
+  build_icons = {
+    '12':  [ 'bitmap_12', ],
+    '16':  [ 'bitmap_16', 'prefs', ],
+    '18':  [ 'bitmap_18', ],
+    '20':  [ 'bitmap_20', ],
+    '22':  [ 'bitmap_22', ],
+    '24':  [ 'bitmap_24', ],
+    '32':  [ 'bitmap_32', ],
+    '48':  [ 'bitmap_48', 'prefs' ],
+    '64':  [ 'bitmap_64', 'bitmap_64-system', ],
+    '96':  [ 'bitmap_96', ],
+    '128': [ 'bitmap_128', ],
+    '192': [ 'bitmap_192', ],
+    '256': [ 'bitmap_256', ],
+  }
 
-    if size == '64'
-      icon_list = '../icon-lists/bitmap_64-system.list'
+  foreach size, inputs : build_icons
+    dup_icons = []
+    foreach input : inputs
+      icon_list = '../icon-lists/@0@.list'.format(input)
+      py_cmd = 'print(",".join([line.strip() for line in open("@0@") if line.strip() != "" and 
line.strip()[0] != "#"]))'
       cmd = run_command('python3', '-c',
-                        'print(",".join([line.strip() for line in open("@0@") if line.strip() != 
""]))'.format(icon_list),
+                        py_cmd.format(icon_list),
                         check: true)
-      source_icons += cmd.stdout().strip().split(',')
-    endif
+      dup_icons += cmd.stdout().strip().split(',')
+    endforeach
+    source_icons = []
+    foreach icon : dup_icons
+      if not source_icons.contains(icon)
+        # remove duplicates.
+        source_icons += [icon]
+      endif
+    endforeach
 
     subdir(size)
   endforeach
 
   # These are available as PNG directly.
-  source_icons = {
-    'bitmap_64-always': [ '64x64', '64', '.png' ],
-  }
+  install_icons = [
+    {
+      'outdir': '64x64',
+      'indir':  '64',
+      'suffix': '.png',
+      'files':  [ 'bitmap_64-always', ],
+    },
+  ]
 endif
 
 install_data('index.theme',
   install_dir: gimpiconsdir / theme,
 )
 
-foreach source, out : source_icons
-  outdir = out[0]
-  indir  = out[1]
-  suffix = out[2]
+foreach install : install_icons
+  icons  = []
+
+  inputs = install['files']
+  outdir = install['outdir']
+  indir  = install['indir']
+  suffix = install['suffix']
+
+  py_cmd = 'print(",".join(["@0@/" + line.strip() + "@1@" for line in open("@2@") if line.strip() != "" and 
line.strip()[0] != "#"]))'
+  dup_icons = []
+  foreach input : inputs
+    input = '../icon-lists/@0@.list'.format(input)
+    cmd = run_command('python3', '-c',
+                      py_cmd.format(indir, suffix, input),
+                      check: true)
+    dup_icons += cmd.stdout().strip().split(',')
+  endforeach
+  foreach icon : dup_icons
+    if not icons.contains(icon)
+      # remove duplicates.
+      icons += [icon]
+    endif
+  endforeach
 
-  icon_list = '../icon-lists/@0@.list'.format(source)
-  cmd = run_command('python3', '-c',
-                    'print(",".join(["@0@/" + line.strip() + "@1@" for line in open("@2@") if line.strip() 
!= ""]))'.format(indir, suffix, icon_list),
-                    check: true)
-  source_icons = cmd.stdout().strip().split(',')
-  install_data(source_icons, install_dir: gimpiconsdir / theme / outdir / 'apps')
+  install_data(icons, install_dir: gimpiconsdir / theme / outdir / 'apps')
 endforeach
 
 icons_core = [ '64/dialog-question.png', ]
diff --git a/icons/Symbolic/icon-list.mk b/icons/Symbolic/icon-list.mk
index 3a1e9d0393..151b8467a2 100644
--- a/icons/Symbolic/icon-list.mk
+++ b/icons/Symbolic/icon-list.mk
@@ -212,46 +212,6 @@ scalable_images = \
        scalable/gimp-pivot-west-symbolic.svg                                   \
        scalable/gimp-plugin-symbolic.svg                                       \
        scalable/gimp-portrait-symbolic.svg                                     \
-       scalable/gimp-prefs-color-management-symbolic.svg                       \
-       scalable/gimp-prefs-controllers-symbolic.svg                            \
-       scalable/gimp-prefs-default-comment-symbolic.svg                        \
-       scalable/gimp-prefs-default-grid-symbolic.svg                           \
-       scalable/gimp-prefs-display-symbolic.svg                                \
-       scalable/gimp-prefs-folders-symbolic.svg                                \
-       scalable/gimp-prefs-folders-brushes-symbolic.svg                        \
-       scalable/gimp-prefs-folders-dynamics-symbolic.svg                       \
-       scalable/gimp-prefs-folders-environ-symbolic.svg                        \
-       scalable/gimp-prefs-folders-fonts-symbolic.svg                          \
-       scalable/gimp-prefs-folders-gradients-symbolic.svg                      \
-       scalable/gimp-prefs-folders-icon-themes-symbolic.svg                    \
-       scalable/gimp-prefs-folders-interp-symbolic.svg                         \
-       scalable/gimp-prefs-folders-modules-symbolic.svg                        \
-       scalable/gimp-prefs-folders-mypaint-brushes-symbolic.svg                \
-       scalable/gimp-prefs-folders-palettes-symbolic.svg                       \
-       scalable/gimp-prefs-folders-patterns-symbolic.svg                       \
-       scalable/gimp-prefs-folders-plug-ins-symbolic.svg                       \
-       scalable/gimp-prefs-folders-scripts-symbolic.svg                        \
-       scalable/gimp-prefs-folders-themes-symbolic.svg                         \
-       scalable/gimp-prefs-folders-tool-plug-ins-symbolic.svg                  \
-       scalable/gimp-prefs-folders-tool-presets-symbolic.svg                   \
-       scalable/gimp-prefs-folders-tools-symbolic.svg                          \
-       scalable/gimp-prefs-help-system-symbolic.svg                            \
-       scalable/gimp-prefs-icon-theme-symbolic.svg                             \
-       scalable/gimp-prefs-image-title-symbolic.svg                            \
-       scalable/gimp-prefs-image-windows-symbolic.svg                          \
-       scalable/gimp-prefs-image-windows-appearance-symbolic.svg               \
-       scalable/gimp-prefs-image-windows-snapping-symbolic.svg                 \
-       scalable/gimp-prefs-import-export-symbolic.svg                          \
-       scalable/gimp-prefs-input-devices-symbolic.svg                          \
-       scalable/gimp-prefs-interface-symbolic.svg                              \
-       scalable/gimp-prefs-new-image-symbolic.svg                              \
-       scalable/gimp-prefs-playground-symbolic.svg                             \
-       scalable/gimp-prefs-session-symbolic.svg                                \
-       scalable/gimp-prefs-system-resources-symbolic.svg                       \
-       scalable/gimp-prefs-theme-symbolic.svg                                  \
-       scalable/gimp-prefs-tool-options-symbolic.svg                           \
-       scalable/gimp-prefs-toolbox-symbolic.svg                                \
-       scalable/gimp-prefs-window-management-symbolic.svg                      \
        scalable/gimp-quick-mask-off-symbolic.svg                               \
        scalable/gimp-quick-mask-on-symbolic.svg                                \
        scalable/gimp-reset-symbolic.svg                                        \
@@ -361,7 +321,46 @@ scalable_images = \
        scalable/gimp-wilber-symbolic.svg                                       \
        scalable/gimp-wilber-eek-symbolic.svg                                   \
        scalable/gimp-wilber-outline-symbolic.svg                               \
-       scalable/gimp-zoom-follow-window-symbolic.svg
+       scalable/gimp-zoom-follow-window-symbolic.svg                           \
+       \
+       scalable/gimp-prefs-color-management-symbolic.svg                       \
+       \
+       scalable/gimp-prefs-controllers-symbolic.svg                            \
+       scalable/gimp-prefs-default-grid-symbolic.svg                           \
+       scalable/gimp-prefs-display-symbolic.svg                                \
+       scalable/gimp-prefs-folders-symbolic.svg                                \
+       scalable/gimp-prefs-help-system-symbolic.svg                            \
+       scalable/gimp-prefs-icon-theme-symbolic.svg                             \
+       scalable/gimp-prefs-image-title-symbolic.svg                            \
+       scalable/gimp-prefs-image-windows-symbolic.svg                          \
+       scalable/gimp-prefs-image-windows-appearance-symbolic.svg               \
+       scalable/gimp-prefs-image-windows-snapping-symbolic.svg                 \
+       scalable/gimp-prefs-import-export-symbolic.svg                          \
+       scalable/gimp-prefs-input-devices-symbolic.svg                          \
+       scalable/gimp-prefs-interface-symbolic.svg                              \
+       scalable/gimp-prefs-new-image-symbolic.svg                              \
+       scalable/gimp-prefs-playground-symbolic.svg                             \
+       scalable/gimp-prefs-system-resources-symbolic.svg                       \
+       scalable/gimp-prefs-theme-symbolic.svg                                  \
+       scalable/gimp-prefs-tool-options-symbolic.svg                           \
+       scalable/gimp-prefs-toolbox-symbolic.svg                                \
+       scalable/gimp-prefs-window-management-symbolic.svg                      \
+       \
+       scalable/gimp-prefs-folders-brushes-symbolic.svg                        \
+       scalable/gimp-prefs-folders-dynamics-symbolic.svg                       \
+       scalable/gimp-prefs-folders-environ-symbolic.svg                        \
+       scalable/gimp-prefs-folders-fonts-symbolic.svg                          \
+       scalable/gimp-prefs-folders-gradients-symbolic.svg                      \
+       scalable/gimp-prefs-folders-icon-themes-symbolic.svg                    \
+       scalable/gimp-prefs-folders-interp-symbolic.svg                         \
+       scalable/gimp-prefs-folders-modules-symbolic.svg                        \
+       scalable/gimp-prefs-folders-mypaint-brushes-symbolic.svg                \
+       scalable/gimp-prefs-folders-palettes-symbolic.svg                       \
+       scalable/gimp-prefs-folders-patterns-symbolic.svg                       \
+       scalable/gimp-prefs-folders-plug-ins-symbolic.svg                       \
+       scalable/gimp-prefs-folders-scripts-symbolic.svg                        \
+       scalable/gimp-prefs-folders-themes-symbolic.svg                         \
+       scalable/gimp-prefs-folders-tool-presets-symbolic.svg
 
 icons12_images = \
        12/gimp-attach-symbolic.symbolic.png                                    \
@@ -546,31 +545,6 @@ icons16_images = \
        16/gimp-pattern-symbolic.symbolic.png                                   \
        16/gimp-plugin-symbolic.symbolic.png                                    \
        16/gimp-portrait-symbolic.symbolic.png                                  \
-       16/gimp-prefs-folders-brushes-symbolic.symbolic.png                     \
-       16/gimp-prefs-folders-dynamics-symbolic.symbolic.png                    \
-       16/gimp-prefs-folders-environ-symbolic.symbolic.png                     \
-       16/gimp-prefs-folders-fonts-symbolic.symbolic.png                       \
-       16/gimp-prefs-folders-gradients-symbolic.symbolic.png                   \
-       16/gimp-prefs-folders-icon-themes-symbolic.symbolic.png                 \
-       16/gimp-prefs-folders-interp-symbolic.symbolic.png                      \
-       16/gimp-prefs-folders-modules-symbolic.symbolic.png                     \
-       16/gimp-prefs-folders-mypaint-brushes-symbolic.symbolic.png             \
-       16/gimp-prefs-folders-palettes-symbolic.symbolic.png                    \
-       16/gimp-prefs-folders-patterns-symbolic.symbolic.png                    \
-       16/gimp-prefs-folders-plug-ins-symbolic.symbolic.png                    \
-       16/gimp-prefs-folders-scripts-symbolic.symbolic.png                     \
-       16/gimp-prefs-folders-themes-symbolic.symbolic.png                      \
-       16/gimp-prefs-folders-tool-plug-ins-symbolic.symbolic.png               \
-       16/gimp-prefs-folders-tool-presets-symbolic.symbolic.png                \
-       16/gimp-prefs-folders-tools-symbolic.symbolic.png                       \
-       16/gimp-prefs-icon-theme-symbolic.symbolic.png                          \
-       16/gimp-prefs-image-windows-symbolic.symbolic.png                       \
-       16/gimp-prefs-import-export-symbolic.symbolic.png                       \
-       16/gimp-prefs-interface-symbolic.symbolic.png                           \
-       16/gimp-prefs-playground-symbolic.symbolic.png                          \
-       16/gimp-prefs-theme-symbolic.symbolic.png                               \
-       16/gimp-prefs-toolbox-symbolic.symbolic.png                             \
-       16/gimp-prefs-window-management-symbolic.symbolic.png                   \
        16/gimp-reset-symbolic.symbolic.png                                     \
        16/gimp-reshow-filter-symbolic.symbolic.png                             \
        16/gimp-resize-symbolic.symbolic.png                                    \
@@ -665,7 +639,48 @@ icons16_images = \
        16/gimp-user-manual-symbolic.symbolic.png                               \
        16/gimp-video-symbolic.symbolic.png                                     \
        16/gimp-web-symbolic.symbolic.png                                       \
-       16/gimp-wilber-symbolic.symbolic.png
+       16/gimp-wilber-symbolic.symbolic.png                                    \
+       \
+       16/gimp-prefs-color-management-symbolic.symbolic.png                    \
+       \
+       16/gimp-prefs-controllers-symbolic.symbolic.png                         \
+       16/gimp-prefs-default-grid-symbolic.symbolic.png                        \
+       16/gimp-prefs-display-symbolic.symbolic.png                             \
+       16/gimp-prefs-folders-symbolic.symbolic.png                             \
+       16/gimp-prefs-help-system-symbolic.symbolic.png                         \
+       16/gimp-prefs-icon-theme-symbolic.symbolic.png                          \
+       16/gimp-prefs-image-title-symbolic.symbolic.png                         \
+       16/gimp-prefs-image-windows-symbolic.symbolic.png                       \
+       16/gimp-prefs-image-windows-appearance-symbolic.symbolic.png            \
+       16/gimp-prefs-image-windows-snapping-symbolic.symbolic.png              \
+       16/gimp-prefs-import-export-symbolic.symbolic.png                       \
+       16/gimp-prefs-input-devices-symbolic.symbolic.png                       \
+       16/gimp-prefs-interface-symbolic.symbolic.png                           \
+       16/gimp-prefs-new-image-symbolic.symbolic.png                           \
+       16/gimp-prefs-playground-symbolic.symbolic.png                          \
+       16/gimp-prefs-system-resources-symbolic.symbolic.png                    \
+       16/gimp-prefs-theme-symbolic.symbolic.png                               \
+       16/gimp-prefs-tool-options-symbolic.symbolic.png                        \
+       16/gimp-prefs-toolbox-symbolic.symbolic.png                             \
+       16/gimp-prefs-window-management-symbolic.symbolic.png                   \
+       \
+       16/gimp-prefs-folders-brushes-symbolic.symbolic.png                     \
+       16/gimp-prefs-folders-dynamics-symbolic.symbolic.png                    \
+       16/gimp-prefs-folders-environ-symbolic.symbolic.png                     \
+       16/gimp-prefs-folders-fonts-symbolic.symbolic.png                       \
+       16/gimp-prefs-folders-gradients-symbolic.symbolic.png                   \
+       16/gimp-prefs-folders-icon-themes-symbolic.symbolic.png                 \
+       16/gimp-prefs-folders-interp-symbolic.symbolic.png                      \
+       16/gimp-prefs-folders-modules-symbolic.symbolic.png                     \
+       16/gimp-prefs-folders-mypaint-brushes-symbolic.symbolic.png             \
+       16/gimp-prefs-folders-palettes-symbolic.symbolic.png                    \
+       16/gimp-prefs-folders-patterns-symbolic.symbolic.png                    \
+       16/gimp-prefs-folders-plug-ins-symbolic.symbolic.png                    \
+       16/gimp-prefs-folders-scripts-symbolic.symbolic.png                     \
+       16/gimp-prefs-folders-themes-symbolic.symbolic.png                      \
+       16/gimp-prefs-folders-tool-presets-symbolic.symbolic.png                \
+       \
+       16/gimp-wilber-eek-symbolic.symbolic.png
 
 icons18_images = \
        18/gimp-color-picker-black-symbolic.symbolic.png                        \
@@ -694,45 +709,6 @@ icons22_images = \
        22/gimp-path-symbolic.symbolic.png                                      \
        22/gimp-paths-symbolic.symbolic.png                                     \
        22/gimp-portrait-symbolic.symbolic.png                                  \
-       22/gimp-prefs-color-management-symbolic.symbolic.png                    \
-       22/gimp-prefs-controllers-symbolic.symbolic.png                         \
-       22/gimp-prefs-default-grid-symbolic.symbolic.png                        \
-       22/gimp-prefs-display-symbolic.symbolic.png                             \
-       22/gimp-prefs-folders-symbolic.symbolic.png                             \
-       22/gimp-prefs-folders-brushes-symbolic.symbolic.png                     \
-       22/gimp-prefs-folders-dynamics-symbolic.symbolic.png                    \
-       22/gimp-prefs-folders-environ-symbolic.symbolic.png                     \
-       22/gimp-prefs-folders-fonts-symbolic.symbolic.png                       \
-       22/gimp-prefs-folders-gradients-symbolic.symbolic.png                   \
-       22/gimp-prefs-folders-icon-themes-symbolic.symbolic.png                 \
-       22/gimp-prefs-folders-interp-symbolic.symbolic.png                      \
-       22/gimp-prefs-folders-modules-symbolic.symbolic.png                     \
-       22/gimp-prefs-folders-mypaint-brushes-symbolic.symbolic.png             \
-       22/gimp-prefs-folders-palettes-symbolic.symbolic.png                    \
-       22/gimp-prefs-folders-patterns-symbolic.symbolic.png                    \
-       22/gimp-prefs-folders-plug-ins-symbolic.symbolic.png                    \
-       22/gimp-prefs-folders-scripts-symbolic.symbolic.png                     \
-       22/gimp-prefs-folders-themes-symbolic.symbolic.png                      \
-       22/gimp-prefs-folders-tool-plug-ins-symbolic.symbolic.png               \
-       22/gimp-prefs-folders-tool-presets-symbolic.symbolic.png                \
-       22/gimp-prefs-folders-tools-symbolic.symbolic.png                       \
-       22/gimp-prefs-help-system-symbolic.symbolic.png                         \
-       22/gimp-prefs-icon-theme-symbolic.symbolic.png                          \
-       22/gimp-prefs-image-title-symbolic.symbolic.png                         \
-       22/gimp-prefs-image-windows-symbolic.symbolic.png                       \
-       22/gimp-prefs-image-windows-appearance-symbolic.symbolic.png            \
-       22/gimp-prefs-image-windows-snapping-symbolic.symbolic.png              \
-       22/gimp-prefs-import-export-symbolic.symbolic.png                       \
-       22/gimp-prefs-input-devices-symbolic.symbolic.png                       \
-       22/gimp-prefs-interface-symbolic.symbolic.png                           \
-       22/gimp-prefs-new-image-symbolic.symbolic.png                           \
-       22/gimp-prefs-playground-symbolic.symbolic.png                          \
-       22/gimp-prefs-session-symbolic.symbolic.png                             \
-       22/gimp-prefs-system-resources-symbolic.symbolic.png                    \
-       22/gimp-prefs-theme-symbolic.symbolic.png                               \
-       22/gimp-prefs-tool-options-symbolic.symbolic.png                        \
-       22/gimp-prefs-toolbox-symbolic.symbolic.png                             \
-       22/gimp-prefs-window-management-symbolic.symbolic.png                   \
        22/gimp-tool-preset-symbolic.symbolic.png                               \
        22/gimp-wilber-symbolic.symbolic.png
 
@@ -914,29 +890,15 @@ icons48_images = \
        48/gimp-image-symbolic.symbolic.png                                     \
        48/gimp-layer-mask-symbolic.symbolic.png                                \
        48/gimp-layer-symbolic.symbolic.png                                     \
+       48/gimp-text-layer-symbolic.symbolic.png                                \
+       48/gimp-wilber-symbolic.symbolic.png                                    \
+       \
        48/gimp-prefs-color-management-symbolic.symbolic.png                    \
+       \
        48/gimp-prefs-controllers-symbolic.symbolic.png                         \
-       48/gimp-prefs-default-comment-symbolic.symbolic.png                     \
        48/gimp-prefs-default-grid-symbolic.symbolic.png                        \
        48/gimp-prefs-display-symbolic.symbolic.png                             \
        48/gimp-prefs-folders-symbolic.symbolic.png                             \
-       48/gimp-prefs-folders-brushes-symbolic.symbolic.png                     \
-       48/gimp-prefs-folders-dynamics-symbolic.symbolic.png                    \
-       48/gimp-prefs-folders-environ-symbolic.symbolic.png                     \
-       48/gimp-prefs-folders-fonts-symbolic.symbolic.png                       \
-       48/gimp-prefs-folders-gradients-symbolic.symbolic.png                   \
-       48/gimp-prefs-folders-icon-themes-symbolic.symbolic.png                 \
-       48/gimp-prefs-folders-interp-symbolic.symbolic.png                      \
-       48/gimp-prefs-folders-modules-symbolic.symbolic.png                     \
-       48/gimp-prefs-folders-mypaint-brushes-symbolic.symbolic.png             \
-       48/gimp-prefs-folders-palettes-symbolic.symbolic.png                    \
-       48/gimp-prefs-folders-patterns-symbolic.symbolic.png                    \
-       48/gimp-prefs-folders-plug-ins-symbolic.symbolic.png                    \
-       48/gimp-prefs-folders-scripts-symbolic.symbolic.png                     \
-       48/gimp-prefs-folders-themes-symbolic.symbolic.png                      \
-       48/gimp-prefs-folders-tool-plug-ins-symbolic.symbolic.png               \
-       48/gimp-prefs-folders-tool-presets-symbolic.symbolic.png                \
-       48/gimp-prefs-folders-tools-symbolic.symbolic.png                       \
        48/gimp-prefs-help-system-symbolic.symbolic.png                         \
        48/gimp-prefs-icon-theme-symbolic.symbolic.png                          \
        48/gimp-prefs-image-title-symbolic.symbolic.png                         \
@@ -948,14 +910,29 @@ icons48_images = \
        48/gimp-prefs-interface-symbolic.symbolic.png                           \
        48/gimp-prefs-new-image-symbolic.symbolic.png                           \
        48/gimp-prefs-playground-symbolic.symbolic.png                          \
-       48/gimp-prefs-session-symbolic.symbolic.png                             \
        48/gimp-prefs-system-resources-symbolic.symbolic.png                    \
        48/gimp-prefs-theme-symbolic.symbolic.png                               \
        48/gimp-prefs-tool-options-symbolic.symbolic.png                        \
        48/gimp-prefs-toolbox-symbolic.symbolic.png                             \
        48/gimp-prefs-window-management-symbolic.symbolic.png                   \
-       48/gimp-text-layer-symbolic.symbolic.png                                \
-       48/gimp-wilber-symbolic.symbolic.png
+       \
+       48/gimp-prefs-folders-brushes-symbolic.symbolic.png                     \
+       48/gimp-prefs-folders-dynamics-symbolic.symbolic.png                    \
+       48/gimp-prefs-folders-environ-symbolic.symbolic.png                     \
+       48/gimp-prefs-folders-fonts-symbolic.symbolic.png                       \
+       48/gimp-prefs-folders-gradients-symbolic.symbolic.png                   \
+       48/gimp-prefs-folders-icon-themes-symbolic.symbolic.png                 \
+       48/gimp-prefs-folders-interp-symbolic.symbolic.png                      \
+       48/gimp-prefs-folders-modules-symbolic.symbolic.png                     \
+       48/gimp-prefs-folders-mypaint-brushes-symbolic.symbolic.png             \
+       48/gimp-prefs-folders-palettes-symbolic.symbolic.png                    \
+       48/gimp-prefs-folders-patterns-symbolic.symbolic.png                    \
+       48/gimp-prefs-folders-plug-ins-symbolic.symbolic.png                    \
+       48/gimp-prefs-folders-scripts-symbolic.symbolic.png                     \
+       48/gimp-prefs-folders-themes-symbolic.symbolic.png                      \
+       48/gimp-prefs-folders-tool-presets-symbolic.symbolic.png                \
+       \
+       48/gimp-wilber-eek-symbolic.symbolic.png
 
 icons64_images = \
        64/gimp-frame.png                                                       \
diff --git a/icons/Symbolic/meson.build b/icons/Symbolic/meson.build
index 795fa048b2..6924664af7 100644
--- a/icons/Symbolic/meson.build
+++ b/icons/Symbolic/meson.build
@@ -1,30 +1,58 @@
 
 if have_vector_icons
-  source_icons = {
-    'scalable':         [ 'scalable', 'scalable', '-symbolic.svg' ],
-    #'bitmap_64-system': [ '64x64',    '64',       '.png' ],
-    'bitmap_64-always': [ '64x64',    '64',       '.png' ],
-  }
+  install_icons = [
+    {
+      'outdir': 'scalable',
+      'indir':  'scalable',
+      'suffix': '-symbolic.svg',
+      'files':  [ 'scalable', 'prefs', ],
+    },
+    {
+      'outdir': '64x64',
+      'indir':  '64',
+      'suffix': '.png',
+      'files':  [ 'bitmap_64-always', ],
+      #'files':  [ 'bitmap_64-always', 'bitmap_64-system', ],
+    },
+  ]
 else
-  gtk_encode_symbolic_svg = find_program('gtk-encode-symbolic-svg')
+  gtk_encode_symbolic_svg = find_program('gtk-encode-symbolic-svg', native: true)
 
   sizes = [ '12', '16', '18', '20', '22', '24', '32',
             '48', '64', '96', '128', '192', '256' ]
+  build_icons = {
+    '12':  [ 'bitmap_12', ],
+    '16':  [ 'bitmap_16', 'prefs', ],
+    '18':  [ 'bitmap_18', ],
+    '20':  [ 'bitmap_20', ],
+    '22':  [ 'bitmap_22', ],
+    '24':  [ 'bitmap_24', ],
+    '32':  [ 'bitmap_32', ],
+    '48':  [ 'bitmap_48', 'prefs' ],
+    '64':  [ 'bitmap_64', 'bitmap_64-system', ],
+    '96':  [ 'bitmap_96', ],
+    '128': [ 'bitmap_128', ],
+    '192': [ 'bitmap_192', ],
+    '256': [ 'bitmap_256', ],
+  }
 
-  foreach size : sizes
-    icon_list = '../icon-lists/bitmap_@0@.list'.format(size)
-    cmd = run_command('python3', '-c',
-                      'print(",".join([line.strip() for line in open("@0@") if line.strip() != 
""]))'.format(icon_list),
-                      check: true)
-    source_icons = cmd.stdout().strip().split(',')
-
-    if size == '64'
-      icon_list = '../icon-lists/bitmap_64-system.list'
+  foreach size, inputs : build_icons
+    dup_icons = []
+    foreach input : inputs
+      icon_list = '../icon-lists/@0@.list'.format(input)
+      py_cmd = 'print(",".join([line.strip() for line in open("@0@") if line.strip() != "" and 
line.strip()[0] != "#"]))'
       cmd = run_command('python3', '-c',
-                        'print(",".join([line.strip() for line in open("@0@") if line.strip() != 
""]))'.format(icon_list),
+                        py_cmd.format(icon_list),
                         check: true)
-      source_icons += cmd.stdout().strip().split(',')
-    endif
+      dup_icons += cmd.stdout().strip().split(',')
+    endforeach
+    source_icons = []
+    foreach icon : dup_icons
+      if not source_icons.contains(icon)
+        # remove duplicates.
+        source_icons += [icon]
+      endif
+    endforeach
 
     # Note: I originally wanted to implement it here in a loop but
     # custom_target() doesn't accept an output path with a folder! So I
@@ -36,26 +64,45 @@ else
   endforeach
 
   # Install these directly from PNG sources.
-  source_icons = {
-    'bitmap_64-always': [ '64x64', '64', '.png' ],
-  }
+  install_icons = [
+    {
+      'outdir': '64x64',
+      'indir':  '64',
+      'suffix': '.png',
+      'files':  [ 'bitmap_64-always', ],
+    },
+  ]
 endif
 
 install_data('index.theme',
   install_dir: gimpiconsdir / theme,
 )
 
-foreach source, out : source_icons
-  outdir = out[0]
-  indir  = out[1]
-  suffix = out[2]
-
-  icon_list = '../icon-lists/@0@.list'.format(source)
-  cmd = run_command('python3', '-c',
-                    'print(",".join(["@0@/" + line.strip() + "@1@" for line in open("@2@") if line.strip() 
!= ""]))'.format(indir, suffix, icon_list),
-                    check: true)
-  source_icons = cmd.stdout().strip().split(',')
-  install_data(source_icons, install_dir: gimpiconsdir / theme / outdir / 'apps')
+foreach install : install_icons
+  icons  = []
+
+  inputs = install['files']
+  outdir = install['outdir']
+  indir  = install['indir']
+  suffix = install['suffix']
+
+  py_cmd = 'print(",".join(["@0@/" + line.strip() + "@1@" for line in open("@2@") if line.strip() != "" and 
line.strip()[0] != "#"]))'
+  dup_icons = []
+  foreach input : inputs
+    input = '../icon-lists/@0@.list'.format(input)
+    cmd = run_command('python3', '-c',
+                      py_cmd.format(indir, suffix, input),
+                      check: true)
+    dup_icons += cmd.stdout().strip().split(',')
+  endforeach
+  foreach icon : dup_icons
+    if not icons.contains(icon)
+      # remove duplicates.
+      icons += [icon]
+    endif
+  endforeach
+
+  install_data(icons, install_dir: gimpiconsdir / theme / outdir / 'apps')
 endforeach
 
 icons_core = [ '64/gimp-question.png', ]
diff --git a/icons/icon-lists/bitmap_16.list b/icons/icon-lists/bitmap_16.list
index 54b395f855..8b705666a6 100644
--- a/icons/icon-lists/bitmap_16.list
+++ b/icons/icon-lists/bitmap_16.list
@@ -157,31 +157,6 @@ gimp-paths
 gimp-pattern
 gimp-plugin
 gimp-portrait
-gimp-prefs-folders-brushes
-gimp-prefs-folders-dynamics
-gimp-prefs-folders-environ
-gimp-prefs-folders-fonts
-gimp-prefs-folders-gradients
-gimp-prefs-folders-icon-themes
-gimp-prefs-folders-interp
-gimp-prefs-folders-modules
-gimp-prefs-folders-mypaint-brushes
-gimp-prefs-folders-palettes
-gimp-prefs-folders-patterns
-gimp-prefs-folders-plug-ins
-gimp-prefs-folders-scripts
-gimp-prefs-folders-themes
-gimp-prefs-folders-tool-plug-ins
-gimp-prefs-folders-tool-presets
-gimp-prefs-folders-tools
-gimp-prefs-icon-theme
-gimp-prefs-image-windows
-gimp-prefs-import-export
-gimp-prefs-interface
-gimp-prefs-playground
-gimp-prefs-theme
-gimp-prefs-toolbox
-gimp-prefs-window-management
 gimp-reset
 gimp-reshow-filter
 gimp-resize
diff --git a/icons/icon-lists/bitmap_22.list b/icons/icon-lists/bitmap_22.list
index c04dd2bcd1..519f71356b 100644
--- a/icons/icon-lists/bitmap_22.list
+++ b/icons/icon-lists/bitmap_22.list
@@ -15,44 +15,5 @@ gimp-line-spacing
 gimp-path
 gimp-paths
 gimp-portrait
-gimp-prefs-color-management
-gimp-prefs-controllers
-gimp-prefs-default-grid
-gimp-prefs-display
-gimp-prefs-folders
-gimp-prefs-folders-brushes
-gimp-prefs-folders-dynamics
-gimp-prefs-folders-environ
-gimp-prefs-folders-fonts
-gimp-prefs-folders-gradients
-gimp-prefs-folders-icon-themes
-gimp-prefs-folders-interp
-gimp-prefs-folders-modules
-gimp-prefs-folders-mypaint-brushes
-gimp-prefs-folders-palettes
-gimp-prefs-folders-patterns
-gimp-prefs-folders-plug-ins
-gimp-prefs-folders-scripts
-gimp-prefs-folders-themes
-gimp-prefs-folders-tool-plug-ins
-gimp-prefs-folders-tool-presets
-gimp-prefs-folders-tools
-gimp-prefs-help-system
-gimp-prefs-icon-theme
-gimp-prefs-image-title
-gimp-prefs-image-windows
-gimp-prefs-image-windows-appearance
-gimp-prefs-image-windows-snapping
-gimp-prefs-import-export
-gimp-prefs-input-devices
-gimp-prefs-interface
-gimp-prefs-new-image
-gimp-prefs-playground
-gimp-prefs-session
-gimp-prefs-system-resources
-gimp-prefs-theme
-gimp-prefs-tool-options
-gimp-prefs-toolbox
-gimp-prefs-window-management
 gimp-tool-preset
 gimp-wilber
diff --git a/icons/icon-lists/bitmap_48.list b/icons/icon-lists/bitmap_48.list
index dae04897ec..c7666321e0 100644
--- a/icons/icon-lists/bitmap_48.list
+++ b/icons/icon-lists/bitmap_48.list
@@ -11,45 +11,5 @@ gimp-floating-selection
 gimp-image
 gimp-layer-mask
 gimp-layer
-gimp-prefs-color-management
-gimp-prefs-controllers
-gimp-prefs-default-comment
-gimp-prefs-default-grid
-gimp-prefs-display
-gimp-prefs-folders
-gimp-prefs-folders-brushes
-gimp-prefs-folders-dynamics
-gimp-prefs-folders-environ
-gimp-prefs-folders-fonts
-gimp-prefs-folders-gradients
-gimp-prefs-folders-icon-themes
-gimp-prefs-folders-interp
-gimp-prefs-folders-modules
-gimp-prefs-folders-mypaint-brushes
-gimp-prefs-folders-palettes
-gimp-prefs-folders-patterns
-gimp-prefs-folders-plug-ins
-gimp-prefs-folders-scripts
-gimp-prefs-folders-themes
-gimp-prefs-folders-tool-plug-ins
-gimp-prefs-folders-tool-presets
-gimp-prefs-folders-tools
-gimp-prefs-help-system
-gimp-prefs-icon-theme
-gimp-prefs-image-title
-gimp-prefs-image-windows
-gimp-prefs-image-windows-appearance
-gimp-prefs-image-windows-snapping
-gimp-prefs-import-export
-gimp-prefs-input-devices
-gimp-prefs-interface
-gimp-prefs-new-image
-gimp-prefs-playground
-gimp-prefs-session
-gimp-prefs-system-resources
-gimp-prefs-theme
-gimp-prefs-tool-options
-gimp-prefs-toolbox
-gimp-prefs-window-management
 gimp-text-layer
 gimp-wilber
diff --git a/icons/icon-lists/prefs.list b/icons/icon-lists/prefs.list
new file mode 100644
index 0000000000..3efe97de71
--- /dev/null
+++ b/icons/icon-lists/prefs.list
@@ -0,0 +1,56 @@
+# Preferences Dialog icons
+#
+# All these icons are used as GTK_ICON_SIZE_BUTTON (16px) and GTK_ICON_SIZE_DIALOG (48px)
+# Cf. gimp_prefs_box_add_page() and app/dialogs/preferences-dialog.c
+# Check with:
+# grep -rI gimp-prefs-[a-z] app/dialogs/preferences-dialog.c |sed 's/ *"\([^"]*\)",/\1/' |sort |uniq
+gimp-prefs-color-management
+# TODO: used twice. "Dialog Defaults" should likely have its own icon.
+gimp-prefs-controllers
+gimp-prefs-default-grid
+gimp-prefs-display
+gimp-prefs-folders
+gimp-prefs-help-system
+gimp-prefs-icon-theme
+gimp-prefs-image-title
+gimp-prefs-image-windows
+gimp-prefs-image-windows-appearance
+gimp-prefs-image-windows-snapping
+gimp-prefs-import-export
+gimp-prefs-input-devices
+gimp-prefs-interface
+gimp-prefs-new-image
+gimp-prefs-playground
+gimp-prefs-system-resources
+gimp-prefs-theme
+gimp-prefs-tool-options
+gimp-prefs-toolbox
+gimp-prefs-window-management
+
+# These icon names can't be grepped because they are built from partial
+# strings.
+# See "Folders / <paths>" code section of app/dialogs/preferences-dialog.c
+gimp-prefs-folders-brushes
+gimp-prefs-folders-dynamics
+gimp-prefs-folders-environ
+gimp-prefs-folders-fonts
+gimp-prefs-folders-gradients
+gimp-prefs-folders-icon-themes
+gimp-prefs-folders-interp
+gimp-prefs-folders-modules
+gimp-prefs-folders-mypaint-brushes
+gimp-prefs-folders-palettes
+gimp-prefs-folders-patterns
+gimp-prefs-folders-plug-ins
+gimp-prefs-folders-scripts
+gimp-prefs-folders-themes
+gimp-prefs-folders-tool-presets
+
+# Used for debugging preferences page (temporarily? TODO?)
+gimp-wilber-eek
+
+# Not used AFAICS.
+#gimp-prefs-default-comment
+#gimp-prefs-folders-tool-plug-ins
+#gimp-prefs-folders-tools
+#gimp-prefs-session
diff --git a/icons/icon-lists/scalable.list b/icons/icon-lists/scalable.list
index c03a0f47fb..14eed79b6d 100644
--- a/icons/icon-lists/scalable.list
+++ b/icons/icon-lists/scalable.list
@@ -203,46 +203,6 @@ gimp-pivot-south-west
 gimp-pivot-west
 gimp-plugin
 gimp-portrait
-gimp-prefs-color-management
-gimp-prefs-controllers
-gimp-prefs-default-comment
-gimp-prefs-default-grid
-gimp-prefs-display
-gimp-prefs-folders
-gimp-prefs-folders-brushes
-gimp-prefs-folders-dynamics
-gimp-prefs-folders-environ
-gimp-prefs-folders-fonts
-gimp-prefs-folders-gradients
-gimp-prefs-folders-icon-themes
-gimp-prefs-folders-interp
-gimp-prefs-folders-modules
-gimp-prefs-folders-mypaint-brushes
-gimp-prefs-folders-palettes
-gimp-prefs-folders-patterns
-gimp-prefs-folders-plug-ins
-gimp-prefs-folders-scripts
-gimp-prefs-folders-themes
-gimp-prefs-folders-tool-plug-ins
-gimp-prefs-folders-tool-presets
-gimp-prefs-folders-tools
-gimp-prefs-help-system
-gimp-prefs-icon-theme
-gimp-prefs-image-title
-gimp-prefs-image-windows
-gimp-prefs-image-windows-appearance
-gimp-prefs-image-windows-snapping
-gimp-prefs-import-export
-gimp-prefs-input-devices
-gimp-prefs-interface
-gimp-prefs-new-image
-gimp-prefs-playground
-gimp-prefs-session
-gimp-prefs-system-resources
-gimp-prefs-theme
-gimp-prefs-tool-options
-gimp-prefs-toolbox
-gimp-prefs-window-management
 gimp-quick-mask-off
 gimp-quick-mask-on
 gimp-reset
diff --git a/tools/generate-icon-makefiles.py b/tools/generate-icon-makefiles.py
index 2760e5517b..5f717cda3a 100755
--- a/tools/generate-icon-makefiles.py
+++ b/tools/generate-icon-makefiles.py
@@ -37,6 +37,24 @@ def print_icons(indir, filenames, max_len, prefix, suffix, outfile, endlist=True
     icon_list = os.path.join(indir, filename)
     with open(icon_list, mode='r') as f:
       icons += [line.strip() for line in f]
+    # Replace comment lines with empty strings.
+    prev_blank = False
+    pop_list = []
+    for i, icon in enumerate(icons):
+      if icon != '' and icon[0] == '#':
+        icons[i] = ''
+      if icons[i] == '':
+        if prev_blank:
+          pop_list += [i]
+        prev_blank = True
+      else:
+        prev_blank = False
+        if icons[i] in icons[:i]:
+          pop_list += [i]
+    pop_list.reverse()
+    for i in pop_list:
+      # Remove successive blanks and duplicate icons.
+      icons.pop(i)
     # Strip empty lines in extremities.
     while icons[-1] == '':
       icons.pop()
@@ -96,8 +114,8 @@ if __name__ == "__main__":
     # Let's assume that scalable icons are the biggest list since it
     # should contain nearly all images. So we compute max_len once and
     # reuse this value on all lists.
-    col_max_len = print_icons(list_dir, ['scalable.list'], None, "scalable/", ".svg", colorf)
-    sym_max_len = print_icons(list_dir, ['scalable.list'], None, "scalable/", "-symbolic.svg", symbolicf)
+    col_max_len = print_icons(list_dir, ['scalable.list', 'prefs.list'], None, "scalable/", ".svg", colorf)
+    sym_max_len = print_icons(list_dir, ['scalable.list', 'prefs.list'], None, "scalable/", "-symbolic.svg", 
symbolicf)
 
     # 12x12 bitmap
     print("\nicons12_images = \\", file=colorf)
@@ -108,8 +126,8 @@ if __name__ == "__main__":
     # 16x16 bitmap
     print("\nicons16_images = \\", file=colorf)
     print("\nicons16_images = \\", file=symbolicf)
-    print_icons(list_dir, ['bitmap_16.list'], col_max_len, "16/", ".png", colorf)
-    print_icons(list_dir, ['bitmap_16.list'], sym_max_len, "16/", "-symbolic.symbolic.png", symbolicf)
+    print_icons(list_dir, ['bitmap_16.list', 'prefs.list'], col_max_len, "16/", ".png", colorf)
+    print_icons(list_dir, ['bitmap_16.list', 'prefs.list'], sym_max_len, "16/", "-symbolic.symbolic.png", 
symbolicf)
 
     # 18x18 bitmap
     print("\nicons18_images = \\", file=colorf)
@@ -144,8 +162,8 @@ if __name__ == "__main__":
     # 48x48 bitmap
     print("\nicons48_images = \\", file=colorf)
     print("\nicons48_images = \\", file=symbolicf)
-    print_icons(list_dir, ['bitmap_48.list'], col_max_len, "48/", ".png", colorf)
-    print_icons(list_dir, ['bitmap_48.list'], sym_max_len, "48/", "-symbolic.symbolic.png", symbolicf)
+    print_icons(list_dir, ['bitmap_48.list', 'prefs.list'], col_max_len, "48/", ".png", colorf)
+    print_icons(list_dir, ['bitmap_48.list', 'prefs.list'], sym_max_len, "48/", "-symbolic.symbolic.png", 
symbolicf)
 
     # 64x64 bitmap
     print("\nicons64_images = \\", file=colorf)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]