def __init__(self, parent, clobj_widget, name, screenshots, segments): super(QuerySummary, self).__init__(parent) self.clobj_widget = clobj_widget self.setWindowTitle("Summary") self.scroll = QScrollArea(self) self.scroll.setWidgetResizable(True) self.setWidget(self.scroll) self.inner = QWidget(self.scroll) self.scroll.setWidget(self.inner) self.inner.setLayout(QVBoxLayout()) self.name_edit = QLineEdit(name, self) self.inner.layout().addWidget(self.name_edit) self.old_name = name self.text_field_desc = QTextEdit(self) self.text_field_raw = QTextEdit(self) self.text_field_desc.setReadOnly(True) self.text_field_raw.setReadOnly(True) self.name_edit.editingFinished.connect(self.on_name_changed) self.screenshots = screenshots self.segments = segments self.inner.layout().addWidget(self.text_field_desc) self.inner.layout().addWidget( ExpandableWidget(self, "Classification Objects", self.clobj_widget, True)) self.inner.layout().addWidget( ExpandableWidget(self, "Raw Query", self.text_field_raw, False)) self.inner.layout().addItem( QSpacerItem(0, 0, QSizePolicy.Fixed, QSizePolicy.Expanding))
def add_plot(self, p): if p.naming_fields['plot_name'] not in self.controls: ctrls = p.get_param_widget() self.controls[p.naming_fields['plot_name']] = ctrls self.ctrl_container.layout().addWidget( ExpandableWidget(self.inner, p.naming_fields['plot_name'], ctrls)) else: p.get_param_widget(w=self.controls[p.naming_fields['plot_name']])
def __init__(self, parent): super(PaletteWidget, self).__init__(parent) self.palette_tree = None self.all_ctrls = QWidget(self) self.all_ctrls.setLayout(QVBoxLayout(self.all_ctrls)) self.setLayout(QVBoxLayout(self)) self.view = PaletteView(self) self.slider = QSlider(Qt.Horizontal, self.all_ctrls) self.cb_mode = QComboBox(self.all_ctrls) self.cb_mode.addItems(['Layer', 'Full Tree']) self.lbl_mode_hint = QLabel("Layer Index:", self.all_ctrls) self.lbl_depth = QLabel("0", self.all_ctrls) self.lbl_depth.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum) self.layout().addWidget(self.view) self.cb_show_grid = QCheckBox("Show Grid", self.all_ctrls) self.cb_sorting = QComboBox(self.all_ctrls) self.cb_sorting.addItems(['Cluster', 'Frequency', "Hilbert"]) self.layout().addWidget( ExpandableWidget(self, "Controls", self.all_ctrls, popup=False)) self.hbox_slider = QVBoxLayout(self.all_ctrls) self.hbox_ctrl = QVBoxLayout(self.all_ctrls) self.all_ctrls.layout().addItem(self.hbox_ctrl) self.all_ctrls.layout().addItem(self.hbox_slider) self.hbox_ctrl.addWidget(QLabel("Mode: ", self.all_ctrls)) self.hbox_ctrl.addWidget(self.cb_mode) self.hbox_ctrl.addItem( QSpacerItem(0, 0, QSizePolicy.Expanding, QSizePolicy.Fixed)) self.hbox_ctrl.addWidget(self.cb_show_grid) self.hbox_ctrl.addItem( QSpacerItem(0, 0, QSizePolicy.Expanding, QSizePolicy.Fixed)) self.hbox_ctrl.addWidget(QLabel("Sorting: ", self.all_ctrls)) self.hbox_ctrl.addWidget(self.cb_sorting) self.slider.setValue(10) self.hbox_slider.addWidget(self.lbl_mode_hint) self.hbox_slider.addWidget(self.slider) self.hbox_slider.addWidget(self.lbl_depth) self.slider.valueChanged.connect(self.draw_palette) self.cb_mode.currentTextChanged.connect(self.on_settings_changed) self.cb_show_grid.stateChanged.connect(self.on_settings_changed) self.cb_sorting.currentTextChanged.connect(self.on_settings_changed)
def __init__(self, main_window): super(ColorimetryLiveWidget, self).__init__(main_window, limit_size=False) self.setWindowTitle("Colorimetry") self.lt = QVBoxLayout(self) self.central = QWidget() self.central.setFixedWidth(1) self.central.setLayout(self.lt) self.visibilityChanged.connect( self.main_window.frame_update_worker.set_colormetry_update) self.inner.setCentralWidget(self.central) self.use_tab_mode = False self.is_drawing = False self.m_visualization = self.inner.menuBar().addMenu("Visualizations") self.a_palette = self.m_visualization.addAction("Palette") self.a_palette_ab = self.m_visualization.addAction("Palette AB") self.a_palette_dt = self.m_visualization.addAction("Palette dT") self.a_hist = self.m_visualization.addAction("Histogram dT") self.a_spatial = self.m_visualization.addAction( "Spatial Complexity dT") # self.vis_tab = QTabWidget(self) # self.lt.addWidget(self.vis_tab) self.hilbert_table, self.hilbert_colors = create_hilbert_transform(16) self.worker_ready = True self.latest_worker_data = None self.drawing_worker = ColorimetryWorker(self.work) self.worker_thread = QThread() self.draw.connect(self.drawing_worker.run) self.drawing_worker.onProcessingDone.connect(self.on_worker_ready) self.drawing_worker.moveToThread(self.worker_thread) self.worker_thread.start() self.current_data = None # self.h_bgr = create_hilbert_color_pattern(8, multiplier=32, color_space=cv2.COLOR_Lab2RGB) # self.h_indices = hilbert_mapping_3d(8, np.zeros(shape=(8,8,8)), HilbertMode.Indices_All) # # self.h_indices = np.array(self.h_indices) # self.h_indices = np.array([self.h_indices[:, 0],self.h_indices[:, 1],self.h_indices[:, 2]]) # # self.histogram = HistogramVis(self) # self.histogram.plot(8**3 * [1.0], self.h_bgr) # self.histogram.view.setYRange(min = 0.1, max = 1.0) # self.histogram.view.setXRange(min = 0, max = 255) # self.palette = PaletteVis(self) self.palette = PaletteWidget(self) self.lab_palette = PaletteLABWidget(self) self.time_palette = PaletteTimeWidget(self) self.hilbert_vis = HistogramVis(self) self.spatial_complexity_vis = LinePlot(self, x_label_format="ms") lt_spatial = QWidget() lt_spatial.setLayout(QVBoxLayout()) lt_spatial.layout().addWidget(self.spatial_complexity_vis) self.spatial_complexity_param = ExpandableWidget( self, "Controls", self.spatial_complexity_vis.get_param_widget()) lt_spatial.layout().addWidget(self.spatial_complexity_param) self.hilbert_param = ExpandableWidget( self, "Controls", self.hilbert_vis.get_param_widget(), popup=True) lt_hilbert = QWidget() lt_hilbert.setLayout(QVBoxLayout()) lt_hilbert.layout().addWidget(self.hilbert_vis) lt_hilbert.layout().addWidget(self.hilbert_param) # # self.lt.addWidget(self.palette) if self.use_tab_mode: self.vis_tab.addTab(self.palette, "Tree-Palette") self.vis_tab.addTab(self.lab_palette, "LAB-Palette") self.vis_tab.addTab(self.time_palette, "Time Palette") self.vis_tab.addTab(lt_hilbert, "Color Histogram") self.vis_tab.addTab(lt_spatial, "Spatial Complexity") self.vis_tab.currentChanged.connect(self.on_tab_changed) else: t1 = ESimpleDockWidget(self.inner, self.palette, "Palette") t2 = ESimpleDockWidget(self.inner, self.lab_palette, "Space Palette") t3 = ESimpleDockWidget(self.inner, self.time_palette, "Time Palette") t3.visibilityChanged.connect(self.on_tab_changed) t4 = ESimpleDockWidget(self.inner, lt_hilbert, "Histogram") t5 = ESimpleDockWidget(self.inner, lt_spatial, "Spatial Frequency") self.a_palette.triggered.connect(t1.show) self.a_palette_ab.triggered.connect(t2.show) self.a_palette_dt.triggered.connect(t3.show) self.a_hist.triggered.connect(t4.show) self.a_spatial.triggered.connect(t5.show) self.inner.addDockWidget(Qt.LeftDockWidgetArea, t1, Qt.Horizontal) self.inner.addDockWidget(Qt.RightDockWidgetArea, t2, Qt.Horizontal) self.inner.addDockWidget(Qt.BottomDockWidgetArea, t3, Qt.Horizontal) self.inner.addDockWidget(Qt.RightDockWidgetArea, t4, Qt.Horizontal) self.inner.addDockWidget(Qt.RightDockWidgetArea, t5, Qt.Horizontal) t3.hide() t4.hide() t5.hide() self.main_window.onTimeStep.connect(self.on_time_step) self.visibilityChanged.connect(self.on_visibility_changed)
def set_manager(self, screenshot_manager): # self.tab = QTabWidget(self.inner) # self.tab.addTab(screenshot_manager, "Screenshot Manager") self.manager_dock = ESimpleDockWidget(self.inner, screenshot_manager, "Screenshots") self.inner.addDockWidget(Qt.TopDockWidgetArea, self.manager_dock, Qt.Horizontal) # t = QWidget() # t.setMinimumHeight(1) # t.setMinimumWidth(1) # self.inner.setCentralWidget(t) self.ab_view = ImagePlotCircular(self) self.ab_ctrls = self.ab_view.get_param_widget() w = QWidget(self.tab) w.setLayout(QVBoxLayout()) w.layout().addWidget(self.ab_view) w.layout().addWidget( ExpandableWidget(w, "Plot Controls", self.ab_ctrls, popup=True)) # self.tab.addTab(w, "AB-Plane") self.la_dock = ESimpleDockWidget(self.inner, w, "LA-View") self.inner.addDockWidget(Qt.TopDockWidgetArea, self.la_dock, Qt.Horizontal) self.color_dt = ImagePlotTime(self) self.color_dt_ctrls = self.color_dt.get_param_widget() # hl4 = QHBoxLayout(self.color_dt_ctrls) # hl4.addWidget(QLabel("Channel:", self.color_dt_ctrls)) # self.color_dt_ctrls.layout().addItem(hl4) # cbox_channel = QComboBox(self.color_dt_ctrls) # cbox_channel.addItems(["Saturation", "Hue", "Chroma", "Luminance", "A", "B"]) # cbox_channel.currentTextChanged.connect(self.color_dt_mode_changed) # hl4.addWidget(cbox_channel) self.lc_view = ImagePlotPlane(self, range_y=[0, 255]) self.color_lc_view = self.lc_view.get_param_widget() w3 = QWidget() w3.setLayout(QVBoxLayout()) w3.layout().addWidget(self.lc_view) w3.layout().addWidget( ExpandableWidget(w3, "Plot Controls", self.color_lc_view, popup=True)) self.lc_dock = ESimpleDockWidget(self.inner, w3, "LC-View") self.inner.addDockWidget(Qt.TopDockWidgetArea, self.lc_dock, Qt.Horizontal) # self.tab.addTab(w3, "LC-Plane") w2 = QWidget() w2.setLayout(QVBoxLayout()) w2.layout().addWidget(self.color_dt) w2.layout().addWidget( ExpandableWidget(w2, "Plot Controls", self.color_dt_ctrls, popup=True)) self.dt_dock = ESimpleDockWidget(self.inner, w2, "Color-dT") self.inner.addDockWidget(Qt.BottomDockWidgetArea, self.dt_dock, Qt.Horizontal) # self.tab.addTab(w2, "Color-dt") self.setWidget(self.tab) self.inner.tabifyDockWidget(self.manager_dock, self.la_dock) self.inner.tabifyDockWidget(self.la_dock, self.lc_dock) self.manager_dock.raise_() self.dt_dock.hide() self.screenshot_manager = screenshot_manager self.create_bottom_bar() self.a_scr_plot.triggered.connect(self.manager_dock.show) self.a_ab_plot.triggered.connect(self.la_dock.show) self.a_lc_plot.triggered.connect(self.lc_dock.show) self.a_dt_plot.triggered.connect(self.dt_dock.show) self.main_window.currentClassificationObjectChanged.connect( self.screenshot_manager.on_classification_object_changed)
def __init__(self, parent): super(PaletteLABWidget, self).__init__(parent) self.palette_tree = None self.setLayout(QVBoxLayout(self)) self.view = PaletteLABView(self) self.w_ctrls2 = QWidget(self) self.w_ctrls2.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Maximum) self.w_ctrls2.setLayout(QVBoxLayout(self.w_ctrls2)) self.cb_mode = QComboBox(self.w_ctrls2) self.cb_mode.addItems(['Layer', 'Full Tree']) self.lbl_mode_hint = QLabel("Layer Index:", self.w_ctrls2) self.cb_show_grid = QCheckBox("Show Grid", self.w_ctrls2) self.hbox_slider = QHBoxLayout(self.w_ctrls2) self.w_ctrls2.layout().addItem(self.hbox_slider) self.slider = QSlider(Qt.Horizontal, self.w_ctrls2) self.slider_size = QSlider(Qt.Horizontal, self.w_ctrls2) self.slider_size.setRange(1, 100) self.slider_jitter = QSlider(Qt.Horizontal, self.w_ctrls2) self.slider_jitter.setRange(0, 100) self.slider_scale = QSlider(Qt.Horizontal, self.w_ctrls2) self.slider_scale.setRange(1, 30) self.lbl_depth = QLabel("0", self.w_ctrls2) self.lbl_depth.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum) self.cb_background = QComboBox(self.w_ctrls2) self.cb_background.addItems( ['White', "Light-Gray", 'Dark-Gray', 'Black']) self.cb_background.setCurrentText("Dark-Gray") self.hbox_ctrl = QVBoxLayout(self.w_ctrls2) self.hbox_ctrl.addWidget(QLabel("Mode: ", self.w_ctrls2)) self.hbox_ctrl.addWidget(self.cb_mode) self.hbox_ctrl.addItem( QSpacerItem(0, 0, QSizePolicy.Expanding, QSizePolicy.Fixed)) self.hbox_ctrl.addWidget(self.cb_show_grid) self.hbox_ctrl.addItem( QSpacerItem(0, 0, QSizePolicy.Expanding, QSizePolicy.Fixed)) self.hbox_ctrl.addWidget(QLabel("Background: ", self.w_ctrls2)) self.hbox_ctrl.addWidget(self.cb_background) self.btn_ctrls = QPushButton("Show Controls", self.w_ctrls2) self.hbox_ctrl.addWidget(self.btn_ctrls) self.btn_ctrls.clicked.connect(self.toggle_controls) self.hbox_slider.addWidget(self.lbl_mode_hint) self.hbox_slider.addWidget(self.slider) self.hbox_slider.addWidget(QLabel("n-Merges:", self.w_ctrls2)) self.hbox_slider.addWidget(self.lbl_depth) self.hbox_scale = QHBoxLayout(self.w_ctrls2) self.hbox_dot_size = QHBoxLayout(self.w_ctrls2) self.hbox_jitter = QHBoxLayout(self.w_ctrls2) self.w_ctrls2.layout().addItem(self.hbox_ctrl) self.w_ctrls2.layout().addItem(self.hbox_scale) self.w_ctrls2.layout().addItem(self.hbox_dot_size) self.w_ctrls2.layout().addItem(self.hbox_jitter) self.hbox_scale.addWidget(QLabel("Scale:", self.w_ctrls2)) self.hbox_dot_size.addWidget(QLabel("Dot Size:", self.w_ctrls2)) self.hbox_jitter.addWidget(QLabel("Jitter:", self.w_ctrls2)) self.hbox_scale.addWidget(self.slider_scale) self.hbox_dot_size.addWidget(self.slider_size) self.hbox_jitter.addWidget(self.slider_jitter) self.layout().addWidget(self.view) # self.layout().addItem(self.hbox_ctrl) exp = ExpandableWidget(self, "Controls", self.w_ctrls2, popup=True) self.layout().addWidget(exp) exp.onClicked.connect(self.draw_palette) self.cb_show_grid.setChecked(True) self.slider.setValue(12) self.slider_jitter.setValue(3) self.slider_scale.setValue(2) self.slider_size.setValue(2) self.slider.valueChanged.connect(self.on_settings_changed) self.slider_jitter.valueChanged.connect(self.on_settings_changed) self.slider_size.valueChanged.connect(self.on_settings_changed) self.slider_scale.valueChanged.connect(self.on_settings_changed) self.cb_mode.currentTextChanged.connect(self.on_settings_changed) self.cb_show_grid.stateChanged.connect(self.on_settings_changed) self.cb_background.currentTextChanged.connect(self.on_settings_changed) self.w_ctrls2.setVisible(False) self.show()