[[:oktatas:programozás:csharp:mono|< Mono]]
====== Gtk ======
A mono segítségével, nem csak Windows.Forms névtérrel állíthatunk elő GUI felületet. Itt rövid bevezetést találunk a Gtk használatára.
Debian GNU/Linux alatt a Gtk# használatához szükség van a gtk-sharp2 csomag telepítésére:
apt-get install gtk-sharp2
===== Helló Világ =====
using Gtk;
using System;
public class Program
{
public static void Main()
{
Application.Init();
Window ablak = new Window("Helló Világ");
ablak.Show();
Application.Run();
}
}
fordítás:
gmcs -pkg:gtk-sharp-2.0 main.cs
===== Ablak örökléssel =====
using Gtk;
using System;
class Program : Window
{
Program():base("")
{
DefaultWidth = 300;
DefaultHeight = 200;
Show();
}
static void Main()
{
Application.Init ();
new Program();
Application.Run();
}
}
===== Ablak mérete =====
using Gtk;
using System;
class Program
{
static void Main()
{
Application.Init ();
Window ablak = new Window("");
ablak.DefaultWidth = 300;
ablak.DefaultHeight = 200;
ablak.Show();
Application.Run();
}
}
===== Nyomgomb =====
using Gtk;
using System;
class Program
{
static void Main()
{
Application.Init ();
Window ablak = new Window("");
Button kilepesgomb = new Button("Nyomj le");
kilepesgomb.Clicked += new EventHandler(Kilepesgomb_Clicked);
ablak.Add(kilepesgomb);
ablak.ShowAll();
Application.Run();
}
static private void Kilepesgomb_Clicked(object sender, EventArgs e)
{
Application.Quit();
}
}
===== Szövegdoboz =====
using Gtk;
using System;
class Program : Window
{
Entry szovegdoboz = new Entry();
Program():base("")
{
Add(szovegdoboz);
DefaultWidth = 300;
DefaultHeight = 200;
ShowAll();
}
static void Main()
{
Application.Init ();
new Program();
Application.Run();
}
}
===== Két komponens az ablakon =====
using Gtk;
using System;
class Program : Window
{
VPaned paned1 = new VPaned();
Button gomb1 = new Button("Nyomj le");
Label cimke1 = new Label("Címke");
Program():base("")
{
paned1.Pack1(gomb1, true, false);
paned1.Pack2(cimke1, true, false);
Add(paned1);
DefaultWidth = 300;
DefaultHeight = 200;
ShowAll();
}
static void Main()
{
Application.Init ();
new Program();
Application.Run();
}
}
===== Üzenetablak =====
using Gtk;
using System;
class Program : Window
{
Button gomb1 = new Button("Nyomj meg");
Program():base("")
{
gomb1.Clicked += new EventHandler(Gomb1_Clicked);
Add(gomb1);
DefaultWidth = 300;
DefaultHeight = 200;
ShowAll();
}
private void Gomb1_Clicked(object sender, EventArgs e)
{
MessageDialog msg = new MessageDialog(this, DialogFlags.DestroyWithParent,
MessageType.Info, ButtonsType.Ok, "Névjegy");
msg.Run();
msg.Destroy();
}
static void Main()
{
Application.Init ();
new Program();
Application.Run();
}
}
Lekérdezzük melyik gombra kattintott a felhasználó:
using Gtk;
using System;
class Program : Window
{
Button gomb1 = new Button("Nyomj meg");
Program():base("")
{
gomb1.Clicked += new EventHandler(Gomb1_Clicked);
Add(gomb1);
DefaultWidth = 300;
DefaultHeight = 200;
ShowAll();
}
private void Gomb1_Clicked(object sender, EventArgs e)
{
MessageDialog msg = new MessageDialog(this, DialogFlags.DestroyWithParent,
MessageType.Info, ButtonsType.YesNo, "Szeretnéd ezt?");
ResponseType rsp = (ResponseType)msg.Run();
msg.Destroy();
if(rsp == ResponseType.Yes)
Title = "Szeretné";
else
Title = "Nem szeretné";
}
static void Main()
{
Application.Init ();
new Program();
Application.Run();
}
}
A ButtonType felsorolt típus tagjai:
* None
* Ok
* Close
* Cancel
* YesNo
* OkCancel
===== Menü =====
using Gtk;
using System;
class Program : Window
{
MenuBar menubar = new MenuBar();
Menu file_menu = new Menu();
MenuItem file_item = new MenuItem("Fájl");
MenuItem exit_item = new MenuItem("Kilépés");
Menu help_menu = new Menu();
MenuItem help_item = new MenuItem("Súgó");
MenuItem content_item = new MenuItem("Tartalom");
MenuItem about_item = new MenuItem("Névjegy");
Label label1 = new Label("A menüs program");
VBox box = new VBox(false, 2);
Program():base("")
{
exit_item.Activated += new EventHandler(Exit_item_Activated);
file_menu.Append(exit_item);
file_item.Submenu = file_menu;
content_item.Activated += new EventHandler(Content_item_Activated);
about_item.Activated += new EventHandler(About_item_Activated);
help_menu.Append(content_item);
help_menu.Append(about_item);
help_item.Submenu = help_menu;
menubar.Append(file_item);
menubar.Append(help_item);
box.PackStart(menubar, false, false, 0);
box.PackStart(label1, true, true, 0);
Add(box);
DefaultWidth = 300;
DefaultHeight = 200;
ShowAll();
}
private void Content_item_Activated(object sender, EventArgs e)
{
MessageDialog msg = new MessageDialog(this, DialogFlags.DestroyWithParent,
MessageType.Info, ButtonsType.Ok, "Tartalom árnyékeljárás");
msg.Run();
msg.Destroy();
}
private void About_item_Activated(object sender, EventArgs e)
{
MessageDialog msg = new MessageDialog(this, DialogFlags.DestroyWithParent,
MessageType.Info, ButtonsType.Ok, "Névjegy");
msg.Run();
msg.Destroy();
}
private void Exit_item_Activated(object sender, EventArgs e)
{
Application.Quit();
}
static void Main()
{
Application.Init ();
new Program();
Application.Run();
}
}
===== Linkek =====
* http://www.go-mono.com/docs/