Есть ли способ иметь 2 значка при использовании elixir-desktop?

Задний план

У меня есть личный проект, который представляет собой настольное приложение elixir для ПК с Windows. Это работает довольно хорошо, но теперь я хочу дать ему значок.

Обычно это делается в следующем модуле:

defmodule WebInterface.Application do
  # See https://hexdocs.pm/elixir/Application.html
  # for more information on OTP Applications
  @moduledoc false

  use Application

  alias Desktop
  alias Manager
  alias WebInterface.{Endpoint, Telemetry}
  alias WebInterface.Live.MenuBar

  @impl true
  def start(_type, _args) do
    children = [
      Telemetry,
      {Phoenix.PubSub, name: WebInterface.PubSub},
      Endpoint,
      Manager,
      {Desktop.Window,
       [
         app: :web_interface,
         id: WebInterface,
         title: "Market Manager",
         size: {900, 960},
         menubar: MenuBar,
         icon: "static/images/resized_logo_4.png", # THIS IS WHERE THE ICON IS SET
         url: &WebInterface.Endpoint.url/0
       ]}
    ]

    opts = [strategy: :one_for_one, name: WebInterface.Supervisor]
    Supervisor.start_link(children, opts)
  end

  @impl true
  def config_change(changed, _new, removed) do
    WebInterface.Endpoint.config_change(changed, removed)
    :ok
  end
end

Проблема

Проблема здесь в том, что я должен использовать одно и то же изображение как для панели задач Windows, так и для верхнего значка приложения:

Проблема здесь в том, что хотя логотип на нижней панели Windows (отмечен желтым цветом) выглядит красиво, логотип наверху искажен и довольно ужасен.

Исправление этого было бы в том, чтобы иметь значок для нижней части и один для верхней части. Однако после проверки демо-приложения я не нашел способа сделать это.

Вопрос

Возможно ли это достичь? Если да, то как?

Я думаю, вам нужно собрать wx{Widgets,Python} из последней версии самостоятельно, чтобы исправить размытие значков.

Igor 07.11.2022 17:47

На моем локальном компьютере установлена ​​последняя загружаемая версия с веб-сайта wxwidgets (последний стабильный выпуск: 3.2.1). Вы предлагаете, что эта версия устарела?

Flame_Phoenix 07.11.2022 18:37

как насчет wxPython? Я не знаю/не помню, на чем основан их последний релиз...

Igor 07.11.2022 19:24

Я не пробовал wxPython. Честно говоря, я не уверен, как wxPython и wxWidgets связаны друг с другом. Я не могу удалить wxWidgets и установить wxPython, после чего все заработает, как раньше.

Flame_Phoenix 08.11.2022 10:05

Кроме того, это также заставит моих пользователей устанавливать Python на локальные машины, а это слишком много, чтобы просить.

Flame_Phoenix 08.11.2022 10:06
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
5
50
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

На уровне wxWidgets API вы можете указать значки разных размеров, используя wxTopLevelWindow::SetIcons() (обратите внимание на «s»), но я не знаю, доступна ли эта функция в привязках Erlang.

Альтернативой может быть использование значка из ресурсов Windows, но, опять же, не уверен, что вы можете использовать пользовательские ресурсы для приложения Erlang.

Ответ принят как подходящий

Решение

Спросив в нескольких местах, я смог найти некоторые ответы. На самом деле этот пост можно резюмировать двумя вопросами:

  1. Почему иконки такие искаженные?
  2. Могу ли я иметь значок для приложения, отличный от значка на нижней панели?

Почему иконки такие искаженные?

После проверки на официальных форумах wxWidgets и получения помощи от милых людей там мне указали, что мои значки не соответствуют стандартам MSW для значков. В моем случае это должны были быть 32x32 или 16x16.

Исследовательская работа:

Могу ли я иметь значок для приложения, отличный от значка на нижней панели?

Этот немного сложнее. Есть шанс, что при непосредственном использовании wxWidgets это могло быть возможно с помощью наложенных значков. Однако привязка библиотеки, которую я использую, elixir-desktop, не поддерживает это, а это значит, что значки должны быть одинаковыми.

Это, вероятно, к лучшему, потому что, как упоминалось сообществом wxWidgets, даже такое использование оверлейных значков не было бы стандартным для приложений MSW, как в моем случае.

Исследовательская работа:

Другие вопросы по теме