Программирование под Maemo Маличенко Дмитрий СПБ ГУАП.

Презентация:



Advertisements
Похожие презентации
Сравнительный анализ библиотек построения GUI на Maemo 4/5 Дорохова Р.В.
Advertisements

Стадник Е. Г. ФПМИ НГТУ Руководитель: Городничев М.А., м.н.с. ИВМ и МГ СО РАН.
Подбор материала и презентация: Сазонов Д.О. Кафедра ПМиЭММ ВГТА Динамические объекты, ссылки.
Графики с помощью MFC. Пакет Microsoft Foundation Classes (MFC) библиотека на языке C++, разработанная Microsoft и призванная облегчить разработку GUI-приложений.
BitrixMobile Юрий Тушинский Технический директор Битрикс.
Графические интерфейсы пакет Tkinter. import Tkinter from Tkinter import *
Click to edit Master title style IDK1011 Основы программирования Scratch.
Программирование в Mozilla По материалам сайта. Добавление Javascript в XUL-страницы Добавление страниц с текстом на Javascript происходит точно так же,
©Павловская Т.А. (СПбГУ ИТМО) Курс «С#. Программирование на языке высокого уровня» Павловская Т.А.
Тема 5. Основы современной технологии программирования Программирование в средах современных информационных систем. Интегрированные системы разработки.
FBD В cреде CoDeSys Язык FBD Язык FBD (Functional Block Diagram, Диаграмма Функциональных Блоков) является языком графического программирования,
Saint Petersburg, 2012 Java Lecture 12 JSTL. JSP -> JSTL JSP – хорошо Что делать если хотим добавить условие? Итерирование по списку и вывод каждого элемента.
САОД кафедра ОСУ 1 Основные абстрактные типы данных Схема процесса создания программ для решения прикладных задач ВУ.
Докладчик: Кин Кирилл, ВМИ-115 Windows Azure Демонстрация разработки и внедрения простейшего сервиса.
Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
Среда программирования Visual Basic. Презентацию подготовила учитель информатики МБОУ СОШ 3 г. Светлого Нетесова Наталья Александровна.
Практическое использование Java Макаревич Л. Г.. Инсталляция Java Документация в docs Прописать PATH (каталог bin в JSDK) Прописать CLASSPATH (путь к.
POSIX Threads & OpenMP Общая память Сергей Петрович Нечаев, Сибирский Суперкомпьютерный центр.
Дружественные функции Дружественные функции – это функции, объявленные вне класса, но имеющие доступ к закрытым и защищенным полям данного класса Дружественная.
Транксрипт:

Программирование под Maemo Маличенко Дмитрий СПБ ГУАП

2/20 План Что такое Maemo Программирование под Maemo Работа в Scratchbox-е Простой пример Рисование в окне Работа с диалоговым окном Что еще не рассмотрено Ссылки

3/20 Что такое Maemo Maemo – это платформа для мобильных устройств основанная на Debian ( Устройства на базе Maemo: N900 N810 N800 N770

4/20 Какие есть версии Предыдущая – 4 (Diablo) Библиотека GUI: GTK Интерфейс: стилус Текущая – 5 (Fremantle) Библиотека GUI: GTK Интерфейс: палец + стилус Будущая версия – 6 (Harmattan) Библиотека GUI: Qt Интерфейс: только палец

5/20 Целевое устройство N900 Умеет звонить Линукс внутри Многозадачность WiFi, bluetooth GPS Сенсоры Интерфейс: палец + стилус Клавиатура: настоящая + виртуальная

6/20 Программирование под Maemo: особенности Мобильное устройство Маленький экран Интерфейс: палец/стилус Сенсоры Как облагородить интерфейс? Библиотека Hildon – надстройка над GTK+ Использование меньшего числа элементов управления

7/20 Программирование под Maemo: инструменты Требуется Основанный на Debian дистрибутив Linux Scratchbox – набор инструментов для кросс компиляции (поддерживает ARM, X86) Maemo SDK Инструкция по установке

8/20 Программирование под Maemo: связь с устройством Копирование файлов по USB на встроенную флешку (/home/user/MyDocs) USB Networking есть вспомогательные утилиты для запуска на устройстве WiFi + ssh/scp

9/20 Работа в scratchbox - 1 Используются два окружения X86 для разработки, тестирования и отладки ARM для компиляции под устройство Представляет собой песочницу $ /scratchbox/login Welcome to Scratchbox, the cross-compilation toolkit! Use 'sb-menu' to change your compilation target. See /scratchbox/doc/ for documentation. [sbox-FREMANTLE_X86: ~] >

10/20 Работа в scratchbox - 2 Запуск графического приложения в терминале 1 $ Xephyr :2 -host-cursor -screen 800x480x16 -dpi 96 -ac -kb & в терминале 2 [sbox-FREMANTLE_X86: ~]> export DISPLAY=:2 [sbox-FREMANTLE_X86: ~]> af-sb-init.sh start Возможна интеграция с eclipse Development_Environment/Maemo_Eclipse_Integration

11/20 Простой пример #include int main(int argc, char *argv[]) { GtkWidget *window; hildon_gtk_init (&argc, &argv); g_set_application_name ("Simplest example"); program = hildon_program_get_instance (); window = hildon_window_new (); hildon_program_add_window (program, HILDON_WINDOW (window)); gtk_widget_show (window); gtk_main (); return 0; } Задаем имя программы Создаем главное окно программы Запуск главного цикла обработки событий

12/20 Как собрать в Scratchbox $ /scratchbox/login [sbox-FREMANTLE_X86: ~] > gcc –o hello_world `pkg-config -- libs --cflags hildon-1` hello_world.c [sbox-FREMANTLE_X86: ~] >./hello_world pkg-config – возвращает пути к заголовочным файлам и к файлам библиотеки

13/20 Усложненный пример - 1 Цель: написать приложение для рисования Потребуется: Создать главное окно программы Создать область для рисования Поставить фильтр на требуемые события Зарегистрировать обработчики событий Требуемые события: нажатие, перемещение, отпускание Написать логику обработчиков событий

14/20 Рисование в окне: функция main #include int main (int argc, char **argv) { // Здесь идет код инициализации как в предыдущей программе.. g_signal_connect (G_OBJECT (window), "delete_event", G_CALLBACK (gtk_main_quit), NULL); GtkWidget *drawing_area = gtk_drawing_area_new (); g_signal_connect (G_OBJECT (drawing_area), "motion_notify_event", (GtkSignalFunc) motion_event_callback, NULL); // Далее так же задаем функции обработки для button_press_event // и button_release_event..... gtk_widget_set_events (drawing_area, GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK ); gtk_container_add (GTK_CONTAINER (window), drawing_area); // Код показа окна и запуск главного цикла обработки.... } Обработка сигнала при закрытии окна Создание области для рисования на все окно Добавляем обработчик события «перемещение указателя мыши» Указываем какие события хотим обрабатывать

15/20 Рисование в окне: обработка событий static gboolean button_press_event( GtkWidget *widget, GdkEventButton *event ) { if (event->button == 1 ) pressed=1; return TRUE; } static gboolean button_release_event( GtkWidget *widget, GdkEventButton *event ) { if (event->button == 1 ) pressed=0; return TRUE; } gboolean motion_event_callback (GtkWidget *widget, GdkEventMotion *event){ if (pressed) gdk_draw_line(widget->window, widget->style->fg_gc[GTK_WIDGET_STATE (widget)], x, y, event->x,event->y); x = event->x; y = event->y; return TRUE; } Нарисовать линию используя стиль текущего окна Обновление координат

16/20 Усложненный пример - 2 Цель: написать приложение с кнопками Потребуется Разобраться с расположением элементов Создать необходимый контейнер Создать кнопки и поместить в контейнер Создать и зарегистрировать обработчики нажатий Прикрепить контейнер к главному окну Показать окно

17/20 Работа с диалоговым окном int main (int argc, char **argv) { // Инициализационная часть.... table = gtk_table_new(3,3,TRUE); for (i=0;i

18/20 Что еще не рассмотрено Элементы управления GtkRadioButtons Меню ( HildonAppMenu ) Диалоги ( HildonNote, HildonBanner, HildonPickerDialog, HildonWizardDialog ) Работа в сети WiFi, Bluetooth Выход в интернет библиотека LibConIC

19/20 Ссылки Главная ссылка :) Руководство для разработчиков Maemo Developer_Guide Developer_Guide Туториал по GTK для новичков Где разместить проект

20/20 Спасибо за внимание!