Как стать автором
Обновить
0

GTK+ *

Кроссплатформенная библиотека элементов интерфейса

Сначала показывать
Период
Уровень сложности

Gtk, OpenGL и все-все-все

Время на прочтение4 мин
Количество просмотров6.5K

Не так давно мне пришлось столкнуться с использованием OpenGL в Gtkmm версии 3. В данной статье я постараюсь изложить детали имплементации стандартного виджета для OpenGL-графики.

Читать дальше →

Выявляем опечатки в проекте GTK 4 с помощью PVS-Studio

Время на прочтение16 мин
Количество просмотров1.9K

0793_GTK_4_continue_ru/image1.png


Возможно, вы уже читали недавнюю статью о процессе первого запуска PVS-Studio на примере проекта GTK 4 и о первичной фильтрации предупреждений. Теперь пришло время поработать с полученным отчётом более подробно. И как уже догадались наши постоянные читатели, предлагаю вашему вниманию статью с описанием найденных в коде ошибок.

Читать дальше →

GObject: наследование и интерфейсы

Время на прочтение8 мин
Количество просмотров6.8K
В комментариях к прошлой статье часто высказывалось мнение, что система GObject не нужна ввиду наличия C++ и других высокоуровневых языков. Помимо чисто технических моментов, о которых уже поговорили в комментариях, хотелось бы затронуть другой аспект. Вероятно, большинство комментаторов видит смысл существования объектной системы GLib в упорном нежелании сишников-ретроградов пользоваться благами цивилизации и смиряться с неумолимой поступью прогресса. Вероятно, так оно и было на заре развития Glib/GTK, зародившихся в мире UNIX-систем, GNU, open-source, идей Столлмана, и т. п. Большая часть того поколения хакеров действительно предпочитали Си, в то время как C++ был относительно молод и неразвит и преимущества его использования казались не настолько очевидными.

Сегодня, разумеется, для новых проектов большинство из нас предпочтёт использование более удобных, лаконичных и безопасных языков, даже если будет знаком со всеми нюансами использования GObject. Однако не стоит упускать из виду, что за 20 с лишним лет существования GLib/GTK с их использованием были созданы тысячи приложений и библиотек, многие из которых активно развиваются и поныне тысячами программистов со всего мира. В них добавляется новый функционал, вылавливаются баги, их адаптируют к современным технологиям вроде HiDPI-экранов, Wayland, Vulkan, и т. д. Для того, чтобы читать (дополнять, исправлять) код таких проектов, необходимо иметь базовые знания объектно-ориентированных расширений для Си, о котором мы с вами ведём речь.

Засим милости прошу под кат. Тренируемся, как обычно, на кошках :)


Читать дальше →

Локализация простой pygtk программы c glade формой в Linux

Время на прочтение9 мин
Количество просмотров6K
Сразу оговорюсь, что python и gtk у меня 2й версии.

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

Чего нет в этой статье:
— как делать перевод формы в процессе работы. Этого я не смог найти, а хотелось бы знать…
— как делать перевод текста в .py коде в процессе работы.
— пива, блэкджека и остального тут тоже конечно нет.

Перевод будет осуществляться с помощью указания локали при старте (или локали по умолчанию).

Читать дальше →

Создание приложений на GTK+/gtkmm с использованием среды Glade

Время на прочтение7 мин
Количество просмотров18K
Данный пост является дополнением к статье «Создание приложений на GTK+ с использованием среды Glade». Когда я начинал её читать, и наткнулся на слова о том, что пример будет на C++, то заранее обрадовался, так как на тот момент искал примеры связки Glade с gtkmm – обёрточной C++ библиотекой для GTK+. Каково же было моё разочарование, когда оказалось, что автор по непонятным для меня причинам код на C, использующий сишный API GTK+, поместил в ".cpp" файл и назвал это примером на C++. В итоге, я решил самостоятельно трансформировать сишный пример из той статьи на C++. Результат выносится на суд читателей.
Читать дальше →

ToolKit на базе Eclipse и GTK+, для «Toradex Colibri T20 (Linux)»

Время на прочтение4 мин
Количество просмотров3.2K
Эта статья рассчитана прежде всего на то, чтобы сэкономить время при создании тулкита, но при этом я постараюсь рассказать все достаточно объемно.

