問題タブ [gobject]
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.
c++ - GStreamermm: Gst::Element から派生させて (プラグインで) 新しい要素タイプを作成する
プラグインで新しい要素タイプを作成する標準的な方法は、このようなすべての gobject マジックを使用した GstElement タイプからの gobject スタイルの「派生」です。
私は、私の目的に特化したいくつかの要素で GStreamer を使用する C++ でプロジェクトを書いています。上記の方法でいくつかのプラグインを作成しましたが、gobject の要件を満たすだけのコードが多すぎるため、コードに満足していません。
gstreamermm の使用を検討しています。Gst::Element からの C++ スタイルの派生で新しいタイプの要素を作成することは可能ですか? 私は次のようなことを意味します:
それははるかにきれいなソリューションです(プラグインですでに gstreamermm と C++ を使用していると仮定します)。もちろん、一意のタイプ ID などを持つ実際の gobject タイプが必要です。
python - glib/gobject ベースのライブラリの python バインディングを作成する方法
glib/gobject ベースのライブラリ、つまりinfinote/libinfinityの Python3 バインディングを作成したいと考えています。
これを達成するために必要な手順について少し戸惑っています。PyGObject はここで役立ちますか? このガイドはまだ python3 と PyGObject で有効ですか?
そうでない場合、これがどのように機能するかを理解するために何を読む必要がありますか?
プロセスを (半) 自動化するツールはありますか?
gtk - GObject Gtk、Gnome、Gtk+、Gl、Gtk2、Gtk3...わかりませんか?
Webkit または cairo drwaing をホストするためのウィンドウが必要ですが、自分が何をしているのかを理解するには、最初にそれらすべてに対処する必要があります。
今。私は途方に暮れ、それが何であるかを理解できなくなりました。
そして、バインディングを操作したり、何かの依存関係を理解しようとしたりすると、事態はさらに悪化します。例: Python では、pyGtk は廃止され、pyGObject (pyGl と呼ばれることもあります!!) に置き換えられました。
多くのサイトがあり、多くのダウンロードとバージョンがあり、古い参照と新しい参照が混在していますが、全体を 1 つのアーキテクチャ ビューで見ることはできません。
私が理解できないのは..あまりにも多くのサイト、パッケージ、バージョンでこれらすべてがどのように混ざり合っているのですか?
c++ - なぜGObjectシステムが作成されたのですか?
導入
さて、 GTK +のバージョン0.60の後、設計者は、将来の開発と進歩のために、ツールキット全体をオブジェクト指向に書き直す必要があることに気づきました。
現在、CはOOPをサポートしていないため、オブジェクト指向と継承の継承を提供するために、GObjectシステムを作成しました。ここで、GObjectシステムを作成するには、開発時間、依存関係、問題が必要でしたが、Cプログラミング言語にオブジェクト指向機能を提供するためにGObjectシステムを作成する必要がありました。しかし、当時、まさにそれを提供する別のソリューション、C ++がありました!
質問
GTK+の開発者がC++だけを使用しなかったのはなぜですか?
説明
つまり、多くのプロジェクトで採用されている実績のあるソリューションを使用するのではなく、ライブラリ全体を作成するのに時間を無駄にするのはなぜですか?誤解しないでください。私はこの投稿をC対C++のものに変えようとはしていません(フォーラムではそれで十分です、ありがとう)。GTK+の設計者が決定を下した理由と問題を知りたいだけです。
python - Python GTKでトレースバックのない浮動小数点例外
私は開発中のGTK pythonプログラムを持っています。ユーザーが行っているアクティビティの種類に基づいて、ウィンドウの外観を変更する必要があります。私は Gtk.Grid() オブジェクトを使用しています。これは、表示する必要があるものに widget.hide() を呼び出し、変更のために表示する必要があるものに widget2.show() を呼び出すことを計画していました。私はこのようなことをしたことがなく、実験していました。
GUIインターフェースの例はこれです
ボタンをクリックすると、Label1.hide() などを呼び出す、作成した反復可能なオブジェクトが呼び出されます。インターフェイスは、左側にラベルのグリッドがあり、右側にボタン オブジェクトがある水平の Gtk.Box() です。 .
最後の Label3 に到達して [ボタン] ボタンをクリックすると、プログラムが予期せず終了し、次の出力が表示されます。
トレースバックはありません。GTK自体から来ていると思います。gobject イントロスペクションを使用する GTK3 を使用しています。
何が例外を引き起こしている可能性がありますか?回避方法はありますか?
最後の (Label3) オブジェクトを取得する前に Label4.show() を実行することで、これを回避できると思います。そもそも何が原因なのか気になります。
私は多くのグーグルを行ってきましたが、この問題に対処するものは何もないようです。
ありがとう、
ナルニー
gstreamer - GObject 警告は既存の型を登録できません
私は GStreamer ユーザー/プログラマーですが、GLib を直接使用したことはありません。最近、単純な GObject を構築するために GLib を使用し、シグナルの実装を利用することにしました。(私は Windows プログラマーです)
GObject の定義と実装を備えた単純な静的ライブラリを開発しました。メインアプリはこのライブラリと静的にリンクし、最初のライブラリにも静的にリンクされた他のライブラリと動的にリンクします。
私が電話したら
DummyObj *dummy = (DummtyObj *) g_object_new(DUMMY_OBJ_TYPE, NULL);
メインアプリからは機能しますが、動的ライブラリ内で同じ関数で DummyObj インスタンスを構築しようとすると失敗し、出力で読み取ることができます
既存の型を登録できません... g_once_init_leave_ assertion 'initialization_value != 0' failed g_object_new: assertion 'G_TYPE_IS_OBJECT (object_tye)' failed
代わりに、DummyObj *dummy = (DummtyObj *) g_object_new(DUMMY_OBJ_TYPE, NULL); を呼び出す最初のライブラリが動的ライブラリである場合。メインアプリがこの関数を呼び出すと、同じエラーで失敗します。
最初のコンテキストのようですか?オブジェクトを初期化するのは、この種のオブジェクトのインスタンスを作成できる唯一のものです。
私はこれについて少し混乱しています。GStreamer では、メイン アプリ、他のプラグイン、動的ライブラリ内で新しいプラグインを作成できますが、これらのエラーは見たことがありません
英語は私の母国語ではなく、この問題を説明するのは簡単ではないと思います。
どうもありがとう
すべてのコンテキストで g_object_new を最初に呼び出すと、TYPE を hash_table に登録しようとするようです。1 つ目は TYPE を登録できますが、2 つ目は常に同じエラーで失敗します。コードを見ると、2 番目の呼び出しが型を再度登録しようとする理由を検出できません... gtype.c の関数 check_type_name_I は失敗しますが、両方のケースで g_type_register_static が呼び出される理由がわかりません。
javascript - Gnome-ShellJSインターフェースを使用した連絡先のリストの取得
gnome-shell拡張機能を書き始めたばかりで、ユーザーの連絡先のリストを取得する方法を知りたいです。
私はいくつかの可能性のあるファイルを追跡しました:gnome-shell/js/ui/contactDisplay.js
そしてgnome-shell/src/shell_contact_system.c
。
今、私shell_contact_system.c
は次の関数に気づきます:
これは、javascriptインターフェースで関数を使用できることを示唆しています(ファイルにもがあり、の使用法を示してget_all
いるという事実によって私の信念が強化されています)。.c
shell_contact_system_get_individual
contactDisplay.js
Shell.ContactSystem.get_default().get_individual
できます!(私はGnome-shellの「lookingglass」javascriptインタープリターで試してみています)。
これは「Gobject」のように見えるので、連絡先の名前を取得するためにこのオブジェクトをどう処理するかわかりません。(Cコードから)このオブジェクトがであることに気付いGeeMap *
たので、Gee.Mapのドキュメントを見ると、次のことができることがわかります。
次に、これらの方法に注目して、contacts.values
を見てみます。contacts.key
to_array()
ただし、これを行うと、空の配列が返されます。contacts.xxx.to_array().size
は0ですcontacts.size
が、31ですか?!!
contacts.map_iterator()
aを使用してマップを反復処理しようとしたときにも同じことが起こります。it.get_value()
そしてit.get_key()
nullのように見えます。
だから、私の質問は:どうすればの個々の要素にアクセスできますcontacts
か?
のコメントは、との間に言うことshell_contact_system_get_all
に注意してください。後者の機能は機能します(検索したい個人のIDがわかっている場合、これが私の問題です)が、前者は機能しません。これはそれと関係があるのでしょうか?Returns: (transfer none): ...
shell_contact_system_get_individual
Returns: (transfer full): ...
また、回避策として、現在、contactSearchProvider
クラスを使用してこれを実現できます(gnome-contacts
連絡先の名前を入力すると、概要に表示されるように、概要で使用されます)。''
私は基本的に、すべての連絡先のリストを返す必要があるものを検索します。get_all()
ラウンドアバウトのようですが、空の文字列を検索しなくても、このメソッドを使用してすべての連絡先を取得できるはずです...
助けていただければ幸いです(ちなみに、これに関するドキュメントはありますか?ソースをじっと見つめ、そこからすべてのドキュメントを推測しようとすると、非常に不十分だと感じます!)
memory-management - いつGObjectを解放しますか?
いつGObjectの参照を解除し、いつ解放するのですか?GObjectチュートリアル
では
、 GObjectは参照解除して解放する必要があると述べていますが、refcountが0に低下した場合にのみ、GObjectは実際に解放されるべきではありませんか?
gtk - GObjectはGNOMEの外で使用されていますか?
GObjectはgtk+の一部として始まり、後にGUI関連の要素から分離されたことを理解しています。私が知りたいのは、gtk+の外部で使用されているということです。他のデスクトップ環境や、WindowsやMac OSなどの他のOSはどうですか?そのようなケースの顕著な例はありますか?
c - ValaとGenieの制作は準備ができていますか?
スパゲッティタイプのプログラミングを削除したり、DRYの原則に準拠したりするために、リファクタリングと一般的なクリーンアップが必要ないくつかのレガシーCコードを使用しています。
私はC++を使用して書き直すことを考えていましたが、ここまでは行きたくないので、できるだけCに近づけたいと思います(いくつかのOOPの概念を[手作業でコーディングせずに]使用します)。
最近、GObject、Vala、Genieに出会いました。後者の2つはかなり最近のものです。ValaまたはGenieが本番コードで使用されていることを知っている人はいますか?
最後になりましたが、2つの言語間の長所と短所の比較のリストがあります。私はPythonが大好きで、C#にあまり熱心ではないので、Genieに少し傾いていますが、タブに対するGenieの(見た目は?)主張は実際には少し面倒かもしれません-私は長所と短所のリストに興味があります2つの言語(一方または両方が実稼働で使用できる状態にあると想定)。
余談ですが、私はLinuxで開発しているので、Windowsに関連する問題は、私に関する限り関係ありません。