programmazione:d:gtkd:hello_world
Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
| Entrambe le parti precedenti la revisioneRevisione precedenteProssima revisione | Revisione precedente | ||
| programmazione:d:gtkd:hello_world [03/07/2025 13:05] – Fabio Di Matteo | programmazione:d:gtkd:hello_world [02/09/2025 23:03] (versione attuale) – Fabio Di Matteo | ||
|---|---|---|---|
| Linea 2: | Linea 2: | ||
| Autore: **//Fabio Di Matteo//** \\ Ultima revisione: | Autore: **//Fabio Di Matteo//** \\ Ultima revisione: | ||
| + | |||
| + | <note important> | ||
| Un hello world che mostra le basi di una finestra GTK-D . \\ | Un hello world che mostra le basi di una finestra GTK-D . \\ | ||
| Trovo la documentazione un pochino carente al momento. Mi sono aiutato guardando gli esempi dentro la directory " | Trovo la documentazione un pochino carente al momento. Mi sono aiutato guardando gli esempi dentro la directory " | ||
| - | [[https:// | + | [[https:// |
| + | < | ||
| + | Altra risorsa utile: [[https:// | ||
| + | |||
| + | ===== Una semplice finestra con un bottone ===== | ||
| <code D> | <code D> | ||
| Linea 40: | Linea 46: | ||
| Main.run(); | Main.run(); | ||
| } | } | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | **dub.json** | ||
| + | <code json> | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | ], | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ===== Uso di Gtk Builder e Glade ===== | ||
| + | |||
| + | **app.d** | ||
| + | <code D> | ||
| + | import gio.Application: | ||
| + | |||
| + | import gtk.Application; | ||
| + | import gtk.ApplicationWindow; | ||
| + | import gtk.Builder; | ||
| + | import gtk.Button; | ||
| + | import gtk.Entry; | ||
| + | import gtk.Label; | ||
| + | |||
| + | import std.stdio; | ||
| + | import core.stdc.stdlib; | ||
| + | |||
| + | |||
| + | int main(string[] args) | ||
| + | { | ||
| + | auto application = new Application(" | ||
| + | | ||
| + | void initGui(GioApplication a) | ||
| + | { | ||
| + | | ||
| + | auto builder = new Builder(); | ||
| + | |||
| + | if( ! builder.addFromFile(" | ||
| + | writeln(" | ||
| + | exit(1); | ||
| + | } | ||
| + | auto mywin = cast(ApplicationWindow)builder.getObject(" | ||
| + | if (mywin is null) | ||
| + | { | ||
| + | writeln(" | ||
| + | } | ||
| + | mywin.setApplication(application); | ||
| + | mywin.setTitle(" | ||
| + | |||
| + | auto mylabel = cast(Label)builder.getObject(" | ||
| + | auto myentry = cast(Entry)builder.getObject(" | ||
| + | auto mybutton = cast(Button)builder.getObject(" | ||
| + | |||
| + | |||
| + | mybutton.addOnClicked(delegate void(Button b){ | ||
| + | string t= myentry.getText(); | ||
| + | if (t!="" | ||
| + | { | ||
| + | mylabel.setLabel(t); | ||
| + | }else{ | ||
| + | mylabel.setLabel(" | ||
| + | } | ||
| + | }); | ||
| + | |||
| + | |||
| + | mywin.showAll(); | ||
| + | |||
| + | } | ||
| + | |||
| + | |||
| + | application.addOnActivate(& | ||
| + | return application.run(args); | ||
| + | } | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | **gui.ui** | ||
| + | <code xml> | ||
| + | <?xml version=" | ||
| + | <!-- Generated with glade 3.40.0 --> | ||
| + | < | ||
| + | < | ||
| + | <object class=" | ||
| + | < | ||
| + | < | ||
| + | <object class=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | <object class=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | < | ||
| + | <object class=" | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | < | ||
| + | <object class=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | |||
| + | ===== Un meson.build ===== | ||
| + | |||
| + | Uso il compilatore ldc e lib[g]phobos da gdc. | ||
| + | |||
| + | <code python> | ||
| + | project(' | ||
| + | version : ' | ||
| + | default_options : [' | ||
| + | ) | ||
| + | |||
| + | gtk_pkg = ' | ||
| + | gtkd_pkg = ' | ||
| + | |||
| + | gtk = dependency(gtk_pkg, | ||
| + | gtkd = dependency(gtkd_pkg, | ||
| + | |||
| + | # se gtkd non è trovato, prova a usare i flags manuali (opzionale) | ||
| + | if not gtkd.found() | ||
| + | error(' | ||
| + | endif | ||
| + | |||
| + | # sorgenti | ||
| + | sources = files(' | ||
| + | |||
| + | # target eseguibile | ||
| + | executable(' | ||
| + | sources, | ||
| + | dependencies: | ||
| + | install: true, | ||
| + | link_args: [' | ||
| + | # | ||
| + | ) | ||
| </ | </ | ||
programmazione/d/gtkd/hello_world.1751540726.txt.gz · Ultima modifica: 03/07/2025 13:05 da Fabio Di Matteo