Описание оценочной платы
Плата составлена на базе двухъядерного процессора «NVIDIA Tegra Cortex-A9».
Может работать на Windows CE 7.0* и Linux.
RAM: 512MB
Полные характеристики доступны по ссылке.
*Должен предупредить — я не рекомендую WinCE7.0 в качестве ОС для данной платы, если принципиальным для разработки является C++, т.к toolkit лично мне собрать было не просто. Исключение — если ваше приложение является консольным, тогда проблем возникнуть не должно. CoDeSys и C# — проблем не вызывают.
Внешний вид платы
image
image


Содержание
  1. Скачать все необходимое
  2. Установка SDK
  3. Проверка SDK
  4. Установка Eclipse
  5. Подключение GTK к Eclipse
  6. Настройка проекта Eclipse
  7. Результат


Скачаем все необходимое:


Первое — это SDK для платы, которое можно скачать на официальном сайте Toradex.
Второе — нам нужен хост с Ubuntu 16.04 LTS.
Третье — непосредственно Eclipse для C/C++.
Читать дальше →

Двигаемые мышкой виджеты. Drag and drop в пределах окна

Время на прочтение9 мин
Количество просмотров4K

Обычное понимание Drag and Drop(D&D) предполагает, что берётся, например, ссылка на файл из одного виджета и перемещается мышкой в другое окно или виджет. Далее пойдёт речь не о библиотечных функциях D&D, а о собственной реализации перемещения виджета в пределах окна и сопутствующего функционала. Код больше для примера, чем конкретного практического применения, написан в стиле Си с классами. Редактор — CodeBlocks 17.12, который перестал вылетать на Ubuntu x64 по сравнению с 16-ой версией.

image
Читать дальше →

Использование GtkApplication. Особенности отрисовки librsvg

Время на прочтение12 мин
Количество просмотров3.7K
Аннотация статьи.

  • Использование GtkApplication. Каркас приложения. Makefile.
  • Отрисовка библиотекой librsvg.
  • Экспорт изображения в GtkImage и его масшабирование.
  • Масштабирование SVG самописными функциями.
  • Получение полного пути в приложениях.
  • Тесты быстродействия GtkDrawingArea vs GtkImage.
Читать дальше →

Библиотека Granite от elementary OS

Время на прочтение9 мин
Количество просмотров2.6K

На данный момент существует множество различных операционных систем на базе ядра Linux. Буквально на любой вкус. Некоторые операционные системы пользуются уже готовыми графическими оболочками, а другие создают свои. 

В дистрибутиве elementary OS применяется свое окружение рабочего стола под названием Pantheon. Имеется небольшой набор своих приложений. Есть файловый менеджер, текстовый редактор, почтовый клиент, эмулятор терминала и прочее.

Также для elementary OS была создана своя библиотека виджетов под названием Granite. Она как раз и применяется при создании приложений для этого дистрибутива. Данная библиотека похожа на Libadwaita от проекта GNOME. Эта библиотека так же, как и Libadwaita, предоставляет некоторое количество компонентов для конструирования пользовательского интерфейса.

В этой статье я хочу рассмотреть некоторые компоненты из библиотеки Granite. Приложения для elementary OS пишутся преимущественно на языке программирования Vala. Далее примеры кода будут приводиться именно на этом языке. Репозиторий библиотеки можно найти здесь.

Читать далее

Основной инструментарий для разработки приложений на Gtk

Время на прочтение7 мин
Количество просмотров5K

Фреймворк Gtk пользуется достаточно большой популярностью среди разработчиков приложений. И вполне очевидно, что для популярного фреймворка должны существовать удобные и надежные инструменты разработки. Так и есть.

В этой статье хотелось бы рассказать о некоторых инструментах, которые я использую для создания приложений на Gtk. Рассматривать мы их будем на примере приложения Zodiac.

Читать далее

Реализация дерева на GtkListView в GTK 4

Уровень сложностиСложный
Время на прочтение8 мин
Количество просмотров2.6K

В GTK 4.10 виджет GtkTreeView (как и всё сопутствующее) был объявлен устаревшим. Сложный и громоздкий подход к построению деревьев решили упростить в пользу использования обычных виджетов. В качестве замены предлагается использовать виджеты GtkListView и GtkColumnView, которые сами по себе из коробки формировать деревья не умеют, но с точки зрения прикладного интерфейса используют более простую схему с обычными виджетами для отображения данных. Хотя предложенная схема более простая с точки зрения поддержки, для реализации деревьев она всё ещё сложна, поскольку деревья теперь реализуются посредством дополнительных механизмов.

