лилия, походы

Случилось!

Не прошло и восьми лет и мы дождались! Выпущен wxWidgets 3.0.0 Release!

Вообще, конечно, печально: wxWidgets отличная библиотека с хорошим потенциалом, но очень уж мало народа над ней работает, не успевают они за современными тенденциями.

http://www.wxwidgets.org/downloads/#latest_stable

Update: Параллельно с релизом был обновлён роадмап:

Версию 3.2 планируется выпустить примерно через год-полтора. Основной вектор разработки для 3.2, внезапно, таки переработка wxAUI для поддержки плавающих вкладок (то, что много лет назад не смог сделать студент в рамках GSOC2009). Кроме того, отмечено прекращение поддержки Win9x и соответствующих компиллеров (MSVC6/7), а так же включение в trunk wxMaskedEdit, контекстно-зависимые переводы, "замороженные" строки и столбцы в wxGrid и улучшение поддержки модальных диалогов.
лилия, походы

2.9.3 Release

Вчера вышел очередной релиз тестовой ветки 2.9. Подробности на wxBlog http://wxwidgets.blogspot.com/2011/12/293-release-in-details.html

Заниматься обзором новшеств не буду, один фиг никто походу не читает. Но если кому-то это реально нужно - пишите в комментах, как появится время, попробую что-нибудь накидать.
лилия, походы

wxWidgets 2.9.2

Анонсирован очередной релиз тестовой ветки wxWidgets. Как обычно, представлено множество улучшений и никакой информации о выходе стабильной версии 3.0. В версию 2.9.2 вошли наработки GSoC2010, добавлено несколько новых классов в базовую и GUI подсистемы, а так же многочисленные изменения в существующих. Можно отметить следующие интересные улучшения:
- в функции wxExecute теперь можно задавать рабочую директорию и переменные окружения для запускаемого процесса;
- в функции BeforeFirst/BeforeLast добавлен аргумент rest возвращающий результат применения AfterFirst/AfterLast, что упрощает разбор строк по односимвольному токену;
- добавлен класс, позволяющий считывать и выводить числа с группированием цифр по тысячам, а так же валидаторы для работы с целыми и дробными числами;
- добавлен класс wxUIActionSimulator для имитации пользовательского ввода;
- в класс wxTextEntry добавлено динамическое автодополнение;
- в wxAUI реализована динамическая ориентация тулбаров, поддержка иконок в заголовках и настройка цветов активных и неактивных табов;
- добавлена поддержка CP-866 (кириллическая DOS кодировка) в wxEncodingConverter.
Полный ченджлог можно посмотреть здесь.

UPD 09.07.2011: как будто в ответ на это сообщение, на wxBlog вчера появилось сообщение от VZ с планом дальнейшего выпуска релизов. Итак, 2.9.3 планируется выпустить в сентябре после интеграции результатов GSoC2011 (ага, что-то такое мы в прошлом году уже читали...), в который, скорее всего не войдёт много чего из планируемого в 3.0, в связи с чем позже выйдет 2.9.4. Выход 3.0 планируется к середине декабря, но, скорее всего случится к середине 2012. Ну и как обычно, требуется помощь в тестировании, особенно на макоси/iOS и GTK3.
Mish

Утечка памяти?

Похоже, кроме меня, тут никого нет :)

Такой глупый вопрос - откуда в таком простом месте утечка памяти:

        for(vector<bmp>::iterator i = dir.begin(); i != dir.end(); ++i) // Список файлов изображений, bmp - моя структура, неважно
        {
            wxImage img(i->file);
            if (img.IsOk())
            {
                i->w = img.GetWidth();
                i->w = img.GetHeight();
            }
        }

Т.е. я просто, имея список, собираю размеры. Не очень-то эффективно (загружать весь рисунок), но как справиться иначе, особенно с разными форматами, не придумал.

Случайно, тестируя, натравил на каталог, где эти картинки лежат тысячами :( Ну, решил попробовать в экстремальных условиях. Но вскоре машина стала откровенно тормозить, а диспетчер задач показывать, что у меня этой программой съедено полтора гига памяти...

С чего бы? Или деструктора по умолчанию недостаточно? Или я что-то не так понимаю, как работает освобождение памяти? (Там не сборка мусора применяется?...)

И как корректно решить мою задачу, чтоб не влезать в такие вот неприятности?
UPD: Компилятор Open Watcom 1.9. Я тут его средствами heapwalk прошелся - новая информация к размышлению: использованная память стоит на месте, а вот свободная (но забранная программой) растет и растет... Т.е. какая-то хитрая дефрагментация, что ли?...

Mish

И снова здравствуйте! :)

Это опять я :)
Интересный момент попался. Работаю в DialogBlocks. Мне нужны в окне несколько одинаковых панелей, каковые я хочу сделать экземплярами одного класса, унаследованного от wxPanel. Вроде удалось - указав в первом его как внутреннюю реализацию (пусть генерирует сам...), а в остальных - как внешнюю. Немного пришлось пройтись напильником, чтобы при создании id разные передавать. Все компилируется, но при запуске в отладочном режиме дает предупреждение

