برمجة القوائم و أشرطة الأدوات
إن GUIDE يمكنك من إنشاء نوعين من القوائم :
·
قوائم لشريط القوائم .
·
قوائم المحتويات .
يمكنك أن
تبني كلا النوعين من القوائم باستخدام محرر القائمة Menu Editor, حيث يتم الدخول إلى محرر القائمة من قائمة Tools أو من شريط أدوات محرر التخطيط. يوضح الشكل التالي شاشة محرر
القائمة.
v قوائم شريط القائمة
عندما تقوم
ببناء قائمة منسدلة فإن GUIDE يضيف عنوان هذه القائمة
إلى شريط قائمة GUI عندها فإنه يمكنك إنشاء أجزاء قائمة لهذه
القائمة. وكل جزء قائمة يستطيع أن يملك قائمة متسلسلة, تعرف أيضاً بالقائمة
الجزئية Submenu. وهذه الأجزاء يمكنها أيضاً أن تملك قائمة
متسلسلة و هكذا. عندما تريد بناء القائمة المنسدلة أولاً, فإن GUIDE وبشكل أوتوماتيكي يضيف شريط القائمة إلى الواجهة GUI. ويمكنك عندها أن تنفذ الخيارات التالية :
1.
إنشاء القائمة
أ.
ابدأ بقائمة جديدة و ذلك بالنقر على أداة New Menu. سيظهر عنوان القائمة في الجهة اليسارية من مربع الحوار كما يبين
الشكل.
ب. انقر على عنوان
القائمة لعرض اختيار خواص القائمة في الجهة اليمينية فيظهر لك الشكل الموضح.
ت. املأ حقلي Tag & Label للقائمة. على سبيل المقال , حدد Label إلى 'file' وحدد Tag إلى 'file_menu'. انقر خارج الحقل لتطبيق التغييرات التي أدخلتها.
إن العنوان
Label عبارة عن عبارة نصية تطلق على عنوان النص
لجزء القائمة. و لعرض الحرف '&' في العنوان استخدم حرفين '&&' في العبارة النصية. إن استخدام الكلمتين default & remove (حالة حساسة) ممنوعة, لاستخدام إحداهما
كتسمية ضع خط مائل (backslash (\)) كسابقة قبل الكلمة. على سبيل
المثال , '\remove' يقود إلى remove. إن الحقل Tag هو عبارة نصية تعرف عنصر
القائمة. حيث يستخدم في شيفرة البرنامج لتعريف جزء القائمة و يجب أن يكون وحيداً
في الواجهة GUI.
2.
إضافة أجزاء إلى
القائمة
استخدم أداة New Menu Item من أجل إنشاء أجزاء
القائمة التي سيتم عرضها في القائمة المنسدلة.
أ.
أضف جزء القائمة open تحت file وذلك باختيار File و النقر على الأداة New Menu Item. سيظهر عندها عنوان جزء قائمة مرقع مؤقت 'Untitled 2' كما هو موضح.
ب. ضع الحقلين Label و Tag أجزاء القائمة الجديدة ,
على سبيل المثال , ضع 'open' في Label وضع 'menu_file_open' في Tag, و انقر خارج الحقل من أجل تطبيق التغييرات التي نفذتها. عندها ستصبح
القائمة كما في الشكل.
يمكنك أيضاً :
§
اختيار مسرع لوحة المفاتيح لجزء القائمة المنبثقة Accelerator. ويكون ذلك بربط أحد المفاتيح مع ctrl. فإن هذا الاختيار سيكون مناسباً لجزء القائمة الذي لا يملك قائمة
جزئية. بعض المسرعات يمكن أن تستخدم لأغراض أخرى على نظامك و يمكن أن تعطي و تنتج
أفعالاً أخرى.
§
اعرض فاصل فوق جزء القائمة باختيار Separate above this item.
§
اعرض اختياراً يلي جزء القائمة عندما يتم فتح القائمة أولاً و ذلك
باختيار check
mark this item, حيث يشير الاختبار إلى
الحالة اللحظية لجزء القائمة.
§
تمكين هذا الجزء عندما تفتح هذه القائمة لأول مرة و ذلك باختبار Enable this item. يسمح للمستخدمين باختيار هذا الجزء عندما
تفتح القائمة لأول مرة. إذا لم تختر هذا الخيار فإن جزء القائمة يظهر فاهياً عند
فتح القائمة لأول مرة, و لا يستطيع المستخدم اختياره.
§
حدد عبارة نصية لإجرائية التنفيذ (الاستدعاء Callback) الذي ينجز الفعل المرافق مع جزء القائمة. إذا لم تقم بتخزين
الواجهة GUI فإن القيمة الافتراضية هي '%automatic'. عندما تخزن الواجهة GUI, ولم تغير هذا الحقل فإن GUIDE و بشكل أوتوماتيكي يضبط
القيمة باستخدام تركيب من الحقل Tag واسم ملف GUI. يعرض الزر View الاستدعاء, إذا كان
موجوداً في المحرر. و إذا لم تخزن الواجهة GUI فإن GUIDE يسمح لك أن تخزنها.
من أجل
إنشاء قوائم منسدلة إضافية , استخدم الأداة New Menu بنفس الطريقة التي قمت فيها ببناء القائمة File. على سبيل المثال , يوضح الشكل التالي قائمة منسدلة جديدة Edit.
4.
قوائم متسلسلة
لإنشاء قائمة
متسلسلة, اختر جزء القائمة الذي سيكون عنوان القائمة المتسلسلة, و عندها انقر
الأداة New Menu
Item. في المثال الموضح التالي
في الشكل فإن جزء القائمة Copy عبارة عن قائمة متسلسلة.
5.
تخطيط ثلاث القوائم
إن محرر
التخطيط الموضح في الشكل يوضح تخطيط ثلاث قوائم معرفة لشريط قائمة الشكل. عندما تقوم
بتنفيذ الواجهة GUI, فإن عناوين القوائم ستظهر في شريط القائمة
كما هو موضح بالشكل.
v قوائم المحتويات
يتم عرض قائمة
المحتويات عندما ينقر المستخدم يميناً على العنصر الذي تكون فيه القائمة معرفة. يمكنك
محرر القائمة من تعريف قوائم المحتويات و تضمينها مع العناصر في التخطيط.
1.
إنشاء القائمة الأم
إن كل
الأجزاء في قائمة المحتويات تكون أبناء للقائمة التي لا تعرض على شريط قائمة
الشكل. لتعريف قائمة الأم قم بما يلي :
أ.
اختر قوائم المحتويات Context Menus
من محرر القائمة كما في الشكل و اختر قائمة جديدة New Context Menus
من شريط الأدوات.
ب.
اختر القائمة و حدد Tag
لتعرف قائمة المحتويات (في المثال : axes_context_menu) كما في الشكل.
2.
إضافة أجزاء إلى قائمة المحتويات
استخدم أداة
New Menu Item
لإنشاء أجزاء القائمة التي سيتم عرضها في قائمة المحتويات.
أ.
أضف جزء قائمة Blue background color
إلى جزء القائمة باختيار axes_context_menu و النقر على أداة New Menu Item,
سيظهر عنوان جزء قائمة مرقم مؤقت 'Untitled' كما هو بالشكل.
ب. املأ الحقول Tag & Label لجزء القائمة الجديد. من أجل هذا المثال ضع في Label العبارة 'blue background color' وضع في Tag العبارة : 'blue background' و انقر خارج الحقل من أجل تطبيق التغييرات التي نفذتها. سيظهر لك الشكل الأخير.
يمكنك أيضاً أن تقوم
بما يلي :
§
عرض فاصل فوق جزء القائمة باختيار Separator above this item.
§
عرض اختبار يلي جزء القائمة عندما يتم فتح
القائمة أولاً و ذلك باختبار check
mark this item. الاختبار
حيث يشير إلى الحالة اللحظية لجزء القائمة.
§
تمكين هذا الجزء عندما تفتح هذه القائمة لأول مرة
وذلك باختيار Enable this item.
مما يسمح للمستخدمين باختيار هذا الجزء عندما تفتح القائمة لأول مرة. إذا لم تختر
هذا الخيار, فإن جزء القائمة يظهر فاهياً عند فتح القائمة لأول مرة و لا يستطيع
المستخدم اختياره.
§
حدد العبارة النصية لإجرائية التنفيذ (الاستدعاء callback)
التي تنجز الفعل المرافق لجزء القائمة. إذا لم تقم بتخزين الواجهة GUI فإن القيمة الافتراضية هي '%automatic'. عندما تخزن الواجهة GUI, ولم
تغير هذا الحقل, فإن GUIDE و بشكل أوتوماتيكي يضبط القيمة باستخدام
التركيب المكون من الحقل Tag واسم ملف GUI. إن الزر
View
يعرض الاستدعاء إذا كان موجوداً في المحرر, إذا لم تخزن الواجهة GUI فإن GUIDE يسمح
لك أن تخزنها.
§
افتح مراقب الخاصية, حيث يمكنك تغيير كل خصائص
القائمة بالنقر على زر More options.
3.
مشاركة قائمة المحتويات مع العنصر
في محرر التخطيط,
اختر العنصر الذي تقوم بتعريف قائمة محتويات له ثم استخدم مراقب الخاصية لضبط
خاصية العنصر UIContextMenu
إلى اسم قائمة المحتويات المطلوبة. يوضح الشكل خاصية UIContextMenu
من أجل عنصر محاور axes بخاصية Tag هي axes1. في ملف
M-file
للواجهة GUI,
أكمل التوابع الفرعية للاستدعاء من أجل كل جزء في قائمة المحتويات. كل استدعاء
ينفذ عندما يختار المستخدم جزء قائمة المحتويات المقابل.
إنشاء و بناء أشرطة الأدوات
إن GUIDE في كافة إصدارات الماتلاب قبل النسخة MATLAB 2012b لا
يزودك بأداة تمكنك من إضافة شريط أدوات, مع ذلك فإنك تستطيع إضافة شريط أدوات
بإضافة شيفرة لتابع الافتتاح opening function. أضف الشيفرة التالية إلى
تابع افتتاح الواجهة GUI لتولد شريط الأدوات
الموضح في الشكل , إن المثال ينشئ شريط أدوات (uitoolbar) ويرسم عليه أداة التبديل (uitoggletool).
ht=uitoolbar(hObject);
a(:,:,1)=rand(20);
a(:,:,2)=rand(20);
a(:,:,3)=rand(20);
htt=uitoggletool(ht,'CData',a,'TooltipString','Hello');
في تابع الافتتاح, hobject عبارة عن وسيط الدخل الذي
يحمل مقبض الشكل. إن خاصية CData تمكنك
من عرض صورة بلون حقيقي على أداة التبديل.
في الإصدار الأخير لبرنامج الماتلاب MATLAB 2012b تم إضافة أداة مميزة تسمح بإضافة شريط أدوات بسهولة أكبر.
برمجة القوائم
إن محرر القائمة يولد تابعاً جزئياً لاستدعاء فارغ لكل جزء قائمة ,
متضمناً عناوين قائمة.
أ.
برمجة عنوان القائمة
بسبب أن
النقر على عنوان القائمة يعرض وبشكل أوتوماتيكي القائمة تحته, فإنك من الممكن أن
لا تحتاج لبرمجة الاستدعاءات على مستوى العنوان. مع ذلك فإن الإستدعاء المرفق
بعنوان قائمة يمكن أن يكون مكاناً جيداً لتمكين أو عدم تمكين أجزاء القائمة
الموجودة ضمنه.
لاحظ المثال
الموجود في الصورة التالية , عندما يقوم المستخدم باختيار الخيار to file تحت القائمة edit للخيار copy. فإنه فقط الاستدعاء to file سيكون مطلوباً لإنجاز هذا
الفعل. افرض , أنك تود أن تسمح لعناصر فقط بالنسخ إلى ملف خارجي. يمكنك أن تستخدم
استدعاء Callback للجزء Copy لتمكين أو عدم تمكين الجزء to file, معتمداً على نوع العنصر المختار.
ب.
فتح مربع حوار من استدعاء القائمة
إن الاستدعاء
callback لجزء القائمة to file يمكن أن يتضمن الشيفرة
الموضحة فيما يلي ليعرض مربع حوار معياري لتخزين الملفات :
[file,path]=uiputfile('animinit.m','save
file name');
ت.
تحديث اختبار جزء القائمة
إن الاختبار
يكون مفيداً ليشير إلى الحالة اللحظية لبعض أجزاء القائمة. إذا اخترت check mark this item في محرر القائمة, فإن الجزء سيظهر بشكل أولي
مختبراً. في كل مرة يقوم المستخدم باختيار جزء القائمة, فإن الاستدعاء لهذا الجزء
يجب أن يشغل الاختبار على on أو off. يوضح المثال التالي لك كيف تفعل هذا بتغيير قيمة خاصية checked لأجزاء القائمة :
If strcmp(get(gcbo,'Checked'),'on')
set(gcbo,'Checked','off');
else
Set(gcbo,'Checked','on');
end
إن
التابع gcbo يسترجع مقبض العنصر الذي ينفذه الاستدعاء,
في هذه الحالة هو جزء القائمة. إن التابع strcmp يقارن عبارتين نصيتين و
يعيد القيمة المنطقية 1 (صحيح) إذا كانتا متماثلتين و عدا ذلك يعيد 0 (خطأ) .
إذا قمت
بضبط جملة المحاور لتكون مرئية عندما يفتح المستخدم الواجهة GUI لأول مرة, تأكد من اختيار مربع الاختيار check mark this item في محرر القائمة, لذا فإن الاختبار سيظهر
بعد تهيئة جزء القائمة show axes.