RichStyle: The Angel is in The Detail.

برنامج Notepad2
لؤلؤة فضية في صدفة متقادمة

أكثر من عشر سنوات مرت على إطلاق مايكروسوفت إصدارها الأول من محرر النصوص البسيط الخاص بها: المفكرة Notepad. وحتى اليوم، لم يطرأ عليه أي تطوير أو تحسين يذكر. فلا يزال على حاله، بسيطاً متواضعاً دون أي رتوش!

برنامج Notepad2 برنامج بديل، يحاول توسيع إمكانات البرنامج الأصلي مع الحفاظ على المبدأ الذي قام عليه: البساطة.

برنامج مقاد بالمبادئ

إذن، هل بوسعنا القول إن تطبيقات مايكروسوفت مقادة بالمبادئ بدلاً من أن تكون مقادة باحتياجات المستخدمين؟

في الحقيقة، لا أعتقد ذلك.

البرمجيات التجارية، كأي منتَج تجاري، مقادة باحتياجات المستخدمين، وهذه هي حال كافة تطبيقات ويندوز التجارية، باستثناء ويندوز ذاته!

لماذا؟

لأن ويندوز صُمم ليكون بنية تحتية لتلك التطبيقات، وأي تحسن وظيفي يطرأ على تلك البنية التحتية يمكن أن يؤذي الأدوار الوظيفية للتطبيقات المستضافة عليها، وبالتالي أن يؤذي موقعها التنافسي في السوق! إذن؟ ليس ثمة فرصة حقيقية للتكامل الوظيفي في ويندوز.

ولذلك يظل برنامج المفكرة Notepad على حاله.

الآن، من جهة أخرى، في عالم الأعمال، ”المستهلك دائماً على حق“، أي حتى لو لم يكن كذلك! أعني انطلاقاً من مبادئ أو معايير معينة. بيد أنه في عالم صناعة البرمجيات، التي تبدو أشبه بالصناعات الكيميائية، نظراً لتعقيدها وطبيعتها الحساسة أولاً، ولتأثيرها العميق وغير المتوقع على الجنس البشري ثانياً، لا يمكنك اتباع هذه القاعدة ببساطة هاهنا.

إذ يمكن لمصمم برمجيات خبير أن يوفر للمستخدم أكثر بكثير مما قد يتصور ذلك المستخدم. يمكن لذلك المصمم أن يوفر للمستخدم قدرات ووظائف لم يكن للمستخدم أن يتصورها من قبل.

على سبيل المثال، لم أكن أتصور —بصفتي مستخدماً— أنه يمكن إظهار نص ثنائي الاتجاه في ملف نصي بسيط واحد، لذا لم أسأل نفسي إن كان ثمة حل لهذه المسألة أم لا. ولكن عندما رأيت حلاً كهذا لأول مرة في برنامج حقيقي، وهو برنامج GEdit، كنت ممتناً لمجتمع المصدر المفتوح للعون والحلول غير المتوقعة التي يوفرها.

مثال آخر هو الطريقة التي تظهر بها وظيفة البحث Find في Adobe Acrobat 7.0 و FireFox.

حقل «بحث» في شريط أدوات Adobe Acrobat
حقل بحث في شريط أدوات Adobe Acrobat

وعليه، فخلافاً للبرمجيات التجارية المقادة باحتياجات المستخدمين بالضرورة، تقاد البرمجيات مفتوحة المصدر بالمبادئ.

… خلافاً لكرة من الثلج تتدحرج بسرعة فائقة وبعشوائية، في حركة دائرية لا تتوقف، يبقى الوحيدُ القادر على الصمود في بيئة عاصفة كتلك؛ هو البطريق!

يمثل كل من Notepad2 و PunBB أفضل مثالين نموذجيين لمنتَج برمجي مقاد بالمبادئ.

ألا يبدو أنه يتعين عليك —كمستخدِم— التضحية ببعض المزايا والوظائف، لكي يبقى المنتَج البرمجي محكوماً بمبدأ كالبساطة على سبيل المثال؟

البساطة تستحق التضحية!

مراجعة

يتألف Notepad2 من مكونين اثنين:

مصمم —بمجمله— لويندوز فقط، ليبدو لؤلؤة فضية في صدفة متقادمة!

الجدول التالي سيوفر لك لمحة سريعة لمدى التحسينات التي انتهى إليها Notepad2 مقارنة بالمفكرة Notepad، والتي سأقترح بناء عليها المزيد من التحسينات.

برنامج المفكرة Notepad برنامج Notepad2
تلوين النصوص البرمجية
التعابير النظامية
التحديد المستطيل
نمط الاستبدال insert
ترقيم الأسطر
شريط أدوات
شريط معلومات بسيط (XP فقط)
استبدال 2k/XP فقط
دعم UTF-8 2k/XP فقط
ثنائية الاتجاه لا، ولكن يمكنك استخدام مفتاحي Ctrl+Shift لقلب اتجاه كافة الأسطر إلى اليمين.

