Oбщее

SVN или стабильная версия, что выбрать?

May 28th, 2009 Begemot

Прежде чем устанавливать и собирать wxWidgets, неплохо бы решить что именно ставить:) Я всегда пользовался стабильными версиями – качал архив с исходниками и собирал их. После последней проблемы, когда в стабильной версии был сломан html, я задумался.

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

В общем, выкачал себе версию из репозитория, скомпилил, собрал свой софт – вроде все ок. Если посмотреть в changelog то с момента выпуска 2.8.10 – коммитов довольно много.

Если кому интересно ссылки для wxWidgets 2.8.10:

Posted in Oбщее | Tags:
Comments Off on SVN или стабильная версия, что выбрать?


Иногда вещи не такие как кажутся, про SetFocus()

April 29th, 2009 Begemot

Как оказывается SetFocus(),  не всегда делает то что можно от него ожидать не читая для докумментацию:) Для wxWindow все ок:

This sets the window to receive keyboard input.

А вот для wxPanel ситуация совсем другая:

Overrides wxWindow::SetFocus. This method uses the (undocumented) mix-in class wxControlContainer which manages the focus and TAB logic for controls which usually have child controls. In practice, if you call this method and the control has at least one child window, the focus will be given to the child window.

А то что надо,  делает  SetFocusIgnoringChildren()

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


Цыплят по осени считают

April 22nd, 2009 Begemot

Меня тут порадовали,  оказывается в  Google Summer of Code приняли все три проекта для wxWidget – File-System Changes Notification SupportwxAUI Enchancements и, возможно самое вкусное, wxWidgets Ribbon-bar component.

Впечатлиться будущим риббоном можно по ссылке.


Слушайте свою интуиции

March 30th, 2009 Begemot

Что отличает опытного разработчика от новичка? Правильно – хорошая интуиция 🙂

Только что ситуация на работе – надо написать сохранение проектов с которыми работает программа в базу данных. Как это все должно выглядеть обсудили еще в пятницу, начальник набросал табличку в которой все должно хранится. Я с утра сел – казалось бы куда проще – заимплементить дамп в бд, нескольких классов, учитывая что структура уже придумана и основной код сохранения в хмл написан.

Не работает, падает на pDB->PrepareStatement(…), убил 20 минут перепроверяя свои знания SQL, правильность написания полей и т.д. – все правильно, но не работает. Оказалось, что ему не нравится что одно из полей таблицы названо “Index”.  Не знаю в чем трабла в SQLite или в используемом враппере wxSqlite3, или еще в чем… но факт что падает на строке

st = pDB->PrepareStatement(_T(“INSERT INTO MMFrames (ProjectID, Index,  Type, Properties) VALUES (?, ?, ?, ?);”));

Пришлось переименовывать поле в таблице.

А весь юмор ситуации в том что, когда создавал бд – я подумал что лучше вместо Index назвать поле Position. Но решил что раз начальник написал Index, пусть так и будет. Потом подумал, что это поле вообще тут не нужно и хотел его удалить, но опять же решил оставить, раз на бумажке есть. Вообщем доверяйте своей интуиции.


Дамп суматошных мыслей, чтобы что-нибудь написать

March 19th, 2009 Begemot

Давно не ничего писал,  нет времени – месяц работал, потом 2 недели разгребал завалы дома, сейчас опять работаю. Так занят что и программировать некогда:)

На работе пишу гуи к программе на wxWidgets, собирал программу на линуксе – забавно, собирается и запускается, правда часто падает:) Видел живой mac-mini и XCode, программировал под него, и даже исправил часть багов.

Кое-чему научился, теперь я знаю что оконные обьекты нельзя удалять используя wxDELETE(), надо обязательно делать destroy(), кто бы мог подумать?:) Еще, я теперь почти как истинный хакер которых показывают в фильмах, уверено набираю cd xxx/xxx configure make. Узнал для чего нужен cmake, жаль только мне дома, как одиночке, это практически бесполезно.

Самое главное – я видел программу которая, запускается из одних сорцов на винде, маке и  линуксе! И даже писал ее. Теперь я настоящий кроссплатформенный программист:)

P.S. ну и добавлю чуточку полезного  – The latest stable release in the 2.8  – wxWidgets 2.8.10 Released, позавчера.


wxWidgets vs QT

January 31st, 2009 Begemot

Ну вот прошло две недели после новости про qt lgpl, страсти вокруг открывающихся перспектив кажется немного поутихли. Я тоже вроде немого остыл. Первое мысль была что делать – говорят Qt лучше начинать что ли ее осваивать – с одной стороны заманичиво, с другой стороны придется все начинать с нуля, а осваиваю я крайне медленно:) Тем не менее желание было, что называется загорелся. Даже скачал саму библиотеку, кучу книжек к ней, позаносил в закладки сайты…

