scieditor2 hoge version 189
scieditor2 hoge
@[TOC](項目なり)
# IME変換について
ひらがなをたくさん入力した後の確定前なら、カーソルで変換箇所を指定できるのが普通
しかしscieditor2ではこれが出来ないことがわかってきた
短めに入力していけば良いのだけれども
結構不便ですわ ┐('д')┌
notepad++で動作確認してみようか
# URLlauncher
- 位置を変えれないと不便なので
デフォルトの設定保存、多分レジストリを使ってみる
from QtCore import QSettings
def closeEvent (self,e) :
settings = QSettings("OsamuApp", "URLlauncer")
settings.setValue("geometry", saveGeometry())
def init(self) :
try:
settings = QSettings("OsamuApp", "URLlauncer")
self.restoreGeometry( settings.value( "geometry" ) )
except :
self.mes.disp(1,'main loadini fail')
https://het.as.utexas.edu/HET/Software/PyQt/qsettings.html
# enhancer
- jit高速化ねた
テーブル参照が遅いんだった
selfのテーブルを関数内でもう一回定義してから参照すれば速くなりそう
## マスクをチェックした状態でDDすると落ちるバグ
- 前から気づいていたがチェックを外せば問題ないので放置していた
でも最近外し忘れて落ちることが多くそろそろFixしようと思った
- マスク画像はメイン画像と同じサイズで作る。新たに画像をDDすると当然マスク画像も作り直すけど、メイン画像表示後に多分作ってるんだと思う。なのでチェックがあると古いマスク画像を強引に適用して表示しようとするため落ちるんだと思う
- マスク画像作成のタイミングを調整しても良いけど、単純にDD時にプログラム的にチェックをはずしたほうが全体への影響が少ないように思う
確認したらDDではファイル名を取得する程度で、ここに動作を投げていた
def imagereset(self):
ここは次の三つから呼ばれている
drop DD
imagefix 変換等を固定
imagerestore 元画像に戻す
いずれも作ったマスクは必要ないからここではずすか
- QAbstractButton Class
QAbstractButton.setChecked (self, bool)
これで false にしてやれば良いだけだと思う
多分右側だけで良いと思うけど両方やっておこう
- imagereset って関数は良い関数だね
必要に迫られて作ったんだろうけど
**一度全体を見ながら書き直した方が良いんだろうけどなあ**
# foobalt
- 演奏停止状態で終了したら曲を保存しないバグFIX
## VLC キャッシュ設定
あすたらびすた
http://blog.livedoor.jp/hasta_la_vista/archives/52213920.html
VLCのバッファ、キャッシュ設定
https://figfig-anime.blog.ss-blog.jp/2014-07-10
# モジュールの動的インポート
191024
- 出来たけどふと考えた
スクリプト上に普通に import を書いてるんだから起動時に読み込むんじゃないだろうか
冒頭に書こうがクラスの中の関数に書こうが同じような???
実験してみるか
わざとエラーになるスクリプトを書いてみれば良い
# 保存時に状態も保存する
- 保存時に状態も保存する
本体の保存メッセージ処理の中で状態保存ルーチンを呼ぶだけ
def tabCloseMessage(self,e):の self.db.save() 参照
- tabCloseバグ
tabCloseMessageではかならず状態保存するが編集文書の保存確認をまずすること
close するタブのsciを取得して
if sci.sendScintilla( 2159 ) : # SCI_GETMODIFY = 2159
reply = QMessageBox.question(self, 'Confirm',"want to Refresh Tree ?",
QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes )
if reply == QMessageBox.Yes:
<保存> # 保存すれば自動的に状態保存になる
else :
状態を保存
- 編集文書の終了確認
シンチラの ismodfy フラグがあったはず、それを利用
tabcloseと終了処理時に呼び出す
# 強制的にU8で保存
# 行頭空白削除も簡単だよな
範囲指定あるなしで分岐する仕組みは同じだな
機能をクラス化して分けた方が良いかも??
# お気に入りファイルを保存した場合は自動でビューを更新
---
---
# 派生クラスからのシグナルを一本化する
# BugFix
- アナライズが再構築のときはうまく作動しない
# 拡張子CSVでテーブルビュー表示
# Cython Numba
[公式チュート](http://omake.accense.com/static/doc-ja/cython/src/userguide/tutorial.html)
- Numba AOT
https://qiita.com/yniji/items/5b191d4274f53c8f751a
- numbaによるfor文の高速化とjitの引数
https://qiita.com/nabenabe0928/items/a02964d8b48619b1e348
# かな漢字モードでカーソルかえる IME変換モード
ここもかな
http://www7a.biglobe.ne.jp/~tsuneoka/win32tech/7.html
IMEのON/OFF状態を取得したい。
https://teratail.com/questions/137570
```
from ctypes import WinDLL
from threading import Thread
from time import sleep
from tkinter import Tk
def ime_check():
user32 = WinDLL("user32")
imm32 = WinDLL("imm32")
while True:
hWnd = user32.GetForegroundWindow()
hIMC = imm32.ImmGetContext(hWnd)
print("hWnd:", hWnd, "hIMC:", hIMC, "ImmGetOpenStatus:", imm32.ImmGetOpenStatus(hIMC))
imm32.ImmReleaseContext(hWnd, hIMC)
sleep(1)
Thread(target=ime_check, daemon=True).start()
root = Tk()
root.mainloop()
```
## get winhandle
- Widgetのウィンドウハンドル(HWND)を取得する
Widgetのウィンドウハンドル(WindowsのHWND)を取得するには、Wid QWidget::wndId()またはWId QWidget::effectiveWinId()を使用する。
effectiveWinId()はそのWidgetが正当なウィンドウハンドルを持っていない場合は親を辿って有効なウィンドウハンドルを探す。
返す値はWIdというQtの型なのでプラットフォームに適した型にキャストして使用する。
# 実験
- analyze 計測したい、シンチラの関数→シンチラの方が速い(゚Д゚)
- 検索
置換文字列に \r\n を入れたら改行する
検索文字列では無視された
**複数行検索は独自実装だな**
- 文書取得の実験
print( 'byte' , self.bytes( 0 , self.length() ) ) # ---> bytearray
print( 'text' , self.text() ) # ---> str
- 保存時u8ならself.bytesでいけるのか??
- 高速化 numba 逆に遅くなった
- treeWidget に setModel() する --> できません ┐('д')┌
# 疑問
- 同じuiファイルに複数のダイアログを作れるか
- ダイレクトコール
できません┐('д')┌
本家サイトで推奨してるので何とか導入したいんだけど
pythonは基本的にはポインタを意識しなくて良い言語だけど、知識がないと対応できない
むしろ型宣言がしっかりした言語の方が使いやすいのかもしれないと思ったりします
cのように、型が厳格なくせにキャストはやりたい放題とか( ´∀`)
出来た方がいらしたら是非教えていただきたいです
# タブにコンテキストつけて全て閉じるとか実装
- しかしこれなくても良い、簡単だけど
何となく次々と機能増やしたらいつかすごく遅くなってたりするんじゃないのかなって思ったりした
# 将来的に
## テキストのクリッカブル
レクサーの機能みたいだけど
ダブルクリック位置の文字列を取り出して何かするのは実装出来そう
## Python で定数を定義する
https://maku77.github.io/python/syntax/const.html
- 定数用のクラスを作るって事みたい、使えるかな
## 定型句挿入
上のタブにリストを追加するか?絵文字は使うけどな
あんまり使わないかなあ・・・・
## gPad の罫線機能を実装
## GrEP
- 前に作ったルーチンを使う
ヒットしたファイルは新規タブを作って表示していく
ダブルクリックで飛びたい
- ディレクトリ選択型ダイアログ
http://qt-log.open-memo.net/sub/dialog__directory_dialog.html
## tryのexceptionを全て表示
## お気に入りのフォルダ sql 化
- **テキストの方が簡単に直せて良いかもだなあ**
- sql 化する前に実験する
①treeview とボタンだけのダイアログをdesignerで作って実験する
ボタン:ok : cancel : insFolda
②ドラッグでファイルを追加できること、DDで順番を変更できること
③その順番でsqlで書き出しできること、読みこみできること
----
---
カラーコード
http://www.netyasun.com/home/color.html
----
---> [scieditor2](https://mimemo.io/m/zeXgworpjz4K0Ek)
項目なりIME変換についてURLlauncherenhancerマスクをチェックした状態でDDすると落ちるバグfoobaltVLC キャッシュ設定モジュールの動的インポート保存時に状態も保存する強制的にU8で保存行頭空白削除も簡単だよなお気に入りファイルを保存した場合は自動でビューを更新派生クラスからのシグナルを一本化するBugFix拡張子CSVでテーブルビュー表示Cython Numbaかな漢字モードでカーソルかえる IME変換モードget winhandle実験疑問タブにコンテキストつけて全て閉じるとか実装将来的にテキストのクリッカブルPython で定数を定義する定型句挿入gPad の罫線機能を実装GrEPtryのexceptionを全て表示お気に入りのフォルダ sql 化
IME変換について
ひらがなをたくさん入力した後の確定前なら、カーソルで変換箇所を指定できるのが普通
しかしscieditor2ではこれが出来ないことがわかってきた
短めに入力していけば良いのだけれども
結構不便ですわ ┐('д')┌
notepad++で動作確認してみようか
URLlauncher
-
位置を変えれないと不便なので
デフォルトの設定保存、多分レジストリを使ってみる
from QtCore import QSettings
def closeEvent (self,e) :
settings = QSettings("OsamuApp", "URLlauncer")
settings.setValue("geometry", saveGeometry())def init(self) :
try:
settings = QSettings("OsamuApp", "URLlauncer")
self.restoreGeometry( settings.value( "geometry" ) )
except :
self.mes.disp(1,'main loadini fail')
https://het.as.utexas.edu/HET/Software/PyQt/qsettings.html
enhancer
- jit高速化ねた
テーブル参照が遅いんだった
selfのテーブルを関数内でもう一回定義してから参照すれば速くなりそう
マスクをチェックした状態でDDすると落ちるバグ
- 前から気づいていたがチェックを外せば問題ないので放置していた
でも最近外し忘れて落ちることが多くそろそろFixしようと思った - マスク画像はメイン画像と同じサイズで作る。新たに画像をDDすると当然マスク画像も作り直すけど、メイン画像表示後に多分作ってるんだと思う。なのでチェックがあると古いマスク画像を強引に適用して表示しようとするため落ちるんだと思う
- マスク画像作成のタイミングを調整しても良いけど、単純にDD時にプログラム的にチェックをはずしたほうが全体への影響が少ないように思う
確認したらDDではファイル名を取得する程度で、ここに動作を投げていた
def imagereset(self):
ここは次の三つから呼ばれている
drop DD
imagefix 変換等を固定
imagerestore 元画像に戻す
いずれも作ったマスクは必要ないからここではずすか - QAbstractButton Class
QAbstractButton.setChecked (self, bool)
これで false にしてやれば良いだけだと思う
多分右側だけで良いと思うけど両方やっておこう - imagereset って関数は良い関数だね
必要に迫られて作ったんだろうけど
一度全体を見ながら書き直した方が良いんだろうけどなあ
foobalt
- 演奏停止状態で終了したら曲を保存しないバグFIX
VLC キャッシュ設定
あすたらびすた
http://blog.livedoor.jp/hasta_la_vista/archives/52213920.html
VLCのバッファ、キャッシュ設定
https://figfig-anime.blog.ss-blog.jp/2014-07-10
モジュールの動的インポート
191024
- 出来たけどふと考えた
スクリプト上に普通に import を書いてるんだから起動時に読み込むんじゃないだろうか
冒頭に書こうがクラスの中の関数に書こうが同じような???
実験してみるか
わざとエラーになるスクリプトを書いてみれば良い
保存時に状態も保存する
-
保存時に状態も保存する
本体の保存メッセージ処理の中で状態保存ルーチンを呼ぶだけ
def tabCloseMessage(self,e):の self.db.save() 参照 -
tabCloseバグ
tabCloseMessageではかならず状態保存するが編集文書の保存確認をまずすること
close するタブのsciを取得して
if sci.sendScintilla( 2159 ) : # SCI_GETMODIFY = 2159
reply = QMessageBox.question(self, 'Confirm',"want to Refresh Tree ?",
QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes )
if reply == QMessageBox.Yes:
<保存> # 保存すれば自動的に状態保存になる
else :
状態を保存 -
編集文書の終了確認
シンチラの ismodfy フラグがあったはず、それを利用
tabcloseと終了処理時に呼び出す
強制的にU8で保存
行頭空白削除も簡単だよな
範囲指定あるなしで分岐する仕組みは同じだな
機能をクラス化して分けた方が良いかも??
お気に入りファイルを保存した場合は自動でビューを更新
派生クラスからのシグナルを一本化する
BugFix
- アナライズが再構築のときはうまく作動しない
拡張子CSVでテーブルビュー表示
Cython Numba
- Numba AOT
https://qiita.com/yniji/items/5b191d4274f53c8f751a - numbaによるfor文の高速化とjitの引数
https://qiita.com/nabenabe0928/items/a02964d8b48619b1e348
かな漢字モードでカーソルかえる IME変換モード
ここもかな
http://www7a.biglobe.ne.jp/~tsuneoka/win32tech/7.html
IMEのON/OFF状態を取得したい。
https://teratail.com/questions/137570
from ctypes import WinDLL
from threading import Thread
from time import sleep
from tkinter import Tk
def ime_check():
user32 = WinDLL("user32")
imm32 = WinDLL("imm32")
while True:
hWnd = user32.GetForegroundWindow()
hIMC = imm32.ImmGetContext(hWnd)
print("hWnd:", hWnd, "hIMC:", hIMC, "ImmGetOpenStatus:", imm32.ImmGetOpenStatus(hIMC))
imm32.ImmReleaseContext(hWnd, hIMC)
sleep(1)
Thread(target=ime_check, daemon=True).start()
root = Tk()
root.mainloop()
get winhandle
- Widgetのウィンドウハンドル(HWND)を取得する
Widgetのウィンドウハンドル(WindowsのHWND)を取得するには、Wid QWidget::wndId()またはWId QWidget::effectiveWinId()を使用する。
effectiveWinId()はそのWidgetが正当なウィンドウハンドルを持っていない場合は親を辿って有効なウィンドウハンドルを探す。
返す値はWIdというQtの型なのでプラットフォームに適した型にキャストして使用する。
実験
- analyze 計測したい、シンチラの関数→シンチラの方が速い(゚Д゚)
- 検索
置換文字列に \r\n を入れたら改行する
検索文字列では無視された
複数行検索は独自実装だな - 文書取得の実験
print( 'byte' , self.bytes( 0 , self.length() ) ) # ---> bytearray
print( 'text' , self.text() ) # ---> str - 保存時u8ならself.bytesでいけるのか??
- 高速化 numba 逆に遅くなった
- treeWidget に setModel() する --> できません ┐('д')┌
疑問
- 同じuiファイルに複数のダイアログを作れるか
- ダイレクトコール
できません┐('д')┌
本家サイトで推奨してるので何とか導入したいんだけど
pythonは基本的にはポインタを意識しなくて良い言語だけど、知識がないと対応できない
むしろ型宣言がしっかりした言語の方が使いやすいのかもしれないと思ったりします
cのように、型が厳格なくせにキャストはやりたい放題とか( ´∀`)
出来た方がいらしたら是非教えていただきたいです
タブにコンテキストつけて全て閉じるとか実装
- しかしこれなくても良い、簡単だけど
何となく次々と機能増やしたらいつかすごく遅くなってたりするんじゃないのかなって思ったりした
将来的に
テキストのクリッカブル
レクサーの機能みたいだけど
ダブルクリック位置の文字列を取り出して何かするのは実装出来そう
Python で定数を定義する
https://maku77.github.io/python/syntax/const.html
- 定数用のクラスを作るって事みたい、使えるかな
定型句挿入
上のタブにリストを追加するか?絵文字は使うけどな
あんまり使わないかなあ・・・・
gPad の罫線機能を実装
GrEP
- 前に作ったルーチンを使う
ヒットしたファイルは新規タブを作って表示していく
ダブルクリックで飛びたい - ディレクトリ選択型ダイアログ
http://qt-log.open-memo.net/sub/dialog__directory_dialog.html
tryのexceptionを全て表示
お気に入りのフォルダ sql 化
- テキストの方が簡単に直せて良いかもだなあ
- sql 化する前に実験する
①treeview とボタンだけのダイアログをdesignerで作って実験する
ボタン:ok : cancel : insFolda
②ドラッグでファイルを追加できること、DDで順番を変更できること
③その順番でsqlで書き出しできること、読みこみできること
カラーコード
http://www.netyasun.com/home/color.html
---> scieditor2