Название: QtDockTile - кроссплатформенный док Отправлено: Gorthauer от Январь 08, 2012, 01:34 Ссылка на статью на Хабре (http://habrahabr.ru/blogs/qt_software/135443/)
Либой вполне можно уже пользоваться. Но хотелось бы от местного сообщества некоторой помощи: во первых просто хочу, чтобы народ её протестировал, во вторых нужна помощь с доками и их переводом на инглишь. В третьих есть ещё dockmanager. Есть желающие запилить? Название: Re: QtDockTile - кроссплатформенный док Отправлено: Авварон от Январь 08, 2012, 01:44 Не собирается нихрена
Название: Re: QtDockTile - кроссплатформенный док Отправлено: Gorthauer от Январь 08, 2012, 02:48 install читали? Субмодуль инитили? И это, лог где? Я не телепат!
Название: Re: QtDockTile - кроссплатформенный док Отправлено: Авварон от Январь 08, 2012, 10:07 Gorthauer
Конечно не читал. Конечно не инитил. Я вообще зипник качал. А вам советую не блистать знаниями симейка и гита, а сделать нормальный прошник, благо на кутях пишите. Представляю пос-ть действий для левого юзера - поставьте цмейк, поставьте гит, выполните 200 консольных команд и получите собранную либу из 300 строк кода. Бугагашенька. Название: Re: QtDockTile - кроссплатформенный док Отправлено: Авварон от Январь 08, 2012, 10:11 Кстатати поправьте меня, но в проекте нет файла инстолл, а ридми пустой.
Название: Re: QtDockTile - кроссплатформенный док Отправлено: Авварон от Январь 08, 2012, 10:14 В докменеджере утекает плагинлоадер
Название: Re: QtDockTile - кроссплатформенный док Отправлено: Gorthauer от Январь 08, 2012, 18:32 zip текущей ревизии вообще бесполезно качать, ибо гит не умеет субмодули в зипы добавлять, как релиз будет, так сделаю нормальный тарбол, а пока мне нужны как раз те ребята, которые ни гита ни цмака не боятся. Прошник делать пока не буду ибо цмак банально удобнее.
В докменеджере утекает плагинлоадер Это с чего это вдруг? Он удаляется вместе с менеджером ибо заключен вовнутрь QScopedPointer'а.Название: Re: QtDockTile - кроссплатформенный док Отправлено: Gorthauer от Январь 08, 2012, 18:33 Кстатати поправьте меня, но в проекте нет файла инстолл, а ридми пустой. Там вики есть на гитхабе. Там есть ридми, правда русское и инсталл, который сейчас сдублировал в корне проекта. Вот с переводом хорошим ридмишки и хотелось бы помощи или совета хотя бы.Название: Re: QtDockTile - кроссплатформенный док Отправлено: BRE от Январь 08, 2012, 19:06 Исходники не смотрел, но в статье глаз зацепился за:
Код Думаю этот же код и в библиотеке. Так делать нельзя. В следующей строке указатель будет ссылаться на разрушенный буфер. Несколько раз обсуждали на форуме. Название: Re: QtDockTile - кроссплатформенный док Отправлено: andrew.k от Январь 08, 2012, 20:22 Исходники не смотрел, но в статье глаз зацепился за: Почему нельзя то?Код Думаю этот же код и в библиотеке. Так делать нельзя. В следующей строке указатель будет ссылаться на разрушенный буфер. Несколько раз обсуждали на форуме. The pointer remains valid as long as the byte array isn't reallocated or destroyed. Название: Re: QtDockTile - кроссплатформенный док Отправлено: Gorthauer от Январь 08, 2012, 20:26 Исходники не смотрел, но в статье глаз зацепился за: Код Думаю этот же код и в библиотеке. Так делать нельзя. В следующей строке указатель будет ссылаться на разрушенный буфер. Несколько раз обсуждали на форуме. Взято из сырцов Креатора и самое главное, что после посылки сообщения доку, все эти строки по выходу из области видимости очищаются. А если строчку из контекста вырывать, то конечно. В реализации для винды так вообще можно дохрена таких "утечек" найти. ЗЫ на досуге попробуйте подумать, что делает эта строчка Код: [cocoaString release]; Название: Re: QtDockTile - кроссплатформенный док Отправлено: andrew.k от Январь 08, 2012, 20:32 Исходники не смотрел, но в статье глаз зацепился за: Код Думаю этот же код и в библиотеке. Так делать нельзя. В следующей строке указатель будет ссылаться на разрушенный буфер. Несколько раз обсуждали на форуме. Взято из сырцов Креатора и самое главное, что после посылки сообщения доку, все эти строки по выходу из области видимости очищаются. А если строчку из контекста вырывать, то конечно. В реализации для винды так вообще можно дохрена таких "утечек" найти. ЗЫ на досуге попробуйте подумать, что делает эта строчка Код: [cocoaString release]; Дошло в чем дело. toUtf8() возвращает временный объект QByteArray ссылка на который никуда не сохраняется, а используется лишь вызов constData. Сразу после вызова объект будет разрушен. И указатель станет не валидным. Значит и правда нельзя. Название: Re: QtDockTile - кроссплатформенный док Отправлено: Gorthauer от Январь 08, 2012, 20:39 Хех, а про QByteArray я уже проглядел, невнимательным был... Интересно, почему оно тогда в креаторе ни разу не падало?
Название: Re: QtDockTile - кроссплатформенный док Отправлено: BRE от Январь 08, 2012, 20:42 Интересно, почему оно тогда в креаторе ни разу не падало? Везло.Освобожденный участок памяти никому в этот момент не отдавался, поэтому данные никто не затирал. Название: Re: QtDockTile - кроссплатформенный док Отправлено: Gorthauer от Январь 08, 2012, 20:50 Fixed.
Отправить что ли троллям патч. А то и там и там банальная невнимательность и везение %) Нда... иногда таки бывают грабли даже если берёшь код казалось бы из хорошего и проверенного источника и априори ему доверяешь не вчитываясь) Название: Re: QtDockTile - кроссплатформенный док Отправлено: andrew.k от Январь 08, 2012, 20:56 Код А что это вообще за код такой в квадратных скобках? По-моему я такой видел только в билдеровских хедерах когда-то давно. Это вообще что и с чем? Название: Re: QtDockTile - кроссплатформенный док Отправлено: Gorthauer от Январь 08, 2012, 20:59 Это objective C, синтаксис посылки сообщения, это нечто в духе emit.
Название: Re: QtDockTile - кроссплатформенный док Отправлено: BRE от Январь 08, 2012, 21:03 Fixed. Подожди с патчем.Отправить что ли троллям патч. А то и там и там банальная невнимательность и везение %) Нда... иногда таки бывают грабли даже если берёшь код казалось бы из хорошего и проверенного источника и априори ему доверяешь не вчитываясь) А как это у них выглядит? Если так: Код то это вполне валидный код. Название: Re: QtDockTile - кроссплатформенный док Отправлено: andrew.k от Январь 08, 2012, 21:08 Это objective C, синтаксис посылки сообщения, это нечто в духе emit. Это можно прямо в коде С++ использовать? И для чего это? Можешь ссылкой какой-нибудь кинуть, почитаю. Пока читаю вики. Я думал objective-C это какой-то отдельный язык. Название: Re: QtDockTile - кроссплатформенный док Отправлено: Gorthauer от Январь 08, 2012, 21:15 Fixed. Подожди с патчем.Отправить что ли троллям патч. А то и там и там банальная невнимательность и везение %) Нда... иногда таки бывают грабли даже если берёшь код казалось бы из хорошего и проверенного источника и априори ему доверяешь не вчитываясь) А как это у них выглядит? Если так: Код то это вполне валидный код. Там именно так как у меня было выглядит, строчка в строчку, а у меня теперь наоборот как раз func( str.toUtf8().constData() ); Цитировать Это можно прямо в коде С++ использовать? И для чего это? Тут всё хитрее, есть диалект objective C++, который призван склеивать С++ и objective C части. Расширение у таких творений mm и юзать их вне Макоси весьма затруднительно, я не уверен, что на GNUStep'е оно взлетит.Можешь ссылкой какой-нибудь кинуть, почитаю. Пока читаю вики. Я думал objective-C это какой-то отдельный язык. Название: Re: QtDockTile - кроссплатформенный док Отправлено: kambala от Январь 08, 2012, 21:26 Это objective C, синтаксис посылки сообщения, это нечто в духе emit. вообще-то это просто вызов метода, хоть и называется "отсылкой сообщения". а [obj release] - это что-то типа плюсового delete obj."нечто в духе emit" - это [[NSNotificationCenter defaultCenter] postNotificationName:@"myNotificationName"] Название: Re: QtDockTile - кроссплатформенный док Отправлено: Gorthauer от Январь 08, 2012, 21:52 emit это тоже вызов метода :)
Название: Re: QtDockTile - кроссплатформенный док Отправлено: kambala от Январь 08, 2012, 21:56 postNotificationName:, как и emit, тоже вызывает метод, но ведь не напрямую
Название: Re: QtDockTile - кроссплатформенный док Отправлено: Gorthauer от Январь 08, 2012, 22:06 а emit обычно напрямую :) Если не стоит queued connection.
Название: Re: QtDockTile - кроссплатформенный док Отправлено: kambala от Январь 08, 2012, 22:32 нет, под "напрямую" я подразумеваю, что ты же не пишешь Obj.method() при эмите :)
а так да - центр уведомлений тоже "заставляет" всех подписавшихся объектов вызвать свой метод мгновенно Название: Re: QtDockTile - кроссплатформенный док Отправлено: Gorthauer от Январь 09, 2012, 02:04 Тем не менее, никто не запрещает так делать, сигналы - это же по сути обычные protected методы, для френдов они прекрасно вызываются.
Название: Re: QtDockTile - кроссплатформенный док Отправлено: Авварон от Январь 10, 2012, 11:41 Делать было нечего, собрал. Как ожидалось, инструкция по сборке неверная - вы забыли cd build -_-
Тестил на мак ос лион. Без инстолла док тоже не пашет (что, впрочем ожидаемо, но хотелось бы уведомление) Не пашет алерт (он же прыгать должен?). Шрифт бэджа какой-то угловатый; хотя цифры ок. Прогресс ок, меню тоже вроде работает. Название: Re: QtDockTile - кроссплатформенный док Отправлено: Авварон от Январь 10, 2012, 13:49 А, меню тоже не пашет - при открытии того меню, что в окне, меню из дока удаляется.
Название: Re: QtDockTile - кроссплатформенный док Отправлено: Gorthauer от Январь 11, 2012, 23:42 Хм... ща подправлю тогда описание. Но насчет меню и бейджа, то в первом случае юзается qtшный метод и баг соответственно кутишный, а во втором случае я как раз тот метод применяю, который тут обсуждался и просто посылаю доку сообщение с текстом в бейдже.
А насчет алерта не понятно, вроде и должен пахать, но почему-то не пашет. Название: Re: QtDockTile - кроссплатформенный док Отправлено: Gorthauer от Февраль 11, 2012, 15:51 Тестим первую бету! И кто может, голосуйте на qt-apps!
http://qt-apps.org/content/show.php/QtDockTile?content=148668 Название: Re: QtDockTile - кроссплатформенный док Отправлено: b-s-a от Февраль 12, 2012, 21:02 Почему сразу исходники не оформил в виде: http://wiki.qt-project.org/Creating_a_new_module_or_tool_for_Qt
Было бы проще попасть в qt-project.org setMenu() обязательно делать слотом? И сигналы на мой взгляд лишние. Если кому-то надо, он может сам приконнектиться к сигналам выставляющим меню и пр. Название: Re: QtDockTile - кроссплатформенный док Отправлено: Gorthauer от Февраль 14, 2012, 01:03 Сигналы нужны для нормальной работы свойств в qml. Для этих же целей и слоты делал. Но в принципе думаю, что это и правда лишнее. Насчет оформления: идея неплохая, но надо бы наверное для начала получше потестить саму либу, да и не уверен, что она прямо на целый модуль тянет.
Название: Re: QtDockTile - кроссплатформенный док Отправлено: b-s-a от Февраль 14, 2012, 09:58 Модуль не модуль, а если оформить правильно, то потом может и в сам QtGui войти.
Название: Re: QtDockTile - кроссплатформенный док Отправлено: Gorthauer от Февраль 17, 2012, 13:14 Скорее уж в Qt Widgets.
ЗЫ Начал потихоньку причесывать модуль и переводить его на qmake. Вот только в случае если оформлю как модуль qtшный, то не ясно как его собирать без synqt, у кого есть опыт? Название: Re: QtDockTile - кроссплатформенный док Отправлено: Авварон от Февраль 17, 2012, 13:40 Оно не войдет в Qt, тк не следует принципу code less. Там должно быть 3 класса безо всяких плагинов. Максимум - плагин должен быть для виндоу системы (те надо расширить его интерфейс).
Название: Re: QtDockTile - кроссплатформенный док Отправлено: Gorthauer от Март 02, 2012, 16:09 Почему это? Там 2 класса всего публичных! Для эндюзера так и вовсе только QtDockTile нужен, плагины только для поддержки платформ нужны. Все сделано по аналогии с либами из QtMobility
Название: Re: QtDockTile - кроссплатформенный док Отправлено: Авварон от Март 02, 2012, 16:52 Цитировать QtMobility Нашел с чего пример брать. Это самый кривой модуль Qt.Короче потырил я код для своего проекта... Есть пара замечаний - для таскбара есть сишное апи, почему не юзать его (тогда не будет проблем с компилером). Плюс комы ж должны в мингв работать, нет? В том виде, в каком меню есть, оно не нужно - не должн быть перекоса по функционалу между платформами. Есть хинт для винды - можно иерархические меню разворачивать сепараторами, как группы. Однако код под винду дико кривой, велика вероятность, что завернут. Аналогично бэдж - почему я передаю кустринг, к-ый тупо не работает в юнити? Тогда делать числом. Дело не в количестве паблик классов, а в общем количестве чущностей - кутешники смотрят не на апи, а на реализацию. Плагины для платформ нахрен не нужны - на 1 платформу щаз 1 плагин, а валидность его можно и в рантайме проверить (есть юнити или нет). В общем, для Qt код не готов. |