7
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

お手軽Linux(Ubuntu) GUIアプリ開発 初級 後編

Last updated at Posted at 2020-04-10

##お手軽Linux(Ubuntu)アプリ開発 初級 後編

2021/4月追記
Rider .net5 でのGUI開発に移行しています
UbuntuとRiderとC# GUIアプリの開発

Git Sourth

スクリーンショット 2020-04-11 21.51.04.png

####開発の流れ

  1. DataGridViewとModelのバインディングの実現 TreeView

####デザインの変更の仕方
MainWindowをクリックするとGUIデザイナーツールが立ち上がります。ツールボックスからパーツをドラッグします。
スクリーンショット 2020-04-12 2.14.06.png

VBoxの中にFixedを入れた後、Fixedの高さを設定することでボックスの中のレイアウトを調整できます
スクリーンショット 2020-04-18 11.36.39.png

#####公式の開発ガイド

ボタンコントロールの解説

TreeViewのコーディングの書き方

####アプリの内容について
Linux上で動くデータを管理するアプリです。一覧 Insert Update Deleteが動作をします。Sqlite3を使っています

####Linuxでの動かし方

GTKSharpをインストールする

gladeをインストールする

$ sudo apt-get install glade

LinuxにMonoDevelopをインストールする

追記 4/14
必ずユーザー設定 ー プロジェクト ー ビルドから
「xbuildの代わりにMSBuildでビルドする」を無効にすること

####Microsoft.CSharp.Core.targetsファイルがないエラー

“/home/pi/,cache/MonoDevelop/7.0/MSBuild/1068_1/Microsoft.CSharp.Core.targetsが見つかりませんでした。

と出た場合は

ソリューション ー 参照 ー Microsoft.CSharpを追加や更新
それでもエラーが出る場合は
Jetson Nano ー 表示 ー 隠しフォルダを表示する
MSBuild / 以下複数フォルダがある場合は両方削除する
再度Microsoft.CSharpを追加

追記 4/14
ユーザー設定 ー プロジェクト ー ビルド
エラーが出るので**「xbuildの代わりにMSBuildでビルドする」を無効にする**

スクリーンショット 2020-04-14 11.13.57.png

これは、新しいプロジェクトを開始する前にMonodevelopで行う必要がある設定です。
設定の下で検索し、「xbuildの代わりにMSBuildで作成する」を無効にします

#####Macでは動いたがLinux上で動かなかった時のデバッグの仕方
monodevelopをインストールし立ち上げる

$ monodevelop

VisualStudioのSINファイルを読み込ませデバッグする
WindowsのVisualStudioSinファイルとMacのVisulStudioファイルは互換性がある

####Jetson Nanoへのデプロイ

  1. NetTalkを使いマウントさせる
     sudo apt-get install netatalk
    https://studio.beatnix.co.jp/diary/apple/mac2raspberry-pi/
    https://qiita.com/junkoda/items/d024ee0bf6c50d2f3cc4

  2. RealVncを使う

 Jestson NanoにプレインストールされているRealVncを使います。MacからJestson NanoにRealVncで接続する
 Finderからも接続できますがファイル転送できないため、RealVncViewrを使って接続します

#####LinuxGUIアプリでのデータバインディングについて
公式サイトにバインディングのやり方が書いてあります

#####バインディング 開発のしやすさ 感想

WindowsFormバインディング > Cococaバインディング >>> Gtkバインディング

種類 感想
WindowsForm パーツのプロパティウィンドウからクラスプロパティ名を選択 プロパティウィンドウからDBと接続
CoCoa  StoryBoardにでパーツを選択、ArrayControllerなどをセットしDBと接続、パーツのプロパティウィンドウで設定 コーディングも少々
Gtk  コーディングで実装

####Linux上でのファイルの実行の仕方
アイコンファイルをダブルクリックをする
$ mono アプリパス

#####バインディングライブラリ

バインディングをシンプルに生成するライブラリを作りました。

void _mkTreeView() {

	Gtk.TreeViewColumnEx artistColumn = new Gtk.TreeViewColumnEx();
	artistColumn._mkCellRendererText();
	artistColumn.Sizing = TreeViewColumnSizing.Fixed;
	artistColumn.FixedWidth = 200;
	artistColumn.Title = "Artist";
	artistColumn.bindingPropertyName = "Artist";

	treeview.AppendColumn(artistColumn);

	artistColumn._mkBinding();

	this.ShowAll();

}

TreeViewColumnEx
####ファイルのバンドル化

monoをインストールしなくても実行するやり方があるようです。dllをバンドルして配布できるようです。
.dmg形式にするやり方があるみたいです。
http://wraikny.hatenablog.com/entry/2018/03/29/225021
https://qiita.com/econa77/items/d0e7d3a75d8fd3bb7777

####exeの暗号化
.NETプログラムの難読化ツールの紹介と使ってみた

以前Babelを買ったことがあり、無難に動作し価格もお手頃でした。

####Sqliteの暗号化
sqlcipher

sqlcipherというソフトがあり、オープンソースから実装すれば無料で利用できます。

SQLite3 DBをファイルごとパスワード暗号化・復号する
####感想
GUIを使って簡単にデータアプリを作ることができました
treeViewやバインディングについてはWindowsやCocoaの方が開発しやすい。

GTKでも何か便利な作り方があれば教えてください。

####開発、デザイナーツールの操作のコツ

#####イベントハンドラーメソッド文はClickedを押すと自動生成される
スクリーンショット 2020-04-10 19.13.40.png

#####ドキュメントアウトラインを表示すると便利
スクリーンショット 2020-04-10 19.12.08.png
#####VBoxとHBoxを使ってレイアウトし、中にボタンやTreeViewを配置していく
公式動画にレイアウトを作成していく解説があります
スクリーンショット 2020-04-10 19.24.12.png

#####FatViewController対策 partialクラスを使いクラスをカテゴリー分けした
スクリーンショット 2020-04-10 19.15.12.png

#####GTkのサンプルはhotexamplesというサイトでGitに上がっているソースを調べられる
gitから上がっているソースを一覧でてきます
####c# gtk hotexamples メソッド名などで検索
スクリーンショット 2020-04-09 21.29.09.png

このようにGitHubのGTKのソースを閲覧できるサイトを見つけた

#####Sqliteの管理ソフト

有料ではありますが便利なソフトです

Sqlite管理

#####使用を考えている用途
Raspberry Pi上でデータベースアプリとしての利用を考えています。
センサーの取ってきた情報を一覧で表示したり、送信したり、管理アプリを考えています

C#側
データベースアプリ Sqlite3を利用する
Swagger CodegenでAPIクライアントソースの書き出し
Tensorflow(C#のGPU版は速度が速い)
OpenCVのC#版
picameraのC#版
サードパーティへのWebAPI通信ライブラリー Swaggerを併用
IO関連
pythonスクリプトの実行

Python側
pythonが書かれた各種センサーはpythonで書きます
IO関連

センサーもC#で書かれたものがあればC#で書きます

お手軽Linux(Ubunch) GUIアプリ開発 初級 前編
お手軽Linux(Ubunch) Guiアプリ開発 入門
[お手軽Linux(Ubunch) GUIアプリ開発 パーツサンプル集] (https://qiita.com/tana_/items/3114b715586a5f83cd8c)

7
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?