XSegEditor: changed layout, added current filename

This commit is contained in:
Colombo 2020-03-27 00:11:36 +04:00
parent 54fdeb0666
commit ca9138d6b7
2 changed files with 131 additions and 87 deletions

View file

@ -7,6 +7,7 @@ import tempfile
import time import time
import traceback import traceback
from enum import IntEnum from enum import IntEnum
from types import SimpleNamespace as sn
import cv2 import cv2
import numpy as np import numpy as np
@ -23,8 +24,9 @@ from DFLIMG import *
from localization import StringsDB, system_language from localization import StringsDB, system_language
from .QCursorDB import QCursorDB from .QCursorDB import QCursorDB
from .QStringDB import QStringDB
from .QIconDB import QIconDB from .QIconDB import QIconDB
from .QStringDB import QStringDB
class OpMode(IntEnum): class OpMode(IntEnum):
NONE = 0 NONE = 0
@ -144,38 +146,11 @@ class CanvasConfig():
] ]
self.color_schemes = color_schemes self.color_schemes = color_schemes
class QCanvasControlsBar(QFrame): class QCanvasControlsLeftBar(QFrame):
def __init__(self): def __init__(self):
super().__init__() super().__init__()
#============================================== #==============================================
btn_poly_color_red = QToolButton()
self.btn_poly_color_red_act = QActionEx( QIconDB.poly_color_red, QStringDB.btn_poly_color_red_tip, shortcut='1', shortcut_in_tooltip=True, is_checkable=True)
btn_poly_color_red.setDefaultAction(self.btn_poly_color_red_act)
btn_poly_color_red.setIconSize(QUIConfig.icon_q_size)
btn_poly_color_green = QToolButton()
self.btn_poly_color_green_act = QActionEx( QIconDB.poly_color_green, QStringDB.btn_poly_color_green_tip, shortcut='2', shortcut_in_tooltip=True, is_checkable=True)
btn_poly_color_green.setDefaultAction(self.btn_poly_color_green_act)
btn_poly_color_green.setIconSize(QUIConfig.icon_q_size)
btn_poly_color_blue = QToolButton()
self.btn_poly_color_blue_act = QActionEx( QIconDB.poly_color_blue, QStringDB.btn_poly_color_blue_tip, shortcut='3', shortcut_in_tooltip=True, is_checkable=True)
btn_poly_color_blue.setDefaultAction(self.btn_poly_color_blue_act)
btn_poly_color_blue.setIconSize(QUIConfig.icon_q_size)
btn_view_baked_mask = QToolButton()
self.btn_view_baked_mask_act = QActionEx( QIconDB.view_baked, QStringDB.btn_view_baked_mask_tip, shortcut='4', shortcut_in_tooltip=True, is_checkable=True)
btn_view_baked_mask.setDefaultAction(self.btn_view_baked_mask_act)
btn_view_baked_mask.setIconSize(QUIConfig.icon_q_size)
self.btn_poly_color_act_grp = QActionGroup (self)
self.btn_poly_color_act_grp.addAction(self.btn_poly_color_red_act)
self.btn_poly_color_act_grp.addAction(self.btn_poly_color_green_act)
self.btn_poly_color_act_grp.addAction(self.btn_poly_color_blue_act)
self.btn_poly_color_act_grp.addAction(self.btn_view_baked_mask_act)
self.btn_poly_color_act_grp.setExclusive(True)
#==============================================
btn_poly_type_include = QToolButton() btn_poly_type_include = QToolButton()
self.btn_poly_type_include_act = QActionEx( QIconDB.poly_type_include, QStringDB.btn_poly_type_include_tip, shortcut='Q', shortcut_in_tooltip=True, is_checkable=True) self.btn_poly_type_include_act = QActionEx( QIconDB.poly_type_include, QStringDB.btn_poly_type_include_tip, shortcut='Q', shortcut_in_tooltip=True, is_checkable=True)
btn_poly_type_include.setDefaultAction(self.btn_poly_type_include_act) btn_poly_type_include.setDefaultAction(self.btn_poly_type_include_act)
@ -211,16 +186,6 @@ class QCanvasControlsBar(QFrame):
btn_pt_edit_mode.setDefaultAction(self.btn_pt_edit_mode_act) btn_pt_edit_mode.setDefaultAction(self.btn_pt_edit_mode_act)
btn_pt_edit_mode.setIconSize(QUIConfig.icon_q_size) btn_pt_edit_mode.setIconSize(QUIConfig.icon_q_size)
controls_bar_frame1_l = QVBoxLayout()
controls_bar_frame1_l.addWidget ( btn_poly_color_red )
controls_bar_frame1_l.addWidget ( btn_poly_color_green )
controls_bar_frame1_l.addWidget ( btn_poly_color_blue )
controls_bar_frame1_l.addWidget ( btn_view_baked_mask )
controls_bar_frame1 = QFrame()
controls_bar_frame1.setFrameShape(QFrame.StyledPanel)
controls_bar_frame1.setSizePolicy (QSizePolicy.Fixed, QSizePolicy.Fixed)
controls_bar_frame1.setLayout(controls_bar_frame1_l)
controls_bar_frame2_l = QVBoxLayout() controls_bar_frame2_l = QVBoxLayout()
controls_bar_frame2_l.addWidget ( btn_poly_type_include ) controls_bar_frame2_l.addWidget ( btn_poly_type_include )
controls_bar_frame2_l.addWidget ( btn_poly_type_exclude ) controls_bar_frame2_l.addWidget ( btn_poly_type_exclude )
@ -247,7 +212,6 @@ class QCanvasControlsBar(QFrame):
controls_bar_l = QVBoxLayout() controls_bar_l = QVBoxLayout()
controls_bar_l.setContentsMargins(0,0,0,0) controls_bar_l.setContentsMargins(0,0,0,0)
controls_bar_l.addWidget(controls_bar_frame1)
controls_bar_l.addWidget(controls_bar_frame2) controls_bar_l.addWidget(controls_bar_frame2)
controls_bar_l.addWidget(controls_bar_frame3) controls_bar_l.addWidget(controls_bar_frame3)
controls_bar_l.addWidget(controls_bar_frame4) controls_bar_l.addWidget(controls_bar_frame4)
@ -255,6 +219,55 @@ class QCanvasControlsBar(QFrame):
self.setSizePolicy ( QSizePolicy.Fixed, QSizePolicy.Expanding ) self.setSizePolicy ( QSizePolicy.Fixed, QSizePolicy.Expanding )
self.setLayout(controls_bar_l) self.setLayout(controls_bar_l)
class QCanvasControlsRightBar(QFrame):
def __init__(self):
super().__init__()
#==============================================
btn_poly_color_red = QToolButton()
self.btn_poly_color_red_act = QActionEx( QIconDB.poly_color_red, QStringDB.btn_poly_color_red_tip, shortcut='1', shortcut_in_tooltip=True, is_checkable=True)
btn_poly_color_red.setDefaultAction(self.btn_poly_color_red_act)
btn_poly_color_red.setIconSize(QUIConfig.icon_q_size)
btn_poly_color_green = QToolButton()
self.btn_poly_color_green_act = QActionEx( QIconDB.poly_color_green, QStringDB.btn_poly_color_green_tip, shortcut='2', shortcut_in_tooltip=True, is_checkable=True)
btn_poly_color_green.setDefaultAction(self.btn_poly_color_green_act)
btn_poly_color_green.setIconSize(QUIConfig.icon_q_size)
btn_poly_color_blue = QToolButton()
self.btn_poly_color_blue_act = QActionEx( QIconDB.poly_color_blue, QStringDB.btn_poly_color_blue_tip, shortcut='3', shortcut_in_tooltip=True, is_checkable=True)
btn_poly_color_blue.setDefaultAction(self.btn_poly_color_blue_act)
btn_poly_color_blue.setIconSize(QUIConfig.icon_q_size)
btn_view_baked_mask = QToolButton()
self.btn_view_baked_mask_act = QActionEx( QIconDB.view_baked, QStringDB.btn_view_baked_mask_tip, shortcut='4', shortcut_in_tooltip=True, is_checkable=True)
btn_view_baked_mask.setDefaultAction(self.btn_view_baked_mask_act)
btn_view_baked_mask.setIconSize(QUIConfig.icon_q_size)
self.btn_poly_color_act_grp = QActionGroup (self)
self.btn_poly_color_act_grp.addAction(self.btn_poly_color_red_act)
self.btn_poly_color_act_grp.addAction(self.btn_poly_color_green_act)
self.btn_poly_color_act_grp.addAction(self.btn_poly_color_blue_act)
self.btn_poly_color_act_grp.addAction(self.btn_view_baked_mask_act)
self.btn_poly_color_act_grp.setExclusive(True)
#==============================================
controls_bar_frame1_l = QVBoxLayout()
controls_bar_frame1_l.addWidget ( btn_poly_color_red )
controls_bar_frame1_l.addWidget ( btn_poly_color_green )
controls_bar_frame1_l.addWidget ( btn_poly_color_blue )
controls_bar_frame1_l.addWidget ( btn_view_baked_mask )
controls_bar_frame1 = QFrame()
controls_bar_frame1.setFrameShape(QFrame.StyledPanel)
controls_bar_frame1.setSizePolicy (QSizePolicy.Fixed, QSizePolicy.Fixed)
controls_bar_frame1.setLayout(controls_bar_frame1_l)
controls_bar_l = QVBoxLayout()
controls_bar_l.setContentsMargins(0,0,0,0)
controls_bar_l.addWidget(controls_bar_frame1)
self.setSizePolicy ( QSizePolicy.Fixed, QSizePolicy.Expanding )
self.setLayout(controls_bar_l)
class QCanvasOperator(QWidget): class QCanvasOperator(QWidget):
def __init__(self, cbar): def __init__(self, cbar):
@ -263,11 +276,6 @@ class QCanvasOperator(QWidget):
self.set_cbar_disabled(initialize=False) self.set_cbar_disabled(initialize=False)
self.cbar.btn_delete_poly_act.triggered.connect ( lambda : self.action_delete_poly() )
self.cbar.btn_undo_pt_act.triggered.connect ( lambda : self.action_undo_pt() )
self.cbar.btn_redo_pt_act.triggered.connect ( lambda : self.action_redo_pt() )
self.cbar.btn_poly_color_red_act.triggered.connect ( lambda : self.set_color_scheme_id(0) ) self.cbar.btn_poly_color_red_act.triggered.connect ( lambda : self.set_color_scheme_id(0) )
self.cbar.btn_poly_color_green_act.triggered.connect ( lambda : self.set_color_scheme_id(1) ) self.cbar.btn_poly_color_green_act.triggered.connect ( lambda : self.set_color_scheme_id(1) )
self.cbar.btn_poly_color_blue_act.triggered.connect ( lambda : self.set_color_scheme_id(2) ) self.cbar.btn_poly_color_blue_act.triggered.connect ( lambda : self.set_color_scheme_id(2) )
@ -276,6 +284,11 @@ class QCanvasOperator(QWidget):
self.cbar.btn_poly_type_include_act.triggered.connect ( lambda : self.set_poly_include_type(SegIEPolyType.INCLUDE) ) self.cbar.btn_poly_type_include_act.triggered.connect ( lambda : self.set_poly_include_type(SegIEPolyType.INCLUDE) )
self.cbar.btn_poly_type_exclude_act.triggered.connect ( lambda : self.set_poly_include_type(SegIEPolyType.EXCLUDE) ) self.cbar.btn_poly_type_exclude_act.triggered.connect ( lambda : self.set_poly_include_type(SegIEPolyType.EXCLUDE) )
self.cbar.btn_undo_pt_act.triggered.connect ( lambda : self.action_undo_pt() )
self.cbar.btn_redo_pt_act.triggered.connect ( lambda : self.action_redo_pt() )
self.cbar.btn_delete_poly_act.triggered.connect ( lambda : self.action_delete_poly() )
self.cbar.btn_pt_edit_mode_act.toggled.connect ( lambda is_checked: self.set_pt_edit_mode( PTEditMode.ADD_DEL if is_checked else PTEditMode.MOVE ) ) self.cbar.btn_pt_edit_mode_act.toggled.connect ( lambda is_checked: self.set_pt_edit_mode( PTEditMode.ADD_DEL if is_checked else PTEditMode.MOVE ) )
self.mouse_in_widget = False self.mouse_in_widget = False
@ -959,12 +972,33 @@ class QCanvasOperator(QWidget):
class QCanvas(QFrame): class QCanvas(QFrame):
def __init__(self): def __init__(self):
super().__init__() super().__init__()
self.canvas_control_bar = QCanvasControlsBar()
self.op = QCanvasOperator(self.canvas_control_bar) self.canvas_control_left_bar = QCanvasControlsLeftBar()
self.canvas_control_right_bar = QCanvasControlsRightBar()
cbar = sn( btn_poly_color_red_act = self.canvas_control_right_bar.btn_poly_color_red_act,
btn_poly_color_green_act = self.canvas_control_right_bar.btn_poly_color_green_act,
btn_poly_color_blue_act = self.canvas_control_right_bar.btn_poly_color_blue_act,
btn_view_baked_mask_act = self.canvas_control_right_bar.btn_view_baked_mask_act,
btn_poly_color_act_grp = self.canvas_control_right_bar.btn_poly_color_act_grp,
btn_poly_type_include_act = self.canvas_control_left_bar.btn_poly_type_include_act,
btn_poly_type_exclude_act = self.canvas_control_left_bar.btn_poly_type_exclude_act,
btn_poly_type_act_grp = self.canvas_control_left_bar.btn_poly_type_act_grp,
btn_undo_pt_act = self.canvas_control_left_bar.btn_undo_pt_act,
btn_redo_pt_act = self.canvas_control_left_bar.btn_redo_pt_act,
btn_delete_poly_act = self.canvas_control_left_bar.btn_delete_poly_act,
btn_pt_edit_mode_act = self.canvas_control_left_bar.btn_pt_edit_mode_act )
self.op = QCanvasOperator(cbar)
self.l = QHBoxLayout() self.l = QHBoxLayout()
self.l.setContentsMargins(0,0,0,0) self.l.setContentsMargins(0,0,0,0)
self.l.addWidget(self.canvas_control_bar) self.l.addWidget(self.canvas_control_left_bar)
self.l.addWidget(self.op) self.l.addWidget(self.op)
self.l.addWidget(self.canvas_control_right_bar)
self.setLayout(self.l) self.setLayout(self.l)
class LoaderQSubprocessor(QSubprocessor): class LoaderQSubprocessor(QSubprocessor):
@ -1113,6 +1147,9 @@ class MainWindow(QXMainWindow):
q_img = self.load_QImage(image_path) q_img = self.load_QImage(image_path)
self.canvas.op.initialize ( q_img, ie_polys=ie_polys ) self.canvas.op.initialize ( q_img, ie_polys=ie_polys )
self.filename_label.setText(str(image_path.name))
return True return True
def canvas_finalize(self, image_path): def canvas_finalize(self, image_path):
@ -1127,7 +1164,7 @@ class MainWindow(QXMainWindow):
dflimg.save() dflimg.save()
self.canvas.op.finalize() self.canvas.op.finalize()
self.filename_label.setText("")
def process_prev_image(self): def process_prev_image(self):
key_mods = QApplication.keyboardModifiers() key_mods = QApplication.keyboardModifiers()
@ -1207,10 +1244,16 @@ class MainWindow(QXMainWindow):
preview_image_bar.setSizePolicy ( QSizePolicy.Expanding, QSizePolicy.Fixed ) preview_image_bar.setSizePolicy ( QSizePolicy.Expanding, QSizePolicy.Fixed )
preview_image_bar.setLayout(preview_image_bar_l) preview_image_bar.setLayout(preview_image_bar_l)
self.filename_label = QLabel()
f = QFont('Courier New')
self.filename_label.setFont(f)
main_canvas_l = QVBoxLayout() main_canvas_l = QVBoxLayout()
main_canvas_l.setContentsMargins(0,0,0,0) main_canvas_l.setContentsMargins(0,0,0,0)
main_canvas_l.addWidget (self.canvas) main_canvas_l.addWidget (self.canvas)
main_canvas_l.addWidget (self.filename_label, alignment=Qt.AlignCenter)
main_canvas_l.addWidget (preview_image_bar) main_canvas_l.addWidget (preview_image_bar)
self.main_canvas_frame = QFrame() self.main_canvas_frame = QFrame()
self.main_canvas_frame.setLayout(main_canvas_l) self.main_canvas_frame.setLayout(main_canvas_l)

