|
|
| 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#.