PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Разработка программ (http://pccar.ru/forumdisplay.php?f=27)
-   -   Очередной мега-фронт-енд. (http://pccar.ru/showthread.php?t=13648)

AndreyAv 21.11.2010 19:37

Очередной мега-фронт-енд.
 
Раньше пользовался Centrafuse 2, сейчас 3.1, в общем-то почти устраивает, но раздражают тормоза и есть проблемы с изменением скина. Роадраннер пытался покрутить пару раз, почему-то не вдохновило, не знаю почему конкретно. Разработки здешних пользователей глядел, те же яйца, только вид сбоку - каждый делает то что интересно именно ему, хотя это в общем-то нормально.

Решил в свободное от отдыха время придумать что-то принципиально другое. Вот что получилось:
1. Основа для функциональности - скриптовый язык Lua с JavaScript-подобным строением объектов. В основу философии положил объект node, который имеет родителя, детей, положение, размер, текстуру и прочие нужные-важные поля. Кроме того есть базовый объект root, от которого все растет. Работает это примерно так:
local node = root.createNode({id="Main", visible=true})
node.left = 0 (можно так)
node.top = 0
node.setAttr({width=800, height=600}) (можно и так)
node.onLeftPress = function(this)
(и так далее...)
end
Для мультимедиа-функций будет существовать глобальный объект objects.mediaPlayer с методами (например startTrack) и событиями (например onTrackEnd). Ну и подобные объекты для других глобальных подсистем.
Lua быстра, а учитывая то что при первом запуске скрипт компилируется и лежит в памяти готовым-для-запуска, оно вообще летает.
2. Основа для графики - OpenGL. Решает проблемы с корректным масштабированием, со скоростью отрисовки, но не жрет много ресурсов.
3. Встраивание приложений - возможно будет как базовый модуль (например objects.extApps). Сейчас встраивание готово, в Lua пока не добавлено, но работает корректно и глюков с непрорисовкой главного меню iGo (как в Centrafuse 3.1) нет.

Основной плюс в том, что фактически оболочка получается с открытым кодом в текстовом виде (за исключением движка конечно же). На этом движке можно будет сделать не только фронт-енд, а хоть авторан для dvd, и вообще любую визуальную программу, основанную на спрайтах.

Может кто-нибудь покритикует идею, чтобы убрать слабые места, о которых я не подумал?

beaverBox 21.11.2010 21:40

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

AndreyAv 21.11.2010 22:45

Цитата:

Сообщение от beaverBox (Сообщение 162491)
А чего ж не поюзать xml, раз всё в нодах? И читабельней в разы, и работать с ним приятней, раз уж всё в открытотекстовом виде жить будет.

Ну xml вообще очень статичен. Вот например простейший обработчик кнопки "next track" на моем lua:

local size = objects.mediaPlayer.getPlaylist().getSize()
local index
if objects.storage.getBoolean("Shuffle") then
index = random(size)
else
index = objects.mediaPlayer.getPlaylist().getTrack() + 1
if index == size then
index = 0
end
end
objects.mediaPlayer.startTrack(index)

Такое на xml невозможно.

grblmm 21.11.2010 22:49

а чего ж идею критиковать ) выкладывай на общее обозрение, будем ловить баги и критиковать)

AndreyAv 21.11.2010 22:54

Цитата:

Сообщение от grblmm (Сообщение 162505)
а чего ж идею критиковать ) выкладывай на общее обозрение, будем ловить баги и критиковать)

Если что-то было задумано сильно не так, то потом в какой то момент придется все сильно переписывать. Уверен на 99% что мне будет лень.

__virus__ 22.11.2010 00:20

Идеи всегда имеют права на жизнь! Но тебе не кажется, что получится слишком уж сложно?
Я не работал с Lua, но в конечном итоге у тебя получится еще 1 узкоспециализированный язык для разработки чего угодно. Это тот же , что и с++, c#, delphi и т.д. и т.п. но ориентированный на определенный результат.

Это пока идея, и чтобы понять как это все будет выглядеть и насколько будет удобно нужно это увидеть в реализованном виде. В большинстве случаев, никому не нужно, лазить в сурсах проекта, и что-то там менять. Нужен документированный интерфейс, для подключения внешних модулей + легкий способ изменить интерфейс окна. Думаю, как-то так! :)

grblmm 22.11.2010 03:02

по поводу идеи, хотелось бы видеть такое(помимо того что уже перечислено):
1. помимо мр3 обязательно поддержка CUE
2. легко создаваемые скины которые могут полностью менять внешний вид программы.
удачи в разработке) готов стать бета тестером под вин7 и ХР

beaverBox 22.11.2010 09:09

Цитата:

Сообщение от AndreyAv (Сообщение 162503)
Ну xml вообще очень статичен. Вот например простейший обработчик кнопки "next track" на моем lua:

local size = objects.mediaPlayer.getPlaylist().getSize()
local index
if objects.storage.getBoolean("Shuffle") then
index = random(size)
else
index = objects.mediaPlayer.getPlaylist().getTrack() + 1
if index == size then
index = 0
end
end
objects.mediaPlayer.startTrack(index)

Такое на xml невозможно.

Если говорить о треках - зачем изобретать велосипед? Я бы использовал изобретенный замечательный foobar.
А по использованию xml - я бы в нем хранил интерфейс.
А в приведенном примере я вообще не увидел применения xml.

AndreyAv 22.11.2010 12:22

Насколько я знаком с xml - это язык разметки со структурой дерева, к программированию никакого отношения не имеет, к конфигурации больше. Я хочу сделать все-в-одном, то есть и логика и скин определяются одним языком одинаково. Хочешь поправить расположение элемента - правишь циферки, хочешь логику срабатывания - правишь буковки. Причем логику не в пределах, дозволенных базовой программой, а гораздо шире, потому что базовая программа на себя много не берет, а отдает скрипту.
Насчет фубара подумаю, но пока bass как обычно.

St@rz 22.11.2010 12:30

BASS почти у всех есть. Лучше SDK Foobar2000 посмотри.

Тем более что... :)
Цитата:

Сообщение от AndreyAv (Сообщение 162507)
Если что-то было задумано сильно не так, то потом в какой то момент придется все сильно переписывать. Уверен на 99% что мне будет лень.



Часовой пояс GMT +4, время: 17:43.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot