mirror of
https://github.com/iperov/DeepFaceLive.git
synced 2024-10-18 01:20:20 -07:00
236 lines
7.9 KiB
Python
236 lines
7.9 KiB
Python
# from PyQt6.QtCore import *
|
|
# from PyQt6.QtGui import *
|
|
# from PyQt6.QtWidgets import *
|
|
|
|
# #from localization import StringsDB
|
|
# from .QXMainWindow import *
|
|
|
|
# class QXIconButton(QPushButton):
|
|
# """
|
|
# Custom Icon button that works through keyEvent system, without shortcut of QAction
|
|
# works only with QXMainWindow as global window class
|
|
# currently works only with one-key shortcut
|
|
# """
|
|
|
|
# def __init__(self, icon,
|
|
# tooltip=None,
|
|
# shortcut=None,
|
|
# click_func=None,
|
|
# first_repeat_delay=300,
|
|
# repeat_delay=20,
|
|
# ):
|
|
|
|
# super().__init__(icon, "")
|
|
|
|
# self.setIcon(icon)
|
|
|
|
# if shortcut is not None:
|
|
# tooltip = f"{tooltip} ( S_HOT_KEY: {shortcut} )"
|
|
|
|
# self.setToolTip(tooltip)
|
|
|
|
|
|
|
|
# self.seq = QKeySequence(shortcut) if shortcut is not None else None
|
|
|
|
# QXMainWindow.inst.add_keyPressEvent_listener ( self.on_keyPressEvent )
|
|
# QXMainWindow.inst.add_keyReleaseEvent_listener ( self.on_keyReleaseEvent )
|
|
|
|
# self.click_func = click_func
|
|
# self.first_repeat_delay = first_repeat_delay
|
|
# self.repeat_delay = repeat_delay
|
|
# self.repeat_timer = None
|
|
|
|
# self.op_device = None
|
|
|
|
# self.pressed.connect( lambda : self.action(is_pressed=True) )
|
|
# self.released.connect( lambda : self.action(is_pressed=False) )
|
|
|
|
# def action(self, is_pressed=None, op_device=None):
|
|
# if self.click_func is None:
|
|
# return
|
|
|
|
# if is_pressed is not None:
|
|
# if is_pressed:
|
|
# if self.repeat_timer is None:
|
|
# self.click_func()
|
|
# self.repeat_timer = QTimer()
|
|
# self.repeat_timer.timeout.connect(self.action)
|
|
# self.repeat_timer.start(self.first_repeat_delay)
|
|
# else:
|
|
# if self.repeat_timer is not None:
|
|
# self.repeat_timer.stop()
|
|
# self.repeat_timer = None
|
|
# else:
|
|
# self.click_func()
|
|
# if self.repeat_timer is not None:
|
|
# self.repeat_timer.setInterval(self.repeat_delay)
|
|
|
|
# def on_keyPressEvent(self, ev):
|
|
# key = ev.nativeVirtualKey()
|
|
# if ev.isAutoRepeat():
|
|
# return
|
|
|
|
# if self.seq is not None:
|
|
# if key == self.seq[0]:
|
|
# self.action(is_pressed=True)
|
|
|
|
# def on_keyReleaseEvent(self, ev):
|
|
# key = ev.nativeVirtualKey()
|
|
# if ev.isAutoRepeat():
|
|
# return
|
|
# if self.seq is not None:
|
|
# if key == self.seq[0]:
|
|
# self.action(is_pressed=False)
|
|
|
|
|
|
############################
|
|
############################
|
|
############################
|
|
############################
|
|
############################
|
|
|
|
# class QXTabWidget(QTabWidget):
|
|
# def __init__(self, tabs=None, tab_shape=None, size_policy=None, maximum_width=None, hided=False, enabled=True):
|
|
# super().__init__()
|
|
# if tabs is not None:
|
|
# for tab,icon,name in tabs:
|
|
# self.addTab(tab, icon, name)
|
|
# if tab_shape is not None:
|
|
# self.setTabShape(tab_shape)
|
|
|
|
# if maximum_width is not None:
|
|
# self.setMaximumWidth(maximum_width)
|
|
|
|
# if size_policy is not None:
|
|
# self.setSizePolicy(*size_policy)
|
|
# if hided:
|
|
# self.hide()
|
|
# self.setEnabled(enabled)
|
|
|
|
|
|
|
|
|
|
# class QXComboObjectBox(QXComboBox):
|
|
# """
|
|
# as QComboBox but str'able Iterable of objects
|
|
# and more functionality
|
|
# """
|
|
|
|
# def __init__(self, choices : Iterable, none_choice=None, font=None, size_policy=None, maximum_width=None, hided=False, enabled=True, on_choosed=None):
|
|
# super().__init__(font=font, size_policy=size_policy, maximum_width=maximum_width, hided=hided, enabled=enabled)
|
|
|
|
# self.choices = tuple(choices)
|
|
# if len(self.choices) == 0:
|
|
# raise ValueError('Number of choices are 0')
|
|
# self.none_choice = none_choice
|
|
# self.on_choosed = on_choosed
|
|
|
|
# if none_choice is not None:
|
|
# self.addItem( QIcon(), str(none_choice) )
|
|
# for i, choice in enumerate(choices):
|
|
# self.addItem( QIcon(), str(choice) )
|
|
|
|
# self.setCurrentIndex(0)
|
|
# self.currentIndexChanged.connect(self.on_toggled)
|
|
|
|
# def get_choices(self):
|
|
# return self.choices
|
|
|
|
# def get_selected_choice(self):
|
|
# idx = self.currentIndex()
|
|
# if self.none_choice is not None:
|
|
# idx -= 1
|
|
# if idx == -1:
|
|
# return None
|
|
|
|
# return self.choices[idx]
|
|
|
|
# def unselect(self, block_signals : bool = False):
|
|
# if self.none_choice is not None:
|
|
# with BlockSignals(self, block_signals=block_signals):
|
|
# self.setCurrentIndex(0)
|
|
|
|
|
|
# def set_selected_index(self, index, block_signals : bool = False):
|
|
# if index >= 0 and index < len(self.choices):
|
|
# if self.none_choice is not None:
|
|
# index += 1
|
|
|
|
# with BlockSignals(self, block_signals=block_signals):
|
|
# self.setCurrentIndex(index)
|
|
|
|
# def set_selected_choice(self, choice, block_signals : bool = False):
|
|
# with BlockSignals(self, block_signals=block_signals):
|
|
# if choice is None:
|
|
# if self.none_choice is not None:
|
|
# self.setCurrentIndex(0)
|
|
# else:
|
|
# raise ValueError('unable to change to None with none_choice=False')
|
|
# else:
|
|
# for i, schoice in enumerate(self.choices):
|
|
# if schoice == choice:
|
|
# self.setCurrentIndex(i+1)
|
|
# break
|
|
|
|
# def on_toggled(self, idx):
|
|
# if self.on_choosed is not None:
|
|
# self.on_choosed( self.get_selected_choice() )
|
|
|
|
|
|
|
|
# class QXCollapsibleSection(QWidget):
|
|
# def __init__(self, title, content_layout, is_opened=False, allow_open_close=True, show_content_frame=True):
|
|
# super().__init__()
|
|
|
|
# btn = self.btn = QToolButton()
|
|
# btn.setToolButtonStyle(Qt.ToolButtonStyle.ToolButtonTextBesideIcon)
|
|
# btn.setStyleSheet('border: none;')
|
|
# btn.setArrowType(Qt.ArrowType.RightArrow)
|
|
# btn.setText(title)
|
|
# #btn.setIconSize( QSize(8,8))
|
|
# btn.setCheckable(True)
|
|
# btn.setChecked(False)
|
|
|
|
# if allow_open_close:
|
|
# btn.toggled.connect(self.on_btn_toggled)
|
|
|
|
# line = QXFrame( size_policy=(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Maximum) )
|
|
# line.setFrameShape(QFrame.Shape.HLine)
|
|
|
|
# frame = self.frame = QXFrame( size_policy=(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed), layout=content_layout, hided=True)
|
|
# if show_content_frame:
|
|
# frame.setFrameShape(QFrame.Shape.StyledPanel)
|
|
|
|
# main_l = QXGridLayout( contents_margins=0 )
|
|
|
|
# main_l.addWidget(btn, 0, 0, alignment=Qt.AlignmentFlag.AlignLeft)
|
|
# main_l.addWidget(QXHorizontalLine() , 0, 1)
|
|
|
|
# main_l.addWidget(frame, 1, 0, 1, 2)
|
|
|
|
|
|
# self.setLayout(main_l)
|
|
|
|
# if is_opened:
|
|
# self.open()
|
|
# else:
|
|
# self.close()
|
|
|
|
# def is_opened(self):
|
|
# return self.frame.isVisible()
|
|
|
|
# def open(self):
|
|
# self.btn.setArrowType(Qt.ArrowType.DownArrow)
|
|
# self.frame.show()
|
|
|
|
# def close(self):
|
|
# self.btn.setArrowType(Qt.ArrowType.RightArrow)
|
|
# self.frame.hide()
|
|
|
|
# def on_btn_toggled(self):
|
|
# if self.btn.isChecked():
|
|
# self.open()
|
|
# else:
|
|
# self.close()
|