27 марта 2009

Начнем приложение с Qooxdoo

Люди у нас в основном своем большинстве либо новички (желают создать свой сайт и стать крутыми веб-девелоперами), либо сидят под Windows и про командную строку не вспоминают особо, а про Python вообще не знают. Эта статья адресована именно такой категории. Специалисты, а также люди хорошо знающие английский легко разберутся с официальной документацией по Qooxdoo, ну а остальным я постараюсь помочь в меру своего свободного времени и иных возможностей.

Начнем.

1. Скачаем Qooxdoo SDK. На момент написания этой статьи имеется версия Qooxdoo 0.8.2. Это стабильный релиз. Имеется также версия 0.7.4 гарантирующая стабильность и работоспособность во всех отношениях для всех броузеров вышедших не позже выхода самого релиза. Использовать рекомендую более новую версию, так как в любом случае в дальнейшем необходимо будет делать процедуру перехода (зачем нам это лишний раз), во-вторых вам самим захочется 0.8 не иначе. Если бы 0.7 обладала всем-всем-всем, то можно было бы отнестись к этому вопросу проще, но даже в 0.8 есть некоторые общепринятые (стандартные для привычного нам GUI) вещи, которые еще не реализованы.
Да что говорить. Берем 0.8 и все. Документация по 0.8 полноценна и исчерпывающая на все 100%, остальные вопросы отпадают или не ко мне =). Лол. Продолжим.

Качаем http://downloads.sourceforge.net/qooxdoo/qooxdoo-0.8.2-sdk.zip
Либо смотрим сами: http://qooxdoo.org/download и выбираем, можно и SVN-repository взять, кто хочет грызть гранит фреймворка по-полной =)

Скачали, распаковали.
Смотрим папку. Видим структуру:

application
component
framework
tool
index.html
license.txt
readme.txt
version.txt

Так...

2. Можно конечно все делать руками, но зачем? Точнее не так. Руками все делать нужно, но есть очень удобные инструменты, которые следует взять в руки. Написаны они все на Python.

Пользователям Linux волноваться не о чем. Все как обычно либо уже под рукой, либо стоит поставить пакеты Python. Нужна версия Python не ниже 2.4. (2.3 более не поддерживается).

Пользователям Windows следует поставить ActivePython.
Да-да, конечно, ленивым я дам ссылку: http://www.activestate.com/activepython/

Ну и далее...

Для людей, которые привычны к капанию в исходниках эту статью писать не стоит, для других - рекомендую прочитать readme.txt. Если не помогло, буду рассказывать содержимое readme.txt. Итак:


Как создать новое приложение?

  • Переходим в ./tool/bin. Запускаем create-application.py. И что? Ничего пока. Расскажу о параметрах этого скрипта.
Для особо одаренных: - Все имена, идентификаторы, параметры и т.д. пишутся только латинскими символами.

Общее:
create-application.py --name myapp

Параметы:
-n ИМЯПРИЛОЖЕНИЯ, или --name=ИМЯПРИЛОЖЕНИЯ
ИМЯПРИЛОЖЕНИЯ - название вашего приложения. Обязательное поле. Это имя создаваемого приложения. С таким же именем будет создана папка для приложения.

-o ПУТЬ_К_ПАПКЕ, --out=ПУТЬ_К_ПАПКЕ
Это путь к той папке, в которой будет создана папка приложения (см. выше).

-s ПРОСТРАНСТВОИМЕН, --namespace=ПРОСТРАСТВОИМЕН
Основное пространство имен для приложения. Объяснять что такое "пространство имен" не намерен. Если совсем новички - игнорируйте эту опцию и все. (По-умолчанию пространством имен будет являться ИМЯПРИЛОЖЕНИЯ (см. выше))

-t ТИП, --type=ТИП
Типом может быть inline, migration, bom, gui.
'gui' создаст стандартное qooxdoo GUI приложение,
'inline' создаст "inline", т. е. интегрируемое в страницу сайта qooxdoo GUI приложение, 'migration' используется для перехода с версии приложения qooxdoo 0.7 и 'bom' может быть использовано для создания low-level (низкоуровневого (для новичков - ничего общего с плохим, слабым, низким и другими словами) qooxdoo приложения. Если этот параметр не указывать, то по-умолчанию будет 'gui'.

-l LOGFILE, --logfile=LOGFILE
Тут LOGFILE - имя текстового файла, куда будет сохраняться вся информация по ходу работы скрипта.

-p PATH, --skeleton-path=PATH
Дополнительная опция. Здесь PATH - это имя к папке шаблонов, по которым может быть создано приложение. (По-умолчанию: ПУТЬ_К_QOOXDOO_SDK/component/skeleton)

Итак, запустим например такое:
./create-application.py -n myfirst -s mynamespace -t gui

  • Теперь мы получили папку myfirst в той же папке, где и был запущен скрипт create-application.py. Структура папки такая:
cache
source
config.json
generate.py
Manifest.json
readme.txt

3. В congif.json мы имеем конфигурацию нашего приложения, необходимые модули, переменные среды и т.д. Это нам понадобится для сборки завершенной версии приложения. Все данные хранятся в формате JSON.

В Manifest.json находится информация о приложении, название, версия, описание и наименование главного класса приложения для запуска.

Не правда ли напоминает Java 2 ME =) Похоже, но только в JSON формате.
  • Ну наконец уже надоело. Запустим мы приложение или нет? Давайте запустим.
