--- Title: scieditor2 1 Author: yamasyuh68 Web: https://mimemo.io/m/xn7vg4WjVJlAa1q --- 190728 - やっと始めた 何となく気が重くて手がつけづらかったけど - Qtバージョンのラストを起点に、新しく2のフォルダを作ってすっきりした状態でスタート - まずdesignerでUIの作り直し、左の二つのウイジェットをスプリッタでつなげて、それを右のタブとまたスプリッタでつなげて、全体をまたつなげて 少しdesignerの使い方がわかってきた気がする (・∀・)ノ - 最初にやりたかったのは**ロードセクションの改善** chardetに任せるようにしてたので、オリジナルの何パターンか試すバージョンに戻す しかしこのバージョンはwxで実装してたので、一部wxに戻ってコードをもらったりした - 読み込んだ文字バッファをシンチラにセットするのはsci.setText()なんだけど、これの大文字小文字がwxとQtでは違っていてエラーになったりした **面倒くさ!!!** - とりあえずファイルの読み込み・表示は出来たけど、次は何に手をつけるか・・ 地味に結構落ちるので、バグをつぶしていくのが先かもしれない やることを決めて一つづつこなしていこう --- 190729 - 読み込みの手直しはほぼ出来た ただ動作がおかしいところが結構出てきて手直し中 最初から書き直した方が良いような気もするがそこまでの意欲は無いんだよなあ でも設計は考え直した方が良いかもしれない 場当たり的なコードになってるから可読性も低いしバグも見つけづらい - 読み込み、複数文書管理、タブ管理、お気に入りとアウトライン解析 これくらいをしっかり考えて変数を見直すか 細かいエディタの機能はサブクラスに全部振ればいい - selfの変数は今は全てinitで書くようにしてるけど、シンチラは色んなところで書いている、こういうのはダメだよなあ┐('д')┌ # 改めて設計 1. 設定 結構悩ましいけどやっぱりiniにしよう generalでジオメトリかな favoriteでお気に入りファイル、00からの連番にしよう。閉じたときの行数も保存させて復元する タブを閉じたとき文書がお気に入り文書であればその時の行数を保存しておく いずれ検索条件も保存したいね 3. お気に入り リストをtreeviewにしてデータをそこに格納しておくことにしよう 終了時はリストを書き出す感じにする。現在行もここで管理保存する 4. アウトラインツリー これもtreeviewにする。アナライズをシンチラの派生クラスに実装してクラス内でDataModelを保存しておく。タブで文書が切り替わったら同時にtreemodelも切り替える 5. 開く保存 開くは新規作成のみ、あとはDDとお気に入り、ダイアログは出さない ・保存  新規ファイル:既定フォルダへの自動ネーミングのみ  既存ファイル:開いたエンコで上書き ・別名で保存  既定フォルダへ自動ネーミング、すぐフォルダを開いて選択 ・既定フォルダを開く ``` import subprocess FOLDER = r'C:\Users\ntaka\Dropbox\desktop' subprocess.Popen(['explorer', FOLDER]) ``` ・保存フォルダのサムネイルを実装したい 6.新規作成 タブを作ってそこにシンチラをのせるだけにする 管理上のフルパスはNone、エンコードはutf8、タブは*New*と表示 起動時は新規文書を一つ出す ファイルロード時に新規文書の存在を確認してそこが空ならそこにロードするようにする 7. ロード DDとお気に入りだけ 新規チェック、重複チェックする エンコ判定は今のまま、ステータスバーに表示する基本情報はここで取得する 変数は派生クラスのselfで辞書管理(今のまま) 文書をセットしたらすぐ派生クラス内でアナライズしてmodelDataを作成 本体にモデルを渡して本体でツリーにセットする **re-analyze**をいつでも呼べるようにしておくこと ---- 190731 # 雑件文書で落ちる件 アウトラインをアナライズするときに行をバッファに取得するがこのバッファが短すぎたことが原因だったと思われる サイズを増やしてとりあえず落ちなくはなった - 勿論これは解決になってない、根本的な書き直しが必要かもしれない - pythonはメモリ管理は基本言語に任せてるから、部分的に c的 な書き方をするときは扱いが難しい - SCI_GETLINECOUNT まずこれで確認してからバッファ確保だったか 時間がかかるから簡易的に1行256文字以内の想定で組んだんだったかも 考えたらアウトライン行の抽出目的、256文字以上のライン行はあり得ないから256以上ならパスすれば良かったんだ 64文字でも十分かも( ´∀`) ---- ---> [scieditor2 #](https://mimemo.io/m/zeXgworpjz4K0Ek)