Новый блог про разработку для мобильных устройств

August 4th, 2008 Begemot

T-Rex оказывает разродился новым блогом про разработку под мобильные устройства, если я правильно понимаю то упор будет сделан на разработку с использованием wxWidgets, что не может не радовать:)

Уже есть пару полезных материалов, по крайней мере, про сборку SQLite для   Windows Mobile мне бы скоро пришлось у него спрашивать:)

Так что добавляйте в свои ридеры.


Если пост полезен для вас вы можете подписаться на RSS или мы можем доставлять вам новые посты прямо в ваш почтовый ящик.


MiniFrame Looks Terrible in Gnome

August 2nd, 2008 Begemot

If you ever want to create a cross-platform program with an interface similar to Photoshop’s, i.e. using palettes with different tools, don’t use wxWidgets. The only thing that comes close to that sort of palette is wx’s MiniFrame, which can only minimize / iconize on Windows. In GNOME, the MiniFrame looks terrible, especially with Compiz enabled. It cannot be….

http://gayhacker.wordpress.com/2008/07/11/the-wxminiframe-problem/


Если пост полезен для вас вы можете подписаться на RSS или мы можем доставлять вам новые посты прямо в ваш почтовый ящик.


Переведенные главы книжки по программированию на wxWidgets

July 22nd, 2008 Begemot

В продолжение разговор про перевод книги Cross-Platform GUI Programming with wxWidgets By Julian Smart, Kevin Hock, Stefan Csomor. Несколько глав уже переведенны и выложенны  у T-Rexa, но там ссылки на pdf файлы ведут на депозитфайлс, с которого качать более чем гемморойно. Поэтому по взаимной договоренности, я дублирую их на своем хостинге.

Итак переведенные главы:

 


Если пост полезен для вас вы можете подписаться на RSS или мы можем доставлять вам новые посты прямо в ваш почтовый ящик.


Перевод Книги по wxWidgets

July 20th, 2008 Begemot

Вот странное все-таки существо человек:) Еще надавно я жаловался что я плохо работаю, занимаюсь чем угодно, но только не тем основным проектом которым надо и спрашивал у психолога что делать, И вот на тебе, на фоне всего этого, да еще и лета с его жарой, ленью и разъездами, я, мечтая убить кучу лишних полумертвых проектов которые я повешал себе на шею, ввязываюсь в новую “авантюру” –принимаю предложение Алексея помочь ему с переводом книги по программированию на wxWidgets - Cross-Platform GUI Programming with wxWidgets. И это при том что я ни разу не переводчик, и даже не чувак хорошо знающий английский или русский языки:)

Часть книги уже переведенна Алексеем, остальное сейчас в переводе. Теперь переводят уже целых два переводчика, так что дело должно пойти быстрее. Вот бы только лето кончилось:) Ждите.


Если пост полезен для вас вы можете подписаться на RSS или мы можем доставлять вам новые посты прямо в ваш почтовый ящик.


Явно Устанавливайте Имя Приложения: SetAppName

July 18th, 2008 Begemot

При тестировании новой версии программы, наткнулся на странное поведение. Если Cпереименовать .ехе – она забывает все свои настройки. Казалось бы странно, а на самом деле доку читать надо было внимательнее.

Настройки я храню, в конфиг файле

dataPath = wxStandardPaths().GetUserDataDir() + wxFileName::GetPathSeparator(); //стандартная папка с данным /application data/..

Но GetUserDataDir возвращает папку основываясь на AppName. Если вы не задаете его явно, то это имя ехе файла…

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

Но если это вам не надо, возьмите за правило в самом-самом начале программы использовать:


SetAppName(wxT("YourAppName")); //before GetUserDataDir()
SetVendorName(wxT("YourVendorName"));

Как бонус потом можете использовать в коде wxGetApp().GetAppName(), wxGetApp().GetVendorName() , повышая переносимость кода.


Если пост полезен для вас вы можете подписаться на RSS или мы можем доставлять вам новые посты прямо в ваш почтовый ящик.


Кто украл Set/KillFocus?

July 17th, 2008 Begemot

Добавил 

EVT_KILL_FOCUS(MainFrame::OnKillFocus)

EVT_SET_FOCUS(MainFrame::OnKillFocus)

Не приходят, вообще. Приложение с AUI. Куда копать?


