scieditor2 hoge version 35

2019/09/03 14:57 by yamasyuh68
  :追加された部分   :削除された部分
(差分が大きい場合、文字単位では表示しません)
scieditor2   hoge
# 保存実験
①cp932文書をロード
②シンチラから文書を取得してu8でデコードして、cp932にトライでエンコード
③エラーが出たらメッセージをsバーに表示して終了
④エラーが無ければファイルを**バイナリで開いてそのまま書き込む**

- うまくいけばこの方向で実装だな
- エラーの際はエラー文字をハイライトしたいけど
「〜」この波ダッシュで実験してみる


# 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")

----------

---

---

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

---
# 開いたファイルのDBを作る
- 開いたときに最後に閉じたときの行に飛ぶことが目的
- SQLで作る、ファイル名を重複不可のキーにする
開いた回数と行を保存する
- タブクローズ時と全体の終了時に現在行を取得してDBを更新する
- 既定フォルダ文書は対象としない
- 別ファイルのクラスにしよう
メソッドはsaveとloadの二つで良いか?
openfiledb.save( file-path , line-number )
openfiledb.load( file-path ) # returnValue line-num , times

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

      

保存実験

①cp932文書をロード
②シンチラから文書を取得してu8でデコードして、cp932にトライでエンコード
③エラーが出たらメッセージをsバーに表示して終了
④エラーが無ければファイルをバイナリで開いてそのまま書き込む

  • うまくいけばこの方向で実装だな
  • エラーの際はエラー文字をハイライトしたいけど
    「〜」この波ダッシュで実験してみる

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")





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

開いたファイルのDBを作る

  • 開いたときに最後に閉じたときの行に飛ぶことが目的
  • SQLで作る、ファイル名を重複不可のキーにする
    開いた回数と行を保存する
  • タブクローズ時と全体の終了時に現在行を取得してDBを更新する
  • 既定フォルダ文書は対象としない
  • 別ファイルのクラスにしよう
    メソッドはsaveとloadの二つで良いか?
    openfiledb.save( file-path , line-number )
    openfiledb.load( file-path ) # returnValue line-num , times

---> scieditor2