Fórum Root.cz

Hlavní témata => Windows a jiné systémy => Téma založeno: okalousek 02. 03. 2020, 16:03:05

Název: GUI tookit pro Linux a Windows
Přispěvatel: okalousek 02. 03. 2020, 16:03:05
Ahoj.
Rád bych udělal nějakou GUI desktop aplikaci a rád bych se poptal v čem ji mám dělat.
Mam dualboot Windows a Linux ale v Linuxu budu programovat, jsou tam mnohem lepší nástroje.
Umím docela v C# ale nebojím se naučit něco nového.
Zatím se mi líbí c# Avalonia (multiplatforma)
Qt ani Gtk nechci.
Nejlépe kdyby to bylo nativní (stačí mi Linux, Windows).
Nějaká doporučení?
Název: Re:GUI tookit - jaký
Přispěvatel: qelurg 02. 03. 2020, 16:14:51
Proč nechcete standardní a nejpoužívanější toolkity Gtk a Qt?
Název: Re:GUI tookit - jaký
Přispěvatel: okalousek 02. 03. 2020, 16:16:52
Gtk je sice multiplatformní ale tak nějak že to nějak funguje a Qt je c++ framework kterému se chci vyhnout
Název: Re:GUI tookit - jaký
Přispěvatel: ByCzech 02. 03. 2020, 16:17:53
Qt ani Gtk nechci.

Proč?

Nejlépe kdyby to bylo nativní (stačí mi Linux, Windows).

Nativní pro Linux nebo pro Windows, nejde oboje najednou. Takovou věc právě zastřešují frameworky Qt, GTK a další.
Název: Re:GUI tookit - jaký
Přispěvatel: ByCzech 02. 03. 2020, 16:18:46
Gtk je sice multiplatformní ale tak nějak že to nějak funguje a Qt je c++ framework kterému se chci vyhnout

V Qt můžete dělat v různých jazycích, nejste vázán pouze na C++
Název: Re:GUI tookit - jaký
Přispěvatel: okalousek 02. 03. 2020, 16:19:58
No, Gtk mi přijde že jde spíš cestou GNOME only a pro Windows je to spíš sekundární. Spíš mířím na Windows ale byl bych rád aby to šlo v pohodě i na Linuxu.
Název: Re:GUI tookit - jaký
Přispěvatel: okalousek 02. 03. 2020, 16:38:19
Rust-Qt a QML?
Název: Re:GUI tookit - jaký
Přispěvatel: registrovany_ava 02. 03. 2020, 17:02:39
Jak jsem psal v sousedním vlákně, existuje https://www.wxwidgets.org. Nativní widgety pro Windows i Linux, kdysi jsem to používal z  wxPython-u a líbilo se mi to. Dneska by mě vadilo, že jsou bindingy jen pro C++, Python, Perl a Haskell, ale kdyby to pro tebe nebyl problém, může to být dobrá volba.
Název: Re:GUI tookit - jaký
Přispěvatel: ByCzech 02. 03. 2020, 18:55:00
Gtk je sice multiplatformní ale tak nějak že to nějak funguje a Qt je c++ framework kterému se chci vyhnout

V Qt můžete dělat v různých jazycích, nejste vázán pouze na C++

Jen doplním zdroj:

https://wiki.qt.io/Language_Bindings

Klidně můžete s Qt pracovat i v C#/Mono/.Net, které znáte.
Název: Re:GUI tookit pro Linux a Windows
Přispěvatel: Ondrej Nemecek 02. 03. 2020, 20:27:00
.NET Core 3 už má GUI - Windows Forms, WPF and Universal Windows Platform (UWP). Nemám s tím zkušenost, ale pokud umíte C# tak bych osobně prověřil nejprve to. Mělo by to být plnohodnotné.
Název: Re:GUI tookit pro Linux a Windows
Přispěvatel: okalousek 02. 03. 2020, 22:22:45
.NET Core 3 už má GUI - Windows Forms, WPF and Universal Windows Platform (UWP). Nemám s tím zkušenost, ale pokud umíte C# tak bych osobně prověřil nejprve to. Mělo by to být plnohodnotné.

