-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathChangeLog
1381 lines (880 loc) · 52.7 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
2023-03-01 Rennie deGraaf <[email protected]>
* www/dyphal.js: LibreJS support
2023-03-01 Rennie deGraaf <[email protected]>
* www/album.css: left-justify only in small-screen mode to avoid spacing
issues.
2023-02-26 Rennie deGraaf <[email protected]>
* tools/About.ui, tools/ui-header.py, tools/DyphalGenerator.py: update
copyright date to 2023.
* www/dyphal.js, www/index.html: put the album description in the meta
"description" tag for the benefit of browsers that use it for bookmark
titles.
* tools/photo.py: better support for rotated input images.
* README: minor updates.
2023-02-26 Rennie deGraaf <[email protected]>
* tools/DyphalGenerator.py: Rather than sorting by file name, use
the order from imported gThumb albums. There was a comment in the
code that files appeared in arbitrary order, so maybe older
versions of gThumb 3 behaved differently? Maybe the correct thing
to do is to sort by metadata date?
2021-10-03 Rennie deGraaf <[email protected]>
* www/index.html, www/common.css: Fixed the footnote in the help text for
key bindings.
2021-08-28 Rennie deGraaf <[email protected]>
* www/index.html: added "description" and "referrer" metas
2021-08-15 Rennie deGraaf <[email protected]>
* tools/DyphalGenerator.py: fixed an assertion error due to an incorrect
Qt5-related check
2021-08-15 Rennie deGraaf <[email protected]>
* install.sh, tools/DyphalGenerator.py, tools/photo.py: update to PyQt5
and recent versions of Pandoc. NOT FULLY TESTED!
* tools/photo.py: added HDR setting to photo properties that can be
displayed
* tools/photo.py, tools/util.py, test.sh,
test/test-DyplayGenerator-LinuxSafeFile.py,
test/test-DyphalGenerator-safe_file_open.py: PARTIAL, INCOMPLETE support
for opening files on non-Linux platforms.
2018-12-01 Rennie deGraaf <[email protected]>
* tools/photorename.sh: Added support for Panasonic's numbering scheme.
2017-06-05 Rennie deGraaf <[email protected]>
* tools/photorename.sh: Added a parameter to add to photo numbers.
2017-06-05 Rennie deGraaf <[email protected]>
* tools/photorename.sh: Use five-digit numbers in Gthumb XML files, too.
2017-04-22 Rennie deGraaf <[email protected]>
* tools/photorename.sh: Use five-digit numbers in photo names rather than
four-digit.
2017-01-21 Rennie deGraaf <[email protected]>
* tools/About.ui: New file containing a QT Designer definition for an
About dialog.
* tools/DyphalGenerator.py, tools/DyphalGenerator.ui: Added an "About"
button to the main window that pops up a modeless dialog.
* install.sh: Build and install the new dialog UI.
2017-01-21 Rennie deGraaf <[email protected]>
* tools/photo.py, www/dyphal.js: Added an albumVersion field to photo
JSON.
* www/dyphal.js: Corrected an unrelated JSLint warning.
2017-01-21 Rennie deGraaf <[email protected]>
* tools/album.py: New file containing album parsing and serialization
code for DyphalGenerator. There are now separate ".dyphal" files
containing the information necessary to re-load an album; the album
JSON files no longer contain local paths or other data that's not
necessary for the web page. This necessitated a file format version.
* tools/DyphalGenerator: Use the new album load/save code.
* install.sh: Install the new file.
* test.sh, test/test_DyphalGenerator_Album_{load,save}.py,
test/test_cases/test_DyphalGenerator_Album_{load,save}/*: Test scripts
and data for saving and loading albums.
* test/album/album.json: Renamed to test/album/album_v1.json.
* test/album/album_v2.dyphal: Test album file for file format v2.
* www/dyphal.js: Verify that the album JSON is a supported version.
* README: Documented the new album save files.
2017-01-07 Rennie deGraaf <[email protected]>
* install.sh: Fixed the version naming logic. Apparently that git
command always sorts lightweight tags ahead of full tags, regardless
of the tag date?
* install.sh: Changed the installation path for template files to better
match everything else on my system.
2017-01-07 Rennie deGraaf <[email protected]>
* tools/DyphalGenerator.py: Removed the reference to ie8compat.js, since
that file was deleted in the previous commit.
2017-01-07 Rennie deGraaf <[email protected]>
* www/dyphal.js: Don't request full-screen mode in MSIE 11, in order to
work around bug 2017-01-06_001.
* README, www/dyphal.js, www/index.html, www/ie8compat.js: Drop support
for MSIE 8, as photo view was broken in it (bug 2017-01-07_001) and
it's been unmaintained for almost a year. There are probably still
various things in the CSS and JS that were only needed for MSIE 8 that
should get cleaned up sometime.
2017-01-07 Rennie deGraaf <[email protected]>
* www/dyphal.js, www/index.html, www/photo.css: Center photos vertically
in compact layout.
2017-01-06 Rennie deGraaf <[email protected]>
* www/index.html: Fixed an error in the help text and added some more
details on key bindings.
2017-01-02 Rennie deGraaf <[email protected]>
* www/common.css: Remove the paragraph margins from footerContent to
ensure that the footer doesn't overflow the window in compact layout
if the font takes more than 14 pixels for a line of text. This should
fix bug 2017-01-02_002.
2017-01-02 Rennie deGraaf <[email protected]>
* www/dyphal.js, www/common.css: Ask browsers to display full-screen on
small screens. This doesn't have quite the same thresholds as compact
layout because it's based on screen size rather than viewport size.
* README: Documented the new feature described above, plus some minor
unrelated edits.
2017-01-02 Rennie deGraaf <[email protected]>
* install.sh: Fix a bug when HEAD is an annotated tag.
2017-01-02 Rennie deGraaf <[email protected]>
* Version 3.0-beta2
2017-01-02 Rennie deGraaf <[email protected]>
* README, tools/ui-header.py, www/albm.css, www/common.css,
www/debug.css, www/dyphal.js, www/index.html, www/photo.css: Updated
all remaining copyright years to 2017.
2017-01-02 Rennie deGraaf <[email protected]>
* install.sh, tools/DyphalGenerator.py, tools/gthumb-comment-update.py,
tools/photo.py, tools/photorename.sh, tools/util.py: Stylistic changes
based on pylint and shellcheck results.
* .pylintrc: New file, containing pylint configuration
* tools/DyphalGenerator.py: Removed some test code.
2017-01-01 Rennie deGraaf <[email protected]>
* install.sh: retrieve the Python user site package directory rather than
hard-coding it as the default for PKG_PATH.
2017-01-01 Rennie deGraaf <[email protected]>
* tools/DyphalGenerator.py: Reference bug 2014-06-06_001 instead of
repeating its details.
2017-01-01 Rennie deGraaf <[email protected]>
* tools/DyphalGenerator.py: Only show the "Generate Album" button if there
is at least one photo in the album.
2017-01-01 Rennie deGraaf <[email protected]>
* tools/DyphalGenerator.py: Track whether the current album has been
modified since last save, and if so, prompt before exiting or loading
a new album.
2016-12-31 Rennie deGraaf <[email protected]>
* bumpversion.sh: Deleted, as it is no longer needed since the changes to
install.sh from 2016-12-21.
2016-12-31 Rennie deGraaf <[email protected]>
* install.sh, INSTALL, tools/DyphalGenerator.py: Allow the configuration
file path to be set by the installation script.
* install.sh, INSTALL: Document that install.sh requires a git tree.
2016-12-31 Rennie deGraaf <[email protected]>
* tools/DyphalGenerator.py: Use QThread.idealThreadCount() to set the
number of worker threads.
2016-12-31 Rennie deGraaf <[email protected]>
* tools/DyphalGenerator.py: Warn on exit if there is a background task in
progress. I had to add the completion tasks to the cancellation list
and add an option to force the post-task UI cleanup to make everything
work correctly.
2016-12-21 Rennie deGraaf <[email protected]>
* install.sh: Programmatically generate version strings and release dates
from git metadata at install-time and insert them into the appropriate
places, rather than relying on manual updates to the files.
* README, tools/DyphalGenerator.py, tools/gthumb-comment-update.py,
www/index.html: Replace the out-of-date version string with a
placeholder.
* tools/photorename.sh: Add a version string placeholder.
2016-12-21 Rennie deGraaf <[email protected]>
* tools/DyphalGenerator.ui, tools/DyphalGenerator.py: Added a "New" button
to the GUI to clear and start a new album.
* tools/DyphalGenerator.py: Clear everything before loading an album.
* tools/DyphalGenerator.py: Move the current album name from the Config
object to the GUI object.
* tools/DyphalGenerator.ui: Remove the unnecessary padding around the
photo list and its buttons.
* tools/DyphalGenerator.ui: Make the description field taller than the
title and footer fields.
* tools/DyphalGenerator.ui: Remove the stylesheets from addCaptionButton
and addPropertyButton, since they didn't seem to do anything and were
causing the buttons' icons to be mis-aligned.
2016-12-21 Rennie deGraaf <[email protected]>
* tools/util.py: Null out the correct object when destroying a RefCounted.
2016-12-21 Rennie deGraaf <[email protected]>
* tools/DyphalGenerator.py: Move photo object deletion to the background,
because that involves I/O.
* tools/DyphalGenerator.py: Deselect everything before removing selected
photos, which speeds up photo removal tremendously.
2016-12-20 Rennie deGraaf <[email protected]>
* tools/DyphalGenerator.py: Handle the correct exception when exiftool and
convert aren't found (bug 2016-03-20_001)
2016-12-20 Rennie deGraaf <[email protected]>
* tools/DyphalGenerator.py: Don't prompt for overwrite confirmation when
re-saving an existing album. QFileDialog can't do that natively, so I
had to break out the confirmation prompt logic.
* tools/DyphalGenerator.py: Put the curent album name in the title bar.
* INSTALL: Better language around Python and PyQt requirements.
2016-12-19 Rennie deGraaf <[email protected]>
* tools/DyphalGenerator.py: keep track of the current album file and
pre-populate the file name in the save dialog when re-saving.
2016-12-19 Rennie deGraaf <[email protected]>
* tools/DyphalGenerator.py, tools/photo.py: sort JSON fields on save for
better interaction with version-controlled outputs.
2016-12-19 Rennie deGraaf <[email protected]>
* www/album.css: Preserve newlines in album descriptions.
2016-12-19 Rennie deGraaf <[email protected]>
* install.sh: Updated the installation location to python3.5, since
Python doesn't seem to have a version-agnostic installation directory.
2016-03-20 Rennie deGraaf <[email protected]>
* tools/DyphalGenerator.py: correction to a string.
2015-08-29 Rennie deGraaf <[email protected]>
* tools/gthumb-comment-update.py: Relaxed the requirement that the
interpreter be specifically Python 3.3 to some Python 3 version.
* install.sh: Updated the installation location to python3.4, since Python
doesn't seem to have a version-agnostic installation directory.
2015-08-01 Rennie deGraaf <[email protected]>
* tools/photo.py: Corrected a comment.
2015-07-16 Rennie deGraaf <[email protected]>
* www/index.html: Added `rel` attributes to hyperlinks.
* www/dyphal.js: Replaced a bunch of calls to `setAttribute()` with writes
to built-in DOM properties.
2015-04-24 Rennie deGraaf <[email protected]>
* README, tools/DyphalGenerator.py, tools/gthumb-comment-update.py,
tools/photo.py, tools/photorename.sh, tools/ui-header.py, tools/util.py,
www/album.css, www/common.css, www/debug.css, www/dyphal.js,
www/index.html, www/photo.css: Updated date stamps to 2015.
* README: Replace "URL" with the more pedantically-correct "URI".
* www/index.html: Use "self-closing" tags consistently on HTML5 void
elements.
* INSTALL: Documented photorename.sh's dependency on jhead.
2015-04-24 Rennie deGraaf <[email protected]>
* www/dyphal.js: Replaced the stylesheet-swapping layout changes with
class-swapping on the `body` element, in order to work around an
IE/Spartan CSP bug (2014-12-31_001). This simplified the code
considerably and made bugs 2014-01-10_001 and 2014-01-17_001 irrelevant.
Down-side: clients always have to load every stylesheet (including debug).
* www/album.css, www/debug.css, www/photo.css: body.{album,photo,debug}
descendent selectors on everything for the new layout-changing mechanism.
* www/common.css: Moved some properties from `html` to `body` so that they
can be overridden by changing the class on the `body` element.
* www/dyphal.js: Replaced some `elmt.setAttribute("class", ...)` calls with
`elmt.className = ...`.
* www/debug.css: Removed an invalid style property.
* README: Updated notes on browser-detection because one of the cases was
removed.
2015-04-21 Rennie deGraaf <[email protected]>
* tools/DyphalGenerator.py: Typo correction.
2014-09-01 Rennie deGraaf <[email protected]>
* www/dyphal.js: The Android 4.4.2 browser on my Galaxy S3 was calling
unloadDebug() when not in a debug state, resulting in null parentNode
dereferences.
* www/dyphal.js: The Android 4.4.2 browser on my Galaxy S3 still doesn't
support load events on link elements, despite this bug supposedly having
been fixed in 4.4. Use the workaround on all Android browsers for now.
* www/dyphal.js, www/index.html: Renamed "compressed" layout to "compact"
to match what I call it elsewhere. I think that I got all of them this
time.
* www/photo.css: Make the footer panel shorter in landscape compact layout.
* www/dyphal.js: In compact layout, limit the height of the caption and
property panels to the height of the screen less the height of the
footer.
2014-09-01 Rennie deGraaf <[email protected]>
* tools/photorename.sh: Ensure that photos are writable.
* tools/gthumb-comment-update.py: Handle missing fields in gthumb XML
comment files.
* README: Added a design principle.
* README: Added a link to my demo album.
* README: Renamed the "compressed" layout to "compact" to match what I call
it elsewhere.
2014-05-28 Rennie deGraaf <[email protected]>
* photorename.sh: Make sure to remove *all* execute permissions, not just
the user's.
* album.css, common.css, debug.css, dyphal.js, photo.css: reduce the
threshold for compact layout to 750 pixels, because some normal laptop
displays are smaller than 800 CSS-pixels.
* .gitignore: New file.
* README: Added lists of the property and caption fields supported by
DyphalGenerator.
* README: Obfuscated my email address.
2014-05-24 Rennie deGraaf <[email protected]>
* www/dyphal.js: Fixed a jslint warning.
* tools/photo.py: Fixed a bug when parsing properties of photos with
exposures longer than one second.
* www/index.html: Removed another reference to thumbnails from the tooltip
for the index button.
* www/index.html, www/common.css: Added a tooltip for the help button.
* www/photo.css: Set contentPanel to clip overflow, so that browsers don't
flash a scrollbar before fitPhoto() is called when the photo is too big
to fit in the window.
* tools/DyphalGenerator.py: Un-encode the file URIs from gThumb collection
files.
* tools/photo.py, tools/gthumb-comment-update.py: gThumb stores IPTC
strings as UTF-8, but doesn't set the IPTC character set. Override the
default IPTC character set in exiftool, and set the IPTC character set
when writing any IPTC tags.
2014-05-22 Rennie deGraaf <[email protected]>
* www/dyphal.js: Changed the swipe-detection logic to be based on an X/Y
ratio rather than absolute thresholds, in order to improve swipe
recognition.
2014-05-21 Rennie deGraaf <[email protected]>
* www/common.css: Left-aligned some text some text in the help and readme
pages.
* www/dyphal.js: Android doesn't reliably return to page content when the
help overlay is suppressed, sometimes leaving the user staring at a blank
white screen. Force a return to the top of the document when an overlay
is suppressed.
* www/dyphal.js: Android doesn't support obj.click(). In order to handle
Android devices with keyboards, fire a click event the old-fashioned way.
* www/dyphal.js: IE 8 doesn't support window.innerWidth. Fall back to
document.documentElement.clientWidth if it's not present.
2014-05-19 Rennie deGraaf <[email protected]>
* www/photo.css: Added a top border to footerPanel in compact layout, to
match captionPanel and propertyPanel.
* www/dyphal.js: Use the "keydown" event rather than the "keypress" event
in order to support browsers other than Firefox.
* www/dyphal.js, www/photo.css: Overlays were not appearing properly on
Android <4.4. It seems to not repaint elements whose styles change due
to a checkbox changing state. Worked around it by always touching some
layout-related property when an overlay needs to appear or disappear.
* www/index.html: Fixed an improperly closed tag.
2014-05-18 Rennie deGraaf <[email protected]>
* tools/DyphalGenerator.py, tools/util.py: DyphalGenerator failed if a user
attempted to install the template while an album was being generated,
because the template installer tried to create a symlink that already
existed. Fixed it by removing the symlinks to directories, using the
/proc paths for output, and having tasks call a lambda to get their
output paths on demand rather than generating them up front.
* tools/DyphalGenerator.py: Set the umask to 022 so that generated files
are world-readable.
* tools/photorename.sh: Rotate photos to the top-left orientation.
* www/dyphal.js: Renamed the album list from "album-list.html" to
"albums.html".
* www/index.html: Removed the reference to thumbnails from the tooltip for
the index button.
2014-05-15 Rennie deGraaf <[email protected]>
* www/common.css, www/dyphal.js, www/index.html, www/photo.css: Use HTML +
CSS to show/hide the overlay and help text rather than JavaScript. This
removes most of the layout-related JavaScript code.
* www/dyphal.js (fitPhoto): More tweaks to the photo sizing code: the
photo wasn't displayed at its full size even when the window was big
enough.
* www/dyphal.js (fitPhoto): More tweaks to the photo sizing code: when the
photo was bigger than the window, the window size used when scaling the
overlay included scrollbars on some Chrome and IE.
* www/dyphal.js: jslint cleanup.
2014-05-13 Rennie deGraaf <[email protected]>
* www/dyphal.js: Ensure that photo and album stylesheets are loaded before
loading any content. Hide all content while swapping stylesheets. This
should prevent things from flickering in the wrong places while loading.
* www/common.css: Removed an unnecessary property.
* tools/gthumb-comment-update.py, tools/photorename.sh: Cleaned up some
blank lines.
* tools/photorename.sh: Header text.
2014-05-12 Rennie deGraaf <[email protected]>
* www/dyphal.js: Wrote a work-around for Android's broken touchend events.
* README: Mentioned that browser detection is used to work around Android's
broken touchend events.
* www/index.html: Commented on horizontal scrolling by touch.
2014-05-11 Rennie deGraaf <[email protected]>
* www/dyphal.js: Added an attempt at a workaround for the failure of touch
events to work on IE. I have no idea if it works, because I don't have a
Surface.
2014-05-10 Rennie deGraaf <[email protected]>
* tools/photorename.sh: New file, containing a script to encode a camera
name into photo file names in place of meaningless strings like "IMG".
* install.sh: Install photorename.sh.
2014-05-10 Rennie deGraaf <[email protected]>
* tools/gthumb-comment-update.py: Added support for writing metadata back
out, docstrings, and misc. cleanup and bug fixes. It seems to work now.
* tools/gthtime.sh: Removed, as its functionality has been replaced by
tools/gthumb-comment-update.py.
* install.sh: Install gthumb-comment-update.
* bumpversion.sh: Set version and date strings in gthumb-comment-update.py.
2014-05-10 Rennie deGraaf <[email protected]>
* tools/gthumb-comment-update.py: New file, containing a tool to set time
zones on timestamps in photo metadata, and to convert the various comment
formats used by different gersions of gThumb to the format expected by
DyphalGenerator. Not yet complete.
* test/*: Moved to test/album/.
* test/comments/*: New files to test gthumb-comment-update.py.
2014-04-28 Rennie deGraaf <[email protected]>
* www/dyphal.js: Fixed the logic to remove the width override on
titlePanel when in compressed layout.
* www/album.css, www/common.css, www/debug.css, www/dyphal.js,
www/photo.css: Changed the threshold for compressed layout from 600 px to
800 px.
* www/dyphal.js (touchStart, touchEnd): Added a maximum time over which a
swipe may occur to be recognized.
* www/dyphal.js: Renamed "smallScreen" to "compressed".
* README, www/index.html: Documented the compressed layout.
2014-04-27 Rennie deGraaf <[email protected]>
* bumpversion.sh: Commit before creating the tag so that the modified dates
and versions are in the tag.
* www/common.css: Added title font overrides for some other screen sizes.
* www/common.css: Made the width adjustment for title and footer text apply
to normal mode as well as small mode.
* www/dyphal.js: Fixed the small screen detection logic; it should match
the CSS media selectors now.
2014-04-26 Rennie deGraaf <[email protected]>
* bumpversion.sh: New script to set the date and version tags in README,
www/index.html, and tools/DyphalGenerator.py, and to optionally create
a new tag in git.
* install.sh, install-www.sh: Set execute permission.
* Version 3.0-beta1
2014-04-26 Rennie deGraaf <[email protected]>
* tools/DyphalGenerator.ui: Added tooltips to some controls that were
missing them.
* test/album.json: Made the title longer so that it'll wrap on small
screens.
* www/dyphal.js, www/photo.css: Fixed some photo sizing issues that caused
the window to show a scrollbar in some situations.
2014-04-26 Rennie deGraaf <[email protected]>
* www/dyphal.js (fitPhoto, showPhotoOverlay): Got rid of all calls to
getObjHeight, getObjWidth, getHBorder, and getVBorder, since the
clientHeight, clientWidth, offsetHeight, and offsetWidth properties work
in every browser that I support.
* www/lib.js, www/dyphal.js: Moved all remaining functions from lib.js to
dyphal.js. Removed lib.js.
* tools/DyphalGenerator.py, www/index.html, README: Removed references to
lib.js.
* www/dyphal.js (fitPhoto): Fixed the aspect dimension calculations for
the overlay photo.
* www/dyphal.js (fitPhoto, showPhotoOverlay): Decide whether to show the
overlay in showPhotoOverlay rather than special-casing photos that are
already displayed at full size in fitPhoto.
* www/dyphal.js: Wrapped everything in a closure to avoid having a global
"page" that was getting inexplicably stomped on by the Android 4.3
browsers on Samsung devices. Closed bug 2014-04-19_001.
* www/index.html: Removed the copyright tag from the help text because it's
covered in README.
* www/common.css: Fixed some rendering issues in small-screen mode.
2014-04-21 Rennie deGraaf <[email protected]>
* tools/DyphalGenerator.py (DyphalUI._generateAlbum): Added a check for the
file dialog being cancelled to resolve bug 2014-04-19_002. I think that
cancellation is handled for all file dialogs now.
* www/dyphal.js, www/lib.js: Rearranged and re-bracketed to make
www.jslint.com complain less.
2014-04-19 Rennie deGraaf <[email protected]>
* www/common.css: Reduced the title font size for small screens regardless
of orientation, rather than just for landscape.
* www/common.css: Reduced the width of footerContent to 95% so that it
doesn't overflow on Android.
* www/common.css: Narrowed the margin of helpText and readmeText on small
screens.
* www/photo.css: Extended the small-screen layout to support photo view.
Closed bug 2014-01-17_002.
* www/javascript.html, misc/html5.pandoc: Added meta headers to better
support mobile browsers and IE.
* www/dyphal.js, www/lib.js: Cleanup.
* README: Added information on generating and serving albums.
* www/javascript.html: Moved information on server headers to README.
2014-04-19 Rennie deGraaf <[email protected]>
* tools/gthtime.sh: New file containing a script to fix the timestamps
saved by gthumb.
* www/javascript.html: New file containing a description of why and how
Dyphal uses JavaScript.
* tools/DyphalGenerator.py: Update to the names of file names to install.
* www/common.css: Increase the font size for help and readme text.
* www/album.css, www/common.css, www/dyphal.js, www/index.html: Added a new
layout optimized for small screens (album view only for now).
* README: Linked to javascript.html.
2014-04-13 Rennie deGraaf <[email protected]>
* www/album.js: Renamed to www/dyphal.js.
2014-04-13 Rennie deGraaf <[email protected]>
* www/album.js, www/lib.js, www/ie8compat.js: Cleaned up most jslint
warnings.
* Added a GPLv2 header to all code files.
* LICENCE: New file containing the GNU GPLv2.
* README: Added licence and contact information.
* ui-header.py: New file containing header text for ui.py, which is
generated at install-time from tools/DyphalGenerator.ui.
* install.sh: Use ui-header.py as a header for ui.py.
2014-04-12 Rennie deGraaf <[email protected]>
* Replaced the test files with a better set of photos with various
different combinations of caption and property fields, various different
date formats, different sizes and aspect ratios, and special characters
in their names. Removed the old files.
* tools/DyphalGenerator.py (DyphalUI._addPhotosHandler): Added a check to
ensure that the gThumb catalog version is supported.
* tools/photo.py (format_display_time): Handle timestamps with no time
zones. Use RFC 3339 conventions for time zones.
* www/album.js (fitPhoto): Make the overlay photo slightly smaller to
compensate for a few pixels that haven't been able to account for in
Firefox.
* install-www.sh: New file; a script to install the web template files
without needing to run DyphalGenerator.
* deploy.sh: Removed, replaced with install-www.sh
2014-04-12 Rennie deGraaf <[email protected]>
* Renamed the project to "Dyphal", for "Dynamic Photo Album". Changed
documentation, comments, strings, class names, file names, etc. to
reflect this change.
* tools/AlbumGeneratorUI.ui: Renamed to tools/DyphalGenerator.ui.
* tools/AlbumGenerator.py: Renamed to tools/DyphalGenerator.py.
* notes.txt: Removed.
2014-04-12 Rennie deGraaf <[email protected]>
* www/AlbumGenerator.py (PhotoAlbumUI): Added a count of background
activities so that starting a second background activity while another
one is in progress doesn't fail an assertion or stomp on the first one's
progress count. (bug 2014-04-08_002)
* www/AlbumGenerator.py (PhotoAlbumUI._installTemplate): Handled
cancellation of the directory chooser dialog.
* www/AlbumGenerator.py (PhotoAlbumUI): Moved all file I/O from _loadAlbum
to a background task. Populating the UI still needs to happen on the
foreground thread because I have no model-view separation. (bug
2014-04-09_001)
* www/AlbumGenerator.py (PhotoAlbumUI._showError): Changed the message box
icon for background activity errors from 'question' to 'warning'.
* INSTALL: New file containing installation instructions.
* misc/html5.pandoc: New file containing a pandoc template for converting
README to html.
* install.sh: Generate an HTML version of README and install it with the
web files.
* www/common.css: Set the color for link text to something that's visible
on the gray background but doesn't clash too badly. Set the color for
active links to the background color so that we don't get a red border
that flashes around thumbnails when they're clicked upon. Unfortunately,
this makes text links disappear when active.
* www/common.css: Set a top margin on helpText because other browsers don't
show the top margin that Firefox gets somewhere.
* www/common.css: Re-use the help text styles for the HTML readme.
* www/index.html: Link the HTML readme from the help panel.
2014-04-12 Rennie deGraaf <[email protected]>
* www/album.html: Renamed to www/index.html so that the URL format
shouldn't need to change when I add an index view in the future.
* www/album.js: Changed the album arguments syntax from "#album,page,debug"
to "#/album/page/debug". To load an album from a subdirectory, you'll
need to double-encode it; for example, to load the first photo from
"subdir/album.json", use the arguments "#/subdir%252falbum/1".
* www/album.js (start): Added a kludge to work around the lack of an album
view: loading the album with no arguments triggers a redirection to
"album-list.html", which the operator is responsible for writing.
* README: Updated the description of URL syntax to match the changes
described above and changed the example to match AlbumGenerator's output.
* README: Fixed some markup issues in the Security Model section.
* www/album.js: Replaced all calls to getElementsByClass() with
document.querySelectorAll(), which works in IE8.
* www/lib.js: Removed getElementsByClass().
2014-04-12 Rennie deGraaf <[email protected]>
* tools/photo.py: New file.
* tools/photo.py, tools/AlbumGenerator.py: Moved PhotoFile and supporting
code to photo.py.
* tools/AlbumGenerator.py: Stopped attempting to get the program to load
under Python 2.x, since it seems that getting the imports to work
correctly will be too much hassle.
* tools/AlbumGenerator.py: Moved most of the global constants to Config.
Moved the FILTER_* strings to PhotoAlbumUI. The two remaining global
constants are there because they might be re-written by the installation
script and that's simpler if they have no indentation.
* tools/AlbumGeneratorUI.ui: Moved the Add Caption and Add Properties
buttons to beside their respective delete buttons and moved the Show All
checkboxes to new rows.
2014-04-09 Rennie deGraaf <[email protected]>
* tools/util.py: New file to contain simple utility functions and classes.
* tools/util.py: Wrote a base class to implement COM-style reference
counting.
* tools/util.py, tools/AlbumGenerator.py: Moved handle_exceptions and
ensure_directory to util.py.
* tools/AlbumGenerator.py: Added reference counting to PhotoFile so that
photos can be safely removed from the list while an album is being
generated in the background.
* BUGS: Turned the bug dates into unique bug IDs.
* README: Documented the security assumptions about the JSON file emitted
by AlbumGenerator.
2014-04-08 Rennie deGraaf <[email protected]>
* tools/AlbumGenerator.py: Implemented photo and thumbnail generation.
* tools/AlbumGenerator.py: Moved the maximum number of worker threads into
the configuration file.
* tools/AlbumGenerator.py: Added url encoding of all JSON fields that are
used to build URLs.
* README: Added a description of the security model.
* tools/AlbumGenerator: (PhotoFile.generateJSON), www/album.js
(loadPhotoContent), test/img000.jpeg.json, test/img_0281.jpg.json,
test/img_2235.jpg.json: Changed the encoding of the properties list in
photo JSON to ensure that they're stored in the order selected in the UI.
* tools/AlbumGenerator.py (PhotoAlbumUI._showProperties): Fixed a bug that
caused an exception to be thrown if the user used Ctrl-A to select all
photos without ever having selected a single photo.
* tools/AlbumGenerator.py (PhotoFile): Don't set _linkPath before creating
the link, because otherwise if the link already exists, we'll get
FileExistsError and then delete it when handling the exception, breaking
the other PhotoFile instance that owns it.
2014-04-05 Rennie deGraaf <[email protected]>
* tools/AlbumGenerator.py: Re-formatted the code to approximately follow
Python standards (http://legacy.python.org/dev/peps/pep-0008/) and added
better docstrings. Ran pylint and fixed some of the things that it
warned about.
* Removed various commented-out code.
* install.sh, tools/AlbumGenerator.py: Moved the UI package to the standard
user packages directory and removed the sys.path hack.
* install.sh, tools/AlbumGenerator.py: Renamed the "AlbumGenerator" package
to "album_generator" because Python's import system doesn't seem to work
properly when a package has the same name as the main file. In
particular, pydoc3 didn't work.
* tools/AlbumGenerator.py, tools/AlbumGeneratorUI.ui: Renamed
"descriptions" to "captions".
2014-04-05 Rennie deGraaf <[email protected]>
* tools/AlbumGenerator.py: Merged _bgGenerateAlbumComplete() and
_bgInstallTemplateComplete(), as they were essentially the same.
* tools/AlbumGenerator.py, www/album.js: Move photo JSON, photo, and
thumbnail files into separate subdirectories. Added background tasks to
ensure that these directories exist before we try to write to them.
* tools/AlbumGenerator.py: Changed the name of photo JSON files to include
the full photo file name, as is expected by the JavaScript.
* tools/AlbumGeneratorUI.ui, tools/AlbumGenerator.py: Added a splitter
between the photo list and the photo properties.
* tools/AlbumGenerator.py: Removed the code that passed around a directory
file descriptor because the shell commands that I need to call to
generate photos and thumbnails can't work with a file descriptor.
Replaced it with code that opens the output directory (in a background
thread), symlinks to its /proc entry, and writes files through the
symlink.
* tools/AlbumGenerator.py: Ignore any errors while closing a file
descriptor or removing a symlink.
* tools/AlbumGenerator.py: fixed a bug that prevented unknown exceptions
during background tasks from being displayed in the UI.
2014-03-28 Rennie deGraaf <[email protected]>
* AlbumGenerator/AlbumGenerator.py: Renamed to tools/AlbumGenerator.py.
* AlbumGenerator/AlbumGeneratorUI.ui: Renamed to tools/AlbumGeneratorUI.ui.
* AlbumGenerator/build.sh: Renamed to install.sh.
* tools/AlbumGenerator.py: Implemented template installation.
* install.sh: Wrote a decent installation procedure.
* I made some other changes, but all the renaming is making it difficult to
get a useful diff.
2014-03-27 Rennie deGraaf <[email protected]>
* AlbumGenerator/AlbumGeneratorUI.io: Set a window icon that actually loads.
* AlbumGenerator/AlbumGenerator.py: Create the directory holding the config
file if it does not exist.
* AlbumGenerator/AlbumGenerator.py: Check for the presence of exiftool and
convert at startup.
* AlbumGenerator/AlbumGenerator.py: Implemented album re-loading.
* AlbumGenerator/AlbumGenerator.py: Switched to prompting for the album
JSON file's name rather than for a directory when outputting albums.
* AlbumGenerator/AlbumGenerator.py: Moved the ouput of the album JSON file
to a background thread.
* AlbumGenerator/AlbumGenerator.py: When loading photos, if there is
already a photo in th album with the same name, prompt to rename or
remove it.
* AlbumGenerator/AlbumGenerator.py: Only add caption or description fields
if they're not already selected.
2014-03-26 Rennie deGraaf <[email protected]>
* AlbumGenerator/AlbumGenerator.py (main): Added some logic to startup to
detect incompatible Python versions or a lack of /proc/<pid>/fd/...
* AlbumGenerator/AlbumGenerator.py (PhotoFile): Fixed a bug where photo
JSON generation would fail for photos that lacked a selected caption or
property.
* AlbumGenerator/AlbumGenerator.py (PhotoFile.generateJSON): Added a
representation of the original file path to the album JSON so that albums
can be re-loaded.
* AlbumGenerator/AlbumGenerator.py: Save run-time configuration to a file
at exit. Load it at startup. Added the window size and UI data that is
likely to not change between albums to the configuration file.
* AlbumGenerator/AlbumGeneratorUI.ui: Added stretch factors to layouts that
didn't have any. Probably not necessary.