GUIn teko

Saku-foorumi » Uusi sukupolvi: MorphOS » Ohjelmointi » Viestit 2004 » GUIn teko « Edellinen Seuraava »

Kirjoittaja Viesti
 

JPQ
Maanantaina, 5. heinäkuuta, 2004 - klo 4.11:   
MOS softaan kannattanee tehdä mui gui ehkäpä ? mutta voiko sen tehdä Amigaosin MUI työkaluin ? Tosin gadtools näyttää helpommalta koodata ehkä mutta se ei oikein varmaan näytä kivalta. Eli kaiken maailman gui vinkkejä kaipaan ? Ison guin käsin naputtelukin on tosi työlästä kuten tietänette. Eli mikä on nautinnollisin tapa tehdä isohkoon/keskisuureen MorphOS ohjelmaan gui. ja C/C++ kääntäjänä SDKoon GCC tuskin kokeilen VBCC:tä...

 

hooligan/dcs
Maanantaina, 5. heinäkuuta, 2004 - klo 7.21:   
GTools ei näytä kivalta? Shock, horror, stop press ja sitä rataa =)

 

Jupp3
Maanantaina, 5. heinäkuuta, 2004 - klo 14.03:   
JPQ:

Tassa threadissa on linkki suht. yksinkertaiseen MUI-esimerkkiohjelmaan:

[Edit: Linkki. --Moderaattori]

 

itix
Maanantaina, 5. heinäkuuta, 2004 - klo 15.56:   
MUI.

 

JPQ
Maanantaina, 5. heinäkuuta, 2004 - klo 16.59:   
hooligan/dcs: sinua siis pelottaa Gadtools oukei.:) minua ei (jos hyvintehty mutta myönnän MorphOSissa natiivi softassa sen käyttö olisi vähän hassua) tosin muita yritän tutkia.
kaikki: onko sliderin teko paha homma muilla ?, listviewin ? , tekstin syöttö kentän ? täytyy kait mui esimerkki ja muin ohjeet tulostaa. ei oikein kätevästi mahdu käsille vaikka yritänkin uskoisin 1024x768 tilassa.:) Tosin virtuaali työpöydällähän osittain asia ratkennee...

 

itix
Maanantaina, 5. heinäkuuta, 2004 - klo 17.22:   
Slider:

obj = MUI_MakeObject(MUIO_Slider, 0, minvalue, maxvalue);

String gadget:

obj = MUI_MakeObject(MUIO_String, 0, maxlen);

Listview:

obj = ListviewObject, MUIA_Listview_List, ListObject, End, End;

(Listviewin tekeminen on hiukan mutkikkaampaa koska se koostuu kahdesta eri komponentista: itse listasta ja sen 'kehyksestä'.)

Listview ilman kehystä:

obj = ListObject, End;

Piece of kakunpala.

 

miksuh
Maanantaina, 5. heinäkuuta, 2004 - klo 17.53:   
JPQ: Pidä suosiolla näpit erossa niistä MUI GUI:n generointisoftista. Ne tekee ihan hirveetä sotkua koodista, eikä ne edes tue kuin lähinnä niitä MUI:n perusluokia, jos esim Nlist:a NlistTree:tä tai jotain toolbarluokkaa halua käyttää, niin joudut kuitenkin koodamaan homman käsin, koska MUIBuilderi ei niitä tue.

Aluksi voi ehkä tuntua helpolta käyttää niitä, mutta sitten jos haluat esim lisätä käyttöliitymään toolbarin, niin on paljon tuskasempaa yrittää lisätä sitä MUIBuilderin generoimaan koodiin, kun itse tekemääsi.

 

JPQ
Maanantaina, 5. heinäkuuta, 2004 - klo 17.54:   
itix:
ja löytyykös noiden tiedot jotenkin kaivaen obj muuttujasta/pointterista eli niihin syötettyjä arvoja (sliderin asento siis ja stringi gadgetin sisältö saakos sen numerona helposti??? numero eli tieto mitä vaikka double float,tai long tietotyyppi tallettaa???) tarkoitan.
PS. ei tämä niin pahalta vaikuta kuin ohjeista katsottuna. Asiat kun voi monella tapaa sanoa.

 

