فى هذه الجزئية من دروس GTK# .. سنتعامل مع شرائط الأدوات..
تقوم القوائم بتجميع كل الأوامر ولكن يقوم شريط الأدوات بتوفير وصول سريع لأكثر الأوامر المستخدمه من شريط القوائم
فى التالى سننشئ شريط ادوات بسيط
toolbar.cs using Gtk; using System; class SharpApp : Window { public SharpApp() : base("Toolbar") { SetDefaultSize(250, 200); SetPosition(WindowPosition.Center); DeleteEvent += delegate { Application.Quit(); }; Toolbar toolbar = new Toolbar(); toolbar.ToolbarStyle = ToolbarStyle.Icons; ToolButton newtb = new ToolButton(Stock.New); ToolButton opentb = new ToolButton(Stock.Open); ToolButton savetb = new ToolButton(Stock.Save); SeparatorToolItem sep = new SeparatorToolItem(); ToolButton quittb = new ToolButton(Stock.Quit); toolbar.Insert(newtb, 0); toolbar.Insert(opentb, 1); toolbar.Insert(savetb, 2); toolbar.Insert(sep, 3); toolbar.Insert(quittb, 4); quittb.Clicked += OnClicked; VBox vbox = new VBox(false, 2); vbox.PackStart(toolbar, false, false, 0); Add(vbox); ShowAll(); } void OnClicked(object sender, EventArgs args) { Application.Quit(); } public static void Main() { Application.Init(); new SharpApp(); Application.Run(); } }
المثال يشرح انشاء شريط ادوات و 4 ازرار
Toolbar toolbar = new Toolbar();انشاء شريط الأدوات
toolbar.ToolbarStyle = ToolbarStyle.Icons;سنعرض ايكونات فقط لانص -text-
ToolButton newtb = new ToolButton(Stock.New);انشاء الويدجت ToolButton مع صورة من ال stock
SeparatorToolItem sep = new SeparatorToolItem(); هذا العنصر فاصل بين مكونات شريط الأدوات لتقسيم لمجموعات منطقية
toolbar.Insert(newtb, 0); toolbar.Insert(opentb, 1); ...
اضافة الأزرار لشريط الأدوات
Figure: Toolbar
فى المثال التالى سننشئ شريطى ادوات، الكثير من التطبيقات لها اكثر من شريط ادوات.. سنعرض كيفية عمل ذلك فى GTK#
toolbars.cs using Gtk; using System; class SharpApp : Window { public SharpApp() : base("Toolbars") { SetDefaultSize(250, 200); SetPosition(WindowPosition.Center); DeleteEvent += delegate { Application.Quit(); }; Toolbar upper = new Toolbar(); upper.ToolbarStyle = ToolbarStyle.Icons; ToolButton newtb = new ToolButton(Stock.New); ToolButton opentb = new ToolButton(Stock.Open); ToolButton savetb = new ToolButton(Stock.Save); upper.Insert(newtb, 0); upper.Insert(opentb, 1); upper.Insert(savetb, 2); Toolbar lower = new Toolbar(); lower.ToolbarStyle = ToolbarStyle.Icons; ToolButton quittb = new ToolButton(Stock.Quit); quittb.Clicked += OnClicked; lower.Insert(quittb, 0); VBox vbox = new VBox(false, 2); vbox.PackStart(upper, false, false, 0); vbox.PackStart(lower, false, false, 0); Add(vbox); ShowAll(); } void OnClicked(object sender, EventArgs args) { Application.Quit(); } public static void Main() { Application.Init(); new SharpApp(); Application.Run(); } }
تطبيقنا يعرض شريطى ادوات
Toolbar upper = new Toolbar(); ... Toolbar lower = new Toolbar();
هنا ننشئ شريطى الأدوات
upper.Insert(newtb, 0); ... lower.Insert(quittb, 0);
كل منها له ازراره الخاصة
VBox vbox = new VBox(false, 2); vbox.PackStart(upper, false, false, 0); vbox.PackStart(lower, false, false, 0)
يتم ضمهم فى صندوق افقى الواحد تلو الآخر
Figure: Toolbars
فى المثال التالى سنشرح كيفية عدم تفعيل ازرار فى شريط الأدوات، استخدام شائع فى التطبيقات الرسومية.. على سبيل المثال عدم تفعيل زر الحفظ save عندما نقوم بحفظ كل التغييرات على ملفنا فى القرص، هكذا يعلم المستخدم ان تم حفظ كل التغييرات
undoredo.cs using Gtk; using System; class SharpApp : Window { private int count = 2; private ToolButton undo; private ToolButton redo; public SharpApp() : base("Undo redo") { SetDefaultSize(250, 200); SetPosition(WindowPosition.Center); DeleteEvent += delegate { Application.Quit(); }; Toolbar toolbar = new Toolbar(); toolbar.ToolbarStyle = ToolbarStyle.Icons; undo = new ToolButton(Stock.Undo); redo = new ToolButton(Stock.Redo); SeparatorToolItem sep = new SeparatorToolItem(); ToolButton quit = new ToolButton(Stock.Quit); toolbar.Insert(undo, 0); toolbar.Insert(redo, 1); toolbar.Insert(sep, 2); toolbar.Insert(quit, 3); undo.Clicked += OnUndo; redo.Clicked += OnRedo; quit.Clicked += OnClicked; VBox vbox = new VBox(false, 2); vbox.PackStart(toolbar, false, false, 0); vbox.PackStart(new Label(), false, false, 0); Add(vbox); ShowAll(); } void OnUndo(object sender, EventArgs args) { count -= 1; if (count <= 0) { undo.Sensitive = false; redo.Sensitive = true; } } void OnRedo(object sender, EventArgs args) { count += 1; if (count >= 5) { redo.Sensitive = false; undo.Sensitive = true; } } void OnClicked(object sender, EventArgs args) { Application.Quit(); } public static void Main() { Application.Init(); new SharpApp(); Application.Run(); } }
فى المثال لدينا زري undo, redo من ال stock .. وبعد مجموعة من الضغطات يتم الغاء تفعيلهم فيتحولو للون الرمادى
private int count = 2;المتغير count نستخدمه لتحديد اى الزرين هو المنشط او غير منشط
undo = new ToolButton(Stock.Undo); redo = new ToolButton(Stock.Redo);
لدينا زرين undo, redo انشئناهم والصور حصلنا عليها من ال stock
undo.Clicked += OnUndo; redo.Clicked += OnRedo;
نربط الحدث Clicked لكل منهما بمعالج الحدث المناسب له
if (count <= 0) { undo.Sensitive = false; redo.Sensitive = true; }
لتنشيط ويدجت نقوم بإسناد القيمة true للخاصية Sensitive و لعدم تنشيطه نسند قيمة false
Figure: Undo redo
فى هذه الجزئية شرحنا كيفية استخدام شريط الأدوات فى GTK#
Home Contents Top of Page