問題タブ [lablgtk]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
gtk - この OCaml 型の署名をどのように読むのですか?
私は現在、OCaml と GTK を一緒に使用して実験しています ( lablgtkバインディングを使用)。ただし、ドキュメントは最適とは言えず、ほとんどの機能を使用する方法を理解することはできますが、ノートブックのページを変更する (別のタブに切り替える) ことに行き詰まっています。
必要な機能は見つかったのですが、使い方がわかりません。ドキュメントは、のサブモジュールにあることを示唆しているようですがGtkPackProps.Notebook
、これを呼び出す方法がわかりません。
また、この関数には、これまでに見たものとは異なる型シグネチャがあります。
を返すと思いますGtkSignal.t
が、最初のパラメーターを関数に渡す方法がわかりません(括弧内の部分全体)。
ノートブックのページを変更する方法を示すサンプル コードを誰かが持っているか、またはこれを行う方法についてのヒントを教えてもらえますか?
user-interface - OCaml-Wodi: Lablgtk2 をインストールしていますか?
パッケージ環境には最初にlablgtkが付属していなかったため(lablgtkのみ)、wodi32 cygwinにlablgtk2をインストールしようとしました。
私はこれらの指示に従って、自分で手動で行いました:
しかし、それは正しく機能していないようです。これを行うウォディの方法はありますか?
gtk - lablgtk2 で MVC を実装する新しいウィジェットを作成するには?
Gtk+ の OCaml バインディングである lablgtk2 用の新しいウィジェットのファミリを作成しています。これらのウィジェットの中には、かなり複雑な情報を編集または表示できるものがあります。そのため、GTree
モジュールで見られるものと同様に、model-view-controler または subject-observer の使用に興味があります。
このモジュールはGTree.model
とGTree.view
クラスを定義します。それぞれに接続可能なシグナルがあり、GTree.model
は 1 つ以上GTree.view
の に接続できます。
ライブラリで利用可能なコードは C ライブラリのバインディングであるため、純粋な OCaml でこの構成を模倣することはそれほど簡単ではありません。次の手順を実行する必要があります。
- 新しいウィジェットの定義
- 新しいシグナルの定義
- これらの新しいシグナルのトリガー
- 新しいモデルの定義
1 と 2 は実行できますが、3 と 4 の実行方法がわかりません。これらを正しく実行するにはどうすればよいですか?
新しいウィジェットの定義
新しいウィジェットの定義自体は問題ありません。新しいウィジェットは、通常、Gnome キャンバスまたはコンポジットの特殊化されたバージョンです。前者の場合、新しいウィジェットは Gnome キャンバスから GObj.widget として継承でき、後者の場合、コンポジットを保持するために使用されるコンテナーによって提供される GObj.widget を使用できます。これは通常次のようになります
新しいシグナルの定義
バインディングは、新しいシグナルを定義するコードの例を多数提供するため、次のスニペットで示されているように、パラメーターのないシグナルの単純なケースを考慮して、ウィジェットの新しいシグナルを定義できます。
これらの定義により、ウィジェットは適切なメソッドview
を定義することでこれらのシグナルを公開できます。connect
新しいシグナルのトリガー
この関数GtkSignal.emit
は、オブジェクトに信号を送信し、登録されたコールバックをトリガーするという目的を果たしているようです。これは、次の署名として機能します。
最初の 2 つのパラメーターは一目瞭然ですが、残りの 2 つのパラメーターが何であるかは明確ではありません。残念ながら、信号はコードの C 側から放出されるため、lablgtk ソース コードには使用例がありません。これらの 2 つの引数は、 として実体化されたシグナルの引数の準備と'c Gobject.data_set array
、 というラベルの付いた引数を使用して生成された値の取得に関連しているよう~conv
です。~cont
それにもかかわらず、エミッターでの - 引数の役割はまだ明確にする必要があります。
新しいモデルの定義
モデルの定義の難しい部分はGObj.object
、受信シグナルを送信できるようにするために継承する必要があることです。残念ながら、最小限の Gtk+ オブジェクトを直接定義できる関数はありません。私がこの方向に最も遠くまで行ったのは
関数を呼び出してmodel
対応するオブジェクトをインスタンス化すると、次のメッセージが表示されます。
Gtk-CRITICAL **: IA__gtk_object_sink: アサーション 'GTK_IS_OBJECT (オブジェクト)' が失敗しました
明らかに、ここには怪しいものがあります。おそらく、パラメーター リスト (上記のスニペットの空のリスト) が小さすぎたのでしょう。
gtk - lablgtk の Gdk.Window、GtkWindow、GWindow の違い
Lablgtk には、(少なくとも) 3 種類のウィンドウ名付きモジュールがあります。
- Gdk.ウィンドウ
- GtkWindow
- Gウィンドウ
それらの違いは何ですか?どうすれば別の場所に移動できますか?
gtk - lablgtk での Ctrl+クリック イベントの検出
この質問は、pygtk で ctrl+クリックを検出する方法を説明しています。
Lablgtk でも動作しますか? または、それを行うより簡単な方法はありますか?