Coverage for graphica/gui/detached_canvas_window.py: 100.0%

11 statements  

« prev     ^ index     » next       coverage.py v7.16.2, created at 2026-10-12 16:38 +0000

1"""切り離したキャンバスを入れるだけの独立したウィンドウ。 

2 

3self.canvas は親を替えるだけで同じオブジェクトのまま。閉じられても破棄せず closed で知らせ、戻す処理は 

4PlotterApp._reattach_canvas() に任せる(「元に戻す」と×ボタンが同じ後処理を通るように)。 

5""" 

6from PySide6.QtCore import Qt, Signal 

7from PySide6.QtWidgets import QMainWindow 

8 

9 

10class DetachedCanvasWindow(QMainWindow): 

11 closed = Signal() 

12 

13 def __init__(self, title, parent=None): 

14 super().__init__(parent) 

15 self.setWindowTitle(title) 

16 # parent があっても、埋め込みではなく独立したウィンドウにする 

17 self.setWindowFlag(Qt.WindowType.Window, True) 

18 

19 def closeEvent(self, event): 

20 """破棄せずに closed を出すだけ(キャンバスを抱えたまま破棄すると、戻す前にキャンバスごと消える)。""" 

21 event.accept() 

22 self.closed.emit()