Strumenti Utente

Strumenti Sito


programmazione:d:gtkd:hello_world

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisioneRevisione precedente
Prossima revisione
Revisione precedente
programmazione:d:gtkd:hello_world [03/07/2025 13:57] – Fabio Di Matteoprogrammazione:d:gtkd:hello_world [02/09/2025 23:03] (versione attuale) – Fabio Di Matteo
Linea 2: Linea 2:
  
 Autore: **//Fabio Di Matteo//** \\ Ultima revisione:  **//  03/07/2025 12:56   //**  // // Autore: **//Fabio Di Matteo//** \\ Ultima revisione:  **//  03/07/2025 12:56   //**  // //
 +
 +<note important>Funziona ancora , ma io userei [[programmazione:d:gid:hello_world|Hello world in gtk4 e linguaggio D usando Gid]]</note>
  
 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 "demos" del  Trovo la documentazione un pochino carente al momento. Mi sono aiutato guardando gli esempi dentro la directory "demos" del 
-[[https://github.com/gtkd-developers/GtkD/tree/master|repository ufficiale GtkD]] +[[https://github.com/gtkd-developers/GtkD/tree/master|repository ufficiale GtkD]] . In più dato che ho usato dub package manager ho trovato utile dare una sbirciata direttamente al codice sorgente di GTK-D . I file si trovano qui: 
 +<file>ls $HOME/.dub/packages/gtk-d/3.11.0/gtk-d/generated/gtkd/gtk</file> 
 +Altra risorsa utile: [[https://code.dlang.org/packages/gid-gtk4-examples|gid-gtk4-examples]]
  
 ===== Una semplice finestra con un bottone ===== ===== Una semplice finestra con un bottone =====
Linea 65: Linea 68:
 ===== Uso di Gtk Builder e Glade ===== ===== Uso di Gtk Builder e Glade =====
  
 +**app.d**
 <code D> <code D>
 import gio.Application: GioApplication = Application; import gio.Application: GioApplication = Application;
Linea 124: Linea 128:
  return application.run(args);  return application.run(args);
 } }
 +
 +</code>
 +
 +
 +**gui.ui**
 +<code xml>
 +<?xml version="1.0" encoding="UTF-8"?>
 +<!-- Generated with glade 3.40.0 -->
 +<interface>
 +  <requires lib="gtk+" version="3.24"/>
 +  <object class="GtkApplicationWindow" id="mywin">
 +    <property name="can-focus">False</property>
 +    <child>
 +      <object class="GtkBox">
 +        <property name="visible">True</property>
 +        <property name="can-focus">False</property>
 +        <property name="orientation">vertical</property>
 +        <child>
 +          <object class="GtkLabel" id="mylabel">
 +            <property name="visible">True</property>
 +            <property name="can-focus">False</property>
 +            <property name="label" translatable="yes">label</property>
 +          </object>
 +          <packing>
 +            <property name="expand">False</property>
 +            <property name="fill">True</property>
 +            <property name="position">0</property>
 +          </packing>
 +        </child>
 +        <child>
 +          <object class="GtkEntry" id="myentry">
 +            <property name="visible">True</property>
 +            <property name="can-focus">True</property>
 +          </object>
 +          <packing>
 +            <property name="expand">False</property>
 +            <property name="fill">True</property>
 +            <property name="position">1</property>
 +          </packing>
 +        </child>
 +        <child>
 +          <object class="GtkButton" id="mybutton">
 +            <property name="label" translatable="yes">button</property>
 +            <property name="visible">True</property>
 +            <property name="can-focus">True</property>
 +            <property name="receives-default">True</property>
 +          </object>
 +          <packing>
 +            <property name="expand">False</property>
 +            <property name="fill">True</property>
 +            <property name="position">2</property>
 +          </packing>
 +        </child>
 +      </object>
 +    </child>
 +  </object>
 +</interface>
 +
 +</code>
 +
 +===== Un meson.build =====
 +
 +Uso il compilatore ldc e lib[g]phobos da gdc.
 +
 +<code python>
 +project('simple', 'd',
 +  version : '0.1',
 +  default_options : ['buildtype=debugoptimized']
 +)
 +
 +gtk_pkg = 'gtk+-3.0'
 +gtkd_pkg = 'gtkd-3'
 +
 +gtk = dependency(gtk_pkg, method: 'pkg-config')
 +gtkd = dependency(gtkd_pkg, method: 'pkg-config')
 +
 +# se gtkd non è trovato, prova a usare i flags manuali (opzionale)
 +if not gtkd.found()
 +  error('gtkD pkg-config dependency "' + gtkd_pkg + '" non trovata. Assicurati che gtkd sia installato e pkg-config veda gtkD-3.0.')
 +endif
 +
 +# sorgenti
 +sources = files('main.d')
 +
 +# target eseguibile
 +executable('simple',
 +  sources,
 +  dependencies: [gtkd, gtk],
 +  install: true,
 +  link_args: ['-Wl,-Bstatic', '-lgphobos', '-Wl,-Bdynamic']
 +  #d_module_version: '0.1'
 +)
  
 </code> </code>
programmazione/d/gtkd/hello_world.1751543855.txt.gz · Ultima modifica: 03/07/2025 13:57 da Fabio Di Matteo