5

社内ツールで GUI パーツとして使用するクロスプラットフォーム エディター コントロールが必要です。コントロールは商業的かもしれませんが、妥当な価格です。

必要な機能:

  • プラットフォーム: Win32、OS X、Linux
  • UTF-8 のサポート
  • テキスト スタイル (または少なくとも色) に対するきめ細かいランタイム コントロール
  • 通常のひどい肥大化のない素敵な低レベルのプレーンな C API
  • これらの機能を使用することを妨げてはなりません (自分で実装する必要があるとしても):
    • 元に戻す/やり直し
    • コピーペースト
    • テキスト内のクリック位置に応じたコンテキスト メニュー
    • テキスト内のカーソル位置に応じたツールバー
    • テキスト内のカーソル位置に応じたサイドバー パネル

実際には、単純な制御ではなく、クロスプラットフォームの GUI ライブラリ全体が必要です。

破棄されたオプション:

  • シンティラと子孫
  • FLTK
  • Foxツールキット
  • gtkソースビュー

アップデート:

注: 私はここでいくつかの書きかけの破棄理由を書き込んでしまいました。申し訳ありません。Scintilla は確かに OS X で動作します。ただし、正しく理解できれば、Scintilla の API は C++ で記述されています。

使用事例:

私の使用例は、ユーザーが自由にコピーして貼り付けたり、必要に応じてテキストを直接入力したりできるカスタムの「半固定」ロジック エディターを作成することです。しかし、テキスト構造は論理ツリーの厳格な自然言語表現です (本質的に AST に似ています)。私は、メインのオーサリング ツールとして使用する (手動でロジックを入力する代わりに) インテリセンスのようなもの (またはコード テンプレートのようなもの) を作成する予定です。

ところで、ストレージ形式はプレーンテキストではなく、言及された論理ツリーの内部表現 (コメントや空白などのメタ情報を含む) になります。

したがって、テキストを必要な色でレンダリングするために必要なすべての情報を自分で持っています。外部レクサーなどは必要ありません。

4

4 に答える 4

3

John が書いたように、Scintilla は OS X で動作することが知られています。
現在、それはリッチ テキスト コンポーネントではありません。これはソース コード エディターです。テキストの任意のセグメントに任意の色を適用することはできません。レクサーを使用してコンテンツのスタイルを設定します。

ユースケースが何であるかを教えてくれませんでした。

[編集] ユースケースを追加していただきありがとうございます。


免責事項1: 私はScintilla を「売る」つもりはありません。私がよく知っているコンポーネントについての情報を提供しようとしているだけです興味深いコンポーネント (またはそうではない、それらの多くは Win32 専用です)。
免責事項 2: Win32 プラットフォーム以外で Scintilla を使用した経験はありません。

しかし、ソース ツリーを見ると、scintilla/macosx フォルダーが表示されます。特に、main.cpp ファイルを含む SciTest サブフォルダーがあります。拡張にもかかわらず、私には純粋な C のように見えます。したがって、C で Scintilla を使用する方法の例になります。

設計上、Scintilla API は非常に制限されていることに注意してください。最初は、メッセージを送信することによって、ほとんどの従来の Win32 コンポーネントとして使用されるように作成されました。Scintilla ドキュメントページには、これらのメッセージとそのパラメータのみがリストされています。main.cpp の例では、MacOS X スタイルのコンポーネントでウィンドウを作成し、次のような行でコマンドを送信しますscintilla->WndProc(SCI_STYLESETFORE, 0, 0x808080);

必要なすべての機能を備えているとは言いませんし、MacOS X で問題なく動作するとは言いませんが、実験して (または適応の作者に尋ねて) 確認する必要があります。
また、Scintilla はツールバーもサイドバー パネルも提供しません (これはアプリケーション自体に属します)。しかし、これらのサイドコンポーネントをコンテキストに保つのに役立つ十分な通知を提供できると思います.
また、構文に合わせて特定のレクサー (ここでは C++) を作成する必要があります。他のレクサーがどのように機能するかを見れば、難しくありません。おそらく、出発点として使用するのに十分近い言語のものが見つかるでしょう。
おそらく興味深いのは、ドキュメントの一部を読み取り専用に設定する機能ですが、これは完全にはテストされていないと思います。

HTH。

于 2008-10-13T14:14:09.133 に答える
2

シンチラと子孫(OS Xなし)

ただし、scintillaはOSXで動作します。


GTK +をGtkTextView、またはQtで試すことができQTextEditます。

于 2008-10-13T06:34:16.017 に答える
2

FLTKのTextEditorウィジェットが必要なすべてです。シンプルでわかりやすく、使いやすく、utf8があり、テキストスタイルを簡単に作成できます。ほんの数行でエディタを作成できます。/test/editor.cxxの例を確認してください。OSXでも完全に機能します。さらに、必要なものはすべてここで説明されています:http ://www.fltk.org/doc-1.1/editor.html 。

于 2008-11-11T01:04:44.973 に答える
1

まあ、あなたはtkを使うことができるかもしれません- テキストウィジェットはおそらく優れていて柔軟です - tcl/tk wikiを見てください。

または、組み込み/ゲーム ツールキット ( Agarなど) を使用することもできますが、編集機能を備えたテキスト ウィジェットの方が扱いにくいと思います。

しかし、クロスプラットフォームの C GUI を作りたいと言ってから GTK を無視するのは、私には時間と労力の無駄のように思えます。おそらく、言語を切り替えたり、GTK を使用したりすることになるでしょう。

于 2008-10-13T20:34:24.090 に答える