예제 #1
0
 def __init__(self, upload_config_widget, image_list, *arg, **kw):
     super(PhotiniUploader, self).__init__(*arg, **kw)
     self.app = QtWidgets.QApplication.instance()
     self.app.aboutToQuit.connect(self.shutdown)
     logger.debug('using %s', keyring.get_keyring().__module__)
     self.image_list = image_list
     self.setLayout(QtWidgets.QGridLayout())
     self.session = self.session_factory()
     self.session.connection_changed.connect(self.connection_changed)
     self.upload_worker = None
     # user details
     self.user = {}
     user_group = QtWidgets.QGroupBox(translate('UploaderTabsAll', 'User'))
     user_group.setLayout(QtWidgets.QVBoxLayout())
     self.user_photo = QtWidgets.QLabel()
     self.user_photo.setAlignment(Qt.AlignHCenter | Qt.AlignTop)
     user_group.layout().addWidget(self.user_photo)
     self.user_name = QtWidgets.QLabel()
     self.user_name.setWordWrap(True)
     self.user_name.setFixedWidth(80)
     user_group.layout().addWidget(self.user_name)
     user_group.layout().addStretch(1)
     self.layout().addWidget(user_group, 0, 0, 1, 2)
     # connect / disconnect button
     self.user_connect = StartStopButton(
         translate('UploaderTabsAll', 'Log in'),
         translate('UploaderTabsAll', 'Log out'))
     self.user_connect.click_start.connect(self.log_in)
     self.user_connect.click_stop.connect(self.session.log_out)
     self.layout().addWidget(self.user_connect, 1, 0, 1, 2)
     # 'service' specific widget
     self.layout().addWidget(upload_config_widget, 0, 2, 2, 2)
     # upload button
     self.upload_button = StartStopButton(
         translate('UploaderTabsAll', 'Start upload'),
         translate('UploaderTabsAll', 'Stop upload'))
     self.upload_button.setEnabled(False)
     self.upload_button.click_start.connect(self.start_upload)
     self.upload_button.click_stop.connect(self.stop_upload)
     self.layout().addWidget(self.upload_button, 2, 3)
     # progress bar
     self.layout().addWidget(
         QtWidgets.QLabel(translate('UploaderTabsAll', 'Progress')), 2, 0)
     self.total_progress = QtWidgets.QProgressBar()
     self.layout().addWidget(self.total_progress, 2, 1, 1, 2)
     # adjust spacing
     self.layout().setColumnStretch(2, 1)
     self.layout().setRowStretch(0, 1)
     # initialise as not connected
     self.connection_changed(False)
예제 #2
0
 def __init__(self, upload_config_widget, image_list, *arg, **kw):
     super(PhotiniUploader, self).__init__(*arg, **kw)
     QtWidgets.QApplication.instance().aboutToQuit.connect(self.shutdown)
     self.logger = logging.getLogger(self.__class__.__name__)
     self.image_list = image_list
     self.setLayout(QtWidgets.QGridLayout())
     self.session = self.session_factory()
     self.upload_worker = None
     self.connected = False
     # user details
     self.user = {}
     user_group = QtWidgets.QGroupBox(self.tr('User'))
     user_group.setLayout(QtWidgets.QVBoxLayout())
     self.user_photo = QtWidgets.QLabel()
     self.user_photo.setAlignment(Qt.AlignHCenter | Qt.AlignTop)
     user_group.layout().addWidget(self.user_photo)
     self.user_name = QtWidgets.QLabel()
     self.user_name.setWordWrap(True)
     self.user_name.setFixedWidth(80)
     user_group.layout().addWidget(self.user_name)
     user_group.layout().addStretch(1)
     self.layout().addWidget(user_group, 0, 0, 1, 2)
     # connect / disconnect button
     self.user_connect = QtWidgets.QPushButton()
     self.user_connect.setCheckable(True)
     self.user_connect.clicked.connect(self.connect_user)
     self.layout().addWidget(self.user_connect, 1, 0, 1, 2)
     # 'service' specific widget
     self.layout().addWidget(upload_config_widget, 0, 2, 2, 2)
     # upload button
     self.upload_button = StartStopButton(self.tr('Start upload'),
                                          self.tr('Stop upload'))
     self.upload_button.setEnabled(False)
     self.upload_button.click_start.connect(self.start_upload)
     self.upload_button.click_stop.connect(self.stop_upload)
     self.layout().addWidget(self.upload_button, 2, 3)
     # progress bar
     self.layout().addWidget(QtWidgets.QLabel(self.tr('Progress')), 2, 0)
     self.total_progress = QtWidgets.QProgressBar()
     self.layout().addWidget(self.total_progress, 2, 1, 1, 2)
     # adjust spacing
     self.layout().setColumnStretch(2, 1)
     self.layout().setRowStretch(0, 1)
