Мар 11

Каждый разработчик, знакомый с Qt, знает об используемом в этой библиотеке паттерне сигналов и слотов. Традиционно синтаксис соединения сигналов и слотов в PyQt и PyKDE выглядел очень похоже на аналогичный синтаксис в C++:

from PyQt4 import QtCore
from PyQt4 import QtGui
from PyKDE4 import kdeui

class MyGUI(QtGui.QWidget):

    def __init__(self, parent=None):
        super(MyGUI, self).__init__(parent)
        self.pushbutton = kdeui.KPushButton()
        self.pushbutton.setText("Push me!")

        QObject.connect(self.pushbutton, QtCore.SIGNAL("clicked()"),
                               self.button_pushed)

    def button_pushed(self):
        print "Button clicked"

Однако в PyQt 4.5 была добавлена поддержка нового стиля соединений:

from PyQt4 import QtCore
from PyQt4 import QtGui
from PyKDE4 import kdeui

class MyGUI(QtGui.QWidget):

    def __init__(self, parent=None):
        super(MyGUI, self).__init__(parent)
        self.pushbutton = kdeui.KPushButton()
        self.pushbutton.setText("Push me!")
        # New style
        self.pushbutton.clicked.connect(self.button_pushed)

    def button_pushed(self):
        print "Button clicked"

Будучи основанной на PyQt4, PyKDE4 также теперь поддерживает этот синтаксис. Как видите, код таких соединений выглядит гораздо компактнее и выразительнее, и более «по-питоновски». Кроме того, если раньше было трудно отследить возможные ошибки, допустив опечатку в названии сигнала или слота, то теперь любая опечатка вызовет исключение AttributeError.

Подробнее использование нового стиля описано в документации к PyQt.

Обратите внимание: если вы решили перейти с PyQt на PySide, то этот синтаксис вам пока ещё не доступен. Тем не менее, разработчики PySide планируют исправить это в будущих версиях библиотеки. Детали реализации нового стиля сигналов и слотов в PySide описаны в этом документе.

мая 24

Глядя на последние игры для Nintendo, Sacha Schutz решил заняться вопросом управления в играх с помощью изображения, полученного с камеры. Автор поста решил взять библиотеку openCV как источник видео информации и использовать некоторые функции распознавания видео. Идея заключается в том, чтобы загрузить картинку с веб-камеры в качестве текстуры KGLTexture и использовать ее в KGLengine.

Непонятным остается тот факт, что в KDE до сих пор нет официальной библиотеки/приложения для работы с веб-камерами. Phonon пока что этого не умеет, в то время как в GNOME есть превосходно функционирующий Cheese. Поэтому автор создал KCamWidget – виджет, работающий с openCV. Код смотреть здесь: kcamwidget.cpp и
kcamwidget.h

Для демонстрации его возможностей на скорую руку была сделана простейшая программа — kcam. Вот её скриншот:

KCamWidget в действии

В дальнейшем Sacha планирует создание приложения, которое бы использовало шейдерные эффекты GPU в реальном времени (с помощью библиотеки Gluon) и звукозапись.

мая 09

С релизом KDE 4.3 появится на свет новый протокол системного лотка, разрабатываемый для большей унификации и стандартизации между различными окружениями рабочих столов. Аарон Сейго перечисляет её преимущества:

  • Скорость: иконки в системном лотке появляются “моментально”, а не по прошествии заметного пользователю периода времени.

  • Красота: иконки теперь правильно масштабируются и перерисовываются, а так же могут быть изменены для соответствия темам оформления — ничто из этого не было возможным в старой системе.

  • Альтернативное отображение: предполагается, что эта особенность придётся очень кстати для предоставления специальных возможностей, потому как теперь можно сделать системные лотки произвольных размеров. Фактически, вместо стандартных 22-х пиксельных значков, теперь можно использовать текст, звук или просто ОГРОМЕННЫЕ иконки.

  • Множественные копии: теперь каждый элемент может быть отображен в нескольких местах; это позволяет не только иметь системный трей на каждом экране в многомониторных системах, но и открывает возможность интеграции элементов с их значками в панели задач, без необходимости удаления старого системного лотка или “срастания” виджетов системного трея и панели задач. Это также открывает перспективу разделения системного лотка между несколькими виджетами, специфичными для конкретной категории значков: например, обмена сообщениями (без необходимости патчить все приложения для такого специфичного случая).

  • Взаимодействие: способ взаимодействия теперь полностью определяется реализацией отображения системного лотка. Так, например, вместо “щелчка средней кнопкой мыши” у нас появится “вторичный способ активации”. Для стандартного виджета системного трея это фактически и будет соответствовать щелчку средней кнопкой, но можно будет, например, создать такую реализацию, чтобы активация действия происходила по голосовой команде

  • Информация о приложении: теперь программа может сказать: “этот элемент даёт информацию об аппаратном обеспечении” или “вот этот элемент требует внимания!”. Теперь, когда система может знать о типе и состоянии конкретного элемента (и вообще любую другую информацию, которую мы сочтем нужной), мы наконец-то сможем получить то, что было в других системах “всегда” — например, умное скрытие иконок в зависимости от их значимости (конечно, это не отменяет возможность ручной настройки).

  • Обратная совместимость: все будет прекрасно работать и со старым протоколом системного лотка.

Читать далее »

Мар 19

На LOR’е и OpenNet’е вовсю обсуждают заметку в блоге Мигеля де Иказы, в которой он пишет о проекте Qyoto. Что интересно, большая часть обсуждающих не потрудилась разобраться, что это за проект, но своё категорическое мнение это им высказать не помешало.

Qyoto позволяет программистам на C# (и других .NET-языках) использовать Qt (вместо принятой в .Net Windows Forms). То есть Qyoto для C# — это то же, что и PyQt — для Python’а.

Qyoto НЕ является Qt-версией Mono. Собственно, чтобы запустить любое Qyoto-приложение под Linux, вам нужно будет этот самый Mono сначала установить.

Также многие почему-то решили, что Qyoto — проект Иказы. Нет, Qyoto является частью KDE Bindings. Более того, Qyoto не является частью тайного заговора, призванного заставить всех программистов мира использовать .Net. Вовсе нет! На самом деле Qyoto является частью тайного заговора, призванного переманить всех программистов мира на Qt и KDE Libs. Только тссс! (Другое дело — много ли найдётся желающих ставить Mono вместе с KDE?)

Одним из первых Qyoto-приложений стал джаббер-клиент Synapse.

Мар 10

В последнее время разработчики KDE активно работают над новой экспериментальной веткой реализации JavaScript. Уже сейчас она работает на 40% быстрее, чем реализация, используемая в KDE 4.0.2, а кроме того в ней заложен потенциал для будущих оптимизаций.

KJS позволяет использовать JavaScript в ваших приложениях, а также с его помощью можно писать на этом языке DataEngine’ы и апплеты Plasma.

Фев 26

Вот тут анализируются изменения диалога печати от KDE 3.5 к KDE 4.0 и к нынешнему рабочему варианту в 4.1:

Диалог печати в Qt 4.4

Там в основном скриншоты, так что и переводить особо нечего

Добавка: адрес ссылки поправил