Russian Qt Forum
Май 06, 2024, 05:30
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Показать новые/измененные данные
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Показать новые/измененные данные (Прочитано 8079 раз)
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Показать новые/измененные данные
«
:
Февраль 06, 2016, 14:21 »
Добрый день
Выполняется пытон скрипт созданный др приложением. Если переменные с таким пытон-именем уже есть в моем приложении, то они возможно редактируются (меняются поля данных), иначе создаются новые переменные. Имена всех измененных переменных и полей известны.
После того как скрипт отработал как удачно/лаконично показать юзеру что "это изменено - а это добавлено" с тем чтобы он мог принять или отменить рез-ты скрипта?
Спасибо
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4727
Re: Показать новые/измененные данные
«
Ответ #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
Сообщений: 11445
Re: Показать новые/измененные данные
«
Ответ #2 :
Февраль 06, 2016, 16:00 »
Цитата: kambala от Февраль 06, 2016, 15:40
например, банально табличкой: переменная — старое значение (если переменная новая, пусто или not existed) — новое
Разумно. Но тогда надо и редактировать давать, каким образом? Др совами что юзер должен сделать чтобы "принять новое" или "оставить старое"? И где/как будет видно принято/оставлено?
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4727
Re: Показать новые/измененные данные
«
Ответ #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
Сообщений: 11445
Re: Показать новые/измененные данные
«
Ответ #4 :
Февраль 07, 2016, 06:44 »
Цитата: kambala от Февраль 06, 2016, 16:49
кнопочками 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
Сообщений: 4727
Re: Показать новые/измененные данные
«
Ответ #5 :
Февраль 07, 2016, 13:57 »
изначально речь шла о том, чтобы показать результаты скрипта и сохранить/отменить их — табличка с двумя кнопками.
дальше уже вылезло требование редактируемости результатов — ну ок, разрешаем редактирование столбца. обойтись можно и без чекбоксов в общем-то: просто смотреть было ли изменение значения, предоставленного скриптом (зависит от задачи).
теперь уже оказывается, что человек понятия не имеет о том, что там в скрипте происходит — тогда смысл ему вообще что-либо показывать? отработал скрипт, сразу применили изменения, юзер смотрит на визуальный результат: нравится — радуется, не нравится — жмет undo.
Цитата: Igors от Февраль 07, 2016, 06:44
что юзер будет делать с "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
Гость
Re: Показать новые/измененные данные
«
Ответ #6 :
Февраль 07, 2016, 14:46 »
Вместо всей это мутотени написать табличку "Переменные были изменены. Откатить?" Да/Нет
PS Igors не воспринимай несерьёзно, это реально решение всех твоих проблем. В каждой теме одно и то же, многосоставная жалоба на плохое чтение твоих мыслей
«
Последнее редактирование: Февраль 07, 2016, 14:49 от Bepec
»
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Показать новые/измененные данные
«
Ответ #7 :
Февраль 07, 2016, 16:08 »
Цитата: kambala от Февраль 07, 2016, 13:57
можно ввести какой-то description питоновским переменным, чтоб юзер мог понять их назначение.
имеются (в самой либе)
Цитата: kambala от Февраль 07, 2016, 13:57
изначально речь шла ...
...
дальше уже вылезло требование редактируемости результатов ..
..
теперь уже оказывается, ..
Это нормальный процесс для любой приличной задачи. Если "все ясно" то и обсуждать нечего.
Требований пока никто не предъявляет, хочу редактирую - хочу нет, я решаю. Но надо сделать чтобы юзеру было удобно, и чтобы это место не пришлось переделывать.
Тут вот думаю - а что собсно делать для простейшего Cancel (когда скрипт уже был). Не только юзер, но и я не знаю что может быть в скрипте - на то он и скрипт, типа "в этом его сила". Это я так смело сказал "могу пробежаться". Но там писать немало, а главное - пробежка ничего не гарантирует. Переменные созданные в скрипте продолжают жить в пытоне, и хз что он там создаст. Как-то чистить пытоновский словарь - пару лет назад делал, там засада, пытон не удалит если на переменную есть ссылка. Как-то "грохнуть все" - ну в приложении это есть, по исходникам может и разберусь. Но тогда надо перегрузить свои данные (что были до скрипта), а это потянет загрузку файлов (ох многих). Не слабый получится "Cancel"
Мдаа.... не мала баба клопоту - купила питоновське порося
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4727
Re: Показать новые/измененные данные
«
Ответ #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
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: Показать новые/измененные данные
«
Ответ #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
Гость
Re: Показать новые/измененные данные
«
Ответ #10 :
Февраль 07, 2016, 23:42 »
Сча вылезет проблема количества переменных. ведь после допустим запуска 5 скриптов их может быть более сотни/тысячи. Как же бедный пользователь будет их смотреть?
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: Показать новые/измененные данные
«
Ответ #11 :
Февраль 08, 2016, 00:47 »
Цитата: Bepec от Февраль 07, 2016, 23:42
Сча вылезет проблема количества переменных. ведь после допустим запуска 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
Гость
Re: Показать новые/измененные данные
«
Ответ #12 :
Февраль 08, 2016, 02:31 »
Пути Igors неисповедимы, но вот только он никогда не останавливается, пока не будет смешано минимум пять вопросов
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Показать новые/измененные данные
«
Ответ #13 :
Февраль 08, 2016, 02:59 »
Цитата: kambala от Февраль 07, 2016, 18:19
вот опять всплывают новые подробности
почему нельзя все это сразу написать?
Напомню стартовую формулировку
Цитата: Igors от Февраль 06, 2016, 14:21
Выполняется пытон скрипт созданный др приложением. Если переменные с таким пытон-именем уже есть в моем приложении, то они возможно редактируются (меняются поля данных), иначе создаются новые переменные. Имена всех измененных переменных и полей известны.
Что же потом всплыло/утонуло?
По-моему ничего, просто дано больше подробностей/деталей, которые в стартовом посте были бы неуместны, длинные опусы обычно игнорируют.
Цитата: kambala от Февраль 07, 2016, 18:19
может можно как-то сделать «слепок» состояния питона до запуска скрипта и откатиться к нему в случае отмены пользователем изменений, внесенных скриптом?
Это по-любому мне делать придется, пока не знаю как
Цитата: kambala от Февраль 07, 2016, 18:19
тема уже начинает переходить в питонскую (автозамена исправила на «пижонскую»
) специфику, не имеющую ничего общего с гуи.
Ну как сказать... Если бы UI удачно легло/вписалось, то это значило бы что и с архитектурой/постановкой все норм. А сейчас это не так
Цитата: Racheengel от Февраль 07, 2016, 18:39
Достаточно будет таблицы с 3 столбиками:
Переменная - Старое значение - Новое значение
И кнопки Принять-Отменить. Все.
Негоже пользователю в детали вникать. Он либо принимает ВСЕ, либо НИЧЕГО. Иначе будут проблемы позже.
Пытон переменные тоже классы/объекты, отделаться 3 столбиками никак не удается, там не хилое дерево выходит.
Логика ВСЕ/НИЧЕГО смысл имеет, (типа "пакет или прошел - или нет"). Принимая "по частям" наживаем себе проблем с несовместимостью значений. Но тогда чего предъявлять новое/старое? "На посмотри (на огромное дерево) но ничего не делай"?
С др стороны вообще ничего не показывать, сразу вывалить Принять-Отменить - опять я буду виноват, сразу же вопрос "а что я должен "Принять"? Кота в мешке?
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4349
Re: Показать новые/измененные данные
«
Ответ #14 :
Февраль 08, 2016, 08:15 »
А что это за параметры, которые могут создавать/модифицировать скрипты?
Можно их как-то визуализировать, показать на демонстрационной модели: было - стало?
Записан
Страниц: [
1
]
2
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...