متطلبات لبرنامج Notepad2

البحث والاستبدال

  1. إظهار وظائف البحث والاستبدال في شريط أدوات، تماماً كما هو الحال في FireFox و Adobe Acrobat 7.0. خيارات البحث (مربعات الاختيار check boxes) سوف تتحول إلى أزرار في شريط أدوات، كأزرار للتبديل، تماماً كزر التفاف النص Word Wrap في برنامج Notepad2 ذاته.
لقطة لبرنامج Notepad2 مزوداً بشريط أدوات.
برنامج Notepad2 - التصميم الحالي
نموذج أولي لواجهة استخدام محسنة لـ Notepad2.
نموذج أولي لواجهة استخدام محسنة لـ Notepad2
  1. بحث واستبدال متعدد الأسطر: كخيار يمكن التحكم فيه، من خلال زر في شريط أدوات البحث/الاستبدال.
  2. التمييز بالألوان لصيغ التعابير النظامية Regular Expressions في حقلي البحث/الاستبدال.
  3. الانتقال قُدُماً إلى سطر جديد (من خلال البحث/الاستبدال، أو الانتقال Go To نحو علامة مرجعية سابقة أو لاحقة) يجب أن تضع السطر الهدف في أعلى إطار Notepad2 قدر الإمكان، بدلاً من إظهار في أسفل الإطار كالعادة.

أوامر وخيارات

  1. كافة الأوامر المنضوية تحت القوائم File و Edit و Help ينبغي أن تكون قابلة للتخصيص في شريط الأدوات.
    هذه الأوامر تُستخدم كـ وظائف تشغيلية، تحتاج للتعامل معها باستمرار، كلما شغلت برنامج Notepad2.
  2. كافة الأوامر المنضوية تحت القوائم View و Settings، شاملة مربعات الحوار المنبثقة عنها، ينبغي تنظيمها في مربع حوار واحد مبوب يدعى Options، مع زر في شريط الأدوات للوصول إليه. قد أكتب المزيد حول مربع الحوار هذا مستقبلاً.
    هذه الأوامر تُستخدم كـ وظائف تحكم، ولن تحتاج للتعامل معها كثيراً، وإنما:
    • من حين لآخر أولاً: ولهذا ينبغي أن لا تكون جزءاً من عناصر الواجهة المباشرة.
    • وكلها معاً ثانياً: وبالتالي ينبغي أن تكون في لوحة تحكم واحدة.
رسم بياني يُظهِر صفين من الأوامر متوازيين عمودياً، الواحد تلو الآخر، أمام عين المسخدم؛ عين المستخدم أولاً، ثم الوظائف التشغيلية Operational Functions، ثم وظائف التحكم Control Functions.
ترتيب الأوامر

متفرقات

  1. اختصارات لوحة المفاتيح في تلميحات الأزرار.
  2. إظهار/إخفاء علامات المسافة/التبويب/الفقرة.
  3. تنظيف المسافات (إزالة المكرر منها).
  4. معاينة الطباعة.
  5. إحصائيات المستند: تماماً كما هو الحال في GEdit:
    • عدد الأسطر
    • عدد الكلمات
    • عدد الأحرف مع المسافات
    • عدد الأحرف بدون مسافات
    • عدد البايتات

متطلبات لمكتبة Scintilla

دعم ثنائية الاتجاه

كاقتراح: إذا كان الحرف في كامل المستند عربياً، ينبغي إظهار شريط التمرير في الجانب الأيسر من إطار التطبيق.

لقطة لـ Notepad2 تظهر افتقاره لدعم ثنائية الاتجاه.
مكتبة Scintilla لا تدعم ثنائية الاتجاه
نموذج أولي لـ Notepad2 يظهر دعم ثنائية الاتجاه.
نموذج أولي لـ Notepad2 يظهر دعم ثنائية الاتجاه

في الواقع، كنت أعتزم تطوير واجهة عربية لـ Notepad2، بيد أني أدركت أنه من غير المنطقي توفير واجهة عربية لتطبيق يفتقر لدعم العربية في صميمه.

ليس من المنطقي تطوير واجهة عربية بينما لا يمكن إظهار النص العربي في الاتجاه الصحيح.

متفرقات

  1. تمييز شيفرات CSS و JS المضمنة في ملفات HTML.
  2. دعم ملفات صدفة لينكس .sh.
  3. التعرف على الروابط: كخيار، تماماً كخيار التفاف النص Word Wrap.
  4. مدقق إملائي: مع القدرة على التمييز بين اللغات الطبيعية ولغات البرمجة.