FastRawViewer 1.3.8 beta

Поскольку feature request тут внезапно завелся в комментариях, приходится публиковать результат его обработки, FRV 1.3.8 (beta):

Список изменений

  • Новая скрытая настройка ShiftClickSelectionMode и скрипты ShiftClickSelectionModeDefault.reg/.sh
    Эта настройка модифицирует поведение Shift-Click (выделение диапазона) в Grid и Filmstrip.
    Битовое поле из трех бит.
    • бит 0:
      • 0 - второй границей диапазона Shift-Click будет 'last Ctrl-Clicked', независимо от того, была эта установка выделения или снятие
      • 1 - конечной границей диапазона будет 'last Ctrl-Clicked' только если это было установкой выделения
    • бит 1:
      • 0 - если 'last Ctrl-Clicked' нету, то вторая граница диапазона - первый файл в текущей папке
      • 2 - вторая граница диапазона - текущий файл, если Shift-Click был не на него (если на него - то опять первый файл в текущей папке)
    • Бит 2:
      • 0 - Shift-Click всегда делает новое выделение диапазона, полностью снося старое выделение
      • 4 - Shift-Clic всегда расширяет выделение, не раз-выделяя старое.
    Первая граница диапазона - это всегда файл в который кликнули.
    Чтобы настройка появилась в Registry/Settings, запустите FRV, зайдите в настройки и нажмите OK (либо запустите скрипт ShiftClickSelectionModeDefault.reg/.sh)
     
  • Натуральная сортировка(учитывающая цифровые составляющие имен файлов/папок как числа):Натуральная сортировка включена для стандартных настроек, для файлов она замещает старую Filename, alphabetical.
    Натуральная сортировка не поддерживается в версии для Windows XP (т.к. нужные функции есть только начиная с Win7).
    • Для файлов:  Preferences - File Handling - File sort order: Filename, natural sort; Filename natural sort, reversed.
    • Для папок в панели Folders: Folders Panel - (гайка)Settings - Use natural folders sort order
  • Новая настройка Copy-Move-Reject - Copy/Move folder selector starts at, управляет "стартовой точкой" диалога выбора папки назначения для Copy/Move:
    • Last used: диалог открывается в папке, которая была последней использована для копирования
    • One level up from last used: на один уровень выше предыдущего варианта
    • Current folder: стартуем в текущей папке
    • One level up from current folder: на один уровень выше текущей папки
    • Specified folder: в указанной папке (в настройках откроется строка ввода и кнопка выбора)
  • Папка со скриптами дополнительных настроек доступна через Menu - Help - Auxiliary settings scripts
    (Mac: скрипты настройки копируются в resource folder приложения)
  • Mac: PDF-руководство копируется при установке в Resource folder приложения и доступно через Menu - Help - PDF Manual
  • Новая настройка Preferences - Other - Check global folders presence on startup (стандартно включена)
    Включает проверку существования "глобальных папок", если FRV сконфигурирован с их использованием:
    • Start without filename - Specified folder
    • Open folder dialog starts at - Specified folder
    • Use global rejected folder - Subfolder for rejected files
    • Copy/Move folder selector starts at - Specified folder.
  • Поддержка камер
    • Nikon D5600
    • Panasonic GX800/850
  • Исправлены ошибки и недоделки
    • Исправлена ошибка расчета Baseline Exposure для Canon 5D mk4
    • Правильная установка уровня черного для камеры Sony A350
    • Правильная обработка DNG с несколькими изображениями в файле с разными метаданными.
    • Правильная обработка камерных DNG Magic Lantern
  • Прочее
    • Скрытая настройка FilmstripSelectedItemContrast переехала в пользовательские настройки (Interface - Selected/active files contrast)
    • Окошко Key/Mouse capture теперь резко отличается от стандартных диалогов, надеемся его содержимое теперь будут читать

Comments

Потестирую завтра.

А, кстати, ещё меня удивляет что диалог-панелька кастомного баланса белого (та, что появляется по клику соответствующей секции статусбара) не закрывается (как cancel?) по клику мимо неё, хотя оно и не полноценный диалог. Но надо попадать в её кнопки обязательно.

И что-то у меня FRV не запоминает, что он в single image mode был. Галка Restore last view settings on program start стоит, но нет.

>> не закрывается (как cancel?) по клику мимо неё, хотя оно и не полноценный диалог.

А почему она должна "закрываться по клику мимо нее"?

Оно, наоборот, позволяет сменить текущий файл (но только мышью, не хоткеями, клавиатуру оно все жрет в себя) и при этой смене - обновится на новую температуру. Оно так purposely

Интерфейсная привычка. Оно выглядит как типичная всплывалка на сайтах и в интерфейсах («Ваш город — Санкт-Петербург, угадали?» и прочие как-бы-необязательные-диалоги, да те же notifications в винде), которые так закрываются. Про смену файла — аргумент понятный, да, это хорошо и удобно. Но может тогда её полноценным немодальным диалогом сделать? Что бы уж и сдвинуть было можно.

"полноценный немодальный диалог" оно и есть (+флажок "поверх всех окон", +скрытие при потере фокуса).

Но если "и сдвинуть было можно" - то оно выглядит просто чудовищно, когда вы двигаете главное окно (остается на месте). Поэтому этот диалог колеблется вместе с линией партии.

>> не запоминает, что он в single image mode был.

Preferences - Grid/Filmstrip смотрели? Там прям вот галка есть для этого, например. И не одна, потому что бывает старт просто, бывает старт с файлом, бывает старт с фолдером/переход в фолдер

(и стандартный старт без файла - задается в Prefs - File handling)

Да, это я нашёл.

А что тогда включается в View mode? :-)

Состояние того, что в Menu - View

(но кроме Grid - потому что grid сильно сложнее в зависимости от режимов запуска и требует аж трех галок)

У вас в мануале на сайте не та картинка для раздела Program Settings / Exposure

Про новую фичу интересно вот что: когда там 3, то получается неконсистентное поведение при движении вправо или влево от группы.

Вот сценарии (всё в фильмстрайпе, горизонтальном, поэтому я оперирую понятиями файлы слева и справа друг от друга):

Ничего не выбрано, группы нет, текущий файл есть.
Shift+Click справа от текущего, через один. Ожидаемо группа из трёх файлов, ровно как хочется.
Shift+Click справа от предыдущего клика, через один. Ожидаемо группа расширяется до 5 файлов, ровно как хочется.
Shift+Click слева от ТЕКУЩЕГО файла, через один. Ожидаемо группа расширяется до 7 файлов, ровно как хочется, и теперь распространяется вправо и влево от текущего файла.
So far so good!

А теперь пытаемся сделать тоже самое, но в обратном порядке (нууу, не совсем в точности в обратном, но слева-на-право).

Ничего не выбрано, группы нет, текущий файл есть.
Shift+Click СЛЕВА от текущего, через один. Ожидаемо группа из трёх файлов, ровно как хочется.
Shift+Click СПРАВА от ТЕКУЩЕГО файла через один. Ууупс. Облом. Группа не расширилась а заменилась. То, что было слева развыделилось и мы имеем группу из трёх файлов только справа!
Shift+Click справа от предыдущего клика, через один. И опять уупс. Не 5 файлов а снова три, группа мигрировала направо.

Таким образом, если группа начата с создания её НАПРАВО от текущего файла, то тона свободно и ожидаемо рачширяется как направо так и налево от текущего. А если она начата с создания её НАЛЕВО от текущего файла, то дальше её можно расширять только налево а шифт-клики вправо начинают быть неинтуитивными.

Я даже понимаю, почему так происходит, но неконсистентно.

>> Shift+Click слева от ТЕКУЩЕГО файла, через один. Ожидаемо группа расширяется до 7 файлов, ровно как хочется, и теперь распространяется вправо и влево от текущего файла.

Нет же. Если все проделать в указанном порядке, то будет группа "от кликнутого до текущего".

Это про порядок право-лево? Ещё три раз проверил — и получил удивительный результат. Один раз вышло как я описал, два раза — как ты (и как эксплорер). Я не пил. Правда. Зависимости обнаружить не смог!

Там простой как правда код, сложно ошибиться:

   int lastC = (lastClickedFile.length() && name2index.contains(lastClickedFile)) ? name2index[lastClickedFile] : 0;
    if (lastC && (shiftclickmode & 1) && !checkedFiles.contains(lastClickedFile.toLower()))
        lastC = 0;
    if (!lastC && (shiftclickmode & 2) &&  idx.row() != current)
        lastC = current;
    int minC = qMin(lastC, idx.row());
    int maxC = qMax(lastC, idx.row());

idx.row() -> номер в который кликнули
current -> номер текущего файла, если таковой есть
minC,maxC - диапазон (включительно) того что надо выделить
 

Но, кстати, несложно добавить еще битик к ShiftClickMode, который будет означать "всегда расширять, старое не очищать".
Там реально одна строчка кода и три строчки в описании.

А добавь! :)

Билд 1024 (ссылки в посте обновлены)

Да я понимаю. Загадка. (что, правда, прямо так в коде 1 и 2?)

Пока два бита - нет смысла enum-ить.
Вот добавлю третий - будет смысл.

И, заметим, в Win Explorer, шифт-клик справа от текущего - выделяет "от текущего до кликнутого"
Следуюший шифт слева - выделяет от кликнутого до текущего, а часть старого выделения слетает, расширения не происходит.

И в этом месте мы сейчас (учет текущего если не было last clicked) работаем в точности как Explorer

странного что-то хочу...

например выход из программы можно повесить на клавишу... но есть же /у меня например/ два варианта использования FRV : как браузер и как просто вьюер одного конкретного файла (вызванный из другого какого-то браузера, соотв. FRV знает это так как в его командной строке есть имя файла который посмотреть - а в идеале параметр командой строки хочется чтобы вот явно указать этот режим и открывать сразу без лишних для этого режима панелей /т.е. например прибивать на это время всегда folders & filmstrip вне зависимости/, а ? параметры ком. строки все-равно же уже есть - например "-enableraw"... ну добавить типа "-viewonefileonly" ) ...

вот хочется чтобы можно было различать эти два варианта для клавиши выхода с точки зрения хорошей usability ( = две клавиши выхода в настройках keyboard shortcuts editor -> general functions или чекбокс какой там же ? )... ибо мне хочется повесить ESC чтобы закрыть FRV в случае когда он viewer, но не хочется это делать когда он browser

Z / V

В-общем это такое странное (разные шорткаты в зависимости от странного), что даже в TODO не хочется класть

это фигура речи... но если про использование FRV в двух режимах это вполне нормально (понятно что несмотря на все плюшки FRV таки не заменяет у всех или всегда функцию браузера)... а как /быстрая в плане работы/ замена rawdigger'у типа посмотреть где/какой клиппинг навскидку вполне вызывается.

Z / V

Пока предлагаю компромисс штатными виндовыми средствами
- пускайте от другого юзера
- все настройки будут в другой ветке HKEY_USERS
- и они будут полностью другие

Сдаётся мне, что Вас толкают к "10 Винде". Этакий интерактив.
В том же ФастСтоуне в каждом диалоговом окне есть галка "запомнить выбор". ;-)
Но товарищу хочется не этого (а чего именно хочется я не понял!), ему, видимо, хочется от железа телепатии. :-)

Остаются два варианта реализации его хотелки:
- или в меню по правой кнопке "Проводнике" 2 пункта "открыть в режиме"
- или при выделении более одного файла в том же "Проводнике" - переключение в режим браузера автоматом...

что же непонятного ? с параметром в командной строке все очевидно, без параметра если FRV запущен без файла/каталога в ком. строке то он запущен как браузер / из bridge или xnviewmp или да из чего угодно - rawdigger заводится медленно, frv удобнее в этом случае для посмотреть клиппинг /, если с каталогом в ком. строке - тоже очевидно браузер, но если с файлом то скорее всего для того чтобы этот файл посмотреть и все... если я запустил посмотреть файл то вполне удобно нажав ESC (повесив выход из программы на эту клавишу) из FRV выйти вообще (а выйти нажав случайно - не big deal)... если же я запустил FRV как браузер, то выходить из него случайно нажав ESC мне не хочется... вот и все...

Z / V

исправленый текст, не туда вставил /..../ =

что же непонятного ? с параметром в командной строке все очевидно, без параметра если FRV запущен без файла/каталога в ком. строке то он запущен как браузер, если с каталогом в ком. строке - тоже очевидно браузер, но если с файлом то скорее всего для того чтобы этот файл посмотреть / из bridge или xnviewmp или да из чего угодно - rawdigger заводится медленно, frv удобнее в этом случае для посмотреть клиппинг / и все... если я запустил посмотреть файл то вполне удобно нажав ESC (повесив выход из программы на эту клавишу) из FRV выйти вообще (а выйти нажав случайно - не big deal)... если же я запустил FRV как браузер, то выходить из него случайно нажав ESC мне не хочется... вот и все...

Z / V

RunAs /user:anotheruser /profile

Вот чтобы пароль спросило только один раз:

runas /user:test /profile /savecred "C:\Program Files\LibRaw\FastRawViewer\FastRawViewer.exe"

Юзера test придется, понятно, сделать заранее.

а не проще ли командный файл и в нем менять в registry настройки для клавиши перед запуском FRV ?

Z / V

On your own risk

Не понимаю про grid mode. Он у меня запрещён но при выборе нового каталога в дереве я оказываюсь в нём. Т.е. в Interface|Grid/Filmstrip не стоит галки Enable Grid mode. Но он выбирается при смене каталога!

После запрета gridmode надо перезапустить программу (о чем там ЯВНО ПИШУТ)

И если Enable нет, то ея просто не может быть, потому что соотв. виджет не создается на старте.