Ubuntu GTKGUIアプリ開発の道

前回の[UbuntuとRiderとC# GUIアプリの開発](https://qiita.com/iota_11/items/1628c104acb6c937534e)



### GTKSharpの情報収集
GTKSharp(.net Core)の日本語サイトの情報が少ないため、英語サイトで情報を収集する
自動翻訳機能を利用するためChrominumかChromeをインストールする

#### GTK-Sharp(mono)チュートリアルへアクセス
>追記
>Gtk-Sharp - ハイフンのついているものはMonoでビルドしたものになります。
>ハイフンのないものが.net coreでビルドされたものです。

[Gtk-Sharp(mono)チュートリアル](https://www.mono-project.com/docs/gui/gtksharp/tutorials)
<img width="500" alt="スクリーンショット 2020-03-29 12.53.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/a3b46cc9-b6c4-af04-484b-7af761dca2eb.png">
このようにChrominumがページを自動翻訳してくれます

#### Rider用のGtkSharp(.net Core)用のテンプレートをインストールする

RiderのNew SolutionからMoreTemplateを選択　右のrepository of project templateをクリックする
<img width="500" alt="スクリーンショット 2020-03-29 12.53.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/95137b54-41fa-fbb5-9cd8-deffb1418cd1.png">

[Available templates for dotnet new](https://github.com/dotnet/templating/wiki/Available-templates-for-dotnet-new)

<img width="400" alt="スクリーンショット 2020-03-29 12.53.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/c0e53adc-a1e1-798c-f9b9-defa7c68ed50.png">

下の方にGtkSharp用のテンプレートがあるのでコマンドを打ってインストールします

```
dotnet new -i "GtkSharp.Template.CSharp"
```

プロジェクトを作成する場合 new gtkappを打ちます

```
dotnet new gtkapp
```

インストールされたテンプレートリスト

```
dotnet new --list
```

するとこのようにGtkSharp用の開発環境が整ったテンプレート追加され、開発にすぐに取り掛かれます。

<img width="600" alt="スクリーンショット 2020-03-29 12.53.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/bee27c9d-5efd-1282-ec3a-c21ab5787032.png">

実行するとGladeファイルが読み込まれたGUIアプリが立ち上がります。
<img width="600" alt="スクリーンショット 2020-03-29 12.53.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/0f20954e-4646-167e-1d0d-8da2f60b47ed.png">

##### 生成された.net 5 dllを見てみる
Build先の.net5フォルダにGtkSharp.dll他が生成されています。

<img width="150" alt="スクリーンショット 2020-03-29 12.53.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/05849538-d836-829d-41ab-5ecb7464584a.png">

#### PythonでGTK3を取り扱ったサイト
[参考サイト Python](https://www.moonlight-lullaby.info/post/2020/06-01/)
[参考サイト Python](https://python-gtk-3-tutorial.readthedocs.io/en/latest/builder.html)
[参考サイト C#](https://geeksinhitachiprovince.hatenablog.com/entry/2019/01/21/184101)

#### GTK3の関数の使い方がわからない
GTK3の情報が少ないためどんな引数が入るのか、メソッドがあるのかわかりません。
Riderの便利な機能で関数の定義先に飛び確認できる機能がある。

<img width="400" alt="スクリーンショット 2020-03-29 12.53.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/01923b2d-67b7-cb25-e34c-4c74833f6182.png">

```
指定した関数やメソッドを選択 → Ctrl + クリック

又は

指定した関数やメソッドを選択 → 右クリック　→　移動　→　宣言先へ移動
```

<img width="500" alt="スクリーンショット 2020-03-29 12.53.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/7683fa7f-3411-1f76-4ed8-ec51894c88cc.png">
このように関数の定義がわかる


#### GTK-Sharp(mono)のサンプルファイルがGitに上がっている

<img width="400" alt="スクリーンショット 2020-03-29 12.53.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/b9d2ea92-aadd-2a57-3f59-d3ccd20bfea1.png">

[gtk-sharp 3 (Mono)](https://github.com/mono/gtk-sharp)
GTK-Sharp3(mono)のサンプルアプリが上がっておりダウンロードできる

```mono
sudo apt-get install gtk-sharp3-examples
```

ダウンロードしたファイルは/usr/share/gtk-sharp3-examplesにインストールされます

#### GTK-Sharp3(mono)のサンプルを確認
exeをクリックするとサンプルアプリが立ち上がる
<img width="300" alt="スクリーンショット 2020-03-29 12.53.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/153d06fc-d0dc-30ea-809e-1cdfe6deadf4.png">

サンプル辞典　GtkDemo.exe
/usr/share/gtk-sharp3-examples/GtkDemo/GtkDemo.exe
<img width="400" alt="スクリーンショット 2020-03-29 12.53.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/bc573a4f-48e2-dc55-0ca9-0296ae3b755d.png">

##### GTK-Sharp3(mono)のサンプルを実行してみる
サンプルソースをコピペしてビルドしてみる
<img width="400" alt="スクリーンショット 2020-03-29 12.53.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/7f789bb6-c45c-3712-e250-a2852e29d92f.png">

<img width="400" alt="スクリーンショット 2020-03-29 12.53.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/fc7f7765-0950-eb2a-9476-f6778a9bd856.png">
アプリが立ち上がる

##### 新たなテンプレートサイト
<a href="https://dotnetnew.azurewebsites.net/"><img width="400" alt="スクリーンショット 2020-03-29 12.53.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/c348d06b-80eb-5617-f346-e4ac47504306.png"></a>
このサイトからでもVisualStuidoテンプレートをインストールできる

```
dotnet new --install "GtkSharp.Template.CSharp"

dotnet new gtkdialog
```

#### GTK-Sharp(mono)のサンプルファイル Dialog中心
左メニューからdialog関連はC#サンプルスクリプトがある

http://docs.go-mono.com/?link=T%3aGtk.FileChooserDialog

#### Riderを無料で使う

オープンソース活動している方は無料でJetBrains製品すべてを使うことができます

https://www.jetbrains.com/ja-jp/community/opensource

https://qiita.com/iota_11/items/5d805775ac2a42358427

https://qiita.com/iota_11/items/b3dfcc589829d470e32d

https://qiita.com/iota_11/items/4e4d77e91ca3e2223cfe

https://qiita.com/iota_11/items/28248108927cae4f1b46

https://qiita.com/iota_11/items/7074e21bf99cc56b69ce

https://qiita.com/iota_11/items/8cb89aae07a217778b47


[Gtk3アプリのTreeViewの表示](https://qiita.com/tana_/items/736c552e2b450fae3ad4)へ続く