scieditor2 hoge version 80

2019/09/13 15:38 by yamasyuh68
  :追加された部分   :削除された部分
(差分が大きい場合、文字単位では表示しません)
scieditor2   hoge
@[TOC](項目なり)

# 検索実験
使った条件を保存する機能は必要だよな
複数行検索はできないと書いてあったが、置換文字列に \r\n を入れたら改行してくれた
検索文字列でも機能するか実験だな

# 文書取得の実験
短い文書で実験する
キーバインドに何か割り当てる
```
print( 'byte' , self.bytes( 0 , self.length() ) )  #  ---> bytearray
print( 'text' , self.text() )
```
# gPad の罫線機能を実装
# 検索条件保存
- 同じuiファイルにダイアログを混在させる注意!
①Replaceボタンの横に[S][L]ボタンを配置   # ボタンのスタイル変えよう
②[save] 名前を入れるだけのQtの YesCancel ダイアログを使う
文字列を三つ取得してsqlクラスにタプルで渡す
③[load] 名前一覧ダイアログ作成 クリックでパタン表示、ダブルクリックで確定終了
キャンセルボタンと削除ボタンを実装
④sqlクラスからテーブル全てを読み込んだデータをもらって名前だけ表示、クリックでデータも表示
⑤SQLで新しいテーブル作って保存、spattern : name , word , replace

- Scintilla_sql.py
```
    def __init__(self):
        c.execute('create table IF NOT EXISTS spattern( name , word , replace )')
    def searchload( self ): # search pattern
        conn = sqlite3.connect( self.db )
        c = conn.cursor()
        c.execute( 'select  *  from  spattern' )
        res=c.fetchall()
        c.close()
        conn.close()
        return res     # 結果を全て渡す、タプルのリスト
    def searchsave( self , lists ):
        conn = sqlite3.connect( self.db )
        c = conn.cursor()
        c.execute( "INSERT INTO spattern ( name , word , replace ) VALUES (?,?,?)" , lists )
        c.close()
        conn.commit()
        conn.close()
    def searchdell( self , key ):
        conn = sqlite3.connect( self.db )
        c = conn.cursor()
        c.execute( "DELETE FROM spattern WHERE name= ?" , key )
        c.close()
        conn.commit()
        conn.close()
```
- Scintilla.py
```
    def searchsave( self ) :
        text = QInputDialog.getText( self.ui.<s button> , r'( ´∀`)' , 'set Save Name' )
        if text[1]:
            self.db.searchsave( ( text[0] , self.ui.lineEdit.text() , self.ui.lineEdit_3.text() ) )
    def searcjload( self ) :
        < ダイアログを出す >
        < ダイアログのクラスを書く>



# gPad の罫線機能を実装

# search back
現在はこれだけfindNextで実装してるが正順は常にfindfirstになってるので再実装
①現在文字が選択されてるか確認、Noならそのまま
②選択されてたら解除してカーソルを範囲の先頭に置いてから実行

# タブにコンテキストつけて全て閉じるとか実装
- しかしこれなくても良い、簡単だけど
何となく次々と機能増やしたらいつかすごく遅くなってたりするんじゃないのかなって思ったりした
# GrEP
- 前に作ったルーチンを使う
ヒットしたファイルは新規タブを作って表示していく
ダブルクリックで飛びたい
- ディレクトリ選択型ダイアログ
http://qt-log.open-memo.net/sub/dialog__directory_dialog.html


# tryのexceptionを全て表示

# お気に入りのフォルダ sql 化
- sql 化する前に実験する
①treeview とボタンだけのダイアログをdesignerで作って実験する
ボタン:ok : cancel : insFolda
②ドラッグでファイルを追加できること、DDで順番を変更できること
③その順番でsqlで書き出しできること、読みこみできること



- **アウトラインクリック時の挙動も確認**
アウトライン行+10を第1行目にしてみたらどうだろう

# s-barのクラス設計
①init でラベルを配置する(本体のinitから移す)
②def disp( object , id )  最初に objec tのタイプを調べて str 以外は print_s で文字化する
③id : 0 1 2 --> 普通に表示
④id : 5 以降 --> 赤で表示
0  個別機能のメッセージ表示 save ok , exception 
1  個別昨日の結果表示(数字など)
2  文書の基本属性表示


----


# アウトライン
- **listWidgetの動作を確認**
データモデル作成は良いけど、クリック時の飛び方
- 行データの与え方
非表示で二列目も作る、二列目に行番号を入れる
foobar を参考に

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

----


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

