mboost-dp1

The GTK+ Team

GTK+ frigivet i version 3.0

- Via gnome.org - , redigeret af kasperfmn

Gimp Toolkit (GTK+) er netop udkommet i en ny version, der bringer det op på 3.0.

GTK+ 3.0 er et multi-platform toolkit-bibliotek, som bruges til at lave grafiske brugergrænseflader. GTK+ er skrevet i C, men indeholder bindings til mange andre sprog som f.eks. C++, Python og Perl. Tilmed er GTK+ udgivet under GNU LGPL licensen, som gør at det er open source.

GTK+ blev oprindeligt lavet til GIMP, men i dag bruges GTK og Qt til næsten alle Linux-baserede brugergrænseflader. GTK+ 3.0 vil blive brugt i GNOME 3.

Nye features i GTK+ 3.0 omfatter bl.a. en ren Cairo backend. Dette gør GTK+ mere uafhængig af X11-protokollen. Desuden har GTK+ nu XInput 2-understøttelse, som gør applikationer i stand til at understøtte flere musemarkører på samme tid. GTK+ 3.0 har derudover også fået understøttelse for CSS styling.

Læs mere omkring GTK+ 3.0 og dets nye features ovre på den officielle hjemmeside.





Gå til bund
Gravatar #1 - Petrander
11. feb. 2011 15:14
Fatter ikke at de ikke bruger rent objektorienterede sprog til sådan noget, frem for C. Spaghetti'en må til sidst ikke være til at overskue!
Gravatar #2 - dengulebaron
11. feb. 2011 15:56
Enig. Men historisk er GTK jo skrevet i C og så er det aldrig blevet lavet om.

Til gengæld er GTK også et studie i hvor meget der skal til hvis man vil prøve at lave et objektorienteret interface i C og det er imho alt for meget.
Gravatar #3 - Windcape
11. feb. 2011 16:16
Men desværre så er GTK stadigvæk grimt og har en look'n'feel der gør det ualmindelig træls at bruge, som gør at argumentet for at bruge det på OSX eller Windows, er ikke-eksisterende.

Der savnes stadigvæk muligheden for declerative design (ala. XAML), og et grundlæggende bedre design som tillader mere effiktiv sprog-bindings til objekt-orienterede sprog.

QT har generelt et langt bedre API mht. muligheder (både teknisk, og rent-design mæssigt), men desværre er QT også noget rod, som savner en gevaldig oprydning/rekonstruktion.

Jeg undre mig overordnet lidt her. Apple har et forholdsvis nyt API (Cocoa) til UI design. Og Microsoft har udviklet WPF som er et helt nyt API, til UI udvikling, baseret på DirectX.

Hvor QT måske har en undskyldning, da det også bruges til embedded devices, så er GTKs primære formål i dag GUI udvikling til Linux baserede styresystemer. Og hvorfor de så ikke vil lave noget nytænkende, men kun vidreudvikling på det gamle, undre mig altså en del.

Den typisk grund jeg får er dog at GTK er rent hobby-drevent, da de virksomheder er har økonomisk interesse i Linux, er ligeglad med den grafiske brugerflade.

Og derfor er det af samme grund, er f.eks. Mono ikke bruger flere (af Novells) resourcer på at forbedre GTK#.

Så GTK 3.0 proklamere vel intet end "everythings like it used to be, move along everybody, nothing new to see here".
Gravatar #4 - tentakkelmonster
11. feb. 2011 17:18
Jeg har aldrig prøvet at kode med Gtk+, men som almindelig bruger af mange open-source programmer, har jeg lagt mærke til at Gtk+ apps ofte "føles underlige".

Og det bliver endnu værre under Windows, hvor gtk+ gør alt for lidt for at tilpasse sig den usability, det omkringliggende OS har. Knapperne sidder i sær rækkefølge og den bruger sine egne fil-dialoger i stedet for systemets osv osv.

Jeg har altid haft den oplevelse, at Qt-baserede programmer både forekommer mere driftsikre, og har et "feel" som passer bedre ind i resten af det OS, man kører det under.
Gravatar #5 - Windcape
11. feb. 2011 18:27
#4

GTK laver en "ny" brugerflade, frem for at integerer sig en del i den eksisterende. QT gør det samme, men QT på Windows virker noget mere gennemført.