miksuh
Maanantaina, 5. heinäkuuta, 2004 - klo 18.07:   
JPQ: MUI luokasta luodun objektin attribuuttin arvon voi lukea GetAttr() kkutsulla. Esim String gadgetin sisältämän tekstin saa näin:

GetAttr(string, MUIA_String_Contents, &result);

tuossa string on String gadget objekti ja MUIA_String_Contents on Stringgadget luokan attribuutti. Kunkin luokan attribuutit löytyy luokan dokumentaatiosta.

attribuutti = atribuutti. Meinaa mennä suomi ja englanti sekasin :)

Vastaavasti attribvuutti asetetaan SettAttrs():lla. Homman voi myös tehdä get():llä ja set():llä. Esim ikkunan aavaaminen:

set(wnd, MUIA_Window_Open, TRUE);

Tuo asettaa wnd osotinmuuttujan osottaman ikkuna-objektin MUIA_Window_Open atribuutin arvoksi TRUE. Eli aukasee ikkunan.

Doh. GetAttr():n kohdalla taisi attribuutti ja objekti vaihtaa paikkaa vahingossa.

 

Frn
Tiistaina, 6. heinäkuuta, 2004 - klo 10.13:   
Samaa mieltä miksuhin kanssa noista generointisoftista. Sitä paitsi jos tietää perusasiat olioista, on MUI-widgettejä niin helppo väsätä (kuten itix demosi), että eipä tuollaiselle rad-toolille ole oikein edes järkevää käyttöä. Tosin kunnon (virallinen) MUI-tutorial voisi olla katalysaattori MorphOS-kehitykseen. Liekö noita tehtykin?

 

JPQ
Tiistaina, 6. heinäkuuta, 2004 - klo 16.26:   
Frm: autodocit on mutta ainakaan siellä virallisella kehittäjien sivulla materia jää muin osalta siihen viimeksi kun kävin enkä usko että tilanne on muuttunut.:)
Kaikki: oukei yritän generaattoreista pysyä erossa joten tulostanen tämän threadin ja ne MUI dokut lisäksi sen esimerkin. ja Checkbox tyylin gadgetinhan luulisi olevan helppo ? entäs onko helppo se gadgetti jolla voi valita värin ? siis helppo jos sovimme nyt että ListView on vaikea. :)

 

miksuh
Tiistaina, 6. heinäkuuta, 2004 - klo 16.57:   
No Checkmark on helppo :) Yksinkertasimmillaan tälleen siis:

Jossain kohtaa GUI-puussa:
...
...
Child, obj = CheckMark(TRUE),
...
...

TRUE on alkuarvo checkmarkille ja kertoo, että se on valittuna.

Tuo on siis itseasiassa makro, homman voi siis tehdä toisinkin. Kannattaa lukea mui.h include fileä, se on kommentoitu ja se sisältää useita ohjelmointia helpottavia makroja.

JPQ: Joo. MUI:n lista-luokat kuten List ja NList on MUI-luokista sieltä vaikeimmasta päästä ymmärtää, itsellenikään noi ei ollut oikein selkeät aluksi. Varsinkin, kun monisarakkeisen listan tekeminen vaatii aliluokan (subclass) tekemistä List:stä. Eli yksisarakkeisen listan tekeminen on yksinkertasta, monisarakkeisen listan tekeminen vaatii hiukka enemmän. ListView ei itsessään ole vaikea, List on se mikä voi tuottaa aluksi harmaita hiuksia. Sama koskee NListView:ä ja Nlist:ä.

ListView, ja NListView, toimii vain kontainerina eli säiliönä listaluokan objektille. Lisäksi noi luo scrollbarit.

 

itix
Tiistaina, 6. heinäkuuta, 2004 - klo 17.46:   
"Varsinkin, kun monisarakkeisen listan tekeminen vaatii aliluokan (subclass) tekemistä List:stä."

No ei kyllä vaadi.

 

miksuh
Tiistaina, 6. heinäkuuta, 2004 - klo 18.04:   
Eh joo, totta :)

Olen itse niin tottunu tekeen noin NList:n kanssa, että en enää edes muistanut että onnistuu se ilman aliluokan tekemistäkin. Oma ConstructHook, DestructHook ja DisplayHook listalle on ne mitkä riittää. Vähintäänkin DisplayHookki.

Itse pyrin vaan hookkeja välttään kun ruttoa nykyään, unohtu ihan et se käy ihan vain noinkin :)

