やってみる

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

Raspbian stretch で Glade から GtkSourceView を使ってみた

 できた。

対象環境

前回まで

 GtkSourceViewがインストールされているように見えたが、開発版のlibgtksourceview-3.0-devは未インストールだった。

 libgtksourceview-3.0-devをインストールすることで、Gladeから参照できるようになった。

手順

 Gladeを起動する。(メインメニュー→プログラミングGlade

1. 配置

  1. トップレベル.ウインドウDnDする(GtkWindow)
    f:id:ytyaru:20181222130609p:plainf:id:ytyaru:20181222130616p:plain
  2. コンテナー.ウインドウDnDする(GtkBox)
    f:id:ytyaru:20181222130726p:plain
  3. アイテムの数=4
    f:id:ytyaru:20181222130738p:plainf:id:ytyaru:20181222130754p:plain
  4. GtkSourceViewにある4つを適当にぶちこんでいく
    • GtkSourceView
    • GtkSourceMap
    • GtkSourceStyleSchemeChooserWidget
    • GtkSourceStyleSchemeChooserButton f:id:ytyaru:20181222130805p:plainf:id:ytyaru:20181222130827p:plainf:id:ytyaru:20181222130836p:plainf:id:ytyaru:20181222130849p:plain

2. データ設定

2-1. GtkTextBuffer作成

  1. 画面右上でGtkSourceMapをクリックする
  2. 画面右下で全般タグのうちテキストビューの属性バッファーのアイコンをクリックする
    f:id:ytyaru:20181222131009p:plain
  3. ダイアログの新規ボタン押下する
    f:id:ytyaru:20181222131047p:plain
  4. textbuffer1(GtkTextBuffer)が作成される

2-2. 初期値の代入

  1. 画面右上でtextbuffer1をクリックする
  2. 画面右下で全般タグのうちラベルのアイコンをクリクする
    f:id:ytyaru:20181222131323p:plain
  3. ダイアログの文字列の中に任意のテキストを入力する
    f:id:ytyaru:20181222131452p:plain
  4. OKボタンを押下する

2-3. GtkSourceViewと紐付ける

  1. 画面右上でGtkSourceViewをクリックする
  2. 画面右下で全般タグのうちテキストビューの属性バッファーのアイコンをクリックする
    f:id:ytyaru:20181222131544p:plain
  3. ダイアログのオブジェクトにあるtextbuffer1ラジオボタンをクリックする
    f:id:ytyaru:20181222131604p:plain
  4. OKボタンを押下する
  5. GtkTextBuffer作成のバッファに設定したテキストがビューアに表示される
    f:id:ytyaru:20181222131638p:plain

3. 実行

f:id:ytyaru:20181222131646p:plain

ファイル

 ファイル保存したものが以下。

HelloGtkSourceView.glade

<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.20.0 -->
<interface>
  <requires lib="gtk+" version="3.20"/>
  <requires lib="gtksourceview" version="3.0"/>
  <object class="GtkTextBuffer" id="textbuffer1">
    <property name="text" translatable="yes">任意のテキスト。
GtkSourceViewに表示する。
Gtk#でも使いたい。
#include &lt;stdio.h&gt;
</property>
  </object>
  <object class="GtkWindow">
    <property name="can_focus">False</property>
    <child>
      <object class="GtkBox">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="orientation">vertical</property>
        <child>
          <object class="GtkSourceView">
            <property name="visible">True</property>
            <property name="can_focus">True</property>
            <property name="left_margin">2</property>
            <property name="right_margin">2</property>
            <property name="buffer">textbuffer1</property>
          </object>
          <packing>
            <property name="expand">False</property>
            <property name="fill">True</property>
            <property name="position">0</property>
          </packing>
        </child>
        <child>
          <object class="GtkSourceMap">
            <property name="visible">True</property>
            <property name="can_focus">False</property>
            <property name="editable">False</property>
            <property name="left_margin">2</property>
            <property name="right_margin">2</property>
            <property name="buffer">textbuffer1</property>
            <property name="monospace">True</property>
          </object>
          <packing>
            <property name="expand">False</property>
            <property name="fill">True</property>
            <property name="position">1</property>
          </packing>
        </child>
        <child>
          <object class="GtkSourceStyleSchemeChooserWidget">
            <property name="visible">True</property>
            <property name="can_focus">False</property>
          </object>
          <packing>
            <property name="expand">False</property>
            <property name="fill">True</property>
            <property name="position">2</property>
          </packing>
        </child>
        <child>
          <object class="GtkSourceStyleSchemeChooserButton">
            <property name="label" translatable="yes">クラシック</property>
            <property name="visible">True</property>
            <property name="can_focus">True</property>
            <property name="receives_default">True</property>
          </object>
          <packing>
            <property name="expand">False</property>
            <property name="fill">True</property>
            <property name="position">3</property>
          </packing>
        </child>
      </object>
    </child>
  </object>
</interface>

所感

 gladeファイルはC++でなら使えると思われる。使ったことが無いため詳細は知らない。

 C#での使用法については情報がない。MonoDevelopのNuGetパッケージ追加でGtkSourceViewと検索しても見つけられない。