[{"text_idx": "#000000", "text": "ETEN - in EnglishET - eesti keelesTeenusedTeenusedIoT lahenduste arendusElektroonika arendusAndroid & iOS mobiilia\u0308pidTarkvaraarendusMasinna\u0308gemineTootedTehtud to\u0308o\u0308dTo\u0308o\u0308toadBlogiMeistKontakt Eesti keelesIn English"}, {"text_idx": "#000002", "text": "TeenusedIoT lahenduste arendusElektroonika arendusAndroid & iOS mobiilia\u0308pidTarkvaraarendusMasinna\u0308gemine"}, {"text_idx": "#000003", "text": "Elu ja tehnika meie u\u0308mber on ta\u0308itunud arvutustehnikaga. Mikrokontrollereid vo\u0303ib leida isegi kohtadest kus nende olemasolu ei oska isegi kahtlustada. Fu\u0308u\u0308siliste nuppude asemel seadmete paneelidel on virtuaalsed nupud arvutiekraanil. Seepa\u0308rast on sageli vajadus koostada seadmele graafilist kasutajaliidest. Suurte su\u0308steemide juhtimiseks kasutatakse keskjuhtimissu\u0308steemi tarkvara (SCADA) kuid va\u0308iksemate seadmetele on sageli vaja kordades lihtsamat ja odavamat lahendust. Visualiseerimisrakenduste koostamiseks on saadaval va\u0308ga mitmesuguseid kommertsprogramme kui ka vaba tarkvara. Va\u0308limuselt ku\u0308llaltki sarnased objektid vo\u0303ivad tehnilise u\u0308lesehituse poolest olla a\u0308a\u0308rmiselt erinevad. Seepa\u0308rast andmete otse teisendamine MFC, Qt, GTK+ jms. kasutajaliideste vahel enamasti ei o\u0303nnestu. Ku\u0308ll aga saab vajadusel teha kiiresti ta\u0308iesti uue sarnase va\u0308limusega kasutuajaliidese teises keskkonnas ning sellega seeja\u0308rel siduda oma rakendusprogrammi funktsioonid. Graafiliste kasutajaliideste disain kui tehniline kunstiala upub mo\u0303nedes maades tarkvara- ja a\u0308rimeetodite patentide \u201cma\u0308dasohu\u201d milles sageli toimuvad pealtna\u0308ha hullumeelselt kallid ja ta\u0308iesti ajuvabad lahingud. Kas see osa varast millest tarkust u\u0308ha va\u0308hemaks ja\u0308a\u0308b tuleks meilgi inglise keele eeskujul u\u0308mber nimetada pehmeks varaks (soft-ware)?"}, {"text_idx": "#000004", "text": "Omatehtud rakenduste jaoks tuleb kasutajaliides u\u0308ldjuhul ise koostada sest sobivat valmiskujul ei leia. Siinkohal heidame pilgu graafilise kasutajaliidese koostamisele GIMP Toolkit (GTK+) vahenditega. Programmeerimise lihtsustamiseks on ta\u0308napa\u0308eval kasutusel graafilised vahendid kasutajaliideste koostamiseks, u\u0308heks selliseks on Glade User Interface Designer. Kui programmi sisu on la\u0308bimo\u0303eldud siis on vo\u0303imalik koostada ja disainida sobiv kasutajaliides. Selleks on kaks vo\u0303imalust: a) Programmi ka\u0308skudega, b) Graafiliste to\u0308o\u0308vahenditega. Glade User Interface Designer koostab kasutajaliidese kohta XML vormingus faili mis laetakse hiljem kasutajaprogrammis."}, {"text_idx": "#000005", "text": "To\u0308o\u0308 kasutajaliidese graafilises disainikeskkonnas vo\u0303ib toimuda na\u0308iteks ja\u0308rgnevalt"}, {"text_idx": "#000006", "text": "Ko\u0303ige alla tuleb valida midagi alajaotisest \u201cToplevels\u201d. Valige na\u0308iteks mo\u0303ni lihtne aken (Window).Ma\u0308a\u0308rata objekti miinimumsuurus tema to\u0308o\u0308lehelt \u201cCommon\u201d -> \u201cWidth reguest\u201d ja \u201cHeight request\u201d.Paljudel juhtudel ollakse harjunud programmi peamenu\u0308u\u0308ga akna u\u0308laservas. Menu\u0308u\u0308 ja olekuribade lisamine akna u\u0308la- ja alaserva eeldab et me jagame akna vertikaalselt mitmesse osasse. Muidugi on vo\u0303imalik kasutajaliideseid teha ka ilma menu\u0308u\u0308deta. Vo\u0303imaliku kasutajaliidese funktsionaalsus on sellegipoolest su\u0308gavalt kinni kasutajate harjumustes mida on \u201epeavoolu\u201c kommertsvara poolt meisse juurutatud.Osadeks jagamiseks saab kasutada valikut \u201cBox\u201d alajaotisest \u201cContainers\u201d. Vaikimisi jagataksegi kolmeks vertikaalosaks. Vaikimisi jagatakse aken kolme osasse millest u\u0308lemist osa saab kasutada menu\u0308u\u0308ribale ja alumist osa olekuribale.Menu\u0308u\u0308 leiab alajaotisest \u201cContainers\u201d nime alt \u201cMenu Bar\u201d (piktogrammil on kiri File).Vaikimisi seadistustega menu\u0308u\u0308s on valikud \u201cFile\u201d, \u201cEdit\u201d, \u201cHelp\u201d koos vastavasisuliste alammenu\u0308u\u0308dega, ainsana puudub vaikimisi alammenu\u0308u\u0308 menu\u0308u\u0308valikul \u201cView\u201d. Menu\u0308u\u0308sid on seeja\u0308rel vo\u0303imalik vastavalt vajadusele muuta ja kohandada.Akna alaserva sobiva olekuriba leiab alajaotisest \u201cControl and Display\u201d nime alt \u201cStatus bar\u201d."}, {"text_idx": "#000007", "text": "Menu\u0308u\u0308riba ja olekuriba plokkidel on ko\u0303rgus ma\u0308a\u0308ratud (Height request), seega ja\u0308a\u0308b muutuvaks u\u0308ksnes akna keskmise osa ko\u0303rgus. Kujundamise paindlikkuse huvides lisame keskmisesse jaotisesse kaks u\u0308heelemendilist kasti \u201cbox\u201d u\u0308ksteise sisse. Mo\u0303lemal lu\u0308litame lehelt \u201cPacking\u201d sisse \u201cFill\u201d ja \u201cExpand\u201d. Sellega ta\u0308idab see kast kogu jaotise kasutatava pinna. Suuna muudame lehelt \u201cGeneral\u201d esimesel kastil horisontaalseks (Horizontal) ja teisel kastil vertikaalseks (Vertical). Kastide nimedesse vo\u0303ib selguse huvides samuti lisada ta\u0308he \u201ch\u201d vo\u0303i \u201cv\u201d, na\u0308iteks \u201chkast1\u201d vo\u0303i \u201cvkast1\u201d. Et aknal oleks servad, siis lehelt \u201cPacking\u201d seame mo\u0303lemale kastile vaheriba \u201cPadding\u201d laiuseks 10 u\u0308hikut."}, {"text_idx": "#000008", "text": "Siinkohal oleme jo\u0303udnud ja\u0308rgneval joonisel toodud tulemuseni. Joonis 1. Servadega aken GIMP toolkiti arenduskeskkonnas GLADE user interface designer"}, {"text_idx": "#000009", "text": "Nii nagu hoonete aknad vo\u0303ivad ka arvutiprogrammide \u201caknad\u201d olla olla u\u0308he vo\u0303i mitme aknaruuduga. Arvutiprogrammides ta\u0308hendab see tavaliselt pu\u0308st- vo\u0303i horisontaalriba kuvatavate objektide vahel (objektid ei pruugi seejuures olla u\u0308ldsegi ruudukujulised). Akna \u201cruutudeks\u201d jagamiseks on kasutusel objekt \u201cPaned\u201d (inglise k. aknaruuduga). Paljudes arendusto\u0308o\u0308s kasutatavatest arvuti\u00adprogrammides sh. tarkvaraarenduskeskkondades (IDE) ja raalprojekteerimis\u00adprogrammides (CAD) on levinud kasutajaliidese lahendus milles u\u0308lemises \u201caknaruudus\u201d kuvatakse graafilist infot ja alumises tekstiinfot. Sageli saab alumisest ruudust sisestada ka\u0308ske vo\u0303i nende tekstikujul parameetreid. Sarnast disainilahendust saab kasutada ka protsessijuhtimise kasutajaliidestes. Teksti kuvamine ekraani alaossa pole mingi uus lahendus, mo\u0303elge kasvo\u0303i subtiitrite kasutamisele kinoekraanidel. To\u0308o\u0308stusautomaatikat vaadeldes vo\u0303ib leida isegi vedelkristallkuvareid mille u\u0308la- ja alaosa on ta\u0308iesti eraldi so\u0303ltumatute elektriliste andmesignaalidega juhitavad."}, {"text_idx": "#000010", "text": "Ta\u0308iendame kasutajaliidest lisades aknaruuduobjekti \u201cPaned\u201d alajaotisest \u201cContainers\u201d ja muudame selle suuna vertikaalseks lehelt \u201cGeneral\u201d. Seeja\u0308rel lu\u0308litame sisse \u201cExpand\u201d ja \u201cFill\u201d lehelt \u201cPacking\u201d. Aknaruudu servade kujundamiseks ja nendele info lisamiseks saab kasutada sildiga raamiobjekti \u201cFrame\u201d alajaotisest \u201cContainers\u201d. Raami varju (frame shadow) vo\u0303ib seada asendisse \u201cEtched in\u201d. Lehelt \u201ePacking\u201c vo\u0303ib kokkusurutavuse va\u0308lja lu\u0308litada seades parameetri \u201cShrink\u201d asendisse \u201cNo\u201d."}, {"text_idx": "#000011", "text": "Tekstiaknalt eeldame harilikult et sinna mahub rohkem kui korraga kuvatakse. Vo\u0303imaldamaks teksti na\u0308htava ala kerimist lisame kas kerimisriba (Scrollbar) vo\u0303i terve keritava akna (ScrolledWindow). Viimast vo\u0303ib kasutada ka u\u0308he kerimisribaga vo\u0303i u\u0308ldse ilma eraldiseisvate kerimisribadeta. Na\u0308iteks kui horisontaalset kerimisriba ei soovita siis saab seda \u201cHorisontal Scrollbar Policy\u201d asendisse \u201cNever\u201d. Veel mo\u0303nede elementide lisamise ja\u0308rel oleme jo\u0303udnud ja\u0308rgneval joonisel toodud tulemuseni."}, {"text_idx": "#000013", "text": "Nu\u0308u\u0308d tuleb veel kasutajalidese elementidele veidi va\u0308rve lisada."}, {"text_idx": "#000014", "text": "Lo\u0303puks tuleb XML kujul kasutajaliides siduda kasutajaprogrammiga. Siinkohal u\u0308hest lahendust ei ole sest kasutajaliidese disainiprogramm on universaalne vo\u0303imaldades kasutada va\u0308ga mitmesuguseid programmeerimiskeeli (C, C++, C#, Vala, Java, Perl, Python, Scheme, PHP jt.). Erinevatel inimestel on programmeerimiskeelte ja tehnikaga sageli erinevad kogemused. Kooli informaatikatunnis omandanud programmeerimiskeel Pascal vo\u0303i Visual Basic aitab enamasti ku\u0308llaltki lihtsalt suunduda ka C, C++, Java, PHP vms. programmeerimiskeeltele. Vaja on julgust ja veidike iseseisvat o\u0303ppimisoskust \u2013 \u201cjulge pealehakkamine on pool vo\u0303itu\u201d. Iseseisva o\u0303ppimise protsessis on asendamatuteks abilisteks Interneti otsingumootorid \u2013 nii saab silmaring areneda la\u0308bi enda vo\u0303i teiste poolt kogetud raskuste. Korduvalt on to\u0303statatud ku\u0308simus: \u201cO\u0303ppurid ei oska Eesti keeltki ra\u0308a\u0308kimata vo\u0303o\u0303rkeeltest, kas sedasi on vo\u0303imalik neilt no\u0303uda programmeerimisoskust?\u201d. Minu arvates ehnikahuviliste tee vo\u0303o\u0303rkeelte juurde viib just la\u0308bi tehnika, sest keelteoskus parandab materjali ka\u0308ttesaadavust. Materjali parem ka\u0308ttesaadavus vo\u0303o\u0303rkeeltes ei ta\u0308henda et kohalikku tehnikakeelt pole otstarbekas arendada. Vastupidi, arusaamine ja oskused tulevad la\u0308bi lahtimo\u0303testamise mida suudab igau\u0308ks paremini oma igapa\u0308evakeeles."}, {"text_idx": "#000015", "text": "Valmisteekide linkimiseks omatehtud programmiga tuleb need eelnevalt arendusto\u0308o\u0308s kasutatavasse arvutisse paigaldada."}, {"text_idx": "#000016", "text": "\u201dfatal error: gtk/gtk.h: No such file or directory\u201d."}, {"text_idx": "#000017", "text": "Linuxil po\u0303hinevates su\u0308steemides on GIMP Toolkiti puhul vajalik paigalda pakett \u201clibgtk-3-dev\u201d koos millega paigaldatakse automaatselt selle to\u0308o\u0308ks vajalikud teised paketid."}, {"text_idx": "#000018", "text": "C keelse programmi kompileerimisel tuleb teekide kasutamiseks kompilaatorile seadistada mitmesuguseid vo\u0303tmeid."}, {"text_idx": "#000019", "text": "GIMP Toolkiti teegid tuleb programmiga siduda, ja seda saab C kompilaatori seadistustes teha vo\u0303tmetega:"}, {"text_idx": "#000020", "text": "Graafiliste komponentide su\u0308ndmusteohjurid tuleb siduda graafikateekidega mis paiknevad du\u0308naamiliselt laetavates teekides, vastasel juhul need ei toimi. Selleks on vajalik programmi kompileerimisel lisada vo\u0303ti \u201c-export-dynamic\u201d. Kui see vo\u0303ti ja\u0308tta lisamata siis programm ku\u0308ll kompileerub vigadeta aga graafilise kasutajaliidese nupud ja menu\u0308u\u0308d ei reageeri ei hiirele ega klaviatuurile. Samale probleemile vo\u0303ivad viidata ka teated kasutajaprogrammi ka\u0308ivitamisel:"}, {"text_idx": "#000021", "text": "\u201cGtk-WARNING **: Could not find signal handler\u201c"}, {"text_idx": "#000022", "text": "Eelnevast punktist tulenevalt tuleb siis kui programmi kompileeritakse Windows keskkonnas ko\u0303igile su\u0308ndmusi to\u0308o\u0308tlevatele programmirutiinidele kirjutada ette makro \u201cG_MODULE_EXPORT\u201d ehk \u201c__declspec(dllimport)\u201d. Vastasel juhul ei toimi ei hiir ega klaviatuur sest kasutajaliidese funktsioonid paiknevad eraldiseisvates du\u0308naamilistes teekides (DLL). Graafilise objektiga seotud su\u0308ndmuseohjuri deklareerimist programmeerimis\u00adkeeles C kirjeldab ja\u0308rgmine na\u0308ide:"}, {"text_idx": "#000023", "text": "Kui meie programm vajab to\u0308o\u0308ks GALDE XML failist laetavat kasutajaliidest siis tuleb see esmalt ka ma\u0308llu laadida."}, {"text_idx": "#000024", "text": "Selleks on C programmis ka\u0308sud:"}, {"text_idx": "#000025", "text": "Ma\u0308rkusena olgu o\u0308eldud, et C++ programmides ka\u0308ib objektide loomine ja kustutamine teiste vahenditega."}, {"text_idx": "#000026", "text": "Laetavat ja ka\u0308ivitatavat kasutajaliidese XML faili ei analu\u0308u\u0308sita automaatselt ei kompileerimisel ega kasutajaprogrammi ka\u0308ivitamisel. Kui kasutajaliidese XML failis toodud andmed ei lange kokku programmis ta\u0308histatud nimedega siis ja\u0308a\u0308vad osad viidad soovitud objektidele la\u0308htestamata ning osad programmi funktsioonid seeto\u0303ttu mittetoimivaks."}, {"text_idx": "#000027", "text": "Sel juhul ilmnevad programmi to\u0308o\u0308 ka\u0308igus hoiatus ja veateated."}, {"text_idx": "#000028", "text": "Kui XML fail on avatud, siis saab omistada ko\u0303ik viidad meie kasutajaliidese objektidele programmis kasutatavatele viidamuutujatele, na\u0308iteks:"}, {"text_idx": "#000029", "text": "aken = GTK_WIDGET (gtk_builder_get_object (builder, \u201cprogrammiaken\u201d);"}, {"text_idx": "#000030", "text": "Kui aken on juba kuvatav, siis seadistatakse vastavate objektide su\u0308ndmusteohjurid (signal handlers). Pa\u0308rast kasutajaliidese la\u0308htestamist la\u0308heb programmi to\u0308o\u0308 u\u0308le GIMP Toolkiti (GTK+) teekidele ka\u0308suga \u201cgtk_main ();\u201d ja kasutajaprogrammi po\u0308o\u0308rdutakse ainult eelseadistatud su\u0308ndmusteohjurite kaudu. U\u0308he toimiva kasutajaliidese na\u0308ite vo\u0303ib leida Internetist. Seda na\u0308iteprogrammi on viimati va\u0308rskendatud 2011 aastal, seega on see kasutajaliideste du\u0308naamilise arengu to\u0303ttu ta\u0308naseks (2014 aasta mai) ja\u0308lle vananenud. Arvutiprogrammide kasutajaliidesed ja riistvara ohjurid lihtsalt on asjad mis kiiresti vananevad. Graafikateekide objektide ja funktsioonide nimed on aegade jooksul mo\u0303nevo\u0303rra muutunud. Seeto\u0303ttu ei pruugi ku\u0308mmekond aastat tagasi tehtud programmid uute teekide vo\u0303i operatsioonisu\u0308steemidega toimida. Sellegipoolest on vo\u0303imalik programme kohandada juhul kui programmi la\u0308htetekst on ka\u0308ttesaadav."}, {"text_idx": "#000031", "text": "Kui programmeerimine vabavaralistes rakendustes tundub liiga keeruline vo\u0303i vo\u0303imalused liiga piiratud, siis soovitan proovida sarnase lahenduse valmistamist mo\u0303nes SCADA su\u0308steemide jaoks va\u0308ljato\u0308o\u0308tatud kommertskeskkonnas nt. paketis Intouch mida vo\u0303ib leida TTU\u0308 elektrotehnika instituudi laborist."}, {"text_idx": "#000032", "text": "Programmeerimisoskusest ei pa\u0308a\u0308se nendestki. Head nuputamist ja julget fantaasialendu graafiliste nupupaneelidega!"}, {"text_idx": "#000033", "text": "Mehis u\u0308tleb: 17. juuni 2014, 18:51Asjalik asi- Kas seda ka su\u0308gisel vaba tarkvara pa\u0308eval tutvustatakse?Vasta Madis Lehtla u\u0308tleb: 18. juuni 2014, 20:45Mo\u0303istet \u201cSoftware Freedom Day\u201d (vt. pole o\u0303ige to\u0303lkida \u201cVaba Tarkvara Pa\u0308ev\u201d.Tarvaravabadus (Software Freedom) on laiem kui tarkvara litsentsitingimused (vt. Tarvaravabadus (Software Freedom) on meid u\u0308mbritseva tehnilise keskkonna omadus millest juba praegu so\u0303ltub meie igapa\u0308evane so\u0303navabadus. Vaba (avaliku koodiga) tarkvara olemasolu ja kasutatavus on ainult va\u0308ike killuke tarkvaravabadusest.Vasta"}, {"text_idx": "#000034", "text": "Asjalik asi- Kas seda ka su\u0308gisel vaba tarkvara pa\u0308eval tutvustatakse?"}, {"text_idx": "#000035", "text": "Madis Lehtla u\u0308tleb: 18. juuni 2014, 20:45Mo\u0303istet \u201cSoftware Freedom Day\u201d (vt. pole o\u0303ige to\u0303lkida \u201cVaba Tarkvara Pa\u0308ev\u201d.Tarvaravabadus (Software Freedom) on laiem kui tarkvara litsentsitingimused (vt. Tarvaravabadus (Software Freedom) on meid u\u0308mbritseva tehnilise keskkonna omadus millest juba praegu so\u0303ltub meie igapa\u0308evane so\u0303navabadus. Vaba (avaliku koodiga) tarkvara olemasolu ja kasutatavus on ainult va\u0308ike killuke tarkvaravabadusest.Vasta"}, {"text_idx": "#000037", "text": "Tarvaravabadus (Software Freedom) on laiem kui tarkvara litsentsitingimused (vt. Tarvaravabadus (Software Freedom) on meid u\u0308mbritseva tehnilise keskkonna omadus millest juba praegu so\u0303ltub meie igapa\u0308evane so\u0303navabadus. Vaba (avaliku koodiga) tarkvara olemasolu ja kasutatavus on ainult va\u0308ike killuke tarkvaravabadusest."}, {"text_idx": "#000038", "text": "Sinu e-postiaadressi ei avaldata. No\u0303utavad va\u0308ljad on ta\u0308histatud *-ga"}, {"text_idx": "#000040", "text": "Tegeleme riistvara ja tarkvara arendusto\u0308o\u0308dega. Me oleme loonud erinevaid tooteid juba alatest aastast 2014. Meie inseneridel on enam kui 15-aastane kogemus tehnoloogia vallas."}, {"text_idx": "#000041", "text": "Soovid oma ideed ellu viia? Leiame Sulle sobilikuima lahenduse ning saadame hinnapakkumise. Kirjuta meile e-kirjale info@skeemipesa.ee vo\u0303i vajuta allpool olevale nupule."}]