Страница 2 из 2

Добавлено: Вс авг 07, 2016 17:54
Avada
Skif_off писал(а):всё, что происходит после нажатия кнопки "Сохранить с новым именем"
В таком разе прошу не счесть за труд и изложить по пунктам всё-всё-всё, что должно, по замыслу автора, происходить при нажатии этой кнопки. Видимо, я её предназначение по-прежнему понимаю неправильно. Кстати, наличие ридми на будущее категорически рекомендуется.
P.S. Вроде бы в новой версии это как-то уже стало похоже на написанное в шапке, а до этого новый файл создавался у меня без информации о вкладках, хотя там всё присутствовало. Но тогда не "clean", а "new", что ли. Или очистка — это приоритетная задача?
P.P.S. А вот подсказки (имена) у вкладок в новый файл не сохраняются. Это плохо. И ещё есть некоторые странности, но об этом позже, мне сейчас придётся прервать тестирование.

Добавлено: Вс авг 07, 2016 18:54
Skif_off
Avada
Допустим, в файле есть только одна секция, пусть activetabs, после нажатия кнопки "Сохранить с новым именем" скрипт:
- показывает окно с просьбой ввести имя;
- проверяет, что файл с таким именем не существует;
- пробует создать пустой файл с введённым именем;
- пробует прочитать "0_path" в секции activetabs, если нет, то пробует inactivetabs, если опять мимо - считает, что файл кривой;
- читает значение "activetab" и путь под этим номером;
- последовательно читаются пути в просматриваемом файле и проверяется их существование в файловой системе, если существует - сохраняется в переменную. Если опция "Сохранять пути FS-плагинов и FTP" отмечена, то соответствующие пути будут добавлены в переменную, иначе - проигнорированы;
- далее используется путь и число из пункта курсивом: если путь найден в переменной, то скрипт запишет его порядковый номер в значение activetab, иначе - номер последнего пути (наибольший). Если какая-то ошибка с получением номера или поиском соответствующего пути, то используется номер последнего пути.
- всё пишется в файл и скрипт показывает сообщение.

Если в файле есть и activetabs, и inactivetabs, то для каждой происходит то, что выделено тёмно-синим цветом. В случае ошибки на любом из этапов функция удалит пустой файл и завершится с соответствующим сообщением.
Список tab-файлов в главном окне будет автоматически обновлён, если это необходимо, только после закрытия окна просмотра.

(Возможность удаления произвольного пути несколько нетривиальна из-за нумерации и усложняется, если есть и activetabs, и inactivetabs + вероятность, что пользователь редактировал файл вручную.)
Avada писал(а):Кстати, наличие ридми на будущее категорически рекомендуется.
TabsList.7z\TabsList\TabsList.txt?

Добавлено спустя 5 минут:
Avada писал(а):Но тогда не "clean", а "new", что ли. Или очистка — это приоритетная задача?
По сути происходит очистка, а с "clean" понятнее, что именно сделано. Как-то так задумывалось :) В принципе, наверное, теперь это не особо критично, т.к. имя запрашивается у пользователя.
Avada писал(а):А вот подсказки (имена) у вкладок в новый файл не сохраняются. Это плохо.
Это очень плохо. Можно пример файла? Или как их создать?
Есть N_path, N_options, N_session (для FTP), видимо, упускаю, но в справке не вижу и как добавить - тоже.

Добавлено ранее, перенёс в конец поста для наглядности:
Обновил:
- в случае, если поле ввода будет очищено и будет нажата кнопка "Ок", скрипт всё равно пытался переименовать файл или изменить путь в просматриваемом файле. Не знаю, насколько это искуственная ситуация, но файл портится.

Добавлено: Вс авг 07, 2016 21:21
Avada
Skif_off
Я, видимо, позже (как только изыщу время) напишу в ЛC. C примерами и прочим. Мне ещё некоторые глюки записать и систематизировать надо.

Добавлено: Ср авг 10, 2016 01:41
Skif_off
Обновил:
- теперь подсказки (имена) вкладок сохраняются в новый файл.

Добавлено: Ср авг 10, 2016 07:04
Avada
Skif_off
Да, комментарии сохраняются. Это хорошо.
Но кое-что сохраняться не хочет. Вот реальный пример для тестирования на основе одного из моих наборов вкладок (чтобы попроще, сделал вариант только со вкладками для одной панели):
[cut="Содержимое TAB-файла"]

Код: Выделить всё

[activetabs]
0_path=D:\TC_Setup\Download\
0_caption=Новое TC
0_options=0|0|0|0|0|1|0
1_path=D:\TC_Setup\
1_caption=Архив TC
1_options=0|0|0|0|0|1|0
2_path=D:\Setup\
2_options=0|1|0|0|0|1|0
3_path=D:\Книги\
3_options=0|1|0|0|0|1|0
4_path=E:\Картинки\
4_caption=Фото
4_options=0|3|1|0|0|1|0
5_path=E:\Музыка\
5_options=1|1|0|0|0|1|0
6_path=F:\Видео\
6_options=0|1|0|0|0|1|0
7_path=D:\
7_options=0|0|0|0|0|0|0
activetab=7
[/cut]При сохранении под другим именем вкладка с корнем диска игнорируется, новый набор получается усечённым на одну вкладку (их останется 6, а не 7).

Комментарии в INI-файле надо привести в полное соответствие с изменившимися названиями опций (я про "Добавить несколько"), а для Lang — расписать нормально: "Выбрать язык (Russian, English)". И, кстати, на перспективу подумать о выносе переключалки языка в окно TabList (куда-то вниз в главном окне?).
Частичная рамка вокруг списка TAB-файлов (только справа и внизу) — это фича?

Добавлено: Ср авг 10, 2016 17:03
Skif_off
Avada писал(а):Частичная рамка вокруг списка TAB-файлов (только справа и внизу) — это фича?
Это что-то вроде придания объёма, полагаю. Мне не удалось подобрать стили так, чтобы убрать это, поэтому - фича :)

О выносе переключалки языка в GUI подумаю, но, если честно, идея не особо по душе, к тому же потребует перезапуска.

Ещё с тех пор, когда стало ясно, что командам сохранения вкладок быть, периодически всплывает мысль прикрутить SAVETABS, SAVETABSL, SAVETABSR, SAVETABS2, SAVETABS2L, SAVETABS2R... Но это 6 em-команд и есть ли смысл? Пока на 9ку не пересел и плохо представляю, в каком виде на тулбаре пригодились бы лично мне.


Обновил:
- исправлен баг с сохранением вкладки корня диска;
- поправлены комментарии в ini-файле.

Добавлено: Ср авг 10, 2016 18:30
Avada
Skif_off писал(а):О выносе переключалки языка в GUI подумаю, но, если честно, идея не особо по душе, к тому же потребует перезапуска.
Если есть желание сделать полноценную поддержку английского — придётся делать и опцию. Поменять значение ключа до запуска TabList в готовом INI не получится, поскольку INI генерируется автоматически, так? А чтобы он сгенерировался, надо запустить TabList и что-то там сделать. Желательно — с пониманием того, что делается. Дальше, думаю, можно не пояснять.
Skif_off писал(а):периодически всплывает мысль прикрутить SAVETABS, SAVETABSL, SAVETABSR, SAVETABS2, SAVETABS2L, SAVETABS2R...
Правильная мысль. Делать средство управления этими делами — так уж по всем функциям. Я как раз собирался предложить. Будет у меня со временем получше — можем в ЛС обсудить, что там и как.

Добавлено: Ср авг 10, 2016 19:57
Skif_off
Avada
ini-файл генерируется, если его нет, и достаточно только запустить скрипт (на русской ОС русский будет выбран автоматически), потому что следующий шаг - поиск окна ТС и сообщение об ошибке, если не найдено.
Не стал класть в архив конфиг по умолчанию, т.к. скрипт не подхватывает автоматом тот, который рядом, а ищет в зависимости от взаимного расположения скрипта, %COMMANDER_PATH% и %COMMANDER_INI%.

Добавлено: Чт авг 11, 2016 08:20
Skif_off
Обнаружил пару неприятных ошибок, одна совсем нехорошая: если при сохранении в новый файл произойдёт какая-то из предусмотренных (вроде все) ошибок, то скрипт удалит ПРОСМАТРИВАЕМЫЙ файл! Вероятность низкая, поэтому не всплыло, прошу пока не использовать эту фичу (скомпилить и выложить исправленные версии могу только ближе к вечеру по Мск, ссылку в первом сообщении пока убрал).

В попытках предусмотреть ошибки при сохранении файла упустил из виду возможность, что отсутствовать физически могут все пути в секции => записывать будет нечего, придётся подумать, как изменить алгоритм...

Добавлено: Чт авг 11, 2016 23:19
Skif_off
Обновил:
- исправлен баг с удалением просматриваемого файла в случае какой-либо ошибки при попытке сохранить его с новым именем;
- в некоторых случаях в путях могли удваиваться слэши;
- файл конфигурации: поправлены опечатка и изменено название (TabAction >> OpenTabAction, AitoCloseMain >> AutoCloseMain), небольшие правки комментариев;
- правки локализации;
- внутренние изменения/уточнения;
- несколько изменений в связи с намерением прикрутить работу с SAVETABS* (не влияют на работу скрипта).

TabsList.ini можно удалить и создать новый или изменить вручную, ini-файл целиком в первом сообщении темы.

Добавлено: Пт окт 07, 2016 00:24
Skif_off
TabsList 0.1.5.0 (2016.10.06):
[cut="Изменения:"]- В ТС 9 появилась возможность сохранять вкладки без диалога сохранения (команды savetabs*), добавлены все варианты.
- Добавлена проверка существования в usercmd.ini необходимых пользовательских команд. Добавление команд максимально автоматизировано (включая перезапуск ТС), кнопка удаления команд доступна в опциях.
- Добавлена возможность сменить просматриваемый каталог.
- Добавлена возможность записать новый путь в TabDir (с %COMMANDER_PATH%, если возможно).
- Добавлена возможность перезаписывать новый путь в TabDir, если было выполнено сохранение или загрузка TAB-файла (как ТС, но с %COMMANDER_PATH%, если возможно). При закрытии скрипта, по умолчанию выключено.
- Добавлена индикация активности файловой панели ТС (определяется при запуске скрипта), возможна проверка в фоне (по умолчанию включено на ТС 9 и старше).
- Несколько усложнено получение дескриптора родительской копии ТС, для надёжности.
- Добавлена возможность заменить существующие файлы при переименовании/сохранении TAB-файла.
- Теперь в нижней части главного окна скрипт показывает текущий каталог (если не умещается, то будет сокращён).
- В окне ввода имени реализовано поведение ТС: при открытии диалога выделяется только имя и первое нажатие стрелки вправо в поле ввода не перебросит курсор за точку перед расширением, а только сбросит выделение и курсор окажется перед ней.
- Поддержка сетевых путей \\servername\folder\ (для краткости зову по имени протокола - SMB).
- Все доступные опции вынесены GUI.
- Правка названий опций и локализации.
- Получение длинного имени: внутренняя функция AutoIt (у 3.3.8.1 с ней бывают проблемы, как оказалось) заменена на прямой вызов GetLongPathNameW.
- Исправление ошибок, оптимизация кода.
- Прочее, см. TabsList.txt.[/cut]
TabsList.ini предыдущих версий лучше удалить.

[cut="В планах:"]
- Дополнительные горячие клавиши в главном окне:

Код: Выделить всё

Переключение вариантов:
  Загрузка/просмотр:
    "Заменить текущие вкладки"   Ctrl+F1
    "Заменить, активная левая"   Ctrl+F2
    "Заменить, активная правая"  Ctrl+F3
    "Добавить вкладки к текущим" Ctrl+F4
    "Добавить, активная левая"   Ctrl+F5
    "Добавить, активная правая"  Ctrl+F6
    "Просмотреть TAB-файл"       Ctrl+F7
  Сохранить вкладки панелей:
    "активной"                   Alt+F1
    "левой"                      Alt+F2
    "правой"                     Alt+F3
    "обеих, активная первая"     Alt+F4
    "обеих, левая первая"        Alt+F5
    "обеих, правая первая"       Alt+F6

"Сохранить"                      Alt+Enter
"Сохранить как..."               Alt+Shift+Enter
- Горячие клавиши для переключения активности панели (для главного окна и окна просмотра содержимого TAB-файла):
Ctrl+Стрелка влево - поместить курсор в левую панель ТС (cm_FocusLeft);
Ctrl+Стрелка вправо - поместить курсор в правую панель ТС (cm_FocusRight).
- Опция "Поверх всех окон".[/cut]
Не знаю, нужно ли.

Добавлено: Сб ноя 26, 2016 11:18
Skif_off
TabsList 0.1.5.1 (2016.11.26): поправлен размер контрола (текст весь не умещался), пара опечаток (в описании и комментариях).

Добавлено: Сб апр 22, 2017 15:55
Skif_off
TabsList 0.1.5.2 (2017.04.22): в InputBox нажатие клавиши Enter работало аналогично нажатию кнопки Ок даже если фокус был на кнопке Отмена.