No jokatapauksessa monisarakkeinen lista on hiukka hankalampi. Joo eli selvennyksenä:

Oma DisplayHook on se mitä tarvitaan väkisin, muuten listasta tulee yksisarakkeinen. Display hookki siis muotoilee ja asettelee sarakkeisiin kamat.

Construct ja Destruct hookkeja tarvitaan, jos listaan kamaa lisätessä pitää varata muistia ja kamaa poistaessa vapauttaa muistia.

Saman voi tehdä NList:n kohdalla aliluokkana ilman hookkeja, mutta PAKKO se ei ole.

 

JPQ
Tiistaina, 6. heinäkuuta, 2004 - klo 20.34:   
Onneksi nyky ideoihini riittää yksi sarakkeinen listview jos sekään aluksi tarpeen.

Jupp3: en vaan jostain syystä löydä sitä linkkiä jossa lukee here. :( siis tällä ieellä enkä jaksane sitä amylla kaivaa kun tulostus menee kuitenkin muulla alustalla... olisi silti kiva löytää tuo.. [...] löysin sen vihdoin mutta hakusanana oli it (ympärillä välit...)

Kaikki: toivotaan jo paperilla olevien (ei läheskään kaikki...) ohjeiden plus tuon koodin ja näiden selitysten avulla saan edes jonkunlaisen mui guin tehtyä. edes kokeeksi sellaisen kun painaa nappia dos ikkunaa tulostuu helloworld.

 

Moderaattori
Tiistaina, 6. heinäkuuta, 2004 - klo 23.38:   
Kasapäin saman kirjoittajan peräkkäisiä viestejä yhdistetty ketjusta.

 

JPQ
Keskiviikkona, 7. heinäkuuta, 2004 - klo 5.58:   
Melkeinpä eniten iloa tuntuu olevan näissä dokuissa tästä threadista ja tuosta koodista jonka kovalla työllä löysin.:) PS. ovat ihmis läheisimpiä.

Miten muuten MUI latoo noi gadgetit ikkunaan ? ihan tuntui ettei calculator koodissa ollut lainkaan nappien kordinaatteja ? tosin ymmärrän koska muihan automaagisesti fontteihin mukautuva.:) mutta silti olisi syytä saada itse päättää kokonaisuuden ulkonäöstä.:):)

 

miksuh
Keskiviikkona, 7. heinäkuuta, 2004 - klo 15.32:   
MUI dokumentaatiosta:

"Group class is responsible for the complete layout of a MUI window. A group may contain any number of child objects, maybe buttons, cycle gadgets or even other groups.

Some attributes of group class define how the children of a group are layouted. You can e.g. tell your group to place its children horizontally (in a row) or vertically (in a column). Since every MUI object knows about its minimum and maximum dimensions, group class has everything it needs to do that job.

More sophisticated layout is possible by assigning different weights to objects in a group or by making a group two-dimensional.

Beneath the layout issues, a group object passes attributes and methods through to all of its children. Thus, you can talk and listen to any child of a group by talking and listening to the group itself."

 

miksuh
Keskiviikkona, 7. heinäkuuta, 2004 - klo 15.55:   
Kannattaa lukea Group-luokan dokumentaatio.

Esim:

Child, HGroup,
Child, check1 = CheckMark(TRUE),
Child, check2 = CheckMark(TRUE),
Child, check3 = CheckMark(TRUE),
Child, VGroup,
str1 = MUI_MakeObject(MUIO_String, 0, maxlen);
str2 = MUI_MakeObject(MUIO_String, 0, maxlen);
str3 = MUI_MakeObject(MUIO_String, 0, maxlen);
End,
End,

Tuossa puussa on ensin "uloimpana" Group-luokan objekti, joka luo käyttöliittymään pystysuoran namiskaryhmän (HGroup). Ikkunaan tulee siis allekkain kolme checkmarkkia ja vaakasuora ryhmä (VGroup). Vaakasuora ryhmä sisältää vierekkäin kolme stringikenttää.

Eli lopputulos on tämmöinen:

check1
check2
check3
str1 str2 str3


HGroup ja VGroup on taas nitä ohjelmointi aelpottavia juttuja ja homman voi kirjottaa toisinkin.

Kannattaa tosiaan lukea Group-uokan autodocit.

 