Begge løsninger er ret dårlige. Cross-platform thick-clients er spild af tid når det kommer til stykket.

Deklerativ UI i form af markup er den eneste løsning som har vist sig at virke (HTML). Og desværre er der kun éen spiller på markedet som har forsøgt sig med den i traditionel thickclient sammenhæng (Microsoft -- med WPF).

Så ja :(
Gravatar #6 - Hubert
11. feb. 2011 18:29
#5

Sparer det ikke noget udviklingstid når man laver det crossplatform?
Gravatar #7 - Windcape
11. feb. 2011 18:35
Hubert (6) skrev:
Sparer det ikke noget udviklingstid når man laver det crossplatform?
Besparelsen er reelt set lille, hvis muligheden for at lave biblioteker i samme sprog er tilstede.

Problematikken har så lidt været at C++ langt fra har været optimalt til dette, og Java ikke har nogen bindings til hverken GTK eller WinForms.

Det har så også resulteret i at man benytter HTML som de deklerative markup til ens cross-platform GUI. Og hvor webudvikling har haft betydeligt højere omkostninger rent udviklingsmæssigt, pga. manglede værktøjer og dårlige browsere (*host* IE *host*) i et årti, har meget ændret sig, og er derfor i dag ligeså billig, eller billigere at udvikle brugerflader til.

Hvis man endelig vil lave en thick-client, fordi det giver mening, som f.eks. en browser, så bør man opgive tanken om at lave den cross-platform, da man ikke kan opnå en optimal-brugerflade med de eksisterende crossplatform værktøjer i dag.

Google Chrome er nok det bedste eksempel. Brugerfladen er skrevet individuelt til Windows, Mac og Linux, for at opnå bedst mulige platformsintegration, hastighed, og look'n'feel.

Firefox forsøgte sig med cross-platform GUI, i form af XUL (en slags declerativt markup). Det resulterede desværre kun i begræsninger, memory-leaks, sikkerhedshuller, og en overordnet meget langsom browser.
Gravatar #8 - Hubert
11. feb. 2011 19:53
#7

Dvs at man laver gui'en til hver platform men 'backenden' kan godt være den samme?
Gravatar #9 - Windcape
11. feb. 2011 20:15
Hubert (8) skrev:
Dvs at man laver gui'en til hver platform men 'backenden' kan godt være den samme?
Jeps.

Hvor "backend" for f.eks. Chrome er Webkit og lidt andre småting.
Gravatar #10 - Hubert
11. feb. 2011 20:18
#9

Super. Så fik jeg da den info med. :)
Gravatar #11 - Windcape
11. feb. 2011 20:28
Og jeg skulle måske have skrevet Chromium (som er engine/bibliotek bag Chrome).

Af eksempler:

Windows (7):
- Transparency bag title baren
- Integration med task-baren i form af jumplists
- Standard Window Frame, som dermed giver support for drag-to-the-side-for-docking.

Mac OSX:
- Integration med den øverste "taskbar". (Har det et navn?)

Der er muligvis også noget dock integration jeg ikke er bekendt med. Men altså en del OS-specifikke ting.

Mac: http://codesearch.google.com/codesearch/p#OAMlx_jo...

Windows: http://codesearch.google.com/codesearch/p#OAMlx_jo...

*nix: http://codesearch.google.com/codesearch/p#OAMlx_jo...
Gravatar #12 - ysangkok
11. feb. 2011 22:28
#1, du kan bruge gtkmm

#5 (Windcape), hvad med QML?
Gravatar #13 - Windcape
11. feb. 2011 22:31
#12

Det er en klar forbedring, men langt fra samme niveau som man ville ønske. QML virker sådan lidt som et side-projekt de bare har frigivet uden nogen reele forventninger om brugen.

Specielt databindings bør der gøres noget ved, så man kan have support for MVP/MVVM lignede design patterns.
Gravatar #14 - mhaugstrup
12. feb. 2011 11:56
#1

Gtk er skrevet i GObject fra Glib og kodebasen er langt fra spaghetti. Glib udspringer oprindeligt af Gtk.
GObject/Glib bliver brugt i en lang række andre libs, f.eks. GStreamer og Clutter.

