GUIをgWidgetsからRGtk2に移植しています。GUIの一部は、分析に使用する必要のあるファイルのリストです。このリストからファイルを選択し、選択したファイルを削除するためのボタンを表示できるようにしたいと思います。私はそれのストリップバージョンを次のコードで作成することができます。
setModeが'multiple'に設定されている場合、getSelectedRowsを実行すると、選択した行へのパスのリストが表示されます。これをTreeModelからこれらの行を削除する方法に変換する方法に固執しています。TreeModelの行または列を直接削除することはできないことを理解しているので、データを抽出し、選択した行を削除してから、rGtkDataFrameを新しいデータで更新する必要がありますか?
どんな助けでもありがたいです...
ベスト/トーマス
filelist <- rGtkDataFrame(data.frame(Datafiles=character(), stringsAsFactors=FALSE))
mainWindow <- gtkWindow(show=FALSE)
datafileSelect <- gtkHBox(FALSE, 5)
mainWindow$add(datafileSelect)
files <- gtkTreeView(filelist)
files$insertColumnWithAttributes(position=-1, title='MS datafiles', cell=gtkCellRendererText(), text=0)
files$setHeadersVisible(FALSE)
fileSelect <- files$getSelection()
fileSelect$setMode('multiple')
datafileSelect$packStart(files)
datafileSelectButtons <- gtkVBox(FALSE, 5)
datafileSelect$packStart(datafileSelectButtons, expand=FALSE, fill=FALSE)
fileAddButton <- gtkButton(label='Add')
gSignalConnect(fileAddButton, 'clicked', f=function(widget, ...){
file <- gtkFileChooserDialog(title='Select MS datafiles', parent=mainWindow, action='open', 'gtk-ok', GtkResponseType['ok'], 'gtk-cancel', GtkResponseType['cancel'], show=FALSE)
file['select-multiple'] <- TRUE
gSignalConnect(file, 'response', f=function(dialog, response, data){
if(response == GtkResponseType['ok']){
files <- as.character(dialog$getFilenames())
filelist$appendRows(data.frame(Datafiles=files, stringsAsFactors=FALSE))
setwd(dirname(files[1]))
}
dialog$destroy()
})
file$show()
})
fileRemoveButton <- gtkButton(label='Remove')
gSignalConnect(fileRemoveButton, 'clicked', f=function(widget, ...){
selected <- fileSelect$getSelectedRows()
})
datafileSelectButtons$packStart(fileAddButton, expand=FALSE, fill=FALSE)
datafileSelectButtons$packStart(fileRemoveButton, expand=FALSE, fill=FALSE)
mainWindow$setDefaultSize(250, 300)
mainWindow$show()