Gnome 3 Javascript(GJS) - TreeView - 选择下一个/上一个项目

时间:2013-03-27 17:11:20

标签: treeview gtktreeview gnome-3 gjs

一个月前我听说过GNOME 3的GJS,我想尝试一下。我想做什么? GNOME 3与GJS的简单媒体播放器。

所以,基础已被编程,例如:

  • 创建ListStore并将其连接到TreeView对象
  • OpenFile对话框 - 选择MP3 / OGG / WAV文件
  • 从OpenFile对话框中获取文件名和URI并将其放入Gtk.ListStore对象
  • 当文件被选中时(在TreeView对象中),Gst对象从当前选定的行中获取URI。

现在的问题是我想手动更改TreeView对象中的选定行(当用户按下前进或后退按钮时),我不知道如何执行此操作。

我查看官方的GNOME-Docs,在非正式的种子Documentation上查了一下谷歌并没有结果。我试图用GNOME 3的C-Docs找到它,但仍然没有。

我希望有人可以帮我解决这个“小问题”。 :)

简单音乐播放器的Link

2 个答案:

答案 0 :(得分: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 :(得分:1)

有很好的例子: https://github.com/optimisme/gjs-examples

使用TreeView'是egList.js,但是egOpen.js也有ont Gtk.ComboBox使用Gtk.ListStore,Gtk.CellRendererTex和Gtk.TreeIter使用了一个“改变的”'事件