Fordele ved C fremfor C++ er:
* din kode bygger hurtigere
* din binære fylder mindre
* din binære ekskveres hurtigere
* lavere lærings kurve for udviklere
* det er nemt at lave bindinger til andre sprog som f.eks. Python, Java
* et simplere og standardiseret ABI (!= API) der gør det nemmere at linke forskellige libraries sammen.

Ulemperne er lige også mange.

#3
Helt enig - Linux mangler rigtige interressante UI frameworks. Kigger man på "linux only" libraries som Gtk, Mx, Clutter og det der ligger under som Cario, Pixman, Wayland XServer etc. bliver der brugt meget krudt på at lave dem bedre og i høj grad med støtte fra Intel, RedHat m.fl men fokus ligger på teknologien i de lavere lag fremfor at lave bedre/flere base widgets, understøttelse for declarativ UI og IDE'er ala Visual studio og QtCreator.

Efter gårsdagens udmeldelser fra Nokia bliver det i øvrigt spændende at se hvad der reelt sker med Qt det næste par år.
Gravatar #15 - tentakkelmonster
12. feb. 2011 19:16
mhaugstrup (14) skrev:
Efter gårsdagens udmeldelser fra Nokia bliver det i øvrigt spændende at se hvad der reelt sker med Qt det næste par år.

Holy f... du siger noget! Det havde jeg ikke engang tænkt på. Er helt enig i at det bliver interessant at se. Jeg kunne ikke forestille mig at Microsoft ville have motivation til at spytte så meget som 5 øre i Qt.
Gravatar #16 - Windcape
12. feb. 2011 19:52
tentakkelmonster (15) skrev:
Jeg kunne ikke forestille mig at Microsoft ville have motivation til at spytte så meget som 5 øre i Qt.
Hvis der ikke er økonomisk incitament til at videreudvikle QT, bør Nokia jo netop ikke gøre det. Det er sådan set ligegyldig hvor de fik financiering fra.

Nokia har forsøgt sig med for mange idelogiske tankegange, lidt ligesom SUN, og det har ikke givet nok penge i retur for investeringerne.
Gravatar #17 - Tukanfan
13. feb. 2011 13:42
Bare det ikke bliver KDE der skal maintaine Qt
Gravatar #18 - x-tian
13. feb. 2011 21:27
Jeg glæder mig nu aligevel til at den lille ny kommer fra gnome :-).
Hvis der er interesse i hvordan source koden må være kan den jo bare downloades fra gtk.org da den er udgivet under GNU. Istedet for at klågeåga om noget man tror man ved.
Gravatar #19 - Tukanfan
13. feb. 2011 22:33
Windcape (5) skrev:
GTK laver en "ny" brugerflade, frem for at integerer sig en del i den eksisterende. QT gør det samme, men QT på Windows virker noget mere gennemført.

Det er rigtigt at GTK gør det, men jeg mener at Qt er gået over fra emulering, til at bruge native widgets. Jeg ved i hvert fald, at WxWidgets gør det.
Gravatar #20 - Windcape
14. feb. 2011 05:37
#19

Men Linux har ikke native widgets :p
Gravatar #21 - x-tian
14. feb. 2011 22:54
#20 Øøh jeg mener at KDE kan. Jeg tror du mener gnome istedet for Linux
Gravatar #22 - Tukanfan
19. feb. 2011 01:19
#20
Jeg tænkte på Windows. Laver Qt ikke kald til whatever vindue-API der nu måtte være?

På Linux defineres 'native' vel som dét der passer ind i skrivebordsmiljøet.
Gravatar #23 - arne_v
19. feb. 2011 01:36
#20-22

Jeg formoder at windcape hentyder til at Linux i den snævre definition ikke inkluderer GUI overhovedet.

Imidlertid er X11 de facto standard på Linux.

Og Xlib og Xt bør kunne kaldes native widgets.

Men ved de højere lag, så er der mange muligheder. Og at kalde en af dem for mere native end en anden er noget tvivlsomt.
Gravatar #24 - Windcape
20. feb. 2011 13:06
arne_v (23) skrev:
Og Xlib og Xt bør kunne kaldes native widgets.
Men ingen af de biblioteker der bygger oven på XLib benytter de samme widgets.