To ale pod Linuxem nespustíte (nativně). WinForms by šlo přes Wine, WPF s trochou úsilí a UWP už výbec.
Název: Re:GUI tookit pro Linux a Windows
Přispěvatel: Ondrej Nemecek 03. 03. 2020, 00:05:27
Nechám se poučit, jak to v .NET funguje. Jako že pro to není na linuxu runtime nebo jak? Měl jsem za to, že to na linuxu běží?
Název: Re:GUI tookit pro Linux a Windows
Přispěvatel: okalousek 03. 03. 2020, 07:24:23
Nechám se poučit, jak to v .NET funguje. Jako že pro to není na linuxu runtime nebo jak? Měl jsem za to, že to na linuxu běží?

Winforms se vykreslují přes Win32 a WPF přes DirectX.
UWP běží úplně v jiném runtime než je .NET Core (WinRT)
Název: Re:GUI tookit pro Linux a Windows
Přispěvatel: Ondrej Nemecek 03. 03. 2020, 13:43:49
Děkuji za vysvětlení.

Tady jsem našel i docela názorný obrázek, co je kde podporované https://devblogs.microsoft.com/dotnet/net-core-3-and-support-for-windows-desktop-applications/
Název: Re:GUI tookit pro Linux a Windows
Přispěvatel: okalousek 03. 03. 2020, 17:50:57
Sám mám rád GNOME a Gtk aplikace ale ty jsou doma snad jen v Linuxu 😟.
Takže asi zvolím to Qt.
Buď půjdu do Go nebo do Rustu, sám nevím čí by pro to Qt bylo lepší.

Jinak, děkuji za rady.
Název: Re:GUI tookit - jaký
Přispěvatel: qelurg 03. 03. 2020, 19:45:08
Gtk je sice multiplatformní ale tak nějak že to nějak funguje a Qt je c++ framework kterému se chci vyhnout
Já ho na windows používal roky. Teď preferuji web gui přes websockety, to je kompatibilní se vším, ale to se vám asi taky líbit nebude. Pak jsem ještě slyšel o kiwi, výhodou by měla být kompatibilita i s androidem, ale nevím jak je to použitelné.
Název: Re:GUI tookit pro Linux a Windows
Přispěvatel: qelurg 03. 03. 2020, 19:50:22
Tak nic, kiwi je jen python only.
Název: Re:GUI tookit pro Linux a Windows
Přispěvatel: okalousek 03. 03. 2020, 20:35:13
Nakonec jsme se dohodli na tom Rustu ale zase jsme se rozhádali o tookitu.
Máme zatím 2 kandidáty: Gtk a Qt (zvláštní že kandidáti jsou ti kterým jsem se chtěl vyhnout).
Program chceme udělat pro Linux ale také aby to šlo dobře na Windows.
Docela se mi líbí jak jsem již zmiňoval GNOME aplikace (CSD, jejich návrhy).
Název: Re:GUI tookit pro Linux a Windows
Přispěvatel: registrovany_ava 04. 03. 2020, 11:43:50
Nakonec jsme se dohodli na tom Rustu ale zase jsme se rozhádali o tookitu.
Máme zatím 2 kandidáty: Gtk a Qt (zvláštní že kandidáti jsou ti kterým jsem se chtěl vyhnout).
Program chceme udělat pro Linux ale také aby to šlo dobře na Windows.
Docela se mi líbí jak jsem již zmiňoval GNOME aplikace (CSD, jejich návrhy).

Jestli Rust, tak skoro jednoznačně Gtk, bindingy na Qt jsou v bůhvíjakém stavu.
Koukni na crates relm a vgtk.
Název: Re:GUI tookit pro Linux a Windows
Přispěvatel: okalousek 04. 03. 2020, 14:20:38
Nakonec jsme se dohodli na tom Rustu ale zase jsme se rozhádali o tookitu.
Máme zatím 2 kandidáty: Gtk a Qt (zvláštní že kandidáti jsou ti kterým jsem se chtěl vyhnout).
Program chceme udělat pro Linux ale také aby to šlo dobře na Windows.
Docela se mi líbí jak jsem již zmiňoval GNOME aplikace (CSD, jejich návrhy).