예제 #3
0
 def __init__(self, image_list, parent=None):
     super(TabWidget, self).__init__(parent)
     app = QtWidgets.QApplication.instance()
     app.aboutToQuit.connect(self.shutdown)
     if gp and app.test_mode:
         self.gp_log = gp.check_result(gp.use_python_logging())
     self.config_store = app.config_store
     self.image_list = image_list
     self.setLayout(QtWidgets.QGridLayout())
     form = QtWidgets.QFormLayout()
     form.setFieldGrowthPolicy(QtWidgets.QFormLayout.AllNonFixedFieldsGrow)
     self.nm = NameMangler()
     self.file_data = {}
     self.file_list = []
     self.source = None
     self.file_reader = None
     self.file_writer = None
     # source selector
     box = QtWidgets.QHBoxLayout()
     box.setContentsMargins(0, 0, 0, 0)
     self.source_selector = QtWidgets.QComboBox()
     self.source_selector.currentIndexChanged.connect(self.new_source)
     box.addWidget(self.source_selector)
     refresh_button = QtWidgets.QPushButton(self.tr('refresh'))
     refresh_button.clicked.connect(self.refresh)
     box.addWidget(refresh_button)
     box.setStretch(0, 1)
     form.addRow(self.tr('Source'), box)
     # path format
     self.path_format = QtWidgets.QLineEdit()
     self.path_format.setValidator(PathFormatValidator())
     self.path_format.textChanged.connect(self.nm.new_format)
     self.path_format.editingFinished.connect(self.path_format_finished)
     form.addRow(self.tr('Target format'), self.path_format)
     # path example
     self.path_example = QtWidgets.QLabel()
     self.nm.new_example.connect(self.path_example.setText)
     form.addRow('=>', self.path_example)
     self.layout().addLayout(form, 0, 0)
     # file list
     self.file_list_widget = QtWidgets.QListWidget()
     self.file_list_widget.setSelectionMode(
         QtWidgets.QAbstractItemView.ExtendedSelection)
     self.file_list_widget.itemSelectionChanged.connect(self.selection_changed)
     self.layout().addWidget(self.file_list_widget, 1, 0)
     # selection buttons
     buttons = QtWidgets.QVBoxLayout()
     buttons.addStretch(1)
     self.selected_count = QtWidgets.QLabel()
     self.selection_changed()
     buttons.addWidget(self.selected_count)
     select_all = QtWidgets.QPushButton(self.tr('Select\nall'))
     select_all.clicked.connect(self.select_all)
     buttons.addWidget(select_all)
     select_new = QtWidgets.QPushButton(self.tr('Select\nnew'))
     select_new.clicked.connect(self.select_new)
     buttons.addWidget(select_new)
     self.copy_button = StartStopButton(self.tr('Copy\nphotos'),
                                        self.tr('Stop\nimport'))
     self.copy_button.click_start.connect(self.copy_selected)
     self.copy_button.click_stop.connect(self.stop_copy)
     buttons.addWidget(self.copy_button)
     self.layout().addLayout(buttons, 0, 1, 2, 1)
     # final initialisation
     self.image_list.sort_order_changed.connect(self.sort_file_list)
     path = os.path.expanduser('~/Pictures')
     if not os.path.isdir(path) and sys.platform == 'win32':
         try:
             import win32com.shell as ws
             path = ws.shell.SHGetFolderPath(
                 0, ws.shellcon.CSIDL_MYPICTURES, None, 0)
         except ImportError:
             pass
     self.path_format.setText(
         os.path.join(path, '%Y', '%Y_%m_%d', '{name}'))
     self.refresh()
     self.list_files()
예제 #4
0
 def __init__(self, image_list, parent=None):
     super(TabWidget, self).__init__(parent)
     self.app = QtWidgets.QApplication.instance()
     self.app.aboutToQuit.connect(self.stop_copy)
     if gp and self.app.options.test:
         self.gp_log = gp.check_result(gp.use_python_logging())
     self.config_store = self.app.config_store
     self.image_list = image_list
     self.setLayout(QtWidgets.QGridLayout())
     form = QtWidgets.QFormLayout()
     form.setFieldGrowthPolicy(QtWidgets.QFormLayout.AllNonFixedFieldsGrow)
     self.nm = NameMangler()
     self.file_data = {}
     self.file_list = []
     self.source = None
     self.file_copier = None
     self.updating = QtCore.QMutex()
     # source selector
     box = QtWidgets.QHBoxLayout()
     box.setContentsMargins(0, 0, 0, 0)
     self.source_selector = QtWidgets.QComboBox()
     self.source_selector.currentIndexChanged.connect(self.new_source)
     self.source_selector.setContextMenuPolicy(Qt.CustomContextMenu)
     self.source_selector.customContextMenuRequested.connect(
         self.remove_folder)
     box.addWidget(self.source_selector)
     refresh_button = QtWidgets.QPushButton(
         translate('ImporterTab', 'refresh'))
     refresh_button.clicked.connect(self.refresh)
     box.addWidget(refresh_button)
     box.setStretch(0, 1)
     form.addRow(translate('ImporterTab', 'Source'), box)
     # update config
     self.config_store.delete('importer', 'folders')
     for section in self.config_store.config.sections():
         if not section.startswith('importer'):
             continue
         path_format = self.config_store.get(section, 'path_format')
         if not (path_format and '(' in path_format):
             continue
         path_format = path_format.replace('(', '{').replace(')', '}')
         self.config_store.set(section, 'path_format', path_format)
     # path format
     self.path_format = QtWidgets.QLineEdit()
     self.path_format.setValidator(PathFormatValidator())
     self.path_format.textChanged.connect(self.nm.new_format)
     self.path_format.editingFinished.connect(self.path_format_finished)
     form.addRow(translate('ImporterTab', 'Target format'),
                 self.path_format)
     # path example
     self.path_example = QtWidgets.QLabel()
     self.nm.new_example.connect(self.path_example.setText)
     form.addRow('=>', self.path_example)
     self.layout().addLayout(form, 0, 0)
     # file list
     self.file_list_widget = QtWidgets.QListWidget()
     self.file_list_widget.setSelectionMode(
         QtWidgets.QAbstractItemView.ExtendedSelection)
     self.file_list_widget.itemSelectionChanged.connect(
         self.selection_changed)
     self.layout().addWidget(self.file_list_widget, 1, 0)
     # selection buttons
     buttons = QtWidgets.QVBoxLayout()
     buttons.addStretch(1)
     self.selected_count = QtWidgets.QLabel()
     buttons.addWidget(self.selected_count)
     select_all = QtWidgets.QPushButton(
         translate('ImporterTab', 'Select\nall'))
     select_all.clicked.connect(self.select_all)
     buttons.addWidget(select_all)
     select_new = QtWidgets.QPushButton(
         translate('ImporterTab', 'Select\nnew'))
     select_new.clicked.connect(self.select_new)
     buttons.addWidget(select_new)
     # copy buttons
     self.move_button = StartStopButton(
         translate('ImporterTab', 'Move\nphotos'),
         translate('ImporterTab', 'Stop\nmove'))
     self.move_button.click_start.connect(self.move_selected)
     self.move_button.click_stop.connect(self.stop_copy)
     buttons.addWidget(self.move_button)
     self.copy_button = StartStopButton(
         translate('ImporterTab', 'Copy\nphotos'),
         translate('ImporterTab', 'Stop\ncopy'))
     self.copy_button.click_start.connect(self.copy_selected)
     self.copy_button.click_stop.connect(self.stop_copy)
     buttons.addWidget(self.copy_button)
     self.layout().addLayout(buttons, 0, 1, 2, 1)
     self.selection_changed()
     # final initialisation
     self.image_list.sort_order_changed.connect(self.sort_file_list)
     path = QtCore.QStandardPaths.writableLocation(
         QtCore.QStandardPaths.PicturesLocation)
     self.path_format.setText(os.path.join(path, '%Y', '%Y_%m_%d',
                                           '{name}'))
