Форум русскоязычного сообщества Ubuntu


Автор Тема: Обсуждение уроков по Vala  (Прочитано 9030 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн maotski

  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
    • Лучшие Смайлики
Re: Обсуждение уроков по Vala
« Ответ #15 : 16 Март 2014, 04:19:02 »
Пожалуй рассмотрим. Расмотрим окна с кнопочками? :) Или создание анимации?

Было бы круто

Оффлайн man0ngi

  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Re: Обсуждение уроков по Vala
« Ответ #16 : 11 Ноябрь 2014, 19:21:45 »
По 9 сообщению (конструкторы), хочу отметить очень важную деталь.
Если использовать наследование в библиотеке Gtk+, использовать функцию base не рекомендуется. В частности, программа даже скорее всего не соберется. И как замена, необходимо использовать вариант инициализации базового Gtk объекта с передачей параметров конструктора родителя. Например:
using GLib;
using Gtk;

class MyApplicationWindow : Gtk.ApplicationWindow {
    public MyApplicationWindow (Gtk.Application app) {
        GLib.Object (application: app);
    }
}

Оффлайн man0ngi

  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Re: Обсуждение уроков по Vala
« Ответ #17 : 27 Январь 2015, 01:28:02 »
Подкорректирую себя и дополню.
В С коде, что бы добавить своему наследнику GObject кастомные свойства, используется переопределение функий get_property, set_property у класса. К примеру, свойство spacing у бокса при создании.
Вызывая подобным образом базовый конструктор ( GLib.Object ( arg_1: val_1, arg_2: val_2 ) ), происходит последовательная проверка наличия указанных свойств во всех дочерних интерфейсах и классах.
В vala, в отличии от C, указывать свойства классам значительно проще. Достаточно с полем сделать подобное:
using Gtk;

class Example : Gtk.Box {

    public bool draggable { get; set; default = false; }
    public bool reorderable { get; set; default = false; }

    public Example () {
        GLib.Object (oorietation: Gtk.Orientation.VERTICAL, spacing: 0, draggable: true, reorderable: false);
    }

}

В дальнейшем подобные свойства можно запрашивать у классов, отнаследованных от GLib.Object с помощью метода get_property, и устанавливать соответственно c помощью set_property, используя при этом glib обертку Value.
Хотя, на самом деле, тут можно ещё довольно много написать, как работает get и set самого свойства. Наверное проще будет почитать в учебнике по C#.

Оффлайн alsoijw

  • Автор темы
  • Старожил
  • *
  • Сообщений: 4086
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Обсуждение уроков по Vala
« Ответ #18 : 27 Январь 2015, 15:46:29 »
man0ngi, про последнее я ещё не говорил. Найду время - сделаю.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн man0ngi

  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Re: Обсуждение уроков по Vala
« Ответ #19 : 28 Январь 2015, 13:09:05 »
man0ngi, про последнее я ещё не говорил. Найду время - сделаю.
таки а что на счет конструктора GLib.Object наследников? Компилятор же base () не примет.

Оффлайн alsoijw

  • Автор темы
  • Старожил
  • *
  • Сообщений: 4086
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Обсуждение уроков по Vala
« Ответ #20 : 28 Январь 2015, 18:51:35 »
man0ngi, тебе вот этот код не нравится?
(Нажмите, чтобы показать/скрыть)
Он прекрасно собирается.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

 

Страница сгенерирована за 0.107 секунд. Запросов: 23.