LINUX.ORG.RU

Что у нас есть для создания софта с кучей панелек?

 


2

2

Панельки инструментов как в гимпе или фотошопе. Или в эклипсе. Их можно таскать, закрывать-открывать, превращать в отдельные окна или наоборот, во вкладки, полностью перестраивая внешний вид приложения.

Пример: http://www.tipsquirrel.com/wp-content/uploads/2013/05/photoshop_3d_lights1.jpg

В эклипсе используется JFace, в гимпе GTK. Может быть еще есть что-то большое с подобными панельками, что там?

Сделай лучше как в блендере.

anonymous
()
Ответ на: комментарий от anonymous

Бывает. А свой код гораздо чаще. Быть может это и неправильно, но если я не могу написать строчку кода, сразу его запустить и увидеть что что-то пошло не так, а вместо этого я должен часами ждать компиляцию - тут что-то неправильно.

ruzisufaka
() автор топика
Ответ на: комментарий от ruzisufaka

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

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от ruzisufaka

Когда оно перестанет часами компилятся, тогда подумаю посмотреть на это ваше Куте

А еще, Земля - плоский диск, а не шар.

I-Love-Microsoft ★★★★★
()

Анонимус теперь осваивает гуй?

nezamudich ★★
()

Ты лучше скажи через ЧТО ты собрался показывать контрольное видео? То, которое в редакторе обязательно должно быть.

У тебя какой-то внутренний формат пикселей, припустим это RGBA 32 bit float. А если это YUV? Ты же реализуешь наложение в любом случае. Конвертить для показа каждый кадр? Глянул щас то что я тебе советовал wxWidgets и там полагаю все печально с перформансом к твоей задаче https://forums.wxwidgets.org/viewtopic.php?t=20074

Еще ты будешь выбирать (или уже выбрал) как хранить видеоряд. Либо свой формат, либо под видеопамять сразу, чтоб пересылать тупо копированием без конвертации.

Тулкиты это хорошо, но, только для накидать кнопочек. Но как только понадобится запилить что-то посложнее пейнта — ты зароешься в костылях для самописных компонентов. Может быть тебе стоит вместо «кучи пердящих панелек» выбирать тулкит максимально толерантный к написанию собственных компонентов?

Короче много нюансов. Это пока только то что я осознаю без каких-либо TODO.

deep-purple ★★★★★
()
Ответ на: комментарий от deep-purple

Продолжаем наблюдать, смотрим сорцы. В кденлайв монитор запилили на GLWidget. Ладно, допустим пусть теперь будет хорошим вариантом пилить на культях, благо есть где подглядеть реализацию..

Ну а кадры оно готовит для монитора так (оставлю ка я комментарии):

QImage Render::extractFrame(int frame_position, const QString &path, int width, int height)
{
    if (width == -1) {
        width = frameRenderWidth();
        height = renderHeight();
    } else if (width % 2 == 1) width++; // про высоту вообще молчок, если ширина равна 2 то сделать 3, чо за херь?
    if (!path.isEmpty()) {
        // созададим же продюсера ради одного кадра, после чего удалим его нахер
        Mlt::Producer *producer = new Mlt::Producer(*m_qmlView->profile(), path.toUtf8().constData());
        if (producer) {
            if (producer->is_valid()) {
                QImage img = KThumb::getFrame(producer, frame_position, width, height);
                delete producer;
                return img;
            }
            else delete producer;
        }
    }
    // тут какойто внешний продюсер, хз, зальем картинко черным цветом
    if (!m_mltProducer || !path.isEmpty()) {
        QImage pix(width, height, QImage::Format_RGB32);
        pix.fill(Qt::black);
        return pix;
    }
    Mlt::Frame *frame = NULL;
    if (KdenliveSettings::gpu_accel()) { // вот тут интересно, ускорение, ага
        QString service = m_mltProducer->get("mlt_service");
        //TODO: create duplicate prod from xml data
        // а не создать ли нам еще одного продюсера? чо мелочится
        Mlt::Producer *tmpProd = new Mlt::Producer(*m_qmlView->profile(), service.toUtf8().constData(), path.toUtf8().constData());
        // сеттим всякое гогно
        Mlt::Filter scaler(*m_qmlView->profile(), "swscale");
        Mlt::Filter converter(*m_qmlView->profile(), "avcolor_space");
        tmpProd->attach(scaler);
        tmpProd->attach(converter);
        // мотаем на нужный кадр, ёпт... рукалицо
        tmpProd->seek(m_mltProducer->position());
        frame = tmpProd->get_frame();
        delete tmpProd; // получили фрейм и удалили продюсера
    }
    else {
        frame = m_mltProducer->get_frame(); //  не, ускорения нет, давай возьмем из внешнего продюсера
    }
    QImage img = KThumb::getFrame(frame, width, height); // не ну а чо, фрейм прогоним еще и через тамблер
    delete frame;
    return img;
}
Посоны, это же на КАЖДЫЙ кадр происходит! Они чо, совсем долбанутые?

deep-purple ★★★★★
()
Последнее исправление: deep-purple (всего исправлений: 1)
Ответ на: комментарий от deep-purple

тулкит максимально толерантный к написанию собственных компонентов

Огласите весь список, пожалуйста!

anonymous
()
Ответ на: комментарий от anonymous

Я понятия не имею. Я только сказал что их надо либо щупать все самому, либо спрашивать у тех кто их давно ковыряет. Или ты про то что щупать? Ну, культи, говнотк, вхвиджетс, винапи (как ни странно), что-то еще?

deep-purple ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

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

