Как возобновить рабочий процесс программы в нужном месте после отклика диалога? - PullRequest
0 голосов
/ 26 июня 2011

Программа, которую я пишу, может редактировать один проект за раз. Это означает, что открытие нового файла / проекта подразумевает закрытие предыдущего. Теперь я хочу добиться следующего рабочего процесса:

  1. У пользователя есть незафиксированные изменения в проекте, который он ранее никогда не сохранял, поэтому у проекта еще нет имени файла.
  2. Пользователь нажимает «открыть сохраненный проект».
  3. Появляется диалоговое окно «A», в котором говорится: «В вашем текущем проекте есть незафиксированные изменения, что бы вы хотели сделать? Прервать работу нового проекта, отменить изменения в текущем проекте или сохранить их?».
  4. Пользователь выбирает диалог "Сохранить".
  5. Диалог А закрывается.
  6. Появляется диалоговое окно B1 (средство выбора файлов, настроенное для операции сохранения).
  7. Пользователь выбирает имя файла для сохранения проекта.
  8. Диалог B1 закрывается, проект сохраняется.
  9. Всплывающее диалоговое окно B2 (тот же самый выбор файла, но настроенный для операции загрузки).
  10. Пользователь выбирает файл для открытия.
  11. Диалог B2 закрывается, проект загружается.

Таким образом, в приведенном выше примере шаги с 3 по 8 являются своего рода «прерыванием» в очевидном рабочем процессе открытия сохраненного проекта, поэтому, когда открываются диалоги A и B1, очевидный рабочий процесс останавливается и возобновляется, когда на эти диалоги отвечают.

У меня вопрос: как реализовать этот механизм остановки / возобновления нормального потока операций? До сих пор я реализовал это через стек, в котором - каждый раз, когда я открываю всплывающее диалоговое окно, - я нажимаю «обратный вызов возобновления отсюда», и каждый раз, когда я отвечаю, я извлекаю обратный вызов из.

... все же кажется, что у меня очень распространенный сценарий, для которого должен быть более простой метод (возможно, особая функция PyGTK!).

Большое спасибо заранее за вашу помощь / время!

1 Ответ

2 голосов
/ 26 июня 2011

Будет ли GtkDialog.run() метод, который вам нужен? Вы «запускаете» диалоговое окно в том месте, где вам нужно спросить пользователя, и когда оно возвращается, у вас есть ответ.

...