Scintillanetは、汎用性の高いScintillaソースコード編集コンポーネントのWindowsフォームコントロール、ラッパー、およびバインディングです。
「標準のテキスト編集コンポーネントにある機能と同様に、Scintillaには、ソースコードの編集とデバッグの編集とデバッグに特に役立つ機能が含まれています。これには、構文スタイリング、エラーインジケーター、コード完了、コールのヒントのサポートが含まれます。選択マージンには、デバッガーで使用されるもののようなマーカーが含まれています。フォント。」 -scintilla.org
Scintillanetは、Windowsformshostを使用してWPFで使用することもできます。
シンティラネットは積極的な開発中です。問題が見つかった場合、または質問がある場合は、GitHubページで問題機能を使用してください。
生産準備が整っているコンパイルされたバージョンは、Nugetまたはリリースページからダウンロードできます。
最新かつ最大の場合は、Visual Studio 2015を使用してソースからマスターブランチを構築できます。
ここにはかなり活気のあるシンチラネットコミュニティがここにあります。次のプロジェクトを見ることを具体的にお勧めします。
追加のプロジェクトとユーザー支援コードは、Wikiのユーザー送信レシピページで追跡されます。
このプロジェクトは、CodePlexでホストされ、私や他の人が維持するScintillanetプロジェクトの書き直しです。そのプロジェクトに何年も貢献した後、私たちが作成したAPIについて違った考え方をすることにし、空白のキャンバスに戻ってくると、より良いものを作ることができると感じました。したがって、このプロジェクトは、元のシンティラネットの精神的な後継者ですが、ゼロから書かれています。
シンチラネットが歴史的に苦しんでいた問題の1つは、ネイティブシンティラコントロールが文字ではなくバイトで動作するという事実です。 Scintillanetの以前のバージョンはこれを考慮していませんでした。Unicodeを扱っているとき、1つのバイトが常に1つの文字に等しいとは限りません。その結果、APIは、バイトオフセットが予想される場合があり、時には予想されるキャラクターのオフセットが予想されました。時には、物事が期待どおりに機能し、他の場合にはランダムな障害や範囲外の例外が発生する場合があります。
もうない。この書き直しの主要な焦点の1つは、シンティラネットにユニコードのゼロの理解を与えることでした。すべてのAPIは、.NET開発者が期待するように、キャラクターベースのオフセットと範囲で一貫して動作します。内部的には、文字のマッピングをバイトオフセット(およびその逆)を維持し、すべての翻訳を行うため、心配する必要はありません。これ以上の範囲外の例外はありません。これ以上混乱はありません。これ以上の痛みはありません。それはただ機能します。
2番目に人気のあるシンティラネットの問題は、シンティラネットDLLとそのネイティブコンポーネントであるScilexer DLLを分配する混乱でした。シンティラネットはラッパーです。 Core Scintillaの機能を含むScilexer.dllがなければ、それは何もありません。ネイティブコンポーネントとして、Scilexer.dllは、32および64ビットバージョンのWindowsについて個別にコンパイルする必要があります。そのため、実際には、開発者がアプリケーションで出荷しなければならなかったのは3つのDLLでした。
開発者は、多くのライブラリを配布したくないことや、PinvokeとScintillanetが使用するDLL負荷メカニズムを破壊する代替場所に配置したいと思うことが多いため、これが問題になりました。また、同じ理由でVisual Studioで設計時に頭痛を引き起こします。
このシンティラネットに対処するために、シンチラネットDLLにscilexer.dllの32および64ビットバージョンが埋め込まれました。 1つのライブラリでシンチラネットを実行するために必要なすべて。上記の痛みを癒すことに加えて、これにより、シンティラネットヌゲットパッケージを作成することができます。
書き直しのもう1つの目標は、元のScintilla APIをそれが何であるかについて受け入れることであり、それがそうでないか、そうでない場合にそれを.NETスタイルのAPIに強制しようとしないことでした。これの良い例は、シンティラネットがインデクサーを使用してラインにアクセスする方法ですが、それらを.NETコレクションとして扱わないことです。シンチラコントロールのラインは、コレクション内のアイテムではありません。 Scintillaにラインを追加、挿入、または削除するAPIはありません。したがって、Scintillanetで作成しようとはしません。 .NET条約からのこれらの逸脱はまれですが、マネージドラッパーに関連するネイティブシンティラドキュメントを維持し、元のAPIをより馴染みのあるAPIに強制しようとする状況を避けるために行われます。
注:これは、シンチラネットが線を追加、挿入、または削除できないということではありません。ただし、これらの操作は、行の変更ではなく、テキスト変更として処理されます。
完全なAPIドキュメントは、すべてのパッケージに含まれています。さらに、プロジェクトWikiには、一般的なタスクや質問のレシピがある広範な文書があります。シンティラネットが初めての場合、ウィキは始めるのに適した場所です。
プロジェクトチャーターで以前に述べたように、シンティラネットAPIをネイティブシンティラAPIで構成するために多大な努力が払われています。そのため、ネイティブのシンティラドキュメントは、より深い機能のいくつかを学ぶための貴重なリソースであり続けています。
一般的に言えば、彼らのAPIは次の方法で私たちのものにマッピングされます。
SCI_GETTEXTやSCI_SETTEXT(value)などの「GET」と「セット」が関連付けられているコールは、 Textなどの同様の名前のプロパティにマッピングされます。SCI_INDICSETFORE(indicatorNumber, ...)やSCI_STYLEGETSIZE(styleNumber, ...)などの「コレクション」のアイテムにアクセスするための数字の引数が必要なコールは、 Indicators[0].ForeColorまたはStyles[0].Sizeなどのインデックス係などのインデックスを介してアクセスされます。ネイティブのシンチラコントロールは、例外を投げるのではなく、許容範囲内に入力値をクランプする習慣があるため、その動作をシンチラネットで維持しました。たとえば、 GotoPositionメソッドには、文字position引数が必要です。その値がゼロ未満またはドキュメントの終わりを超えている場合、それは、 OutOfRangeExceptionを投げるのではなく、 0またはTextLengthのいずれかにクランプされます。これは、例外が少ない傾向がありますが、同じ望ましい結果が得られます。
MITライセンス(MIT)
Copyright(c)2017、Jacob Slusser、https://github.com/jacobslusser
このソフトウェアと関連するドキュメントファイル(「ソフトウェア」)のコピーを入手して、制限なしにソフトウェアを扱うために、このソフトウェアを制限する権利を含め、ソフトウェアのコピーをコピー、変更、公開、配布、販売する、ソフトウェアのコピーを許可する人を許可する人を許可することを含めて、許可が無料で許可されます。
上記の著作権通知とこの許可通知は、ソフトウェアのすべてのコピーまたはかなりの部分に含まれるものとします。
このソフトウェアは、商品性、特定の目的への適合性、および非侵害の保証を含むがこれらに限定されない、明示的または黙示的なものを保証することなく、「現状のまま」提供されます。いかなる場合でも、著者または著作権所有者は、契約、不法行為、またはその他の訴訟、ソフトウェアまたはソフトウェアの使用またはその他の取引に関連する、またはその他の契約、またはその他の請求、またはその他の責任について責任を負いません。