def render_preview(self): image = self.current_image if image is None: return QtUtil.preview_image(image.image_file, self.view.imageLabel, self.view.imageWidget) self.set_image_up_shade(image) self.set_image_down_shade(image) self.view.upVerticalSlider.setRange(0, image.height) self.view.downVerticalSlider.setRange(0, image.height) self.view.upVerticalSlider.setValue(image.up) self.view.downVerticalSlider.setValue(image.height - image.down)
def render_stitching_preview(self): images = self.get_images(self.preview_mode) if len(images) > 0: temp_file = TempFileUtil.get_temp_file(prefix="snapshot_preview_", suffix=".jpg") self.preview_image_file = ImageUtil.vertical_stitch( images, temp_file) QtUtil.preview_image(temp_file, self.view.previewLabel, self.view.previewWidget) os.remove(temp_file) else: self.preview_image_file = None self.view.previewLabel.clear()
def on_media_state_changed(self, state): # TODO: find a method to update view instead of these tricks # After pause, the video will re-scale to original size, this is used to fix this. QtUtil.central(self.view.videoWidget, self.view.videoBackgroundWidget, self.snapshot.width, self.snapshot.height, 2, 2) if state == 0: # TODO: find a method to update view instead of these tricks self.view.videoWidget.hide() self.model.isPlaying = False self.view.update_icon(self.view.playButton, "play") self.view.mediaPositionSlider.hide() self.view.mediaPositionSlider.setValue(0) self.view.mediaPositionSlider.show() elif state == QMediaPlayer.PausedState: self.view.update_icon(self.view.playButton, "play") else: self.view.update_icon(self.view.playButton, "pause")
def __init__(self, router): super(PlayerController, self).__init__(router, PlayerWindow()) self.model = SnapshotModel() self.snapshot = Snapshot() self.snapshotSound = QSound( QtUtil.resource_path( os.path.join("windows", "player", "snapshot.wav"))) self.__bind(self.view)
def __init__(self, router): super(ImageStitchingController, self).__init__(router, ImageStitchingWindow()) self.current_image = None self.preview_image_file = None self.preview_mode = 0 self.router.subscribe('snapshot', self) self.files = [] self.text_detector = TextDetector() self.magicSound = QSound( QtUtil.resource_path( os.path.join("windows", "stitching", "magic.wav"))) self.__bind(self.view)
# -*- coding: utf-8 -*- import sys import os from PyQt5 import QtGui from PyQt5.QtWidgets import QApplication from pluto.ui.player.controllers import PlayerController from pluto.ui.qt.mvc.routers import Router from pluto.ui.stitcher.controllers import ImageStitchingController from pluto.ui.qt.qtutils import QtUtil import qdarkstyle if __name__ == '__main__': app = QApplication(sys.argv) # setup stylesheet app.setStyleSheet(qdarkstyle.load_stylesheet_pyqt5()) app.setWindowIcon( QtGui.QIcon(QtUtil.resource_path(os.path.join('windows', 'pluto.png')))) router = Router(app) router.add_ctrl('player', PlayerController(router)) router.add_ctrl('image', ImageStitchingController(router)) router.go('player') sys.exit(app.exec_())
def on_output_preview_resize(self, event): if self.preview_image_file is not None: QtUtil.central(self.view.previewLabel, self.view.previewWidget, self.preview_image_file.width, self.preview_image_file.height)
def on_item_preview_resize(self, event): if self.current_image is not None: QtUtil.central(self.view.imageLabel, self.view.imageWidget, self.current_image.width, self.current_image.height) self.set_image_up_shade(self.current_image) self.set_image_down_shade(self.current_image)
def on_position_changed(self, position): # TODO: find a method to update view instead of these tricks QtUtil.central(self.view.videoWidget, self.view.videoBackgroundWidget, self.snapshot.width, self.snapshot.height) self.view.mediaPositionSlider.setValue(position) self.view.progressLabel.setText(TimeUtil.format_ms(position))
def on_video_resize(self, event): QtUtil.central(self.view.videoWidget, self.view.videoBackgroundWidget, self.snapshot.width, self.snapshot.height)
def set_video(self, file_name, width, height): self.view.mediaPlayer.setMedia( QMediaContent(QUrl.fromLocalFile(file_name))) QtUtil.central(self.view.videoWidget, self.view.videoBackgroundWidget, width, height, 2, 2) self.on_play()
def __init__(self, parent=None, ui_path="windows", ui_file=""): super(View, self).__init__(parent) self._icons = dict() if ui_file: uic.loadUi(QtUtil.resource_path(os.path.join(ui_path, ui_file)), self)
def add_icon(self, icon, path): name = icon.split(".")[0] self._icons[name] = QtUtil.icon(icon, path)