Skip to content

Commit

Permalink
Merge pull request #196 from jim-easterbrook/devel
Browse files Browse the repository at this point in the history
Devel
  • Loading branch information
jim-easterbrook committed May 29, 2023
2 parents 0b143a4 + 1d9c64d commit fa31dd1
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 19 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.txt
Expand Up @@ -16,6 +16,9 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see
<http://www.gnu.org/licenses/>.

Changes in v2023.5.2:
1/ Fix crash with PySide6 v6.5.1 when opening a file.

Changes in v2023.5.1:
1/ Tab labels use two lines instead of eliding to fit width.
2/ Ignore NULL bytes in some phone images' Exif comment values.
Expand Down
4 changes: 2 additions & 2 deletions src/photini/__init__.py
@@ -1,4 +1,4 @@
"""Full documentation is at https://photini.readthedocs.io/"""

__version__ = '2023.5.1'
build = '2722 (64e9222)'
__version__ = '2023.5.2'
build = '2725 (fc21287)'
24 changes: 10 additions & 14 deletions src/photini/imagelist.py
Expand Up @@ -340,8 +340,9 @@ def get_selected(self):
class ScrollArea(QtWidgets.QScrollArea):
dropped_images = QtSignal(list)

def __init__(self, parent=None):
def __init__(self, image_list=None, parent=None):
super(ScrollArea, self).__init__(parent)
self.image_list = image_list
self.setWidgetResizable(True)
self.setAcceptDrops(True)
widget = QtWidgets.QWidget()
Expand All @@ -351,7 +352,6 @@ def __init__(self, parent=None):
# adopt some layout methods & signals
self.add_widget = self.thumbs.addWidget
self.remove_widget = self.thumbs.removeWidget
self.multi_row_changed = self.thumbs.multi_row_changed

@catch_all
def ensureWidgetVisible(self, widget):
Expand Down Expand Up @@ -390,14 +390,18 @@ def set_minimum_height(self, min_height):
margins = self.contentsMargins()
self.setMinimumHeight(min_height + margins.top() + margins.bottom())

@QtSlot()
@catch_all
def multi_row_changed(self):
if self.image_list.last_selected:
self.ensureWidgetVisible(self.image_list.last_selected)


class ThumbsLayout(QtWidgets.QLayout):
"""Multi-row fixed-width or single-row variable-width grid of
thumbnail widgets, according to height.
"""
multi_row_changed = QtSignal()

def __init__(self, scroll_area=None, **kw):
super(ThumbsLayout, self).__init__(**kw)
self.scroll_area = scroll_area
Expand Down Expand Up @@ -459,7 +463,7 @@ def do_layout(self, rect=None):
if multi_row != self.multi_row:
self.multi_row = multi_row
# make selected item visible after redrawing has finished
QtCore.QTimer.singleShot(0, self.multi_row_changed.emit)
QtCore.QTimer.singleShot(0, self.scroll_area.multi_row_changed)
if multi_row:
columns = max((view_width - width_hint) // item_w, 1)
rows = (len(self.item_list) + columns - 1) // columns
Expand Down Expand Up @@ -506,10 +510,8 @@ def __init__(self, parent=None):
# thumbnail display
self.setLayout(QtWidgets.QVBoxLayout())
self.layout().setContentsMargins(0, 0, 0, 0)
self.scroll_area = ScrollArea()
self.scroll_area = ScrollArea(image_list=self)
self.scroll_area.dropped_images.connect(self.open_file_list)
self.scroll_area.multi_row_changed.connect(
self._ensure_selected_visible)
self.layout().addWidget(self.scroll_area)
QtGui2.QShortcut(QtGui.QKeySequence.StandardKey.MoveToPreviousChar,
self.scroll_area, self.move_to_prev_thumb)
Expand Down Expand Up @@ -676,12 +678,6 @@ def _new_sort_order(self):
self._sort_thumbnails()
self.sort_order_changed.emit()

@QtSlot()
@catch_all
def _ensure_selected_visible(self):
if self.last_selected:
self.scroll_area.ensureWidgetVisible(self.last_selected)

def _sort_thumbnails(self):
sort_date = self.sort_date.isChecked()
self.app.config_store.set('controls', 'sort_date', sort_date)
Expand Down
6 changes: 3 additions & 3 deletions src/photini/metadata.py
Expand Up @@ -235,9 +235,9 @@ def save(self, file_times=None, write_iptc=False):
for tag in self.get_all_tags():
if tag in saved_tags:
continue
if tag in ('Exif.Image.GPSTag', 'Exif.MakerNote.ByteOrder',
'Exif.MakerNote.Offset', 'Exif.Photo.MakerNote',
'Exif.Image.IPTCNAA'):
if tag in ('Exif.Image.ExifTag', 'Exif.Image.GPSTag',
'Exif.MakerNote.ByteOrder', 'Exif.MakerNote.Offset',
'Exif.Photo.MakerNote', 'Exif.Image.IPTCNAA'):
# some tags disappear with good reason
continue
family, group, tagname = tag.split('.', 2)
Expand Down

0 comments on commit fa31dd1

Please sign in to comment.