LINUX.ORG.RU

Граф состояний в приложении на GTK

 , , ,


0

1

Приветствую, товарищи!

Пишу значит я на Python (хотя, думаю не суть) frontend к некоему подобию базы данных. Интерфейс рисую в Glade. Ничего особо сложного, просто множество списков свойств, полей ввода и т.п. Штука в том, что у формы есть состояния: просмотр, редактирование набора свойств A, редактирование набора свойств B и т.д. Они взаимоисключающие, переход между ними заключается в скрытии/отображении и активации/блокировании разных виджетов. Переход заключается в вызовах методов hide(), show(), set_sensitive(). И строчек таких вызовов получается около 300. Это немного, но и само приложение пока в состоянии прототипа. Потом элементов формы будет многократно больше.

Возможно ли состояния отрисовать в Glade, а потом переходить между ними одним вызовом с названием состояния?
Что-то я такого не нашёл.

★★★★★

велосипедишь state машину, затем педалишь код который исполняется при переходе от одного состояния к другому

затем спокойно меняешь эти состояния

reprimand ★★★★★
()
Последнее исправление: reprimand (всего исправлений: 1)
Ответ на: комментарий от reprimand

велосипедишь state машину, затем педалишь код

Я примерно к этому и иду, есть метод change_state() у родительского окна, который и делает всё штуки с show()/hide().
Я думал, может есть что-то готовое в GTK/Glade, чтобы сделать это визуально и сократить время тестирования.

ls-h ★★★★★
() автор топика
Ответ на: комментарий от ananas

GtkStack в качестве контейнера

Не, это не то. Не все виджеты надо скрывать, некоторые надо просто неактивными делать. Да и, в любом случае, придётся рисовать n наборов виджетов по числу состояний.

ls-h ★★★★★
() автор топика
Ответ на: комментарий от eternal_sorrow

почему бы не продублировать виджеты?

Я думаю, тогда им понадобятся разные идентификаторы и все версии надо будет заполнять данными. В результате кода будет только больше. А я хотел его наоборот сократить.

ls-h ★★★★★
() автор топика
Ответ на: комментарий от pon4ik

pon4ik прав,
в GTK ООП очень специфичный, нужно иметь очень веские основания для использования GTK

Serik
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.