Комментарии 15
кто привык изучать исходный код самостоятельно, репозиторий с исходным кодом библиотеки на Гитхабе.

Прошу прощения. Ссылка действительно не работает.
Вот актуальная ссылка на репозиторий:
https://github.com/Alexey-cpu/Frenchie.git
Ссылка на репозиторий с исходным кодом библиотеки исправлена. Она работает.
Это первая из цикла статей о создании компактной кросс‑платформенной библиотеки для разработки приложений с графическим интерфейсом на языке C++ — Frenchie.
Хотелось бы увидеть скриншот хотя бы тестового оконного приложения. Ваш файл «frenchie_doc_simple_window_example.gif» (почему бы не отобразить его в статье, чтобы текст не казался слишком унылым?) даёт какое-то представление о направлении использования библиотеки, но лично меня больше интересуют стандартные оконные программы, вроде, описанной в статье: «Минималистский графический интерфейс, на C++ / WTL, для консольного загрузчика» ( https://habr.com/ru/articles/955838/ ):

Библиотека Frenchie предназначена для быстрого создания оконных приложений с графическим интерфейсом на языке C++ по принципу immediate mode GUI.
Библиотека предоставляет функционал рисования большого количества виджетов типа кнопок, checkbox-ов, progress bar-ов и.т.д, а также виджетов для текстового ввода/вывода и отображения 2D графиков различных типов (на данный момент поддержаны, круговые и векторные диаграммы, а также обычные XY графики с различными режимами рисования).
Библиотека также поддерживает плавающие окна (docked windows), диалоговые окна, всплывающие и встроенные в окна меню. Недавно появился функционал drag and drop, а также виджет, который можно использовать как поверхность для рисования графических 2D примитивов. Вот скриншот примера работы тестовой программы:

Если хочется посмотреть больше примеров, можно клонировать репозиторий открыть папку с тестовым CMake проектом и запустить его. Тестовый проект демонстрирует почти все возможности библиотеки по созданию оконных приложений с графическим интерфейсом.
Вот скриншот примера работы тестовой программы:
Ну, это уже куда более «впечатлябельней»!
Если хочется посмотреть больше примеров, можно клонировать репозиторий открыть папку с тестовым CMake проектом и запустить его.
Это, конечно, здорово, для тех, кто в теме работы с «CMake». Я вот попробовал использовать v. 3.31, но появляется куча ошибок. В общем, надо разбираться.
В идеале было бы, если бы Вы дали файлы проектов, для своих демо, например, для MS VS C++ 2019. А так, библиотека то кроссплатформенная, но чтобы запустить проект под «Форточки», нужно, как всегда в подобных случаях, знатно поплясать танцы с бубнами. А для этого, как минимум, нужен стимул, чтобы разбираться. При этом, библиотека то у вас очень большая, более 32 МБ, но, скажем для моих целей, мне вполне достаточно C++ / WTL, причем, фреймворк используется в исходниках (h-файлы), общий размер которых менее полутора мегабайт.
Интересно, какие ошибки сыплются при работе с CMake ? Если несложно, сбросьте файлы логов. Да, для visual studio нужно будет сделать проекты, чтоб из неё тоже можно было изучать возможности библиотеки.
Если несложно, сбросьте файлы логов.
Ну, я не силен в CMake. Вот, только сейчас скачал его для экспериментов. Логи я там не нашел. Только файл: http://zarion.webservis.ru/Pics/CMakeCache.txt . А изображения можно посмотреть здесь:



Тут проблема в том, что CMake не может скачать репозиторий sdl3, используемый в проекте. Судя по ошибке, команда git clone не может выполнится. Скорее всего, у вас git либо не установлен, либо его нет в переменных окружения операционной системы.
Да, по поводу картинок Вы правы. В следующих статьях цикла добавлю больше иллюстраций. В этой же статье речь шла в основном про архитектуру библиотеки и про то, как в ней устроен жизненный цикл приложения, поэтому вместо картинок было очень много примеров с исходным кодом.
В этой же статье речь шла в основном про архитектуру библиотеки и про то, как в ней устроен жизненный цикл приложения, поэтому вместо картинок было очень много примеров с исходным кодом.
На самом деле, чтобы сразу заинтересоваться «архитектурой библиотеки» и просмотром «очень много примеров с исходным кодом» как бы недостаточно одного заголовка. Тем более, что универсальность его, скорее всего, относительна.
Вот, есть такая китайская опенсорсная графическая библиотека «DuiLib». Довольно занятная вещь, даже заинтересовался на первом этапе (благо было много примеров и картинок). Долго экспериментировал, пока не понял, что для моих целей она не слишком годится.
Поэтому, архитектура архитектурой, но «первое впечатление» создает не она, а визуальная демонстрация.
Обалдеть, как так вышло что я тоже уже полгода делаю свой движок для создания графических приложений? Даже несколько либ написал, как такое возможно... может коммент не о чем, но просто забавно видеть такое. В том смысле что для меня тоже создание граф приложений на с++ проблема. Недавно нашел баг в алгоритме интерполяции и для наглядности хотел по быстрому сделать проектик в котором по быстрому отлажу алгоритмы строя графики интерполяционных кривых, но чтобы это сделать надо... подключить глфв, подключить глев или глад, настраивать инициализации, контексты, создавать шейдеры писать их, потом пайплайн, организация данных... короче такой геоморой. Вот была бы либа где можно было бы легко рисовать то что тебе надо! В общем я решил написать инструменты для этого, сижу параллельно воплощаю идею в реальность и интересно совершенно случайно наткнуться на такое
Правда в последнее время это отошло на второй план из-за создания кодогенератора. Писать прототипировать на с++ сплошной гемморой из-за специфики разработки на этом языке. Нет, мне нравится с++, но честно, поддерживать структуру проекта, добавлять удалять файлы, разделять объявление и реализацию в разных местах... это же такая унылая работа, а еще надо за сборкой следить если вы пишите на симейке. Такое есть у вижуал студио, но там примитивная генерация классов, а вот можно было бы по факту делать рефакторинг или просто создавать классы по абстрактному описанию. Я ярый пользователь современного с++ и часто пишу используя шаблоны, из последних работ я не помню когда отказывался от шаблонов, в общем там своя специфика из-за которой реализацию нельзя делать в еденице трансляции, а писать процедуру в объявлении! Вы что, это моветон для с++! Так что приходится реализацию писать либо в другом хедере, либо в этом же хедере но под объявлением класса, либо в инл файле, и нет я не стебусь над возможностью языка, просто столько условностей компиляции, которые надо держать в голове только чтобы просто сделать небольшую программу правильно... это то с чем питон юзерам или впринципе юзерам любых других популярных языков программирования никогда не придется столкнуться. Есть ли такие инструменты? Да есть, но часто они платные либо гавно, то что я описал примерно есть на слионе, но онр весят дофига на мой взгляд и платные :), во всяком случае я не работал в айти еще ни разу, но пару лет пишу на с++ и честно, спустя столько времени возник только один вопрос: почему такой кодогенерации нет на просторах? Или лучше, почему еще не додумались сделать это стандартом??? Я за неделю полторы настрогал модель языка в оопшной манере, есть уже кодогенерация, осталось только подправить генерацию алиасов и некоторых случаев связанных с шаблонами и зависмыми именами типа при случае:
struct Type {
using field = int;
}
template<typename T>
typename T::field something();Что-то вроде этого, и все кодогенератор по сути готов, во всяком случае это тема для отдельной статьи. Странно что наверняка для многих это такая больная тема, но по факту чего такого нет вообще, простого понятного и удобного. Честно хз, зачем я пишу это все, наверное, нет людей которым я мог бы рассказать это все, так что - спасибо за внимание. Может увидимся в статье

Как я делал компактную библиотеку для создания приложений с графическим интерфейсом на языке C++. Часть-1 — Основы