ret-Phoenix / oscript-simple-gui

Внешняя компонента позволяет создавать формы на языке 1script. API работы с формами максимально приближен к синтаксису 1С.
55 stars 12 forks source link

Добавлен стандартный диалог "ДиалогВыбораФайла" #40

Closed alexkmbk closed 7 years ago

alexkmbk commented 8 years ago

Добавлен стандартный диалог "ДиалогВыбораФайла" Добавлено системное перечисление "РежимДиалогаВыбораФайла".

Тесты не написал, поскольку не пришло в голову как этот функционал можно протестировать.

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

alexkmbk commented 8 years ago

Метод "Показать" не реализован, для этого нужна реализация объекта "ОписаниеОповещения" в движке 1Script.

nixel2007 commented 8 years ago

ОписаниеОповещения есть в моей библиотеке notify. Подойдет?

alexkmbk commented 8 years ago

Надо будет глянуть, на первый взгляд кажется что такая штука должна быть в самом 1Script

nixel2007 commented 8 years ago

В односкрипте нет event loop. Поэтому полную асинхронность реализовать не получится в принципе. Максимум можно попробовать повторить апи с ограничениями на синхронный вызов обработчика оповещения

dmpas commented 8 years ago

В самом односкрипте нет такого, но если запускается ГУЙ, то в нём уже есть некоторый цикл событий, иначе он бы не работал. Таким образом надо научиться управлять этим циклом в компоненте ГУЯ.

alexkmbk commented 8 years ago

ОписаниеОповещения в 1Script могло бы работать синхронно, думаю логика от этого не поменяется, то есть сначала выполняем весь стек, который идет в обработчике оповещения, потом возвращаем управление в точку вызова и спокойно продолжаем выполнение. Тут главная фишка в переносимости кода. А если говорить о распараллеливании задач, то это уже другая тема.

dmpas commented 8 years ago

Так для этого всё равно цикл событий нужен, независимо, синхронно оно или нет.

nixel2007 commented 8 years ago

Для синхронного - не нужен. Открыли диалог выбора файла, ждем, пока пользователь выберет, выполняем обработку оповещения, возвращаем управление в то место, где был вызов Показать()

nixel2007 commented 8 years ago

Просто это не очевидно для рядового 1сника... Он будет ждать асинхронного выполнения кода, а тут такая подстава :)

alexkmbk commented 8 years ago

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

dmpas commented 8 years ago

Открытие диалога, нажатие кнопки - полдела. Внешние события, обработчики ожидания и им подобные?

nixel2007 commented 8 years ago

Нас @EvilBeaver не проклянет?)

EvilBeaver commented 8 years ago

Привет. Я полагаю, что для гуя может потребоваться отдельное хост-приложение. И там уже евентлупы всякие. Сейчас реально только синхронные вызовы делать и модальные окна

ret-Phoenix commented 7 years ago

Нужно подправить под новую политику работы с перечислениями. Сделаешь?