createBody
I create the tree, give it a bunch of nodes in a hierarchy and add it to a layout, all works as expected. During execution of the application however, I cannot seem to add new TreeItems. I gain access to either the root or one of the TreeItems, and add a node in the normal way using either items.newChild
or newChild
, but it does not render. I can tell via the keyboard navigation and events that the new node does actually exist, but it is not rendered to the screen. I have tried every combination I can think of to do with invalidate() and requestLayout() up the widget tree, expanding / collapsing things, but nothing seems to change this behaviour. Any clues on how to debug this? am I missing something silly? it is very frustrating now! Thanks! :)
Здравствуйте, все! Здравствуйте, Вадим!
Пишет вам Навадвипа Чандра дас.
Написал программу "Конвертилка-переводчик Прабхупада" на языке D с использованием DLangUI.
Библиотека DLangUI хорошая, спасибо!
Вот запуск программы:
$ dub fetch prabhupada_calendar
$ dub run prabhupada_calendar
Увидел недочеты DLangUI, возможно кое где я недосмотрел:
Для заголовков окон нет UIString, хотя такую строку можно хранить в окне (или никак не прикрутить?) и при смене языка менять и заголовок. Пришлось эту ситуацию обрабатывать вручную, а заголовок окна выбора файлов и вовсе не менялся.
TextWidget для UIString не предусматривает работу с многострочными метками. Хорошо бы перед отображением метки производить замену определенных управляющих символов на сивол перевода строки "\n" .
Поля ввода текста, такие как EditLine, FileNameEditLine передают фокус следующему элементу при нажатии клавиши Tab, вот при нажатии клавиши Shift+Tab фокус ввода предыдущему элементу не передается!
TreeWidget захватывает фокус и не передает его по клавише Tab. Это видно в окне "DLangIDE настройки".
При получении фокуса выпадающий список ComboBox можно раскрыть при помощи клавиш пробела или Enter (хотя в Windows была клавиша для этого Alt+"Стрелка вниз") и выбрать нужное значение при помощи тех же клавиш. Но вот после выбора значения, фокус ввода уже не передается обратно выпадающему списку ComboBox, фокус никому не передается и как следствие при помощи клавиши Tab перемещаться по контролам уже нельзя, надо браться за мышь.
Не нашел никакой возможности для приема фокуса закладками компонента TabWidget, с последующим их переключением при помощи стрелок. В Борланд Дельфи такая возможность была. Правда заработали клавиши Ctrl+Tab и Shift+Ctrl+Tab для перемещения по вкладкам, спасибо!
В полях ввода FileNameEditLine не работаю клавиши Ctrl+C и Ctrl+V. Вместо них работают Ctrl+Insert и Shift+Insert (система Fedora 26 64 бита).
В диалоге выбора файла нет возможности показа скрытых файлов! Есть менюшка "Показать в файловом менеджере", самое место рядом флажку - "Показывать скрытые файлы".
Что-то не работает открытие сайта для меток UrlImageTextButton. Непонятно, что сделано не так:
АдресНижнейНавадвипыанглийскими_буквами = new UrlImageTextButton( null, "nizhnyaya-navadvipa.ru"d, "http://nizhnyaya-navadvipa.ru/"c );
Очень неприятный и пугающий момент. При выборе файла при помощи диалога выбора файлов компонента FileNameEditLine двойным щелчком, после выбора файла дополнительно нажимаются кнопки, флажки, радиокнопки - все что было внизу по мышью! Такое впечатление, что событие двойного щелчка не останавливается после выбора файла, а передается далее нижележащему окну!
В полях ввода EditLine, FileNameEditLine нет возможности прокрутки текста при помощи мыши, соответсвенно нельзя пометить мышью длинный текст. Хотя при помощи стрелочек текст прокручивается хорошо и при нажатии клавиши Shift можно выделить длинный текст.
При выходе из программы:
017-11-08 20:56:23.010 E Resource leak: destroying resource while shutdown! dlangui.widgets.controls.TextWidget
Откуда утечка? Никаких особых выкрутасов я не делаю.
Функция Log.d( ... ) очень полезная! Спасибо, Вадим! Но вот при релизе остается вызов пустой функции, который оптимизатор может уберет, а может не уберет. А вот если бы Log.d возвращал бы не void, а bool со значением true, можно было бы писать assert( Log.d( ... ) ); assert то гарантировано не попадает в релиз.
Спасибо!
С уважением Навадвипа Чандра дас.