Motif, QT og GTK+ ser alle sammen forskellige ud, og har enormt forskelligt look'n'feel.
Gravatar #25 - arne_v
20. feb. 2011 14:00
Windcape (24) skrev:
Men ingen af de biblioteker der bygger oven på XLib benytter de samme widgets.

Motif, QT og GTK+ ser alle sammen forskellige ud, og har enormt forskelligt look'n'feel.


Der var vist ca. hvad jeg skrev:

arne_v (23) skrev:
Men ved de højere lag, så er der mange muligheder. Og at kalde en af dem for mere native end en anden er noget tvivlsomt.


Men Xlib og Xt kan godt kalde natives widgets.
Gravatar #26 - arne_v
26. feb. 2011 01:23
mhaugstrup (14) skrev:

Fordele ved C fremfor C++ er:
* din kode bygger hurtigere
* din binære fylder mindre
* din binære ekskveres hurtigere
* lavere lærings kurve for udviklere
* det er nemt at lave bindinger til andre sprog som f.eks. Python, Java
* et simplere og standardiseret ABI (!= API) der gør det nemmere at linke forskellige libraries sammen.


Det med den hurtigere eksekvering er vist en myte.

Og en pæn del af den ekstra størrelse på programmer er fixed overhead.

mhaugstrup (14) skrev:
Kigger man på "linux only" libraries som Gtk, Mx, Clutter


GTK+ er ikke Linux only.

Gravatar #27 - arne_v
26. feb. 2011 01:29
Hubert (8) skrev:
Dvs at man laver gui'en til hver platform men 'backenden' kan godt være den samme?


Det afhænger af hvilken slags app det er.

Skal app'en sælges på UI er det normalt med special UI's.

Sælges app'en på dens funktionalitet og UI følger med, så kan man spare mange penge ved at bruge en cross-platform GUI.

Eksempel: du vil ikke betale for et tekstbehandling som du synes er besværligt at bruge og teksten er svær at læse - men hvis du vurderer at en router/firewall er den bedste på markedet til dit formål, så lever du med at GUI'en ser noget sjov ud.
Gravatar #28 - arne_v
26. feb. 2011 01:31
Windcape (3) skrev:
Der savnes stadigvæk muligheden for declerative design (ala. XAML), og et grundlæggende bedre design som tillader mere effiktiv sprog-bindings til objekt-orienterede sprog.


Det lyder meget mystisk at et deklarativt sprog skulle matche et OO imperativt sprog bedre end et OO imperativt sprog!
Gravatar #29 - arne_v
26. feb. 2011 01:44
Windcape (5) skrev:
Deklerativ UI i form af markup er den eneste løsning som har vist sig at virke (HTML). Og desværre er der kun éen spiller på markedet som har forsøgt sig med den i traditionel thickclient sammenhæng (Microsoft -- med WPF).


Mozilla XUL 2002
LZX (OpenLaszlo) 2003
Adobe MXML 2004
MS XAML 2008
JavaFX 2008
Nokia QML 2009

Der er masser som har brugt det.

Og MS hører til i sidste halvdel tidsmæssigt.
Gravatar #30 - Windcape
26. feb. 2011 14:41
#29

Microsoft og Mozilla er de eneste som har brugt det seriøst, og med success.

Og XAML er det eneste der har visuelle udviklingsværktøjer.

Derudover synes QML ikke rigtig at være rigtig at putte i samme kategori. Medmindre man laver så lidt UI udvikling at man ikke ved hvad der rent faktisk kræves.
Gravatar #31 - arne_v
27. feb. 2011 01:10
Windcape (30) skrev:
Microsoft og Mozilla er de eneste som har brugt det seriøst, og med success.


Jeg vil nu mene at Adobe har ganske pæn succes også.

OpenLaszlo var hot på et tidspunkt er men er sygnet hen.

Windcape (30) skrev:
Og XAML er det eneste der har visuelle udviklingsværktøjer.


Adobe leverer skam også sådanne til MXML. Og de er ret udbredte.

SUN til JavaFX. Det bliver nok sværere at finde brugere af disse.
Gravatar #32 - Windcape
27. feb. 2011 02:11
#31

Jeg synes ikke rigtig at de har nævnværdige udbredelser, i forhold til WPF og Silverlight, som er rimelig hot pt.