Запустим в папке нашего приложения скрипт generate.py с параметром source-all
./generate.py source-all

Это выдаст:
=====================================================
INITIALIZING: MYFIRST
=====================================================
>>> Configuration: config.json
>>> Jobs: source-all
>>> Resolving config includes...
>>> Resolving jobs...
>>> Resolving macros...
>>> Resolving libs/manifests...

=====================================================
EXECUTING: SOURCE-ALL::SOURCE-ALL-SCRIPT
=====================================================
>>> Scanning libraries...
- Scanning /home/raven/Desktop/Qooxdoo/qooxdoo-0.8.2-sdk/framework...
- Scanning /home/raven/Desktop/Qooxdoo/qooxdoo-0.8.2-sdk/tool/bin/myfirst...
- Excludes may break code!
>>> Resolving dependencies...
- Sorting 513 classes...
>>> Resolving dependencies...
- Sorting 513 classes...
>>> Generate source version...
- Processing translation for 2 locales...
- Analysing assets...
- Compiling resource list...
- Generate translation code...
- Generating boot loader...
>>> Done

Теперь у нас создана debug-версия приложения. Что это значит?
Это значит то, что мы можем запустить наше приложение и посмотреть на его работу, но это не версия для издания, т.е. эта версия не предназначена для наших конечных пользователей, она имеет много "лишней" отладочной информации и связана с нашими локальными модулями. В своих последующих статьях я расскажу как создавать полноценные приложения и размещать их в сети интернет.
  • Айе! Наконец запуск! Переходим в папку soure. Открываем в броузере файл index.html.
В стандартной ситуации, т.е. если использована стандартная версия SDK, описанная в этой статье и если вы следовали инструкциям этой статьи, то вы получите приложение с кнопкой, при клике на которой будет выведено сообщение.

Вот такое у нас первое приложение.



В дальнейших моих планах есть описание создания нескольких более серьезных приложений, в том числе с использованием запросов к серверу, где на стороне сервера будет использоваться PHP и MySQL. К сожалению в мои планы не входит публиковать тут учебник по Qooxdoo или что-то подобное. Всего лишь основы.

Обсуждаем, смотрим, пользуемся, жалуемся и т.д..............

8 комментариев:

  1. хочется продолжения ))
    да и вообще уже версия стабильная появилась...

    ОтветитьУдалить
  2. Да =) Давно уже есть новая версия. Учту пожелания, последнее время правда заинтересовался jQuery UI и Tibco General Interface. По Qooxdoo конечно еще будет продолжение.

    ОтветитьУдалить
  3. Как интересно... Ввел в гугл qooxdoo документация и на первом линке твой блог. Приятная неожиданность!
    Trawl

    ОтветитьУдалить
  4. Привет,
    не в курсе нескольких вопросов по интеграции qooxdoo в проект?
    1. Есть ли конструктор для составления UI из виджетов или только добавлением кода в Application.js ?
    2. Как изменить имена html файлов в созданных applications?
    3. Как доступиться к application в рабочем проекте?

    ОтветитьУдалить
  5. 1. Ответ тут http://qooxdoo.org/project/faq#are_visual_gui_builders_available
    Но зачем пихать все в application.js? Большое приложение будет жить в одном гигантском файле? Надо раскидывать логику, классы создавать. Есть еще возможность описывать GUI в XML.
    2. Эммм? Каких HTML файлов?
    3. Что такое рабочий проект? И какой тип проекта вы делаете? Website, RIA/Desktop, Mobile?

    ОтветитьУдалить
  6. One user reportedly says that this cover might have got smashed when the phone was ran
    over by a car, but it did its job in protecting the phone.
    These are community cards and they are dealt to the
    center of the table. Online retailers like Expansys, Clove and Mobile - Fun have indicated that the white version of Samsung Galaxy
    Nexus will be available within February next.



    My weblog: samsung galaxy s3

    ОтветитьУдалить
  7. But, with the most recent turn of events, the i - Phone 5 has made a landmark in the
    smartphone industry. Both support tethering and have a GPS transceiver
    with A-GPS. It will show you a list of Active Applications and you can press End to shut them down
    individually or press End All to close everything.


    My website: samsung s4

    ОтветитьУдалить