def __init__(self, *arg, **kw):
     super(FlickrUploadConfig, self).__init__(*arg, **kw)
     self.setLayout(QtWidgets.QGridLayout())
     self.layout().setContentsMargins(0, 0, 0, 0)
     # privacy settings
     self.privacy = {}
     privacy_group = QtWidgets.QGroupBox(self.tr('Who can see the photos?'))
     privacy_group.setLayout(QtWidgets.QVBoxLayout())
     self.privacy['private'] = QtWidgets.QRadioButton(self.tr('Only you'))
     privacy_group.layout().addWidget(self.privacy['private'])
     ff_group = QtWidgets.QGroupBox()
     ff_group.setFlat(True)
     ff_group.setLayout(QtWidgets.QVBoxLayout())
     ff_group.layout().setContentsMargins(10, 0, 0, 0)
     self.privacy['friends'] = QtWidgets.QCheckBox(self.tr('Your friends'))
     ff_group.layout().addWidget(self.privacy['friends'])
     self.privacy['family'] = QtWidgets.QCheckBox(self.tr('Your family'))
     ff_group.layout().addWidget(self.privacy['family'])
     privacy_group.layout().addWidget(ff_group)
     self.privacy['public'] = QtWidgets.QRadioButton(self.tr('Anyone'))
     self.privacy['public'].toggled.connect(self.enable_ff)
     self.privacy['public'].setChecked(True)
     privacy_group.layout().addWidget(self.privacy['public'])
     self.hidden = QtWidgets.QCheckBox(self.tr('Hidden from search'))
     privacy_group.layout().addWidget(self.hidden)
     privacy_group.layout().addStretch(1)
     self.layout().addWidget(privacy_group, 0, 0, 2, 1)
     # content type
     self.content_type = {}
     content_group = QtWidgets.QGroupBox(self.tr('Content type'))
     content_group.setLayout(QtWidgets.QVBoxLayout())
     self.content_type['photo'] = QtWidgets.QRadioButton(self.tr('Photo'))
     self.content_type['photo'].setChecked(True)
     content_group.layout().addWidget(self.content_type['photo'])
     self.content_type['screenshot'] = QtWidgets.QRadioButton(self.tr('Screenshot'))
     content_group.layout().addWidget(self.content_type['screenshot'])
     self.content_type['other'] = QtWidgets.QRadioButton(self.tr('Art/Illustration'))
     content_group.layout().addWidget(self.content_type['other'])
     content_group.layout().addStretch(1)
     self.layout().addWidget(content_group, 0, 1)
     # create new set
     new_set_button = QtWidgets.QPushButton(self.tr('New album'))
     new_set_button.clicked.connect(self.new_set)
     self.layout().addWidget(new_set_button, 1, 1)
     # list of sets widget
     sets_group = QtWidgets.QGroupBox(self.tr('Add to albums'))
     sets_group.setLayout(QtWidgets.QVBoxLayout())
     scrollarea = QtWidgets.QScrollArea()
     scrollarea.setFrameStyle(QtWidgets.QFrame.NoFrame)
     scrollarea.setStyleSheet("QScrollArea { background-color: transparent }")
     self.sets_widget = QtWidgets.QWidget()
     self.sets_widget.setLayout(QtWidgets.QVBoxLayout())
     self.sets_widget.layout().setSpacing(0)
     self.sets_widget.layout().setSizeConstraint(
         QtWidgets.QLayout.SetMinAndMaxSize)
     scrollarea.setWidget(self.sets_widget)
     self.sets_widget.setAutoFillBackground(False)
     sets_group.layout().addWidget(scrollarea)
     self.layout().addWidget(sets_group, 0, 2, 2, 1)
     self.layout().setColumnStretch(2, 1)
