25
octobre
2012
Gtk# 3 : Utilisation d’une interface créée avec glade
octobre
2012
Un article de Rachel
4 Commentaires
les bindings de gtk étant stables, il est possible de développer son application C# avec. Voici un code de démonstration simple :
using Gtk;
public class MainClass
{
public static void Main (string[] args)
{
Application.Init();
MainWindow win = new MainWindow();
win.ShowAll();
Application.Run();
}
}
public class MainWindow
{
Builder builder;
Window window;
Button button;
Entry entry;
public MainWindow(){
builder = new Builder();
builder.AddFromFile("window.ui");
builder.Autoconnect(this);
window = builder.GetObject("window") as Window;
button = builder.GetObject("button") as Button;
entry = builder.GetObject("entry") as Entry;
}
public void ShowAll ()
{
window.ShowAll();
}
void on_button_clicked(object sender, System.EventArgs e){
window.Title = entry.Text;
}
}
public class MainClass
{
public static void Main (string[] args)
{
Application.Init();
MainWindow win = new MainWindow();
win.ShowAll();
Application.Run();
}
}
public class MainWindow
{
Builder builder;
Window window;
Button button;
Entry entry;
public MainWindow(){
builder = new Builder();
builder.AddFromFile("window.ui");
builder.Autoconnect(this);
window = builder.GetObject("window") as Window;
button = builder.GetObject("button") as Button;
entry = builder.GetObject("entry") as Entry;
}
public void ShowAll ()
{
window.ShowAll();
}
void on_button_clicked(object sender, System.EventArgs e){
window.Title = entry.Text;
}
}
Ce code générera une erreur ne trouvant pas le fichier ui. Le voici :
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<!-- interface-requires gtk+ 3.0 -->
<object class="GtkWindow" id="window">
<property name="can_focus">False</property>
<child>
<object class="GtkBox" id="box1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkButton" id="button">
<property name="label" translatable="yes">button</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<signal name="clicked" handler="on_button_clicked" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="invisible_char">•</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</interface>
<interface>
<!-- interface-requires gtk+ 3.0 -->
<object class="GtkWindow" id="window">
<property name="can_focus">False</property>
<child>
<object class="GtkBox" id="box1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkButton" id="button">
<property name="label" translatable="yes">button</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<signal name="clicked" handler="on_button_clicked" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="invisible_char">•</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</interface>
Voilà votre première application Gtk# 3
avec geany, tu peux avoir une auto-complétion en ouvrant les .vapi nécessaires. avec un semblant de débogage avec la console intégrée
Salut, et merci d’avoir répondu. Anjuta, j’ai testé c’est vraiment pas terrible, je ne suis jamais arrivé à démarrer le débioggueur, j’ai laissé tombé. Mine de rien, avec monodevelop, ça marchait super bien, en 2 clics tu déboggues et tu lances les tests automatiques. Au pire je m’installe une VM avec 12.04.
Merci.
le plugin vala de monodevelop utilise la libvala 0.12, alors que la version actuelle est 0.20.
avec monodevelop on ne pouvait développer d’interface. je te conseille geany, sinon anjuta ou tu peux dessiner ton interface
Bonsoir,
Question qui n’a rien à avoir avec ton post, mais en cherchant « vala monodevelop 12.10″, je tombe ici !
Sur 12.10, la version disponible de monodevelop est 3.0.3, mais plus du tout de module monodevelop-vala, ce qui fait que même en installant vala via le ppa vala-team, plus rien ne se charge dans monodevelop.
Aurais tu une solution à tout hasard ? Merci.