scieditor2 hoge version 28

2019/09/02 16:36 by yamasyuh68
  :追加された部分   :削除された部分
(差分が大きい場合、文字単位では表示しません)
scieditor2   hoge
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):

# 赤に白抜きでsaveを一秒表示

timer singleshot 例
https://www.programcreek.com/python/example/94717/PyQt4.QtCore.QTimer.singleShot


①scintilla 派生
・def loadfile を実装、エンコ情報等文字列を返す
・def getinfo() を実装して情報文字列を返す
・親では上の二つの場合に取得した文字列で mysbar(str,0) を呼ぶ

----
- ファイルロードをサブクラスに押しつける
枠的な部分とエディタ部分を分けるとしたらロードセーブは微妙な位置だ
しかし、タブでのマルチウインドウ管理という点ではタブに固有の動作は枠では実装しない方が良いような気がしてきた
- ロード、アウトライン解析はサブクラスに移すか。セーブはもともとサブクラスで実装してるし
- ロードはお気に入り、DD、ブラウザ、新規?の四パタン
枠からクラスにファイル名を渡す、クラスではロードしてアウトラインのデータモデルを作って親に返すことにするか
新規の場合はどうする?

----
- save時の処理
・新規の場合:タブ名の変更
・modefyフラグの消去
テータスバー保存メッセーステータスバーに保存のメッセージ --> この二つは親で実装
・modefyフラグの消去 --> これはサブクラス内
- サブのクラは親の関数を直接叩かない、を基本据えよう
そためにサブクラスでシグナルを実装しよう(面倒だけど)
その方がオブェクト指向になってると思うから

---
- ステータスバーとwinタイトルでサブクラス化するか
合計4箇所、クラスに文字列と表示場所を送る仕様
- 保存は赤い背景に白抜きで表示、時間でクリアする
色はラベルだから簡単にできると思う
時間はタイマーを使う
- QTimerか? ( QtCore )
QTimer.singleShot (int msec, callable receiver)
①文字列をもらって赤の白抜きで描画する関数を書く
②普通の色に戻す関数を書く
③①の最後でタイマー設定して②を呼び出す
①と②は再帰してもいい
文字列がNULLなら②の動作にするか??

## ラベルの文字背景色
①
Pythonlbl2 = QLabel('<font color="RED"><h1>かきくけこ<h1></font>', self)
Pythonlbl2 = QLabel('<body bgcolor="BLACK"><font color="RED"><h1>かきくけこ<h1></font></body>', self)

②QPalette,QColor ( QtGui)
pal=QLabel.palette()
pal.setColor( QPalette.Background , QColor(Qt.red) )
pal.setColor( QPalette.Foreground , QColor(Qt.white) )
QLabel.setPalette( pal )
QLabel.setText( *** )

カラーコード
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")

----------
- 新規文書を保存したらタグを変える
- 保存したらmodifyh表示を消すか、保存済みのメッセージを出す
- 保存ルーチンを見直し、try errors ristrict にして保存できない場合はその場所に飛ぶようにしたい ---> 保存はu8 に統一する方向

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

---

---
ctypes 文字列
https://www.haya-programming.com/entry/2018/11/05/023748

pthon3
str   unicode
byte  encoded u8,shiftjis ///

byte をデコードしたら unicode になる

---
- 保存
①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、ブラウザ、新規?の四パタン
    枠からクラスにファイル名を渡す、クラスではロードしてアウトラインのデータモデルを作って親に返すことにするか
    新規の場合はどうする?

  • save時の処理
    ・新規の場合:タブ名の変更
    ・ステータスバーに保存のメッセージ --> この二つは親で実装
    ・modefyフラグの消去 --> これはサブクラス内
  • サブのクラスは親の関数を直接叩かない、を基本に据えよう
    そのためにサブクラスでシグナルを実装しよう(面倒だけど)
    その方がオブジェクト指向になってると思うから

  • ステータスバーとwinタイトルでサブクラス化するか
    合計4箇所、クラスに文字列と表示場所を送る仕様
  • 保存は赤い背景に白抜きで表示、時間でクリアする
    色はラベルだから簡単にできると思う
    時間はタイマーを使う
  • QTimerか? ( QtCore )
    QTimer.singleShot (int msec, callable receiver)
    ①文字列をもらって赤の白抜きで描画する関数を書く
    ②普通の色に戻す関数を書く
    ③①の最後でタイマー設定して②を呼び出す
    ①と②は再帰してもいい
    文字列がNULLなら②の動作にするか??

ラベルの文字背景色


Pythonlbl2 = QLabel('<font color="RED"><h1>かきくけこ<h1></font>', self)
Pythonlbl2 = QLabel('<body bgcolor="BLACK"><font color="RED"><h1>かきくけこ<h1></font></body>', self)

②QPalette,QColor ( QtGui)
pal=QLabel.palette()
pal.setColor( QPalette.Background , QColor(Qt.red) )
pal.setColor( QPalette.Foreground , QColor(Qt.white) )
QLabel.setPalette( pal )
QLabel.setText( *** )

カラーコード
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")


  • 新規文書を保存したらタグを変える

  • 保存したらmodifyh表示を消すか、保存済みのメッセージを出す

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

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



ctypes 文字列
https://www.haya-programming.com/entry/2018/11/05/023748

pthon3
str unicode
byte encoded u8,shiftjis ///

byte をデコードしたら unicode になる


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


---> scieditor2