やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

Raspbian stretch MonoDevelop に Eto Addin を追加する

 見つけたので。

対象環境

手順

  1. ダウンロード
  2. インストール
  3. プロジェクト作成

1. ダウンロード

  1. github Eto Releasesから最新の.mpackファイルをダウンロードする

2. インストール

  1. MonoDevelopを起動する
  2. メニュー→ツール拡張機能
    f:id:ytyaru:20181202083456p:plain
  3. 拡張機能マネージャダイアログが表示される
    f:id:ytyaru:20181202083520p:plain
  4. ファイルからインストール f:id:ytyaru:20181202083417p:plain
  5. ダウンロードしたファイルを選択する
    f:id:ytyaru:20181202083628p:plain
    f:id:ytyaru:20181202083645p:plain

 なぜかアンインストールと書いてある。翻訳ミスなのか。

3. プロジェクト作成

  1. メニュー→ファイル新しいソリューション
    f:id:ytyaru:20181201194454p:plain
  2. マルチプラットフォームアプリEto Application f:id:ytyaru:20181202083840p:plain
  3. 名前などを適当に入力する
    f:id:ytyaru:20181202083922p:plain
    f:id:ytyaru:20181202083950p:plain
  4. 場所を入力する
    f:id:ytyaru:20181201194509p:plain
  5. プロジェクトが作成される
    f:id:ytyaru:20181202084143p:plain

4. 実行

  1. Ctrl+F5で実行
  2. 怒られた
    f:id:ytyaru:20181202084218p:plain
    f:id:ytyaru:20181202084430p:plain
  3. ファイルパスを辿ってexeファイルを直接叩くと実行できた
    f:id:ytyaru:20181202084343p:plain
    f:id:ytyaru:20181202084329p:plain

ソースコード抜粋

 2プロジェクトある。

  • HelloEto.Desktop/Program.cs
  • HelloEto/MainForm.xeto.cs
  • HelloEto/MainForm.xeto

HelloEto.Desktop/Program.cs

using System;
using Eto.Forms;
using Eto.Drawing;

namespace HelloEto.Desktop
{
    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            new Application(Eto.Platform.Detect).Run(new MainForm());
        }
    }
}

HelloEto/MainForm.xeto.cs

using System.Collections.Generic;
using Eto.Forms;
using Eto.Drawing;
using Eto.Serialization.Xaml;

namespace HelloEto
{
    public class MainForm : Form
    {
        public MainForm()
        {
            XamlReader.Load(this);
        }

        protected void HandleClickMe(object sender, EventArgs e)
        {
            MessageBox.Show("I was clicked!");
        }

        protected void HandleAbout(object sender, EventArgs e)
        {
            new AboutDialog().ShowDialog(this);
        }

        protected void HandleQuit(object sender, EventArgs e)
        {
            Application.Instance.Quit();
        }
    }
}

HelloEto/MainForm.xeto

<?xml version="1.0" encoding="UTF-8"?>
<Form xmlns="http://schema.picoe.ca/eto.forms" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="My Eto Form" ClientSize="400, 350" Padding="10">
    <StackLayout>
        <Label>Some Content</Label>
    </StackLayout>
    <Form.Menu>
        <MenuBar>
            <ButtonMenuItem Text="F&amp;ile">
                <ButtonMenuItem Text="Click Me!" Click="HandleClickMe" />
            </ButtonMenuItem>
            <MenuBar.ApplicationItems>
                <ButtonMenuItem Text="Preferences.." Shortcut="{On Control+O, Mac=Application+Comma}" />
            </MenuBar.ApplicationItems>
            <MenuBar.QuitItem>
                <ButtonMenuItem Text="Quit" Shortcut="CommonModifier+Q" Click="HandleQuit" />
            </MenuBar.QuitItem>
            <MenuBar.AboutItem>
                <ButtonMenuItem Text="About..." Click="HandleAbout" />
            </MenuBar.AboutItem>
        </MenuBar>
    </Form.Menu>
    <Form.ToolBar>
        <ToolBar>
            <ButtonToolItem Text="Click Me!" Click="HandleClickMe" />
        </ToolBar>
    </Form.ToolBar>
</Form>

所感

  • ファイルサイズが40MB以上ある模様……1つのHelloプロジェクトでこれは大きすぎる
  • デザイナが表示できない……