Skip to content

feat(gui): new SVG art for Friends/reload/folder icons, wxART_CLOSE for tab-close (#675) - #735

Merged
got3nks merged 2 commits into
amule-org:masterfrom
LSalami:iconsystem-new-assets
Jul 31, 2026
Merged

feat(gui): new SVG art for Friends/reload/folder icons, wxART_CLOSE for tab-close (#675)#735
got3nks merged 2 commits into
amule-org:masterfrom
LSalami:iconsystem-new-assets

Conversation

@LSalami

@LSalami LSalami commented Jul 31, 2026

Copy link
Copy Markdown

Continues the icon-system cleanup scoped in #675, independent of #732/#733 (different files, no overlap — can land in any order).

What's different about this one

Unlike #732/#733, these 8 raw-bitmap indices had no existing SVG equivalent in src/icons/, so this PR adds new assets rather than just wiring up ones that already existed:

  • amuleDlgImages(14)/(15): the small header icons in the Friends and Messages tabs. Friends gets a new amule:friends SVG; Messages reuses the existing amule:toolbar_messages art (same concept — requested at an explicit 16x16 so it doesn't inherit the toolbar's 32x32 natural size next to Friends' equally-sized icon).
  • amuleDlgImages(18)/(30): the "reload list" buttons (shared files, ED2K server list, Kad node list) — three call sites, one new amule:reload SVG.
  • amuleSpecial(1)/(2): the shared-directory tree's folder icons — new amule:folder/amule:folder_shared SVGs. Same shape, tinted orange vs. red, matching how the original raw bitmaps only differed by colour (checked by reconstructing the old raster data — see below).
  • amuleSpecial(3)/(4): the chat/search notebook tabs' close-on-hover icon. Both were a bespoke "X in a box" bitmap differing only by a hover-highlight border colour — replaced with wx's own stock wxART_CLOSE for both states instead of a second custom asset.

On the new artwork: I reconstructed the old raw pixel/XPM data to PNG to see what each icon actually looked like before drawing a replacement (rather than guessing from the variable/index name alone). The existing src/icons/*.svg set (from #487) is fairly elaborate — gradient, near-mascot-style illustrations. The 3 new SVGs here (friends, reload, folder/folder_shared) are simpler flat/gradient shapes; I did not attempt to match that more illustrative style. Flagging this explicitly for reviewers — these may be worth a real artist's pass later, this is a best-effort placeholder that's at least equivalent in spirit to what it replaces, not a claimed final design.

Result

src/icons/icon_data.c (the checked-in fallback used when Python3 is absent at configure time, per #487) regenerated via embed_icons.py to match.

Testing

clang-format v18 (Docker, pinned) clean. Full amule build verified on macOS. Visually checked every call site: Friends/Messages tab headers, the ED2K server-list and Kad node-list reload buttons, the shared-files reload button, and the Preferences > Directory shared-folder tree (screenshots on request). Did not visually exercise the chat/search tab close-on-hover icon specifically (wxART_CLOSE is wx's own stock resource, low risk) or the folder_shared red variant (needs an actual shared subdirectory to trigger).

@got3nks

got3nks commented Jul 31, 2026

Copy link
Copy Markdown

Hello @LSalami, the refresh icon seems a bit odd, can you try a different prompt?

@LSalami

LSalami commented Jul 31, 2026

Copy link
Copy Markdown
Author

Re: the reload icon looking off — fair, and worth explaining how it was made so you know what you're critiquing. It's not from an image-generation model; I hand-wrote the SVG (paths/gradients) directly, iterating on a rasterized preview until it looked reasonable to me at 16x16. Same for `friends`/`folder`/`folder_shared`. So "try a different prompt" doesn't quite apply mechanically, but the spirit is right — it's a best-effort placeholder, not polished work, and I flagged that explicitly in the PR description for exactly this reason.

One alternative worth considering instead of me iterating on hand-drawn SVGs again: Lucide (ISC-licensed, so compatible with GPL — just needs an attribution note somewhere) has ready-made SVGs that map directly — `refresh-cw` for reload, `users`/`user` for Friends, `folder`/`folder-open` for the directory tree. Real, consistent, professionally-designed icons instead of my approximations.

The tradeoff: Lucide's style is minimal outline/stroke (thin monochrome line, tintable), while the existing `src/icons/*.svg` set (from #487) is glossy/gradient — closer to small illustrations than pictograms (see `toolbar_messages.svg`). Mixing the two styles in the same icon set is a real inconsistency, just a different one than "hand-drawn placeholder next to polished gradient art."

Given this is a visible design call rather than a correctness one, want me to:

  1. Switch these 4 (reload/friends/folder/folder_shared) to Lucide, accepting the outline-vs-gradient style split, or
  2. Keep iterating on hand-drawn gradient-style SVGs to better match the existing set, or
  3. Something else (e.g. hold this slice until someone with actual design chops can do a pass)?

@got3nks

got3nks commented Jul 31, 2026

Copy link
Copy Markdown

So far we used our own artwork so I'd rather not add third-parties for just one icon. If it's ok with you, let's keep trying hand-drawing to make it look more like the original (use the green color, thicker arrow's body). Thanks.

LSalami added a commit to LSalami/amule that referenced this pull request Jul 31, 2026
…eight

got3nks (PR amule-org#735 review): the reload icon "seems a bit odd" -- fair,
the first attempt was a thin single blue arc, nothing like the icon it
replaced. Reconstructed the original amuleDlgImages(18) raster to
check: it was a green double-arrow circular refresh symbol with a
fairly thick stroke, not blue and not a single arc.

Redrawn to match: green gradient, two opposing curved arrows forming a
circle (matching the original's silhouette), thicker stroke, bigger
arrowheads so they stay legible at 16x16 (the first attempt's
arrowheads all but disappeared at native size).

Went with hand-drawn over a third-party icon set (Lucide was
suggested and considered) per got3nks: this project has used its own
artwork throughout, and pulling in an external set for one icon isn't
worth the inconsistency.

Verified via a full amule build (macOS) and a visual check of the
shared-files reload button.
@LSalami

LSalami commented Jul 31, 2026

Copy link
Copy Markdown
Author

Makes sense, agreed on keeping it in-house. Reconstructed the original raster (amuleDlgImages(18)) to check what I was actually replacing -- it's a green double-arrow circular refresh icon, thicker stroke than what I first drew. Redrawn to match: 25da39d. Screenshot of the shared-files reload button if useful, just say the word.

@got3nks

got3nks commented Jul 31, 2026

Copy link
Copy Markdown

Doesn't look very good.

immagine

We can wait for somebody to come up with a better SVG. @Zeyckler maybe? 😅

@LSalami

LSalami commented Jul 31, 2026

Copy link
Copy Markdown
Author

Wanted to check something before iterating on the hand-drawn version further: I ran the same brief (green, two curved arrows forming a full circle, thick uniform stroke) through Recraft (via the Higgsfield MCP tool available to me) to see how it compared. Result is up in 179c197 — GitHub should render the SVG diff inline here so you can look without pulling the branch: LSalami@179c1974a

Worth being upfront about what this is: it's AI-generated, same as my hand-drawn attempt, just a different tool -- not a pre-existing third-party icon library like Lucide (no external attribution/license needed), but also not really "hand-drawn in-house" in the spirit of what you asked for either. Flagging that distinction explicitly rather than quietly swapping it in.

My honest read comparing the two: the Recraft version has a cleaner, more uniform stroke and reads a bit better at actual 16x16 size than my hand-drawn one. But it's your call on whether that's worth it given the in-house preference. If you'd rather keep 25da39d (the hand-drawn one), just say so and I'll revert 179c197.

@got3nks

got3nks commented Jul 31, 2026

Copy link
Copy Markdown

This looks better, can you solve the conflicts?

…ree, and tab-close icons to CamuleArtProvider

Continues the icon-system cleanup scoped in amule-org#675, independent of
amule-org#732/amule-org#733 (different files, no overlap).

- amuleDlgImages(14)/(15): the small header icons in the Friends and
  Messages tabs. Friends gets a new "amule:friends" SVG; Messages
  reuses the existing "amule:toolbar_messages" art, requested at an
  explicit 16x16 so it doesn't inherit the toolbar's 32x32 natural
  size.
- amuleDlgImages(18)/(30): the "reload list" buttons (shared files,
  ED2K server list, Kad node list) -- three call sites, one new
  "amule:reload" SVG (see below for its own history).
- amuleSpecial(1)/(2): the shared-directory tree's folder icons get
  new "amule:folder"/"amule:folder_shared" SVGs -- same shape, tinted
  orange vs. red, matching how the original raw bitmaps only differed
  by colour.
- amuleSpecial(3)/(4): the chat/search notebook tabs' close-on-hover
  icon, replaced with wx's own stock wxART_CLOSE for both states
  instead of a second bespoke asset (both were the same "X in a box"
  bitmap, differing only by a hover-highlight border colour).

reload.svg's own history, per PR review: the first hand-drawn attempt
(thin blue single arc) didn't match the original at all -- got3nks
caught it, I reconstructed the original amuleDlgImages(18) raster to
check (a thicker green double-arrow circle) and redrew closer to that,
which still wasn't good enough. Final version is AI-vectorized via
Recraft (through the Higgsfield MCP), which got3nks preferred over
further hand-drawn iterations.

src/icons/icon_data.c (the checked-in fallback used when Python3 is
absent at configure time, per amule-org#487) regenerated via embed_icons.py to
match.

Rebased onto current master (picking up amule-org#732/amule-org#733/amule-org#739, which all
touch the same amuleSpecial/amuleDlgImages functions) -- conflicts
resolved by redoing the index deletions against the current tree
rather than replaying the stale patch, since amule-org#725/amule-org#733 already moved
the surrounding line numbers.

Verified via a full amule build (macOS) and a visual check of every
call site: Friends/Messages tab headers, the ED2K server-list and Kad
node-list reload buttons, the shared-files reload button, and the
Preferences > Directory shared-folder tree.
@LSalami
LSalami force-pushed the iconsystem-new-assets branch from 179c197 to 6503597 Compare July 31, 2026 11:30
@LSalami

LSalami commented Jul 31, 2026

Copy link
Copy Markdown
Author

Conflicts resolved (rebased onto master, which now has #732/#733/#739 -- all touching the same amuleSpecial/amuleDlgImages functions). Redid the index deletions against the current tree rather than replaying the stale patch, since the line numbers had moved. Squashed to one commit: 6503597. Full build + visual check of every call site again post-rebase, all good.

@got3nks

got3nks commented Jul 31, 2026

Copy link
Copy Markdown

I built #735 for a visual round of tests. Folders and the close-tab glyphs look good; two notes on the new art:

  1. Reload icon — the arrow bodies read too thin; they'd hold up better at 16px with a thicker stroke.
reload icon
  1. Friends window, Messages panel — the header icon here doesn't read as "messages"; it should be a message/note/chat glyph.
messages panel icon

Everything else looks good — folder / folder_shared and the tab-close X are fine.

…-org#735 review)

got3nks, testing amule-org#735:
- reload: arrow bodies read too thin at 16px. Regenerated via Recraft
  with an explicit thicker/bolder-stroke prompt.
- Messages panel header: reusing "amule:toolbar_messages" (the main
  toolbar's detailed gradient mascot bust) at 16x16 doesn't read as
  "messages" once shrunk that far from its 32x32 native size. Added a
  dedicated "amule:message" chat-bubble glyph instead, sized for
  legibility at 16x16 specifically, and pointed the Messages panel
  header at it instead of the toolbar art.

Folder/folder_shared and the tab-close X were already approved as-is.

Verified via a full amule build (macOS) and a visual check of both
fixes: the shared-files reload button and the Messages panel header.
@LSalami

LSalami commented Jul 31, 2026

Copy link
Copy Markdown
Author

Both fixed in c3aeaea:

  1. Reload — regenerated with an explicit thicker/bolder stroke prompt. Diff renders inline: LSalami@c3aeaea5b

  2. Messages panel header — you're right, that was reusing the main toolbar's mascot illustration shrunk to 16x16, which is why it stopped reading clearly. Added a dedicated small chat-bubble glyph ("amule:message") instead of sharing the toolbar art.

Verified both with a full build + visual check on my end.

@got3nks
got3nks merged commit 3fec826 into amule-org:master Jul 31, 2026
14 checks passed
@got3nks

got3nks commented Jul 31, 2026

Copy link
Copy Markdown

Merged, thanks @LSalami

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants