scieditor2 hoge version 183

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

# シンチラ入力系
- 大きめの文書で文書作成してたらかな漢字変換が凄く遅い
キーがキューにたまってる感じで変換前の入力だけで遅い
これじゃ使えん ┐('д')┌
- かな変換だけなのか実験してみる
- 秀丸とgPadで実験してみる
- QSCintilla はIMEがインラインな事もあって使ってるんだが
それ故の遅さなら複雑だなあ
IMEってそんなにストレスの多い仕組みなんかな??
- C++ で実装したら違うんだろうか?
NotePad++で実験してみるか

# モジュールの動的インポート

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で保存

# foobalt
- 演奏停止状態で終了したら曲を保存しないバグFIX

## VLC キャッシュ設定
あすたらびすた
http://blog.livedoor.jp/hasta_la_vista/archives/52213920.html
VLCのバッファ、キャッシュ設定
https://figfig-anime.blog.ss-blog.jp/2014-07-10

# 行頭空白削除も簡単だよな
範囲指定あるなしで分岐する仕組みは同じだな
機能をクラス化して分けた方が良いかも??

# お気に入りファイルを保存した場合は自動でビューを更新

---

---
# 派生クラスからのシグナルを一本化する

# 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)

      

項目なりシンチラ入力系モジュールの動的インポート保存時に状態も保存する強制的にU8で保存foobaltVLC キャッシュ設定行頭空白削除も簡単だよなお気に入りファイルを保存した場合は自動でビューを更新派生クラスからのシグナルを一本化するBugFix拡張子CSVでテーブルビュー表示Cython Numbaかな漢字モードでカーソルかえる IME変換モードget winhandle実験疑問タブにコンテキストつけて全て閉じるとか実装将来的にテキストのクリッカブルPython で定数を定義する定型句挿入gPad の罫線機能を実装GrEPtryのexceptionを全て表示お気に入りのフォルダ sql 化

シンチラ入力系

  • 大きめの文書で文書作成してたらかな漢字変換が凄く遅い
    キーがキューにたまってる感じで変換前の入力だけで遅い
    これじゃ使えん ┐('д')┌
  • かな変換だけなのか実験してみる
  • 秀丸とgPadで実験してみる
  • QSCintilla はIMEがインラインな事もあって使ってるんだが
    それ故の遅さなら複雑だなあ
    IMEってそんなにストレスの多い仕組みなんかな??
  • C++ で実装したら違うんだろうか?
    NotePad++で実験してみるか

モジュールの動的インポート

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で保存

foobalt

  • 演奏停止状態で終了したら曲を保存しないバグFIX

VLC キャッシュ設定

あすたらびすた
http://blog.livedoor.jp/hasta_la_vista/archives/52213920.html
VLCのバッファ、キャッシュ設定
https://figfig-anime.blog.ss-blog.jp/2014-07-10

行頭空白削除も簡単だよな

範囲指定あるなしで分岐する仕組みは同じだな
機能をクラス化して分けた方が良いかも??

お気に入りファイルを保存した場合は自動でビューを更新



派生クラスからのシグナルを一本化する

BugFix

  • アナライズが再構築のときはうまく作動しない

拡張子CSVでテーブルビュー表示

Cython Numba

公式チュート

かな漢字モードでカーソルかえる 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

tryのexceptionを全て表示

お気に入りのフォルダ sql 化

  • テキストの方が簡単に直せて良いかもだなあ
  • sql 化する前に実験する
    ①treeview とボタンだけのダイアログをdesignerで作って実験する
    ボタン:ok : cancel : insFolda
    ②ドラッグでファイルを追加できること、DDで順番を変更できること
    ③その順番でsqlで書き出しできること、読みこみできること


カラーコード
http://www.netyasun.com/home/color.html


---> scieditor2