assert "ClassTable->Get(m_ClassName) == NULL" failed in void wxClassInfo::Register(void)(): Class "PlotPanel" already in RTTI table - have you used IMPLEMENT_DYNAMIC_CLASS() multiple times or linked some object file twice?

Только ни IMPLEMENT_DYNAMIC_CLASS() дважды не использован, ни объектник дважды не линкуется - я проверял.

Характерно, что при запуске в Release режиме вроде работает, но при выходе процесс продолжает висеть и жрать процессорное время по полной программе...

Что это может быть? И как с ним побороться?
Mish

Как попроще вывести текст с индексами?

Добрый день!

Хочется как можно проще :) вывести что-то типа простенького HTML - например, строку вида

Результат расчета D<sub>i</sub> = 1.5

Ну, т.е. минимально - с индексами.

Static Text, понятно, не подходит. Пробовал wxHtmlWindow - вроде похоже на то, что мне надо, но не хочет русский выводить - сплошные кракозябры... Передавал ему строку типа

<html>
<head>
<meta http-equiv="Content-Type" content="text/html" charset="windows-1251">
</head>
<body>
<font face="Arial"><center>Вычисление D<sub>0</sub></center></font>
</body>
</html>

все равно кракозябры - не понимает, что это windows-1251...

Как вообще проще всего решить эту проблему?

Заранее спасибо за советы!
Mish

Как заставить работать обход TAB

Я тут не так давно спрашивал, как кое-что написать.
Написалось, работает, за что еще раз огромное спасибо - пожалуй, особенно за то, что натолкнули на мысль DialogBlocks попользовать.

Но! Заметил вдруг, что не могу работать без мыши - не работает обход по TAB. Пытался назначать/снимать wxTAB_TRAVERSAL - не помогает!

Угрохал весь сегодняшний день на понимание - не получается... Что я делаю не так? Ведь, похоже, мелочь какая-то, что обиднее всего...

Как корректно заставить обходить (потом будет вопрос - обходить только те контролы, что надо :))


Заранее спасибо за тыканье носом в нужное место...
работа, кошка

wxAndroid?

Неделю назад в wxBlog`е появилась заметка от VZ о мечтах на тему порта wx для мобильной платформы Android. Видимо, появление wxQT и активное развитие Android добавило ему изрядную дозу оптимизма на эту тему.
Суть в следующем: несмотря на то, что Android - это изначально целиком и полностью Java, Google довольно быстро был закидан тухлыми помидорами шапками и был вынужден ввести так называемый NDK - Native Development Kit, в рамках которого можно писать на нормальных языках, собирать в обычный нативный бинарник и потом вызывать всё это дело из Java-проги. Изначально NDK был предназначен только для реализации ресурсоёмких вычислений, но позже туда стали постепенно добавлять и прочий функционал, вплоть появления последнем релизе поддержки вывода GUI элементов (с помощью класса NativeActivity). Вадим утверждает, что хоть там и нет приличного API для вывода андроидного GUI, но можно попытаться получить доступ к классам Java API через JNI, либо реализовать хотя бы просто wxUnivesral с отрисовкой через OpenGL.
В общем, ищутся желающие по-сотрудничать над реализацией этой идеи.

ЗЫ: mzet82, не хочешь поучаствовать? =)
Mish

wxWidgets - изображения и контролы вместе: как правильно?

Вопрос к тем, у кого нераскрытые педагогические таланты :)

Сразу - в wxWidgets пока чайник. В C++ - вполне на уровне, если не трогать графические интерфейсы :)

Написана расчетная программа, но теперь ее надо срочно облагородить интерфейсом. Выбрал wxWidgets - ну, хотя бы потому, что все время с OW работаю.

Пока хочу простейшего - окно, в нем вывести считанное из файла изображение, обработать, построить несколько графиков. Тут же, в том же окне, потаскать слайдеры (выбор значений), отметить чекбоксы, нажать кнопку - запустить просчет, каковой выразится в изменении самой картинки и графиков.

Картинку вывожу через wxBitmap (wxDC.DrawBitmap()), вроде, без проблем (пока?). Графики строю тоже через функции DC. Все в методе wxFrame::OnPaint (прямо в окне).

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

Читал - если я правильно понимаю, надо копать в сторону wxPanel, Sizer или чего-то подобного. Но что-то никак не могу врубиться в идеологию :( Помогите умным словом и фрагментом кода попроще - как добиться размещения в одном окне рисованных изображений и размещения контролов. Масштабировать пока не хочу - и без того зашиваюсь. Пусть все будет на своих местах; лучше не давать окну свернуться меньше необходимого :)

Заранее спасибо за советы и пояснения.