お手軽Linux GUIアプリ開発 初級 後編
開発の流れ
- DataGridViewとModelのバインディングの実現 TreeView
- RaspberryPiへのデプロイの仕方 MacからRaspberry PiにRealVNCで接続するメモ
- 開発のコツ、デザイナーツールの操作ヒント
データアプリについて
Linux上で動くデータを管理するアプリです。Select一覧 Insert Update Deleteの動作をします。Sqlite3を使って保存しています
Linuxで動かし方
GTKSharpをインストールする
$ sudo app-get glade
LinuxにMonoDevelopをインストールする
$ monodevelop
IDEが立ち上がる。VisualStudioのSINファイルを読み込む
デバッグする
RaspberryPiへのデプロイ
NetTalkを使いマウントさせる
sudo apt-get install netatalk
https://studio.beatnix.co.jp/diary/apple/mac2raspberry-pi/RealVncを使う
RaspberryPiにMonoをインストールします。
RaspberryPiにプレインストールされているRealVncを使います。MacからRaspberry PiにRealVncで接続するメモ
Finderからも接続できますがファイル転送できないため、RealVncViewrを使って接続します
バインディングについて
公式サイトにバインディングのやり方が書いてあります
Gtkはバインディングをソースで実装しています。
artistColumn.SetCellDataFunc(artistColumn.Cells[0], new Gtk.TreeCellDataFunc(RenderArtistName));
this.ShowAll();
private void RenderArtistName(Gtk.TreeViewColumn column, Gtk.CellRenderer cell, Gtk.TreeModel model, Gtk.TreeIter iter) {
Song song = (Song)model.GetValue(iter, 0);
(cell as Gtk.CellRendererText).Text = song.Artist;
}
バインディング 開発のしやすさ
WindowsFormバインディング > Cococaバインディング >>> Gtkバインディング
| 種類 | 感想 |
|---|---|
| WindowsForm | パーツのプロパティウィンドウからクラスプロパティ名を選択 プロパティウィンドウからDBと接続 |
| CoCoa | StoryBoardにでパーツを選択、ArrayControllerなどをセットしDBと接続、パーツのプロパティウィンドウで設定 コーディングも少々 |
| Gtk | コーディングで実装 |
Linux上でのファイルの実行の仕方
ダブルクリックをするか
$ mono アプリパス
ファイルのバンドル化
monoをインストールしなくても実行するやり方があるようです。dllをバンドルして配布できるようです。
.dmg形式にするやり方があるみたいです。
http://wraikny.hatenablog.com/entry/2018/03/29/225021
https://qiita.com/econa77/items/d0e7d3a75d8fd3bb7777
感想
GUIを使って簡単にデータアプリを作ることができた。
treeViewやバインディングについてはWindowsやCocoaの方が開発しやすい。
GTKでも何か便利な作り方があれば教えてください。
開発、デザイナーツールの操作のコツ
イベントハンドラーメソッド文はClickedを押すと自動生成される
ドキュメントアウトラインを表示すると便利
VBoxとHBoxを使ってレイアウトし、中にボタンやTreeViewを配置していく
公式動画にレイアウトを作成していく解説があります
FatViewController対策 partialクラスを使いクラスをカテゴリー分けした
公式の開発ガイド
公式TreeViewの解説
公式ボタンコントロールの解説
GTkのサンプルはhotexamplesというサイトでGitに上がっているソースを調べられる
gitから上がっているソースを一覧でてきます
c# gtk hotexamples メソッド名など
このようにGitHubのGTKのソースを閲覧できるサイトを見つけた
使用を考えている用途
Raspberry Pi上でデータベースアプリとしての利用を考えています。
センサーの取ってきた情報を一覧で表示したり、送信したり、管理アプリを考えています
C#
データベースアプリ Sqlite3を利用する
Swagger CodegenでAPIクライアントソースをの書き出し
Tensorflow(C#のGPU版は速度が速い)
OpenCVのC#版
サードパーティへのWebAPI通信ライブラリー Swaggerを併用
IO関連
pythonの実行
Python
pythonが書かれた各種センサーはpythonで書きます
IO関連
センサーもC#で書かれたものがあればC#で書きます




