この日、次のトピックが検討されました。
- MAEMOの紹介。 デバイスとバージョンの概要。
- 作業環境。 IDEの概要。
- GTKの概要
- ヒルドンの紹介
まえがき
最初に、トレーニングの構成について説明します。
入り口では、伝統的に全員にバッジが与えられました。 また、必要なソフトウェア、ドキュメント、プレゼンテーションが入ったディスク。
コーヒーブレイクがありました。 インスタントコーヒー、最高の1つ。 また、お茶、ミネラルウォーター、伝統的なクッキー。
ランチはトレーニングプログラムには含まれていませんが、後でランチについて説明します。これは別の問題です。
トレーニングは、次のスキーム、最初の2つの導入トピック、GTK、Hildon、独立実行のタスク、HildonとMAEMOのいくつかの機能、そして再びタスクに従って行われました。
MAEMOの紹介。 デバイスとバージョンの概要。
最初のプレゼンテーションはレビューで、SPB SUAIのDmitry Malichenkoによって行われました 。
導入の重要な部分は、MAEMOアーキテクチャの説明でした。イメージで見ることができる主要なコンポーネントです。
- メディアアプリケーションフレームワーク-GStreamer上の抽象化
- GDigikam-カメラを操作するためのGStreamerのアドオン
- tablet-browser-interface-ブラウザーAPI
- calendar-backend-カレンダーとオーガナイザーを管理する
- UIフレームワーク
- Hildon Desktop-ウィンドウマネージャー
- ヒルドングラフィックスライブラリ
- 3Dクラッターライブラリ
- Input Method Framework-仮想キーボードとレイアウトの操作
- Nokiaグラフィック
- 音、アイコン、写真
- プリセットビデオ、オーディオコンテンツ
- ロケーションフレームワーク-マップとGPSの操作
- 地図上の座標を検索するには
- 地図に表示
- カードから情報を取得する
- POI(関心のあるポイント)
- データ管理
- GConf-アプリケーション設定を保存および管理するためのシステム
- アドレス帳
- トラッカー-インデックス作成および検索ツール
- パッケージ管理
- ツールキット
- グラフィックライブラリgtk +、hildon、cairoなど
- フォント、テーマ
- RTCom(リアルタイム通信)
- テレパシーフレームワーク
- インスタントメッセージング
- IPテレフォニー
- ストリーミング(telepathy-stream-engine)
- 接続マネージャー(telepathy-sofiasip)
- テレパシーフレームワーク
- 接続フレームワーク
- 接続管理(libconic-> D-BUS-> ICd)
- GUPnPフレームワーク
- osso-wlan
- ブルーズ
- マルチメディアフレームワーク
- GStreamer、コーデック
- PulseAudio、コーデック
- セルラー
- セルラー
- モデムソフトウェア
- システムソフトウェア
- 電力管理
- デバイスステータス管理
- 起業家
- Maemoランチャー
- Dバス
- ハル
- アラーム付き
- Linuxカーネル
- Video4Linux
- センサー
- バイブロ
- X Window System
- Opengl es
- Openssl
- C / C ++ライブラリ
- ビジーボックス
- Noloブートローダー
N900アイアンの説明など、よく知られていることがさらに進んだため、原則として、導入ストーリーから伝えることはこれ以上ありません。
作業環境。 IDEの概要。
レポートは同じスピーカーによって作成されました。 また、私はこのプレゼンテーションを紹介的なものに帰しました。一般に、そのフレームワーク内で伝えられたすべては新しいものではありませんが、最も重要な点に焦点を当てます。
開発に必要なもの
- Linuxディストリビューション(できればDebianベース)
- Scratchbbox-クロスコンパイルとエミュレーションのための一連のツール(ARMプラットフォーム、x86)。 インストール手順は、 tass Habrauserの記事に記載されています。
- Maemo SDK
- Xephyr -Xサーバー
エミュレーターの起動
scratchboxへのログインは、コマンド-scratchbox / loginで行います 。
スクラッチボックスのsb-menuスクリプトを使用して、アセンブリとエミュレーションの環境とプラットフォームを変更できます。
スクラッチボックスの外側にエミュレータのグラフィカル画面を表示するには、次のコマンドでXephyrを実行する必要があります。
$ Xephyr:2 -host-cursor -screen 800x480x16 -dpi 96 -ac&
MAEMO自体を起動するには、スクラッチボックスで次のコマンドを実行します。
エクスポートDISPLAY =:2
af-sb-init.sh start
スクラッチボックスコンソールからグラフィカルアプリケーションを実行するには、run-standalone.shスクリプトを使用します
起動したアプリケーションに必要な環境を追加します。
作業ツール
アプリケーション開発のために、最低限必要なもの:
- gcc
- pkg-config
- 作る
- GNU Autotools
- GTK +ライブラリを開発する
このほとんどはすでにインストールされているはずですが、何かが足りない場合は、通常のaptを使用して自分でインストールできます。
IDE
私たちが今書くことを推奨する唯一のIDEは、EsBox-変更されたEclipseです。
esbox.garage.maemo.org/2nd_edition/index.html
「ネイティブ」Eclipseで統合を使用することもできます
wiki.maemo.org/Documentation/Maemo_5_Developer_Guide/Development_Environment/Maemo_Eclipse_Integration
これで、すべてのイントロが終了し、プログラミングが開始されました。
GTKの概要
このセクションは、GTKを毎日使用している人にとっては決して興味深いものではありません。もしあなたがその中の1人であれば、安全にスキップできます。
しかし、私にとって、Qt'shnikに関しては、これはまったく新しい情報でした。
レポートの作成者: Eugene Linsky、SPB SUAI
GTK +は、Cのグラフィカルオブジェクト指向ライブラリです。
純粋なCはクラスとオブジェクトをサポートしていないため、これにより開発スタイルに強い印象が残ります。
例:
C ++では、次のように記述します。
GtkButton *btn = new GtkButton(); btn->setLabel( "label" ); GtkWindow *w = (GtkWindow *) btn; * This source code was highlighted with Source Code Highlighter .
GtkButton *btn = new GtkButton(); btn->setLabel( "label" ); GtkWindow *w = (GtkWindow *) btn; * This source code was highlighted with Source Code Highlighter .
GtkButton *btn = new GtkButton(); btn->setLabel( "label" ); GtkWindow *w = (GtkWindow *) btn; * This source code was highlighted with Source Code Highlighter .
GtkButton *btn = new GtkButton(); btn->setLabel( "label" ); GtkWindow *w = (GtkWindow *) btn; * This source code was highlighted with Source Code Highlighter .
GtkButton *btn = new GtkButton(); btn->setLabel( "label" ); GtkWindow *w = (GtkWindow *) btn; * This source code was highlighted with Source Code Highlighter .
Cでは、次のように記述する必要があります。
*このソースコードは、 ソースコードハイライターで強調表示されました。
- GtkButton * btn = gtk_button_new();
- gtk_button_set_label(btn、 "label" );
- GtkWindow * w = GTK_WINDOW(btn);
私の観点からは、これは気味が悪いですが、これについては、一般的には後でGTKを使用することの推奨事項についてです。
GTK構造
画像で見ることができるライブラリの主要コンポーネント
- Libglade -XMLベースのインターフェースの作成(レポートには含まれていません)
- GDK-低レベルI / O
- Pango-テキスト出力(フォント、スタイル、言語)
- Cairo-ベクターグラフィックス、描画、画像の操作(標準のGDK'shash描画関数を置き換えるために設計された新しいライブラリ)
- GLib-コレクション、ストリームなど。
実用化
ウィジェットGTKのセットの基礎は、基本的なグラフィック要素GtkWidgetです。
すべてのグラフィック要素の基本クラス。そこからボタン、メニュー、ツールバーなどを継承します。
GTKはシグナル指向のライブラリです。つまり、特定のイベントが発生すると(たとえば、ボタンが押されると)、シグナルが発行されます。 開発者は信号を事前定義されたハンドラーに関連付けることができます。これは完了です
g_signal_connect()関数。
ウィンドウのみを表示し、「クロス」で閉じる単純なGTKプログラムの例
*このソースコードは、 ソースコードハイライターで強調表示されました。
- #include <gtk / gtk.h>
- static void on_close(GtkWindow * window、gpointer user_data){
- gtk_main_quit();
- }
- int main( int argc、 char * argv []){
- GtkWidget *ウィンドウ;
- gtk_init(&argc、&argv);
- window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- gtk_window_set_title(GTK_WINDOW(window)、 "simple" );
- gtk_widget_set_size_request(window、300、100);
- gtk_widget_show_all(ウィンドウ);
- g_signal_connect(window、 "destroy" 、G_CALLBACK(on_close)、NULL);
- gtk_main();
- 0を返します。
- }
最初に、GTK環境はgtk_init()関数で初期化されます。
その後、メインプログラムウィンドウが作成されます-gtk_window_new() 、
ウィンドウのサイズとそのタイトルが設定され、
次に、 gtk_widget_show_all()が呼び出され、メインウィンドウに自分自身とそのすべての子孫を描画するように指示します。
その後、終了ハンドラー( on_close() )がインストールされ、
メインアプリケーションループを開始するgtk_main()関数が実行されます。
その後、GTKコンテナーについて説明しました。コンテナーは、ウィジェットを配置できるウィジェットです
他のウィジェットについては、ここでは説明しません。興味のある方はGTKの紹介を読むことができます
それはすべて非常に簡単です。
プレゼンテーションの最後に、これでダウンロードできるアプリケーションのいくつかの例
リンク
ヒルドンの紹介
レポートはユージン・リニンスキーによって作成されました。
HildonはMAEMOのグラフィックライブラリです。 HildonはGTKのアドオンであり、
タッチ入力インターフェイスなど、モバイルデバイス固有の実装を追加します。
HildonはGTKインターフェイスを完全にコピーし、一部の機能を独自のものに置き換えています。
描画された要素を介した相互作用を許可します。
たとえば、MAEMOのメニューは、クリックするのに便利な大きなボタンのリストにすぎません。
メインツールバーは、MAEMOの慣例に従って下に移動します。 相対的に注意することが重要です
MAEMOのツールバー開発者は、次の推奨事項を提示します-本当に頻繁に使用されるもののみを含める
アプリケーション機能、すべての二次機能はメニューに表示する必要があります。
プレゼンテーションのこの部分の後、「対話」の時間であり、私たちは招待されました
Desktop-gtkアプリケーションを自分でMAEMO-Hildonに移植します。
GTKの例とレポートの作成者が提案した結果は、 ここからダウンロードして学習できます。
HildonのGTKとは異なり、キャンバスの再描画イベントはアプリケーションの起動時にのみ実行されますが、ウィンドウが最小化/最大化されている場合は発生しないことに注意することが重要です。
昼食
ほとんどの参加者がタスクを完了し、「報告会」が行われた後
昼休みが始まりました。 フードサービスを求めて、私たち(3人のグループ)は〜7 kmの道を歩きました。これは、モスクワ州立大学の周辺で誰がどこで食事をするかわからず、最初は間違った方向が選択されたためです。
続行するのに15分間遅れましたが、主催者も遅れており、明らかに同じ理由でした。
だから私たちは何も見逃しませんでした。
ヒルドンと協力してください。 ウィンドウのスタック。 HildonPannableArea(動的な指のスクロール)
ウィンドウのスタックは、戻るボタンで上から下に戻ることができる連続したウィンドウのチェーンを実装します。このアプローチは、モバイルアプリケーションに非常に便利です。
スタックウィンドウの作成は、 hildon_stackable_window_new()関数によって行われます。
そして、パラメーターを指定したgtk_widget_show_all()関数を使用して次のウィンドウに切り替える-次のウィンドウへのポインター。
アプリケーションに多数のウィンドウスタックを実装できます。
HildonPannableArea-画面サイズを超える子ウィジェットの数を含めることができるウィジェットコンテナー。
指で慣性スクロールを実装します。 ウィジェットは、 hildon_pannable_area_new()関数によって作成されます。
プレゼンテーションの後、インタラクティブが再び開始され、HildonPannableAreaとウィンドウのスタックを使用して例を実装するように求められました。
ただし、今日はすでにGTKを食べていて、MAEMOのQtでも同じことをしようとすることにしました
それをインストールして使用する方法は、 記事 tassを読んでください 。
予想どおり、Qtコードは行ごとにカウントすると2倍短くなり、行自体は2.5倍より短くなりました。 これは、何かがこれに適した道具にされるべきであることをもう一度証明します。 さらに、MAEMO 6(またはMeeGo)はグラフィックライブラリとしてQtに完全に切り替わります。
こちらのQtコードをご覧ください 。
ヒルドンと協力してください。 他に何が面白いですか。
- HildonBanner-一定時間表示されるメッセージ(通知の表示、たとえば「接続が確立されました」)
- HildonNote-標準確認ダイアログ
- HildonFileSelection-小さな画面用に最適化されたファイルを選択するためのダイアログ。 (使用するには、さらにhildon-fm-2ライブラリを接続する必要があります)
便利なリンク
maemo.org/api_refs/5.0/5.0-final-MAEMOでの開発に必要なすべてのドキュメント。
fruct.org-トレーニングを実施した組織のサイト。
maemoworld.ruは、ロシアのMAEMOコミュニティのサイトです。
いくつかの写真
コーヒーブレーク中の視聴者:
主催者と講演者(SPB SUAI)
ScratchbboxエミュレーターでDesktop-GTKアプリケーションをMAEMO-Hildonに移植するタスクからのタスクアプリケーションのデモンストレーション
同じアプリケーションですが、既にデバイス上にあり、私が個人的に移植しました(写真では、私の手で:))
トレーニングの2日目については、 tassのユーザーが教えてくれます。
シムについては、私の休暇を取ってください、読んでくれてありがとう。
著者
ソロキン・ヴァシリー:@ VasiliySorokin
Kormalev Denis:@ BlackTass