OberonCore
https://forum.oberoncore.ru/

i21sysDesktop - сохранялка конфигурации окон
https://forum.oberoncore.ru/viewtopic.php?f=90&t=2791
Страница 2 из 3

Автор:  Иван Кузьмицкий [ Пятница, 19 Ноябрь, 2010 13:37 ]
Заголовок сообщения:  Re: Сохранялка конфигурации окон i21sysDesktop

У меня тоже всегда выход с сохранением. Лучше выход "без сохранения" был бы отдельной операцией, а сохранение нужно всегда, почти.

Автор:  Info21 [ Пятница, 19 Ноябрь, 2010 14:49 ]
Заголовок сообщения:  Re: Сохранялка конфигурации окон i21sysDesktop

Коллеги, выражайтесь яснее.
Предложение поменять умолчания в базовой версии -- или что? (Думаете, я помню, что там?)

Автор:  Иван Кузьмицкий [ Пятница, 19 Ноябрь, 2010 14:58 ]
Заголовок сообщения:  Re: Сохранялка конфигурации окон i21sysDesktop

Закрыть ББ так, чтобы сохранялка сработала всегда, невозможно, насколько я знаю. Поэтому приходится закрывать через меню.

Автор:  Евгений Темиргалеев [ Пятница, 19 Ноябрь, 2010 16:45 ]
Заголовок сообщения:  Re: Сохранялка конфигурации окон i21sysDesktop

Info21 писал(а):
Коллеги, выражайтесь яснее.
Предложение поменять умолчания в базовой версии -- или что? (Думаете, я помню, что там?)
Иван Кузьмицкий писал(а):
Закрыть ББ так, чтобы сохранялка сработала всегда, невозможно, насколько я знаю. Поэтому приходится закрывать через меню.
я предложил к рассмотрению вопрос об изменении наоборот текущего поведения. В меню поставить пункт "Выйти без сохранения десктопа" в дополнение к просто "Выйти (с сохранением)". Последнее, чтобы срабатывало всегда (по кресту, Alt+F4,...), нужно вделывать в хост.

Автор:  Иван Денисов [ Пятница, 19 Ноябрь, 2010 20:40 ]
Заголовок сообщения:  Re: Сохранялка конфигурации окон i21sysDesktop

А куда надо в делывать в хост не подскажите с налету? Тоже мечтаю о таком функционале :)

Автор:  Александр Ильин [ Пятница, 19 Ноябрь, 2010 20:53 ]
Заголовок сообщения:  Re: Сохранялка конфигурации окон i21sysDesktop

Я тоже думал вделывать в хост, а сейчас вот подумал, что можно сохранять десктоп просто при выгрузке модуля Config. Всё равно этот модуль больше нигде не используется при разработке, а значит, выгружается только при выходе из ББ. Чтобы НЕ сохранять конфигурацию, можно просто в модуле Desktop предусмотреть глобальный флаг AutoSave (по умолчанию = TRUE), который и сбрасывать из специального пункта меню перед выходом без сохранения.

Я гений.

Автор:  Иван Денисов [ Пятница, 19 Ноябрь, 2010 21:42 ]
Заголовок сообщения:  Re: Сохранялка конфигурации окон i21sysDesktop

Проверил, так получается вроде, что он выгружается, когда все окна уже закрылись, такую конфигурацию и сохраняет.

Автор:  Александр Ильин [ Пятница, 19 Ноябрь, 2010 21:57 ]
Заголовок сообщения:  Re: Сохранялка конфигурации окон i21sysDesktop

divan писал(а):
Проверил, так получается вроде, что он выгружается, когда все окна уже закрылись, такую конфигурацию и сохраняет.
Значит, я не гений.

Автор:  Евгений Темиргалеев [ Суббота, 20 Ноябрь, 2010 06:38 ]
Заголовок сообщения:  Re: Сохранялка конфигурации окон i21sysDesktop

divan писал(а):
А куда надо в делывать в хост не подскажите с налету? Тоже мечтаю о таком функционале :)
Правки для сохранения всегда при старом десктопе: viewtopic.php?p=50772#p50772. На их базе, думаю, сделаете. Старый --- до варианта viewtopic.php?p=52717#p52717.

Автор:  Info21 [ Суббота, 20 Ноябрь, 2010 09:59 ]
Заголовок сообщения:  Re: Сохранялка конфигурации окон i21sysDesktop

Я просто посадил выход с сохранением на Ctrl+Shift+W.

На фиг хост. Не нравится мне это.

Автор:  Евгений Темиргалеев [ Понедельник, 25 Июль, 2011 22:22 ]
Заголовок сообщения:  Re: i21sysDesktop - охранялка конфигурации окон

У меня появилась проблема: использование одного и того же (файла) десктопа (синхронизируется) на машинах с разным разрешением экрана (использовать одинаковое не возможно физически).

Вкупе с отделившейся веткой про выравнивание окон по левой/правой границе появилась идея: добавить к окну статус "выровнено по левому | правому краю", который будет храниться в десктопе. При восстановлении окна с таким статусом будут позиционироваться и принимать высоту согласно размеру главного окна (которое обычно развёрнуто и соответствует размеру экрана).

Этот костыль будет хотя бы по минимуму имитировать размещение окон в ОС Оберон.

Автор:  Info21 [ Вторник, 26 Июль, 2011 05:13 ]
Заголовок сообщения:  Re: i21sysDesktop - охранялка конфигурации окон

