2013-03-27 4 views
1

Месяц назад я слышал о GJS для GNOME 3, и я хотел попробовать. Что я хочу сделать? Простой медиаплеер для GNOME 3 с GJS.Gnome 3 Javascript (GJS) - TreeView - Выбрать следующий/предыдущий элемент

Таким образом, база была запрограммирована, например .:

  • Создание и подключение ListStore к TreeView объекта
  • OpenFile Диалог - Выберите MP3/OGG/WAV-файл
  • Получить Имя файла и URI из диалогового окна OpenFile и поместите его в объект Gtk.ListStore
  • Когда выбранный файл выбран (в объекте TreeView), объект Gst извлекает URI из текущей выбранной строки.

Проблема в том, что я хочу вручную изменить выбранную строку в объекте TreeView (когда пользователь нажимает кнопку «Вперед» или «Назад»), и у меня нет подсказки, как это сделать.

Я посмотрел его в официальных документах GNOME, на неофициальном семенах Documentation и Google не получил никаких результатов. Я попытался выяснить это с помощью C-Docs GNOME 3, но все равно ничего.

Я надеюсь, что кто-то может дать мне руку по этой «маленькой» проблеме. :)

Link Простой музыкальный плеер.

ответ

1

Хорошо, я только что нашел ответ:

// Get the selection from the Gtk.TreeView Object 
this.selection = this._soundList.get_selection(); 
// Get the bool "isSelected", the model and the Iter from this.selection.get_selected() 
let [ isSelected, model, iter ] = this.selection.get_selected(); 
// Get the previous row in the list (iter_next(iter) for the next row) 
this._listStore.iter_previous(iter); 
// The selection should get updated 
this.selection.select_iter(iter); 
// Get the URI from the Gtk.ListStore Object 
this.sound.uri = this._listStore.get_value (iter, 1); 

Я надеюсь, что это поможет тем, кто в ней нуждается.

1

Есть хорошие примеры на: https://github.com/optimisme/gjs-examples

Тот с помощью 'TreeView' является egList.js но egOpen.js также он Gtk.ComboBox с использованием Gtk.ListStore, Gtk.CellRendererTex и Gtk.TreeIter используются от одно «измененное» событие.