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/