Exemple #2
0
 def __init__(self, parent=None):
     super(ImageList, self).__init__(parent)
     self.app = QtWidgets.QApplication.instance()
     self.drag_icon = None
     self.images = []
     self.last_selected = None
     self.selection_anchor = None
     self.thumb_size = int(
         self.app.config_store.get('controls', 'thumb_size', '80'))
     layout = QtWidgets.QGridLayout()
     layout.setSpacing(0)
     layout.setRowStretch(0, 1)
     layout.setColumnStretch(3, 1)
     self.setLayout(layout)
     layout.setContentsMargins(0, 0, 0, 0)
     # thumbnail display
     self.scroll_area = ScrollArea()
     self.scroll_area.dropped_images.connect(self.open_file_list)
     self.scroll_area.multi_row_changed.connect(
         self._ensure_selected_visible)
     layout.addWidget(self.scroll_area, 0, 0, 1, 6)
     QtWidgets.QShortcut(QtGui.QKeySequence.MoveToPreviousChar,
                         self.scroll_area, self.move_to_prev_thumb)
     QtWidgets.QShortcut(QtGui.QKeySequence.MoveToNextChar,
                         self.scroll_area, self.move_to_next_thumb)
     QtWidgets.QShortcut(QtGui.QKeySequence.MoveToStartOfLine,
                         self.scroll_area, self.move_to_first_thumb)
     QtWidgets.QShortcut(QtGui.QKeySequence.MoveToEndOfLine,
                         self.scroll_area, self.move_to_last_thumb)
     QtWidgets.QShortcut(QtGui.QKeySequence.SelectPreviousChar,
                         self.scroll_area, self.select_prev_thumb)
     QtWidgets.QShortcut(QtGui.QKeySequence.SelectNextChar,
                         self.scroll_area, self.select_next_thumb)
     QtWidgets.QShortcut(QtGui.QKeySequence.SelectAll, self.scroll_area,
                         self.select_all)
     # sort key selector
     layout.addWidget(QtWidgets.QLabel(self.tr('sort by: ')), 1, 0)
     self.sort_name = QtWidgets.QRadioButton(self.tr('file name'))
     self.sort_name.clicked.connect(self._new_sort_order)
     layout.addWidget(self.sort_name, 1, 1)
     self.sort_date = QtWidgets.QRadioButton(self.tr('date taken'))
     layout.addWidget(self.sort_date, 1, 2)
     self.sort_date.clicked.connect(self._new_sort_order)
     if eval(self.app.config_store.get('controls', 'sort_date', 'False')):
         self.sort_date.setChecked(True)
     else:
         self.sort_name.setChecked(True)
     # size selector
     layout.addWidget(QtWidgets.QLabel(self.tr('thumbnail size: ')), 1, 4)
     self.size_slider = QtWidgets.QSlider(Qt.Horizontal)
     self.size_slider.setTracking(False)
     self.size_slider.setRange(4, 9)
     self.size_slider.setPageStep(1)
     self.size_slider.setValue(self.thumb_size // 20)
     self.size_slider.setTickPosition(QtWidgets.QSlider.TicksBelow)
     width = self.size_slider.sizeHint().width()
     self.size_slider.setMinimumWidth(width * 7 // 4)
     self.size_slider.valueChanged.connect(self._new_thumb_size)
     layout.addWidget(self.size_slider, 1, 5)
Exemple #3
0
 def __init__(self, *arg, **kw):
     super(EditSettings, self).__init__(*arg, **kw)
     self.config_store = QtWidgets.QApplication.instance().config_store
     self.setWindowTitle(self.tr('Photini: settings'))
     self.setLayout(QtWidgets.QVBoxLayout())
     # main dialog area
     scroll_area = QtWidgets.QScrollArea()
     self.layout().addWidget(scroll_area)
     panel = QtWidgets.QWidget()
     panel.setLayout(QtWidgets.QFormLayout())
     panel.layout().setRowWrapPolicy(
         max(QtWidgets.QFormLayout.WrapLongRows,
             panel.layout().rowWrapPolicy()))
     # apply & cancel buttons
     self.button_box = QtWidgets.QDialogButtonBox(
         QtWidgets.QDialogButtonBox.Apply
         | QtWidgets.QDialogButtonBox.Cancel)
     self.button_box.clicked.connect(self.button_clicked)
     self.layout().addWidget(self.button_box)
     # copyright holder name
     self.copyright_name = SingleLineEdit(spell_check=True)
     self.copyright_name.set_value(
         self.config_store.get('user', 'copyright_name', ''))
     panel.layout().addRow(self.tr('Copyright holder name'),
                           self.copyright_name)
     # copyright text
     self.copyright_text = SingleLineEdit(spell_check=True)
     self.copyright_text.set_value(
         self.config_store.get('user', 'copyright_text', ''))
     self.copyright_text.setMinimumWidth(
         width_for_text(self.copyright_text, 'x' * 50))
     panel.layout().addRow(self.tr('Copyright text'), self.copyright_text)
     # creator name
     self.creator_name = SingleLineEdit(spell_check=True)
     self.creator_name.set_value(
         self.config_store.get('user', 'creator_name', ''))
     panel.layout().addRow(self.tr('Creator name'), self.creator_name)
     # IPTC data
     force_iptc = eval(self.config_store.get('files', 'force_iptc',
                                             'False'))
     self.write_iptc = QtWidgets.QCheckBox(self.tr('Always write'))
     self.write_iptc.setChecked(force_iptc)
     panel.layout().addRow(self.tr('IPTC metadata'), self.write_iptc)
     # sidecar files
     if_mode = eval(self.config_store.get('files', 'image', 'True'))
     sc_mode = self.config_store.get('files', 'sidecar', 'auto')
     if not if_mode:
         sc_mode = 'always'
     self.sc_always = QtWidgets.QRadioButton(self.tr('Always create'))
     self.sc_always.setChecked(sc_mode == 'always')
     panel.layout().addRow(self.tr('Sidecar files'), self.sc_always)
     self.sc_auto = QtWidgets.QRadioButton(self.tr('Create if necessary'))
     self.sc_auto.setChecked(sc_mode == 'auto')
     self.sc_auto.setEnabled(if_mode)
     panel.layout().addRow('', self.sc_auto)
     self.sc_delete = QtWidgets.QRadioButton(
         self.tr('Delete when possible'))
     self.sc_delete.setChecked(sc_mode == 'delete')
     self.sc_delete.setEnabled(if_mode)
     panel.layout().addRow('', self.sc_delete)
     # image file locking
     self.write_if = QtWidgets.QCheckBox(self.tr('(when possible)'))
     self.write_if.setChecked(if_mode)
     self.write_if.clicked.connect(self.new_write_if)
     panel.layout().addRow(self.tr('Write to image file'), self.write_if)
     # preserve file timestamps
     keep_time = eval(
         self.config_store.get('files', 'preserve_timestamps', 'False'))
     self.keep_time = QtWidgets.QCheckBox()
     self.keep_time.setChecked(keep_time)
     panel.layout().addRow(self.tr('Preserve file timestamps'),
                           self.keep_time)
     # add panel to scroll area after its size is known
     scroll_area.setWidget(panel)
Exemple #4
0
 def __init__(self, parent):
     QtWidgets.QDialog.__init__(self, parent)
     self.config_store = QtWidgets.QApplication.instance().config_store
     self.setWindowTitle(self.tr('Photini: settings'))
     self.setLayout(QtWidgets.QVBoxLayout())
     # main dialog area
     scroll_area = QtWidgets.QScrollArea()
     self.layout().addWidget(scroll_area)
     panel = QtWidgets.QWidget()
     panel.setLayout(QtWidgets.QFormLayout())
     # apply & cancel buttons
     self.button_box = QtWidgets.QDialogButtonBox(
         QtWidgets.QDialogButtonBox.Apply
         | QtWidgets.QDialogButtonBox.Cancel)
     self.button_box.clicked.connect(self.button_clicked)
     self.layout().addWidget(self.button_box)
     # copyright holder name
     self.copyright_name = QtWidgets.QLineEdit()
     self.copyright_name.setText(
         self.config_store.get('user', 'copyright_name', ''))
     self.copyright_name.setMinimumWidth(200)
     panel.layout().addRow(self.tr('Copyright holder'), self.copyright_name)
     # creator name
     self.creator_name = QtWidgets.QLineEdit()
     self.creator_name.setText(
         self.config_store.get('user', 'creator_name', ''))
     panel.layout().addRow(self.tr('Creator'), self.creator_name)
     # reset flickr
     self.reset_flickr = QtWidgets.QCheckBox()
     panel.layout().addRow(self.tr('Disconnect from Flickr'),
                           self.reset_flickr)
     if not keyring or keyring.get_password('photini', 'flickr') is None:
         self.reset_flickr.setDisabled(True)
         panel.layout().labelForField(self.reset_flickr).setDisabled(True)
     # reset picasa
     self.reset_picasa = QtWidgets.QCheckBox()
     panel.layout().addRow(self.tr('Disconnect from Google Photos'),
                           self.reset_picasa)
     if not keyring or keyring.get_password('photini', 'picasa') is None:
         self.reset_picasa.setDisabled(True)
         panel.layout().labelForField(self.reset_picasa).setDisabled(True)
     # reset facebook
     self.reset_facebook = QtWidgets.QCheckBox()
     panel.layout().addRow(self.tr('Disconnect from Facebook'),
                           self.reset_facebook)
     if not keyring or keyring.get_password('photini', 'facebook') is None:
         self.reset_facebook.setDisabled(True)
         panel.layout().labelForField(self.reset_facebook).setDisabled(True)
     # IPTC data
     force_iptc = eval(self.config_store.get('files', 'force_iptc',
                                             'False'))
     self.write_iptc = QtWidgets.QCheckBox(self.tr('Write unconditionally'))
     self.write_iptc.setChecked(force_iptc)
     panel.layout().addRow(self.tr('IPTC metadata'), self.write_iptc)
     # sidecar files
     if_mode = eval(self.config_store.get('files', 'image', 'True'))
     sc_mode = self.config_store.get('files', 'sidecar', 'auto')
     if not if_mode:
         sc_mode = 'always'
     self.sc_always = QtWidgets.QRadioButton(self.tr('Always create'))
     self.sc_always.setChecked(sc_mode == 'always')
     panel.layout().addRow(self.tr('Sidecar files'), self.sc_always)
     self.sc_auto = QtWidgets.QRadioButton(self.tr('Create if necessary'))
     self.sc_auto.setChecked(sc_mode == 'auto')
     self.sc_auto.setEnabled(if_mode)
     panel.layout().addRow('', self.sc_auto)
     self.sc_delete = QtWidgets.QRadioButton(
         self.tr('Delete when possible'))
     self.sc_delete.setChecked(sc_mode == 'delete')
     self.sc_delete.setEnabled(if_mode)
     panel.layout().addRow('', self.sc_delete)
     # image file locking
     self.write_if = QtWidgets.QCheckBox(self.tr('(when possible)'))
     self.write_if.setChecked(if_mode)
     self.write_if.clicked.connect(self.new_write_if)
     panel.layout().addRow(self.tr('Write to image'), self.write_if)
     # add panel to scroll area after its size is known
     scroll_area.setWidget(panel)
Exemple #5
0
 def __init__(self, *arg, **kw):
     super(EditSettings, self).__init__(*arg, **kw)
     self.config_store = QtWidgets.QApplication.instance().config_store
     self.setWindowTitle(self.tr('Photini: settings'))
     self.setLayout(QtWidgets.QVBoxLayout())
     # main dialog area
     scroll_area = QtWidgets.QScrollArea()
     self.layout().addWidget(scroll_area)
     panel = QtWidgets.QWidget()
     panel.setLayout(QtWidgets.QFormLayout())
     panel.layout().setRowWrapPolicy(
         max(QtWidgets.QFormLayout.WrapLongRows,
             panel.layout().rowWrapPolicy()))
     # apply & cancel buttons
     self.button_box = QtWidgets.QDialogButtonBox(
         QtWidgets.QDialogButtonBox.Apply
         | QtWidgets.QDialogButtonBox.Cancel)
     self.button_box.clicked.connect(self.button_clicked)
     self.layout().addWidget(self.button_box)
     # copyright holder name
     self.copyright_name = SingleLineEdit(spell_check=True)
     self.copyright_name.set_value(
         self.config_store.get('user', 'copyright_name', ''))
     panel.layout().addRow(self.tr('Copyright holder name'),
                           self.copyright_name)
     # copyright text
     self.copyright_text = SingleLineEdit(spell_check=True)
     self.copyright_text.set_value(
         self.config_store.get('user', 'copyright_text', ''))
     self.copyright_text.setMinimumWidth(
         width_for_text(self.copyright_text, 'x' * 50))
     panel.layout().addRow(self.tr('Copyright text'), self.copyright_text)
     # creator name
     self.creator_name = SingleLineEdit(spell_check=True)
     self.creator_name.set_value(
         self.config_store.get('user', 'creator_name', ''))
     panel.layout().addRow(self.tr('Creator name'), self.creator_name)
     # IPTC data
     force_iptc = self.config_store.get('files', 'force_iptc', False)
     self.write_iptc = QtWidgets.QCheckBox(self.tr('Always write'))
     self.write_iptc.setChecked(force_iptc)
     panel.layout().addRow(self.tr('IPTC-IIM metadata'), self.write_iptc)
     # show IPTC-IIM length limits
     length_warning = self.config_store.get('files', 'length_warning', True)
     self.length_warning = QtWidgets.QCheckBox(
         self.tr('Show IPTC-IIM length limits'))
     self.length_warning.setChecked(length_warning)
     panel.layout().addRow('', self.length_warning)
     # sidecar files
     if_mode = self.config_store.get('files', 'image', True)
     sc_mode = self.config_store.get('files', 'sidecar', 'auto')
     if not if_mode:
         sc_mode = 'always'
     button_group = QtWidgets.QButtonGroup(parent=self)
     self.sc_always = QtWidgets.QRadioButton(self.tr('Always create'))
     button_group.addButton(self.sc_always)
     self.sc_always.setChecked(sc_mode == 'always')
     panel.layout().addRow(self.tr('Sidecar files'), self.sc_always)
     self.sc_auto = QtWidgets.QRadioButton(self.tr('Create if necessary'))
     button_group.addButton(self.sc_auto)
     self.sc_auto.setChecked(sc_mode == 'auto')
     self.sc_auto.setEnabled(if_mode)
     panel.layout().addRow('', self.sc_auto)
     self.sc_delete = QtWidgets.QRadioButton(
         self.tr('Delete when possible'))
     button_group.addButton(self.sc_delete)
     self.sc_delete.setChecked(sc_mode == 'delete')
     self.sc_delete.setEnabled(if_mode)
     panel.layout().addRow('', self.sc_delete)
     # image file locking
     self.write_if = QtWidgets.QCheckBox(self.tr('(when possible)'))
     self.write_if.setChecked(if_mode)
     self.write_if.clicked.connect(self.new_write_if)
     panel.layout().addRow(self.tr('Write to image file'), self.write_if)
     # preserve file timestamps
     keep_time = self.config_store.get('files', 'preserve_timestamps',
                                       'now')
     if isinstance(keep_time, bool):
         # old config format
         keep_time = ('now', 'keep')[keep_time]
     button_group = QtWidgets.QButtonGroup(parent=self)
     self.keep_time = QtWidgets.QRadioButton(self.tr('Keep original'))
     button_group.addButton(self.keep_time)
     self.keep_time.setChecked(keep_time == 'keep')
     panel.layout().addRow(self.tr('File timestamps'), self.keep_time)
     self.time_taken = QtWidgets.QRadioButton(
         self.tr('Set to when photo was taken'))
     button_group.addButton(self.time_taken)
     self.time_taken.setChecked(keep_time == 'taken')
     panel.layout().addRow('', self.time_taken)
     button = QtWidgets.QRadioButton(self.tr('Set to when file is saved'))
     button_group.addButton(button)
     button.setChecked(keep_time == 'now')
     panel.layout().addRow('', button)
     # add panel to scroll area after its size is known
     scroll_area.setWidget(panel)