scieditor2 hoge version 32

2019/09/03 14:01 by yamasyuh68
  :追加された部分   :削除された部分
(差分が大きい場合、文字単位では表示しません)
scieditor2   hoge
s-barのクラス設計

# s-barのクラス設計
class mysbar():
def init(p):# p -> statusbr
 pにラベルを三つセットする
 self.label[]
def settext( str , id ) : # id -> 表示する場所、そのほか特殊メッセ
 if id<3 :
   self.label[id].setext(str)
 elif id==4 : # save message
   self.savemes()
 else:
   pass
def savemes(self):


----
- ファイルロードをサブクラスに押しつける
枠的な部分エディタ部分を分けるとしたらロードセーブは微妙な位置だ
しかし、タブでのマルチウインドウ管理という点ではタブに固有の動作は枠では実装しない方が良いような気がしてきた
- ロード、アウトライン解析はサブクラスに移すか。セーブはもともとサブクラスで実装してるし
- ロードはお気に入りDDブラウザ新規の四パタン
からクラスにファイル名を渡す、ではロしてアウトランのデータモデを作って親に返すこするか
新規場合はどうする
# ロードとアウトライン整理
- ロードはお気に入りDDブラウザ新規の四パタン
②と③の受けは統一したので①と④も揃えたい
①は多分簡単
受けの関数はファイル名を受け取るだけの作りだから、④は受けの関数でファイル名がNULLの場合として分岐させる
- **受けの関数名変えよう** --> loadfile()
- この関数で**最初に重複チェッ**をしよう
タブのリトをイテレタにしてタブの子供のsciのファイル比較する、一致したらそタブをアクティブにする

## アウトライン
- 解析ルーチンを派生クラスのメソッドにして親から呼ぶ、データモデルをselfで保持する(これは再解析を含む)、データモデルが戻り値
- 親に対してモデルを帰すメソッド実装、タブ切替時に呼ぶ
- かならずモデルを作る、解析すべきモノが無ければ「┐('д')┌」



----
- save時の処理
・新規の場合:タブ名の変更
・ステータスバーに保存のメッセージ --> この二つは親で実装
・modefyフラグの消去 --> これはサブクラス内

---
カラーコード
http://www.netyasun.com/home/color.html


## お気に入りの保存

settings.beginGroup("favorite")

for i in range(100):
 l = settings.value( ''.frmat() ,NULL)
 if not l :
   break
 l.splt('|')
settings.endGroup("favorite")

----------
- 保存ルーチンを見直し、try errors ristrict にして保存できない場合はその場所に飛ぶようにしたい ---> 保存はu8 に統一する方向

- アウトライン変更
まずウイジェットをビューにしてから、モデルをサブクラスで保持する仕様にする
これはバージョン管理だな

---

---

---
- 保存
①utf8
シンチラからゲットしたバイナリをそのままバイナリで書き込めば良い
②utf8以外
シンチラからゲットしたバイナリをデコードしてから保存時にそのコーデックにエンコードする(今の保存ルーチンのまま)
- エラー処理
上記①ではエラーは発生し得ない
②の場合エンコードエラーとなる可能性があるがその時はstrictにして保存させないようにする
エラー文字をハイライトにして飛ぶようにしたいな
- cp932の問題
現在エンコードは三つ、cp932,u8,u16を想定している
この中でエラー発生の可能性があるのはcp932だけだ、多分
オープンしたファイルがcp932でも保存時はu8にしてしまえば保存はものすごく楽だ
バイナリで書き込めば良いから
仕様として、読込は多種のコーデックに対応するけど書き込みはu8のみ、って割り切るか!!!!!!!


---

----
---> [scieditor2](https://mimemo.io/m/zeXgworpjz4K0Ek)

      

s-barのクラス設計

class mysbar():
def init(p):# p -> statusbr
pにラベルを三つセットする
self.label[]
def settext( str , id ) : # id -> 表示する場所、そのほか特殊メッセ
if id<3 :
self.label[id].setext(str)
elif id==4 : # save message
self.savemes()
else:
pass
def savemes(self):


ロードとアウトライン整理

  • ロードは①お気に入り②DD③ブラウザ④新規、の四パタン
    ②と③の受けは統一したので①と④も揃えたい
    ①は多分簡単
    受けの関数はファイル名を受け取るだけの作りだから、④は受けの関数でファイル名がNULLの場合として分岐させる
  • 受けの関数名を変えよう --> loadfile()
  • この関数で最初に重複チェックをしよう
    タブのリストをイテレータにしてタブの子供のsciのファイル名と比較する、一致したらそのタブをアクティブにする

アウトライン

  • 解析ルーチンを派生クラスのメソッドにして親から呼ぶ、データモデルをselfで保持する(これは再解析を含む)、データモデルが戻り値
  • 親に対してモデルを帰すメソッド実装、タブ切替時に呼ぶ
  • かならずモデルを作る、解析すべきモノが無ければ「┐('д')┌」

  • save時の処理
    ・新規の場合:タブ名の変更
    ・ステータスバーに保存のメッセージ --> この二つは親で実装
    ・modefyフラグの消去 --> これはサブクラス内

カラーコード
http://www.netyasun.com/home/color.html

お気に入りの保存

settings.beginGroup("favorite")

for i in range(100):
l = settings.value( ''.frmat() ,NULL)
if not l :
break
l.splt('|')
settings.endGroup("favorite")


  • 保存ルーチンを見直し、try errors ristrict にして保存できない場合はその場所に飛ぶようにしたい ---> 保存はu8 に統一する方向

  • アウトライン変更
    まずウイジェットをビューにしてから、モデルをサブクラスで保持する仕様にする
    これはバージョン管理だな




  • 保存
    ①utf8
    シンチラからゲットしたバイナリをそのままバイナリで書き込めば良い
    ②utf8以外
    シンチラからゲットしたバイナリをデコードしてから保存時にそのコーデックにエンコードする(今の保存ルーチンのまま)
  • エラー処理
    上記①ではエラーは発生し得ない
    ②の場合エンコードエラーとなる可能性があるがその時はstrictにして保存させないようにする
    エラー文字をハイライトにして飛ぶようにしたいな
  • cp932の問題
    現在エンコードは三つ、cp932,u8,u16を想定している
    この中でエラー発生の可能性があるのはcp932だけだ、多分
    オープンしたファイルがcp932でも保存時はu8にしてしまえば保存はものすごく楽だ
    バイナリで書き込めば良いから
    仕様として、読込は多種のコーデックに対応するけど書き込みはu8のみ、って割り切るか!!!!!!!


---> scieditor2