検索その3の続き。全然検索関係なくなってるな…一応検索に関係ある表示周りやってる関係なんだけど。

今回は範囲選択。マウスでの範囲選択から実装してキーでの範囲選択は同じ関数呼び出すだけかな。

 

/**
 * @struct select_point_t
 * @brief 選択位置情報
**/
typedef struct _select_column_t {

	editor::bsize_t column;	///< 文字位置
	editor::bsize_t line;	///< 行位置
} select_column_t;

/**
 * @struct select_area_t
 * @brief 選択情報
**/
typedef struct _select_area_t {

	bool select;			///< 選択状態フラグ
	bool rectangle;			///< 矩形選択フラグ
	select_column_t start;	///< 選択開始位置
	select_column_t end;	///< 選択終了位置
} select_area_t;

二つ定義を追加。あとは画面上の点から、テキストのどの部分かを計算する泥臭い関数を追加したらほぼ完成。

表示時に選択範囲内であれば色を変える…ここら辺はキーワード表示と一緒。

で、こんな感じ。

スクリーンショット 2019 03 22 3.09.47

矩形選択。

スクリーンショット 2019 03 22 5.07.50

部品が色々揃ってきたんで機能の実現がラクになってきた。

次はやっと検索が実装できるかな!

 

アプリケーションとして完成させるためには、、結構あるなー。

 

  • 範囲選択
    • カーソルキーでの範囲選択
    • マウスドラッグでの範囲選択
  • 検索
    • 単純検索
    • 正規表現検索
    • grep
  • 編集
    • undo / redo
    • copy / pasete
    • 画面分割の際の同時編集
  • 画面表示
    • 分割
    • タブバー
    • ステータスバー
    • ツールバー
    • 行の折り返し
  • Diff
  • カスタマイズ
    • カラーテーマ
    • キーバインド
    • 各種動作
    • マクロ?
  • アプリ
    • メニュー
    • アイコン
    • デザイン(多少)

 

この他にもありそうだけど。。とりあえずは上から順にやっていくつもり。

いくつかつけたい機能もあるんだけどね、当分先になりそう。。