forked from pgriffin17/cameraControl
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathviewpanel.py
More file actions
52 lines (40 loc) · 1.86 KB
/
viewpanel.py
File metadata and controls
52 lines (40 loc) · 1.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import pyqtgraph as pg
from pyqtgraph.Qt import QtWidgets
from roi_manager import ROI_Manager
from camera import CameraController
from diffractometer_tools import Diffractometer_Tools
from data_display_widget import Data_Display_Widget
from viewfinder_buttons import ViewfinderButtons
from viewfinder import Viewfinder
from ee_processor import EE_Processor
class ViewPanel(QtWidgets.QGroupBox):
'''
Widget for displaying a live feed from a camera, as well as related stats. Includes:
- Buttons to control roi behavior.
- Live feed of camera.
- Panel of stats about current frame.
'''
def __init__(self, roi_manager: ROI_Manager = None, camera: CameraController = None, diff_tools: Diffractometer_Tools = None):
super().__init__(parent=None)
self.grid_layout = QtWidgets.QGridLayout()
self.setLayout(self.grid_layout)
# Instantiate Children
self.ee_processor = EE_Processor(camera=camera, roi_manager=roi_manager)
self.vf_buttons = ViewfinderButtons(camera=camera, ee_processor=self.ee_processor)
self.viewfinder = Viewfinder(roi_manager=roi_manager, camera=camera, vf_buttons=self.vf_buttons, diff_tools=diff_tools)
self.data_panel = Data_Display_Widget(roi_manager=roi_manager, ee_processor=self.ee_processor, camera=camera)
#Connect Signals
# From Button
self.vf_buttons.reset_roi_button.clicked.connect(self.viewfinder.viewbox.center_rois)
# Set Layout
self.grid_layout.addWidget(self.vf_buttons)
self.grid_layout.addWidget(self.viewfinder)
self.grid_layout.addWidget(self.data_panel)
if camera:
self.grid_layout.addWidget(camera.settings.widget)
self.viewfinder.setMinimumHeight(150)
if __name__ == "__main__":
app = pg.mkQApp()
widget = ViewPanel()
widget.show()
app.exec()