Pull to refresh

Comments 23

Спасибо, с интересом слежу за проектом, но как-то не доходят руки попробовать.
Было бы интересно узнать больше реальных кейсов использования.

Кейсы использования по сути те же, что и у WPF, только кроссплатформенно.


Ну или вот из последнего, мы в субботу в рамках MskDotNet проводили хакатон по написанию гоночных ботов по заранее неразведанной гексокарте, я к нему прокси-визуализатор для отображения поведения бота и видимых им клеток после запросов к серверу на авалонии делал. Писал сидя на линуксе, участники использовали на Windows и OSX. Соответственно на той же кодовой базе был и редактор карт.

Собственно, визуализатор:


Скрытый текст

Редактор:


Скрытый текст

Т. е. если надо делать приложение под десктоп и вы знаете WPF — можно брать авалонию. Когда допилим поддержку мобилок, можно будет и мобильные приложения писать а ля Flutter.

UFO just landed and posted this here
Добрый день! Есть несколько вопросов…
1. А насколько можно/удобно использовать для разработки приложений продукты jetbrains?
2. Под win можно ли приложения в трей сворачивать?
А насколько можно/удобно использовать для разработки приложений продукты jetbrains?

Совсем неудобно. Нет превьювера и их XAML-движок не понимает половину наших конструкций. С превьювером мне уже полгода обещают что-то сделать и утверждают, что прогресс есть. По XAML-движку, видимо, придётся нам писать свой плугин


Под win можно ли приложения в трей сворачивать?

Пока только руками через P/Invoke. С треем проблема в том, что он, зараза, в 2019-ом году не кроссплатформенный по своим концепциям. В частности, на OSX/Linux мы не можем показать к иконке своё меню, нужно обязательно использовать системное. А это отдельная проблема, которая будет решаться в рамках поддержки глобальных (эскспортируемых) меню.

Пока только руками через P/Invoke. С треем проблема в том, что он, зараза, в 2019-ом году не кроссплатформенный по своим концепциям.

А разве нельзя что-нибудь типа
.With(new Win32PlatformOptions { minimizeToTray = true });
сделать?
Просто как раз ищу хоть что-нибудь для кроссплатформенных УИ, и так, чтобы не надо было таскать с собой яву или 100500 мегабайт ноды с хромом…

На сегодня могу только предложить через Shell_NotifyIcon создать иконку самостоятельно. Нормальная реализация работы с notification area будет скорее всего ближе к 0.9.

знаю, что коммент устарел, но
1) резко стало удобнее
2) + еще и в райдере превьювер пилят
что-то непонятно как запустить на линуксе egram.tel, скачал, распаковал архив, попытался запустить
Скрытый текст
> $ ./Tel.Egram                                                                ⬡ 10.14.1 

