Scintillanet هو التحكم في نماذج Windows ، غلاف ، وروابط لمكون تحرير رمز مصدر Scintilla متعدد الاستخدامات.
"بالإضافة إلى الميزات الموجودة في مكونات تحرير النصوص القياسية ، تتضمن Scintilla ميزات مفيدة بشكل خاص عند تحرير وتصحيح رمز المصدر. وتشمل هذه الدعم لتصميم بناء الجملة ، ومؤشرات الخطأ ، وإكمال الكود ونصائح الاتصال. الألوان والخطوط المتعددة. " - scintilla.org
يمكن أيضًا استخدام Scintillanet مع WPF باستخدام WindowsFormShost.
Scintillanet في التطوير النشط. إذا وجدت أي مشكلات أو لديك سؤال ، فلا تتردد في استخدام ميزة المشكلات في صفحة GitHub الخاصة بنا.
يمكن تنزيل الإصدارات المترجمة التي هي جاهزة للإنتاج من Nuget أو صفحة الإصدارات.
لأحدث وأكبر يمكنك بناء الفرع الرئيسي من المصدر باستخدام Visual Studio 2015.
يوجد مجتمع Scintillanet النابض بالحياة إلى حد ما على Github. نوصيك على وجه التحديد بإلقاء نظرة على المشاريع التالية:
يتم تتبع المشاريع الإضافية والرمز المقدمة من المستخدم في صفحة وصفات المستخدم المقدمة من WIKI.
هذا المشروع عبارة عن إعادة كتابة لمشروع Scintillanet الذي تم استضافته في CodePlex ويحتفظ به من قبل نفسي والآخرين. بعد سنوات عديدة من المساهمة في هذا المشروع ، قررت أن أفكر بشكل مختلف في واجهة برمجة التطبيقات التي أنشأناها وشعرت أنني أستطيع أن أجعل واحدة أفضل إذا كنت على استعداد للعودة إلى قماش فارغ. وبالتالي ، فإن هذا المشروع هو الخلف الروحي لـ Scintillanet الأصلي ولكنه كتب من نقطة الصفر.
واحدة من القضايا التي عانى منها Scintillanet تاريخيا هي حقيقة أن مراقبة Scintilla الأصلية تعمل على البايت ، وليس الشخصيات. لم تفسر الإصدارات السابقة من Scintillanet هذا ، وعندما تتعامل مع Unicode ، لا يساوي بايت واحد دائمًا حرفًا واحدًا. وكانت النتيجة واجهة برمجة تطبيقات تتوقع أحيانًا إزاحة البايت وفي أوقات أخرى تعويضات الشخصية. في بعض الأحيان ، ستعمل الأمور كما هو متوقع ، وفي بعض الأحيان قد تحدث حالات فشل عشوائية واستثناءات خارج المدى.
لا أكثر. كان أحد التركيزات الرئيسية لإعادة الكتابة هذا هو إعطاء Scintillanet فهم Unicode من الألف إلى الياء. تعمل كل واجهة برمجة تطبيقات الآن باستمرار مع إزاحة ونطاقات قائمة على الشخصيات تمامًا مثل. NET Provessorers. داخليًا ، نحافظ على رسم خرائط للشخصية لإزاحة البايت (والعكس صحيح) ونقوم بكل الترجمة لك حتى لا تحتاج إلى القلق بشأن ذلك. لا مزيد من الاستثناءات خارج المدى. لا مزيد من الارتباك. لا مزيد من الألم. إنه يعمل فقط.
كانت قضية Scintillanet الأكثر شعبية هي الارتباك الذي يوزع Scintillanet DLL ومكونه الأصلي ، DLL Scilexer. Scintillanet هو غلاف. بدون scilexer.dll التي تحتوي على وظيفة scintilla الأساسية ، لا شيء. كمكون أصلي ، يجب تجميع scilexer.dll بشكل منفصل لإصدارات 32 و 64 بت من Windows. لذلك كان في الواقع ثلاثة DLLs كان على المطورين الشحن مع تطبيقاتهم.
أثبت هذا نقطة الألم لأن المطورين لا يرغبون في توزيع العديد من المكتبات أو يريدون وضعها في مواقع بديلة من شأنها أن تكسر آليات تحميل DLL التي يستخدمها Pinvoke و Scintillanet. كما أنه يسبب الصداع أثناء وقت التصميم في Visual Studio لنفس الأسباب.
لمعالجة هذا scintillanet الآن يدمج نسخة 32 و 64 بت من scilexer.dll في scintillanet dll. كل ما تحتاجه لتشغيل scintillanet في مكتبة واحدة. بالإضافة إلى تهدئة الألم المذكور أعلاه هذا الآن يجعل من الممكن لنا إنشاء حزمة nuget scintillanet.
كان الهدف الآخر من إعادة الكتابة هو قبول واجهة برمجة تطبيقات Scintilla الأصلية لما هو عليه وعدم محاولة إجباره على واجهة برمجة تطبيقات على غرار .NET عندما لا ينبغي أن يكون أو لا يمكن أن يكون. مثال جيد على ذلك هو كيفية استخدام Scintillanet للمؤشرات للوصول إلى الخطوط ، ولكن لا تعاملها على أنها مجموعة .NET. الخطوط الموجودة في عنصر التحكم Scintilla ليست عناصر في مجموعة. لا يوجد أي واجهة برمجة تطبيقات لإضافة أو إدراج أو إزالة خط في Scintilla ، وبالتالي لا نحاول إنشاء واحدة في Scintillanet. هذه الانحرافات عن .NET Convention أمر نادر الحدوث ، ولكن يتم القيام به للحفاظ على أي وثائق Scintilla الأصلية ذات الصلة بالركب المدار وتجنب المواقف التي تكون فيها محاولة إجبار واجهة برمجة التطبيقات الأصلية على واحدة أكثر إضرارًا من المفيد.
ملاحظة: هذا لا يعني أن ScintillAnet لا يمكنه إضافة أو إدراج أو إزالة الخطوط. ومع ذلك ، يتم التعامل مع هذه العمليات كتغييرات نصية ، وليس تغييرات في الخط.
يتم تضمين وثائق API الكاملة مع جميع حزمنا. بالإضافة إلى ذلك ، هناك وثائق مكثفة في مشروع Wiki الذي يحتوي على وصفات للمهام والأسئلة المشتركة. إذا كنت جديدًا على Scintillanet ، فإن الويكي مكان جيد للبدء.
كما هو مذكور سابقًا في ميثاق المشروع ، تم بذل جهد كبير للحفاظ على واجهة برمجة تطبيقات Scintillanet تتكون من API الأصلي Scintilla. على هذا النحو ، لا تزال وثائق Scintilla الأصلية موردًا قيمًا لتعلم بعض الميزات الأعمق.
بشكل عام ، سوف يخطط واجهة برمجة التطبيقات الخاصة بهم إلى طرقنا التالية:
SCI_GETTEXT و SCI_SETTEXT(value) ، ستقوم بتخطيط خاصية مسماة بالمثل مثل Text .SCI_INDICSETFORE(indicatorNumber, ...) أو SCI_STYLEGETSIZE(styleNumber, ...) ، من خلال مؤشر مثل Indicators[0].ForeColor Styles[0].Size يتمتع التحكم الأصلي Scintilla عادةً بتقديم قيم المدخلات إلى داخل النطاقات المقبولة بدلاً من إلقاء الاستثناءات ، ولذا فقد حافظنا على هذا السلوك في Scintillanet. على سبيل المثال ، تتطلب طريقة GotoPosition وسيطة position الحرف. إذا كانت هذه القيمة أقل من صفر أو الماضي في نهاية المستند ، فسيتم تثبيتها إما على 0 أو TextLength بدلاً من رمي مكتب OutOfRangeException . هذا يميل إلى أن يؤدي إلى استثناءات أقل ، ولكن نفس النتيجة المطلوبة.
ترخيص معهد ماساتشوستس للتكنولوجيا (MIT)
حقوق الطبع والنشر (C) 2017 ، Jacob Slusser ، https://github.com/jacobslusser
يتم منح الإذن بموجب هذا ، مجانًا ، لأي شخص يحصل على نسخة من هذا البرنامج وملفات الوثائق المرتبطة به ("البرنامج") ، للتعامل في البرنامج دون تقييد ، بما في ذلك على سبيل المثال لا الحصر حقوق استخدام الأشخاص ونسخها ودمجها ودمجها وتوزيعها وتوزيعها على ما يلي:
يجب إدراج إشعار حقوق الطبع والنشر أعلاه وإشعار الإذن هذا في جميع النسخ أو الأجزاء الكبيرة من البرنامج.
يتم توفير البرنامج "كما هو" ، دون أي ضمان من أي نوع ، صريح أو ضمني ، بما في ذلك على سبيل المثال لا الحصر ضمانات القابلية للتسويق واللياقة لغرض معين وعدم الانفجار. لا يجوز بأي حال من الأحوال أن يكون المؤلفون أو حاملي حقوق الطبع والنشر مسؤولاً عن أي مطالبة أو أضرار أو مسؤولية أخرى ، سواء في إجراء عقد أو ضرر أو غير ذلك ، ناشئة عن أو خارج البرنامج أو الاستخدام أو غيرها من المعاملات في البرنامج.