Vala + GTK + 3 та граніт (збережіть значення у dconf)

Програмуючи у Vala та GTK +, ми всі коли-небудь задавались питанням, як зробити так, щоб додаток, написаний на Vala та GTK +, міг зберігати стани параметрів розміру вікна та інших? Вони належать до тих типових випадків, які ми використовуємо гшеми зберегти ці значення (цей добре відомий додаток dconf-editor), який графічно управляє цими схемами.

Тепер я покажу вам, як це зробити простими кроками та без ускладнень за допомогою класу Granite.Services.Settings з бібліотеки Granite.

Що нам потрібно?

Спочатку нам потрібно встановити бібліотеки GTK +, Granite та Vala, щоб скомпілювати наш код. Для цього в Ubuntu / ElementaryOS ми використовуємо команду:

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

І нам також знадобиться будь-який текстовий редактор, який підтримує синтаксис Vala / GTK + та XML, такий як текстовий редактор Scratch (за замовчуванням ElementaryOS), GEdit, Sublime Text + Plugins тощо

Код

Ось приклади файлів. Для кращого розуміння я залишаю код у PASTE з коментарями в них:

головна.вала
підручник.вала
настройки.вала
org.tutorial.gschema.xml

Пояснення

Файл схеми, якщо він має бути XML і називатися ORG.APLICACION.GSCHEMA.XML. Тобто і ORG, і GSCHEMA.XML повинні бути там, щоб dconf розпізнав його як схему. Крім того, ці схеми необхідно скопіювати на маршрут:

/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

Висновки

Це один з найкращих методів збереження стану нашого додатка в GSCHEMA за допомогою GLIB. На будь-яке запитання я з радістю відповім.

Ось скріншот мого Ubuntu і приклад:

snap-підручник


Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.

  1.   Рауль П - сказав він

    Хороша стаття, кілька підручників GTK на C ++ - це добре. Справа сильно змінилася, офіційний сайт GTK рекомендує книги 2002 року, я помилився, купивши їх.

    DevHelp допомагає більше, ніж будь-яка книга.

    1.    Рауль П - сказав він

      Вибачте, я мав на увазі C, а не C ++. Коли я відкриваю кодові блоки, я завжди вибираю "Проект на C ++", але програмую на C.

  2.   загроза - сказав він

    Хороший репетитор, я хотів би знати, і я знаю, що це не так, але, по правді кажучи, я завдав собі достатньо ударів головою, щоб мати змогу здійснити такий підхід, мені потрібно налаштувати фон та екран входу в систему з установою Зображення того, де я працюю в командах користувачів, у них є дистрибутив Венесуели під назвою Canaima, заснований на Debian 7 Wheezy, користувачі проходять автентифікацію через LDAP, і кілька користувачів можуть працювати на одному ПК, тому може бути так, що їх є кілька під час сеансів, в яких вони повинні володіти шпалерами, команди налаштовуються за сценарієм для полегшення роботи техніків, а потім політики вводяться сервером puppetmaster.

    Я пробував з gsettings, але це працює лише з користувачем, який входить в систему, мабуть, зберігає інформацію в локальній базі даних для кожного користувача, чого я ще не досяг, я шукаю якусь конфігурацію, яка стосується всієї системи, а не одного користувача.

    Варто зазначити, що зображення постійно змінюється внаслідок національних дат та будь-яких інших причин, тому це не просто зображення, вони завантажуються ляльководом до кожного клієнта.

    Я не уявляю, чи можна щось подібне застосувати до моєї справи.
    Привіт.