Вступление В данной статье предполагается знание синтаксиса языка Python, а также основной семантики. Для написания приложения под Maemo 5 необходимы следующие инструменты:
* OpenSSH server на N900
* IDE PluThon
* Пакеты PyQt4 и PyMaemo для N900
* Wi-Fi точка доступа
OpenSSH
Устанавливаем OpenSSH-server из репозитория Extras-Devel. В процессе установки нужно будет ввести логин и пароль: логин должен быть root,
пароль устанавливаем по своему усмотрению (я бы не советовал использовать кирилицу в пароле).
PluThon
Всем известно, что Maemo содержит интерпретатор Python «из коробки». Простенький скрипт можно написать на самом устройстве. Но, согласитесь, гораздо удобнее программировать в IDE с подчеркиванием синтаксиса, отладкой и прочими плюшками. Одним из лучших вариантов является использование IDE PluThon: она основана на Eclipse и позволяет разрабатывать приложение на компьютере, а затем передает его по SSH на N900 и выполняет там. Для установки PluThon нужно скачать два архива с pluthon.garage.maemo.org/2nd_edition/installation.html для своей ОС.
После скачивания распаковываем оба архива в одну и ту же папку и запускаем:
* ./pluthon.sh (Linux)
* .\pluthon.exe (Windows)
* ./pluthon.app/Contents/MacOS/esbox (MacOS X)
Примечание: если вы используете Ubuntu 9.10+, Fedora 11 или другую систему, основанную на GTK+ 2.18, то возможны проблемы с запуском PluThon: запустится только пустое окно, которое будет невозможно закрыть. Для устранения этого найдите файл pluthon.ini в каталоге pluton'a и добавьте в конец файла строку:
-Dorg.eclipse.swt.browser.XULRunnerPath=/dev/null
Теперь PluThon готов к работе!
PyMaemo + PyQt4
Из коробки Python поставляется только со стандартными модулями, поэтому необходимо установить дополнительные библиотеки. Также для создания графического интерфейса необходимо установить библиотеку Qt для Python. Для этого выполяем следующие операции в терминале N900 (rootsh должен быть установлен):
sudo gainroot
apt-get install python2.5-runtime
apt-get install python2.5-qt4-core python2.5-qt4-gui
Соглашаемся на предложение установить и ждем конца установки. Теперь все готово для разработки!
Разработка
Как и полагается по старой доброй традиции первое наше приложение будет называться Hello World. Для этого запускаем OpenSSH сервер на N900:
sudo gainroot
/etc/init.d/ssh start
Далее запускаем PluThon и создаем новый проект (меню File -> Pluthon Project -> Empty Python Project), далее жмем Next и выбираем способ удаленного подключения к N900. Способ подключения: WLAN ad-hoc, также не поленитесь зайти в настройки. Здесь необходимо правильно указать IP-адрес девайса (его можно узнать командой ifconfig из-под рута), а также имя пользователя(root) для работы в системе. Во избежание проблем с правами доступа я обычно отлаживаю программы под рутом, хотя это и может быть небезопасно. Далее нажимаем кнопку Next и в появившемся окне можно выбрать версию Python. Лучше всего оставить 2.5, для лучшей совместимости с N900 (интерпретатор Python там версии 2.5.4. Далее нажатием на кнопку Finish мы создаем проект. В папку src добавляем новый модуль: ПКМ -> New -> Pydev Module. Указываем любое имя и нажимаем Finish.
#Первым делом импортируем модули:
import sys #Модуль будет использоваться для получения аргументов командной строки, которые необходимы Qt-приложению
from PyQt4.QtCore import * #Стандартные Qt-библиотеки ядра и графического интерфейса
from PyQt4.QtGui import *
#Далее необходимо инициализировать окно нашего приложения. Делается это способом создания дочернего класса к QMainWindow.
class MainWindow(QMainWindow):
def __init__(self, *args):
apply(QMainWindow.__init__, (self,) + args) #Вызываем конструктор родительского класса с полученными аргументами
self.setWindowTitle('N900 Buttons!') #Заголовок приложения
self.bn1=QPushButton("Hello World", self) #Создаем кнопку с надписью 'Hello world' и в качестве
#родительского виджета (окно в понятии Qt) указываем экземпляр класса (окно)
self.bn1.setFlat(1) #Наша кнопка будет плоской
self.setCentralWidget(self.bn1) #Указываем что кнопка является центральным виджетом приложения,
#то есть она растянется на все окно
self.bn1.clicked.connect(exit) #Указываем что должна делать при нажатии -
#в данном случае выходить из приложения
#После того, как окно инициализированно, остается лишь создать экземпляр приложения и экземпляр окна
app=QApplication(sys.argv) #Создаем экземпляр приложения
win=MainWindow() #И окно
win.show() #Отображаем его на экране
sys.exit(app.exec_()) #И собственно запускаем приложение
Теперь запускаем приложение Run -> Run As -> PluThon Application. Теперь глядим в наш N900 и там должно появиться чтото примерно такое:
На данную кнопку можно нажать, после чего приложение завершится. Не забудьте выключить SSH сервер после работы: