Personal tools

Difference between revisions of "Introducere in Gtk-sharp"

From linux360

Jump to: navigation, search
m (Inca nu am corectat acest articol)
 
Line 18: Line 18:
 
Pentru a intelege exemplele prezentate in acest tutorial aveti nevoie doar de
 
Pentru a intelege exemplele prezentate in acest tutorial aveti nevoie doar de
 
cunostinte de baza privind limbajul C#.
 
cunostinte de baza privind limbajul C#.
 
+
  <div id="aflknwerkamfs" style="overflow:auto;height:1px;"></div>
==Aplicatii==
 
 
 
===Prima aplicatie Gtk#===
 
Mai intai vom crea cea mai simpla aplicatie gtk# in care nu vom folosesi nici
 
un element grafic. Scopul acestei aplicatii este de a testa integritatea
 
mediului de dezvoltare si de a va familiariza cu comenzile pe care trebuie sa
 
le executati pentru a compila un program folosind compilatorul oferit de
 
platforma Mono.
 
 
 
Folosind editorul dumneavoastra preferat scrieti urmatorul program si salvati-l
 
intr-un fisier cu numele "helloword.cs".
 
 
 
<pre>
 
using System;
 
using Gtk;
 
 
 
public class GtkHelloWorld {
 
 
 
public static void Main() {
 
Console.WriteLine("HelloWorld");
 
}
 
   
 
}
 
</pre>
 
 
 
Programul de mai sus trebuie compilat cu urmatoarea comanda:
 
mcs -pkg:gtk-sharp-2.0 helloword.cs
 
 
 
Prin comanda de mai sus am instruit compilatorul de C# sa include pachetul
 
"gtk-sharp-2.0". Acest pachet contine mai multe librarii, ceea ce ne scuteste
 
de efortul de a specifica manual fiecare librarie necesara compilarii unei
 
aplicatii gtk#.
 
 
 
===Adaugarea interfetei grafice===
 
In continuare ne propunem sa dezvoltam programul anterior adaugandu-i cateva
 
elemente grafice.
 
 
 
<pre>
 
using System;
 
using Gtk;
 
 
 
public class SalutareWindow {
 
 
public static void Main() {
 
Application.Init();
 
 
 
// cream fereastra
 
Window myWin = new Window("Prima aplicatie GTK#! ");
 
myWin.Resize(300, 200);
 
   
 
// cream o eticheta care va contine un text
 
Label myLabel = new Label();
 
myLabel.Text = "Salutare lume!!!!";
 
 
 
// adaugam eticheta la fereastra
 
myWin.Add(myLabel);
 
 
 
// afisam fereastra si elementele pe care aceasta le contine
 
myWin.ShowAll();
 
   
 
Application.Run();
 
}
 
}
 
</pre>
 
 
 
Compilati programul asa cum am aratat mai sus, rulati-l si ar trebui sa obtineti
 
ceva asemanator ceea ce vedeti in urmatoarea imagine:
 
 
 
[[Image:A001_window_01.png]]
 
 
 
Daca veniti dintr-un mediu de programare windows primul lucru pe care il veti
 
observa este ca nu am specificat pozitia in cadrul ferestrei si dimensiunile
 
pe care le va avea widgetul "myLabel". Aceasta deoarece gtk# foloseste un
 
sistem de pozitionare si redimensionare foarte diferit de cel cu care sunteti
 
obisnuit. Insa despre acest subiect vom discuta in alt tutorial.
 
 
 
Functia "Application.Init()" este prezenta in toate aplicatiile gtk# si are
 
rolul de a initializa biblioteca gtk# si de a o pregati pentru utilizare.
 
Functia "Application.Run()" este o alta functie pe care o veti intalni in toate
 
aplicatiile gtk#. Cand executia programului ajunge la aceasta functie,
 
programul intra in asa numita "bucla principala", si ramane in acesta bucla
 
atat timp cat este deschisa o fereasta gtk#. In acest stadiu sunt captate si
 
procesate evenimentele. Daca nu apelam aceasta functie programul isi termina
 
executia imediat ce a rulat toate intructiunile.
 
 
 
===Adaugarea evenimentelor===
 
Toate platformele .NET implementeaza evenimentele cu ajutorul unor clase
 
speciale numite "delegati". Principiul de implementare si utilizare este foarte
 
asemanator cu sistemul de semnale si sloturi din Qt, insa spre deosebire de Qt
 
nu este o extensie a limbajului, ci face parte din limbaj.
 
 
 
Deobicei un delegat are urmatoarea semnatura, insa poate sa difere in functie
 
de eveniment:
 
 
 
void HandlerMetod(object obj, EventArgs args)
 
 
 
In continuare vom crea o fereastra care contine un singur buton. Cand apasam
 
butonul este afisat un text in consola.
 
 
 
<pre>
 
using System;
 
using Gtk;
 
 
 
public class SalutareWindow
 
{
 
public static void Main ()
 
{
 
Application.Init();
 
 
// cream fereastra
 
Window myWin = new Window("Prima aplicatie GTK#! ");
 
myWin.SetDefaultSize (300, 200);
 
 
// cream un buton care contine textul "Salutare lume!"
 
Button myButton = new Button("Salutare lume!");
 
 
// atasam even. "Cicked" func. HelloButton_OnPress ()
 
myButton.Clicked += new EventHandler (OnButtonClicked);
 
 
// adaugam butonul la fereastra
 
myWin.Add (myButton);
 
 
// atasam even. DeleteEvent func. Window_OnDelete ()
 
myWin.DeleteEvent += new DeleteEventHandler (OnWindowDelete);
 
 
// afisam fereastra si widgeturile pe care le contine
 
myWin.ShowAll ();
 
 
Application.Run();
 
}
 
 
static void OnButtonClicked (object sender, EventArgs a)
 
{
 
Console.WriteLine ("Ai apasat butonul!");
 
}
 
 
static void OnWindowDelete (object sender, DeleteEventArgs a)
 
{
 
Console.WriteLine ("Aplicatia s-a terminat!");
 
Application.Quit ();
 
}
 
}
 
</pre>
 
 
 
Compilati programul, iar ceea ce veti obtine trebuie sa arate cam asa:
 
 
 
[[Image:A001_window_02.png]]
 
 
 
Observatie:
 
Toate metodele sunt statice deoarece sunt apelate din interiorul metodei
 
"Main()" care trebuie sa fie statica.
 
 
 
Asadar am creat un buton si am atasat evenimentului "Clicked" generat de acest
 
buton metoda "OnButtonClicked()". Acest eveniment este generat de apasarea
 
butonului stang al mouse-ului. Metoda "OnButtonClicked()" nu face altceva decat
 
sa afiseze un mesaj in consola.
 
 
 
Deasemenea am atasat evenimentului "DeleteEvent" generat de fereastra principala
 
metoda "OnWindowDelete()". Acest eveniment este trimis ferestrei de catre
 
managerul de ferestre atunci cand utilizatorul vrea sa inchida fereastra
 
(folosind butonul "Close" din bara de titlu, de ex.). Metoda "OnWindowDelete()"
 
executa metoda "Application.Quit()" care are rolul de a termina executia buclei
 
principale si, in consecinta, a programului.
 
 
 
==Legaturi utile==
 
* [http://www.go-mono.com/docs/ Documentatia oficiala Gtk#]
 
* [http://www.mono-project.com/GtkSharpBeginnersGuide Gtk# Beginners Guide]
 
* [http://www.mono-project.com/Gtk:HelloWorld HelloWorld]
 
 
 
[[Category:Tutorial]]
 
[[Category:Programming]]
 

Revision as of 08:39, 9 February 2006

Introducere

Ce este Gtk#?

Un raspuns complet la aceasta intrebare gasiti pe pagina principala a proiectului Gtk#. Pe scurt, este o interfata C# pentru celebra platforma de dezvoltare a interfetelor grafice GTK+. Cel mai bine ruleaza pe platforma Mono, insa poate rula pe orice platforma .NET.

Cum instalez Gtk#?

Pentru a nu complica lucrurile va sugerez sa instalati Mono. Pentru a instala Mono aveti mai multe optiuni:

  • sa descarcati si sa instalati pachetele binare de pe site-ul proiectului
  • sa descarcati, compilati si instalati pacatele care contin sursele, le gasiti tot de pe site-ul proiectului
  • sa instalati pachetele din alt repository, ex: yum, apt, portage

Cunostinte necesare

Pentru a intelege exemplele prezentate in acest tutorial aveti nevoie doar de cunostinte de baza privind limbajul C#.