View file

@ -64,13 +64,14 @@ def QSize_to_np(q):
class QDarkPalette(QPalette): class QDarkPalette(QPalette):
def __init__(self): def __init__(self):
super().__init__() super().__init__()
text_color = QColor(200,200,200)
self.setColor(QPalette.Window, QColor(53, 53, 53)) self.setColor(QPalette.Window, QColor(53, 53, 53))
self.setColor(QPalette.WindowText, Qt.white) self.setColor(QPalette.WindowText, text_color )
self.setColor(QPalette.Base, QColor(25, 25, 25)) self.setColor(QPalette.Base, QColor(25, 25, 25))
self.setColor(QPalette.AlternateBase, QColor(53, 53, 53)) self.setColor(QPalette.AlternateBase, QColor(53, 53, 53))
self.setColor(QPalette.ToolTipBase, Qt.white) self.setColor(QPalette.ToolTipBase, text_color )
self.setColor(QPalette.ToolTipText, Qt.white) self.setColor(QPalette.ToolTipText, text_color )
self.setColor(QPalette.Text, Qt.white) self.setColor(QPalette.Text, text_color )
self.setColor(QPalette.Button, QColor(53, 53, 53)) self.setColor(QPalette.Button, QColor(53, 53, 53))
self.setColor(QPalette.ButtonText, Qt.white) self.setColor(QPalette.ButtonText, Qt.white)
self.setColor(QPalette.BrightText, Qt.red) self.setColor(QPalette.BrightText, Qt.red)