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

wxListCtrl selection under MAC OS

August 14th, 2009 Begemot

Наткнулся на разное поведение wxListCtrl’a под виндой и маком. Надо при смене выделения в другом контроле устанавливать правильное выделение в wxListCtrl. Под виндой все просто

        int t = нужная строка;
    list->SetItemState(t, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED);
    list->EnsureVisible(t);

Под маком надо обязательно сбрасывать старое выделение и только потом ставить новое.

    int cursel = list->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
    if (cursel != wxNOT_FOUND)
               list->SetItemState(cursel, !wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED);
 ......
      int t = нужная строка;
      list->SetItemState(t, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED);
      list->EnsureVisible(t);

Передача Unidode пути к файлу в ANSI библиотеку

July 28th, 2009 Begemot

Если вас вдруг  угораздило работать с какой-нибудь старой библиотекой которая не хочет понимать пути в юникоде… то ключ к решению wxFileName::GetShortPath(), а все правильное решение такое:

wxString path = ….

wxFileName fn(path, _T(“name”), _T(“ext”));

fn.Normalize();

xz.Open((const char*)fn.GetShortPath().ToAscii());

wxString path = ….

wxFileName fn(path, _T(“name”), _T(“ext”));

fn.Normalize();

xz.Open((const char*)fn.GetShortPath().ToAscii());

Posted in Использование | Tags:
Comments Off on Передача Unidode пути к файлу в ANSI библиотеку


Осторожнее надо быть с обновлениями

May 25th, 2009 Begemot

Выпустил новую версию менеджера буфера обмена, за день до релиза, в тестовых целях (проверить как работает скроллинг на дереве) обновился до wxWidgets 2.8.10. Задумался с какой версией собирать публичный релиз, старой “проверенной” 2.8.9 или новой .10 в которой много чего, по идее исправлено и улучшено, но сам то я не тестировал. Решил не рисковать, потом подумал, а фигли там, полюбому 2.8.10 должна быть лучше.

Уже в последний момент, собрав инталляшку, заметил багу. В 2.8.10 сломали html у меня пополз абаут и нагскрин. Пропачил wxWidgets, собрал заново – ошибка исчезла, но осадочек остался. Теперь ни каких больших обновлений third-party перед релизом, только заранее и тестировать, тестировать, тестировать…


О сайзерах

January 23rd, 2009 Begemot

Сайзеры в wxWidgets / wxPython – подробно, доступно и главное понятно. Всем кто еще не понимает как пользоватся сайзерами – рекомендую. Хоть и для питона восновном, но можно смотреть на картинки.

 

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


Худеем

December 29th, 2008 Begemot

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

Поэтому перед релизом решил сбросить лишние килобайты. Для моего ехе уже стояла нужная оптимизация (/O1 /Os), так что начал с wxWidgets – собрал релизную версию с оптимизацией по размеру вместо скорости (компилятор от Visual Studio  2008) с этими же опциями. И удивлению моему не было предела – сбросил целых 375 Kb, 1,767 вместо 2,140.

Так же поступил с DatasetLayer. Еще минус 14 кб.

Теперь жду когда начнет тормозить 🙂


Я очень, очень не доволен меню и тулбаром!

October 30th, 2008 Begemot

Ужасть просто как недоволен 🙂 Про меню я уже писал частично, сейчас будет вторая серия – буду отрыватся по полной, возможна даже нецензурная лексика:)

1. Хреновое выравнивание, посмотрите что происходит с шоткатом F2 в обоих случаях

menu_shortcut

2. Опять же хреновое выравнивае, но уже для чекбоксов. Почему его тянет на лево?

checkbox

3. Стоковые названия\шоткаты для меню – классная задумка. Но посколько, под виндой шоткаты принято обозначать как ctrl+v, а wxWidgets использует ctrlv, то ради унификации интерфейса приходится жертвовать ими и прописывать все название и комбинации жестко.

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

menu_toolbar_disable

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

toolbar_disable

6. wxMenu автоматически обрабатывает все шоткаты в меню и похоже это нельзя отключить, и это проблема:(

7. А это тулбар под вистой

toolbar_vista

Пока все что удалось вспомнить. И как они его там тестируют… ? Страшно представить, что же там будет под юкнисом то. Хотя может это только у меня дар и другие не замечают, может мне в тестеры пойти ?:)

Зато wxWidgets позволяет использовать png для иконок, а вот для дельфей такого нету, сегодня народ жаловался:)

Следует отметить что я использую wxAUI, и тулбар соответвенно, от его. Может с родным было бы лучше, надо проверить.

Да, вы главное не подумайте что я сильно расстроен wxWidgets, так просто пар спускаю:) А вообще ничего, можно пользоватся, творить. Я вот даже до беты дописался. так что не все так плохо! 🙂


wxSearchCtrl или может я чего-то не понимаю?

September 11th, 2008 Begemot

Писец какой-то, нужно реализовать фильтрацию\поиск в приложении, вспомнаю что в wxWidgets есть специальный компонент для поиска – красивенький такой.

image

Ура думаю, сейчас быстро заюзаю, и напишу в блог в категорию ‘+1’. Как же заюзал, вообщем сегодня будем пороть  wxSearchCtrl.

  1. Логику человека который догадался разместить кнопку начала поиска слева (!), а очистки – справа мне наверное никогда не понять.
  2. Enter по умолчанию не забинден на кнопку начала поиска, а просто служит для навигации в диалоге, переход на следующий контрол
  3. Что бы иметь возможность отлавливать Enter, надо поставить флаг wxTE_PROCESS_ENTER. Но если создать контрол с этим флагом, то вдруг перестает работать tab(?)…
  4. Connect(wxID_ANY, xEVT_KEY_DOWN, wxKeyEventHandler(MainFrame::OnKeyDown), (wxObject*)NULL,

    this); для этого контрола не работает. А мне обязательно надо…

Если кто разбирался\работал\знает – я ничего не пропустил, может можно добится того чего я хочу?

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

p.s. Кто знает как отловить факт прихода\ухода фокуса для любого контрола в окне?


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/


Установка под Линукс

December 18th, 2007 Begemot

Ссылка на пост в моем основном блоге как я ставил wxWidgets под Ubuntu

Posted in Использование | Tags: ,
Comments Off on Установка под Линукс


Установка Под Windows

December 18th, 2007 Begemot

Ссылка на пост в моем основном блоге
про установку wxwidgets под Windows для Visual Studio 2005, VC Express и MinGW.

Posted in Использование | Tags: ,
Comments Off on Установка Под Windows