Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build Kicker from KDE3 inside KDE4 #4

Open
midenok opened this issue Oct 17, 2013 · 2 comments
Open

Build Kicker from KDE3 inside KDE4 #4

midenok opened this issue Oct 17, 2013 · 2 comments
Labels

Comments

@midenok
Copy link
Member

midenok commented Oct 17, 2013

Get kicker from here:
svn://anonsvn.kde.org/home/kde/tags/KDE/3.5.10/kdebase/kicker

Put Kicker nearby Plasma. Try to compile it like Plasma is compiled. You will see a lot of unresolved dependencies which you need to port into KDE4-style.

@midenok
Copy link
Member Author

midenok commented Oct 23, 2013

  1. Do not compile following directories, exclude them from processing:
  • applets
  • extensions/dockbar
  • extensions/kasbar
  • extensions/sidebar
  • menuext

@midenok
Copy link
Member Author

midenok commented Oct 25, 2013

Я тут ещё разок подумал на эту тему. И пришёл к выводу, что подход "вширь" здесь не совсем подходит. Здесь нужен подход "вглубь". По крайней мере, начинать надо с него. Что это означает? Мы делаем маленький, но компилирующийся и работающий стаб. Затем по-маленьку накидываем туда классы из кикера, параллельно решая все зависимости и каждый раз добиваясь компиляции и безотказной работы. Итак, вот примерный план работы:

  1. Создать компилируемый и работающий стаб. Для этого нужно создать пустую поддиректорию (как мы делали с кикером), создать там один .cpp файл и закинуть туда самый начальный класс из плазмы (тот, который мы видели в отладчике, потомок от QApplication с методом kdemain()). При этом, этот класс надо очистить от всей функциональной "шелухи". Т.е. сделать его абслоютно пустым, так чтобы не было никаких зависимостей и наш исходник компилировался без проблем.
  2. Затем этап второй -- добиться успешного запуска. Что это означает? Нужно, чтобы вместо kdeinit_plasma в KDE4 (в скрипте startkde) запускался наш новоявленный модуль. Назовём его для простоты kicker4. Это, возможно, сопряжено с небольшими осложнениями. А именно, возможно нужно будет накинуть какой-то функционал из kdemain() и появятся какие-то зависимости. Что именно нужно будет накинуть, не взяв ничего лишнего -- это уже задача интеллектуальная.
  3. Этап третий. Мы уже имеем запускающийся (и возможно сразу же завершающийся) kicker4. Можем заходить в него в отладчике. Теперь мы начинаем по-маленьку накидывать туда функционал из kicker3 (так я буду называть kicker из KDE3, чтобы не было путаницы). Какой именно функционал -- тот, который будет рисовать что-то на экране и оставит запущенным kicker4 не позволяя ему завершиться.Отрисовываться будет остов от панели taskbar из kicker3. Пока что, на этом этапе больше ничего не нужно -- никакие события от мыши и клавиатуры можно не обрабатывать. Подозреваю, что уже этот минимальный функционал потянет за собой какие-то зависимости из kde3. Интеллектуальная задача будет состоять в том, чтобы решать есть ли такой функционал в kde4, и если есть -- адаптировать эти зависимости под функционал из kde4. Если же мы в kde4 ничего похожего не найдём, придётся тащить из kde3, итеративно пытаясь решить эту интеллектуальную задачу. И так -- до тех пор, пока мы не удовлетворим все зависимости только средствами kde4.
  4. Т.е. идея в том, что мы с минимальным продвижением вперёд каждый раз добиваемся работающего кода. Именно это залог успеха. Итак, мы уже имеем запущенную панельку в kicker4. Она ещё пока ничего не умеет делать, только светится на экране. Теперь, уже порядком намонстрячившись в разрешении зависимостей, мы начинаем потихоньку накидывать остальной функционал из kicker3 применяя методику п.3. Параллельно решая вопрос что надо, а что нет. Т.е. накидывать будем не всё подряд, а только процентов 70 того, что действительно полезно. Мусор брать не будем.
  5. Этап пятый -- удовлетворить требования KDE4 к kicker4. Ведь не только оболочка требует что-то от окружения, но и окружение может задавать какие-то стандарты, которым должна удовлетворять оболочка. Это может быть не сразу заметно, а в процессе тестирования, когда будет выясняться, что некоторые компоненты KDE4 использовали для своих нужд плазму и в отсутствии её работать отказываются. Будет решаться накидыванием этого функционала из плазмы в kicker4.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant