Home  Contents

First steps in GTK#



فى هذه الجزئية سنخطو خطواتنا الأول مع GTK#

Simple example

سننشئ نافذة بسيطة ونموضعها فى منتصف الشاشة

 
using Gtk;
 
class SharpApp : Window {
 
    public SharpApp() : base("Center")
    {
        SetDefaultSize(250, 200);
        SetPosition(WindowPosition.Center);
        
        DeleteEvent += delegate { Application.Quit(); };
        
        Show();    
    }
    
    public static void Main()
    {
        Application.Init();
        new SharpApp();        
        Application.Run();
    }
}

هذا الكود يعرض نافذة بسيطة ويضعها فى منتصف الشاشة

 gmcs -pkg:gtk-sharp-2.0 center.cs

هكذا نقوم بعمل ترجمة للكود

 using Gtk;

نستدعى Gtk لنستطيع الوصول للصفوف داخلها بدون الحاجة لكتابة الإسم الكامل (نستطيع كتابة Window بدلا من Gtk.Window



 class SharpApp : Window {

تطبيقنا مبنى على الصف SharpApp اللذى يرث الصف Window

Our application is based on the SharpApp class. This class inherits from the Window class.

 public SharpApp() : base("Center")
 {
     ...   
 }

هذا هو المشيد، ونستدعى المشيد للأب عن طريق استخدام base

SetDefaultSize(250, 200);

نحدد مساحة النافذة

 SetPosition(WindowPosition.Center);

نحدد الموضع الى المنتصف

 DeleteEvent += delegate { Application.Quit(); };

نربط الحدث DeleteEvent “يحدث عن محاولة اغلاق التطبيق" ويقوم الdelegate بإغلاق التطبيق



 Show();

الآن نعرض النافذة، النافذة ليست ظاهرة حتى نستدعى الطريقة Show



 public static void Main()
 {
     Application.Init();
     new SharpApp();        
     Application.Run();
 }

الطريقة Main هى اللتى يبدأ عندها تنفيذ التطبيق، فتقوم ببدأ وتشغيل البرنامج



Icon

فى هذا المثال سنعرض ايكون للتطبيق، معظم مديرى النوافذ يعرضو الأيكون فى اعلى يسار شريط العنوان وايضا فى شريط المهام



icon.cs
 
using Gtk;
using System;
 
class SharpApp : Window {
 
    public SharpApp() : base("Icon")
    {
        SetDefaultSize(250, 160);
        SetPosition(WindowPosition.Center);
        SetIconFromFile("web.png");
        
        DeleteEvent += new DeleteEventHandler(OnDelete);
        
        Show();      
    }
    
    public static void Main()
    {
        Application.Init();
        new SharpApp();
        Application.Run();
    }

    void OnDelete(object obj, DeleteEventArgs args)
    {
        Application.Quit();
    }
}

هذا الكود يعرض ايكون للتطبيق

 SetIconFromFile("web.png");

الطريقة SetIconFromFile تحدد الأيكون الخاصة بالنافذة ويتم تحميلها من مسار ما على القرص (هنا ملف web.png فى المجلد الحالى)



 DeleteEvent += new DeleteEventHandler(OnDelete);

هذه طريقة اخرى لربط معالج حدث بالحدث (اوضح قليلا..)



 void OnDelete(object obj, DeleteEventArgs args)
 {
     Application.Quit();
 }

هذا معالج حدث للحدث delete-event


Icon

Figure: Icon



Buttons

فى المثال التالى سنحسن معرفتنا ب GTK# اكثر قليلا

buttons.cs

using Gtk;
 
class SharpApp : Window
{
    
    public SharpApp() : base("Buttons")
    {
        SetDefaultSize(250, 200);
        SetPosition(WindowPosition.Center);
        
        DeleteEvent += delegate { Application.Quit(); };

        Fixed fix = new Fixed();

        Button btn1 = new Button("Button");
        btn1.Sensitive = false;
        Button btn2 = new Button("Button");
        Button btn3 = new Button(Stock.Close);
        Button btn4 = new Button("Button");
        btn4.SetSizeRequest(80, 40);

        fix.Put(btn1, 20, 30);
        fix.Put(btn2, 100, 30);
        fix.Put(btn3, 20, 80);
        fix.Put(btn4, 100, 80);
        
        Add(fix);
        ShowAll();
    }
    

    public static void Main() 
    {
        Application.Init();
        new SharpApp();
        Application.Run();
    }
}

ننشئ 4 ازرار على النافذة، سنرى الفرق بين الحاويات والأبناء وسنقوم بتغير بعض خصائصهم



 Fixed fix = new Fixed();

fixed هى ويدجت غير ظاهر "حاوية" مهمته احتواء ويدجات اخرى



 Button btn1 = new Button("Button");

الزر هو ابن ليتم اضافته داخل حاوية

 btn1.Sensitive = false;

نوقف عمل الزر "غير قابل للضغط"

 Button btn3 = new Button(Stock.Close);

الزر الثالث يعرض صورة داخل المساحة الخاصة به، توفر GTK# مجموعة من الصور المبنية داخليا لإستخدامها

 btn4.SetSizeRequest(80, 40);

نعيد تحديد مساحة الزر

 fix.Put(btn1, 20, 30);
 fix.Put(btn2, 100, 30);
 ...

نضع الأزرار فى الحاوية fix

 Add(fix);

نجعل fix هو الحاوية الرئيسى للنافذة

 ShowAll();

تستدعى Show الخاصة بكل الأبناء لعرضهم على النافذة


Buttons

Figure: Buttons



فى هذا الفصل كتبنا برامجنا الأولى مع GTK#



Home ‡ Contents ‡ Top of Page

ZetCode last modified January 23, 2009 © 2007 - 2009 Jan Bodnar