Jestli Rust, tak skoro jednoznačně Gtk, bindingy na Qt jsou v bůhvíjakém stavu.
Koukni na crates relm a vgtk.

Já bych byl rád, aby to fungovalo dobře i na Windows. Každý ví, že Qt aplikace vypadají na Windows docela pěkně a vím o tom že fungují. O tom Gtk na Windows moc nevím.
Název: Re:GUI tookit pro Linux a Windows
Přispěvatel: skunkos 05. 03. 2020, 10:10:35
Zkoušel sem nějaký čas zpátky GTK/Pidgin na Windows a vypadalo to rozhodně méně nativně než aplikace v Qt.
Název: Re:GUI tookit pro Linux a Windows
Přispěvatel: Kouzelný dědeček 05. 03. 2020, 12:46:14
Zkoušel sem nějaký čas zpátky GTK/Pidgin na Windows a vypadalo to rozhodně méně nativně než aplikace v Qt.

Naposled, co jsem Pidgina používal na widlích vypadal uplně v pohodě, nevšiml bych si, že neni nativní. Ale je fakt, že to už je pár let dozadu.
Název: Re:GUI tookit pro Linux a Windows
Přispěvatel: lto 05. 03. 2020, 13:18:20
Pozri aj FLTK https://www.fltk.org/ ..mozno sa zapaci  :)
Název: Re:GUI tookit pro Linux a Windows
Přispěvatel: okalousek 05. 03. 2020, 14:48:11
Zkoušel sem nějaký čas zpátky GTK/Pidgin na Windows a vypadalo to rozhodně méně nativně než aplikace v Qt.

Naposled, co jsem Pidgina používal na widlích vypadal uplně v pohodě, nevšiml bych si, že neni nativní. Ale je fakt, že to už je pár let dozadu.
No ano, je to Gtk+ 2
A dokonce má commit naposledy před 3 roky.
Název: Re:GUI tookit pro Linux a Windows
Přispěvatel: František Ryšánek 05. 03. 2020, 15:51:18
Nezaznělo tady zatím Ultimate++. Mám čerstvou zkušenost na Windows, na Linuxu zatím nikoli. A jsem poměrně mile překvapen. Ano je to celé v C++. S licencí ve stylu BSD.

Co v tom chcete tvořit? Tzn. jaké potřebujete knihovny/komponenty?
Název: Re:GUI tookit pro Linux a Windows
Přispěvatel: okalousek 05. 03. 2020, 18:11:50
Nezaznělo tady zatím Ultimate++. Mám čerstvou zkušenost na Windows, na Linuxu zatím nikoli. A jsem poměrně mile překvapen. Ano je to celé v C++. S licencí ve stylu BSD.

Co v tom chcete tvořit? Tzn. jaké potřebujete knihovny/komponenty?

Mám vám to nakreslit? 😉
Budu dělat digitální kartotéku:
Přehled Karet (vlastní Widget?), Kde bude:
Název karty, její nějaké vlastnosti a tlačítka s otevřením, podnabídkou s exportem...
Když se to otevře, bude tam rozhraní pro úpravu.
Kartu můžete mít že šablony, kde jsou vlastnosti. Pokud to v šabloně dovolíte, lze i individuálně přidávat.
Název: Re:GUI tookit pro Linux a Windows
Přispěvatel: qelurg 03. 04. 2020, 00:16:53
Udělej gui v prohlížeči, neprohloupíš.
Název: Re:GUI tookit pro Linux a Windows
Přispěvatel: okalousek 03. 04. 2020, 02:33:58
Udělej gui v prohlížeči, neprohloupíš.