miksuh
Keskiviikkona, 7. heinäkuuta, 2004 - klo 16.51:   
No niimpä tietenkin. Tyypillistä säkää. Aina perkl sama juttu :P

Niinkun mä olin katsovinani että kaikki on oikein. Mutta tottakai jotain meni pieleen kuinkas muutenkaan :P


Siis VGroup on pystysuora ja HGroup on vaakasuora. Eli tossa esimerkissä ne on väärinpäin. Ulommassa lohkoss pitää siis olla VGroup ja sisemmässä HGroup. Sillon lopputulos on toi minkä sanoin.

 

miksuh
Keskiviikkona, 7. heinäkuuta, 2004 - klo 17.09:   
Otetaas ihan uusiksi. Kiireessä vaan copypastesin noi stringikenttärivit itix:n kommentista enkä kattonu sen tarkemmin.

Eli:

Child, VGroup,

Child, check1 = CheckMark(TRUE),
Child, check2 = CheckMark(TRUE),
Child, check3 = CheckMark(TRUE),
Child, HGroup,

Child, str1 = MUI_MakeObject(MUIO_String, 0, maxlen),
Child, str2 = MUI_MakeObject(MUIO_String, 0, maxlen),
Child, str3 = MUI_MakeObject(MUIO_String, 0, maxlen),
End,
End,


Nyt näyttää oikeemmalta. Täälä sais kyllä ola rekisteröinti, ja mahdopllisuus oman postauksen muokkaamiseen, ei tarviis korjaus viestejä lähetellä :)

 

itix
Keskiviikkona, 7. heinäkuuta, 2004 - klo 17.50:   
Jep, MUI GUI ei käytä koordinaatteja :)

 

Thoriel
Keskiviikkona, 7. heinäkuuta, 2004 - klo 18.25:   
Sen oman viestinsä voi myös lukea pariin kertaan ajatuksella läpi ennen kuin postaa. Ei tarvitse sitten muutaman minuutin päästä pistää uutta viestiä perään. Hyvin näyttää ilman jälkimuokkailuja muilta onnistuvan... (:

 

miksuh
Keskiviikkona, 7. heinäkuuta, 2004 - klo 18.28:   
Tämä:

"More sophisticated layout is possible by assigning different weights to objects "

tarkottaa sitä, että objekteille voi antaa painoarvon, joka vaikuttaa siihen kuinka paljon namiska saa tilaa ikkunasta suhteessa muihin namiskoihin.

Esim jos on vierekkäin kaksi stringikenttää, niin sopivalla painotuksella voi tehdä esim vasemmasta stringikentästä aina suhteessa leveämmän, kuin oikeasta. Jos vasemman halutaan olevan 2x niin leveä kuin oikea, niin sillon voi antaa vasemman painoksi esim 200 ja oikean 100.

Tuo tehdään asettamalla objektin esim MUIA_HorizWeight, MUIA_VertWeight tai MUIA_Weight atribuutille sopiva arvo. MUIA_Weight asettaa sekä pystysuuntasen, että vaakasuuntasen painon kerralla.

Enemmän tosta voi lukea MUI:n Area-luokan dokuista.

 

itix
Keskiviikkona, 7. heinäkuuta, 2004 - klo 18.44:   
JPQ: Siinä taskulaskin esimerkissä ColGroup(4) määrää nappuloiden sijoittumisen. Kokeile vaihtaa siihen joku toinen luku (esim. 2) niin näet miten GUI:n layout muuttuu.

 

JPQ
Keskiviikkona, 7. heinäkuuta, 2004 - klo 21.46:   
miksuh: kiitos mukavempi tapa kuin äkkiä lukien luulisi.(koodia
katsoen)
itix: täytyy katsoa.:)
kaikki: täytyy tässä huolella miettiä vielä onko jotain
hämärää........(että voisi sitten kun kaikki olennainen on selvää
tulostaa uusiksi)

 

JPQ
Sunnuntaina, 11. heinäkuuta, 2004 - klo 5.03:   
Sellaisen asian ainakin löysin millähän tavalla MUIlla tai muulla
tavalla onnistusi näyttää (olisiko se GuiGfx palikka ainoa) mui guin
kanssa samassa ikkunassa vaikkapa kaksi 24bit kuvaa jotka muutetaan
ruudun väri määrälle automaattisesti ? (vain esitystä varten siis) eli
vähän niinkuin efektien preview puolta mietin... no tapoja niiden
totetusta siis saa neuvoa.

 

