scieditor2 hoge version 77
scieditor2 hoge
@[TOC](項目なり)
# 検索の独自実装
- https://codeday.me/jp/qa/20190413/614861.html
ここをみた方が良いかな
- ヒットした個数が知りたい
内部的にはリストかタプルで個数を保持していると思う、ネクストはイテレートしてるのでは?
取得できるか調べてみる
```
def searchline( self ) :
search= < get text >
model=QModel///////
line , index = self.getCursorPosition()
item = QmodelIndex( '< 検索時のポジション >' , line )
model.appendrow( item )
counter = 0
for i in range( self.lines() ) :
if search in self.text( i ) :
string= '[ ' + str(i) + ' 行]' + self.text( i )[ : 10]
index = QmodelIndex( string , i )
model.appendrow( index )
counter += 1
if counter >50 :
counter=-1
break
self.ui.<outlineview>.setmodel( model )
```
- アウトラインビューにヒットした行を表示する
analyzetree を参考にコーディングする
analyzetreeは行文字を頭打ちにしてるが全て取得しなければならない
検索ウイジェットにボタンを追加「DispLine」
①行を取得する
②検索文字が含まれているかチェック
③含まれていたらツリービューのモデルにappendする -->(行)先頭から10文字、行
④50行超えたら append は中止
⑤ステータスバーにヒット行数を表示する
⑥ビューにモデルをセットする
- カスタムレクサの切替でも良いのでは無いか
検索文字をハイライト表示、htmlなら普通ですよね
# gPad の罫線機能を実装
# ボックス選択した範囲内の数字を加算する機能
## カーソル位置から縦に数値を加算
2
23
256
125
①カーソル位置から最初に出現する数値を取得
②下の行の同じ位置から数値を取得して加算
③数値が無い行まで繰り返し
④数値が無い行の同じカーソル位置に合計値を挿入
```
def calcline2 ( self ) :
line , index = self.getCursorPosition()
p = re.compile( r'\d+' )
n,sum = 0,0
while( 1 ):
res = p.search( self.text( line + n)[index : ] )
if res :
sum += int( res[0] )
n += 1
else :
break
print( sum )
self.insertAt ( str(sum) , line +n+1 , index )
```
# タブにコンテキストつけて全て閉じるとか実装
- しかしこれなくても良い、簡単だけど
何となく次々と機能増やしたらいつかすごく遅くなってたりするんじゃないのかなって思ったりした
# 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)
項目なりgPad の罫線機能を実装タブにコンテキストつけて全て閉じるとか実装GrEPtryのexceptionを全て表示お気に入りのフォルダ sql 化s-barのクラス設計アウトラインリロード時に状態を復元するお気に入りの読込ダイレクトコール
gPad の罫線機能を実装
タブにコンテキストつけて全て閉じるとか実装
- しかしこれなくても良い、簡単だけど
何となく次々と機能増やしたらいつかすごく遅くなってたりするんじゃないのかなって思ったりした
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