Название: Показать новые/измененные данные Отправлено: Igors от Февраль 06, 2016, 14:21 Добрый день
Выполняется пытон скрипт созданный др приложением. Если переменные с таким пытон-именем уже есть в моем приложении, то они возможно редактируются (меняются поля данных), иначе создаются новые переменные. Имена всех измененных переменных и полей известны. После того как скрипт отработал как удачно/лаконично показать юзеру что "это изменено - а это добавлено" с тем чтобы он мог принять или отменить рез-ты скрипта? Спасибо Название: Re: Показать новые/измененные данные Отправлено: kambala от Февраль 06, 2016, 15:40 например, банально табличкой: переменная — старое значение (если переменная новая, пусто или not existed) — новое
Название: Re: Показать новые/измененные данные Отправлено: Igors от Февраль 06, 2016, 16:00 например, банально табличкой: переменная — старое значение (если переменная новая, пусто или not existed) — новое Разумно. Но тогда надо и редактировать давать, каким образом? Др совами что юзер должен сделать чтобы "принять новое" или "оставить старое"? И где/как будет видно принято/оставлено?Название: Re: Показать новые/измененные данные Отправлено: kambala от Февраль 06, 2016, 16:49 кнопочками save/discard (если всю форму сразу).
в табличке можно ввести еще один столбик с чекбоксами «apply» (по умолчанию все отмечены), ну а столбик «new value» сделать редактируемым. Название: Re: Показать новые/измененные данные Отправлено: Igors от Февраль 07, 2016, 06:44 кнопочками save/discard (если всю форму сразу). Хмм.. как-то это все начинает "раздуваться". Похоже дело-то не в UI, плохо продумана пресловутая "архитектура". Попробуем взглянуть ширше, вот больше подробностейв табличке можно ввести еще один столбик с чекбоксами «apply» (по умолчанию все отмечены), ну а столбик «new value» сделать редактируемым. Я использую либу из приложения создающего пытон скрипты. (Де)сериализация (и в либе и в приложении) отсутствует, т.е. нет слива объектов в поток. Вместо этого оно пробегается по всем объектам и собирает их пытон имена. Надо признать, получается довольно компактно/красиво (один save для всех объектов). Найденные имена пишутся в .py файл, в нем это выглядит так Цитировать obj = scene.getServiceManager().getService("steering") Загрузка данных сводится к выполнению записанного .py файла. При этом если пытон создал новую переменную и/или поле данных, то она появляется и в С++ коде (ну конечно ее надо достать из контейнера по имени). А если данные уже существовали, они обновляются. Тоже здорово, с обычной сериализацией там долго пыль глотать.if obj.getAttribute("addBoundaryWalls") != None : obj.setBoolAttribute("addBoundaryWalls",True) else: attr = obj.createBoolAttribute("addBoundaryWalls", True, True, "Basic", 60, False, False, False, "Add") attr.setDefaultValue(True) attr.setValue(True) Хорошо, но мне-то что делать? Вот юзер запустил .py скрипт, он мне чего-то изменил и/или чего-то добавил, как с этим разобраться? И undo никто не отменял, а что писать для undo? Вот подумал "предъявить юзеру все-все", и пусть он решает (ведь я тоже могу пробежаться по всем объектам/атрибутам). Но теперь вижу - это не очень хорошо. UI выходит не маленькое, а толку чуть - что юзер будет делать с "addBoundaryWalls", о котором понятия не имеет? Ваши предложения? Название: Re: Показать новые/измененные данные Отправлено: kambala от Февраль 07, 2016, 13:57 изначально речь шла о том, чтобы показать результаты скрипта и сохранить/отменить их — табличка с двумя кнопками.
дальше уже вылезло требование редактируемости результатов — ну ок, разрешаем редактирование столбца. обойтись можно и без чекбоксов в общем-то: просто смотреть было ли изменение значения, предоставленного скриптом (зависит от задачи). теперь уже оказывается, что человек понятия не имеет о том, что там в скрипте происходит — тогда смысл ему вообще что-либо показывать? отработал скрипт, сразу применили изменения, юзер смотрит на визуальный результат: нравится — радуется, не нравится — жмет undo. что юзер будет делать с "addBoundaryWalls", о котором понятия не имеет? можно ввести какой-то description питоновским переменным, чтоб юзер мог понять их назначение.Название: Re: Показать новые/измененные данные Отправлено: Bepec от Февраль 07, 2016, 14:46 Вместо всей это мутотени написать табличку "Переменные были изменены. Откатить?" Да/Нет :D
PS Igors не воспринимай несерьёзно, это реально решение всех твоих проблем. В каждой теме одно и то же, многосоставная жалоба на плохое чтение твоих мыслей :D Название: Re: Показать новые/измененные данные Отправлено: Igors от Февраль 07, 2016, 16:08 можно ввести какой-то description питоновским переменным, чтоб юзер мог понять их назначение. имеются (в самой либе)изначально речь шла ... Это нормальный процесс для любой приличной задачи. Если "все ясно" то и обсуждать нечего. ... дальше уже вылезло требование редактируемости результатов .. .. теперь уже оказывается, .. Требований пока никто не предъявляет, хочу редактирую - хочу нет, я решаю. Но надо сделать чтобы юзеру было удобно, и чтобы это место не пришлось переделывать. Тут вот думаю - а что собсно делать для простейшего Cancel (когда скрипт уже был). Не только юзер, но и я не знаю что может быть в скрипте - на то он и скрипт, типа "в этом его сила". Это я так смело сказал "могу пробежаться". Но там писать немало, а главное - пробежка ничего не гарантирует. Переменные созданные в скрипте продолжают жить в пытоне, и хз что он там создаст. Как-то чистить пытоновский словарь - пару лет назад делал, там засада, пытон не удалит если на переменную есть ссылка. Как-то "грохнуть все" - ну в приложении это есть, по исходникам может и разберусь. Но тогда надо перегрузить свои данные (что были до скрипта), а это потянет загрузку файлов (ох многих). Не слабый получится "Cancel" Мдаа.... не мала баба клопоту - купила питоновське порося :'( Название: Re: Показать новые/измененные данные Отправлено: kambala от Февраль 07, 2016, 18:19 вот опять всплывают новые подробности :) почему нельзя все это сразу написать?
тема уже начинает переходить в питонскую (автозамена исправила на «пижонскую» :) ) специфику, не имеющую ничего общего с гуи. может можно как-то сделать «слепок» состояния питона до запуска скрипта и откатиться к нему в случае отмены пользователем изменений, внесенных скриптом? Название: Re: Показать новые/измененные данные Отправлено: Racheengel от Февраль 07, 2016, 18:39 Достаточно будет таблицы с 3 столбиками:
Переменная - Старое значение - Новое значение И кнопки Принять-Отменить. Все. Негоже пользователю в детали вникать. Он либо принимает ВСЕ, либо НИЧЕГО. Иначе будут проблемы позже. Название: Re: Показать новые/измененные данные Отправлено: Bepec от Февраль 07, 2016, 23:42 Сча вылезет проблема количества переменных. ведь после допустим запуска 5 скриптов их может быть более сотни/тысячи. Как же бедный пользователь будет их смотреть? :P
Название: Re: Показать новые/измененные данные Отправлено: Racheengel от Февраль 08, 2016, 00:47 Сча вылезет проблема количества переменных. ведь после допустим запуска 5 скриптов их может быть более сотни/тысячи. Как же бедный пользователь будет их смотреть? :P а ему оно надо? в большинстве случаев он нажмет на ОК и забудет. Название: Re: Показать новые/измененные данные Отправлено: Bepec от Февраль 08, 2016, 02:31 Пути Igors неисповедимы, но вот только он никогда не останавливается, пока не будет смешано минимум пять вопросов :D
Название: Re: Показать новые/измененные данные Отправлено: Igors от Февраль 08, 2016, 02:59 вот опять всплывают новые подробности :) почему нельзя все это сразу написать? Напомню стартовую формулировкуВыполняется пытон скрипт созданный др приложением. Если переменные с таким пытон-именем уже есть в моем приложении, то они возможно редактируются (меняются поля данных), иначе создаются новые переменные. Имена всех измененных переменных и полей известны. Что же потом всплыло/утонуло? :) По-моему ничего, просто дано больше подробностей/деталей, которые в стартовом посте были бы неуместны, длинные опусы обычно игнорируют.может можно как-то сделать «слепок» состояния питона до запуска скрипта и откатиться к нему в случае отмены пользователем изменений, внесенных скриптом? Это по-любому мне делать придется, пока не знаю кактема уже начинает переходить в питонскую (автозамена исправила на «пижонскую» :) ) специфику, не имеющую ничего общего с гуи. Ну как сказать... Если бы UI удачно легло/вписалось, то это значило бы что и с архитектурой/постановкой все норм. А сейчас это не такДостаточно будет таблицы с 3 столбиками: Пытон переменные тоже классы/объекты, отделаться 3 столбиками никак не удается, там не хилое дерево выходит. Переменная - Старое значение - Новое значение И кнопки Принять-Отменить. Все. Негоже пользователю в детали вникать. Он либо принимает ВСЕ, либо НИЧЕГО. Иначе будут проблемы позже. Логика ВСЕ/НИЧЕГО смысл имеет, (типа "пакет или прошел - или нет"). Принимая "по частям" наживаем себе проблем с несовместимостью значений. Но тогда чего предъявлять новое/старое? "На посмотри (на огромное дерево) но ничего не делай"? С др стороны вообще ничего не показывать, сразу вывалить Принять-Отменить - опять я буду виноват, сразу же вопрос "а что я должен "Принять"? Кота в мешке? Название: Re: Показать новые/измененные данные Отправлено: Old от Февраль 08, 2016, 08:15 А что это за параметры, которые могут создавать/модифицировать скрипты?
Можно их как-то визуализировать, показать на демонстрационной модели: было - стало? Название: Re: Показать новые/измененные данные Отправлено: kambala от Февраль 08, 2016, 11:21 а есть вариант «спросить у заказчика / дизайнера / пользователей»?
Название: Re: Показать новые/измененные данные Отправлено: Racheengel от Февраль 08, 2016, 13:55 Логика ВСЕ/НИЧЕГО смысл имеет, (типа "пакет или прошел - или нет"). Принимая "по частям" наживаем себе проблем с несовместимостью значений. Но тогда чего предъявлять новое/старое? "На посмотри (на огромное дерево) но ничего не делай"? А все дерево не надо показывать. Показать что то типа "изменилось 10 переменных в 3 модулях". Если кому будет интересно - по даблклику показать более детально. Но 90% юзеров проигнорируют и нажмут Да-Нет. |