Unhandled Exception: System.DllNotFoundException: Unable to load shared library 'tdjson' or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: libtdjson: cannot open shared object file: No such file or directory
   at TdLib.Bindings.LinuxBindings.td_set_log_file_path(IntPtr path)
   at TdLib.Client.Log.SetFilePath(String path)
   at Tel.Egram.Registry.<>c__DisplayClass1_0.<AddTdLib>b__0() in /home/vsts/work/1/s/src/Tel.Egram/Registry.cs:line 48
   at Splat.DependencyResolverMixins.<>c__DisplayClass8_0`1.<RegisterLazySingleton>b__0()
   at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode)
   at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor)
   at System.Lazy`1.CreateValue()
   at Splat.DependencyResolverMixins.GetService[T](IDependencyResolver This, String contract)
   at Tel.Egram.Registry.<>c__DisplayClass1_0.<AddTdLib>b__1() in /home/vsts/work/1/s/src/Tel.Egram/Registry.cs:line 55
   at Splat.DependencyResolverMixins.<>c__DisplayClass8_0`1.<RegisterLazySingleton>b__0()
   at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode)
   at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor)
   at System.Lazy`1.CreateValue()
   at Splat.DependencyResolverMixins.GetService[T](IDependencyResolver This, String contract)
   at Tel.Egram.Registry.<>c__DisplayClass1_0.<AddTdLib>b__3() in /home/vsts/work/1/s/src/Tel.Egram/Registry.cs:line 68
   at Splat.DependencyResolverMixins.<>c__DisplayClass8_0`1.<RegisterLazySingleton>b__0()
   at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode)
   at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor)
   at System.Lazy`1.CreateValue()
   at Splat.DependencyResolverMixins.GetService[T](IDependencyResolver This, String contract)
   at Tel.Egram.Registry.<>c__DisplayClass3_0.<AddServices>b__13() in /home/vsts/work/1/s/src/Tel.Egram/Registry.cs:line 213
   at Splat.DependencyResolverMixins.<>c__DisplayClass8_0`1.<RegisterLazySingleton>b__0()
   at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode)
   at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor)
   at System.Lazy`1.CreateValue()
   at Splat.DependencyResolverMixins.GetService[T](IDependencyResolver This, String contract)
   at Tel.Egram.Model.Application.AuthenticationLogic.BindAuthentication(MainWindowModel model) in /home/vsts/work/1/s/src/Tel.Egram.Model/Application/AuthenticationLogic.cs:line 20
   at Tel.Egram.Model.Application.MainWindowModel.<.ctor>b__28_0(CompositeDisposable disposables) in /home/vsts/work/1/s/src/Tel.Egram.Model/Application/MainWindowModel.cs:line 32
   at ReactiveUI.ViewForMixins.<>c__DisplayClass3_0.<WhenActivated>b__0() in D:\a\1\s\src\ReactiveUI\Activation\ViewForMixins.cs:line 74
   at System.Linq.Enumerable.SelectManySingleSelectorIterator`2.MoveNext()
   at System.Collections.Generic.List`1.AddEnumerable(IEnumerable`1 enumerable)
   at System.Reactive.Disposables.CompositeDisposable..ctor(IEnumerable`1 disposables) in D:\a\1\s\Rx.NET\Source\src\System.Reactive\Disposables\CompositeDisposable.cs:line 67
   at ReactiveUI.ViewModelActivator.Activate() in D:\a\1\s\src\ReactiveUI\Activation\ViewModelActivator.cs:line 84
   at Tel.Egram.Program.Run(IDependencyResolver resolver) in /home/vsts/work/1/s/src/Tel.Egram/Program.cs:line 71
   at Tel.Egram.Program.Main(String[] args) in /home/vsts/work/1/s/src/Tel.Egram/Program.cs:line 18
[1]    4797 abort      ./Tel.Egram
    

Чего-то не хватает для загрузки сишной библиотеки для работы с телеграмом, скорее всего libssl-1.0.0. Натравите ldd на libtdjson.so

ага, нужен libssl.so.1.0.0 а в дебиане есть только 1.0.2

Там библиотеке libssl версии 1.0.0 нужна. А с libssl целый зоопарк несовместимых между собой версий. Повторюсь, нужно смотреть выхлоп ldd.

UFO just landed and posted this here
А можно код приложения демонстрирующего темную тему? Хочу посмотреть как такие табы сделали.
Специфичный кейс:
Есть ли возможность встраивать кадры сырого рендера на OpenGL / Vulkan / DX / Metal внутрь окон с контролами? (с пересечением / перекрытием кадра контролами или без)

В версии с nuget.org нормально нельзя, только через WriteableBitmap с копированием в CPU-память и обратно и просадкой FPS.


Чтобы сделать нормально, нужны https://github.com/AvaloniaUI/Avalonia/pull/2364 (подстановка своей реализации контекста OpenGL/Vulkan) и https://github.com/AvaloniaUI/Avalonia/pull/2371 (прямой доступ к SkCanvas с рендер-потока), которые перед релизом не стали мержить. За подробностями, как реализовать, можно попробовать обратиться к MarchingCube, у них кейс "отрисовать в написанном на авалонии игровом редакторе собственно выхлоп их игрового движка".

Ну и надо понимать, что всё веселье с вещами типа ANGLE и MoltenVK ляжет на вас.

Sign up to leave a comment.

Articles

Change theme settings