Форматированный текст в контролах

March 7th, 2011 Begemot

Ура, приятная новость:  Markup in control labels. Меня эта возможность сильно порадовала в Qt когда я на нее перешел, теперь вот и в wxWidgets появляется что-то подобное, хотя конечно гораздо слабее чем в Qt, но все равно здорово. Правда не совсем понятно почему wxStaticText отстает от кнопки, но надеюсь сделают все хорошо в итоге:)


Еще про локализацию

January 6th, 2011 Begemot

Сделали мне тут арабскую локализацию для двух программ. Понравилось как красиво wxWidgets все это обработала. Или это Винда?

Flashnote-ar

Flashnote-options-ar

clipdiary-ar

Ориганалы можно посмотреть тут и тут.

Правда прикольно?:)


Готовь сани летом

September 4th, 2010 Begemot

Стукнуло мне что-то тут в голову изучить вопрос глобальной обработки ошибок – создания минидампа и т.д. Что бы если где-то что-то там у них того, можно было попросить информацию.

Про то что в wxWidgets есть родные средства  я знал, но хотелось полностью готового и универсального (я еще пишу на Qt и поддерживаю MFC) решения. Начал искать.

Сначала прочел все четыре части XCrashReport, поимел общее представление и даже нашел как прикрутить это дело к wxWidgets (пришлось заходить сзади). Но оказалось что ихний exe для отсылки информации, надо пересобирать, а сделать это в 2008 студии не представляется возможным с разумными усилиями. Автор уже давно в принципе сам все поправил и значительно улучшил, но теперь хочет за современную версию $80.

Решил выкинуть их ехе который занимается отправкой, и просто генерить файлы. Потом решил, что я вообще могу выкинуть почти весь их код и использовать стандартную MiniDumpWriteDump. И вот тут я наконец решил посмотреть что есть готового в wxWidgets.

Оказалось есть, и причем неплохое – wxDebugReport. Генерит минидамп, xml со вспомогательной информацией, позволяет включить другие файлы, показывает диалог и даже может вроде их куда-то аплоадить (не тестил), жаль только по е-майл не может послать, что плохо.

image

Документация понятная, есть самп – еще более понятный. Добавляется к себе это чудо парой строчек кода + функция генерации репорта, которую можно взять в сампле и доработать. В общем, пару часов и у вас как в лучших домах Лондона и Парижа.

Но за все надо платить, в данном случае цена – 300кб, для меня многовато, но фиг с ним.

Учтите что нужно добавить в проект либы wxmsw29u_qa.lib, wxbase29u_xml.lib и wxexpat.lib. Еще нужно включить генерацию map и pdb файлов для релизной версии программы. Эти файлы нужно хранить для каждого релиза, вы же конечно используете version contorol system?


wxPropertyGrid – довольно удобно

May 11th, 2010 Begemot

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

Теперь я нашел выход, делаем в опцию одну страницу Advanced, суем туда wxPropertyGrid, теперь отпадает проблема усложнения GUI кучей мелких опций. К тому же добавление новых настроек превращается в простой и быстрый процесс.

image


wxWidgets utils

March 16th, 2010 Begemot

 

А вы знаете про набор вспомогательных функций в wxWidgets? загляните, есть много полезного.

Posted in Использование | Tags:
Comments Off on wxWidgets utils


Облегчаем просмотр переменных в дебагере

December 23rd, 2009 Begemot

Надеюсь вы все читаете официальный wxBlog, даже не смотря на то что пишут туда редко и на английском. А если не читаете то вы сами себе злобные буратины. 🙂

Сегодня наткнулся там на полезнейшую информацию – от том как улучшить отображение wx типов в дебагере Visual Studio, в частности строк и многих других, теперь не обязательно “раскрывать” переменную в окне просмотра дебагера или во всплывающей подсказе, должно здорово экономить время. Подробнее Better display of wxTypes in MSVS debuggerBetter display of wxTypes in MSVS debugger.

Единственно что я этот код вставлял в самое начало секции [AutoExpand] так проще, не приходиться искать ее конец.

p.s А еще я знаю одну архиполезную фишку, я ее как раз сейчас тестирую, скоро расскажу 🙂


С иконками все хорошо :)

December 16th, 2009 Begemot

Я тут недавно обнаружил что MFC-визард создает неправильный код для работы с иконками и поэтому у меня в программе много лет была кривая иконка на самом видном месте. Решил проверить как дела в wxWidgets программах. Оказалось вариант

SetIcon

(wxICON(main)); // Give it an icon

Работает правильно – грузит как 32*32 так и 16*16 иконку из файла, так что можно не беспокоиться.

А возможность использовать png для меню\тулбаров – вообще просто супер.

Posted in Использование | Tags:
Comments Off on С иконками все хорошо :)


Между делом попробовал wxWidgets под Ubuntu

December 7th, 2009 Begemot

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

Поставил svn, выкачал trunk из репозитория, вспомнил о том, что как компилировать wxWidgets на линуксе я уже писал, по этой же инструкции собрал библиотеку, собрал пару примеров – clipboard, auidemo – и представляете себе, работает! 🙂

Правда, есть и плохой ньюанс, поработав несколько часов в линуксе, всерьоз задумался а стоит ли туда лезть и портировать свои утилиты, энтузиазма немного поубавилось…


CreateStdDialogButtonSizer упрошает жизнь

November 21st, 2009 Begemot

В догонку к последнему посту, нашел еще CreateStdDialogButtonSizer  (этот метод правда есть в документации). Но раньше я почему то создавал кнопки в диалогах, пусть и с использованием wxStdDialogButtonSizer, но в ручную. А теперь можно вместо 12 строчек кода, писать всего две

if (wxSizer * buttonSizer = CreateStdDialogButtonSizer(wxOK | wxCANCEL))
             topSizer->Add(buttonSizer, 0, wxEXPAND | wxALL, 10);

повышая качество и читаемость, ляпота 🙂

Posted in Использование | Tags:
Comments Off on CreateStdDialogButtonSizer упрошает жизнь


Zip-уем данные на лету

September 2nd, 2008 Begemot

Встроенные удобства это приятно!:)

Пишу данные в базу, возникла мысль что архивирование может быть очень кстати, попробывал – действительно стало лучше. Арихивирование благодаря встроенным средствам wxWidgets делается легко и быстро. Просто пропускаем данные через wxZlibOutputStream который архивирует\распаковывает на лету.
[sourcecode language=”cpp”]
void SavecbContentToStream(wxMemoryOutputStream &memout, bool zlib/*=false*/) const
{
scoped_ptr dos;
scoped_ptr zlibstr;

if(zlib)
{
zlibstr.reset(new wxZlibOutputStream(memout, -1, wxZLIB_GZIP));
dos.reset(new wxDataOutputStream (*zlibstr));
}
else
dos.reset(new wxDataOutputStream (memout));

// write some data …
*dos <<(wxUint16)1 <<(wxUint16)cbContent.size(); // ... } [/sourcecode] Функция записывает данные в переданный буфер с опциональным архивированием их.