И снова о нововведениях в wxWidgets 3.0

September 22nd, 2009 Begemot Posted in Oбщее

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

Related:

Posted in Oбщее | Tags:

47 Responses to “И снова о нововведениях в wxWidgets 3.0”

  1. ара, я чего то не понимаю?
    wxDataViewCtrl* DataView;

    wxDataViewColumn* column = DataView->GetColumn( 0 );
    column->SetWidth( 250 );

    так вот, размер столбика данных конечно меняется, но размер заголовока – нет. Это так и было задумано?

  2. Незнаю, не пробывал еще.
    Но может надо что-то типа Release, Refresh, …

    or you are welcome to trac http://trac.wxwidgets.org/ 🙂

  3. А Upper Lower для wxString c русской локалью заработали?

  4. Незнаю, у меня самописная функция для lower\upper case с полной поддержкой юникода под виндой.
    http://begemotov.net/wxwidgets/programming/kak-reference-counting-chut-byilo-ne-zastavil-poverit/

  5. Boris:
    А Upper Lower для wxString c русской локалью заработали?

    работают

  6. Александр Says:

    Цитата из статьи: “А сейчас ещё пара слов о грустном: wxWidgets становится чуть менее кросс-платформенным. Официально урезана поддержка GTK+ и MacOS: вместо GTK+ 1.2, GTK+ 2.0 теперь заявлена только GTK+ 2.4 (работа с GTK+ 1.2.10 пока присутствует, но не поддерживается), а МакОСь поддерживается только начиная с версии OS X 10.4, вместо 8.6/9.x, как ранее. Отсутствие ANSI сборки автоматически требует наличия Microsoft Layer for Unicode для запуска wx`овых программ на Windows 95/98/ME. Кроме того, возможно wx`ы теперь не соберутся на некоторых устаревших компиляторах, которые плохо поддерживают работу с шаблонами. Ну и, плюс к этому, стоит отметить увеличение размера скомпилированных бинарников…”

    Почему убрали поддержку стандартного Win9x ?
    Почему только GTK+ 2.4 ?
    Почему только OS X 10.4?
    Из-за templates будет скоро откат от VC6 с msvcrt.dll?

    Да, печально… а я когда-то мечтал, что wx всё же не пойдёт по пути qt… будет более консервативна, и как следствие, более быстрая, компактная и кроссплатформенная… как-то программеры не знавшие времён ассемблера уже не очень хотят думать о рационализации, поддержке обратной совместимости… всё надеясь на новое железо.

    Кстати, самые толковые кодеры, у кого ещё можно поучиться рационализации, эффективности – остались в Demo Scene.

    Качните и посмотрите интро Elevated для DirectX9 с музыкой в 4 килобайта (http://demoscene.ru/demo/dl_demo1.php3?533), и на примере этой демки подумайте – действительно ли верной дорогой пошли все эти новомодные разработчики, создавая разбухшие фреймворки, не рационализируя, не оптимизируя код?

    Источник: http://demoscene.ru/demo/demo1a.php3?2009

    Кстати, это подтверждает и Линус Торвальдс (Linus Torvalds). Линус назвал современное ядро свободной операционной системы Linux “раздутым и огромным”.

    Джеймс Боттомли (James Bottomley), процитировал внутреннее исследование Intel. В нем говорится, что производительность Linux падает на два процента с каждым новым релизом – общее снижение производительности за последние десять релизов достигло 12 процентов.

    “Мы стали раздутыми и огромными. Да, это проблема”, – прокомментировал Торвальдс. Ядро Linux версии 2.6.31 сильно отличается от быстрой и компактной версии 0.01, которую он написал 18 лет назад. По его словам, в настоящее время сообщество не располагает планом по исправлению ситуации. С появлением в ядре каждой новой функции ситуация становится только хуже, добавил Торвальдс.

  7. А кому нужна 98? есть хотя бы 5% пользователей вхсов для которых это критично? что бы ради это поддержки тормозить развитие и улучшение библиотеки? тоже самое относительно макоса\линукса.

    Александр: “Мы стали раздутыми и огромными. Да, это проблема”,

    И как бонус к этому получили дофига новых пользователей. было бы у них столько же домашних пользователей сейчас если бы ядро осталось на уровне 0.01?

  8. А зачем поддержка 98-го, если уже и XP в прошлом?
    Так же и по Mac OS X. Ни разу на мой сайт не приходили со старых маков( если верить статистике)
    ну а про GTK вообще молчу

  9. Александр Says:

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

  10. Вот только в реальности все строго наоборот 🙂

  11. Это всё бизнес. Пока ты будешь вылизывать следующую версию, конкуренты сделают две. И тебе конец

  12. Александр Says:

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

  13. Человек жалуется на то, что убирают поддержку старых систем и тут же в качестве примера показывает демосцены, которые идут только на DirectX9. А как же пользователи остальных систем, где установлен например DirectX8? Они в пролете? А я еще знаю демки которые идут только на 10. У меня например они уже не идут. Так что ваш пример совсем не в кассу, он показывает, что остальные отказываются от поддержки старых систем намного раньше. А то, что отказались от Win98, так ничего страшного, установили Microsoft Layer for Unicode и работайте дальше.

  14. Александр Says:

    Aleksey, этот пример действительно не относится прямым образом к wxWidgets, а привёл его только потому, что там очень мощная оптимизация (программная генерация сложных текстур и красивых ландшафтов фотографического качества на основе математических алгоритмов perlin noise, движение камеры, эффекты и музыка) – и всё как-то вместили в 4 килобайта, тогда как “современные” геймдизайнеры с той же версией DirectX-а потратили бы на это десятки мегабайт. Смысл примера в определении границ возможностей (по аналогии). То есть, в теории сделать оптимально можно, стоит только захотеть… уменьшить размер бинарников, повысить скорость выполнения кода. Неужели сейчас это не востребовано? Очень странно наблюдать использование сверхмощных компьютеров с многоядерными процессорами потребляющих сотни киловатт, которые используются в некоторых офисах только в качестве печатной машинки и калькуляционных таблиц. Очень странно всё это. Не ценим электроэнергию?

    Считаю, что Win98 и 2000 – по производительности и качеству самые удачные операционные системы MS. Все последующие версии приводят только к замедлению работы и увеличению размера на диске.

  15. >> А кому нужна 98?
    Когда – нибудь выполняли госзаказы?
    Или просто проекты для государственных и бюрократических учреждений?

    Так вот там в тз обычно хотят win98.

  16. Кстати, да. Мы в своё время (а надо сказать, было это всего три-четыре года назад) Выбрали wxWidgets в качестве платформы для разработки именно за его не требовательность. Тогда стояла задача написать приложение, которое должно было отображать и обрабатывать таблицы размером более полумиллиона элементов, а работать оно должно было на машине со вторым пеньком, 128Мб оперативки и Win98 на борту. Писать на чистом WinAPI не хотелось, а всё остальное оказалось заметно более требовательным к ресурсам. А перепробовали мы тогда, надо сказать, много всего, начиная от VisualBasic заканчивая опен офисом.
    Я это к чему – Win98 в некоторых местах всё ещё активно используется. А кое-где можно и Win95 найти. И никуда они с них переходить не собираются. А что касается W2k – так это моя любимая операционка из МСовских. Я её активно использую и везде ставлю.
    Так что поддержка старых операционок – это давольно весомы фактор.

  17. Без паники. Старые версии библиотеки никуда не денутся. Не приятно конечно, но работать можно.

  18. Alatar: Мы в своё время (а надо сказать, было это всего три-четыре года назад)

    Ну 3-4 года назад я бы тоже бы против отказа от 98. Но все таки 4 года это уже дофига…
    Кстати я примерно тогда же перешел на юникод и отказался от поддержки 98 – сил сэъкономило много, сказать что бы я что-то потерял? ну точно утверждать нельзя конечно, но жалоб было мало.

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

  19. А никто не знает, собираются ли разработчики wxWidgets
    сделать что-нибудь типа как qtScript.
    Тоесть расширять wx приложение скриптами, чтобы гуи создавать и работать со всем функционалом wx.
    Сейчас меня забросают ссылками на wxPython, wxRuby, wxLua и иже с ними. Не надо, заценил уже.
    wxPiton – неудобен, слишком он громоздок.
    wxRuby – менее громоздок но еще очень кривой и недоделанный.
    wxLua – работает и маленький. Но за неск. дней жесткого траха
    так и не получилось инициализировать бинды wx-а для луа.
    Хотя отдельными скриптами (вне приложения) все примерчики работают на ура. Да, еще луа с юникодом без доп. гемора не работает.
    wxJavaScript – вообще отдельная песня. Совершенно недоделанный проект, в котором даже документации нет.

    Короче очень хочется, чтобы разработчики wx встроили в саму библиотеку какой-нибудь скриптовый двиг. Ато уже надоело изучать новые библиотеки и натыкаться на кучу недоделанностей и багов.

  20. вместо GTK+ 1.2, GTK+ 2.0 теперь заявлена только GTK+ 2.4

    А старое кому надо? У меня не было ни одного проекта, где была нужна старая версия GTK+

    МакОСь поддерживается только начиная с версии OS X 10.4, вместо 8.6/9.x, как ранее.

    Аналогично. Это старье никому не надо. Деньги зарабатываются не на этом.

    Отсутствие ANSI сборки автоматически требует наличия Microsoft Layer for Unicode для запуска wx`овых программ на Windows 95/98/ME

    То же самое. Здесь нет денег. Хотите чтобы был мир во всем мире и ваше ПО юзали на неподдерживаемых ОС? ОК, ваше право. А я хочу чтобы мой бизнес развивался, и платят мне не за поддержку 9x

    Из-за templates будет скоро откат от VC6 с msvcrt.dll?

    И? ну будет. Мало ли бесплатных компиляторов. Счастье отлично наступает и с Code::Blocks/MinGW

    Да, печально… а я когда-то мечтал, что wx всё же не пойдёт по пути qt… будет более консервативна

    Она и сейчас ужасно консервативно и тащит за собой кучу ненужных вещей для поддержки всякого старья. Теперь хоть немного лучше стало… А шаблоны это токльо плюс. неумение ими пользоваться не оправдывает вас в глазах ваших клиентов.

    Кстати, самые толковые кодеры, у кого ещё можно поучиться рационализации, эффективности – остались в Demo Scene.

    И? Вы хотите сказать что использование новых фич или, например, шаблонов, скажется хуже на качестве кода и на размере? Вы сравнивали размеры бинарников WTL и MFC? WTL, между прочем, вся на шаблонах. И как бы, ну.. она рулит.

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

    Вот-вот.. и после этого все нормальные люди пишут “will not work with developers from India or pakistan”. Как раз потому что те производят кизяк вместо кода.

    Считаю, что Win98 и 2000 – по производительности и качеству самые удачные операционные системы MS.

    А я считаю что Win7… На вкус и цвет фломастеры разные. XP лучше чем 9x в разы, кстати.

  21. 2dd
    ИМХО личное.. список по мере приемлемости:
    – wxPython
    – wxRuby
    – wxLua
    – wxJS

  22. dd: wxPiton – неудобен, слишком он громоздок.

    А ты пытался его использовать как отдельный язык. Или как скриптовый язык для с++ приложения? Если последнее, не расскажешь подробнее или можешь послать на урл, давно хочу попробовать использовать питон внутрях с++ проги, вроде такое должно быть можно?

  23. >> Если последнее, не расскажешь подробнее или можешь послать на урл, давно хочу попробовать использовать питон внутрях с++ проги, вроде такое должно быть можно?

    Так он для этого и создавался вроде. Как встраиваемый язык.
    Очень распространен в играх.
    А какую ссылку ты хочешь? На гугл? =)

    Вот что пишут непосредственно про wxPython
    wxpython is very versatile. it can be used to create standalone gui applications, or in situations where python is embedded in a c++ application as an internal scripting or macro language.

    Где найти инфо, думаю разберешься )

  24. Я просто привык рассматривать wxPython как отдельный самостоятельный язык, и все туториалы\статьи что я видел были именно про самостоятельное использование.
    А вот информации о встраивании в с++ приложение пока не попадалось, думал ты знаешь, простенький туториал и главное пример чтобы скачал, скомпилил – и убедился что работает:) Правда я пока еще не искал, это пока так в мечтах и я на будущее спрашиваю. Понадобится пойду в гугл конечно.

  25. А это что?

    C:\wxPython\wxPython-src-2.8.10.1\wxPython\samples\embedded

    =))

  26. Ну дык это же надо иметь wxPython установленный 🙂
    Спасибо за наводку, записал, обязательно посмотрю!

  27. Переходите на WTL!!!

    загляните на досуге cbum.hut1.ru

  28. 2cbum
    Да щаз, все побежали под Linux/Mac переходить на WTL!

  29. cbum: Переходите на WTL!!!

    А что это такое? 🙂

  30. Очень не нравится, что под виндой будет только UTF-16.
    Это же неудобно ((
    Чем очень удобен UTF-8, так это тем, что не может содержать нулей в теле текста.
    Поэтому с таким текстом легко работать как с обычной C строкой – заканчивающейся нулем.
    Потом UTF-8 уже давно де-факто стандарт в юникс-системах.
    В БД, например на постгресе или mysql давно использую utf8.
    Теперь лишние телодвижения.

  31. Так это вроде только в нутрях будет, а снаружи все будет как и было.

  32. >> Так это вроде только в нутрях будет, а снаружи все будет как и было.

    Если так, то круто )

    Этой ночью решил попробовать 2.9.0.
    Качнул с http://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_9_0_BRANCH/
    Собрал под вынь:
    mingw32-make -f makefile.gcc BUILD=release

    В итоге семплы от 7 до 9 мегабайт о_0. Как – то странно.
    Это я накосячил?

  33. это я читал. но у тебя речь о других размерах идет

  34. Ну у меня дебаг с этим багом был порядка 6-7 метров в вижуал студии, с gcc как раз будет под 9 так что все ок 🙂
    В 2.9.0 небось это еще не пофиксили, а зачем вообще 2.9.0 брать, почему не trunk?

  35. Так в том и дело что релиз (
    Думаю там еще много таких багов, будем ждать )

  36. Александр Says:

    T-Rex: Кстати, самые толковые кодеры, у кого ещё можно поучиться рационализации, эффективности – остались в Demo Scene.

    И? Вы хотите сказать что использование новых фич или, например, шаблонов, скажется хуже на качестве кода и на размере? Вы сравнивали размеры бинарников WTL и MFC? WTL, между прочем, вся на шаблонах. И как бы, ну.. она рулит.

    Может. Код на стандартных шаблонах медленно работает (например, сравните скорость трёхмерного движка Irrlicht (вообще без STL) и OGRE3D (с экстенсивным использованием STL)). Irrlicht однозначно выигрывает по скорости. Шаблоны неудобочитаемы, особенно в убогой STL реализации имён (это по поводу качества кода и его поддержки). Иногда выгоднее кое-что писать на чистом C с использованием таких библиотек как C Algorithms (http://c-algorithms.sourceforge.net/). Получится лучше и быстрее чем на шаблонах.

    По поводу MFC vs WTL. Однозначто выигрывает MFC. Если линковать динамически к MFC42.dll (MFC42u) на шестой студии, размер бинарников получается где-то от 15 килобайт. Если всё тоже самое GUI делать даже в чистом Win32 API (даже без WTL) размер окажется значительно больше (в 3-4 раза как минимум).
    К тому же, под MFC написано больше готового кода, и MFC легче портировать на wxWidgets.

    IMHO, wxWidgets выигрывает у Qt ещё и тем, что в линуксе работает под GTK (т.к. Ubuntu и Red Hat идут под GNOME, а если установлен KDE – тоже всё прекрасно работает). То есть, получается у программ wxWidgets – больший охват линукс пользователей.

  37. По поводу MFC vs WTL. Однозначто выигрывает MFC. Если линковать динамически к MFC42.dll (MFC42u) на шестой студии, размер бинарников получается где-то от 15 килобайт. Если всё тоже самое GUI делать даже в чистом Win32 API (даже без WTL) размер окажется значительно больше (в 3-4 раза как минимум).

    Ммм? Вы готовы финансировать разработку и поддержку ПО на WinAPI со своего кармана? Я – нет. Я хочу быстол и дешево. То же относится и к VS6. Если девелопер на VS2008 работает хотя бы на 30% быстрее (пускай даже банально из-за более толкового IntelliSense), то это уже значительный выигрыш в себестоимости разработки.
    Про динамическую линковку – хорошая шутка. Вон на MinGW с динамической линковкой тоже получаются маленькие бинарники… зато зависимостей…. стопицод. по меньшей мере такое сравнение некорректно. И вроде MFC42*.dll в Vista и Win7 не поставляются (могу ошибаться), так что ДЛлки таскать с собой все равно прийдется.

    Шаблоны неудобочитаемы, особенно в убогой STL реализации имён

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

  38. Александр Says:

    T-Rex: Ммм? Вы готовы финансировать разработку и поддержку ПО на WinAPI со своего кармана?

    Если будет очень надо, то готов. Даже есть библиотека Win32++ для этих целей (аналог MFC – http://win32-framework.sourceforge.net). Но бинарники MFC с динамической линковкой под MFC42.DLL всё же получаются меньше размером, и сам код в принципе похож на аналогичный в wxWidgets, так что это очень удобно! Есть ещё MFC42U.DLL – юникод (поставляется начиная с Win2000 и (Win98 with Microsoft Layer for Unicode)).

    T-Rex: И вроде MFC42*.dll в Vista и Win7 не поставляются (могу ошибаться), так что ДЛлки таскать с собой все равно прийдется.

    MFC42.DLL и MSVCRT.DLL поставляются во всех версиях Windows начиная с Win98. Ничего таскать не придётся. Минимальный размер приложения сжатый upx – получается около 15 килобайт. Можете сами проверить откомпилировав исходники из MSDN 2001 года.

    T-Rex: Я хочу быстол и дешево. То же относится и к VS6. Если девелопер на VS2008 работает хотя бы на 30% быстрее (пускай даже банально из-за более толкового IntelliSense), то это уже значительный выигрыш в себестоимости разработки.

    Ну, если вас не волнуют вопросы оптимизации кода по размеру и скорости, то наверное вы здесь правы, хотя среда разработки не зависит от языка. На С++ можно писать и под Code::Blocks и под Eclipse и под многие другие IDE. Тем не менее, IMHO, визарды шестой студии удобнее интегрированы под MFС.

    T-Rex: Еще раз, неумение пользоваться шаблонами и/или непонимаение как они работают, никак не оправдывает вас в глазах заказчика. Это только ваша личная проблема. Можете сэкономить деньги на разработке – вы в выигрыше, не можете – вы аутсайдер.

    Ну, если попадётся такой заказчик с претензиями обязательного оправдывания, который из-за отсутствия шаблонов не хочет быть аутсайдером, то специально для него напишу всё на шаблонах. 🙂

  39. dd: А это что?

    C:\wxPython\wxPython-src-2.8.10.1\wxPython\samples\embedded

    =))

    Если я правильно понял из ридми там надо скомпилить самому вх, питон, и использовать вх только в длл. Правильно? Что-то необходимость самому собирать питон и потом это все совмещать меня пугает:(

    Ни у кого случайно ехе уже готового нету?:)

  40. 2T-Rex
    Я про Win имел в виду

    2Сергей
    Windows Template Library (библиотека “форточных” шаблонов)
    простроена на WinAPI

  41. Сергей Says:

    2Сергей
    Windows Template Library (библиотека “форточных” шаблонов)
    простроена на WinAPI

    это была ирония мой друг. я программирую под linux/mac

  42. это была ирония мой друг. я программирую под
    linux/mac

    Похоже тут все для “них” пишут (можно было догадаться).

    Если не секрет, какую IDE юзаешь? для mac, для linux?

  43. cbum:
    Если не секрет, какую IDE юзаешь? для mac, для linux?

    Code::Blocks, вернее связку Code::Blocks + wxWidgets + gcc на всех трех платформах ( Windows/Linux/Mac OS X )

  44. Я тут кстати недавно codelite поставил, правда дальше поставил пока не пошло – квн кончился:) а убунту у меня на ноуте, так играюсь в свободное время, но codelite произвела более чем приятное впечетление… Правда ставить надо с сайта, в репозитории старая версия.

  45. Сергей Says:

    А в чем заключаются “приятные впечатления”? 🙂

  46. Да пока ничего конкретного – говорю же только поставил – 20 минут по игрался, но в целом – вот что то такое приятное..:) Бывает так видишь, прогу – и сразу ясно хорошая:) Конечно кучу проблем я еще найду и матерится тоже буду, но первое впечатление хорошее.
    Видел что вроде может импортировать проекту вижуал студии – если нормально работает, то вообще супер, для начала