Если пост полезен для вас вы можете подписаться на RSS или мы можем доставлять вам новые посты прямо в ваш почтовый ящик.


Теперь про wxWidgets будет тут

July 16th, 2008 Begemot

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


Если пост полезен для вас вы можете подписаться на RSS или мы можем доставлять вам новые посты прямо в ваш почтовый ящик.


Достало восстанавления лайота в AUI

July 9th, 2008 Begemot

Как же меня достал механизм восстанавления лайота в AUI, который не может отследить ситуацию что реальный лайот  у нас поменялся (добавился новый элемент), и все косячит:(


Если пост полезен для вас вы можете подписаться на RSS или мы можем доставлять вам новые посты прямо в ваш почтовый ящик.


wxMenu с иконками и обход выделенных атемов в wxListCtrl

June 16th, 2008 Begemot

Пара маленьких функий, может кому пригодится.

Был удивлен что у wxMenu::Append нету для добавления меню с картинками. Пришлось писать самому

wxMenuItem * MainFrame::AppendMenuItemWithImage(wxMenu* parentMenu,

int id, const wxString& text, const wxString& helpString, const wxBitmap& checked, const wxBitmap& unchecked, wxItemKind kind, wxMenu* subMenu)

{

wxMenuItem* menuItem =

new wxMenuItem(parentMenu, id, text, helpString, kind, subMenu);

menuItem->SetBitmaps(checked, unchecked);

parentMenu->Append(menuItem);

return menuItem;

}

Использование:

wxMenu* itemMenu = new wxMenu;

AppendMenuItemWithImage(itemMenu, ID_HIDE, _(“&Hide In Tray\tEsc”), _T(“”), wxBitmap(hide_xpm));

AppendMenuItemWithImage(itemMenu, wxID_EXIT, _(“E&xit\tAlt-x”), _T(“”), wxBitmap(exit_xpm));

menuBar->Append(itemMenu, _(“&File”));


И еще один маленький хелпер для удобной работы  с выделенными айтемами в wxListCtrl:

vector<

long> MainFrame::GetListCtrlItems(const wxListCtrl * lcont, int state /*= wxLIST_STATE_DONTCARE*/, int geometry /*= wxLIST_NEXT_ALL*/, long item/*=-1*/)

{

vector<

long> items;

items.resize(lcont->GetSelectedItemCount());

// надеюсь так быстрее чем push_back

long ind=0;

do

{

item= lcont->GetNextItem(item, geometry, state);

if (item!=-1) items[ind++]=item; //items.push_back(item);

}

while( item != -1 );

return items;

}

Использование:

vector<

long> items=GetListCtrlItems(m_listFormat, wxLIST_STATE_SELECTED);

BOOST_FOREACH(

long item, items)

{

str+=m_listFormat->GetItemText(item)+wxT(

“\n”);

}

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


Если пост полезен для вас вы можете подписаться на RSS или мы можем доставлять вам новые посты прямо в ваш почтовый ящик.


А счастье казалось так возможно с EVT_CHAR_HOOK

May 30th, 2008 Begemot

Так я думал когда увидел в wx-mail-list упоминание EVT_CHAR_HOOK. В доке про этот эвент ничего нет, но порывшись в гугле и поэкспеременитровал - я понял что его обработчик получает все нажатия клавиш для окна перед тем как они будут обработанны дочерними контролами. И возрадовался. Дело в том что я люблю так хоткее делать, под мфц это было PreTranslateMessage, под wxWidgets найденный вариант был - вся работа в обработчике EVT_KEY_DOWN и connect для (почти) каждого контрола на форме


m_Note->Connect(wxID_ANY, wxEVT_KEY_DOWN, wxKeyEventHandler(MainFrame::OnKeyDown), (wxObject*)NULL, this);

А поскольку коннкетить каждый контрол для сложного окна не самое приятно времепрепровождение, то я легко возбудился увидив  EVT_CHAR_HOOK. И действительно коннекты уже не нужно, обработчик вызывается автоматом. Проблемы вылезли через пару дней:(. Первое по esc приложение "прячется" в трей - в новом варианте, если при открытом меню нажать еск, приложение спрячется а меню останется висеть:) Те хоткеи обработка которых зависила от выбранного в данный момент окна - то же в пролете.

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


Если пост полезен для вас вы можете подписаться на RSS или мы можем доставлять вам новые посты прямо в ваш почтовый ящик.




Page 1 of 512345»