Og jeg tror ikke at WPF dør ud sådan lige, da GUI værktøjer til Windows næppe forsvinder sådan uden videre. Og det er et virkelig godt gennemført framework.

Ikke alle værktøjer kan leveres som websider.
Gravatar #33 - arne_v
27. feb. 2011 02:26
Windcape (32) skrev:
Jeg synes ikke rigtig at de har nævnværdige udbredelser,


Det kan godt være at du ikke mener at Flex/Flash/AIR/FlexBuilder/FlashBuilder etc. har nogen nævneværdig udbredelse, men det hvis du kigger lidt ud i den store virkelighed vil du opdage at det er de.

Windcape (32) skrev:
Og jeg tror ikke at WPF dør ud sådan lige,


Enig.

Med Microsofts klare satsning på WPF (desktop og WP - SL/web er lidt mere mudret), så er der al mulig grund til at tro at WPF vil blive brugt i de næste 15-30 år.
Gravatar #34 - Windcape
27. feb. 2011 02:31
#33

Flash har udbredelse. Men jeg er uenig i din betragtning om at Adobe AIR har særlig stor udbredelse.

Og det er ikke mit indtryk at man koder særlig meget UI i Flash. Det er GUI bygning, og ActionScript.

arne_v (33) skrev:
SL/web er lidt mere mudret
Det er ihvertfald blevet noget mudret det sidste års tid.
Gravatar #35 - arne_v
27. feb. 2011 02:38
#34

En søgning på dice.com giver:

Flex - 1247
Silverlight - 858

Og hvis man i en job annonce søger efter Flex ekspertise, så er det med ret stor sandsynlighed UI kodning man søger efter - ikke grafisk flim flam.
Gravatar #36 - arne_v
4. mar. 2011 20:58
#29

+Android layouts

Gravatar #37 - Windcape
4. mar. 2011 22:04
#36

Hvis du mener det er nok, så kan jeg jo opfinde et nyt markup sprog på 10 minutter.

Ingen af de nævnte har på nogetsomhelst niveau samme fleksibilitet og muligheder som XAML. Bare manglen på ligeså smarte databindings er nok til at sende dem langt væk fra samme liga.
Gravatar #38 - arne_v
5. mar. 2011 01:47
Windcape (37) skrev:
Ingen af de nævnte har på nogetsomhelst niveau samme fleksibilitet og muligheder som XAML. Bare manglen på ligeså smarte databindings er nok til at sende dem langt væk fra samme liga.


Så:

Windcape (5) skrev:
Og desværre er der kun éen spiller på markedet som har forsøgt sig med den i traditionel thickclient sammenhæng (Microsoft -- med WPF).


skal læses som "jeg synes at Microsoft har klart den bedste løsning af den art"?

Gravatar #39 - Windcape
5. mar. 2011 19:09
#38

Jeg betragter ikke de andre løsninger som brugbare.

<ui>
<kaldrendermetodeic />
</ui>

SE MIG, HAR JEG LAVET ET UI FRAMEWORK TIL FEDE KLIENTER!

Skal vi også tælle min løsning med nu?
Gravatar #40 - arne_v
5. mar. 2011 23:27
#39

1) Definer et par håndfulde widgets/controls mere.
2) Implementer det hele.
3) Skaf nogle hundrede developer brugere og nogle titusinder af slut brugere

så JA.

Gravatar #41 - Windcape
5. mar. 2011 23:51
#40

Jeg synes stadigvæk ikke at de frameworks du har nævnt er declerative nok.

Man bør opstille MVVM som et successkriterium. Altså hvis man ikke kan lave et view der er 100% separeret, så er det bare en anden udtryksform for samme kode.

Hele fordelen ved de declerative layout, er at det ikke er platformsspecifikt, og man definere ingen faste størrelser, eller themes.

Derudover er Adobe AIR et meget begrænset framework i forhold til WPF og XUL.

Derudover kan jeg begynde at snakke om problemstillinger med theming. Det er kun WPF som har en tilgang til declerative UI, som tillader at ændre alting med themes.

XAML er tæt på at være den ideele løsning til UI udvikling.
Gravatar #42 - onetreehell
6. mar. 2011 16:38
#41
MXML er ikke kun begrænset til adobe AIR
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login