Евгений Темиргалеев писал(а):
У меня появилась проблема: использование одного и того же (файла) десктопа (синхронизируется) на машинах с разным разрешением экрана (использовать одинаковое не возможно физически). ...
Да, есть такая проблема. И указанное решение -- наиболее естественое.

Может, подпилите Desktop и пришлете мне?

Автор:  Евгений Темиргалеев [ Среда, 16 Май, 2012 11:56 ]
Заголовок сообщения:  Re: i21sysDesktop - сохранялка конфигурации окон

Код:
   PROCEDURE ReadConverter ( VAR rd: Stores.Reader;  OUT conv: Converters.Converter );
      VAR  imp, exp: Dialog.String; ... c: Converters.Converter;
   BEGIN
      ...
      rd.ReadSet( opts );
--->      Converters.Register( imp, exp, storeType, fileType, opts );
      c := Converters.list;
      WHILE ( c # NIL ) &
         ~( ( c.imp = imp ) & ( c.exp = exp ) &
            ( c.storeType = storeType ) & ( c.fileType = fileType ) & ( c.opts = opts ) )
      DO
         c := c.next
      END;
      conv := c
   END ReadConverter;
Енто дело плодит конвертеры, поскольку Register добавляет новый в конец списка буквально --- создаёт новый и добавляет. Поэтому тут проверять --- не повредит:
Код:
   PROCEDURE ReadConverter ( VAR rd: Stores.Reader;  OUT conv: Converters.Converter );
      VAR  imp, exp: Dialog.String; ... c: Converters.Converter;
   BEGIN
      ...
      rd.ReadSet( opts );
      c := Converters.list;
      WHILE ( c # NIL ) &
         ~( ( c.imp = imp ) & ( c.exp = exp ) &
            ( c.storeType = storeType ) & ( c.fileType = fileType ) & ( c.opts = opts ) )
      DO
         c := c.next
      END;
      IF c = NIL THEN
         Converters.Register( imp, exp, storeType, fileType, opts );
         c := Converters.list;
         WHILE ( c # NIL ) &
            ~( ( c.imp = imp ) & ( c.exp = exp ) &
               ( c.storeType = storeType ) & ( c.fileType = fileType ) & ( c.opts = opts ) )
         DO
            c := c.next
         END
      END;
      conv := c
   END ReadConverter;

Автор:  Александр Ильин [ Среда, 16 Май, 2012 13:41 ]
Заголовок сообщения:  Re: i21sysDesktop - сохранялка конфигурации окон

Вам явно нужна функция FindConverter.

Автор:  Info21 [ Среда, 16 Май, 2012 14:42 ]
Заголовок сообщения:  Re: i21sysDesktop - сохранялка конфигурации окон

Сложновато на первый взгляд...

Автор:  Евгений Темиргалеев [ Понедельник, 04 Март, 2013 19:51 ]
Заголовок сообщения:  Re: i21sysDesktop - сохранялка конфигурации окон

Интересно, можно ли сделать конвертер для файла десктопа? В том смысле, что его действие будет не совсем вписываться в логику Converters.Converter и могут быть подводные камни...

А то можно получить:
1) Загрузка заданного десктопа при пуске: ./BlackBox.exe xxx.i21
2) Отказаться от спец. команд "сохранить декстоп" и пр.

Автор:  Пётр Кушнир [ Понедельник, 04 Март, 2013 20:13 ]
Заголовок сообщения:  Re: i21sysDesktop - сохранялка конфигурации окон

Механизм интернализации вроде как должен возвращать ненулевое отображение, иначе будет постоянно возникать сообщение об ошибке. А при экстернализации тоже свои особенности нельзя просто взять и сохранить сущность, которая не является отображением, и не инкапсулирована в него. Всё равно что в форме открыть какой-то свой "проект" для редактирования (обычная форма, с интеракторами и гридом, например), а потом попытаться сохранить её стандартными средствами. Хотя, если для десктопа будет постоянно открыто родное "отображение", например, в виде маленькой иконки в окне (а окно будет мешать, вероятно), то сохранение/загрузка этой иконки в принципе может инициировать и остальные операции по загрузке десктопа.
Получается, вроде как, якорь десктопа.

Автор:  Евгений Темиргалеев [ Пятница, 05 Сентябрь, 2014 22:13 ]
Заголовок сообщения:  Re: i21sysDesktop - сохранялка конфигурации окон

Товарищи, проверьте:
1) Открыть любой кодовый файл
2) Сохранить десктоп
3) Открыть десктоп
Возникает ли при загрузке трап?

Автор:  Евгений Темиргалеев [ Вторник, 07 Октябрь, 2014 14:35 ]
Заголовок сообщения:  Re: i21sysDesktop - сохранялка конфигурации окон

Причина: viewtopic.php?t=2853

Автор:  Евгений Темиргалеев [ Вторник, 25 Октябрь, 2016 18:13 ]
Заголовок сообщения:  Re: i21sysDesktop - сохранялка конфигурации окон

Код:
   PROCEDURE Close*;
      ...
   BEGIN
      IF Unsaved() # NIL THEN
         Dialog.ShowMsg('#i21sys:CannotExit');   <---- должно быть CannotClose
         ...
      ELSE
         ...
      END
   END Close;

Страница 2 из 3 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/