[ todo ] player version 89
player todo
@[TOC](目次)
----
----
## もろもろ
- flac のlengthが取得できないバグ
- treeのcase sensitive 解消
.lower()
- pause 対応
・timerをすとっぷさせることにした
isActive()ってメソッドを使う
- リストのクリックでタグ情報を表示
treeclickを真似るだけで良いと思う
そのまま使えないかな?
- それとあわせてキーも受け付けるようにしたい up down
- リストのキ受け付け up down
keypresevent に対して行選択を変更するだけか
今はdellキーに対応してるから増やすだけで良いような?
- リスト読み込み時のアルバム行のスパン
・読み込んだ後で、本体に戻って本体からリストビューのサブラスをたたく
第2カラムが''の行を find して、戻ったリストについてスパン
def albumspan():
list=self.current['list'].model().findItems('',Qt.MatchExactly,2)
for l in list:
< l.row() を span>
・データ挿入時の方が良いかな?
appendRow は行を返してくれるんだろうか?
- treeにコンテクストメニュー付けた
- 曲の右クリックからタグエディタに渡して編集させる
---------
# 複数タブ対応保存読込ルーチン 途中です
全てのタブを保存(tabwidget)
タブの数を取得
タブのインデクスをイテレータにしてforでまわす
タブ名取得
インデクス→treeview→model取得
モデルのデータ取得
タブ名、カラム0,カラム2でデータ保存
読み込み
-------------
## タグ無しの場合にファイル名をタイトルとする件
書くのは簡単だと思うけど、根本部分の書き直しだとまた10分くらいかかるな
①コードを書き直し
②DBからタイトルが?のものを削除
③更新を実行
これで少し早くできるか??
まず件数をcontしてみるか
-----
# DBとの結合
①DB.pyとDBそのものを viewer.py にコピー
②DBのパスを書き換え
fname=os.path.join(os.path.dirname(__file__) , 'data.DB')
③本体に機能追加
def dbrefresh():
fname=os.path.join(os.path.dirname(__file__) , 'data.py')
cmd= 'python' , fname
p1 = subprocess.Popen( cmd )
- メッセージボックス
```
from PyQt5.QtWidgets import QMessageBox
reply = QMessageBox.question(self, 'Confirm',"want to Refresh Tree ?",
QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
if reply == QMessageBox.Yes:
```
# DB 更新ルーチン
```
def actionDBrefresh():
起動(終了待ち)
終了したら更新するかどうかを聞く
するならこのコード
def treeload
if self.model :
del self.model
line='select artist ,album,title ,path from musics order by artist ,album,title'
self.model=self.sqlexecute(line)
self.ui.treeView.setModel(self.model) # tree
ここ差し替えだな
__init__
line='select artist ,album,title ,path from musics order by artist ,album,title'
self.model=self.sqlexecute(line)
self.ui.treeView.setModel(self.model) # tree
self.model=None
self.treeload()
```
----------
## リストのアルバム表示ルーチン再検討
A文字列・・・アーチスト+アルバム+-------
--
ドロップ時の処理
挿入先の行番号を取得
そこから上に検索してA文字列①を取得
アルバム行
A文字列①をまず挿入(分割されるので)
自分のA文字列②を作成して挿入
子供のタイトルを取得して下に順次挿入
タイトル行
タイトルからA文字列②を作成(親のアルバム行から作成)
A文字列①と②を比較して同じならpass
違ったらA文字列①を挿入して②を挿入
順次タイトル行を下に挿入
-----------------
## コンテキストメニューの作り方あった
https://dungeonneko.hatenablog.com/entry/2017/06/22/151913
右クリックメニューの実装
https://kiwamiden.com/create-right-click-menu-in-qlistview
```
# これはwidgetの属性
self.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
self.customContextMenuRequested.connect(self.contextMenu)
def contextMenu(self, point):
menu = QtGui.QMenu(self)
for i in range(5):
action = QtGui.QAction('Menu%s' % i, self)
menu.addAction(action)
menu.exec_(self.mapToGlobal(point))
```
```
ポイントを引数には出来ないだろう
QPoint QCursor.pos () [QtGui module]
def dbsubmenu(self,point):
menu=QtGui.Qmenu(self)
action = QtGui.QAction('DB_refresh', self)
< trigger ? >
menu.addAction(action)
menu.exec_(self.mapToGlobal(point))
```
- ToolBarにDBのメニューを追加してアクションを上記のようにさらにメニューを出すように書く
DB更新、更新を反映、の二つで良いかな
- 更新は単純に外部スクリプトを呼び出し
その終了を取得してから更新反映ですな
どうやれば終了を取得できるんだろう?
単純に起動すればコンソールが出るからそれでいいかな
新しくモデルを作って現在のモデルと差し替えて古いモデルを破棄する感じかな
----
## 音量について
foobarで低めに設定したデータをvlcで演奏に生かせるのか?
目次もろもろ複数タブ対応保存読込ルーチン 途中ですタグ無しの場合にファイル名をタイトルとする件DBとの結合DB 更新ルーチンリストのアルバム表示ルーチン再検討コンテキストメニューの作り方あった音量について
もろもろ
- リストのキ受け付け up down
keypresevent に対して行選択を変更するだけか
今はdellキーに対応してるから増やすだけで良いような? - 曲の右クリックからタグエディタに渡して編集させる
複数タブ対応保存読込ルーチン 途中です
全てのタブを保存(tabwidget)
タブの数を取得
タブのインデクスをイテレータにしてforでまわす
タブ名取得
インデクス→treeview→model取得
モデルのデータ取得
タブ名、カラム0,カラム2でデータ保存
読み込み
タグ無しの場合にファイル名をタイトルとする件
書くのは簡単だと思うけど、根本部分の書き直しだとまた10分くらいかかるな
①コードを書き直し
②DBからタイトルが?のものを削除
③更新を実行
これで少し早くできるか??
まず件数をcontしてみるか
DBとの結合
①DB.pyとDBそのものを viewer.py にコピー
②DBのパスを書き換え
fname=os.path.join(os.path.dirname(file) , 'data.DB')
③本体に機能追加
def dbrefresh():
fname=os.path.join(os.path.dirname(file) , 'data.py')
cmd= 'python' , fname
p1 = subprocess.Popen( cmd )
- メッセージボックス
from PyQt5.QtWidgets import QMessageBox
reply = QMessageBox.question(self, 'Confirm',"want to Refresh Tree ?",
QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
if reply == QMessageBox.Yes:
DB 更新ルーチン
def actionDBrefresh():
起動(終了待ち)
終了したら更新するかどうかを聞く
するならこのコード
def treeload
if self.model :
del self.model
line='select artist ,album,title ,path from musics order by artist ,album,title'
self.model=self.sqlexecute(line)
self.ui.treeView.setModel(self.model) # tree
ここ差し替えだな
__init__
line='select artist ,album,title ,path from musics order by artist ,album,title'
self.model=self.sqlexecute(line)
self.ui.treeView.setModel(self.model) # tree
self.model=None
self.treeload()
リストのアルバム表示ルーチン再検討
A文字列・・・アーチスト+アルバム+-------
--
ドロップ時の処理
挿入先の行番号を取得
そこから上に検索してA文字列①を取得
アルバム行
A文字列①をまず挿入(分割されるので)
自分のA文字列②を作成して挿入
子供のタイトルを取得して下に順次挿入
タイトル行
タイトルからA文字列②を作成(親のアルバム行から作成)
A文字列①と②を比較して同じならpass
違ったらA文字列①を挿入して②を挿入
順次タイトル行を下に挿入
コンテキストメニューの作り方あった
https://dungeonneko.hatenablog.com/entry/2017/06/22/151913
右クリックメニューの実装
https://kiwamiden.com/create-right-click-menu-in-qlistview
# これはwidgetの属性
self.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
self.customContextMenuRequested.connect(self.contextMenu)
def contextMenu(self, point):
menu = QtGui.QMenu(self)
for i in range(5):
action = QtGui.QAction('Menu%s' % i, self)
menu.addAction(action)
menu.exec_(self.mapToGlobal(point))
ポイントを引数には出来ないだろう
QPoint QCursor.pos () [QtGui module]
def dbsubmenu(self,point):
menu=QtGui.Qmenu(self)
action = QtGui.QAction('DB_refresh', self)
< trigger ? >
menu.addAction(action)
menu.exec_(self.mapToGlobal(point))
- ToolBarにDBのメニューを追加してアクションを上記のようにさらにメニューを出すように書く
DB更新、更新を反映、の二つで良いかな - 更新は単純に外部スクリプトを呼び出し
その終了を取得してから更新反映ですな
どうやれば終了を取得できるんだろう?
単純に起動すればコンソールが出るからそれでいいかな
新しくモデルを作って現在のモデルと差し替えて古いモデルを破棄する感じかな
音量について
foobarで低めに設定したデータをvlcで演奏に生かせるのか?