itix
Sunnuntaina, 11. heinäkuuta, 2004 - klo 12.24:   
dtpic.mui voi olla etsimäsi.

 

JPQ
Sunnuntaina, 11. heinäkuuta, 2004 - klo 12.33:   
itix: jaa a täytyy tutkia osaakos tuo sitten näyttää vaikkapa muistissa olevan taulukon jonka sisältö on muotoa RGBRGBRGB... jos ei niin ei kelpaa.:(:(:(

 

JPQ
Sunnuntaina, 11. heinäkuuta, 2004 - klo 12.35:   
itix: missäs tuon on ?

 

itix
Sunnuntaina, 11. heinäkuuta, 2004 - klo 18.24:   
Hmm, näköjään sille ei ole dokumentaatiota. ImageObject sitten (image.mui).

 

JPQ
Sunnuntaina, 11. heinäkuuta, 2004 - klo 19.14:   
itix: kuuluko tuo morphosiin vai jos on lisäpala mistä löytyy ?

 

itix
Sunnuntaina, 11. heinäkuuta, 2004 - klo 19.23:   
Molemmat (dtpic.mui ja image.mui) kuuluvat MorphOS:iin. dtpic.mui dokumentaatio kuitenkin puuttuu, mutta käytä tuota image.mui luokkaa.

Olikohan se jotenkin näin:

obj = ImageObject, MUIA_Image_Spec, "5:PROGDIR:data/omakaunispärstä.png", End;

 

JPQ
Maanantaina, 12. heinäkuuta, 2004 - klo 16.23:   
itix: hymm ei kelvanne siis ainakaan. Eli haluaisin annetun muistialueen tai taulukon joka on RGB triplettejä (eli joko muistissa/taulukossa peräkkäin R,G,B arvot tai sitten R,G,B ja yksi tyhjä alusta) näyttää ruudulla. en ole varma löytyikö toisellekaan dokumentaatiota jos se on joskus tarpeen.:)

 

itix
Maanantaina, 12. heinäkuuta, 2004 - klo 16.36:   
Sun täytyy tehdä oma custom class. Mutta se kyllä vaatii hiukan syvempää tuntemusta BOOPSIsta.

Tai sitten teet niin että blittaat RGB-datan bitmappiin ja annat sen parametriksi Bitmap.mui-luokalle.

 

JPQ
Maanantaina, 12. heinäkuuta, 2004 - klo 16.58:   
itix: menee jälkimäiseksi jos hommastani tulee jotain kun tämä gui koodaus tuntuu muutenkin ikävän hikiseltä.:(
ps. surkean vähän mahtuu tavaraa 1152x864 (kun 1280x1024 aivan liikaa monitorilleni ei oikein tunnu kivalta 60hzillä...)

 

itix
Maanantaina, 12. heinäkuuta, 2004 - klo 17.37:   
MUI vaatii totuttelua ja oppimista mutta loppupeleissä se on parempi kuin esimerkiksi delphin kälyiset viritelmät.

 

JPQ
Maanantaina, 12. heinäkuuta, 2004 - klo 18.07:   
itix: millaisia ne on ?
Jupp3: jos calculator on sinun saako sitä puukottaa tarpeisiinsa ? jos ei ole kenenkä että voisin häneltä kysyä...

 

itix
Maanantaina, 12. heinäkuuta, 2004 - klo 18.13:   
Calculator on mun tekemä ja sitä saa muuttaa ihan vapaasti. Saat vaikka myydä lähdekoodin jollekin jos haluat :)

 

JPQ
Maanantaina, 12. heinäkuuta, 2004 - klo 18.50:   
itix: selvä. Perus runko on se työläin ja tuo on perus runkoksi oiva. Ja saanet jos haluar creditin sofaan jos sen saan joskus jako kuntoon.(Ettei jää henkilö kohtaiseksi)

Lisää viestisi tähän
Viestisi:
Käyttäjätunnus: Postitus informaatiota:
Tämä on yksityinen keskustelupalsta. Vain rekisteröidyt käyttäjät ja moderaattorit voivat postittaa tänne.
Salasana:
valinnat: Aktivoi URL:t automaattisesti tässä viestissä
Toimenpide: