OberonCore https://forum.oberoncore.ru/ |
|
#022 Добавить второй уровень рабочих папок https://forum.oberoncore.ru/viewtopic.php?f=134&t=6554 |
Страница 1 из 5 |
Автор: | Info21 [ Суббота, 15 Февраль, 2020 11:58 ] |
Заголовок сообщения: | #022 Добавить второй уровень рабочих папок |
Добавить второй уровень рабочих папок. |
Автор: | Иван Денисов [ Суббота, 15 Февраль, 2020 12:30 ] |
Заголовок сообщения: | Re: Версия 1.8: Добавить второй уровень рабочих папок |
Поддерживаю предложение. Бывает необходимо в ряде случаев держать надстройки ББ в отдельной директории, чтобы безобидно обновлять основной дистрибутив. Перевод, различные "помогаторы" и прочие расширения. Также иметь несколько вариантов надстроек (сборок) для разных задач. |
Автор: | SovietPony [ Суббота, 15 Февраль, 2020 13:58 ] |
Заголовок сообщения: | Re: Версия 1.8: Добавить второй уровень рабочих папок |
Можно решить через установку специальнго Files.Directory сделанного по аналогии с HostPackedFiles, но с поиском по реальной ФС. |
Автор: | hothing [ Суббота, 15 Февраль, 2020 18:09 ] |
Заголовок сообщения: | Re: Версия 1.8: Добавить второй уровень рабочих папок |
Поясните, пожалуйста, как это должно быть? Традиционный для Юникса механизм связывания (bind) на уровне папки - не то? Или аналог UnionFS? |
Автор: | Иван Денисов [ Суббота, 15 Февраль, 2020 19:03 ] |
Заголовок сообщения: | Re: Версия 1.8: Добавить второй уровень рабочих папок |
Сейчас это сделано как "теневая директория". Если файл не удается открыть из рабочего каталога, то делается попытка открыть файл из теневого каталога. Код: OpenFile(s, fname, ref, res); IF ((res = fileNotFoundErr) OR (res = pathNotFoundErr)) & (loc.rootLen > 0) THEN GetShadowDir(loc, fname); Append(fname, name, "", loc.maxLen, fname); f := ThisFile(fname); IF f # NIL THEN IF ~shrd OR (f.state = exclusive) THEN loc.res := Error(sharingErr); RETURN NIL ELSE loc.res := ok; RETURN f END END; OpenFile(s, fname, ref, res) END; Так что предлагаю сделать рекурсию теневых каталогов. Так было бы решение для любого числа рабочих каталогов. |
Автор: | Info21 [ Воскресенье, 16 Февраль, 2020 00:00 ] |
Заголовок сообщения: | Re: Версия 1.8: Добавить второй уровень рабочих папок |
Сейчас сохранение настроек в файле .ini делается так, что там прописывается абсолютный путь к рабочей папке. Что просто глупо -- разрушается переносимость рабочей папки. |
Автор: | hothing [ Воскресенье, 16 Февраль, 2020 09:46 ] |
Заголовок сообщения: | Re: Версия 1.8: Добавить второй уровень рабочих папок |
Info21 писал(а): Сейчас сохранение настроек в файле .ini делается так, что там прописывается абсолютный путь к рабочей папке. Что просто глупо -- разрушается переносимость рабочей папки. Чтобы задавать относительные пути надо задать базовую точку (каталог). В норме - домашний каталог. Но сколько пользователей Windows им пользуется? Кроме того, получается надо таки разделять рабочий каталог пользователя и системный каталог ББ (что сейчас не совсем так). Как быть если имена подсистем в системном каталоге и рабочем совпадают? |
Автор: | Info21 [ Воскресенье, 16 Февраль, 2020 09:59 ] |
Заголовок сообщения: | Re: Версия 1.8: Добавить второй уровень рабочих папок |
Вообще ничего не надо там фиксировать. По правилам ББ: сохраняем .ini в рабочую папку -- и там же его ищем, независимо от того, куда папка переехала. Так работали настройки в базовой сборке от И-21. Центр чего-того, сообщал ИАД, "изучил" -- и сделал фигню. Зато всё как у больших. |
Автор: | hothing [ Воскресенье, 16 Февраль, 2020 11:12 ] |
Заголовок сообщения: | Re: Версия 1.8: Добавить второй уровень рабочих папок |
Info21 писал(а): По правилам ББ: сохраняем .ini в рабочую папку -- и там же его ищем, независимо от того, куда папка переехала. Извините, не понял. "Рабочая папка" = "текущий каталог\папка"? |
Автор: | Info21 [ Воскресенье, 16 Февраль, 2020 19:01 ] |
Заголовок сообщения: | Re: Версия 1.8: Добавить второй уровень рабочих папок |
См. о параметре /use при вызове ББ. |
Автор: | Александр Ильин [ Понедельник, 17 Февраль, 2020 00:49 ] |
Заголовок сообщения: | Re: Версия 1.8: Добавить второй уровень рабочих папок |
В ini-файлах тоже можно сделать "теневые параметры". |
Автор: | Иван Денисов [ Понедельник, 17 Февраль, 2020 05:06 ] |
Заголовок сообщения: | Re: Версия 1.8: Добавить второй уровень рабочих папок |
Предлагаю, чтобы не добавлять дополнительные ключи и переменные окружения, сделать перечисление директорий через ";" К примеру, вот такой скрипт запускает Блэкбокс Код: #!/bin/sh bbGUIdir="/usr/lib/blackbox" env \ BB_PRIMARY_DIR="${bbGUIdir}" BB_SECONDARY_DIR="/home/dia/blackbox;$PWD" \ ${bbGUIdir}/blackbox $* & Переменная окружения задаёт две рабочие директории, сначала "вторичную", откуда брать надстройки, а потом третичную — рабочую из переменной $PWD (место запуска). Код: BB_SECONDARY_DIR="/home/dia/blackbox;$PWD"
|
Автор: | SovietPony [ Понедельник, 17 Февраль, 2020 06:48 ] |
Заголовок сообщения: | Re: Версия 1.8: Добавить второй уровень рабочих папок |
По моему в линукс-версии хорошо бы действовать по канонами никсов. Приоритет директорий слева (высший) направо (низший) и сепаратор в виде двоеточия. |
Автор: | Trurl [ Понедельник, 17 Февраль, 2020 08:41 ] |
Заголовок сообщения: | Re: Версия 1.8: Добавить второй уровень рабочих папок |
По канонам программы прибиваются гвоздями к определённым местам. |
Автор: | Иван Денисов [ Понедельник, 17 Февраль, 2020 10:41 ] |
Заголовок сообщения: | Re: Версия 1.8: Добавить второй уровень рабочих папок |
Получается, что Код: BB_SECONDARY_DIR="$PWD:/home/dia/blackbox" А как лучше для Windows в ярлыке прописывать? Там двоеточие используется для обозначения дисков. Код: /USE "C://users/Ivan/settings;C://users/Ivan/projects" Код: /USE "../settings;../projects" Как-то так? |
Автор: | Info21 [ Понедельник, 17 Февраль, 2020 19:02 ] |
Заголовок сообщения: | Re: Версия 1.8: Добавить второй уровень рабочих папок |
Надо делать как можно проще, чётче и читабельней. Для "промежуточной" папки я бы сделал /Use2 "........" Параметры строки уже парсятся -- добавить еще один какая проблема. Добавлять какую-то фигню для парсинга самого параметра зачем. |
Автор: | Trurl [ Понедельник, 17 Февраль, 2020 21:10 ] |
Заголовок сообщения: | Re: Версия 1.8: Добавить второй уровень рабочих папок |
Иван Денисов писал(а): Предлагаю, чтобы не добавлять дополнительные ключи и переменные окружения, сделать перечисление директорий через ";" Вы упускаете из виду, что одна из них должна быть основной. Нехорошо, если затеряется в общем списке. Например, открыли файл, отредактировали, сохранили и где потом его искать? |
Автор: | Евгений Темиргалеев [ Вторник, 25 Февраль, 2020 01:44 ] |
Заголовок сообщения: | Re: #022 Добавить второй уровень рабочих папок |
В каком виде нужен второй уровень? Код: первый-уровень/ -- базовая сборка
Sytem/ Text/ Dev/ ... второй-уровень/ -- доп. подсистемы. Без пересчения с первым? Или нужно, чтобы пересечение поддерживалось? ... третьий-уровень/ -- рабочая папка, сюда идет запись |
Автор: | Иван Денисов [ Вторник, 25 Февраль, 2020 06:21 ] |
Заголовок сообщения: | Re: #022 Добавить второй уровень рабочих папок |
Пересечения должны поддерживаться, так как иногда расширения, к примеру, заменяют файлы меню. |
Автор: | Евгений Темиргалеев [ Вторник, 25 Февраль, 2020 10:49 ] |
Заголовок сообщения: | Re: #022 Добавить второй уровень рабочих папок |
Если только для меню, то вопрос, на мой взгляд открытый. Например, у меня настроено какое-то меню. Например, в Attributes добавил какие-то еще команды. Или в контекстное для "Text". Это же мое право как пользователя его настроить? И тут какое-то расширение это меню заменяет .... на что? Если же речь идет о расширении меню, то пересечения не возникает. |
Страница 1 из 5 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |