Вступление
Ищу какую-нибудь кроссплатформенную замену MDI. То есть, чтобы пользователь мог одновременно смотреть несколько документов, которые добавил. В wxPython есть свое MDI, но оно работает по назначению только в Windows и имеет ещё некоторые недостатки (проблема с меню на русском, например). Поэтому стал смотреть в сторону aui.
В aui есть связка: AuiMDIParentFrame + AuiMDIChildFrame, но оно тоже не работает как нужно. Например, метод Tile работает некорректно - делит окна не на цело (из трёх окон третье выбросит непонятно куда). И ещё есть некоторые недоразумения с автоматическим упорядочиванием окон.
Ок. Решил обойтись малым - wx.aui.AuiNotebook. Взял пример отсюда:
http://wiki.wxpython.org/AuiNotebook
Всё вроде бы красиво - хочешь используй блокнот, хочешь - вытащи отдельные страницы и смотри вместе. Но тут опять есть некоторые непонятности. Метод Split разделяет окна, но нигде нет упоминания как разделить окна на равные части.
Ну, ладно уж Split, он может и не потребуется, если пользователь сам будет располагать страницы вручную. Но нет чего-то вроде UnSplit. То есть метода, который возвратил бы блокнот в исходное состояние. А вот это уже наверняка может потребоваться.
Пока изобрел велосипед. Делаю UnSplit так: собираю в list ссылки на все окна блокнота и заголовки с помощью GetPage, GetPageText, затем удаляю все страницы по одной с помощью RemovePage и, наконец, вставляю все окна из листа. Работает, но видна работа этого велосипеда, если окон много.
Вопросы:
1. Какую кроссплатформенную замену MDI в wxWidgets можете посоветовать?
2. Есть ли у wx.aui.AuiNotebook какой-нибудь метод, возвращающий его в исходное блокнотное состояние?