Читать далее

Разработка игр на Kotlin Native. Часть 1

Время на прочтение9 мин
Количество просмотров14K

Возможность компиляции Kotlin в нативный код, который может использовать С-библиотеки позволяет разрабатывать мультимедийные приложения и игры на основе библиотек SDL, GTK/OpenGL, GDX и специализированных библиотек для Kotlin (например, KorGE). В этой статье мы последовательно создадим кроссплатформенную реализацию Pacman (как для мобильных платформ, так и для компьютеров на Windows / Linux / MacOS).

Читать далее

angelspie — управление окнами в X11, глобальные и не только горячие клавиши

Время на прочтение2 мин
Количество просмотров1.9K

Название - отсылка к devilspie, похожей утилитой. Она примечательна тем, что конфиг пишется на диалекте лисп, несмотря на это у неё весьма ограниченные возможности. Тем более у утилит типа wmctl и т.п.

С помощью библиотеки wnck можно делать куда больше, а ещё больше если задействовать gdk.

Для глобальный горячих клавиш я использовал libkeybinder, раньше я делал такое на "голой" xlib, но так удобней(и переносимей). Впрочем xlib/xtest тоже используется - чтобы эмулировать нажатие кнопок. Но эти функции опциональны.

В качестве формата конфига я выбрал yaml. Более старые версии использовали конфиг на питоне, но я решил что yaml удобней конечным пользователям. Тем более в него можно встраивать код на python и sh.

В детали реализации я вдаваться не буду. Там много магии и метапрограммирования, часть кода сгенерирована.

Лучше покажу пример конфига, который использует часть возможностей. Кстати, новые правила можно генерировать из командной строки, оно возьмет name и class_group активного окна.

Читать далее

Ближайшие события

Автоматический переводчик на Python+GTK3. Альтернатива Яндексу

Время на прочтение1 мин
Количество просмотров27K
Ну вот и пришел долгожданный конец халяве(статья).



Честно говоря, было немного обидно. Вот чего им не хватает!

Я, разумеется, начал искать выход для себя и друзей. И нашел.
Читать дальше →

Адаптивный дизайн приложений на Gtk

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров3.6K

Основные рабочие среды из мира GNU/Linux — это GNOME и KDE Plasma. До недавнего времени их можно было видеть только на десктопах, но сейчас эти окружения можно заметить и на мобильных девайсах. Эти девайсы не слишком распространены. Десктопный Linux встречается гораздо чаще.

Для того чтобы внедриться в мир адаптивных интерфейсов, в сообществе KDE был создан целый фреймворк под названием Kirigami. О нем можно прочитать в этой статье.

Разработчики из сообщества GNOME Foundation пошли похожим путем, создав библиотеку виджетов libadwaita в дополнение к Gtk4. До нее там тоже были некоторые способы создания адаптивных интерфейсов. Например, при помощи библиотеки libhandy. Но речь пойдет не о них.

В этой статье я хочу рассказать о том, что привнесла в создание адаптивных интерфейсов libadwaita. Для примера я приведу код из нескольких приложений, среди которых есть приложения собственной разработки.

Читать далее

Библиотека Helium от проекта tauOS

Время на прочтение7 мин
Количество просмотров1.5K

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

Ребята из tauOS решили, что существующих библиотек в мире явно недостаточно, и запилили еще одну. Так появилась библиотека виджетов под названием Helium. Она основана на GTK и предоставляет разработчикам некоторое количество готовых компонентов для создания графического интерфейса пользователя.

В этой статье я хочу немного рассказать о компонентах библиотеки Helium, о том как запускать приложения, написанные с ее помощью, и как на ней разрабатывать свои программы. Репозиторий библиотеки можно найти здесь. Все действия, приведенные в этой статье, выполнялись в Fedora Linux 39 (Workstation Edition).

Читать далее

Рисование графика при помощи cairo в GTK3

Время на прочтение5 мин
Количество просмотров6.5K
image

В качестве входных данных выступает массив типа float. Программа организует отображение, растягивание, прокрутку графика.
Читать дальше →
2