|
|
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]]
| |
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.
Pentru a intelege exemplele prezentate in acest tutorial aveti nevoie doar de
cunostinte de baza privind limbajul C#.