{"action":"created","issue":{"url":"https://api.github.com/repos/Alexey-T/CudaText/issues/382","repository_url":"https://api.github.com/repos/Alexey-T/CudaText","labels_url":"https://api.github.com/repos/Alexey-T/CudaText/issues/382/labels{/name}","comments_url":"https://api.github.com/repos/Alexey-T/CudaText/issues/382/comments","events_url":"https://api.github.com/repos/Alexey-T/CudaText/issues/382/events","html_url":"https://github.com/Alexey-T/CudaText/issues/382","id":147334726,"number":382,"title":"(wish, API) dlg_custom: dont always hide dlg ","user":{"login":"kvichans","id":7419630,"avatar_url":"https://avatars.githubusercontent.com/u/7419630?v=3","gravatar_id":"","url":"https://api.github.com/users/kvichans","html_url":"https://github.com/kvichans","followers_url":"https://api.github.com/users/kvichans/followers","following_url":"https://api.github.com/users/kvichans/following{/other_user}","gists_url":"https://api.github.com/users/kvichans/gists{/gist_id}","starred_url":"https://api.github.com/users/kvichans/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kvichans/subscriptions","organizations_url":"https://api.github.com/users/kvichans/orgs","repos_url":"https://api.github.com/users/kvichans/repos","events_url":"https://api.github.com/users/kvichans/events{/privacy}","received_events_url":"https://api.github.com/users/kvichans/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2016-04-11T07:08:10Z","updated_at":"2016-04-13T17:54:24Z","closed_at":null,"body":"Сейчас диалоги, построенные на основе dlg_custom, **выглядят** хорошо - они практически не отличаются от типичных диалогов, созданных в других средах. Но впечатление портит их **поведение** - они *мелькают*! При каждом нажатии на кнопку, диалог исчезает и потом опять появляется.\r\nРанее я предлагал бороться с мельканиями через процедуры обратного вызова. Идея не нашла одобрения. \r\n\r\nНовая идея: \r\n- Дополнить список свойств  у кнопок `props` новым признаком \"НужноЛиПрятатьДиалог\". Умолчание \"Прятать\"\r\n- При клике на кнопку со свойством \"Не прятать\" диалог остается видимым, а из функции dlg_custom дополнительно возвращается id_dlg\r\n- Этот id_dlg использовать как новый параметр при вызове в dlg_custom\r\n  - либо чтобы продолжить общение с пользователем. \r\n  - либо чтобы спрятать диалог\r\n\r\nТут есть место для оптимизации. Если диалог при вызове в dlg_custom *уже виден*, то во многих (не во всех) случаях расстановку контролов и их статические свойства можно пропустить и обновить только динамические свойства: \r\n- тексты в edit\r\n- селекты в list/combo\r\n- галки в check\r\n\r\nНапример, такую оптимизацию можно сделать так\r\n- Добавить в вызов dlg_custom **два** новых параметра \r\n`dlg_custom(..., id_dlg='', dlg_act='')`\r\n- При id_dlg=='' работает прежний вызов, dlg_act игнорируется\r\n- При id_dlg, указывающем на уже отображенный диалог\r\n  - При dlg_act=='' диалог продолжает ожидать действий пользователя с неизмененными контролами\r\n  - При dlg_act=='hide' диалог прячется\r\n  - При dlg_act=='build' расстановка контролов выполняется заново \r\n  - При dlg_act=='vals' расстановка контролов пропускается, из параметра `text` используются только значения по ключу `vals` "},"comment":{"url":"https://api.github.com/repos/Alexey-T/CudaText/issues/comments/209566402","html_url":"https://github.com/Alexey-T/CudaText/issues/382#issuecomment-209566402","issue_url":"https://api.github.com/repos/Alexey-T/CudaText/issues/382","id":209566402,"user":{"login":"Alexey-T","id":4154978,"avatar_url":"https://avatars.githubusercontent.com/u/4154978?v=3","gravatar_id":"","url":"https://api.github.com/users/Alexey-T","html_url":"https://github.com/Alexey-T","followers_url":"https://api.github.com/users/Alexey-T/followers","following_url":"https://api.github.com/users/Alexey-T/following{/other_user}","gists_url":"https://api.github.com/users/Alexey-T/gists{/gist_id}","starred_url":"https://api.github.com/users/Alexey-T/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Alexey-T/subscriptions","organizations_url":"https://api.github.com/users/Alexey-T/orgs","repos_url":"https://api.github.com/users/Alexey-T/repos","events_url":"https://api.github.com/users/Alexey-T/events{/privacy}","received_events_url":"https://api.github.com/users/Alexey-T/received_events","type":"User","site_admin":false},"created_at":"2016-04-13T17:54:24Z","updated_at":"2016-04-13T17:54:24Z","body":"нет, Все это оч сложно, и реализация и придумывать чтото надо, сори."}}