[QGHG-it-dev-list] Zadatak 6 - konstruisanje GUI-ja

Marko Vojinovic vmarko at ipb.ac.rs
Tue Apr 5 21:05:29 CEST 2022


Ok, evo jedan update vezano za gui --- pre svega da Jaroslav ima bolji osecaj sta treba da napravi, a i za vas ostale ako imate neku ideju ili sugestiju da se nesto izmeni ili doda.

Vodio sam se onim "jedna slika 1000 reci", pa sam nacrtao mock-up cele ideje kako gui treba da izgleda i koje elemente da sadrzi. Slika je u attachment-u.

Nisam mnogo spretan sa crtanjem, ali na slici treba da bude ilustracija svih glavnih elemenata gui-ja. Osnovna aplikacija je "Triangulator GUI" prozor --- on ima menije na vrhu, status bar na dnu, i unutra u prozoru tabelu sa spiskom instanciranih kompleksa. Svaki kompleks se instancira bilo ispocetka (pomocu "File -> New" menija), ili se ucita neki postojeci iz fajla (pomocu "File -> Open" menija). Elementi tabele su self-explanatory, s tim da se u "Actions" koloni nalaze "dugmici" kojima se pozivaju odgovarajuce akcije.

Dugme "Listing" treba da otvori odgovarajuci "Triangulator listing" prozor za dati kompleks. Dva takva su nacrtana levo, i u njima se nalaze ispisane tablice sa simpleksima datog kompleksa. Dugme "Visualiser" otvara "Triangulator visualiser" prozor (levo dole), u kome se nalazi wireframe-slika celog kompleksa, kao i slajderi kojima se kontrolisu raznorazni parametri za embedding i crtanje (tu temu cemo detaljnije naknadno o tom potom).

U Listing prozorima, pojedinacni simpleksi na spisku (brojevi u zagradama) treba da budu klikabilni. Klikom na neki simpleks treba da se otvori njegov "Triangulator Inspector" prozor. Dva takva prozora su nacrtana desno, za dva razlicita simpleksa. Inspector treba da prikaze sve podatke koji se znaju o datom simpleksu, na slici sam pokusao da to ilustrujem. Simpleksi u "Neighbors" tablici treba takodje da budu klikabilni, i treba da otvore nov Inspector prozor, isto kao i iz Listing prozora. Osim ovoga, Inspector prozor sadrzi nekoliko dugmica za akcije koje su moguce nad datim simpleksom --- editovanje vrednosti boja, dodavanje/brisanje novih boja, Pahnerove poteze, i sve ostale operacije nad simpleksima koje cemo kasnije jos praviti.

Konacno, dole u sredini se nalazi i "Triangulator log" prozor, koji treba da prikazuje log-fajl za celu datu sesiju. To sluzi jedino za ispisivanje i pregled log-a, i treba samo da se azurira redovno kad se nesto novo doda u log. Prozor za log je najzgodnije otvarati po potrebi pomocu "View -> View log" menija glavnog prozora.

To je okvirno to. Naravno, tu treba da bude i gomila kojekakvih dialog-box-eva za otvaranje fajla, snimanje, dodavanje boja, provere "are you sure", itdisl. Ali osnovni dizajn gui-ja se sastoji od ovih pet tipova prozora koje sam nacrtao. Kasnije, kako budemo dodavali raznorazne funkcionalnosti, kacicemo na ove prozore jos dodatne raznorazne dugmice, slajdere, ikonice, ovo, ono., ali generalna struktura treba da izgleda ovako.

Javite utiske, i ako imate bilo kakva pitanja ili sl.

:-)
Marko


Dr. Marko Vojinovic
Group for Gravitation, Particles and Fields
Institute of Physics
University of Belgrade
======================
home page: www.markovojinovic.com
e-mail:    vmarko at ipb.ac.rs



On Sun, 3 Apr 2022, Marko Vojinovic wrote:

>
> Odlicno, super! Uspeo sam da import-ujem fajlove u qtcreator projekt, i rade 
> mi build i run bez problema. Upload-ovacu ove fajlove na GitHb, sve sto se 
> tice gui-ja ce da bude u direktorijumu "gui" na GitHub-u.
>
> Posto ovaj proof-of-concept kod radi lepo, moj predlog je da sad pocnes da 
> implementiras onu funkcionalnost (1)-(3) iz prethodnog e-mail-a.
>
> Za pocetak, kad korisnik klikne na File -> New, treba da se otvori 
> dialog-box, gde bi iz drop-down liste izabrao koji pocetni kompleks zeli da 
> instancira, koja mu je dimenzija i kako ce da se zove (integer D i string 
> "name" u klasi SimpComp). Dialog-box treba da ima standardne tastere "Ok" i 
> "Cancel" na koje korisnik klikne kad popuni podatke. Onda na osnovu tih 
> podataka treba pozvati odgovarajucu seed f-ju, obojiti ceo rezultujuci 
> kompleks UniqueID bojama, i ispisati ga pomocu print_compact u ovaj prozor sa 
> tekstualnim poljem. Taj prozor treba da nosi ime kompleksa (string name) koje 
> je korisnik zadao, da bi se razlikovao od ostalih prozora za druge komplekse 
> (korisnik moze da ih instancira vise ako zeli).
>
> Takodje, bilo bi dobro da tekstualno polje u tom prozoru menja svoje 
> dimenzije kada se prozor resize-uje, tako da "prati" velicinu samog prozora. 
> Ako sadrzaj polja ne moze da stane u polje, treba da se pojave horizontalni i 
> vertikalni scroll-bar-ovi, da sadrzaj u polju moze da se pomera tamo-amo.
>
> Posle cemo da razradjujemo dalje ceo gui interfejs, imam jos neke ideje za 
> taj bazican izgled.
>
> Sve relevantne klase i f-je iz biblioteke koje se pozivaju iz gui-ja su 
> deklarisane u triangulator.h fajlu, pa prosto njega treba da include-ujes u 
> gui, i tokom kompajliranja da link-ujes biblioteku triangulator-library.a 
> (sto je zamisao trajnog resenja), ili da kompajliras i biblioteku i gui u 
> jednom mahu, ako ti je lakse (zasad). Samo obrati paznju da konfigurises ceo 
> direktorijum u kome je triangulator.h kao putanju za include fajlove, jer ce 
> triangulator.h interno da include-uje gomilu drugih .h fajlova, pa da 
> kompajler ume da nadje sve njih.
>
> Kasnije cemo da napravimo Makefile, kako za gui tako i za biblioteku, da 
> automatizujemo ceo build postupak itd. Moj qtcreator vec pravi neki Makefile, 
> ali je taj veoma podesen za Linux platformu i moju lokalnu strukturu 
> direktorijuma, pa nije zgodan, nego cemo da napravimo jedan novi "kako 
> treba", kad dodje vreme...
>
> :-)
> Marko
>
>
> Dr. Marko Vojinovic
> Group for Gravitation, Particles and Fields
> Institute of Physics
> University of Belgrade
> ======================
> home page: www.markovojinovic.com
> e-mail:    vmarko at ipb.ac.rs
>
>
>
> On Thu, 31 Mar 2022, Jaroslav Blagojevic wrote:
>
>> Evo, gui za početak.Qt downloadujete sa https://www.qt.io/download -> go 
>> open source -> download the qt online installer
>> Treba vam qtcreator, qtdesigner, ja sam instalirao qt 6.2.3 biblioteke. 
>> Može sve (~30 gb), a dovoljno je i qtcore, qtwidgets, qtgui, a trebaće nam 
>> i qt opengl ili qt 3d.
>> Takođe vam treba nalog https://login.qt.io/login -> Create Account. Ja im 
>> nisam ostavio telefon.
>> Avast prijavljuje virus za qtdesignstudio, na webu kažu da je to uglavnom 
>> lažno obaveštenje. U svakom slučaju vam ne treba.
>> 
>> Posle toga napravite novi projekat. U Visual Studio-u 2019, instalirate na 
>> extensions -> manage extensions -> qt visual studio tools (izaberite 
>> putanju do msvc2019_64\6.2.3\bin qmake).
>> Posle toga možete New Project -> kucate qt u search bar-u -> qt widgets 
>> application. Za Linux pretpostavljam da može qtcreator, napravite novi qt 
>> widgets/qmake projekat. Kod u prilogu
>> (pazite da ne prekopirate preko triangulator-ovog main.cpp), kopirajte 
>> preko toga što ste napravili.
>> 
>> Pozdrav,
>> 
>> Jaroslav
>> 
>> 
>> 
>> On Fri, Feb 11, 2022 at 11:01 PM Marko Vojinovic <vmarko at ipb.ac.rs> wrote:
>>
>>       Poceti sa konstrukcijom GUI-ja. Za pocetak, umesto crteza na ekranu, 
>> GUI treba da realizuje sledece mogucnosti:
>>
>>       (1) Da meni opcija File -> New pita korisnika da izabere 
>> instanciranje: duzi, trougla, tetraedra, D-simpleksa, D-sfere (uz dopunsko 
>> pitanje za vrednost D), i na osnovu
>>       korisnikovog izbora da pozove odgovarajucu seed f-ju.
>>
>>       (2) Kada se seed f-ja izvrsi, obojiti kompleks bojom UniqueID (f-ja 
>> UniqueIDColor::colorize_entire_complex() iz zadatka 2), pa zatim otvoriti 
>> manji prozor (za novo-kreirani
>>       kompleks), i u tom prozoru ispisati redom sve k-simplekse metodom 
>> slicno kao u zadatku 4 (ali bez ispisivanja podsuseda). Tablicu 
>> organizovati rastuce po nivoima k, slicno
>>       kao drvo direktorijuma i fajlova u file-manageru (da spisak simpleksa 
>> nivoa k bude moguce "kolapsirati" i "ekspandirati" kliktanjem).
>>
>>       (3) Svaki simpleks ispisan na spisku u prozoru iz (2), npr. 
>> "(1-2-4)", treba da bude klikabilan --- kliktanje na njega treba da otvori 
>> tzv. "inspector" prozor za taj
>>       konkretni k-simpleks, u kome ce da budu pobrojane sve boje i njihove 
>> vrednosti koje taj k-simpleks nosi. Za sada su UniqueID i Boundary jedine 
>> boje koje ce se pojaviti na
>>       tom spisku, ali kasnije cemo dodavati i druge boje, pa algoritam 
>> treba prosto da prodje kroz spisak svih boja i sve ih pobroji jednu ispod 
>> druge.
>>
>>       Za inspektor-prozor planiramo dodatne funkcionalnosti za kasnije 
>> (menjanje vrednosti boja, ispis tablice suseda datog k-simpleksa, dugmad za 
>> primenjivanje raznih f-ja nad
>>       simpleksom, itd). Sa druge strane, prozor u kome ispisujemo tablicu 
>> svih simpleksa u kompleksu nece imati neku narocitu dodatnu funkcionalnost 
>> (koristicemo ga dok ne
>>       implementiramo prozor koji ce da crta ceo kompleks na ekranu, umesto 
>> ispisivanja tablice simpleksa).
>> 
>>
>>       :-)
>>       Marko
>> 
>>
>>       Dr. Marko Vojinovic
>>       Group for Gravitation, Particles and Fields
>>       Institute of Physics
>>       University of Belgrade
>>       ======================
>>       home page: www.markovojinovic.com
>>       e-mail:    vmarko at ipb.ac.rs
>> 
>>
>>       --
>>       QGHG-it-dev-list mailing list
>>       QGHG-it-dev-list at ipb.ac.rs
>>       http://mail.ipb.ac.rs/mailman/listinfo/qghg-it-dev-list
>> 
>> 
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Triangulator-GUI-mockup.jpg
Type: image/jpeg
Size: 197938 bytes
Desc: 
URL: <http://mail.ipb.ac.rs/pipermail/qghg-it-dev-list/attachments/20220405/5cf30a52/Triangulator-GUI-mockup-0001.jpg>


More information about the QGHG-it-dev-list mailing list