----------
# ダイレクトコール
できません┐('д')┌
本家サイトで推奨してるので何とか導入したいんだけど
pythonは基本的にはポインタを意識しなくて良い言語だけど、知識がないと対応できない
むしろ型宣言がしっかりした言語の方が使いやすいのかもしれないと思ったりします
cのように、型が厳格なくせにキャストはやりたい放題とか( ´∀`)
出来た方がいらしたら是非教えていただきたいです


---

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

      

項目なり検索実験文書取得の実験検索条件保存

検索実験

使った条件を保存する機能は必要だよな
複数行検索はできないと書いてあったが、置換文字列に \r\n を入れたら改行してくれた
検索文字列でも機能するか実験だな

文書取得の実験

短い文書で実験する
キーバインドに何か割り当てる

print( 'byte' , self.bytes( 0 , self.length() ) )  #  ---> bytearray
print( 'text' , self.text() )

検索条件保存

  • 同じuiファイルにダイアログを混在させる注意!
    ①Replaceボタンの横に[S][L]ボタンを配置 # ボタンのスタイル変えよう
    ②[save] 名前を入れるだけのQtの YesCancel ダイアログを使う
    文字列を三つ取得してsqlクラスにタプルで渡す
    ③[load] 名前の一覧ダイアログ作成 クリックでパタン表示、ダブルクリックで確定終了
    キャンセルボタンと削除ボタンを実装
    ④sqlクラスからテーブル全てを読み込んだデータをもらって名前だけ表示、クリックでデータも表示
    ⑤SQLで新しいテーブル作って保存、spattern : name , word , replace

  • Scintilla_sql.py

    def __init__(self):
        c.execute('create table IF NOT EXISTS spattern( name , word , replace )')
    def searchload( self ): # search pattern
        conn = sqlite3.connect( self.db )
        c = conn.cursor()
        c.execute( 'select  *  from  spattern' )
        res=c.fetchall()
        c.close()
        conn.close()
        return res     # 結果を全て渡す、タプルのリスト
    def searchsave( self , lists ):
        conn = sqlite3.connect( self.db )
        c = conn.cursor()
        c.execute( "INSERT INTO spattern ( name , word , replace ) VALUES (?,?,?)" , lists )
        c.close()
        conn.commit()
        conn.close()
    def searchdell( self , key ):
        conn = sqlite3.connect( self.db )
        c = conn.cursor()
        c.execute( "DELETE FROM spattern WHERE name= ?" , key )
        c.close()
        conn.commit()
        conn.close()
    def searchsave( self ) :
        text = QInputDialog.getText( self.ui.<s button> , r'( ´∀`)' , 'set Save Name' )
        if text[1]:
            self.db.searchsave( ( text[0] , self.ui.lineEdit.text() , self.ui.lineEdit_3.text() ) )
    def searcjload( self ) :
        < ダイアログを出す >
        < ダイアログのクラスを書く>



# gPad の罫線機能を実装

# search back
現在はこれだけfindNextで実装してるが正順は常にfindfirstになってるので再実装
①現在文字が選択されてるか確認、Noならそのまま
②選択されてたら解除してカーソルを範囲の先頭に置いてから実行

# タブにコンテキストつけて全て閉じるとか実装
- しかしこれなくても良い、簡単だけど
何となく次々と機能増やしたらいつかすごく遅くなってたりするんじゃないのかなって思ったりした
# GrEP
- 前に作ったルーチンを使う
ヒットしたファイルは新規タブを作って表示していく
ダブルクリックで飛びたい
- ディレクトリ選択型ダイアログ
http://qt-log.open-memo.net/sub/dialog__directory_dialog.html


# tryのexceptionを全て表示

# お気に入りのフォルダ sql 化
- sql 化する前に実験する
①treeview とボタンだけのダイアログをdesignerで作って実験する
ボタン:ok : cancel : insFolda
②ドラッグでファイルを追加できること、DDで順番を変更できること
③その順番でsqlで書き出しできること、読みこみできること



- **アウトラインクリック時の挙動も確認**
アウトライン行+10を第1行目にしてみたらどうだろう

# s-barのクラス設計
①init でラベルを配置する(本体のinitから移す)
②def disp( object , id )  最初に objec tのタイプを調べて str 以外は print_s で文字化する
③id : 0 1 2 --> 普通に表示
④id : 5 以降 --> 赤で表示
0  個別機能のメッセージ表示 save ok , exception 
1  個別昨日の結果表示(数字など)
2  文書の基本属性表示


----


# アウトライン
- **listWidgetの動作を確認**
データモデル作成は良いけど、クリック時の飛び方
- 行データの与え方
非表示で二列目も作る、二列目に行番号を入れる
foobar を参考に

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

----


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

----------
# ダイレクトコール
できません┐('д')┌
本家サイトで推奨してるので何とか導入したいんだけど
pythonは基本的にはポインタを意識しなくて良い言語だけど、知識がないと対応できない
むしろ型宣言がしっかりした言語の方が使いやすいのかもしれないと思ったりします
cのように、型が厳格なくせにキャストはやりたい放題とか( ´∀`)
出来た方がいらしたら是非教えていただきたいです


---

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