예제 #5
0
 def __init__(self, image_list, parent=None):
     super(TabWidget, self).__init__(parent)
     app = QtWidgets.QApplication.instance()
     app.aboutToQuit.connect(self.shutdown)
     if gp and app.test_mode:
         self.gp_log = gp.check_result(gp.use_python_logging())
     self.config_store = app.config_store
     self.image_list = image_list
     self.setLayout(QtWidgets.QGridLayout())
     form = QtWidgets.QFormLayout()
     form.setFieldGrowthPolicy(QtWidgets.QFormLayout.AllNonFixedFieldsGrow)
     self.nm = NameMangler()
     self.file_data = {}
     self.file_list = []
     self.source = None
     self.file_copier = None
     # source selector
     box = QtWidgets.QHBoxLayout()
     box.setContentsMargins(0, 0, 0, 0)
     self.source_selector = QtWidgets.QComboBox()
     self.source_selector.currentIndexChanged.connect(self.new_source)
     box.addWidget(self.source_selector)
     refresh_button = QtWidgets.QPushButton(self.tr('refresh'))
     refresh_button.clicked.connect(self.refresh)
     box.addWidget(refresh_button)
     box.setStretch(0, 1)
     form.addRow(self.tr('Source'), box)
     # path format
     self.path_format = QtWidgets.QLineEdit()
     self.path_format.setValidator(PathFormatValidator())
     self.path_format.textChanged.connect(self.nm.new_format)
     self.path_format.editingFinished.connect(self.path_format_finished)
     form.addRow(self.tr('Target format'), self.path_format)
     # path example
     self.path_example = QtWidgets.QLabel()
     self.nm.new_example.connect(self.path_example.setText)
     form.addRow('=>', self.path_example)
     self.layout().addLayout(form, 0, 0)
     # file list
     self.file_list_widget = QtWidgets.QListWidget()
     self.file_list_widget.setSelectionMode(
         QtWidgets.QAbstractItemView.ExtendedSelection)
     self.file_list_widget.itemSelectionChanged.connect(
         self.selection_changed)
     self.layout().addWidget(self.file_list_widget, 1, 0)
     # selection buttons
     buttons = QtWidgets.QVBoxLayout()
     buttons.addStretch(1)
     self.selected_count = QtWidgets.QLabel()
     buttons.addWidget(self.selected_count)
     select_all = QtWidgets.QPushButton(self.tr('Select\nall'))
     select_all.clicked.connect(self.select_all)
     buttons.addWidget(select_all)
     select_new = QtWidgets.QPushButton(self.tr('Select\nnew'))
     select_new.clicked.connect(self.select_new)
     buttons.addWidget(select_new)
     # copy buttons
     self.move_button = StartStopButton(self.tr('Move\nphotos'),
                                        self.tr('Stop\nmove'))
     self.move_button.click_start.connect(self.move_selected)
     self.move_button.click_stop.connect(self.stop_copy)
     buttons.addWidget(self.move_button)
     self.copy_button = StartStopButton(self.tr('Copy\nphotos'),
                                        self.tr('Stop\ncopy'))
     self.copy_button.click_start.connect(self.copy_selected)
     self.copy_button.click_stop.connect(self.stop_copy)
     buttons.addWidget(self.copy_button)
     self.layout().addLayout(buttons, 0, 1, 2, 1)
     self.selection_changed()
     # final initialisation
     self.image_list.sort_order_changed.connect(self.sort_file_list)
     if qt_version_info >= (5, 0):
         path = QtCore.QStandardPaths.writableLocation(
             QtCore.QStandardPaths.PicturesLocation)
     else:
         path = QtGui.QDesktopServices.storageLocation(
             QtGui.QDesktopServices.PicturesLocation)
     self.path_format.setText(os.path.join(path, '%Y', '%Y_%m_%d',
                                           '{name}'))
     self.refresh()
     self.list_files()