def refresh_graphics_scene(self): """ Clears the graphics scene and view, redraws all components including new screen capture :return: """ # Remove all items that may be in the scene before clearing. Prevents program crash. self.graphics_scene.removeItem(self.game_region_selector) # Clear scene and update viewport self.graphics_scene.clear() self.graphics_view.update() # Update screen capture selected_hwnd = 0 try: selected_hwnd = self._process_list[self.process_combo.currentIndex()][1] except IndexError: pass if selected_hwnd: try: preview_image = capture_window.capture(selected_hwnd) cv2.imwrite(resource_utils.resource_path(self.preview_image_path), preview_image) except: pass self.preview_pixmap.load(resource_utils.resource_path(self.preview_image_path)) # Re-add all items to scene self.graphics_scene.addPixmap(self.preview_pixmap) self.graphics_scene.addItem(self.game_region_selector)
def __init__(self): super().__init__() self.register_signal("RESET") self.register_signal("COMPLETE") self._fps = config.get("advanced", "fadeout_process_frame_rate") self._reset_threshold = config.get("thresholds", "reset_threshold") self._black_threshold = config.get("thresholds", "black_threshold") self._undo_threshold = config.get("thresholds", "undo_threshold") _, _, reset_width, reset_height = as64core.get_region_rect(as64core.RESET_REGION) self._reset_template = cv2.resize(cv2.imread(resource_path(config.get("advanced", "reset_frame_one"))), (reset_width, reset_height), interpolation=cv2.INTER_AREA) self._reset_template_2 = cv2.resize(cv2.imread(resource_path(config.get("advanced", "reset_frame_two"))), (reset_width, reset_height), interpolation=cv2.INTER_AREA)
def load_local(self): try: with open(resource_utils.resource_path( self.local_version_path)) as local: self.local_version = json.load(local) except FileNotFoundError: pass
def initialize(self): # Configure window self.setWindowTitle(self.title) if config.get("general", "on_top"): self.setWindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.WindowStaysOnTopHint) else: self.setWindowFlags(QtCore.Qt.FramelessWindowHint) self.setFixedSize(self.width, self.height) # Configure Central Widget self.central_widget.setObjectName("central_widget") self.central_widget.setStyleSheet( r"QWidget#central_widget{background-image: url(" + resource_path(constants.BACKGROUND_PATH) + "); background-attachment: fixed;}") self.setCentralWidget(self.central_widget) # Configure Other Widgets self.close_btn.move(340, 8) self.minimize_btn.move(320, 8) self.star_btn.move(250, 68) self.star_count.setFixedWidth(150) self.star_count.move(197, 115) self.star_count.setFont(self.start_count_font) self.star_count.star_count = "-" self.star_count.split_star = "-" self.start_btn.move(206, 200) self.start_btn.setFont(self.button_font) self.start_btn.setTextColour(QtGui.QColor(225, 227, 230)) self.start_btn.add_state("start", self.start_pixmap, "Start") self.start_btn.add_state("stop", self.stop_pixmap, "Stop") self.start_btn.add_state("init", self.init_pixmap, "Initializing..") self.start_btn.set_state("start") self.split_list.setFont(self.button_font) self.split_list.setFixedSize(183, self.height) self.split_list.move(0, 0) self.open_route() # Connections self.close_btn.clicked.connect(self.close) self.minimize_btn.clicked.connect(self.showMinimized) self.start_btn.clicked.connect(self.start_clicked) self.star_btn.clicked.connect(self._reset) self.dialogs["route_editor"].route_updated.connect( self._on_route_update) self.dialogs["settings_dialog"].applied.connect(self.settings_updated) self.dialogs["capture_editor"].applied.connect(self._reset) self.dialogs["update_dialog"].ignore_btn.clicked.connect( lambda: self.ignore_update.emit()) self.dialogs["update_dialog"].update_btn.clicked.connect( lambda: self.install_update.emit())
def update_config(self): try: with open(resource_utils.resource_path( self.CONFIG_UPDATE_FILE)) as file: config_update = json.load(file) except (FileNotFoundError, PermissionError): return try: for update in config_update["Update"]: config.set_key(update[0], update[1], config.get_default(update[0], update[1])) config.save_config() except: pass
def initialize_window(self): self.setFixedSize(self.width, self.height) self.setWindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.WindowStaysOnTopHint | QtCore.Qt.SplashScreen) self.setAttribute(QtCore.Qt.WA_TranslucentBackground, True) self.setWindowTitle(self.title) # Configure Widgets self.background.setPixmap( QtGui.QPixmap(resource_utils.resource_path(ABOUT_PATH))) self.background.move(0, 0) self.ver_title_lb.move(260, 201) self.ver_lb.move(302, 201) self.author_title_lb.move(262, 221) self.author_lb.move(302, 221)
def __init__(self, parent=None): QtWidgets.QDialog.__init__(self, parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowCloseButtonHint) self.window_title = "Game Capture Editor" self.setWindowIcon(QtGui.QIcon(resource_utils.resource_path(ICON_PATH))) # File Paths # TODO: ADD TO CONSTANTS self.preview_image_path = r'resources/game_preview.png' self.preview_not_found_image_path = r'resources/game_preview_not_found.png' # Layouts self.main_layout = QtWidgets.QHBoxLayout() self.left_layout = QtWidgets.QGridLayout() self.right_layout = QtWidgets.QGridLayout() # Primary Widgets self.left_widget = QtWidgets.QWidget(self) self.right_widget = QtWidgets.QWidget(self) # Right Panel Widgets self.game_region_panel = RectangleCapturePanel("Game Region") self.apply_btn = QtWidgets.QPushButton("Apply") self.cancel_btn = QtWidgets.QPushButton("Cancel") # Left Panel Widgets self.process_lb = QtWidgets.QLabel("Process:") self.process_combo = QtWidgets.QComboBox() self.capture_btn = QtWidgets.QPushButton("Capture") # Graphics View self.graphics_scene = CaptureGraphicsScene() self.graphics_view = QtWidgets.QGraphicsView(self.graphics_scene) # Graphics Scene Items self.game_region_selector = RectangleSelector(0, 0, 50, 50) self.preview_pixmap = QtGui.QPixmap() self.initialize()