Файлы - классические хелловорлды, с инклюдами возможны проблемы, но юзал готовые темплейты из комплекта поставки. Еще прозреваю возможны какие-то фокусы с линкером, но не уверен.

Проблема в том, что от того момента, когда я поправил одну строчку и нажал «запустить», сборка занимает 10-15 секунд (подозреваю, что в осномном линковка), а потом готовое приложение стартует еще столько же. Рантайм у кути жирный и неповоротливый. До момента, пока окошко отобразится, проходит секунд 30, да и то если повезет, бывает что и минута. Как только изначальная отрисовка закончена - все бегает более чем шустро. Для сравнения, на древних пентиумах в 2000 году я верстал гуй на HTML (HTA под виндой) и все это не только не тормозило, а обновлялось, запускалось и отрабатывало менее чем за секунду, причем делало это в супертормозном IE5. Да, возможно писать софт методом проб и ошибок - плохая затея, но уж как умею. Спросишь откуда часы компиляции? Да потому, что строчек надо написать много, запускать надо часто. В результате это не программирование, а бокс по переписке. И не надо про то, что медленные средства разработки дисциплинируют и все такое. Мне давно не 20 лет и дисциплинировать меня поздно.

ruzisufaka
() автор топика
Ответ на: комментарий от fluorite

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

ruzisufaka
() автор топика
Ответ на: комментарий от deep-purple

Контрольное видео (на самом деле вопрос тут не уместен) будет показывать отдельная подсистема. На данный момент в приоритете эмуляция CGA и это не шутка. Дело в том, что вывод видео - очень сложная задача, начиная от вывода данных в обычный оверлей/opengl, заканчивая разными аппаратными штуковинами и их режимами (к примеру, я могу не только вывести видео на железку, но и пустить на ней запись). А так как выводов видео будет много, то планируется плагинная система для всего этого.

Если ты спрашиваешь о хранении превью, то оно тоже может быть отрендерено в памяти в разные форматы. На данный момент планируется 2 формата: CGA (несжатое видео 2 бита на пиксель) и jpeg. Есть и другие идеи, но я не могу реализовать быстрые енкодеры/декодеры этих алгоритмов, а те что есть - сильно проигрывают в производительности. Так как видео много, то к скорости я на самом деле не очень критичен.

Из кастомных контролов будет пожалуй только таймлайн и разные графики, которые есть по сути картинки. А вот виджетов реально надо много, причем многие будут подгружаться динамически, причем во время работы приложения могут быть загружены новые библиотеки. Отсюда я и выбираю что полегче, никаких ресурсов, полная динамика и возможность сделать 10000 кнопочек одновременно (в разных панелях, секциях, внутри скроллинга)

ruzisufaka
() автор топика
Ответ на: комментарий от ruzisufaka

Это слишком много, какая-то ошибка, или проблема. У меня секунда, максимум две... Надо попробовать на другом компьютере...

Вообще, Qt довольно шустрое, не знаю что там такого медленного. Окошко через 30 секунд?.. Вот из Qt Creator-а повторный запуск приложения с окошком - у меня менее секунды.

Qt Creator одно из быстрейших IDE. Честно, ты меня удивляешь. Может потому у тебя такое странное впечатление от фреймворка.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от Deleted

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

Вообще, если однажды Qt не сможет работать еще и в браузерах, то начнет уступать таким вот штукам...

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Как раз из крейтора и пробовал. Повторный запуск конечно быстрее, 10-15 секунд. Компьютер не быстрый, но и не такой уж и старый, чтобы его менять. А учитывая экономическую ситуацию, дешевле сменить фреймверк. Или даже написать свой.

Впрочем, «любовь» к куте у меня еще с Qt3, когда я отказался от него и попробовал «жизнь без кути», то внезапно узнал, что компиляция+запуск могут занимать всего секунду и даже с хорошим гуем. Для примера, упоминаемый часто Нуклеар, именно так и компиляется - всего за секунду, а сам представляет собой лишь один инклюд и никаких либ. Да, огромная хрень для гуя компилится всего секунду или меньше.

ruzisufaka
() автор топика
Ответ на: комментарий от pleiotropy

Местный модератор запрещает мне правильно называть этот язык

ruzisufaka
() автор топика

Посмотри еще в сторону wxwidgets (хотя я с ним в свое время заахался).

pleiotropy
()
Ответ на: комментарий от ruzisufaka

Креатор даже с гектаром не тормозил бы. А проц какой? Ты заявляешь шокирующие вещи, не жмись с объявлением конфига. Или как ты умудрился засунуть 2 гига в 80486?

I-Love-Microsoft ★★★★★
()

turbo pascal/c wincrt demos, clipper tools ?

anonymous
()
Ответ на: комментарий от I-Love-Microsoft

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

В браузере, ЕМНИП, она могла крутится через java-plugin. Но с тех пор как NPAPI выбросили на свалку, javafx в браузере не запустить.

Deleted
()
Ответ на: комментарий от Deleted

javafx в браузере не запустить

Это грустно, и тот факт что нельзя без плагина как GWT. С другой стороны, на GWT не запустишь удобно на десктопе. Увы, фреймворка моей мячты не существует. Поэтому Qt 6 просто обязан быть выпущен с возможностью web, особенно на стороне браузера клиента...

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от ruzisufaka

Шо? У меня даже с valgrind'ом быстрее запускается. У тебя явно что-то не так

false ★★★★★
()

Eclipse E4 + JavaFx или SWT, например.
Кстати JavaFx запускают в браузере через TeaVM, не знаю только в каком оно сейчас состоянии.

xcariba ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.