Vala + GTK + 3およびGranite(dconfに値を保存)

ValaとGTK +でプログラミングしていると、ValaとGTK +で記述されたアプリケーションで、ウィンドウサイズパラメータなどの状態を保存できるようにする方法を考えたことはありませんか。 それらは私たちが使用するこれらの典型的なケースです gsスキーマ これらのスキームをグラフィカルに管理するこれらの値(このよく知られたアプリケーションdconf-editor)を保存します。

ここで、GraniteライブラリのGranite.Services.Settingsクラスを使用して、これを簡単な手順で複雑にせずに行う方法を示します。

私たちは何が必要なのか?

まず、コードをコンパイルするために、GTK +、Granite、Valaライブラリをインストールする必要があります。 Ubuntu / ElementaryOSでこれを行うには、次のコマンドを使用します。

sudo apt-get install libgtk-3-dev libgranite-dev granite-demo valac

また、Scratch Text Editor(ElementaryOSのデフォルト)、GEdit、Sublime Text + Pluginsなど、Vala / GTK +構文とXMLをサポートするテキストエディターも必要になります。

コード

これがサンプルファイルです。 理解を深めるために、コメントを付けてPASTEにコードを残します。

main.vala
チュートリアル.vala
設定.vala
org.tutorial.gschema.xml

説明

XMLである必要があり、ORG.APLICACION.GSCHEMA.XMLと呼ばれる必要がある場合のスキーマファイル。 つまり、dconfがそれをスキーマとして認識するためには、ORGとGSCHEMA.XMLの両方が存在する必要があります。 さらに、これらの図をルートにコピーする必要があります。

/usr/share/glib-2.0/schemas/

そして、それらを取得するには、DCONF用にコンパイルする必要があります。このために、次のコマンドを実行します。

sudo glib-compile-schemas /usr/share/glib-2.0/schemas/

コンパイル

プログラムをコンパイルするには、ターミナルで次のコマンドを起動する必要があります。

valac --pkg gtk+-3.0 --pkg granite main.vala tutorial.vala settings.vala

そして、次のコマンドでバイナリを実行します。

./main

結論

これは、GLIBを使用してGSCHEMAにAPPの状態を保存するための最良の方法のXNUMXつです。 どんな質問にも喜んでお答えします。

これが私のUbuntuと例のスクリーンショットです:

スナップ-チュートリアル


3コメント、あなたのコメントを残してください

コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:MiguelÁngelGatón
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。

  1.   ラウルP

    良い記事ですが、C ++のGTKチュートリアルは悪くありません。 物事は大きく変わりました、公式GTKサイトは2002年からの本を推薦します、私はそれを買うのを間違えました。

    DevHelpは、どの本よりも役立ちます。

    1.    ラウルP

      申し訳ありませんが、C ++ではなく、Cを意味しました。 コードブロックを開くときは、常に「C ++のプロジェクト」を選択しますが、Cでプログラムします。

  2.   脅威

    良い先生、知りたいのですが、そうではないことは知っていますが、実際には、このアプローチを実行するのに十分な頭を打ったので、背景とログイン画面を機関でカスタマイズする必要があります私がユーザーのチームで働いている場所の画像、彼らはDebian 7 Wheezyに基づいたCanaimaと呼ばれるベネズエラのディストリビューションを持っています、ユーザーはLDAPを介して認証し、複数のユーザーが同じPCで作業できるので、複数のユーザーがいる場合があります彼らが壁紙を所有しなければならないセッションでは、チームは技術者の作業を容易にするためにスクリプトによってカスタマイズされ、ポリシーはpuppetmasterサーバーによって注入されます。

    私はgsettingsを試しましたが、ログインしているユーザーでのみ機能します。明らかに、まだ達成していないユーザーごとにローカルデータベースに情報を保存します。システム全体に適用され、システム全体に適用される構成を探しています。シングルユーザー。

    画像は国の日付などの理由で絶えず変化しているため、単なる画像ではなく、パペットマスターによって各クライアントにアップロードされます。

    このようなことが私の場合に当てはまるかどうかはわかりません。
    ご挨拶。