[[PSSdev]] #contents PssEditor7 仕様書 * UI [#qe5b9726] ** キーボード操作 [#iab7c65b] フォーカスに応じてキーボード操作が多少異なる. |''キーボード操作''||''正解文・発音記号領域''|''問題文・ヒント・解説文領域''|''それ以外''| |Enter||次の問題|改行|なし| |Ctrl+Enter||->|->|次の問題| |Ctrl+Shift+Enter||->|->|前の問題| |Down||次の正解項目|下の行へ移動|なし| |Up||前の正解項目|上の行へ移動|なし| |Ctrl+Down||->|->|次の問題| |Ctrl+Up||->|->|前の問題| |PageDown||->|->|次の問題| |PageUp||->|->|前の問題| -> は右と同じ * 問題集の操作 [#w6c00943] ** データの所在 [#jadaee62] - 未編集のデータは Doc::m_qid_table と MainFrame::db_ により表現される.実際には View がオーナーデータのためにキャッシュしながら保持する. - 編集後のデータは Doc::m_QuestionMap が保持する. - 従って,表示する際には,Doc::m_QuestionMap 内にあるか確認し,あれば編集後データを表示し,なければ db_ のデータを表示する. - 新規に問題を追加する場合 -- とりあえず追加した時点で DB 上に実際に空問題を挿入する (pdb3::Question::addUserQuestion) -- 保存するときは従来通りの処理を行う. -- ''保存しないときはこの問題を削除する.'' --- 具体的には「保存しますか?」ダイアログで NO を選んだ場合. --- このとき Doc::m_NewQuestionIdList の各 qid を DB から削除する. ** 空問題の追加 [#d20fe9a3] - 空問題の qid は select max( (select max(qid) from question), 1000000 ) によって取得する.自作問題の qid は 1,000,000 以降なので. - 上記処理は pdb3::Database::addUserQuestion() で実装される. ** オープン時 [#fa8bc3db] - 末尾の問題が空問題でなければ,空問題を追加する. ** 編集時 [#v44fb85b] - 現在の問題が末尾の問題であれば,後ろに空問題を追加する. -- 現在の問題を編集し始めた場合,問題リストの末尾に空問題を追加する. ** クローズ・保存時 [#n518e1e8] - 末尾に空問題があれば,その問題を削除する. * QuickFinder [#la1ae05e] インクリメントサーチを実装するためのツールバー. ** 問題の新規作成時の動作 [#zb341f12] 問題文領域に文字列を入力すると,入力途中であってもその文字列で問題を検索して結果を一覧表示する.結果表示領域はリストビューであり,項目をクリックするとその問題を現在のビューに与える(コピーする). ** 問題の修正時の動作 [#q042ba55] ビュー上で問題を選択すると,QuickFinder に「同じ問題文を含む問題」を自動的に検索して一覧表示する.結果の項目をクリックすると,現在の問題を置き換えるかどうかを確認するダイアログが表示され,「はい」を押すと現在の問題を検索結果で置き換える(コピーする).