Russian Qt Forum
Апрель 24, 2024, 16:25 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Показать новые/измененные данные  (Прочитано 8048 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« : Февраль 06, 2016, 14:21 »

Добрый день

Выполняется пытон скрипт созданный др приложением. Если переменные с таким пытон-именем уже есть в моем приложении, то они возможно редактируются (меняются поля данных), иначе создаются новые переменные. Имена всех измененных переменных и полей известны.

После того как скрипт отработал как удачно/лаконично показать юзеру что "это изменено - а это добавлено" с тем чтобы он мог принять или отменить рез-ты скрипта?

Спасибо
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #1 : Февраль 06, 2016, 15:40 »

например, банально табличкой: переменная — старое значение (если переменная новая, пусто или not existed) — новое
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Февраль 06, 2016, 16:00 »

например, банально табличкой: переменная — старое значение (если переменная новая, пусто или not existed) — новое
Разумно. Но тогда надо и редактировать давать, каким образом? Др совами что юзер должен сделать чтобы "принять новое" или "оставить старое"? И где/как будет видно принято/оставлено?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #3 : Февраль 06, 2016, 16:49 »

кнопочками save/discard (если всю форму сразу).

в табличке можно ввести еще один столбик с чекбоксами «apply» (по умолчанию все отмечены), ну а столбик «new value» сделать редактируемым.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #4 : Февраль 07, 2016, 06:44 »

кнопочками save/discard (если всю форму сразу).

в табличке можно ввести еще один столбик с чекбоксами «apply» (по умолчанию все отмечены), ну а столбик «new value» сделать редактируемым.
Хмм.. как-то это все начинает "раздуваться". Похоже дело-то не в UI, плохо продумана пресловутая "архитектура". Попробуем взглянуть ширше, вот больше подробностей

Я использую либу из приложения создающего пытон скрипты. (Де)сериализация (и в либе и в приложении) отсутствует, т.е. нет слива объектов в поток. Вместо этого оно пробегается по всем объектам и собирает их пытон имена. Надо признать, получается довольно компактно/красиво (один save для всех объектов). Найденные имена пишутся в .py файл, в нем это выглядит так 
Цитировать
obj = scene.getServiceManager().getService("steering")
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 файла. При этом если пытон создал новую переменную и/или поле данных, то она появляется и в С++ коде (ну конечно ее надо достать из контейнера по имени). А если данные уже существовали, они обновляются. Тоже здорово, с обычной сериализацией там долго пыль глотать.

Хорошо, но мне-то что делать? Вот юзер запустил .py скрипт, он мне чего-то изменил и/или чего-то добавил, как с этим разобраться? И undo никто не отменял, а что писать для undo? Вот подумал "предъявить юзеру все-все", и пусть он решает (ведь я тоже могу пробежаться по всем объектам/атрибутам). Но теперь вижу - это не очень хорошо. UI выходит не маленькое, а толку чуть - что юзер будет делать с  "addBoundaryWalls", о котором понятия не имеет?

Ваши предложения?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #5 : Февраль 07, 2016, 13:57 »

изначально речь шла о том, чтобы показать результаты скрипта и сохранить/отменить их — табличка с двумя кнопками.

дальше уже вылезло требование редактируемости результатов — ну ок, разрешаем редактирование столбца. обойтись можно и без чекбоксов в общем-то: просто смотреть было ли изменение значения, предоставленного скриптом (зависит от задачи).

теперь уже оказывается, что человек понятия не имеет о том, что там в скрипте происходит — тогда смысл ему вообще что-либо показывать? отработал скрипт, сразу применили изменения, юзер смотрит на визуальный результат: нравится — радуется, не нравится — жмет undo.
что юзер будет делать с  "addBoundaryWalls", о котором понятия не имеет?
можно ввести какой-то description питоновским переменным, чтоб юзер мог понять их назначение.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Bepec
Гость
« Ответ #6 : Февраль 07, 2016, 14:46 »

Вместо всей это мутотени написать табличку "Переменные были изменены. Откатить?" Да/Нет Веселый

PS Igors не воспринимай несерьёзно, это реально решение всех твоих проблем. В каждой теме одно и то же, многосоставная жалоба на плохое чтение твоих мыслей Веселый
« Последнее редактирование: Февраль 07, 2016, 14:49 от Bepec » Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #7 : Февраль 07, 2016, 16:08 »

можно ввести какой-то description питоновским переменным, чтоб юзер мог понять их назначение.
имеются (в самой либе)

изначально речь шла ...
...
дальше уже вылезло требование редактируемости результатов ..
..
теперь уже оказывается, ..
Это нормальный процесс для любой приличной задачи. Если "все ясно" то и обсуждать нечего.
Требований пока никто не предъявляет, хочу редактирую - хочу нет, я решаю. Но надо сделать чтобы юзеру было удобно, и чтобы это место не пришлось переделывать.

Тут вот думаю - а что собсно делать для простейшего Cancel (когда скрипт уже был). Не только юзер, но и я не знаю что может быть в скрипте - на то он и скрипт, типа "в этом его сила". Это я так смело сказал "могу пробежаться". Но там писать немало, а главное - пробежка ничего не гарантирует. Переменные созданные в скрипте продолжают жить в пытоне, и хз что он там создаст. Как-то чистить пытоновский словарь - пару лет назад делал, там засада, пытон не удалит если на переменную есть ссылка. Как-то "грохнуть все" - ну в приложении это есть, по исходникам может и разберусь. Но тогда надо перегрузить свои данные (что были до скрипта), а это потянет загрузку файлов (ох многих). Не слабый получится "Cancel"

Мдаа.... не мала баба клопоту - купила питоновське порося  Плачущий
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #8 : Февраль 07, 2016, 18:19 »

вот опять всплывают новые подробности Улыбающийся почему нельзя все это сразу написать?

тема уже начинает переходить в питонскую (автозамена исправила на «пижонскую» Улыбающийся ) специфику, не имеющую ничего общего с гуи.

может можно как-то сделать «слепок» состояния питона до запуска скрипта и откатиться к нему в случае отмены пользователем изменений, внесенных скриптом?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #9 : Февраль 07, 2016, 18:39 »

Достаточно будет таблицы с 3 столбиками:
Переменная - Старое значение - Новое значение

И кнопки Принять-Отменить. Все.
Негоже пользователю в детали вникать. Он либо принимает ВСЕ, либо НИЧЕГО. Иначе будут проблемы позже.
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Bepec
Гость
« Ответ #10 : Февраль 07, 2016, 23:42 »

Сча вылезет проблема количества переменных. ведь после допустим запуска 5 скриптов их может быть более сотни/тысячи. Как же бедный пользователь будет их смотреть? Показает язык
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #11 : Февраль 08, 2016, 00:47 »

Сча вылезет проблема количества переменных. ведь после допустим запуска 5 скриптов их может быть более сотни/тысячи. Как же бедный пользователь будет их смотреть? Показает язык

а ему оно надо? в большинстве случаев он нажмет на ОК и забудет.
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Bepec
Гость
« Ответ #12 : Февраль 08, 2016, 02:31 »

Пути Igors неисповедимы, но вот только он никогда не останавливается, пока не будет смешано минимум пять вопросов Веселый
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #13 : Февраль 08, 2016, 02:59 »

вот опять всплывают новые подробности Улыбающийся почему нельзя все это сразу написать?
Напомню стартовую формулировку
Выполняется пытон скрипт созданный др приложением. Если переменные с таким пытон-именем уже есть в моем приложении, то они возможно редактируются (меняются поля данных), иначе создаются новые переменные. Имена всех измененных переменных и полей известны.
Что же потом всплыло/утонуло? Улыбающийся По-моему ничего, просто дано больше подробностей/деталей, которые в стартовом посте были бы неуместны, длинные опусы обычно игнорируют.

может можно как-то сделать «слепок» состояния питона до запуска скрипта и откатиться к нему в случае отмены пользователем изменений, внесенных скриптом?
Это по-любому мне делать придется, пока не знаю как

тема уже начинает переходить в питонскую (автозамена исправила на «пижонскую» Улыбающийся ) специфику, не имеющую ничего общего с гуи.
Ну как сказать... Если бы UI удачно легло/вписалось, то это значило бы что и с архитектурой/постановкой все норм. А сейчас это не так

Достаточно будет таблицы с 3 столбиками:
Переменная - Старое значение - Новое значение

И кнопки Принять-Отменить. Все.
Негоже пользователю в детали вникать. Он либо принимает ВСЕ, либо НИЧЕГО. Иначе будут проблемы позже.
Пытон переменные тоже классы/объекты, отделаться 3 столбиками никак не удается, там не хилое дерево выходит.

Логика ВСЕ/НИЧЕГО смысл имеет, (типа "пакет или прошел - или нет"). Принимая "по частям" наживаем себе проблем с несовместимостью значений. Но тогда чего предъявлять новое/старое? "На посмотри (на огромное дерево) но ничего не делай"?

С др стороны вообще ничего не показывать, сразу вывалить Принять-Отменить - опять я буду виноват, сразу же вопрос "а что я должен "Принять"? Кота в мешке?
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #14 : Февраль 08, 2016, 08:15 »

А что это за параметры, которые могут создавать/модифицировать скрипты?
Можно их как-то визуализировать, показать на демонстрационной модели: было - стало?
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.144 секунд. Запросов: 22.