Coverage for paintmaskanimator/memo_window.py: 100%

27 statements  

« prev     ^ index     » next       coverage.py v7.17.0, created at 2026-11-02 04:50 +0000

1"""カット袋・シートのメモ欄にあたるポップアップ(Issue #25)。 

2 

3カットごとの申し送りを書き留めておくための小さな窓。書いた内容はプロジェクト 

4(.pman)に入れて持ち歩き、カットフォルダーへ書き出すときはタイムシートの隣へ 

5``_memo.txt`` として出す。 

6 

7窓はモードレスなので、開いたまま描き続けられる。 

8""" 

9from PySide6.QtCore import Qt, Signal 

10from PySide6.QtWidgets import QDialog, QLabel, QPlainTextEdit, QVBoxLayout 

11 

12from .i18n import tr 

13 

14#: 書き出すメモのファイル名。 

15MEMO_FILE_NAME = "_memo.txt" 

16 

17 

18class MemoWindow(QDialog): 

19 """メモを書く窓。打つたびに ``textChanged`` で中身を知らせる。""" 

20 

21 textChanged = Signal(str) 

22 

23 def __init__(self, parent=None): 

24 super().__init__(parent) 

25 self.setWindowTitle(tr("メモ")) 

26 self.setWindowFlag(Qt.WindowType.Tool, True) 

27 # モードレス。描きながら書き足せるようにする。 

28 self.setModal(False) 

29 self.resize(360, 280) 

30 

31 layout = QVBoxLayout(self) 

32 note = QLabel( 

33 tr("カット袋やシートのメモ欄として使えます。" 

34 "プロジェクトに保存され、カットフォルダー書き出しでは" 

35 "タイムシートの隣へ {name} として出ます。").format( 

36 name=MEMO_FILE_NAME 

37 ) 

38 ) 

39 note.setWordWrap(True) 

40 layout.addWidget(note) 

41 

42 self.editor = QPlainTextEdit() 

43 self.editor.setPlaceholderText(tr("例:3コマ目のタイミング要確認")) 

44 self.editor.textChanged.connect( 

45 lambda: self.textChanged.emit(self.text()) 

46 ) 

47 layout.addWidget(self.editor, 1) 

48 

49 def text(self): 

50 return self.editor.toPlainText() 

51 

52 def set_text(self, value): 

53 """中身を差し替える。読み込み時の復元で ``textChanged`` を出さない。""" 

54 blocked = self.editor.blockSignals(True) 

55 try: 

56 self.editor.setPlainText(str(value or "")) 

57 finally: 

58 self.editor.blockSignals(blocked)