Больше всего меня растроило и убедило думать о смене библиотеке,  то что даже люди которых я считал чуть ли не апологетами wxWidgets в рунете – в один голос сказали что QT все-таки продвинутее и надо переходить на нее:(

Но несмотря на все хвалебные диферамбы в адресс qt у нее есть пару минусов, первое что мне очень не нравится это не-нативность контролов – я сам сейчас пытаюсь привыкнуть к KVirc  и кривость поведения обычных едит-боксов уже не раз заставляла меня вспоминать разработчиков, их родственников по женской линии и кривость рук. Окончательно меня добил пост на rsdn

Я после того, как пришлось несколько лет назад портировать продукты на Mac от QT плююсь. И не потому, что либа плохая, как раз наоборот — программировать приятно и удобно. Потому ее и выбрал ( ага, на безрыбье-то  ) Но… Пользователи ее терпеть не могут. Точнее то, как при ее использовании выглядит продукт. А выглядит он нестандартно и работает тоже нестандартно. Мелочей подобных описанным выше навалом  ! В итоге mac-пользователи мягко говоря разочаровываются. И высказывают это свое разочарование на форумах в духе “Ну не знаю… может где-то оно и нормально работает, но вот на mac это дерьмо дерьмом и пользоваться нормально невозможно”. Ну нафиг мне такое счастье, я лучше GUI отдельно напишу, значительно дешевле выходит в итоге.

Кстати, почему-то широко распространено мнение, что Opera на QT написана. Так вот, нифига подобного! Точнее уже нифига подобного, они QT они отказались еще в 2003, бо как столкнулись с точно такими же проблемами.

Я уже было решил потренироватся на кошках, в смысле не проекте который не включает стандартное гуи, а как раз наоборот требует универсального и одинакового custom draw look. Но тут вылез второй большой минус (имхо) насколько я понял маленькие приложения и qt понятия диаметрально противоположные.  Еще одна цитата  с rdsdn

А>Есть некое приложение для конечного клиента, которое использует динамическую линковку с библиотеками Qt.
А>Сами библиотеки не маленькие, а вместе с приложением, прямо скажем, довольно большенькие…

Собирал qt 4.4.3 с выключенными rtti, exceptions, accessibility(интересно, кто нибудь использует эту красоту?), qt3support.

Резльтат по размеру —
hello world статически слинкованный пример с одним виджетом, — 6.02 Мб, зависимость только от системных библиотек windows.
Он же запакованный — 2.8 метра.

Почему-то не собирались примеры с веб китом… Постоянно показывались ошибки линковки на классы, экспортируемые из QtWebKit, хотя сам libQtWebKit.a собрался.

Вообщем пока наверное я отложу идею в сторону. Тем более с LGPL тоже имхо вопрос пока в воздухе, в существующей бета версии есть только либы для GCC, но нет для майкросовтовского компилятора, просто не сделали или тут есть глубокий смысл пока остается только гадать.


Codelite альтернатива Code::Block

November 23rd, 2008 Begemot

Видели Codelite? CodeLite is a powerful open-source, cross platform IDE for the C/C++ programming languages 

Я еще не ставил, весь в делах, только скачал пока. Но судя по скриншотам на сайте и демки, выглядит более чем приятно. Аж не верится:) Неужели она на самом деле окажется вполне рабочей.

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

Open source,  GPL, Windows\Linux\MAC OS, как я понял заточена под работу с wxWidgets. Написана на ней же, исходники доступны – сами будете виноваты если не скачаете.

Кто первый потестить, отписывайтесь:)


Напишите кто-нибудь нормальное меню

October 15th, 2008 Begemot

+С грустью приходится отметить что в нормальное меню  в wx не завозили:(

А хотелось бы иметь нормальное красивое owner-draw меню, и даже не надо кучи наворотов типа стилей офиса 2003, офиса xp и тд. Просто приятный градиентик сбоку, нормальная прорисовка чекбоксов, возможность задать дисейбленный рисунок… и конечно обязательно нормальное поведение, не хуже системного.

Вот для MFC такое есть.

Напишите кто-нибудь, а ?:)


С думами про MACOS

October 13th, 2008 Begemot

Если пишите на wxWidgets, то наверняка думаете\собираетесь\хотите воспользоватся радостями кроссплатформенности, другими словами портировать приложения на другие платформы. Если среди них есть MAC OS, то можете глянуть на блог посвященный программированию на Python и Objective-C в Mac OS.

Блог про ipod, python и  Objective-C,  не про wxWidgets, но можно найти  и полезную теоретическую информацию. Например про хранение и доступ к настройкам приложения или про Локализация приложений в Mac OS.

Я пока под мак не пишу, но собираюсь, так что закинул в закладки.

Posted in Oбщее | Tags: ,
Comments Off on С думами про MACOS


Не показывается tooltips под Windows 2000

September 3rd, 2008 Begemot

Баги + плохая память = даром потраченное время  и нервы. Не совсем про wxWidgets, но может кому полезно будет.

Собираю вчера альфу для своих, типа наконец дожил – радуюсь. Ставлю жене на машину и тут облом, не работают тултипсы. Код на винапи, перетащил со старой программы на мфц и вставил с минимальными правками.  Под ХП все работает, под Windows 2000 не показывается tooltips.

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

Исправил проблемное место в этом коде – не помогло, исправил попутно еще два бага в программе никак не связанных с этим. Самое обидное что в старой версии программы (mfc) этот код работает, в новой(wxwidgets) уже нет.

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

Вот строчка которую я нашел:

[sourcecode language=”cpp”]
ZeroMemory(&ti, sizeof(TOOLINFO));
//ti.cbSize = sizeof(TOOLINFO);
// Я знаю что тут должно быть sizeof(TOOLINFO) =48, но при числах более 44 оно не показывает подсказку – под win2K, похоже только в юникоде
ti.cbSize = 44;
[/sourcecode]

Глюк этот похоже появлятся только в юникодных версиях программ под Windows 2000 – tooltip создается, но не появляется на экране. Решается вот таким грязным хаком.

Шаманство.

Posted in Oбщее
Comments Off on Не показывается tooltips под Windows 2000