Dobrý nápad. Jenže manipulace DOMu je možná (pokud vím, když tak mě opravte) jen přes JavaScript. Ještě je tu Webassembly, ale tam nevím.
Název: Re:GUI tookit pro Linux a Windows
Přispěvatel: qelurg 03. 04. 2020, 06:26:14
Udělej gui v prohlížeči, neprohloupíš.
Dobrý nápad. Jenže manipulace DOMu je možná (pokud vím, když tak mě opravte) jen přes JavaScript. Ještě je tu Webassembly, ale tam nevím.
Cílem je mít užitečnou aplikaci nebo něco jiného? Jestli užitečnou aplikaci, tak nástroje bych řešil až sekundárně a podřídil je požadovanému cíli. Webové prostředí je pro tento typ ideální a nabízí jednu ohromnou výhodu, může to automaticky běžet terminálově. Tj. program může normálně běžet na pc s ui v browseru, ale v případě potřeby jde ui oddělit a spustit kdekoliv a na čemkoliv, třeba na tabletu, s trochou snahy je lehké zařídit i multiuživatelské používání.  Kartotéka zní jako něco, kde by se obojí mohlo hodit. To za prvé.

Za druhé existuje řada transpilerů, to jest překladačů z různých jazyků do javascriptu. Nevím jak v Rustu, ale pro Python existuje třeba Flexx. Podívej se třeba na tuhle ukázku, s jakým minimálním úsilím lze vytvářet slušně vypadající aplikace používající prohlížeč jako UI. A bez přímého použití javascriptu. https://flexx.readthedocs.io/en/stable/examples/sine_src.html#sine-py Pro Rust snad najdeš něco podobného. Pokud ne, přehodnotil bych přístup a přizpůsobil nástroje požadovanému cíli.
Název: Re:GUI tookit pro Linux a Windows
Přispěvatel: registrovany_ava 03. 04. 2020, 10:22:33
Mám vám to nakreslit?
Budu dělat digitální kartotéku:
Přehled Karet (vlastní Widget?), Kde bude:
Název karty, její nějaké vlastnosti a tlačítka s otevřením, podnabídkou s exportem...
Když se to otevře, bude tam rozhraní pro úpravu.
Kartu můžete mít že šablony, kde jsou vlastnosti. Pokud to v šabloně dovolíte, lze i individuálně přidávat.

Teď mírně uvažuju nad tím, že by se mi možná hodilo něco podobného, koukal jsem po nástrojích, které umožňují takový typ aplikace (open source user-friendly frontend pro DB s master-detail rozhraním) udělat s minimálním úsilím. Našel jsem třeba https://www.openxava.org/ , od pohledu mi to přijde dobrý. Máte s něčím podobným někdo dobré zkušenosti?
Název: Re:GUI tookit pro Linux a Windows
Přispěvatel: Ondrej Nemecek 03. 04. 2020, 17:08:15
Mám vám to nakreslit?
Budu dělat digitální kartotéku:
Přehled Karet (vlastní Widget?), Kde bude:
Název karty, její nějaké vlastnosti a tlačítka s otevřením, podnabídkou s exportem...
Když se to otevře, bude tam rozhraní pro úpravu.
Kartu můžete mít že šablony, kde jsou vlastnosti. Pokud to v šabloně dovolíte, lze i individuálně přidávat.

Teď mírně uvažuju nad tím, že by se mi možná hodilo něco podobného, koukal jsem po nástrojích, které umožňují takový typ aplikace (open source user-friendly frontend pro DB s master-detail rozhraním) udělat s minimálním úsilím. Našel jsem třeba https://www.openxava.org/ , od pohledu mi to přijde dobrý. Máte s něčím podobným někdo dobré zkušenosti?

No to „udělat s minimálním úsilím“ je docela relativní. Třeba Openxava (https://www.openxava.org/) je komplexní nástroj a pro nasazení to musíte nejspíš docela nastudovat.

Mě zaujal ještě Apache Isis (https://isis.apache.org/). Ten mi přišel hodně zajímavý a jednoduchý sample jsem rozběhal za chvíli. Na druhou stranu, pokud znáte libovolný toolkit, základní master-detail aplikaci máte také hotovou za chvíli. Spíš jde o ten další level, kdy chcete aby to našeptávalo hodnoty, validovalo, kontrolovalo kardinalitu, práva atd. Tam potom ta komplexita dost rychle vystřelí nahoru... Pro tyhle účely se hodí nástroj, který na tyto situace pamatuje. Ale zase ho musíte nastudovat. Řekl bych, že platí něco jako zákon zachování pracnosti :-D  Takže to není jen o toolkitu...