190904
実用化に近づいた(・∀・)ノ
①シンチラから文書を取得(u8)
②文書のエンコがu8ならそのままバイナリで保存
③取得した文書をデコード
④tryでエンコードしてバイナリで保存
⑤例外が発生したらメッセージを出して保存しないで終了
保存する前にエンコードしてしまいエラーを出させるところがポイント
エラーの場合はそもそも保存させないことにした
これでデータ破壊の可能性が無くなり安心です
エラー箇所はreplaceするメニューを追加してもいい
エラーが発生した文字をハイライト表示したい
ポジションはわかるのでそこにカーソルが飛ぶようにしてみたが、ポジションはバイト単位と思われ、文字単位のカーソルがズレる症状、どうしたら良い??
import os , sqlite3 , datetime
class openfiledb():
def __init__(self):
self.db=os.path.join(os.path.dirname(__file__) , 'openfile.db')
conn = sqlite3.connect(self.db)
c = conn.cursor()
c.execute('create table IF NOT EXISTS database(path PRIMARY KEY,line,times,date)')
c.close()
conn.commit()
conn.close()
def save(self,fname,line):
conn = sqlite3.connect(self.db)
c = conn.cursor()
date="{0:%Y%m%d}".format( datetime.datetime.now() )
try:
c.execute( "INSERT INTO database (path,line,times,date) VALUES (?,?,?,?)" , (fname,line,1,date ))
except:
c.execute('select times from database where path = ?',(fname, ))
times=c.fetchone()[0]+1
print(times)
c.execute('update database set line= ? ,times=? ,date=? where path = ? ', ( line, times, date ,fname ))
c.close()
conn.commit()
conn.close()
190904
190905
190906
self.wrap=0 if self.wrap==2 else 2
self.setWrapMode(self.wrap)
virtual bool QsciScintilla::findFirst ( const QString & expr,
bool re, bool cs, bool wo, bool wrap,
bool forward = true,
int line = -1,
int index = -1,
bool show = true,
bool posix = false,
bool cxx11 = false
)
findNext ( )
replace ( text )
文字列exprの最初の出現を検索し、exprが見つかった場合はtrueを返し、そうでない場合はfalseを返します。 exprが見つかると、それが現在の選択になります。
reがtrueの場合、exprは単純な文字列ではなく正規表現として解釈されます。
csがtrueの場合、検索では大文字と小文字が区別されます。
woがtrueの場合、検索では単語全体の一致のみが検索され、そうでない場合は一致するテキストが検索されます。
wrapがtrueの場合、検索はテキストの終わりを折り返します。
forwardがtrue(デフォルト)の場合、検索は開始位置からテキストの終わりまで順方向に行われ、そうでない場合はテキストの先頭まで逆方向に行われます。
lineまたはindexのいずれかが負の場合(デフォルト)、現在のカーソル位置から検索が開始されます。それ以外の場合、行lineの位置インデックスから検索が開始されます。
showがtrue(デフォルト)の場合、見つかったテキストはすべて表示されます(つまり、展開されます)。
posixがtrueの場合、正規表現は、(および)ではなくタグ付きセクションとして裸の(および)を解釈することにより、よりPOSIX互換の方法で処理されます。
cxx11がtrueの場合、正規表現はCxx11正規表現として扱われます。
GREPはまだ
for i in range( self.ui.tabWidget.count() ): # 重複チェック
if string==self.ui.tabWidget.widget(i).PropDict['fname'] :
self.ui.tabWidget.setCurrentIndex(i)
return
--->scieditor2