Entry tags:
Bard 0.1.3
Долгими зимними вечерами продолжаю ваять "Bard". Готова очередная бета: версия 0.1.3.
Учтены многие пожелания и нарекания френдов. Те, что еще не учтены, можете не повторять, у меня все записано и распланировано до версии 0.2. Но, если найдете новые баги - очень хорошо.
Эта версия - серьезный шаг, поскольку полностью переработано "ядро" - хранение промежуточных редактируемых данных. Переработка позволила сделать операции Undo/Redo практически мгновенными, понаделать легко и просто "preview" - но ценой отказа от немедленного save после каждой операции. Как следствие, autosave и autobackup убраны, теперь работа с файлом выглядит совершенно "стандартно": можно закрыть без сохранения и т.п.
Внешний вид переработан в угоду эстетам - теперь окно основного редактора выглядит так.
На очереди две большие проблемы. Первая - приручение Wine. Вторая - возможность работать с плагинами VST (нашел документацию, буду делать). Пожелайте мне удачи - наступает трудный лично для меня этап: мне всегда было проще и приятнее писать своё, чем разбираться в чужих интерфейсах и прикручивать их.
Что касается испытаний для Wine, то пока все плохо. Первая попытка поставить убунту провалилась - инсталлятор линукса сначала показал 731% прогресса исполнения, а потом заявил, что отсутствует root file system или что-то в этом роде и предложил исправить дело в "partitioning menu", которое вызвать никак нельзя. На этом все и зависло. Я воспользовался инсталлятором убунты поверх винды (wubi.exe) и сказал ставить ее на свободный диск F. Там NTFS, подозреваю, что проблема в этом - хотя я надеялся, что инсталляшка по крайней мере сформатирует тот диск. Ан нет. Интересно, FAT32 ее устроит?
- Полный список изменений на странице загрузки
- Прямая ссылка для скачивания инсталлятора (11 Мб)
- Список возможностей редактора
Учтены многие пожелания и нарекания френдов. Те, что еще не учтены, можете не повторять, у меня все записано и распланировано до версии 0.2. Но, если найдете новые баги - очень хорошо.
Эта версия - серьезный шаг, поскольку полностью переработано "ядро" - хранение промежуточных редактируемых данных. Переработка позволила сделать операции Undo/Redo практически мгновенными, понаделать легко и просто "preview" - но ценой отказа от немедленного save после каждой операции. Как следствие, autosave и autobackup убраны, теперь работа с файлом выглядит совершенно "стандартно": можно закрыть без сохранения и т.п.
Внешний вид переработан в угоду эстетам - теперь окно основного редактора выглядит так.
На очереди две большие проблемы. Первая - приручение Wine. Вторая - возможность работать с плагинами VST (нашел документацию, буду делать). Пожелайте мне удачи - наступает трудный лично для меня этап: мне всегда было проще и приятнее писать своё, чем разбираться в чужих интерфейсах и прикручивать их.
Что касается испытаний для Wine, то пока все плохо. Первая попытка поставить убунту провалилась - инсталлятор линукса сначала показал 731% прогресса исполнения, а потом заявил, что отсутствует root file system или что-то в этом роде и предложил исправить дело в "partitioning menu", которое вызвать никак нельзя. На этом все и зависло. Я воспользовался инсталлятором убунты поверх винды (wubi.exe) и сказал ставить ее на свободный диск F. Там NTFS, подозреваю, что проблема в этом - хотя я надеялся, что инсталляшка по крайней мере сформатирует тот диск. Ан нет. Интересно, FAT32 ее устроит?
- Полный список изменений на странице загрузки
- Прямая ссылка для скачивания инсталлятора (11 Мб)
- Список возможностей редактора
no subject
no subject
вот только систему слотов-сигналов так и не появилось повода сделать - для реакций совсем другая схема
no subject
тащемта, это единственная библиотека из всех мной виденых, у которых стандартная документация достаточна для того, чтобы взять и писать.
я не к тому, что твоя библиотека хуёвая, я к тому, что Qt охуенная. %-)
no subject
no subject
совершенно согласен, да. но мы же все знаем, как программисты обожают писать документацию… read the source, Luke!
no subject
а какая? и ваще: покажи код, не жлобься. интересно же. обещаю ругаццо только по делу (скрестил за спиной пальцы %-).
no subject
1 - мессаги от виндов попадают в одно из окон, а потом начинают перекидываться по цепочке примерно в таком порядке, в каком имеют наибольший шанс быть "съеденными":
- от общей функции (типа handle(msg, WPARAM, LPARAM)) к частной (типа handle_key)
- от derived-класса к based-классу
- от child-окна к layout-у в котором оно лежит и далее по ветви к корню (parent-окну)
в какой-то момент мессагу кто-то съедает, просто прекратив пересылку по цепочке
там, где в QT пишется слот, я пишу виртуальную функцию, которая принимает мессаги нужного типа.
пример:
про вторую часть щаз напишу
no subject
то есть, в глубине Qt тоже, конечно, набор хандлеров, но он хорошо замаскирован. %-)
правда, в твоём варианте проще делать перехватчики, которые слопают или поменяют мессагу. в Qt есть фильтры, конечно, но выглядят как рукав на спине.
зыж а за скобочки на отдельных строках надо убивать, да. и за подчёркивания, потому что camelCase рулит. ну не смог удержаться! %-)
no subject
У меня обычно подчеркиваниями "выделяются" хандлеры и всякие коллбэки - так удобнее, сразу ясно, что вот handle_changed/send_changed_message будут дергать по событиям (handle_ - извне, send_ - вовне). А вот convertToTime - это некая функция общего вида.
no subject
а подчёркивания я ненавижу потому, что с паскаля начинал. а там сие не принято. %-)
mfc же — это ваще лютый пиздец, по-моему. не знаю, кто его придумал, но этому человеку надо отрезать половину жопы. это ж надо умудриться — иметь в руках c++ и так бездарно просрать все его полезные фичи.
Qt мне, кстати, нравится ещё и тем, что с ним stl нахуй не нужен. а stl я иррационально ненавижу.
no subject
у меня от STL только std::map, используемая в нескольких глубокожопных местах :) а так - тонна самопальных контейнеров. не так чтобы сильно отличающихся от STL по идеологии, просто больше функций и не надо писать длиннющие std::vector<хуй>::iterator...
особливо я люблю GBag - это хрень, куда можно сериализовать все подряд и потом доставать обратно
no subject
поэтому делаются эдакие "аддоны". у каждого окна есть некий "разъем", куда попадают сообщения. к этому "разъему" можно подключить 1 или несколько "аддонов", которые будут слушать собщения этого окна и добавлять функциональность, вызывая "редкие" виртуальные функции, но только для этого окна
пример.
"аддон" GPipka :)) реализует любые "кнопкоподобные" элементы окон, начиная от обычной кнопки и кончая закладками в таббаре, кнопками тулбара и прочая и прочая. GPipka конструируется окном с "кнопкоподобными" элементами и начинает слать особые "пипочные" сообщения:
- "а вот юзер навел на меня мышу, можно я отрисуюсь? только перечисли фоажки, как отрисоваться выпукло, с подсветкой, с градиентом или еще как"
- "а вот юзер таки на меня кликнул - давай делай что надо"
- и собственно главному окну стается минимум функционала: сказать, где у него "кнопкоподобное", не "задисаблено" ли оно - ну и отреагировать на нажатие
no subject
no subject
no subject
кстати, в Qt так тоже можно, тащемта.
а вот чем мне мок нравится, например — это тем, что в классе можно найти слот по сигнатуре. я так делаю консольные команды: класс с кучей приватных слотов и один парзер-диспетчер. удобно: дописал метод — и команда магически начала распознаваться. всё никак не соберусь сделать подобное для чистых сей, блин.
no subject
no subject
no subject
ушел спать :))